"use client"; import type { Widget } from "@/lib/config/schema"; import { useWidgetSubscription } from "@/lib/ws/client"; import { SkeletonLines } from "@/components/widgets/Skeleton"; import { WidgetCard } from "@/components/widgets/WidgetCard"; import { MetricBar } from "@/components/widgets/MetricBar"; 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; } 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 (
System
{widget.name} {errorMessage && {errorMessage}} {!result && !errorMessage && } {data && (
↓ {formatBytes(data.netRxBytesPerSec)}/s · ↑ {formatBytes(data.netTxBytesPerSec)}/s
)}
); }