Skip to content

CircularProgress

A circular progress ring for determinate or indeterminate loading state.

60%
Upload progress
<CircularProgress hasValueLabel label="Upload progress" value={60} />
60%
Info
80%
Success
45%
Warning
30%
Error
50%
Neutral
<div style={{display: 'flex', alignItems: 'flex-start', gap: 24}}>
<CircularProgress hasValueLabel label="Info" value={60} variant="info" />
<CircularProgress
hasValueLabel
label="Success"
value={80}
variant="success"
/>
<CircularProgress
hasValueLabel
label="Warning"
value={45}
variant="warning"
/>
<CircularProgress
hasValueLabel
label="Error"
value={30}
variant="error"
/>
<CircularProgress
hasValueLabel
label="Neutral"
value={50}
variant="neutral"
/>
</div>
Compact
60%
Default
60%
Large
<div style={{display: 'flex', alignItems: 'flex-start', gap: 24}}>
<CircularProgress label="Compact" size={32} value={60} />
<CircularProgress hasValueLabel label="Default" value={60} />
<CircularProgress hasValueLabel label="Large" size="6rem" value={60} />
</div>
3 / 5
Upload progress
<CircularProgress
hasValueLabel
label="Upload progress"
value={3}
formatValueLabel={(value, max) => `${value} / ${max}`}
max={5}
size={96}
/>
Upload progress
<CircularProgress
hasValueLabel
label="Upload progress"
value={undefined}
isIndeterminate
/>
60%
Upload progress
<CircularProgress
hasValueLabel
label="Upload progress"
value={60}
isDisabled
/>
60%
Upload progress
<CircularProgress
hasValueLabel
label="Upload progress"
value={60}
isLabelHidden
/>

A circular progress ring for determinate or indeterminate loading state.

PropTypeDefaultDescription
classNamestringAdditional CSS class names applied to the root element.
data-testidstringTest ID applied to the root element.
formatValueLabel(value: number, max: number) => stringCustom formatter for the centered value label and aria-valuetext.
hasValueLabelbooleanfalseWhether to display the formatted value in the center of the ring.
isDisabledbooleanfalseWhether the progress ring is visually disabled.
isIndeterminatebooleanfalseWhether to render a rotating indeterminate progress arc.
isLabelHiddenbooleanfalseWhether to visually hide the label below the ring.
label*stringAccessible label for the progress ring.
maxnumber100Maximum progress value.
refRef<HTMLDivElement>Ref forwarded to the root element.
role'meter' | 'progressbar''progressbar'ARIA role for the progress indicator. Use 'progressbar' for task completion and 'meter' for static gauges.
sizenumber | string64Diameter of the progress ring. Numbers are pixels and strings are used as CSS lengths.
styleCSSPropertiesInline styles applied to the root element.
valuenumber0Current progress value.
variant"error" | "info" | "success" | "warning" | "neutral"'info'Semantic color variant.