Button
Button — составной компонент кнопки действия.
Button.Root задаёт цвет, размер и скругление, вешает волну нажатия и пробрасывает стандартные атрибуты button (onClick, disabled и т.д.) на DOM-элемент; задизейбленная кнопка приглушается автоматически.
Содержимое потребитель собирает сам: Button.Label — текст, иконки ставятся прямо в Button.Root рядом с ним, порядок задаёт разметка. Для кнопки без текста есть отдельный ButtonIcon — квадратный, с тултипом и aria-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
| Prop | Type | Default |
|---|---|---|
children*Содержимое кнопки: Button.Label и иконки | ReactNode | - |
adaptiveРастягивает кнопку на всю доступную ширину (100%) | boolean | false |
pressedПостоянно «нажатое» состояние — для обозначения выбранного элемента (например, активного раздела в меню) | boolean | false |
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
Текст кнопки; обрезается многоточием, если не влезает.
| Prop | Type | Default |
|---|---|---|
children*Текст кнопки — обрезается многоточием, если не влезает | ReactNode | - |