Перейти к содержимому
v2.5.0
English
Русский
Документация

ButtonBase

ButtonBase — низкоуровневый примитив действия, на котором построены Button и IconButton.

Пропсы корня

ПропТипПо умолчанию
variantButtonBaseVariant'primary'
Определяет визуальный стиль кнопки: цветовую схему и акцент.
appearanceButtonBaseAppearance'fill'
Настраивает структурный внешний вид кнопки (фон, рамка и т. д.).
disabledboolean—
Отключает кнопку при true. Запрещает взаимодействие и применяет визуальное отключённое состояние. Не применяется с asChild: отключённым состоянием владеет дочерний элемент, например через aria-disabled или ссылку без href.
classNamestring—
Необязательный собственный CSS-класс для элемента кнопки. Полезен для переопределений дизайн-системы или локальных стилей.
asChildboolean—
Если true, рендерит кнопку как дочерний компонент через Slot (например, из Radix UI). Включает полиморфный рендер — полезно, чтобы кнопка работала как ссылка или собственный тег.
childrenReactNode—
Содержимое кнопки — текст, иконка или любой React-узел.
refRef<HTMLButtonElement>—
Ref, передаваемый на нативный элемент <button>. Даёт прямой доступ к DOM для управления фокусом или измерений.

Также принимает все атрибуты <button>.

Дочерние части

У ButtonBase нет экспортируемых структурных дочерних частей.

Когда включён asChild, отрендеренной семантической целью становится один дочерний элемент в слоте.

Типы

ТипОпределениеПримечания
ButtonBasePropsтип пропсов корняРасширяет нативные атрибуты кнопки.
ButtonBaseVariant'primary' | 'secondary' | stringЦветовое семейство.
ButtonBaseAppearance'fill' | 'outline' | 'ghost' | 'transparent' | stringСтиль поверхности.

Модель состояния

  • У ButtonBase нет внутреннего состояния.
  • Визуальное поведение определяется variant, appearance и нативными состояниями: :hover, :active, :focus-visible и disabled.
  • asChild меняет рендерируемый элемент, но не контракт стилей.

Заметки по интеграции

  • Задавайте type='button' для действий внутри форм, которые не отправляют форму.
  • Добавляйте явное доступное имя для содержимого только из иконки.
  • Используйте Button или IconButton, когда продуктовому коду нужны более высокоуровневые API раскладки и размеров.