<!-- Protocore Design System — ActionIcon -->
# ActionIcon

- **Category:** Inputs (`inputs`)
- **Slug:** `inputs/action-icon`
- **Status:** stable
- **Platforms:** web
- **Import:** `import { ActionIcon } from "@protocore/pds";`
- **Docs:** https://pds.protocore.io/components/inputs/action-icon

> Alias of IconButton — a square, icon-only control for toolbar and row actions.

## An alias of IconButton

**ActionIcon** is the Mantine-familiar name for this library's **IconButton** — the same component under a second name for discoverability. Props are identical (`variant`, `size`, `loading`, `asChild`, …). See the [IconButton](/inputs/icon-button) page for the full API and accessibility notes.

## Examples

### Basics

Pass a single icon as the child and always supply an `aria-label` — the control carries no visible text.

```tsx
import { ActionIcon, HStack } from "@protocore/pds";
import { RefreshCw, Copy, Trash2 } from "lucide-react";

export default function ActionIconBasics() {
  return (
    <HStack gap={2}>
      <ActionIcon aria-label="Refresh metrics">
        <RefreshCw size={16} />
      </ActionIcon>
      <ActionIcon variant="secondary" aria-label="Copy endpoint">
        <Copy size={16} />
      </ActionIcon>
      <ActionIcon variant="danger" aria-label="Delete key">
        <Trash2 size={16} />
      </ActionIcon>
    </HStack>
  );
}
```

## Accessibility

**Notes**

- Identical to IconButton: an `aria-label` is required because there is no visible text label.

## Related

`icon-button`, `button`, `toolbar`

---

© Protocore. All rights reserved. Use of the Protocore Design System requires prior written authorization from Protocore (contact@protocore.io). These machine-readable materials must not be ingested into ML-training datasets or derivative design systems. See https://pds.protocore.io/legal/
