"use client" import { SidebarGroup, SidebarGroupLabel, SidebarGroupAction, SidebarGroupContent, SidebarMenu, SidebarMenuItem, } from "@multica/ui/components/ui/sidebar" import { Button } from "@multica/ui/components/ui/button" import { HugeiconsIcon } from "@hugeicons/react" import { PlusSignIcon, Delete02Icon } from "@hugeicons/core-free-icons" import { useHubStore } from "../hooks/use-hub-store" import { useHubInit } from "../hooks/use-hub-init" const STATUS_DOT: Record = { connected: "bg-green-500/60", loading: "bg-yellow-500/50 animate-pulse", error: "bg-red-500/60", idle: "bg-muted-foreground/50", } const STATUS_LABEL: Record = { connected: "Connected", loading: "Connecting...", error: "Disconnected", idle: "Idle", } export function HubSidebar() { useHubInit() const status = useHubStore((s) => s.status) const hub = useHubStore((s) => s.hub) const agents = useHubStore((s) => s.agents) const activeAgentId = useHubStore((s) => s.activeAgentId) const fetchHub = useHubStore((s) => s.fetchHub) const createAgent = useHubStore((s) => s.createAgent) const deleteAgent = useHubStore((s) => s.deleteAgent) const setActiveAgentId = useHubStore((s) => s.setActiveAgentId) return ( <> Hub
{STATUS_LABEL[status]}
{status === "connected" && hub && (
{hub.hubId}
)} {status === "error" && (
)}
{status === "connected" && ( Agents {agents.length === 0 && (
No agents
)} {agents.map(agent => (
setActiveAgentId(agent.id)} data-active={agent.id === activeAgentId || undefined} className="flex items-center w-full h-8 px-2 rounded-md cursor-pointer hover:bg-sidebar-accent hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-active:font-medium" > {agent.id}
))}
)} ) }