Lunar Kit LogoLunar Kit
Components

Date Range Picker

A component that allows users to select a range of dates from a calendar.

Demo
Code
Select date

Installation

lunar add date-range-picker

Usage

import {
DateRangePicker,
DateRangePickerTrigger,
DateRangePickerContent,
DateRangePickerValue,
} from '@/components/ui/date-range-picker';

Basic Usage

const [startDate, setStartDate] = useState<Date>();
const [endDate, setEndDate] = useState<Date>();
 
<DateRangePicker
startDate={startDate}
endDate={endDate}
onRangeChange={(start, end) => {
  setStartDate(start);
  setEndDate(end);
}}
>
<DateRangePickerTrigger>
  <DateRangePickerValue placeholder="Select date range" />
</DateRangePickerTrigger>
<DateRangePickerContent />
</DateRangePicker>

With Min/Max Dates

<DateRangePicker
startDate={startDate}
endDate={endDate}
onRangeChange={handleRangeChange}
minDate={new Date()}
maxDate={new Date(2025, 11, 31)}
>
{/* ... */}
</DateRangePicker>

Maximum Days

Limit the maximum number of days that can be selected:

<DateRangePicker
startDate={startDate}
endDate={endDate}
onRangeChange={handleRangeChange}
maxDays={7}  // Maximum 7 days selection
>
{/* ... */}
</DateRangePicker>

Trigger Variants

// Default
<DateRangePicker variant="default" {...props}>
{/* ... */}
</DateRangePicker>
 
// Outline
<DateRangePicker variant="outline" {...props}>
{/* ... */}
</DateRangePicker>
 
// Filled
<DateRangePicker variant="filled" {...props}>
{/* ... */}
</DateRangePicker>

Trigger Sizes

<DateRangePicker size="sm" {...props}>
{/* ... */}
</DateRangePicker>
 
<DateRangePicker size="md" {...props}>
{/* ... */}
</DateRangePicker>
 
<DateRangePicker size="lg" {...props}>
{/* ... */}
</DateRangePicker>

Custom Format

<DateRangePickerValue
placeholder="Choose dates"
format="DD/MM/YYYY"
/>
 
<DateRangePickerValue
placeholder="Choose dates"
format="MMMM D, YYYY"
/>

API Reference

DateRangePicker

Root component.

PropTypeDefaultDescription
startDateDate—Range start date
endDateDate—Range end date
onRangeChange(start, end) => void—Callback when range changes
minDateDate—Minimum selectable date
maxDateDate—Maximum selectable date
maxDaysnumber—Maximum days in range
variant'default' | 'outline' | 'filled''default'Trigger variant
size'sm' | 'md' | 'lg''md'Trigger size

DateRangePickerTrigger

The button that opens the picker.

PropTypeDefaultDescription
childrenReactNodeRequiredTrigger content
classNamestring—Additional classes

DateRangePickerContent

The calendar popup with action buttons.

PropTypeDefaultDescription
classNamestring—Additional classes

DateRangePickerValue

Display component for the selected range.

PropTypeDefaultDescription
placeholderstring'Select date range'Placeholder text
formatstring'MMM DD, YYYY'Date format
showIconbooleantrueShow calendar icon
classNamestring—Additional classes

On this page