ProUnlock everything for $49.99 a year, or $79.99 once. See plans ›

Nexus UI

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.

Check-in
Fri, Sep 4
Check-out
Fri, Sep 11

September 2026

Drag across days, or use arrow keys and Enter. Shift+arrows extends.

Props

PropTypeDefaultWhat it does
autoplayfalsePlays 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—Extra classes for the outer card.
enableSoundtruePlays 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.