import { NavLink } from "react-router-dom"; import { Activity, Anvil, Eye, Gauge, Hammer, LogOut, Terminal, Wifi, WifiOff, } from "lucide-react"; import { cn } from "@/lib/utils"; import { clearStoredAuth } from "@/lib/auth"; import { useNavigate } from "react-router-dom"; import type { WsConnectionState } from "@/hooks/useFleetWebSocket"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; const navItems = [ { to: "/dashboard", label: "Dashboard", icon: Gauge }, { to: "/forge", label: "Forge", icon: Hammer }, { to: "/calibrate", label: "Calibrate", icon: Activity }, { to: "/crucible", label: "Crucible", icon: Terminal }, { to: "/seer", label: "Seer", icon: Eye }, ]; interface SidebarProps { wsState?: WsConnectionState; } export function Sidebar({ wsState = "disconnected" }: SidebarProps) { const navigate = useNavigate(); const handleLogout = () => { clearStoredAuth(); navigate("/login"); }; const wsBadge = wsState === "connected" ? { variant: "online" as const, label: "WS LIVE", icon: Wifi } : wsState === "connecting" ? { variant: "probing" as const, label: "WS CONNECTING", icon: Wifi } : { variant: "offline" as const, label: "WS OFFLINE", icon: WifiOff }; const WsIcon = wsBadge.icon; return ( ); }