Button

Variants, grouped usage, states, and token-driven rendering.

Open Button Playground Open Button in Figma

Variants

Grouped Actions (Button Group Wrapper)

Open Button Group Playground

Use ButtonGroup to keep related actions visually and semantically grouped.

<div
  class="button-group"
  role="group"
  aria-label="Travel dates"
  data-orientation="horizontal"
  data-attached="false"
  data-justify="start"
>
  <button class="button outline" type="button">Day 1</button>
  <button class="button outline" type="button">Day 2</button>
  <button class="button outline" type="button">Day 3</button>
</div>
  • orientation: "horizontal" (default) or "vertical"
  • attached: false (default) removes shared borders/gaps when true
  • justify: "start" (default) or "stretch"

Usage

<button class="button" type="button">Solid</button>
<button class="button outline" type="button">Outline</button>
<button class="button ghost" type="button">Ghost</button>
<button class="button" type="button" disabled>Disabled</button>
{% import "macros/ui.njk" as ui %}

{{ ui.button("Solid") }}
{{ ui.button("Outline", "outline") }}
{{ ui.button("Ghost", "ghost") }}
{{ ui.button("Disabled", "", true) }}
import { Button } from "ui-foundations/react/button";

<Button>Solid</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button startIcon="search">Search</Button>
<Button disabled>Disabled</Button>

Used tokens

Token
--button-border-color-disabled
--button-border-radius
--button-container-background-disabled
--button-ghost-border-color-active
--button-ghost-border-color-default
--button-ghost-border-color-focus
--button-ghost-border-color-hover
--button-ghost-border-size
--button-ghost-container-background-default
--button-ghost-container-background-focus
--button-ghost-text-color-active
--button-ghost-text-color-default
--button-group-border-radius
--button-group-gap
--button-height-min
--button-outline-border-color-active
--button-outline-border-color-default
--button-outline-border-color-focus
--button-outline-border-color-hover
--button-outline-border-size
--button-outline-container-background-default
--button-outline-container-background-focus
--button-outline-text-color-active
--button-outline-text-color-default
--button-overlay-active
--button-overlay-hover
--button-padding-block
--button-padding-inline
--button-solid-border-color-active
--button-solid-border-color-default
--button-solid-border-color-focus
--button-solid-border-color-hover
--button-solid-border-size
--button-solid-container-background-default
--button-solid-container-background-focus
--button-solid-text-color-active
--button-solid-text-color-default
--button-solid-text-color-hover
--button-text-color-disabled
--size-spacing-100