import { useState } from "react"; import { NavLink, useLocation } from "react-router-dom"; import { useQuery } from "@tanstack/react-query"; import { ChevronRight } from "lucide-react"; import { useCompany } from "../context/CompanyContext"; import { useSidebar } from "../context/SidebarContext"; import { agentsApi } from "../api/agents"; import { queryKeys } from "../lib/queryKeys"; import { cn } from "../lib/utils"; import { AgentIcon } from "./AgentIconPicker"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible"; import type { Agent } from "@paperclip/shared"; export function SidebarAgents() { const [open, setOpen] = useState(true); const { selectedCompanyId } = useCompany(); const { isMobile, setSidebarOpen } = useSidebar(); const location = useLocation(); const { data: agents } = useQuery({ queryKey: queryKeys.agents.list(selectedCompanyId!), queryFn: () => agentsApi.list(selectedCompanyId!), enabled: !!selectedCompanyId, }); const visibleAgents = (agents ?? []).filter( (a: Agent) => a.status !== "terminated" ); const agentMatch = location.pathname.match(/^\/agents\/([^/]+)/); const activeAgentId = agentMatch?.[1] ?? null; return (
Agents
{visibleAgents.map((agent: Agent) => ( { if (isMobile) setSidebarOpen(false); }} className={cn( "flex items-center gap-2.5 px-3 py-1.5 text-[13px] font-medium transition-colors", activeAgentId === agent.id ? "bg-accent text-foreground" : "text-foreground/80 hover:bg-accent/50 hover:text-foreground" )} > {agent.name} ))}
); }