# 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 `