NepaliWheelDatePicker
A wheel / scroll date picker for Bikram Sambat dates - three snapping columns (Year, Month, Day).
This is a lighter-weight alternative to the calendar-grid NepaliDatePicker: it is the pattern users reach for when entering a birth date or a date far from today, and it is the native feel on iOS. It also sidesteps the grid's heaviest paths - there is no ~1,500-item month pager and no per-cell BS to AD conversion; each column is a bounded LazyColumn reading the day-count table directly, so the day column always shows the correct 29 to 32 days for the chosen month.
The composable is always in a selected state (a wheel cannot be "empty"); onDateChange fires with the resolved CustomCalendar whenever the selection settles on a new date.
The wheels can spin in either calendar. onDateChange always reports a Bikram Sambat CustomCalendar, whichever calendar is on the wheels, so switching keeps the same day selected.
Parameters
the Modifier applied to the picker surface.
the Bikram Sambat SimpleDate shown centered on first composition. Defaults to today.
the selectable Bikram Sambat year range. A Gregorian wheel derives its own range from this so both calendars cover the same span of real days.
the NepaliDateLocale controlling language, month names, and digit script.
consulted via NepaliSelectableDates.isSelectableYear to drop non-selectable years from the year wheel. Fine-grained per-day disabling is not expressed by a wheel by design.
the NepaliDatePickerColors used to theme the picker.
the height of each wheel row.
how many rows are visible at once; coerced to an odd number of at least 3.
the Shape of the wheel surface.
the TextStyle of the centered (selected) row.
the TextStyle of the non-centered rows.
the calendar the wheels start in.
shows a B.S. / A.D. switch above the wheels. Unlike the grid pickers the wheel has no external state holder, so it owns the choice itself.
invoked with the resolved Bikram Sambat CustomCalendar when the selected date changes.
Example usage:
NepaliWheelDatePicker(
initialDate = NepaliDateConverter.todayNepaliSimpleDate,
onDateChange = { selected -> /* ... */}
)