Feedback

ProgressBar

The linear bar rendered by `Progress`'s bar variants, used internally.

html
<UiProgressBar />

Reach for Progress instead

This is the bar Progress renders for its default, outline, lg and lg-outline variants, split out so the ring and the bar can be maintained separately. Everything here is reachable through Progress, which is the component to use unless you need the bar without its wrapper.

Model value

modelValue is the current progress, read against max. It's clamped into range, so a value past the maximum fills the bar rather than overflowing it.

0 of 1000%
35 of 10035%
100 of 100100%

Max

max is the value that counts as full. Set it to the real total — bytes, steps, seats — and pass raw numbers as modelValue rather than converting to a percentage yourself.

35 of 10035%
35 of 5070%

Color

color themes the filled portion of the bar. The track behind it stays neutral, so the fill is what carries the meaning.

neutral
primary
secondary
success
error
warning
info
pending

Variant

variant covers two independent choices at once: height (default or the thicker lg) and whether the track is filled or drawn as an outline. outline reads lighter on a busy surface, where a filled track would compete with everything around it.

default
outline
lg
lg-outline

Label

label is the text above the bar, naming what's progressing. Without it the bar is just a quantity with no subject.

Uploading photos

Show value

showValue prints the percentage at the end of the label row. Worth adding whenever the exact figure matters as much as the shape — a quota, a download — and worth leaving off when only the direction does.

Uploading photos
Uploading photos60%

Indeterminate

indeterminate runs a looping animation instead of a fixed fill, for work that's underway but whose completion you can't measure. modelValue, buffer and showValue are all ignored while it's set.

Connecting

Buffering

buffering sweeps a highlight across the buffered region, saying the gap ahead of the fill is actively being filled in. It's the same sweep Shimmer uses, so a loading bar and a loading placeholder move in step.

Streaming

Buffer

buffer draws a lighter fill behind the current value — how far ahead the data has loaded compared with where playback or processing has actually reached. The classic use is a video scrubber, where the two never advance together.

No buffer35%
Buffered to 60%35%

API Reference

Generated from the component's source — props, slots and emits as the component actually declares them.

Props

Prop
Type
Default
Description
number
0
The current progress value.
number
100
The value that represents 100% progress.
"primary" | "secondary" | "success" | "warning" | "error" | "info" | "pending" | "neutral"
'neutral'
The color theme of the progress bar.
"default" | "outline" | "lg" | "lg-outline"
'default'
The visual style of the progress bar.
string
Text label displayed above the bar.
boolean
false
Shows the current percentage next to the label.
boolean
false
Displays an indeterminate loading animation instead of a fixed value.
boolean
false
Displays a buffering animation.
number
The amount of progress buffered ahead of the current value, shown as a lighter fill behind it. Ignored when `indeterminate` is true.

Slots

Slot
default