/* ============================================================ WorkStay — app router + tweaks ============================================================ */ const { useState: useStateApp, useEffect: useEffectApp } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "heroVariant": "centered", "accent": "#7c6cf0", "serifHeads": true, "grain": true }/*EDITMODE-END*/; const ACCENTS = { '#7c6cf0': { soft: '#9d90f6', deep: '#5b4cd0', glow: 'rgba(124,108,240,0.40)' }, '#4f6bff': { soft: '#7d92ff', deep: '#3a4fd0', glow: 'rgba(79,107,255,0.40)' }, '#c9a26a': { soft: '#dcbb8c', deep: '#a07e48', glow: 'rgba(201,162,106,0.40)' }, '#3aa6a0': { soft: '#5fc7c1', deep: '#2a7d78', glow: 'rgba(58,166,160,0.40)' }, }; function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [route, setRoute] = useStateApp('home'); const [params, setParams] = useStateApp({}); const [wish, setWish] = useStateApp(() => { try { return JSON.parse(localStorage.getItem('ws_wish') || '[]'); } catch { return []; } }); // apply accent tweak to CSS vars useEffectApp(() => { const a = ACCENTS[t.accent] || ACCENTS['#7c6cf0']; const r = document.documentElement.style; r.setProperty('--violet', t.accent); r.setProperty('--violet-soft', a.soft); r.setProperty('--violet-deep', a.deep); r.setProperty('--violet-glow', a.glow); }, [t.accent]); useEffectApp(() => { document.body.style.setProperty('--serif', t.serifHeads ? "'Instrument Serif', Georgia, serif" : "'Space Grotesk', sans-serif"); }, [t.serifHeads]); const go = (r, p = {}) => { setRoute(r); setParams(p); window.scrollTo({ top: 0, behavior: 'instant' in window ? 'instant' : 'auto' }); }; const toggleWish = (id) => { setWish(prev => { const next = prev.includes(id) ? prev.filter(x => x !== id) : [...prev, id]; try { localStorage.setItem('ws_wish', JSON.stringify(next)); } catch {} return next; }); }; let page; if (route === 'home') page = ; else if (route === 'explore') page = ; else if (route === 'property') page = ; else if (route === 'operator') page = ; else if (route === 'booking') page = ; else page = ; return ( <> go('explore', { wishOnly: true })} wishCount={wish.length} />
{page}
{route !== 'booking' && } ); } ReactDOM.createRoot(document.getElementById('root')).render();