Getting started

InstallUsageGuidelinesContributeRelease

Foundation

Navigation

Forms

ButtonButton GroupCheckboxCheckbox GroupClipboard ButtonComboboxEditable DescriptionEditable HeadingFile InputForm FieldIcon ButtonMulti SelectNumber InputRadioSearch InputSelectSliderSlug InputSwitchTag InputTextareaText Input

Button

Buttons allow users to perform an action.

#

#

Use this variant for call-to-action buttons on the page that the user is expected to perform next.

There should be no more than three primary buttons on the page at once. Avoid placing two primary buttons near each other.

#

Use this variant for all buttons that don't qualify for a primary, danger or warning variants.

This is a default variant, so you don't have to explicitly specify it via variant prop.

#

Use this variant to open a dialog, where user confirms their intent to perform a dangerous or destructive action.

Don't use this variant if something is deleted immediately after clicking the button. If that's the case, use danger variant.

#

Use this variant for buttons that trigger dangerous or destructive actions. For example, deletion of some resource.

This variant should be used on the last step before deletion.

#

Buttons can indicate that an action is being processed with a loading state.

Use loading state only for short actions that take less than 5 seconds. For longer actions, use a progress bar.

#

Disabled button indicates that an action exists, but is not available currently.

When button is disabled, use a tooltip to explain why user is not allowed to take this action or what do they have to do to enable it.

#

When a button is justified, it takes up the entire available container width. By default, a button size depends on length of a label inside a button.

#

When a button is large, it has a greater height of 48px. These are commonly used in onboarding flows.

#

When a button is large, it has a greater height of 40px. These are commonly used in wizard flows.

#

When a button is small, it has a smaller height of 24px. These are commonly used in inline forms.

#

Icons can be used in buttons when additional clarity is required and the icon is highly relevant to the action. Icons should not be used for decoration.

If icon indicates a direction, use directionIcon prop, which places the icon on the right side of a button.

#

Button can also display an image instead of an icon.

#

Use a ButtonGroup component when you need to show two or more buttons nearby.

#

Primary

Secondary

Warning

Danger

Initial

Disabled

Loading

#

#

  • When performing an action within the system.

#

  • If you're navigating to an external URL that's not part of the current app, use a link instead.
  • If you're navigating to a different page within the app, use a link button instead.

#

#

  • Only use icons from Heroicons.
  • Don't override icon size.
  • Prefer outline icons over solid ones.

#

  • Use a justified button only inside a container with defined bounds, like a card or a dialog.
  • Use a lg button only in full page flows like wizards.
  • Use a sm button in inline forms.

#

#

NameDefaultDescription
isLoading

boolean

Toggles the loading state.

isDisabled

boolean

Toggles the disabled state.

isJustified

boolean

Take up an entire available container width.

children

ReactNode

Button text.

variant

"primary" | "secondary" | "danger" | "warning"

Button variant, which determines the purpose the button is used for and its appearance.

size

"sm" | "md" | "lg" | "xl"

Determines the height of the button.

icon

ComponentType<SVGAttributes<SVGElement>>

Primary icon that's displayed on the left. Only `icon` or `imageUrl` can be set at the same time.

directionIcon

ComponentType<SVGAttributes<SVGElement>>

Icon for indicating the direction, displayed on the right side of the button. Used for icons like "arrow right" or "caret down".

imageUrl

string

URL to an image to display on the left. Only `icon` or `imageUrl` can be set at the same time.

On this page

  • Usage
  • Primary
  • Secondary
  • Warning
  • Danger
  • Loading
  • Disabled
  • Justified
  • Extra large
  • Large
  • Small
  • Icons
  • Images
  • Button groups
  • Combinations
  • Guidelines
  • When to use
  • When not to use
  • Content
  • Icons
  • Sizes
  • Props
  • Button