import 'package:flutter/material.dart'; class ToolbarAction extends StatelessWidget { final IconData icon; final String label; final bool selected; final VoidCallback onTap; const ToolbarAction({ required this.icon, required this.label, required this.selected, required this.onTap, }); @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; final foreground = selected ? colorScheme.onPrimaryContainer : colorScheme.onSurfaceVariant; final background = selected ? colorScheme.primaryContainer.withOpacity(0.90) : Colors.transparent; return Padding( padding: const EdgeInsets.symmetric(horizontal: 1), child: Tooltip( message: label, waitDuration: const Duration(milliseconds: 500), child: InkWell( borderRadius: BorderRadius.circular(16), onTap: onTap, child: AnimatedContainer( duration: const Duration(milliseconds: 160), curve: Curves.easeOut, width: 58, height: 48, padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 4), decoration: BoxDecoration( color: background, borderRadius: BorderRadius.circular(16), border: selected ? Border.all( color: colorScheme.primary.withOpacity(0.35), width: 1, ) : null, ), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( icon, size: 21, color: foreground, ), const SizedBox(height: 2), Text( label, maxLines: 1, overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.labelSmall?.copyWith( color: foreground, fontWeight: selected ? FontWeight.w800 : FontWeight.w600, height: 1.0, ), ), ], ), ), ), ), ); } }