Progress

Displays an indicator showing the completion progress of a task, typically rendered as a horizontal bar.

Built on Radix UI.

  • Smooth CSS transition on value change
  • Built on Radix Progress for correct ARIA semantics (role=progressbar, aria-valuenow)
  • Indeterminate state supported via value={null}
  • Fully styleable height, color, and border-radius via className
  • Forwards ref to the underlying element

import { Progress }from "@aetherstack/ui"

progress.tsx
import { Progress } from "@/components/ui/progress"

export function ProgressDemo() {
  return <Progress value={60} />
}

Usage

Different values

Pass any number between 0 and 100 to control the fill level.

0%
25%
50%
75%
100%

Custom height

Override the default h-2 height with a className to create thicker or thinner bars.

Props

PropTypeDefaultDescription
valuenumber | nullCurrent progress value between 0 and 100. Pass null for indeterminate state.
classNamestringAdditional class names applied to the root track element. Use to override height, color, or radius.
...propsReact.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>All Radix Progress Root props are forwarded, including max and getValueLabel.

* Required props

Accessibility

  • Radix sets role=progressbar, aria-valuemin=0, aria-valuemax=100, and aria-valuenow automatically.
  • When value is null the component enters indeterminate state — screen readers announce it as in-progress.
  • Provide a visible label near the progress bar so users understand what is being measured.