ProgressRing
Circular progress indicators for displaying completion percentages, loading states, or goal progress.
Playground
Experiment with different settings:
Props
Midnight
72
150
10
OffOn
Code
<ProgressRing
data={data}
theme="midnight"
value={72}
size={150}
strokeWidth={10}
showValue
/>Basic Usage
25%
50%
75%
100%
tsx
<ProgressRing value={75} theme="midnight" />Custom Range
Use min and max to define custom value ranges:
750
3.5/5
tsx
<ProgressRing
value={750}
min={0}
max={1000}
theme="midnight"
format={(v) => `${v}`}
/>Custom Center Content
Use children to display custom content in the center:
68%
Complete
42
Tasks Left
tsx
<ProgressRing value={68} size={140} theme="midnight">
<div className="text-center">
<div className="text-2xl font-bold">68%</div>
<div className="text-xs">Complete</div>
</div>
</ProgressRing>Sizes & Stroke Width
Adjust size and strokeWidth for different visual styles:
65%
65%
65%
65%
Custom Colors
Override the theme color with a custom color prop:
80%
60%
40%
90%
Props
| Prop | Type | Default | Description |
|---|---|---|---|
value* | number | - | Current value |
min | number | 0 | Minimum value |
max | number | 100 | Maximum value |
size | number | 120 | Ring diameter in pixels |
strokeWidth | number | 8 | Ring stroke width |
theme* | ThemeName | - | Theme name |
color | string | - | Custom progress color (overrides theme) |
trackColor | string | - | Background track color |
showValue | boolean | true | Show percentage text |
format | (value: number, percentage: number) => string | - | Custom value formatter |
children | ReactNode | - | Custom center content |
animationDuration | number | 500 | Animation duration in ms |
strokeLinecap | "butt" | "round" | "square" | "round" | Stroke end style |