Progress Bar

Displays the status of a task that takes a long time.

Examples

Basic

Export data
x

Sizes

Small
x
Medium
x
Large
x

Rounded

Small
x
Medium
x
Large
x

Without label

x

Without value

Processing...
x

Indeterminate

Loading...
x

States

Not started
x
In progress
x
Completed
x
Indeterminate
x

Interactive

Uploading files...
x

Overview

ProgressBar provides visual feedback for operations that take time to complete. It supports determinate progress (known completion percentage), indeterminate progress (unknown duration), and customizable labels.

tsx
import { ProgressBar } from "@rogo-technologies/ui/progress-bar";

<ProgressBar value={45} label="Uploading file" />;

Usage

Sizes

SizeTrack heightWidthUse case
sm4px128pxInline indicators, compact UI
md8px192pxDefault — modals, cards
lg12px256pxFull-width sections, prominent displays
tsx
<ProgressBar value={30} size="sm" />
<ProgressBar value={80} size="lg" />

Indeterminate

Pass value={null} when the duration is unknown — the indicator pulses to show activity.

tsx
<ProgressBar value={null} label="Loading..." />

Hiding the percentage

tsx
<ProgressBar value={75} label="Processing..." showValue={false} />

Controlled progress

tsx
const [progress, setProgress] = useState(0);

<ProgressBar value={progress} label="Uploading" />;

API

PropTypeDefaultDescription
valuenumber | nullProgress value (0–100). Use null for indeterminate.
labelstringLabel text displayed above the track.
size"sm" | "md" | "lg""md"Size of the progress bar.
showValuebooleantrueWhether to show the percentage value.
roundedbooleanfalseRender the track and indicator with fully rounded ends.
classNamestringAdditional CSS classes for the root.
trackClassNamestringAdditional CSS classes for the track.
indicatorClassNamestringAdditional CSS classes for the indicator.
labelClassNamestringAdditional CSS classes for the label.
valueClassNamestringAdditional CSS classes for the value.

Guidelines

Do

  • Use determinate progress when you can calculate completion percentage
  • Use indeterminate progress for operations with unknown duration
  • Provide a descriptive label explaining what's in progress
  • Show progress bars for operations taking longer than 1 second

Don't

  • Don't use progress bars for very short operations — use a loading spinner instead
  • Don't show multiple progress bars for the same operation
  • Don't let progress go backwards unless representing a genuine state change
  • Don't use progress bars without any context (label or surrounding UI)
PreviousPopover
Made in NYC© 2026 Rogo Technologies Inc.