/** * Sidebar Component * Cyberpunk Terminal Aesthetic */ import { useState } from "react"; import { Link, useLocation } from "react-router-dom"; import { Button } from "@/components/ui/button"; import { ThemeToggle } from "@/components/ui/theme-toggle"; import { Menu, X, LayoutDashboard, FolderGit2, Zap, ListTodo, Settings, Trash2, ChevronLeft, ChevronRight, Github, UserCircle, Shield, MessageSquare, Bot, } from "lucide-react"; import routes from "@/app/routes"; import { version } from "../../../package.json"; // Icon mapping for routes const routeIcons: Record = { "/": , "/dashboard": , "/projects": , "/instant-analysis": , "/audit-tasks": , "/audit-rules": , "/prompts": , "/admin": , "/recycle-bin": , }; interface SidebarProps { collapsed: boolean; setCollapsed: (collapsed: boolean) => void; } export default function Sidebar({ collapsed, setCollapsed }: SidebarProps) { const location = useLocation(); const [mobileOpen, setMobileOpen] = useState(false); const visibleRoutes = routes.filter(route => route.visible !== false); return ( <> {/* Mobile Menu Button */} {/* Overlay for mobile */} {mobileOpen && (
setMobileOpen(false)} /> )} {/* Sidebar */} ); }