Range Calendar, animated React component
A trip date picker whose selection is one liquid ribbon. Drag and it stretches to your finger, snapping day by day and wrapping across rows; the nights count rolls like an odometer and months turn like the faces of a cube. SVG ribbon with spring physics and full keyboard control.
- Pro
- Inputs & Controls
- Spring
Taps when the ribbon snaps onto each day you drag across, clinks when you grab a date and chimes when the range is set, opens softly when a quick range flows in, and flips like a page when the month turns. Sound is off on this site until you switch it on.
Play with it
Move the controls and watch it change. Copy code gives you a snippet with only the props you changed.
September 2026
Drag across days, or use arrow keys and Enter. Shift+arrows extends.
Props
| Prop | Type | Default | What it does |
|---|---|---|---|
| autoplay | boolean | false | Plays itself with a ghost pointer until the visitor touches it. Off by default, so a copied component reacts only to the visitor. Never runs under reduced motion. |
| className | string | — | Extra classes for the outer card. |
| enableSound | boolean | true | Plays interface sounds on interaction. They follow the sound switch (setSoundsEnabled, on by default) and stay silent on hover. Autoplay makes the same sounds once the visitor has used the page. Pass false to silence this component. |
Range Calendar questions
Does it make sound, and how do I turn it off?
Taps when the ribbon snaps onto each day you drag across, clinks when you grab a date and chimes when the range is set, opens softly when a quick range flows in, and flips like a page when the month turns. Sounds are synthesised with the Web Audio API, so there are no audio files, and they only play after a click or key press. Pass `enableSound={false}` to silence this component, or call `setSoundsEnabled(false)` from `@/lib/ui-sounds` to switch every sound off at once. The CLI installs `@/lib/ui-sounds` with the component.