/* global React, ReactDOM */ // App shell — router, tweaks, renders active page const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accentHue": 226, "accentChroma": 0.13, "fontPair": "geo", "density": "regular", "grain": true, "heroVariant": "editorial" }/*EDITMODE-END*/; function App() { const [lang, setLang] = useLang(); const { route, navigate } = useRouter(); const [tw, setTweak] = useTweaks(TWEAK_DEFAULTS); useReveal(); const t = window.AXIOM_I18N[lang] || window.AXIOM_I18N['pt-BR']; // Apply tweaks to body / root useEffect(() => { document.body.dataset.density = tw.density; document.body.dataset.font = tw.fontPair; document.body.dataset.grain = tw.grain ? 'on' : 'off'; // Accent color driven by hue const h = tw.accentHue; const c = tw.accentChroma; document.documentElement.style.setProperty('--accent', `oklch(0.71 ${c} ${h})`); document.documentElement.style.setProperty('--accent-dim', `oklch(0.55 ${c * 0.85} ${h})`); document.documentElement.style.setProperty('--accent-glow', `oklch(0.71 ${c} ${h} / 0.18)`); document.documentElement.style.setProperty('--accent-soft', `oklch(0.71 ${c} ${h} / 0.07)`); }, [tw]); // Update document title/meta when page or lang changes useEffect(() => { const titles = { home: t.meta.default, services: `${t.services.title} — ${t.meta.siteName}`, about: `${t.about.eyebrow} — ${t.meta.siteName}`, certifications: `${t.certifications.title} — ${t.meta.siteName}`, contact: `${t.contact.eyebrow} — ${t.meta.siteName}`, }; document.title = `${t.meta.siteName} — ${titles[route.page] || t.meta.tagline}`; const desc = document.querySelector('meta[name="description"]'); if (desc) desc.setAttribute('content', t.meta.default); }, [route, lang, t]); let page; switch (route.page) { case 'services': page = ; break; case 'about': page = ; break; case 'certifications': page = ; break; case 'contact': page = ; break; case 'home': default: page = ; } // Page-level screen label for comment context const labels = { home: '01 Home', services: route.slug ? `03 Service · ${route.slug}` : '02 Services', about: '04 About', certifications: '05 Certifications', contact: '06 Contact', }; return (
{page}
setTweak('accentHue', v)}/> setTweak('accentChroma', v / 100)}/> setTweak('fontPair', v)}/> setTweak('density', v)}/> setTweak('grain', v)}/> setTweak('heroVariant', v)}/>
); } ReactDOM.createRoot(document.getElementById('root')).render();