// App entry — wires routing + tweaks + i18n const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "theme": "warm", "typeface": "classic", "density": "default", "lang": "pt" }/*EDITMODE-END*/; function App() { const [page, setPage] = React.useState('home'); const [tourId, setTourId] = React.useState(TOURS[0].id); const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS); const [lang, setLangState] = React.useState(() => { try { return localStorage.getItem('bra-lang') || tweaks.lang || 'pt'; } catch (e) { return tweaks.lang || 'pt'; } }); const setLang = (next) => { setLangState(next); try { localStorage.setItem('bra-lang', next); } catch (e) {} setTweak('lang', next); }; React.useEffect(() => { document.body.dataset.theme = tweaks.theme; document.body.dataset.typeface = tweaks.typeface; document.body.dataset.density = tweaks.density; }, [tweaks.theme, tweaks.typeface, tweaks.density]); React.useEffect(() => { const map = { pt: 'pt-BR', en: 'en', es: 'es' }; document.documentElement.lang = map[lang] || 'pt-BR'; }, [lang]); const t = LANGS[lang] || LANGS.pt; const go = (p, id) => { if (p === 'tour' && id) setTourId(id); setPage(p); window.scrollTo({ top: 0, behavior: 'instant' }); }; let content; switch (page) { case 'tours': content = ; break; case 'tour': content = ; break; case 'precos': content = ; break; case 'ingressos': content = ; break; case 'sobre': content = ; break; case 'contato': content = ; break; default: content = ; } return (
); } ReactDOM.createRoot(document.getElementById('app')).render();