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

PropTypeDefaultDescription
value*number-Current value
minnumber0Minimum value
maxnumber100Maximum value
sizenumber120Ring diameter in pixels
strokeWidthnumber8Ring stroke width
theme*ThemeName-Theme name
colorstring-Custom progress color (overrides theme)
trackColorstring-Background track color
showValuebooleantrueShow percentage text
format(value: number, percentage: number) => string-Custom value formatter
childrenReactNode-Custom center content
animationDurationnumber500Animation duration in ms
strokeLinecap"butt" | "round" | "square""round"Stroke end style