UNPKG

@primer/react-brand

Version:

Primer Brand is a GitHub's design system for creating React-based marketing websites and digital experiences.

82 lines (62 loc) 2.68 kB
--- title: Button group description: Use the button group component to group related buttons and action menus together. keywords: ['buttons', 'control', 'action', 'group', 'paired'] ready: true source: https://github.com/primer/brand/blob/main/packages/react/src/ButtonGroup/ButtonGroup.tsx storybook: '/brand/storybook/?path=/story/components-buttongroup--playground' --- ```js import {ActionMenu, Button, ButtonGroup} from '@primer/react-brand' ``` ## Examples ### Default This is the default variant for the ButtonGroup component. The first item in the group uses the primary button variant and the second uses the secondary button variant. ```jsx <ButtonGroup> <Button>This is one button</Button> <Button>This is another button</Button> </ButtonGroup> ``` ### Action menus `ButtonGroup` supports up to two `Button` or `ActionMenu` children and applies a default `variant` to each one. Explicit `variant` overrides to `Button` or `ActionMenu.Button` will override the default values. `buttonSize` applies to both child types. Because `ActionMenu` supports only `small` and `medium`, it remains `medium` when `buttonSize="large"`. Set `size` on `ActionMenu` to override the inherited size. ```jsx <ButtonGroup> <Button>Primary action</Button> <ActionMenu> <ActionMenu.Button>More actions</ActionMenu.Button> <ActionMenu.Overlay aria-label="More actions"> <ActionMenu.Item value="contact-sales">Contact sales</ActionMenu.Item> <ActionMenu.Item value="view-pricing">View pricing</ActionMenu.Item> </ActionMenu.Overlay> </ActionMenu> </ButtonGroup> ``` ### Sizes The ButtonGroup component supports `small`, `medium`, and `large` buttons. The default size is `medium`. ActionMenu children support `small` and `medium`. ```jsx <ButtonGroup buttonSize="large"> <Button>This is one large button</Button> <Button>This is another large button</Button> </ButtonGroup> ``` ### Polymorphism The `Button` component can render as a `button` or `a` HTML element. By default, it will render as a `button`. ```jsx <ButtonGroup> <Button as="a" href="#"> This is one link </Button> <Button as="a" href="#"> This is another link </Button> </ButtonGroup> ``` ## Component props ### ButtonGroup | Name | Type | Default | Description | | :----------- | :------------------------------- | :--------: | :-------------------------------------- | | `buttonSize` | `'small' \| 'medium' \| 'large'` | `'medium'` | The size variations available in Button | | `buttonsAs` | `'button' \| 'a'` | `'button'` | The HTML variations available in Button |