// app.jsx — root app: state, routing between projects, Tweaks. const { useState: useState_a, useEffect: useEffect_a, useMemo: useMemo_a } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "project": "casa-canal", "language": "en", "accent": "#A57B52", "showWhatsApp": true }/*EDITMODE-END*/; function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const project = window.PROJECTS[t.project] || window.PROJECTS['casa-canal']; const lang = t.language || 'en'; const copy = useMemo_a(() => { const c = window.COPY[lang] || window.COPY.en; return { ...c, _lang: lang }; }, [lang]); // Modal state const [openModal, setOpenModal] = useState_a(null); // 'register' | 'brochure' | 'viewing' | null const [lbIdx, setLbIdx] = useState_a(null); // Apply language direction + accent useEffect_a(() => { document.body.setAttribute('dir', copy.dir); document.body.setAttribute('lang', lang); }, [copy.dir, lang]); useEffect_a(() => { if (t.accent) { document.documentElement.style.setProperty('--accent', t.accent); } }, [t.accent]); // Re-run image parallax when project changes (page jumps to top) useEffect_a(() => { window.scrollTo({ top: 0, behavior: 'auto' }); }, [t.project]); const onOpen = (k) => setOpenModal(k); const onClose = () => setOpenModal(null); return ( <> setTweak('language', v)} copy={copy} onOpen={onOpen} />