# DayPicker: Доступность

## Подписи

- Окружающая поверхность календаря должна сообщать, какой месяц и год сейчас просматривает пользователь.

## Поведение клавиатуры

| Клавиша | Действие |
| --- | --- |
| <kbd>←</kbd> / <kbd>→</kbd> | Переносит фокус на предыдущий или следующий день с переходом на соседнюю неделю, пропуская отключённые дни. В RTL стрелки зеркальны: ← ведёт к следующему дню. |
| <kbd>↑</kbd> / <kbd>↓</kbd> | Переносит фокус на тот же день недели предыдущей или следующей недели, останавливаясь на краю месяца. |
| <kbd>Home</kbd> / <kbd>End</kbd> | Переносит фокус на первый или последний день недели. |
| <kbd>Ctrl</kbd> + <kbd>Home</kbd> / <kbd>Ctrl</kbd> + <kbd>End</kbd> | Переносит фокус на первый или последний день месяца. |
| <kbd>Page Up</kbd> / <kbd>Page Down</kbd> | Переносит фокус на тот же день недели в первой или последней неделе месяца. Сам месяц не меняется: листание месяцев — задача Calendar. |
| <kbd>Enter</kbd> / <kbd>Space</kbd> | Выбирает день в фокусе. |

- Навигация с клавиатуры наследуется от `DataGridPicker` и семантики элементов сетки.

## Поведение фокуса

- Без `defaultActive` точкой табуляции становится сегодняшний день, если он в видимом месяце, иначе — первый выбранный день в нём, иначе — его первый день; если позже вы меняете `month`, передайте `active` / `onChangeActive`, чтобы точка табуляции оставалась в поле зрения
- Поведение фокуса и активной ячейки должно оставаться видимым для выбранных, исключённых и отключённых дат.

## Семантика для скринридеров

- Роли сетки и семантика состояний приходят от нижележащих примитивов выбора и сетки.
- Подписи дней недели и периода должны быть синхронизированы с отрендеренным месяцем.

## Семантика формы

- `DayPicker` — подсистема выбора, а не нативное поле формы.

## Риски доступности

- собственный рендер дня скрывает состояние фокуса или выбора
- прокручиваемое перелистывание месяцев с неясным объявлением периода
