"use client" import { BookOpen, ShieldCheck, AlertTriangle, GitCompareArrows, Users, Layers } from "lucide-react" import { SignalTooltip } from "@/components/signals/signal-tooltip" import type { ModelPolicySummary } from "@/lib/policy-summaries" interface ModelPolicyOverviewProps { /** Display name of the model — surfaced in the kicker. */ modelName: string policySummary: ModelPolicySummary /** Optional one-line model-scale framing (params / size context). */ scaleNote?: string | null } /** * Plain-language policy note for the model detail page. Mirrors the structure * of `` for the eval page but reframes around model-level * questions: how broad is the evidence, who reported it, can it be re-run, * can it be compared. * * All copy is rule-based — see lib/policy-summaries.ts. There is no live * LLM inference at runtime. */ export function ModelPolicyOverview({ modelName, policySummary, scaleNote }: ModelPolicyOverviewProps) { const { scopeSentence, coverageSentence, gapSentence, reportingSentence, reproducibilitySentence, comparabilitySentence, verificationLabel, } = policySummary return (
At a glance {modelName} {verificationLabel && ( {verificationLabel} )}
{scopeSentence} {coverageSentence ? <> {coverageSentence} : null} {gapSentence && ( {gapSentence} )} {reportingSentence} {reproducibilitySentence && ( {reproducibilitySentence} )} {comparabilitySentence && ( {comparabilitySentence} )} {scaleNote && ( {scaleNote} )}
) } function Row({ icon, label, tone, children, }: { icon?: "layers" | "alert" | "compare" | "users" label: string tone?: "accent" children: React.ReactNode }) { const Icon = icon === "layers" ? Layers : icon === "alert" ? AlertTriangle : icon === "compare" ? GitCompareArrows : icon === "users" ? Users : null return ( <>
{Icon && } {label}
{children}
) }