import { AlertTriangle, Radio, Wifi, WifiOff } from "lucide-react"; import type { PlatformStatus } from "@/lib/api"; import { isoTimeAgo } from "@/lib/utils"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { useI18n } from "@/i18n"; export function PlatformsCard({ platforms }: PlatformsCardProps) { const { t } = useI18n(); const platformStateBadge: Record< string, { variant: "success" | "warning" | "destructive"; label: string } > = { connected: { variant: "success", label: t.status.connected }, disconnected: { variant: "warning", label: t.status.disconnected }, fatal: { variant: "destructive", label: t.status.error }, }; return (
{t.status.connectedPlatforms}
{platforms.map(([name, info]) => { const display = platformStateBadge[info.state] ?? { variant: "outline" as const, label: info.state, }; const IconComponent = info.state === "connected" ? Wifi : info.state === "fatal" ? AlertTriangle : WifiOff; return (
{name} {info.error_message && ( {info.error_message} )} {info.updated_at && ( {t.status.lastUpdate}: {isoTimeAgo(info.updated_at)} )}
{display.variant === "success" && ( )} {display.label}
); })}
); } interface PlatformsCardProps { platforms: [string, PlatformStatus][]; }