/* === App shell — router, tweaks, modals === */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "palette": "ivory", "accent": "#C9A24B", "heroLayout": "split", "showBottomBar": true, "displayFont": "Cormorant Garamond" }/*EDITMODE-END*/; function WAModal({ open, onClose }) { if (!open) return null; const D = window.MONILI; return (
e.stopPropagation()}>
WhatsApp · Concierge

Which showroom would you like to reach?

We typically reply within the hour during showroom hours. (Demo only — your message won't actually send from this prototype.)

{D.showrooms.map(s => ( ))}
); } function MoniliTweaks({ t, setTweak }) { return ( setTweak("palette", v)}/> setTweak("accent", v)}/> setTweak("displayFont", v)}/> setTweak("showBottomBar", v)}/> ); } function App() { const initialPage = window.__BYTESGLUE_SHOWCASE_ROUTE || "home"; const [page, setPage] = useState(initialPage); const [consultOpen, setConsultOpen] = useState(false); const [waOpen, setWaOpen] = useState(false); const [bottomVisible, setBottomVisible] = useState(false); const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); // Apply tweaks via CSS vars useEffect(() => { document.documentElement.dataset.palette = t.palette; document.documentElement.style.setProperty("--champagne", t.accent); // derive a slightly darker shade for hover document.documentElement.style.setProperty("--champagne-deep", darken(t.accent, 0.12)); document.documentElement.style.setProperty("--serif", `"${t.displayFont}", "EB Garamond", serif`); }, [t.palette, t.accent, t.displayFont]); // Scroll-aware sticky CTA useEffect(() => { const onScroll = () => setBottomVisible(window.scrollY > 600); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); // Scroll to top on page change useEffect(() => { window.scrollTo({ top: 0, behavior: "instant" }); }, [page]); const openConsult = () => setConsultOpen(true); const openWA = () => setWaOpen(true); let PageEl = null; switch (page) { case "home": PageEl = ; break; case "collections": PageEl = ; break; case "bespoke": PageEl = ; break; case "showrooms": PageEl = ; break; case "heritage": PageEl = ; break; case "visit": PageEl = ; break; default: PageEl = ; } return ( <>