Layout & Display
Standalone month-grid view with single or range selection, min/max and per-day constraints, a renderDay slot for event markers, and full grid keyboard navigation.
| Prop | Type | Default | Description |
|---|---|---|---|
selectionMode | "single" | "range" | single | Single-date or start/end range selection. |
onChange | (value) => void | — | Fires with null when a single selection is toggled off. |
onMonthChange | (month: Date) => void | — | Fired when the visible month changes. |
minValue / maxValue | string | Date | — | Days outside the bound are disabled. |
isDateUnavailable | (date: Date) => boolean | — | Per-day disable predicate. |
isDisabled | boolean | false | Disable the whole calendar. |
selectionMode
"single" | "range"
Default: single
Single-date or start/end range selection.
onChange
(value) => void
Default: —
Fires with null when a single selection is toggled off.
onMonthChange
(month: Date) => void
Default: —
Fired when the visible month changes.
minValue / maxValue
string | Date
Default: —
Days outside the bound are disabled.
isDateUnavailable
(date: Date) => boolean
Default: —
Per-day disable predicate.
isDisabled
boolean
Default: false
Disable the whole calendar.
| Prop | Type | Default | Description |
|---|---|---|---|
value / defaultValue | string | null · { start, end } | null | — | Controlled / initial selection. Dates are YYYY-MM-DD. |
month / defaultMonth | string | Date | selection, else today | Displayed month. Accepts "YYYY-MM", "YYYY-MM-DD", or a Date. |
value / defaultValue
string | null · { start, end } | null
Default: —
Controlled / initial selection. Dates are YYYY-MM-DD.
month / defaultMonth
string | Date
Default: selection, else today
Displayed month. Accepts "YYYY-MM", "YYYY-MM-DD", or a Date.
| Prop | Type | Default | Description |
|---|---|---|---|
weekStartsOn | 0 | 1 | 0 | Sunday or Monday. |
showOutsideDays | boolean | true | Render leading/trailing days of adjacent months. |
fixedWeeks | boolean | false | Always 6 rows so height doesn't jump between months. |
weekStartsOn
0 | 1
Default: 0
Sunday or Monday.
showOutsideDays
boolean
Default: true
Render leading/trailing days of adjacent months.
fixedWeeks
boolean
Default: false
Always 6 rows so height doesn't jump between months.
| Prop | Type | Default | Description |
|---|---|---|---|
renderDay | (ctx) => ReactNode | day number | Custom day content. ctx: { date, inMonth, isToday, isSelected, isRangeStart, isRangeEnd, inRange, isDisabled }. |
size | "sm" | "md" | "lg" | md | Cell size. |
renderDay
(ctx) => ReactNode
Default: day number
Custom day content. ctx: { date, inMonth, isToday, isSelected, isRangeStart, isRangeEnd, inRange, isDisabled }.
size
"sm" | "md" | "lg"
Default: md
Cell size.
| Prop | Type | Default | Description |
|---|---|---|---|
ariaLabel | string | month name | Accessible label for the grid. |
ariaLabel
string
Default: month name
Accessible label for the grid.
| Prop | Type | Default | Description |
|---|---|---|---|
classNames | { base?, header?, heading?, nav?, navButton?, grid?, weekday?, week?, day? } | — | Slot classes. |
classNames
{ base?, header?, heading?, nav?, navButton?, grid?, weekday?, week?, day? }
Default: —
Slot classes.