import { useEffect } from 'react'; import { gameRuntime } from '../state/runtime'; import { useGameStore } from '../state/store'; import { AboutPanel } from './AboutPanel'; import { AppShell } from './AppShell'; import { NavRail } from './NavRail'; import { PlayPanel } from './PlayPanel'; import { RightRail } from './RightRail'; import { SettingsPanel } from './SettingsPanel'; import { StoryView } from './StoryView'; /** * M1 playable-loop shell. Boots the runtime once on mount; everything else * renders from the Zustand store the runtime feeds. */ export function App() { const activePanel = useGameStore((s) => s.activePanel); useEffect(() => { void gameRuntime.boot(); }, []); const renderActivePanel = () => { switch (activePanel) { case 'play': return ; case 'story': return ; case 'settings': return ; case 'about': return ; default: return ; } }; return ( } center={renderActivePanel()} right={activePanel === 'play' ? : undefined} /> ); }