Appica UIUI 1.0.0

Progress

Displays the completion status of a task that takes a while.

Uploading
x

Usage

Progress tracks a task moving toward completion — an upload, an import, an install — unlike Meter, which shows a static measurement. Set value from 0 to 100 (or pass min/max for a custom range). When you can't compute a percentage — an unknown-duration wait — reach for a Loader or Spinner instead.

It comes in two layouts via variant: bar (a horizontal track, the default) with ProgressLabel and ProgressValue arranged above it, and circular (an SVG ring) with the value centered inside. Recolor the fill with indicatorColor, and tune its weight with thickness (plus size for the ring).

Examples

Default

The bar layout: a label on the left, the percentage on the right, and the track spanning beneath. ProgressValue formats value as a percentage by default.

Circular

variant="circular" draws an SVG ring with the value in its center. Set its diameter with size; an optional ProgressLabel drops below the ring.

Custom color & thickness

indicatorColor accepts any CSS color (a theme token like var(--success-emphasis) keeps it on-brand), and thickness sets the track weight in pixels — for both the bar and the ring.

File upload (controlled)

A real-world card driven by your own state: advance value as bytes arrive, swap the label to "Uploaded", and reveal an action once it completes. The fill animates smoothly between values.

RTL

Every Appica UI component supports right-to-left layouts out of the box. Set the dir attribute on a container (commonly your <html> element) so CSS logical properties resolve correctly, and wrap your tree in DirectionProvider so direction-aware behavior follows the same direction.

Under RTL the label and value swap sides and the bar fills from the right. For setup details and caveats, see the RTL guide.

جارٍ الرفع
x
x

API reference

Progress wraps Base UI's Progress. Each part forwards ref and its remaining native attributes to the matching Base UI primitive — the tables below list the Appica additions and the most common props. The root exposes data-complete, data-progressing, and data-variant for styling.

Progress

The root. Owns the value, range, layout, and indicator styling, and lays out the label, value, and track. Renders a <div role="progressbar">.

ProgressLabel

Names the task and is wired to the root via aria-labelledby. Renders a <span>.

ProgressValue

Prints the formatted value. Renders a <span>.

Accessibility

  • Progress renders role="progressbar" with aria-valuenow, aria-valuemin, and aria-valuemax reflecting value, min, and max.
  • Give every progress bar an accessible name — a ProgressLabel (wired via aria-labelledby) or an aria-label on the root when no visible label is shown.
  • The circular SVG is marked aria-hidden; the accessible value comes from the root's ARIA attributes, so the ring is purely visual.
  • The fill animation is replaced by a static state when the user prefers reduced motion.

© 2026 Appica UI. A free component library, crafted by the Appica team.