Form
Calendar
An inline month grid for picking one date: month caption with Today and arrows, 32px day cells, accent selection and a red today marker.
October 2026
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Wed Oct 14 2026
Usage
- Use when the calendar is the main content (scheduling, booking panels).
- Use DatePicker for a date field in a form; it opens this calendar in a popover.
- Use DateRangePicker for start/end periods.
Installation
Install the package (React 19):
terminal
terminal
terminal
Import the styles once, in your app entry or root layout:
/src/main.tsx
Use it anywhere inside your app's <Theme> (see Installation):
/src/CalendarExample.tsx
Examples
Min and max
Days outside the range are struck through and can’t be picked; keyboard focus stays inside.
October 2026
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Week starts on Monday, other locale
Oktober 2026
| Mo | Di | Mi | Do | Fr | Sa | So |
|---|---|---|---|---|---|---|
Dark theme
October 2026
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
API Reference
Calendar
A <div role="group"> with a caption and a <table role="grid">. The ref goes to the root.
| Prop | Type | Default |
|---|---|---|
value / defaultValue | Date | null | |
onValueChange | (value: Date | null) => void | |
min / max | Date | |
defaultMonth | Date | value ?? today |
onMonthChange | (month: Date) => void | |
today | Date | new Date() |
locale | string | "en-US" |
weekStartsOn | 01 | 0 |
showTodayButton | boolean | true |
showOutsideDays | boolean | true |
autoFocus | boolean | false |
id | string | |
className | string | |
style | CSSProperties | |
aria-label | string | "Calendar" |
aria-describedby | string |
calendarVariants
Slots: root, months, month, caption, title, navGroup, today, nav, grid, head, cell, day, todayDot.
| Prop | Type | Default |
|---|
Accessibility
- WAI-ARIA date grid:
role="grid"labelled by the month caption, weekdaycolumnheaders with full names (abbr), andgridcells witharia-selected. - One day is tabbable (roving tabindex).
←→move a day,↑↓a week,Home/Endto the start / end of the week,Page Up/Page Downa month (Shift: a year).Enter/Spaceselect. - Each day button is named with the full date ("Wednesday, October 21, 2026"); today has
aria-current="date"; out-of-range days arearia-disabled. - The month caption is a polite live region, so month changes are announced.
© 2026 Motion. Internal documentation.