// Gafla — main app
const { useState: useStateApp, useEffect: useEffectApp } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"palette": "noir",
"display": "serif",
"arabicAccent": true
}/*EDITMODE-END*/;
function App() {
const [route, setRoute] = useStateApp({ name: 'home' });
const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS);
// Apply theme attributes to html
useEffectApp(() => {
document.documentElement.setAttribute('data-palette', tweaks.palette);
document.documentElement.setAttribute('data-display', tweaks.display);
}, [tweaks.palette, tweaks.display]);
const navigate = (name, params = {}) => {
setRoute({ name, ...params });
window.scrollTo({ top: 0, behavior: 'instant' });
};
const renderPage = () => {
switch (route.name) {
case 'home': return ;
case 'collections': return ;
case 'collection': return ;
case 'product': return ;
case 'bespoke': return ;
case 'concierge': return ;
case 'story': return ;
case 'boutiques': return ;
case 'contact': return ;
default: return ;
}
};
return (
{renderPage()}
setTweak('palette', v)}
options={[
{ value: 'noir', label: 'Noir' },
{ value: 'sand', label: 'Sand' },
{ value: 'pearl', label: 'Pearl' },
{ value: 'oxblood', label: 'Oxblood' },
]}
/>
setTweak('display', v)}
options={[
{ value: 'serif', label: 'Serif' },
{ value: 'condensed', label: 'Sans' },
]}
/>
setTweak('arabicAccent', v)}
/>
);
}
ReactDOM.createRoot(document.getElementById('app')).render();