Skip to content

Documentation

Icon Sets

Choose the right @kamod-ch/icons subpath export for each project.

@kamod-ch/icons groups every upstream family behind explicit subpath exports. This keeps imports readable, avoids name collisions, and makes upgrades easier to review.

Available imports#

@kamod-ch/icons
@kamod-ch/icons/shadcn
@kamod-ch/icons/lucide
@kamod-ch/icons/heroicons/outline
@kamod-ch/icons/heroicons/solid
@kamod-ch/icons/tabler/outline
@kamod-ch/icons/tabler/filled
@kamod-ch/icons/iconoir/regular
@kamod-ch/icons/iconoir/solid
@kamod-ch/icons/reicon/outline
@kamod-ch/icons/reicon/filled

The root import currently maps to the preferred shadcn set. For long-lived app code, prefer explicit subpaths.

Choosing a set#

Set Best for
shadcn App UI based on shadcn-style icon names
lucide Lightweight line icons and broad UI coverage
heroicons Friendly dashboard, marketing, and app icons
tabler Large product surfaces, admin tools, and dense UIs
iconoir Distinctive geometric product moments
reicon Broad outline/filled coverage from the Reicon open-source library

Why subpath exports?#

  • Clear origin for every imported icon.
  • No hidden name conflicts between sets.
  • Stable imports for long-lived apps and libraries.
  • Variant support for outline/solid or regular/solid families.
  • Smaller generated entry points that are easier to maintain.

Example#

import { CheckIcon } from "@kamod-ch/icons/shadcn";

export function SavedLabel() {
  return (
    <span class="inline-flex items-center gap-2 text-primary">
      <CheckIcon class="h-4 w-4" />
      Saved
    </span>
  );
}

Root import vs set import#

import { SearchIcon } from "@kamod-ch/icons";

Use the root import when you intentionally accept the package default. Use explicit subpaths when API stability matters:

import { SearchIcon } from "@kamod-ch/icons/shadcn";

Upstream versions#

Each set vendors SVGs from an upstream npm package or repository. Versions, icon counts, and sync dates are tracked in icon-sources.json and exposed through @kamod-ch/icons/meta.

Set Upstream Version Icons Last sync
@kamod-ch/icons/shadcn shadcn/ui lucide-static (lucide@1.23.0) 877 2026-07-03
@kamod-ch/icons/lucide Lucide lucide-static (lucide@1.23.0) 1,994 2026-07-03
@kamod-ch/icons/heroicons/… Heroicons heroicons (@heroicons/react@2.2.0) 648 2026-07-03
@kamod-ch/icons/tabler/… Tabler Icons @tabler/icons@3.44.0 6,146 2026-07-03
@kamod-ch/icons/iconoir/… Iconoir iconoir@7.11.1 1,671 2026-07-03
@kamod-ch/icons/reicon/… Reicon dqev/reicon@1.1.1 5,360 2026-07-08

Sync from upstream#

npm run icons:sync
npm run icons:generate
npm run build

Sync one set only:

npm run icons:sync -- --set lucide

The shadcn set is a Lucide subset with legacy icon names used by shadcn/ui. During the latest sync, 860 of 877 existing SVGs were refreshed from lucide-static; 17 legacy brand icons were not present upstream and were left unchanged.