/// 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;
  }
}
