Skip to main content

Progress

Progress is a visual indicator showing completion percentage or loading state.

Open in Storybook

Import

import { Progress } from "@tosui/react";

Basic Usage

Values

Sizes

sm (4px)
md (8px)
lg (12px)

Color Schemes

Indeterminate

Use isIndeterminate for loading states where progress is unknown.

Custom Max Value

3 of 10 complete

Common Patterns

With Label

<VStack gap={1}>
<HStack justify="space-between">
<Text fontSize="sm">Uploading...</Text>
<Text fontSize="sm">60%</Text>
</HStack>
<Progress value={60} />
</VStack>

Step Progress

function StepProgress({ currentStep, totalSteps }) {
return (
<VStack gap={2}>
<Text fontSize="sm" color="foreground-muted">
Step {currentStep} of {totalSteps}
</Text>
<Progress value={currentStep} max={totalSteps} />
</VStack>
);
}

File Upload

function FileUpload() {
const [progress, setProgress] = useState(0);

return (
<VStack gap={2}>
<HStack justify="space-between" w="100%">
<Text fontSize="sm">document.pdf</Text>
<Text fontSize="sm">{progress}%</Text>
</HStack>
<Progress value={progress} colorScheme="success" />
</VStack>
);
}

Props Reference

PropTypeDefaultDescription
valuenumber0Progress value
maxnumber100Maximum value
colorScheme"primary" | "accent" | "success" | "warning" | "error" | "info""primary"Color scheme
size"sm" | "md" | "lg""md"Progress bar height
isIndeterminatebooleanfalseShow animated loading state

Accessibility

  • Uses role="progressbar" with proper ARIA attributes
  • aria-valuenow, aria-valuemin, aria-valuemax for determinate progress
  • Indeterminate mode omits aria-valuenow

TypeScript

import { Progress, type ProgressColorScheme, type ProgressSize, type ProgressProps } from "@tosui/react";