- role="progressbar" with aria-valuenow, or no value while indeterminate; requires a `label`.
- The percentage text is aria-hidden because the value is already exposed.
- prefers-reduced-motion: reduce (or data-rad-fx-motion="reduce" on an ancestor) turns the spinner into a gentle pulse, so "busy" still reads.
| Prop | Type | Default | Description |
|---|---|---|---|
value | number | — | 0–100; omit for indeterminate. |
label | string | — | Accessible name. |
size | number | 96 | Diameter in px. |
thickness | number | 8 | Ring thickness in px. |
showValue | boolean | true | Show the percentage. |
color | string | '#a78bfa' | Ring colour. |