branch:
ConnectionStatus.tsx
1273 bytesRaw
interface ConnectionStatusProps {
status: "connected" | "connecting" | "disconnected";
agentName?: string;
instanceName?: string;
}
const statusConfig = {
connected: {
label: "Connected",
dot: "bg-green-500",
text: "text-kumo-success",
bg: "bg-green-500/10"
},
connecting: {
label: "Connecting…",
dot: "bg-kumo-warning animate-pulse",
text: "text-kumo-warning",
bg: "bg-kumo-warning-tint"
},
disconnected: {
label: "Disconnected",
dot: "bg-kumo-danger",
text: "text-kumo-danger",
bg: "bg-kumo-danger-tint"
}
} as const;
export function ConnectionStatus({
status,
agentName,
instanceName
}: ConnectionStatusProps) {
const cfg = statusConfig[status];
return (
<div className="flex items-center gap-2 text-sm">
<span
className={`inline-flex items-center justify-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium min-w-[6.5rem] ${cfg.bg} ${cfg.text}`}
>
<span className={`w-1.5 h-1.5 rounded-full shrink-0 ${cfg.dot}`} />
{cfg.label}
</span>
{agentName && instanceName && status === "connected" && (
<span className="text-kumo-inactive text-xs">
{agentName}/{instanceName}
</span>
)}
</div>
);
}