--- import Base from '../../layouts/Base.astro'; import PageHero from '../../components/PageHero.astro'; import type { ImageMetadata } from 'astro'; import { services } from '../../data/services'; import T from '../../components/content/T.astro'; import TImg from '../../components/content/TImg.astro'; import CalendarioModal from '../../components/CalendarioModal.astro'; import { calendariDaMostrare, CARD_CON_CALENDARIO } from '../../data/calendari'; import { t } from '../../lib/content'; const images = import.meta.glob<{ default: ImageMetadata }>('../../assets/img/program-*.jpg', { eager: true }); const imgOf = (slug: string) => Object.entries(images).find(([p]) => p.includes(`program-${slug}.`))?.[1]?.default; const gridServices = services.filter((p) => p.grid !== false); // Foto e "Per saperne di più" della stessa card portano allo stesso posto, e lo fanno per // costruzione: erano due espressioni diverse e sono divergute — su One to One e Performance // Class il testo mandava a /training mentre la foto apriva la scheda del servizio, così la // destinazione dipendeva da dove capitava il dito. // Alcune card non portano alla propria scheda ma a una vista di /training (One to One e // Class, deciso dal cliente il 17/08/2026): la destinazione la dichiara il servizio. const hrefOf = (p: (typeof services)[number]) => p.href ?? `/services/${p.slug}`; // Il calendario delle class si apre anche da qui, dalla card Class: chi guarda i servizi // vuole sapere quando si allena prima ancora di aprire la scheda. Compare solo se c'è // davvero una griglia da mostrare, come nelle pagine delle class. const conCalendario = calendariDaMostrare(new Date()).length > 0; export const prerender = false; ---
{gridServices.map((p, i) => ( ))}
{conCalendario && }