# Tabler Icons for Svelte (Runes)

Tabler Icons

Implementation of the Tabler Icons library for Svelte 5+ using the new runes reactivity system.

Browse all icons at tabler-icons.io →

Latest Release License

## Why This Package? This package is specifically built for **Svelte 5+** using the new **runes** reactivity system (`$props()`, `$derived`, etc.). - **For Svelte 5+ projects:** Use this package (`@tabler/icons-svelte-runes`) - **For Svelte 3/4 projects:** Use [`@tabler/icons-svelte`](https://www.npmjs.com/package/@tabler/icons-svelte) ## Installation ```bash pnpm add @tabler/icons-svelte-runes ``` or ```bash npm install @tabler/icons-svelte-runes ``` or ```bash yarn add @tabler/icons-svelte-runes ``` ## Requirements - **Svelte 5.0+** with runes enabled - For older Svelte versions, use `@tabler/icons-svelte` instead ## Usage It's built with ES modules so it's completely tree-shakable. Each icon can be imported as a component. ```svelte ``` You can pass additional props to adjust the icon: ```svelte ``` ### Props | name | type | default | | -------- | ------------------ | ------------ | | `size` | `number \| string` | 24 | | `color` | `string` | currentColor | | `stroke` | `number \| string` | 2 | | `class` | `string` | '' | All other HTML attributes are forwarded to the SVG element. ## TypeScript Support The package includes full TypeScript definitions. Icons are typed as Svelte 5 `Component`: ```typescript import type { Icon } from '@tabler/icons-svelte-runes'; import { IconHeart } from '@tabler/icons-svelte-runes'; // Icon is compatible with Svelte 5's Component type const MyIcon: Icon = IconHeart; ``` ### Using Icons in Props When passing icons as props, use the `Component` type or `any` for maximum compatibility: ```svelte ``` ## Examples ### Basic Icon Usage ```svelte ``` ### Dynamic Icons with Runes ```svelte ``` ### Reactive Size with $derived ```svelte ``` ## Migrating from @tabler/icons-svelte The API is identical, just change the package name: ```diff - import { IconHeart } from '@tabler/icons-svelte'; + import { IconHeart } from '@tabler/icons-svelte-runes'; ``` No other changes needed! Your existing props and usage remain the same. ## What's Different from @tabler/icons-svelte? Internally, this package uses Svelte 5's new features: - `$props()` instead of `export let` - `$derived` for computed values - Modern TypeScript `Component` type - Optimized for Svelte 5's fine-grained reactivity **Result:** Better performance and smaller bundle sizes in Svelte 5 projects! ## Sponsors **If you want to support this project, you can [become a sponsor on GitHub](https://github.com/sponsors/codecalm) or just [donate on PayPal](https://paypal.me/codecalm) :)** Tabler sponsors ## Contributing For more info on how to contribute please see the [contribution guidelines](https://github.com/tabler/tabler-icons/blob/main/CONTRIBUTING.md). Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/tabler/tabler-icons/blob/main/packages/icons-svelte-runes/README.md) ## License Tabler Icons is licensed under the [MIT License](https://github.com/tabler/tabler-icons/blob/master/LICENSE). ## Sponsor Tabler Sponsor Tabler