Root Props
| Prop | Type | Default |
|---|---|---|
asChild | boolean | — |
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. | ||
size | ButtonSize | 'md' |
| Defines the size of the button. Affects padding, font size, and overall dimensions. | ||
fullWidth | boolean | — |
| When true, the button expands to fill the width with its container. | ||
variant | ButtonBaseVariant | 'primary' |
| Defines the visual style of the button, affecting color schemes and emphasis. | ||
appearance | ButtonBaseAppearance | 'fill' |
| Adjusts the button's structural appearance (background, border, etc.). | ||
disabled | boolean | — |
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. | ||
className | string | — |
| Optional custom CSS class for the button element. Useful for design system overrides or scoped styles. | ||
children | ReactNode | — |
| Content of the button — text, icon, or any React node. | ||
ref | Ref<HTMLButtonElement> | — |
Ref forwarded to the native <button> element. Allows direct DOM access for focus management or measuring. | ||
Also accepts all <button> attributes.
Child Parts
Button does not expose public child parts.
Types
ButtonPropsButtonSize
State Model
Buttonis mostly stateless from the component API perspective.- Disabled, loading, and visual state are usually driven by the consumer.
asChildchanges rendering semantics while preserving VegaUI button styling.disabledis not applied withasChild, because the child element owns its semantics. A disabled link is an<a>withouthref; addaria-disabled="true"to get the disabled styling and announcement.