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

## Именование

Текст кнопки должен ясно описывать действие. Если содержимое — только иконка, используйте `IconButton` с явным `aria-label`.

## Работа с клавиатурой

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

- Выполняемое действие должно оставаться понятным из текста.
- При полиморфном использовании `asChild` должен сохраняться интерактивный элемент, с которым можно работать с клавиатуры.

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

- Фокус должен попадать на интерактивный корень.
- Видимое выделение фокуса должно сохраняться после кастомной стилизации.

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

- Доступное имя должно браться из видимого текста или поддерживаемых способов именования.
- Кнопка должна оставаться кнопкой, если только вы намеренно не меняете семантику через `asChild`.

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

- `type` по умолчанию не задан: как и нативный `<button>`, `Button` отправляет окружающую форму.
- Задайте `type='button'` для действий, которые не должны отправлять форму.
- Используйте `type='submit'` осознанно, когда кнопка участвует в отправке формы.

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

- Неоднозначный текст вроде «Продолжить» без окружающего контекста.
- Использование `asChild` с дочерним элементом, теряющим интерактивную семантику.
- Замена текста спиннером или иконкой без сохранения понятного смысла.
