React Date Range Picker
A headless-first, composable date & range picker for React.
Tailwind CSS v4 · shadcn/ui · Built-in CSS · Headless hooks
Why This Library?
Most React date pickers either lack range/time support, don't support Tailwind CSS v4, or aren't designed for composition. This library gives you:
- One-liner or full control — Simple
<DatePicker />for quick usage, or Compound Components to customize every piece. - Tailwind CSS v4 first-class support — Semantic design tokens (
bg-primary,text-foreground) that match your theme. - shadcn/ui registry — Install via
npx shadcn addand own the source code, just like shadcn's built-in components. - Headless core — Use the hooks directly to build completely custom UIs.
Features
- 5 picker types — DatePicker, DateRangePicker, DateTimePicker, DateRangeTimePicker, TimePicker
- Compound Component API — Compose, rearrange, or replace any internal part
- Zero dependencies (headless) — Built with native
DateandIntl. No moment, no date-fns. - 15 locales — en, ko, ja, zh-Hans, zh-Hant, es, pt-BR, fr, de, ru, tr, it, vi, th, pl
- Keyboard navigation — Arrow keys, Enter, Escape, Tab with focus management
- Accessible — ARIA attributes, focus trapping, screen reader support
- Dark mode — Works with
dark:variant,next-themes, or CSSprefers-color-scheme - 4 sizes — small, medium, large, x-large
- Date constraints — min/max date, min/max days in range, disabled dates
- Range presets — "Last 7 days", "This month", or any custom preset
- Inline mode — Render calendar without popup trigger
- TypeScript — Strict types for all props, events, and configurations
Packages
Choose Your Installation
npm Install (Tailwind v4)
shadcn/ui Registry (Source Code in Your Project)
Components are copied into your project — you own and can modify the source directly:
No CSS import needed — the copied components use Tailwind classes directly.
Other Packages
Each package requires additional setup (CSS imports, Tailwind config, etc.). See the respective package README for details.
Quick Start
Date Range Picker
Range Presets
Date & Time Picker
Date Range & Time Picker
Time Picker (Standalone)
Inline Mode
Render the calendar always visible, without a popup trigger:
Date Constraints
Dark Mode
Add the dark class to a parent element or <html>:
All components automatically adapt to dark mode.
Compound Component (Full Customization)
Documentation
Full docs with live examples:
Support
If this library helps you, consider buying me a coffee: