import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; import "../theme/ensup_colors.dart"; /// Option d'identification de l'écran de connexion (QR ou mail ENSUP). class IdentificationOption extends StatefulWidget { const IdentificationOption({ super.key, required this.icon, required this.iconColor, required this.label, required this.description, this.onTap, }); final IconData icon; final Color iconColor; final String label; final String description; final VoidCallback? onTap; @override State createState() => _IdentificationOptionState(); } class _IdentificationOptionState extends State { bool _hovered = false; @override Widget build(BuildContext context) { return MouseRegion( onEnter: (_) => setState(() => _hovered = true), onExit: (_) => setState(() => _hovered = false), cursor: SystemMouseCursors.click, child: AnimatedContainer( duration: const Duration(milliseconds: 160), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(12), border: Border.all( color: _hovered ? widget.iconColor : EnsupColors.line, width: 1.5, ), boxShadow: [ BoxShadow( color: widget.iconColor.withValues( alpha: _hovered ? 0.12 : 0.035, ), blurRadius: _hovered ? 16 : 8, offset: const Offset(0, 4), ), ], ), child: Material( color: Colors.transparent, child: InkWell( onTap: widget.onTap, borderRadius: BorderRadius.circular(12), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 17), child: Row( children: [ Container( width: 48, height: 48, decoration: BoxDecoration( color: widget.iconColor.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(12), ), child: Icon(widget.icon, color: widget.iconColor, size: 24), ), const SizedBox(width: 14), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( widget.label, style: GoogleFonts.darkerGrotesque( fontWeight: FontWeight.w800, fontSize: 18, height: 1.05, color: EnsupColors.text, ), ), const SizedBox(height: 4), Text( widget.description, maxLines: 2, overflow: TextOverflow.ellipsis, style: GoogleFonts.titilliumWeb( fontSize: 12, color: EnsupColors.muted, height: 1.35, ), ), ], ), ), const SizedBox(width: 8), Container( width: 28, height: 28, decoration: BoxDecoration( color: widget.iconColor.withValues(alpha: 0.08), shape: BoxShape.circle, ), child: Icon( Icons.chevron_right_rounded, color: widget.iconColor, size: 19, ), ), ], ), ), ), ), ), ); } }