"use client"; import React from "react"; import { cn } from "@/lib/utils"; /** * Donut-style progress ring. * * Used in the Overview dashboard for things like implementation coverage, * test coverage, project health score, traceability score. */ export function ProgressRing({ value, size = 80, stroke = 8, tone = "brand", label, sublabel, className, }: { value: number; // 0..100 size?: number; stroke?: number; tone?: "brand" | "green" | "amber" | "red" | "violet"; label?: string; sublabel?: string; className?: string; }) { const r = (size - stroke) / 2; const c = 2 * Math.PI * r; const clamped = Math.max(0, Math.min(100, Number(value) || 0)); const offset = c - (clamped / 100) * c; const toneMap: Record = { brand: "text-brand-600", green: "text-emerald-600", amber: "text-amber-600", red: "text-red-600", violet: "text-violet-600", }; return (
{clamped.toFixed(0)}%
{(label || sublabel) && (
{label &&
{label}
} {sublabel &&
{sublabel}
}
)}
); }