
Lightweight, customizable Material 3 date picker offering single and range selection, range highlighting, easy theming, and state API exposing selected date, range, and current month.
A lightweight, customizable Date Picker for Jetpack Compose and Compose Multiplatform, built with Material 3.
The library is available on Maven Central. No extra repository setup needed — mavenCentral() is included by default in Android and KMP projects.
| Android | iOS |
|---|---|
![]() |
![]() |
Add the dependency to your module's build.gradle.kts:
dependencies {
implementation("dev.mikelau:compose-datepicker-android:1.0.2")
}In your shared module's build.gradle.kts:
kotlin {
sourceSets {
commonMain.dependencies {
implementation("dev.mikelau:compose-datepicker:1.0.2")
}
}
}[versions]
composeDatePicker = "1.0.2"
[libraries]
compose-datepicker = { group = "dev.mikelau", name = "compose-datepicker", version.ref = "composeDatePicker" }Then in build.gradle.kts:
commonMain.dependencies {
implementation(libs.compose.datepicker)
}val state = remember { DatePickerState(selectionMode = DatePickerState.SelectionMode.Single) }
ComposeDatePicker(
state = state,
onConfirm = { confirmedState ->
println("Selected date: ${confirmedState.selectedDate}")
},
onCancel = { /* Handle cancel */ }
)val state = remember { DatePickerState(selectionMode = DatePickerState.SelectionMode.Range) }
ComposeDatePicker(
state = state,
onConfirm = { confirmedState ->
println("Selected range: ${confirmedState.rangeStart} to ${confirmedState.rangeEnd}")
},
onCancel = { /* Handle cancel */ }
)You can easily override the default colors to match your brand:
ComposeDatePicker(
primaryColor = Color(0xFF6200EE),
accentColor = Color(0xFF03DAC6),
rangeColor = Color(0xFFBB86FC),
onConfirm = { /* ... */ }
)DatePickerState provides access to the current selection:
selectedDate: The currently selected LocalDate (Single mode).rangeStart: The start of the selected range (Range mode).rangeEnd: The end of the selected range (Range mode).currentMonth: The month currently being displayed in the picker.Copyright 2026 Mike Lau
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
A lightweight, customizable Date Picker for Jetpack Compose and Compose Multiplatform, built with Material 3.
The library is available on Maven Central. No extra repository setup needed — mavenCentral() is included by default in Android and KMP projects.
| Android | iOS |
|---|---|
![]() |
![]() |
Add the dependency to your module's build.gradle.kts:
dependencies {
implementation("dev.mikelau:compose-datepicker-android:1.0.2")
}In your shared module's build.gradle.kts:
kotlin {
sourceSets {
commonMain.dependencies {
implementation("dev.mikelau:compose-datepicker:1.0.2")
}
}
}[versions]
composeDatePicker = "1.0.2"
[libraries]
compose-datepicker = { group = "dev.mikelau", name = "compose-datepicker", version.ref = "composeDatePicker" }Then in build.gradle.kts:
commonMain.dependencies {
implementation(libs.compose.datepicker)
}val state = remember { DatePickerState(selectionMode = DatePickerState.SelectionMode.Single) }
ComposeDatePicker(
state = state,
onConfirm = { confirmedState ->
println("Selected date: ${confirmedState.selectedDate}")
},
onCancel = { /* Handle cancel */ }
)val state = remember { DatePickerState(selectionMode = DatePickerState.SelectionMode.Range) }
ComposeDatePicker(
state = state,
onConfirm = { confirmedState ->
println("Selected range: ${confirmedState.rangeStart} to ${confirmedState.rangeEnd}")
},
onCancel = { /* Handle cancel */ }
)You can easily override the default colors to match your brand:
ComposeDatePicker(
primaryColor = Color(0xFF6200EE),
accentColor = Color(0xFF03DAC6),
rangeColor = Color(0xFFBB86FC),
onConfirm = { /* ... */ }
)DatePickerState provides access to the current selection:
selectedDate: The currently selected LocalDate (Single mode).rangeStart: The start of the selected range (Range mode).rangeEnd: The end of the selected range (Range mode).currentMonth: The month currently being displayed in the picker.Copyright 2026 Mike Lau
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0