"use client" import Link from "next/link" import { ArrowUpRight } from "lucide-react" import type { BenchmarkEvaluationCardData } from "@/components/benchmark-evaluation-card" import { cn } from "@/lib/utils" interface ModelTableProps { rows: BenchmarkEvaluationCardData[] totalBenchmarks: number selectedIds: string[] onToggleSelect: (id: string) => void maxCompare: number } function formatDateShort(value: string | undefined) { if (!value) return "—" const numeric = Number(value) const date = !Number.isNaN(numeric) && !value.includes("-") ? new Date(numeric * 1000) : new Date(value) if (Number.isNaN(date.getTime())) return value return date.toLocaleDateString("en-US", { year: "numeric", month: "short" }) } function formatParams(row: BenchmarkEvaluationCardData) { if (row.params_billions != null && Number.isFinite(row.params_billions)) { if (row.params_billions >= 100) return `${Math.round(row.params_billions)}B` if (row.params_billions >= 10) return `${row.params_billions.toFixed(0)}B` if (row.params_billions >= 1) return `${row.params_billions.toFixed(1)}B` return `${(row.params_billions * 1000).toFixed(0)}M` } if (row.params && row.params !== "Not specified") return row.params return "—" } function clampPct(value: number) { if (!Number.isFinite(value)) return 0 if (value < 0) return 0 if (value > 100) return 100 return value } export function ModelTable({ rows, totalBenchmarks, selectedIds, onToggleSelect, maxCompare, }: ModelTableProps) { return (
{rows.map((row) => { const isSelected = selectedIds.includes(row.id) const coverage = totalBenchmarks > 0 ? clampPct((row.benchmarks_count / totalBenchmarks) * 100) : 0 const cantSelect = !isSelected && selectedIds.length >= maxCompare return ( ) })}
Model Developer Released Params Benchmarks Results Coverage
{row.model_name}
{row.canonical_model_name && row.canonical_model_name !== row.model_name && (
{row.canonical_model_name}
)}
{row.developer} {formatDateShort(row.release_date ?? row.latest_timestamp)} {formatParams(row)} {row.benchmarks_count.toLocaleString()} {" "} / {totalBenchmarks.toLocaleString()} {row.evaluations_count.toLocaleString()}
{Math.round(coverage)}%
Open
) }