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

## Подписи

- Текстовые кнопки получают имя из видимого содержимого.
- Кнопкам только с иконкой нужен явный `aria-label`.
- При `asChild` итоговый дочерний элемент всё равно должен иметь корректное доступное имя.

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

| Клавиша | Действие |
| --- | --- |
| <kbd>Enter</kbd> / <kbd>Space</kbd> | Активирует кнопку в фокусе. Это нативный `<button>`; с `asChild` у дочернего элемента остаются свои клавиши, и ссылка реагирует только на Enter. |

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

- `ButtonBase` рендерит видимую обводку `:focus-visible` цветом `--focus-color`.
- `disabled` отключает взаимодействие.
- Если действие должно оставаться фокусируемым, но визуально заблокированным, выберите другую модель взаимодействия, а не навязывайте стили отключённого состояния.

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

- По умолчанию семантика — как у нативного `button`.
- С `asChild` семантику определяет элемент в слоте.
- Не превращайте навигационные ссылки в псевдокнопки, если взаимодействие в продукте на самом деле является навигацией.

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

- Содержимое только из иконки без подписи.
- `asChild` с неинтерактивным дочерним элементом.
- Забытое различие: у `button` и `a` разные ожидания от клавиатуры и скринридеров.
