Component guideEditable source

Progress

Determinate or indeterminate progress for a running operation.

Original component docs
On this page4 sectionsBack to top

Use Progress when work is ongoing. It renders its track and indicator for you. Pass a number when completed work can be measured; pass null when it cannot.

Live preview
Loading preview...

#Installation

Complete the base setup. For manual installation:

npx shadcn@latest add https://neobrutal-ui.andongmin.com/r/progress.json

#Usage

import { Progress } from "@/components/ui/progress";

export default function UploadProgress() {
  return (
    <div className="grid max-w-sm gap-2">
      <p id="upload-label">Uploading files: 42%</p>
      <Progress value={42} aria-labelledby="upload-label" />
    </div>
  );
}

#API reference

PropPurposeDefault
valueCompleted amount; null means indeterminatenull
maxMaximum amount100
aria-label / aria-labelledbyAccessible operation nameUnset
getAriaValueTextMeaningful value announcementBase UI behavior
classNameWidth and root layoutFull available width

#Accessibility

Name the operation, not just the control. Do not invent percentages for unknown work. Keep values in range and announce completion or failure separately; reaching 100 does not prove that an application operation succeeded.