MonthList, the vertically-scrolling
month list. It takes the selection props and renders a range as filled endpoint
badges with a centered rounded “pill” band across the span; today keeps its own
badge. Pass fillCellOnSelection to fill the whole cell instead of the pill.
Range selection with useDateRange
useDateRange owns the start/end state machine: the first press sets the start,
the second sets the end (auto-swapping if you tap an earlier day), and a third
press starts over.
onSelectDrag to useDateRange’s selectRange.
Single and multiple days
selectedDates marks discrete days. Drive it from onPressDay:
Disabled days
minDate, maxDate, and isDateDisabled render days dimmed, ignore taps, and
keep them out of any selection (drag included). Pass the same constraints to
useDateRange so a rejected day never opens a range:
Selection is a
rangeBackground band over the span; there is no per-day selected circle by
default, so the “today” badge stays distinct. See Theming for the token.