50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
interface Props {
|
|
status?: 'go' | 'marginal' | 'nogo' | null;
|
|
compact?: boolean;
|
|
}
|
|
|
|
const config = {
|
|
go: { color: 'var(--good)', label: 'GO', bg: 'rgba(61,186,114,0.15)' },
|
|
marginal: { color: 'var(--warn)', label: 'MARGINAL', bg: 'rgba(232,192,48,0.15)' },
|
|
nogo: { color: 'var(--danger)', label: 'NO-GO', bg: 'rgba(224,82,82,0.15)' },
|
|
};
|
|
|
|
export default function GoNogo({ status, compact }: Props) {
|
|
const cfg = status ? config[status] : null;
|
|
|
|
if (!cfg) {
|
|
return (
|
|
<div style={{
|
|
display: 'inline-block',
|
|
padding: compact ? '2px 8px' : '6px 14px',
|
|
borderRadius: 4,
|
|
background: 'var(--bg-panel)',
|
|
color: 'var(--text-lo)',
|
|
fontFamily: 'var(--font-mono)',
|
|
fontSize: compact ? 10 : 12,
|
|
fontWeight: 700,
|
|
letterSpacing: '0.1em',
|
|
}}>
|
|
UNKNOWN
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<div style={{
|
|
display: 'inline-block',
|
|
padding: compact ? '2px 8px' : '8px 18px',
|
|
borderRadius: 4,
|
|
background: cfg.bg,
|
|
color: cfg.color,
|
|
border: `1px solid ${cfg.color}`,
|
|
fontFamily: 'var(--font-mono)',
|
|
fontSize: compact ? 10 : 13,
|
|
fontWeight: 700,
|
|
letterSpacing: '0.15em',
|
|
}}>
|
|
{cfg.label}
|
|
</div>
|
|
);
|
|
}
|