Color
Change the track and range color using utility classes or custom CSS variables to match your design system.
Height
Create variations using different heights.
Orientation
Using the orientation prop to control the layout.
Indeterminate
Set a null value to enable indeterminate mode.
Use CSS to enable custom animations.
Direction
Set the text direction (ltr or rtl) using the dir prop.
Native Alternative
Skeleton also provides styles for the native Progress element.
API Reference
Root
flex flex-col gap-2 data-[orientation=horizontal]:w-full data-[orientation=vertical]:items-center| Prop | Default | Type |
|---|---|---|
ids | — | Partial<{ root: string; track: string; label: string; circle: string; }> | undefined The ids of the elements in the progress bar. Useful for composition. |
value | — | number | null | undefined The controlled value of the progress bar. |
defaultValue | 50 | number | null | undefined The initial value of the progress bar when rendered. Use when you don't need to control the value of the progress bar. |
min | 0 | number | undefined The minimum allowed value of the progress bar. |
max | 100 | number | undefined The maximum allowed value of the progress bar. |
translations | — | IntlTranslations | undefined The localized messages to use. |
onValueChange | — | ((details: ValueChangeDetails) => void) | undefined Callback fired when the value changes. |
formatOptions | { style: "percent" } | NumberFormatOptions | undefined The options to use for formatting the value. |
locale | "en-US" | string | undefined The locale to use for formatting the value. |
dir | "ltr" | "ltr" | "rtl" | undefined The document's text/writing direction. |
getRootNode | — | (() => ShadowRoot | Node | Document) | undefined A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron. |
orientation | "horizontal" | "horizontal" | "vertical" | undefined The orientation of the element. |
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself |
Provider
| Prop | Default | Type |
|---|---|---|
value | — | ProgressApi<PropTypes> |
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself |
Context
| Prop | Default | Type |
|---|---|---|
children | — | (progress: ProgressApi<PropTypes>) => ReactNode |
Label
whitespace-nowrap| Prop | Default | Type |
|---|---|---|
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself |
ValueText
| Prop | Default | Type |
|---|---|---|
element | — | ((attributes: HTMLAttributes<"span">) => Element) | undefined Render the element yourself |
Track
bg-surface-200-800 rounded-base overflow-hidden data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-2 data-[orientation=vertical]:w-2 data-[orientation=vertical]:h-[100px] data-[orientation=vertical]:flex data-[orientation=vertical]:flex-col-reverse| Prop | Default | Type |
|---|---|---|
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself |
Range
h-full bg-surface-950-50 rounded-base data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:data-[state=indeterminate]:animate-progress-linear-indeterminate-horizontal data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:data-[state=indeterminate]:animate-progress-linear-indeterminate-vertical| Prop | Default | Type |
|---|---|---|
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself |
Circle
| Prop | Default | Type |
|---|---|---|
element | — | ((attributes: HTMLAttributes<"svg">) => Element) | undefined Render the element yourself |
CircleTrack
stroke-surface-200-800| Prop | Default | Type |
|---|---|---|
element | — | ((attributes: HTMLAttributes<"circle">) => Element) | undefined Render the element yourself |
CircleRange
stroke-primary-500 transition-[stroke-dashoffset] ease-in-out data-[state=indeterminate]:animate-progress-circular-indeterminate| Prop | Default | Type |
|---|---|---|
element | — | ((attributes: HTMLAttributes<"circle">) => Element) | undefined Render the element yourself |
Root
flex flex-col gap-2 data-[orientation=horizontal]:w-full data-[orientation=vertical]:items-center| Prop | Default | Type |
|---|---|---|
ids | — | Partial<{ root: string; track: string; label: string; circle: string; }> | undefined The ids of the elements in the progress bar. Useful for composition. |
value | — | number | null | undefined The controlled value of the progress bar. |
defaultValue | 50 | number | null | undefined The initial value of the progress bar when rendered. Use when you don't need to control the value of the progress bar. |
min | 0 | number | undefined The minimum allowed value of the progress bar. |
max | 100 | number | undefined The maximum allowed value of the progress bar. |
translations | — | IntlTranslations | undefined The localized messages to use. |
onValueChange | — | ((details: ValueChangeDetails) => void) | undefined Callback fired when the value changes. |
formatOptions | { style: "percent" } | NumberFormatOptions | undefined The options to use for formatting the value. |
locale | "en-US" | string | undefined The locale to use for formatting the value. |
dir | "ltr" | "ltr" | "rtl" | undefined The document's text/writing direction. |
getRootNode | — | (() => ShadowRoot | Node | Document) | undefined A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron. |
orientation | "horizontal" | "horizontal" | "vertical" | undefined The orientation of the element. |
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself |
Provider
| Prop | Default | Type |
|---|---|---|
value | — | () => ProgressApi<PropTypes> |
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself |
Context
| Prop | Default | Type |
|---|---|---|
children | — | Snippet<[() => ProgressApi<PropTypes>]> |
Label
whitespace-nowrap| Prop | Default | Type |
|---|---|---|
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself |
ValueText
| Prop | Default | Type |
|---|---|---|
element | — | Snippet<[HTMLAttributes<"span">]> | undefined Render the element yourself |
Track
bg-surface-200-800 rounded-base overflow-hidden data-[orientation=horizontal]:w-full data-[orientation=horizontal]:h-2 data-[orientation=vertical]:w-2 data-[orientation=vertical]:h-[100px] data-[orientation=vertical]:flex data-[orientation=vertical]:flex-col-reverse| Prop | Default | Type |
|---|---|---|
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself |
Range
h-full bg-surface-950-50 rounded-base data-[orientation=horizontal]:transition-[width] data-[orientation=horizontal]:data-[state=indeterminate]:animate-progress-linear-indeterminate-horizontal data-[orientation=vertical]:transition-[height] data-[orientation=vertical]:data-[state=indeterminate]:animate-progress-linear-indeterminate-vertical| Prop | Default | Type |
|---|---|---|
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself |
Circle
| Prop | Default | Type |
|---|---|---|
element | — | Snippet<[HTMLAttributes<"svg">]> | undefined Render the element yourself |
CircleTrack
stroke-surface-200-800| Prop | Default | Type |
|---|---|---|
element | — | Snippet<[HTMLAttributes<"circle">]> | undefined Render the element yourself |
CircleRange
stroke-primary-500 transition-[stroke-dashoffset] ease-in-out data-[state=indeterminate]:animate-progress-circular-indeterminate| Prop | Default | Type |
|---|---|---|
element | — | Snippet<[HTMLAttributes<"circle">]> | undefined Render the element yourself |