Доступность

Семантику задаёт Bits UI или нативный HTML. Компоненты добавляют видимый фокус, доступные имена и достаточную область нажатия. Контраст и движение проверяются отдельно.

Статус stable. В каноне с 2026-07.

Фокус

  • Обязательно: Показывать кольцо через :focus-visible у каждого интерактивного элемента.
  • Запрещено: Убирать outline без равноценной контрастной замены.
  • Обязательно: Сохранять порядок фокуса равным порядку DOM; не менять tabindex ради раскладки.
  • Обязательно: Новая панель не должна полностью закрывать сфокусированный контрол. Если закрывает, перенести фокус в новый контекст.

Имена и роли

  • Обязательно: Связывать видимую подпись поля с контролом через for / id; placeholder не заменяет label.
  • Обязательно: Давать aria-label контролу только с иконкой.
  • Обязательно: Связывать ошибку с полем через aria-invalid и aria-describedby.
  • Запрещено: Писать вручную роли и состояния, которые уже поддерживает примитив Bits UI.

Область цели

  • Обязательно: Держать указательную цель не меньше 24×24 CSS px. Видимый знак может быть меньше внутри достаточной области или вдали от соседних целей.

Цвет и контраст

  • Запрещено: Передавать смысл только цветом; статус дополняется иконкой или словом.
  • Обязательно: Держать контраст обычного текста не ниже 4.5:1. Для значимых иконок, границ контролов и индикаторов состояния минимум составляет 3:1 относительно соседнего цвета.
  • Обязательно: Использовать семантические токены статуса и проверять объявленные пары каждого публичного скина в среде, где компонент реально показывается.

Движение

  • Обязательно: При prefers-reduced-motion отключать служебное движение. Смысл состояния должен остаться понятным.

Клавиатурная карта

Общий минимум поверх покомпонентных карт; специальное поведение задаёт примитив.

КлавишиДействие
Tab / Shift+TabПереход между интерактивными элементами по порядку DOM
EnterАктивирует кнопку, ссылку или отправку формы
SpaceАктивирует кнопку, переключает checkbox и switch
EscЗакрывает раскрытое меню, диалог или popover
↑ ↓Движение по списку опций или разделам accordion
Home / EndПереход к первому или последнему пункту списка