Build · New
Progress
Shows how much of a task is done: uploads, goals and multi-step flows. Use it when progress can be measured; use Spinner when it can't.
Preview
Mirrored is the same English content laid out right to left: it separates a mirroring bug from a translation one.
Installation
SoonInstalling from the registry opens at launch. Until then the command below is what it will be.
npx shadcn@latest add @ritla/progressDependencies it brings: @base-ui/react
Usage
import { ProgressBar } from "@/components/ui/progress";<ProgressBar value={60} label="Uploading statement.pdf" />Examples
Sizes and indeterminate
sm, md and lg are 2, 4 and 8px tall; value={null} shows diagonal stripes when the amount isn't known.
Stepped
ProgressBarStepped with 3 to 8 steps: done, current and upcoming, read as “Step 3 of 8”.
Circle
ProgressCircle for upload rows and small spaces, 16, 20 or 24px, and it needs a label.
API reference
ProgressBar
| Prop | Type | Default | Description |
|---|---|---|---|
value | number | null | Done from min to max; null is indeterminate. | |
min / max | number | 0 / 100 | The range. |
label | ReactNode | What's progressing. | |
showValue | boolean | true | Figma's Show text: the percentage at the inline end. |
size | "sm" | "md" | "lg" | "md" | Figma's Size. |
numerals / aria-label | … | Numeral system, and a name when there's no visible label. |
ProgressBarStepped
| Prop | Type | Default | Description |
|---|---|---|---|
steps | number | 3 to 8. | |
current | number | Steps done; the next one is in progress. | |
label / size | … | The label under the bar, and the size. |
ProgressCircle
| Prop | Type | Default | Description |
|---|---|---|---|
value / min / max | number | As on the bar. | |
label | string | Required: there's no visible text. | |
size | 16 | 20 | 24 | 16 | The size. |
Accessibility
ARIA
role="progressbar"witharia-valuenow,aria-valuemin,aria-valuemaxand the value text, named by its label.- Don't show it for waits under a second, and don't let it go backwards.
Arabic and RTL notes
Mirrors
- The bar fills from the inline start: from the right in Arabic, and the steps too.
Does not mirror
- The circle runs clockwise from the top in both directions.
- Numerals
- The percentage follows
numeralsorKanzProvider(٤٠٪). - Arabic typography
- The label is
label-14Medium, the stepped labellabel-16. - Mixed-direction text
- Put Latin file names in
<bdi>inside an Arabic label.