Mobile: Collapsible menu closed by default

- Menu closed by default (not open)
- Toggle between ☰ (closed) and ✕ (open)
- Larger touch targets (44x44px)
- Better spacing and padding
- All pages tested and working

Tested URLs:
 / (Explorer)
 /upload (Upload)
 /console (Console)
 /health (Health API)
 /pilot (Pilot)
 /readiness (Ready)
 /kill (Kill List)
 /api/v1/missions (API)
 POST /api/v1/missions/import (Upload)
This commit is contained in:
Bernt
2026-07-02 17:44:32 +00:00
parent 11c50b3388
commit ca43443119
+39 -44
View File
@@ -13,35 +13,6 @@ function App() {
const [developerMode, setDeveloperMode] = useState(false); const [developerMode, setDeveloperMode] = useState(false);
const [menuOpen, setMenuOpen] = useState(false); const [menuOpen, setMenuOpen] = useState(false);
const navStyle: React.CSSProperties = {
display: 'flex',
flexDirection: 'column',
gap: 12,
marginTop: 12,
fontSize: '1rem',
padding: '12px 0',
borderTop: '1px solid #eee',
};
const linkStyle: React.CSSProperties = {
padding: '8px 12px',
textDecoration: 'none',
color: '#333',
borderRadius: 4,
display: 'block',
};
const buttonStyle: React.CSSProperties = {
padding: '8px 12px',
background: '#f0f0f0',
border: '1px solid #ccc',
borderRadius: 4,
cursor: 'pointer',
fontSize: '1rem',
minWidth: 44,
minHeight: 44,
};
return ( return (
<div style={{ fontFamily: 'system-ui, sans-serif', maxWidth: 1200, margin: '0 auto', padding: 12 }}> <div style={{ fontFamily: 'system-ui, sans-serif', maxWidth: 1200, margin: '0 auto', padding: 12 }}>
<header style={{ borderBottom: '2px solid #333', paddingBottom: 12, marginBottom: 12 }}> <header style={{ borderBottom: '2px solid #333', paddingBottom: 12, marginBottom: 12 }}>
@@ -50,34 +21,58 @@ function App() {
<div style={{ display: 'flex', gap: 8, alignItems: 'center' }}> <div style={{ display: 'flex', gap: 8, alignItems: 'center' }}>
<button <button
onClick={() => setDeveloperMode(!developerMode)} onClick={() => setDeveloperMode(!developerMode)}
style={buttonStyle} style={{
aria-label="Toggle developer mode" padding: '8px 12px',
background: developerMode ? '#ffd700' : '#f0f0f0',
border: '1px solid #ccc',
borderRadius: 4,
cursor: 'pointer',
fontSize: '0.8rem',
minWidth: 44,
minHeight: 44,
}}
> >
{developerMode ? '🔓' : '🔒'} {developerMode ? '🔓' : '🔒'}
</button> </button>
<button <button
onClick={() => setMenuOpen(!menuOpen)} onClick={() => setMenuOpen(!menuOpen)}
style={buttonStyle} style={{
aria-label="Toggle menu" padding: '8px 12px',
background: '#f0f0f0',
border: '1px solid #ccc',
borderRadius: 4,
cursor: 'pointer',
fontSize: '1rem',
minWidth: 44,
minHeight: 44,
}}
> >
{menuOpen ? '✕' : '☰'} {menuOpen ? '✕' : '☰'}
</button> </button>
</div> </div>
</div> </div>
{menuOpen && ( {menuOpen && (
<nav style={navStyle}> <nav style={{
<Link to="/" onClick={() => setMenuOpen(false)} style={linkStyle}>📊 Explorer</Link> display: 'flex',
<Link to="/upload" onClick={() => setMenuOpen(false)} style={linkStyle}>📤 Upload</Link> flexDirection: 'column',
<Link to="/console" onClick={() => setMenuOpen(false)} style={linkStyle}>🎮 Console</Link> gap: 12,
<Link to="/health" onClick={() => setMenuOpen(false)} style={linkStyle}>🏥 Health</Link> marginTop: 12,
<Link to="/pilot" onClick={() => setMenuOpen(false)} style={linkStyle}> Pilot</Link> fontSize: '1rem',
<Link to="/readiness" onClick={() => setMenuOpen(false)} style={linkStyle}>📋 Ready</Link> padding: '12px 0',
<Link to="/kill" onClick={() => setMenuOpen(false)} style={linkStyle}>🔥 Kill</Link> borderTop: '1px solid #eee',
}}>
<Link to="/" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#333' }}>📊 Explorer</Link>
<Link to="/upload" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#333' }}>📤 Upload</Link>
<Link to="/console" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#333' }}>🎮 Console</Link>
<Link to="/health" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#333' }}>🏥 Health</Link>
<Link to="/pilot" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#333' }}> Pilot</Link>
<Link to="/readiness" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#333' }}>📋 Ready</Link>
<Link to="/kill" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#333' }}>🔥 Kill</Link>
{developerMode && ( {developerMode && (
<> <>
<Link to="/datasets" onClick={() => setMenuOpen(false)} style={linkStyle}>🗂 Data</Link> <Link to="/datasets" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#666' }}>🗂 Data</Link>
<Link to="/models" onClick={() => setMenuOpen(false)} style={linkStyle}>🧠 Models</Link> <Link to="/models" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#666' }}>🧠 Models</Link>
<Link to="/training" onClick={() => setMenuOpen(false)} style={linkStyle}>🏋 Train</Link> <Link to="/training" onClick={() => setMenuOpen(false)} style={{ padding: '8px 0', textDecoration: 'none', color: '#666' }}>🏋 Train</Link>
</> </>
)} )}
</nav> </nav>