import 'package:flutter/material.dart'; import 'package:p_tits_pas/widgets/dashboard/user_card.dart'; import 'package:p_tits_pas/widgets/dashboard/common/suppression_confirm_dialog.dart'; /// Carte dossier unifiée (#153) — fond neutre, accent couleur sur l’icône. class DossierListCard extends StatelessWidget { final String numeroDossier; final String namesLine; final bool isFamille; final VoidCallback onOpen; /// Photo AM (si absente → icône fallback). final String? photoUrl; final VoidCallback? onDelete; /// Warning vigilance (ex. dossier sans enfant #160). final String? vigilanceTooltip; /// Nombre d’enfants (famille) — affiché à côté des noms. final int? enfantsCount; final bool sansEnfant; /// Lavande — Famille / Parents. static const Color familleAccent = Color(0xFFB289C9); /// Menthe logo — AM. static const Color amAccent = Color(0xFF5A9D94); const DossierListCard({ super.key, required this.numeroDossier, required this.namesLine, required this.isFamille, required this.onOpen, this.photoUrl, this.onDelete, this.vigilanceTooltip, this.enfantsCount, this.sansEnfant = false, }); @override Widget build(BuildContext context) { final accent = isFamille ? familleAccent : amAccent; final num = numeroDossier.trim().isEmpty ? '–' : numeroDossier.trim(); final names = namesLine.trim(); final avatar = (photoUrl ?? '').trim(); final emptyKids = isFamille && (sansEnfant || enfantsCount == 0); final count = enfantsCount; final countLabel = (!isFamille || count == null) ? null : (count <= 1 ? '$count enfant' : '$count enfants'); final subtitle = [ if (names.isNotEmpty) names, if (emptyKids) 'Sans enfant', if (!emptyKids && countLabel != null) countLabel, ]; return UserCard( title: num, subtitleLines: subtitle, avatarUrl: !isFamille && avatar.isNotEmpty ? avatar : null, fallbackIcon: isFamille ? Icons.family_restroom_outlined : Icons.face, // N° = titre neutre (comme Parents / AM) ; accent = icône seule. avatarIconColor: accent, infoColor: emptyKids ? Colors.red.shade700 : Colors.black87, onCardTap: onOpen, vigilanceTooltip: emptyKids ? (vigilanceTooltip ?? 'Aucun enfant rattaché à ce dossier famille') : vigilanceTooltip, borderColor: emptyKids ? Colors.red.shade300 : null, actions: [ IconButton( tooltip: 'Ouvrir', icon: Icon(Icons.open_in_new, size: 20, color: accent), onPressed: onOpen, ), if (onDelete != null) suppressionIconButton(onPressed: onDelete), ], ); } }