Design system

Progress

Determinate completion for uploads, imports, and multi-step work.

Built on Radix UI ProgressUpstream API
Document upload40%

Usage

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

Use progress when the application knows how much work has completed. Pass a value from 0 to 100, show the same value as readable text when precision matters, and keep updates monotonic unless the process genuinely restarts.

Use Spinner for indeterminate work. Do not show a precise percentage backed by a timer or another estimate that cannot represent real completion.

Accessibility

Give the progress bar a visible label through aria-labelledby or an accessible aria-label. Add aria-valuetext when the number needs context beyond a percentage.