IconButton

Square button with a single icon. Shares variants with Button. Always set aria-label.

Variants

<>
  <IconButton variant="primary" aria-label="Add"><Plus /></IconButton>
  <IconButton variant="default" aria-label="Add"><Plus /></IconButton>
  <IconButton variant="outline" aria-label="Add"><Plus /></IconButton>
  <IconButton variant="ghost" aria-label="Add"><Plus /></IconButton>
  <IconButton variant="link" aria-label="Add"><Plus /></IconButton>
</>

Sizes

<>
  <IconButton size="sm" aria-label="Search"><Search /></IconButton>
  <IconButton size="md" aria-label="Search"><Search /></IconButton>
  <IconButton size="lg" aria-label="Search"><Search /></IconButton>
</>

Destructive tone

<>
  <IconButton variant="primary" tone="destructive" aria-label="Delete"><X /></IconButton>
  <IconButton variant="default" tone="destructive" aria-label="Delete"><X /></IconButton>
  <IconButton variant="outline" tone="destructive" aria-label="Delete"><X /></IconButton>
  <IconButton variant="ghost"   tone="destructive" aria-label="Delete"><X /></IconButton>
</>

Accent tone (lilac)

<>
  <IconButton variant="primary" tone="accent" aria-label="Add"><Plus /></IconButton>
  <IconButton variant="default" tone="accent" aria-label="Add"><Plus /></IconButton>
  <IconButton variant="outline" tone="accent" aria-label="Add"><Plus /></IconButton>
  <IconButton variant="ghost"   tone="accent" aria-label="Add"><Plus /></IconButton>
</>

States

<>
  <IconButton aria-label="Normal"><Plus /></IconButton>
  <IconButton disabled aria-label="Disabled"><Plus /></IconButton>
  <IconButton loading aria-label="Saving"><Plus /></IconButton>
</>

Props

PropTypeDefault
variant"primary" | "default" | "outline" | "ghost" | "link""primary"
tone"default" | "destructive" | "success" | "accent""default"
size"xs" | "sm" | "md""md"
loadingbooleanfalse
disabledbooleanfalse
asChildbooleanfalse
aria-labelstring (required)

Source

packages/react/src/components/icon-button.tsx · Figma node 2718:8839