Skip to content
v2.5.0
English
Русский
Documentation

ButtonBase

ButtonBase is the low-level action primitive behind Button and IconButton.

Root Props

PropTypeDefault
variantButtonBaseVariant'primary'
Defines the visual style of the button, affecting color schemes and emphasis.
appearanceButtonBaseAppearance'fill'
Adjusts the button's structural appearance (background, border, etc.).
disabledboolean—
Disables the button when true. Prevents user interaction and applies a visually disabled state. Not applied with asChild: the child element owns its disabled state, for example, aria-disabled or a link without href.
classNamestring—
Optional custom CSS class for the button element. Useful for design system overrides or scoped styles.
asChildboolean—
When true, renders the button as a child component using Slot (e.g., from Radix UI). Enables polymorphic rendering — useful for making the button act as a link or custom tag.
childrenReactNode—
Content of the button — text, icon, or any React node.
refRef<HTMLButtonElement>—
Ref forwarded to the native <button> element. Allows direct DOM access for focus management or measuring.

Also accepts all <button> attributes.

Child Parts

ButtonBase has no exported structural child parts.

When asChild is enabled, one slotted child element becomes the rendered semantic target.

Types

TypeDefinitionNotes
ButtonBasePropsroot prop typeExtends native button attributes.
ButtonBaseVariant'primary' | 'secondary' | stringVisual color family.
ButtonBaseAppearance'fill' | 'outline' | 'ghost' | 'transparent' | stringVisual surface style.

State Model

  • ButtonBase has no internal state.
  • Visual behavior comes from variant, appearance, and native states such as :hover, :active, :focus-visible, and disabled.
  • asChild changes the rendered element, not the styling contract.

Integration Notes

  • Set type='button' for non-submit actions inside forms.
  • Add an explicit accessible name for icon-only content.
  • Use Button or IconButton when product code needs higher-level layout and sizing APIs.