Progress Bar

Linear progress indicator for determinate and indeterminate operations.

Uploading…60%
Processing…

Anatomy

1 2
Loading…60%
  1. 1 Track — full-width container showing remaining progress
  2. 2 Fill — colored bar indicating completed progress

Variants

Color variants

Default
Default
Positive
Positive
Negative
Negative

Size variants

Small
sm
Medium (default)
md (default)
Large
lg

Indeterminate

Processing…
Indeterminate

Table of options

PropertyValuesDefault
value0–100 (number)
variantdefault / positive / negativedefault
sizesm / md / lgmd
labeltextnone
showValuetrue / falsefalse
indeterminatetrue / falsefalse

Behaviors

65%

Determinate

When a known completion percentage is available, set value (0–100). The fill updates via CSS custom property.

Loading…

Indeterminate

When completion time is unknown, use indeterminate. The fill animates continuously. Animation is suppressed when the user prefers reduced motion.

Usage guidelines

Choose the right variant for context

Upload complete

Do

Use positive to signal successful completion.

Upload complete

Don't

Don't use the default color for success states — it doesn't convey meaning.

Accessibility

  • Uses role="progressbar" with aria-valuenow, aria-valuemin, and aria-valuemax.
  • Always provide an aria-label via the label attribute or a visually-hidden label.
  • Indeterminate bars omit aria-valuenow.
  • The indeterminate animation respects prefers-reduced-motion.

Theming

Progress Bar adapts across brands and modes through semantic tokens. For the full theming architecture see Foundations: Theming.

Design checklist

All brand/mode contextsWorks across light and dark modes.
Accessible use of colorVariant color is supplemented by label (WCAG 1.4.1).
ARIA attributesUses role="progressbar" with correct ARIA.
Reduced motionIndeterminate animation disabled for prefers-reduced-motion.
Defined optionsVariant, size, value, label documented.
Design tokensAll visual attributes as tokens.