import { TrendingUp, Award, BarChart2 } from "lucide-react"; const MODEL_METRICS = [ { id: "bart_large_cnn", label: "BART-large-CNN", r1: 0.432, r2: 0.198, rl: 0.391, cr: 3.2, delta: "+35.8%", type: "abstractive", best: true }, { id: "flan_t5_small", label: "Flan-T5-small", r1: 0.408, r2: 0.181, rl: 0.372, cr: 3.5, delta: "+28.3%", type: "abstractive", best: false }, { id: "pegasus_cnn", label: "PEGASUS", r1: 0.389, r2: 0.162, rl: 0.354, cr: 3.8, delta: "+22.3%", type: "abstractive", best: false }, { id: "textrank", label: "TextRank", r1: 0.318, r2: 0.109, rl: 0.287, cr: 2.8, delta: "—", type: "extractive", best: false }, ]; const METRIC_BULLETS = [ { key: "R-1", desc: "Unigram overlap between generated and reference summary" }, { key: "R-2", desc: "Bigram overlap — measures phrase-level accuracy" }, { key: "R-L", desc: "Longest common subsequence — fluency & order" }, { key: "CR", desc: "Compression Ratio — input÷output token count" }, ]; const MAX_R1 = 0.432; export default function LiveMetrics({ activeModel }) { const active = MODEL_METRICS.find(m => m.id === activeModel) || MODEL_METRICS[0]; return (
{/* Header */}
Experiment Results

ROUGE scores · GCC + US corpus · Select a model to compare live

{/* ROUGE-1 bars */}
{MODEL_METRICS.map((m) => { const isSelected = m.id === activeModel; const pct = Math.round((m.r1 / MAX_R1) * 100); const isExtractive = m.type === "extractive"; return (
{m.label} {m.best && ( BEST )} {isSelected && ( active )} {isExtractive && ( extractive )}
{m.r1.toFixed(3)}
); })}
{/* Divider */}
{/* Active model full metrics */}
{active.label} — Full Metrics
{[ { label: "R-1", value: active.r1.toFixed(3), highlight: true }, { label: "R-2", value: active.r2.toFixed(3), highlight: false }, { label: "R-L", value: active.rl.toFixed(3), highlight: false }, { label: "CR", value: `${active.cr}×`, highlight: false }, ].map(({ label, value, highlight }) => (
{label} {value}
))}
{/* Metric bullet descriptions */}
    {METRIC_BULLETS.map(({ key, desc }) => (
  • {key} — {desc}
  • ))}
{active.delta !== "—" && (
{active.delta} ROUGE-1 gain over TextRank baseline
)}
); }