Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3823993c39 | ||
|
|
36c53f956a | ||
|
|
58c652908a | ||
|
|
f4d887339e | ||
|
|
bde11234ea | ||
|
|
3449097f77 | ||
|
|
aec41eae39 | ||
|
|
3da3cbc63f | ||
|
|
3fc3122054 | ||
|
|
871de752e7 | ||
|
|
25d7b55459 | ||
|
|
4d8a8091b6 | ||
|
|
a17c1aafbd | ||
|
|
d1d6eec36e | ||
|
|
abec311bc9 | ||
|
|
3df9be04a8 | ||
|
|
016c9d1fac | ||
|
|
17f9509f71 | ||
|
|
b6c7434e92 |
89
.github/workflows/pull-request.yml
vendored
@@ -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
|
||||
|
||||
16
icons/badge-alert.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"check",
|
||||
"verified",
|
||||
"unverified",
|
||||
"security",
|
||||
"safety",
|
||||
"issue"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
15
icons/badge-alert.svg
Normal 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 |
@@ -1,10 +1,13 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"check"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social"
|
||||
]
|
||||
}
|
||||
"social",
|
||||
"shapes"
|
||||
],
|
||||
"aliases": ["verified"]
|
||||
}
|
||||
14
icons/badge-check.svg
Executable 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
icons/badge-dollar-sign.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"unverified",
|
||||
"monetization",
|
||||
"marketing"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social",
|
||||
"money",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
15
icons/badge-dollar-sign.svg
Normal 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
icons/badge-help.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"unverified",
|
||||
"help"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"accessibility",
|
||||
"social",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
15
icons/badge-help.svg
Normal 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
icons/badge-info.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"unverified",
|
||||
"help"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"accessibility",
|
||||
"social",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
15
icons/badge-info.svg
Normal 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
icons/badge-minus.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"unverified",
|
||||
"delete",
|
||||
"remove",
|
||||
"erase"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
14
icons/badge-minus.svg
Normal 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
icons/badge-percent.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"unverified",
|
||||
"sale",
|
||||
"marketing"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social",
|
||||
"money",
|
||||
"maths",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
16
icons/badge-percent.svg
Normal 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
icons/badge-plus.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"unverified",
|
||||
"add",
|
||||
"create",
|
||||
"new"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
15
icons/badge-plus.svg
Normal 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
icons/badge-x.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"verified",
|
||||
"unverified",
|
||||
"lost",
|
||||
"delete",
|
||||
"remove"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
15
icons/badge-x.svg
Normal 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
icons/badge.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"check",
|
||||
"verified",
|
||||
"unverified"
|
||||
],
|
||||
"categories": [
|
||||
"account",
|
||||
"social",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
13
icons/badge.svg
Normal 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 |
@@ -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 |
@@ -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 |
@@ -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
icons/circle-dollar-sign.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"monetization",
|
||||
"marketing",
|
||||
"currency",
|
||||
"money",
|
||||
"payment"
|
||||
],
|
||||
"categories": [
|
||||
"shapes",
|
||||
"money",
|
||||
"currency"
|
||||
]
|
||||
}
|
||||
15
icons/circle-dollar-sign.svg
Normal 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 |
@@ -4,7 +4,11 @@
|
||||
"pending",
|
||||
"dot",
|
||||
"progress",
|
||||
"issue"
|
||||
"issue",
|
||||
"radio button",
|
||||
"choices",
|
||||
"multiple choice",
|
||||
"choose"
|
||||
],
|
||||
"categories": [
|
||||
"shapes"
|
||||
|
||||
@@ -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 |
@@ -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
icons/ferris-wheel.json
Normal 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
icons/ferris-wheel.svg
Normal 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,8 +9,8 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect width="7" height="9" x="3" y="3" />
|
||||
<rect width="7" height="5" x="14" y="3" />
|
||||
<rect width="7" height="9" x="14" y="12" />
|
||||
<rect width="7" height="5" x="3" y="16" />
|
||||
<rect width="7" height="9" x="3" y="3" rx="1" />
|
||||
<rect width="7" height="5" x="14" y="3" rx="1" />
|
||||
<rect width="7" height="9" x="14" y="12" rx="1" />
|
||||
<rect width="7" height="5" x="3" y="16" rx="1" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 416 B |
@@ -9,8 +9,8 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect width="7" height="7" x="3" y="3" />
|
||||
<rect width="7" height="7" x="14" y="3" />
|
||||
<rect width="7" height="7" x="14" y="14" />
|
||||
<rect width="7" height="7" x="3" y="14" />
|
||||
<rect width="7" height="7" x="3" y="3" rx="1" />
|
||||
<rect width="7" height="7" x="14" y="3" rx="1" />
|
||||
<rect width="7" height="7" x="14" y="14" rx="1" />
|
||||
<rect width="7" height="7" x="3" y="14" rx="1" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 416 B |
@@ -9,8 +9,8 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect width="7" height="7" x="3" y="14" />
|
||||
<rect width="7" height="7" x="3" y="3" />
|
||||
<rect width="7" height="7" x="3" y="14" rx="1" />
|
||||
<rect width="7" height="7" x="3" y="3" rx="1" />
|
||||
<line x1="14" x2="21" y1="4" y2="4" />
|
||||
<line x1="14" x2="21" y1="9" y2="9" />
|
||||
<line x1="14" x2="21" y1="15" y2="15" />
|
||||
|
||||
|
Before Width: | Height: | Size: 465 B After Width: | Height: | Size: 479 B |
13
icons/layout-panel-left.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"app",
|
||||
"home",
|
||||
"start",
|
||||
"grid"
|
||||
],
|
||||
"categories": [
|
||||
"design",
|
||||
"layout"
|
||||
]
|
||||
}
|
||||
15
icons/layout-panel-left.svg
Normal 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"
|
||||
>
|
||||
<rect width="7" height="18" x="3" y="3" rx="1" />
|
||||
<rect width="7" height="7" x="14" y="3" rx="1" />
|
||||
<rect width="7" height="7" x="14" y="14" rx="1" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 365 B |
15
icons/layout-panel-top.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"window",
|
||||
"webpage",
|
||||
"block",
|
||||
"section",
|
||||
"grid",
|
||||
"template",
|
||||
"structure"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
]
|
||||
}
|
||||
15
icons/layout-panel-top.svg
Normal 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"
|
||||
>
|
||||
<rect width="18" height="7" x="3" y="3" rx="1" />
|
||||
<rect width="7" height="7" x="3" y="14" rx="1" />
|
||||
<rect width="7" height="7" x="14" y="14" rx="1" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 365 B |
@@ -9,7 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M21 3H3v7h18V3z" />
|
||||
<path d="M21 14h-5v7h5v-7z" />
|
||||
<path d="M12 14H3v7h9v-7z" />
|
||||
<rect width="18" height="7" x="3" y="3" rx="1" />
|
||||
<rect width="9" height="7" x="3" y="14" rx="1" />
|
||||
<rect width="5" height="7" x="16" y="14" rx="1" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 365 B |
@@ -1,9 +1,17 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"preserver",
|
||||
"life belt",
|
||||
"lifesaver",
|
||||
"help",
|
||||
"rescue",
|
||||
"ship"
|
||||
"ship",
|
||||
"ring",
|
||||
"raft",
|
||||
"inflatable",
|
||||
"wheel",
|
||||
"donut"
|
||||
],
|
||||
"categories": [
|
||||
"accessibility",
|
||||
|
||||
@@ -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 |
18
icons/pi.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"constant",
|
||||
"code",
|
||||
"coding",
|
||||
"programming",
|
||||
"symbol",
|
||||
"trigonometry",
|
||||
"geometry",
|
||||
"formula"
|
||||
],
|
||||
"categories": [
|
||||
"development",
|
||||
"maths",
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
15
icons/pi.svg
Normal 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
icons/play-square.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"music",
|
||||
"audio",
|
||||
"video",
|
||||
"start",
|
||||
"run"
|
||||
],
|
||||
"categories": [
|
||||
"arrows",
|
||||
"multimedia"
|
||||
]
|
||||
}
|
||||
14
icons/play-square.svg
Normal 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,6 +2,8 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"music",
|
||||
"audio",
|
||||
"video",
|
||||
"start",
|
||||
"run"
|
||||
],
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"barcode"
|
||||
"barcode",
|
||||
"scan"
|
||||
],
|
||||
"categories": [
|
||||
"development",
|
||||
|
||||
13
icons/roller-coaster.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"attraction",
|
||||
"entertainment",
|
||||
"amusement park",
|
||||
"theme park",
|
||||
"funfair"
|
||||
],
|
||||
"categories": [
|
||||
"maps"
|
||||
]
|
||||
}
|
||||
19
icons/roller-coaster.svg
Normal 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 |
@@ -4,7 +4,9 @@
|
||||
"sum",
|
||||
"calculate",
|
||||
"formula",
|
||||
"maths"
|
||||
"maths",
|
||||
"enumeration",
|
||||
"enumerate"
|
||||
],
|
||||
"categories": [
|
||||
"text",
|
||||
|
||||
@@ -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
icons/sparkle.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"star",
|
||||
"effect",
|
||||
"filter",
|
||||
"night",
|
||||
"magic",
|
||||
"shiny",
|
||||
"glitter",
|
||||
"twinkle",
|
||||
"celebration"
|
||||
],
|
||||
"categories": [
|
||||
"shapes"
|
||||
]
|
||||
}
|
||||
13
icons/sparkle.svg
Normal 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 |
@@ -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,8 +1,11 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"equilateral",
|
||||
"delta",
|
||||
"shape"
|
||||
"shape",
|
||||
"pyramid",
|
||||
"hierarchy"
|
||||
],
|
||||
"categories": [
|
||||
"shapes"
|
||||
|
||||
@@ -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
icons/variable.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"code",
|
||||
"coding",
|
||||
"programming",
|
||||
"symbol",
|
||||
"calculate",
|
||||
"algebra",
|
||||
"x",
|
||||
"parentheses",
|
||||
"parenthesis",
|
||||
"brackets"
|
||||
],
|
||||
"categories": [
|
||||
"development",
|
||||
"maths"
|
||||
]
|
||||
}
|
||||
16
icons/variable.svg
Normal 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 |
@@ -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 |
@@ -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 |
@@ -77,7 +77,7 @@
|
||||
"zone.js": "~0.11.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "13.x - 15.x",
|
||||
"@angular/core": "13.x - 15.x"
|
||||
"@angular/common": "13.x - 16.x",
|
||||
"@angular/core": "13.x - 16.x"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
29
site/src/pages/api/gh-icon/stroke-width/[...data].tsx
Normal file
@@ -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);
|
||||
}
|
||||