diff --git a/src/components/PageHero.astro b/src/components/PageHero.astro index cd2b80c..526f458 100644 --- a/src/components/PageHero.astro +++ b/src/components/PageHero.astro @@ -2,11 +2,11 @@ import type { ImageMetadata } from 'astro'; import { getImage } from 'astro:assets'; -interface Props { title: string; eyebrow?: string; bgImage?: ImageMetadata } +interface Props { title: string; eyebrow?: string; bgImage?: ImageMetadata | string } const { title, eyebrow, bgImage } = Astro.props; -const bg = bgImage ? await getImage({ src: bgImage, width: 1920 }) : null; +const bgUrl = typeof bgImage === 'string' ? bgImage : bgImage ? (await getImage({ src: bgImage, width: 1920 })).src : null; --- -
+
{eyebrow &&

{eyebrow}

}

{title}

diff --git a/src/data/content-seed.ts b/src/data/content-seed.ts index d4db795..067bc65 100644 --- a/src/data/content-seed.ts +++ b/src/data/content-seed.ts @@ -270,6 +270,36 @@ export const contentSeed: SeedEntry[] = [ ]), ]), + // --- Training: meta, hero, intro, trial --- + T('training.meta.title', 'Training', []), + T('training.meta.description', 'One to One, Small Groups, Performance Class e Fit Remote: trova il training InsanityLab più adatto a te.', []), + T('training.hero.title', 'training', []), + T('training.intro.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.'), + T('training.trial.title', 'Prenota la lezione di prova'), + T('training.trial.body', "La lezione di prova è l'occasione perfetta per conoscere il metodo, vivere l'esperienza in prima persona e capire il percorso più adatto a te. Inizia oggi il tuo percorso: prenota la tua lezione di prova."), + T('training.trial.cta', 'Prenota', []), + I('training.trial.image'), + + // --- 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', []), + // I task di estrazione aggiungono qui le entry di header/footer/pagine/data file. ]; diff --git a/src/pages/404.astro b/src/pages/404.astro index 9aa6d78..b103734 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -1,14 +1,16 @@ --- import Base from '../layouts/Base.astro'; +import T from '../components/content/T.astro'; +import { t } from '../lib/content'; export const prerender = true; --- - +
-

Errore 404

-

Pagina non trovata

-

La pagina che cerchi non esiste o è stata spostata.

- Torna alla home + + + + {t('notfound.cta')}
diff --git a/src/pages/contact.astro b/src/pages/contact.astro index a4bfd45..4beab43 100644 --- a/src/pages/contact.astro +++ b/src/pages/contact.astro @@ -4,35 +4,37 @@ import PageHero from '../components/PageHero.astro'; import ContactForm from '../components/ContactForm.astro'; import { site } from '../data/site'; import contactHero from '../assets/img/contact-hero.jpg'; +import T from '../components/content/T.astro'; +import { t, contentImageUrl } from '../lib/content'; export const prerender = true; const mapsQuery = encodeURIComponent(`${site.address}, ${site.cityLine}`); --- - - + +
- -

La mappa viene caricata da Google solo dopo il tuo consenso.

+ +

{t('contact.map.note')}

-

Indirizzo

-

{site.address} {site.cityLine}

+ +

{t('global.contact.address')} {t('global.contact.city-line')}

-

Telefono

-

{site.phone}

+ +

{t('global.contact.phone')}

-

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.

+
diff --git a/src/pages/training.astro b/src/pages/training.astro index 7ddb083..8b9d34b 100644 --- a/src/pages/training.astro +++ b/src/pages/training.astro @@ -7,18 +7,19 @@ import { Image } from 'astro:assets'; import { trainings } from '../data/trainings'; import trialImg from '../assets/img/trial-class.jpg'; import T from '../components/content/T.astro'; +import TImg from '../components/content/TImg.astro'; import { t } from '../lib/content'; const images = import.meta.glob<{ default: ImageMetadata }>('../assets/img/training-*.{jpg,png}', { eager: true }); const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(name))?.[1]?.default; export const prerender = true; --- - - + +
-

Training

-

Porta i tuoi allenamenti al livello successivo: programmi completi e percorsi su misura. Trova il training più adatto alle tue esigenze.

+ +
@@ -42,11 +43,11 @@ export const prerender = true;
- Lezione di prova InsanityLab +
-

Prenota la lezione di prova

-

La lezione di prova è l'occasione perfetta per conoscere il metodo, vivere l'esperienza in prima persona e capire il percorso più adatto a te. Inizia oggi il tuo percorso: prenota la tua lezione di prova.

- Prenota + + + {t('training.trial.cta')}