// Main app: view switcher + router const App = () => { const [view, setView] = useState(() => localStorage.getItem('pxs.view') || 'public'); const [publicRoute, setPublicRoute] = useState(() => { try { return JSON.parse(localStorage.getItem('pxs.publicRoute')) || { route: 'home' }; } catch { return { route: 'home' }; } }); const [cmsRoute, setCmsRoute] = useState(() => { try { return JSON.parse(localStorage.getItem('pxs.cmsRoute')) || { route: 'dashboard' }; } catch { return { route: 'dashboard' }; } }); const [state, setState] = useState({ packages: INITIAL_PACKAGES, vehicles: INITIAL_VEHICLES, blogs: INITIAL_BLOGS, pages: INITIAL_PAGES, inquiries: INITIAL_INQUIRIES, users: INITIAL_USERS, settings: INITIAL_SETTINGS, nav: INITIAL_NAV, }); const [tweaksActive, setTweaksActive] = useState(false); const [tweaks, setTweaks] = useState({ accent: '#E85D2F', greenDeep: '#1F3A2B', radius: 'medium', displayFont: 'Fraunces' }); useEffect(() => { window.addEventListener('message', (e) => { if (e.data?.type === '__activate_edit_mode') setTweaksActive(true); if (e.data?.type === '__deactivate_edit_mode') setTweaksActive(false); }); window.parent.postMessage({ type: '__edit_mode_available' }, '*'); }, []); useEffect(() => { localStorage.setItem('pxs.view', view); }, [view]); useEffect(() => { localStorage.setItem('pxs.publicRoute', JSON.stringify(publicRoute)); }, [publicRoute]); useEffect(() => { localStorage.setItem('pxs.cmsRoute', JSON.stringify(cmsRoute)); }, [cmsRoute]); const navigate = (r) => { setPublicRoute(r); window.scrollTo(0, 0); }; const renderPublic = () => { switch (publicRoute.route) { case 'tours': return ; case 'tour': return ; case 'vehicles': return ; case 'blog': return ; case 'blogpost': return ; case 'page': return ; case 'contact': return ; default: return ; } }; const renderCms = () => { switch (cmsRoute.route) { case 'packages': return ; case 'packages-edit': return ; case 'vehicles': return ; case 'vehicles-edit': return ; case 'blogs': return ; case 'blogs-edit': return ; case 'pages': return ; case 'pages-edit': return ; case 'inquiries': return ; case 'users': return ; case 'menu': return ; case 'settings': return ; default: return ; } }; const styleRadius = tweaks.radius === 'sharp' ? '0px' : tweaks.radius === 'rounded' ? '24px' : '14px'; return (
{view === 'public' ? renderPublic() : ( {renderCms()} )} {/* View switcher - always visible floating pill */}
); }; ReactDOM.createRoot(document.getElementById('root')).render();