v0.1 public beta early access on GitHub
Home / Components / drum-picker

Drum PickeriOS

iOS-style spinning wheel picker with real fling physics — a pan drives the 3D drum, release velocity coasts on decay and snaps to the nearest detent with a slight overshoot, edges rubber-band, and a selection haptic ticks per detent.

$ npx lumioui add drum-picker
import { DrumPicker } from "@/components/ui/drum-picker/drum-picker";
Props10
options DrumPickerOption[] Plain strings, or { label, value } pairs when the display text differs from the emitted value.
value? string Controlled selected value.
defaultValue? string Uncontrolled initial value.
onValueChange? (value: string) => void Fires once per settle — when the wheel lands on a new row, not per frame.
itemHeight? number Height of one row in pt. Default 44.
visibleItems? number Visible rows (odd looks best). Default 5.
textClassName? string Classes for option text.
hapticTicks? boolean Haptic tick per detent. Default true.
disabled? boolean
className? string
Drum Pickerdrum-picker.tsx
drum-picker/drum-picker.tsx open

iOS-style spinning wheel picker with real fling physics — a pan drives the 3D drum, release velocity coasts on decay and snaps to the nearest detent with a slight overshoot, edges rubber-band, and a selection haptic ticks per detent.