# Reicon — Complete Reference for AI Agents
## 1. Identity
**Reicon** (https://reicon.dev) is a free, open-source SVG icon library featuring:
- **2,700+ Handcrafted Icons**: Pixel-perfect icons on a 24×24 grid in Outline and Filled weights.
- **Website**: https://reicon.dev
- **GitHub**: https://github.com/dqev/reicon
- **License**: MIT — free for personal and commercial use, no attribution required
- **Creator**: Dev Chauhan (https://devchauhan.in)
- **Contact**: hello@reicon.dev
> ⚠️ **Disambiguation**: Reicon (reicon.dev) is an SVG icon library. It is **not** the Windows desktop icon restore tool "ReIcon" by Sordum.org — they are completely unrelated.
---
## 2. How Icon Names Work (Must Know)
All icon names in the data layer are **kebab-case**. Framework components use **PascalCase**.
```
arrow-up-right → ArrowUpRight
shield-check → ShieldCheck
empty-wallet-add2 → EmptyWalletAdd2
text-align-center → TextAlignCenter
arrow-down-circle → ArrowDownCircle
```
**Rule**: Split on `-`, capitalize each segment, join. That's the component name.
**Weight values** (always PascalCase in framework props, lowercase in CDN):
- `"Outline"` — outlined style (1.5px stroke width)
- `"Filled"` — solid filled style
---
## 3. Package Versions
| Package | npm | Version | Peer Dependencies |
|---------|-----|---------|-------------------|
| Vanilla JS | `reicon` | 1.1.1 | none |
| React | `reicon-react` | 1.1.3 | `react >= 16.8.0` |
| Vue 3 | `reicon-vue` | 1.1.1 | `vue ^3.0.0` |
| Svelte | `reicon-svelte` | 1.0.0 | `svelte >= 3.0.0` |
| React Native | `reicon-react-native` | 1.0.0 | `react >= 16.8.0`, `react-native >= 0.64.0`, `react-native-svg >= 12.0.0` |
| MCP Server | `reicon-mcp` | 1.1.0 | Node >= 18 |
| VS Code | `DevChauhan.reicon` | 1.0.3 | VS Code ^1.80.0 |
| Figma | Community Plugin | 1.0.0 | Figma |
---
## 4. Full Framework References
### 4.1 React (`reicon-react`)
**Install**: `npm install reicon-react`
**Named import** (tree-shakeable):
```jsx
import { Home, Search, Bell, ShieldCheck } from 'reicon-react';
```
**Direct import** (maximum tree-shaking):
```jsx
import Home from 'reicon-react/icons/Home';
import Bell from 'reicon-react/icons/Bell';
```
**Props:**
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `size` | `number \| string` | `24` | Width & height in pixels |
| `color` | `string` | `currentColor` | Primary stroke/fill color (any valid CSS color) |
| `secondaryColor` | `string` | same as `color` | Secondary accent color |
| `weight` | `"Outline" \| "Filled"` | `"Outline"` | Icon style variant |
| `strokeWidth` | `number \| string` | — | Override default stroke width |
| `className` | `string` | — | Additional CSS classes |
Forwards any SVG/HTML attribute (`style`, `onClick`, `aria-*`, `id`, etc.).
**Implementation**: Uses `forwardRef` + `dangerouslySetInnerHTML` for SVG path injection. Marked `'use client'` for RSC compatibility.
**TypeScript**:
```typescript
type IconWeight = 'Filled' | 'Outline';
interface IconProps {
size?: number | string;
color?: string;
secondaryColor?: string;
weight?: IconWeight;
strokeWidth?: number | string;
className?: string;
[key: string]: any;
}
```
---
### 4.2 Vue 3 / Nuxt 3 (`reicon-vue`)
**Install**: `npm install reicon-vue`
**Named import** (tree-shakeable):
```vue
```
**Direct import**:
```vue
```
**Dynamic icons**:
```vue
```
**Props:**
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `size` | `number \| string` | `24` | Icon size in pixels |
| `color` | `string` | `currentColor` | Any valid CSS color |
| `weight` | `"Outline" \| "Filled"` | `"Outline"` | Weight variant |
| `strokeWidth` | `number \| string` | — | Override stroke width |
| `class` | `string \| array \| object` | — | SVG CSS class(es) |
| `style` | `string \| array \| object` | — | SVG inline style(s) |
SSR-compatible with Nuxt 3 out of the box.
---
### 4.3 Svelte / SvelteKit (`reicon-svelte`)
**Install**: `npm install reicon-svelte`
**Named import**:
```svelte
```
**Direct import**:
```svelte
```
**Props:**
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `size` | `number \| string` | `24` | Size in pixels |
| `color` | `string` | `currentColor` | Any CSS color |
| `weight` | `"Outline" \| "Filled"` | `"Outline"` | Weight variant |
| `strokeWidth` | `number \| string` | — | Override stroke width |
SSR-compatible with SvelteKit.
---
### 4.4 React Native (`reicon-react-native`)
**Install**: `npm install reicon-react-native react-native-svg`
**Named import**:
```tsx
import { Home, ShieldCheck } from 'reicon-react-native';
```
**Direct import**:
```tsx
import Home from 'reicon-react-native/icons/Home';
```
**Props:**
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `size` | `number` | `24` | Size in pixels |
| `color` | `string` | `#000000` | Primary color |
| `secondaryColor` | `string` | same as color | Accent color |
| `weight` | `"Outline" \| "Filled"` | `"Outline"` | Weight variant |
| `strokeWidth` | `number \| string` | — | Override stroke width |
Metro bundler tree-shakes automatically.
---
### 4.5 Vanilla JS / ESM (`reicon`)
**Install**: `npm install reicon`
```js
import { Home } from 'reicon';
// Append to DOM — function returns SVGSVGElement
const svgEl = Home({ size: 24, color: 'red', weight: 'Outline' });
document.body.appendChild(svgEl);
// SSR — get SVG string
const svgString = Home.toSvg({ size: 32, color: '#d97757' });
// Direct import (smallest bundle)
import Home from 'reicon/icons/Home';
```
**Options (IconOptions):**
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `color` | `string` | `currentColor` | Stroke/fill color |
| `size` | `number \| string` | `24` | Icon size |
| `weight` | `"Outline" \| "Filled"` | `"Outline"` | Weight variant |
| `strokeWidth` | `number \| string` | — | Override stroke width |
| `className` | `string` | — | CSS class on `