Skip to main content

Button

Use the button component for the main actions on a page or form.

Ready to useReviewed for accessibility
import {Button} from '@primer/react-brand'

Examples

Default

This is the default variant for the Button component. It corresponds to the secondary variant appearance.

<Button>Default</Button>

Primary

The primary variant of Button indicates that the action is of high priority, and should be used sparingly.

<Button variant="primary">Primary</Button>

Accent

The accent variant is equally high priority, and should be used only in Hero or CTABanner components.

<Button variant="accent">Accent</Button>

Subtle

The subtle variant of Button indicates that the action is a low priority one.

<Button variant="subtle">Subtle</Button>

Sizes

<Stack direction="vertical" alignItems="flex-start">
  <Button size="small">Register now</Button>
  <Button size="medium">Register now</Button>
  <Button size="large">Register now</Button>
</Stack>

Block

<Button block>Full-width button</Button>

Removing the arrow

The animated arrow indicator can be removed using the hasArrow prop.

<Button hasArrow={false}>No arrow</Button>

Using an icon

You can place an icon inside the Button in either the leading or the trailing position to enhance the visual context. It is recommended to use an Octicon here.

<Stack direction="vertical" alignItems="flex-start">
  <Button leadingVisual={<SearchIcon />}>Search</Button>
  <Button trailingVisual={<ChevronDownIcon />}>Select</Button>
  <Button leadingVisual={<FilterIcon />} trailingVisual={<ChevronDownIcon />}>
    Filter
  </Button>
</Stack>

Polymorphism

The Button component can render as a button or a HTML element. By default, it will render as a button.

<Button as="a" href="https://github.com">
  Register now
</Button>

Component props

Button

NameTypeDefaultDescription
leadingVisualReactElementundefinedThe leading visual appears before the button content
trailingVisualReactElementundefinedThe trailing visual appears after the button content
variants'primary', 'secondary', 'subtle''secondary'The styling variations available in Button
size'small', 'medium', 'large''medium'The size variations available in Button
blockbooleanfalseThe full-width option available in Button
hasArrowbooleantrueA flag to show/hide the arrow icon