import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:trainhub_flutter/core/constants/ui_constants.dart'; import 'package:trainhub_flutter/core/theme/app_colors.dart'; class SettingsTopBar extends StatelessWidget { const SettingsTopBar({super.key, required this.onBack}); final VoidCallback onBack; @override Widget build(BuildContext context) { return Container( height: 52, padding: const EdgeInsets.symmetric(horizontal: UIConstants.spacing16), decoration: const BoxDecoration( color: AppColors.surfaceContainer, border: Border(bottom: BorderSide(color: AppColors.border)), ), child: Row( children: [ SettingsIconButton( icon: Icons.arrow_back_rounded, tooltip: 'Go back', onTap: onBack, ), const SizedBox(width: UIConstants.spacing12), Text( 'Settings', style: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.textPrimary, ), ), ], ), ); } } class SettingsIconButton extends StatefulWidget { const SettingsIconButton({ super.key, required this.icon, required this.onTap, this.tooltip = '', }); final IconData icon; final VoidCallback onTap; final String tooltip; @override State createState() => _SettingsIconButtonState(); } class _SettingsIconButtonState extends State { bool _hovered = false; @override Widget build(BuildContext context) { return Tooltip( message: widget.tooltip, child: MouseRegion( onEnter: (_) => setState(() => _hovered = true), onExit: (_) => setState(() => _hovered = false), child: GestureDetector( onTap: widget.onTap, child: AnimatedContainer( duration: UIConstants.animationDuration, width: 32, height: 32, decoration: BoxDecoration( color: _hovered ? AppColors.zinc800 : Colors.transparent, borderRadius: BorderRadius.circular(6), ), child: Icon( widget.icon, size: 18, color: _hovered ? AppColors.textPrimary : AppColors.textSecondary, ), ), ), ), ); } }