Circular progress

An accessible SVG progress dial, a native <progress> for assistive tech with a stroked-circle visual on top. Used on folder fronts, but handy anywhere. Colour comes from currentColor, so set it with a text colour utility.

25%25%
50%50%
75%75%
100%100%

Installation

npx shadcn@latest add https://canvas.blode.co/r/circular-progress.json

Usage

import { CircularProgress } from "@/components/ui/circular-progress";
 
<CircularProgress className="size-14 text-canvas-folder-accent" value={75} />;

Props

Accepts every div prop in addition to:

PropTypeDefaultDescription
value*numberProgress from 0–100 (clamped).
strokeWidthnumber4Width of the progress ring stroke.
hideTextbooleanfalseHide the centered percentage label.
classNamestringSets the size (e.g. `size-14`) and colour.