Progress

A headless progress bar primitive with ARIA progressbar role. Supports determinate and indeterminate states.

Determinate

A determinate progress bar with a set value. Use Value and Max to control the progress percentage.
60%

Indeterminate

An indeterminate progress bar with no set value. When Value is null, the progress is indeterminate and aria-valuenow is omitted. Use CSS animations for a pulsing or sliding effect.

Loading...

Custom Value Label

Use GetValueLabel to provide a custom human-readable label for screen readers. The function receives (value, max) and should return a descriptive string.
15 of 50 items processed

Custom Max Value

Use a custom Max value for scenarios where the total is not 100, such as step-based workflows or file counts.
Step 2 of 5 40%

Data Attributes

Use these data attributes for CSS styling:

  • [data-state="complete"] - When value equals max
  • [data-state="indeterminate"] - When value is null
  • [data-state="loading"] - When value is between 0 and max
  • [data-value] - The current progress value
  • [data-max] - The maximum progress value