/** Stacked donut for moderation overview / composition. */ export function Donut({ segments, size = 132, thickness = 14, centerLabel, centerSub, }: { segments: { value: number; color: string; label: string }[]; size?: number; thickness?: number; centerLabel?: string; centerSub?: string; }) { const total = segments.reduce((s, x) => s + x.value, 0) || 1; const r = size / 2 - thickness / 2; const c = 2 * Math.PI * r; let offset = 0; return (
{segments.map((s, i) => { const len = (s.value / total) * c; const el = ( ); offset += len; return el; })} {(centerLabel || centerSub) && (
{centerLabel && {centerLabel}} {centerSub && {centerSub}}
)}
); }