--- system: carbon category: guidance topic: components/button content_type: guidance status: latest version_label: "Carbon v11" retrieved: 2026-05-12 source_url: https://carbondesignsystem.com/components/button/usage/ derived_from: - kb/design-systems/carbon/guidance/foundations/color-system - kb/design-systems/carbon/guidance/foundations/typography tags: [component, button, carbon, ibm, interaction, action] --- # Carbon Design System — Button ## Overview Buttons let users trigger actions. Use them for discrete, high-intent tasks — not for navigation. Carbon buttons support seven visual kinds plus an icon-only variant, covering the full range from primary CTAs to destructive danger actions. --- ## Kinds (variants) | Kind | Use | |---|---| | `primary` | Main call to action; one per page/group | | `secondary` | Alternative actions alongside primary | | `tertiary` | Low-emphasis actions; outline style | | `ghost` | Lowest emphasis; text-only appearance | | `danger` | Destructive primary actions (delete, remove) | | `danger--tertiary` | Destructive but moderate emphasis | | `danger--ghost` | Destructive lowest emphasis | **One primary button per context.** For secondary actions, use secondary, tertiary, or ghost. Never use multiple primary buttons in the same group. --- ## Sizes | Size | Height | |---|---| | `xs` | 24px | | `sm` | 32px | | `md` | 40px | | `lg` (default) | 48px | | `xl` | 64px | | `2xl` | 80px | Default size is `lg` (48px). Use `sm` for compact table toolbars and inline actions. --- ## Icon usage Import Carbon icons and pass via the `renderIcon` prop. Icons display trailing by default. ```jsx import { Add } from '@carbon/icons-react' ``` `iconDescription` is required when using `renderIcon` — it provides the accessible label for screen readers. ### Icon-only buttons ```jsx ``` Order: dismissive/secondary action on left, confirming/primary on right. --- ## Link buttons Pass `href` to render the button as an anchor element: ```jsx ``` For other element types, use `as`: ```jsx ``` --- ## Skeleton state ```jsx import { ButtonSkeleton } from '@carbon/react' ``` Use during loading states where a button will appear. --- ## Badge count Icon buttons support `badgeCount` for notification indicators: ```jsx