/* global React, ReactDOM, Nav, Footer, Fab, BookBar, BookingModal, HomePage, TreatmentsPage, SignaturePage, MembershipsPage, CafePage, GalleryPage, AboutPage, ReviewsPage, ContactPage, TweaksPanel, useTweaks, TweakSection, TweakRadio, TweakColor, TweakSelect */ const { useState, useEffect } = React; function App() { // Tweakable defaults const [t, setTweak] = useTweaks(/*EDITMODE-BEGIN*/{ "accent": "#C9A56A", "surface": "#F7F2EA", "text": "#2A241F", "displayFont":"Cormorant Garamond", "lang": "en" }/*EDITMODE-END*/); // Apply tweaks to CSS vars / lang useEffect(() => { const r = document.documentElement; r.style.setProperty('--champagne', t.accent); r.style.setProperty('--ivory', t.surface); r.style.setProperty('--espresso', t.text); if (t.displayFont) r.style.setProperty('--display', `"${t.displayFont}", "Times New Roman", serif`); r.setAttribute('dir', t.lang === 'ar' ? 'rtl' : 'ltr'); r.setAttribute('lang', t.lang); }, [t.accent, t.surface, t.text, t.displayFont, t.lang]); // Hash-based page routing const seededRoute = window.__BYTESGLUE_SHOWCASE_ROUTE || 'home'; const initial = (window.location.hash.replace('#','') || seededRoute); const [page, setPageState] = useState(initial); const setPage = (p) => { setPageState(p); window.location.hash = p; window.scrollTo({top:0, behavior:'instant'}); }; useEffect(() => { const onHash = () => { const next = window.location.hash.replace('#','') || (window.__BYTESGLUE_SHOWCASE_ROUTE || 'home'); if (next !== page) { setPageState(next); window.scrollTo({top:0, behavior:'instant'}); } }; window.addEventListener('hashchange', onHash); return () => window.removeEventListener('hashchange', onHash); }, [page]); // Booking modal const [bookingOpen, setBookingOpen] = useState(false); const openBooking = () => setBookingOpen(true); // Lang const lang = t.lang; const setLang = (l) => setTweak('lang', l); const PAGES = { home: () => , treatments: () => , signature: () => , memberships: () => , cafe: () => , gallery: () => , about: () => , reviews: () => , contact: () => , }; const Page = PAGES[page] || PAGES.home; return ( <>