Skip to Content
Referencefusion-uiComponentsControlsButton

Button

The Button component is a versatile clickable element that triggers actions in your application. It extends the Row component and supports various styling options through variants and sizes.


<Button>Iceland Gull</Button>

Features

The Button component is a versatile component that can be used in a variety of ways.

Variants

Buttons come in different variants to indicate different levels of emphasis:


<Row gap={400} wrap="wrap">
  <Button variant="primary">Red-cockaded Woodpecker</Button>
  <Button variant="secondary">Black-faced Grassquit</Button>
  <Button variant="tertiary">Ruffed Grouse</Button>
</Row>

Sizes

Adjust the size of buttons with the size prop:


<Row gap={400} wrap="wrap" align="center">
  <Button size="large">Thick-billed Murre</Button>
  <Button size="medium">Indigo Bunting</Button>
  <Button size="small">Alder Flycatcher</Button>
</Row>

Leading and Trailing Elements

Buttons can include elements before or after the label:


<Row gap={400} wrap="wrap">
  <Button leading={<Icon.Save />}>Brewer's Sparrow</Button>
  <Button trailing={<Icon.ArrowRight />}>Winter Wren</Button>
</Row>

Expanded Width

Buttons will follow standard flex behavior and so they will already stretch if the parent’s flex alignment tells them to. In other cases, you can use the expanded prop to make the button stretch to fill its container width.


<Button expanded>Sage Thrasher</Button>
Warning

The expanded prop is a temporary alias for size={{ width: "stretch" }}, because the size sprinkle prop is currently not available as the size prop is used for the variants shown above. The plan is to rename the variants (e.g. density="compact"), so that the size sprinkle prop becomes available again. At that point, the expanded prop will be deprecated.

Alignment

Although the Button defaults to centering its content, you can control the alignment of the Button component with the usual Row props.


<Column gap={400} size="fitContent">
  <Button trailing={<Icon.ChevronRight />} justify="between">
    Hermit Thrush
  </Button>
  <Button trailing={<Icon.ChevronRight />} justify="between">
    Gloves
  </Button>
</Column>

Disabled State

You can disable a Button to prevent user interaction.


<Button disabled>Northern Parula</Button>

Anatomy

1.RowThe button is a `Row` component.
2.LabelThe label is the text content of the button.
3.LeadingThe leading element is displayed before the label.
4.TrailingThe trailing element is displayed after the label.

Reference

Props

The Button component inherits all of the props from the Row component and the HTMLButtonElement and adds the following props.

NameTypeDefaultDescription
variant"primary" | "secondary" | "tertiary""primary"The visual style of the button.
size"small" | "medium" | "large""medium"The size of the button.
leadingReactNode-Element to display before the button content.
trailingReactNode-Element to display after the button content.
expandedbooleanfalseWhether the button expands to fill width.

Events

The Button component supports the following events.

EventDescription
clickFired when the button is clicked.

Tokens

KeyDefault Value
button.row.base.borderWidthvar(--gpqiqbg)
button.row.base.borderStylesolid
button.row.base.borderRadiusvar(--gpqiqe6)
button.row.variants.variant.primary.backgroundColorvar(--_1i4ikbk0)
button.row.variants.variant.primary.borderColortransparent
button.row.variants.variant.primary.colorvar(--_1i4ikbk1)
button.row.variants.variant.primary.boxShadowvar(--gpqiqe8)
button.row.variants.variant.primary.opacitynone
button.row.variants.variant.primary.:hover.backgroundColorcolor-mix(in srgb, var(--_1i4ikbk0) 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.primary.:hover.borderColortransparent
button.row.variants.variant.primary.:hover.colorvar(--_1i4ikbk1)
button.row.variants.variant.primary.:hover.boxShadowvar(--gpqiqe8)
button.row.variants.variant.primary.:hover.opacitynone
button.row.variants.variant.primary.:focus-visible.backgroundColorcolor-mix(in srgb, var(--_1i4ikbk0) 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.primary.:focus-visible.borderColortransparent
button.row.variants.variant.primary.:focus-visible.colorvar(--_1i4ikbk1)
button.row.variants.variant.primary.:focus-visible.boxShadowvar(--gpqiqe8)
button.row.variants.variant.primary.:focus-visible.outlineWidthvar(--_1i4ikbk2e)
button.row.variants.variant.primary.:focus-visible.outlineStylevar(--_1i4ikbk2f)
button.row.variants.variant.primary.:focus-visible.outlineColorvar(--_1i4ikbk2g)
button.row.variants.variant.primary.:focus-visible.outlineOffsetvar(--_1i4ikbk2h)
button.row.variants.variant.primary.:focus-visible.opacitynone
button.row.variants.variant.primary.:active.backgroundColorcolor-mix(in srgb, var(--_1i4ikbk0) 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.primary.:active.borderColortransparent
button.row.variants.variant.primary.:active.colorvar(--_1i4ikbk1)
button.row.variants.variant.primary.:active.boxShadowvar(--gpqiqe8)
button.row.variants.variant.primary.:active.opacitynone
button.row.variants.variant.primary.:disabled.backgroundColorvar(--_1i4ikbk0)
button.row.variants.variant.primary.:disabled.borderColortransparent
button.row.variants.variant.primary.:disabled.colorvar(--_1i4ikbk1)
button.row.variants.variant.primary.:disabled.boxShadowvar(--gpqiqe8)
button.row.variants.variant.primary.:disabled.opacityvar(--_1i4ikbk2i)
button.row.variants.variant.secondary.backgroundColorvar(--_1i4ikbk11)
button.row.variants.variant.secondary.borderColortransparent
button.row.variants.variant.secondary.colorvar(--_1i4ikbkv)
button.row.variants.variant.secondary.boxShadowvar(--gpqiqe8)
button.row.variants.variant.secondary.opacitynone
button.row.variants.variant.secondary.:hover.backgroundColorcolor-mix(in srgb, var(--_1i4ikbk11) 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.secondary.:hover.borderColortransparent
button.row.variants.variant.secondary.:hover.colorvar(--_1i4ikbkv)
button.row.variants.variant.secondary.:hover.boxShadowvar(--gpqiqe8)
button.row.variants.variant.secondary.:hover.opacitynone
button.row.variants.variant.secondary.:focus-visible.backgroundColorcolor-mix(in srgb, var(--_1i4ikbk11) 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.secondary.:focus-visible.borderColortransparent
button.row.variants.variant.secondary.:focus-visible.colorvar(--_1i4ikbkv)
button.row.variants.variant.secondary.:focus-visible.boxShadowvar(--gpqiqe8)
button.row.variants.variant.secondary.:focus-visible.outlineWidthvar(--_1i4ikbk2e)
button.row.variants.variant.secondary.:focus-visible.outlineStylevar(--_1i4ikbk2f)
button.row.variants.variant.secondary.:focus-visible.outlineColorvar(--_1i4ikbk2g)
button.row.variants.variant.secondary.:focus-visible.outlineOffsetvar(--_1i4ikbk2h)
button.row.variants.variant.secondary.:focus-visible.opacitynone
button.row.variants.variant.secondary.:active.backgroundColorcolor-mix(in srgb, var(--_1i4ikbk11) 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.secondary.:active.borderColortransparent
button.row.variants.variant.secondary.:active.colorvar(--_1i4ikbkv)
button.row.variants.variant.secondary.:active.boxShadowvar(--gpqiqe8)
button.row.variants.variant.secondary.:active.opacitynone
button.row.variants.variant.secondary.:disabled.backgroundColorvar(--_1i4ikbk11)
button.row.variants.variant.secondary.:disabled.borderColortransparent
button.row.variants.variant.secondary.:disabled.colorvar(--_1i4ikbkv)
button.row.variants.variant.secondary.:disabled.boxShadowvar(--gpqiqe8)
button.row.variants.variant.secondary.:disabled.opacityvar(--_1i4ikbk2i)
button.row.variants.variant.tertiary.backgroundColortransparent
button.row.variants.variant.tertiary.borderColortransparent
button.row.variants.variant.tertiary.colorinherit
button.row.variants.variant.tertiary.boxShadowvar(--gpqiqe8)
button.row.variants.variant.tertiary.opacitynone
button.row.variants.variant.tertiary.:hover.backgroundColorcolor-mix(in srgb, transparent 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.tertiary.:hover.borderColortransparent
button.row.variants.variant.tertiary.:hover.colorinherit
button.row.variants.variant.tertiary.:hover.boxShadowvar(--gpqiqe8)
button.row.variants.variant.tertiary.:hover.opacitynone
button.row.variants.variant.tertiary.:focus-visible.backgroundColorcolor-mix(in srgb, transparent 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.tertiary.:focus-visible.borderColortransparent
button.row.variants.variant.tertiary.:focus-visible.colorinherit
button.row.variants.variant.tertiary.:focus-visible.boxShadowvar(--gpqiqe8)
button.row.variants.variant.tertiary.:focus-visible.outlineWidthvar(--_1i4ikbk2e)
button.row.variants.variant.tertiary.:focus-visible.outlineStylevar(--_1i4ikbk2f)
button.row.variants.variant.tertiary.:focus-visible.outlineColorvar(--_1i4ikbk2g)
button.row.variants.variant.tertiary.:focus-visible.outlineOffsetvar(--_1i4ikbk2h)
button.row.variants.variant.tertiary.:focus-visible.opacitynone
button.row.variants.variant.tertiary.:active.backgroundColorcolor-mix(in srgb, transparent 95%, var(--_1i4ikbkv) 5%)
button.row.variants.variant.tertiary.:active.borderColortransparent
button.row.variants.variant.tertiary.:active.colorinherit
button.row.variants.variant.tertiary.:active.boxShadowvar(--gpqiqe8)
button.row.variants.variant.tertiary.:active.opacitynone
button.row.variants.variant.tertiary.:disabled.backgroundColortransparent
button.row.variants.variant.tertiary.:disabled.borderColortransparent
button.row.variants.variant.tertiary.:disabled.colorinherit
button.row.variants.variant.tertiary.:disabled.boxShadowvar(--gpqiqe8)
button.row.variants.variant.tertiary.:disabled.opacityvar(--_1i4ikbk2i)
button.row.variants.size.small.paddingTopvar(--gpqiqd3)
button.row.variants.size.small.paddingBottomvar(--gpqiqd3)
button.row.variants.size.small.paddingLeftvar(--gpqiqd9)
button.row.variants.size.small.paddingRightvar(--gpqiqd9)
button.row.variants.size.small.gapvar(--gpqiqd9)
button.row.variants.size.medium.paddingTopvar(--gpqiqd5)
button.row.variants.size.medium.paddingBottomvar(--gpqiqd5)
button.row.variants.size.medium.paddingLeftvar(--gpqiqdb)
button.row.variants.size.medium.paddingRightvar(--gpqiqdb)
button.row.variants.size.medium.gapvar(--gpqiqd9)
button.row.variants.size.large.paddingTopvar(--gpqiqd7)
button.row.variants.size.large.paddingBottomvar(--gpqiqd7)
button.row.variants.size.large.paddingLeftvar(--gpqiqdd)
button.row.variants.size.large.paddingRightvar(--gpqiqdd)
button.row.variants.size.large.gapvar(--gpqiqd9)
button.text.variants.size.small.fontvar(--_1i4ikbk28)
button.text.variants.size.medium.fontvar(--_1i4ikbk28)
button.text.variants.size.large.fontvar(--_1i4ikbk28)
Last updated on