Overview
A determinate circular meter — not a spinner. The arc springs to the target with bounce: 0. Reduced motion snaps the arc instantly. Center label uses tabular-nums so digits don’t shift.
Installation
Basic Usage
tsx
import { ProgressRing } from "@/components/ui/progress-ring"; <ProgressRing value={72} size={96} strokeWidth={8} />
Props
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
| value | number | Yes | — | Progress 0–100. |
| size | number | No | 96 | Outer diameter in pixels. |
| strokeWidth | number | No | 8 | Ring stroke width. |
| label | string | No | — | Override center label (defaults to percent). |
Best Practices
- Prefer this for determinate progress; use Loader for indeterminate waits.
- Keep
strokeWidthproportional tosizeso the ring doesn’t look heavy. - Pass a custom
labelwhen the center should show units, not percent.