import type { ScoreBreakdown } from '../../lib/types'; interface DimensionBreakdownPanelProps { breakdown: ScoreBreakdown; } function formatWeight(weight: number): string { return `${Math.round(weight * 100)}%`; } function formatRawValue(value: number | string | null): string { if (value === null) return '—'; if (typeof value === 'string') return value; return Number.isInteger(value) ? value.toString() : value.toFixed(2); } export function DimensionBreakdownPanel({ breakdown }: DimensionBreakdownPanelProps) { return (
{/* Sub-score rows */} {breakdown.sub_scores.length > 0 && (
{breakdown.sub_scores.map((sub) => (
{sub.name}
{sub.score.toFixed(1)} {formatWeight(sub.weight)} {formatRawValue(sub.raw_value)}
))}
)} {/* Formula description */} {breakdown.formula && (

{breakdown.formula}

)} {/* Unavailable sub-scores */} {breakdown.unavailable.length > 0 && (
{breakdown.unavailable.map((item) => (
{item.name} {item.reason}
))}
)}
); }