Skip to content
shadcn.io
shadcn.io is not affiliated with official shadcn/ui

Shadcn Date Picker for React and Tailwind

Input with a built-in calendar.

Installation

bunx --bun shadcn@latest add https://kit.dev/r/date-picker.json

Anatomy

DatePicker
├── DatePickerTrigger
└── DatePickerContent
    ── (Calendar components)

Usage

import {
  DatePicker,
  DatePickerCalendar,
  DatePickerClearTrigger,
  DatePickerContent,
  DatePickerControl,
  DatePickerInput,
  DatePickerLabel,
  DatePickerPositioner,
  DatePickerTrigger,
} from "@/components/ui/date-picker";
<DatePicker selectionMode="single">
  <DatePickerLabel>Pick a date</DatePickerLabel>
  <DatePickerControl>
    <DatePickerInput index={0} placeholder="Select date" />
    <DatePickerTrigger />
    <DatePickerClearTrigger asChild>
      <Button size="sm" variant="outline">Clear</Button>
    </DatePickerClearTrigger>
  </DatePickerControl>
  <DatePickerPositioner>
    <DatePickerContent>
      <DatePickerCalendar />
    </DatePickerContent>
  </DatePickerPositioner>
</DatePicker>

Examples

Input

Use DatePickerInput for a text input with calendar icon that opens the date picker.

Range

Select a date range with selectionMode="range".

Time

Use DatePickerTimer for time selection.

With Presets

Add quick single-date presets in a side panel.

Custom format

Format the selected value with Intl.DateTimeFormat.

API Reference

DatePicker

Root element. Extends Calendar.

PropTypeDefault
valueDateValue[]-
defaultValueDateValue[]-
onValueChange(details: ValueChangeDetails) => void-
selectionMode"single" | "range" | "multiple""single"
positioningPositioningOptions{ placement: "top" }
lazyMountboolean-
unmountOnExitboolean-

DatePickerTrigger

Button that opens the date picker. button

PropTypeDefault
asChildboolean-
classNamestring-

DatePickerInput

Input with calendar icon that opens the date picker on click. input

PropTypeDefault
placeholderstring-
indexnumber-
size"sm" | "md" | "lg"-
classNamestring-

DatePickerContent

Wraps the calendar. Inherits --cell-size from calendar for date cell sizing.

PropTypeDefault
classNamestring-
AttributeDefault
--cell-size--spacing(8)

DatePickerValue

Displays the selected date(s) as text. Use inside DatePickerTrigger. span

PropTypeDefault
placeholderstring-
classNamestring-
asChildboolean-

DatePickerTimer

Time input for selecting hour and minute. Use alongside the calendar for date-time selection. input

PropTypeDefault
valuestring-
defaultValuestring-
onValueChange(details: ValueChangeDetails) => void-
classNamestring-

DatePickerPresetTrigger

Quick preset button for dates. button

PropTypeDefault
classNamestring-
valueDateValue[]-
asChildboolean-

For a complete list of props, see the Ark UI documentation.