Icon Button
A square or circular button that contains only an icon. Always requires an accessible label prop which becomes the aria-label and title tooltip.
Variants
Ghost (default)
Use in toolbars, table rows, and any dense surface where a full-width label would be noisy.
Tailwind v4
vue
<IconButton label="Edit">
<svg .../>
</IconButton>Primary
Tailwind v4
vue
<IconButton variant="primary" label="Add">
<svg .../>
</IconButton>Secondary
Tailwind v4
vue
<IconButton variant="secondary" label="Download">
<svg .../>
</IconButton>Subtle
Tailwind v4
vue
<IconButton variant="subtle" label="Filter">
<svg .../>
</IconButton>All variants
Tailwind v4
vue
<IconButton variant="primary" label="Primary"><svg .../></IconButton>
<IconButton variant="secondary" label="Secondary"><svg .../></IconButton>
<IconButton variant="ghost" label="Ghost"><svg .../></IconButton>
<IconButton variant="subtle" label="Subtle"><svg .../></IconButton>Sizes
Tailwind v4
vue
<IconButton size="sm" label="Small"><svg .../></IconButton>
<IconButton size="md" label="Medium"><svg .../></IconButton>
<IconButton size="lg" label="Large"><svg .../></IconButton>Circle shape
Tailwind v4
vue
<IconButton shape="circle" label="Close"><svg .../></IconButton>
<IconButton shape="circle" variant="primary" label="Add"><svg .../></IconButton>States
Loading
Tailwind v4
vue
<IconButton :loading="saving" label="Save"><svg .../></IconButton>Disabled
Tailwind v4
vue
<IconButton disabled label="Not available"><svg .../></IconButton>Selected
Tailwind v4
vue
<IconButton :selected="isActive" label="Toggle view"><svg .../></IconButton>