Component
Date Picker
Text field + Popover-composed Calendar.
Basic
When to use
- A single date field inside a form (birthdate, due date, booking date) where a full-time grid should stay hidden until needed.
When not to use
- A page where the date grid is the primary content and should always be visible - use Calendar directly.
- Selecting a range of dates - not currently supported by either Calendar or Date Picker.
Keyboard
Mobile behavior
- Opens the same Popover-anchored Calendar as desktop rather than swapping to a native date input - keeps behavior and styling consistent across breakpoints.
Accessibility notes
- The trigger is a real text field, so it's labeled the same way any other form field is (aria-label or a linked <label>).
- Inherits Calendar's date-grid keyboard pattern and Popover's focus-return-to-trigger behavior once composed together.
Common mistakes
- Typing an unparseable date directly into the field with no format hint - pair it with a placeholder showing the expected format.
Known limitations
- No typed-date parsing beyond what the field forwards - freeform typing isn't validated against a date format.
API reference
value / defaultValueNone
Date | nullControlled or uncontrolled selected date.
onChangeNone
(date: Date) => voidFires when a day is picked in the popover.
minDate / maxDateNone
DateBounds of the selectable range.
placeholderNone
stringTrigger text shown when no date is set.
size"md"
"sm" | "md" | "lg"Trigger field height.
invalid / disabledfalse
booleanField state.
locale"en-US"
stringBCP-47 locale for the calendar labels.
classNameNone
stringAdditional classes applied to the component root.
