/// Statuts enfant alignés sur `statut_enfant_type` (BDD / back #131). const enfantStatusValues = [ 'a_naitre', 'sans_garde', 'garde', 'scolarise', ]; /// Normalise une valeur API (legacy `actif` → `sans_garde`). String normalizeEnfantStatus(String? raw) { final s = (raw ?? '').trim().toLowerCase(); if (s.isEmpty) return 'sans_garde'; if (s == 'actif') return 'sans_garde'; return s; } String _accordeAuGenre(String masculin, String feminin, String? gender) { final g = (gender ?? '').trim().toUpperCase(); if (g == 'F') return feminin; return masculin; } /// Libellé affiché pour un statut enfant. String enfantStatusLabel(String? status, {String? gender}) { switch (normalizeEnfantStatus(status)) { case 'a_naitre': return 'À naître'; case 'sans_garde': return 'Sans garde'; case 'garde': return _accordeAuGenre('Gardé', 'Gardée', gender); case 'scolarise': return _accordeAuGenre('Scolarisé', 'Scolarisée', gender); default: return status?.trim().isNotEmpty == true ? status!.trim() : '–'; } } /// Libellé court pour colonnes validation (null = pas de bandeau). String? enfantColumnStatusLabel({String? status, String? gender}) { final s = normalizeEnfantStatus(status); switch (s) { case 'a_naitre': case 'sans_garde': case 'garde': case 'scolarise': return enfantStatusLabel(s, gender: gender); default: return null; } }