mode
"single" | "range"Default: "single"
Switches between single-date and date-range picker behaviors.
1<DatePicker mode="range" />
showRangeMeta
booleanDefault: true
Controls the range meta block (start/end + helper text) in range mode.
1<DatePicker mode="range" showRangeMeta={false} />
rangeMonthsToShow
1 | 2Default: 1
Shows one or two calendar months in range mode.
1<DatePicker mode="range" rangeMonthsToShow={2} />
theme
Partial<DatePickerTheme>Default: undefined
Typed theme tokens mapped to CSS variables for fast white-labeling.
1const theme = { primary: "#176b87", panelRadius: "18px" };
2<DatePicker theme={theme} />
showPresetPanel
booleanDefault: false
Enables side panel with quick date/date-range presets.
1<DatePicker mode="range" showPresetPanel />
presetPanelTitle
stringDefault: "Quick Select"
Heading text displayed at the top of the preset panel.
1<DatePicker showPresetPanel presetPanelTitle="Quick Ranges" />
singlePresetLabel
stringDefault: "Single Date"
Subtitle shown in preset panel when `mode="single"`.
1<DatePicker showPresetPanel singlePresetLabel="Shortcuts" />
rangePresetLabel
stringDefault: "Date Range"
Subtitle shown in preset panel when `mode="range"`.
1<DatePicker mode="range" showPresetPanel rangePresetLabel="Team Presets" />
singlePresets
SingleDatePreset[]Default: built-in presets
Custom single-date presets. Add/remove items or dynamic resolvers.
1const singlePresets = [
2 { id: "today", label: "Today" },
3 { id: "next-friday", label: "Next Friday", getDate: ({ today }) => new Date(today.getFullYear(), today.getMonth(), today.getDate() + 5) }
4];
5<DatePicker showPresetPanel singlePresets={singlePresets} />
rangePresets
RangeDatePreset[]Default: built-in presets
Custom range presets with static `range` or dynamic `getRange`.
1const rangePresets = [
2 { id: "last-week", label: "Last Week" },
3 { id: "next-14", label: "Next 14 Days", getRange: ({ today }) => ({ start: today, end: new Date(today.getFullYear(), today.getMonth(), today.getDate() + 13) }) }
4];
5<DatePicker mode="range" showPresetPanel rangePresets={rangePresets} />
value
Date | nullDefault: null
Controlled selected value for single-date mode.
1<DatePicker value={date} onChange={setDate} />
onChange
(date: Date | null) => voidDefault: undefined
Change callback for single-date mode.
1<DatePicker value={date} onChange={(next) => setDate(next)} />
rangeValue
DateRange | nullDefault: null
Controlled selected range for range mode.
1<DatePicker mode="range" rangeValue={range} onRangeChange={setRange} />
onRangeChange
(range: DateRange | null) => voidDefault: undefined
Change callback for range mode.
1<DatePicker mode="range" onRangeChange={(next) => setRange(next ?? { start: null, end: null })} />
placeholder
stringDefault: "Select a date"
Placeholder shown when no value/range is selected.
1<DatePicker placeholder="Pick your meeting date" />
minDate
DateDefault: undefined
Disables all dates before this value.
1<DatePicker minDate={new Date(2025, 0, 1)} />
maxDate
DateDefault: undefined
Disables all dates after this value.
1<DatePicker maxDate={new Date(2030, 11, 31)} />
disabled
booleanDefault: false
Disables the trigger input and all interactions.
className
stringDefault: undefined
Adds custom class to the root wrapper.
1<DatePicker className="my-picker" />
style
React.CSSPropertiesDefault: undefined
Inline style for the root wrapper (can work with theme tokens).
1<DatePicker style={{ width: 340 }} />
locale
stringDefault: "en-US"
Locale for month labels and formatted selected values.
1<DatePicker locale="en-GB" />
startWeekOnMonday
booleanDefault: false
Reorders weekday layout so the calendar starts with Monday.
1<DatePicker startWeekOnMonday />