--- import '@fontsource/montserrat/400.css'; import '@fontsource/montserrat/500.css'; import '@fontsource/montserrat/600.css'; import '@fontsource/montserrat/700.css'; import '@fontsource/open-sans/400.css'; import '@fontsource/open-sans/600.css'; import '../styles/global.css'; import Header from '../components/Header.astro'; import Footer from '../components/Footer.astro'; import { getDb } from '../lib/db'; import { getSessionUser, SESSION_COOKIE } from '../lib/auth'; interface Props { title: string; description?: string } const { title, description = 'InsanityLab — Performance. Balance. Longevity. Allenamento personalizzato, piccoli gruppi e benessere a Bologna.' } = Astro.props; const tok = Astro.cookies.get(SESSION_COOKIE)?.value; const user = tok ? getSessionUser(getDb(), tok) : null; const canTags = !!user && (user.role === 'superuser' || user.role === 'admin'); const wantTags = Astro.cookies.get('showtags')?.value === '1' || Astro.url.searchParams.get('annotate') === '1'; const showTags = canTags && wantTags; // Google Tag Manager: l'ID container arriva da GTM_ID (.env), letto a runtime via process.env // perché in SSR le PUBLIC_* di Vite verrebbero inlinate a build-time. Se vuoto GTM non carica. const gtmId = process.env.GTM_ID; ---
{gtmId && ( )}