| format | F | "PlainDate" | The value format used for date serialization. Determines the type of
value, defaultValue, min, max, and callback parameters. |
| min | RawValueForFormat<F> | — | Earliest selectable date. Dates before this are disabled. |
| max | RawValueForFormat<F> | — | Latest selectable date. Dates after this are disabled. |
| disabled | boolean | false | When true, the entire calendar is disabled. |
| readOnly | boolean | false | When true, the calendar is read-only. Keyboard navigation still works
but selection is prevented. |
| isDateDisabled | (date: PlainDate) => boolean | — | Callback to disable individual dates. Return true to disable a date.
Called in addition to min/max bounds checking. |
| timeZone | string | The system's current time zone. | IANA time zone identifier used for date/time conversions. |
| locale | string | "en-US" | BCP 47 locale string used for formatting month names, weekday labels,
and other locale-sensitive output. |
| temporal | TemporalNamespace | — | Custom Temporal namespace for environments without native Temporal support. |
| weekStartDay | WeekStartDay | 0 | Day of the week the calendar grid starts on.
0 = Sunday, 1 = Monday, ..., 6 = Saturday. |
| children | React.ReactNode | — | React children. |
| selectionMode | "single" | "range" | "multiple" | "single" | |
| value | RawValueForFormat<F> | DateRange<F> | RawValueForFormat<F>[] | null | — | The controlled selected date. Pass null to clear. |
| defaultValue | RawValueForFormat<F> | DateRange<F> | RawValueForFormat<F>[] | — | |
| onValueChange | ((value: RawValueForFormat<F> | null, meta: ValueChangeMeta<RawValueForFormat<F> | null>) => void) | ((value: RawValueForFormat<F> | null, meta: ValueChangeMeta<RawValueForFormat<F> | null>) => void) | ((value: DateRange<F> | null, meta: ValueChangeMeta<DateRange<F> | null>) => void) | ((value: DateRange<F> | null, meta: ValueChangeMeta<DateRange<F> | null>) => void) | ((value: RawValueForFormat<F>[], meta: ValueChangeMeta<RawValueForFormat<F>[]>) => void) | ((value: RawValueForFormat<F>[], meta: ValueChangeMeta<RawValueForFormat<F>[]>) => void) | — | |
| numberOfMonths | number | 1 | Number of months to display simultaneously (1–12). |
| fixedWeeks | boolean | false | When true, always render 6 week rows per month grid.
Prevents layout shifts when navigating between months. |
| outsideDays | OutsideDays | "enabled" | Controls how days from adjacent months are displayed. |
| overflowBehavior | MonthOverflowBehavior | "unbounded" | How month navigation behaves at min/max bounds.
- "unbounded" — navigation is always allowed.
- "stop" — navigation buttons disable at the boundary. |
| month | PlainYearMonth | — | The controlled visible month. When provided, the component is controlled. |
| defaultMonth | PlainYearMonth | — | The initial visible month (uncontrolled). |
| onMonthChange | (month: PlainYearMonth) => void | — | Called when the visible month changes via navigation or focus movement.
Not called on initial mount. |