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'}
{drawer}
{drawer}
);
}