import { Outlet, useNavigate, useLocation } from 'react-router-dom'; import { Box, Drawer, AppBar, Toolbar, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Typography, IconButton, Divider, Menu, MenuItem, } from '@mui/material'; import { Dashboard as DashboardIcon, Dns as ServerIcon, Timeline as LogsIcon, Menu as MenuIcon, Logout as LogoutIcon, AccountCircle, } from '@mui/icons-material'; import { useState } from 'react'; import { useAuthStore } from '../stores/authStore'; const drawerWidth = 240; const menuItems = [ { text: 'Dashboard', icon: , path: '/' }, { text: 'Servers', icon: , path: '/servers' }, { text: 'Logs', icon: , path: '/logs' }, ]; export default function Layout() { const navigate = useNavigate(); const location = useLocation(); const { user, logout } = useAuthStore(); const [mobileOpen, setMobileOpen] = useState(false); const [anchorEl, setAnchorEl] = useState(null); const handleDrawerToggle = () => { setMobileOpen(!mobileOpen); }; const handleProfileMenuOpen = (event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }; const handleProfileMenuClose = () => { setAnchorEl(null); }; const handleLogout = () => { handleProfileMenuClose(); logout(); navigate('/login'); }; const drawer = (
IPMI Fan Control {menuItems.map((item) => ( { navigate(item.path); setMobileOpen(false); }} > {item.icon} ))}
); return ( {menuItems.find((item) => item.path === location.pathname)?.text || 'IPMI Fan Control'} {user?.username} Logout {drawer} {drawer} ); }