Compare commits

...

61 Commits

Author SHA1 Message Date
Eric Fennis
4406cbaea0 Hotfix Lucide npm package, fix security issues (#84)
* adjust npmignore

* 📦 Fix security issues

* update font workflow

* identation

* update, package.json

* Add description

* Add shields
2020-10-06 23:03:11 +02:00
Eric Fennis
11c6a2e917 Featherity Npm package, reorganize scripting. (#52)
* New setup for new NPM package

* Add build scripts for dist

* Add introduction readme

* Refactor names

* update package.json

* remove log

* rename variable

* Factoring

* Improve optimize script

* Add eslint config

* Eslint fixes

* rename import

* Move packeges

* Setup rollup and build progress

* Refactor scripts

* fix lint error

* remove lint disabler

* Bring back old libraries

* add indentation

* reset packages directory

* remove vscode setting files

* 0.1.0-alpha.0

* new version

* 0.1.0-alpha.1

* Fix build process

* Add create element to the entry file

* update version number

* publish new alhpa version

* fixing bugs

* Add jest and tests

* replace with XML createElement

* set new version

* Fix svg generation

* Add tests for main library

* Update docs

* Adjust tests and selectors

* update the spec

* Update README.md

* Update README.md

* Update README.md

* update version

* Update README.md

* Move function to helpers file

* rename license, package and readme

* Fix build files

* rename packages

Co-authored-by: Eric Fennis <eric.fennis@endurance.com>
2020-10-06 20:23:26 +02:00
Locness
8b5278437a README : Mention Featherity is independent + various changes (#82) 2020-10-05 20:30:34 +02:00
Collin Monahan
c84fcfe3cb feat: add box select (#69)
* feat: add box select, box select with pointer, bullhorn, document lost, document search, lasso select, lasso, newspaper

* remove other icons on this branch

* more space for box-select

* maybe similarly spacing box-sel-ptr

* focus down to box select

* try dashed-line square

* polylines at corners

* space before close-element

* rounded version

* undo change to wrong file

Co-authored-by: mishkaio <60020191+mishkaio@users.noreply.github.com>
2020-09-29 08:43:00 +02:00
Eric Fennis
058c40a1ec Feat: Dashboard/Masonry Icon (#72)
* add brick layout icon

* Add Masonry icon

* delete other icons

* rename icon
2020-09-28 18:31:35 +02:00
Eric Fennis
6dad37a1b5 feat: Add equal icons and refactor devide icon (#56)
* Add equal icons and refactor devide icon

* update icon

* remove white space
2020-09-25 12:50:51 +02:00
Eric Fennis
85d3bb9b82 feat: 'move-horizontal', 'move-vertical', 'move-diagonal', 'mouse-pointer-2' (#49)
* add cursors

* update icons to match same length as othe move icons
2020-09-21 13:01:24 +02:00
Eric Fennis
dee5d33bcd Add image-off icon (#74) 2020-09-20 19:13:31 +02:00
Eric Fennis
a26745a3be add calculator icon (#75) 2020-09-20 19:12:52 +02:00
Lennard Scheibel
9550ec28b8 feat: Add shirt icon (#20) 2020-09-19 12:14:08 +02:00
Eric Fennis
845d6add1f feat: add more bluetooth icons (#67)
* add more bluetooth icons

* change to lines
2020-09-11 22:10:41 +02:00
Yashu Mittal
06972942cd Add bot icon (#71) 2020-09-11 22:10:24 +02:00
Eric Fennis
d33b6674f3 add Gauge icon (#66) 2020-09-11 22:10:11 +02:00
Eric Fennis
70be911f69 feat: refactor heart icon (#64)
* Add lightbulb icon

* update heart icon

* add white space
2020-09-11 22:09:40 +02:00
Eric Fennis
6f06e05a47 Add lightbulb icon (#63) 2020-09-11 22:09:27 +02:00
Eric Fennis
8a15bca8cd feat: refactor wifi-icons (#62)
* refactor wifi-icons

* add spacings
2020-09-11 22:09:13 +02:00
Alexander Barrios
5aef4e6110 Workflow that will compile font files (#68)
* Create font.yml

* Change to show logs

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update .github/workflows/font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

* Fix syntax

* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-09-09 09:48:52 +02:00
Eric Fennis
e1cead9531 feat: Add separator icons (#47)
* Add separator icons

* Add more serpartor icons

* Remove other separator icons

* Shorter lines
2020-09-03 11:50:02 +02:00
dependabot[bot]
c686c1a0c3 chore(deps): Bump lodash from 4.17.15 to 4.17.20 (#59)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.20.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.20)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-30 11:12:36 +02:00
dependabot[bot]
af87274bf4 chore(deps): Bump elliptic from 6.5.2 to 6.5.3 (#58)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-29 23:18:02 +02:00
John Letey
e3e4514dcc feat: Site (#1)
* site: pull data from "icons" dir

* site: display icons

* site: remove redundant code

* site: colour mode support

* site: header

* site: order imports

* site: search

* site: add toast when copying icon

* site: styling

* site: hero

* fix: disable theme toggle transitions

* feat: Use Yarn Workspaces

* refactor: Update site deploy scripts

* refactor: Remove dark mode for now

* feat: Add site title

* refactor: Fix warning and format

* feat: Add dark mode back 👀

* feat: Escape key to reset query

* Fix by aelfric

* Add Github link

* Fix #40

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-08-29 23:16:38 +02:00
Eric Fennis
1b726f592a feat: Add flashlight icons (#55) 2020-07-24 11:58:47 +01:00
Frank Riccobono
53ba672ca6 feat: Add undo and redo icons (#48)
* feat: Add `undo` and `redo` icons

* move undo and redo icons downl to align with grid

* move starting point of arrows down to align with point

* refactor: remove extra stroke-width

* reactor: whitespace

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* refactor: replace change points instead of using translate.

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* refactor: use changed points instead of using translate.

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-07-21 15:18:21 +02:00
dependabot[bot]
9b56ae3b25 chore(deps): Bump lodash from 4.17.15 to 4.17.19 (#53)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-21 08:25:25 +01:00
zeno
bd52c058eb feat: Add table, matrix, sheet, and view icons (#9)
* feat: Add `table` icon
* feat: Add `grid` icon
* feat: Add `sheet` icon
* feat: Add `view` icon
* Refactor name `grid` -> `layout-grid`
* Refactor SVG code of `columns`

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-07-08 21:05:25 +02:00
Locness
e8befb4681 docs: Add labels to issue templates (#51)
* Update icon_request.md

* Update bug_report.md

* Use "labels" instead of "label"

* Do it for the other one
2020-07-05 17:02:33 +01:00
Eric Fennis
dd5d84d5c0 refactor: Update phone icons (#44)
* Refactor phone icons

* Add EOF
2020-07-05 16:58:33 +01:00
John Letey
031833a296 refactor: Optimise icons (#42)
* refactor: Optimise icons

* fix: Complete `contrast` icon

* refactor: Optimise `battery-charging` further
2020-07-05 12:27:23 +01:00
John Letey
02b57108c3 feat: Add library icon (#25)
* feat: Add `library` icon

* refactor: Optically align elements

* refactor: Increase size
2020-07-05 13:09:37 +02:00
Eric Fennis
a99637fc25 refactor: Update droplet icon and add flame icon (#24)
* update droplet and create flame

* Update icons/flame.svg

Co-authored-by: John Letey <johnletey@gmail.com>

* Update icons/droplet.svg

Co-authored-by: John Letey <johnletey@gmail.com>

* Update icons/flame.svg

Co-authored-by: John Letey <johnletey@gmail.com>

Co-authored-by: John Letey <johnletey@gmail.com>
2020-07-05 09:05:41 +01:00
Eric Fennis
749a235dc7 Merge pull request #34 from lscheibel/coins-icon
feat: Add `coins` icon
2020-07-04 09:36:42 +02:00
lscheibel
ce8da13110 feat: Add coins icon 2020-07-03 19:15:11 +02:00
John Letey
9a2eb1c16e refactor: Update git-commit icon (#46) 2020-07-03 09:21:51 +01:00
Lennard Scheibel
bae239bd20 feat: Add alarm-clock icon (#19)
* feat: Add `alarm-clock` icon

* refactor: Add spacing

Co-authored-by: John Letey <johnletey@gmail.com>
2020-07-02 09:45:06 +01:00
John Letey
0f43116ca2 docs: Update contact email
Closes #45
2020-07-01 17:28:35 +01:00
John Letey
d051a09232 feat: Add network icon (#35)
* feat: Add `network` icon

* refactor: Use elements

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-07-01 11:56:43 +01:00
Eric Fennis
342b2b962a feat: Add strikethrough and update underline icons (#36)
* add strikethrough and update undeline

* Add EOF

* Add spaces

Co-authored-by: John Letey <johnletey@gmail.com>

* Add spaces underline.svg

Co-authored-by: John Letey <johnletey@gmail.com>

Co-authored-by: John Letey <johnletey@gmail.com>
2020-07-01 11:46:49 +01:00
Lennard Scheibel
41836318ea feat: Add switch-camera icon (#31) 2020-07-01 09:22:02 +01:00
Lennard Scheibel
bf7a6b4503 refactor: Update camera and camera-off icons (#39) 2020-06-30 19:25:16 +01:00
Lennard Scheibel
c8ff5a12ff feat: Add highlighter icon (#32) 2020-06-30 08:40:39 +01:00
John Letey
da5b084a6b feat: Add copyleft icon (#41)
* feat: Add `copyleft` icon

* refactor: Simplify svg

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-06-29 15:32:24 +01:00
John Letey
c00ebdacca chore(react): Publish 2020-06-28 16:02:46 +01:00
John Letey
3624f449f0 feat(react): Ability to customise strokeWidth (#38) 2020-06-28 15:27:24 +01:00
Lennard Scheibel
fc76ff2687 feat: Add contrast icon (#33) 2020-06-28 14:56:27 +01:00
John Letey
456b54c8b4 feat: Add screen-share icons (#28)
* feat: Add `start-screenshare` icon

* feat: Add `start-screenshare-2` icon

* feat: Add `stop-screenshare` icon

* feat: Add `stop-screenshare-2` icon

* refactor: Update icons names

* refactor: Remove some icons for now
2020-06-28 14:55:58 +01:00
John Letey
a905faa00e feat: Add copyright icon (#29) 2020-06-28 11:18:06 +01:00
Eric Fennis
5ece90b035 docs: Update Discord invite (#27)
Update Discord Invite link and add Community section
2020-06-26 16:20:06 +01:00
John Letey
cb5d712584 feat: Add battery icons (#23)
* feat: Add `battery` icons

* refactor: Use elements for `battery-charging`

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* refactor: Use elements for `battery-full`

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* refactor: Use elements for `battery-low`

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* refactor: Use elements for `battery-medium`

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

* refactor: Use elements for `battery`

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-06-26 15:19:19 +01:00
Eric Fennis
90966d2723 feat: Add unlink icons (#10)
* add unlink icons

* Add safe zone, and add "link-2-off" icon

* Add EOF
2020-06-25 19:29:26 +01:00
Eric Fennis
513216cc6e docs: Update CONTRIBUTING file (#17)
* Update Contributing.md

* Remove Bug reporting section
2020-06-25 09:13:59 +01:00
Lennard Scheibel
efc7c9c1f6 feat: Add contact icon (#18) 2020-06-24 10:34:40 +01:00
John Letey
905eca3047 docs: Update first title in README
@locness3 😅
2020-06-24 08:57:31 +01:00
Lennard Scheibel
1fe87aa89d feat: Add snowflake icon (#21) 2020-06-24 08:20:03 +01:00
John Letey
25b20dba9b docs: Add Discord invite link 2020-06-23 19:03:59 +01:00
Eric Fennis
a106a4c3fc feat: Add languages icon (#16)
* Add languages icon

* Add end line
2020-06-23 13:23:01 +01:00
Eric Fennis
030e314413 feat: Add gamepad icons (#15)
* Add icons

* Add extra line add end of fille
2020-06-23 12:52:55 +01:00
Locness
6726eb6b15 docs: Update README (#14) 2020-06-22 10:57:53 +01:00
John Letey
0345dc1208 refactor: Update license (#12) 2020-06-19 09:35:39 +01:00
Eric Fennis
cde1f11258 feat: Add grip icons (#8) 2020-06-16 09:44:56 +01:00
John Letey
d652e795d6 feat: Add react package (#4)
* chore: Organise

* feat: Add `react` package

* refactor: Remove unneeded char
2020-06-13 12:52:10 +01:00
John Letey
6a3378ce5a feat: Add sort icons (#3)
* feat: Add `sort` icons

* refactor: Remove unnecessary icons

* chore: remove icon
2020-06-13 08:41:46 +01:00
477 changed files with 20435 additions and 16925 deletions

View File

@@ -1,13 +0,0 @@
{
"presets": [
[
"env",
{
"targets": {
"browsers": ["last 2 versions"]
}
}
],
"stage-2"
]
}

11
.editorconfig Normal file
View File

@@ -0,0 +1,11 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
quote_type = single
max_line_length = 100

View File

@@ -1,2 +1,5 @@
dist dist
coverage build
coverage
lib
tests

View File

@@ -1,8 +1,12 @@
{ {
"env": {
"browser": true,
"node": true
},
"extends": ["airbnb-base", "prettier"], "extends": ["airbnb-base", "prettier"],
"plugins": ["import", "prettier"], "plugins": ["import", "prettier"],
"rules": { "rules": {
"no-console": ["error", { "allow": ["warn", "error"] }], "no-console": "off",
"no-param-reassign": "off", "no-param-reassign": "off",
"no-shadow": "off", "no-shadow": "off",
"no-use-before-define": "off", "no-use-before-define": "off",

View File

@@ -1,6 +1,7 @@
--- ---
name: Bug report name: Bug report
about: Create a report to help us improve about: Create a report to help us improve
labels: bug
--- ---
<!-- <!--

View File

@@ -1,6 +1,7 @@
--- ---
name: Icon request name: Icon request
about: Suggest an new icon for this project about: Suggest an new icon for this project
labels: "icon request"
--- ---
<!-- <!--

48
.github/workflows/font.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Build Lucide
on:
push:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
Build:
runs-on: ubuntu-latest
steps:
- name: Clone 'Lucide'
uses: actions/checkout@v2
- name: Install FontForge
run: sudo apt-get install zlib1g-dev fontforge woff2
- name: Clone sfnt2woff-zopfli repo
run: git clone https://github.com/bramstein/sfnt2woff-zopfli.git sfnt2woff-zopfli
- name: Install and move sfnt2woff-zopfli
run: |
cd sfnt2woff-zopfli
make
sudo mv sfnt2woff-zopfli /usr/local/bin/sfnt2woff
- name: Clone woff2
run: git clone --recursive https://github.com/google/woff2.git
- name: Install woff2
run: |
cd woff2
sudo make clean all
sudo mv woff2_compress /usr/local/bin/ && sudo mv woff2_decompress /usr/local/bin/
- name: Install Font Custom dependency
run: sudo gem install fontcustom
- name: Build 'Lucide'
run: echo "Building Featherity font" && fontcustom compile ./icons -h -n Featherity -o build -F
- name: Zip 'Lucide'
run: zip -r Featherity.zip build
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v1.0.0
with:
name: Lucide
path: build

8
.gitignore vendored
View File

@@ -1,6 +1,12 @@
.DS_Store .DS_Store
.next
.now
node_modules node_modules
dist dist
build
lib
sandbox sandbox
stash stash
coverage coverage
stats
*.log

View File

@@ -1,3 +0,0 @@
{
"*.js": "eslint"
}

6
.npmignore Normal file
View File

@@ -0,0 +1,6 @@
.github
packages
stats
node_modules
tests
scripts

View File

@@ -1,19 +0,0 @@
language: node_js
cache:
directories:
- node_modules
notifications:
email: false
node_js: 8
before_script:
- npm prune
script:
- npm run all
after_success:
- npx codecov
- npx babel-node ./bin/sync-algolia.js
deploy:
provider: script
skip_cleanup: true
script:
- npx semantic-release

View File

@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
## Enforcement ## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at cole@colebemis.com. All reported by contacting the project team at johnletey@gmail.com. All
complaints will be reviewed and investigated and will result in a response that complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident. obligated to maintain confidentiality with regard to the reporter of an incident.
@@ -71,4 +71,4 @@ This Code of Conduct is adapted from the [Contributor Covenant][homepage], versi
available at [http://contributor-covenant.org/version/1/4][version] available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org [homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/ [version]: http://contributor-covenant.org/version/1/4/

View File

@@ -2,13 +2,11 @@
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: :+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
The following is a set of guidelines for contributing to Feather. Feel free to propose changes to this document in a pull request. The following is a set of guidelines for contributing to Featherity. Feel free to propose changes to this document in a pull request.
## Pull Requests ## Pull Requests
> **Note:** At the moment we are not accepting pull requests containing _**icons**_. The best way to contribute an icon is to create an issue with a screenshot and link to an SVG of your icon. Feel free to open a pull-request to contribute to this project.
Pull requests for new features, bug fixes, etc. are often appreciated. Please checkout the [project roadmap](https://github.com/colebemis/feather#roadmap) and raise an issue to discuss any of the items on the list.
**Working on your first Pull Request?** You can learn how from this *free* series **Working on your first Pull Request?** You can learn how from this *free* series
[How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
@@ -23,50 +21,4 @@ Guidelines for pull requests:
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:. Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:.
If the icon has not already been requested, [create an issue](https://github.com/colebemis/feather/issues/new?title=Icon%20Request:) with a title of `Icon request: <icon name>` and add as much information as possible. If the icon has not already been requested, [create an issue](https://github.com/lucide-icons/lucide/issues/new?title=Icon%20Request:) with a title of `Icon request: <icon name>` and add as much information as possible.
## Bug Reports
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a :+1: and/or leave a comment with additional information.
When creating a new issue make sure to include the following:
- Version of `Feather` in use. Are you running from source/master? Are you using a released build? Which release?
- Your environment. What is your operating system? 32 or 64 bits?
- Step to reproduce. Even if the step is only one line change, __include it!__ Include the actual result and what you expected.
- Any message or error you get in the console, if you do.
- A screenshot of any visual bug.
Here is what a great bug report would look like:
```
## Prerequisites
Version: Release v3.1.0
Running from: Import using webpack
Operating system: Mac OSX
Bits: 64 bits
## Step to reproduce
- Import `check` icon
- Add to a React component/view
- Run the react app
- Notice that the `check` isn't rendering correctly which seems a encoding problem
### Actual behavior:
- Import `check` icon
- Add to a React component/view
- Run the react app
- Check is displayed with correct encoding (e.g UTF-8)
## Any message or error
No console output
...
## Resources
No resources
...
```

30
LICENSE
View File

@@ -1,21 +1,15 @@
The MIT License (MIT) ISC License
Copyright (c) 2013-2017 Cole Bemis Copyright (c) 2020, Lucide Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy Permission to use, copy, modify, and/or distribute this software for any
of this software and associated documentation files (the "Software"), to deal purpose with or without fee is hereby granted, provided that the above
in the Software without restriction, including without limitation the rights copyright notice and this permission notice appear in all copies.
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
copies or substantial portions of the Software. WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

440
README.md
View File

@@ -1,404 +1,158 @@
# Feather # Lucide
[![Build status](https://img.shields.io/travis/feathericons/feather/master.svg?style=flat-square)](https://travis-ci.org/feathericons/feather) ![NPM](https://img.shields.io/npm/l/lucide)
[![Coverage](https://img.shields.io/codecov/c/github/feathericons/feather/master.svg?style=flat-square)](https://codecov.io/gh/feathericons/feather) [![npm](https://img.shields.io/npm/v/lucide)](https://www.npmjs.com/package/lucide)
[![npm downloads](https://img.shields.io/npm/dm/feather-icons.svg?style=flat-square)](https://www.npmjs.com/package/feather-icons) [![Discord](https://img.shields.io/discord/723074157486800936?label=chat&logo=discord&logoColor=%23ffffff&colorB=%237289DA)](https://discord.gg/EH6nSts)
[![npm version](https://img.shields.io/npm/v/feather-icons.svg?style=flat-square)](https://www.npmjs.com/package/feather-icons)
[![CDNJS version](https://img.shields.io/cdnjs/v/feather-icons.svg?style=flat-square)](https://cdnjs.com/libraries/feather-icons)
[![Donate](https://img.shields.io/badge/donate-paypal-blue.svg?style=flat-square)](https://www.paypal.me/colebemis/5)
## What is Feather? ## What is Lucide?
Feather is a collection of simply beautiful open source icons. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency, and flexibility. Lucide is a community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
https://feathericons.com Note that we are completely independent from Feather, so **icons submitted here won't get added to Feather Icons or its associated librairies**.
```shell
npm install feather-icons
```
## Table of Contents ## Table of Contents
* [Quick Start](#quick-start)
* [Usage](#usage) * [Usage](#usage)
* [Client-side JavaScript](#client-side-javascript)
* [Node](#node)
* [SVG Sprite](#svg-sprite)
* [Figma](#figma) * [Figma](#figma)
* [API Reference](#api-reference)
* [`feather.icons`](#feathericons)
* [`feather.icons[name].toSvg()`](#feathericonsnametosvgattrs)
* [`feather.replace()`](#featherreplaceattrs)
* [(DEPRECATED) `feather.toSvg()`](#deprecated-feathertosvgname-attrs)
* [Contributing](#contributing) * [Contributing](#contributing)
* [Related Projects](#related-projects)
* [License](#license) * [License](#license)
## Quick Start ## Installation
Start with this [CodePen Template](https://codepen.io/pen?template=WOJZdM) to begin prototyping with Feather in the browser. ### Package Managers
Or copy and paste the following code snippet into a blank `html` file. ``` bash
npm install lucide
#or
yarn add lucide
```
```html ### CDN
<!DOCTYPE html>
<html lang="en">
<title></title>
<script src="https://unpkg.com/feather-icons"></script>
<body>
<!-- example icon --> ``` html
<i data-feather="circle"></i> <!-- Development version -->
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.js"></script>
<script> <!-- Production version -->
feather.replace() <script src="https://unpkg.com/lucide@latest"></script>
</script>
</body>
</html>
``` ```
## Usage ## Usage
At its core, Feather is a collection of [SVG](https://svgontheweb.com/#svg) files. This means that you can use Feather icons in all the same ways you can use SVGs (e.g. `img`, `background-image`, `inline`, `object`, `embed`, `iframe`). Here's a helpful article detailing the many ways SVGs can be used on the web: [SVG on the Web Implementation Options](https://svgontheweb.com/#implementation) At its core, Lucide is a collection of [SVG](https://svgontheweb.com/#svg) files. This means that you can use Feather icons in all the same ways you can use SVGs (e.g. `img`, `background-image`, `inline`, `object`, `embed`, `iframe`). Here's a helpful article detailing the many ways SVGs can be used on the web: [SVG on the Web Implementation Options](https://svgontheweb.com/#implementation)
The following are additional ways you can use Feather. The following are additional ways you can use Lucide.
With the Javascript library you can easily incorporate the icon you want in your webpage.
### Client-side JavaScript ### With unpkg
#### 1. Install Here is a complete example with unpkg
> **Note:** If you intend to use Feather with a CDN, you can skip this installation step.
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm).
```shell
npm install feather-icons --save
```
Or just copy [`feather.js`](https://unpkg.com/feather-icons/dist/feather.js) or [`feather.min.js`](https://unpkg.com/feather-icons/dist/feather.min.js) into your project directory. You don't need both `feather.js` and `feather.min.js`.
#### 2. Include
Include `feather.js` or `feather.min.js` with a `<script>` tag:
```html ```html
<script src="path/to/dist/feather.js"></script> <!DOCTYPE html>
<body>
<i icon-name="volume-2" class="my-class"></i>
<i icon-name="x"></i>
<i icon-name="menu"></i>
<script src="https://unpkg.com/lucide@latest"></script>
<script>
lucide.createIcons();
</script>
</body>
``` ```
> **Note:** `feather.js` and `feather.min.js` are located in the `dist` directory of the npm package. ### With ESModules
Or load the script from a CDN provider: To reduce bundle size, lucide is build to be fully threeshakeble.
The `createIcons` function will search for HTMLElements with the attribute `icon-name` and replace it with the svg from the given icon name.
```html ```html
<!-- choose one --> <!-- Your HTML file -->
<script src="https://unpkg.com/feather-icons"></script> <i icon-name="menu"></i>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
``` ```
After including the script, `feather` will be available as a global variable.
#### 3. Use
To use an icon on your page, add a `data-feather` attribute with the icon name to an element:
```html
<i data-feather="circle"></i>
```
See the complete list of icons at [feathericons.com](https://feathericons.com).
#### 4. Replace
Call the `feather.replace()` method:
```html
<script>
feather.replace()
</script>
```
All elements that have a `data-feather` attribute will be replaced with SVG markup corresponding to their `data-feather` attribute value. See the [API Reference](#api-reference) for more information about `feather.replace()`.
### Node
#### 1. Install
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm):
```shell
npm install feather-icons --save
```
#### 2. Require
```js ```js
const feather = require('feather-icons') import { createIcons, icons } from 'lucide';
// Caustion, this will import all the icons and bundle them.
createIcons({icons});
// Recommended way, to include only the icons you need.
import { createIcons, Menu, ArrowRight, Globe } from 'lucide';
createIcons({
icons: {
Menu,
ArrowRight,
Globe,
},
});
``` ```
#### 3. Use #### Additional Options
In the `createIcons` function you can pass some extra parameters to adjust the `nameAttr` or add custom attributes like for example classes.
Here is a full example:
```js ```js
feather.icons.x import { createIcons } from 'lucide';
// {
// name: 'x',
// contents: '<line ... /><line ... />`,
// tags: ['cancel', 'close', 'delete', 'remove'],
// attrs: {
// class: 'feather feather-x',
// 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',
// },
// toSvg: [Function],
// }
feather.icons.x.toSvg() createIcons({
// <svg class="feather feather-x" ...><line ... /><line ... /></svg> attrs: {
class: ['my-custom-class', 'icon'],
feather.icons.x.toSvg({ class: 'foo bar', 'stroke-width': 1, color: 'red' }) 'stroke-width': 1,
// <svg class="feather feather-x foo bar" stroke-width="1" color="red" ...><line ... /><line ... /></svg> stroke: '#333',
},
nameAttr: 'icon-name', // atrribute for the icon name.
});
``` ```
See the [API Reference](#api-reference) for more information about the available properties and methods of the `feather` object. #### Threeshake the library, only use the icons you use
### SVG Sprite ```js
import { createIcons, Menu, ArrowRight, Globe } from 'lucide';
#### 1. Install createIcons({
icons: {
> **Note:** If you intend to use Feather with a CDN, you can skip this installation step. Menu,
ArrowRight,
Install with [npm](https://docs.npmjs.com/getting-started/what-is-npm). Globe,
},
```shell });
npm install feather-icons --save
``` ```
Or just copy [`feather-sprite.svg`](https://unpkg.com/feather-icons/dist/feather-sprite.svg) into your project directory. #### Custom Element binding
#### 2. Use ```js
import { createElement, Menu } from 'lucide';
Include an icon on your page with the following markup: const menuIcon = createElement(Menu); // Returns HTMLElement (svg)
```html // set custom attributes with browser native functions
<svg menuIcon.setAttribute('stroke', '#333');
width="24" menuIcon.classList.add('my-icon-class');
height="24"
fill="none" // Append HTMLElement in webpage
stroke="currentColor" const myApp = document.getElementById('app');
stroke-width="2" myApp.appendChild(menuIcon);
stroke-linecap="round"
stroke-linejoin="round"
>
<use xlink:href="path/to/feather-sprite.svg#circle"/>
</svg>
``` ```
> **Note:** `circle` in the above example can be replaced with any valid icon name. See the complete list of icon names at [feathericons.com](https://feathericons.com).
However, this markup can be simplified using a simple CSS class to avoid repetition of SVG attributes between icons:
```css
.feather {
width: 24px;
height: 24px;
stroke: currentColor;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
fill: none;
}
```
```html
<svg class="feather">
<use xlink:href="path/to/dist/feather-sprite.svg#circle"/>
</svg>
```
### Figma ### Figma
Feather is available as a [Figma component library](https://www.figma.com/file/dyJRSFTIajik4cdkcXN8yA3K/Feather-Component-Library). To use the components, log in to your Figma account and **duplicate** the file to your drafts.
## API Reference You can use the components from [this Figma file](https://www.figma.com/file/g0UipfQlRfGrntKPxZknM7/Featherity).
### `feather.icons`
An object with data about every icon.
#### Usage
```js
feather.icons.x
// {
// name: 'x',
// contents: '<line ... /><line ... />',
// tags: ['cancel', 'close', 'delete', 'remove'],
// attrs: {
// class: 'feather feather-x',
// 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',
// },
// toSvg: [Function],
// }
feather.icons.x.toString()
// '<line ... /><line ... />'
```
> **Note:** `x` in the above example can be replaced with any valid icon name. See the complete list of icon names at [feathericons.com](https://feathericons.com). Icons with multi-word names (e.g. `arrow-right`) **cannot** be accessed using dot notation (e.g. `feather.icons.x`). Instead, use bracket notation (e.g. `feather.icons['arrow-right']`).
[View Source](https://github.com/colebemis/feather/blob/master/src/icons.js)
---
### `feather.icons[name].toSvg([attrs])`
Returns an SVG string.
#### Parameters
| Name | Type | Description |
| --------- | ------ | ----------- |
| `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `<svg>` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `<svg>` tag can be overridden with the `attrs` object. |
> **Hint:** You might find these SVG attributes helpful for manipulating icons:
> * [`color`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/color)
> * [`width`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/width)
> * [`height`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/height)
> * [`stroke-width`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width)
> * [`stroke-linecap`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap)
> * [`stroke-linejoin`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linejoin)
#### Usage
```js
feather.icons.circle.toSvg()
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
feather.icons.circle.toSvg({ 'stroke-width': 1 })
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
feather.icons.circle.toSvg({ class: 'foo bar' })
// '<svg class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
```
[View Source](https://github.com/colebemis/feather/blob/master/src/icon.js)
---
### `feather.replace([attrs])`
Replaces all elements that have a `data-feather` attribute with SVG markup corresponding to the element's `data-feather` attribute value.
#### Parameters
| Name | Type | Description |
| ---------- | ------ | ----------- |
| `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `<svg>` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `<svg>` tag can be overridden with the `attrs` object. |
#### Usage
> **Note:** `feather.replace()` only works in a browser environment.
Simple usage:
```html
<i data-feather="circle"></i>
<!--
<i> will be replaced with:
<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>
-->
<script>
feather.replace()
</script>
```
You can pass `feather.replace()` an `attrs` object:
```html
<i data-feather="circle"></i>
<!--
<i> will be replaced with:
<svg class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>
-->
<script>
feather.replace({ class: 'foo bar', 'stroke-width': 1 })
</script>
```
All attributes on the placeholder element (i.e. `<i>`) will be copied to the `<svg>` tag:
```html
<i data-feather="circle" id="my-circle" class="foo bar" stroke-width="1"></i>
<!--
<i> will be replaced with:
<svg id="my-circle" class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>
-->
<script>
feather.replace()
</script>
```
[View Source](https://github.com/colebemis/feather/blob/master/src/replace.js)
---
### (DEPRECATED) `feather.toSvg(name, [attrs])`
> **Note:** `feather.toSvg()` is deprecated. Please use `feather.icons[name].toSvg()` instead.
Returns an SVG string.
#### Parameters
| Name | Type | Description |
| --------- | ------ | ----------- |
| `name` | string | Icon name |
| `attrs` (optional) | Object | Key-value pairs in the `attrs` object will be mapped to HTML attributes on the `<svg>` tag (e.g. `{ foo: 'bar' }` maps to `foo="bar"`). All default attributes on the `<svg>` tag can be overridden with the `attrs` object. |
#### Usage
```js
feather.toSvg('circle')
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
feather.toSvg('circle', { 'stroke-width': 1 })
// '<svg class="feather feather-circle" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
feather.toSvg('circle', { class: 'foo bar' })
// '<svg class="feather feather-circle foo bar" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle></svg>'
```
[View Source](https://github.com/colebemis/feather/blob/master/src/to-svg.js)
## Contributing ## Contributing
For more info on how to contribute please see the [contribution guidelines](https://github.com/colebemis/feather/blob/master/CONTRIBUTING.md). For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/master/CONTRIBUTING.md).
Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/colebemis/feather/blob/master/README.md) Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/lucide-icons/lucide/blob/master/README.md)
## Related Projects ## Community
- [angular-feather](https://github.com/michaelbazos/angular-feather) - Feather icons for Angular applications Join the community on our [Discord](https://discord.gg/EH6nSts) server!
- [elm-feather](https://github.com/1602/elm-feather) - Feather icons for Elm applications
- [react-feather](https://github.com/carmelopullara/react-feather) - Feather icons as React components
- [sketch-feather](https://github.com/odmln/sketch-feather) - Feather icons as a Sketch library
- [vue-feather-icons](https://github.com/egoist/vue-feather-icons) - Feather icons as Vue components
- [php-feather](https://github.com/Pixelrobin/php-feather) - Feather icons as a PHP Library
- [django-feather](https://pypi.org/project/django-feather/) - Feather icons as Django Template Tag
- [svelte-feather-icons](https://github.com/dylanblokhuis/svelte-feather-icons) - Feather icons as Svelte components
## License ## License
Feather is licensed under the [MIT License](https://github.com/colebemis/feather/blob/master/LICENSE). Lucide is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/master/LICENSE).

27
babel.config.js Normal file
View File

@@ -0,0 +1,27 @@
module.exports = {
presets: [
[
'@babel/env',
{
loose: true,
modules: false,
},
],
],
env: {
test: {
presets: ['@babel/env'],
plugins: ['@babel/plugin-transform-runtime'],
},
dev: {
plugins: [
[
'transform-inline-environment-variables',
{
include: ['NODE_ENV'],
},
],
],
},
},
};

View File

@@ -1,6 +0,0 @@
{
"rules": {
"import/no-extraneous-dependencies": "off",
"no-console": "off"
}
}

View File

@@ -1,8 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`builds object correctly 1`] = `
Object {
"icon1": "<line x1=\\"23\\" y1=\\"1\\" x2=\\"1\\" y2=\\"23\\"></line><line x1=\\"1\\" y1=\\"1\\" x2=\\"23\\" y2=\\"23\\"></line>",
"icon2": "<circle cx=\\"12\\" cy=\\"12\\" r=\\"11\\"></circle>",
}
`;

View File

@@ -1,3 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`builds sprite correctly 1`] = `"<svg xmlns=\\"http://www.w3.org/2000/svg\\"><defs><symbol id=\\"icon1\\" viewBox=\\"0 0 24 24\\"><line x1=\\"23\\" y1=\\"1\\" x2=\\"1\\" y2=\\"23\\"></line><line x1=\\"1\\" y1=\\"1\\" x2=\\"23\\" y2=\\"23\\"></line></symbol><symbol id=\\"icon2\\" viewBox=\\"0 0 24 24\\"><circle cx=\\"12\\" cy=\\"12\\" r=\\"11\\"></circle></symbol></defs></svg>"`;

View File

@@ -1,26 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`processes SVG correctly 1`] = `
"<svg
xmlns=\\"http://www.w3.org/2000/svg\\"
width=\\"24\\"
height=\\"24\\"
viewBox=\\"0 0 24 24\\"
fill=\\"none\\"
stroke=\\"currentColor\\"
stroke-width=\\"2\\"
stroke-linecap=\\"round\\"
stroke-linejoin=\\"round\\"
>
<line x1=\\"23\\" y1=\\"1\\" x2=\\"1\\" y2=\\"23\\" />
<line x1=\\"1\\" y1=\\"1\\" x2=\\"23\\" y2=\\"23\\" />
</svg>
"
`;
exports[`rejects when passed unparsable SVG string 1`] = `
[Error: Error in parsing SVG: Unclosed root tag
Line: 0
Column: 10
Char: ]
`;

View File

@@ -1,17 +0,0 @@
/* eslint-env jest */
import buildIconsObject from '../build-icons-object';
const SVG_FILES = {
'icon1.svg':
'<svg\n xmlns="http://www.w3.org/2000/svg"\n width="24"\n height="24"\n viewBox="0 0 24 24"\n>\n <line x1="23" y1="1" x2="1" y2="23" />\n <line x1="1" y1="1" x2="23" y2="23" />\n</svg>',
'icon2.svg':
'<svg\n xmlns="http://www.w3.org/2000/svg"\n width="24"\n height="24"\n viewBox="0 0 24 24"\n>\n <circle cx="12" cy="12" r="11" />\n</svg>',
};
function getSvg(svgFile) {
return SVG_FILES[svgFile];
}
test('builds object correctly', () => {
expect(buildIconsObject(Object.keys(SVG_FILES), getSvg)).toMatchSnapshot();
});

View File

@@ -1,12 +0,0 @@
/* eslint-env jest */
import buildSpriteString from '../build-sprite-string';
const icons = {
icon1:
'<line x1="23" y1="1" x2="1" y2="23"></line><line x1="1" y1="1" x2="23" y2="23"></line>',
icon2: '<circle cx="12" cy="12" r="11"></circle>',
};
test('builds sprite correctly', () => {
expect(buildSpriteString(icons)).toMatchSnapshot();
});

View File

@@ -1,15 +0,0 @@
/* eslint-env jest */
import processSvg from '../process-svg';
test('processes SVG correctly', () => {
const SVG =
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><title>Title</title><line x1="23" y1="1" x2="1" y2="23" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="1" y1="1" x2="23" y2="23" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>';
expect(processSvg(SVG)).resolves.toMatchSnapshot();
});
test('rejects when passed unparsable SVG string', () => {
const UNPARSABLE_SVG = '<svg></svg';
expect(processSvg(UNPARSABLE_SVG)).rejects.toMatchSnapshot();
});

View File

@@ -1,19 +0,0 @@
import fs from 'fs';
import path from 'path';
import buildIconsObject from './build-icons-object';
const IN_DIR = path.resolve(__dirname, '../icons');
const OUT_FILE = path.resolve(__dirname, '../dist/icons.json');
console.log(`Building ${OUT_FILE}...`);
const svgFiles = fs
.readdirSync(IN_DIR)
.filter(file => path.extname(file) === '.svg');
const getSvg = svgFile => fs.readFileSync(path.join(IN_DIR, svgFile));
const icons = buildIconsObject(svgFiles, getSvg);
fs.writeFileSync(OUT_FILE, JSON.stringify(icons));

View File

@@ -1,28 +0,0 @@
import DEFAULT_ATTRS from '../src/default-attrs.json';
/**
* Build an SVG sprite string containing SVG symbols.
* @param {Object} icons
* @returns {string}
*/
function buildSpriteString(icons) {
const symbols = Object.keys(icons)
.map(icon => toSvgSymbol(icon, icons[icon]))
.join('');
return `<svg xmlns="${DEFAULT_ATTRS.xmlns}"><defs>${symbols}</defs></svg>`;
}
/**
* Create an SVG symbol string.
* @param {string} name - Icon name
* @param {string} contents - SVG contents
* @returns {string}
*/
function toSvgSymbol(name, contents) {
return `<symbol id="${name}" viewBox="${DEFAULT_ATTRS.viewBox}">${
contents
}</symbol>`;
}
export default buildSpriteString;

View File

@@ -1,10 +0,0 @@
import fs from 'fs';
import path from 'path';
import icons from '../dist/icons.json';
import buildSpriteString from './build-sprite-string';
const OUT_FILE = path.resolve(__dirname, '../dist/feather-sprite.svg');
console.log(`Building ${OUT_FILE}...`);
fs.writeFileSync(OUT_FILE, buildSpriteString(icons));

View File

@@ -1,13 +0,0 @@
import fs from 'fs';
import path from 'path';
import icons from '../src/icons';
const OUT_DIR = path.resolve(__dirname, '../dist/icons');
console.log(`Building SVGs in ${OUT_DIR}...`);
Object.keys(icons).forEach(name => {
const svg = icons[name].toSvg();
fs.writeFileSync(path.join(OUT_DIR, `${name}.svg`), svg);
});

View File

@@ -1,25 +0,0 @@
#!/bin/bash
# Process SVG files
npx babel-node bin/process-svgs.js
# Create dist directory
npx rimraf dist
mkdir dist
# Build icons.json
npx babel-node bin/build-icons-json.js
# Build SVG sprite
npx babel-node bin/build-sprite.js
# Create dist/icons directory
npx rimraf dist/icons
mkdir dist/icons
# Build SVG icons
npx babel-node bin/build-svgs.js
# Build JavaScript library
npx webpack --output-filename feather.js --mode development
npx webpack --output-filename feather.min.js --mode production

View File

@@ -1,18 +0,0 @@
import fs from 'fs';
import path from 'path';
import processSvg from './process-svg';
const IN_DIR = path.resolve(__dirname, '../icons');
console.log(`Processing SVGs in ${IN_DIR}...`);
fs
.readdirSync(IN_DIR)
.filter(file => path.extname(file) === '.svg')
.forEach(svgFile => {
const svg = fs.readFileSync(path.join(IN_DIR, svgFile));
processSvg(svg).then(svg =>
fs.writeFileSync(path.join(IN_DIR, svgFile), svg),
);
});

View File

@@ -1,73 +0,0 @@
import algolia from 'algoliasearch';
import icons from '../dist/icons.json';
import tags from '../src/tags.json';
const ALGOLIA_APP_ID = '5EEOG744D0';
if (
process.env.TRAVIS_PULL_REQUEST === 'false' &&
process.env.TRAVIS_BRANCH === 'master'
) {
syncAlgolia();
} else {
console.log('Skipped Algolia sync.');
}
function syncAlgolia() {
// ALGOLIA_ADMIN_KEY must be added as an environment variable in Travis CI
const client = algolia(ALGOLIA_APP_ID, process.env.ALGOLIA_ADMIN_KEY);
console.log('Initializing target and temporary indexes...');
const index = client.initIndex('icons');
const indexTmp = client.initIndex('icons_tmp');
console.log(
"Copying target index's settings, synonyms and rules into temporary index...",
);
scopedCopyIndex(client, index.indexName, indexTmp.indexName)
.then(() => {
const objects = Object.keys(icons).map(name => ({
name,
tags: tags[name] || [],
}));
console.log('Adding objects to the temporary index...');
return addObjects(indexTmp, objects);
})
.then(() => {
console.log('Moving temporary index to target index...');
return moveIndex(client, indexTmp.indexName, index.indexName);
});
}
function scopedCopyIndex(
client,
indexNameSrc,
indexNameDest,
scope = ['settings', 'synonyms', 'rules'],
) {
return new Promise((resolve, reject) => {
client.copyIndex(indexNameSrc, indexNameDest, scope, (error, contents) => {
if (error) reject(error);
resolve(contents);
});
});
}
function addObjects(index, objects) {
return new Promise((resolve, reject) => {
index.addObjects(objects, (error, contents) => {
if (error) reject(error);
resolve(contents);
});
});
}
function moveIndex(client, indexNameSrc, indexNameDest) {
return new Promise((resolve, reject) => {
client.moveIndex(indexNameSrc, indexNameDest, (error, contents) => {
if (error) reject(error);
resolve(contents);
});
});
}

View File

@@ -1,8 +0,0 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'scope-case': [0],
'subject-case': [2, 'always', 'sentence-case'],
'header-max-length': [0],
},
};

View File

@@ -1,17 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Feather</title>
</head>
<body>
<i data-feather="eye"></i>
<i data-feather="heart"></i>
<i data-feather="feather"></i>
<script src="https://unpkg.com/feather-icons"></script>
<script>
feather.replace()
</script>
</body>
</html>

18
icons/alarm-clock.svg Normal file
View File

@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="13" r="8" />
<path d="M12 9v4l2 2" />
<path d="M5 3L2 6" />
<path d="M22 6l-3-3" />
<path d="M6 19l-2 2" />
<path d="M18 19l2 2" />
</svg>

After

Width:  |  Height:  |  Size: 372 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19" /> <path d="M7 7H3.78A1.73 1.73 0 0 0 2 8.67v6.66A1.73 1.73 0 0 0 3.78 17H6m8-10h2.22A1.73 1.73 0 0 1 18 8.67v6.66A1.73 1.73 0 0 1 16.22 17H13" />
<line x1="23" y1="13" x2="23" y2="11" /> <polyline points="11 7 8 12 12 12 9 17" />
<polyline points="11 6 7 12 13 12 9 18" /> <line x1="22" x2="22" y1="11" y2="13" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 397 B

After

Width:  |  Height:  |  Size: 442 B

17
icons/battery-full.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="2" y="7" width="16" height="10" rx="2" ry="2" />
<line x1="22" x2="22" y1="11" y2="13" />
<line x1="6" x2="6" y1="10" y2="14" />
<line x1="10" x2="10" y1="10" y2="14" />
<line x1="14" x2="14" y1="10" y2="14" />
</svg>

After

Width:  |  Height:  |  Size: 438 B

15
icons/battery-low.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="2" y="7" width="16" height="10" rx="2" ry="2" />
<line x1="22" x2="22" y1="11" y2="13" />
<line x1="6" x2="6" y1="10" y2="14" />
</svg>

After

Width:  |  Height:  |  Size: 352 B

16
icons/battery-medium.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="2" y="7" width="16" height="10" rx="2" ry="2" />
<line x1="22" x2="22" y1="11" y2="13" />
<line x1="6" x2="6" y1="10" y2="14" />
<line x1="10" x2="10" y1="10" y2="14" />
</svg>

After

Width:  |  Height:  |  Size: 395 B

View File

@@ -9,6 +9,6 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<rect x="1" y="6" width="18" height="12" rx="2" ry="2" /> <rect x="2" y="7" width="16" height="10" rx="2" ry="2" />
<line x1="23" y1="13" x2="23" y2="11" /> <line x1="22" x2="22" y1="11" y2="13" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 311 B

View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M7 7L17 17L12 22V2L17 7L7 17" />
<line x1="18" y1="12" y2="12" x2="21" />
<line x1="3" y1="12" y2="12" x2="6" />
</svg>

After

Width:  |  Height:  |  Size: 336 B

15
icons/bluetooth-off.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M17 17L12 22V12L7 17" />
<path d="M2 2L22 22" />
<path d="M14.5 9.5L17 7L12 2V6.5" />
</svg>

After

Width:  |  Height:  |  Size: 309 B

View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M7 7l10 10-5 5V2l5 5L7 17" />
<path d="M20.83 14.83a4 4 0 000-5.66" />
<path d="M18 12h.01"/>
</svg>

After

Width:  |  Height:  |  Size: 317 B

View File

@@ -9,5 +9,5 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<polyline points="6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5" /> <path d="M7 7L17 17L12 22V2L17 7L7 17" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 252 B

17
icons/bot.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="3" y="11" width="18" height="10" rx="2" />
<circle cx="12" cy="5" r="2" />
<path d="M12 7v4" />
<line x1="8" y1="16" x2="8" y2="16" />
<line x1="16" y1="16" x2="16" y2="16" />
</svg>

After

Width:  |  Height:  |  Size: 403 B

24
icons/box-select.svg Normal file
View File

@@ -0,0 +1,24 @@
<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="M4 2a2 2 0 00-2 2" />
<line x1="8" y1="2" x2="10" y2="2" />
<line x1="14" y1="2" x2="16" y2="2" />
<path d="M4 22a2 2 0 01-2-2" />
<line x1="22" y1="8" x2="22" y2="10" />
<line x1="22" y1="14" x2="22" y2="16" />
<path d="M22 20a2 2 0 01-2 2" />
<line x1="14" y1="22" x2="16" y2="22" />
<line x1="8" y1="22" x2="10" y2="22" />
<path d="M20 2a2 2 0 012 2" />
<line x1="2" y1="14" x2="2" y2="16" />
<line x1="2" y1="8" x2="2" y2="10" />
</svg>

After

Width:  |  Height:  |  Size: 675 B

22
icons/calculator.svg Normal file
View File

@@ -0,0 +1,22 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="4" y="2" width="16" height="20" rx="2" />
<line x1="8" x2="16" y1="6" y2="6" />
<line x1="16" x2="16" y1="14" y2="18" />
<path d="M16 10H16.01" />
<path d="M12 10H12.01" />
<path d="M8 10H8.01" />
<path d="M12 14H12.01" />
<path d="M8 14H8.01" />
<path d="M12 18H12.01" />
<path d="M8 18H8.01" />
</svg>

After

Width:  |  Height:  |  Size: 534 B

View File

@@ -9,6 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<line x1="1" y1="1" x2="23" y2="23" /> <line x1="2" y1="2" x2="22" y2="22" />
<path d="M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56" /> <path d="M9.5 4h5L17 7h3a2 2 0 012 2v7.5M7 7H4a2 2 0 00-2 2v9a2 2 0 002 2h16"/>
<path d="M14.121 15.121A3 3 0 119.88 10.88"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 367 B

After

Width:  |  Height:  |  Size: 379 B

View File

@@ -9,6 +9,6 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z" /> <path d="M14.5 4h-5L7 7H4a2 2 0 00-2 2v9a2 2 0 002 2h16a2 2 0 002-2V9a2 2 0 00-2-2h-3l-2.5-3z" />
<circle cx="12" cy="13" r="4" /> <circle cx="12" cy="13" r="3" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 343 B

16
icons/coins.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="8" cy="8" r="7" />
<path d="M19.5 9.94a7 7 0 11-9.56 9.56" />
<path d="M7 6h1v4" />
<path d="M17.3 14.3l.7.7-2.8 2.8" />
</svg>

After

Width:  |  Height:  |  Size: 349 B

View File

@@ -9,5 +9,6 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18" /> <rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
<line x1="12" y1="3" x2="12" y2="21" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 313 B

After

Width:  |  Height:  |  Size: 310 B

17
icons/contact.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M19 22H5c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2h14c1.1 0 2 .9 2 2v14c0 1.1-.9 2-2 2z" />
<line x1="16" y1="2" x2="16" y2="4" />
<line x1="8" y1="2" x2="8" y2="4" />
<circle cx="12" cy="11" r="3" />
<path d="M17 18.5c-1.4-1-3.1-1.5-5-1.5s-3.6.6-5 1.5" />
</svg>

After

Width:  |  Height:  |  Size: 474 B

14
icons/contrast.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M12 18a6 6 0 0 0 0-12v12z" />
</svg>

After

Width:  |  Height:  |  Size: 285 B

14
icons/copyleft.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M9 9.35a4 4 0 1 1 0 5.3" />
</svg>

After

Width:  |  Height:  |  Size: 283 B

14
icons/copyright.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="M15 9.354a4 4 0 1 0 0 5.292" />
</svg>

After

Width:  |  Height:  |  Size: 287 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<circle cx="12" cy="6" r="2" /> <circle cx="12" cy="6" r="1" />
<line x1="5" y1="12" x2="19" y2="12" /> <line x1="5" y1="12" x2="19" y2="12" />
<circle cx="12" cy="18" r="2" /> <circle cx="12" cy="18" r="1" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 319 B

After

Width:  |  Height:  |  Size: 319 B

View File

@@ -9,5 +9,5 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z" /> <path d="M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 325 B

15
icons/equal-not.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="5" y1="9" x2="19" y2="9" />
<line x1="5" y1="15" x2="19" y2="15" />
<line x1="19" y1="5" x2="5" y2="19" />
</svg>

After

Width:  |  Height:  |  Size: 331 B

14
icons/equal.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="5" y1="9" x2="19" y2="9" />
<line x1="5" y1="15" x2="19" y2="15" />
</svg>

After

Width:  |  Height:  |  Size: 290 B

13
icons/flame.svg Normal file
View File

@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z" />
</svg>

After

Width:  |  Height:  |  Size: 393 B

16
icons/flashlight-off.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 16v4a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V10C8 8 6 8 6 6" />
<path d="M7 2H18V6c0 2-2 2-2 4v1" />
<line x1="11" y1="6" x2="18" y2="6" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 399 B

15
icons/flashlight.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M18 6c0 2-2 2-2 4V20a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V10C8 8 6 8 6 6V2H18Z" />
<line x1="6" y1="6" x2="18" y2="6" />
<line x1="12" y1="12" x2="12" y2="12" />
</svg>

After

Width:  |  Height:  |  Size: 379 B

17
icons/gamepad-2.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="6" y1="11" x2="10" y2="11" />
<line x1="8" y1="9" x2="8" y2="13" />
<line x1="15" y1="12" x2="15.01" y2="12" />
<line x1="18" y1="10" x2="18.01" y2="10" />
<path d="M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z" />
</svg>

After

Width:  |  Height:  |  Size: 680 B

17
icons/gamepad.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="6" y1="12" x2="10" y2="12" />
<line x1="8" y1="10" x2="8" y2="14" />
<line x1="15" y1="13" x2="15.01" y2="13" />
<line x1="18" y1="11" x2="18.01" y2="11" />
<rect x="2" y="6" width="20" height="12" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 436 B

14
icons/gauge.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 15l3.5-3.5"/>
<path d="M20.3 18c.4-1 .7-2.2.7-3.4C21 9.8 17 6 12 6s-9 3.8-9 8.6c0 1.2.3 2.4.7 3.4"/>
</svg>

After

Width:  |  Height:  |  Size: 326 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<circle cx="12" cy="12" r="4" /> <circle cx="12" cy="12" r="3" />
<line x1="1.05" y1="12" x2="7" y2="12" /> <line x1="3" y1="12" x2="9" y2="12" />
<line x1="17.01" y1="12" x2="22.96" y2="12" /> <line x1="15" y1="12" x2="21" y2="12" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 327 B

View File

@@ -1,16 +1,17 @@
<svg <svg
xmlns="http://www.w3.org/2000/svg"
width="24" width="24"
height="24" height="24"
viewBox="0 0 24 24" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
fill="none" fill="none"
stroke="currentColor" stroke="currentColor"
stroke-width="2" stroke-width="2"
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<rect x="3" y="3" width="7" height="7" /> <rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
<rect x="14" y="3" width="7" height="7" /> <line x1="3" y1="9" x2="21" y2="9" />
<rect x="14" y="14" width="7" height="7" /> <line x1="3" y1="15" x2="21" y2="15" />
<rect x="3" y="14" width="7" height="7" /> <line x1="9" y1="3" x2="9" y2="21" />
<line x1="15" y1="3" x2="15" y2="21" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 388 B

After

Width:  |  Height:  |  Size: 432 B

18
icons/grip-horizontal.svg Normal file
View File

@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="9" r="1" />
<circle cx="19" cy="9" r="1" />
<circle cx="5" cy="9" r="1" />
<circle cx="12" cy="15" r="1" />
<circle cx="19" cy="15" r="1" />
<circle cx="5" cy="15" r="1" />
</svg>

After

Width:  |  Height:  |  Size: 413 B

18
icons/grip-vertical.svg Normal file
View File

@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="9" cy="12" r="1" />
<circle cx="9" cy="5" r="1" />
<circle cx="9" cy="19" r="1" />
<circle cx="15" cy="12" r="1" />
<circle cx="15" cy="5" r="1" />
<circle cx="15" cy="19" r="1" />
</svg>

After

Width:  |  Height:  |  Size: 413 B

View File

@@ -9,5 +9,5 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" /> <path d="M20.42 4.58a5.4 5.4 0 00-7.65 0l-.77.78-.77-.78a5.4 5.4 0 00-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 352 B

14
icons/highlighter.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M9 11l-6 6v3h9l3-3"/>
<path d="M22 12l-4.6 4.6a2 2 0 01-2.8 0l-5.2-5.2a2 2 0 010-2.8L14 4"/>
</svg>

After

Width:  |  Height:  |  Size: 314 B

16
icons/image-off.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M2 2l20 20" />
<path d="M9 3h10a2 2 0 012 2v10M3.59 3.59A2 2 0 003 5v14c0 1.1.9 2 2 2h14a2 2 0 001.41-.59" />
<path d="M9.56 9.56a1.5 1.5 0 01-2.12-2.12" />
<path d="M21 15l-5-5M5 21l8-8" />
</svg>

After

Width:  |  Height:  |  Size: 416 B

18
icons/languages.svg Normal file
View File

@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="5" y1="8" x2="11" y2="14" />
<path d="M4 14l6-6 2-3" />
<line x1="2" y1="5" x2="14" y2="5" />
<line x1="7" y1="2" x2="8" y2="2" />
<path d="M22 21l-5-10-5 10" />
<line x1="14" y1="17" x2="20" y2="17" />
</svg>

After

Width:  |  Height:  |  Size: 433 B

View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="3" y="3" width="7" height="9" />
<rect x="14" y="3" width="7" height="5" />
<rect x="14" y="12" width="7" height="9" />
<rect x="3" y="16" width="7" height="5" />
</svg>

After

Width:  |  Height:  |  Size: 388 B

16
icons/layout-grid.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="3" y="3" width="7" height="7" />
<rect x="14" y="3" width="7" height="7" />
<rect x="14" y="14" width="7" height="7" />
<rect x="3" y="14" width="7" height="7" />
</svg>

After

Width:  |  Height:  |  Size: 388 B

16
icons/library.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 6L20 20" />
<path d="M12 6V20" />
<path d="M8 8V20" />
<path d="M4 4V20" />
</svg>

After

Width:  |  Height:  |  Size: 305 B

15
icons/lightbulb.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="9" y1="18" x2="15" y2="18" />
<line x1="10" y1="22" x2="14" y2="22" />
<path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0018 8 6 6 0 006 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 018.91 14" />
</svg>

After

Width:  |  Height:  |  Size: 417 B

15
icons/link-2-off.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M15 7h2a5 5 0 0 1 4 8M9 17H7A5 5 0 0 1 7 7" />
<line x1="8" y1="12" x2="12" y2="12" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 349 B

View File

@@ -9,6 +9,6 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3" /> <path d="M15 7h2a5 5 0 0 1 0 10h-2m-6 0H7A5 5 0 0 1 7 7h2" />
<line x1="8" y1="12" x2="16" y2="12" /> <line x1="8" y1="12" x2="16" y2="12" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 314 B

13
icons/mouse-pointer-2.svg Normal file
View File

@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M4 4l7.07 17 2.51-7.39L21 11.07Z" />
</svg>

After

Width:  |  Height:  |  Size: 256 B

15
icons/move-diagonal-2.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="5 11 5 5 11 5" />
<polyline points="19 13 19 19 13 19" />
<line x1="5" y1="5" x2="19" y2="19" />
</svg>

After

Width:  |  Height:  |  Size: 329 B

15
icons/move-diagonal.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="13 5 19 5 19 11" />
<polyline points="11 19 5 19 5 13" />
<line x1="19" y1="5" x2="5" y2="19" />
</svg>

After

Width:  |  Height:  |  Size: 329 B

16
icons/move-horizontal.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="18 8 22 12 18 16" />
<polyline points="6 8 2 12 6 16" />
<line x1="2" y1="12" x2="22" y2="12" />
</svg>

After

Width:  |  Height:  |  Size: 330 B

15
icons/move-vertical.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="8 18 12 22 16 18" />
<polyline points="8 6 12 2 16 6" />
<line x1="12" y1="2" x2="12" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 329 B

16
icons/network.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="9" y="2" width="6" height="6" />
<rect x="16" y="16" width="6" height="6" />
<rect x="2" y="16" width="6" height="6" />
<path d="M12 8V12M12 12H5V16M12 12H19V16" />
</svg>

After

Width:  |  Height:  |  Size: 390 B

View File

@@ -9,5 +9,5 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" /> <path d="M14.05 6A5 5 0 0118 10m-3.95-8a9 9 0 018 7.94m0 7v3a2 2 0 01-2 2h-.19a19.79 19.79 0 01-8.63-3.07 19.52 19.52 0 01-6-6 19.82 19.82 0 01-3.11-8.69A2 2 0 013.93 2h3.18a2 2 0 012 1.72 13 13 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 13 13 0 002.81.7A2 2 0 0122 16.92z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 560 B

After

Width:  |  Height:  |  Size: 524 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<polyline points="19 1 23 5 19 9" /> <polyline points="18 2 22 6 18 10" />
<line x1="15" y1="5" x2="23" y2="5" /> <line x1="14" y1="6" x2="22" y2="6" />
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" /> <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 589 B

After

Width:  |  Height:  |  Size: 590 B

View File

@@ -10,6 +10,6 @@
stroke-linejoin="round" stroke-linejoin="round"
> >
<polyline points="16 2 16 8 22 8" /> <polyline points="16 2 16 8 22 8" />
<line x1="23" y1="1" x2="16" y2="8" /> <line x1="22" y1="2" x2="16" y2="8" />
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" /> <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 589 B

After

Width:  |  Height:  |  Size: 589 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<line x1="23" y1="1" x2="17" y2="7" /> <line x1="22" y1="2" x2="16" y2="8" />
<line x1="17" y1="1" x2="23" y2="7" /> <line x1="16" y1="2" x2="22" y2="8" />
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" /> <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 591 B

After

Width:  |  Height:  |  Size: 591 B

View File

@@ -10,5 +10,5 @@
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91" /> <path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91" />
<line x1="23" y1="1" x2="1" y2="23" /> <line x1="22" y1="2" x2="2" y2="22" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 574 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<polyline points="23 7 23 1 17 1" /> <polyline points="22 8 22 2 16 2" />
<line x1="16" y1="8" x2="23" y2="1" /> <line x1="16" y1="8" x2="22" y2="2" />
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" /> <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 589 B

After

Width:  |  Height:  |  Size: 589 B

14
icons/redo.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<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" />
</svg>

After

Width:  |  Height:  |  Size: 325 B

View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3" />
<path d="M8 21h8" />
<path d="M12 17v4" />
<path d="M22 3l-5 5" />
<path d="M17 3l5 5" />
</svg>

After

Width:  |  Height:  |  Size: 380 B

17
icons/screen-share.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3" />
<path d="M8 21h8" />
<path d="M12 17v4" />
<path d="M17 8l5-5" />
<path d="M17 3h5v5" />
</svg>

After

Width:  |  Height:  |  Size: 379 B

View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="3" y1="12" x2="21" y2="12" />
<polyline points="8 8 12 4 16 8" />
<polyline points="16 16 12 20 8 16" />
</svg>

After

Width:  |  Height:  |  Size: 329 B

View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="12" y1="3" x2="12" y2="21" />
<polyline points="8 8 4 12 8 16" />
<polyline points="16 16 20 12 16 8" />
</svg>

After

Width:  |  Height:  |  Size: 329 B

17
icons/sheet.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
width="24"
height="24"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
<line x1="3" y1="9" x2="21" y2="9" />
<line x1="3" y1="15" x2="21" y2="15" />
<line x1="9" y1="9" x2="9" y2="21" />
<line x1="15" y1="9" x2="15" y2="21" />
</svg>

After

Width:  |  Height:  |  Size: 432 B

13
icons/shirt.svg Normal file
View File

@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M20.38 3.46L16 2a4 4 0 01-8 0L3.62 3.46a2 2 0 00-1.34 2.23l.58 3.47a1 1 0 00.99.84H6v10c0 1.1.9 2 2 2h8a2 2 0 002-2V10h2.15a1 1 0 00.99-.84l.58-3.47a2 2 0 00-1.34-2.23z"/>
</svg>

After

Width:  |  Height:  |  Size: 391 B

18
icons/snowflake.svg Normal file
View File

@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="2" y1="12" x2="22" y2="12" />
<line x1="12" y1="2" x2="12" y2="22" />
<path d="M20 16l-4-4 4-4" />
<path d="M4 8l4 4-4 4" />
<path d="M16 4l-4 4-4-4" />
<path d="M8 20l4-4 4 4" />
</svg>

After

Width:  |  Height:  |  Size: 410 B

17
icons/sort-asc.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
width="24"
height="24"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M11 5h10" />
<path d="M11 9h7" />
<path d="M11 13h4" />
<path d="M3 17l3 3 3-3" />
<path d="M6 18V4" />
</svg>

After

Width:  |  Height:  |  Size: 331 B

17
icons/sort-desc.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
width="24"
height="24"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M11 5h4" />
<path d="M11 9h7" />
<path d="M11 13h10" />
<path d="M3 17l3 3 3-3" />
<path d="M6 18V4" />
</svg>

After

Width:  |  Height:  |  Size: 331 B

15
icons/strikethrough.svg Normal file
View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 4H9A3 3 0 0 0 6.17 8" />
<path d="M14 12a4 4 0 0 1 0 8H6" />
<line x1="4" y1="12" x2="20" y2="12" />
</svg>

After

Width:  |  Height:  |  Size: 328 B

Some files were not shown because too many files have changed in this diff Show More