All components

Smart Date Picker

Beta wall-clock date/time picker with atomic Apply, truthful IANA timezone conversion, DST resolution, recurring single dates and ranges, availability, and occurrence-aware conflicts.

Default
Single date with staged Apply, time, natural language, recurrence, and availability.

Selected: 2026-07-29 at 10:00 (Europe/London)

Sign in to view this example's source code.

Sign in
Range
Mode-safe range selection that excludes unavailable days.

Click start, then end. Unavailable days are disabled.

Sign in to view this example's source code.

Sign in
Scheduling
Booking scenario: DST-safe timezone conversion, recurrence, custom parsing, and occurrence-aware conflicts.

Try “team standup”, “every Monday for the next 3 weeks”, or an ordinal monthly schedule.

Sign in to view this example's source code.

Sign in

Props

NameTypeDefaultDescription
mode"single" | "range""single"Single date/time or start–end range selection
value / defaultValue / onChangeSmartDatePickerValue<mode>uncontrolled if omittedAtomic selection, IANA timezone, recurrence, and DST policy; emits only on Apply
timeZoneChangeBehavior"ask" | "preserve-instant" | "preserve-wall-time""ask"Controls whether changing timezone converts the exact moment or reinterprets wall time
showRecurrencebooleantrue in single mode; false in range modeDaily, weekly, calendar/ordinal monthly, and yearly recurrence editor
availabilityAvailabilityDay[][]Per-day availability and load overlay on the calendar grid
conflictCheck / conflictsConflictCheck / ScheduleConflict[]undefined / []Bounded exact-time occurrence checks plus optional external conflict messages
presetsSmartDatePickerPreset[]Today, Tomorrow, Next week, Next 7 daysQuick scheduling chips
onParseNaturalLanguage(input: string) => ParseResult | Promise<ParseResult>built-in heuristic parserSwap in your own NLP/LLM parser for AI-friendly input
onApply(snapshot: SmartDatePickerValue) => voidundefinedCalled with the same immutable atomic value as onChange after Apply
showTime / showTimezone / showRecurrencebooleantrueToggle schedule tab sections
weekStartsOn0 | 11 (Monday)Calendar week start