"use client" import type { ComponentType, CSSProperties } from "react" import { useAudienceMode } from "@/components/audience-mode-provider" import { Badge } from "@/components/ui/badge" import { Card, CardContent, CardHeader } from "@/components/ui/card" import { useRouter } from "next/navigation" import { AlertTriangle, BadgeCheck, BookOpenText, ChartNoAxesColumn, FlaskConical, Scale, Users, } from "lucide-react" import type { BenchmarkEvalListItem } from "@/lib/eval-processing" interface EvalCardProps { summary: BenchmarkEvalListItem delayMs?: number } export function EvalCard({ summary, delayMs = 0 }: EvalCardProps) { const router = useRouter() const { mode } = useAudienceMode() const isResearchView = mode === "research" const scorePercent = `${Math.round(summary.avg_score_norm * 100)}%` const purpose = summary.factsheet?.purpose ?? "General capability evaluation" return ( router.push(`/evals/${summary.evaluation_id}`)} >
Eval Summary
{summary.evaluation_name}
{summary.metric_config.evaluation_description}
{summary.third_party_ratio > 0 && ( Independently evaluated )} {summary.missing_generation_config_count > 0 && ( Partial config )}
{isResearchView ? ( <>
Methodology
{summary.factsheet?.principles_tested && summary.factsheet.principles_tested !== "Not specified" && ( )} {summary.latest_source_name && ( )} 0 ? `${summary.missing_generation_config_count} result${summary.missing_generation_config_count !== 1 ? "s" : ""} without config` : "Fully documented" } />
) : ( <>
Purpose
{purpose}
{summary.missing_generation_config_count > 0 && (

Some results lack documented generation settings — direct score comparisons should be read with care.

)}
)}
) } function MetricPill({ icon: Icon, label, value, tone, }: { icon: ComponentType<{ className?: string }> label: string value: string tone: string }) { return (
{label}
{value}
) } function DataRow({ label, value }: { label: string; value: string }) { return (
{label} {value}
) }