// KPI strip + traffic chart const { useState: useStateK, useRef: useRefK } = React; const KPIStrip = () => { const kpis = [ { label: 'Requests / min', value: '448', unit: '', delta: '+12%', kind: 'up', spark: window.LLMGateData.trafficSeries.map(p => p.external + p.selfhosted + p.cached), color: 'var(--accent)' }, { label: 'Tokens / min', value: '314', unit: 'K', delta: '+8.1%', kind: 'up', spark: [40,42,38,50,54,60,62,58,66,72,68,74,80,76,82,78,86,90,88,94,92,96,102,100], color: 'var(--blue)' }, { label: 'Spend today', value: '$82.96', unit: '', delta: '-4.2%', kind: 'down-good', spark: [20,24,22,28,30,34,36,40,42,46,48,52,56,58,62,66,68,72,74,76,78,80,82,82], color: 'var(--green)' }, { label: 'Error rate', value: '0.38', unit: '%', delta: '+0.06', kind: 'up-bad', spark: [0.2,0.3,0.25,0.22,0.28,0.35,0.40,0.38,0.42,0.48,0.32,0.30,0.28,0.33,0.38,0.41,0.36,0.34,0.38,0.42,0.39,0.36,0.40,0.38], color: 'var(--amber)' }, { label: 'p99 latency', value: '1.82', unit: 's', delta: '-120ms', kind: 'down-good', spark: [2.1,2.0,1.9,2.1,2.2,2.0,1.8,1.9,2.0,1.85,1.82,1.78,1.90,1.88,1.86,1.84,1.82,1.80,1.88,1.85,1.83,1.82,1.80,1.82], color: 'var(--purple)' }, ]; const deltaClass = (kind) => { if (kind === 'up' || kind === 'down-good') return ''; if (kind === 'up-bad') return 'down'; if (kind === 'down') return 'down'; return 'neutral'; }; return (
{kpis.map((k, i) => (
{k.label}
{k.value}{k.unit && {k.unit}}
{k.delta} vs yesterday
))}
); }; const TrafficChart = () => { const data = window.LLMGateData.trafficSeries; const wrapRef = useRefK(null); const [tooltip, setTooltip] = useStateK(null); const W = 1000, H = 180, pad = { l: 36, r: 12, t: 12, b: 22 }; const chartW = W - pad.l - pad.r; const chartH = H - pad.t - pad.b; const maxY = Math.ceil(Math.max(...data.map(p => p.external + p.selfhosted + p.cached)) / 100) * 100; const xFor = (i) => pad.l + (i / (data.length - 1)) * chartW; const yFor = (v) => pad.t + chartH - (v / maxY) * chartH; // Stacked areas: cached (bottom), self-hosted (mid), external (top) const stacks = data.map(p => ({ t: p.t, cached: p.cached, selfhostedTop: p.cached + p.selfhosted, externalTop: p.cached + p.selfhosted + p.external, })); const areaPath = (key, prevKey) => { const top = stacks.map((p, i) => `${i === 0 ? 'M' : 'L'}${xFor(i).toFixed(1)},${yFor(p[key]).toFixed(1)}`).join(' '); const bot = stacks.slice().reverse().map((p, ri) => { const i = stacks.length - 1 - ri; const v = prevKey ? p[prevKey] : 0; return `L${xFor(i).toFixed(1)},${yFor(v).toFixed(1)}`; }).join(' '); return `${top} ${bot} Z`; }; const handleMove = (e) => { const rect = wrapRef.current.getBoundingClientRect(); const ratio = W / rect.width; const x = (e.clientX - rect.left) * ratio; const idx = Math.round(((x - pad.l) / chartW) * (data.length - 1)); if (idx < 0 || idx >= data.length) { setTooltip(null); return; } const p = data[idx]; setTooltip({ x: xFor(idx) / ratio, y: yFor(p.external + p.selfhosted + p.cached) / ratio, idx, p, }); }; // grid lines const yTicks = [0, 0.25, 0.5, 0.75, 1].map(r => Math.round(maxY * r)); return (
Request volume — last 60 min
avg 448/min · peak 612/min
external
self-hosted
cached
setTooltip(null)}> {/* horizontal gridlines */} {yTicks.map((t, i) => ( {t} ))} {/* x labels */} {[0, 15, 30, 45, 59].map(i => ( {i === 59 ? 'now' : `-${59 - i}m`} ))} {/* stacks */} {/* top line (total) */} `${i === 0 ? 'M' : 'L'}${xFor(i).toFixed(1)},${yFor(p.externalTop).toFixed(1)}`).join(' ')} fill="none" stroke="var(--accent)" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> {/* tooltip crosshair */} {tooltip && ( )} {tooltip && (
t-{59 - tooltip.idx}m
external{Math.round(tooltip.p.external)}
self-hosted{Math.round(tooltip.p.selfhosted)}
cached{Math.round(tooltip.p.cached)}
total{Math.round(tooltip.p.external + tooltip.p.selfhosted + tooltip.p.cached)}
)}
); }; Object.assign(window, { KPIStrip, TrafficChart });