Components / Inputs

DatePicker nativelite

A calendar date field (ISO yyyy-mm-dd).

A2UI basic
DateTimeInput
Children
none
Loading the renderer…
DatePicker rendered by the React renderer on Web
Web React
DatePicker rendered by the SwiftUI renderer on iOS
iOS SwiftUI
DatePicker rendered by the Compose renderer on Android
Android Compose
DatePicker rendered by the gpui renderer on Desktop
Desktop gpui

View exponential-ui-date-picker, painted by each native renderer.

PropTypeDefaultDescription
labelstring–The field label.
namerequiredstring–The field's key in the submitted data.
valuebinddate–The chosen day as yyyy-mm-dd, or empty.
mindate–The earliest allowed day.
maxdate–The latest allowed day.
placeholderstring–Shown while empty.
firstDayOfWeeknumber–0 (Sunday) to 6; else the locale's.
NameKind
on.changeevent: runs an action
Role
combobox
Semantics
combobox opening a dialog with a grid of days
KeysAction
EnterSpaceArrowDownopen on the selected (else today's) day
Arrow keys± 1 day / ± 1 week
PageUpPageDownprevious/next month (Shift: year)
HomeEndstart/end of the week (locale week start)
EnterSpacechoose; Escape: close
Recipe parts
DatePicker/rootDatePicker/labelDatePicker/triggerDatePicker/calendarDatePicker/day
Keyed by
:hover:pressed:focus:disabled:checked:open:selected:invalid:dragover

Themes · Write a theme

Date picker

The ONE date picker.

More

Popover + Calendar was inlined three times — the properties panel, the editor chips, the mobile tray — and each copy converted between a Date and the wire's YYYY-MM-DD its own way, two of them through new Date(value), which the spec parses as UTC and which therefore shows the PREVIOUS day west of Greenwich. This one speaks the wire format on both sides and converts in exactly one place. A due date is a DATE, never an instant (REV2-49), so there is no time arm; the trigger is a Pill showing the short form, and Clear is a row under the grid rather than a second control beside it.

Webok
DatePickerpackages/ui/src/date-picker.tsx

parseDateValue / formatDateLabel are the only place the wire date becomes a Date

iOSok
DueDateSheetapps/ios/Exponential/UI/Issue/Sheets/DueDateSheet.swift

CreateIssueView keeps a second unfoldable form, UI/Issue/DueDatePicker.swift

Androidok
DueDateSheetapps/android/app/src/main/java/com/exponential/app/ui/issue/DueDateSheet.kt

the grid itself is IssueDatePickerDialog.kt

Desktopok
pickers::due_date_popoverapps/desktop/crates/ui/src/pickers.rs