Compare commits

..
22 Commits
Author SHA1 Message Date
Daniel BayleyandEric Fennis 9ef9921f04 Add scatter-chart icon (#1165)
* Add `scatter-chart` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-29 13:24:42 +02:00
Jesús Ferretti ac08bb92c1 fix(docs): fix typos and improve docs in Comparison (#1309)
* fix(docs): fix typos and improve docs in Comparison

* Update docs/comparison.md
2023-05-28 19:38:01 +02:00
Karsa 53109037ec Increases ticket in size as per #1192 (#1292) 2023-05-28 12:17:43 +02:00
66de90d63e Optimise monitor icons/add [monitor-]play/dot/check icons (#1282)
* Optimise `monitor` icons

* Add `monitor-play` icon

* Add `monitor-check` icon

* Add `monitor-dot` icon

* Added monitor-x, monitor-stop & monitor-pause

* Update monitor-pause.json

* Update icons/monitor-play.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>

* Decrease monitor-x x size.

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-05-28 12:12:43 +02:00
Daniel Bayley f3c7e44a3d Add [square-]pi/sigma icons (#1278)
* Add `pi-square` icon

* Add `sigma-square` icon
2023-05-28 11:57:00 +02:00
Jakob Guddas 3823993c39 Optimized umbrella (#1295) 2023-05-28 11:49:28 +02:00
Daniel BayleyandKarsa 36c53f956a Add play-square icon (#1283)
* Improve `play` icon metadata

* Add `play-square` icon

* Update play-square.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-28 11:48:32 +02:00
Eric Fennis 58c652908a Add strokeWidth type for lucide-vue-next (#1246) 2023-05-28 11:46:23 +02:00
KarsaandKarsa f4d887339e Adds ferris-wheel and roller-coaster (#1214)
* Adds ferris-wheel and roller-coaster

* Shorten roller-coaster

* Update roller-coaster.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-05-24 12:14:11 +02:00
Jakob GuddasandKarsa bde11234ea Fix diamond (#1294)
* Fix `diamond`

* Update icons/diamond.svg

Co-authored-by: Karsa <contact@karsa.org>

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-19 09:52:38 +02:00
NeutronandKarsa 3449097f77 Add sparkle icon (#1220)
Co-authored-by: Karsa <contact@karsa.org>
2023-05-17 21:32:39 +02:00
Daniel BayleyandKarsa aec41eae39 Fix/optimise life-buoy icon (#1279)
* Fix/optimise `life-buoy` icon

* Update icons/life-buoy.json

Co-authored-by: Karsa <contact@karsa.org>

* Update icons/life-buoy.json

Co-authored-by: Karsa <contact@karsa.org>

* Update icons/life-buoy.svg

Co-authored-by: Karsa <contact@karsa.org>

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-17 17:45:18 +02:00
Daniel Bayley 3da3cbc63f Improve qr-code icon metadata (#1281) 2023-05-17 10:48:01 +02:00
3fc3122054 Adds various badge icons, rebases verified as badge-check (#1118)
* Adds various badge icons, rebases verified as badge-check

* Add some more tags

* Revert "fix: fixed github icon api route issue (#1117)"

This reverts commit 49bd49b843.

* manually revert merge

* manually optimize badge shape

* Update icons/circle-dollar-sign.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-05-17 09:52:58 +02:00
Jakob Guddas 871de752e7 Optimized cloud-moon (#1260) 2023-05-11 09:18:24 +02:00
Daniel BayleyandJakob Guddas 25d7b55459 Add symbols (constant, variable etc…) icons (#1134)
* Add `variable` icon

* Add `constant` icon

* Add `pi` (constant) icon

* Update icons/pi.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>

* Refine `pi` icon

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-05-10 10:13:23 +02:00
Daniel Bayley 4d8a8091b6 Improve circle-dot (radio button) metadata (#1243) 2023-05-10 10:09:39 +02:00
Daniel Bayley a17c1aafbd Improve sigma metadata (#1245) 2023-05-10 09:58:50 +02:00
Daniel Bayley d1d6eec36e Improve triangle metadata (#1240) 2023-05-09 23:45:24 +02:00
Daniel Bayley abec311bc9 Optimise/refine case-*/word/space icons (#1217)
* Optimise `case-*` icons

* Optimise `whole-word`/`space` icons

* Refine `whole-word`/`space` icons
2023-05-06 15:14:51 +02:00
KarsaandKarsa 3df9be04a8 Renames stars to sparkles (#1221)
Co-authored-by: Karsa <karsa@karsa.org>
2023-05-06 15:12:21 +02:00
Jakob Guddas 016c9d1fac feat: added 100% preview with different stroke widths and in context with other icons (#1180)
* feat: added 100% preview with different stroke widths

* feat: added 100% preview with different stroke widths

* fix: fixed detail section issue

* fix: added lost detail section

* feat: added cohesion preview
2023-05-06 15:02:52 +02:00
79 changed files with 1016 additions and 76 deletions
+86 -3
View File
@@ -22,8 +22,78 @@ jobs:
uses: tj-actions/changed-files@v35
with:
files: icons/*.svg
- name: Generate comment
id: generate-comment
- name: Generate cohesion check random
id: generate-cohesion-check-random
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in $(printf "%s\\n" icons/*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate cohesion check squares
id: generate-cohesion-check-squares
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in $(printf "%s\\n" icons/*square*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 1px stroke-width
id: generate-1px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/1/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 2px stroke-width
id: generate-2px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 3px stroke-width
id: generate-3px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/3/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate X-rays
id: generate-x-rays
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
@@ -50,8 +120,21 @@ jobs:
issue-number: ${{ github.event.pull_request.number }}
body: |
### Added or changed icons
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
<details>
<summary>Preview cohesion</summary>
${{ steps.generate-cohesion-check-squares.outputs.body }}<br/>
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
${{ steps.generate-cohesion-check-random.outputs.body }}<br/>
</details>
<details>
<summary>Preview stroke widths</summary>
${{ steps.generate-1px-stroke-width.outputs.body }}<br/>
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
${{ steps.generate-3px-stroke-width.outputs.body }}<br/>
</details>
<details>
<summary>Icon X-rays</summary>
${{ steps.generate-comment.outputs.body }}
${{ steps.generate-x-rays.outputs.body }}
</details>
edit-mode: replace
+7 -7
View File
@@ -6,20 +6,20 @@ title: Comparison
## Lucide vs Feather Icons
Lucide is a community-run fork of [Feather Icons](https://github.com/feathericons/feather).
Lucide is a community-driven fork of [Feather Icons](https://github.com/feathericons/feather).
It began after growing disaffection of the [Feather Icons](https://github.com/feathericons/feather) project moderation. With over 300+ open issues and over 100+ open PRs, the Feather Icons project has been abandoned and not maintained actively. This unfortunately means that hundreds of developers and designers wasted their time contributing to Feather Icons with no chance of PRs being accepted.
The decision to create Lucide arose from growing dissatisfaction with the moderation of the Feather Icons project. With more than 300 open issues and over 100 open PRs, the Feather Icons project has been abandoned and is no longer actively maintained. Unfortunately, this means that numerous developers and designers have invested their time in contributing to Feather Icons without the possibility of their PRs being accepted.
Lucide is trying to expand the icon set as much as possible while staying faithful to the original simplistic design language. We do this as a community of devs and designers.
In an effort to expand the icon set while remaining true to the original minimalist design language, Lucide is driven by a community of developers and designers. We strive to grow together and maintain a faithful continuation of the project.
### Why should I choose Lucide over Feather Icons?
- Lucide already expended the icon set by 130+ in less then a year. Lucide has over 500+ icon, feather sticks around 286 icons.
- Lucide has expanded its icon set by 500+ in the last few years. Lucide now has over 1000 icons, while Feather has around 287 icons.
- Well maintained code base.
- Active community.
### Should I migrate to Lucide?
That depends if you're fine with the icons from feather icons. If that is the case, it is maybe not the effort worth it.
But if you keep wrestling and feel limited by the icons Feather provides you can consider to migrate.
We didn't remove any icons when we forked, but there are some icons renamed.
That depends on whether you're satisfied with the icons from Feather Icons. If that is the case, it may not be worth the effort.
However, if you find yourself struggling and feeling limited by the icons provided by Feather, you can consider migrating.
When we forked, we didn't remove any icons, but some icons have been renamed.
+16
View File
@@ -0,0 +1,16 @@
{
"$schema": "../icon.schema.json",
"tags": [
"check",
"verified",
"unverified",
"security",
"safety",
"issue"
],
"categories": [
"account",
"social",
"shapes"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<line x1="12" x2="12" y1="8" y2="12" />
<line x1="12" x2="12.01" y1="16" y2="16" />
</svg>

After

Width:  |  Height:  |  Size: 471 B

+13
View File
@@ -0,0 +1,13 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"check"
],
"categories": [
"account",
"social",
"shapes"
],
"aliases": ["verified"]
}
+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<path d="m9 12 2 2 4-4" />
</svg>

After

Width:  |  Height:  |  Size: 412 B

+15
View File
@@ -0,0 +1,15 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"unverified",
"monetization",
"marketing"
],
"categories": [
"account",
"social",
"money",
"shapes"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<path d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8" />
<path d="M12 18V6" />
</svg>

After

Width:  |  Height:  |  Size: 463 B

+14
View File
@@ -0,0 +1,14 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"unverified",
"help"
],
"categories": [
"account",
"accessibility",
"social",
"shapes"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" />
<line x1="12" x2="12.01" y1="17" y2="17" />
</svg>

After

Width:  |  Height:  |  Size: 481 B

+14
View File
@@ -0,0 +1,14 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"unverified",
"help"
],
"categories": [
"account",
"accessibility",
"social",
"shapes"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<line x1="12" x2="12" y1="16" y2="12" />
<line x1="12" x2="12.01" y1="8" y2="8" />
</svg>

After

Width:  |  Height:  |  Size: 470 B

+15
View File
@@ -0,0 +1,15 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"unverified",
"delete",
"remove",
"erase"
],
"categories": [
"account",
"social",
"shapes"
]
}
+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<line x1="8" x2="16" y1="12" y2="12" />
</svg>

After

Width:  |  Height:  |  Size: 425 B

+16
View File
@@ -0,0 +1,16 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"unverified",
"sale",
"marketing"
],
"categories": [
"account",
"social",
"money",
"maths",
"shapes"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<path d="m15 9-6 6" />
<path d="M9 9h.01" />
<path d="M15 15h.01" />
</svg>

After

Width:  |  Height:  |  Size: 458 B

+15
View File
@@ -0,0 +1,15 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"unverified",
"add",
"create",
"new"
],
"categories": [
"account",
"social",
"shapes"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<line x1="12" x2="12" y1="8" y2="16" />
<line x1="8" x2="16" y1="12" y2="12" />
</svg>

After

Width:  |  Height:  |  Size: 467 B

+15
View File
@@ -0,0 +1,15 @@
{
"$schema": "../icon.schema.json",
"tags": [
"verified",
"unverified",
"lost",
"delete",
"remove"
],
"categories": [
"account",
"social",
"shapes"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<line x1="15" x2="9" y1="9" y2="15" />
<line x1="9" x2="15" y1="9" y2="15" />
</svg>

After

Width:  |  Height:  |  Size: 465 B

+13
View File
@@ -0,0 +1,13 @@
{
"$schema": "../icon.schema.json",
"tags": [
"check",
"verified",
"unverified"
],
"categories": [
"account",
"social",
"shapes"
]
}
+13
View File
@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
</svg>

After

Width:  |  Height:  |  Size: 383 B

+3 -3
View File
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="17" cy="12" r="3" />
<line x1="14" x2="14" y1="7" y2="15" />
<circle cx="7" cy="12" r="3" />
<line x1="10" x2="10" y1="9" y2="15" />
<path d="M10 9v6" />
<circle cx="17" cy="12" r="3" />
<path d="M14 7v8" />
</svg>

Before

Width:  |  Height:  |  Size: 361 B

After

Width:  |  Height:  |  Size: 323 B

+3 -3
View File
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="3,15 7,7 11,15" />
<line x1="4" x2="10" y1="13" y2="13" />
<path d="m3 15 4-8 4 8" />
<path d="M4 13h6" />
<circle cx="18" cy="12" r="3" />
<line x1="21" x2="21" y1="9" y2="15" />
<path d="M21 9v6" />
</svg>

Before

Width:  |  Height:  |  Size: 366 B

After

Width:  |  Height:  |  Size: 318 B

+3 -4
View File
@@ -9,8 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="3,15 7,7 11,15" />
<line x1="4" x2="10" y1="13" y2="13" />
<path d="M15 7h4c1.1 0 2 .9 2 2s-.9 2-2 2h-4V7z" />
<path d="M15 11h4.5c1.1 0 2 .9 2 2s-.9 2-2 2H15v-4z" />
<path d="m3 15 4-8 4 8" />
<path d="M4 13h6" />
<path d="M15 11h4.5a2 2 0 0 1 0 4H15V7h4a2 2 0 0 1 0 4" />
</svg>

Before

Width:  |  Height:  |  Size: 401 B

After

Width:  |  Height:  |  Size: 321 B

+15
View File
@@ -0,0 +1,15 @@
{
"$schema": "../icon.schema.json",
"tags": [
"monetization",
"marketing",
"currency",
"money",
"payment"
],
"categories": [
"shapes",
"money",
"currency"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8" />
<path d="M12 18V6" />
</svg>

After

Width:  |  Height:  |  Size: 324 B

+5 -1
View File
@@ -4,7 +4,11 @@
"pending",
"dot",
"progress",
"issue"
"issue",
"radio button",
"choices",
"multiple choice",
"choose"
],
"categories": [
"shapes"
+2 -2
View File
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z" />
<path d="M10.083 9A6.002 6.002 0 0 1 16 4a4.243 4.243 0 0 0 6 6c0 2.22-1.206 4.16-3 5.197" />
<path d="M13 16a3 3 0 1 1 0 6H7a5 5 0 1 1 4.9-6Z" />
<path d="M10.1 9A6 6 0 0 1 16 4a4.24 4.24 0 0 0 6 6 6 6 0 0 1-3 5.197" />
</svg>

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 339 B

+1 -8
View File
@@ -9,12 +9,5 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
width="15.56"
height="15.56"
x="12"
y="1"
rx="2.41"
transform="rotate(45 12 1)"
/>
<path d="M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z" />
</svg>

Before

Width:  |  Height:  |  Size: 325 B

After

Width:  |  Height:  |  Size: 357 B

+16
View File
@@ -0,0 +1,16 @@
{
"$schema": "../icon.schema.json",
"tags": [
"big wheel",
"daisy wheel",
"observation",
"attraction",
"entertainment",
"amusement park",
"theme park",
"funfair"
],
"categories": [
"maps"
]
}
+21
View File
@@ -0,0 +1,21 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="2" />
<path d="M12 2v4" />
<path d="m6.8 15-3.5 2" />
<path d="m20.7 7-3.5 2" />
<path d="M6.8 9 3.3 7" />
<path d="m20.7 17-3.5-2" />
<path d="m9 22 3-8 3 8" />
<path d="M8 22h8" />
<path d="M18 18.7a9 9 0 1 0-12 0" />
</svg>

After

Width:  |  Height:  |  Size: 473 B

+9 -1
View File
@@ -1,9 +1,17 @@
{
"$schema": "../icon.schema.json",
"tags": [
"preserver",
"life belt",
"lifesaver",
"help",
"rescue",
"ship"
"ship",
"ring",
"raft",
"inflatable",
"wheel",
"donut"
],
"categories": [
"accessibility",
+4 -5
View File
@@ -10,10 +10,9 @@
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="m4.93 4.93 4.24 4.24"/>
<path d="m14.83 9.17 4.24-4.24"/>
<path d="m14.83 14.83 4.24 4.24"/>
<path d="m9.17 14.83-4.24 4.24"/>
<circle cx="12" cy="12" r="4" />
<line x1="4.93" x2="9.17" y1="4.93" y2="9.17" />
<line x1="14.83" x2="19.07" y1="14.83" y2="19.07" />
<line x1="14.83" x2="19.07" y1="9.17" y2="4.93" />
<line x1="14.83" x2="18.36" y1="9.17" y2="5.64" />
<line x1="4.93" x2="9.17" y1="19.07" y2="14.83" />
</svg>

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 423 B

+19
View File
@@ -0,0 +1,19 @@
{
"$schema": "../icon.schema.json",
"tags": [
"tv",
"screen",
"display",
"desktop",
"running",
"active",
"virtual machine",
"vm"
],
"categories": [
"connectivity",
"devices",
"development"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m9 10 2 2 4-4" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

After

Width:  |  Height:  |  Size: 337 B

+18
View File
@@ -0,0 +1,18 @@
{
"$schema": "../icon.schema.json",
"tags": [
"tv",
"screen",
"display",
"desktop",
"running",
"active",
"virtual machine",
"vm"
],
"categories": [
"connectivity",
"devices",
"development"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="19" cy="6" r="3" />
<path d="M22 12v3a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

After

Width:  |  Height:  |  Size: 361 B

+3 -3
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="20" height="14" x="2" y="3" rx="2" ry="2" />
<line x1="8" x2="16" y1="21" y2="21" />
<line x1="12" x2="12" y1="17" y2="21" />
<path d="M12 13V7" />
<path d="m15 10-3 3-3-3" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

Before

Width:  |  Height:  |  Size: 407 B

After

Width:  |  Height:  |  Size: 362 B

+23
View File
@@ -0,0 +1,23 @@
{
"$schema": "../icon.schema.json",
"tags": [
"tv",
"screen",
"display",
"desktop",
"video",
"movie",
"film",
"suspend",
"hibernate",
"boot",
"virtual machine",
"vm"
],
"categories": [
"connectivity",
"devices",
"multimedia",
"development"
]
}
+17
View File
@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 13V7" />
<path d="M14 13V7" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

After

Width:  |  Height:  |  Size: 356 B

+23
View File
@@ -0,0 +1,23 @@
{
"$schema": "../icon.schema.json",
"tags": [
"tv",
"screen",
"display",
"desktop",
"video",
"movie",
"film",
"running",
"start",
"boot",
"virtual machine",
"vm"
],
"categories": [
"connectivity",
"devices",
"multimedia",
"development"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m10 7 5 3-5 3Z" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

After

Width:  |  Height:  |  Size: 338 B

+22
View File
@@ -0,0 +1,22 @@
{
"$schema": "../icon.schema.json",
"tags": [
"tv",
"screen",
"display",
"desktop",
"video",
"movie",
"film",
"stop",
"shutdown",
"virtual machine",
"vm"
],
"categories": [
"connectivity",
"devices",
"multimedia",
"development"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="9" y="7" width="6" height="6" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

After

Width:  |  Height:  |  Size: 352 B

+4 -4
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="20" height="14" x="2" y="3" rx="2" ry="2" />
<line x1="8" x2="16" y1="21" y2="21" />
<line x1="12" x2="12" y1="17" y2="21" />
<path d="M12 13V7" />
<path d="m9 10 3-3 3 3" />
<path d="M12 13V7" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 361 B

+21
View File
@@ -0,0 +1,21 @@
{
"$schema": "../icon.schema.json",
"tags": [
"tv",
"screen",
"display",
"desktop",
"virtual machine",
"vm",
"close",
"stop",
"suspend",
"remove",
"delete"
],
"categories": [
"connectivity",
"devices",
"development"
]
}
+17
View File
@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m14.5 12.5-5-5" />
<path d="m9.5 12.5 5-5" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<path d="M12 17v4" />
<path d="M8 21h8" />
</svg>

After

Width:  |  Height:  |  Size: 367 B

+5 -2
View File
@@ -3,10 +3,13 @@
"tags": [
"tv",
"screen",
"display"
"display",
"virtual machine",
"vm"
],
"categories": [
"connectivity",
"devices"
"devices",
"development"
]
}
+1 -1
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="20" height="14" x="2" y="3" rx="2" ry="2" />
<rect width="20" height="14" x="2" y="3" rx="2" />
<line x1="8" x2="16" y1="21" y2="21" />
<line x1="12" x2="12" y1="17" y2="21" />
</svg>

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 346 B

+18
View File
@@ -0,0 +1,18 @@
{
"$schema": "../icon.schema.json",
"tags": [
"constant",
"code",
"coding",
"programming",
"symbol",
"trigonometry",
"geometry",
"formula"
],
"categories": [
"development",
"maths",
"shapes"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="18" height="18" x="3" y="3" rx="2" />
<path d="M7 7h10" />
<path d="M10 7v10" />
<path d="M16 17a2 2 0 0 1-2-2V7" />
</svg>

After

Width:  |  Height:  |  Size: 346 B

+18
View File
@@ -0,0 +1,18 @@
{
"$schema": "../icon.schema.json",
"tags": [
"constant",
"code",
"coding",
"programming",
"symbol",
"trigonometry",
"geometry",
"formula"
],
"categories": [
"development",
"maths",
"shapes"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="9" x2="9" y1="4" y2="20" />
<path d="M4 7c0-1.7 1.3-3 3-3h13" />
<path d="M18 20c-1.7 0-3-1.3-3-3V4" />
</svg>

After

Width:  |  Height:  |  Size: 328 B

+14
View File
@@ -0,0 +1,14 @@
{
"$schema": "../icon.schema.json",
"tags": [
"music",
"audio",
"video",
"start",
"run"
],
"categories": [
"arrows",
"multimedia"
]
}
+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="18" height="18" x="3" y="3" rx="2" />
<path d="m9 8 6 4-6 4Z" />
</svg>

After

Width:  |  Height:  |  Size: 290 B

+2
View File
@@ -2,6 +2,8 @@
"$schema": "../icon.schema.json",
"tags": [
"music",
"audio",
"video",
"start",
"run"
],
+2 -1
View File
@@ -1,7 +1,8 @@
{
"$schema": "../icon.schema.json",
"tags": [
"barcode"
"barcode",
"scan"
],
"categories": [
"development",
+13
View File
@@ -0,0 +1,13 @@
{
"$schema": "../icon.schema.json",
"tags": [
"attraction",
"entertainment",
"amusement park",
"theme park",
"funfair"
],
"categories": [
"maps"
]
}
+19
View File
@@ -0,0 +1,19 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M6 19V5" />
<path d="M10 19V6.8" />
<path d="M14 19v-7.8" />
<path d="M18 5v4" />
<path d="M18 19v-6" />
<path d="M22 19V9" />
<path d="M2 19V9a4 4 0 0 1 4-4c2 0 4 1.33 6 4s4 4 6 4a4 4 0 1 0-3-6.65" />
</svg>

After

Width:  |  Height:  |  Size: 433 B

@@ -1,10 +1,11 @@
{
"$schema": "../icon.schema.json",
"tags": [
"check"
"statistics",
"diagram",
"graph"
],
"categories": [
"account",
"social"
"charts"
]
}
+18
View File
@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="7.5" cy="7.5" r=".5" />
<circle cx="18.5" cy="5.5" r=".5" />
<circle cx="11.5" cy="11.5" r=".5" />
<circle cx="7.5" cy="16.5" r=".5" />
<circle cx="17.5" cy="14.5" r=".5" />
<path d="M3 3v18h18" />
</svg>

After

Width:  |  Height:  |  Size: 430 B

+15
View File
@@ -0,0 +1,15 @@
{
"$schema": "../icon.schema.json",
"tags": [
"sum",
"calculate",
"formula",
"maths",
"enumeration",
"enumerate"
],
"categories": [
"text",
"maths"
]
}
+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="18" height="18" x="3" y="3" rx="2" />
<path d="M16 8.9V7H8l4 5-4 5h8v-1.9" />
</svg>

After

Width:  |  Height:  |  Size: 303 B

+3 -1
View File
@@ -4,7 +4,9 @@
"sum",
"calculate",
"formula",
"maths"
"maths",
"enumeration",
"enumerate"
],
"categories": [
"text",
+1 -1
View File
@@ -9,5 +9,5 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="22,17 22,19 2,19 2,17" />
<path d="M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1" />
</svg>

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 266 B

+17
View File
@@ -0,0 +1,17 @@
{
"$schema": "../icon.schema.json",
"tags": [
"star",
"effect",
"filter",
"night",
"magic",
"shiny",
"glitter",
"twinkle",
"celebration"
],
"categories": [
"shapes"
]
}
+13
View File
@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m12 3-1.9 5.8a2 2 0 0 1-1.287 1.288L3 12l5.8 1.9a2 2 0 0 1 1.288 1.287L12 21l1.9-5.8a2 2 0 0 1 1.287-1.288L21 12l-5.8-1.9a2 2 0 0 1-1.288-1.287Z" />
</svg>

After

Width:  |  Height:  |  Size: 367 B

+4 -1
View File
@@ -1,10 +1,10 @@
{
"$schema": "../icon.schema.json",
"tags": [
"stars",
"effect",
"filter",
"night",
"sparkles",
"magic"
],
"categories": [
@@ -13,5 +13,8 @@
"multimedia",
"gaming",
"weather"
],
"aliases": [
"stars"
]
}

Before

Width:  |  Height:  |  Size: 481 B

After

Width:  |  Height:  |  Size: 481 B

+1 -1
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 7v2a3 3 0 1 1 0 6v2c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2v-2a3 3 0 1 1 0-6V7a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2Z" />
<path d="M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z" />
<path d="M13 5v2" />
<path d="M13 17v2" />
<path d="M13 11v2" />

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 396 B

+4 -1
View File
@@ -1,8 +1,11 @@
{
"$schema": "../icon.schema.json",
"tags": [
"equilateral",
"delta",
"shape"
"shape",
"pyramid",
"hierarchy"
],
"categories": [
"shapes"
+2 -2
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M22 12a9.92 9.92 0 0 0-3.24-6.41 10.12 10.12 0 0 0-13.52 0A9.92 9.92 0 0 0 2 12Z" />
<path d="M22 12a10.06 10.06 1 0 0-20 0Z" />
<path d="M12 12v8a2 2 0 0 0 4 0" />
<line x1="12" x2="12" y1="2" y2="3" />
<path d="M12 2v1" />
</svg>

Before

Width:  |  Height:  |  Size: 383 B

After

Width:  |  Height:  |  Size: 315 B

+19
View File
@@ -0,0 +1,19 @@
{
"$schema": "../icon.schema.json",
"tags": [
"code",
"coding",
"programming",
"symbol",
"calculate",
"algebra",
"x",
"parentheses",
"parenthesis",
"brackets"
],
"categories": [
"development",
"maths"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M8 21s-4-3-4-9 4-9 4-9" />
<path d="M16 3s4 3 4 9-4 9-4 9" />
<line x1="15" x2="9" y1="9" y2="15" />
<line x1="9" x2="15" y1="9" y2="15" />
</svg>

After

Width:  |  Height:  |  Size: 365 B

-14
View File
@@ -1,14 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 3c-1.2 0-2.4.6-3 1.7A3.6 3.6 0 0 0 4.6 9c-1 .6-1.7 1.8-1.7 3s.7 2.4 1.7 3c-.3 1.2 0 2.5 1 3.4.8.8 2.1 1.2 3.3 1 .6 1 1.8 1.6 3 1.6s2.4-.6 3-1.7c1.2.3 2.5 0 3.4-1 .8-.8 1.2-2 1-3.3 1-.6 1.6-1.8 1.6-3s-.6-2.4-1.7-3c.3-1.2 0-2.5-1-3.4a3.7 3.7 0 0 0-3.3-1c-.6-1-1.8-1.6-3-1.6Z" />
<path d="m9 12 2 2 4-4" />
</svg>

Before

Width:  |  Height:  |  Size: 529 B

+4 -4
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="17" cy="12" r="3" />
<line x1="14" x2="14" y1="7" y2="15" />
<circle cx="7" cy="12" r="3" />
<line x1="10" x2="10" y1="9" y2="15" />
<polyline points="22,17 22,19 2,19 2,17" />
<path d="M10 9v6" />
<circle cx="17" cy="12" r="3" />
<path d="M14 7v8" />
<path d="M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1" />
</svg>

Before

Width:  |  Height:  |  Size: 407 B

After

Width:  |  Height:  |  Size: 381 B

@@ -30,6 +30,7 @@ declare module 'lucide-vue-next'
// Create interface extending SVGAttributes
export interface SVGProps extends Partial<SVGAttributes> {
size?: 24 | number
strokeWidth?: number
absoluteStrokeWidth?: boolean
}
@@ -0,0 +1,29 @@
import { parseSync } from 'svgson';
import { createLucideIcon, IconNode } from 'lucide-react';
export default async function handler(req, res) {
// ReactDOMServer needs to be imported dynamically
// https://github.com/vercel/next.js/issues/43810
const ReactDOMServer = (await import('react-dom/server')).default;
const url = req.url.split('/');
const src = Buffer.from(url.at(-1).slice(0, -4), 'base64').toString('utf8');
const Icon = createLucideIcon(
'icon',
parseSync(src.includes('<svg') ? src : `<svg>${src}</svg>`).children.map(
({ name, attributes }) => [name, attributes]
) as IconNode
);
const svg = Buffer.from(
ReactDOMServer.renderToString(<Icon strokeWidth={url.at(-2)} />).replace(
/>/,
'><style>@media screen and (prefers-color-scheme: dark) { svg { stroke: #fff } }</style>'
)
);
res.setHeader('Cache-Control', 'public,max-age=31536000');
res.setHeader('Content-Type', 'image/svg+xml');
res.status(200).end(svg);
}