"use client"; import type { Widget } from "@/lib/config/schema"; import { useWidgetSubscription } from "@/lib/ws/client"; import { StatusDot } from "@/components/widgets/StatusDot"; import { formatBytes, formatUptime } from "@/lib/format"; type DockerWidget = Extract; export function DockerWidget({ widget, widgetId }: { widget: DockerWidget; widgetId: string }) { const result = useWidgetSubscription(widgetId); const data = result?.type === "docker" ? result.data : null; const errorMessage = result?.type === "error" ? result.message : null; return (
{widget.href ? ( {widget.name} ) : ( {widget.name} )}
{errorMessage && {errorMessage}} {data && (
{data.uptimeSeconds !== null &&
Uptime: {formatUptime(data.uptimeSeconds)}
} {widget.showStats && data.cpuPercent !== null &&
CPU: {data.cpuPercent.toFixed(1)}%
} {widget.showStats && data.memUsageBytes !== null && (
Mem: {formatBytes(data.memUsageBytes)} {data.memLimitBytes ? ` / ${formatBytes(data.memLimitBytes)}` : ""}
)} {data.restartCount > 0 &&
Restarts: {data.restartCount}
}
)}
); }