Skip to content
Zuno UI
Explore components
EXPLORE
Actions
Forms
Layout
Navigation
Data display
Feedback
Overlays
RESOURCES
Components/Progress

Progress

Determinate or indeterminate progress, without made-up percentages.

Base UI reference ↗
Storage used
x

Installation

Run it from the root of a project already set up with zunoui init.

npx zunoui@latest add progress

Dependencies

What add progress installs alongside the component. The CLI skips any you already have in a compatible version.

ZUNO registry

  • @zuno/utils

npm

Examples

3 examples · 1 component
progress
Storage used
x

Label and value

ProgressLabel names the bar; ProgressValue formats the percentage.

progress
report.pdf
x

Live upload

The value advances in steps and completion is announced with role="status".

progress
Preparing export…
x

Indeterminate

value={null} while the duration is unknown; no percentage is shown.

API reference

Keeps the props, events and refs of the matching Base UI primitive, plus ZUNO's styles.

PropTypeDefault
value

Current progress; null means indeterminate.

number | null—
min / max

Range of value.

number0 / 100
format / locale

How ProgressValue formats and announces the value; locale defaults to en-US so SSR and the client agree.

Intl.NumberFormatOptions / stringpercent / "en-US"
getAriaValueText

Custom spoken text, e.g. "3 of 5 files".

(formatted, value) => string—
ProgressLabel / ProgressValue

Names the progressbar and shows the formatted value.

span—

States

The states that apply to this component and their visual treatment.

StateTreatment
ProgressingPrimary bar grows with a short width transition.
CompleteFull bar; data-complete is set.
IndeterminateFull bar pulsing; no value shown.
Reduced motionNo transition and no pulse.

Accessibility

The root is a progressbar with aria-valuenow, min and max; ProgressLabel gives it its accessible name.

Use value={null} when the duration is unknown: it becomes indeterminate instead of inventing a percentage.

Updates are not announced on every tick; announce completion yourself (e.g. a toast or role="status" text).

The width change and the indeterminate pulse stop with prefers-reduced-motion.