Skip to content
THE COMPONENT LIBRARY
Skip to content

Component reference

Calendar

Select dates for a booking in a standalone calendar.

Preview

Live preview

Changes apply to this preview only.

October 2026
Use the arrow keys to move by day, Page Up and Page Down to change the month, and Home or End to move within the week. Press Enter or Space to select.
ConsultationNot scheduled

Sundays are closed and past dates are unavailable.

Width adapts to the available space

More examples

Different configurations and compositions using the real Pimolu API. Each preview runs independently and follows the site appearance.

Single date

Arrow keys move by day, PageUp/PageDown by month, Home/End across the week. Enter or Space selects the focused day.

Open preview

Range

The first click sets the start, the second sets the end, and the next click starts a new range. A range can be completed in either direction.

Open preview

Two months

numberOfMonths renders consecutive grids and keeps them in sync while navigating.

Open preview

Usage

Keep local calendar-day semantics and apply availability limits explicitly.

API reference

Generated from the public TypeScript declarations. Native HTML attributes are inherited where the component extends them; this reference includes Pimolu props and selected common native attributes.

PimoluDateRange

Type source
PimoluDateRange public API
NameTypeDefaultDescription
fromRequiredDate | null—Public Pimolu prop; see the source declaration for details.
toRequiredDate | null—Public Pimolu prop; see the source declaration for details.
fromRequired

Date | null

No default extracted.

Public Pimolu prop; see the source declaration for details.

toRequired

Date | null

No default extracted.

Public Pimolu prop; see the source declaration for details.

PimoluCalendarProps

Type source
PimoluCalendarProps public API
NameTypeDefaultDescription
modePimoluCalendarMode | undefined"single"Selection model. Defaults to "single".
selectedDate | null | undefined—Controlled single selection. Omit to let the calendar own it; pass `null` to control an empty selection.
onSelect((date: Date) => void) | undefined—Called with the selected day when `mode` is "single".
rangePimoluDateRange | undefined—Controlled range selection. Omit to let the calendar own it. When the first click sets `from`, the second sets `to`, and a third starts a new range.
onRangeChange((range: PimoluDateRange) => void) | undefined—Called whenever the range changes.
monthDate | undefined—Controlled visible month. Any day in the month is accepted.
defaultMonthDate | undefined—Initial visible month when uncontrolled.
onMonthChange((month: Date) => void) | undefined—Called with the first day of the month after prev/next navigation.
minDate | undefined—Earliest selectable day, inclusive.
maxDate | undefined—Latest selectable day, inclusive.
disabledDatesPimoluDisabledDates | undefined—Dates that cannot be selected, as a list or a predicate.
weekStartsOn0 | 1 | undefined0First day of the week: 0 = Sunday, 1 = Monday. Defaults to 0.
localestring | undefined"en-US"BCP 47 locale used for month, weekday and day labels. Defaults to "en-US".
numberOfMonths1 | 2 | undefined1Number of consecutive months rendered together. Defaults to 1.
classNamestring | undefined—Class applied to the outer calendar.
aria-labelstring | undefined—Accessible name for the calendar group.
mode

PimoluCalendarMode | undefined

Default: "single"

Selection model. Defaults to "single".

selected

Date | null | undefined

No default extracted.

Controlled single selection. Omit to let the calendar own it; pass `null` to control an empty selection.

onSelect

((date: Date) => void) | undefined

No default extracted.

Called with the selected day when `mode` is "single".

range

PimoluDateRange | undefined

No default extracted.

Controlled range selection. Omit to let the calendar own it. When the first click sets `from`, the second sets `to`, and a third starts a new range.

onRangeChange

((range: PimoluDateRange) => void) | undefined

No default extracted.

Called whenever the range changes.

month

Date | undefined

No default extracted.

Controlled visible month. Any day in the month is accepted.

defaultMonth

Date | undefined

No default extracted.

Initial visible month when uncontrolled.

onMonthChange

((month: Date) => void) | undefined

No default extracted.

Called with the first day of the month after prev/next navigation.

min

Date | undefined

No default extracted.

Earliest selectable day, inclusive.

max

Date | undefined

No default extracted.

Latest selectable day, inclusive.

disabledDates

PimoluDisabledDates | undefined

No default extracted.

Dates that cannot be selected, as a list or a predicate.

weekStartsOn

0 | 1 | undefined

Default: 0

First day of the week: 0 = Sunday, 1 = Monday. Defaults to 0.

locale

string | undefined

Default: "en-US"

BCP 47 locale used for month, weekday and day labels. Defaults to "en-US".

numberOfMonths

1 | 2 | undefined

Default: 1

Number of consecutive months rendered together. Defaults to 1.

className

string | undefined

No default extracted.

Class applied to the outer calendar.

aria-label

string | undefined

No default extracted.

Accessible name for the calendar group.

Accessibility

  • Verify arrow navigation, disabled dates, locale labels and the selected-date announcement.
Read the accessibility guide →