{{-- Une carte de pack, reprise de la page « PACKS D'INSCRIPTION » du programme : un bandeau coloré (« PACK n » à gauche, la journée à droite), puis le titre court, le prix dans la teinte du bandeau, et le détail de ce qui est compris. La teinte vient de la journée couverte, portée par le `groupe` du pack : rose pour le vendredi, bleu marine pour le samedi, vert pour les 2 journées. $pack : tableau présenté par CropaRegistrationService::packs() --}} @php $jours = \App\Services\CropaRegistrationService::JOURS; [$teinte, $journee] = match ($pack['groupe']) { $jours['vendredi'] => ['is-vendredi', 'VENDREDI'], $jours['samedi'] => ['is-samedi', 'SAMEDI'], $jours['les2'] => ['is-les2', null], default => ['', null], }; // Le numéro vient du code (PACK1…PACK9), qui ne dépend pas du libellé. $numero = preg_replace('/\D+/', '', (string) $pack['code']); // En base, le titre est de la forme « Pack (1) : Journée du Vendredi sans // hébergement ». Le bandeau portant déjà le numéro et la journée, la carte // ne garde que ce qui distingue réellement les packs entre eux. $titre = preg_replace('/^\s*Pack\s*\(\d+\)\s*:\s*/ui', '', (string) $pack['titre']); $titre = preg_replace('/\b(du\s+)?(Vendredi|Samedi)\b\s*/ui', '', $titre); $titre = trim(preg_replace('/\s{2,}/', ' ', $titre)); $titre = $titre === '' ? $pack['titre'] : ucfirst($titre); // Les packs « 2 journées » portent leur portée dans le titre (« Les 2 // Journées sans hébergement ») : le bandeau la reprend telle quelle. if ($journee === null) { $journee = str_contains(mb_strtolower((string) $pack['titre']), 'nuitée') ? '2 NUITÉES' : '2 JOURNÉES'; $titre = trim(preg_replace('/^Les\s+2\s+(Journées|Nuitées)\s*/ui', '', $titre)); // « en chambre single » → « Chambre single », comme sur le programme. $titre = trim(preg_replace('/^en\s+/ui', '', $titre)); $titre = $titre === '' ? 'Sans hébergement' : ucfirst($titre); } $inputId = 'pack-'.$pack['id']; @endphp