import { useEffect, useState } from "react"; import { cn } from "@/lib/utils"; import { useClient } from "@/providers/ClientProvider"; import type { ConnectionStatus } from "@/lib/types"; const COPY: Record = { idle: { label: "Idle", color: "bg-card/40 text-muted-foreground" }, connecting: { label: "Connecting…", color: "bg-amber-500/10 text-amber-700 dark:text-amber-300", }, open: { label: "Connected", color: "bg-emerald-500/10 text-emerald-700 dark:text-emerald-400", }, reconnecting: { label: "Reconnecting…", color: "bg-amber-500/10 text-amber-700 dark:text-amber-300", }, closed: { label: "Disconnected", color: "bg-card/40 text-muted-foreground", }, error: { label: "Connection error", color: "bg-destructive/10 text-destructive", }, }; export function ConnectionBadge() { const { client } = useClient(); const [status, setStatus] = useState(client.status); useEffect(() => client.onStatus(setStatus), [client]); const meta = COPY[status]; const pulsing = status === "connecting" || status === "reconnecting" || status === "error"; return ( {pulsing && ( )} {meta.label} ); }