Buttons
Buttons trigger an action, whether that is submitting a form, opening a dialog, or moving a task forward.
Buttons
Buttons trigger an action, whether that is submitting a form, opening a dialog, or moving a task forward.
Buttons trigger an action, whether that is submitting a form, opening a dialog, or moving a task forward.
Buttons trigger an action, whether that is submitting a form, opening a dialog, or moving a task forward.
Change the props and copy the result.
Reach for the standard Button for almost everything. The rest of the family exists for the jobs it does badly: repeated actions in dense rows, dismissing the surface it sits in, OAuth sign-in, and linking to an app marketplace. Each name links to its variants below.
| Component | Description | Import from |
|---|---|---|
| Button | The standard action button; also renders as a link when given href. | @/components/base/buttons/button |
| ButtonUtility | Compact icon-only button for toolbars and table rows. | @/components/base/buttons/button-utility |
| CloseButton | Dismiss affordance for modals, banners, and overlays. | @/components/base/buttons/close-button |
| SocialButton | OAuth sign-in buttons with provider logos. | @/components/base/buttons/social-button |
| GooglePlayButton | Google Play store badge, in solid black. | @/components/base/buttons/app-store-buttons |
| GooglePlayWhiteButton | Google Play store badge, solid black with a white keyline. | @/components/base/buttons/app-store-buttons |
| AppStoreButton | Apple App Store badge, in solid black. | @/components/base/buttons/app-store-buttons |
| GalaxyStoreButton | Samsung Galaxy Store badge, in solid black. | @/components/base/buttons/app-store-buttons |
| AppGalleryButton | Huawei AppGallery badge, in solid black. | @/components/base/buttons/app-store-buttons |
Marketplace links for landing pages and footers, never in-product actions. They render as anchors with fixed artwork at two heights, 40px and 44px. Use the solid set on light surfaces; the outline set inherits the current text color, so it follows the theme.
Reach for disabled when the action cannot run yet, and loading while it runs; the two are not interchangeable. Every state below is forced onto a real button: hover and focus re-apply the kit’s own state classes with the variant prefix stripped, so what renders is what the kit ships rather than a repainted approximation.
| rest | hover | focus-visible | disabled | loading | |
|---|---|---|---|---|---|
| primary | |||||
| secondary | |||||
| tertiary | |||||
| link-color | |||||
| link-gray | |||||
| primary-destructive | |||||
| secondary-destructive | |||||
| tertiary-destructive | |||||
| link-destructive |
Hover and focus states are live. Interact with any cell.
There is no pressed treatment
data-pressed while a button is held down, and the kit never styles it. Nothing changes visually between rest and pressed beyond the hover treatment already showing. That is worth knowing before you design a screen that depends on press feedback.
SocialButton
OAuth sign-in on auth screens, and nothing else. Brand follows each provider’s palette and belongs on white. Color keeps the colorful logo on a neutral button, for stacks where competing brand palettes would clash. Gray is monochrome, for interfaces that need the quietest treatment. Each theme shows the labeled form and its icon-only sibling in their own columns.
Social button groups