Hand drawn icons for Vue
Functional components for Vue 3, with vue as the only peer dependency. No state, no lifecycle, one render call each.
npm i @sketchyicons/vue- One icon
- 466 B
- Peers
- vue@^3
- Runtime dependencies
- none
- Shape
- one per icon
In your code
Vue templates spell props in kebab case, so strokeWidth is written stroke-width at the call site while the prop itself keeps Lucide's name. Both forms work, and the docs on this site show whichever one belongs in a template.
<script setup>
import { House, Star } from "@sketchyicons/vue";
</script>
<template>
<House :size="20" />
<Star :size="15" :stroke-width="1.75" />
</template>- 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-vue-next
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-vue-next";
+import { House } from "@sketchyicons/vue";Nothing else at the call site moves. Sizes, colours and stroke widths keep the values you already wrote.
1500+ glyphs, and a page for each of them
Every glyph in the set has its own page with the code for Vue, 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 two of them package their icons differently is worked through in One component per icon, except when that is the wrong shape.