Button

Button — составной компонент кнопки действия.

Button.Root задаёт цвет, размер и скругление, вешает волну нажатия и пробрасывает стандартные атрибуты button (onClick, disabled и т.д.) на DOM-элемент; задизейбленная кнопка приглушается автоматически.

Содержимое потребитель собирает сам: Button.Label — текст, иконки ставятся прямо в Button.Root рядом с ним, порядок задаёт разметка. Для кнопки без текста есть отдельный ButtonIcon — квадратный, с тултипом и aria-label.

Анатомия

Button.Root
Label

Примеры

Вариант

Смысловой вариант — задаёт цвет: primary — главное действие, secondary — второстепенное, success / warning / danger — семантические действия, default — нейтральная.

Внешний вид

Внешний вид: solid — сплошная заливка, outline — обводка без заливки, dashed — та же обводка пунктиром, ghost — только текст, фон появляется при наведении.

Размер

Размер задаётся на Button.Root и управляет высотой, отступами и шрифтом кнопки; иконки масштабируются вместе с текстом. От компактного xs до крупного xl.

Скругление

Скругление углов — от прямых none до circle («таблетка»). Без пропа скругление задаёт size.

Иконки

Иконка — обычный ребёнок Button.Root: кнопка не даёт ей сжиматься и масштабирует вместе с текстом. Порядок задаёт разметка, так что иконка может стоять и слева, и справа от Button.Label.

Кастомный цвет

color — цвет кнопки вне стандартного набора вариантов (действие, окрашенное данными: проект, метка, событие). Принимает любое CSS-значение и перекрывает цвет из variant; для цвета, закреплённого за строкой, есть хелпер getStableColor. Цвет текста при сплошной заливке подбирается автоматически: на светлом фоне — чёрный, на тёмном — белый; у outline и dashed текст остаётся обычным текстом приложения, цвет несёт обводка.

Нажатое состояние

Постоянно «нажатое» состояние — для выбранного элемента, например активного раздела в меню.

На всю ширину

adaptive растягивает кнопку на всю доступную ширину родителя — для форм и узких панелей.

API

PropTypeDefault
children*

Содержимое кнопки: Button.Label и иконки

ReactNode-
adaptive

Растягивает кнопку на всю доступную ширину (100%)

booleanfalse
pressed

Постоянно «нажатое» состояние — для обозначения выбранного элемента (например, активного раздела в меню)

booleanfalse
ref

Реф на DOM-элемент кнопки

Ref<HTMLButtonElement>-
variant

Смысловой вариант — задаёт цвет

Variant"primary"
appearance

Внешний вид: сплошная заливка, обводка (сплошная или пунктирная) или приглушённая подложка

Appearance"solid"
size

Размер компонента

Size-
radius

Скругление углов: circle — «таблетка»

Radius-
color

Кастомный цвет — для случаев вне стандартного набора вариантов. Принимает любое CSS-значение, имеет приоритет над цветом из variant

string-

Наследуется от Pick<VisualProps, K>, ButtonHTMLAttributes<HTMLButtonElement>

Button.Label

Текст кнопки; обрезается многоточием, если не влезает.

PropTypeDefault
children*

Текст кнопки — обрезается многоточием, если не влезает

ReactNode-