/** * llmindex.io — shared UI primitives (score display with mandatory CI whiskers) * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai * License: Proprietary — © Simon-Pierre Boucher, all rights reserved */ import type { ReactElement } from 'react'; export interface ScoreBarProps { score: number; scoreLow: number; scoreHigh: number; max?: number; } /** * Horizontal score bar with a CI whisker. Uncertainty is always rendered — * a score without its CI is a methodology violation (§8). */ export function ScoreBar({ score, scoreLow, scoreHigh, max = 1000 }: ScoreBarProps): ReactElement { const pct = (v: number): number => Math.min(100, Math.max(0, (v / max) * 100)); return (