--- // Layout dell'area riservata. Usa i token e i font del sito, come il Campus e Stress Index: // il pannello non è più un foglio di stile a sé, così chi passa dal sito all'amministrazione // resta nello stesso mondo visivo. import '@fontsource/montserrat/400.css'; import '@fontsource/montserrat/500.css'; import '@fontsource/montserrat/600.css'; import '@fontsource/open-sans/400.css'; import '@fontsource/open-sans/600.css'; import '../styles/global.css'; interface Props { title: string } const { title } = Astro.props; const user = Astro.locals.user; const path = Astro.url.pathname; const isManager = user?.role === 'superuser' || user?.role === 'admin'; // Voci del menu: ognuna compare solo a chi può davvero aprirla. const VOCI = [ { href: '/admin', label: 'Articoli', visibile: true, exact: true }, { href: '/admin/content', label: 'Contenuti', visibile: isManager }, { href: '/admin/users', label: 'Utenti', visibile: user?.role === 'admin' }, ]; const attiva = (v: { href: string; exact?: boolean }) => v.exact ? path === v.href : path.startsWith(v.href); ---