import type { StyleGroup } from '../lib/style-presets'; import { site } from './site'; import { trainings } from './trainings'; import { team } from './team'; import { methodIntro, methodExtraNote, methodSteps } from './method'; import { partners } from './partners'; import { disciplines, days, slots } from './agenda'; import { services } from './services'; import { performanceClassPricing } from './pricing'; export type ContentType = 'text' | 'html' | 'image'; export interface SeedEntry { tag: string; type: ContentType; value: string; styleOptions?: StyleGroup[] } const T = (tag: string, value: string, styleOptions: StyleGroup[] = ['size', 'color', 'weight', 'style']): SeedEntry => ({ tag, type: 'text', value, styleOptions }); const H = (tag: string, value: string, styleOptions: StyleGroup[] = ['size', 'color']): SeedEntry => ({ tag, type: 'html', value, styleOptions }); const I = (tag: string): SeedEntry => ({ tag, type: 'image', value: '' }); export const contentSeed: SeedEntry[] = [ // --- Globali (site.ts) --- T('global.contact.phone', site.phone, []), T('global.contact.email', site.email, []), T('global.contact.address', site.address, []), T('global.contact.city-line', site.cityLine, []), T('global.contact.map-query', site.mapQuery, []), T('global.hours.1', site.hours[0], []), T('global.hours.2', site.hours[1], []), T('global.nav.1.label', site.navigation[0].label, []), T('global.nav.2.label', site.navigation[1].label, []), T('global.nav.3.label', site.navigation[2].label, []), T('global.nav.4.label', site.navigation[3].label, []), T('global.nav.5.label', site.navigation[4].label, []), T('global.nav.6.label', site.navigation[5].label, []), // --- Header --- T('header.logo.alt', 'InsanityLab', []), I('header.logo.image'), // --- Footer --- I('footer.logo.image'), H('footer.tagline', 'PERFORMANCE.  BALANCE.  LONGEVITY.'), T('footer.about', 'Promuoviamo il movimento come cura di sé. Abitudini sostenibili per benessere fisico e mentale.'), T('footer.col.training-title', 'Training'), T('footer.col.services-title', 'Servizi'), T('footer.col.contact-title', 'Contact'), H('footer.copyright', 'Insanitylab, All Rights Reserved'), T('footer.social-label', 'Seguici', []), T('footer.training.1.label', site.footerTraining[0].label, []), T('footer.training.2.label', site.footerTraining[1].label, []), T('footer.training.3.label', site.footerTraining[2].label, []), T('footer.training.4.label', site.footerTraining[3].label, []), T('footer.training.5.label', site.footerTraining[4].label, []), T('footer.training.6.label', site.footerTraining[5].label, []), T('footer.services.1.label', site.footerServices[0].label, []), T('footer.services.2.label', site.footerServices[1].label, []), T('footer.services.3.label', site.footerServices[2].label, []), T('footer.services.4.label', site.footerServices[3].label, []), T('footer.services.5.label', site.footerServices[4].label, []), T('footer.services.6.label', site.footerServices[5].label, []), // --- Contact form --- T('form.field.first-name', 'Nome', []), T('form.field.last-name', 'Cognome', []), T('form.field.phone', 'Telefono', []), T('form.field.email', 'E-mail', []), T('form.field.message', 'Messaggio', []), T('form.submit', 'Invia messaggio'), T('form.msg.success', 'Messaggio inviato, ti ricontatteremo al più presto.', []), T('form.msg.error-generic', 'Errore di invio, riprova più tardi.', []), T('form.msg.error-network', 'Errore di rete, riprova più tardi.', []), // --- Home: meta, training heading --- T('home.meta.title', 'Performance. Balance. Longevity.', []), T('home.training.title', 'Training'), T('home.training.subtitle', 'Porta i tuoi allenamenti al livello successivo: trova il percorso più adatto alle tue esigenze.'), // --- Home: hero --- T('home.hero.title-line-1', 'PERFORMANCE.'), T('home.hero.title-line-2', 'BALANCE.'), T('home.hero.title-line-3', 'LONGEVITY.'), T('home.hero.cta', 'Scopri'), I('home.hero.image'), // --- Home: info columns --- T('home.info.col1.title', 'PERFORMANCE.'), T('home.info.col2.title', 'BALANCE.'), T('home.info.col3.title', 'LONGEVITY.'), I('home.info.col1.image'), I('home.info.col2.image'), I('home.info.col3.image'), // --- Home: feature blocks --- T('home.feature.performance.title', 'PERFORMANCE'), T('home.feature.performance.body', 'Allenamenti progettati su misura per adattarsi ai tuoi obiettivi e al tuo livello. Programmi mirati che sviluppano forza, resistenza e funzionalità in modo equilibrato. Un metodo efficace per migliorare le performance e ottenere risultati concreti e duraturi.'), T('home.feature.performance.cta', 'Scopri'), T('home.feature.balance.title', 'BALANCE'), T('home.feature.balance.body', 'L’equilibrio tra corpo e mente è la base di ogni performance duratura. Attraverso movimento, recupero e gestione dello stress, costruiamo stabilità e controllo. Un approccio integrato che sostiene benessere, energia e continuità nel tempo.'), T('home.feature.balance.cta', 'Scopri'), T('home.feature.longevity.title', 'LONGEVITY'), T('home.feature.longevity.body', 'Benessere completo tra movimento, nutrizione e stile di vita. Un percorso personalizzato che unisce prevenzione, recupero ed equilibrio. Investi nella tua salute e qualità della vita nel tempo.'), T('home.feature.longevity.cta', 'Scopri'), I('home.feature.performance.image'), I('home.feature.balance.image'), I('home.feature.longevity.image'), // --- Home: quote banner --- H('home.quote.text', 'PERFORMANCE È SPINGERE OLTRE I PROPRI LIMITI, BALANCE È SAPERLI ASCOLTARE, LONGEVITY È COSTRUIRE NEL TEMPO CIÒ CHE DAVVERO CONTA.'), T('home.quote.cite', 'Insanitylab', []), I('home.quote.image'), // --- Home: training cards (data-driven da trainings.ts) --- T('home.training-cards.link-label', 'Scopri', []), ...trainings.flatMap((tr) => [ T(`training.${tr.id}.title`, tr.title), T(`training.${tr.id}.caption`, tr.caption), T(`training.${tr.id}.description`, tr.description), T(`training.${tr.id}.cta-label`, tr.cta.label, []), I(`training.${tr.id}.image`), ]), // --- Home: servizi --- T('home.services.title', 'Servizi'), T('home.services.body', 'Questi sono i servizi delle classi di Insanity Lab selezionati per voi. Abbiamo scelto i migliori percorsi per offrirvi un’esperienza di allenamento completa e mirata.'), // --- Home: team (data-driven da team.ts) --- H('home.team.title', 'Team
Trainer'), T('home.team.cta', 'Scopri team', []), ...team.flatMap((m) => { const slug = m.shortName.toLowerCase(); return [ T(`team.${slug}.name`, m.name, []), T(`team.${slug}.short-name`, m.shortName), T(`team.${slug}.role`, m.role, []), T(`team.${slug}.bio`, m.bio), I(`team.${slug}.image`), I(`team.${slug}.image-about`), ]; }), // --- Home: metodo (data-driven da method.ts) --- H('home.method.title', 'Il metodo
InsanityLab'), T('home.method.cta', 'Contattaci', []), H('method.intro', methodIntro.replace('Metodo Insanitylab', 'Metodo Insanitylab')), T('method.extra-note', methodExtraNote, []), ...methodSteps.flatMap((s) => [ T(`method.step.${s.n}.title`, s.title), T(`method.step.${s.n}.text`, s.text), I(`method.step.${s.n}.image`), ]), // --- Home: partner (data-driven da partners.ts) --- ...partners.flatMap((p, i) => [ T(`partner.${i + 1}.name`, p.name, []), I(`partner.${i + 1}.image`), ]), // --- Agenda (scope limitato: titolo, discipline, giorni, slot — celle escluse) --- T('agenda.title', 'Agenda'), ...disciplines.map((d, i) => T(`agenda.discipline.${i + 1}`, d, [])), ...days.map((d, i) => T(`agenda.day.${i + 1}`, d, [])), ...slots.map((s, i) => T(`agenda.slot.${i + 1}`, s, [])), // --- About: meta, hero --- T('about.meta.title', 'Insanitylab', []), T('about.meta.description', 'Mission, storia, team e metodo di InsanityLab: un laboratorio esclusivo dove movimento, prevenzione e performance convivono in un approccio personalizzato.', []), T('about.hero.title', 'Insanitylab', []), // --- About: mission --- T('about.mission.title', 'Mission'), T('about.mission.body', 'In InsanityLab crediamo che il movimento non debba essere vissuto come un obbligo o un sacrificio, ma come una forma autentica di cura di sé. La nostra missione è accompagnare ogni persona in un percorso di consapevolezza, aiutandola a riscoprire il benessere fisico e mentale attraverso un approccio sostenibile, concreto e duraturo.'), I('about.mission.image'), // --- About: direzione + approccio --- T('about.direzione.title', 'Direzione'), T('about.direzione.body', 'Non ci limitiamo ad allenare il corpo: creiamo percorsi personalizzati che uniscono movimento, equilibrio e benessere, attraverso il supporto di professionisti qualificati, programmi su misura e un approccio centrato sulla persona e su risultati duraturi.'), T('about.direzione.cta', 'Scopri'), T('about.approccio.title', 'Approccio'), T('about.approccio.body', 'InsanityLab si distingue per un approccio serio e personalizzato al benessere, basato su competenze specializzate, costanza e cura quotidiana, rivolto a chiunque voglia migliorare il proprio stile di vita in modo consapevole e duraturo.'), T('about.approccio.cta', 'Contattaci'), // --- About: about --- T('about.about.title', 'About'), T('about.about.body', "InsanityLab nasce dalla visione di creare uno spazio dove il fitness incontrasse la salute in modo reale e profondo, non superficiale. L'idea di partenza era semplice ma rivoluzionaria nel settore: il movimento non dovrebbe essere vissuto come un sacrificio estetico, ma come un atto di cura verso se stessi. Da questa convinzione è nato un laboratorio esclusivo di benessere, pensato da chi conosce il corpo in profondità — non solo come semplici trainer, ma come osteopati e chinesiologi esperti del movimento."), I('about.about.image'), // --- About: convenzioni --- T('about.convenzioni.title', 'Convenzioni'), T('about.convenzioni.body', "InsanityLab collabora con aziende, enti e organizzazioni che desiderano investire concretamente nel benessere delle proprie persone, attraverso programmi dedicati alla salute, al movimento e alla qualità della vita. Le convenzioni nascono con l'obiettivo di portare il valore del benessere anche all'interno del contesto professionale, creando percorsi che favoriscano equilibrio fisico, prevenzione e performance quotidiana."), T('about.convenzioni.item1', 'Le realtà convenzionate possono accedere a programmi di welfare aziendale personalizzati.'), T('about.convenzioni.item2', 'Ogni collaborazione parte da una consulenza preliminare per analizzare esigenze e obiettivi, così da sviluppare soluzioni efficaci e sostenibili.'), T('about.convenzioni.item3', "Le convenzioni vengono definite su misura insieme a InsanityLab, in base alle caratteristiche e alle necessità dell'azienda partner."), T('about.convenzioni.cta-text', 'Per ricevere maggiori informazioni o attivare una convenzione:', []), I('about.convenzioni.image'), // --- About: team --- T('about.team.title', 'Team'), T('about.team.body', 'Il team di InsanityLab riunisce professionisti specializzati in allenamento, salute e benessere, con un approccio multidisciplinare basato su competenza, personalizzazione e attenzione alla persona.'), T('about.team.staff-intro', 'Accanto ai fondatori opera un team in continua crescita composto da trainer e professionisti con specializzazioni complementari:'), // --- About: metodo --- T('about.metodo.title', 'Metodo'), T('about.metodo.body', 'Il team InsanityLab lavora con un approccio empatico e personalizzato, seguendo ogni persona in un percorso continuo e su misura. Unisce competenze multidisciplinari in allenamento, prevenzione, riabilitazione e performance, supportate da formazione costante. Il metodo si basa su sinergia, condivisione e qualità, per generare risultati concreti e duraturi.'), T('about.metodo.closing', 'In poche parole, il team di InsanityLab è composto da professionisti che credono profondamente in ciò che fanno: un gruppo unito da valori condivisi, formato per eccellere e guidato dalla convinzione che il movimento sia uno strumento di benessere, equilibrio e qualità della vita.'), I('about.metodo.image'), // --- About: studios --- T('about.studios.title', 'In-Sanity Studios'), T('about.studios.body1', "IN-SANITY STUDIOS è il nuovo spazio professionale nato dall'evoluzione di InsanityLab, dedicato ai professionisti della salute e del benessere."), T('about.studios.body2', "Il progetto nasce con l'obiettivo di offrire a liberi professionisti uno spazio elegante, riservato e già attrezzato, in cui poter svolgere la propria attività all'interno di un contesto consolidato e altamente qualificato, senza dover affrontare i costi e le complessità di una struttura indipendente."), T('about.studios.body3', 'IN-SANITY STUDIOS si rivolge a figure specializzate nel settore salute e wellness, come fisioterapisti, osteopati, psicologi, nutrizionisti, massaggiatori e altri professionisti dedicati alla cura della persona. Ogni studio è progettato per garantire comfort, professionalità e continuità operativa, all\'interno di un ambiente coerente con la filosofia di InsanityLab: mettere il benessere globale della persona al centro del percorso.'), I('about.studios.image'), // --- About: vision --- T('about.vision.title', 'Vision'), T('about.vision.body1', "InsanityLab nasce con l'obiettivo di aiutare le persone a ritrovare energia ed equilibrio attraverso il movimento, promuovendo un approccio autentico, scientifico e umano al benessere. La sua visione va oltre l'estetica e la performance: allenarsi significa prendersi cura di sé, costruendo abitudini sane, sostenibili e orientate alla longevità, alla prevenzione e alla qualità della vita."), T('about.vision.body2', "L'obiettivo è diventare un punto di riferimento capace di lasciare un impatto reale nella comunità, trasformando il movimento in uno strumento di salute, consapevolezza e identità."), I('about.vision.image'), // --- About: storylab + timeline (Timeline.astro) --- T('about.storylab.title', 'Storylab'), T('about.storylab.body', 'Scopri la nostra storia: come nasce InsanityLab, perché abbiamo deciso di creare qualcosa di diverso e chi sono i visionari che hanno trasformato questa idea in un nuovo modo di vivere benessere, movimento e salute.'), T('about.timeline.label', 'INSANITYLAB 2021-2024', []), T('about.timeline.open-text', "Il percorso di crescita di InsanityLab si è sviluppato attraverso tappe precise e coerenti con la visione iniziale. Nato nel 2021 con un piccolo team e grandi ambizioni, il progetto ha conosciuto una forte evoluzione nel 2024, anno in cui il servizio si è ampliato attraverso nuovi format come gli small group e una sempre maggiore specializzazione nella profilazione fisica del cliente, grazie a sistemi avanzati di valutazione e monitoraggio. Parallelamente, anche l'area dedicata alla riabilitazione e all'esercizio preventivo si è consolidata, ponendo le basi per un importante salto di qualità."), T('about.timeline.stage1.label', 'INSANITYLAB 2025', []), T('about.timeline.stage1.text', 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.'), T('about.timeline.stage2.label', 'INSANITYLAB 2026', []), T('about.timeline.stage2.text', 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.'), T('about.timeline.stage3.label', 'INSANITYLAB OGGI', []), T('about.timeline.stage3.text', 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.'), // --- Services: lista (/services) --- T('services.meta.title', 'Servizi', []), T('services.meta.description', 'I servizi InsanityLab: Personal Training, Performance Class, Coaching, Profilazione, Osteopatia e Nutrizione.', []), T('services.hero.title', 'Servizi', []), T('services.intro.body', "Questi sono i servizi delle classi di Insanity Lab selezionati per voi. Abbiamo scelto i migliori percorsi per offrirvi un'esperienza di allenamento completa e mirata."), T('services.card.more-label', 'Per saperne di più →', []), // --- Services: dettaglio (data-driven da services.ts) --- ...services.flatMap((p) => [ T(`service.${p.slug}.title`, p.title), T(`service.${p.slug}.subtitle`, p.subtitle), T(`service.${p.slug}.excerpt`, p.excerpt), T(`service.${p.slug}.long-description`, p.longDescription), ...p.features.map((f, i) => T(`service.${p.slug}.feature.${i + 1}`, f)), ...p.faq.flatMap((item, i) => [ T(`service.${p.slug}.faq.${i + 1}.q`, item.q), T(`service.${p.slug}.faq.${i + 1}.a`, item.a), ]), I(`service.${p.slug}.image`), ]), // --- Services: dettaglio, template --- T('service.side.categories-label', 'Categorie'), T('service.side.category.1', 'Fitness', []), T('service.side.category.2', 'Salute', []), T('service.side.category.3', 'Stile di vita', []), T('service.side.category.4', 'Nutrizione', []), T('service.side.others-label', 'Altri servizi'), H('service.pricing.empty-note', 'Contattaci per i dettagli di questo servizio. Scrivici →'), T('service.pricing.per', 'al mese, semestrale', []), T('service.pricing.entries-singular', 'ingresso settimanale', []), T('service.pricing.entries-plural', 'ingressi settimanali', []), T('service.pricing.buy-cta', 'Acquista', []), // --- Pricing performance class (data-driven da pricing.ts; monthly/entries restano nel data file) --- T('pricing.heading', performanceClassPricing.heading), T('pricing.intro', performanceClassPricing.intro), ...performanceClassPricing.groups.flatMap((g, gi) => [ T(`pricing.group.${gi + 1}.label`, g.label), ...g.plans.flatMap((plan, pi) => [ T(`pricing.group.${gi + 1}.plan.${pi + 1}.note`, plan.note, []), T(`pricing.group.${gi + 1}.plan.${pi + 1}.installments`, plan.installments, []), T(`pricing.group.${gi + 1}.plan.${pi + 1}.best`, plan.best, []), ]), ]), // --- Training: meta, hero, intro, trial --- T('training.meta.title', 'Training', []), T('training.meta.description', 'One to One, Small Group, Rehab, Holistic Class, Reformer Class e Coaching: trova il training InsanityLab più adatto a te.', []), T('training.hero.title', 'training', []), T('training.intro.subtitle', 'Porta i tuoi allenamenti al livello successivo: programmi completi e percorsi su misura. Trova il training più adatto alle tue esigenze.'), // --- Contact --- T('contact.meta.title', 'Contatti', []), T('contact.meta.description', 'Contatta InsanityLab: Via Leandro Alberti 76, Bologna. Compila il form o chiamaci per una consulenza iniziale.', []), T('contact.hero.title', 'Contattaci', []), I('contact.hero.image'), T('contact.map.button', 'Carica la mappa (Google Maps)', []), T('contact.map.note', 'La mappa viene caricata da Google solo dopo il tuo consenso.', []), T('contact.info.address-label', 'Indirizzo'), T('contact.info.phone-label', 'Telefono'), T('contact.info.email-label', 'E-mail'), T('contact.invite', 'Per informazioni o per richiedere una consulenza iniziale, compila il form. Un team specializzato ti accoglierà e ti ricontatterà al più presto, oppure lasciaci il tuo contatto.'), // --- 404 --- T('notfound.meta.title', 'Pagina non trovata', []), T('notfound.eyebrow', 'Errore 404', []), T('notfound.title', 'Pagina non trovata'), T('notfound.body', 'La pagina che cerchi non esiste o è stata spostata.'), T('notfound.cta', 'Torna alla home', []), ]; export const seedByTag = new Map(contentSeed.map((e) => [e.tag, e]));