A month grid for picking a day or a range. Month, weekday and day names come from Intl for the locale you pass, and the week starts on the locale's first day.
Days outside min/max or matched by isDateDisabled get aria-disabled and cannot be picked, but stay reachable with the keyboard so the grid reads naturally.
locale localises every name the grid shows or announces. weekStartsOn overrides the first column (0 = Sunday). Under dir="rtl" the grid and arrow keys follow the reading direction.
Follows the date grid in the WAI-ARIA Date Picker Dialog example. The grid is labelled by the month caption, which is a polite live region, so month changes are announced. Every day button has the full date as its name (in locale); today carries aria-current="date". The grid is one tab stop.
Key
Action
ArrowLeftArrowRight
Previous / next day (reversed in RTL). Crosses months.
ArrowUpArrowDown
Same day of the previous / next week.
HomeEnd
First / last day of the week.
PageUpPageDown
Same day of the previous / next month.
ShiftPageUp
Same day of the previous year (PageDown: next year).