Skip to main content

Installation

npm install @kuzenbo/core

Usage

import { ThemeIcon } from "@kuzenbo/core";
import { CheckIcon } from "lucide-react";

function Example() {
  return (
    <ThemeIcon>
      <CheckIcon />
    </ThemeIcon>
  );
}

Props

variant
'default' | 'outline' | 'ghost' | 'secondary' | 'danger' | 'success' | 'warning' | 'info' | 'link'
default:"'default'"
The visual style variant.
size
'xs' | 'sm' | 'md' | 'lg' | 'xl'
default:"'md'"
The size of the icon container.
className
string
Additional CSS classes to apply.

Examples

Basic Usage

<ThemeIcon>
  <StarIcon />
</ThemeIcon>

Variants

<div className="flex gap-2">
  <ThemeIcon variant="default">
    <CheckIcon />
  </ThemeIcon>
  <ThemeIcon variant="secondary">
    <CheckIcon />
  </ThemeIcon>
  <ThemeIcon variant="success">
    <CheckIcon />
  </ThemeIcon>
  <ThemeIcon variant="danger">
    <XIcon />
  </ThemeIcon>
  <ThemeIcon variant="warning">
    <AlertIcon />
  </ThemeIcon>
  <ThemeIcon variant="info">
    <InfoIcon />
  </ThemeIcon>
</div>

Sizes

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

Outline Variant

<ThemeIcon variant="outline">
  <SettingsIcon />
</ThemeIcon>

Ghost Variant

<ThemeIcon variant="ghost">
  <BellIcon />
</ThemeIcon>

Status Icons

<div className="flex gap-2">
  <ThemeIcon variant="success" size="sm">
    <CheckCircleIcon />
  </ThemeIcon>
  <ThemeIcon variant="danger" size="sm">
    <XCircleIcon />
  </ThemeIcon>
  <ThemeIcon variant="warning" size="sm">
    <AlertTriangleIcon />
  </ThemeIcon>
  <ThemeIcon variant="info" size="sm">
    <InfoIcon />
  </ThemeIcon>
</div>

Feature List

function FeatureList() {
  const features = [
    { icon: <CheckIcon />, text: "Fast performance" },
    { icon: <CheckIcon />, text: "Easy to use" },
    { icon: <CheckIcon />, text: "Fully customizable" },
  ];

  return (
    <ul className="space-y-3">
      {features.map((feature, i) => (
        <li key={i} className="flex items-center gap-3">
          <ThemeIcon variant="success" size="sm">
            {feature.icon}
          </ThemeIcon>
          <span>{feature.text}</span>
        </li>
      ))}
    </ul>
  );
}

Build docs developers (and LLMs) love