"use client" import { AlertOctagon, AlertTriangle, ExternalLink, Info } from "lucide-react" import type { KnownIssue } from "@/lib/known-issues" interface KnownIssuesPanelProps { issues: KnownIssue[] /** * "compact" — single-line summary chip suitable for surfacing at the top of * the policy overview. "full" — full bordered list with descriptions. */ variant?: "compact" | "full" } const SEVERITY_STYLE: Record; label: string }> = { info: { wrap: "border-sky-300/60 bg-sky-50/60 text-sky-900 dark:border-sky-900/50 dark:bg-sky-950/20 dark:text-sky-100", icon: Info, label: "Note", }, warning: { wrap: "border-amber-300/60 bg-amber-50/60 text-amber-900 dark:border-amber-900/50 dark:bg-amber-950/20 dark:text-amber-100", icon: AlertTriangle, label: "Known issue", }, critical: { wrap: "border-rose-300/60 bg-rose-50/60 text-rose-900 dark:border-rose-900/50 dark:bg-rose-950/20 dark:text-rose-100", icon: AlertOctagon, label: "Critical issue", }, } export function KnownIssuesPanel({ issues, variant = "full" }: KnownIssuesPanelProps) { if (issues.length === 0) return null const sorted = [...issues].sort((a, b) => severityRank(b.severity) - severityRank(a.severity)) const headlineSeverity = sorted[0].severity const Style = SEVERITY_STYLE[headlineSeverity] const Icon = Style.icon if (variant === "compact") { return (
{issues.length} known issue{issues.length === 1 ? "" : "s"} documented — see below for detail.
) } return (
Known issues with this benchmark
) } function severityRank(s: KnownIssue["severity"]): number { if (s === "critical") return 3 if (s === "warning") return 2 return 1 }