# Icon Button A button component that renders a single icon without text. Built on top of `Button`, it inherits all size and variant options while enforcing an icon-only layout. ```tsx demo import { IconButton } from "@tenstorrent/vesper/icon-button"; import { Gear } from "@tenstorrent/vesper/icons"; export default function IconButtonDemo() { return } aria-label="Settings" />; } ``` > [!IMPORTANT] > > Always give an `IconButton` an accessible name by giving it an `aria-label`. Without one, assistive technology announces the button with no indication of what it is for. ## Options | Prop | Type | Description | Default | | ---------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------- | | `icon` | `ReactNode` | The icon element to be rendered inside the button. | — | | `size` | `"xs" \| "sm" \| "md" \| "lg"` | The size of the button. Affects padding and icon size. | `"md"` | | `variant` | `"contrast" \| "danger" \| "ghost" \| "primary" \| "subtle" \| "tertiary" \| "warning"` | The visual style variant of the button. | `"primary"` | | `disabled` | `boolean` | When `true`, renders the button in a disabled state and prevents interaction. | `false` | | `as` | `ElementType` | The root element type for polymorphic rendering. | `"button"` | All other props are forwarded to the underlying `