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 WelcomePrimaryButton extends StatefulWidget { const WelcomePrimaryButton({ super.key, required this.label, required this.icon, required this.onPressed, }); final String label; final IconData icon; final VoidCallback onPressed; @override State createState() => _WelcomePrimaryButtonState(); } class _WelcomePrimaryButtonState extends State { bool _hovered = false; @override Widget build(BuildContext context) { return MouseRegion( onEnter: (_) => setState(() => _hovered = true), onExit: (_) => setState(() => _hovered = false), child: AnimatedContainer( duration: UIConstants.animationDuration, height: 44, decoration: BoxDecoration( color: _hovered ? AppColors.accent.withValues(alpha: 0.85) : AppColors.accent, borderRadius: BorderRadius.circular(UIConstants.smallBorderRadius), ), child: Material( color: Colors.transparent, child: InkWell( borderRadius: BorderRadius.circular(UIConstants.smallBorderRadius), onTap: widget.onPressed, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(widget.icon, color: AppColors.zinc950, size: 16), const SizedBox(width: UIConstants.spacing8), Text( widget.label, style: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.zinc950, ), ), ], ), ), ), ), ); } } class WelcomeSecondaryButton extends StatefulWidget { const WelcomeSecondaryButton({ super.key, required this.label, required this.onPressed, }); final String label; final VoidCallback onPressed; @override State createState() => _WelcomeSecondaryButtonState(); } class _WelcomeSecondaryButtonState extends State { bool _hovered = false; @override Widget build(BuildContext context) { return MouseRegion( onEnter: (_) => setState(() => _hovered = true), onExit: (_) => setState(() => _hovered = false), child: AnimatedContainer( duration: UIConstants.animationDuration, height: 44, decoration: BoxDecoration( color: _hovered ? AppColors.zinc800 : Colors.transparent, borderRadius: BorderRadius.circular(UIConstants.smallBorderRadius), border: Border.all(color: AppColors.border), ), child: Material( color: Colors.transparent, child: InkWell( borderRadius: BorderRadius.circular(UIConstants.smallBorderRadius), onTap: widget.onPressed, child: Center( child: Text( widget.label, style: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.w500, color: AppColors.textSecondary, ), ), ), ), ), ), ); } }