Icons
412 icons drawn as bent neon tube, with every lucide-react name for them. Blockout gaps where one tube passes behind another.
Command
Interface, 36 of 66
- Stroke
- 1.75
- Runs
- –
- Bends
- –
- Radii
- –
- Blockouts
- –
<Command />Installation
npx shadcn@latest add https://neonkit.heyaadi.com/r/icons.jsonUsage
import { Check, ChevronDown, Search } from "@/components/ui/icons"
<Search className="size-4" />
<Check size={20} strokeWidth={2} />
<ChevronDown absoluteStrokeWidth />Examples
Anatomy of a tube
Three numbers hold the set together. Shuffle shows all three.
Power on
An icon draws in currentColor, so lighting one is three copies of it: a blurred halo, the colored tube and a 0.6 white core. These strike once when they scroll into view. With reduced motion they're simply on.
Sizes and stroke
Drawn on a 24px grid and tested from 12 to 48. absoluteStrokeWidth keeps the tube 1.75px whatever the size, which is what you want below 20.
In use
Buttons, inputs, toggle groups and command menus size their icons for you. Pass the icon as a child or a prop and leave size off.
API reference
Every icon
Each named export renders an svg and accepts every native svg attribute. Names match lucide-react.
| Prop | Type | Default |
|---|---|---|
size | numberWidth and height. | 24 |
strokeWidth | numberTube thickness in viewBox units. | 1.75 |
absoluteStrokeWidth | booleanKeeps the stroke at strokeWidth pixels whatever the size. | false |
color | stringStroke color. | "currentColor" |
title | stringAccessible name. Without it, or an aria-label, the icon is aria-hidden. | None |
createIcon
Builds an icon with the same props from your own path data, one string per tube run.
| Prop | Type | Default |
|---|---|---|
name | stringdisplayName, and the nk-icon-<kebab-name> class on the svg. | None |
node | string[]Path data on the 24-unit grid, or any svg children. | None |
Accessibility
- Every glyph is bent tube: as few continuous runs as possible, real bend radii, and a blockout gap wherever one tube passes behind another, the way a sign maker paints out a crossing.
- Names and props follow lucide-react, so switching is a find and replace on the import path. Common lucide aliases (Loader2, AlertTriangle, Trash2, Home) are exported too, and LucideIcon and LucideProps are type aliases.
- Named exports only and no side effects, so bundlers keep just the icons you import. The icons object is for pickers like the one above; importing it pulls in all of them.
- Decorative by default. Give an icon a title or aria-label when it is the only content of a control, or label the control instead.