// ===== Main App ===== const { useState: uS, useEffect: uE } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "theme": "light", "cursor": true, "hero": 0, "accent": "coral" }/*EDITMODE-END*/; function App() { const [tweaks, setTweaks] = uS(TWEAK_DEFAULTS); const [tweaksOpen, setTweaksOpen] = uS(false); const [isMobile, setIsMobile] = uS(false); uE(() => { const check = () => setIsMobile(window.innerWidth < 820); check(); window.addEventListener('resize', check); return () => window.removeEventListener('resize', check); }, []); uE(() => { document.body.classList.toggle('theme-dark', tweaks.theme === 'dark'); const accent = tweaks.accent === 'teal' ? '#5AC4B9' : tweaks.accent === 'yellow' ? '#F5C23C' : '#E85A3C'; document.documentElement.style.setProperty('--coral', accent); }, [tweaks.theme, tweaks.accent]); uE(() => { const onMsg = (e) => { if (!e.data || !e.data.type) return; if (e.data.type === '__activate_edit_mode') setTweaksOpen(true); if (e.data.type === '__deactivate_edit_mode') setTweaksOpen(false); }; window.addEventListener('message', onMsg); try { window.parent.postMessage({ type: '__edit_mode_available' }, '*'); } catch (e) {} return () => window.removeEventListener('message', onMsg); }, []); const cursorEnabled = tweaks.cursor && !isMobile; return ( <>