docs / core / progress
Progress
a bar that fills to show how far along something is, or shimmers when the end is unknown. it renders no text, so it always needs a label.
intensity · recedesrsc · server
provenance
authored in usvalayer
core / primitivesintensity
recedes · safe anywhere, including dense surfacescomposition
uploads, installs, quota rows inside Card or a table cellpair with a text line that says what is progressingnot a meter for static values. it implies something is underwaynot a page loader. indeterminate work that owns the view gets Spinnera11y
role="progressbar" with aria-valuenow/min/max, valuenow omitted when indeterminate · bring an aria-label · motion stops under reduced motionjest-axedependencies
class-variance-authoritylive demo · try it out
customize
value0 to 100; ignored when indeterminate
sizetrack height
glowaccent halo on the fill
indeterminatedrop the value for the shimmer
usage
import { Progress } from "@usva-ui/react/primitives/progress";
<Progress value={55} aria-label="Upload" />props
| prop | type | default | notes |
|---|---|---|---|
| value | number | — | current progress, clamped to [0, max]. omit it for the indeterminate shimmer. |
| max | number | 100 | upper bound for value. |
| size | "sm" | "md" | "lg" | "md" | track height, 4 to 12 pixels. pick by the density of the row it sits in. |
| glow | boolean | false | the accent halo on the fill. one glowing bar per view. |
get it
bun add @usva-ui/reactusage
import { Progress } from "@usva-ui/react/primitives/progress";
<Progress value={40} aria-label="Upload" />
<Progress value={80} glow aria-label="Sync" />
<Progress aria-label="Working" />