/* Zuleya by FBMI — root app */ function App() { const [route, navTo] = useRoute(); const [quickView, setQuickView] = useState(null); const [toast, setToast] = useState(''); const [saved, setSaved] = useState(() => { try { return JSON.parse(localStorage.getItem('zuleya-saved') || '[]'); } catch { return []; } }); useEffect(() => { localStorage.setItem('zuleya-saved', JSON.stringify(saved)); }, [saved]); // Tweaks const [tw, setTweak] = useTweaks(window.ZULEYA.TWEAK_DEFAULS); useEffect(() => { document.body.setAttribute('data-theme', tw.theme); document.documentElement.style.setProperty('--gold', tw.accent); }, [tw.theme, tw.accent]); const onEnquire = (c) => { setQuickView(null); setToast(`We’ll prepare a brief for "${c.name}" — finishing your details now.`); navTo('consultation'); }; const onSaveToggle = (c) => { setSaved(s => { const exists = s.includes(c.id); setToast(exists ? `${c.name} removed from your portfolio.` : `${c.name} saved to your portfolio.`); return exists ? s.filter(x => x !== c.id) : [...s, c.id]; }); }; const isSaved = quickView ? saved.includes(quickView.id) : false; const heroIsTransparent = route === 'home'; let page = null; switch (route) { case 'home': page = ; break; case 'story': page = ; break; case 'collections': page = ; break; case 'craftsmanship': page = ; break; case 'projects': page = ; break; case 'bespoke': page = ; break; case 'consultation': page = setToast('Consultation request received — thank you.')} />; break; case 'impact': page = ; break; case 'showroom': page = ; break; case 'contact': page = setToast('Note received — we’ll reply within one working day.')} />; break; default: page = ; } return (