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;