import type { EnvironmentConnectionPhase } from "@t3tools/client-runtime/connection"; import { cn } from "~/lib/utils"; import { Tooltip, TooltipPopup, TooltipTrigger } from "~/components/ui/tooltip"; /** Canonical connection-phase → dot color mapping shared by every status dot. */ export function connectionPhaseDotClassName(phase: EnvironmentConnectionPhase): string { switch (phase) { case "connected": return "bg-success"; case "connecting": case "reconnecting": return "bg-warning"; case "error": return "bg-destructive"; default: return "bg-muted-foreground/40"; } } /** Ping halo for transitional phases; null renders no ping. */ export function connectionPhasePingClassName(phase: EnvironmentConnectionPhase): string | null { return phase === "connecting" || phase === "reconnecting" ? "bg-warning/60 duration-2000" : null; } type ConnectionStatusDotProps = { tooltipText?: string | null; dotClassName: string; pingClassName?: string | null; }; export function ConnectionStatusDot({ tooltipText, dotClassName, pingClassName, }: ConnectionStatusDotProps) { const dotContent = ( <> {pingClassName ? ( ) : null} ); if (!tooltipText) { return ( {dotContent} ); } const dot = ( ); return ( {tooltipText} ); }