"use client"
interface GameWithStats {
id: string
title: string
stats: {
totalEntries: number
avgFps: number | null
medianFps: number | null
bestFps: number | null
avgOnePercentLow: number | null
avgStability: number | null
bestDevice: string | null
tierBreakdown: { unplayable: number; playable: number; smooth: number; excellent: number } | null
deviceBreakdown: Array<{ hardwareSlug: string; count: number; avgFps: number }>
}
}
function StatRow({ label, values }: { label: string; values: (string | number | null)[] }) {
return (
{values.map((val, i) => (
{i === 0 ? label : ""}
{val !== null && val !== undefined ? val : "—"}
))}
)
}
export function StatsComparison({ games }: { games: GameWithStats[] }) {
if (games.length === 0) return null
return (
{/* Header row with game titles */}
{games.map(game => (
{game.title}
{game.stats.totalEntries} entries
))}
g.stats.avgFps ? `${g.stats.avgFps}` : null)} />
g.stats.medianFps ? `${g.stats.medianFps}` : null)} />
g.stats.bestFps ? `${g.stats.bestFps}` : null)} />
g.stats.avgOnePercentLow ? `${g.stats.avgOnePercentLow}` : null)} />
g.stats.avgStability != null ? `${g.stats.avgStability}%` : null)} />
g.stats.bestDevice ?? null)} />
)
}