Forms

Date Picker

A field for picking a date from a calendar. It pairs a text field you can type into with a calendar you can move through by keyboard.

ReactVueWeb Components
View in Storybook

Playground

Props

Name Type Default Description
value Temporal.PlainDate | null Selected date (controlled). Pass `null` for "no selection".
defaultValue Temporal.PlainDate | null Initial selected date (uncontrolled). @default null
onChange (date: Temporal.PlainDate | null) => void Called with the new date (or `null` when cleared).
min PlainDateInput Earliest selectable date (inclusive). ISO `YYYY-MM-DD` strings accepted.
max PlainDateInput Latest selectable date (inclusive). ISO `YYYY-MM-DD` strings accepted.
isDateDisabled (date: Temporal.PlainDate) => boolean Disable individual dates (e.g. weekends, holidays).
locale Intl.LocalesArgument BCP-47 locale for month / weekday names. Defaults to the host locale.
weekStartsOn Weekday Which weekday the grid starts on. @default 1 (Monday)
disabled boolean Disable the whole control.
invalid boolean Mark the field as invalid (combined with internal parse errors).
alignEnd boolean false Align the calendar popup to the field's end (right) edge. @default false
placeholder string YYYY-MM-DD Placeholder for the text field. @default 'YYYY-MM-DD'
toggleLabel string Choose date Accessible label for the calendar toggle button. @default 'Choose date'
id string `id` for the text input (an auto-generated id is used otherwise).
name string `name` for the text input, for form submission.
required boolean Mark the field as required.
inputProps Omit< InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'disabled' | 'required' | 'name' | 'id' > Extra props forwarded to the text `<input>`.
className string

Accessibility

  • Body/background contrast is ≥ 7:1 (AAA) in both light and dark.
  • Every interaction works with the keyboard alone.
  • The focus ring is always visible.
  • Respects prefers-reduced-motion and stops excessive motion.

Every component is designed to meet WCAG 2.1 AAA.