export const trainings = [ { id: "one-to-one", title: "One to One", caption: "Allenamento con un trainer dedicato", image: "training-one-to-one", description: "Allenati con un trainer dedicato che costruisce un percorso su misura per i tuoi obiettivi. Ogni sessione one to one è pensata per migliorare performance, tecnica e risultati. Supporto costante, attenzione totale e allenamenti personalizzati per dare il massimo.", cta: { label: "Scopri", href: "/services/one-to-one" } }, { id: "small-groups", title: "Personalized Training Group", caption: "Mini gruppi (max 4 persone) con trainer dedicato", image: "training-small-groups", description: "Allenati in mini gruppi da massimo 4 persone con un trainer dedicato. Un’esperienza Personalized Training Group che unisce attenzione personalizzata, motivazione e condivisione. Programmi mirati e supporto costante per raggiungere i tuoi obiettivi insieme.", cta: { label: "Scopri", href: "/services/small-group" } }, { id: "rehab", title: "Rehab", caption: "Recupero funzionale attraverso il movimento guidato", image: "training-rehab", description: "Il Rehab InsanityLab accompagna il corpo nel recupero della sua funzionalità attraverso il movimento guidato: il ponte tra la fine del percorso medico-riabilitativo e il ritorno a una vita attiva piena, con la stessa cura scientifica ma in un contesto di allenamento.", cta: { label: "Scopri", href: "/services/rehab" } }, { id: "holistic-class", title: "Holistic Class", caption: "Classi fino a 8 persone con trainer certificato", image: "training-holistic-class", description: "Mobilità articolare, respirazione, equilibrio. Da sola o integrata nei tuoi allenamenti, adatta a tutti i livelli. Sessioni da 40 minuti che uniscono Pilates Flow, Mobility e Yoga.", cta: { label: "Scopri", href: "/services/holistic-class" } }, { id: "reformer-class", title: "Reformer Class", caption: "Classi fino a 5 persone con macchinari reformer", image: "training-reformer-class", description: "Core, postura e mobilità su macchina reformer. Lavoro a basso impatto sulle articolazioni, adatto a tutti i livelli. Lezioni da 40 minuti in classi fino a 5 persone.", cta: { label: "Scopri", href: "/services/reformer-class" } }, { id: "coaching", title: "Coaching", caption: "Programma su misura e monitoraggio, anche online", image: "training-coaching", description: "Con il coaching hai un programma di allenamento su misura e un monitoraggio costante, ovunque ti alleni: in palestra, a casa o in viaggio. Il percorso sviluppa autonomia e continuità, adattandosi al tuo stile di vita (anche online, formula Fit Remote).", cta: { label: "Scopri", href: "/services/coaching" } }, ] as const; /** * Le viste di /training: la pagina mostra tutti i training, oppure il solo sottoinsieme * chiesto dal cliente (documento MODIFICHE_PER_SITO.pdf del 17/08/2026). * * Da /services la card «One to One» porta a One to One / Personalized Training Group / Rehab, * la card «Class» a Holistic Class / Reformer Class: chi clicca cerca quella famiglia di * servizi, e vedersi comparire l'elenco intero costringe a cercare di nuovo. */ export const VISTE_TRAINING: Record = { 'one-to-one': { titolo: 'Allenamento seguito', blocchi: ['one-to-one', 'small-groups', 'rehab'] }, class: { titolo: 'Class', blocchi: ['holistic-class', 'reformer-class'] }, }; /** * I training da mostrare per una vista. `undefined` = pagina intera. * * Una vista sconosciuta restituisce `null`, e la pagina risponde 404: mostrare l'elenco * completo al posto di un filtro sbagliato farebbe passare per buono un indirizzo rotto — * il link continuerebbe a "funzionare" mentre porta altrove. */ export function trainingDaMostrare(vista?: string): typeof trainings[number][] | null { if (!vista) return [...trainings]; const v = VISTE_TRAINING[vista]; if (!v) return null; return v.blocchi.map((id) => trainings.find((t) => t.id === id)!).filter(Boolean); }