Calendar

An accessible standalone month-grid date picker.

Category: inputs · WCAG 2.2-AA · calendar, date, month, grid, picker, input

Sizes

States

Props

PropTypeDefaultDescription
isInRange(date: Date) => booleanHighlight predicate for range previews (used by DateRangePicker).
isRangeStart(date: Date) => booleanPredicate marking the range's start date for styling.
isRangeEnd(date: Date) => booleanPredicate marking the range's end date for styling.
onDayHover(date: Date | null) => voidCalled with the hovered day (or null on leave) to drive range previews.
valueDate | nullControlled selected date
defaultValueDateUncontrolled initial selected date
onValueChange(date: Date) => voidCalled when a day is selected
minDateEarliest selectable date
maxDateLatest selectable date
disabled(date: Date) => booleanPredicate to disable individual days
localestringBCP-47 locale; defaults to the current i18n locale
size'sm' | 'md' | 'lg'mdGrid cell size
labelsCalendarLabelsi18n label overrides for the nav buttons
monthnumberControlled view month (0-11)
yearnumberControlled view year
onViewChange(view: { month: number; year: number }) => voidCalled when the visible month changes
hideNavbooleanfalseHides the prev/next nav so a parent can drive navigation

Design tokens

When to use

When not to use

How to build an accessible Calendar in React →

Examples

Basic

Uncontrolled calendar

<Calendar defaultValue={new Date(Date.UTC(2024, 5, 15))} />

Constrained

Limits the selectable range

<Calendar min={new Date(Date.UTC(2024, 5, 1))} max={new Date(Date.UTC(2024, 5, 30))} />

Disabled weekends

Predicate disables individual days

<Calendar disabled={(d) => [0, 6].includes(d.getUTCDay())} />

Related components

← Back to docs