Compare commits

..

38 Commits

Author SHA1 Message Date
Eric Fennis
b75aee4df3 Add Pilcrow Icon (paragraph) (#884)
* add pilcrow icon
* add tags
2022-11-15 10:34:25 +01:00
Ekow Baah-Nyarkoh
0c93e7bcb4 update documentation with correct import for all icons (#875) 2022-11-13 21:59:29 +01:00
Lucide Bot
538dad2d30 📦 Bump lucide package versions to 0.100.0 2022-11-10 21:58:48 +00:00
Karsa
797fa5c431 Update baby.svg (#881) 2022-11-10 22:52:27 +01:00
Wojciech Maj
8ccbb8f2e3 Update lucide-react on marketing site (#848) 2022-11-08 15:43:41 +01:00
Badraxas
b77ce99363 Adds devices icon (#871)
* Adding devices icon

* Update icons/devices.svg

* rename devices into monitor-smartphone

Co-authored-by: Karsa <contact@karsa.org>
2022-11-08 15:33:45 +01:00
Sean van Zuidam
c7f73611ca Add Magento 2 Hyva package to docs (#857)
* ADD: Hyva to 3de party section

* ADD: Hyva to readme

* IMP: description
2022-11-08 08:08:26 +01:00
Eric Fennis
2a1178b8a3 Introduce Docker Image for font building (#870)
* Add dockerfile

* Make the dockerfile work

* try docker container for font building

* remove workflow dep

* add docker compose file

* test docker image

* update build font flow

* update to v3

* cleanup

* add filter options for installs

* test

* revert filter on install

* optimize font building

* Rename workflow

* test and compare workflows

* test workflow

* test

* try with filter

* test old script github actions

* Fix old script

* this works?

* test script

* finialize font script

* remove workspace packages

* add pnpm-lock.yaml in workflows
2022-11-08 08:07:32 +01:00
Louis Bailleau
55ae908018 Update all packages dependencies in project root (#863)
* Update `svgo` and `svgson` version and fix some tests

* Update eslint-related packages and fix all linter errors

* Update all rollup-related packages version

* Update all rollup-related packages (part 2)

* Update the rest of package which need to be updated

* Fix unwanted comment

* Fix unwanted comment (again)
2022-11-07 22:29:19 +01:00
Ekow Baah-Nyarkoh
1cdcfd6403 Publish angular dist folder instead of project folder (#872)
* publish angular dist folder instead of project folder

* publish angular dist folder instead of project folder
2022-11-03 09:17:54 +01:00
Lucide Bot
810cd84876 📦 Bump lucide package versions to 0.98.0 2022-11-02 20:09:33 +00:00
Karsa
ca471899c1 Added dumbbell icon (#862)
Co-authored-by: Karsa <karsa@karsa.org>
2022-11-02 21:03:06 +01:00
Eric Fennis
b40edf1f3c Improve Loading in figma plugin (#866)
* Add skeleton

* improve icon loading
2022-11-02 21:01:34 +01:00
Ekow Baah-Nyarkoh
32c339cabd downgrade puppeteer to make angular build work (#867) 2022-11-02 21:01:10 +01:00
Karsa
3529cd3f4d Adds various food and food intolerance icons (#861)
* Food intolerance + allergy icons

* Fixes bean outline

* Update dna.svg

* Update bean.svg

Co-authored-by: Karsa <karsa@karsa.org>
2022-11-02 16:09:23 +01:00
locness3
a4d568f26e Improve "Why choose Lucide over Feather" section in README.md (#868)
Authored by: @locness3
- Updated the obsolete number of added icons (congratulations to everyone btw, this is impressive).
- Added mention official packages.
- Expanded on "Active community".
2022-11-02 16:01:54 +01:00
Eric Fennis
9e524fd557 Add icon check-check (#809)
* add icon check check

* Update icons/check-check.svg

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

Co-authored-by: Karsa <contact@karsa.org>
2022-11-01 17:30:41 +01:00
Wojciech Maj
b5c71c4fc3 Dedupe dependencies (#854) 2022-11-01 17:28:24 +01:00
Sean van Zuidam
aa8861a2cd Add show more link for packages on Homepage (#858)
* DEL: laravel from homepage packages

* ADD: more options link

This makes it more clear there are more options than just the ones shown on the homepage
2022-11-01 17:25:14 +01:00
Wojciech Maj
a41918a81e Don't hardcode GitHub username in fetchCommitsOfIcon, allow usage of GITHUB_TOKEN instead (#844)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2022-10-27 08:22:53 +02:00
Wojciech Maj
33be2c2430 Split commands in documentation to make it possible to use Copy to clipboard icon (#853)
GitHub adds Copy to clipboard button to all code snippets. By splitting npm and yarn specific snippets into two separate snippets we make it possible to copy the command dev is interested in in one click instead of manually selecting it and copying with Ctrl+C.
2022-10-27 08:19:45 +02:00
Wojciech Maj
eb706417e6 Reduce __NEXT_DATA__ size by removing content and author.commit properties from IconEntity (#846)
Reduces __NEXT_DATA__ size on main page by 127610 bytes by calculating `content` from `src` property and removing `commit` data altogether.

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2022-10-27 08:17:25 +02:00
Wojciech Maj
01e11a61f8 Update GitHub Actions actions/checkout to v3 (#851)
Fixed dependency warning:

```
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: actions/checkout
```
2022-10-27 08:15:43 +02:00
Kemie
b323bbd28e Add Cat & Dog (#825)
* Added cat & dog

* optimized svgs, tags

* updated cat & dog

refined icons to better meet design guidelines (2px gap)

* Update dog.svg

fixed ears

* Update tags.json

tags for dog

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

* Update tags.json

tags for cat

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

* reoptimized dog & cat svgs

* reoptimized svgs

* svg code formatting

* unmerge paths

* Update icons/cat.svg

* Update icons/dog.svg

Co-authored-by: Karsa <contact@karsa.org>
2022-10-27 08:13:26 +02:00
Wojciech Maj
514e88bbf9 Remove direct dependency on @emotion/core, @emotion/react, @emotion/styled (#849) 2022-10-27 08:11:57 +02:00
Sean van Zuidam
de6ed26152 ADD: missing key to loops (#856) 2022-10-27 08:11:05 +02:00
Wojciech Maj
b8cc9ea3c8 Update husky, automatically install husky on pnpm i (#847)
Fixes #836

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2022-10-26 08:50:19 +02:00
Wojciech Maj
cc2ac8bfcd Lazy load JSZip on Download all button click (#850) 2022-10-26 08:46:19 +02:00
Wojciech Maj
0e340a2679 Add lucide-react-native package to Header and main menu items (#845)
Fixes #841
2022-10-26 08:41:05 +02:00
Wojciech Maj
c15e3914a6 Fix version not bumped in lucide-react-native package.json (#840)
Fixes #839

…i think.
2022-10-26 08:36:57 +02:00
Wojciech Maj
ff81fbfd9a Don't use md4 in crypto.createHash (#843)
Fixes #842

Please review carefully - I don't fully understand how this hash is used and whether there are any implications of changing it.
2022-10-26 08:36:17 +02:00
Wojciech Maj
5317abb867 Add packageManager to package.json to allow usage with Corepack (#838) 2022-10-26 08:33:51 +02:00
Wojciech Maj
ac80b9e58f Update react-native-svg to ^13.0.0, allow react-native-svg ^13.0.0 as peerDependency (#837) 2022-10-26 08:33:17 +02:00
Eric Fennis
a25f139953 add spline icon (#811) 2022-10-24 18:54:16 +02:00
Ekow Baah-Nyarkoh
b457c8dea1 Make lucid-angular compatible with angular 14 (#835)
* make lucid angular compatible with angular 14

* update pnpm-lock file
2022-10-24 18:39:44 +02:00
Christian Friedow
2e24567f8e Docs: fix and extend the generic vue3 icon component example (#832)
* docs: fix and extend the vue3 icon component example

* docs: refactor the usage example to utilize script setup

* fix: correct dashcase in property names
2022-10-23 18:30:39 +02:00
ANTARCTUS
9b90bc4d51 Better tags 1 (#827)
* Update tags.json

Add "logo" tag to the trello logo

* Update tags.json

Add "maths" tag

* Update tags.json

Add tag "logo" to  chrome

* Update tags.json

Add the tag "shape" to "octogon", "triangle", "square" and "circle"

* Update tags.json

Add tag "shape" to diamond

* Update tags.json

Add tag "maths" to function

* Update tags.json

* Update tags.json

Add "maths" to "circle slashed"

* Update tags.json

Remove the comma after the tag logo from trello
2022-10-23 18:29:43 +02:00
Lucide Bot
6fd0380e19 📦 Bump lucide package versions to 0.93.0 2022-10-23 12:19:23 +00:00
133 changed files with 36883 additions and 6730 deletions

View File

@@ -3,3 +3,4 @@ build
coverage coverage
lib lib
tests tests
node_modules

View File

@@ -1,7 +1,7 @@
module.exports = { module.exports = {
env: { env: {
browser: true, browser: true,
node: true node: true,
}, },
extends: ['airbnb-base', 'prettier'], extends: ['airbnb-base', 'prettier'],
plugins: ['import', 'prettier'], plugins: ['import', 'prettier'],
@@ -14,12 +14,26 @@ module.exports = {
'error', 'error',
{ {
singleQuote: true, singleQuote: true,
trailingComma: 'all' trailingComma: 'all',
} },
] ],
'import/no-extraneous-dependencies': [
'error',
{ devDependencies: ['**/*.test.js', '**/*.spec.js', './scripts/**'] },
],
'import/extensions': [
'error',
{
pattern: {
mjs: 'always',
json: 'always',
},
},
],
}, },
parserOptions: { parserOptions: {
tsconfigRootDir: __dirname, tsconfigRootDir: __dirname,
project: ['./site/tsconfig.json', './packages/*/tsconfig.json'], project: ['./site/tsconfig.json', './packages/*/tsconfig.json'],
ecmaVersion: 2020,
}, },
}; };

View File

@@ -14,8 +14,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-angular/** - packages/lucide-angular/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-angular/** - packages/lucide-angular/**
- pnpm-lock.yaml
jobs: jobs:
lucide-angular: lucide-angular:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-angular test run: pnpm --filter lucide-angular test

59
.github/workflows/lucide-font.yml vendored Normal file
View File

@@ -0,0 +1,59 @@
name: Lucide font checks
on:
pull_request:
paths:
- icons/**
- pnpm-lock.yaml
push:
paths:
- icons/**
- pnpm-lock.yaml
jobs:
lucide-font:
runs-on: ubuntu-latest
container: ericfennis/lucide-font:latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
with:
version: 7
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-lucide-font-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-lucide-font-pnpm-store-
- name: Install dependencies
run: pnpm install --filter outline-svg
- name: Outline svg Icons
run: pnpm build:outline-icons
- name: Create directory
run: mkdir lucide-font
- name: Build font
run: fontcustom compile "./outlined" -h -n "lucide" -o ./lucide-font -F
- name: "Upload to Artifacts"
uses: actions/upload-artifact@v1
with:
name: lucide-font
path: lucide-font

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-preact/** - packages/lucide-preact/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-preact/** - packages/lucide-preact/**
- pnpm-lock.yaml
jobs: jobs:
lucide-preact: lucide-preact:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-preact test run: pnpm --filter lucide-preact test

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-react-native/** - packages/lucide-react-native/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-react-native/** - packages/lucide-react-native/**
- pnpm-lock.yaml
jobs: jobs:
lucide-react-native: lucide-react-native:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-react-native test run: pnpm --filter lucide-react-native test

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-react/** - packages/lucide-react/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-react/** - packages/lucide-react/**
- pnpm-lock.yaml
jobs: jobs:
lucide-react: lucide-react:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-react test run: pnpm --filter lucide-react test

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-solid/** - packages/lucide-solid/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-solid/** - packages/lucide-solid/**
- pnpm-lock.yaml
jobs: jobs:
lucide-solid: lucide-solid:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-solid test run: pnpm --filter lucide-solid test

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-static/** - packages/lucide-static/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-static/** - packages/lucide-static/**
- pnpm-lock.yaml
jobs: jobs:
lucide-static: lucide-static:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -42,4 +44,3 @@ jobs:
- name: Build - name: Build
run: pnpm --filter lucide-static build run: pnpm --filter lucide-static build

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-svelte/** - packages/lucide-svelte/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-svelte/** - packages/lucide-svelte/**
- pnpm-lock.yaml
jobs: jobs:
lucide-svelte: lucide-svelte:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-svelte test run: pnpm --filter lucide-svelte test

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-vue-next/** - packages/lucide-vue-next/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-vue-next/** - packages/lucide-vue-next/**
- pnpm-lock.yaml
jobs: jobs:
lucide-vue-next: lucide-vue-next:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-vue-next test run: pnpm --filter lucide-vue-next test

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide-vue/** - packages/lucide-vue/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide-vue/** - packages/lucide-vue/**
- pnpm-lock.yaml
jobs: jobs:
lucide-vue: lucide-vue:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide-vue test run: pnpm --filter lucide-vue test

View File

@@ -4,16 +4,18 @@ on:
pull_request: pull_request:
paths: paths:
- packages/lucide/** - packages/lucide/**
- pnpm-lock.yaml
push: push:
paths: paths:
- packages/lucide/** - packages/lucide/**
- pnpm-lock.yaml
jobs: jobs:
lucide: lucide:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -45,4 +47,3 @@ jobs:
- name: Test - name: Test
run: pnpm --filter lucide test run: pnpm --filter lucide test

View File

@@ -3,7 +3,7 @@ name: Release Packages
on: on:
push: push:
tags: tags:
- "v*" - 'v*'
workflow_dispatch: workflow_dispatch:
inputs: inputs:
@@ -32,8 +32,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -86,9 +86,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -141,9 +141,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -196,9 +196,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -251,9 +251,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -306,9 +306,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -348,7 +348,7 @@ jobs:
run: pnpm --filter lucide-angular test run: pnpm --filter lucide-angular test
- name: Publish - name: Publish
run: pnpm --filter lucide-angular publish dist --no-git-checks --ignore-scripts run: pnpm --filter lucide-angular publish --no-git-checks --ignore-scripts
- name: Upload package.json - name: Upload package.json
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
@@ -361,9 +361,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -416,9 +416,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -471,9 +471,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -526,10 +526,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [pre-build, lucide-font] needs: [pre-build, lucide-font]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/download-artifact@v2 - uses: actions/download-artifact@v2
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3
with: with:
node-version: 16 node-version: 16
@@ -581,8 +581,9 @@ jobs:
if: github.repository == 'lucide-icons/lucide' if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-build needs: pre-build
container: ericfennis/lucide-font:latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1 - uses: actions/setup-node@v3.4.1
with: with:
node-version: 16 node-version: 16
@@ -607,37 +608,17 @@ jobs:
restore-keys: | restore-keys: |
${{ runner.os }}-pnpm-store- ${{ runner.os }}-pnpm-store-
- name: Install FontForge
run: sudo apt-get install zlib1g-dev fontforge
- 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: Install dependencies - name: Install dependencies
run: pnpm install run: pnpm install --filter outline-svg
- name: Build Icon Font - name: Outline svg Icons
run: | run: pnpm build:outline-icons
mkdir lucide-font
pnpm build:outline-icons --outputDir=converted_icons && fontcustom compile "./converted_icons" -h -n "lucide" -o ./lucide-font -F - name: Create directory
run: mkdir lucide-font
- name: Build font
run: fontcustom compile "./outlined" -h -n "lucide" -o ./lucide-font -F
- name: "Upload to Artifacts" - name: "Upload to Artifacts"
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v1
@@ -652,7 +633,7 @@ jobs:
container: container:
image: cirrusci/flutter:latest image: cirrusci/flutter:latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/download-artifact@v2 - uses: actions/download-artifact@v2
- uses: actions/cache@v2 - uses: actions/cache@v2
with: with:
@@ -735,13 +716,14 @@ jobs:
] ]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/download-artifact@v2 - uses: actions/download-artifact@v2
- name: Commit package files - name: Commit package files
run: | run: |
mv lucide-package-json/package.json packages/lucide/package.json mv lucide-package-json/package.json packages/lucide/package.json
mv lucide-react-package-json/package.json packages/lucide-react/package.json mv lucide-react-package-json/package.json packages/lucide-react/package.json
mv lucide-react-native-package-json/package.json packages/lucide-react-native/package.json
mv lucide-vue-package-json/package.json packages/lucide-vue/package.json mv lucide-vue-package-json/package.json packages/lucide-vue/package.json
mv lucide-preact-package-json/package.json packages/lucide-preact/package.json mv lucide-preact-package-json/package.json packages/lucide-preact/package.json
mv lucide-svelte-package-json/package.json packages/lucide-svelte/package.json mv lucide-svelte-package-json/package.json packages/lucide-svelte/package.json

1
.gitignore vendored
View File

@@ -12,6 +12,7 @@ stash
coverage coverage
stats stats
*.log *.log
outlined
packages/**/src/icons/*.js packages/**/src/icons/*.js
packages/**/src/icons/*.ts packages/**/src/icons/*.ts
packages/**/LICENSE packages/**/LICENSE

View File

@@ -17,9 +17,10 @@ Lucide is trying to expand the icon set as much as possible while staying faithf
### Why choose Lucide over Feather Icons ### Why choose Lucide over Feather Icons
- Lucide already expanded the icon set by 130+ in less than a year, so more icons to work with. - More icons to work with: Lucide already has hundreds of icons more than Feather does.
- Official librairies and integrations with popular frameworks and design tools.
- Well maintained code base. - Well maintained code base.
- Active community. - Active community, regularly growing and improving the set.
## Table of Contents ## Table of Contents
@@ -37,6 +38,7 @@ Lucide is trying to expand the icon set as much as possible while staying faithf
- [Flutter](#flutter) - [Flutter](#flutter)
- [Svelte](#svelte) - [Svelte](#svelte)
- [Solid](#solid) - [Solid](#solid)
- [Hyva](#hyva)
- [Contributing](#contributing) - [Contributing](#contributing)
- [Community](#community) - [Community](#community)
- [License](#license) - [License](#license)
@@ -56,9 +58,11 @@ Implementation of the lucide icon library for web applications.
```sh ```sh
npm install lucide npm install lucide
```
#or or
```sh
yarn add lucide yarn add lucide
``` ```
@@ -70,9 +74,11 @@ Implementation of the lucide icon library for react applications.
```sh ```sh
yarn add lucide-react yarn add lucide-react
```
# or or
```sh
npm install lucide-react npm install lucide-react
``` ```
@@ -84,9 +90,11 @@ Implementation of the lucide icon library for React Native applications.
```sh ```sh
yarn add lucide-react-native yarn add lucide-react-native
```
# or or
```sh
npm install lucide-react-native npm install lucide-react-native
``` ```
@@ -98,9 +106,11 @@ Implementation of the lucide icon library for vue applications.
```sh ```sh
yarn add lucide-vue yarn add lucide-vue
```
# or or
```sh
npm install lucide-vue npm install lucide-vue
``` ```
@@ -112,9 +122,11 @@ Implementation of the lucide icon library for vue applications.
```sh ```sh
yarn add lucide-vue-next yarn add lucide-vue-next
```
# or or
```sh
npm install lucide-vue-next npm install lucide-vue-next
``` ```
@@ -124,9 +136,11 @@ For more details, see the [documentation](https://github.com/lucide-icons/lucide
```sh ```sh
yarn add lucide-angular yarn add lucide-angular
```
# or or
```sh
npm install lucide-angular npm install lucide-angular
``` ```
@@ -138,9 +152,11 @@ Implementation of the lucide icon library for preact applications.
```sh ```sh
yarn add lucide-preact yarn add lucide-preact
```
# or or
```sh
npm install lucide-preact npm install lucide-preact
``` ```
@@ -157,9 +173,11 @@ NPM package
```sh ```sh
yarn add lucide-static yarn add lucide-static
```
# or or
```sh
npm install lucide-static npm install lucide-static
``` ```
@@ -197,9 +215,11 @@ Implementation of the lucide icon library for Svelte applications.
```sh ```sh
yarn add lucide-svelte yarn add lucide-svelte
```
# or or
```sh
npm install lucide-svelte npm install lucide-svelte
``` ```
@@ -211,14 +231,26 @@ Implementation of the lucide icon library for solid applications.
```sh ```sh
yarn add lucide-solid yarn add lucide-solid
```
#or or
```sh
npm install lucide-solid npm install lucide-solid
``` ```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-solid#lucide-solid). For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-solid#lucide-solid).
### Hyva
Implementation of Lucide icon's using Hyvä's svg php viewmodal to render icons for Magento 2 Hyva theme based projects.
```sh
composer require siteation/magento2-hyva-icons-lucide
```
For more details, see the [documentation](https://github.com/Siteation/magento2-hyva-icons-lucide/blob/main/README.md).
## Contributing ## Contributing
For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md). For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
@@ -245,4 +277,3 @@ Thank you to all the people who contributed to Lucide!
<a href="https://vercel.com?utm_source=lucide&utm_campaign=oss"> <a href="https://vercel.com?utm_source=lucide&utm_campaign=oss">
<img src="./site/public/vercel.svg" alt="Powered by Vercel" width="200" /> <img src="./site/public/vercel.svg" alt="Powered by Vercel" width="200" />
</a> </a>

View File

@@ -10,9 +10,11 @@ Implementation of the lucide icon library for web applications.
```bash ```bash
npm install lucide npm install lucide
```
#or or
```sh
yarn add lucide yarn add lucide
``` ```
@@ -24,9 +26,11 @@ Implementation of the lucide icon library for react applications.
```bash ```bash
yarn add lucide-react yarn add lucide-react
```
# or or
```sh
npm install lucide-react npm install lucide-react
``` ```
@@ -38,9 +42,11 @@ Implementation of the lucide icon library for vue applications.
```bash ```bash
yarn add lucide-vue yarn add lucide-vue
```
# or or
```sh
npm install lucide-vue npm install lucide-vue
``` ```
@@ -52,9 +58,11 @@ Implementation of the lucide icon library for vue applications.
```bash ```bash
yarn add lucide-vue-next yarn add lucide-vue-next
```
# or or
```sh
npm install lucide-vue-next npm install lucide-vue-next
``` ```
@@ -66,9 +74,11 @@ Implementation of the lucide icon library for vue applications.
```bash ```bash
yarn add lucide-svelte yarn add lucide-svelte
```
# or or
```sh
npm install lucide-svelte npm install lucide-svelte
``` ```
@@ -78,9 +88,11 @@ For more details, see the [documentation](packages/lucide-svelte).
```bash ```bash
yarn add lucide-angular yarn add lucide-angular
```
# or or
```sh
npm install lucide-angular npm install lucide-angular
``` ```
@@ -92,9 +104,11 @@ Implementation of the lucide icon library for preact applications.
```bash ```bash
yarn add lucide-preact yarn add lucide-preact
```
# or or
```sh
npm install lucide-preact npm install lucide-preact
``` ```
@@ -106,7 +120,7 @@ The lucide figma plugin.
Visit [Figma community page](https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons) to install the plugin. Visit [Figma community page](https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons) to install the plugin.
![Setting Page Size](https://www.figma.com/community/plugin/939567362549682242/thumbnail "Figma Lucide Cover") ![Setting Page Size](https://www.figma.com/community/plugin/939567362549682242/thumbnail 'Figma Lucide Cover')
## Laravel ## Laravel

View File

@@ -6,9 +6,11 @@ Implementation of the lucide icon library for angular applications.
```sh ```sh
yarn add lucide-angular yarn add lucide-angular
```
# or or
```sh
npm install lucide-angular npm install lucide-angular
``` ```
@@ -37,7 +39,6 @@ import { Activity } from 'lucide-angular/icons';
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrls: ['./app.component.css'] styleUrls: ['./app.component.css']
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
const div = document.getElementById('lucide-icon'); const div = document.getElementById('lucide-icon');
@@ -51,7 +52,7 @@ export class AppComponent implements OnInit {
} }
``` ```
### Method 2: User __Tag__ with __name__ property ### Method 2: User **Tag** with **name** property
After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`. After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`.
@@ -65,9 +66,7 @@ import { AppComponent } from './app.component';
import { LucideAngularModule, AlarmCheck, Edit } from 'lucide-angular'; import { LucideAngularModule, AlarmCheck, Edit } from 'lucide-angular';
@NgModule({ @NgModule({
declarations: [ declarations: [AppComponent],
AppComponent
],
imports: [ imports: [
BrowserModule, BrowserModule,
AppRoutingModule, AppRoutingModule,
@@ -76,7 +75,6 @@ import { LucideAngularModule, AlarmCheck, Edit } from 'lucide-angular';
providers: [], providers: [],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
export class AppModule {} export class AppModule {}
``` ```
@@ -86,7 +84,7 @@ export class AppModule { }
<lucide-icon name="edit" class="myicon"></lucide-icon> <lucide-icon name="edit" class="myicon"></lucide-icon>
``` ```
### Method 3: User __Tag__ with __img__ property ### Method 3: User **Tag** with **img** property
After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`. After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`.
@@ -100,18 +98,11 @@ import { AppComponent } from './app.component';
import { LucideAngularModule } from 'lucide-angular'; import { LucideAngularModule } from 'lucide-angular';
@NgModule({ @NgModule({
declarations: [ declarations: [AppComponent],
AppComponent imports: [BrowserModule, AppRoutingModule, LucideAngularModule.pick({})],
],
imports: [
BrowserModule,
AppRoutingModule,
LucideAngularModule.pick({ })
],
providers: [], providers: [],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
export class AppModule {} export class AppModule {}
``` ```
@@ -131,7 +122,6 @@ import { Airplay, Circle } from 'lucide-angular';
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrls: ['./app.component.css'] styleUrls: ['./app.component.css']
}) })
export class AppComponent { export class AppComponent {
ico1 = Airplay; ico1 = Airplay;
ico2 = Circle; ico2 = Circle;
@@ -146,7 +136,7 @@ In `Method 2`: import all icons in `app.module.ts` by:
```js ```js
import { icons } from 'lucide-angular/icons'; import { icons } from 'lucide-angular';
LucideAngularModule.pick(icons) LucideAngularModule.pick(icons)

View File

@@ -10,9 +10,11 @@ Implementation of the lucide icon library for preact applications.
```sh ```sh
yarn add lucide-preact yarn add lucide-preact
```
# or or
```sh
npm install lucide-preact npm install lucide-preact
``` ```
@@ -31,7 +33,7 @@ import { Camera } from 'lucide-preact';
// Usage // Usage
const App = () => { const App = () => {
return <Camera color="red" size={48}/> return <Camera color="red" size={48} />;
}; };
export default App; export default App;
@@ -39,11 +41,11 @@ export default App;
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
### Custom props / svg attributes ### Custom props / svg attributes
@@ -52,7 +54,7 @@ You can also pass custom props that will be added in the as attributes. With tha
```js ```js
// Usage // Usage
const App = () => { const App = () => {
return <Camera fill="red" stroke-linejoin="bevel"/> return <Camera fill="red" stroke-linejoin="bevel" />;
}; };
``` ```
@@ -72,7 +74,7 @@ import * as icons from 'lucide-preact';
const Icon = ({ name, color, size }) => { const Icon = ({ name, color, size }) => {
const LucideIcon = icons[name]; const LucideIcon = icons[name];
return <LucideIcon color={color} size={size} /> return <LucideIcon color={color} size={size} />;
}; };
export default Icon; export default Icon;

View File

@@ -8,9 +8,11 @@ First, ensure that you have `react-native-svg@^12.0.0` installed. Then, install
```bash ```bash
yarn add lucide-react-native yarn add lucide-react-native
```
# or or
```sh
npm install lucide-react-native npm install lucide-react-native
``` ```

View File

@@ -6,9 +6,11 @@ Implementation of the lucide icon library for react applications
```bash ```bash
yarn add lucide-react yarn add lucide-react
```
# or or
```sh
npm install lucide-react npm install lucide-react
``` ```
@@ -27,7 +29,7 @@ import { Camera } from 'lucide-react';
// Usage // Usage
const App = () => { const App = () => {
return <Camera color="red" size={48}/> return <Camera color="red" size={48} />;
}; };
export default App; export default App;
@@ -35,11 +37,11 @@ export default App;
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
### Custom props ### Custom props
@@ -48,7 +50,7 @@ You can also pass custom props that will be added in the svg as attributes.
```js ```js
// Usage // Usage
const App = () => { const App = () => {
return <Camera fill="red"/> return <Camera fill="red" />;
}; };
``` ```
@@ -66,7 +68,7 @@ import * as icons from 'lucide-react';
const Icon = ({ name, color, size }) => { const Icon = ({ name, color, size }) => {
const LucideIcon = icons[name]; const LucideIcon = icons[name];
return <LucideIcon color={color} size={size} /> return <LucideIcon color={color} size={size} />;
}; };
export default Icon; export default Icon;

View File

@@ -19,9 +19,11 @@ This package is suitable for very specific use cases for example if you want to
```sh ```sh
yarn add lucide-static yarn add lucide-static
```
# or or
```sh
npm install lucide-static npm install lucide-static
``` ```
@@ -29,13 +31,13 @@ npm install lucide-static
```html ```html
<!-- Svg File --> <!-- Svg File -->
<img src="https://unpkg.com/lucide-static@latest/icons/home.svg"> <img src="https://unpkg.com/lucide-static@latest/icons/home.svg" />
<!-- Icon Font --> <!-- Icon Font -->
<style> <style>
@font-face { @font-face {
font-family: "LucideIcons"; font-family: 'LucideIcons';
src: url(https://unpkg.com/lucide-static@latest/font/Lucide.ttf) format("truetype"); src: url(https://unpkg.com/lucide-static@latest/font/Lucide.ttf) format('truetype');
} }
</style> </style>
``` ```
@@ -52,12 +54,12 @@ To use it in for example html:
```html ```html
<!-- Svg File --> <!-- Svg File -->
<img src="~lucide-static/icons/home.svg"> <img src="~lucide-static/icons/home.svg" />
``` ```
```css ```css
.home-icon { .home-icon {
background-image: url(~lucide-static/icons/home.svg) background-image: url(~lucide-static/icons/home.svg);
} }
``` ```
@@ -69,7 +71,7 @@ You can simply import each svg by targeting `lucide-static/icons/{icon-name}.svg
To use svgs in your project you can for example use a [svg loader](https://v4.webpack.js.org/loaders/svg-inline-loader/). To use svgs in your project you can for example use a [svg loader](https://v4.webpack.js.org/loaders/svg-inline-loader/).
```js ```js
import arrowRightIcon from 'lucide-static/icons/arrow-right' import arrowRightIcon from 'lucide-static/icons/arrow-right';
// return string of a svg // return string of a svg
``` ```
@@ -80,7 +82,7 @@ You may need additional loader for this.
```html ```html
<!-- Icon Sprite, not recommended for production! --> <!-- Icon Sprite, not recommended for production! -->
<img src="lucide-static/sprite.svg#home"> <img src="lucide-static/sprite.svg#home" />
<!-- or --> <!-- or -->
<svg <svg
@@ -133,20 +135,19 @@ and update the svg as follows
### Icon Font ### Icon Font
```css ```css
@import("~lucide-static/font/Lucide.css") @import ('~lucide-static/font/Lucide.css');
``` ```
```html ```html
<div class="icon-home"></div> <div class="icon-home"></div>
``` ```
### Node.js ### Node.js
To use lucide icons in your Nodejs project you can import each icon as: To use lucide icons in your Nodejs project you can import each icon as:
```js ```js
const { messageSquare } = require('lucide-static/lib') const { messageSquare } = require('lucide-static/lib');
``` ```
> Note: Each icon name is in camelCase. > Note: Each icon name is in camelCase.
@@ -154,10 +155,10 @@ const { messageSquare } = require('lucide-static/lib')
#### Example in node.js project #### Example in node.js project
```js ```js
const express = require('express') const express = require('express');
const { messageSquare } = require('lucide-static/lib') const { messageSquare } = require('lucide-static/lib');
const app = express() const app = express();
const port = 3000 const port = 3000;
app.get('/', (req, res) => { app.get('/', (req, res) => {
res.send(` res.send(`
@@ -172,10 +173,10 @@ app.get('/', (req, res) => {
</body> </body>
</html> </html>
`) `);
}) });
app.listen(port, () => { app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`) console.log(`Example app listening at http://localhost:${port}`);
}) });
``` ```

View File

@@ -6,9 +6,11 @@ Implementation of the lucide icon library for svelte applications.
```bash ```bash
yarn add lucide-svelte yarn add lucide-svelte
```
# or or
```sh
npm install lucide-svelte npm install lucide-svelte
``` ```
@@ -22,7 +24,7 @@ Default usage:
```html ```html
<script> <script>
import { Skull } from 'lucide-svelte' import { Skull } from 'lucide-svelte';
</script> </script>
<Skull /> <Skull />
@@ -32,7 +34,7 @@ You can pass additional props to adjust the icon.
```html ```html
<script> <script>
import { Camera } from 'lucide-svelte' import { Camera } from 'lucide-svelte';
</script> </script>
<Camera color="#ff3e98" /> <Camera color="#ff3e98" />
@@ -40,12 +42,12 @@ import { Camera } from 'lucide-svelte'
### Available props ### Available props
| name | type | default | name | type | default |
| -------------- | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth` | *Number* | 2 | `strokeWidth` | _Number_ | 2 |
| `*<SVGProps>` | *String* | - | `*<SVGProps>` | _String_ | - |
\* All SVGProps are available to style the svgs. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation) \* All SVGProps are available to style the svgs. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation)
@@ -53,7 +55,7 @@ import { Camera } from 'lucide-svelte'
```html ```html
<script> <script>
import { Phone } from 'lucide-svelte' import { Phone } from 'lucide-svelte';
</script> </script>
<Phone fill="#333" /> <Phone fill="#333" />
@@ -71,18 +73,18 @@ It is possible to create one generic icon component to load icons.
```html ```html
<script> <script>
import * as icons from "lucide-svelte"; import * as icons from 'lucide-svelte';
export let name; export let name;
</script> </script>
<svelte:component this={icons[name]} {...$$props}/> <svelte:component this="{icons[name]}" {...$$props} />
``` ```
##### Then you can use it like this ##### Then you can use it like this
```html ```html
<script> <script>
import LucideIcon from "./LucideIcon"; import LucideIcon from './LucideIcon';
</script> </script>
<LucideIcon name="Menu" /> <LucideIcon name="Menu" />

View File

@@ -35,15 +35,8 @@ You can pass additional props to adjust the icon.
/> />
</template> </template>
<script> <script setup>
// Returns Vue component
import { Camera } from 'lucide-vue-next'; import { Camera } from 'lucide-vue-next';
export default {
name: "My Component",
components: { Camera }
}
</script> </script>
``` ```
@@ -53,8 +46,8 @@ export default {
| ------------ | -------- | -------- | ------------ | -------- | --------
| `size` | *Number* | 24 | `size` | *Number* | 24
| `color` | *String* | currentColor | `color` | *String* | currentColor
| `strokeWidth`| *Number* | 2 | `stroke-width`| *Number* | 2
| `defaultClass`| *String* | lucide-icon | `default-class`| *String* | lucide-icon
### Custom props ### Custom props
@@ -76,25 +69,25 @@ It is possible to create one generic icon component to load icons.
``` html ``` html
<template> <template>
<component :is="icon" /> <component :is="icon" :size="size" :color="color" :stroke-width="strokeWidth" :default-class="defaultClass" />
</template> </template>
<script> <script setup>
import { computed } from 'vue';
import * as icons from "lucide-vue-next"; import * as icons from "lucide-vue-next";
export default { const props = defineProps({
props: {
name: { name: {
type: String, type: String,
required: true, required: true
}, },
}, size: Number,
setup(props) { color: String,
const icon = computed(() => icons[props.name]) strokeWidth: Number,
defaultClass: String
})
return { icon } const icon = computed(() => icons[props.name]);
}
};
</script> </script>
``` ```
@@ -107,3 +100,4 @@ export default {
</div> </div>
</template> </template>
``` ```
All other props listed above also work on the `Icon` Component.

View File

@@ -8,9 +8,11 @@ Implementation of the lucide icon library for Vue applications.
```sh ```sh
yarn add lucide-vue yarn add lucide-vue
```
# or or
```sh
npm install lucide-vue npm install lucide-vue
``` ```
@@ -25,10 +27,7 @@ You can pass additional props to adjust the icon.
```html ```html
<template> <template>
<Camera <Camera color="red" :size="32" />
color="red"
:size="32"
/>
</template> </template>
<script> <script>
@@ -36,21 +35,20 @@ You can pass additional props to adjust the icon.
import { Camera } from 'lucide-vue'; import { Camera } from 'lucide-vue';
export default { export default {
name: "My Component", name: 'My Component',
components: { Camera } components: { Camera }
} };
</script> </script>
``` ```
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | -------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
| `defaultClass`| *String* | lucide-icon | `defaultClass` | _String_ | lucide-icon |
### Custom props ### Custom props
@@ -76,20 +74,20 @@ It is possible to create one generic icon component to load icons.
</template> </template>
<script> <script>
import * as icons from "lucide-vue"; import * as icons from 'lucide-vue';
export default { export default {
props: { props: {
name: { name: {
type: String, type: String,
required: true, required: true
}, }
}, },
computed: { computed: {
icon() { icon() {
return icons[this.name]; return icons[this.name];
}, }
}, }
}; };
</script> </script>
``` ```

View File

@@ -6,9 +6,13 @@ Implementation of the lucide icon library for web applications.
### Package Managers ### Package Managers
``` bash ```sh
npm install lucide npm install lucide
#or ```
or
```sh
yarn add lucide yarn add lucide
``` ```
@@ -65,8 +69,8 @@ createIcons({
icons: { icons: {
Menu, Menu,
ArrowRight, ArrowRight,
Globe, Globe
}, }
}); });
``` ```
@@ -83,9 +87,9 @@ createIcons({
attrs: { attrs: {
class: ['my-custom-class', 'icon'], class: ['my-custom-class', 'icon'],
'stroke-width': 1, 'stroke-width': 1,
stroke: '#333', stroke: '#333'
}, },
nameAttr: 'icon-name', // attribute for the icon name. nameAttr: 'icon-name' // attribute for the icon name.
}); });
``` ```
@@ -98,8 +102,8 @@ createIcons({
icons: { icons: {
Menu, Menu,
ArrowRight, ArrowRight,
Globe, Globe
}, }
}); });
``` ```

View File

@@ -9,8 +9,8 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M9 12h0" /> <path d="M9 12h0.01" />
<path d="M15 12h0" /> <path d="M15 12h0.01" />
<path d="M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5" /> <path d="M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5" />
<path d="M19 6.3a9 9 0 0 1 1.8 3.9 2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1" /> <path d="M19 6.3a9 9 0 0 1 1.8 3.9 2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 463 B

After

Width:  |  Height:  |  Size: 469 B

16
icons/bean-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="M9 9c-.64.64-1.521.954-2.402 1.165A6 6 0 0 0 8 22a13.96 13.96 0 0 0 9.9-4.1" />
<path d="M10.75 5.093A6 6 0 0 1 22 8c0 2.411-.61 4.68-1.683 6.66" />
<path d="M5.341 10.62a4 4 0 0 0 6.487 1.208M10.62 5.341a4.015 4.015 0 0 1 2.039 2.04" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 502 B

14
icons/bean.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="M10.165 6.598C9.954 7.478 9.64 8.36 9 9c-.64.64-1.521.954-2.402 1.165A6 6 0 0 0 8 22c7.732 0 14-6.268 14-14a6 6 0 0 0-11.835-1.402Z" />
<path d="M5.341 10.62A4 4 0 1 0 10.62 5.34" />
</svg>

After

Width:  |  Height:  |  Size: 404 B

20
icons/candy-off.svg Normal file
View File

@@ -0,0 +1,20 @@
<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 8.5-1 1a4.95 4.95 0 0 0 7 7l1-1" />
<path d="M11.843 6.187A4.947 4.947 0 0 1 16.5 7.5a4.947 4.947 0 0 1 1.313 4.657" />
<path d="M14 16.5V14" />
<path d="M14 6.5v1.843" />
<path d="M10 10v7.5" />
<path d="m16 7 1-5 1.367.683A3 3 0 0 0 19.708 3H21v1.292a3 3 0 0 0 .317 1.341L22 7l-5 1" />
<path d="m8 17-1 5-1.367-.683A3 3 0 0 0 4.292 21H3v-1.292a3 3 0 0 0-.317-1.341L2 17l5-1" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 657 B

17
icons/candy.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="m9.5 7.5-2 2a4.95 4.95 0 1 0 7 7l2-2a4.95 4.95 0 1 0-7-7Z" />
<path d="M14 6.5v10" />
<path d="M10 7.5v10" />
<path d="m16 7 1-5 1.37.68A3 3 0 0 0 19.7 3H21v1.3c0 .46.1.92.32 1.33L22 7l-5 1" />
<path d="m8 17-1 5-1.37-.68A3 3 0 0 0 4.3 21H3v-1.3a3 3 0 0 0-.32-1.33L2 17l5-1" />
</svg>

After

Width:  |  Height:  |  Size: 505 B

18
icons/cat.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"
>
<path d="M14 5.256A8.148 8.148 0 0 0 12 5a9.04 9.04 0 0 0-2 .227M20.098 10c.572 1.068.902 2.24.902 3.444C21 17.89 16.97 21 12 21s-9-3-9-7.556c0-1.251.288-2.41.792-3.444"/>
<path d="M3.75 10S2.11 3.58 3.5 3C4.89 2.42 8 3 9.781 5"/>
<path d="M20.172 10.002s1.64-6.42.25-7c-1.39-.58-4.5 0-6.282 2"/>
<path d="M8 14v.5"/>
<path d="M16 14v.5"/>
<path d="M11.25 16.25h1.5L12 17l-.75-.75Z"/>
</svg>

After

Width:  |  Height:  |  Size: 605 B

14
icons/check-check.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="M18 6 7 17l-5-5" />
<path d="m22 10-7.5 7.5L13 16" />
</svg>

After

Width:  |  Height:  |  Size: 275 B

23
icons/dna-off.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"
>
<path d="M15 2c-1.35 1.5-2.092 3-2.5 4.5M9 22c1.35-1.5 2.092-3 2.5-4.5" />
<path d="M2 15c3.333-3 6.667-3 10-3m10-3c-1.5 1.35-3 2.092-4.5 2.5" />
<path d="m17 6-2.5-2.5" />
<path d="m14 8-1.5-1.5" />
<path d="m7 18 2.5 2.5" />
<path d="m3.5 14.5.5.5" />
<path d="m20 9 .5.5" />
<path d="m6.5 12.5 1 1" />
<path d="m16.5 10.5 1 1" />
<path d="m10 16 1.5 1.5" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 630 B

23
icons/dna.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"
>
<path d="M2 15c6.667-6 13.333 0 20-6" />
<path d="M9 22c1.798-1.998 2.518-3.995 2.807-5.993" />
<path d="M15 2c-1.798 1.998-2.518 3.995-2.807 5.993" />
<path d="m17 6-2.5-2.5" />
<path d="m14 8-1-1" />
<path d="m7 18 2.5 2.5" />
<path d="m3.5 14.5.5.5" />
<path d="m20 9 .5.5" />
<path d="m6.5 12.5 1 1" />
<path d="m16.5 10.5 1 1" />
<path d="m10 16 1.5 1.5" />
</svg>

After

Width:  |  Height:  |  Size: 593 B

18
icons/dog.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"
>
<path d="M10 5.172C10 3.782 8.423 2.679 6.5 3c-2.823.47-4.113 6.006-4 7 .08.703 1.725 1.722 3.656 1 1.261-.472 1.96-1.45 2.344-2.5"/>
<path d="M14.267 5.172c0-1.39 1.577-2.493 3.5-2.172 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5"/>
<path d="M8 14v.5"/>
<path d="M16 14v.5"/>
<path d="M11.25 16.25h1.5L12 17l-.75-.75Z"/>
<path d="M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444c0-1.061-.162-2.2-.493-3.309m-9.243-6.082A8.801 8.801 0 0 1 12 5c.78 0 1.5.108 2.161.306"/>
</svg>

After

Width:  |  Height:  |  Size: 764 B

19
icons/dumbbell.svg Normal file
View File

@@ -0,0 +1,19 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m6.5 6.5 11 11" />
<path d="m21 21-1-1" />
<path d="m3 3 1 1" />
<path d="m18 22 4-4" />
<path d="m2 6 4-4" />
<path d="m3 10 7-7" />
<path d="m14 21 7-7" />
</svg>

After

Width:  |  Height:  |  Size: 389 B

15
icons/egg-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="M6.399 6.399C5.362 8.157 4.65 10.189 4.5 12c-.37 4.43 1.27 9.95 7.5 10 3.256-.026 5.259-1.547 6.375-3.625" />
<path d="M19.532 13.875A14.07 14.07 0 0 0 19.5 12c-.36-4.34-3.95-9.96-7.5-10-1.04.012-2.082.502-3.046 1.297" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 484 B

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"
>
<path d="M10 10 4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-1.272-2.542" />
<path d="M10 2v2.343" />
<path d="M14 2v6.343" />
<path d="M8.5 2h7" />
<path d="M7 16h9" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 438 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<path d="M10 2v8L4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45L14 10V2" /> <path d="M10 2v7.527a2 2 0 0 1-.211.896L4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-5.069-10.127A2 2 0 0 1 14 9.527V2" />
<path d="M8.5 2h7" /> <path d="M8.5 2h7" />
<path d="M7 16h10" /> <path d="M7 16h10" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 390 B

20
icons/hop-off.svg Normal file
View File

@@ -0,0 +1,20 @@
<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.5 5.5C19 7 20.5 9 21 11c-1.323.265-2.646.39-4.118.226" />
<path d="M5.5 17.5C7 19 9 20.5 11 21c.5-2.5.5-5-1-8.5" />
<path d="M17.5 17.5c-2.5 0-4 0-6-1" />
<path d="M20 11.5c1 1.5 2 3.5 2 4.5" />
<path d="M11.5 20c1.5 1 3.5 2 4.5 2 .5-1.5 0-3-.5-4.5" />
<path d="M22 22c-2 0-3.5-.5-5.5-1.5" />
<path d="M4.783 4.782C1.073 8.492 1 14.5 5 18c1-1 2-4.5 1.5-6.5 1.5 1 4 1 5.5.5M8.227 2.57C11.578 1.335 15.453 2.089 18 5c-.88.88-3.7 1.761-5.726 1.618" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 725 B

20
icons/hop.svg Normal file
View File

@@ -0,0 +1,20 @@
<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.5 5.5C19 7 20.5 9 21 11c-2.5.5-5 .5-8.5-1" />
<path d="M5.5 17.5C7 19 9 20.5 11 21c.5-2.5.5-5-1-8.5" />
<path d="M16.5 11.5c1 2 1 3.5 1 6-2.5 0-4 0-6-1" />
<path d="M20 11.5c1 1.5 2 3.5 2 4.5-1.5.5-3 0-4.5-.5" />
<path d="M11.5 20c1.5 1 3.5 2 4.5 2 .5-1.5 0-3-.5-4.5" />
<path d="M20.5 16.5c1 2 1.5 3.5 1.5 5.5-2 0-3.5-.5-5.5-1.5" />
<path d="M4.783 4.782C8.493 1.072 14.5 1 18 5c-1 1-4.5 2-6.5 1.5 1 1.5 1 4 .5 5.5-1.5.5-4 .5-5.5-.5C7 13.5 6 17 5 18c-4-3.5-3.927-9.508-.217-13.218Z" />
<path d="M4.5 4.5 3 3c-.184-.185-.184-.816 0-1" />
</svg>

After

Width:  |  Height:  |  Size: 775 B

16
icons/milk-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="M8 2h8" />
<path d="M9 2v1.343M15 2v2.789a4 4 0 0 0 .672 2.219l.656.984a4 4 0 0 1 .672 2.22v1.131M7.8 7.8l-.128.192A4 4 0 0 0 7 10.212V20a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-3" />
<path d="M7 15a6.47 6.47 0 0 1 5 0 6.472 6.472 0 0 0 3.435.435" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 506 B

15
icons/milk.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="M8 2h8" />
<path d="M9 2v2.789a4 4 0 0 1-.672 2.219l-.656.984A4 4 0 0 0 7 10.212V20a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-9.789a4 4 0 0 0-.672-2.219l-.656-.984A4 4 0 0 1 15 4.788V2" />
<path d="M7 15a6.472 6.472 0 0 1 5 0 6.47 6.47 0 0 0 5 0" />
</svg>

After

Width:  |  Height:  |  Size: 462 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"
>
<path d="M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8" />
<path d="M10 19v-3.96 3.15" />
<path d="M7 19h5" />
<rect x="16" y="12" width="6" height="10" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 389 B

17
icons/nut-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="M12 4V2" />
<path d="M5 10v4a7.004 7.004 0 0 0 5.277 6.787c.412.104.802.292 1.102.592L12 22l.621-.621c.3-.3.69-.488 1.102-.592a7.01 7.01 0 0 0 4.125-2.939" />
<path d="M19 10v3.343" />
<path d="M12 12c-1.349-.573-1.905-1.005-2.5-2-.546.902-1.048 1.353-2.5 2-1.018-.644-1.46-1.08-2-2-1.028.71-1.69.918-3 1 1.081-1.048 1.757-2.03 2-3 .194-.776.84-1.551 1.79-2.21m11.654 5.997c.887-.457 1.28-.891 1.556-1.787 1.032.916 1.683 1.157 3 1-1.297-1.036-1.758-2.03-2-3-.5-2-4-4-8-4-.74 0-1.461.068-2.15.192" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 767 B

15
icons/nut.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="M12 4V2" />
<path d="M5 10v4a7.004 7.004 0 0 0 5.277 6.787c.412.104.802.292 1.102.592L12 22l.621-.621c.3-.3.69-.488 1.102-.592A7.003 7.003 0 0 0 19 14v-4" />
<path d="M12 4C8 4 4.5 6 4 8c-.243.97-.919 1.952-2 3 1.31-.082 1.972-.29 3-1 .54.92.982 1.356 2 2 1.452-.647 1.954-1.098 2.5-2 .595.995 1.151 1.427 2.5 2 1.31-.621 1.862-1.058 2.5-2 .629.977 1.162 1.423 2.5 2 1.209-.548 1.68-.967 2-2 1.032.916 1.683 1.157 3 1-1.297-1.036-1.758-2.03-2-3-.5-2-4-4-8-4Z" />
</svg>

After

Width:  |  Height:  |  Size: 686 B

15
icons/pilcrow.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="M13 4v16" />
<path d="M17 4v16" />
<path d="M19 4H9.5a4.5 4.5 0 0 0 0 9H13" />
</svg>

After

Width:  |  Height:  |  Size: 302 B

15
icons/spline.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="M21 6V4c0-.6-.4-1-1-1h-2a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h2c.6 0 1-.4 1-1Z" />
<path d="M7 20v-2c0-.6-.4-1-1-1H4a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h2c.6 0 1-.4 1-1Z" />
<path d="M5 17A12 12 0 0 1 17 5" />
</svg>

After

Width:  |  Height:  |  Size: 418 B

15
icons/vegan.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 2c4.056 3.007 9.232 9.337 10 20 .897-6.818 1.5-9.5 4-14" />
<path d="M20.375 6.533A9.953 9.953 0 0 1 22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2c2.003 0 3.869.589 5.433 1.603" />
<path d="M17.104 4c-1.002 1.274-1.146 2.586-1.1 4 1.9-.1 3.003-.201 4.3-1.4 1.406-1.3 1.6-2.3 1.7-4.6-2.7.1-3.623.375-4.9 2Z" />
</svg>

After

Width:  |  Height:  |  Size: 546 B

22
icons/wheat-off.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"
>
<path d="m2 22 10-10" />
<path d="m16 8-1.17 1.17" />
<path d="M3.47 12.53 5 11l1.53 1.53a3.5 3.5 0 0 1 0 4.94L5 19l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z" />
<path d="m8 8-.53.53a3.5 3.5 0 0 0 0 4.94L9 15l1.53-1.53c.55-.55.88-1.25.98-1.97" />
<path d="M10.91 5.26c.15-.26.34-.51.56-.73L13 3l1.53 1.53a3.5 3.5 0 0 1 .28 4.62" />
<path d="M20 2h2v2a4 4 0 0 1-4 4h-2V6a4 4 0 0 1 4-4Z" />
<path d="M11.47 17.47 13 19l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L5 19l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z" />
<path d="m16 16-.53.53a3.5 3.5 0 0 1-4.94 0L9 15l1.53-1.53a3.49 3.49 0 0 1 1.97-.98" />
<path d="M18.74 13.09c.26-.15.51-.34.73-.56L21 11l-1.53-1.53a3.5 3.5 0 0 0-4.62-.28" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 924 B

20
icons/wheat.svg Normal file
View File

@@ -0,0 +1,20 @@
<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 22 16 8" />
<path d="M3.47 12.53 5 11l1.53 1.53a3.5 3.5 0 0 1 0 4.94L5 19l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z" />
<path d="M7.47 8.53 9 7l1.53 1.53a3.5 3.5 0 0 1 0 4.94L9 15l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z" />
<path d="M11.47 4.53 13 3l1.53 1.53a3.5 3.5 0 0 1 0 4.94L13 11l-1.53-1.53a3.5 3.5 0 0 1 0-4.94Z" />
<path d="M20 2h2v2a4 4 0 0 1-4 4h-2V6a4 4 0 0 1 4-4Z" />
<path d="M11.47 17.47 13 19l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L5 19l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z" />
<path d="M15.47 13.47 17 15l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L9 15l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z" />
<path d="M19.47 9.47 21 11l-1.53 1.53a3.5 3.5 0 0 1-4.94 0L13 11l1.53-1.53a3.5 3.5 0 0 1 4.94 0Z" />
</svg>

After

Width:  |  Height:  |  Size: 904 B

17
icons/wine-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="M8 22h8" />
<path d="M7 10h3m7 0h-1.343" />
<path d="M12 15v7" />
<path d="M7.307 7.307A12.33 12.33 0 0 0 7 10a5 5 0 0 0 7.391 4.391M8.638 2.981C8.75 2.668 8.872 2.34 9 2h6c1.5 4 2 6 2 8 0 .407-.05.809-.145 1.198" />
<line x1="2" y1="2" x2="22" y2="22" />
</svg>

After

Width:  |  Height:  |  Size: 483 B

View File

@@ -13,47 +13,48 @@
"lucide-svelte": "pnpm --filter lucide-svelte", "lucide-svelte": "pnpm --filter lucide-svelte",
"lucide-static": "pnpm --filter lucide-static", "lucide-static": "pnpm --filter lucide-static",
"build:icons": "node ./scripts/buildIcons.mjs --templateSrc ./packages/lucide/scripts/exportTemplate.mjs", "build:icons": "node ./scripts/buildIcons.mjs --templateSrc ./packages/lucide/scripts/exportTemplate.mjs",
"build:outline-icons": "node ./scripts/outlineSvg.mjs", "build:outline-icons": "pnpm --filter outline-svg start",
"generate:supersprite": "node ./scripts/generateSuperSVG.mjs", "generate:supersprite": "node ./scripts/generateSuperSVG.mjs",
"optimize": "node ./scripts/optimizeSvgs.mjs", "optimize": "node ./scripts/optimizeSvgs.mjs",
"addtags": "node ./scripts/addMissingKeysToTags.mjs", "addtags": "node ./scripts/addMissingKeysToTags.mjs",
"generate:changelog": "node ./scripts/generateChangelog.mjs" "generate:changelog": "node ./scripts/generateChangelog.mjs",
"postinstall": "husky install",
"lint": "eslint --ext .ts,.js,.mjs ./{packages/lucide,scripts}"
}, },
"devDependencies": { "devDependencies": {
"@atomico/rollup-plugin-sizes": "^1.1.4", "@atomico/rollup-plugin-sizes": "^1.1.4",
"@babel/cli": "^7.18.9", "@babel/cli": "^7.19.3",
"@babel/core": "^7.18.9", "@babel/core": "^7.19.6",
"@babel/node": "^7.18.9", "@babel/node": "^7.20.0",
"@babel/plugin-transform-runtime": "^7.18.9", "@babel/plugin-transform-runtime": "^7.19.6",
"@babel/preset-env": "^7.18.9", "@babel/preset-env": "^7.19.4",
"@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-babel": "^6.0.2",
"@rollup/plugin-commonjs": "^17.1.0", "@rollup/plugin-commonjs": "^23.0.2",
"@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-replace": "^2.4.2", "@rollup/plugin-replace": "^5.0.1",
"babel-jest": "^26.6.3", "@rollup/plugin-typescript": "^9.0.2",
"babel-jest": "^29.2.2",
"babel-plugin-add-import-extension": "^1.6.0", "babel-plugin-add-import-extension": "^1.6.0",
"core-js": "^3.24.0", "core-js": "^3.26.0",
"esbuild": "^0.14.51", "esbuild": "^0.15.12",
"eslint": "^4.19.1", "eslint": "^8.26.0",
"eslint-config-airbnb-base": "^12.1.0", "eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^2.10.0", "eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0", "eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^2.7.0", "eslint-plugin-prettier": "^4.2.1",
"husky": "^4.3.8", "husky": "^8.0.1",
"jest": "^28.1.3", "jest": "^29.2.2",
"lint-staged": "^10.5.4", "lint-staged": "^13.0.3",
"minimist": "^1.2.6", "minimist": "^1.2.7",
"node-fetch": "^2.6.7", "node-fetch": "^3.2.10",
"prettier": "1.17.1", "prettier": "2.7.1",
"rollup": "^2.77.2", "rollup": "^3.2.4",
"rollup-plugin-license": "^2.8.1", "rollup-plugin-license": "^3.0.1",
"rollup-plugin-svelte": "^7.1.0", "rollup-plugin-terser": "^7.0.2",
"rollup-plugin-terser": "^5.3.1", "rollup-plugin-visualizer": "^5.8.3",
"rollup-plugin-visualizer": "^4.2.2",
"@rollup/plugin-typescript": "^8.3.4",
"svg-outline-stroke": "^1.3.1", "svg-outline-stroke": "^1.3.1",
"svgo": "^2.8.0", "svgo": "^3.0.0",
"svgson": "^4.1.0" "svgson": "^5.2.1"
}, },
"husky": { "husky": {
"hooks": { "hooks": {
@@ -62,5 +63,6 @@
}, },
"lint-staged": { "lint-staged": {
"icons/*.svg": "node ./scripts/optimizeStagedSvgs.mjs" "icons/*.svg": "node ./scripts/optimizeStagedSvgs.mjs"
} },
"packageManager": "pnpm@7.14.0"
} }

View File

@@ -8,9 +8,11 @@ Implementation of the lucide icon library for angular applications.
```sh ```sh
yarn add lucide-angular yarn add lucide-angular
```
# or or
```sh
npm install lucide-angular npm install lucide-angular
``` ```
@@ -39,7 +41,6 @@ import { Activity } from 'lucide-angular/icons';
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrls: ['./app.component.css'] styleUrls: ['./app.component.css']
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
const div = document.getElementById('lucide-icon'); const div = document.getElementById('lucide-icon');
@@ -53,7 +54,7 @@ export class AppComponent implements OnInit {
} }
``` ```
### Method 2: User __Tag__ with __name__ property ### Method 2: User **Tag** with **name** property
After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`. After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`.
@@ -67,9 +68,7 @@ import { AppComponent } from './app.component';
import { LucideAngularModule, AlarmCheck, Edit } from 'lucide-angular'; import { LucideAngularModule, AlarmCheck, Edit } from 'lucide-angular';
@NgModule({ @NgModule({
declarations: [ declarations: [AppComponent],
AppComponent
],
imports: [ imports: [
BrowserModule, BrowserModule,
AppRoutingModule, AppRoutingModule,
@@ -87,7 +86,7 @@ export class AppModule { }
<lucide-icon name="edit" class="myicon"></lucide-icon> <lucide-icon name="edit" class="myicon"></lucide-icon>
``` ```
### Method 3: User __Tag__ with __img__ property ### Method 3: User **Tag** with **img** property
After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`. After install `lucide-angular` change content of file `app.component.html`, `app.component.ts`, `app.component.css` and `app.module.ts`.
@@ -101,14 +100,8 @@ import { AppComponent } from './app.component';
import { LucideAngularModule } from 'lucide-angular'; import { LucideAngularModule } from 'lucide-angular';
@NgModule({ @NgModule({
declarations: [ declarations: [AppComponent],
AppComponent imports: [BrowserModule, AppRoutingModule, LucideAngularModule.pick({})],
],
imports: [
BrowserModule,
AppRoutingModule,
LucideAngularModule.pick({ })
],
providers: [], providers: [],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
@@ -131,7 +124,6 @@ import { Airplay, Circle } from 'lucide-angular';
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrls: ['./app.component.css'] styleUrls: ['./app.component.css']
}) })
export class AppComponent { export class AppComponent {
ico1 = Airplay; ico1 = Airplay;
ico2 = Circle; ico2 = Circle;
@@ -146,7 +138,7 @@ In `Method 2`: import all icons in `app.module.ts` by:
```js ```js
... ...
import { icons } from 'lucide-angular/icons'; import { icons } from 'lucide-angular';
.... ....
LucideAngularModule.pick(icons) LucideAngularModule.pick(icons)
.... ....

View File

@@ -1,7 +1,7 @@
{ {
"name": "lucide-angular", "name": "lucide-angular",
"description": "A Lucide icon library package for Angular applications", "description": "A Lucide icon library package for Angular applications",
"version": "0.92.0", "version": "0.100.0",
"author": "SMAH1", "author": "SMAH1",
"license": "ISC", "license": "ISC",
"homepage": "https://lucide.dev", "homepage": "https://lucide.dev",
@@ -11,6 +11,9 @@
"url": "https://github.com/lucide-icons/lucide.git", "url": "https://github.com/lucide-icons/lucide.git",
"directory": "packages/lucide-angular" "directory": "packages/lucide-angular"
}, },
"publishConfig": {
"directory": "dist"
},
"keywords": [ "keywords": [
"Lucide", "Lucide",
"Angular", "Angular",
@@ -34,19 +37,19 @@
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"
}, },
"dependencies": { "dependencies": {
"tslib": "^2.3.1" "tslib": "^2.4.0"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "~0.1102.5", "@angular-devkit/build-angular": "~14.2.6",
"@angular/cli": "~11.2.15", "@angular/cli": "~14.2.6",
"@angular/common": "~11.2.14", "@angular/common": "~14.2.7",
"@angular/compiler": "~11.2.14", "@angular/compiler": "~14.2.7",
"@angular/compiler-cli": "~11.2.14", "@angular/compiler-cli": "~14.2.7",
"@angular/core": "~11.2.14", "@angular/core": "~14.2.7",
"@angular/platform-browser": "~11.2.14", "@angular/platform-browser": "~14.2.7",
"@angular/platform-browser-dynamic": "~11.2.14", "@angular/platform-browser-dynamic": "~14.2.7",
"@types/jasmine": "~3.10.2", "@types/jasmine": "~4.3.0",
"@types/node": "^16.11.7", "@types/node": "^18.11.4",
"codelyzer": "^6.0.2", "codelyzer": "^6.0.2",
"jasmine-core": "~3.10.1", "jasmine-core": "~3.10.1",
"jasmine-spec-reporter": "~7.0.0", "jasmine-spec-reporter": "~7.0.0",
@@ -55,13 +58,13 @@
"karma-coverage": "~2.0.3", "karma-coverage": "~2.0.3",
"karma-jasmine": "~4.0.1", "karma-jasmine": "~4.0.1",
"karma-jasmine-html-reporter": "^1.7.0", "karma-jasmine-html-reporter": "^1.7.0",
"ng-packagr": "^11.2.4", "ng-packagr": "^14.2.1",
"protractor": "~7.0.0", "protractor": "~7.0.0",
"puppeteer": "^8.0.0", "puppeteer": "^8.0.0",
"rxjs": "6.5.3", "rxjs": "7.5.7",
"ts-node": "~10.4.0", "ts-node": "~10.9.1",
"tslint": "~6.1.0", "tslint": "~6.1.0",
"typescript": "~4.1.5", "typescript": "~4.8.4",
"zone.js": "^0.11.7" "zone.js": "^0.11.8"
} }
} }

View File

@@ -13,7 +13,6 @@
"serve": "vite preview" "serve": "vite preview"
}, },
"dependencies": { "dependencies": {
"@emotion/core": "^10.0.14",
"minimist": "^1.2.6", "minimist": "^1.2.6",
"react": "^17.0.0", "react": "^17.0.0",
"react-dom": "^17.0.0" "react-dom": "^17.0.0"

View File

@@ -66,3 +66,24 @@ export const getIcons = () => new Promise<LucideIcons>(async (resolve, reject)=>
} }
} }
}); });
type EventCallback = (lucideIcons: LucideIcons) => void
export const iconFetchListener = (callback: EventCallback) => {
fetchIcons()
const handleEvent = (event: MessageEvent) => {
if (event.type === 'message' && event?.data?.pluginMessage.type === 'cachedIcons') {
const lucideIcons = event?.data?.pluginMessage?.cachedIcons
callback(lucideIcons)
}
}
window.addEventListener('message', handleEvent)
const removeListener = () => {
window.removeEventListener('message', handleEvent)
}
return removeListener
}

View File

@@ -6,9 +6,11 @@
border-radius: 2px; border-radius: 2px;
appearance: none; appearance: none;
outline: 0; outline: 0;
&:hover { &:hover {
background: rgba(0, 0, 0, 0.06); background: rgba(0, 0, 0, 0.06);
} }
&:focus, &:focus,
&:active { &:active {
box-shadow: inset 0 0 0 2px var(--color-blue); box-shadow: inset 0 0 0 2px var(--color-blue);

View File

@@ -6,9 +6,10 @@ interface SearchInputProps extends React.HTMLProps<HTMLDivElement> {
value: string, value: string,
iconCount: number, iconCount: number,
onChange: (event: ChangeEvent<HTMLInputElement>) => void onChange: (event: ChangeEvent<HTMLInputElement>) => void
placeholder: string
} }
function SearchInput({ value, onChange, iconCount, className, ...props }: SearchInputProps) { function SearchInput({ value, onChange, placeholder, className, ...props }: SearchInputProps) {
return ( return (
<div <div
className="search-input" className="search-input"
@@ -20,7 +21,7 @@ function SearchInput({ value, onChange, iconCount, className, ...props }: Search
type="search" type="search"
value={value} value={value}
onChange={onChange} onChange={onChange}
placeholder={`Search ${iconCount} icons`} placeholder={placeholder}
className="input__field" className="input__field"
/> />
</div> </div>

View File

@@ -0,0 +1,25 @@
@keyframes load {
to {
background-position: 200% 0;
}
}
.skeleton {
--block: rgba(0, 0, 0, 0.06);
--loader: hsl(0 0% 89%);
background: linear-gradient(
-75deg,
transparent 40%,
var(--loader),
transparent 60%
) 0 0 / 200% 100%,
var(--block);
border-radius: calc(var(--padding) * 0.5);
animation: load 2s infinite linear;
background-attachment: fixed;
width: 40px;
height: 40px;
border-radius: 2px;
}

View File

@@ -0,0 +1,13 @@
import './Skeleton.scss'
const Skeleton = () => {
return (
<>
{Array.from({length: 48 }, () => (
<div className="skeleton"/>
))}
</>
)
}
export default Skeleton

View File

@@ -6,7 +6,7 @@ type Views = typeof views
import useSearch, { Icon } from '../hooks/useSearch' import useSearch, { Icon } from '../hooks/useSearch'
import { getIcons } from '../api/fetchIcons' import { getIcons, iconFetchListener, LucideIcons } from '../api/fetchIcons'
import './interface.scss' import './interface.scss'
import Menu from '../components/Menu' import Menu from '../components/Menu'
@@ -19,21 +19,19 @@ function App() {
const searchResults = useMemo(() => useSearch(icons, tags, query), [icons, query]) const searchResults = useMemo(() => useSearch(icons, tags, query), [icons, query])
const getLatestIcons = async () => { const handleFetchResponse = async (lucideIcons: LucideIcons) => {
const lucideIcons = await getIcons() const icons = Object.entries(lucideIcons.iconNodes)
setIcons(Object.entries(lucideIcons.iconNodes)) setIcons(icons)
setTags(lucideIcons.tags) setTags(lucideIcons.tags)
setVersion(lucideIcons.version) setVersion(lucideIcons.version)
} }
useEffect(() => { useEffect(() => {
getLatestIcons() const removeListener = iconFetchListener(handleFetchResponse)
}, [])
if(!icons.length) { return removeListener
return null }, [])
}
const View = views?.[page as keyof Views] ?? views.icons const View = views?.[page as keyof Views] ?? views.icons

View File

@@ -2,6 +2,7 @@ import IconButton from '../components/IconButton'
import SearchInput from '../components/SearchInput' import SearchInput from '../components/SearchInput'
import createIconComponent from '../helpers/createIconComponent' import createIconComponent from '../helpers/createIconComponent'
import { Icon } from '../hooks/useSearch' import { Icon } from '../hooks/useSearch'
import Skeleton from '../components/Skeleton/Skeleton'
interface PageProps { interface PageProps {
query: string query: string
@@ -24,16 +25,22 @@ const Icons = ({
value={query} value={query}
iconCount={icons.length} iconCount={icons.length}
onChange={(event) => setQuery(event.target.value)} onChange={(event) => setQuery(event.target.value)}
placeholder={icons.length ? `Search ${icons.length} icons`: 'Loading icons ..'}
/> />
<main> <main>
<div className='icon-grid'> <div className='icon-grid'>
{searchResults.map(([name, iconNode] :any) => ( {icons.length ? (
searchResults.map(([name, iconNode]: any) => (
<IconButton <IconButton
name={name} name={name}
key={name} key={name}
component={createIconComponent(name, iconNode)} component={createIconComponent(name, iconNode)}
/> />
))} ))
) : (
<Skeleton />
)}
</div> </div>
<footer> <footer>
<a <a

View File

@@ -1,6 +1,6 @@
name: lucide_icons name: lucide_icons
description: A Lucide icon library package for Flutter applications. Fork of Feather Icons, open for anyone to contribute icons. description: A Lucide icon library package for Flutter applications. Fork of Feather Icons, open for anyone to contribute icons.
version: 0.92.0 version: 0.100.0
homepage: https://lucide.dev homepage: https://lucide.dev
repository: https://github.com/lucide-icons/lucide repository: https://github.com/lucide-icons/lucide

View File

@@ -8,9 +8,11 @@ Implementation of the lucide icon library for preact applications.
```sh ```sh
yarn add lucide-preact yarn add lucide-preact
```
# or or
```sh
npm install lucide-preact npm install lucide-preact
``` ```
@@ -29,7 +31,7 @@ import { Camera } from 'lucide-preact';
// Usage // Usage
const App = () => { const App = () => {
return <Camera color="red" size={48}/> return <Camera color="red" size={48} />;
}; };
export default App; export default App;
@@ -37,11 +39,11 @@ export default App;
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
### Custom props / svg attributes ### Custom props / svg attributes
@@ -50,7 +52,7 @@ You can also pass custom props that will be added in the as attributes. With tha
```js ```js
// Usage // Usage
const App = () => { const App = () => {
return <Camera fill="red" stroke-linejoin="bevel"/> return <Camera fill="red" stroke-linejoin="bevel" />;
}; };
``` ```
@@ -70,7 +72,7 @@ import * as icons from 'lucide-preact';
const Icon = ({ name, color, size }) => { const Icon = ({ name, color, size }) => {
const LucideIcon = icons[name]; const LucideIcon = icons[name];
return <LucideIcon color={color} size={size} /> return <LucideIcon color={color} size={size} />;
}; };
export default Icon; export default Icon;

View File

@@ -1,7 +1,7 @@
{ {
"name": "lucide-preact", "name": "lucide-preact",
"description": "A Lucide icon library package for Preact applications", "description": "A Lucide icon library package for Preact applications",
"version": "0.92.0", "version": "0.100.0",
"license": "ISC", "license": "ISC",
"homepage": "https://lucide.dev", "homepage": "https://lucide.dev",
"bugs": "https://github.com/lucide-icons/lucide/issues", "bugs": "https://github.com/lucide-icons/lucide/issues",
@@ -28,7 +28,7 @@
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey",
"build:es": "babel src -d dist/esm", "build:es": "babel src -d dist/esm",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.js", "build:bundles": "rollup -c ./rollup.config.mjs",
"test": "jest", "test": "jest",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"
}, },

View File

@@ -1,5 +1,5 @@
import plugins from '../../rollup.plugins'; import plugins from '../../rollup.plugins.mjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: "json" };
const packageName = 'LucidePreact'; const packageName = 'LucidePreact';
const outputFileName = 'lucide-preact'; const outputFileName = 'lucide-preact';

View File

@@ -6,13 +6,15 @@ Implementation of the lucide icon library for React Native applications.
## Installation ## Installation
First, ensure that you have `react-native-svg@^12.0.0` installed. Then, install the package: First, ensure that you have`react-native-svg@^12.0.0` or `react-native-svg@^13.0.0` installed. Then, install the package:
```sh ```sh
yarn add lucide-react-native yarn add lucide-react-native
```
# or or
```sh
npm install lucide-react-native npm install lucide-react-native
``` ```
@@ -29,7 +31,7 @@ You can pass additional props to adjust the icon.
import { Camera } from 'lucide-react-native'; import { Camera } from 'lucide-react-native';
const App = () => { const App = () => {
return <Camera color="red" size={48}/> return <Camera color="red" size={48} />;
}; };
export default App; export default App;
@@ -37,11 +39,11 @@ export default App;
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
### Custom props ### Custom props
@@ -49,7 +51,7 @@ You can also pass custom props that will be added in the svg as attributes.
```js ```js
const App = () => { const App = () => {
return <Camera fill="red"/> return <Camera fill="red" />;
}; };
``` ```
@@ -65,7 +67,7 @@ import * as icons from 'lucide-react-native';
const Icon = ({ name, color, size }) => { const Icon = ({ name, color, size }) => {
const LucideIcon = icons[name]; const LucideIcon = icons[name];
return <LucideIcon color={color} size={size} /> return <LucideIcon color={color} size={size} />;
}; };
export default Icon; export default Icon;

View File

@@ -1,7 +1,7 @@
{ {
"name": "lucide-react-native", "name": "lucide-react-native",
"description": "A Lucide icon library package for React Native applications", "description": "A Lucide icon library package for React Native applications",
"version": "0.48.0-alpha.5", "version": "0.100.0",
"license": "ISC", "license": "ISC",
"homepage": "https://lucide.dev", "homepage": "https://lucide.dev",
"bugs": "https://github.com/lucide-icons/lucide/issues", "bugs": "https://github.com/lucide-icons/lucide/issues",
@@ -19,31 +19,33 @@
"typings": "dist/lucide-react-native.d.ts", "typings": "dist/lucide-react-native.d.ts",
"react-native": "dist/esm/lucide-react-native.js", "react-native": "dist/esm/lucide-react-native.js",
"sideEffects": false, "sideEffects": false,
"files": ["dist"], "files": [
"dist"
],
"scripts": { "scripts": {
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles && pnpm build:types", "build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles && pnpm build:types",
"copy:license": "cp ../../LICENSE ./LICENSE", "copy:license": "cp ../../LICENSE ./LICENSE",
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.js", "clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.js",
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.js", "build:bundles": "rollup -c ./rollup.config.mjs",
"test": "jest", "test": "jest",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"
}, },
"devDependencies": { "devDependencies": {
"@testing-library/react": "^11.2.6", "@testing-library/react": "^13.4.0",
"babel-preset-react-app": "^10.0.0", "babel-preset-react-app": "^10.0.0",
"jest": "^26.6.3", "jest": "^26.6.3",
"prop-types": "^15.7.2", "prop-types": "^15.7.2",
"react": "^18.0.0", "react": "^18.0.0",
"react-dom": "^18.0.0", "react-dom": "^18.0.0",
"react-native": "^0.69.0", "react-native": "^0.69.0",
"react-native-svg": "^12.0.0" "react-native-svg": "^13.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"prop-types": "^15.7.2", "prop-types": "^15.7.2",
"react": "^16.5.1 || ^17.0.0 || ^18.0.0", "react": "^16.5.1 || ^17.0.0 || ^18.0.0",
"react-native": ">=0.50.0", "react-native": "*",
"react-native-svg": "^12.0.0" "react-native-svg": "^12.0.0 || ^13.0.0"
} }
} }

View File

@@ -1,5 +1,5 @@
import plugins from '../../rollup.plugins'; import plugins from '../../rollup.plugins.mjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: 'json' };
const packageName = 'LucideReact'; const packageName = 'LucideReact';
const outputFileName = 'lucide-react-native'; const outputFileName = 'lucide-react-native';

View File

@@ -8,9 +8,11 @@ Implementation of the lucide icon library for react applications.
```sh ```sh
yarn add lucide-react yarn add lucide-react
```
# or or
```sh
npm install lucide-react npm install lucide-react
``` ```
@@ -27,7 +29,7 @@ You can pass additional props to adjust the icon.
import { Camera } from 'lucide-react'; import { Camera } from 'lucide-react';
const App = () => { const App = () => {
return <Camera color="red" size={48}/> return <Camera color="red" size={48} />;
}; };
export default App; export default App;
@@ -35,11 +37,11 @@ export default App;
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
### Custom props ### Custom props
@@ -47,7 +49,7 @@ You can also pass custom props that will be added in the svg as attributes.
```js ```js
const App = () => { const App = () => {
return <Camera fill="red"/> return <Camera fill="red" />;
}; };
``` ```
@@ -63,7 +65,7 @@ import * as icons from 'lucide-react';
const Icon = ({ name, color, size }) => { const Icon = ({ name, color, size }) => {
const LucideIcon = icons[name]; const LucideIcon = icons[name];
return <LucideIcon color={color} size={size} /> return <LucideIcon color={color} size={size} />;
}; };
export default Icon; export default Icon;

View File

@@ -1,7 +1,7 @@
{ {
"name": "lucide-react", "name": "lucide-react",
"description": "A Lucide icon library package for React applications", "description": "A Lucide icon library package for React applications",
"version": "0.92.0", "version": "0.100.0",
"license": "ISC", "license": "ISC",
"homepage": "https://lucide.dev", "homepage": "https://lucide.dev",
"bugs": "https://github.com/lucide-icons/lucide/issues", "bugs": "https://github.com/lucide-icons/lucide/issues",
@@ -28,7 +28,7 @@
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey",
"build:es": "babel src -d dist/esm", "build:es": "babel src -d dist/esm",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.js", "build:bundles": "rollup -c ./rollup.config.mjs",
"test": "jest", "test": "jest",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"
}, },

View File

@@ -1,5 +1,5 @@
import plugins from '../../rollup.plugins'; import plugins from '../../rollup.plugins.mjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: 'json' };
const packageName = 'LucideReact'; const packageName = 'LucideReact';
const outputFileName = 'lucide-react'; const outputFileName = 'lucide-react';

View File

@@ -8,9 +8,11 @@ Implementation of the lucide icon library for solid applications.
```sh ```sh
yarn add lucide-solid yarn add lucide-solid
```
# or or
```sh
npm install lucide-solid npm install lucide-solid
``` ```
@@ -29,7 +31,7 @@ import { Camera } from 'lucide-solid';
// Usage // Usage
const App = () => { const App = () => {
return <Camera color="red" size={48}/> return <Camera color="red" size={48} />;
}; };
export default App; export default App;
@@ -37,11 +39,11 @@ export default App;
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
### Custom props / svg attributes ### Custom props / svg attributes
@@ -50,7 +52,7 @@ You can also pass custom props that will be added in the as attributes. With tha
```js ```js
// Usage // Usage
const App = () => { const App = () => {
return <Camera fill="red" stroke-linejoin="bevel"/> return <Camera fill="red" stroke-linejoin="bevel" />;
}; };
``` ```

View File

@@ -28,7 +28,7 @@
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey",
"build:es": "babel src -d dist/esm", "build:es": "babel src -d dist/esm",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.js", "build:bundles": "rollup -c ./rollup.config.mjs",
"test:jest": "jest", "test:jest": "jest",
"test": "vitest", "test": "vitest",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"

View File

@@ -1,5 +1,5 @@
import plugins from '../../rollup.plugins'; import plugins from '../../rollup.plugins.mjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: 'json' };
const packageName = 'LucideSolid'; const packageName = 'LucideSolid';
const outputFileName = 'lucide-solid'; const outputFileName = 'lucide-solid';

View File

@@ -12,6 +12,7 @@ export default defineConfig({
setupFiles: './tests/setupVitest.js', setupFiles: './tests/setupVitest.js',
threads: false, threads: false,
isolate: false, isolate: false,
watch: false,
}, },
resolve: { resolve: {
conditions: ['development', 'browser'], conditions: ['development', 'browser'],

View File

@@ -21,9 +21,11 @@ This package is suitable for very specific use cases for example if you want to
```sh ```sh
yarn add lucide-static yarn add lucide-static
```
# or or
```sh
npm install lucide-static npm install lucide-static
``` ```
@@ -31,13 +33,13 @@ npm install lucide-static
```html ```html
<!-- Svg File --> <!-- Svg File -->
<img src="https://unpkg.com/lucide-static@latest/icons/home.svg"> <img src="https://unpkg.com/lucide-static@latest/icons/home.svg" />
<!-- Icon Font --> <!-- Icon Font -->
<style> <style>
@font-face { @font-face {
font-family: "LucideIcons"; font-family: 'LucideIcons';
src: url(https://unpkg.com/lucide-static@latest/font/Lucide.ttf) format("truetype"); src: url(https://unpkg.com/lucide-static@latest/font/Lucide.ttf) format('truetype');
} }
</style> </style>
``` ```
@@ -54,14 +56,15 @@ To use it in for example html:
```html ```html
<!-- Svg File --> <!-- Svg File -->
<img src="~lucide-static/icons/home.svg"> <img src="~lucide-static/icons/home.svg" />
``` ```
```css ```css
.home-icon { .home-icon {
background-image: url(~lucide-static/icons/home.svg) background-image: url(~lucide-static/icons/home.svg);
} }
``` ```
Make sure you have the correct webpack loaders to make this work. [url-loader](https://v4.webpack.js.org/loaders/url-loader/) Make sure you have the correct webpack loaders to make this work. [url-loader](https://v4.webpack.js.org/loaders/url-loader/)
#### Svg file Inline #### Svg file Inline
@@ -70,7 +73,7 @@ You can simply import each svg by targeting `lucide-static/icons/{icon-name}.svg
To use svgs in your project you can for example use a [svg loader](https://v4.webpack.js.org/loaders/svg-inline-loader/). To use svgs in your project you can for example use a [svg loader](https://v4.webpack.js.org/loaders/svg-inline-loader/).
```js ```js
import arrowRightIcon from 'lucide-static/icons/arrow-right' import arrowRightIcon from 'lucide-static/icons/arrow-right';
// return string of a svg // return string of a svg
``` ```
@@ -81,7 +84,7 @@ You may need additional loader for this.
```html ```html
<!-- Icon Sprite, not recommended for production! --> <!-- Icon Sprite, not recommended for production! -->
<img src="lucide-static/sprite.svg#home"> <img src="lucide-static/sprite.svg#home" />
<!-- or --> <!-- or -->
<svg <svg
@@ -96,9 +99,7 @@ You may need additional loader for this.
<use href="#alert-triangle" /> <use href="#alert-triangle" />
</svg> </svg>
<svg> <svg>...sprite svg</svg>
...sprite svg
</svg>
``` ```
If you'd prefer, you can use CSS to hold your base SVG properties If you'd prefer, you can use CSS to hold your base SVG properties
@@ -134,20 +135,19 @@ and update the svg as follows
### Icon Font ### Icon Font
```css ```css
@import("~lucide-static/font/Lucide.css") @import ('~lucide-static/font/Lucide.css');
``` ```
```html ```html
<div class="icon-home"></div> <div class="icon-home"></div>
``` ```
### Node.js ### Node.js
To use lucide icons in your Nodejs project you can import each icon as: To use lucide icons in your Nodejs project you can import each icon as:
```js ```js
const { messageSquare } = require('lucide-static/lib') const { messageSquare } = require('lucide-static/lib');
``` ```
> Note: Each icon name is in camelCase. > Note: Each icon name is in camelCase.
@@ -155,10 +155,10 @@ const { messageSquare } = require('lucide-static/lib')
#### Example in node.js project #### Example in node.js project
```js ```js
const express = require('express') const express = require('express');
const { messageSquare } = require('lucide-static/lib') const { messageSquare } = require('lucide-static/lib');
const app = express() const app = express();
const port = 3000 const port = 3000;
app.get('/', (req, res) => { app.get('/', (req, res) => {
res.send(` res.send(`
@@ -173,12 +173,12 @@ app.get('/', (req, res) => {
</body> </body>
</html> </html>
`) `);
}) });
app.listen(port, () => { app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`) console.log(`Example app listening at http://localhost:${port}`);
}) });
``` ```
## Contributing ## Contributing

View File

@@ -8,9 +8,11 @@ Implementation of the lucide icon library for svelte applications.
```sh ```sh
yarn add lucide-svelte yarn add lucide-svelte
```
# or or
```sh
npm install lucide-svelte npm install lucide-svelte
``` ```
@@ -42,14 +44,14 @@ import { Camera } from 'lucide-svelte'
### Available props ### Available props
| name | type | default | name | type | default |
| -------------- | -------- | -------- | ------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth` | *Number* | 2 | `strokeWidth` | _Number_ | 2 |
| `*<SVGProps>` | *String* | - | `*<SVGProps>` | _String_ | - |
* All SVGProps are available to style the svgs. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation) - All SVGProps are available to style the svgs. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation)
### Example of custom props ### Example of custom props

View File

@@ -1,7 +1,7 @@
{ {
"name": "lucide-svelte", "name": "lucide-svelte",
"description": "A Lucide icon library package for Svelte applications", "description": "A Lucide icon library package for Svelte applications",
"version": "0.92.0", "version": "0.100.0",
"license": "ISC", "license": "ISC",
"homepage": "https://lucide.dev", "homepage": "https://lucide.dev",
"bugs": "https://github.com/lucide-icons/lucide/issues", "bugs": "https://github.com/lucide-icons/lucide/issues",
@@ -29,7 +29,7 @@
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --exportFileName=index.js --iconFileExtention=.svelte --pretty=false", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --exportFileName=index.js --iconFileExtention=.svelte --pretty=false",
"build:es": "babel src -d dist/esm --copy-files", "build:es": "babel src -d dist/esm --copy-files",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.js", "build:bundles": "rollup -c ./rollup.config.mjs",
"test": "jest", "test": "jest",
"test:watch": "jest --watch", "test:watch": "jest --watch",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"

View File

@@ -6,7 +6,7 @@ import { terser } from 'rollup-plugin-terser';
import license from 'rollup-plugin-license'; import license from 'rollup-plugin-license';
import resolve from '@rollup/plugin-node-resolve'; import resolve from '@rollup/plugin-node-resolve';
import commonJS from '@rollup/plugin-commonjs'; import commonJS from '@rollup/plugin-commonjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: 'json' };
const packageName = 'LucideSvelte'; const packageName = 'LucideSvelte';
const outputFileName = 'lucide-svelte'; const outputFileName = 'lucide-svelte';

View File

@@ -10,9 +10,11 @@ Implementation of the lucide icon library for Vue 3 applications.
```sh ```sh
yarn add lucide-vue-next yarn add lucide-vue-next
```
# or or
```sh
npm install lucide-vue-next npm install lucide-vue-next
``` ```
@@ -27,10 +29,7 @@ You can pass additional props to adjust the icon.
```vue ```vue
<template> <template>
<Camera <Camera color="red" :size="32" />
color="red"
:size="32"
/>
</template> </template>
<script> <script>
@@ -38,21 +37,20 @@ You can pass additional props to adjust the icon.
import { Camera } from 'lucide-vue-next'; import { Camera } from 'lucide-vue-next';
export default { export default {
name: "My Component", name: 'My Component',
components: { Camera } components: { Camera }
} };
</script> </script>
``` ```
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | -------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
| `defaultClass`| *String* | lucide-icon | `defaultClass` | _String_ | lucide-icon |
### Custom props ### Custom props
@@ -78,20 +76,20 @@ It is possible to create one generic icon component to load icons.
</template> </template>
<script> <script>
import * as icons from "lucide-vue-next"; import * as icons from 'lucide-vue-next';
export default { export default {
props: { props: {
name: { name: {
type: String, type: String,
required: true, required: true
}, }
}, },
computed: { computed: {
icon() { icon() {
return icons[this.name]; return icons[this.name];
}, }
}, }
}; };
</script> </script>
``` ```

View File

@@ -1,6 +1,6 @@
{ {
"name": "lucide-vue-next", "name": "lucide-vue-next",
"version": "0.92.0", "version": "0.100.0",
"author": "Eric Fennis", "author": "Eric Fennis",
"description": "A Lucide icon library package for Vue 3 applications", "description": "A Lucide icon library package for Vue 3 applications",
"license": "ISC", "license": "ISC",
@@ -30,7 +30,7 @@
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey",
"build:es": "babel src -d dist/esm", "build:es": "babel src -d dist/esm",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.js", "build:bundles": "rollup -c ./rollup.config.mjs",
"test": "jest", "test": "jest",
"test:watch": "jest --watchAll", "test:watch": "jest --watchAll",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"

View File

@@ -1,5 +1,5 @@
import plugins from '../../rollup.plugins'; import plugins from '../../rollup.plugins.mjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: 'json' };
const packageName = 'LucideVueNext'; const packageName = 'LucideVueNext';
const outputFileName = 'lucide-vue-next'; const outputFileName = 'lucide-vue-next';

View File

@@ -10,9 +10,11 @@ Implementation of the lucide icon library for Vue applications.
```sh ```sh
yarn add lucide-vue yarn add lucide-vue
```
# or or
```sh
npm install lucide-vue npm install lucide-vue
``` ```
@@ -27,10 +29,7 @@ You can pass additional props to adjust the icon.
```vue ```vue
<template> <template>
<Camera <Camera color="red" :size="32" />
color="red"
:size="32"
/>
</template> </template>
<script> <script>
@@ -38,21 +37,20 @@ You can pass additional props to adjust the icon.
import { Camera } from 'lucide-vue'; import { Camera } from 'lucide-vue';
export default { export default {
name: "My Component", name: 'My Component',
components: { Camera } components: { Camera }
} };
</script> </script>
``` ```
### Props ### Props
| name | type | default | name | type | default |
| ------------ | -------- | -------- | -------------- | -------- | ------------ |
| `size` | *Number* | 24 | `size` | _Number_ | 24 |
| `color` | *String* | currentColor | `color` | _String_ | currentColor |
| `strokeWidth`| *Number* | 2 | `strokeWidth` | _Number_ | 2 |
| `defaultClass`| *String* | lucide-icon | `defaultClass` | _String_ | lucide-icon |
### Custom props ### Custom props
@@ -78,20 +76,20 @@ It is possible to create one generic icon component to load icons.
</template> </template>
<script> <script>
import * as icons from "lucide-vue"; import * as icons from 'lucide-vue';
export default { export default {
props: { props: {
name: { name: {
type: String, type: String,
required: true, required: true
}, }
}, },
computed: { computed: {
icon() { icon() {
return icons[this.name]; return icons[this.name];
}, }
}, }
}; };
</script> </script>
``` ```
@@ -109,17 +107,21 @@ export default {
## Use with [@nuxt/components](https://github.com/nuxt/components#readme) ## Use with [@nuxt/components](https://github.com/nuxt/components#readme)
### Setup ### Setup
In your `nuxt.config.js`, add `lucide-vue/nuxt` to your `buildModules` In your `nuxt.config.js`, add `lucide-vue/nuxt` to your `buildModules`
```js ```js
export default { export default {
buildModules: ['lucide-vue/nuxt'] buildModules: ['lucide-vue/nuxt']
} };
``` ```
### How to use ### How to use
Icon components are prefixed with `Icon`. Use icon components without importing them. Icon components are prefixed with `Icon`. Use icon components without importing them.
### Example ### Example
```html ```html
<IconCamera color="red" :size="32" /> <IconCamera color="red" :size="32" />
``` ```

View File

@@ -1,6 +1,6 @@
{ {
"name": "lucide-vue", "name": "lucide-vue",
"version": "0.92.0", "version": "0.100.0",
"author": "Eric Fennis", "author": "Eric Fennis",
"description": "A Lucide icon library package for Vue 2 applications", "description": "A Lucide icon library package for Vue 2 applications",
"license": "ISC", "license": "ISC",
@@ -27,7 +27,7 @@
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.js", "clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.js",
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs",
"build:es": "babel src -d dist/esm", "build:es": "babel src -d dist/esm",
"build:bundles": "rollup -c ./rollup.config.js", "build:bundles": "rollup -c ./rollup.config.mjs",
"test": "jest", "test": "jest",
"test:watch": "jest --watchAll", "test:watch": "jest --watchAll",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"

View File

@@ -1,5 +1,5 @@
import plugins from '../../rollup.plugins'; import plugins from '../../rollup.plugins.mjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: 'json' };
const packageName = 'LucideVue'; const packageName = 'LucideVue';
const outputFileName = 'lucide-vue'; const outputFileName = 'lucide-vue';

View File

@@ -6,9 +6,13 @@ Implementation of the lucide icon library for web applications.
### Package Managers ### Package Managers
``` bash ```sh
npm install lucide npm install lucide
#or ```
or
```sh
yarn add lucide yarn add lucide
``` ```
@@ -65,8 +69,8 @@ createIcons({
icons: { icons: {
Menu, Menu,
ArrowRight, ArrowRight,
Globe, Globe
}, }
}); });
``` ```
@@ -83,9 +87,9 @@ createIcons({
attrs: { attrs: {
class: ['my-custom-class', 'icon'], class: ['my-custom-class', 'icon'],
'stroke-width': 1, 'stroke-width': 1,
stroke: '#333', stroke: '#333'
}, },
nameAttr: 'icon-name', // attribute for the icon name. nameAttr: 'icon-name' // attribute for the icon name.
}); });
``` ```
@@ -98,8 +102,8 @@ createIcons({
icons: { icons: {
Menu, Menu,
ArrowRight, ArrowRight,
Globe, Globe
}, }
}); });
``` ```

View File

@@ -1,7 +1,7 @@
{ {
"name": "lucide", "name": "lucide",
"description": "A Lucide icon library package for web and javascript applications.", "description": "A Lucide icon library package for web and javascript applications.",
"version": "0.92.0", "version": "0.100.0",
"license": "ISC", "license": "ISC",
"homepage": "https://lucide.dev", "homepage": "https://lucide.dev",
"bugs": "https://github.com/lucide-icons/lucide/issues", "bugs": "https://github.com/lucide-icons/lucide/issues",
@@ -28,7 +28,7 @@
"build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs", "build:icons": "node ../../scripts/buildIcons.mjs --output=./src --templateSrc=./scripts/exportTemplate.mjs",
"build:es": "babel src -d dist/esm", "build:es": "babel src -d dist/esm",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c rollup.config.js", "build:bundles": "rollup -c rollup.config.mjs",
"test": "jest", "test": "jest",
"version": "pnpm version --git-tag-version=false" "version": "pnpm version --git-tag-version=false"
} }

View File

@@ -1,5 +1,5 @@
import plugins from '../../rollup.plugins'; import plugins from '../../rollup.plugins.mjs';
import pkg from './package.json'; import pkg from './package.json' assert { type: 'json' };
const outputFileName = pkg.name; const outputFileName = pkg.name;
const outputDir = 'dist'; const outputDir = 'dist';

View File

@@ -2,14 +2,13 @@ import path from 'path';
import { import {
readSvgDirectory, readSvgDirectory,
resetFile,
appendFile, appendFile,
writeFile, writeFile,
toPascalCase, toPascalCase,
getCurrentDirPath, getCurrentDirPath,
} from '../../../scripts/helpers.mjs'; } from '../../../scripts/helpers.mjs';
const currentDir = getCurrentDirPath(import.meta.url) const currentDir = getCurrentDirPath(import.meta.url);
const defaultAttributes = { const defaultAttributes = {
xmlns: 'http://www.w3.org/2000/svg', xmlns: 'http://www.w3.org/2000/svg',
@@ -77,7 +76,7 @@ writeFile(typeDefinitions, TYPES_FILE_NAME, TARGET_DIR);
const svgFiles = readSvgDirectory(ICONS_DIR); const svgFiles = readSvgDirectory(ICONS_DIR);
svgFiles.forEach(svgFile => { svgFiles.forEach((svgFile) => {
const nameSvg = path.basename(svgFile, '.svg'); const nameSvg = path.basename(svgFile, '.svg');
const namePascal = toPascalCase(nameSvg); const namePascal = toPascalCase(nameSvg);

View File

@@ -8,12 +8,12 @@
const createElement = (tag, attrs, children = []) => { const createElement = (tag, attrs, children = []) => {
const element = document.createElementNS('http://www.w3.org/2000/svg', tag); const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
Object.keys(attrs).forEach(name => { Object.keys(attrs).forEach((name) => {
element.setAttribute(name, attrs[name]); element.setAttribute(name, attrs[name]);
}); });
if (children.length) { if (children.length) {
children = children.forEach(child => { children = children.forEach((child) => {
const childElement = createElement(...child); const childElement = createElement(...child);
element.appendChild(childElement); element.appendChild(childElement);

View File

@@ -18,7 +18,7 @@ const createIcons = ({ icons = {}, nameAttr = 'icon-name', attrs = {} } = {}) =>
const elementsToReplace = document.querySelectorAll(`[${nameAttr}]`); const elementsToReplace = document.querySelectorAll(`[${nameAttr}]`);
Array.from(elementsToReplace).forEach(element => Array.from(elementsToReplace).forEach((element) =>
replaceElement(element, { nameAttr, icons, attrs }), replaceElement(element, { nameAttr, icons, attrs }),
); );
}; };

View File

@@ -5,7 +5,7 @@ import createElement from './createElement';
* @param {HTMLElement} element * @param {HTMLElement} element
* @returns {Object} * @returns {Object}
*/ */
export const getAttrs = element => export const getAttrs = (element) =>
Array.from(element.attributes).reduce((attrs, attr) => { Array.from(element.attributes).reduce((attrs, attr) => {
attrs[attr.name] = attr.value; attrs[attr.name] = attr.value;
return attrs; return attrs;
@@ -16,7 +16,7 @@ export const getAttrs = element =>
* @param {Object} attrs * @param {Object} attrs
* @returns {Array} * @returns {Array}
*/ */
export const getClassNames = attrs => { export const getClassNames = (attrs) => {
if (typeof attrs === 'string') return attrs; if (typeof attrs === 'string') return attrs;
if (!attrs || !attrs.class) return ''; if (!attrs || !attrs.class) return '';
if (attrs.class && typeof attrs.class === 'string') { if (attrs.class && typeof attrs.class === 'string') {
@@ -33,17 +33,17 @@ export const getClassNames = attrs => {
* @param {array} arrayOfClassnames * @param {array} arrayOfClassnames
* @returns {string} * @returns {string}
*/ */
export const combineClassNames = arrayOfClassnames => { export const combineClassNames = (arrayOfClassnames) => {
const classNameArray = arrayOfClassnames.flatMap(getClassNames); const classNameArray = arrayOfClassnames.flatMap(getClassNames);
return classNameArray return classNameArray
.map(classItem => classItem.trim()) .map((classItem) => classItem.trim())
.filter(Boolean) .filter(Boolean)
.filter((value, index, self) => self.indexOf(value) === index) .filter((value, index, self) => self.indexOf(value) === index)
.join(' '); .join(' ');
}; };
const toPascalCase = string => const toPascalCase = (string) =>
string.replace(/(\w)(\w*)(_|-|\s*)/g, (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase()); string.replace(/(\w)(\w*)(_|-|\s*)/g, (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase());
/** /**

11266
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
packages: packages:
- 'packages/*' - 'packages/*'
- 'tools/*'
- 'site' - 'site'

View File

@@ -1,8 +1,8 @@
/* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable import/no-extraneous-dependencies */
import babel from '@rollup/plugin-babel'; import { babel } from '@rollup/plugin-babel';
import bundleSize from '@atomico/rollup-plugin-sizes'; import bundleSize from '@atomico/rollup-plugin-sizes';
import { terser } from 'rollup-plugin-terser'; import { terser } from 'rollup-plugin-terser';
import visualizer from 'rollup-plugin-visualizer'; import { visualizer } from 'rollup-plugin-visualizer';
import license from 'rollup-plugin-license'; import license from 'rollup-plugin-license';
import replace from '@rollup/plugin-replace'; import replace from '@rollup/plugin-replace';
import resolve from '@rollup/plugin-node-resolve'; import resolve from '@rollup/plugin-node-resolve';

21
scripts/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
## This Dockerfile is for building image for github actions
FROM debian:stable-slim
RUN apt-get update
RUN apt-get install zlib1g-dev fontforge git build-essential ruby-full -y
# sfnt2woff
RUN git clone https://github.com/bramstein/sfnt2woff-zopfli.git sfnt2woff-zopfli
WORKDIR /sfnt2woff-zopfli
RUN make
RUN cp sfnt2woff-zopfli /usr/local/bin/sfnt2woff
# WOFF2
WORKDIR /
RUN git clone --recursive https://github.com/google/woff2.git
WORKDIR /woff2
RUN make clean all
RUN mv woff2_compress /usr/local/bin/
RUN mv woff2_decompress /usr/local/bin/
RUN gem install fontcustom

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