Compare commits

...

77 Commits

Author SHA1 Message Date
Eric Fennis
d1d57d3c85 Format code 2025-07-04 17:40:28 +02:00
Eric Fennis
701c2fb6b2 Delete lucide-vue 2024-01-23 18:24:03 +01:00
Eric Fennis
294ec9c727 Add simlinks 2024-01-23 17:46:05 +01:00
Eric Fennis
99c883e60a revert import change 2024-01-23 17:45:55 +01:00
Eric Fennis
9e68779d22 create new vue directory 2024-01-23 17:45:43 +01:00
Daniel Bayley
06372db723 Optimise/add missing calendar[-*] icons/improve metadata (#1377)
* Optimise `calendar`[`-*`] icons

* Add `calendar-plus` variant

* Add `calendar-minus` variant

* Add `calendar-slash` icon

* Improve `calendar`[`-*`] icons metadata

* Add `calendar-fold` icon

* Remove calendar-slash

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-22 20:02:19 +01:00
Eric Fennis
114fb08556 fix icon preview comment (#1823) 2024-01-21 19:45:21 +01:00
Eric Fennis
3bad7f6ced fix site, downgrade sandpack-vue3 2024-01-21 18:20:52 +01:00
Daniel Bayley
e450afe408 Add ticket-* icons/improve metadata (#1312)
* Add `ticket-x` (cancel/refund) icon

* Improve `ticket` metadata

* Add `ticket-slash` (marked/redeemed) icon

* Terminal Add `ticket-check` (purchased) icon

* Add `ticket-plus` (book) icon

* Add `ticket-minus` (remove from basket) icon

* Add `ticket-percent` (discount) icon

* Add `ticket-text` (T&Cs) icon

* Remove ticket text

* Fix duplicate item

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-21 18:04:03 +01:00
Daniel Bayley
6fcfc820ca Add text-search icon (#1807) 2024-01-21 17:22:12 +01:00
dependabot[bot]
55f264bea6 Bump vite from 5.0.10 to 5.0.12 (#1817)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.10 to 5.0.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.0.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.0.12/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-21 16:46:12 +01:00
Han Yeong-woo
675158df16 Cleanup tools (#1756)
* Use prettier own instead of eslint plugin

* Extend prettier config angular eslint

* Upgrade root prettier to 3

* Fix css syntax errors

* Change eslint ignore to prettier ignore

* Ignore formatting for outputs

* Fix lint-staged error when edited multiple files

* Bump pnpm version

* Remove unnecessary pnpm config

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-18 12:36:48 +01:00
Gustavo Bonfim
042393a931 docs(react-native): fix generic icon import (#1813) 2024-01-18 12:27:02 +01:00
Daniel Bayley
551635003c Optimise/add receipt[-*] icons (#1401)
* Optimise `receipt` icon

* Add `receipt-text` icon

* Improve `receipt` metadata

* Add `receipt-pound-sterling` icon

* Add `receipt-euro` icon

* Add `receipt-swiss-franc` icon

* Add `receipt-japanese-yen` icon

* Add `receipt-indian-rupee` icon

* Add `receipt-russian-ruble` icon

* Add `receipt-cent` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-17 20:06:56 +01:00
Eric Fennis
5c7119f6d1 Export all types lucide-react-native (#1809) 2024-01-17 14:28:14 +01:00
Daniel Bayley
7bfdb2f54a Fix missing metadata (#1808)
* Fix missing metadata

From #1280.

* Fix more missing metadata

From #1378.
2024-01-17 12:13:47 +01:00
Eric Fennis
e3abcdbcc6 Remove v-memo 2024-01-17 11:17:09 +01:00
Daniel Bayley
62d350140e Add missing arrow-*-from-square/optimise external-link icon/s (#1383)
* Add `arrow-up-right-from-square` (share) icon

* Add `arrow-up-left-from-square` icon

* Add `arrow-down-left-from-square` icon

* Add `arrow-down-right-from-square` icon

* Optimise `external-link` icon

* Improve `external-link` metadata

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-16 16:44:44 +01:00
Daniel Bayley
ad90ee7582 Refine file/sticky-note[-*] icons/add file-dot (dotfile) icon (#1378)
* Refine `file`[`-*`] icons

* Refine `sticker` icon fold

* Refine `sticky-note` icon

* Improve `sticky-note` metadata

* Add `sticky-note-text` icon

* Add `file-dot` icon

* Update icons/file-badge-2.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>

* Add `file-sliders-big` (config) icon

* Add `file-sliders` (config) icon

* Improve `folder-dot` metadata

* Remove icons

* Remove sticky note text

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-01-16 16:41:08 +01:00
Eric Fennis
b0e825cb57 Site improvements and update site dependencies (#1805)
* try to speed up build times

* Update deps

* Update site deps and fix search issue

* Small improvements

* fix imports

* Remove unused var
2024-01-16 16:22:09 +01:00
Karsa
d4cbe899fb Remove aliasesSupport flag from rollup.config.mjs (#1794)
* Remove aliasesSupport flag from rollup.config.mjs and add always add aliases

* Update rollup.config.mjs

* Update rollup.config.mjs

* Update rollup.config.mjs

* Update rollup.config.mjs

---------

Co-authored-by: Rigó József Karsa <karsa@sztaki.hu>
2024-01-16 16:21:57 +01:00
Daniel Bayley
be3ccc8ece Add/optimise swatch-book/aperture/blend/eclipse (dark/light) mode/paint-roller icons and improve palette/brush metadata (#1280)
* Add `swatch-book` icon

* Improve `palette`/`brush` icons metadata

* Update icons/swatch-book.svg

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

* Add `color-wheel` icon

* Improve `palette`/`swatch-book` icons metadata

* Update icons/color-wheel.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>

* Add `paint-roller` icon

* Improve metadata

* Add `contrast` alternate icon

* Add `eclipse` (dark/light mode toggle) icon

* Add `blend` icon

* Refine `color-wheel` icon

* Optimise `aperture` icon

* Add `aperture` variant

* Drop `color-wheel` icon

* Refine `paint-roller` icon

* Fix `aperture-2` optimisation

* Update icons/aperture.svg

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

* Fix `aperture` variant optimisation

* Rename `contrast-2` to `circle-line-vertical`

* Remove aperture-2 and circle-line-vertical

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-16 15:42:22 +01:00
Eric Fennis
e56b09d400 Add cache header site assets (#1801) 2024-01-13 15:32:18 +01:00
Eric Fennis
7e936c8803 Update stale action 2024-01-13 10:10:43 +01:00
ocavue
c9ffa4033f Add list-collapse icon (#1790)
* Add `list-collapse` icon

* Update icons/list-collapse.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-01-10 10:12:13 +01:00
Karsa
32a6187d69 Fixes pen-square (#1784) 2024-01-09 15:42:14 +01:00
Staffan Mowitz
2bf20db4bf Update CONTRIBUTING.md (#1787)
Update link for creating a new icon request issue
2024-01-09 11:25:03 +01:00
Eric Fennis
4473df5ad5 Export all types from lucide-svelte (#1779)
* Export all types from lucide-svelte

* Export all types
2024-01-07 17:26:15 +01:00
Jakob Guddas
bc5efd7f0d feat(ci): added filename lint job (#1782) 2024-01-07 17:15:49 +01:00
Eric Fennis
05f209cb04 Fix icon preview comment workflow (#1775)
* Add helpers

* fix preview script

* refactor markup to javascript

* test

* Add escaping

* Try alternative escaping

* test comment markup

* update comment markup

* Revert comment markup step

* revert escaping

* Test with markup file instead of GITHUB_OUTPUT var
2024-01-07 15:59:33 +01:00
Eric Fennis
ef89510a47 Implement deprecated block comment (#1765)
* Implement deprecate comment lucide-react

* Add export template with comment

* Add block comment to Lucide Svelte

* Add blockcomment to lucide-angular

* Add block comment to lucide-static

* revert runtime change build:tags

* Fix failed tests

* Remove optional property in icon schema
2024-01-07 15:59:19 +01:00
Daniel Bayley
b72cea6399 Add notebook/pad[-*] icons & optimise/rename *-edit icons (#1363)
* Add `notebook` icon

* Add `notebook-tabs` (contacts variant) icon

* Add `notebook-text` icon

* Add `notepad-text` icon

* Add `notebook-pen` icon

* Optimise `file-edit` icon

* Rename `file-edit` to `file-pen`

* Optimise `clipboard-edit` icon

* Rename `clipboard-edit` to `clipboard-pen`

* Optimise `folder-edit` icon

* Rename `folder-edit` to `folder-pen`

* Optimise `file-signature` icon

* Rename `file-signature` to `file-pen-line`

* Optimise `clipboard-signature` icon

* Rename `clipboard-signature` to `clipboard-pen-line`

* Add `notepad-text-dashed` (draft/template) icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-07 00:16:44 +01:00
Tyrone Tudehope
d2152b3cdd Rename between-horizontal-* icons (#1781) 2024-01-07 00:13:25 +01:00
Jakob Guddas
ea43df6431 Manually optimized folder-sync (#1745)
* Update folder-sync.svg

* Update folder-sync.svg

* Update folder-sync.json

* Update folder-sync.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-05 17:36:55 +01:00
Eric Fennis
4042a366e8 Merge branch 'main' of https://github.com/lucide-icons/lucide 2024-01-05 17:32:54 +01:00
Eric Fennis
5e0ba7e897 fix aliases property in asterisk-square 2024-01-05 17:32:51 +01:00
Daniel Bayley
6b4f575992 Add between-* icons (#1508)
* Add `between-horizontal` icon

* Add `between-vertical` icon

* Rename icons and end icons

* Fix lint issues

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-05 16:58:25 +01:00
Daniel Bayley
92784de9c5 Rename square-* icons appropriately (#1384)
* Rename `square-gantt` to `gantt-square`

* Rename `square-dot` to `dot-square`

* Rename `square-kanban` icons to `kanban-square`

* Rename `square-code` to `code-square`

* Rename `square-asterisk` to `asterisk-square`

* Rename `square-equal` to `equal-square`

* Rename `square-slash` to `slash-square`

* Cleanup merge conflicts

* Add alias back

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-05 16:20:41 +01:00
Daniel Bayley
314ee3b255 Add amenities icons (#1461)
* Add `washing-machine` icon

* Add `safe` icon

* Add `vault` icon

* Add `heater` icon

* Refine `vault` icon

* Refine `safe` icon

* Remove safe icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-05 12:47:57 +01:00
Eric Fennis
ee7add11bf fix: Run lint always 2024-01-05 11:50:36 +01:00
Daniel Bayley
001d0a51fb Add bolt (settings variant)/drill icons (#1340)
* Add `bolt` (settings variant) icon

* Add `screw` icon

* Add `screw-head` icon

* Add `drill` icon

* Improve tool icons metadata

* Revert "Add `screw-head` icon"

This reverts commit 15cc69ffea.

* Revert "Add `screw` icon"

This reverts commit bc764555d5.

* Simplify `drill` icon

* Update icons/drill.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-01-04 16:24:16 +01:00
Eric Fennis
fd4308e755 Add nitro prepare command docs site (#1774)
* Add nitro prepare command docs site

* Add prepare command to other vitepress commands
2024-01-03 11:39:54 +01:00
SHYAKA Davis
59893119b5 docs: Add Lucide-Svelte icon import instructions and type definitions (#1766)
* docs: Add Lucide-Svelte icon import instructions and type definitions

* Add Svelte docs link.

* apply feedback + recommended import manner

* Refactor menuItems type definition

---------

Co-authored-by: Davis SHYAKA <87414827+davis-shyaka@users.noreply.github.com>
2024-01-03 11:39:42 +01:00
Eric Fennis
faff6a8269 Update dependencies and general improvements in packages (#1773)
* update deps and vitest

* dedupe packages

* update package.json files

* Update to latest vite and vites

* Fix build

* Update lockfile
2024-01-03 11:38:06 +01:00
Han Yeong-woo
3fe74beeb0 Bump github actions (#1755) 2024-01-02 15:33:27 +01:00
Eugene Sviridov
f8aafd63b9 remove mentions of the site folder in doc and config files (#1769) 2024-01-02 15:14:34 +01:00
Daniel Bayley
f0422f415c Sort rows/columns icons (#1500)
* Optimise `rows` icon

* Optimise `columns` icon

* Improve metadata

* Improve metadata

* Add `rows-3` variant

* Rename `rows` to `rows-2`

* Rename `columns` to `columns-2`

* Add `columns-3` variant

* Add `panels-*` to `aliases`

Moved from #1156.

* Add `rows-4` variant

* Add `columns-4` variant

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-28 14:47:14 +01:00
Jakob Guddas
14a196d89c Renamed alarm-minus to alarm-clock-minus (#1629)
* Renamed alarm-minus to alarm-minus

* Renamed alarm-plus to alarm-clock-plus

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-28 14:41:26 +01:00
Jakob Guddas
87a89b30da Automatic optimisation of squirrel icon (#1764) 2023-12-28 14:31:26 +01:00
Jakob Guddas
3180910b23 Automatic optimisation of rabbit icon (#1763) 2023-12-28 14:30:52 +01:00
Jakob Guddas
46a4041cc7 improved SvgPreview radii highlighting (#1747)
* improved SvgPreview radii highlighting

* Update index.tsx

* Update index.tsx

* Update index.tsx

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-28 14:29:46 +01:00
Han Yeong-woo
e3166c65df Fix type error of preact createLucideIcon() (#1754)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-28 14:28:15 +01:00
CokaKoala
d9d7e245a3 fix: Exports Icon type (#1762)
* fixed import path

* export Icon type
2023-12-28 14:26:15 +01:00
Karsa
e19a9cc43a Fixes package list item 404 navigation error (#1751)
Co-authored-by: Rigó József Karsa <karsa@sztaki.hu>
2023-12-26 12:06:09 +01:00
Daniel Bayley
5ecfd61397 Optimise/add remaining panel-*/consolidate layout icons (#1156)
* Optimise `layout` icon

* Optimise `panel-*` icons

…from #1156.

* Fix JSON

* Rename `layout` to `panels-top-left`

* Add `panel-bottom-narrow` (status bar) icon

* Add `panels-left-bottom` icon

* Add `panels-right-bottom` icon

* Add `panels-left-right-bottom` icon

* Add `panels-left-right` icon

* Add `panels-bottom-left-right` icon

* Add `panels-top-split` icon

* Improve metadata

* Rename `panel-top-inactive` to `panel-top-dashed`

* Rename `panel-bottom-inactive` to `panel-bottom-dashed`

* Rename `panel-left-inactive` to `panel-left-dashed`

* Rename `panel-right-inactive` to `panel-right-dashed`

* Add `panel-top-narrow` (menu bar) icon

* Refine/rename `panels-top-split` to `panels-top-narrow-split`

* Remove `panel-bottom-narrow` icon

* Remove `panel-top-narrow` icon

* Remove `panels-bottom-left-right` icon

* Remove `panels-left-right-bottom` icon

* Remove `panels-top-narrow-split` icon

* Remove `panels-left-right` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-25 11:28:46 +01:00
Eric Fennis
5366782da0 Adding documentation about Global Styling (#1721)
* Add global styling docs

* Add global styling and filled icon docs

* Fix typos global-styling.md

* Update filled-icons.md
2023-12-24 13:29:05 +01:00
Jakob Guddas
262f9e8865 fix: made cp1 in preview absolute for smooth curves (#1739) 2023-12-24 13:28:53 +01:00
it-is-not
7af26002a0 add icons (#1222) 2023-12-24 12:53:44 +01:00
CokaKoala
e71a776acc Fixed export maps, types, and packaging for lucide-svelte (#1707)
* add extensions for `NodeNext` support

* fixed exports map and replaced the packaging system for `@sveltejs/pacakge`

* lockfile

* ignore generated `.svelte-kit` dir

* no longer needed

* fixed main export

* fixed IconNode and IconProps types

* have icon props extend svg attributes

* build script for prepending the license to each `dist` file

* Update packages/lucide-svelte/scripts/addLicense.mjs

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-24 12:45:57 +01:00
Jakob Guddas
0a69fb9e52 Fix gavel gap (#1744)
* Fix `gavel` gap

* Update gavel.json
2023-12-24 12:26:02 +01:00
Eric Fennis
3648e02992 Add cooking-pot icon (#1737)
Co-authored-by: Guillermo Angeles <guillermo.angeles@adoptaunabuelo.com>
2023-12-22 13:53:26 +01:00
Wojciech Maj
64504da1cd Add more tags (#1734) 2023-12-21 14:18:35 +01:00
Daniel Bayley
e166ba4e80 Add materials icons (#1407)
* Add `fence` icon

* Add `anvil` (metal) icon

* Add `brick-wall` icon

* Refine `anvil` icon

* Update icons/anvil.json

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

* Update icons/brick-wall.json

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

* Add `panel` icon

* Refine `brick-wall` icon

* Rename `panel` to `inspection-panel`

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-20 09:08:50 +01:00
Wojciech Maj
1123214b13 Add support for react-native-svg ^14.0.0 (#1732)
Closes #1722
2023-12-19 22:59:59 +01:00
Eric Fennis
4140ba5612 bumping up packages (#1728) 2023-12-18 12:04:42 +01:00
Jakob Guddas
019f38281c chore: pull-request workflow refactor (#1729)
* chore: pull-request workflow refactor

* chore: pull-request workflow refactor

* chore: pull-request workflow refactor
2023-12-18 11:03:17 +01:00
Bhargav Shirin Nalamati
633595d1c1 Update README.md (#1653) 2023-12-16 16:34:28 +01:00
Daniel Bayley
df58c3ff2f Add fire/safety/security/amenities icons (#1392)
* Add `fire-extinguisher` icon

* Add `smoke-alarm` icon

* Improve fire related metadata

* Add `fire-alarm` icon

* Add `cctv` icon

* Add `cctv-off` icon

* Update icons/fire-alarm.json

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

* Update icons/fire-alarm.json

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

* Rename `fire-alarm` to `bell-alarm`

* Refine `cctv` icons

* Optimise `bell-alarm` icon

* Rename `bell-alarm` to `bell-electric`

* Rename `smoke-alarm` to `alarm-smoke`

* Refine `alarm-smoke` icon

* Refine `cctv` icons

* Update icons/alarm-smoke.svg

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

* Update icons/cctv.svg

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

* Update icons/fire-extinguisher.svg

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

* update pr workflow

* update pr workflow

* add env

* remove cctv off icons

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-16 15:39:40 +01:00
Jakob Guddas
e7abba5273 feat: added renameIcon script (#1630)
* feat: added renameIcon script

* feat: added renameIcon script

* chore: converted renameIcon.sh to mjs

* refactor: cleanup

* Delete scripts/renameIcon.sh
2023-12-16 15:20:08 +01:00
Eric Fennis
2693da38d3 fix: update pr workflow 2023-12-15 16:31:19 +01:00
Jakob Guddas
ab59a1ec36 feat: added pointer-off icon (#1567) 2023-12-15 14:18:47 +01:00
Jakob Guddas
315c020279 Add squircle (#1293)
* Add `squircle`

* Create squircle.json

* Update squircle.svg

* Update icons/squircle.json

* Update squircle.json

* Update squircle.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-15 13:48:36 +01:00
James Vickery
494f7953c8 New icons: user-search and user-round-search (#1620)
* user-search and user-search-2 icons

* updated user-search icons

* Update icons/user-search.json

Co-authored-by: Jakob Guddas <github@jguddas.de>

* Update icons/user-search-2.json

Co-authored-by: Jakob Guddas <github@jguddas.de>

* Renamed user-search-2 to user-round-search.

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Karsa <contact@karsa.org>
2023-12-15 12:21:07 +01:00
Eric Fennis
a5ea3a5368 Set fail-fast: false, release workflow 2023-12-15 12:20:22 +01:00
Daniel Bayley
6486f76c55 Fix missing contributors (#1706) 2023-12-15 11:09:52 +01:00
Eric Fennis
e32db96f1f update workflow 2023-12-13 22:44:08 +01:00
Eric Fennis
73f70c885a Update pull-request.yml 2023-12-13 22:28:05 +01:00
618 changed files with 10077 additions and 7562 deletions

View File

@@ -7,4 +7,5 @@ node_modules
.eslintrc.js .eslintrc.js
docs/images docs/images
docs/guide/basics/examples docs/guide/basics/examples
docs/guide/advanced/examples
packages/lucide-react/dynamicIconImports.js packages/lucide-react/dynamicIconImports.js

View File

@@ -7,20 +7,12 @@ module.exports = {
node: true, node: true,
}, },
extends: ['airbnb-base', 'prettier'], extends: ['airbnb-base', 'prettier'],
plugins: ['import', 'prettier', '@html-eslint'], plugins: ['import', '@html-eslint'],
rules: { rules: {
'no-console': 'off', 'no-console': 'off',
'no-param-reassign': 'off', 'no-param-reassign': 'off',
'no-shadow': 'off', 'no-shadow': 'off',
'no-use-before-define': 'off', 'no-use-before-define': 'off',
'prettier/prettier': [
'error',
{
singleQuote: true,
trailingComma: 'all',
printWidth: 100
},
],
'import/no-extraneous-dependencies': [ 'import/no-extraneous-dependencies': [
'error', 'error',
{ devDependencies: ['**/*.test.js', '**/*.spec.js', './scripts/**'] }, { devDependencies: ['**/*.test.js', '**/*.spec.js', './scripts/**'] },
@@ -37,7 +29,7 @@ module.exports = {
}, },
parserOptions: { parserOptions: {
tsconfigRootDir: __dirname, tsconfigRootDir: __dirname,
project: ['./site/tsconfig.json', './packages/*/tsconfig.json'], project: ['./docs/tsconfig.json', './packages/*/tsconfig.json'],
ecmaVersion: 'latest', ecmaVersion: 'latest',
sourceType: 'module', sourceType: 'module',
}, },
@@ -46,7 +38,6 @@ module.exports = {
files: ['./icons/*.svg'], files: ['./icons/*.svg'],
parser: '@html-eslint/parser', parser: '@html-eslint/parser',
rules: { rules: {
'prettier/prettier': 'off',
'@html-eslint/require-doctype': 'off', '@html-eslint/require-doctype': 'off',
'@html-eslint/no-duplicate-attrs': 'error', '@html-eslint/no-duplicate-attrs': 'error',
'@html-eslint/no-inline-styles': 'error', '@html-eslint/no-inline-styles': 'error',

View File

@@ -9,16 +9,16 @@ inputs:
runs: runs:
using: "composite" using: "composite"
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-node@v3 - uses: actions/setup-node@v4
with: with:
node-version: 16 node-version: 16
- uses: pnpm/action-setup@v2.0.1 - uses: pnpm/action-setup@v2
name: Install pnpm name: Install pnpm
id: pnpm-install id: pnpm-install
with: with:
version: 7 version: 8
run_install: false run_install: false
- name: Get pnpm store directory - name: Get pnpm store directory

View File

@@ -9,16 +9,16 @@ inputs:
runs: runs:
using: "composite" using: "composite"
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-node@v3 - uses: actions/setup-node@v4
with: with:
node-version: 16 node-version: 16
- uses: pnpm/action-setup@v2.0.1 - uses: pnpm/action-setup@v2
name: Install pnpm name: Install pnpm
id: pnpm-install id: pnpm-install
with: with:
version: 7 version: 8
run_install: false run_install: false
- name: Get pnpm store directory - name: Get pnpm store directory

66
.github/labeler.yml vendored
View File

@@ -1,62 +1,92 @@
# For changed dependencies # For changed dependencies
📦 dependencies: 📦 dependencies:
- pnpm-lock.yaml - changed-files:
- any-glob-to-any-file:
- pnpm-lock.yaml
# For changes in documentation # For changes in documentation
📖 documentation: 📖 documentation:
- docs/*.md - changed-files:
- docs/**/*.md - any-glob-to-any-file:
- docs/*.md
- docs/**/*.md
# For changes in the site, but not markdown files # For changes in the site, but not markdown files
🌍 site: 🌍 site:
- 'docs/**' - changed-files:
- any-glob-to-any-file:
- 'docs/**'
# For changes in the metadata # For changes in the metadata
🫧 metadata: 🫧 metadata:
- 'icons/*.json' - changed-files:
- categories/* - any-glob-to-any-file:
- 'icons/*.json'
- categories/*
# For changes or added icons # For changes or added icons
🎨 icon: 🎨 icon:
- 'icons/*.svg' - changed-files:
- any-glob-to-any-file:
- 'icons/*.svg'
# For changes in the lucide package # For changes in the lucide package
🧳 lucide package: 🧳 lucide package:
- 'packages/lucide/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide/*'
# For changes in the lucide React package # For changes in the lucide React package
⚛️ react package: ⚛️ react package:
- 'packages/lucide-react/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-react/*'
# For changes in the lucide React Native package # For changes in the lucide React Native package
⚛️ react native package: ⚛️ react native package:
- 'packages/lucide-react-native/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-react-native/*'
# For changes in the lucide vue packages # For changes in the lucide vue packages
💎 vue package: 💎 vue package:
- 'packages/lucide-vue/*' - changed-files:
- 'packages/lucide-vue-next/*' - any-glob-to-any-file:
- 'packages/lucide-vue/*'
- 'packages/lucide-vue-next/*'
# For changes in the lucide angular package # For changes in the lucide angular package
🅰️ angular package: 🅰️ angular package:
- 'packages/lucide-angular/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-angular/*'
# For changes in the lucide preact package # For changes in the lucide preact package
⚛️ preact package: ⚛️ preact package:
- 'packages/lucide-preact/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-preact/*'
# For changes in the lucide svelte package # For changes in the lucide svelte package
🧣 svelte package: 🧣 svelte package:
- 'packages/lucide-svelte/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-svelte/*'
# For changes in the lucide solid package # For changes in the lucide solid package
🪝 solid package: 🪝 solid package:
- 'packages/lucide-solid/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-solid/*'
# For changes in the lucide static package # For changes in the lucide static package
🪨 static package: 🪨 static package:
- 'packages/lucide-static/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-static/*'
# For changes in the lucide flutter package # For changes in the lucide flutter package
🏹 flutter package: 🏹 flutter package:
- 'packages/lucide-flutter/*' - changed-files:
- any-glob-to-any-file:
- 'packages/lucide-flutter/*'

View File

@@ -15,11 +15,11 @@ jobs:
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }} VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -7,12 +7,11 @@ jobs:
stale: stale:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/stale@v3 - uses: actions/stale@v9
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-pr-message: This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 5 days. stale-pr-message: This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 5 days.
close-pr-message: This PR was closed because it has been stalled for 5 days with no activity. close-pr-message: This PR was closed because it has been stalled for 5 days with no activity.
close-pr-label: 🧶 stale close-pr-label: 🧶 stale
days-before-stale: 30 days-before-stale: 30
days-before-close: 5 days-before-close: -1
days-before-pr-close: -1

View File

@@ -9,4 +9,4 @@ jobs:
pull-requests: write pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/labeler@v4 - uses: actions/labeler@v5

View File

@@ -2,18 +2,18 @@ name: Linting
on: on:
pull_request: pull_request:
paths: branches:
- icons/** - '**'
jobs: jobs:
linting: linting:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -11,11 +11,11 @@ jobs:
lucide-angular: lucide-angular:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -11,11 +11,11 @@ jobs:
lucide-font: lucide-font:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'
@@ -30,7 +30,7 @@ jobs:
run: pnpm build:font run: pnpm build:font
- name: "Upload to Artifacts" - name: "Upload to Artifacts"
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v3
with: with:
name: lucide-font name: lucide-font
path: lucide-font path: lucide-font

View File

@@ -12,11 +12,11 @@ jobs:
lucide-preact: lucide-preact:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -12,11 +12,11 @@ jobs:
lucide-react-native: lucide-react-native:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -13,11 +13,11 @@ jobs:
lucide-react: lucide-react:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -12,11 +12,11 @@ jobs:
lucide-solid: lucide-solid:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -11,11 +11,11 @@ jobs:
lucide-static: lucide-static:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -12,11 +12,11 @@ jobs:
lucide-svelte: lucide-svelte:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -12,11 +12,11 @@ jobs:
lucide-vue-next: lucide-vue-next:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -12,11 +12,11 @@ jobs:
lucide-vue: lucide-vue:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -12,11 +12,11 @@ jobs:
lucide: lucide:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3.8.1 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'

View File

@@ -4,27 +4,55 @@ on:
pull_request_target: pull_request_target:
paths: paths:
- 'icons/*.svg' - 'icons/*.svg'
branches:
- main
- fix-icon-preview
jobs: jobs:
lint-contributors: lint-filenames:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
ref: refs/pull/${{ github.event.pull_request.number }}/merge ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Get changed files - name: Get changed files
id: changed-files id: changed-files
uses: tj-actions/changed-files@v35 uses: tj-actions/changed-files@v41
with: with:
files: icons/* files: icons/*
- uses: actions/setup-node@v3.8.1 - name: Generate annotations
run: node ./scripts/lintFilenames.mjs
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
lint-contributors:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v41
with:
files: icons/*
- uses: actions/setup-node@v4
- name: Install simple-git (safer and faster than installing all deps) - name: Install simple-git (safer and faster than installing all deps)
run: npm install simple-git run: npm install simple-git
- env: - name: Generate annotations
run: node ./scripts/updateContributors.mjs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FETCH_DEPTH: ${{ github.event.pull_request.commits }} FETCH_DEPTH: ${{ github.event.pull_request.commits }}
run: node ./scripts/updateContributors.mjs ${{ steps.changed-files.outputs.all_changed_files }} CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
- name: Generate annotations - name: Generate annotations
env: env:
ANNOTATION_SEVERITY: notice ANNOTATION_SEVERITY: notice
@@ -39,155 +67,43 @@ jobs:
# Example for the previous substitution # Example for the previous substitution
# input: +++ b/icons/accessibility.json%0A@@ -2,0 +3 @@%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A # input: +++ b/icons/accessibility.json%0A@@ -2,0 +3 @@%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A
# output: ::$ANNOTATION_SEVERITY file=icons/accessibility.json,line=2,endLine=3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A # output: ::$ANNOTATION_SEVERITY file=icons/accessibility.json,line=2,endLine=3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A
# - name: Fail if contributors have changed
# run: git diff --exit-code -- icons/*.json
add-changed-icons-comment: generate-changed-icons-comment:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: read
pull-requests: write pull-requests: write
contents: write
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
ref: refs/pull/${{ github.event.pull_request.number }}/merge ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Get changed files - name: Get changed files
id: changed-files id: changed-files
uses: tj-actions/changed-files@v35 uses: tj-actions/changed-files@v41
with: with:
files: icons/*.svg files: icons/*.svg
- name: Generate 24px dpi preview
id: generate-24px-dpi-preview
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/dpi/24/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate cohesion check random
id: generate-cohesion-check-random
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in $(printf "%s\\n" icons/*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate cohesion check squares
id: generate-cohesion-check-squares
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in $(printf "%s\\n" icons/*square*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 1px stroke-width
id: generate-1px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/1/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 2px stroke-width
id: generate-2px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 3px stroke-width
id: generate-3px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/3/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate X-rays
id: generate-x-rays
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img width=\"400\" title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/$(basename ${file//\.svg/})/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Find Comment - name: Find Comment
uses: peter-evans/find-comment@v2 uses: peter-evans/find-comment@v2
id: fc id: pr-comment
with: with:
issue-number: ${{ github.event.pull_request.number }} issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]' comment-author: 'github-actions[bot]'
body-includes: Added or changed icons body-includes: Added or changed icons
- name: Generate comment markup
run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> comment-markup.md
id: comment-markup
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
- name: Create or update comment - name: Create or update comment
uses: peter-evans/create-or-update-comment@v2 uses: peter-evans/create-or-update-comment@v3
with: with:
comment-id: ${{ steps.fc.outputs.comment-id }} comment-id: ${{ steps.pr-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }} issue-number: ${{ github.event.pull_request.number }}
body: | body-path: ./comment-markup.md
### Added or changed icons
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
<details>
<summary>Preview cohesion</summary>
${{ steps.generate-cohesion-check-squares.outputs.body }}<br/>
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
${{ steps.generate-cohesion-check-random.outputs.body }}<br/>
</details>
<details>
<summary>Preview stroke widths</summary>
${{ steps.generate-1px-stroke-width.outputs.body }}<br/>
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
${{ steps.generate-3px-stroke-width.outputs.body }}<br/>
</details>
<details>
<summary>DPI Preview (24px)</summary>
${{ steps.generate-24px-dpi-preview.outputs.body }}<br/>
</details>
<details>
<summary>Icon X-rays</summary>
${{ steps.generate-x-rays.outputs.body }}
</details>
edit-mode: replace edit-mode: replace

View File

@@ -39,6 +39,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-release needs: pre-release
strategy: strategy:
fail-fast: false
matrix: matrix:
package: [ package: [
'lucide', 'lucide',
@@ -52,11 +53,11 @@ jobs:
'lucide-svelte', 'lucide-svelte',
] ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'
@@ -84,12 +85,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [pre-release, lucide-font] needs: [pre-release, lucide-font]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/download-artifact@v2 - uses: actions/download-artifact@v3
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'
@@ -117,11 +118,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre-release needs: pre-release
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2 - uses: pnpm/action-setup@v2
with: with:
version: 8 version: 8
- uses: actions/setup-node@v3 - uses: actions/setup-node@v4
with: with:
node-version: 18 node-version: 18
cache: 'pnpm' cache: 'pnpm'
@@ -136,7 +137,7 @@ jobs:
run: pnpm build:font run: pnpm build:font
- name: "Upload to Artifacts" - name: "Upload to Artifacts"
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v3
with: with:
name: lucide-font name: lucide-font
path: lucide-font path: lucide-font
@@ -150,8 +151,8 @@ jobs:
] ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/download-artifact@v2 - uses: actions/download-artifact@v3
- name: Zip font and icons - name: Zip font and icons
run: | run: |
zip -r lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip lucide-font zip -r lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip lucide-font

View File

@@ -4,7 +4,6 @@ stats
node_modules node_modules
tests tests
scripts scripts
site
src src
build build
babel.config.js babel.config.js

16
.prettierignore Normal file
View File

@@ -0,0 +1,16 @@
pnpm-lock.yaml
# lucide-angular
packages/lucide-angular/.angular/cache
# lucide-static
packages/lucide-static/icons
packages/lucide-static/lib
packages/lucide-static/sprite.svg
packages/lucide-static/tags.json
packages/lucide-static/icon-nodes.json
packages/lucide-static/font
# lucide-svelte
packages/lucide-svelte/src/icons/*.svelte
packages/lucide-svelte/.svelte-kit

View File

@@ -50,7 +50,7 @@ Seperate them by two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:. Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:.
If the icon has not already been requested, [create an issue](https://github.com/lucide-icons/lucide/issues/new?title=Icon%20Request:) with a title of `Icon request: <icon name>` and add as much information as possible. If the icon has not already been requested, [create an icon request issue](https://github.com/lucide-icons/lucide/issues/new?assignees=&labels=%F0%9F%99%8C+icon+request&projects=&template=01_icon_request.yml) and add as much information as possible.
### Icon Requests from Feather ### Icon Requests from Feather
@@ -72,8 +72,8 @@ pnpm install # Install dependencies, including the workspace packages
To distribute different packages we use PNPM workspaces. Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/lang/enhttps://lucide.dev/docs/workspaces). To distribute different packages we use PNPM workspaces. Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/lang/enhttps://lucide.dev/docs/workspaces).
The configured directory for workspaces is the [packages](./packages) directory, located in the root directory. There you will find all the current packages from lucide. The configured directory for workspaces is the [packages](https://github.com/lucide-icons/lucide/tree/main/packages) directory, located in the root directory. There you will find all the current packages from lucide.
There are more workspaces defined, see [`pnpm-workspace.yaml`](./pnpm-workspace.yaml). There are more workspaces defined, see [`pnpm-workspace.yaml`](https://github.com/lucide-icons/lucide/blob/main/pnpm-workspace.yaml).
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing. > Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing.
@@ -144,16 +144,19 @@ Root directories
```sh ```sh
lucide lucide
|
├── docs ├── docs
│ ├── guide
├── icons ├── icons
├── packages ├── packages
── scripts ── scripts
└── site
``` ```
### Docs ### Docs
The lucide.dev website is using [vitepress](https://vitepress.dev/) to generate the static website. The markdown files are located in the docs directory.
### Guides
Detailed documentation about: installation, guides, packages, design guides etc. Detailed documentation about: installation, guides, packages, design guides etc.
### Icons ### Icons
@@ -170,10 +173,6 @@ Includes all the (npm) packages of lucide.
Includes usefully scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json. Includes usefully scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.
### site
The lucide.dev website is using [vitepress](https://vitepress.dev/) to generate the static website. The markdown files are located in the docs directory.
## Documentation ## Documentation
The documentation files are located in the [docs](https://github.com/lucide-icons/lucide/tree/main/docs) directory. All these markdown files will be loaded in the build of the lucide.dev website. The documentation files are located in the [docs](https://github.com/lucide-icons/lucide/tree/main/docs) directory. All these markdown files will be loaded in the build of the lucide.dev website.

View File

@@ -11,7 +11,7 @@
Community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons. Community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
It began after growing disaffection with the [Feather Icons](https://github.com/feathericons/feather) project moderation. With over 300+ open issues and over 100+ open PRs, the Feather Icons project has been abandoned. This unfortunately means that hundreds of developers and designers wasted their time contributing to Feather Icons with no chance of PRs being accepted. It began after growing dissatisfaction with the [Feather Icons](https://github.com/feathericons/feather) project moderation. With over 300+ open issues and over 100+ open PRs, the Feather Icons project has been abandoned. This unfortunately means that hundreds of developers and designers wasted their time contributing to Feather Icons with no chance of PRs being accepted.
Lucide is trying to expand the icon set as much as possible while staying faithful to the original simplistic design language. We do this as a community of devs and designers and hope that you'll join us! Lucide is trying to expand the icon set as much as possible while staying faithful to the original simplistic design language. We do this as a community of devs and designers and hope that you'll join us!

View File

@@ -1,5 +1,5 @@
{ {
"$schema": "../category.schema.json", "$schema": "../category.schema.json",
"title": "File icons", "title": "File icons",
"icon": "layout" "icon": "panels-top-left"
} }

View File

@@ -1,5 +1,5 @@
{ {
"$schema": "../category.schema.json", "$schema": "../category.schema.json",
"title": "Layout", "title": "Layout",
"icon": "layout" "icon": "panels-top-left"
} }

View File

@@ -183,18 +183,40 @@ const Radii = ({
>) => { >) => {
return ( return (
<g className="svg-preview-radii-group" {...props}> <g className="svg-preview-radii-group" {...props}>
{paths {paths.map(
.filter(({ circle }) => circle) ({ c, prev, next, circle }, i) =>
.map(({ c, prev, next, circle: { x, y, r } }) => circle && (
c.name === 'circle' ? ( <React.Fragment key={i}>
<path d={`M${x} ${y}h.01`} /> {c.name !== "circle" && (
) : ( <path
<> d={`M${prev.x} ${prev.y} ${circle.x} ${circle.y} ${next.x} ${next.y}`}
<path d={`M${prev.x} ${prev.y} ${x} ${y} ${next.x} ${next.y}`} /> />
<circle cy={y} cx={x} r={r} /> )}
</> <circle
) cy={circle.y}
)} cx={circle.x}
r={0.25}
strokeDasharray="0"
stroke={
(Math.round(circle.x * 100) / 100) % 1 !== 0 ||
(Math.round(circle.y * 100) / 100) % 1 !== 0
? "red"
: undefined
}
/>
<circle
cy={circle.y}
cx={circle.x}
r={circle.r}
stroke={
(Math.round(circle.r * 1000) / 1000) % 1 !== 0
? "red"
: undefined
}
/>
</React.Fragment>
),
)}
</g> </g>
); );
}; };

View File

@@ -151,7 +151,7 @@ export const getPaths = (src: string) => {
y2: c.y2, y2: c.y2,
})}`, })}`,
{ {
cp1: reflectedCp1, cp1: { x: prev.x - reflectedCp1.x, y: prev.y - reflectedCp1.y },
cp2: { x: c.x2, y: c.y2 }, cp2: { x: c.x2, y: c.y2 },
} }
); );

View File

@@ -28,33 +28,35 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
] ]
}, },
// TODO: Add this section // TODO: Add this section
// { {
// text: 'Advanced', text: 'Advanced',
// items: [ items: [
// { // {
// text: 'Accessibility', // text: 'Accessibility',
// link: '/guide/advanced/accessibility' // link: '/guide/advanced/accessibility'
// }, // },
// { {
// text: 'Global styling', text: 'Global styling',
// }, link: '/guide/advanced/global-styling'
// { },
// text: 'Animations', // {
// }, // text: 'Animations',
// { // },
// text: 'Filled icons', {
// }, text: 'Filled icons',
// { link: '/guide/advanced/filled-icons'
// text: 'Combining icons', },
// }, // {
// { // text: 'Combining icons',
// text: 'Dynamic imports' // },
// }, // {
// // { // text: 'Dynamic imports'
// // text: 'Auto importing' // },
// // }, // {
// ] // text: 'Auto importing'
// }, // },
]
},
{ {
text: 'Packages', text: 'Packages',
items: [ items: [
@@ -72,10 +74,6 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
}, },
{ {
text: 'Lucide Vue', text: 'Lucide Vue',
link: '/guide/packages/lucide-vue'
},
{
text: 'Lucide Vue Next (Vue 3)',
link: '/guide/packages/lucide-vue-next' link: '/guide/packages/lucide-vue-next'
}, },
{ {
@@ -98,10 +96,6 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
text: 'Lucide Static', text: 'Lucide Static',
link: '/guide/packages/lucide-static' link: '/guide/packages/lucide-static'
}, },
{
text: 'Lucide Flutter',
link: '/guide/packages/lucide-flutter'
},
] ]
}, },
{ {

View File

@@ -9,8 +9,6 @@ const props = defineProps<{
}>() }>()
const component = computed(() => props.href ? 'a' : 'div') const component = computed(() => props.href ? 'a' : 'div')
</script> </script>
<template> <template>
@@ -25,7 +23,7 @@ const component = computed(() => props.href ? 'a' : 'div')
</template> </template>
<style> <style>
.badge, a.badge { .badge, a.badge, .vp-doc a.badge {
display: block; display: block;
border: 1px solid transparent; border: 1px solid transparent;
text-align: center; text-align: center;
@@ -60,4 +58,6 @@ const component = computed(() => props.href ? 'a' : 'div')
/* color: var(--vp-button-alt-active-text); /* color: var(--vp-button-alt-active-text);
background-color: var(--vp-button-alt-active-bg); */ background-color: var(--vp-button-alt-active-bg); */
} }
</style> </style>

View File

@@ -94,8 +94,7 @@ const ChevronUp = createLucideIcon('ChevronUp', chevronUp)
.menu { .menu {
position: relative; position: relative;
} }
.menu-items { ul.menu-items {
--menu-offset: 44px;
position: absolute; position: absolute;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -103,7 +102,7 @@ const ChevronUp = createLucideIcon('ChevronUp', chevronUp)
padding: 12px; padding: 12px;
min-width: 128px; min-width: 128px;
border: 1px solid var(--vp-c-divider); border: 1px solid var(--vp-c-divider);
background-color: var(--vp-c-bg); background-color: var(--vp-c-bg-elv);
box-shadow: var(--vp-shadow-3); box-shadow: var(--vp-shadow-3);
transition: background-color 0.5s; transition: background-color 0.5s;
max-height: calc(100vh - var(--vp-nav-height)); max-height: calc(100vh - var(--vp-nav-height));
@@ -124,11 +123,12 @@ const ChevronUp = createLucideIcon('ChevronUp', chevronUp)
color: var(--vp-c-text-1); color: var(--vp-c-text-1);
white-space: nowrap; white-space: nowrap;
transition: background-color .25s,color .25s; transition: background-color .25s,color .25s;
list-style: none;
} }
.menu-item:hover { .menu-item:hover {
color: var(--vp-c-brand); color: var(--vp-c-brand);
background-color: var(--vp-c-bg-elv-mute); background-color: var(--vp-c-default-soft);
} }
.menu-item:active { .menu-item:active {
@@ -170,11 +170,11 @@ const ChevronUp = createLucideIcon('ChevronUp', chevronUp)
} }
.menu-items.bottom { .menu-items.bottom {
top: var(--menu-offset); top: 32px;
} }
.menu-items.top { .menu-items.top {
bottom: var(--menu-offset); bottom: 48px;
} }
.arrow-up-button.top::before { .arrow-up-button.top::before {

View File

@@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, defineProps, onMounted } from 'vue' import { computed, onMounted } from 'vue'
const props = defineProps<{ const props = defineProps<{
groups: string[] | undefined, groups: string[] | undefined,
groupName: string, groupName: string,

View File

@@ -17,7 +17,7 @@ const SearchIcon = createLucideIcon('search', search)
background: var(--vp-c-bg-soft); background: var(--vp-c-bg-soft);
border-radius: 8px; border-radius: 8px;
color: var(--vp-c-text-2); color: var(--vp-c-text-2);
padding: 12px 16px; padding: 11px 16px;
height: auto; height: auto;
font-size: 14px; font-size: 14px;
/* box-shadow: var(--vp-shadow-4), var(--vp-shadow-2); */ /* box-shadow: var(--vp-shadow-4), var(--vp-shadow-2); */

View File

@@ -1,5 +1,4 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted } from 'vue';
import { useCategoryView } from '../../composables/useCategoryView'; import { useCategoryView } from '../../composables/useCategoryView';
interface Header { interface Header {

View File

@@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, ref } from 'vue'; import { computed } from 'vue';
import { startCase, camelCase } from 'lodash-es' import { startCase, camelCase } from 'lodash-es'
import ButtonMenu from '../base/ButtonMenu.vue' import ButtonMenu from '../base/ButtonMenu.vue'
import { useIconStyleContext } from '../../composables/useIconStyle'; import { useIconStyleContext } from '../../composables/useIconStyle';

View File

@@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import type { IconEntity } from '../../types' import type { IconEntity } from '../../types'
import { computed, ref, watch } from 'vue' import { computed } from 'vue'
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon'; import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
import IconButton from '../base/IconButton.vue'; import IconButton from '../base/IconButton.vue';
import IconContributors from './IconContributors.vue'; import IconContributors from './IconContributors.vue';

View File

@@ -19,7 +19,11 @@ function setActiveIcon(name: string) {
<template> <template>
<div class="icons"> <div class="icons">
<div class="icon" v-for="icon in icons" :key="icon.name"> <div
class="icon"
v-for="icon in icons"
:key="icon.name"
>
<IconItem <IconItem
v-bind="icon" v-bind="icon"
@setActiveIcon="setActiveIcon(icon.name)" @setActiveIcon="setActiveIcon(icon.name)"

View File

@@ -1,4 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from 'vue';
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon'; import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
import { useMediaQuery } from '@vueuse/core'; import { useMediaQuery } from '@vueuse/core';
import { useRouter } from 'vitepress'; import { useRouter } from 'vitepress';
@@ -27,7 +28,10 @@ const showOverlay = useMediaQuery('(min-width: 860px)');
const { animate, confetti, confettiText } = useConfetti() const { animate, confetti, confettiText } = useConfetti()
const icon = createLucideIcon(props.name, props.iconNode) const icon = computed(() => {
if (!props.name || !props.iconNode) return null
return createLucideIcon(props.name, props.iconNode)
})
async function navigateToIcon(event) { async function navigateToIcon(event) {

View File

@@ -6,7 +6,6 @@ import InputSearch from '../base/InputSearch.vue';
import useSearchInput from '../../composables/useSearchInput'; import useSearchInput from '../../composables/useSearchInput';
import StickyBar from './StickyBar.vue'; import StickyBar from './StickyBar.vue';
import IconsCategory from './IconsCategory.vue'; import IconsCategory from './IconsCategory.vue';
import { useFetch } from '@vueuse/core';
import useFetchTags from '../../composables/useFetchTags'; import useFetchTags from '../../composables/useFetchTags';
import useFetchCategories from '../../composables/useFetchCategories'; import useFetchCategories from '../../composables/useFetchCategories';

View File

@@ -33,13 +33,11 @@ const props = defineProps<{
:href="packageData.documentation" :href="packageData.documentation"
text="Guide" text="Guide"
theme="brand" theme="brand"
@click="go(packageData.documentation)"
/> />
<VPButton <VPButton
:href="packageData.source" :href="packageData.source"
text="Source" text="Source"
theme="alt" theme="alt"
@click="go(packageData.source)"
/> />
</footer> </footer>
</Card> </Card>

View File

@@ -3,12 +3,8 @@ import { nextTick, onMounted, ref, watch } from 'vue';
const useSearchInput = () => { const useSearchInput = () => {
const searchInput = ref(); const searchInput = ref();
const searchQuery = ref( const searchQuery = ref<string>('');
typeof window === 'undefined' const searchQueryDebounced = useDebounce<string>(searchQuery, 200);
? ''
: new URLSearchParams(window.location.search).get('search') || ''
);
const searchQueryDebounced = useDebounce(searchQuery, 250);
watch(searchQueryDebounced, (searchString) => { watch(searchQueryDebounced, (searchString) => {
const newUrl = new URL(window.location.href); const newUrl = new URL(window.location.href);
@@ -26,6 +22,11 @@ const useSearchInput = () => {
onMounted(() => { onMounted(() => {
const searchParams = new URLSearchParams(window.location.search); const searchParams = new URLSearchParams(window.location.search);
if (searchParams.has('search')) {
searchQuery.value = searchParams.get('search');
}
if (searchParams.has('focus')) { if (searchParams.has('focus')) {
searchInput.value.focus(); searchInput.value.focus();
} }

View File

@@ -153,6 +153,10 @@ html:has(* .outline-link:target) {
scroll-behavior: smooth; scroll-behavior: smooth;
} */ } */
.sp-wrapper + * {
margin-top: 24px;
}
.sp-wrapper .sp-layout { .sp-wrapper .sp-layout {
border-radius: 8px; border-radius: 8px;
} }

View File

@@ -0,0 +1,23 @@
import { Star, StarHalf } from "lucide-react";
import "./icon.css";
function App() {
return (
<div className="app">
<div className="star-rating">
<div className="stars">
{ Array.from({ length: 5 }, () => (
<Star fill="#111" strokeWidth={0} />
))}
</div>
<div className="stars rating">
<Star fill="yellow" strokeWidth={0} />
<Star fill="yellow" strokeWidth={0} />
<StarHalf fill="yellow" strokeWidth={0} />
</div>
</div>
</div>
);
}
export default App;

View File

@@ -0,0 +1,20 @@
import App from './App.js?raw'
import styles from '../../../basics/examples/styles.css?raw'
import IconCss from './icon.css?raw'
const files = {
'App.js': {
code: App,
active: true,
},
'icon.css': {
code: IconCss,
readOnly: false,
},
'styles.css': {
code: styles,
hidden: true
},
}
export default files

View File

@@ -0,0 +1,14 @@
.star-rating {
position: relative;
}
.stars {
display: flex;
gap: 4px;
}
.rating {
position: absolute;
top: 0;
}

View File

@@ -0,0 +1,30 @@
import {
TentTree,
Caravan,
FlameKindling,
MountainSnow,
Trees,
Axe,
Map,
CloudMoon,
Sparkles,
} from "lucide-react";
import "./icon.css";
function App() {
return (
<div className="app">
<TentTree />
<Caravan />
<FlameKindling />
<MountainSnow />
<Trees />
<Axe />
<Map />
<CloudMoon />
<Sparkles />
</div>
);
}
export default App;

View File

@@ -0,0 +1,20 @@
import App from './App.js?raw'
import styles from '../../../basics/examples/styles.css?raw'
import IconCss from './icon.css?raw'
const files = {
'icon.css': {
code: IconCss,
readOnly: false,
active: true,
},
'App.js': {
code: App,
},
'styles.css': {
code:styles,
hidden: true
},
}
export default files

View File

@@ -0,0 +1,16 @@
.lucide {
width: 48px;
height: 48px;
stroke-width: 1.5;
}
.lucide * {
vector-effect: non-scaling-stroke;
}
.app {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
gap: 6px;
}

View File

@@ -0,0 +1,30 @@
import {
CakeSlice,
Candy,
Apple,
Cookie,
Martini,
IceCream2,
Sandwich,
Wine,
Dessert,
} from "lucide-react";
import "./icon.css";
function App() {
return (
<div className="app">
<CakeSlice />
<Candy />
<Apple />
<Cookie />
<Martini />
<IceCream2 />
<Sandwich />
<Wine />
<Dessert />
</div>
);
}
export default App;

View File

@@ -0,0 +1,20 @@
import App from './App.js?raw'
import styles from '../../../basics/examples/styles.css?raw'
import IconCss from './icon.css?raw'
const files = {
'icon.css': {
code: IconCss,
readOnly: false,
active: true,
},
'App.js': {
code: App,
},
'styles.css': {
code:styles,
hidden: true
},
}
export default files

View File

@@ -0,0 +1,14 @@
.lucide {
/* Change this! */
color: #ffadff;
width: 56px;
height: 56px;
stroke-width: 1px;
}
.app {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
gap: 6px;
}

View File

@@ -1,3 +1,9 @@
<script setup>
import { Sandpack } from 'sandpack-vue3'
import sandpackTheme from '../../.vitepress/theme/sandpackTheme.json'
import sizeIconExample from './examples/filled-icon-example/files.ts'
</script>
# Filled Icons # Filled Icons
Fills are officially not supported. Fills are officially not supported.
@@ -5,9 +11,21 @@ However, all SVG properties are available on all icons.
Fill can still be used and will work fine on certain icons. Fill can still be used and will work fine on certain icons.
Example with stars: Example with stars:
<Sandpack
<!-- Code Example with stars --> template="react"
:theme="sandpackTheme"
:files="sizeIconExample"
:customSetup='{
dependencies: {
"lucide-react": "latest"
}
}'
:options="{
editorHeight: 480,
editorWidthPercentage: 60,
}"
/>
## Will Lucide have fills in the future? ## Will Lucide have fills in the future?
This feature is requested several times and discussion is happening at: [#458](https://github.com/lucide-icons/lucide/discussions/458). This feature has been requested several times and discussion is happening at [#458](https://github.com/lucide-icons/lucide/discussions/458).

View File

@@ -0,0 +1,55 @@
<script setup>
import { Sandpack } from 'sandpack-vue3'
import sandpackTheme from '../../.vitepress/theme/sandpackTheme.json'
import globalIconCssExample from './examples/global-styling-css-example/files.ts'
import globalAbsoluteStrokewidthExample from './examples/global-styling-absolute-strokewidth-example/files.ts'
</script>
# Global Styling
Adjusting icons can be done by [color](../basics/color.md), [size](../basics/sizing.md) and [stroke width](../basics/stroke-width.md).
By default, all icons have a **color** value of `currentColor`, a **size** value of `24px`, and a **stroke width** of `2`. Styling icons individually can be done by passing props to the icon component.
## Style by using CSS
Styling icons is easy to accomplish using CSS.
Every icon has a class attribute applied called `lucide`. This class name can be used in the CSS file to target all icons that are being used within the app.
- The **color** of the icons can be changed using the [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color) CSS property.
- The **size** of the icons can be changed using [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width) and [`height`](https://developer.mozilla.org/en-US/docs/Web/CSS/height) CSS properties.
- The **stroke width** of the icons can be changed using the [`stroke-width`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width) CSS property.
<Sandpack
template="react"
:theme="sandpackTheme"
:files="globalIconCssExample"
:customSetup='{
dependencies: {
"lucide-react": "latest"
}
}'
:options="{
editorHeight: 300,
}"
/>
### Absolute stroke width
For global absolute stroke width styling the `vector-effect: non-scaling-stroke` CSS property can be applied to the children. This will keep the stroke-width the same size no matter the size of the icon. See [absolute-stroke-width](../basics/stroke-width.md#absolute-stroke-width) for more info.
<Sandpack
template="react"
:theme="sandpackTheme"
:files="globalAbsoluteStrokewidthExample"
:customSetup='{
dependencies: {
"lucide-react": "latest"
}
}'
:options="{
editorHeight: 300,
}"
/>

View File

@@ -4,7 +4,7 @@ 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` (version between 12 and 14) installed. Then, install the package:
::: code-group ::: code-group
@@ -72,7 +72,7 @@ The example below imports all ES Modules, so exercise caution when using it. Imp
### Icon Component Example ### Icon Component Example
```jsx ```jsx
import { icons } from 'lucide-react'; import { icons } from 'lucide-react-native';
const Icon = ({ name, color, size }) => { const Icon = ({ name, color, size }) => {
const LucideIcon = icons[name]; const LucideIcon = icons[name];

View File

@@ -109,7 +109,8 @@ Example with React suspense:
```tsx ```tsx
import React, { lazy, Suspense } from 'react'; import React, { lazy, Suspense } from 'react';
import { dynamicIconImports, LucideProps } from 'lucide-react'; import { LucideProps } from 'lucide-react';
import dynamicIconImports from 'lucide-react/dynamicIconImports';
const fallback = <div style={{ background: '#ddd', width: 24, height: 24 }}/> const fallback = <div style={{ background: '#ddd', width: 24, height: 24 }}/>

View File

@@ -48,14 +48,24 @@ Additional props can be passed to adjust the icon:
<Camera color="#ff3e98" /> <Camera color="#ff3e98" />
``` ```
For faster builds and load times, you can import icons directly from the `lucide-svelte/icons` directory:
```svelte
<script>
import AlertCircle from 'lucide-svelte/icons/alert-circle';
</script>
<AlertCircle color="#ff3e98" />
```
## 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 |
| `absoluteStrokeWidth` | *boolean* | false | | `absoluteStrokeWidth` | _boolean_ | false |
### Applying props ### Applying props
@@ -71,6 +81,91 @@ To customize the appearance of an icon, you can pass custom properties as props
This results a filled phone icon. This results a filled phone icon.
## Types
The package includes type definitions for all icons. This is useful if you want to dynamically load icons with the `svelte:component` directive whether you are using TypeScript or JSDoc.
### TypeScript Example
```svelte
<script lang="ts">
import Home from 'lucide-svelte/icons/home';
import Library from 'lucide-svelte/icons/library';
import Cog from 'lucide-svelte/icons/cog';
import type { ComponentType } from 'svelte';
import type { Icon } from 'lucide-svelte';
type MenuItem = {
name: string;
href: string;
icon: ComponentType<Icon>;
}
const menuItems: MenuItem[] = [
{
name: 'Home',
href: '/',
icon: Home,
},
{
name: 'Blog',
href: '/blog',
icon: Library,
},
{
name: 'Projects',
href: '/projects',
icon: Cog,
}
];
</script>
{#each menuItems as item}
<a href={item.href}>
<svelte:component this={item.icon} />
<span>{item.name}</span>
</a>
{/each}
```
### JSDoc Example
```svelte
<script>
import Home from 'lucide-svelte/icons/home';
import Library from 'lucide-svelte/icons/library';
import Cog from 'lucide-svelte/icons/cog';
/**
* @typedef {Object} MenuItem
* @property {string} name
* @property {string} href
* @property {import('svelte').ComponentType<import('lucide-svelte').Icon>} icon
*/
/** @type {MenuItem[]} */
const menuItems = [
{
name: 'Home',
href: '/',
icon: Home,
},
{
name: 'Blog',
href: '/blog',
icon: Library,
},
{
name: 'Projects',
href: '/projects',
icon: Cog,
}
];
</script>
```
For more details about typing the `svelte:component` directive, see the [Svelte documentation](https://svelte.dev/docs/typescript#types-componenttype).
## One generic icon component ## One generic icon component
It is possible to create one generic icon component to load icons, but it is not recommended. It is possible to create one generic icon component to load icons, but it is not recommended.
@@ -99,4 +194,3 @@ The example below imports all ES Modules, so exercise caution when using it. Imp
<LucideIcon name="Menu" /> <LucideIcon name="Menu" />
``` ```

View File

@@ -1,5 +1,6 @@
--- ---
aside: false aside: false
editLink: false
--- ---
# Lucide License # Lucide License

View File

@@ -2,7 +2,7 @@ import copy from 'rollup-plugin-copy';
import replace from '@rollup/plugin-replace'; import replace from '@rollup/plugin-replace';
export default defineNitroConfig({ export default defineNitroConfig({
preset: 'vercel-edge', preset: 'vercel_edge',
srcDir: '.vitepress', srcDir: '.vitepress',
routeRules: { routeRules: {
'/api/**': { cors: false }, '/api/**': { cors: false },

View File

@@ -5,8 +5,8 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"docs:dev": "pnpm prebuild && vitepress dev", "docs:dev": "pnpm run /^prebuild:.*/ && vitepress dev",
"docs:build": "vitepress build", "docs:build": "pnpm run /^prebuild:.*/ && vitepress build",
"docs:preview": "vitepress preview", "docs:preview": "vitepress preview",
"build:docs": "vitepress build", "build:docs": "vitepress build",
"prebuild:iconNodes": "node ../scripts/writeIconNodes.mjs", "prebuild:iconNodes": "node ../scripts/writeIconNodes.mjs",
@@ -16,9 +16,9 @@
"prebuild:iconDetails": "node ../scripts/writeIconDetails.mjs", "prebuild:iconDetails": "node ../scripts/writeIconDetails.mjs",
"postbuild:vercelJson": "node ../scripts/writeVercelOutput.mjs", "postbuild:vercelJson": "node ../scripts/writeVercelOutput.mjs",
"dev": "npx nitropack dev", "dev": "npx nitropack dev",
"prebuild:api": "npx nitropack prepare",
"build:api": "npx nitropack build", "build:api": "npx nitropack build",
"prebuild": "pnpm prebuild:iconNodes && pnpm prebuild:metaJson && pnpm prebuild:releaseJson && pnpm prebuild:relatedIcons && pnpm prebuild:iconDetails", "build": "pnpm run /^prebuild:.*/ && pnpm run /^build:.*/ && pnpm postbuild:vercelJson",
"build": "pnpm prebuild && pnpm build:api && pnpm build:docs && pnpm postbuild:vercelJson",
"preview": "node .output/server/index.mjs" "preview": "node .output/server/index.mjs"
}, },
"author": "Eric Fennis", "author": "Eric Fennis",
@@ -27,17 +27,17 @@
"@rollup/plugin-replace": "^5.0.2", "@rollup/plugin-replace": "^5.0.2",
"@types/semver": "^7.5.3", "@types/semver": "^7.5.3",
"h3": "^1.8.0", "h3": "^1.8.0",
"nitropack": "npm:nitropack-edge@latest", "nitropack": "2.8.1",
"node-fetch": "2", "node-fetch": "2",
"rollup-plugin-copy": "^3.4.0", "rollup-plugin-copy": "^3.4.0",
"vitepress": "1.0.0-rc.30" "vitepress": "1.0.0-rc.36"
}, },
"dependencies": { "dependencies": {
"@floating-ui/vue": "^1.0.1", "@floating-ui/vue": "^1.0.3",
"@headlessui/vue": "^1.7.13", "@headlessui/vue": "^1.7.17",
"@resvg/resvg-wasm": "^2.4.1", "@resvg/resvg-wasm": "^2.4.1",
"@vueuse/components": "^10.1.0", "@vueuse/components": "^10.7.2",
"@vueuse/core": "^10.1.0", "@vueuse/core": "^10.7.2",
"element-to-path": "^1.2.1", "element-to-path": "^1.2.1",
"fuse.js": "^6.5.3", "fuse.js": "^6.5.3",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
@@ -48,13 +48,13 @@
"lucide-vue-next": "workspace:*", "lucide-vue-next": "workspace:*",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"sandpack-vue3": "^3.1.6", "sandpack-vue3": "3.1.8",
"semver": "^7.5.2", "semver": "^7.5.2",
"shikiji": "^0.7.4", "shikiji": "^0.7.4",
"simple-git": "^3.18.0", "simple-git": "^3.18.0",
"sitemap": "^7.1.1", "sitemap": "^7.1.1",
"svg-pathdata": "^6.0.3", "svg-pathdata": "^6.0.3",
"svgson": "^5.2.1", "svgson": "^5.2.1",
"vue": "^3.2.47" "vue": "^3.4.13"
} }
} }

View File

@@ -35,5 +35,16 @@
"destination": "/icons", "destination": "/icons",
"permanent": false "permanent": false
} }
],
"headers": [
{
"source": "/assets/:path*",
"headers": [
{
"key": "Cache-Control",
"value": "cache-control: public, max-age=31536000, immutable"
}
]
}
] ]
} }

View File

@@ -47,6 +47,10 @@
}, },
"minItems": 1, "minItems": 1,
"uniqueItems": true "uniqueItems": true
},
"deprecated": {
"type": "boolean",
"default": false
} }
}, },
"description": "A JSON Schema for icons defined by Lucide Icons." "description": "A JSON Schema for icons defined by Lucide Icons."

20
icons/a-arrow-down.json Normal file
View File

@@ -0,0 +1,20 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"it-is-not",
"jguddas",
"danielbayley",
"ericfennis"
],
"tags": [
"letter",
"font size",
"text",
"formatting",
"smaller"
],
"categories": [
"text",
"design"
]
}

16
icons/a-arrow-down.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="M3.5 13h6" />
<path d="m2 16 4.5-9 4.5 9" />
<path d="M18 7v9" />
<path d="m14 12 4 4 4-4" />
</svg>

After

Width:  |  Height:  |  Size: 318 B

21
icons/a-arrow-up.json Normal file
View File

@@ -0,0 +1,21 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"it-is-not",
"jguddas",
"danielbayley",
"ericfennis"
],
"tags": [
"letter",
"font size",
"text",
"formatting",
"larger",
"bigger"
],
"categories": [
"text",
"design"
]
}

16
icons/a-arrow-up.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="M3.5 13h6" />
<path d="m2 16 4.5-9 4.5 9" />
<path d="M18 16V7" />
<path d="m14 11 4-4 4 4" />
</svg>

After

Width:  |  Height:  |  Size: 319 B

19
icons/a-large-small.json Normal file
View File

@@ -0,0 +1,19 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"it-is-not",
"jguddas",
"danielbayley",
"ericfennis"
],
"tags": [
"letter",
"font size",
"text",
"formatting"
],
"categories": [
"text",
"design"
]
}

16
icons/a-large-small.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="M21 14h-5" />
<path d="M16 16v-3.5a2.5 2.5 0 0 1 5 0V16" />
<path d="M4.5 13h6" />
<path d="m3 16 4.5-9 4.5 9" />
</svg>

After

Width:  |  Height:  |  Size: 338 B

View File

@@ -13,5 +13,8 @@
"devices", "devices",
"notifications", "notifications",
"time" "time"
],
"aliases": [
"alarm-minus"
] ]
} }

View File

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 380 B

View File

@@ -13,5 +13,8 @@
"devices", "devices",
"notifications", "notifications",
"time" "time"
],
"aliases": [
"alarm-plus"
] ]
} }

View File

Before

Width:  |  Height:  |  Size: 404 B

After

Width:  |  Height:  |  Size: 404 B

21
icons/alarm-smoke.json Normal file
View File

@@ -0,0 +1,21 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [
"fire",
"alert",
"warning",
"detector",
"carbon monoxide",
"safety",
"equipment",
"amenities"
],
"categories": [
"home",
"devices",
"travel"
]
}

17
icons/alarm-smoke.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M4 8a2 2 0 0 1-2-2V3h20v3a2 2 0 0 1-2 2Z" />
<path d="m19 8-.8 3c-.1.6-.6 1-1.2 1H7c-.6 0-1.1-.4-1.2-1L5 8" />
<path d="M16 21c0-2.5 2-2.5 2-5" />
<path d="M11 21c0-2.5 2-2.5 2-5" />
<path d="M6 21c0-2.5 2-2.5 2-5" />
</svg>

After

Width:  |  Height:  |  Size: 445 B

22
icons/anvil.json Normal file
View File

@@ -0,0 +1,22 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [
"metal",
"iron",
"alloy",
"materials",
"heavy",
"weight",
"blacksmith",
"forge",
"acme"
],
"categories": [
"buildings",
"tools",
"gaming"
]
}

17
icons/anvil.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M7 10c-2.8 0-5-2.2-5-5h5" />
<path d="M7 4v8h7a8 8 0 0 0 8-8Z" />
<path d="M9 12v5" />
<path d="M15 12v5" />
<path d="M5 20a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v1H5Z" />
</svg>

After

Width:  |  Height:  |  Size: 390 B

View File

@@ -6,7 +6,10 @@
], ],
"tags": [ "tags": [
"camera", "camera",
"photo" "photo",
"pictures",
"shutter",
"exposure"
], ],
"categories": [ "categories": [
"photography" "photography"

View File

@@ -10,10 +10,10 @@
stroke-linejoin="round" stroke-linejoin="round"
> >
<circle cx="12" cy="12" r="10" /> <circle cx="12" cy="12" r="10" />
<line x1="14.31" x2="20.05" y1="8" y2="17.94" /> <path d="m14.31 8 5.74 9.94" />
<line x1="9.69" x2="21.17" y1="8" y2="8" /> <path d="M9.69 8h11.48" />
<line x1="7.38" x2="13.12" y1="12" y2="2.06" /> <path d="m7.38 12 5.74-9.94" />
<line x1="9.69" x2="3.95" y1="16" y2="6.06" /> <path d="M9.69 16 3.95 6.06" />
<line x1="14.31" x2="2.83" y1="16" y2="16" /> <path d="M14.31 16H2.83" />
<line x1="16.62" x2="10.88" y1="12" y2="21.94" /> <path d="m16.62 12-5.74 9.94" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 440 B

View File

@@ -2,7 +2,8 @@
"$schema": "../icon.schema.json", "$schema": "../icon.schema.json",
"contributors": [ "contributors": [
"karsa-mistmere", "karsa-mistmere",
"ericfennis" "ericfennis",
"danielbayley"
], ],
"tags": [ "tags": [
"unarchive", "unarchive",

View File

@@ -3,7 +3,8 @@
"contributors": [ "contributors": [
"colebemis", "colebemis",
"ericfennis", "ericfennis",
"karsa-mistmere" "karsa-mistmere",
"danielbayley"
], ],
"tags": [ "tags": [
"index", "index",

View File

@@ -0,0 +1,16 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [
"outwards",
"direction",
"south-west",
"diagonal"
],
"categories": [
"arrows",
"navigation"
]
}

View File

@@ -9,7 +9,7 @@
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
> >
<rect width="18" height="18" x="3" y="3" rx="2" ry="2" /> <path d="M13 21h6a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v6" />
<line x1="3" x2="21" y1="9" y2="9" /> <path d="m3 21 9-9" />
<line x1="9" x2="9" y1="21" y2="9" /> <path d="M9 21H3v-6" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 348 B

After

Width:  |  Height:  |  Size: 331 B

View File

@@ -0,0 +1,16 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [
"outwards",
"direction",
"south-east",
"diagonal"
],
"categories": [
"arrows",
"navigation"
]
}

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 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6" />
<path d="m21 21-9-9" />
<path d="M21 15v6h-6" />
</svg>

After

Width:  |  Height:  |  Size: 334 B

View File

@@ -0,0 +1,16 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [
"outwards",
"direction",
"north-west",
"diagonal"
],
"categories": [
"arrows",
"navigation"
]
}

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 3h6a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-6" />
<path d="m3 3 9 9" />
<path d="M3 9V3h6" />
</svg>

After

Width:  |  Height:  |  Size: 329 B

View File

@@ -0,0 +1,20 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [
"outwards",
"direction",
"north-east",
"diagonal",
"share",
"open",
"external"
],
"categories": [
"arrows",
"navigation",
"social"
]
}

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 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6" />
<path d="m21 3-9 9" />
<path d="M15 3h6v6" />
</svg>

After

Width:  |  Height:  |  Size: 330 B

View File

@@ -20,5 +20,8 @@
"account", "account",
"maths", "maths",
"development" "development"
],
"aliases": [
"square-asterisk"
] ]
} }

View File

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 338 B

View File

@@ -10,9 +10,12 @@
"physics", "physics",
"particle", "particle",
"element", "element",
"molecule" "molecule",
"electricity",
"energy",
"chemistry"
], ],
"categories": [ "categories": [
"science" "science"
] ]
} }

View File

@@ -8,7 +8,18 @@
"karsa-mistmere" "karsa-mistmere"
], ],
"tags": [ "tags": [
"hatchet" "hatchet",
"weapon",
"chop",
"sharp",
"equipment",
"fireman",
"firefighter",
"brigade",
"lumberjack",
"woodcutter",
"logger",
"forestry"
], ],
"categories": [ "categories": [
"tools", "tools",

View File

@@ -1,5 +1,8 @@
{ {
"$schema": "../icon.schema.json", "$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [ "tags": [
"statistics", "statistics",
"diagram", "diagram",

View File

@@ -1,5 +1,8 @@
{ {
"$schema": "../icon.schema.json", "$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
],
"tags": [ "tags": [
"statistics", "statistics",
"diagram", "diagram",

View File

@@ -10,6 +10,7 @@
"tags": [ "tags": [
"power", "power",
"electricity", "electricity",
"energy",
"accumulator", "accumulator",
"charge" "charge"
], ],
@@ -17,4 +18,4 @@
"connectivity", "connectivity",
"devices" "devices"
] ]
} }

View File

@@ -8,6 +8,7 @@
"tags": [ "tags": [
"power", "power",
"electricity", "electricity",
"energy",
"accumulator", "accumulator",
"charge" "charge"
], ],
@@ -15,4 +16,4 @@
"connectivity", "connectivity",
"devices" "devices"
] ]
} }

View File

@@ -8,6 +8,7 @@
"tags": [ "tags": [
"power", "power",
"electricity", "electricity",
"energy",
"accumulator", "accumulator",
"charge" "charge"
], ],
@@ -15,4 +16,4 @@
"connectivity", "connectivity",
"devices" "devices"
] ]
} }

View File

@@ -8,6 +8,7 @@
"tags": [ "tags": [
"power", "power",
"electricity", "electricity",
"energy",
"accumulator", "accumulator",
"charge" "charge"
], ],
@@ -15,4 +16,4 @@
"connectivity", "connectivity",
"devices" "devices"
] ]
} }

View File

@@ -7,6 +7,7 @@
"tags": [ "tags": [
"power", "power",
"electricity", "electricity",
"energy",
"accumulator", "accumulator",
"charge", "charge",
"exclamation mark" "exclamation mark"
@@ -15,4 +16,4 @@
"connectivity", "connectivity",
"devices" "devices"
] ]
} }

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