import { NavLink } from "react-router"; import { MessageSquareText, LibraryBig, Rotate3d, MessageCircleCode, Coins, BrainCircuit, Workflow, Settings, TestTube2, Wifi, WifiOff, Database, ChevronDown, } from "lucide-react"; import { cn } from "@/lib/utils"; import { useConnectionState } from "@/providers/socket-provider"; import { useSessionStore } from "@/hooks/use-session-store"; import { useFlows } from "@/hooks/use-flows"; import { useSettings } from "@/providers/settings-provider"; // --------------------------------------------------------------------------- // Nav item // --------------------------------------------------------------------------- interface NavItemProps { to: string; icon: React.ElementType; label: string; } function NavItem({ to, icon: Icon, label }: NavItemProps) { return ( {({ isActive }) => (
{label}
)}
); } // --------------------------------------------------------------------------- // Connection status badge // --------------------------------------------------------------------------- function ConnectionBadge() { const state = useConnectionState(); const isConnected = state.status === "connected" || state.status === "authenticated" || state.status === "unauthenticated"; const isWarning = state.status === "unauthenticated"; return (
{isConnected ? ( ) : ( )} {isWarning ? "Connected (no auth)" : state.status}
); } // --------------------------------------------------------------------------- // Flow selector dropdown // --------------------------------------------------------------------------- function FlowSelectorDropdown() { const { flows } = useFlows(); const flowId = useSessionStore((s) => s.flowId); const setFlowId = useSessionStore((s) => s.setFlowId); const collection = useSettings((s) => s.settings.collection); return (
{/* Flow selector */}
{/* Collection badge */}
{collection}
); } // --------------------------------------------------------------------------- // Sidebar // --------------------------------------------------------------------------- export function Sidebar() { return ( ); }