"use client"; import type { Widget } from "@/lib/config/schema"; import { useWidgetSubscription } from "@/lib/ws/client"; type HttpWidget = Extract; function statusColor(up: boolean | undefined, consecutiveFailures: number): string { if (up === undefined) return "bg-fg-muted"; if (up) return "bg-status-up"; return consecutiveFailures > 2 ? "bg-status-down" : "bg-status-degraded"; } export function HttpWidget({ widget, widgetId }: { widget: HttpWidget; widgetId: string }) { const result = useWidgetSubscription(widgetId); const data = result?.type === "http" ? result.data : null; const errorMessage = result?.type === "error" ? result.message : null; return (
{widget.name}
{errorMessage && {errorMessage}} {data && (
Status: {data.statusCode ?? "—"}
Latency: {data.latencyMs}ms
{!data.up && data.error &&
{data.error}
}
)}
); }