--- layout: layouts/page.njk title: Button description: Displays a button or a component that looks like a button. toc: - label: Usage id: usage - label: Examples id: examples children: - label: Size id: example-size - label: Default id: example-default - label: Outline id: example-outline - label: Secondary id: example-secondary - label: Ghost id: example-ghost - label: Destructive id: example-destructive - label: Link id: example-link - label: Icon id: example-icon - label: With Icon id: example-with-icon - label: Rounded id: example-rounded - label: Spinner id: example-spinner - label: Button Group id: example-button-group - label: RTL id: example-rtl --- {% from "macros/code_preview.njk" import code_preview %} {% from "macros/code_block.njk" import code_block %} {% set code %}{% endset %} {{ code_preview("button", code) }}

Usage

You can use one of the btn classes to style a button element:

Button classes are combined into a single class name. Use btn-{variant}, btn-{size}, btn-{size}-{variant}, btn-icon-{variant}, or btn-{size}-icon-{variant}. Do not stack classes like btn-sm btn-outline; use btn-sm-outline instead.

Basecoat follows Tailwind v4's default button cursor behavior and does not force cursor: pointer.

{{ code_block(code) }} {% set code_composition %} {% endset %} {{ code_block(code_composition) }}

Examples

Size

Use size-specific classes to change the size of the button.

{% set code_size %}
{% endset %} {{ code_preview("button-size", code_size) }}

Default

{% set code %}{% endset %} {{ code_preview("button-default", code) }}

Outline

{% set code %}{% endset %} {{ code_preview("button-outline", code) }}

Secondary

{% set code %}{% endset %} {{ code_preview("button-secondary", code) }}

Ghost

{% set code %}{% endset %} {{ code_preview("button-ghost", code) }}

Destructive

{% set code %}{% endset %} {{ code_preview("button-destructive", code) }} {% set code %}{% endset %} {{ code_preview("button-link", code) }}

Icon

{% set code %}{% endset %} {{ code_preview("button-icon", code) }}

With Icon

Mark inline icons with data-icon="inline-start" or data-icon="inline-end" when the button should use icon-aware spacing.

{% set code %}{% endset %} {{ code_preview("button-with-icon", code) }}

Rounded

Use standard Tailwind classes to override the button radius.

{% set code %}{% endset %} {{ code_preview("button-rounded", code) }}

Spinner

{% set code_spinner %}
{% endset %} {{ code_preview("button-spinner", code_spinner) }}

Button Group

To group related buttons, use the Button Group component.

{% set code_button_group %}
{% endset %} {{ code_preview("button-group-demo", code_button_group) }}

RTL

Buttons support right-to-left layouts through logical spacing. Add dir="rtl" to the button or an ancestor. Directional icons should be flipped explicitly.

{% set code_rtl %}
{% endset %} {{ code_preview("button-rtl", code_rtl) }}