// === Seven Yachts — main App === const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "palette": "marine-dark", "accent": "gold", "heroMode": "kenburns", "showRates": true, "lang": "en", "density": "standard", "showConceptBadge": true }/*EDITMODE-END*/; function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [route, setRouteState] = React.useState({ name: 'home' }); const [favs, setFavs] = React.useState(['lucien', 'sky-fall']); const [favOpen, setFavOpen] = React.useState(false); const [bookingOpen, setBookingOpen] = React.useState(false); const [bookingPrefill, setBookingPrefill] = React.useState(null); // Smooth scroll to top on route change const setRoute = (r) => { setRouteState(r); if (typeof window !== 'undefined') window.scrollTo({ top: 0, behavior: 'instant' }); }; const toggleFav = (slug) => { setFavs(prev => prev.includes(slug) ? prev.filter(s => s !== slug) : [...prev, slug]); }; const openBooking = (prefill) => { setBookingPrefill(prefill || null); setBookingOpen(true); }; // Apply lang/dir React.useEffect(() => { document.documentElement.lang = t.lang === 'ar' ? 'ar' : t.lang === 'ru' ? 'ru' : t.lang === 'zh' ? 'zh' : 'en'; document.documentElement.dir = t.lang === 'ar' ? 'rtl' : 'ltr'; }, [t.lang]); // Apply theme classes React.useEffect(() => { document.body.classList.toggle('theme-light', t.palette === 'light'); document.body.classList.toggle('theme-dark', t.palette === 'marine-dark'); document.body.classList.toggle('theme-mixed', t.palette === 'mixed'); }, [t.palette]); // Accent color override React.useEffect(() => { const accents = { 'gold': '#C8AD8D', 'stone': '#DBD1CA', 'marine-only': '#0F4C75', }; document.documentElement.style.setProperty('--gold', accents[t.accent] || '#C8AD8D'); }, [t.accent]); // Navbar dark on home/yacht where hero is dark const navDark = (route.name === 'home' || route.name === 'yacht') && t.palette !== 'light'; let page; if (route.name === 'home') { page = ; } else if (route.name === 'yacht') { page = ; } else if (route.name === 'fleet') { page = ; } else if (route.name === 'experiences') { page = ; } else if (route.name === 'destinations') { page = ; } else if (route.name === 'sales') { page = ; } else if (route.name === 'about') { page = ; } else { page = ; } return ( <> setTweak('lang', v)} openFav={() => setFavOpen(true)} openBooking={openBooking} favCount={favs.length} /> {page} setFavOpen(true)} /> {t.showConceptBadge && } setFavOpen(false)} favs={favs} toggleFav={toggleFav} onSelect={(slug) => setRoute({ name: 'yacht', slug })} openBooking={openBooking} /> setBookingOpen(false)} prefill={bookingPrefill} /> setTweak('palette', v)} /> setTweak('accent', v)} /> setTweak('heroMode', v)} /> setTweak('density', v)} /> setTweak('showRates', v)} /> setTweak('showConceptBadge', v)} /> setTweak('lang', v)} /> setRoute({ name: 'home' })}>Home setRoute({ name: 'yacht', slug: 'lucien' })}>Lucien setRoute({ name: 'yacht', slug: 'sky-fall' })}>Sky Fall setRoute({ name: 'fleet' })}>Fleet > ); } ReactDOM.createRoot(document.getElementById('root')).render();