Calix

Accessibility

Keyboard navigation, ARIA state, focus, and motion support.

Calix supplies the accessibility behavior for its components and hook prop getters. If you render your own markup, spread the getters onto the intended elements instead of copying their attributes manually.

Calendar semantics

The calendar grid uses role="grid", week rows use role="row", and day buttons use role="gridcell". A day exposes:

  • its localized full date through aria-label;
  • selection and disabled state through aria-selected and aria-disabled;
  • today's date through aria-current="date".

The visible month heading is announced through a polite live region when it changes.

Keyboard model

KeyAction
Arrow keysMove focus by a day or a week; left/right mirror in RTL.
Home / EndMove to the first / last day of the displayed week.
Page Up / Page DownMove focus one month backward / forward.
Shift + Page Up / Page DownMove focus one year backward / forward.
Enter / SpaceSelect the focused date.
EscapeDismiss the standard date-picker popover.

Only one day has tabIndex={0} at a time. The date picker popover manages focus and returns focus to the trigger after dismissal.

Motion and contrast

The supplied themes honor prefers-reduced-motion and provide a high-contrast variant under prefers-contrast: more. Do not convey a custom selected or disabled state with color alone—retain a visible non-color distinction as well.

Custom implementations

When using useCalendar, use both getGridProps() and getDayProps(date, view). The latter is what wires keyboard navigation, selection, focus registration, ARIA state, and state attributes.

Test your final UI with a keyboard and a screen reader. Your custom header, footer, trigger, and renderDay content remain your responsibility.

On this page