ProductBrand
Join us
Foundations
  • Introduction
  • Colors
  • Typography
  • Icons
  • Illustrations
  • Logos
  • Shadows
Components
  • Accordion
  • Alert Dialog
  • Avatar
  • Badge
  • Button
  • Calendar
  • Card
  • Chart
  • Checkbox
  • Collapsible
  • Combobox
  • Context Menu
  • Date Picker
  • Dialog
  • Drawer
  • Dropdown Menu
  • Fluid Avatar
  • Hover Scroll Text
  • Input
  • Kbd
  • Popover
  • Progress Bar
  • Radio Group
  • Scroll Area
  • Select
  • Selectors
  • Separator
  • Separator Dot
  • Shimmer Text
  • Skeleton
  • Slider
  • Switch
  • Tabs
  • Textarea
  • Toast
  • Tooltip
Compositions
  • Empty State
  • File Attachment
  • Floating Bar
  • Input Banner
  • Markdown Editor
  • Media Controls
  • Product Feature Banner
  • Panels
  • Sidebar
  • Reasoning Trace
  • Pagination
  • Data Table
  • Breadcrumb
  • Thread Outline
Inline
  • Overview
  • Stat Tile
  • Metric Row
  • Comparison Table
  • Chart Card
  • Trend Tile
  • Cite
  • Custom
  • Agent skill

Progress Bar

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

Examples

Exporting model45%
x

Interactive

Uploading files...20%
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, and 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 | null-Progress value (0–100). Use null for indeterminate.
labelstring-Label 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.
classNamestring-Additional CSS classes for the root.
trackClassNamestring-Additional CSS classes for the track.
indicatorClassNamestring-Additional CSS classes for the indicator.
labelClassNamestring-Additional CSS classes for the label.
valueClassNamestring-Additional 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
NextRadio Group
Made in NYC© 2026 Rogo Technologies Inc.

Design at Rogo

We’re redesigning an entire industry. Come design it with us.

See open roles

Design at Rogo

  • How we workThe mission of design at Rogo, and the open roles
  • About RogoThe company and the product