Aliases
calendar picker
DatePickerSingle-date field with a calendar, keyboard navigation, and blocked dates.
Aliases
calendar picker
Foundations
Type and scale,Contrast and distinctness,Proof system,Layout and composition
DatePicker when users need help choosing a calendar date rather than typing one from memory.min, max, and disabledDates to constrain selection.DatePicker for ranges, times, or multi-month planning.field wrapper
root Provides the field label, helper text, and validation state.
field button
trigger Opens the calendar surface and displays the chosen date.
date grid surface
calendar Anchored calendar surface with month navigation.
grid cell button
day Selectable calendar day with range and disabled rules.
| Name | Type | Default | Description |
|---|---|---|---|
label | string | — | Visible label used for the field or control. |
description | string | — | Provides field guidance associated with the control. |
error | string | — | Shows a validation error associated with the control. |
placeholder | string | — | Placeholder text shown before a user makes a selection or enters text. |
required | boolean | false | Marks the control as required. |
disabled | boolean | false | Prevents interaction and exposes the disabled state. |
name | string | — | Form field name used for native form submission. |
id | string | — | Sets the control ID for external labels and descriptions. |
size | 'sm' | 'md' | 'lg' | 'md' | Sets the component size. |
value | string | — | Controlled date-only value in YYYY-MM-DD format. |
min | string | — | Minimum selectable date in YYYY-MM-DD format. |
max | string | — | Maximum selectable date in YYYY-MM-DD format. |
disabledDates | string[] | — | Explicitly blocked date-only values. |
weekStartsOn | 0 | 1 | 0 | Chooses Sunday or Monday as the first day of the week. |
onChange | (detail: { value: string | undefined }) => void | — | Runs when a valid date is selected. |
theme | ThemeContract | — | Sets the theme used to resolve component styles. |
| Name | Payload | Description |
|---|---|---|
change | { value: string | undefined } | Fires when the component commits a new value. |
| Name | Description |
|---|---|
default | DatePicker is prop-driven and does not expose custom slots. |
Variants
default: DatePicker uses one single-date shell and varies by size.Sizes
sm: Compact date field for dense tools.md: Default date field size.lg: Larger date field for touch-friendly surfaces.States
closed: Date field is idle and the calendar is hidden.open: Calendar surface is visible.selected: A date has been committed to the field.disabled: Date field cannot open or change.blocked: Specific days cannot be selected due to range or explicit block rules.Semantics
Keyboard
Screen readers
Caveats
DatePicker uses date-only values (YYYY-MM-DD) and intentionally avoids timestamp semantics.Checklist
Implementation notes
DatePicker supports one date. Use RangeDatePicker for a date range.A standard single-date field with a selected value.
<DatePicker label="Launch date" value="2026-04-15" /> Limit the valid date window when the workflow has a real schedule boundary.
<DatePicker label="Ship date" min="2026-04-01" max="2026-04-30" /> Block specific non-working days or unavailable release slots.
<DatePicker label="Launch date" disabledDates={['2026-04-19', '2026-04-20']} /> Calculated fixtures; browser evidence is not collected. Layout estimates use declared text behavior and maximum token values.
size=md
size=lg
size=sm