import React from "react"; import { HardDrive } from "lucide-react"; import { useTranslation } from "react-i18next"; import type { ServerMetrics } from "@/ui/main-axios.ts"; import { RechartsPrimitive } from "@/components/ui/chart.tsx"; const { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, } = RechartsPrimitive; interface DiskWidgetProps { metrics: ServerMetrics | null; metricsHistory: ServerMetrics[]; } export function DiskWidget({ metrics, metricsHistory }: DiskWidgetProps) { const { t } = useTranslation(); const chartData = React.useMemo(() => { return metricsHistory.map((m, index) => ({ index, disk: m.disk?.percent || 0, })); }, [metricsHistory]); return (

{t("serverStats.diskUsage")}

{typeof metrics?.disk?.percent === "number" ? `${metrics.disk.percent}%` : "N/A"}
{(() => { const used = metrics?.disk?.usedHuman; const total = metrics?.disk?.totalHuman; if (used && total) { return `${used} / ${total}`; } return "N/A"; })()}
{(() => { const available = metrics?.disk?.availableHuman; return available ? `${t("serverStats.available")}: ${available}` : `${t("serverStats.available")}: N/A`; })()}
[`${value.toFixed(1)}%`, "Disk"]} cursor={{ stroke: "#fb923c", strokeWidth: 1, strokeDasharray: "3 3", }} />
); }