Skip to main content

Installation

npm install @kuzenbo/core

Usage

import { ActionIcon } from "@kuzenbo/core";
import { PlusIcon } from "lucide-react";

function Example() {
  return (
    <ActionIcon aria-label="Add item">
      <PlusIcon />
    </ActionIcon>
  );
}

Props

variant
'default' | 'outline' | 'ghost' | 'link' | 'danger' | 'secondary' | 'success' | 'warning' | 'info'
default:"'default'"
The visual style variant.
size
'xs' | 'sm' | 'md' | 'lg' | 'xl'
default:"'md'"
The size of the action icon.
isLoading
boolean
Whether to show a loading spinner.
disabled
boolean
Whether the button is disabled.
className
string
Additional CSS classes to apply.

Examples

Basic Usage

<ActionIcon aria-label="Settings">
  <SettingsIcon />
</ActionIcon>

Variants

<div className="flex gap-2">
  <ActionIcon variant="default">
    <PlusIcon />
  </ActionIcon>
  <ActionIcon variant="outline">
    <PlusIcon />
  </ActionIcon>
  <ActionIcon variant="ghost">
    <PlusIcon />
  </ActionIcon>
  <ActionIcon variant="danger">
    <TrashIcon />
  </ActionIcon>
</div>

Sizes

<div className="flex items-center gap-2">
  <ActionIcon size="xs">
    <PlusIcon />
  </ActionIcon>
  <ActionIcon size="sm">
    <PlusIcon />
  </ActionIcon>
  <ActionIcon size="md">
    <PlusIcon />
  </ActionIcon>
  <ActionIcon size="lg">
    <PlusIcon />
  </ActionIcon>
  <ActionIcon size="xl">
    <PlusIcon />
  </ActionIcon>
</div>

Loading State

const [loading, setLoading] = useState(false);

<ActionIcon isLoading={loading} onClick={() => setLoading(true)}>
  <SaveIcon />
</ActionIcon>

Disabled State

<ActionIcon disabled>
  <DownloadIcon />
</ActionIcon>
<ActionIcon asChild>
  <a href="/settings" aria-label="Settings">
    <SettingsIcon />
  </a>
</ActionIcon>

Icon Button Group

import { ButtonGroup } from "@kuzenbo/core";

<ButtonGroup>
  <ActionIcon aria-label="Align left">
    <AlignLeftIcon />
  </ActionIcon>
  <ActionIcon aria-label="Align center">
    <AlignCenterIcon />
  </ActionIcon>
  <ActionIcon aria-label="Align right">
    <AlignRightIcon />
  </ActionIcon>
</ButtonGroup>

With Tooltip

import { Tooltip } from "@kuzenbo/core";

<Tooltip>
  <Tooltip.Trigger asChild>
    <ActionIcon aria-label="Delete">
      <TrashIcon />
    </ActionIcon>
  </Tooltip.Trigger>
  <Tooltip.Content>Delete item</Tooltip.Content>
</Tooltip>

Build docs developers (and LLMs) love