import { StrictMode, Suspense, lazy } from 'react' import { createRoot } from 'react-dom/client' import { App } from './App' import { Play } from './play' import './styles.css' // three.js is lazy-loaded so the board never pays for it up front. const PhonePreview = lazy(() => import('./phone').then(m => ({ default: m.PhonePreview }))) // Routing: the bare root is the game's front door (splash + campaign); /level/:id, // /admin, and the legacy ?level= deep link open the board; ?phone=1 is the spike. const path = window.location.pathname const search = new URLSearchParams(window.location.search) const isBoard = path.startsWith('/level/') || path === '/admin' || search.has('level') const root = search.has('phone') ? : isBoard ? : createRoot(document.getElementById('root')!).render({root})