import React, { useState, useEffect } from 'react' import { AppBar, Box, CssBaseline, Drawer, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Toolbar, Typography, useTheme, Fab, LinearProgress, } from '@mui/material' import { Menu as MenuIcon, Dashboard as DashboardIcon, Add as AddIcon, Settings as SettingsIcon, DarkMode as DarkModeIcon, LightMode as LightModeIcon, } from '@mui/icons-material' const drawerWidth = 240 interface LayoutProps { children: React.ReactNode loading?: boolean } export default function Layout({ children, loading = false }: LayoutProps) { const theme = useTheme() const [mobileOpen, setMobileOpen] = useState(false) const [darkMode, setDarkMode] = useState(false) // Check system preference and localStorage on mount useEffect(() => { const savedTheme = localStorage.getItem('theme') const prefersDark = window.matchMedia( '(prefers-color-scheme: dark)' ).matches setDarkMode(savedTheme === 'dark' || (!savedTheme && prefersDark)) }, []) const handleDrawerToggle = () => { setMobileOpen(!mobileOpen) } const handleThemeToggle = () => { const newTheme = !darkMode setDarkMode(newTheme) localStorage.setItem('theme', newTheme ? 'dark' : 'light') document.documentElement.classList.toggle('dark', newTheme) } const menuItems = [ { text: 'Tasks', icon: , path: '/', }, { text: 'Settings', icon: , path: '/settings', }, ] const drawer = (
Captain's Log {menuItems.map(item => ( {item.icon} ))}
) return ( {/* Loading indicator */} {loading && ( )} {/* App Bar */} Captain's Log {darkMode ? : } {/* Drawer */} {/* Mobile drawer */} {drawer} {/* Desktop drawer */} {drawer} {/* Main content */} {children} {/* Quick capture FAB */} ) }