Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95a7d8648f | ||
|
|
b07eb8c00d | ||
|
|
40cb396a6c | ||
|
|
87ab0bfb62 | ||
|
|
c4f50417d5 | ||
|
|
0ca1b98689 | ||
|
|
7ce35bac34 | ||
|
|
7bd41d9b48 | ||
|
|
5ec34cb249 | ||
|
|
4024911219 | ||
|
|
acea1b4116 | ||
|
|
ec3542dab8 | ||
|
|
51cf68c11f | ||
|
|
0c460bc3dd | ||
|
|
7e91be9e38 | ||
|
|
d042899a06 | ||
|
|
891115f6fd | ||
|
|
8ce52d834d | ||
|
|
b6ea440d70 | ||
|
|
a3125d53cb | ||
|
|
a7e8b3bcb7 | ||
|
|
c4dfe6b8cb | ||
|
|
90e86767d8 | ||
|
|
30f7be3fd4 | ||
|
|
313b46ecc1 | ||
|
|
367f89ef1f | ||
|
|
32ba19d591 | ||
|
|
5d945372d4 | ||
|
|
736b888608 | ||
|
|
fc03912eef | ||
|
|
0864092670 | ||
|
|
400f7871d2 | ||
|
|
0ce207bc2f | ||
|
|
8c85053002 | ||
|
|
a453c61aa5 | ||
|
|
5ad6f5bba3 | ||
|
|
68b91149f2 | ||
|
|
c50b8181a0 | ||
|
|
1db690953b | ||
|
|
cef1e1aafa | ||
|
|
d29667ed99 | ||
|
|
d31c2a2f2a | ||
|
|
e4a86687e2 | ||
|
|
2d9eee74c5 | ||
|
|
0668f8aebe | ||
|
|
330d7beb60 | ||
|
|
77f0243446 | ||
|
|
2c7fa08503 | ||
|
|
998199085e | ||
|
|
f9cf015e20 | ||
|
|
97677113e3 | ||
|
|
1f7d367afc | ||
|
|
1846b8b4ae | ||
|
|
3bedf3ba36 | ||
|
|
4352e985df | ||
|
|
e1936fb938 | ||
|
|
de815a7305 |
99
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
name: Release to NPM
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-deploy:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Get the version
|
||||||
|
id: get_version
|
||||||
|
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/\v}
|
||||||
|
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
clean: true
|
||||||
|
|
||||||
|
- name: Set Auth Token
|
||||||
|
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
|
||||||
|
|
||||||
|
# Build lucide
|
||||||
|
- name: Install Dependencies Lucide
|
||||||
|
run: yarn --pure-lockfile
|
||||||
|
|
||||||
|
- name: Build lucide package
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
- name: Test lucide package
|
||||||
|
run: yarn test
|
||||||
|
|
||||||
|
# Build lucide-react
|
||||||
|
- name: Install Dependencies lucide-react
|
||||||
|
run: yarn --pure-lockfile
|
||||||
|
working-directory: packages/lucide-react
|
||||||
|
|
||||||
|
- name: Build lucide-react
|
||||||
|
run: yarn build
|
||||||
|
working-directory: packages/lucide-react
|
||||||
|
|
||||||
|
- name: Test lucide-react
|
||||||
|
run: yarn test
|
||||||
|
working-directory: packages/lucide-react
|
||||||
|
|
||||||
|
# Build lucide-vue
|
||||||
|
- name: Install Dependencies lucide-vue
|
||||||
|
run: yarn --pure-lockfile
|
||||||
|
working-directory: packages/lucide-vue
|
||||||
|
|
||||||
|
- name: Build lucide-vue
|
||||||
|
run: yarn build
|
||||||
|
working-directory: packages/lucide-vue
|
||||||
|
|
||||||
|
- name: Test lucide-vue
|
||||||
|
run: yarn test
|
||||||
|
working-directory: packages/lucide-vue
|
||||||
|
|
||||||
|
# Publish lucide
|
||||||
|
- name: Set package.json version lucide
|
||||||
|
run: yarn version --new-version ${{ steps.get_version.outputs.VERSION }} --no-git-tag-version
|
||||||
|
|
||||||
|
- name: publish lucide
|
||||||
|
run: yarn publish
|
||||||
|
|
||||||
|
# Publish lucide-react
|
||||||
|
- name: Set package.json version lucide-react
|
||||||
|
run: yarn version --new-version ${{ steps.get_version.outputs.VERSION }} --no-git-tag-version
|
||||||
|
working-directory: packages/lucide-react
|
||||||
|
|
||||||
|
- name: publish lucide-react
|
||||||
|
run: yarn publish
|
||||||
|
working-directory: packages/lucide-react
|
||||||
|
|
||||||
|
# Publish lucide-vue
|
||||||
|
- name: Set package.json version lucide-vue
|
||||||
|
run: yarn version --new-version ${{ steps.get_version.outputs.VERSION }} --no-git-tag-version
|
||||||
|
working-directory: packages/lucide-vue
|
||||||
|
|
||||||
|
- name: publish lucide-vue
|
||||||
|
run: yarn publish
|
||||||
|
working-directory: packages/lucide-vue
|
||||||
|
|
||||||
|
- name: Commit package.json
|
||||||
|
run: |
|
||||||
|
git add package.json
|
||||||
|
git add packages/lucide-react/package.json
|
||||||
|
git add packages/lucide-vue/package.json
|
||||||
|
git -c user.name="Lucide Bot" -c user.email="lucide-bot@users.noreply.github.com" \
|
||||||
|
commit -m ":package: Bump version to ${{ steps.get_version.outputs.VERSION }}" --no-verify --quiet
|
||||||
|
git remote set-url --push origin https://lucide-bot:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git
|
||||||
|
git push origin HEAD:master
|
||||||
|
|
||||||
@@ -5,3 +5,12 @@ node_modules
|
|||||||
tests
|
tests
|
||||||
scripts
|
scripts
|
||||||
site
|
site
|
||||||
|
src
|
||||||
|
build
|
||||||
|
babel.config.js
|
||||||
|
categories.json
|
||||||
|
jest.config.js
|
||||||
|
netlify.toml
|
||||||
|
rollup.config.js
|
||||||
|
rollup.plugins.js
|
||||||
|
tags.json
|
||||||
|
|||||||
23
README.md
@@ -1,4 +1,4 @@
|
|||||||
<p align=center><img width="410" src="https://lucide.netlify.app/logo-text.svg" alt="Lucide Logo"></p>
|
<p align=center><img width="410" src="https://lucide.dev/logo-text.svg" alt="Lucide Logo"></p>
|
||||||
|
|
||||||
# Lucide
|
# Lucide
|
||||||
|
|
||||||
@@ -22,6 +22,7 @@ Lucide is a community-run fork of [Feather Icons](https://github.com/feathericon
|
|||||||
* [Treeshake library](#treeshake-the-library-only-use-the-icons-you-use)
|
* [Treeshake library](#treeshake-the-library-only-use-the-icons-you-use)
|
||||||
* [Custom binding](#custom-element-binding)
|
* [Custom binding](#custom-element-binding)
|
||||||
* [React](#with-react)
|
* [React](#with-react)
|
||||||
|
* [Vue](#with-vue)
|
||||||
* [Figma](#figma)
|
* [Figma](#figma)
|
||||||
* [Contributing](#contributing)
|
* [Contributing](#contributing)
|
||||||
* [Community](#community)
|
* [Community](#community)
|
||||||
@@ -163,6 +164,20 @@ npm install lucide-react
|
|||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/blob/master/packages/lucide-react/README.md).
|
For more details, see the [documentation](https://github.com/lucide-icons/lucide/blob/master/packages/lucide-react/README.md).
|
||||||
|
|
||||||
|
### With Vue
|
||||||
|
|
||||||
|
You can also use the Lucide library using the Vue package.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add lucide-vue
|
||||||
|
|
||||||
|
# or
|
||||||
|
|
||||||
|
npm install lucide-vue
|
||||||
|
```
|
||||||
|
|
||||||
|
For more details, see the [documentation](https://github.com/lucide-icons/lucide/blob/master/packages/lucide-vue/README.md).
|
||||||
|
|
||||||
### Figma
|
### Figma
|
||||||
|
|
||||||
You can use the components from [this Figma file](https://www.figma.com/file/g0UipfQlRfGrntKPxZknM7/Featherity).
|
You can use the components from [this Figma file](https://www.figma.com/file/g0UipfQlRfGrntKPxZknM7/Featherity).
|
||||||
@@ -180,3 +195,9 @@ Join the community on our [Discord](https://discord.gg/EH6nSts) server!
|
|||||||
## License
|
## License
|
||||||
|
|
||||||
Lucide is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/master/LICENSE).
|
Lucide is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/master/LICENSE).
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://vercel.com?utm_source=lucide&utm_campaign=oss">
|
||||||
|
<img src="./site/public/vercel.svg" alt="Powered by Vercel" width="200" />
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|||||||
18
icons/alarm-check.svg
Normal 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"
|
||||||
|
>
|
||||||
|
<path d="M12 21a8 8 0 100-16 8 8 0 000 16z" />
|
||||||
|
<path d="M5 3L2 6" />
|
||||||
|
<path d="M22 6l-3-3" />
|
||||||
|
<path d="M6 19l-2 2" />
|
||||||
|
<path d="M18 19l2 2" />
|
||||||
|
<path d="M9 13l2 2 4-4" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 388 B |
18
icons/alarm-minus.svg
Normal 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"
|
||||||
|
>
|
||||||
|
<path d="M12 21a8 8 0 100-16 8 8 0 000 16z" />
|
||||||
|
<path d="M5 3L2 6" />
|
||||||
|
<path d="M22 6l-3-3" />
|
||||||
|
<path d="M6 19l-2 2" />
|
||||||
|
<path d="M18 19l2 2" />
|
||||||
|
<path d="M8 13h8" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 382 B |
19
icons/alarm-plus.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="M12 21a8 8 0 100-16 8 8 0 000 16z" />
|
||||||
|
<path d="M5 3L2 6" />
|
||||||
|
<path d="M22 6l-3-3" />
|
||||||
|
<path d="M6 19l-2 2" />
|
||||||
|
<path d="M18 19l2 2" />
|
||||||
|
<path d="M12 9v8" />
|
||||||
|
<path d="M8 13h8" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 405 B |
13
icons/arrow-big-down.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="M9 3h6v11h4l-7 7-7-7h4z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 247 B |
13
icons/arrow-big-left.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 12l7-7v4h11v6H10v4z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 246 B |
13
icons/arrow-big-right.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="M21 12l-7-7v4H3v6h11v4z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 247 B |
13
icons/arrow-big-up.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="M9 21V10H5l7-7 7 7h-4v11z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 249 B |
15
icons/asterisk.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="M12 6v12" />
|
||||||
|
<path d="M17.196 9L6.804 15" />
|
||||||
|
<path d="M6.804 9l10.392 6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 299 B |
@@ -9,6 +9,6 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="m14 12-8.501 8.501c-0.828 0.828-2.17 0.828-2.998 0-1e-3 -1e-3 -1e-3 -1e-3 -2e-3 -0-0.828-0.828-0.828-2.17 0-2.998l8.501-8.501" />
|
<path d="M14 12l-8.501 8.501a2.12 2.12 0 01-2.998 0h-.002a2.12 2.12 0 010-2.998L11 9.002" />
|
||||||
<path d="m9 7 4-4 6 6h3s-0.051 0.254-0.13 0.648c-0.538 2.691-2.477 4.888-5.081 5.756-1.003 0.334-1.789 0.596-1.789 0.596v-3z" />
|
<path d="M9 7l4-4 6 6h3l-.13.648a7.648 7.648 0 01-5.081 5.756L15 16v-3z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 480 B After Width: | Height: | Size: 381 B |
15
icons/bell-minus.svg
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
>
|
||||||
|
<path d="M13.73 21a2 2 0 01-3.46 0" />
|
||||||
|
<path d="M21 5h-6" />
|
||||||
|
<path d="M18.021 9C18.29 15.193 21 17 21 17H3s3-2 3-9a6 6 0 017-5.916" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 349 B |
@@ -10,8 +10,8 @@
|
|||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M13.73 21a2 2 0 01-3.46 0" />
|
<path d="M13.73 21a2 2 0 01-3.46 0" />
|
||||||
<path d="M18.63 13A17.89 17.89 0 0 1 18 8" />
|
<path d="M18.63 13A17.888 17.888 0 0118 8" />
|
||||||
<path d="M6.26 6.26A5.86 5.86 0 006 8c0 7-3 9-3 9h14" />
|
<path d="M6.26 6.26A5.86 5.86 0 006 8c0 7-3 9-3 9h14" />
|
||||||
<path d="M18 8a6 6 0 00-9.33-5" />
|
<path d="M18 8a6 6 0 00-9.33-5" />
|
||||||
<line x1="1" y1="1" x2="23" y2="23" />
|
<path d="M2 2l20 20" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 438 B After Width: | Height: | Size: 419 B |
16
icons/bell-plus.svg
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
>
|
||||||
|
<path d="M18.387 12C19.198 15.799 21 17 21 17H3s3-2 3-9a6 6 0 017-5.916" />
|
||||||
|
<path d="M13.73 21a2 2 0 01-3.46 0" />
|
||||||
|
<path d="M18 2v6" />
|
||||||
|
<path d="M21 5h-6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 374 B |
@@ -11,5 +11,5 @@
|
|||||||
>
|
>
|
||||||
<circle cx="5.5" cy="17.5" r="3.5" />
|
<circle cx="5.5" cy="17.5" r="3.5" />
|
||||||
<circle cx="18.5" cy="17.5" r="3.5" />
|
<circle cx="18.5" cy="17.5" r="3.5" />
|
||||||
<path d="M15 6a1 1 0 100-2 1 1 0 000 2zM12 17.5V14l-3-3 4-3 2 3h2" />
|
<path d="M15 6a1 1 0 100-2 1 1 0 000 2zm-3 11.5V14l-3-3 4-3 2 3h2" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 361 B |
16
icons/binary.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="M10 4H6v6h4V4z" />
|
||||||
|
<path d="M18 14h-4v6h4v-6z" />
|
||||||
|
<path d="M14 4h2v6m-2 0h4" />
|
||||||
|
<path d="M6 14h2v6m-2 0h4" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 335 B |
@@ -9,7 +9,7 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M7 7L17 17L12 22V2L17 7L7 17" />
|
<path d="M7 7l10 10-5 5V2l5 5L7 17" />
|
||||||
<line x1="18" y1="12" y2="12" x2="21" />
|
<line x1="18" y1="12" y2="12" x2="21" />
|
||||||
<line x1="3" y1="12" y2="12" x2="6" />
|
<line x1="3" y1="12" y2="12" x2="6" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 333 B |
@@ -9,7 +9,7 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M17 17L12 22V12L7 17" />
|
<path d="M17 17l-5 5V12l-5 5" />
|
||||||
<path d="M2 2L22 22" />
|
<path d="M2 2l20 20" />
|
||||||
<path d="M14.5 9.5L17 7L12 2V6.5" />
|
<path d="M14.5 9.5L17 7l-5-5v4.5" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 309 B After Width: | Height: | Size: 308 B |
@@ -9,5 +9,5 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M7 7L17 17L12 22V2L17 7L7 17" />
|
<path d="M7 7l10 10-5 5V2l5 5L7 17" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 252 B After Width: | Height: | Size: 249 B |
@@ -1 +1,14 @@
|
|||||||
<svg width="24" height="24" fill="none" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><path d="M9.06 11.909l8.07-8.073a2.852 2.852 0 014.034 0 2.855 2.855 0 010 4.036l-8.069 8.073m-6.027-1.009c-1.66 0-3.001 1.352-3.001 3.028 0 1.322-2.501 1.513-2 2.018 1.08 1.09 2.49 2.018 4 2.018 2.212 0 4.002-1.806 4.002-4.036 0-1.676-1.34-3.028-3-3.028z"/></svg>
|
<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.06 11.9l8.07-8.06a2.85 2.85 0 114.03 4.03l-8.06 8.08" />
|
||||||
|
<path d="M7.07 14.94c-1.66 0-3 1.35-3 3.02 0 1.33-2.5 1.52-2 2.02 1.08 1.1 2.49 2.02 4 2.02 2.2 0 4-1.8 4-4.04a3.01 3.01 0 00-3-3.02z" />
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 417 B After Width: | Height: | Size: 419 B |
@@ -12,11 +12,11 @@
|
|||||||
<rect x="4" y="2" width="16" height="20" rx="2" />
|
<rect x="4" y="2" width="16" height="20" rx="2" />
|
||||||
<line x1="8" x2="16" y1="6" y2="6" />
|
<line x1="8" x2="16" y1="6" y2="6" />
|
||||||
<line x1="16" x2="16" y1="14" y2="18" />
|
<line x1="16" x2="16" y1="14" y2="18" />
|
||||||
<path d="M16 10H16.01" />
|
<path d="M16 10h.01" />
|
||||||
<path d="M12 10H12.01" />
|
<path d="M12 10h.01" />
|
||||||
<path d="M8 10H8.01" />
|
<path d="M8 10h.01" />
|
||||||
<path d="M12 14H12.01" />
|
<path d="M12 14h.01" />
|
||||||
<path d="M8 14H8.01" />
|
<path d="M8 14h.01" />
|
||||||
<path d="M12 18H12.01" />
|
<path d="M12 18h.01" />
|
||||||
<path d="M8 18H8.01" />
|
<path d="M8 18h.01" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 534 B After Width: | Height: | Size: 523 B |
@@ -13,5 +13,5 @@
|
|||||||
<path d="M8 8c-1.36-1.33-3.15-1.27-4.2-.2a2.7 2.7 0 000 3.81l.38.4-.4.4a2.7 2.7 0 000 3.82C4.85 17.27 6.64 17.33 8 16" />
|
<path d="M8 8c-1.36-1.33-3.15-1.27-4.2-.2a2.7 2.7 0 000 3.81l.38.4-.4.4a2.7 2.7 0 000 3.82C4.85 17.27 6.64 17.33 8 16" />
|
||||||
<path d="M16 16c1.36 1.33 3.15 1.27 4.2.2a2.7 2.7 0 000-3.81l-.38-.4.4-.4a2.7 2.7 0 000-3.82C19.15 6.73 17.36 6.67 16 8" />
|
<path d="M16 16c1.36 1.33 3.15 1.27 4.2.2a2.7 2.7 0 000-3.81l-.38-.4.4-.4a2.7 2.7 0 000-3.82C19.15 6.73 17.36 6.67 16 8" />
|
||||||
<path d="M7.8 20.2a2.7 2.7 0 003.81 0l.4-.38.4.4a2.7 2.7 0 003.82 0c1.06-1.06 1.12-2.85-.21-4.21l-4-4-4 4c-1.33 1.36-1.27 3.15-.2 4.2z" />
|
<path d="M7.8 20.2a2.7 2.7 0 003.81 0l.4-.38.4.4a2.7 2.7 0 003.82 0c1.06-1.06 1.12-2.85-.21-4.21l-4-4-4 4c-1.33 1.36-1.27 3.15-.2 4.2z" />
|
||||||
<path d="M7 17L2 22" />
|
<path d="M7 17l-5 5" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 762 B After Width: | Height: | Size: 762 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 427 B After Width: | Height: | Size: 423 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 310 B After Width: | Height: | Size: 310 B |
13
icons/cross.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="M11 2a2 2 0 00-2 2v5H4a2 2 0 00-2 2v2c0 1.1.9 2 2 2h5v5c0 1.1.9 2 2 2h2a2 2 0 002-2v-5h5a2 2 0 002-2v-2a2 2 0 00-2-2h-5V4a2 2 0 00-2-2h-2z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 362 B |
@@ -9,5 +9,5 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M2 4L5 16H19L22 4L16 11L12 4L8 11L2 4ZM5 20H19" />
|
<path d="M2 4l3 12h14l3-12-6 7-4-7-4 7-6-7zm3 16h14" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 266 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 277 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 303 B After Width: | Height: | Size: 301 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 353 B After Width: | Height: | Size: 346 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 534 B After Width: | Height: | Size: 518 B |
@@ -9,8 +9,8 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M16 16v4a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V10C8 8 6 8 6 6" />
|
<path d="M16 16v4a2 2 0 01-2 2h-4a2 2 0 01-2-2V10c0-2-2-2-2-4" />
|
||||||
<path d="M7 2H18V6c0 2-2 2-2 4v1" />
|
<path d="M7 2h11v4c0 2-2 2-2 4v1" />
|
||||||
<line x1="11" y1="6" x2="18" y2="6" />
|
<line x1="11" y1="6" x2="18" y2="6" />
|
||||||
<line x1="2" y1="2" x2="22" y2="22" />
|
<line x1="2" y1="2" x2="22" y2="22" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 399 B After Width: | Height: | Size: 397 B |
@@ -9,7 +9,7 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M18 6c0 2-2 2-2 4V20a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V10C8 8 6 8 6 6V2H18Z" />
|
<path d="M18 6c0 2-2 2-2 4v10a2 2 0 01-2 2h-4a2 2 0 01-2-2V10c0-2-2-2-2-4V2h12z" />
|
||||||
<line x1="6" y1="6" x2="18" y2="6" />
|
<line x1="6" y1="6" x2="18" y2="6" />
|
||||||
<line x1="12" y1="12" x2="12" y2="12" />
|
<line x1="12" y1="12" x2="12" y2="12" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 379 B After Width: | Height: | Size: 377 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 266 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 371 B After Width: | Height: | Size: 371 B |
18
icons/git-branch-plus.svg
Normal 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"
|
||||||
|
>
|
||||||
|
<path d="M6 3v12" />
|
||||||
|
<path d="M18 9a3 3 0 100-6 3 3 0 000 6z" />
|
||||||
|
<path d="M6 21a3 3 0 100-6 3 3 0 000 6z" />
|
||||||
|
<path d="M15 6a9 9 0 00-9 9" />
|
||||||
|
<path d="M18 15v6" />
|
||||||
|
<path d="M21 18h-6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 406 B |
16
icons/globe-2.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="M15 21v-4a2 2 0 012-2h4" />
|
||||||
|
<path d="M7 4v2a3 3 0 003 2h0a2 2 0 012 2 2 2 0 004 0 2 2 0 012-2h3" />
|
||||||
|
<path d="M3 11h2a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v4" />
|
||||||
|
<circle cx="12" cy="12" r="10" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 420 B |
17
icons/grab.svg
Normal 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="M18 11.5V9a2 2 0 00-2-2v0a2 2 0 00-2 2v1.4" />
|
||||||
|
<path d="M14 10V8a2 2 0 00-2-2v0a2 2 0 00-2 2v2" />
|
||||||
|
<path d="M10 9.9V9a2 2 0 00-2-2v0a2 2 0 00-2 2v5" />
|
||||||
|
<path d="M6 14v0a2 2 0 00-2-2v0a2 2 0 00-2 2v0" />
|
||||||
|
<path d="M18 11v0a2 2 0 114 0v3a8 8 0 01-8 8h-4a8 8 0 01-8-8 2 2 0 114 0" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 507 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 432 B |
15
icons/history.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 3v5h5" />
|
||||||
|
<path d="M3.05 13A9 9 0 106 5.3L3 8" />
|
||||||
|
<path d="M12 7v5l4 2" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 301 B |
16
icons/image-minus.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="M21 11v8a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h8" />
|
||||||
|
<path d="M8.5 10a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" />
|
||||||
|
<path d="M21 15l-5-5L5 21" />
|
||||||
|
<path d="M22 5h-6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 388 B |
17
icons/image-plus.svg
Normal 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="M21 11v8a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h8" />
|
||||||
|
<path d="M8.5 10a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" />
|
||||||
|
<path d="M21 15l-5-5L5 21" />
|
||||||
|
<path d="M19 2v6" />
|
||||||
|
<path d="M22 5h-6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 411 B |
13
icons/infinity.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="M18.178 8c5.096 0 5.096 8 0 8-5.095 0-7.133-8-12.739-8-4.585 0-4.585 8 0 8 5.606 0 7.644-8 12.74-8z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 323 B |
15
icons/inspect.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="M19 11V4a2 2 0 00-2-2H4a2 2 0 00-2 2v13a2 2 0 002 2h7" />
|
||||||
|
<path d="M12 12l4.166 10 1.48-4.355L22 16.166 12 12z" />
|
||||||
|
<path d="M18 18l3 3" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 362 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 340 B |
@@ -9,10 +9,10 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<line x1="5" y1="8" x2="11" y2="14" />
|
<path d="M5 8l6 6" />
|
||||||
<path d="M4 14l6-6 2-3" />
|
<path d="M4 14l6-6 2-3" />
|
||||||
<line x1="2" y1="5" x2="14" y2="5" />
|
<path d="M2 5h12" />
|
||||||
<line x1="7" y1="2" x2="8" y2="2" />
|
<path d="M7 2h1" />
|
||||||
<path d="M22 21l-5-10-5 10" />
|
<path d="M22 22l-5-10-5 10" />
|
||||||
<line x1="14" y1="17" x2="20" y2="17" />
|
<path d="M14 18h6" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 433 B After Width: | Height: | Size: 363 B |
@@ -9,8 +9,8 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M16 6L20 20" />
|
<path d="M16 6l4 14" />
|
||||||
<path d="M12 6V20" />
|
<path d="M12 6v14" />
|
||||||
<path d="M8 8V20" />
|
<path d="M8 8v12" />
|
||||||
<path d="M4 4V20" />
|
<path d="M4 4v16" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 304 B |
@@ -12,7 +12,7 @@
|
|||||||
<line x1="10" y1="6" x2="21" y2="6" />
|
<line x1="10" y1="6" x2="21" y2="6" />
|
||||||
<line x1="10" y1="12" x2="21" y2="12" />
|
<line x1="10" y1="12" x2="21" y2="12" />
|
||||||
<line x1="10" y1="18" x2="21" y2="18" />
|
<line x1="10" y1="18" x2="21" y2="18" />
|
||||||
<path d="M4 6H5V10" />
|
<path d="M4 6h1v4" />
|
||||||
<path d="M4 10H6" />
|
<path d="M4 10h2" />
|
||||||
<path d="M6 18H4C4 17 6 16 6 15C6 13.9999 5 13.5 4 14" />
|
<path d="M6 18H4c0-1 2-2 2-3s-1-1.5-2-1" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 443 B After Width: | Height: | Size: 428 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 372 B |
@@ -9,5 +9,5 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M4 4l7.07 17 2.51-7.39L21 11.07Z" />
|
<path d="M4 4l7.07 17 2.51-7.39L21 11.07z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 256 B |
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
width="24"
|
width="24"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 330 B After Width: | Height: | Size: 329 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 308 B After Width: | Height: | Size: 308 B |
@@ -12,5 +12,5 @@
|
|||||||
<rect x="9" y="2" width="6" height="6" />
|
<rect x="9" y="2" width="6" height="6" />
|
||||||
<rect x="16" y="16" width="6" height="6" />
|
<rect x="16" y="16" width="6" height="6" />
|
||||||
<rect x="2" y="16" width="6" height="6" />
|
<rect x="2" y="16" width="6" height="6" />
|
||||||
<path d="M12 8V12M12 12H5V16M12 12H19V16" />
|
<path d="M12 8v4m0 0H5v4m7-4h7v4" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 390 B After Width: | Height: | Size: 382 B |
14
icons/option.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 3h6l6 18h6" />
|
||||||
|
<path d="M14 3h7" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 260 B |
@@ -9,9 +9,9 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<circle cx="13.5" cy="6.5" r="0.5" />
|
<circle cx="13.5" cy="6.5" r=".5" />
|
||||||
<circle cx="17.5" cy="10.5" r="0.5" />
|
<circle cx="17.5" cy="10.5" r=".5" />
|
||||||
<circle cx="8.5" cy="7.5" r="0.5" />
|
<circle cx="8.5" cy="7.5" r=".5" />
|
||||||
<circle cx="6.5" cy="12.5" r="0.5" />
|
<circle cx="6.5" cy="12.5" r=".5" />
|
||||||
<path d="M12 2.0C6.5 2.0 2 6.5 2 12C2 17.5 6.5 22 12 22C12.9258 22 13.6484 21.2539 13.6484 20.3125C13.6484 19.875 13.4687 19.4766 13.2109 19.1875C12.9219 18.8984 12.7734 18.5352 12.7734 18.0625C12.7734 17.1172 13.5 16.3945 14.4414 16.3945H16.4375C19.4883 16.3945 21.9922 13.8906 21.9922 10.8398C21.9648 6.01172 17.4609 2.0 12 2.0Z" />
|
<path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 011.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 705 B After Width: | Height: | Size: 594 B |
14
icons/pencil.svg
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
>
|
||||||
|
<line x1="18" y1="2" x2="22" y2="6" />
|
||||||
|
<path d="M7.5 20.5L19 9l-4-4L3.5 16.5 2 22l5.5-1.5z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 307 B |
@@ -9,5 +9,5 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M17.8 19.2L16 11L19.5 7.5C21 6 21.5 4 21 3C20 2.5 18 3 16.5 4.5L13 8L4.8 6.2C4.3 6.1 3.9 6.3 3.7 6.7L3.4 7.2C3.2 7.7 3.3 8.2 3.7 8.5L9 12L7 15H4L3 16L6 18L8 21L9 20V17L12 15L15.5 20.3C15.8 20.7 16.3 20.8 16.8 20.6L17.3 20.4C17.7 20.1 17.9 19.7 17.8 19.2Z" />
|
<path d="M17.8 19.2L16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 478 B After Width: | Height: | Size: 421 B |
16
icons/podcast.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"
|
||||||
|
>
|
||||||
|
<circle cx="12" cy="11" r="1" />
|
||||||
|
<path d="M17.03 18.46a9 9 0 10-10.02.03" />
|
||||||
|
<path d="M16.06 13.91a5 5 0 10-7.97.2" />
|
||||||
|
<path d="M11.11 17a.9.9 0 111.78 0l-.52 4.67a.37.37 0 01-.74 0l-.52-4.68z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 413 B |
17
icons/pointer.svg
Normal 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="M22 14a8 8 0 01-8 8" />
|
||||||
|
<path d="M18 11v-1a2 2 0 00-2-2v0a2 2 0 00-2 2v0" />
|
||||||
|
<path d="M14 10V9a2 2 0 00-2-2v0a2 2 0 00-2 2v1" />
|
||||||
|
<path d="M10 9.5V4a2 2 0 00-2-2v0a2 2 0 00-2 2v10" />
|
||||||
|
<path d="M18 11a2 2 0 114 0v3a8 8 0 01-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 012.83-2.82L7 15" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 517 B |
@@ -10,14 +10,14 @@
|
|||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<rect x="2" y="2" width="8" height="8" />
|
<rect x="2" y="2" width="8" height="8" />
|
||||||
<path d="M6 6H6.01" />
|
<path d="M6 6h.01" />
|
||||||
<rect x="14" y="2" width="8" height="8" />
|
<rect x="14" y="2" width="8" height="8" />
|
||||||
<path d="M18 6H18.01" />
|
<path d="M18 6h.01" />
|
||||||
<rect x="2" y="14" width="8" height="8" />
|
<rect x="2" y="14" width="8" height="8" />
|
||||||
<path d="M6 18H6.01" />
|
<path d="M6 18h.01" />
|
||||||
<path d="M14 14H14.01" />
|
<path d="M14 14h.01" />
|
||||||
<path d="M18 18H18.01" />
|
<path d="M18 18h.01" />
|
||||||
<path d="M18 22L22 22L22 18" />
|
<path d="M18 22h4v-4" />
|
||||||
<path d="M14 18V22" />
|
<path d="M14 18v4" />
|
||||||
<path d="M22 14L18 14" />
|
<path d="M22 14h-4" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 563 B After Width: | Height: | Size: 544 B |
16
icons/radio-receiver.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="M5 16v2" />
|
||||||
|
<path d="M19 16v2" />
|
||||||
|
<rect x="2" y="8" width="20" height="8" rx="2" />
|
||||||
|
<path d="M18 12h0" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 331 B |
@@ -10,5 +10,5 @@
|
|||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polyline points="22 10 22 16 16 16" />
|
<polyline points="22 10 22 16 16 16" />
|
||||||
<path d="m1.9935 16c1.8136-6.5424 9.5593-9.4823 15.36-4.36l4.64 4.36" />
|
<path d="M1.994 16c1.813-6.542 9.559-9.482 15.36-4.36l4.64 4.36" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 320 B |
@@ -9,7 +9,8 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polyline points="1 4 1 10 7 10" />
|
<path d="M3 2v6h6" />
|
||||||
<polyline points="23 20 23 14 17 14" />
|
<path d="M21 12A9 9 0 006 5.3L3 8" />
|
||||||
<path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15" />
|
<path d="M21 22v-6h-6" />
|
||||||
|
<path d="M3 12a9 9 0 0015 6.7l3-2.7" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 371 B After Width: | Height: | Size: 342 B |
@@ -9,7 +9,8 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polyline points="23 4 23 10 17 10" />
|
<path d="M21 2v6h-6" />
|
||||||
<polyline points="1 20 1 14 7 14" />
|
<path d="M3 12a9 9 0 0115-6.7L21 8" />
|
||||||
<path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15" />
|
<path d="M3 22v-6h6" />
|
||||||
|
<path d="M21 12a9 9 0 01-15 6.7L3 16" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 344 B |
16
icons/regex.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="M17 3v10" />
|
||||||
|
<path d="M12.67 5.5l8.66 5" />
|
||||||
|
<path d="M12.67 10.5l8.66-5" />
|
||||||
|
<path d="M9 17a2 2 0 00-2-2H5a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2v-2z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 380 B |
17
icons/repeat-1.svg
Normal 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="M17 2l4 4-4 4" />
|
||||||
|
<path d="M3 11v-1a4 4 0 014-4h14" />
|
||||||
|
<path d="M7 22l-4-4 4-4" />
|
||||||
|
<path d="M21 13v1a4 4 0 01-4 4H3" />
|
||||||
|
<path d="M11 10h1v4" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 371 B |
@@ -9,8 +9,8 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polyline points="17 1 21 5 17 9" />
|
<path d="M17 2l4 4-4 4" />
|
||||||
<path d="M3 11V9a4 4 0 0 1 4-4h14" />
|
<path d="M3 11v-1a4 4 0 014-4h14" />
|
||||||
<polyline points="7 23 3 19 7 15" />
|
<path d="M7 22l-4-4 4-4" />
|
||||||
<path d="M21 13v2a4 4 0 0 1-4 4H3" />
|
<path d="M21 13v1a4 4 0 01-4 4H3" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 366 B After Width: | Height: | Size: 345 B |
@@ -9,6 +9,6 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polyline points="1 4 1 10 7 10" />
|
<path d="M3 2v6h6" />
|
||||||
<path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10" />
|
<path d="M3 13a9 9 0 103-7.7L3 8" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 295 B After Width: | Height: | Size: 271 B |
@@ -9,6 +9,6 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polyline points="23 4 23 10 17 10" />
|
<path d="M21 2v6h-6" />
|
||||||
<path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10" />
|
<path d="M21 13a9 9 0 11-3-7.7L21 8" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 276 B |
@@ -9,9 +9,9 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="m16.0 2.0 6 6-14 14-6-6 14-14" />
|
<path d="M16 2l6 6L8 22l-6-6L16 2" />
|
||||||
<path d="m7.5 10.5 2 2" />
|
<path d="M7.5 10.5l2 2" />
|
||||||
<path d="m10.5 7.5 2 2" />
|
<path d="M10.5 7.5l2 2" />
|
||||||
<path d="m13.5 4.5 2 2" />
|
<path d="M13.5 4.5l2 2" />
|
||||||
<path d="m4.5 13.5 2 2" />
|
<path d="M4.5 13.5l2 2" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 379 B After Width: | Height: | Size: 364 B |
17
icons/server-crash.svg
Normal 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="M6 10H4a2 2 0 01-2-2V4a2 2 0 012-2h16a2 2 0 012 2v4a2 2 0 01-2 2h-2" />
|
||||||
|
<path d="M6 14H4a2 2 0 00-2 2v4a2 2 0 002 2h16a2 2 0 002-2v-4a2 2 0 00-2-2h-2" />
|
||||||
|
<path d="M6 6h.01" />
|
||||||
|
<path d="M6 18h.01" />
|
||||||
|
<path d="M13 6l-4 6h6l-4 6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 457 B |
18
icons/server-off.svg
Normal 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"
|
||||||
|
>
|
||||||
|
<path d="M7 2h13a2 2 0 012 2v4a2 2 0 01-2 2h-5" />
|
||||||
|
<path d="M10 10L2.5 2.5C2 2 2 2.5 2 5v3a2 2 0 002 2h6z" />
|
||||||
|
<path d="M22 17v-1a2 2 0 00-2-2h-1" />
|
||||||
|
<path d="M4 14a2 2 0 00-2 2v4a2 2 0 002 2h16.5l1-.5.5.5-8-8H4z" />
|
||||||
|
<path d="M6 18h.01" />
|
||||||
|
<path d="M2 2l20 20" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 483 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 432 B |
15
icons/shield-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="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
|
||||||
|
<path d="M12 8v4" />
|
||||||
|
<path d="M12 16h.01" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 316 B |
14
icons/shield-check.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="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
|
||||||
|
<path d="M9 12l2 2 4-4" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 296 B |
15
icons/shield-close.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="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
|
||||||
|
<line x1="9.5" y1="9" x2="14.5" y2="14" />
|
||||||
|
<line x1="14.5" y1="9" x2="9.5" y2="14" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 357 B |
13
icons/sigma.svg
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
>
|
||||||
|
<path d="M18 7V4H6l6 8-6 8h12v-3" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 247 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 369 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 331 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 331 B |
16
icons/sprout.svg
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
>
|
||||||
|
<path d="M7 20h10" />
|
||||||
|
<path d="M10 20c5.5-2.5.8-6.4 3-10" />
|
||||||
|
<path d="M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z" />
|
||||||
|
<path d="M14.1 6a7 7 0 00-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 475 B |
@@ -9,7 +9,7 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M16 4H9A3 3 0 0 0 6.17 8" />
|
<path d="M16 4H9a3 3 0 00-2.83 4" />
|
||||||
<path d="M14 12a4 4 0 010 8H6" />
|
<path d="M14 12a4 4 0 010 8H6" />
|
||||||
<line x1="4" y1="12" x2="20" y2="12" />
|
<line x1="4" y1="12" x2="20" y2="12" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 325 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
viewBox="0 0 24 24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 392 B |
@@ -1,8 +1,8 @@
|
|||||||
<svg
|
<svg
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
width="24"
|
||||||
height="24"
|
height="24"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
fill="none"
|
fill="none"
|
||||||
stroke="currentColor"
|
stroke="currentColor"
|
||||||
stroke-width="2"
|
stroke-width="2"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 357 B After Width: | Height: | Size: 357 B |
@@ -9,7 +9,7 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M10 17h4V5H2v12h3M20 17h2v-3.34a4 4 0 00-1.17-2.83L19 9h-5v8h1" />
|
<path d="M10 17h4V5H2v12h3m15 0h2v-3.34a4 4 0 00-1.17-2.83L19 9h-5v8h1" />
|
||||||
<circle cx="7.5" cy="17.5" r="2.5" />
|
<circle cx="7.5" cy="17.5" r="2.5" />
|
||||||
<circle cx="17.5" cy="17.5" r="2.5" />
|
<circle cx="17.5" cy="17.5" r="2.5" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 367 B After Width: | Height: | Size: 366 B |
14
icons/tv-2.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="M7 21h10" />
|
||||||
|
<rect x="2" y="3" width="20" height="14" rx="2" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 285 B |
@@ -9,6 +9,6 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M6,4v6a6,6,0,0,0,12,0V4" />
|
<path d="M6 4v6a6 6 0 0012 0V4" />
|
||||||
<line x1="4" y1="20" x2="20" y2="20" />
|
<line x1="4" y1="20" x2="20" y2="20" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 289 B After Width: | Height: | Size: 287 B |
@@ -10,5 +10,5 @@
|
|||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polyline points="2 10 2 16 8 16" />
|
<polyline points="2 10 2 16 8 16" />
|
||||||
<path d="m22 16c-1.8136-6.5424-9.5593-9.4823-15.36-4.36l-4.64 4.36" />
|
<path d="M22 16c-1.814-6.542-9.56-9.482-15.36-4.36L2 16" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 320 B After Width: | Height: | Size: 309 B |
15
icons/wallet.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="M20 12V8H6a2 2 0 01-2-2c0-1.1.9-2 2-2h12v4" />
|
||||||
|
<path d="M4 6v12c0 1.1.9 2 2 2h14v-4" />
|
||||||
|
<path d="M18 12a2 2 0 00-2 2c0 1.1.9 2 2 2h4v-4h-4z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 367 B |
15
icons/webcam.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="10" r="8" />
|
||||||
|
<circle cx="12" cy="10" r="3" />
|
||||||
|
<path d="M12 22v-4m-5 4h5-5zm10 0h-5 5z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 324 B |
22
package.json
@@ -1,12 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "lucide",
|
"name": "lucide",
|
||||||
"description": "Lucide is a community-run fork of Feather Icons, open for anyone to contribute icons.",
|
"description": "Lucide is a community-run fork of Feather Icons, open for anyone to contribute icons.",
|
||||||
"version": "0.12.0",
|
"version": "0.14.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"homepage": "https://lucide.netlify.app",
|
"homepage": "https://lucide.dev",
|
||||||
"repository": "github:lucide-icons/lucide",
|
"bugs": "https://github.com/lucide-icons/lucide/issues",
|
||||||
"bugs": {
|
"repository": {
|
||||||
"url": "https://github.com/lucide-icons/lucide/issues"
|
"type": "git",
|
||||||
|
"url": "https://github.com/lucide-icons/lucide.git"
|
||||||
},
|
},
|
||||||
"amdName": "lucide",
|
"amdName": "lucide",
|
||||||
"source": "build/lucide.js",
|
"source": "build/lucide.js",
|
||||||
@@ -24,6 +25,7 @@
|
|||||||
"build:es": "babel build -d dist/esm",
|
"build:es": "babel build -d dist/esm",
|
||||||
"build:bundles": "rollup -c rollup.config.js",
|
"build:bundles": "rollup -c rollup.config.js",
|
||||||
"optimize": "npx babel-node ./scripts/optimizeSvgs.js --presets @babel/env",
|
"optimize": "npx babel-node ./scripts/optimizeSvgs.js --presets @babel/env",
|
||||||
|
"addtags": "npx babel-node ./scripts/addMissingKeysToTags.js --presets @babel/env",
|
||||||
"test": "jest"
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -46,7 +48,9 @@
|
|||||||
"eslint-plugin-prettier": "^2.5.0",
|
"eslint-plugin-prettier": "^2.5.0",
|
||||||
"html-minifier": "^3.5.8",
|
"html-minifier": "^3.5.8",
|
||||||
"htmlparser2": "^4.1.0",
|
"htmlparser2": "^4.1.0",
|
||||||
|
"husky": "^4.3.6",
|
||||||
"jest": "^26.4.2",
|
"jest": "^26.4.2",
|
||||||
|
"lint-staged": "^10.5.3",
|
||||||
"minimist": "^1.2.5",
|
"minimist": "^1.2.5",
|
||||||
"prettier": "1.17.1",
|
"prettier": "1.17.1",
|
||||||
"rollup": "^2.7.3",
|
"rollup": "^2.7.3",
|
||||||
@@ -57,5 +61,13 @@
|
|||||||
"rollup-plugin-terser": "^5.2.0",
|
"rollup-plugin-terser": "^5.2.0",
|
||||||
"rollup-plugin-visualizer": "^4.1.0",
|
"rollup-plugin-visualizer": "^4.1.0",
|
||||||
"svgo": "^1.3.2"
|
"svgo": "^1.3.2"
|
||||||
|
},
|
||||||
|
"husky": {
|
||||||
|
"hooks": {
|
||||||
|
"pre-commit": "lint-staged"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"icons/*.svg": "npx babel-node ./scripts/optimizeStagedSvgs.js --presets @babel/env"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
25
packages/lucide-figma/README.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Lucide Figma plugin
|
||||||
|
|
||||||
|
A Figma plugin for using Lucide Icons
|
||||||
|
|
||||||
|
## Local development
|
||||||
|
|
||||||
|
1. Install the dependencies
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Build the plugin
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn watch
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Open the [Figma desktop app](https://www.figma.com/downloads/)
|
||||||
|
|
||||||
|
4. Go to `Menu > Plugins > Development > New Plugin...`
|
||||||
|
|
||||||
|
5. Choose `lucide/packages/lucide-figma/manifest.json`
|
||||||
|
|
||||||
|
6. Run the plugin by going to `Menu > Plugins > Development > Lucide Icons`
|
||||||
BIN
packages/lucide-figma/cover.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
675
packages/lucide-figma/figma.d.ts
vendored
Normal file
@@ -0,0 +1,675 @@
|
|||||||
|
// Global variable with Figma's plugin API.
|
||||||
|
declare const figma: PluginAPI
|
||||||
|
declare const __html__: string
|
||||||
|
|
||||||
|
interface PluginAPI {
|
||||||
|
readonly currentPage: PageNode
|
||||||
|
|
||||||
|
// Root of the current Figma document.
|
||||||
|
readonly root: DocumentNode
|
||||||
|
|
||||||
|
// API for accessing viewport information.
|
||||||
|
readonly viewport: ViewportAPI
|
||||||
|
|
||||||
|
// call this once your plugin is finished executing.
|
||||||
|
closePlugin(): void
|
||||||
|
|
||||||
|
// Command that the user chose through menu when launching the plugin.
|
||||||
|
readonly command: string
|
||||||
|
|
||||||
|
// Finds a node by its id. If not found, returns null.
|
||||||
|
getNodeById(id: string): BaseNode | null
|
||||||
|
|
||||||
|
// Finds a style by its id. If not found, returns null.
|
||||||
|
getStyleById(id: string): BaseStyle | null
|
||||||
|
|
||||||
|
// Access browser APIs and/or show UI to the user.
|
||||||
|
showUI(html: string, options?: ShowUIOptions): void
|
||||||
|
readonly ui: UIAPI
|
||||||
|
|
||||||
|
// Lets you store persistent data on the user's local machine
|
||||||
|
readonly clientStorage: ClientStorageAPI
|
||||||
|
|
||||||
|
// This value is returned when a property is in a "mixed" state.
|
||||||
|
// In order to check if a property is in a mixed state, always
|
||||||
|
// compare directly to this value. I.e.
|
||||||
|
// `if (node.cornerRadius === figma.mixed) { ... }`
|
||||||
|
mixed: symbol
|
||||||
|
|
||||||
|
// Creates new nodes. Nodes will start off inserted
|
||||||
|
// into the current page.
|
||||||
|
// To move them elsewhere use `appendChild` or `insertChild`
|
||||||
|
createRectangle(): RectangleNode
|
||||||
|
createLine(): LineNode
|
||||||
|
createEllipse(): EllipseNode
|
||||||
|
createPolygon(): PolygonNode
|
||||||
|
createStar(): StarNode
|
||||||
|
createVector(): VectorNode
|
||||||
|
createText(): TextNode
|
||||||
|
createBooleanOperation(): BooleanOperationNode
|
||||||
|
createFrame(): FrameNode
|
||||||
|
createComponent(): ComponentNode
|
||||||
|
createPage(): PageNode
|
||||||
|
createSlice(): SliceNode
|
||||||
|
|
||||||
|
// Creates styles. A style's id can be assigned to
|
||||||
|
// node properties like textStyleId, fillStyleId, etc.
|
||||||
|
createPaintStyle(): PaintStyle
|
||||||
|
createTextStyle(): TextStyle
|
||||||
|
createEffectStyle(): EffectStyle
|
||||||
|
createGridStyle(): GridStyle
|
||||||
|
|
||||||
|
// These let you insert stuff from the team library if you have the key
|
||||||
|
importComponentByKeyAsync(key: string): Promise<ComponentNode>
|
||||||
|
importStyleByKeyAsync(key: string): Promise<BaseStyle>
|
||||||
|
|
||||||
|
// Return all fonts currently supported for use with the "fontName" property
|
||||||
|
listAvailableFontsAsync(): Promise<Font[]>
|
||||||
|
|
||||||
|
// You must await the promise returned here before being able to use "fontName"
|
||||||
|
loadFontAsync(fontName: FontName): Promise<void>
|
||||||
|
|
||||||
|
// Creates node from an SVG string.
|
||||||
|
createNodeFromSvg(svg: string): FrameNode
|
||||||
|
|
||||||
|
// Creates an Image object using the provided file contents.
|
||||||
|
createImage(data: Uint8Array): Image
|
||||||
|
|
||||||
|
// Groups every node in `nodes` under a new group.
|
||||||
|
group(nodes: ReadonlyArray<BaseNode>, parent: BaseNode & ChildrenMixin, index?: number): FrameNode
|
||||||
|
|
||||||
|
// Flattens every node in `nodes` into a single vector network.
|
||||||
|
flatten(nodes: ReadonlyArray<BaseNode>, parent?: BaseNode & ChildrenMixin, index?: number): VectorNode
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ClientStorageAPI {
|
||||||
|
// This stores information in the browser, not on the server. It's similar to localStorage, but is
|
||||||
|
// asynchronous, and allows storing objects, arrays, strings, numbers, booleans, null, undefined and Uint8Arrays.
|
||||||
|
getAsync(key: string): Promise<any | undefined>
|
||||||
|
setAsync(key: string, value: any): Promise<void>
|
||||||
|
}
|
||||||
|
|
||||||
|
type ShowUIOptions = {
|
||||||
|
visible?: boolean, // defaults to true
|
||||||
|
width?: number, // defaults to 300
|
||||||
|
height?: number, // defaults to 200
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UIAPI {
|
||||||
|
show(): void
|
||||||
|
hide(): void
|
||||||
|
resize(width: number, height: number): void
|
||||||
|
close(): void
|
||||||
|
|
||||||
|
// Sends a message to the iframe.
|
||||||
|
postMessage(pluginMessage: any): void
|
||||||
|
|
||||||
|
// Registers a callback for messages sent by the iframe.
|
||||||
|
onmessage: ((pluginMessage: any) => void) | undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ViewportAPI {
|
||||||
|
center: { x: number, y: number }
|
||||||
|
|
||||||
|
// 1.0 means 100% zoom, 0.5 means 50% zoom.
|
||||||
|
zoom: number
|
||||||
|
|
||||||
|
// Adjust the viewport such that it shows the provided nodes.
|
||||||
|
scrollAndZoomIntoView(nodes: ReadonlyArray<BaseNode>)
|
||||||
|
}
|
||||||
|
|
||||||
|
// manifest.json format
|
||||||
|
interface ManifestJson {
|
||||||
|
// Name of the plugin.
|
||||||
|
name: string
|
||||||
|
|
||||||
|
// Version of the runtime that the plugin uses, e.g. '0.5.0'.
|
||||||
|
version: string
|
||||||
|
|
||||||
|
// The file name that contains the plugin code.
|
||||||
|
script: string
|
||||||
|
|
||||||
|
// The file name that contains the html code made available in script.
|
||||||
|
html?: string
|
||||||
|
|
||||||
|
// Shell command to be executed before the contents of the `html` and `script` files are read.
|
||||||
|
build?: string
|
||||||
|
|
||||||
|
// Menu items to show up in UI.
|
||||||
|
menu?: ManifestMenuItem[]
|
||||||
|
}
|
||||||
|
|
||||||
|
type ManifestMenuItem =
|
||||||
|
// Clickable menu item.
|
||||||
|
{ name: string, command: string } |
|
||||||
|
// Separator
|
||||||
|
{ separator: true } |
|
||||||
|
// Submenu
|
||||||
|
{ name: string, menu: ManifestMenuItem[] }
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Values
|
||||||
|
|
||||||
|
// These are the top two rows of a 3x3 matrix. This is enough to represent
|
||||||
|
// translation, rotation, and skew.
|
||||||
|
type Transform = [
|
||||||
|
[number, number, number],
|
||||||
|
[number, number, number]
|
||||||
|
]
|
||||||
|
|
||||||
|
interface Vector {
|
||||||
|
readonly x: number
|
||||||
|
readonly y: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface RGB {
|
||||||
|
readonly r: number
|
||||||
|
readonly g: number
|
||||||
|
readonly b: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface RGBA {
|
||||||
|
readonly r: number
|
||||||
|
readonly g: number
|
||||||
|
readonly b: number
|
||||||
|
readonly a: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface FontName {
|
||||||
|
readonly family: string
|
||||||
|
readonly style: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ArcData {
|
||||||
|
readonly startingAngle: number
|
||||||
|
readonly endingAngle: number
|
||||||
|
readonly innerRadius: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ShadowEffect {
|
||||||
|
readonly type: "DROP_SHADOW" | "INNER_SHADOW"
|
||||||
|
readonly color: RGBA
|
||||||
|
readonly offset: Vector
|
||||||
|
readonly radius: number
|
||||||
|
readonly visible: boolean
|
||||||
|
readonly blendMode: BlendMode
|
||||||
|
}
|
||||||
|
|
||||||
|
interface BlurEffect {
|
||||||
|
readonly type: "LAYER_BLUR" | "BACKGROUND_BLUR"
|
||||||
|
readonly radius: number
|
||||||
|
readonly visible: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
type Effect = ShadowEffect | BlurEffect
|
||||||
|
|
||||||
|
type ConstraintType = "MIN" | "CENTER" | "MAX" | "STRETCH" | "SCALE"
|
||||||
|
|
||||||
|
interface Constraints {
|
||||||
|
readonly horizontal: ConstraintType
|
||||||
|
readonly vertical: ConstraintType
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ColorStop {
|
||||||
|
readonly position: number
|
||||||
|
readonly color: RGBA
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SolidPaint {
|
||||||
|
readonly type: "SOLID"
|
||||||
|
readonly color: RGB
|
||||||
|
|
||||||
|
readonly visible?: boolean
|
||||||
|
readonly opacity?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GradientPaint {
|
||||||
|
readonly type: "GRADIENT_LINEAR" | "GRADIENT_RADIAL" | "GRADIENT_ANGULAR" | "GRADIENT_DIAMOND"
|
||||||
|
readonly gradientTransform: Transform
|
||||||
|
readonly gradientStops: ReadonlyArray<ColorStop>
|
||||||
|
|
||||||
|
readonly visible?: boolean
|
||||||
|
readonly opacity?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ImagePaint {
|
||||||
|
readonly type: "IMAGE"
|
||||||
|
readonly scaleMode: "FILL" | "FIT" | "CROP" | "TILE"
|
||||||
|
readonly image: Image | null
|
||||||
|
readonly imageTransform?: Transform // setting for "CROP"
|
||||||
|
readonly scalingFactor?: number // setting for "TILE"
|
||||||
|
|
||||||
|
readonly visible?: boolean
|
||||||
|
readonly opacity?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
type Paint = SolidPaint | GradientPaint | ImagePaint
|
||||||
|
|
||||||
|
interface Guide {
|
||||||
|
readonly axis: "X" | "Y"
|
||||||
|
readonly offset: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface RowsColsLayoutGrid {
|
||||||
|
readonly pattern: "ROWS" | "COLUMNS"
|
||||||
|
readonly alignment: "MIN" | "STRETCH" | "CENTER"
|
||||||
|
readonly gutterSize: number
|
||||||
|
|
||||||
|
readonly count: number // Infinity when "Auto" is set in the UI
|
||||||
|
readonly sectionSize?: number // Not set for alignment: "STRETCH"
|
||||||
|
readonly offset?: number // Not set for alignment: "CENTER"
|
||||||
|
|
||||||
|
readonly visible?: boolean
|
||||||
|
readonly color?: RGBA
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GridLayoutGrid {
|
||||||
|
readonly pattern: "GRID"
|
||||||
|
readonly sectionSize: number
|
||||||
|
|
||||||
|
readonly visible?: boolean
|
||||||
|
readonly color?: RGBA
|
||||||
|
}
|
||||||
|
|
||||||
|
type LayoutGrid = RowsColsLayoutGrid | GridLayoutGrid
|
||||||
|
|
||||||
|
interface ExportSettingsImage {
|
||||||
|
format: "JPG" | "PNG"
|
||||||
|
contentsOnly?: boolean // defaults to true
|
||||||
|
suffix?: string
|
||||||
|
constraint?: { // defaults to unscaled ({ type: "SCALE", value: 1 })
|
||||||
|
type: "SCALE" | "WIDTH" | "HEIGHT"
|
||||||
|
value: number
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ExportSettingsSVG {
|
||||||
|
format: "SVG"
|
||||||
|
contentsOnly?: boolean // defaults to true
|
||||||
|
suffix?: string
|
||||||
|
svgOutlineText?: boolean // defaults to true
|
||||||
|
svgIdAttribute?: boolean // defaults to false
|
||||||
|
svgSimplifyStroke?: boolean // defaults to true
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ExportSettingsPDF {
|
||||||
|
format: "PDF"
|
||||||
|
contentsOnly?: boolean // defaults to true
|
||||||
|
suffix?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
type ExportSettings = ExportSettingsImage | ExportSettingsSVG | ExportSettingsPDF
|
||||||
|
|
||||||
|
type WindingRule = "NONZERO" | "EVENODD"
|
||||||
|
|
||||||
|
interface VectorVertex {
|
||||||
|
readonly x: number
|
||||||
|
readonly y: number
|
||||||
|
readonly strokeCap?: StrokeCap
|
||||||
|
readonly strokeJoin?: StrokeJoin
|
||||||
|
readonly cornerRadius?: number
|
||||||
|
readonly handleMirroring?: HandleMirroring
|
||||||
|
}
|
||||||
|
|
||||||
|
interface VectorSegment {
|
||||||
|
readonly start: number
|
||||||
|
readonly end: number
|
||||||
|
readonly tangentStart?: Vector // Defaults to { x: 0, y: 0 }
|
||||||
|
readonly tangentEnd?: Vector // Defaults to { x: 0, y: 0 }
|
||||||
|
}
|
||||||
|
|
||||||
|
interface VectorRegion {
|
||||||
|
readonly windingRule: WindingRule
|
||||||
|
readonly loops: ReadonlyArray<ReadonlyArray<number>>
|
||||||
|
}
|
||||||
|
|
||||||
|
interface VectorNetwork {
|
||||||
|
readonly vertices: ReadonlyArray<VectorVertex>
|
||||||
|
readonly segments: ReadonlyArray<VectorSegment>
|
||||||
|
readonly regions?: ReadonlyArray<VectorRegion> // Defaults to []
|
||||||
|
}
|
||||||
|
|
||||||
|
interface VectorPath {
|
||||||
|
// Similar to the svg fill-rule
|
||||||
|
// "NONE" means an open path won't have a fill
|
||||||
|
readonly windingRule: WindingRule | "NONE"
|
||||||
|
readonly data: string
|
||||||
|
}
|
||||||
|
|
||||||
|
type VectorPaths = ReadonlyArray<VectorPath>
|
||||||
|
|
||||||
|
interface NumberWithUnits {
|
||||||
|
readonly value: number
|
||||||
|
readonly units: "PIXELS" | "PERCENT"
|
||||||
|
}
|
||||||
|
|
||||||
|
type BlendMode =
|
||||||
|
"PASS_THROUGH" |
|
||||||
|
"NORMAL" |
|
||||||
|
"DARKEN" |
|
||||||
|
"MULTIPLY" |
|
||||||
|
"LINEAR_BURN" |
|
||||||
|
"COLOR_BURN" |
|
||||||
|
"LIGHTEN" |
|
||||||
|
"SCREEN" |
|
||||||
|
"LINEAR_DODGE" |
|
||||||
|
"COLOR_DODGE" |
|
||||||
|
"OVERLAY" |
|
||||||
|
"SOFT_LIGHT" |
|
||||||
|
"HARD_LIGHT" |
|
||||||
|
"DIFFERENCE" |
|
||||||
|
"EXCLUSION" |
|
||||||
|
"HUE" |
|
||||||
|
"SATURATION" |
|
||||||
|
"COLOR" |
|
||||||
|
"LUMINOSITY"
|
||||||
|
|
||||||
|
interface Font {
|
||||||
|
fontName: FontName
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Mixins
|
||||||
|
|
||||||
|
interface BaseNodeMixin {
|
||||||
|
readonly id: string
|
||||||
|
readonly parent: (BaseNode & ChildrenMixin) | null
|
||||||
|
name: string
|
||||||
|
visible: boolean
|
||||||
|
locked: boolean
|
||||||
|
removed: boolean
|
||||||
|
toString(): string
|
||||||
|
remove(): void
|
||||||
|
|
||||||
|
// Attach custom data to a node. Only your plugin will be able to read this.
|
||||||
|
getPluginData(key: string): string
|
||||||
|
setPluginData(key: string, value: string): void
|
||||||
|
|
||||||
|
// Attach custom data to a node. All plugins will be able to read this.
|
||||||
|
// Namespace is a string that must be at least 3 alphanumeric characters, and should
|
||||||
|
// be a name related to your plugin. This is a mandatory argument to avoid multiple
|
||||||
|
// multiple plugins adding keys like "data" and colliding with each other. Other
|
||||||
|
// plugins will still be able to read shared plugin data as long as they know the
|
||||||
|
// namespace you use.
|
||||||
|
getSharedPluginData(namespace: string, key: string): string
|
||||||
|
setSharedPluginData(namespace: string, key: string, value: string): void
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ChildrenMixin {
|
||||||
|
// Sorted back-to-front. I.e. the top-most child is last in this array.
|
||||||
|
readonly children: ReadonlyArray<BaseNode>
|
||||||
|
|
||||||
|
// Adds to the end of the .children array. I.e. visually on top of all other
|
||||||
|
// children.
|
||||||
|
appendChild(child: BaseNode): void
|
||||||
|
|
||||||
|
insertChild(index: number, child: BaseNode): void
|
||||||
|
findAll(callback?: (node: BaseNode) => boolean): ReadonlyArray<BaseNode>
|
||||||
|
findOne(callback: (node: BaseNode) => boolean): BaseNode | null
|
||||||
|
}
|
||||||
|
|
||||||
|
interface LayoutMixin {
|
||||||
|
readonly absoluteTransform: Transform
|
||||||
|
relativeTransform: Transform
|
||||||
|
x: number // The same as "relativeTransform[0][2]"
|
||||||
|
y: number // The same as "relativeTransform[1][2]"
|
||||||
|
rotation: number // The angle of the x axis of "relativeTransform" in degrees. Returns values from -180 to 180.
|
||||||
|
|
||||||
|
readonly size: Vector
|
||||||
|
readonly width: number // The same as "size.x"
|
||||||
|
readonly height: number // The same as "size.y"
|
||||||
|
|
||||||
|
// Resizes the node. If children of the node has constraints, it applies those constraints
|
||||||
|
// width and height must be >= 0.01
|
||||||
|
resize(width: number, height: number): void
|
||||||
|
|
||||||
|
// Resizes the node. Children of the node are never resized, even if those children have
|
||||||
|
// constraints. width and height must be >= 0.01
|
||||||
|
resizeWithoutConstraints(width: number, height: number): void
|
||||||
|
|
||||||
|
constraints: Constraints
|
||||||
|
}
|
||||||
|
|
||||||
|
interface BlendMixin {
|
||||||
|
opacity: number
|
||||||
|
blendMode: BlendMode
|
||||||
|
isMask: boolean
|
||||||
|
effects: ReadonlyArray<Effect>
|
||||||
|
effectStyleId: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface FrameMixin {
|
||||||
|
backgrounds: ReadonlyArray<Paint>
|
||||||
|
layoutGrids: ReadonlyArray<LayoutGrid>
|
||||||
|
clipsContent: boolean
|
||||||
|
guides: ReadonlyArray<Guide>
|
||||||
|
gridStyleId: string
|
||||||
|
backgroundStyleId: string
|
||||||
|
}
|
||||||
|
|
||||||
|
type StrokeCap = "NONE" | "ROUND" | "SQUARE" | "ARROW_LINES" | "ARROW_EQUILATERAL"
|
||||||
|
type StrokeJoin = "MITER" | "BEVEL" | "ROUND"
|
||||||
|
type HandleMirroring = "NONE" | "ANGLE" | "ANGLE_AND_LENGTH"
|
||||||
|
|
||||||
|
interface GeometryMixin {
|
||||||
|
fills: ReadonlyArray<Paint> | symbol // This can return figma.mixed on TEXT nodes
|
||||||
|
strokes: ReadonlyArray<Paint>
|
||||||
|
strokeWeight: number
|
||||||
|
strokeAlign: "CENTER" | "INSIDE" | "OUTSIDE"
|
||||||
|
strokeCap: StrokeCap | symbol // This can return figma.mixed on VECTOR nodes if vertices have different strokeCap values
|
||||||
|
strokeJoin: StrokeJoin | symbol // This can return figma.mixed on VECTOR nodes if vertices have different strokeJoin values
|
||||||
|
dashPattern: ReadonlyArray<number>
|
||||||
|
fillStyleId: string | symbol // This can return figma.mixed on TEXT nodes
|
||||||
|
strokeStyleId: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CornerMixin {
|
||||||
|
// This can return figma.mixed on VECTOR nodes if vertices have different cornerRadius values,
|
||||||
|
// and on RECTANGLE nodes if node.topLeftRadius etc has different values
|
||||||
|
cornerRadius: number | symbol
|
||||||
|
|
||||||
|
cornerSmoothing: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ExportMixin {
|
||||||
|
exportSettings: ExportSettings[]
|
||||||
|
exportAsync(settings?: ExportSettings): Promise<Uint8Array> // Defaults to PNG format
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Nodes
|
||||||
|
|
||||||
|
interface DocumentNode extends BaseNodeMixin, ChildrenMixin {
|
||||||
|
readonly type: "DOCUMENT"
|
||||||
|
clone(): DocumentNode // Note: this always throws an error
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PageNode extends BaseNodeMixin, ChildrenMixin, ExportMixin {
|
||||||
|
readonly type: "PAGE"
|
||||||
|
clone(): PageNode // cloned node starts off inserted into current page
|
||||||
|
|
||||||
|
guides: ReadonlyArray<Guide>
|
||||||
|
selection: ReadonlyArray<BaseNode>
|
||||||
|
}
|
||||||
|
|
||||||
|
interface FrameNode extends BaseNodeMixin, BlendMixin, ChildrenMixin, FrameMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "FRAME" | "GROUP"
|
||||||
|
clone(): FrameNode // cloned node starts off inserted into current page
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SliceNode extends BaseNodeMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "SLICE"
|
||||||
|
clone(): SliceNode // cloned node starts off inserted into current page
|
||||||
|
}
|
||||||
|
|
||||||
|
interface RectangleNode extends BaseNodeMixin, BlendMixin, CornerMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "RECTANGLE"
|
||||||
|
clone(): RectangleNode // cloned node starts off inserted into current page
|
||||||
|
topLeftRadius: number
|
||||||
|
topRightRadius: number
|
||||||
|
bottomLeftRadius: number
|
||||||
|
bottomRightRadius: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface LineNode extends BaseNodeMixin, BlendMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "LINE"
|
||||||
|
clone(): LineNode // cloned node starts off inserted into current page
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EllipseNode extends BaseNodeMixin, BlendMixin, CornerMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "ELLIPSE"
|
||||||
|
clone(): EllipseNode // cloned node starts off inserted into current page
|
||||||
|
arcData: ArcData
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PolygonNode extends BaseNodeMixin, BlendMixin, CornerMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "POLYGON"
|
||||||
|
clone(): PolygonNode // cloned node starts off inserted into current page
|
||||||
|
pointCount: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface StarNode extends BaseNodeMixin, BlendMixin, CornerMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "STAR"
|
||||||
|
clone(): StarNode // cloned node starts off inserted into current page
|
||||||
|
pointCount: number
|
||||||
|
|
||||||
|
// This is a percentage value from 0 to 1
|
||||||
|
innerRadius: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface VectorNode extends BaseNodeMixin, BlendMixin, CornerMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "VECTOR"
|
||||||
|
clone(): VectorNode // cloned node starts off inserted into current page
|
||||||
|
vectorNetwork: VectorNetwork
|
||||||
|
vectorPaths: VectorPaths
|
||||||
|
handleMirroring: HandleMirroring | symbol // This can return figma.mixed if vertices have different handleMirroring values
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TextNode extends BaseNodeMixin, BlendMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "TEXT"
|
||||||
|
clone(): TextNode // cloned node starts off inserted into current page
|
||||||
|
characters: string
|
||||||
|
textAlignHorizontal: "LEFT" | "CENTER" | "RIGHT" | "JUSTIFIED"
|
||||||
|
textAlignVertical: "TOP" | "CENTER" | "BOTTOM"
|
||||||
|
textAutoResize: "NONE" | "WIDTH_AND_HEIGHT" | "HEIGHT"
|
||||||
|
paragraphIndent: number
|
||||||
|
paragraphSpacing: number
|
||||||
|
autoRename: boolean
|
||||||
|
|
||||||
|
// These properties can all return figma.mixed if the text has multiple values for the property
|
||||||
|
textStyleId: string | symbol
|
||||||
|
fontSize: number | symbol
|
||||||
|
fontName: FontName | symbol
|
||||||
|
textCase: "ORIGINAL" | "UPPER" | "LOWER" | "TITLE" | symbol
|
||||||
|
textDecoration: "NONE" | "UNDERLINE" | "STRIKETHROUGH" | symbol
|
||||||
|
letterSpacing: NumberWithUnits | symbol
|
||||||
|
lineHeight: NumberWithUnits | symbol
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ComponentNode extends BaseNodeMixin, BlendMixin, ChildrenMixin, FrameMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "COMPONENT"
|
||||||
|
clone(): ComponentNode // cloned node starts off inserted into current page
|
||||||
|
|
||||||
|
createInstance(): InstanceNode // instance starts off inserted into current page
|
||||||
|
description: string
|
||||||
|
readonly remote: boolean
|
||||||
|
readonly key: string // The key to use with "importComponentByKeyAsync"
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InstanceNode extends BaseNodeMixin, BlendMixin, ChildrenMixin, FrameMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "INSTANCE"
|
||||||
|
clone(): InstanceNode // cloned node starts off inserted into current page
|
||||||
|
masterComponent: ComponentNode
|
||||||
|
}
|
||||||
|
|
||||||
|
interface BooleanOperationNode extends BaseNodeMixin, BlendMixin, ChildrenMixin, CornerMixin, GeometryMixin, LayoutMixin, ExportMixin {
|
||||||
|
readonly type: "BOOLEAN_OPERATION"
|
||||||
|
clone(): BooleanOperationNode // cloned node starts off inserted into current page
|
||||||
|
booleanOperation: "UNION" | "INTERSECT" | "SUBTRACT" | "EXCLUDE"
|
||||||
|
}
|
||||||
|
|
||||||
|
type BaseNode =
|
||||||
|
DocumentNode |
|
||||||
|
PageNode |
|
||||||
|
SliceNode |
|
||||||
|
FrameNode |
|
||||||
|
ComponentNode |
|
||||||
|
InstanceNode |
|
||||||
|
BooleanOperationNode |
|
||||||
|
VectorNode |
|
||||||
|
StarNode |
|
||||||
|
LineNode |
|
||||||
|
EllipseNode |
|
||||||
|
PolygonNode |
|
||||||
|
RectangleNode |
|
||||||
|
TextNode
|
||||||
|
|
||||||
|
type NodeType =
|
||||||
|
"DOCUMENT" |
|
||||||
|
"PAGE" |
|
||||||
|
"SLICE" |
|
||||||
|
"FRAME" |
|
||||||
|
"GROUP" |
|
||||||
|
"COMPONENT" |
|
||||||
|
"INSTANCE" |
|
||||||
|
"BOOLEAN_OPERATION" |
|
||||||
|
"VECTOR" |
|
||||||
|
"STAR" |
|
||||||
|
"LINE" |
|
||||||
|
"ELLIPSE" |
|
||||||
|
"POLYGON" |
|
||||||
|
"RECTANGLE" |
|
||||||
|
"TEXT"
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Styles
|
||||||
|
type StyleType = "PAINT" | "TEXT" | "EFFECT" | "GRID"
|
||||||
|
|
||||||
|
interface BaseStyle {
|
||||||
|
// The string to uniquely identify a style by
|
||||||
|
readonly id: string
|
||||||
|
readonly type: StyleType
|
||||||
|
name: string // Note: setting this also sets "autoRename" to false on TextNodes
|
||||||
|
description: string
|
||||||
|
remote: boolean
|
||||||
|
readonly key: string // The key to use with "importStyleByKeyAsync"
|
||||||
|
remove(): void
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PaintStyle extends BaseStyle {
|
||||||
|
type: "PAINT"
|
||||||
|
paints: ReadonlyArray<Paint>
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TextStyle extends BaseStyle {
|
||||||
|
type: "TEXT"
|
||||||
|
fontSize: number
|
||||||
|
textDecoration: "NONE" | "UNDERLINE" | "STRIKETHROUGH"
|
||||||
|
fontName: FontName
|
||||||
|
letterSpacing: NumberWithUnits
|
||||||
|
lineHeight: NumberWithUnits
|
||||||
|
paragraphIndent: number
|
||||||
|
paragraphSpacing: number
|
||||||
|
textCase: "ORIGINAL" | "UPPER" | "LOWER" | "TITLE"
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EffectStyle extends BaseStyle {
|
||||||
|
type: "EFFECT"
|
||||||
|
effects: ReadonlyArray<Paint>
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GridStyle extends BaseStyle {
|
||||||
|
type: "GRID"
|
||||||
|
layoutGrids: ReadonlyArray<LayoutGrid>
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Other
|
||||||
|
|
||||||
|
interface Image {
|
||||||
|
// Returns a unique hash for the image
|
||||||
|
readonly hash: string
|
||||||
|
|
||||||
|
// The contents of the image file
|
||||||
|
getBytesAsync(): Promise<Uint8Array>
|
||||||
|
}
|
||||||
BIN
packages/lucide-figma/icon.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
7
packages/lucide-figma/manifest.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "Lucide Icons",
|
||||||
|
"id": "939567362549682242",
|
||||||
|
"api": "1.0.0",
|
||||||
|
"ui": "build/ui.html",
|
||||||
|
"main": "build/main.js"
|
||||||
|
}
|
||||||
26
packages/lucide-figma/package.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"name": "lucide-figma",
|
||||||
|
"version": "0.13.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"main": "build/ui.js",
|
||||||
|
"scripts": {
|
||||||
|
"build": "webpack --mode=production",
|
||||||
|
"watch": "webpack --mode=development --watch"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@emotion/core": "^10.0.14",
|
||||||
|
"@types/react": "^16.8.23",
|
||||||
|
"@types/react-dom": "^16.8.4",
|
||||||
|
"css-loader": "^3.0.0",
|
||||||
|
"html-webpack-inline-source-plugin": "^0.0.10",
|
||||||
|
"html-webpack-plugin": "^3.2.0",
|
||||||
|
"lucide-react": "^0.13.0",
|
||||||
|
"react": "^16.8.6",
|
||||||
|
"react-dom": "^16.8.6",
|
||||||
|
"style-loader": "^0.23.1",
|
||||||
|
"ts-loader": "^6.0.4",
|
||||||
|
"typescript": "^3.5.2",
|
||||||
|
"webpack": "^4.35.2",
|
||||||
|
"webpack-cli": "^3.3.5"
|
||||||
|
}
|
||||||
|
}
|
||||||
44
packages/lucide-figma/src/components/icon-button.tsx
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import { jsx } from '@emotion/core'
|
||||||
|
import theme from '../theme'
|
||||||
|
import { renderToString } from 'react-dom/server'
|
||||||
|
import { FC } from 'react';
|
||||||
|
|
||||||
|
interface IconButtonProps {
|
||||||
|
name: string,
|
||||||
|
component: FC,
|
||||||
|
}
|
||||||
|
|
||||||
|
function IconButton({ name, component: IconComponent }: IconButtonProps) {
|
||||||
|
const onIconclick = () => {
|
||||||
|
const svg = renderToString(<IconComponent/>);
|
||||||
|
|
||||||
|
parent.postMessage({ pluginMessage: { name, svg }}, '*')
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
key={name}
|
||||||
|
aria-label={name}
|
||||||
|
onClick={onIconclick}
|
||||||
|
css={{
|
||||||
|
padding: theme.space[2],
|
||||||
|
color: '#333',
|
||||||
|
background: 'transparent',
|
||||||
|
border: 0,
|
||||||
|
borderRadius: theme.radii[1],
|
||||||
|
appearance: 'none',
|
||||||
|
outline: 0,
|
||||||
|
'&:hover': {
|
||||||
|
background: 'rgba(0, 0, 0, 0.06)',
|
||||||
|
},
|
||||||
|
'&:focus, &:active': {
|
||||||
|
boxShadow: `inset 0 0 0 2px ${theme.colors.blue}`,
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<IconComponent />
|
||||||
|
</button>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default IconButton
|
||||||
24
packages/lucide-figma/src/components/search-icon.tsx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import { createElement, forwardRef } from 'react'
|
||||||
|
|
||||||
|
const SearchIcon = forwardRef((props: any, ref) => createElement(
|
||||||
|
'svg',
|
||||||
|
{
|
||||||
|
xmlns: "http://www.w3.org/2000/svg",
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
clipRule: 'evenodd',
|
||||||
|
fillRule: 'evenodd',
|
||||||
|
ref,
|
||||||
|
...props,
|
||||||
|
},
|
||||||
|
[
|
||||||
|
createElement(
|
||||||
|
'path', {
|
||||||
|
d: 'm20 15c0 2.7614-2.2386 5-5 5s-5-2.2386-5-5 2.2386-5 5-5 5 2.2386 5 5zm-1.1256 4.5815c-1.0453.8849-2.3975 1.4185-3.8744 1.4185-3.3137 0-6-2.6863-6-6s2.6863-6 6-6 6 2.6863 6 6c0 1.4769-.5336 2.8291-1.4185 3.8744l4.2721 4.272-.7072.7072z',
|
||||||
|
key: 'path'
|
||||||
|
}
|
||||||
|
)
|
||||||
|
]
|
||||||
|
))
|
||||||
|
|
||||||
|
export default SearchIcon
|
||||||
43
packages/lucide-figma/src/components/search-input.tsx
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import { jsx } from '@emotion/core'
|
||||||
|
import theme from '../theme'
|
||||||
|
import SearchIcon from './search-icon'
|
||||||
|
interface SearchInputProps extends React.HTMLProps<HTMLDivElement> {
|
||||||
|
value: string,
|
||||||
|
iconCount: number,
|
||||||
|
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void
|
||||||
|
}
|
||||||
|
|
||||||
|
function SearchInput({ value, onChange, iconCount, ...props }: SearchInputProps) {
|
||||||
|
return (
|
||||||
|
<div css={{ position: 'relative' }} {...props}>
|
||||||
|
<div
|
||||||
|
css={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
padding: theme.space[1],
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<SearchIcon fill="#333" />
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
autoFocus
|
||||||
|
type="search"
|
||||||
|
value={value}
|
||||||
|
onChange={onChange}
|
||||||
|
placeholder={`Search ${iconCount} icons`}
|
||||||
|
css={{
|
||||||
|
width: '100%',
|
||||||
|
height: 40,
|
||||||
|
padding: `0 ${theme.space[4]} 0 36px`,
|
||||||
|
fontFamily: 'inherit',
|
||||||
|
fontSize: theme.fontSizes[0],
|
||||||
|
border: 0,
|
||||||
|
outline: 0,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default SearchInput
|
||||||