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
startDateDateRange start date
endDateDateRange end date
onRangeChange(start, end) => voidCallback when range changes
minDateDateMinimum selectable date
maxDateDateMaximum selectable date
maxDaysnumberMaximum 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
classNamestringAdditional classes

DateRangePickerContent

The calendar popup with action buttons.

PropTypeDefaultDescription
classNamestringAdditional classes

DateRangePickerValue

Display component for the selected range.

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

On this page