import { Activity, ArrowDownRight, ArrowRight, ArrowUpRight, Briefcase, Building2, Scale, ShieldAlert, Ship, User, Users, } from 'lucide-react'; import type { ElementType } from 'react'; import { Line, LineChart, ResponsiveContainer, YAxis } from 'recharts'; import type { DomainData } from '../types'; const DOMAIN_ICONS: Record = { ShieldAlert, Ship, Briefcase, Activity, Scale, Building2, Users, User, }; interface DomainCardProps { data: DomainData; } export function DomainCard({ data }: DomainCardProps) { const Icon = DOMAIN_ICONS[data.icon] ?? Activity; const chartData = data.sparkline.map((val, i) => ({ value: val, index: i })); const min = Math.min(...data.sparkline); const max = Math.max(...data.sparkline); const alertColors: Record = { critical: 'var(--color-critical)', high: 'var(--color-high)', medium: 'var(--color-medium)', low: 'var(--color-low)', info: 'var(--color-info)', }; const alertColor = alertColors[data.alerts.severity] ?? 'var(--color-fg-muted)'; return (

{data.name}

{data.alerts.count > 0 && (
{data.alerts.count} Alert{data.alerts.count > 1 ? 's' : ''}
)}
{data.kpis.map((kpi, i) => (
{kpi.label}
{kpi.value} {kpi.trend === 'up' ? ( ) : kpi.trend === 'down' ? ( ) : ( )}
))}
); }