import 'package:flutter/material.dart'; import '../tokens/unionflow_colors.dart'; /// Carte identité utilisateur — header uniforme pour tous les dashboards /// Gradient coloré + initiales + nom + sous-titre + badge rôle class UserIdentityCard extends StatelessWidget { final String initials; final String name; final String subtitle; final String badgeLabel; final Gradient gradient; final Color accentColor; /// true = fond clair → texte sombre, badge avec fond coloré /// false (défaut) = fond sombre → texte blanc, badge blanc + texte coloré final bool lightBackground; /// Afficher la bordure supérieure colorée (accentColor) final bool showTopBorder; const UserIdentityCard({ super.key, required this.initials, required this.name, required this.subtitle, required this.badgeLabel, required this.gradient, required this.accentColor, this.lightBackground = false, this.showTopBorder = true, }); @override Widget build(BuildContext context) { final textColor = lightBackground ? UnionFlowColors.textPrimary : Colors.white; final subtitleColor = lightBackground ? UnionFlowColors.textSecondary : Colors.white.withOpacity(0.85); final avatarBg = lightBackground ? accentColor.withOpacity(0.15) : Colors.white.withOpacity(0.25); final avatarTextColor = lightBackground ? accentColor : Colors.white; final badgeBg = lightBackground ? accentColor : Colors.white; final badgeTextColor = lightBackground ? Colors.white : accentColor; return Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), decoration: BoxDecoration( gradient: gradient, borderRadius: BorderRadius.circular(10), border: showTopBorder ? Border(top: BorderSide(color: accentColor, width: 3)) : null, boxShadow: showTopBorder ? [ BoxShadow( color: accentColor.withOpacity(0.25), blurRadius: 10, offset: const Offset(0, 3), ) ] : null, ), child: Row( children: [ CircleAvatar( radius: 20, backgroundColor: avatarBg, child: Text( initials, style: TextStyle( fontSize: 13, fontWeight: FontWeight.w700, color: avatarTextColor, ), ), ), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( name, style: TextStyle( fontSize: 13, fontWeight: FontWeight.w700, color: textColor, ), ), const SizedBox(height: 3), Text( subtitle, style: TextStyle(fontSize: 11, color: subtitleColor), ), ], ), ), Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), decoration: BoxDecoration( color: badgeBg, borderRadius: BorderRadius.circular(4), ), child: Text( badgeLabel, style: TextStyle( fontSize: 9, fontWeight: FontWeight.w800, color: badgeTextColor, letterSpacing: 0.8, ), ), ), ], ), ); } }