import { useMemo } from 'react'; import { useControlSystem } from '../controls/index.js'; import AuthPanel from './AuthPanel.jsx'; import AdminPanel from './AdminPanel.jsx'; import KeymapSettings from './KeymapSettings.jsx'; import GamepadMappingSettings from './GamepadMappingSettings.jsx'; import Tabs, { Tab, TabList, TabPanel, TabPanels } from './Tabs.jsx'; import SessionSnapshot from './SessionSnapshot.jsx'; import { useHudMapSetting } from '../hooks/useHudMapSetting.js'; const manualTabs = [ { key: 'start', label: 'Start OI' }, { key: 'safe', label: 'Safe' }, { key: 'full', label: 'Full' }, { key: 'passive', label: 'Passive' }, { key: 'dock', label: 'Dock' }, ]; export default function SettingsPanel() { const { state: { roverId }, actions: { sendOiCommand, setSensorStream }, } = useControlSystem(); const canControl = Boolean(roverId); const [hudMapDesktop, setHudMapDesktop] = useHudMapSetting(); const sensorButtons = useMemo( () => [ { key: 'start', label: 'Enable stream', enable: true }, { key: 'stop', label: 'Disable stream', enable: false }, ], [], ); const handleSensorToggle = (enable) => { if (!roverId) return; setSensorStream(enable); }; return ( Keybindings Controller Page settings Admin

HUD

Mobile HUD keeps the map on by default.

Manual OI commands

{manualTabs.map((tab) => ( ))}

Sensor stream

{sensorButtons.map((btn) => ( ))}
{!canControl &&

Assign a rover to toggle streams.

}
); }