Dashral Pro is hereSee pricing

Dashral

Progress CircleNew

Progress as a ring, for a small space: a file in a list, a quota on a card.

$ pnpm dlx shadcn@latest add @dashral/progress-circle
64%
90%

Installation

$ pnpm dlx shadcn@latest add @dashral/progress-circle

Adds the component, the components it builds on, its npm packages and the theme tokens it uses. Or by its full URL: https://dashral.com/r/progress-circle.json

Usage

example.tsx
import { ProgressCircle } from "@/components/dashral/progress-circle"

<ProgressCircle value={64} showValue size={56} aria-label="Profile complete" />

Using the npm package? Import from @dashral/ui/components/progress-circle instead, here and in the examples; the rest is the same.

Examples

Uploads

A small ring at the end of each row, a check once it's done.

  • Q4-report.pdf2.4 MB
  • Contract-signed.pdf860 KB
  • Brand-guide.pdf12.1 MB

Quotas

Your own text in the middle, and a color for how close the limit is.

8/10
Seats2 left
46/50
Storage4 left
12/100
API calls88 left

API reference

ProgressCircle

Also takes every prop of Radix Progress(opens in a new tab).

PropTypeDefault
valuenumber | null

0–100; null for indeterminate (a spinning arc).

null
color"primary" | "neutral" | "info" | "success" | "warning" | "destructive" | "highlight"

The ring; the track is a pale version of it.

"primary"
sizenumber

Width and height in pixels.

40
thicknessnumber

The ring's thickness in pixels.

4
showValueboolean

The percentage in the middle, written in the locale.

false
childrenReactNode

Anything in the middle instead, e.g. "3/5" or an icon.

—
classNames{ track, indicator, value }

Classes for each part.

—
classNamestring

Extra classes, merged with cn() so yours win.

—

Accessibility

  • role="progressbar" with aria-valuenow. Label it (aria-label or aria-labelledby).

Motion

  • Fills from empty when it first shows, then follows its value; indeterminate, the arc spins (slower with reduced motion).