"use client"; import type { Widget } from "@/lib/config/schema"; import { useWidgetSubscription } from "@/lib/ws/client"; import { formatBytes } from "@/lib/format"; type SystemWidget = Extract; function usagePercent(used: number, total: number): number { return total > 0 ? Math.min(100, (used / total) * 100) : 0; } function UsageBar({ label, percent, detail }: { label: string; percent: number; detail: string }) { return (
{label} {detail}
); } export function SystemWidget({ widget, widgetId }: { widget: SystemWidget; widgetId: string }) { const result = useWidgetSubscription(widgetId); const data = result?.type === "system" ? result.data : null; const errorMessage = result?.type === "error" ? result.message : null; return (
{widget.name} {errorMessage && {errorMessage}} {data && (
Network ↓ {formatBytes(data.netRxBytesPerSec)}/s · ↑ {formatBytes(data.netTxBytesPerSec)}/s
)}
); }