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:
+39
-44
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user