import { Drawer, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Toolbar, Tooltip, } from '@mui/material'; import { Dashboard as DashboardIcon, DirectionsCar, Build, People, Air, } from '@mui/icons-material'; import { useNavigate, useLocation } from 'react-router-dom'; const DRAWER_WIDTH = 240; interface NavigationItem { text: string; icon: JSX.Element; path: string; } const navigationItems: NavigationItem[] = [ { text: 'Dashboard', icon: , path: '/dashboard', }, { text: 'Fahrzeuge', icon: , path: '/fahrzeuge', }, { text: 'Ausrüstung', icon: , path: '/ausruestung', }, { text: 'Mitglieder', icon: , path: '/mitglieder', }, { text: 'Atemschutz', icon: , path: '/atemschutz', }, ]; interface SidebarProps { mobileOpen: boolean; onMobileClose: () => void; } function Sidebar({ mobileOpen, onMobileClose }: SidebarProps) { const navigate = useNavigate(); const location = useLocation(); const handleNavigation = (path: string) => { navigate(path); onMobileClose(); }; const drawerContent = ( <> {navigationItems.map((item) => { const isActive = location.pathname === item.path; return ( handleNavigation(item.path)} aria-label={`Zu ${item.text} navigieren`} sx={{ '&.Mui-selected': { backgroundColor: 'primary.light', color: 'primary.contrastText', '&:hover': { backgroundColor: 'primary.main', }, '& .MuiListItemIcon-root': { color: 'primary.contrastText', }, }, }} > {item.icon} ); })} ); return ( <> {/* Mobile drawer */} {drawerContent} {/* Desktop drawer */} {drawerContent} ); } export default Sidebar;