// Main App: routing, global state, tweaks, mounts into #root. const { useState: useStateA, useEffect: useEffectA, useMemo: useMemoA } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "primaryColor": "#111111" }/*EDITMODE-END*/; function App() { const [route, _setRoute] = useStateA(() => { try { return localStorage.getItem('fdl.route') || 'home'; } catch { return 'home'; } }); const setRoute = (r) => { _setRoute(r); try { localStorage.setItem('fdl.route', r); } catch {} window.scrollTo({ top: 0 }); }; const [cart, setCart] = useStateA([]); const [cartOpen, setCartOpen] = useStateA(false); const [product, setProduct] = useStateA(null); const [initialCat, setInitialCat] = useStateA(null); const goToBoutique = (cat) => { setInitialCat(cat || null); setRoute('boutique'); }; const [primaryColor, setPrimaryColor] = useStateA(TWEAK_DEFAULTS.primaryColor); const [tweaksOpen, setTweaksOpen] = useStateA(false); const [editModeActive, setEditModeActive] = useStateA(false); // Apply primary color as CSS var useEffectA(() => { document.documentElement.style.setProperty('--primary', primaryColor); }, [primaryColor]); // Edit-mode integration useEffectA(() => { function handle(e) { const d = e.data || {}; if (d.type === '__activate_edit_mode') setEditModeActive(true); else if (d.type === '__deactivate_edit_mode') { setEditModeActive(false); setTweaksOpen(false); } } window.addEventListener('message', handle); window.parent.postMessage({ type: '__edit_mode_available' }, '*'); return () => window.removeEventListener('message', handle); }, []); function updatePrimary(hex) { setPrimaryColor(hex); window.parent.postMessage({ type: '__edit_mode_set_keys', edits: { primaryColor: hex } }, '*'); } function addToCart(product, qty, ribbon) { setCart(c => [...c, { product, qty, ribbon }]); setCartOpen(true); } function removeItem(i) { setCart(c => c.filter((_, idx) => idx !== i)); } function updateQty(i, qty) { setCart(c => c.map((it, idx) => idx === i ? { ...it, qty } : it)); } const cartCount = cart.reduce((s, i) => s + i.qty, 0); return (