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 a label​

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

Step progress​

function StepProgress({ currentStep, totalSteps }) {
return (
<VStack gap={2}>
<Text size="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 size="sm">document.pdf</Text>
<Text size="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
classNamestring-Additional CSS class

Accessibility​

  • Uses role="progressbar"
  • 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";