Option Wheel
A circular selection wheel with smooth physics-based scrolling, blur effects, and optional sound feedback.
Users can interact with the wheel by dragging with a pointer, scrolling with a mouse wheel/touchpad, or using arrow keys. Clicking an item will smoothly rotate the wheel to center that selection.
Options you can pass to customize this component.
itemsstring[]Labels rendered as the wheel options.
defaultSelectednumberIndex of the option selected on mount.
onChange(index: number, item: string) => voidCalled whenever the wheel settles on a new option.
textColorstringResting color of the option labels.
activeColorstringColor an option blends toward as it reaches the middle of the wheel.
side'left''right'Edge of the container the wheel curves around.
fontSizenumberFont size of the option labels in rem.
spacingnumberVertical distance between options as a multiple of the font size.
curvenumberDepth of the circular curve; 0 flattens the wheel into a straight list.
tiltnumberAngle in degrees between neighboring options; higher values curl the wheel tighter.
blurnumberBlur in pixels added per step away from the middle.
fadenumberOpacity lost per step away from the middle.
minOpacitynumberOpacity floor for the furthest options.
smoothingnumberEasing time constant in milliseconds; higher values feel heavier.
insetnumberPadding in pixels between the anchored edge and the centered option.
loopbooleanWrap around infinitely instead of stopping at the first and last option.
draggablebooleanAllow dragging the wheel with a pointer, in addition to scroll and arrow keys.
soundUrlstringURL of a short tick sound played when the selection changes; empty disables it.
soundVolumenumberPlayback volume of the tick sound.
classNamestringAdditional CSS classes for the outer wrapper.
npx shadcn add amitgajare2/ariseui/option-wheel1