IconButton
The IconButton component is a clickable element that displays only an icon, designed for actions where a text label is not necessary. It’s a square button with minimal styling, perfect for toolbars and compact interfaces.
<IconButton icon={Icon.Favorite} />
Features
The IconButton component is a versatile component that can be used in a variety of ways.
Variants
Icon buttons come in different variants to indicate different levels of emphasis:
<Row gap={400}> <IconButton variant="primary" icon={Icon.Favorite} /> <IconButton variant="secondary" icon={Icon.Favorite} /> <IconButton variant="tertiary" icon={Icon.Favorite} /> </Row>
Sizes
Adjust the size of icon buttons with the size prop:
<Row gap={400} align="center"> <IconButton size="small" icon={Icon.Close} /> <IconButton size="medium" icon={Icon.Close} /> <IconButton size="large" icon={Icon.Close} /> </Row>
Disabled State
You can disable an IconButton to prevent user interaction.
<IconButton icon={Icon.Favorite} disabled />
Anatomy
1.ButtonThe button element.
2.IconThe icon component.
Reference
Props
The IconButton component inherits all of the props from the HTMLButtonElement and adds the following props.
| Name | Type | Default | Description |
|---|---|---|---|
variant | "primary" | "secondary" | "tertiary" | "primary" | The visual style of the icon button. |
size | "small" | "medium" | "large" | "medium" | The size of the icon button. |
icon | Icon | - | The icon component to display. |
disabled | boolean | false | Whether the icon button is disabled. |
Events
The IconButton component supports the following events.
| Event | Description |
|---|---|
click | Fired when the icon button is clicked. |
Tokens
| Key | Default Value |
|---|---|
icon.icon.variants.size.small.height | 20px |
icon.icon.variants.size.small.width | 20px |
icon.icon.variants.size.small.padding | none |
icon.icon.variants.size.medium.height | var(--gpqiqcc) |
icon.icon.variants.size.medium.width | var(--gpqiqcc) |
icon.icon.variants.size.medium.padding | none |
icon.icon.variants.size.large.height | 28px |
icon.icon.variants.size.large.width | 28px |
icon.icon.variants.size.large.padding | none |
iconButton.button.variants.variant.primary.backgroundColor | var(--_1i4ikbk0) |
iconButton.button.variants.variant.primary.color | var(--_1i4ikbk1) |
iconButton.button.variants.variant.primary.borderWidth | var(--gpqiqbg) |
iconButton.button.variants.variant.primary.borderStyle | solid |
iconButton.button.variants.variant.primary.borderColor | transparent |
iconButton.button.variants.variant.primary.borderRadius | var(--gpqiqe6) |
iconButton.button.variants.variant.primary.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.primary.:hover.backgroundColor | color-mix(in srgb, var(--_1i4ikbk0) 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.primary.:hover.borderColor | transparent |
iconButton.button.variants.variant.primary.:hover.color | var(--_1i4ikbk1) |
iconButton.button.variants.variant.primary.:hover.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.primary.:focus-visible.backgroundColor | color-mix(in srgb, var(--_1i4ikbk0) 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.primary.:focus-visible.borderColor | transparent |
iconButton.button.variants.variant.primary.:focus-visible.color | var(--_1i4ikbk1) |
iconButton.button.variants.variant.primary.:focus-visible.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.primary.:focus-visible.outlineWidth | var(--_1i4ikbk2e) |
iconButton.button.variants.variant.primary.:focus-visible.outlineStyle | var(--_1i4ikbk2f) |
iconButton.button.variants.variant.primary.:focus-visible.outlineColor | var(--_1i4ikbk2g) |
iconButton.button.variants.variant.primary.:focus-visible.outlineOffset | var(--_1i4ikbk2h) |
iconButton.button.variants.variant.primary.:active.backgroundColor | color-mix(in srgb, var(--_1i4ikbk0) 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.primary.:active.borderColor | transparent |
iconButton.button.variants.variant.primary.:active.color | var(--_1i4ikbk1) |
iconButton.button.variants.variant.primary.:active.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.primary.:disabled.opacity | var(--_1i4ikbk2i) |
iconButton.button.variants.variant.secondary.backgroundColor | var(--_1i4ikbk11) |
iconButton.button.variants.variant.secondary.color | var(--_1i4ikbkv) |
iconButton.button.variants.variant.secondary.borderWidth | var(--gpqiqbg) |
iconButton.button.variants.variant.secondary.borderStyle | solid |
iconButton.button.variants.variant.secondary.borderRadius | var(--gpqiqe6) |
iconButton.button.variants.variant.secondary.borderColor | transparent |
iconButton.button.variants.variant.secondary.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.secondary.:hover.backgroundColor | color-mix(in srgb, var(--_1i4ikbk11) 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.secondary.:hover.color | var(--_1i4ikbkv) |
iconButton.button.variants.variant.secondary.:hover.borderColor | transparent |
iconButton.button.variants.variant.secondary.:hover.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.secondary.:focus-visible.backgroundColor | color-mix(in srgb, var(--_1i4ikbk11) 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.secondary.:focus-visible.color | var(--_1i4ikbkv) |
iconButton.button.variants.variant.secondary.:focus-visible.borderColor | transparent |
iconButton.button.variants.variant.secondary.:focus-visible.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.secondary.:focus-visible.outlineWidth | var(--_1i4ikbk2e) |
iconButton.button.variants.variant.secondary.:focus-visible.outlineStyle | var(--_1i4ikbk2f) |
iconButton.button.variants.variant.secondary.:focus-visible.outlineColor | var(--_1i4ikbk2g) |
iconButton.button.variants.variant.secondary.:focus-visible.outlineOffset | var(--_1i4ikbk2h) |
iconButton.button.variants.variant.secondary.:active.backgroundColor | color-mix(in srgb, var(--_1i4ikbk11) 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.secondary.:active.color | var(--_1i4ikbkv) |
iconButton.button.variants.variant.secondary.:active.borderColor | transparent |
iconButton.button.variants.variant.secondary.:active.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.secondary.:disabled.opacity | var(--_1i4ikbk2i) |
iconButton.button.variants.variant.tertiary.backgroundColor | transparent |
iconButton.button.variants.variant.tertiary.color | inherit |
iconButton.button.variants.variant.tertiary.borderWidth | var(--gpqiqbg) |
iconButton.button.variants.variant.tertiary.borderStyle | solid |
iconButton.button.variants.variant.tertiary.borderColor | transparent |
iconButton.button.variants.variant.tertiary.borderRadius | var(--gpqiqe6) |
iconButton.button.variants.variant.tertiary.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.tertiary.:hover.backgroundColor | color-mix(in srgb, transparent 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.tertiary.:hover.color | inherit |
iconButton.button.variants.variant.tertiary.:hover.borderColor | transparent |
iconButton.button.variants.variant.tertiary.:hover.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.tertiary.:focus-visible.backgroundColor | color-mix(in srgb, transparent 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.tertiary.:focus-visible.color | inherit |
iconButton.button.variants.variant.tertiary.:focus-visible.borderColor | transparent |
iconButton.button.variants.variant.tertiary.:focus-visible.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.tertiary.:focus-visible.outlineWidth | var(--_1i4ikbk2e) |
iconButton.button.variants.variant.tertiary.:focus-visible.outlineStyle | var(--_1i4ikbk2f) |
iconButton.button.variants.variant.tertiary.:focus-visible.outlineColor | var(--_1i4ikbk2g) |
iconButton.button.variants.variant.tertiary.:focus-visible.outlineOffset | var(--_1i4ikbk2h) |
iconButton.button.variants.variant.tertiary.:active.backgroundColor | color-mix(in srgb, transparent 95%, var(--_1i4ikbkv) 5%) |
iconButton.button.variants.variant.tertiary.:active.color | inherit |
iconButton.button.variants.variant.tertiary.:active.borderColor | transparent |
iconButton.button.variants.variant.tertiary.:active.boxShadow | var(--gpqiqe8) |
iconButton.button.variants.variant.tertiary.:disabled.opacity | var(--_1i4ikbk2i) |
iconButton.button.variants.size.small.width | var(--gpqiqcc) |
iconButton.button.variants.size.small.height | var(--gpqiqcc) |
iconButton.button.variants.size.medium.width | var(--gpqiqce) |
iconButton.button.variants.size.medium.height | var(--gpqiqce) |
iconButton.button.variants.size.large.width | var(--gpqiqcf) |
iconButton.button.variants.size.large.height | var(--gpqiqcf) |
iconButton.icon.base.color | inherit |
iconButton.icon.base.:hover.color | inherit |
iconButton.icon.base.:focus-visible.color | inherit |
iconButton.icon.base.:active.color | inherit |
iconButton.icon.base.:disabled.color | inherit |
Last updated on