import React, { useState } from 'react'; import { createRoot } from 'react-dom/client'; import App from './App'; import GameApp from './game/GameApp.jsx'; import Workshop from './components/Workshop.jsx'; import AdminPanel2 from './components/AdminPanel2.jsx'; import { AuthProvider } from './services/AuthContext.jsx'; import AuthModal from './components/AuthModal.jsx'; import './index.css'; function Root() { const [mode, setMode] = useState('game'); // 'game' | 'sandbox' | 'workshop' | 'admin' const nav = { toGame: () => setMode('game'), toSandbox: () => setMode('sandbox'), toWorkshop: () => setMode('workshop'), toAdmin: () => setMode('admin'), }; return ( {mode === 'sandbox' && } {mode === 'game' && } {mode === 'workshop' && } {mode === 'admin' && } ); } createRoot(document.getElementById('root')).render(); // Configure and unlock audio context on first user interaction import * as Tone from 'tone'; Tone.getContext().lookAhead = 0.05; // 50ms — tighter than default 100ms const unlockAudio = () => { if (Tone.context.state !== 'running') { Tone.start().catch(() => {}); } document.removeEventListener('pointerdown', unlockAudio); document.removeEventListener('keydown', unlockAudio); }; document.addEventListener('pointerdown', unlockAudio); document.addEventListener('keydown', unlockAudio); // Register service worker for PWA if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker.register('/sw.js').catch(() => {}); }); }