Stats & Numbers
Progress Ring
A circular gauge for any 0-100 metric — profile completion, renewal rate, score cards. Reads instantly with a centre value and a labelled track, and exposes real meter semantics so screen readers announce the number, not just the shape.
$ velocityx add progress-ring Built for astro.
Needs a licence key —
subscribe here, then
velocityx loginonce.
Profile complete
Props
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| value | number | Yes | 0–100. Values outside the range are clamped. | |
| label | string | No | ||
| valueText | string | No | Overrides the centre text; defaults to `${value}${suffix}`. | |
| suffix | string | No | '%' | |
| size | 'sm' | 'md' | 'lg' | No | 'md' | |
| tone | 'primary' | 'accent' | No | 'primary' | `accent` is a deliberate highlight — use for one ring per page, not every one. |
File this creates
The CLI writes this path into your project, relative to its root — nothing else moves.
components/velocity/progress-ring/ProgressRing.astro Using the Progress Ring component
Install it with velocityx add progress-ring.
The CLI writes the source straight into your project — no runtime dependency, no registry
lock-in, and it themes itself from the same primary-*/accent-* scale as the rest of the library.
Related components
More from Stats & Numbers.
Stat band whose numbers count up when the section scrolls into view, then settle. No runtime dependency — plain Astro plus a small inline observer. Honours prefers-reduced-motion by rendering final values immediately.
astroPuts two numbers on one shared scale and calls out the delta — the proof-point shape for 'we cut your load time' or 'conversion rate before vs. after' case studies. Ships a screen-reader summary alongside the bars, so the comparison reads correctly even without the visual.
astroOne headline figure sized to carry a section on its own, with a short annotation line underneath for context. Locale-safe number formatting (including compact '4.2M' notation) and a count-up that lands on the real value immediately for reduced-motion users.
astroThe compact way to show actual-vs-target on a scorecard row: a thin fill against a qualitative poor/satisfactory/good band, with a tick marking the target, so a whole KPI reads in the space a single number used to take. Values stay in text too, so it holds up for anyone who can't read the bar visually.
astro