import { useEffect, useState } from 'react'; import TelemetryPanel from './components/TelemetryPanel.jsx'; import DrivePanel from './components/DrivePanel.jsx'; import AlertFeed from './components/AlertFeed.jsx'; import AdminPanel from './components/AdminPanel.jsx'; import MobileControls, { MobileJoystick, AuxMotorControls } from './components/MobileControls.jsx'; import { DriveControlProvider } from './context/DriveControlContext.jsx'; import RoomCameraPanel from './components/RoomCameraPanel.jsx'; import LogPanel from './components/LogPanel.jsx'; import AuthPanel from './components/AuthPanel.jsx'; import DriverVideoPanel from './components/DriverVideoPanel.jsx'; import RightPaneTabs from './components/RightPaneTabs.jsx'; import ModeGateOverlay from './components/ModeGateOverlay.jsx'; import SessionSnapshot from './components/SessionSnapshot.jsx'; function useLayoutMode() { const [mode, setMode] = useState(() => { if (typeof window === 'undefined') return 'desktop'; return window.innerWidth >= 1024 ? 'desktop' : window.innerWidth > window.innerHeight ? 'mobile-landscape' : 'mobile-portrait'; }); useEffect(() => { function updateMode() { if (typeof window === 'undefined') return; const { innerWidth, innerHeight } = window; if (innerWidth >= 1024) { setMode('desktop'); } else if (innerWidth > innerHeight) { setMode('mobile-landscape'); } else { setMode('mobile-portrait'); } } updateMode(); window.addEventListener('resize', updateMode); return () => window.removeEventListener('resize', updateMode); }, []); return mode; } function DesktopLayout({ layout }) { return (
{/* */}
); } function MobilePortraitLayout() { return (
); } function MobileLandscapeLayout() { return (
); } function App() { const layout = useLayoutMode(); const renderedLayout = layout === 'desktop' ? : layout === 'mobile-landscape' ? : ; return (
{renderedLayout}
); } export default App;