Go
One family. Line and filled. Current color. 12, 16, 24.
Provides interface marks on a 16px viewBox. 1px currentColor strokes with butt caps and miter joins.
Three ways in. They share one source, so the pixels match whichever you pick.
npm install @noorddev/vlak-react
// once, next to your app's root
import "@noorddev/vlak-react/css";
import { Icon, IconCatalog, iconNames } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/icons.
npx @noorddev/vlak-cli add icons
The StyleX leaf lands in components/vlak/, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/icons.json
The same registry item, installed by shadcn's CLI.
<link rel="stylesheet" href="node_modules/@noorddev/vlak/css/vlak.css" />
No React. Link vlak.css and use the markup and classes below.
import { Icon, IconCatalog, iconNames } from "@noorddev/vlak-react";
<Icon name="search" size={12} />
<Icon name="search" size={16} />
<Icon name="check" size={24} variant="filled" />
<Icon name="chevron-right" rotate={90} />
<button type="button" aria-label="Close"><Icon name="close" /></button>
iconNames; // every drawn mark
<IconCatalog />One mark. Size is the drawn square; the viewBox is always 16.
| Prop | Type | Default | Description |
|---|---|---|---|
namerequired | IconName | ||
size | IconSize | 16 | |
variant | IconVariant | "line" | Line hairline, or filled kinship of the same figure. |
rotate | IconRotate | Same mark, spun around 8,8. Accordion down is chevron-right at 90. |
Also accepts Omit<SVGAttributes<SVGSVGElement>, "children" | "rotate">.
Full family at 12, 16, and 24, line | filled, grouped. Optical center 8,8.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string |
Inline mark row. One family, current color.
Also accepts HTMLAttributes<HTMLDivElement>.
<div class="rs-icons"><svg class="rs-icon" viewBox="0 0 16 16" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter"><path d="M5.5 3 H13 V10.5" vector-effect="non-scaling-stroke"/><rect x="3" y="5.5" width="7.5" height="7.5" vector-effect="non-scaling-stroke"/></svg><svg class="rs-icon" viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter"><path d="M5.5 3 H13 V10.5" vector-effect="non-scaling-stroke"/><rect x="3" y="5.5" width="7.5" height="7.5" vector-effect="non-scaling-stroke"/></svg></div>