"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 (
| 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()} |
|
Open
|