import { Inbox, CircleDot, Target, LayoutDashboard, DollarSign, Gauge, History, Search, SquarePen, Network, Settings, } from "lucide-react"; import { useQuery } from "@tanstack/react-query"; import { SidebarSection } from "./SidebarSection"; import { SidebarNavItem } from "./SidebarNavItem"; import { SidebarProjects } from "./SidebarProjects"; import { SidebarAgents } from "./SidebarAgents"; import { useDialog } from "../context/DialogContext"; import { useCompany } from "../context/CompanyContext"; import { heartbeatsApi } from "../api/heartbeats"; import { queryKeys } from "../lib/queryKeys"; import { useInboxBadge } from "../hooks/useInboxBadge"; import { Button } from "@/components/ui/button"; import { PluginSlotOutlet } from "@/plugins/slots"; export function Sidebar() { const { openNewIssue } = useDialog(); const { selectedCompanyId, selectedCompany } = useCompany(); const inboxBadge = useInboxBadge(selectedCompanyId); const { data: liveRuns } = useQuery({ queryKey: queryKeys.liveRuns(selectedCompanyId!), queryFn: () => heartbeatsApi.liveRunsForCompany(selectedCompanyId!), enabled: !!selectedCompanyId, refetchInterval: 10_000, }); const liveRunCount = liveRuns?.length ?? 0; function openSearch() { document.dispatchEvent(new KeyboardEvent("keydown", { key: "k", metaKey: true })); } const pluginContext = { companyId: selectedCompanyId, companyPrefix: selectedCompany?.issuePrefix ?? null, }; return ( ); }