Extra
DatePickerSheet
A FormaUI date picker presented in a modal bottom sheet — Material 3's inline DatePicker hosted in a FormaBottomSheet instead of the M3 DatePickerDialog, with hoisted M3 state, confirm/dismiss button slots, and the calendar-to-text-input mode toggle.
import dev.formaui.components.datepicker.FormaDatePickerSheet
Preview
This toggle is site chrome only — the preview has its own light/dark switch inside.
Live preview — ~37 MB development build
Usage
val state = rememberDatePickerState()if (open) { FormaDatePickerSheet( onDismissRequest = { open = false }, state = state, confirmButton = { FormaButton( onClick = { onPicked(state.selectedDateMillis); open = false }, enabled = state.selectedDateMillis != null, ) { Text("OK") } }, )}
FormaDatePickerSheet
Hosts M3's stable DatePicker in a FormaBottomSheet above an end-aligned button row. State is the caller's DatePickerState and the component wires nothing to the button slots — the confirm slot reads state.selectedDateMillis itself (so it can disable itself until a date is picked). The default colors make the picker's own container transparent so it sits directly on the sheet surface.
Supporting API
- rememberDatePickerStatefunction (Material 3)
- The component defines no state type of its own — callers create and own the picker state via Material 3's rememberDatePickerState (initial date, selectableDates, yearRange, initialDisplayMode, saveability) and read selectedDateMillis from it.
Accessibility
Inherits Material 3's DatePicker semantics — day cells expose full-date content descriptions, the mode toggle has its own content description, and navigation controls are labeled — plus ModalBottomSheet's back-press and scrim dismiss handling; the button slots are caller-supplied (typically FormaButtons with M3's 48dp minimum touch target).