/* global React, ReactDOM, Nav, Footer, HomePage, ArchivePage, HauteCouturePage, BridalPage, ReadyToWearPage, JewelleryPage, FragrancePage, FoundersPage, AppointmentsPage, ContactPage, TweaksPanel, useTweaks, TweakSection, TweakRadio, TweakColor, TweakSelect */
// ============== APP ROOT + TWEAKS ==============
const { useState: useStateApp, useEffect: useEffectApp } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"mode": "lumiere",
"accent": "#B89456",
"density": "standard",
"displayFont": "Italiana"
}/*EDITMODE-END*/;
const DISPLAY_FONTS = {
"Italiana": "'Italiana', 'Didot', serif",
"Bodoni Moda": "'Bodoni Moda', 'Didot', serif",
"Marcellus": "'Marcellus', serif",
"Forum": "'Forum', serif",
};
function App() {
const [route, setRouteState] = useStateApp('home');
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
const setRoute = (r) => {
setRouteState(r);
// Snap to top on route change
window.scrollTo({ top: 0, behavior: 'auto' });
};
// Apply tweaks to DOM root
useEffectApp(() => {
const body = document.body;
body.dataset.mode = t.mode;
body.dataset.density = t.density;
document.documentElement.style.setProperty('--champagne', t.accent);
// Recompute deep accent automatically
document.documentElement.style.setProperty('--champagne-deep', t.accent);
// Display font
if (DISPLAY_FONTS[t.displayFont]) {
document.documentElement.style.setProperty('--display', DISPLAY_FONTS[t.displayFont]);
}
// Load alternate fonts on demand
if (t.displayFont !== 'Italiana' && !document.getElementById('alt-display-font')) {
const link = document.createElement('link');
link.id = 'alt-display-font';
link.rel = 'stylesheet';
link.href = 'https://fonts.googleapis.com/css2?family=Bodoni+Moda:wght@400;500&family=Marcellus&family=Forum&display=swap';
document.head.appendChild(link);
}
}, [t.mode, t.accent, t.density, t.displayFont]);
const pages = {
'home':