memoryos / src /components /ScoreBar.tsx
Deeraj
initial deploy
ebab9b7
Raw
History Blame Contribute Delete
1.46 kB
/**
* ScoreBar — Animated horizontal bar showing score 0-1
*/
interface ScoreBarProps {
score: number;
label?: string;
color?: string;
height?: number;
}
export default function ScoreBar({
score,
label,
color = '#6366f1',
height = 6,
}: ScoreBarProps) {
const pct = Math.min(100, Math.max(0, score * 100));
return (
<div style={{ display: 'flex', alignItems: 'center', gap: '8px', width: '100%' }}>
{label && (
<span
style={{
fontSize: '12px',
color: 'var(--color-text-secondary)',
minWidth: '60px',
}}
>
{label}
</span>
)}
<div
style={{
flex: 1,
height: `${height}px`,
borderRadius: `${height / 2}px`,
background: 'var(--color-surface-hover)',
overflow: 'hidden',
}}
>
<div
className="score-bar-fill"
style={{
width: `${pct}%`,
height: '100%',
borderRadius: `${height / 2}px`,
background: `linear-gradient(90deg, ${color}88, ${color})`,
}}
/>
</div>
<span
style={{
fontSize: '12px',
fontWeight: 600,
color: 'var(--color-text-primary)',
fontFamily: 'monospace',
minWidth: '36px',
textAlign: 'right',
}}
>
{score.toFixed(2)}
</span>
</div>
);
}