Compare commits

...

59 Commits

Author SHA1 Message Date
Eric Fennis
bd3f24f160 New version 0.12.0 2020-12-31 16:41:07 +01:00
Eric Fennis
8f6062317f Add layout-grid icon (#142) 2020-12-31 16:06:23 +01:00
Alexandr Antonov
8f63d828af feat: Add transport icons (#152)
* feat: Add transport icons

* Update tags.json

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

* Update tags.json

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

* Update tags.json

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

* Update icons/bus.svg

Co-authored-by: Andreas Törnkvist <andreas.o.tornkvist@gmail.com>

* Update icons/car.svg

Co-authored-by: Andreas Törnkvist <andreas.o.tornkvist@gmail.com>

* Update icons/truck.svg

Co-authored-by: Andreas Törnkvist <andreas.o.tornkvist@gmail.com>

Co-authored-by: Alexander Antonov <aantonov@131.ru>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Andreas Törnkvist <andreas.o.tornkvist@gmail.com>
2020-12-31 16:03:48 +01:00
Christopher Sandvik
fc2fac9ca4 Fix optimizeSvgs script (#160) 2020-12-30 20:23:46 +01:00
delnyn
cf13cef475 Add brush icon (#108)
* Update (#2)

update

* Update README.md

* Fix links

* Fix typo

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

* Create brush.svg

* Add brush tags

* Edit brush

Co-authored-by: Locness <37651007+locness3@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-12-30 20:06:56 +01:00
dependabot[bot]
485ae6f531 chore(deps): Bump node-notifier in /packages/lucide-react (#163)
Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-30 20:06:06 +01:00
dependabot[bot]
398421367c chore(deps): Bump node-notifier from 8.0.0 to 8.0.1 in /site (#162)
Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-30 20:05:56 +01:00
dependabot[bot]
8832051f96 chore(deps): Bump node-notifier from 8.0.0 to 8.0.1 (#161)
Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-30 20:05:47 +01:00
Alexandr Antonov
ce80469ecc feat: Add timer icon (#148)
* feat: Add timer icon

* Update tags.json

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

* Update icons/timer.svg

Co-authored-by: Alexander Antonov <aantonov@131.ru>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-12-22 21:04:44 +01:00
Alexandr Antonov
12f2b29ac7 feat: Add crown icon (#151)
* feat: Add crown icon

* Update tags.json

Co-authored-by: Alexander Antonov <aantonov@131.ru>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-12-22 21:02:26 +01:00
Christopher Sandvik
7b7ee1fe63 Add locate and locate-fixed icons (#159) 2020-12-22 21:01:45 +01:00
Eric Fennis
baee6032c6 Add color palette icon (#143)
* add color pallette

* rename

* resize circles
2020-12-21 19:34:03 +01:00
Yüksel Kapan
deae140a6e Create monitor-off.svg (#155)
* Create monitor-off.svg

Added Monitor Off icon.

* Update monitor-off.svg

Updated the icon to match the design guide.

* Update icons/monitor-off.svg

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

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-12-21 18:42:54 +01:00
Eric Fennis
ca90159fce Fix netlify build PRs (#158)
* Add ignore in netlify command

* add quiet flag
2020-12-21 12:18:00 +01:00
Eric Fennis
03e287f2c1 Add qr-code icon (#141) 2020-12-20 14:38:18 +01:00
Eric Fennis
b79aebe284 add hand icon (#134) 2020-12-20 14:24:18 +01:00
Eric Fennis
a21600984d Add laptop-2 icon (#130)
* Add second laptop icon

* fix identation
2020-12-03 09:19:55 +01:00
Alexandr Antonov
8b09a5c1ef feat: Add plane icon (#150)
Co-authored-by: Alexander Antonov <aantonov@131.ru>
2020-12-03 09:10:11 +01:00
Eric Fennis
66ac072870 Release react-package 2020-12-02 15:11:29 +01:00
Eric Fennis
c073a2c529 Update CONTRIBUTING.md (#145) 2020-12-02 14:46:42 +01:00
Eric Fennis
cedf113b54 React package (#105)
* init new react package project

* setup react package

* Fix config for build

* update package

* Fix build

* update package

* fix package.json

* refactor and cleanup

* bumb beta version

* fix regex

* bump version

* Add hashing

* Add tests

* bump version

* Add peer dependecies

* Add docs

* Add readme link
2020-12-02 13:48:39 +01:00
Eric Fennis
571cab88ee v0.11.0 2020-11-19 22:06:13 +01:00
Eric Fennis
68c5ed6097 add files icon (#131)
Co-Authored-By @delnyn
2020-11-17 20:11:40 +01:00
Andreas Törnkvist
85efb8e1b6 Fix: Inconsistent tag spacing (#139) 2020-11-17 20:04:06 +01:00
Andreas Törnkvist
00c3487dff Icons: Beaker, Flasks, Pipette (#135)
* Add: Beaker, Flasks, Pipette

* Tag spacing
2020-11-17 20:03:48 +01:00
Frank Riccobono
cec73c5217 Fix: Bump Chakra-UI and add close button to toast (#138) 2020-11-17 13:26:29 +01:00
Eric Fennis
8f1c7eb737 Fix site search (#133) 2020-11-16 12:05:34 +01:00
Eric Fennis
0dd10483c9 Refactor text-align icons (#109)
* Add new text-align icons

* Stretch icon

Co-authored-by: appmachine <appmachine@appmachines-iMac.local>
2020-11-16 12:05:01 +01:00
Eric Fennis
a0c447cece Add menu (#136) 2020-11-16 12:04:44 +01:00
Andreas Törnkvist
7cf928e94c Icons: Tools and Construction (#118)
* Adding icons: axe,  gavel, hammer, hardhat, shovel

* Update axe, gavel, hammer

* rename tool -> wrench

* Update SVG-structure

* Add ruler

* minify hammer.svg

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

* minify hard-hat.svg

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

* minify gavel.svg

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

* minify shovel.svg

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

* minify ruler.svg

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

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-11-07 14:23:01 +01:00
Frank Riccobono
8caf6efe72 Fix style issues and performance issues for Color Picker and Search Bar (#123)
* feat: ability to customize icons before downloading PNG or SVG

* feat: change color input to be a graphical color picker

* feat: tweak appearance of new inputs

* fix: switch to correct Chakra-UI@Next slider syntax

* fix: make default color `currentColor` and also add Reset button

* fix: move background color from search bar InputGroup to Input

* fix: add margins and border radius to color picker components

* fix: Downgrade color picker to version (see: https://github.com/casesandberg/react-color/issues/731)
2020-11-05 21:07:04 +01:00
Locness
a9fec942ff Add "photo" tags to image + tags to image-off (#125) 2020-11-05 21:06:45 +01:00
Eric Fennis
00cbc81331 Site: Add Logo (#121)
* bump package

* Add Logo

* remove console

* prettify it

* add favicons and fix issue
2020-11-03 20:58:51 +01:00
Eric Fennis
4e3af5c601 add album icon (#76) 2020-11-02 21:14:38 +01:00
Eric Fennis
632dda526a feat: Add clover icon (#65)
* add clover icon

* add space
2020-11-02 21:14:26 +01:00
Eric Fennis
c858240c01 refactor and add more icons (#106) 2020-11-02 21:13:57 +01:00
Andreas Törnkvist
1fb70e67ee Feather icon requests (#114)
* Create FEATHER_ICON_REQUESTS.md

* Feather requests in CONTRIBUTING.md

* Add unlabeled issues to request-list

* Revert "Add unlabeled issues to request-list"

This reverts commit 18a69038e2.

* Revert "Create FEATHER_ICON_REQUESTS.md"

This reverts commit ec96cbd9fd.

* Update link to Fether Requests in CONTRIBUTING

* Update CONTRIBUTING.md

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-31 17:11:42 +01:00
Collin Monahan
b533cf8480 doc/spelling (#120) 2020-10-31 16:11:18 +01:00
Frank Riccobono
51fd3af446 Add customization options to the icon display and download (#113)
* feat: ability to customize icons before downloading PNG or SVG

* feat: change color input to be a graphical color picker

* feat: tweak appearance of new inputs

* fix: switch to correct Chakra-UI@Next slider syntax

* fix: make default color `currentColor` and also add Reset button
2020-10-31 12:53:25 +01:00
Locness
f3c3fea228 Docs : Improve the design guide (#111)
- Use modal verbs instead of "has"
- Use "icons" instead of "each icon"
- change some other things as well
2020-10-27 21:48:45 +01:00
Themistoklis
29574a6385 Add indentation icons in/out (#102) 2020-10-27 21:39:23 +01:00
Eric Fennis
5c96b8d848 Feature/site detail page (#99)
* 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

* Add site overlay

* sort categories

* Add detail page

* Add first categories

* add box

* move site to root directory

* fix merge issues

* Fix routing issues

* Fix icon overlay

* Add copy and download icon

* Fix style issues

* Add text

* update chakra UI

* remove import

* update dependecies

* add lucide react

* Fix bugs

* delete stats files

* update charkra version

Co-authored-by: John Letey <johnletey@gmail.com>
Co-authored-by: appmachine <appmachine@appmachines-iMac.local>
2020-10-26 08:59:56 +01:00
Eric Fennis
2c38fac9b1 Docs: Design guide (#73)
* Add design guide

* Update ICON_DESIGN_GUIDE.md

* Update ICON_DESIGN_GUIDE.md

* Add conventions section

* Moved to the docs directory

* Update docs/ICON_DESIGN_GUIDE.md

Co-authored-by: Locness <37651007+locness3@users.noreply.github.com>

* Update docs/ICON_DESIGN_GUIDE.md

Co-authored-by: Locness <37651007+locness3@users.noreply.github.com>

* Add raw parameter to images url

* add alt test

* Add alt text

Co-authored-by: Locness <37651007+locness3@users.noreply.github.com>
2020-10-25 22:48:03 +01:00
Eric Fennis
0b88415247 feat: add logo (#92) 2020-10-25 21:16:39 +00:00
delnyn
9b25845258 Update readme's table of content (#104)
* Update (#2)

update

* Update README.md

* Fix links

* Fix typo

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

Co-authored-by: Locness <37651007+locness3@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-20 17:22:22 +02:00
Alexander Barrios
49973ff32b Fix problems with SVGs (#100)
* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

* Update font.yml

* Create outline_svg.js

* Update font.yml

* Update font.yml

* Update outline_svg.js

* Update font.yml

* FIX: Problems with SVGs

* FIX: Problems with SVGs

Node runs this script to fix SVG files so FontCustom can compile correctly

* Trigger on PR

* Update scripts/outline_svg.js

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

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-19 11:26:39 +02:00
Alexander Barrios
714f63d0d3 FIX: 404 when installing dependencies using APT (#98)
I added a step that updates APT repositories before installing dependencies
2020-10-16 08:59:45 +02:00
Eric Fennis
762cf32666 Release/v0.1.2 (#97)
* optimize build

* bumb version

Co-authored-by: Eric Fennis <eric.fennis@endurance.com>
2020-10-15 09:17:00 +02:00
Eric Fennis
216f42cdcb remove building icon from root (#96)
Co-authored-by: Eric Fennis <eric.fennis@endurance.com>
2020-10-15 09:00:40 +02:00
delnyn
b80c2805b2 Add Laptop icon (#88)
* Add laptop icon

* Update tags.json

* Update laptop.svg

* Update laptop.svg

* Update icons/laptop.svg

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

* Update icons/laptop.svg

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

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-14 17:58:04 +02:00
mishkaio
d80a267c81 feat: add box select, box select with pointer, bullhorn, document los… (#57)
* feat: add box select, box select with pointer, bullhorn, document lost, document search, lasso select, lasso, newspaper

* Delete box-select-pointer.svg

* Delete box-select.svg

* Delete bullhorn.svg

* Delete document-lost.svg

* Delete document-search.svg

* Update icons/lasso-select.svg

* Update lasso.svg

* Delete newspaper.svg

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-14 17:23:48 +02:00
delnyn
07fa908631 Fix: move building icon (#95)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-13 19:00:42 +02:00
delnyn
1bdf6febac Add building icon (#91)
* Add building icon

* Add building to tags

* Update building.svg

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

* Update building.svg

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

* Update tags.json

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

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-13 08:46:25 +02:00
Eric Fennis
78e1057515 Feat: Adds list-ordered, list-unordered, list-checks (#43)
* Add list icons

* Update icons

* update list icons
2020-10-11 23:51:11 +02:00
dependabot[bot]
9d6d0c340d chore(deps): Bump next from 9.5.3 to 9.5.4 in /site (#89)
Bumps [next](https://github.com/vercel/next.js) from 9.5.3 to 9.5.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v9.5.3...v9.5.4)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-11 13:51:07 +02:00
Eric Fennis
77f3f49ce7 Update site (#87)
* Move the site to the root directory

* Update Site name

Co-authored-by: Eric Fennis <eric.fennis@endurance.com>
2020-10-08 12:44:09 +02:00
Frank Riccobono
a55620d6ba refactor: use memoization and native NextJS router queries to reduce re-renders (#85)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2020-10-07 17:47:41 +02:00
Eric Fennis
dad9648e20 Fix the site, before other site changes (#86)
* fix the site

* Change base

* Change publish folder

Co-authored-by: Eric Fennis <eric.fennis@endurance.com>
2020-10-07 17:42:59 +02:00
Frank Riccobono
b3b39afb95 docs: Create guide for creating icons in Inkscape (#81) 2020-10-07 17:34:40 +02:00
478 changed files with 16932 additions and 13510 deletions

21
.eslintrc.js Normal file
View File

@@ -0,0 +1,21 @@
module.exports = {
env: {
browser: true,
node: true
},
extends: ['airbnb-base', 'prettier'],
plugins: ['import', 'prettier'],
rules: {
'no-console': 'off',
'no-param-reassign': 'off',
'no-shadow': 'off',
'no-use-before-define': 'off',
'prettier/prettier': [
'error',
{
singleQuote: true,
trailingComma: 'all'
}
]
}
};

View File

@@ -1,21 +0,0 @@
{
"env": {
"browser": true,
"node": true
},
"extends": ["airbnb-base", "prettier"],
"plugins": ["import", "prettier"],
"rules": {
"no-console": "off",
"no-param-reassign": "off",
"no-shadow": "off",
"no-use-before-define": "off",
"prettier/prettier": [
"error",
{
"singleQuote": true,
"trailingComma": "all"
}
]
}
}

View File

@@ -2,21 +2,31 @@ name: Build Lucide
on:
push:
branches: [ master ]
pull_request:
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: Update repos
run: sudo apt-get update
- name: Install FontForge
run: sudo apt-get install zlib1g-dev fontforge woff2
run: sudo apt-get install zlib1g-dev fontforge
- name: Install NodeJS and Yarn
run: sudo apt-get install nodejs yarn
- 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
@@ -26,6 +36,7 @@ jobs:
- name: Clone woff2
run: git clone --recursive https://github.com/google/woff2.git
- name: Install woff2
run: |
cd woff2
@@ -35,11 +46,19 @@ jobs:
- name: Install Font Custom dependency
run: sudo gem install fontcustom
- name: Install "outline-stroke"
run: sudo yarn add svg-outline-stroke svgson
- name: "Outline SVG"
run: mkdir converted_icons && node scripts/outline_svg.js
- name: Build 'Lucide'
run: echo "Building Featherity font" && fontcustom compile ./icons -h -n Featherity -o build -F
run: echo "Building Lucide font" && fontcustom compile ./converted_icons -h -n Lucide -o build -F
- name: Zip 'Lucide'
run: zip -r Featherity.zip build
run: zip -r Lucide.zip build
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v1.0.0

2
.gitignore vendored
View File

@@ -4,7 +4,7 @@
node_modules
dist
build
lib
/lib
sandbox
stash
coverage

View File

@@ -4,3 +4,4 @@ stats
node_modules
tests
scripts
site

View File

@@ -2,7 +2,7 @@
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
The following is a set of guidelines for contributing to Featherity. Feel free to propose changes to this document in a pull request.
The following is a set of guidelines for contributing to Lucide. Feel free to propose changes to this document in a pull request.
## Pull Requests
@@ -17,8 +17,25 @@ Guidelines for pull requests:
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `master` branch.
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
### Pull Requests Including Icons
#### Guidelines
Please make sure you follow the icon guidelines, that should be followed to keep quality and consistency when making icons for Lucide
Read it here: [ICON_GUIDELINES](docs/ICON_DESIGN_GUIDE.md)
#### Submitting Mulitple Icons
If you want submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keep the thread clean and scoped.
So don't submit multiple icons in one PR that have noting to do with each other.
So for example don't create one PR with icons: `arrow-up`, `bicycle`, `arrow-down`.
Seperate them by two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
## Icon 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:.
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.
## Icon Requests from Feather
If you are a designer who wants to contribute to Lucide but you don't know what icons to work on, then have a look at the Requests from Feather. All open, unfinished and valid requests can be found in [Feather Icon Requests](https://github.com/lucide-icons/lucide/issues/119).

View File

@@ -1,3 +1,5 @@
<p align=center><img width="410" src="https://lucide.netlify.app/logo-text.svg" alt="Lucide Logo"></p>
# Lucide
![NPM](https://img.shields.io/npm/l/lucide)
@@ -8,13 +10,21 @@
Lucide is a community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
Note that we are completely independent from Feather, so **icons submitted here won't get added to Feather Icons or its associated librairies**.
## Table of Contents
* [Installation](#installation)
* [Package managers](#package-managers)
* [CDN](#cdn)
* [Usage](#usage)
* [Unpkg](#with-unpkg)
* [ESModules](#with-esmodules)
* [Options](#additional-options)
* [Treeshake library](#treeshake-the-library-only-use-the-icons-you-use)
* [Custom binding](#custom-element-binding)
* [React](#with-react)
* [Figma](#figma)
* [Contributing](#contributing)
* [Community](#community)
* [License](#license)
## Installation
@@ -64,7 +74,7 @@ Here is a complete example with unpkg
### With ESModules
To reduce bundle size, lucide is build to be fully threeshakeble.
To reduce bundle size, lucide is built to be fully treeshakable.
The `createIcons` function will search for HTMLElements with the attribute `icon-name` and replace it with the svg from the given icon name.
```html
@@ -75,7 +85,7 @@ The `createIcons` function will search for HTMLElements with the attribute `icon
```js
import { createIcons, icons } from 'lucide';
// Caustion, this will import all the icons and bundle them.
// Caution, this will import all the icons and bundle them.
createIcons({icons});
// Recommended way, to include only the icons you need.
@@ -109,7 +119,7 @@ createIcons({
});
```
#### Threeshake the library, only use the icons you use
#### Treeshake the library, only use the icons you use
```js
import { createIcons, Menu, ArrowRight, Globe } from 'lucide';
@@ -139,6 +149,20 @@ const myApp = document.getElementById('app');
myApp.appendChild(menuIcon);
```
### With React
You can also use the Lucide library using the react package.
```sh
yarn add lucide-react
# or
npm install lucide-react
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/blob/master/packages/lucide-react/README.md).
### Figma
You can use the components from [this Figma file](https://www.figma.com/file/g0UipfQlRfGrntKPxZknM7/Featherity).

19
categories.json Normal file
View File

@@ -0,0 +1,19 @@
{
"arrows": [],
"brands": [],
"code": [],
"connectivity": ["airplay"],
"cursors": [],
"development": [],
"devices": ["alarm-clock"],
"file-system": [],
"layout": [],
"maths": ["activity"],
"multimedia": [],
"notifications": ["alert-circle", "alert-octagon", "alert-triangle"],
"nature": [],
"shopping": [],
"shapes": [],
"sports": [],
"text-edit": ["align-center","align-right","align-left","align-justify" ]
}

78
docs/ICON_DESIGN_GUIDE.md Normal file
View File

@@ -0,0 +1,78 @@
# Icon Design Guide
Here are rules that should be followed to keep quality and consistency when making icons for Lucide.
## Summary of the rules we have
1. Icons must be designed on a **24 by 24 pixels** canvas.
2. Icons must have a **1 pixel padding** within the canvas.
3. Icons must have a **stroke width of 2 pixels**.
4. Icons must use **round joins**.
5. Icons must use **round caps**.
6. Icons must use **centered strokes**.
7. Shapes (such as rectangles) in icons must have **border radius of 2 pixels**.
8. Distinct elements must have **2 pixels of spacing between each other**.
## The Rules Visualized
### 1. Icons must be designed on a 24 by 24 pixels canvas.
![24px-24px](images/24px-24px.png?raw=true "24px-24px")
### 2. Icons must have a 1 pixel padding within the canvas.
![1px-padding](images/1px-padding.png?raw=true "1px-padding")
### 3. Icons must have a stroke width of 2 pixels.
![2px-stroke](images/2px-stroke.png?raw=true "2px-stroke")
### 4. Icons must use round joins.
![round-joints](images/round-joints.png?raw=true "round-joints")
### 5. Icons must use round caps.
![round-caps](images/round-caps.png?raw=true "round-caps")
### 6. Icons must use centered strokes.
![centered-strokes](images/centered-strokes.png?raw=true "centered-strokes")
### 7. Shapes (such as squares) in icons must have border radius of 2 pixels.
![2px-border-radius](images/2px-border-radius.png?raw=true "2px-border-radius")
### 8. Distinct elements must have 2 pixels of spacing between each other.
![2px-element-spacing](images/2px-element-spacing.png?raw=true "2px-element-spacing")
## Code Conventions
Before an icon is added to the library, we like to have readable and optimized svg code.
### Global Attributes
For each icon these attributes are applied, corresponding to the above rules.
```xml
<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"
>
<!-- SVGElements -->
</svg>
```
### Minify paths
Code of paths can get really big.
To reduce file size we like to minify the code.
We recommend to use the [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths.

37
docs/INKSCAPE_GUIDE.md Normal file
View File

@@ -0,0 +1,37 @@
# Inkscape Setup Guide
This guide shows the steps to setup Inkscape for creating icons that conform to the Featherity design
guidelines.
## Setting up The Canvas
When opening a new document, Inkscape will create a canvas of a default size. To change the size to 24x24:
1. Open the Document Properties dialog (File -> Document Properties).
2. On the “Page Size” tab, under “Custom Size” set the Units to `px` and set both Height and Width to 24.
![Setting Page Size](images/page-size.png?raw=true "Setting Page Size")
3. On the “Grid” tab, select `Rectangular Grid` and click “New Grid”.
![Setting Grid Properties](images/grid-1.png?raw=true "Setting Grid Properties")
4. Set the Grid Units to `px` and set Spacing X and Spacing Y both to 1.
![Setting Grid Properties](images/grid-2.png?raw=true "Setting Grid Properties")
5. Close the Document Properties dialog.
6. To center the canvas in the viewport, select View -> Zoom -> Drawing.
## Setting up The Paths
1. Create a path or shape.
2. With the path selected, open the Stroke and Fill panel by pressing `Ctrl+Shift+F` on your keyboard.
![Stroke Style Properties](images/strokes.png?raw=true "Setting Grid Properties")
3. On the “Stroke Style” tab:
* Set Stroke Width to `2px`.
* Select the rounded join type.
* Select the rounded cap type.
4. If the shape is a rectangle, select the rectangle and in the top of the screen below the menu bar, set `Rx` and `Ry` to `2px`.
![Rectangle Radius Properties](images/corner-radius.png?raw=true "Rectangle Radius Properties")
## Saving A File
1. When ready to save the file, click Save As and select “Optimized SVG” as the file type.
![Save As](images/save-as.png?raw=true "Save as")
2. After clicking Save, to conform with the other icons in the package, set Pretty Printing to use spaces and set the indentation depth to 2.
![Optimize](images/optimize-settings.png?raw=true "Optimize")

BIN
docs/images/1px-padding.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
docs/images/24px-24px.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/images/2px-stroke.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
docs/images/grid-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/images/grid-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/images/page-size.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
docs/images/round-caps.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/images/save-as.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
docs/images/strokes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

14
icons/album.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"
>
<rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
<polyline points="11 3 11 11 14 8 17 11 17 3" />
</svg>

After

Width:  |  Height:  |  Size: 319 B

View File

@@ -9,8 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="18" y1="10" x2="6" y2="10" />
<line x1="21" y1="6" x2="3" y2="6" />
<line x1="21" y1="14" x2="3" y2="14" />
<line x1="18" y1="18" x2="6" y2="18" />
<line x1="17" y1="12" x2="7" y2="12" />
<line x1="19" y1="18" x2="5" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 332 B

View File

@@ -9,8 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="21" y1="10" x2="3" y2="10" />
<line x1="21" y1="6" x2="3" y2="6" />
<line x1="21" y1="14" x2="3" y2="14" />
<line x1="21" y1="18" x2="3" y2="18" />
<line x1="3" y1="6" x2="21" y2="6" />
<line x1="3" y1="12" x2="21" y2="12" />
<line x1="3" y1="18" x2="21" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 332 B

View File

@@ -9,8 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="17" y1="10" x2="3" y2="10" />
<line x1="21" y1="6" x2="3" y2="6" />
<line x1="21" y1="14" x2="3" y2="14" />
<line x1="15" y1="12" x2="3" y2="12" />
<line x1="17" y1="18" x2="3" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 332 B

View File

@@ -9,8 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="21" y1="10" x2="7" y2="10" />
<line x1="21" y1="6" x2="3" y2="6" />
<line x1="21" y1="14" x2="3" y2="14" />
<line x1="21" y1="12" x2="9" y2="12" />
<line x1="21" y1="18" x2="7" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 332 B

14
icons/axe.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="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="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" />
</svg>

After

Width:  |  Height:  |  Size: 480 B

15
icons/beaker.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="M4.5 3h15" />
<path d="M6 3v16a2 2 0 002 2h8a2 2 0 002-2V3" />
<path d="M6 14h12" />
</svg>

After

Width:  |  Height:  |  Size: 308 B

15
icons/bike.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"
>
<circle cx="5.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" />
</svg>

After

Width:  |  Height:  |  Size: 361 B

1
icons/brush.svg Normal file
View File

@@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 417 B

23
icons/building.svg Normal file
View File

@@ -0,0 +1,23 @@
<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" ry="2" />
<path d="M9 22v-4h6v4" />
<path d="M8 6h.01" />
<path d="M16 6h.01" />
<path d="M12 6h.01" />
<path d="M12 10h.01" />
<path d="M12 14h.01" />
<path d="M16 10h.01" />
<path d="M16 14h.01" />
<path d="M8 10h.01" />
<path d="M8 14h.01" />
</svg>

After

Width:  |  Height:  |  Size: 524 B

15
icons/bus.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="M19 17h2l.64-2.54a6 6 0 000-2.92l-1.07-4.27A3 3 0 0017.66 5H4a2 2 0 00-2 2v10h2m10 0h-4" />
<circle cx="6.5" cy="17.5" r="2.5" />
<circle cx="16.5" cy="17.5" r="2.5" />
</svg>

After

Width:  |  Height:  |  Size: 392 B

View File

@@ -10,6 +10,6 @@
stroke-linejoin="round"
>
<line x1="2" y1="2" x2="22" y2="22" />
<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"/>
<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>

Before

Width:  |  Height:  |  Size: 379 B

After

Width:  |  Height:  |  Size: 381 B

15
icons/car.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="M14 16H9m10 0h3v-3.15a1 1 0 00-.84-.99L16 11l-2.7-3.6a1 1 0 00-.8-.4H5.24a2 2 0 00-1.8 1.1l-.8 1.63A6 6 0 002 12.42V16h2" />
<circle cx="6.5" cy="16.5" r="2.5" />
<circle cx="16.5" cy="16.5" r="2.5" />
</svg>

After

Width:  |  Height:  |  Size: 425 B

17
icons/clover.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="M16.2 3.8a2.7 2.7 0 00-3.81 0l-.4.38-.4-.4a2.7 2.7 0 00-3.82 0C6.73 4.85 6.67 6.64 8 8l4 4 4-4c1.33-1.36 1.27-3.15.2-4.2z" />
<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="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" />
</svg>

After

Width:  |  Height:  |  Size: 762 B

13
icons/crown.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="M2 4L5 16H19L22 4L16 11L12 4L8 11L2 4ZM5 20H19" />
</svg>

After

Width:  |  Height:  |  Size: 270 B

15
icons/file-check-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"
>
<path d="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
<path d="M14 2v6h6" />
<path d="M3 15l2 2 4-4" />
</svg>

After

Width:  |  Height:  |  Size: 326 B

15
icons/file-check.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="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
<polyline points="14 2 14 8 20 8" />
<path d="M9 15l2 2 4-4" />
</svg>

After

Width:  |  Height:  |  Size: 356 B

16
icons/file-code.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
<path d="M14 2v6h6" />
<path d="M9 18l3-3-3-3" />
<path d="M5 12l-3 3 3 3" />
</svg>

After

Width:  |  Height:  |  Size: 356 B

17
icons/file-digit.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
<path d="M14 2v6h6" />
<path d="M10 12h2v6" />
<rect x="2" y="12" width="4" height="6" />
<path d="M10 18h4" />
</svg>

After

Width:  |  Height:  |  Size: 392 B

15
icons/file-minus-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"
>
<path d="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
<path d="M14 2v6h6" />
<path d="M3 15h6" />
</svg>

After

Width:  |  Height:  |  Size: 320 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
<polyline points="14 2 14 8 20 8" />
<line x1="9" y1="15" x2="15" y2="15" />
</svg>

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 369 B

16
icons/file-plus-2.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
<path d="M14 2v6h6" />
<path d="M3 15h6" />
<path d="M6 12v6" />
</svg>

After

Width:  |  Height:  |  Size: 343 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
<polyline points="14 2 14 8 20 8" />
<line x1="12" y1="18" x2="12" y2="12" />
<line x1="9" y1="15" x2="15" y2="15" />

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 412 B

16
icons/file-search.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v3" />
<path d="M14 2v6h6" />
<path d="M5 17a3 3 0 100-6 3 3 0 000 6z" />
<path d="M9 18l-1.5-1.5" />
</svg>

After

Width:  |  Height:  |  Size: 373 B

View File

@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
<polyline points="14 2 14 8 20 8" />
<line x1="16" y1="13" x2="8" y2="13" />
<line x1="16" y1="17" x2="8" y2="17" />
<polyline points="10 9 9 9 8 9" />
<line x1="10" y1="9" x2="8" y2="9" />
</svg>

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 451 B

16
icons/file-x-2.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
<path d="M14 2v6h6" />
<path d="M3 12.5l5 5" />
<path d="M8 12.5l-5 5" />
</svg>

After

Width:  |  Height:  |  Size: 352 B

16
icons/file-x.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="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
<polyline points="14 2 14 8 20 8" />
<line x1="9.5" y1="12.5" x2="14.5" y2="17.5" />
<line x1="14.5" y1="12.5" x2="9.5" y2="17.5" />
</svg>

After

Width:  |  Height:  |  Size: 427 B

View File

@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z" />
<polyline points="13 2 13 9 20 9" />
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
<polyline points="14 2 14 8 20 8" />
</svg>

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 327 B

15
icons/files.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.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z" />
<path d="M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8" />
<path d="M15 2v5h5" />
</svg>

After

Width:  |  Height:  |  Size: 438 B

15
icons/flask-conical.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="M10 2v8L4.72 20.55a1 1 0 00.9 1.45h12.76a1 1 0 00.9-1.45L14 10V2" />
<path d="M8.5 2h7" />
<path d="M7 16h10" />
</svg>

After

Width:  |  Height:  |  Size: 336 B

17
icons/flask-round.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="M10 2v7.31" />
<path d="M14 9.3V1.99" />
<path d="M8.5 2h7" />
<path d="M14 9.3a6.5 6.5 0 11-4 0" />
<path d="M5.58 16.5h12.85" />
</svg>

After

Width:  |  Height:  |  Size: 358 B

View File

@@ -9,6 +9,6 @@
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"/>
<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>

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 328 B

17
icons/gavel.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="M14 13l-7.5 7.5c-.83.83-2.17.83-3 0 0 0 0 0 0 0a2.12 2.12 0 010-3L11 10" />
<path d="M16 16l6-6" />
<path d="M8 8l6-6" />
<path d="M9 7l8 8" />
<path d="M21 11l-8-8" />
</svg>

After

Width:  |  Height:  |  Size: 396 B

15
icons/hammer.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 12l-8.5 8.5c-.83.83-2.17.83-3 0 0 0 0 0 0 0a2.12 2.12 0 010-3L12 9" />
<path d="M17.64 15L22 10.64" />
<path d="M20.91 11.7l-1.25-1.25c-.6-.6-.93-1.4-.93-2.25v-.86L16.01 4.6a5.56 5.56 0 00-3.94-1.64H9l.92.82A6.18 6.18 0 0112 8.4v1.56l2 2h2.47l2.26 1.91" />
</svg>

After

Width:  |  Height:  |  Size: 484 B

16
icons/hand.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="M18 11V6a2 2 0 00-2-2v0a2 2 0 00-2 2v0" />
<path d="M14 10V4a2 2 0 00-2-2v0a2 2 0 00-2 2v2" />
<path d="M10 10.5V6a2 2 0 00-2-2v0a2 2 0 00-2 2v8" />
<path d="M18 8a2 2 0 114 0v6a8 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: 480 B

16
icons/hard-hat.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 18a1 1 0 001 1h18a1 1 0 001-1v-2a1 1 0 00-1-1H3a1 1 0 00-1 1v2z" />
<path d="M10 10V5a1 1 0 011-1h2a1 1 0 011 1v5" />
<path d="M4 15v-3a6 6 0 016-6h0" />
<path d="M14 6h0a6 6 0 016 6v3" />
</svg>

After

Width:  |  Height:  |  Size: 417 B

View File

@@ -9,6 +9,6 @@
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"/>
<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>

Before

Width:  |  Height:  |  Size: 314 B

After

Width:  |  Height:  |  Size: 316 B

16
icons/indent.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="3 8 7 12 3 16" />
<line x1="21" y1="12" x2="11" y2="12" />
<line x1="21" y1="6" x2="11" y2="6" />
<line x1="21" y1="18" x2="11" y2="18" />
</svg>

After

Width:  |  Height:  |  Size: 373 B

14
icons/laptop-2.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"
>
<rect x="3" y="4" width="18" height="12" rx="2" ry="2" />
<line x1="2" y1="20" x2="22" y2="20" />
</svg>

After

Width:  |  Height:  |  Size: 310 B

13
icons/laptop.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 16V7a2 2 0 00-2-2H6a2 2 0 00-2 2v9m16 0H4m16 0l1.28 2.55a1 1 0 01-.9 1.45H3.62a1 1 0 01-.9-1.45L4 16" />
</svg>

After

Width:  |  Height:  |  Size: 364 B

17
icons/lasso-select.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="M7 22a5 5 0 01-2-4" />
<path d="M7 16.93c.96.43 1.96.74 2.99.91" />
<path d="M3.34 14A6.8 6.8 0 012 10c0-4.42 4.48-8 10-8s10 3.58 10 8a7.19 7.19 0 01-.33 2" />
<path d="M5 18a2 2 0 100-4 2 2 0 000 4z" />
<path d="M14.33 22h-.09a.35.35 0 01-.24-.32v-10a.34.34 0 01.33-.34c.08 0 .15.03.21.08l7.34 6a.33.33 0 01-.21.59h-4.49l-2.57 3.85a.35.35 0 01-.28.14v0z" />
</svg>

After

Width:  |  Height:  |  Size: 588 B

15
icons/lasso.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="M7 22a5 5 0 01-2-4" />
<path d="M3.3 14A6.8 6.8 0 012 10c0-4.4 4.5-8 10-8s10 3.6 10 8-4.5 8-10 8a12 12 0 01-5-1" />
<path d="M5 18a2 2 0 100-4 2 2 0 000 4z" />
</svg>

After

Width:  |  Height:  |  Size: 385 B

18
icons/layout-list.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"
>
<rect x="3" y="14" width="7" height="7" />
<rect x="3" y="3" width="7" height="7" />
<line x1="14" y1="4" x2="21" y2="4" />
<line x1="14" y1="9" x2="21" y2="9" />
<line x1="14" y1="15" x2="21" y2="15" />
<line x1="14" y1="20" x2="21" y2="20" />
</svg>

After

Width:  |  Height:  |  Size: 465 B

18
icons/list-checks.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="10" y1="6" x2="21" y2="6" />
<line x1="10" y1="12" x2="21" y2="12" />
<line x1="10" y1="18" x2="21" y2="18" />
<polyline points="3 6 4 7 6 5" />
<polyline points="3 12 4 13 6 11" />
<polyline points="3 18 4 19 6 17" />
</svg>

After

Width:  |  Height:  |  Size: 449 B

18
icons/list-ordered.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="10" y1="6" x2="21" y2="6" />
<line x1="10" y1="12" x2="21" y2="12" />
<line x1="10" y1="18" x2="21" y2="18" />
<path d="M4 6H5V10" />
<path d="M4 10H6" />
<path d="M6 18H4C4 17 6 16 6 15C6 13.9999 5 13.5 4 14" />
</svg>

After

Width:  |  Height:  |  Size: 443 B

18
icons/locate-fixed.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" x2="5" y1="12" y2="12" />
<line x1="19" x2="22" y1="12" y2="12" />
<line x1="12" x2="12" y1="2" y2="5" />
<line x1="12" x2="12" y1="19" y2="22" />
<circle cx="12" cy="12" r="7" />
<circle cx="12" cy="12" r="3" />
</svg>

After

Width:  |  Height:  |  Size: 446 B

17
icons/locate.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="2" x2="5" y1="12" y2="12" />
<line x1="19" x2="22" y1="12" y2="12" />
<line x1="12" x2="12" y1="2" y2="5" />
<line x1="12" x2="12" y1="19" y2="22" />
<circle cx="12" cy="12" r="7" />
</svg>

After

Width:  |  Height:  |  Size: 411 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="3" y1="12" x2="21" y2="12" />
<line x1="3" y1="6" x2="21" y2="6" />
<line x1="3" y1="18" x2="21" y2="18" />
<line x1="4" y1="12" x2="20" y2="12" />
<line x1="4" y1="6" x2="20" y2="6" />
<line x1="4" y1="18" x2="20" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 332 B

After

Width:  |  Height:  |  Size: 332 B

17
icons/monitor-off.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="M17 17H4a2 2 0 01-2-2V5c0-1.5 1-2 1-2" />
<path d="M22 15V5a2 2 0 00-2-2H9" />
<path d="M8 21h8" />
<path d="M12 17v4" />
<path d="M2 2l20 20" />
</svg>

After

Width:  |  Height:  |  Size: 373 B

16
icons/outdent.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="7 8 3 12 7 16" />
<line x1="21" y1="12" x2="11" y2="12" />
<line x1="21" y1="6" x2="11" y2="6" />
<line x1="21" y1="18" x2="11" y2="18" />
</svg>

After

Width:  |  Height:  |  Size: 373 B

17
icons/palette.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"
>
<circle cx="13.5" cy="6.5" r="0.5" />
<circle cx="17.5" cy="10.5" r="0.5" />
<circle cx="8.5" cy="7.5" r="0.5" />
<circle cx="6.5" cy="12.5" r="0.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" />
</svg>

After

Width:  |  Height:  |  Size: 705 B

15
icons/pipette.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="M2 22l2-2h3l7-7" />
<path d="M4 20v-3l7-7" />
<path d="M14.29 13.3a1 1 0 001.41 0l.8-.8c.27-.27.27-.72 0-1s-.28-.72 0-1l4.08-4.08a2 2 0 000-2.83l-.17-.17a2 2 0 00-2.83 0L13.5 7.51c-.28.27-.73.27-1 0s-.73-.28-1 0l-.8.79a1 1 0 000 1.41l3.59 3.59z" />
</svg>

After

Width:  |  Height:  |  Size: 472 B

13
icons/plane.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="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" />
</svg>

After

Width:  |  Height:  |  Size: 478 B

23
icons/qr-code.svg Normal file
View File

@@ -0,0 +1,23 @@
<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="2" width="8" height="8" />
<path d="M6 6H6.01" />
<rect x="14" y="2" width="8" height="8" />
<path d="M18 6H18.01" />
<rect x="2" y="14" width="8" height="8" />
<path d="M6 18H6.01" />
<path d="M14 14H14.01" />
<path d="M18 18H18.01" />
<path d="M18 22L22 22L22 18" />
<path d="M14 18V22" />
<path d="M22 14L18 14" />
</svg>

After

Width:  |  Height:  |  Size: 563 B

17
icons/ruler.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="m16.0 2.0 6 6-14 14-6-6 14-14" />
<path d="m7.5 10.5 2 2" />
<path d="m10.5 7.5 2 2" />
<path d="m13.5 4.5 2 2" />
<path d="m4.5 13.5 2 2" />
</svg>

After

Width:  |  Height:  |  Size: 379 B

15
icons/shovel.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="M2 22v-5l5-5 5 5-5 5z" />
<path d="M9.5 14.5L16 8" />
<path d="M17 2l5 5-.5.5a3.53 3.53 0 01-5 0s0 0 0 0a3.53 3.53 0 010-5L17 2" />
</svg>

After

Width:  |  Height:  |  Size: 355 B

15
icons/timer.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="10" x2="14" y1="2" y2="2" />
<line x1="12" x2="15" y1="14" y2="11" />
<circle cx="12" cy="14" r="8" />
</svg>

After

Width:  |  Height:  |  Size: 327 B

View File

@@ -9,8 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="1" y="3" width="15" height="13" />
<polygon points="16 8 20 8 23 11 23 16 16 16 16 8" />
<circle cx="5.5" cy="18.5" r="2.5" />
<circle cx="18.5" cy="18.5" r="2.5" />
<path d="M10 17h4V5H2v12h3M20 17h2v-3.34a4 4 0 00-1.17-2.83L19 9h-5v8h1" />
<circle cx="7.5" cy="17.5" r="2.5" />
<circle cx="17.5" cy="17.5" r="2.5" />
</svg>

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 367 B

View File

Before

Width:  |  Height:  |  Size: 376 B

After

Width:  |  Height:  |  Size: 376 B

5
netlify.toml Normal file
View File

@@ -0,0 +1,5 @@
[build]
base = "site/"
publish = "build/"
command = "yarn deploy"
ignore = "git diff --quiet origin/master HEAD ../icons ../site"

View File

@@ -1,27 +1,28 @@
{
"name": "lucide",
"description": "Lucide is a community-run fork of Feather Icons, open for anyone to contribute icons.",
"version": "0.1.1",
"version": "0.12.0",
"license": "ISC",
"amdName": "lucide",
"homepage": "https://featherity.netlify.app",
"url": "https://github.com/owner/project/issues",
"homepage": "https://lucide.netlify.app",
"repository": "github:lucide-icons/lucide",
"bugs": {
"url": "https://github.com/lucide-icons/lucide/issues"
},
"amdName": "lucide",
"source": "build/lucide.js",
"main": "dist/cjs/lucide.js",
"main:umd": "dist/umd/lucide.js",
"module": "lib/lucide.js",
"module": "dist/esm/lucide.js",
"unpkg": "dist/umd/lucide.min.js",
"sideEffects": false,
"scripts": {
"start": "babel-watch --watch src",
"clean": "rimraf lib && rimraf dist && rimraf build",
"build": "yarn clean && yarn build:move && yarn build:icons && yarn build:es && yarn build:esbrowser && yarn build:bundles",
"clean": "rimraf dist && rimraf build",
"build": "yarn clean && yarn build:move && yarn build:icons && yarn build:es && yarn build:bundles",
"build:move": "cp -av src build",
"build:icons": "npx babel-node ./scripts/buildIcons.js --presets @babel/env",
"build:es": "babel build -d lib --source-maps --ignore '**/*.test.js','**/__mocks__'",
"build:esbrowser": "BROWSER_COMPAT=true yarn build:es -d dist/esm",
"build:bundles": "BROWSER_COMPAT=true rollup -c rollup.config.js",
"build:es": "babel build -d dist/esm",
"build:bundles": "rollup -c rollup.config.js",
"optimize": "npx babel-node ./scripts/optimizeSvgs.js --presets @babel/env",
"test": "jest"
},
@@ -31,20 +32,23 @@
"@babel/cli": "^7.10.5",
"@babel/core": "^7.11.1",
"@babel/node": "^7.10.5",
"@babel/plugin-transform-runtime": "^7.11.5",
"@babel/preset-env": "^7.11.0",
"@rollup/plugin-babel": "^5.0.0",
"babel-jest": "^26.3.0",
"babel-plugin-add-import-extension": "^1.4.3",
"cheerio": "^1.0.0-rc.2",
"core-js": "3",
"eslint": "^4.19.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.5.0",
"eslint-plugin-prettier": "^2.5.0",
"html-minifier": "^3.5.8",
"htmlparser2": "^4.1.0",
"jest": "^26.4.2",
"lodash": "^4.17.19",
"prettier": "^1.8.2",
"minimist": "^1.2.5",
"prettier": "1.17.1",
"rollup": "^2.7.3",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-license": "^2.0.0",
@@ -53,12 +57,5 @@
"rollup-plugin-terser": "^5.2.0",
"rollup-plugin-visualizer": "^4.1.0",
"svgo": "^1.3.2"
},
"dependencies": {
"@babel/plugin-transform-runtime": "^7.11.5",
"core-js": "3",
"htmlparser2": "^4.1.0",
"lodash-es": "^4.17.15",
"prop-types": "^15.7.2"
}
}

View File

@@ -0,0 +1,73 @@
# Lucide React
Use the lucide icon library in you react app.
## Installation
```sh
yarn add lucide-react
# or
npm install lucide-react
```
## How to use
It's build with ESmodules so it's completely threeshakable.
Each icon can be imported as an react component.
### Example
You can pass additional props to adjust the icon.
``` js
import { Camera } from 'lucide-react';
// Returns ReactComponent
// Usage
const App = () => {
return <Camera color="red" size={48}/>
};
export default App;
```
### Props
| name | type | default
| ------------ | -------- | --------
| `size` | *Number* | 24
| `color` | *String* | currentColor
| `strokeWidth`| *Number* | 2
### Custom props
You can also pass custom props that will be added in the svg as attributes.
``` js
// Usage
const App = () => {
return <Camera fill="red"/>
};
```
### One generic icon component
It is possible to create one generic icon component to load icons.
> :warning: Example below importing all EsModules, caution using this example, not recommended when you using bundlers.
#### Icon Component Example
``` js
import * as icons from 'lucide-react';
const Icon = ({name, color, size}) => {
const LucideIcon = icons[name];
return <LucideIcon color={color} size={size} />
};
export default Icon;
```

View File

@@ -0,0 +1,4 @@
// module.exports = require('../../babel.config');
module.exports = {
presets: ['react-app'],
};

View File

@@ -0,0 +1,12 @@
module.exports = {
verbose: true,
roots: ['<rootDir>/src/', '<rootDir>/tests/'],
moduleFileExtensions: ['js'],
transformIgnorePatterns: [`/node_modules`],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
transform: {
'^.+\\.js$': 'babel-jest',
},
};

View File

@@ -0,0 +1,37 @@
{
"name": "lucide-react",
"description": "Lucide React package, Lucide is a community-run fork of Feather Icons, open for anyone to contribute icons.",
"version": "0.12.0",
"license": "ISC",
"amdName": "lucide-react",
"source": "build/lucide-react.js",
"main": "dist/cjs/lucide-react.js",
"main:umd": "dist/umd/lucide-react.js",
"module": "dist/esm/lucide-react.js",
"unpkg": "dist/umd/lucide-react.min.js",
"repository": "github:lucide-icons/lucide",
"author": "Eric Fennis",
"scripts": {
"build": "yarn clean && yarn build:move && yarn build:icons && yarn build:es && yarn build:bundles",
"clean": "rm -rf dist && rm -rf build",
"build:move": "cp -av src build",
"build:icons": "yarn --cwd ../../ build:icons --output=../packages/lucide-react/build --templateSrc=../packages/lucide-react/scripts/exportTemplate --camelizeAttrs --renderUniqueKey",
"build:es": "yarn --cwd ../../ babel packages/lucide-react/build -d packages/lucide-react/dist/esm",
"build:bundles": "yarn --cwd ../../ rollup -c packages/lucide-react/rollup.config.js",
"test": "jest"
},
"dependencies": {
"prop-types": "^15.7.2",
"react": "^17.0.1"
},
"devDependencies": {
"babel-preset-react-app": "^10.0.0",
"jest": "^26.6.3",
"lucide": "file:../..",
"react-test-renderer": "^17.0.1"
},
"peerDependencies": {
"prop-types": "^15.7.2",
"react": "^17.0.1"
}
}

View File

@@ -0,0 +1,47 @@
const plugins = require('lucide/rollup.plugins');
const pkg = require('./package.json');
const outputFileName = pkg.name;
const rootDir = 'packages/lucide-react'; // It runs from the root
const outputDir = `${rootDir}/dist`;
const inputs = [`${rootDir}/build/lucide-react.js`];
const bundles = [
{
format: 'umd',
inputs,
outputDir,
minify: true,
},
{
format: 'umd',
inputs,
outputDir,
},
{
format: 'cjs',
inputs,
outputDir,
},
];
const configs = bundles
.map(({ inputs, outputDir, format, minify }) =>
inputs.map(input => ({
input,
plugins: plugins(pkg, minify),
external: ['react', 'prop-types'],
output: {
name: outputFileName,
file: `${outputDir}/${format}/${outputFileName}${minify ? '.min' : ''}.js`,
format,
sourcemap: true,
globals: {
react: 'react',
'prop-types': 'PropTypes',
},
},
})),
)
.flat();
export default configs;

View File

@@ -0,0 +1,7 @@
export default ({ componentName, node }) => `
import createReactComponent from '../createReactComponent';
const ${componentName} = createReactComponent('${componentName}', ${node});
export default ${componentName};
`;

View File

@@ -0,0 +1,31 @@
import { forwardRef, createElement } from 'react';
import PropTypes from 'prop-types';
export default (iconName, [tag, attrs, children]) => {
const Component = forwardRef(
({ color = 'currentColor', size = 24, strokeWidth = 2, ...rest }, ref) =>
createElement(
tag,
{
ref,
...attrs,
width: size,
height: size,
color,
strokeWidth,
...rest,
},
children.map(([childTag, childAttrs]) => createElement(childTag, childAttrs)),
),
);
Component.propTypes = {
color: PropTypes.string,
size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
};
Component.displayName = `${iconName}`;
return Component;
};

View File

@@ -0,0 +1,5 @@
/*
Icons exports.
Will be generated
*/

View File

@@ -0,0 +1 @@
export * from './icons';

View File

@@ -0,0 +1,97 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Using lucide icon components should adjust the size, stroke color and stroke width 1`] = `
<svg
color="currentColor"
fill="none"
height={48}
stroke="red"
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={4}
viewBox="0 0 24 24"
width={48}
xmlns="http://www.w3.org/2000/svg"
>
<rect
height="18"
rx="2"
ry="2"
width="18"
x="3"
y="3"
/>
<line
x1="3"
x2="21"
y1="9"
y2="9"
/>
<line
x1="3"
x2="21"
y1="15"
y2="15"
/>
<line
x1="9"
x2="9"
y1="3"
y2="21"
/>
<line
x1="15"
x2="15"
y1="3"
y2="21"
/>
</svg>
`;
exports[`Using lucide icon components should render an component 1`] = `
<svg
color="currentColor"
fill="none"
height={24}
stroke="currentColor"
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
viewBox="0 0 24 24"
width={24}
xmlns="http://www.w3.org/2000/svg"
>
<rect
height="18"
rx="2"
ry="2"
width="18"
x="3"
y="3"
/>
<line
x1="3"
x2="21"
y1="9"
y2="9"
/>
<line
x1="3"
x2="21"
y1="15"
y2="15"
/>
<line
x1="9"
x2="9"
y1="3"
y2="21"
/>
<line
x1="15"
x2="15"
y1="3"
y2="21"
/>
</svg>
`;

View File

@@ -0,0 +1,27 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { Grid } from '..'
describe('Using lucide icon components', () => {
it('should render an component', () => {
const component = renderer.create(
<Grid/>,
);
let tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
it('should adjust the size, stroke color and stroke width', () => {
const component = renderer.create(
<Grid
size={48}
stroke="red"
strokeWidth={4}
/>,
);
let tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
})

File diff suppressed because it is too large Load Diff

View File

@@ -1,140 +0,0 @@
const cheerio = require("cheerio");
const fs = require("fs");
const path = require("path");
const prettier = require("prettier");
const upperCamelCase = require("uppercamelcase");
const directory = path.join(process.cwd(), "../../icons");
function getAllData() {
const fileNames = fs.readdirSync(directory);
return fileNames.map((fileName) => {
const name = fileName.replace(/\.svg$/, "");
const fullPath = path.join(directory, `${name}.svg`);
const fileContents = fs.readFileSync(fullPath, "utf8");
const $ = cheerio.load(fileContents);
const content = $("svg").html();
return {
name,
src: fileContents,
content,
};
});
}
const icons = getAllData();
const dir = path.join(process.cwd(), "src/icons");
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
const initialTypeDefinitions = `/// <reference types="react" />
import { FC, SVGAttributes } from "react";
interface Props extends SVGAttributes<SVGElement> {
color?: string;
size?: string | number;
width?: string | number;
}
type Icon = FC<Props>;
`;
fs.writeFileSync(path.join(process.cwd(), "src", "index.js"), "", "utf-8");
fs.writeFileSync(
path.join(process.cwd(), "src", "index.d.ts"),
initialTypeDefinitions,
"utf-8"
);
const attrsToString = (attrs) => {
return Object.keys(attrs)
.map((key) => {
if (
key === "width" ||
key === "height" ||
key === "stroke" ||
key === "strokeWidth"
) {
return key + "={" + attrs[key] + "}";
}
if (key === "rest") {
return "{...rest}";
}
return key + '="' + attrs[key] + '"';
})
.join(" ");
};
icons.forEach((i) => {
const location = path.join(process.cwd(), "src/icons", `${i.name}.js`);
const ComponentName = i.name === "github" ? "GitHub" : upperCamelCase(i.name);
const defaultAttrs = {
xmlns: "http://www.w3.org/2000/svg",
width: "size",
height: "size",
viewBox: "0 0 24 24",
fill: "none",
stroke: "color",
strokeWidth: "width",
strokeLinecap: "round",
strokeLinejoin: "round",
rest: "...rest",
};
const element = `
import React, { forwardRef } from "react";
import PropTypes from "prop-types";
const ${ComponentName} = forwardRef(({ color = "currentColor", size = 24, width = 2, ...rest }, ref) => {
return (
<svg ref={ref} ${attrsToString(defaultAttrs)}>
${i.content}
</svg>
)
});
${ComponentName}.propTypes = {
color: PropTypes.string,
size: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
width: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]),
}
${ComponentName}.displayName = "${ComponentName}"
export default ${ComponentName}
`;
fs.writeFileSync(
location,
prettier.format(element, { parser: "babel" }),
"utf-8"
);
console.log("Successfully built", ComponentName);
const exportString = `export { default as ${ComponentName} } from "./icons/${i.name}";\n`;
fs.appendFileSync(
path.join(process.cwd(), "src", "index.js"),
exportString,
"utf-8"
);
const exportTypeString = `export const ${ComponentName}: Icon;\n`;
fs.appendFileSync(
path.join(process.cwd(), "src", "index.d.ts"),
exportTypeString,
"utf-8"
);
});

View File

@@ -1,17 +0,0 @@
{
"name": "lucide-react",
"version": "1.0.0",
"description": "React component for lucide icons",
"main": "src/index.js",
"typings": "src/index.d.ts",
"author": "John Letey",
"license": "ISC",
"scripts": {
"compile": "rm -rf src/icons && node bin/build.js"
},
"devDependencies": {
"cheerio": "^1.0.0-rc.3",
"prettier": "^2.0.5",
"uppercamelcase": "^3.0.0"
}
}

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