"use client"; import type { Widget } from "@/lib/config/schema"; import { useWidgetSubscription } from "@/lib/ws/client"; import { StatusDot } from "@/components/widgets/StatusDot"; import { SkeletonLines } from "@/components/widgets/Skeleton"; 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}} {!result && !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}
)}
)}
); }