import { useLocation, useNavigate } from 'react-router-dom'; import { useSelector } from 'react-redux'; import { Drawer, List, ListItemButton, ListItemIcon, ListItemText, Toolbar, Box, Divider, Typography, } from '@mui/material'; import DashboardIcon from '@mui/icons-material/Dashboard'; import DescriptionIcon from '@mui/icons-material/Description'; import AddCircleIcon from '@mui/icons-material/AddCircle'; import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings'; import AssignmentIcon from '@mui/icons-material/Assignment'; import PeopleIcon from '@mui/icons-material/People'; import { selectSidebarOpen } from '../app/slices/uiSlice'; import { selectUser } from '../app/slices/authSlice'; import type { RootState } from '../app/store'; const DRAWER_WIDTH = 240; const dispatcherNav = [ { label: 'Dashboard', path: '/', icon: }, { label: 'My Proposals', path: '/proposals', icon: }, { label: 'New Proposal', path: '/proposals/new', icon: }, ]; const adminNav = [ { label: 'Admin Queue', path: '/admin', icon: }, { label: 'All Proposals', path: '/admin/proposals', icon: }, ]; const sysadminNav = [ { label: 'Users', path: '/admin/users', icon: }, ]; export default function Sidebar() { const navigate = useNavigate(); const location = useLocation(); const open = useSelector((state: RootState) => selectSidebarOpen(state)); const user = useSelector((state: RootState) => selectUser(state)); const isAdmin = user?.role === 'Admin' || user?.role === 'SysAdmin'; const isSysAdmin = user?.role === 'SysAdmin'; const navItems = dispatcherNav; return ( {navItems.map((item) => ( navigate(item.path)} > {item.icon} ))} {isAdmin && ( <> Admin {adminNav.map((item) => ( navigate(item.path)} > {item.icon} ))} {isSysAdmin && sysadminNav.map((item) => ( navigate(item.path)} > {item.icon} ))} )} {user && ( {user.displayName} {user.role} )} ); }