// Copyright: © 2026 TWWIM UG. All rights reserved. (www.twwim.com) import { useTranslation } from '@/i18n/TranslationProvider'; import { Activity, Clock, AlertTriangle, MessagesSquare, PauseCircle, CheckCircle2 } from 'lucide-react'; import type { QueueCounts } from '../lib/types'; interface QueueMetricsHeaderProps { counts: QueueCounts; } interface MetricCardProps { label: string; value: number; icon: React.ReactNode; tone: 'emerald' | 'violet' | 'amber' | 'red' | 'gray' | 'cyan'; testId: string; } const TONES: Record = { emerald: 'bg-emerald-50 text-emerald-700 ring-emerald-200', violet: 'bg-violet-50 text-violet-700 ring-violet-200', amber: 'bg-amber-50 text-amber-700 ring-amber-200', red: 'bg-red-50 text-red-700 ring-red-200', gray: 'bg-gray-50 text-gray-700 ring-gray-200', cyan: 'bg-cyan-50 text-cyan-700 ring-cyan-200', }; function MetricCard({ label, value, icon, tone, testId }: MetricCardProps) { return (
{icon}
{label}
{value}
); } export function QueueMetricsHeader({ counts }: QueueMetricsHeaderProps) { const { t } = useTranslation(); return (
} tone="emerald" testId="metric-active" /> } tone="violet" testId="metric-intercepted" /> } tone="amber" testId="metric-awaiting" /> } tone="red" testId="metric-breaching" /> } tone="cyan" testId="metric-idle" /> } tone="gray" testId="metric-closed" />
); }