Lunar Kit LogoLunar Kit
Components

Date Picker

A component that allows users to select a date from a calendar popup.

Demo
Code
Select date

Installation

lunar add date-picker

Usage

import {
DatePicker,
DatePickerTrigger,
DatePickerContent,
DatePickerValue,
} from '@/components/ui/date-picker';

Basic Usage

const [date, setDate] = useState<Date>();
 
<DatePicker value={date} onValueChange={setDate}>
<DatePickerTrigger>
  <DatePickerValue placeholder="Select a date" />
</DatePickerTrigger>
<DatePickerContent />
</DatePicker>

Variants

// Date picker (default)
<DatePicker variant="date" value={date} onValueChange={setDate}>
{/* ... */}
</DatePicker>
 
// Month picker
<DatePicker variant="month" value={date} onValueChange={setDate}>
{/* ... */}
</DatePicker>
 
// Year picker
<DatePicker variant="year" value={date} onValueChange={setDate}>
{/* ... */}
</DatePicker>

Trigger Variants

// Default - bordered input look
<DatePicker value={date} onValueChange={setDate} triggerVariant="default">
{/* ... */}
</DatePicker>
 
// Outline
<DatePicker value={date} onValueChange={setDate} triggerVariant="outline">
{/* ... */}
</DatePicker>
 
// Filled
<DatePicker value={date} onValueChange={setDate} triggerVariant="filled">
{/* ... */}
</DatePicker>

Trigger Sizes

<DatePicker value={date} onValueChange={setDate} triggerSize="sm">
{/* ... */}
</DatePicker>
 
<DatePicker value={date} onValueChange={setDate} triggerSize="md">
{/* ... */}
</DatePicker>
 
<DatePicker value={date} onValueChange={setDate} triggerSize="lg">
{/* ... */}
</DatePicker>

Custom Date Format

<DatePickerValue 
placeholder="Pick a date"
format="YYYY-MM-DD"
/>
 
<DatePickerValue 
placeholder="Pick a date"
format="DD/MM/YYYY"
/>
 
<DatePickerValue 
placeholder="Pick a date"
format="MMMM D, YYYY"  // December 25, 2024
/>

With Min/Max Dates

<DatePicker
value={date}
onValueChange={setDate}
minDate={new Date()}
maxDate={new Date(2025, 11, 31)}
>
<DatePickerTrigger>
  <DatePickerValue placeholder="Select a future date" />
</DatePickerTrigger>
<DatePickerContent />
</DatePicker>

Without Icon

<DatePickerValue 
placeholder="Select date"
showIcon={false}
/>

API Reference

DatePicker

Root component.

PropTypeDefaultDescription
valueDateSelected date
onValueChange(date: Date) => voidCallback when date changes
variant'date' | 'month' | 'year''date'Picker variant
minDateDateMinimum selectable date
maxDateDateMaximum selectable date
triggerVariant'default' | 'outline' | 'filled''default'Trigger style
triggerSize'sm' | 'md' | 'lg''md'Trigger size

DatePickerTrigger

The button that opens the calendar.

PropTypeDefaultDescription
childrenReactNodeRequiredTrigger content
classNamestringAdditional classes

DatePickerContent

The calendar popup.

PropTypeDefaultDescription
classNamestringAdditional classes

DatePickerValue

Display component for the selected date.

PropTypeDefaultDescription
placeholderstring'Select date'Placeholder text
formatstring'MMM DD, YYYY'Date format (dayjs)
showIconbooleantrueShow calendar icon
classNamestringAdditional classes

Date Formats

Using dayjs format tokens:

TokenOutputExample
YYYY4-digit year2024
YY2-digit year24
MMMMFull monthDecember
MMMShort monthDec
MM2-digit month12
MMonth12
DD2-digit day05
DDay5
ddddFull weekdayTuesday
dddShort weekdayTue

On this page