Forms
Date Time Picker
A date-and-time picker that pairs a month calendar with hour and minute steppers to choose a Temporal.PlainDateTime. It works from the keyboard and clamps the result to any min and max bounds.
ReactVueWeb Components
View in Storybook Playground
Examples
<DateTimePicker
defaultValue={Temporal.PlainDateTime.from('2026-05-30T09:30')}
minuteStep={15}
onChange={setWhen}
/> Props
| Name | Type | Default | Description |
|---|---|---|---|
value | Temporal.PlainDateTime | null | — | Selected date+time (controlled). Pass `null` for "no selection". |
defaultValue | Temporal.PlainDateTime | null | — | Initial date+time (uncontrolled). @default null |
onChange | (value: Temporal.PlainDateTime | null) => void | — | Called with the new value (or `null` when cleared). |
min | PlainDateTimeInput | — | Earliest selectable instant (inclusive). ISO datetime strings accepted. |
max | PlainDateTimeInput | — | Latest selectable instant (inclusive). ISO datetime strings accepted. |
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) |
minuteStep | number | 5 | Minute increment for the minute stepper. @default 5 |
disabled | boolean | — | Disable the whole control. |
size | Extract<SizeToken, 'sm' | 'md' | 'lg'> | md | Control size. @default 'md' |
status | 'danger' | — | Semantic status (used for the invalid/danger boundary styling). |
alignEnd | boolean | false | Align the calendar popup to the field's end (right) edge. @default false |
toggleLabel | string | Choose date and time | Accessible label for the calendar toggle button. @default 'Choose date and time' |
id | string | — | `id` for the text input (an auto-generated id is used otherwise). |
name | string | — | `name` for the text input, for form submission. |
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.