import { Laptop, Monitor, Terminal, type LucideIcon } from "lucide-react"; import { cn } from "@/lib/cn"; import type { SystemStatus } from "@/lib/types"; import { useE621Metrics } from "@/store/e621Metrics"; const osIcons: Record = { linux: Terminal, apple: Laptop, windows: Monitor, }; function formatMs(value: number): string { if (value >= 1000) return `${(value / 1000).toFixed(1)}s`; if (value >= 100) return `${Math.round(value)}ms`; return `${value.toFixed(1)}ms`; } export function StatusPill({ status }: { status?: SystemStatus }) { const requestCount = useE621Metrics((state) => state.requestCount); const totalMs = useE621Metrics((state) => state.totalMs); const last = useE621Metrics((state) => state.last); if (!status) return null; const OsIcon = osIcons[status.os.icon] ?? Monitor; return ( ENV: {status.env.toUpperCase()} · {status.git_hash} · {status.os.name} · {formatMs(status.server_time_ms)} {requestCount > 0 ? ( <> · e621: {formatMs(totalMs)} ) : null} {status.e621_time_ms !== null ? ( <> · e621 (server): {formatMs(status.e621_time_ms)} ) : null} ); }