Headless
composableZero styles, full DOM control. Wrap pieces in your own card, modal, paragraph.
The raffle picker your UI deserves.
What's inside
A compound component you compose, not a widget you configure. Pick the pieces you need, drop them where you want them, style them like any other DOM.
Zero styles, full DOM control. Wrap pieces in your own card, modal, paragraph.
Roll a range like 1–100 or cycle through your own list of names, prizes, or words.
roll, fade, blur, reel — bound to your tick interval, no cross-frame tearing.
Tick updates write textContent via refs. No React render per tick. Smooth on potatoes.
Soft start, soft stop. The reel ramps in and out for a more tactile feel.
Auto-freeze after N seconds with a built-in SVG ring or your own render-prop.
Independent multi-reel slots. Each reel ticks on its own and stops with a stagger.
Fully typed. Discriminated phase union. No any in the public API.
30 seconds
Compose the root with the pieces you need. Style them with your own CSS. Done.
npm install react-raffle-picker// React like you just won.
import { RafflePick } from 'react-raffle-picker'
export function Giveaway() {
return (
<RafflePick min={1} max={999} inertia onSelect={(v) => alert(v)}>
<RafflePick.Value animation="roll" className="text-6xl" />
<RafflePick.Button startLabel="Pick" stopLabel="Stop" />
</RafflePick>
)
}