PRO

Circular Widget Dial

A ring of image segments that never stops turning. The ring rotates one way, a thin indicator line sweeps the other, and whichever segment sits under the line becomes the desaturated full-bleed backdrop with its name on a chip in the middle. Wheeling over it spins both faster or throws them into reverse, and every value eases on a lerp so the dial coasts instead of snapping. SVG arcs built and clipped at runtime.

Component
Install
npx shadcn@latest add https://ui.aryank.space/r/circular-widget-dial.json

Installs from ui.aryank.space. To add it by hand, copy the files in Usage below, or register the @compronents namespace via the docs.

Files

API
PropTypeDefaultDescription
widgetsCircularWidget[]10 Blob-hosted segmentsImage and name per ring segment. The ring divides evenly by however many are supplied.
accent / backgroundstring#ffff2b / #000Indicator and chip color, and the base color.
spinSpeednumber18Idle rotation speed in degrees per second. The ring counter-rotates at a quarter of it.
Customize
widgetstext

Segment images and their names.

accent / backgroundcolor

Indicator and name-chip color, and the base color.

spinSpeedtext

Degrees per second the indicator advances at rest.

Dependencies
gsap