Free and open-source React progress indicator components built for modern applications and websites. These progress indicators are built using React Aria and styled with Tailwind CSS.
Installation
You can add this progress indicator component using our CLI or manually:
npx untitledui@latest add progress-indicators progress-circles
Progress indicator examples
Below are examples and variations of this progress indicator component:
API reference
CircleProgressBar
Import CircleProgressBar from @/components/base/progress-indicators/simple-circle. Renders a <div> element.
ProgressBar
Import ProgressBar from @/components/base/progress-indicators/progress-indicators.
ProgressBarBase
Import ProgressBarBase from @/components/base/progress-indicators/progress-indicators. Renders a <div> element.
ProgressBarCircle
Import ProgressBarCircle from @/components/base/progress-indicators/progress-circles. Renders a <div> element.
ProgressBarHalfCircle
Import ProgressBarHalfCircle from @/components/base/progress-indicators/progress-circles. Renders a <div> element.
FAQs
Please refer to our frequently asked questions page for more.
ProgressBar (and the simpler ProgressBarBase) is in progress-indicators.tsx, and ProgressBarCircle and ProgressBarHalfCircle are in progress-circles.tsx. Add them with the install command on this page: npx untitledui@latest add progress-indicators progress-circles.
Set labelPosition on ProgressBar to "right", "bottom", "top-floating" or "bottom-floating". The floating options show the value in a small tooltip that follows the fill. Leave out labelPosition to render the bar without text.
Pass a valueFormatter function. It receives the raw value and the calculated percentage, and returns the string or number to display. Without it, the bar shows the rounded percentage, such as 40%.
Yes. Set min and max, which default to 0 and 100, and the components calculate the percentage from value. The value isn't clamped, so keep it within that range.
ProgressBarCircle and ProgressBarHalfCircle require a size prop: "xxs", "xs", "sm", "md" or "lg". An optional label renders above the value inside the circle, except at "xxs", where it renders below the circle.
On ProgressBar, className styles the track (h-2 by default) and progressClassName styles the fill (bg-fg-brand-primary by default). The circle components don't accept a className, so change their stroke classes in your copy of the file.
Each one renders an element with role="progressbar" and aria-valuenow, aria-valuemin and aria-valuemax. The components don't accept extra props, so if you need an accessible name, add aria-label or aria-labelledby to that element in your copy of the file.