/* App — router + tweaks */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#FFC72C", "fontDisplay": "Archivo Black", "fontBody": "Manrope", "heroVariant": "A", "density": "default" }/*EDITMODE-END*/; const FONT_PAIRS = { "Archivo Black": { display: "'Archivo Black', Impact, sans-serif", head: "'Archivo', sans-serif" }, "Anton": { display: "'Anton', Impact, sans-serif", head: "'Archivo', sans-serif" }, "Bebas Neue": { display: "'Bebas Neue', Impact, sans-serif", head: "'Archivo', sans-serif" }, "Space Grotesk": { display: "'Space Grotesk', sans-serif", head: "'Space Grotesk', sans-serif" } }; const BODY_FONTS = { "Manrope": "'Manrope', system-ui, sans-serif", "DM Sans": "'DM Sans', system-ui, sans-serif", "Plus Jakarta": "'Plus Jakarta Sans', system-ui, sans-serif", "IBM Plex Sans": "'IBM Plex Sans', system-ui, sans-serif" }; const ACCENT_PALETTE = [ '#FFC72C', // Sr Banheiro yellow (default) '#FFAB00', // sun '#F4631E', // construction orange '#2A6FDB' // utility blue ]; function useHashRoute() { const parse = () => { const hash = window.location.hash.replace(/^#\/?/, '') || ''; const [path] = hash.split('?'); const seg = path.split('/')[0] || 'home'; return seg; }; const [route, setRoute] = React.useState(parse()); React.useEffect(() => { const onHash = () => { setRoute(parse()); window.scrollTo({ top: 0, behavior: 'auto' }); }; window.addEventListener('hashchange', onHash); return () => window.removeEventListener('hashchange', onHash); }, []); return route; } function App() { const route = useHashRoute(); const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS); const [tweaksMounted, setTweaksMounted] = React.useState(false); React.useEffect(() => { setTweaksMounted(true); }, []); // Apply tweaks → CSS variables / styles React.useEffect(() => { const root = document.documentElement; root.style.setProperty('--yellow', tweaks.accent); // adjust yellow-deep proportionally root.style.setProperty('--yellow-deep', shadeColor(tweaks.accent, -18)); root.style.setProperty('--yellow-soft', shadeColor(tweaks.accent, 35)); const pair = FONT_PAIRS[tweaks.fontDisplay] || FONT_PAIRS["Archivo Black"]; root.style.setProperty('--font-display', pair.display); root.style.setProperty('--font-head', pair.head); root.style.setProperty('--font-body', BODY_FONTS[tweaks.fontBody] || BODY_FONTS["Manrope"]); document.body.style.fontSize = tweaks.density === 'compact' ? '15px' : tweaks.density === 'comfortable' ? '17px' : '16px'; }, [tweaks]); let Page = Home; if (route === 'catalogo') Page = Catalogo; else if (route === 'vip') Page = VIP; return (
{route === 'home' ? : }