Comprehensive ecosystem of 5,945 free MIT-licensed SVG icons with framework components for React, Vue, Svelte and raw SVG files.
npx @tessl/cli install tessl/npm-tabler--icons@3.34.0Tabler Icons is a comprehensive ecosystem of 5,945 free MIT-licensed SVG icons designed for modern web projects. Each icon is meticulously crafted on a 24x24 grid with a consistent 2px stroke, providing visual consistency across all designs. The library offers both outline and filled variants, extensive categorization, and framework-specific components for React, Vue, Svelte, and more.
Core Package:
npm install @tabler/iconsFramework Packages:
npm install @tabler/icons-reactnpm install @tabler/icons-vuenpm install @tabler/icons-svelteFramework Components (Recommended):
// React
import { IconHome, IconHeart } from '@tabler/icons-react';
// Vue
import { IconHome, IconHeart } from '@tabler/icons-vue';
// Svelte
import { IconHome, IconHeart } from '@tabler/icons-svelte';Raw SVG Files:
// Import individual SVG files
import homeIcon from "@tabler/icons/outline/home.svg";
import heartFilledIcon from "@tabler/icons/filled/heart.svg";
// Import metadata files
import iconsData from "@tabler/icons/icons.json";
import outlineNodes from "@tabler/icons/tabler-nodes-outline.json";
import filledNodes from "@tabler/icons/tabler-nodes-filled.json";Framework Components:
// React
function MyApp() {
return (
<div>
<IconHome size={24} color="blue" />
<IconHeart size={32} color="red" stroke={1.5} />
</div>
);
}
// Vue
<template>
<div>
<IconHome size="24" color="blue" />
<IconHeart size="32" color="red" stroke-width="1.5" />
</div>
</template>
// Svelte
<main>
<IconHome size={24} color="blue" />
<IconHeart size={32} color="red" stroke={1.5} />
</main>Raw SVG Usage:
// HTML image usage
<img src="node_modules/@tabler/icons/icons/outline/home.svg" alt="Home" />
// Dynamic icon loading
const loadIcon = async (iconName, style = 'outline') => {
return await import(`@tabler/icons/${style}/${iconName}.svg`);
};
// Programmatic metadata access
import iconsData from "@tabler/icons/icons.json";
// Find icons by category
const designIcons = Object.values(iconsData).filter(icon =>
icon.category === 'Design'
);Tabler Icons is built around several key components:
Tree-shakable React components for all 5,945 icons with full TypeScript support, forwardRef compatibility, and consistent prop interfaces.
import { IconHome, IconHeart, IconHeartFilled } from '@tabler/icons-react';
interface IconProps {
size?: string | number;
stroke?: string | number;
color?: string;
title?: string;
className?: string;
}
type TablerIcon = React.ForwardRefExoticComponent<Omit<IconProps, "ref"> & React.RefAttributes<SVGSVGElement>>;Vue 3 components for all 5,945 icons with reactive props and composition API support.
import { IconHome, IconHeart, IconHeartFilled } from '@tabler/icons-vue';
interface IconProps {
size?: string | number;
color?: string;
stroke?: string;
strokeWidth?: string | number;
class?: string;
}Svelte components for all 5,945 icons with reactive props and full TypeScript support.
import { IconHome, IconHeart, IconHeartFilled } from '@tabler/icons-svelte';
interface IconProps {
size?: number;
color?: string;
stroke?: number;
class?: string;
}Direct access to individual SVG files for use in HTML, CSS, or JavaScript applications. Supports both outline and filled style variants.
// Import pattern for individual SVG files
import iconName from "@tabler/icons/outline/{icon-name}.svg";
import iconName from "@tabler/icons/filled/{icon-name}.svg";Complete metadata system providing icon information including categories, tags, unicode values, and version data for all 5,945 icons.
interface IconMetadata {
name: string;
category: string;
tags: string[];
styles: {
outline?: {
version: string;
unicode: string;
};
filled?: {
version: string;
unicode: string;
};
};
}
// Main metadata export
const iconsData: Record<string, IconMetadata>;Access to raw SVG path data for programmatic icon rendering and custom SVG generation.
type SVGPathElement = [string, Record<string, string>];
type IconPathData = SVGPathElement[];
// SVG path data exports
const outlineNodes: Record<string, IconPathData>;
const filledNodes: Record<string, IconPathData>;interface IconMetadata {
name: string;
category: string;
tags: string[];
styles: {
outline?: StyleInfo;
filled?: StyleInfo;
};
}
interface StyleInfo {
version: string;
unicode: string;
}
type SVGPathElement = [string, Record<string, string>];
type IconPathData = SVGPathElement[];