Hand drawn icons for Svelte
One component draws them all and the icon is a prop. At 268 bytes an icon it is the lightest of the ten packages.
npm i @sketchyicons/svelte- One icon
- 268 B
- Peers
- svelte@^5
- Runtime dependencies
- none
- Shape
- icons as data
In your code
It is the lightest because the component is compiled into your build rather than shipped with it. Sending 1756 Svelte files would mean 1756 compilations in a project that imports three, so the icons stay data and one component draws them.
<script>
import { SketchyIcon, House, Star } from "@sketchyicons/svelte";
</script>
<SketchyIcon img={House} size={20} />
<SketchyIcon img={Star} size={15} color="#2B2521" strokeWidth={1.75} />- size
- number defaults to 24
- color
- string defaults to currentColor
- strokeWidth
- number defaults to 2
- absoluteStrokeWidth
- boolean defaults to false
- fill
- string defaults to none
Coming from lucide-svelte
The geometry here is derived from Lucide, so the names match and the props match. The 247 names Lucide has renamed are exported next to the current ones, which means Home and HelpCircle keep resolving after the swap.
-import { House } from "lucide-svelte";
+import { House } from "@sketchyicons/svelte";What does move is the call site: this target ships one component that takes the icon as data, so lucide-svelte's <House /> becomes a component with the icon passed in. The snippet above shows the shape.
1500+ glyphs, and a page for each of them
Every glyph in the set has its own page with the code for Svelte, the sizes it holds at, and the file. Here are twelve of the 1756, drawn by the same generator that built the package.
Search the whole set by name or by tag, or read the installation guide for the peer dependencies and the first icon on screen. Every glyph holds at 15 px, which is the size a real control uses.
The other targets
Why this one package their icons differently is worked through in One component per icon, except when that is the wrong shape.