/** * Sidebar component - Side navigation with quick actions and stats summary */ import React from 'react'; import { Link, useLocation } from 'react-router-dom'; import { Box, Drawer, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Divider, Typography, Button, Paper, } from '@mui/material'; import { Dashboard as DashboardIcon, CloudUpload as UploadIcon, History as HistoryIcon, PlayArrow as StartIcon, Analytics as StatsIcon, } from '@mui/icons-material'; const DRAWER_WIDTH = 240; interface SidebarProps { stats?: { totalJobs?: number; completedJobs?: number; avgAccuracy?: number; }; } const Sidebar: React.FC = ({ stats }) => { const location = useLocation(); const menuItems = [ { path: '/', label: 'Dashboard', icon: }, { path: '/upload', label: 'Upload Dataset', icon: }, { path: '/jobs', label: 'Job History', icon: }, ]; const isActive = (path: string): boolean => { if (path === '/') { return location.pathname === '/'; } return location.pathname.startsWith(path); }; return ( {/* Quick Stats Section */} {stats && ( Quick Stats Total Jobs: {stats.totalJobs || 0} Completed: {stats.completedJobs || 0} Avg Accuracy: {stats.avgAccuracy ? `${stats.avgAccuracy.toFixed(1)}%` : 'N/A'} )} {/* Main Navigation */} {menuItems.map((item) => ( {item.icon} ))} {/* Quick Actions */} Quick Actions ); }; export default Sidebar;