Compare commits

...

339 Commits

Author SHA1 Message Date
Karsa
4657ccbfff fix(icons/concierge-bell): Adds missing rounding from bottom part (#1923)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-25 10:27:22 +01:00
Jakob Guddas
db222d4591 Optimized and fixed alignment issues in package-open icon (#1648)
* Optimized and fixed alignment issues in `package-open` icon

* Update icons/package-open.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-02-24 18:31:04 +01:00
Jakob Guddas
bafad1c625 Add image-up icon (#1909)
* Added icons/image-up.svg

* Added icons/image-up.json
2024-02-23 11:25:17 +01:00
Jakob Guddas
7f1e95c6e7 Update image-down icon (#1910)
* Updated icons/image-down.svg

* Updated icons/image-down.json
2024-02-23 11:20:42 +01:00
Jakob Guddas
ca7a87112c Fixed gap issues in flower icon (#1650)
* Fixed gap issues in `flower` icon

* Update flower.json

* Update flower.json

* Update icons/flower.svg

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2024-02-23 09:58:13 +01:00
Kyle Angelo Galendez
d542da0a1c Add table-cells-merge, table-cells-split, table-rows-split, and table-columns-split icons (#1856)
* Add split-table icon

* Add split-table.json

* Add split-rows icon

* Add split-rows.json

* Add merge-rows icon

* Add merge-rows.json

* Update icons/merge-rows.svg

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

* Update split-rows.svg

* Update split-table.svg

* Fix by add padding to split-table icon

- Accidentally exported the whole icon from Inkscape, but not the entire page, which creates no padding

* Update split-table icon

- Add 1px to the row borders down below

* Rename split-table.svg to table-row-split.svg

* Update and rename split-table.json to table-row-split.json

* Rename merge-rows to table-cells-merge

* Rename split-rows to table-cells-split

* Rename table-row-split to table-split

* Add `table-columns-split` icon

* Add table-columns-split.json

* Delete table-split icon and json

* Add `table-rows-split` json and icon

* Update icons/table-cells-split.json

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

* Update icons/table-rows-split.json

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

* Update icons/table-cells-merge.json

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

* Update icons/table-columns-split.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-02-21 22:47:20 +01:00
Karsa
6fa51d2a22 Optimise hop (#1897)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-20 15:32:43 +01:00
Karsa
ca53b06af2 Adds pickaxe icon (#1890)
* Adds pickaxe icon

* Replace missing icon, haha 😅

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-19 09:01:32 +01:00
Karsa
b5dc96d2c2 Optimise hammer (#1893)
* Optimize and fix guideline violation in hammer

* Further adjustments to pixel perfection

* Nudge things around a bit more

* Elongate front part of head

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-19 09:00:51 +01:00
Karsa
5e5fe0085f Update tractor.svg 2024-02-19 08:12:47 +01:00
Karsa
0c2a8d774f Fix anvil rounding (#1895)
* Fix anvil rounding

* Add rounding to spike

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-19 08:11:29 +01:00
Jakob Guddas
804906dcd8 Update tractor icon (#1894)
* Updated icons/tractor.svg

* Updated icons/tractor.json
2024-02-19 08:11:24 +01:00
Karsa
d575743d3a Fix siren rounding (#1896)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-19 08:11:15 +01:00
Karsa
42c1faed75 Adds telescope icon (#1889)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-15 13:34:42 +01:00
Karsa
42b494f853 Updated naming guidelines with element order and modifier naming scheme (#1874)
* Update icon-design-guide.md

* Update docs/guide/design/icon-design-guide.md

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-02-12 19:04:03 +01:00
Karsa
9bf8a653a3 Ran prettier on updateContributors.mjs (#1887)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-12 18:59:06 +01:00
Jakob Guddas
01cff578e5 Update file-output icon (#1879)
* Updated icons/file-output.svg

* Updated icons/file-output.json
2024-02-12 16:18:48 +01:00
Jakob Guddas
a0b1305258 feat: folder output (#1619) 2024-02-12 16:18:39 +01:00
Karsa
0cfdfa2181 Adds images and (updates file-image to match) (#1852)
* Adds images and updates file-image to match

* Improve pixel perfection

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-12 16:17:22 +01:00
Jakob Guddas
a2e8ea32d2 feat: folder symlink (#1618)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-02-12 16:16:03 +01:00
Jakob Guddas
8a7e6ba343 Update file-symlink icon (#1878)
* Updated icons/file-symlink.svg

* Updated icons/file-symlink.json
2024-02-12 16:15:05 +01:00
Jakob Guddas
7a9233f4a7 Update clover icon (#1883)
* Updated icons/clover.svg

* Updated icons/clover.json

* Updated icons/clover.svg

* Update icons/clover.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-02-12 16:14:07 +01:00
Jakob Guddas
71aef25812 Update circle-dashed icon (#1884)
* Updated icons/circle-dashed.svg

* Updated icons/circle-dashed.json

* Update icons/circle-dashed.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-02-12 16:13:45 +01:00
Jakob Guddas
33189a81ac fix: updateContributors adds trailing line to icon.json (#1885) 2024-02-12 14:33:04 +01:00
Simon
e3923f87c2 Add radical icon (square root) (#1847)
* Add `square-root`icon

* Update square-root.svg

* Fix square icon SVG

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

* Rename `square-root` `radical`

* Rename radical-square.json to square-radical.json

* Rename radical-square.svg to square-radical.svg

* Update radical.json

* Match activity height

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2024-02-11 23:42:03 +01:00
Jakob Guddas
08c040a57d Update anchor icon (#1875)
* Updated icons/anchor.svg

* Updated icons/anchor.json
2024-02-11 18:07:39 +01:00
Jakob Guddas
981c3309ce Rounded corners of graduation-cap icon (#1870)
* Updated icons/graduation-cap.svg

* Updated icons/graduation-cap.json

* Updated icons/graduation-cap.svg

* Updated icons/graduation-cap.json
2024-02-11 17:58:43 +01:00
Jakob Guddas
2e0af66d8a Update school icon (#1872)
* Updated icons/school.svg

* Updated icons/school.json
2024-02-11 17:04:35 +01:00
Jakob Guddas
a789c91213 Optimized shopping-basket icon (#1871)
* Updated icons/shopping-basket.svg

* Updated icons/shopping-basket.json

* Updated icons/shopping-basket.svg

* Updated icons/shopping-basket.json
2024-02-11 17:02:13 +01:00
Jakob Guddas
91c95600f3 Update rss icon metadata (#1873)
* Updated icons/rss.svg

* Updated icons/rss.json
2024-02-11 17:01:50 +01:00
Jakob Guddas
99acf4102c Update wifi icon (#1877)
* Updated icons/wifi.svg

* Updated icons/wifi.json

* Updated icons/wifi.svg

* Updated icons/wifi.json

* Update wifi-off.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-02-11 17:01:19 +01:00
Jakob Guddas
86f2dc12f4 Update arrow-big-down-dash icon (#1876)
* Updated icons/arrow-big-down-dash.svg

* Updated icons/arrow-big-down-dash.json
2024-02-11 16:59:54 +01:00
DefaultLP
b9fdde2d09 Add caption icons (#1799)
* Add caption icons

* Add subtitle category

* Changed corner radius to 2px

* Fixed metadata for caption icons

* Took suggestions to heart

* Removed trailing spaces

* Fixed captions-off violations

* Fixed name and added aliases

* Removed subtitles svg and json

* Removed alias from captions-off

* format

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-02-05 19:34:34 +01:00
Karsa
5c494962e1 Various contributor fixes (#1844)
* Various manual contributor fixes

* Remove myself from a few dozen more icons I took practically no part in.

* Remove danielbayley from some icons as per https://github.com/lucide-icons/lucide/pull/1844

---------

Co-authored-by: Rigó József Karsa <karsa@sztaki.hu>
2024-02-05 19:11:34 +01:00
Karsa
772c5be034 Fixes scaling, tag and tags to have the necessary rounding. (#1850)
* Fixes scaling, tag and tags to have the necessary rounding.

* Update tags.svg

* Update tag.svg

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-05 15:08:13 +01:00
Karsa
ee3483eb1b Adds handshake icon (#1835)
* Adds handshake icon

* update handshake icon

* Update handshake.svg

* Update icons/handshake.json

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

---------

Co-authored-by: Rigó József Karsa <karsa@sztaki.hu>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-02-01 16:37:10 +01:00
CokaKoala
9182c51962 feat: Adds Svelte 5 support (#1748)
* adds svelte 5 support

* Update package.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-02-01 16:36:27 +01:00
Han Yeong-woo
eb035fe370 Improve formatting (#1814)
* Ignore linting for examples in docs

* Formatting JSX single attribute per line

* Separte `format` and `lint:format` in package.json

* Bump prettier version

* Run format
2024-02-01 14:38:21 +01:00
Karsa
b96e6acd2e Fix plus/minus sign size in shield-plus/shield-minus (#1840)
* Update shield-plus to match other plus icons

* Update shield-minus to match other minus icons

---------

Co-authored-by: Rigó József Karsa <karsa@sztaki.hu>
2024-01-31 22:53:23 +01:00
Daniel Bayley
7b62649c39 Add smaller dots fill fix to VS Code snippets (#1837) 2024-01-31 09:02:07 +01:00
Daniel Bayley
10aff6cf7b Fix bolt missing metadata (#1836) 2024-01-31 08:42:01 +01:00
Jordan Long
cfa8924025 Update truck icon to match ambulance (#1838) 2024-01-31 08:36:17 +01:00
Eric Fennis
713e9b8a09 Add clipboard-plus and clipboard-minus icons (#1812)
* Add clipboard icons

* Switch to same plus minus as file icons

* update contributors

* center plus and minus paths
2024-01-31 08:35:00 +01:00
Eric Fennis
8ab6f80e4f Add headset icon (#1780)
* Add headset icon

* Fix lint errors

* Revert headset change
2024-01-30 10:08:59 +01:00
Jordan Long
a5221c236a Add story icon (#1820)
* Add story icon

* Split single path into multiple elements

* Refine icons/story.svg

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

* Update contributors to icons/story.json

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

* Change "story" icon name to "circle-fading-plus" and add to shapes category

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-01-30 09:30:44 +01:00
Jordan Long
cdd32b5294 Add ambulance icon (#1819)
* Add ambulance icon

* Remove extra attributes and connect path under wheels

* Lift roof and "+" to adhere to 2px gap rule for icons/ambulance.svg

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

* Increase cab height of ambulance

* Add contributors from truck icon

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-01-29 19:50:04 +01:00
CokaKoala
54c8d4078d fix: Add the license banner inside of the script tag instead of an HTML comment (#1811)
* add banner inside of the script tag instead

* renamed script

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

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

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

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

* renamed file

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-29 19:48:14 +01:00
Daniel Bayley
3302870983 Refine helping-hand/add hand-* icons (#1328)
* Refine `helping-hand` icon

* Add `hand-platter` icon

* Add `hand-coins` (savings) icon

* Add `hand-heart` icon

* Fix/optimise `helping-hand` icon

* Fix/optimise `hand-coins` icon

* Fix/optimise `hand-heart` icon

* Rename `helping-hand` to `hand-helping`

* Fix/optimise `hand-platter` icon

* Add `thumbs-up-down` icon

* Improve `thumbs-up`/`down` icons metadata

* Improve metadata

* Delete thumbs-up-down icons

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-26 10:10:19 +01:00
Karsa
0f25ee86a0 Fix fills in smaller dots (#1436)
* Fixes palette

* Fixing fill on circles

* Fixing fills

* Revert tractor fill

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-26 09:58:05 +01:00
Jakob Guddas
28686b5bd5 feat: added webhook-off icon (#1566)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-25 08:54:18 +01:00
Eric Fennis
8cc143915c Update JSdoc lucide svelte (#1826) 2024-01-25 08:23:34 +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
Daniel Bayley
14c7ea8e13 Refine/add message[-*] icons (#1208)
* Add `message-square-warning` icon

* Optimise `message-square-plus` icon

* Add `message-square-diff` (request changes) icon

* Refine `message-circle` icon

* Add `message-circle-question` icon

* Add `message-circle-warning` icon

* Add `message-square-x` icon

* Add `message-square-off` icon

* Add `message-circle-plus` icon

* Add `message-circle-x` icon

* Add `message-circle-off` icon

* Refine `message-circle` icons

* Fix `message-circle-question` mark

* Fix `message-square-diff` icon

* Add `message-square-share` icon

* Add `message-square-text` icon

* Refine `message-square-x` icon

* Add `message-square-code` icon

* Improve `message-*` icons metadata

* Add `message-square-more` icon

* Improve `more-horizontal` metadata

* Add `message-circle-more` icon

* Add `message-circle-dashed` icon

* Add `message-square-text-quote` icon

* Add `message-square-quote` icon

* Add `message-square-reply` icon

* Add `message-circle-code` icon

* Add `message-circle-reply` icon

* Add `message-circle-heart` icon

* Add `message-square-heart` icon

* Add `message-square-dot` (unread) icon

* Add `message-square-dot-big` (unread/notification) variant

* Remove message-square-text-quote and rename message-square-dot-big

* Added as contributor in meta data

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-13 21:14:49 +01:00
Eric Fennis
9fc7653dc1 Add carbon to site 2023-12-13 20:45:25 +01:00
Jakob Guddas
2b007e7962 Lessened $schema type strictness (#1718)
* Lessened $schema type strictness

* Lessened $schema type strictness
2023-12-11 15:53:52 +01:00
dependabot[bot]
bb1e470f3a Bump vite from 4.4.7 to 4.4.12 (#1714)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.7 to 4.4.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.4.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.4.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>
2023-12-08 10:55:14 +01:00
Eric Fennis
4a1e6bbfa5 Update site dependencies & small fixes (#1699)
* update styling

* Update vitepress
2023-11-28 21:02:23 +01:00
Gionata Mettifogo
e5ee997566 Update README.md (#1704)
The readme lists the url below with uppercase L
@import ('~lucide-static/font/Lucide.css');

but the file in node_modules/lucide-static/font has a lowercase L making it fail on certain loaders like the one used by Storybook on MacOS.

The fix is simply to use lowercase
2023-11-28 21:00:46 +01:00
Daniel Bayley
27c0a136cd Add music/piano/keyboard/guitar/pick/amp/drum/album/audio/waveform icons (#1124)
* Add `piano` icon

* Add `keyboard-music` icon

* Optimise `speaker` icon

* Refine `speaker` icon

* Improve metadata

* Add `guitar` icon

* Add `guitar-pick` icon

* Add `guitar-amp` icon

* Add `drum` icon

* Add `disc-album` icon

* Add `disc-album-remove` icon

* Add `disc-album` variant

* Add `file-music` icon

* Add `audio-waveform` icon

* Add `audio-lines` icon

* Refine `speaker` icon

* Remove icons

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-11-28 21:00:08 +01:00
Sukomal Dutta
84b3c46b65 remove extra space in svg class attribute (#1703)
* remove extra space in svg class attribute

* Update packages/lucide-react/src/createLucideIcon.ts

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-11-28 20:59:37 +01:00
James Vickery
1a09e7fb39 Renamed user-*-2 to user-round-* (#1638)
* Renamed user-*-2 to user-round-*

* Added user-round icon optimizations as per Discord + renamed user*-(square|circle) to (square|circle)-user* also as per Discord

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-11-24 13:59:28 +01:00
Eric Fennis
75e9724072 Make sure we apply all classes to the lucide icons (#1691)
* Make sure all classes are applied for all packages

* Add class test to angular component

* Adjust lucide-static tests

* update snapshot

* Fix types
2023-11-24 13:59:12 +01:00
Eric Fennis
fbaccc7d9f Fix lint errors svg files (#1698) 2023-11-24 11:22:05 +01:00
Zakher Masri
c24bc4d7ef Fixed Illustrator template link + fixed typo (#1664)
* Fixed Illustrator template link + fixed typo

* Added `pilcrow-left` icon

* Revert "Added `pilcrow-left` icon"

This reverts commit 6ccdf9c55e.
2023-11-24 11:08:57 +01:00
Otto Coster
5c8c8f4362 Support Angular 17 (#1696) 2023-11-24 11:07:49 +01:00
Daniel Bayley
ffd2a62941 Improve Adobe Illustrator template (#1689) 2023-11-24 09:19:02 +01:00
Eric Fennis
e77959e1a6 lucide-vue Deprecation warning (#1663)
* Add Vue deprecation warning

* Add deprecation warning docs page

* Fix typo

* Update warning text
2023-11-24 08:14:47 +01:00
Eric Fennis
149ee36e61 Improve license notice in packages (#1657)
* Improve license message

* Implement license notice in lucide-static

* Tighten package PR workflows

* Update lockfile
2023-11-17 11:12:31 +01:00
Karsa
88bf60b5d7 Update Angular logo on site (#1684) 2023-11-17 11:11:26 +01:00
Jakob Guddas
1e5df716a4 feat: added curve handles to svg preview (#1661) 2023-11-13 21:18:51 +01:00
Karsa
fc0ea760e5 Fixes #1665 (#1674)
Replace Do with Don't in Pixel perfection bad example.
2023-11-09 16:27:59 +01:00
Jakob Guddas
c85275899a Renamed alarm-check to alarm-clock-check (#1628) 2023-11-06 11:00:44 +01:00
Eric Fennis
288edde1ea Linting SVG files (#1642)
* eslint rules for SVGS

* apply options

* Add typescript eslinter

* Make eslint work with the codebase

* Format icons

* Test svg

* Add workflow

* Fix lint command

* Revert duplicated aliases

* Update .eslintrc.js

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

* Update .eslintrc.js

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

* Move linter to separate workflow

* Add pnpm install

* Revert icon changes

* Test eslint workflow

* turn of fail lint-contributors

* Revert theater

* process feedback

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-11-06 11:00:04 +01:00
Karsa
207ff6c487 Adds ribbon (#1438)
* Adds ribbon

* Update icons/ribbon.svg

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-11-03 08:49:20 +01:00
Sukomal Dutta
a1a9a4d839 fix export IconNode type (#1656)
* fix export IconNode type

* add Types exports
2023-11-01 15:53:17 +01:00
Karsa
c5804ad9a5 Refactored icon exports to use the new proposed icon node format. (#1641) 2023-10-31 21:03:39 +01:00
Jakob Guddas
c72fb4a28b feat: changed backdrop color for new icons in group to gray (#1640) 2023-10-31 21:03:17 +01:00
Jakob Guddas
da5ad547b5 feat: improved backdrop group name resolution (#1645) 2023-10-31 21:02:35 +01:00
Daniel Bayley
66cfe527b3 Optimise/add missing check[-*] icon/s (#1297)
* Optimise `check`[`-*`] icons

* Add missing `check-square` variant
2023-10-31 19:54:25 +01:00
Karsa
d1866225ba Fixes radiation center dot (#1655) 2023-10-31 07:13:25 +01:00
Jakob Guddas
372735999f fix: exclude renames from contributor generation (#1643)
* fix: exclude renames from contributor generation

* fix: exclude renames from contributor generation
2023-10-30 21:31:25 +01:00
Jakob Guddas
f3a33346dd Fixed gaps in cake icon (#1651)
* Fixed gaps in `cake` icon

* Update cake.json

* Update icons/cake.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-10-30 20:13:21 +01:00
Jakob Guddas
3373acf596 Rebuild tree-deciduous using arcs (#1647)
* Rebuild tree-deciduous using arcs

* Update icons/tree-deciduous.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-10-30 20:11:40 +01:00
Eric Fennis
73d5bfc318 Fix icon contributors 2023-10-29 21:09:08 +01:00
ayushrakesh
ddbc074aa3 Update README.md (#1652) 2023-10-29 18:47:00 +01:00
Jakob Guddas
8f4d6b1651 feat: added lint-contributors job (#1625)
* feat: added lint-contributors job

Signed-off-by: Jakob Guddas <github@jguddas.de>

* feat: improved lint-contributors job

Signed-off-by: Jakob Guddas <github@jguddas.de>

* feat: add comments to lint-contributors job

Signed-off-by: Jakob Guddas <github@jguddas.de>

---------

Signed-off-by: Jakob Guddas <github@jguddas.de>
2023-10-27 08:59:27 +02:00
Daniel Bayley
d8b08f8fda Add missing git icons (#995)
* Add `git-pull-request-create` icon

* Add `git-pull-request-create-arrow` variant

* Improve `git-*` icons metadata

* Optimise `git-pull-request-closed` icon

* Refine `git-fork` icon

…to match [`network`](https://lucide.dev/icons/network)

* Add `git-graph` icon

* Rename `git-commit` to `git-commit-horizontal`

* Add `git-commit-vertical` icon

* Add `git-pull-request-arrow` icon

* Add `git-compare-arrows` icon
2023-10-27 08:56:26 +02:00
Daniel Bayley
fddacb6260 Optimise/add power[-circle/-square] icons (#1353)
* Add `power-circle` icon

* Optimise `power` icon

* Improve `power` icon metadata

* Add `power-square` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-10-23 21:35:57 +02:00
Sun Xiaoran
3d0c8691c9 fix: jsx type for icons in vue 3 (#1617) 2023-10-23 21:24:05 +02:00
Jakob Guddas
47998b05aa feat: added linting and formatting of icon and category json files (#1632) 2023-10-23 21:05:02 +02:00
Sukomal Dutta
9a9e051343 correct typo in icon size example (#1634) 2023-10-23 21:02:05 +02:00
Jakob Guddas
6c6c8448fa fix: duplicate Next.js aliases (#1631) 2023-10-22 13:06:07 +02:00
Eric Fennis
49445aad3a Showcase page for the website (#1604)
* add showcase items

* Add showcase cards

* Complete showcase list

* Add light/dark mode versions
2023-10-20 13:45:47 +02:00
Jakob Guddas
70656eb4f0 Optimized armchair icon (#1610) 2023-10-20 11:38:03 +02:00
Sukomal Dutta
930f862547 fix website jumping isuue (#1612)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-10-20 11:36:53 +02:00
Eric Fennis
931b7f5376 Add pnpm action 2023-10-20 11:19:48 +02:00
Jakob Guddas
81e44bdc40 feat: improved folder cohesion (#1223)
* feat: improved folders

* fix: snapped node

* Update icons/folder-heart.svg

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

* Update folder-cog-2.svg

* Update folder-cog.svg

* feat: revert folder-symlink

* feat: revert folder-output

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-10-20 09:27:48 +02:00
Parikshit Adhikari
e6e90944b9 typo fixed (#1621) 2023-10-19 17:17:06 +02:00
Eric Fennis
f6fd369bfe Github Actions cleanup - Use setup node for pnpm cache (#1616)
* Switch setup node for pnpm cache

* Test workflows

* Add pnpm setup back again
2023-10-18 09:50:18 +02:00
Eric Fennis
bbf183fe48 Fix lock file 2023-10-17 21:43:34 +02:00
Daniel Bayley
4f5642b872 Add book-* icons (#1352)
* Add `book-text` icon

* Add `book-open-text` icon

* Add `book-a` (dictionary) icon

* Improve `book`/`contact` icons metadata

* Add `book-check` (read) icon

* Add `book-type` (font book) icon

* Add `book-spine` icon

* Add `book-elastic` icon

* Add `book-user` (contacts) icon

* Add `book-address-user` (contacts variant) icon

* Add `book-address` (contacts variant) icon

* Add `book-heart` (diary/journal) icon

* Improve `book-*` icons metadata

* Add `book-image` icon

* Add `library-big` icon

* Improve metadata

* Rename `book-address`[`-*`] icons to `book-tabs`[`-*`]

* Improve metadata

* Add `notebook` icon

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

* Add `notebook-text` icon

* Add `notebook-elastic` icon

* Add `notebook-pencil` icon

* Add `notepad-text` (`notebook` variant) icon

* Add `notepad-lines` icon

* Refine `library-big` icon

Remove detail.

* Update icons/book-heart.json

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

* Refine `book-tabs` icon

* Remove `book-tabs-user` icon

* Improve `book` icons metadata

* Move `note`[`book`/`pad`] icons

* Add `book-volume` (audiobook) icon

* Add `book-headphones` (audiobook variant) icon

* Add `book-audio` variant icon

* Add `library-square` icon

* Add `book-open` variant

* Rename `book-template` to `book-dashed`

* Add `book-git-commit` icon

* Delete icons/book-elastic.json

* Delete icons/book-elastic.svg

* Delete icons/book-git-commit.json

* Delete icons/book-git-commit.svg

* Delete icons/book-open-2.json

* Delete icons/book-open-2.svg

* Delete icons/book-spine.json

* Delete icons/book-spine.svg

* Delete icons/book-tabs.json

* Delete icons/book-tabs.svg

* Delete icons/book-volume.json

* Delete icons/book-volume.svg

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-10-17 21:38:27 +02:00
Emma Alexia
1dce6a141a fix/docs: release tags don't work for newly-created/updated icons (#1589)
As per 3391b5b717, the format of new GitHub release tags is just the version number without the `v` prefix. As we can see on https://github.com/lucide-icons/lucide/releases?page=2, versions older than 0.266.0 use a `v` prefix. The current docs assume that all versions contain the `v` prefix; this PR fixes it so that the format of versions both from before and after this change are accounted for.
2023-10-17 21:30:26 +02:00
Eric Fennis
dbfce919fc Alias support for lucide package (#1592)
* Setup aliases for lucide

* Make aliases work for lucide package
2023-10-17 21:27:46 +02:00
Jakob Guddas
52adb78df8 Optimized globe (#1606) 2023-10-17 21:26:47 +02:00
Jan
c5cfbed28c add info about dynamic imports to nextjs docs (#1564)
* add info about dynamic imports to nextjs docs

* remove warning
2023-10-17 21:25:49 +02:00
Jakob Guddas
1e4fd13852 Optimized backpack icon (#1611) 2023-10-17 21:11:44 +02:00
Eric Fennis
0a0fd1cf6c Adds new font in lucide-static and speed up icon outlining (#1599)
* Apply new icon font build in release

* remove dockerfile
2023-10-16 22:03:57 +02:00
dependabot[bot]
487d03fc4d Bump undici from 5.24.0 to 5.26.3 (#1615)
Bumps [undici](https://github.com/nodejs/undici) from 5.24.0 to 5.26.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.24.0...v5.26.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-16 21:43:56 +02:00
Karsa
950160ad5a Fixes some over-optimisation done in #1573 (#1605) 2023-10-13 17:15:24 +02:00
Eric Fennis
b6f5898aee Remove lucide flutter form the main repo (#1593) 2023-10-13 14:33:45 +02:00
Sukomal Dutta
a9c1dca801 fix #1579 issue added debounced in search (#1600)
* add debounced in search

* updated iconsCategoryOverview

* fix site loading issue

* apply suggestion
2023-10-13 14:32:34 +02:00
Jakob Guddas
c05c7e333f feat: added umbrella-off icon (#1568)
* feat: added umbrella-off icon

* Update umbrella-off.svg

* Update umbrella-off.svg

* Update umbrella-off.svg

* Update icons/umbrella-off.json
2023-10-12 08:36:17 +02:00
Jakob Guddas
dff42fe326 fix: gh-icon improvements (#1595) 2023-10-11 13:21:42 +02:00
Daniel Bayley
c1f642e20f Add navigation icons (#1390)
* Add `signpost` icon

* Add `signpost-big` icon

* Improve `milestone` metadata

* Add `map-pinned` icon

* Add `waypoints` icon

* Add `route` (journey/planner) icon

* Add `route-off` (clear journey) icon

* Refine `map-pinned` icon

* Refine `map-pinned` icon
2023-10-10 08:38:37 +02:00
Jakob Guddas
cf9565b69c feat: added image-down icon (#1570) 2023-10-05 22:39:32 +02:00
Daniel Bayley
4cc4468d2f Add camping icons (#1409)
* Add `caravan` icon

* Improve `tent` metadata

* Rename `tent` to `tipi`

* Add `tent-tree` (camping) icon

* Add `flame-kindling` (campfire) icon

* Refine `tipi` icon

* Refine `tent-tree` icon

* Revert rename `tipi` to `tent`

* Refine `caravan` icon

* Refine `tent` icon

* Fix `flame-kindling` optimisation

* Update flame-kindling.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-10-03 09:53:21 +02:00
Daniel Bayley
fd9ab8f17a Add barcode/scan icons/optimise/improve metadata (#1354)
* Add `barcode` icon

* Add `scan-barcode` icon

* Add `scan-text` icon

* Improve `scan` icons metadata

* Add `scan-eye` icon

* Add `scan-search` icon

* Optimise `scan-line` icon

* Add `fullscreen` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-10-03 09:35:20 +02:00
Eric Fennis
c9101f0f39 Add Lucide basics guide on site (#1521)
* add sidebar topics

* Start with styling icons doc

* write some doc text

* add sandpack

* Add custom sandpack theme

* Adjust sandpack

* update sidebar

* Add example

* Add more examples

* updat lockfile

* update vitepress

* Fix sidebar

* Adjust theme with latest vitepress!

* Example updates!

* Finish last examples

* Remove markdown comments

* Update docs/guide/advanced/filled-icons.md

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

* Update docs/guide/basics/color.md

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

* Update docs/guide/basics/color.md

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

* Update docs/guide/basics/stroke-width.md

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

* Update docs/guide/basics/color.md

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

* Update docs/guide/basics/sizing.md

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

* Update docs/guide/basics/stroke-width.md

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

* Update docs/guide/basics/stroke-width.md

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

* Update docs/guide/basics/color.md

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

* Update docs/guide/basics/color.md

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

* Update docs/guide/basics/sizing.md

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

* Update docs/guide/basics/sizing.md

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

* Update docs/guide/basics/sizing.md

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

* Update docs/guide/basics/sizing.md

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

* Update docs/guide/basics/sizing.md

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

* Update docs/guide/basics/stroke-width.md

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

* Process feedback

* Add editor width percentage

* process feedback

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-10-03 08:21:01 +02:00
Cd16d
614ef1a1d5 Lock icons (#1346)
* new lock/unlock icons

* Update icons/lock-2.svg

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

* Update icons/unlock-2.svg

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

* Update lock-2.svg

* Update unlock-2.svg

* Update unlock-2.svg

* Rename lock-2.json to lock-dot.json

* Rename lock-2.svg to lock-dot.svg

* Rename unlock-2.json to unlock-dot.json

* Rename unlock-2.svg to unlock-dot.svg

* Update icons/lock-dot.svg

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

* Update icons/unlock-dot.svg

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

* Update and rename lock-dot.json to lock-keyhole.json

* Rename lock-dot.svg to lock-keyhole.svg

* Update and rename unlock-dot.json to unlock-keyhole.json

* Rename unlock-dot.svg to unlock-keyhole.svg

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-10-02 20:25:05 +02:00
Jakob Guddas
1a441812ac feat: changed mouse-pointer-click (#1563)
* feat: changed `mouse-pointer-click`

* Update mouse-pointer-click.json
2023-10-02 19:40:22 +02:00
Daniel Bayley
4a33e90c65 Add geometry icons (#1142)
* Add `radius` icon

* Add `tangent` icon

* Refine `radius` icon

* Add `circumference` icon

* Add `tangent` icon

* Fix: rename `circumference` to `diameter`

* Add `cylinder` icon

* Add `cylinder-volume` icon

* Add `area` icon

* Refine `layers` icon

* Add `drafting-compass` icon

* Update icons/drafting-compass.svg

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

* Update icons/cylinder-volume.svg

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

* Update icons/diameter.svg

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

* Add `pyramid` icon

* Add `cone` icon

* Update icons/cone.svg

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

* Refine `cone` icon

* Improve geometry icons metadata

* Refine `layers` icon

* Add `layers` alternate icon

* Add `pentagon` icon

* Improve `layers` alternate icon metadata

* Add `torus` icon

* Refine `area` icon

* Improve metadata

* Add `layers-3` variant

* Add `plot` icon

* Refine `plot` icon

* Rename `plot` to `land-plot`

* Add `cuboid` (brick) icon

* Add `weight` icon

* Optimise `triangle` icon

* Update icons/weight.svg

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

* Update icons/weight.json

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

* Refine `pyramid` icon

* Optimise `tangent` icon

* Refine `cone` icon

* Refine `pyramid` icon

* Update icons/cone.svg

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

* Update icons/cuboid.svg

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

* Update icons/cylinder-volume.svg

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

* Update icons/land-plot.svg

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

* Update icons/diameter.svg

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

* Update icons/layers-2.svg

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

* Update icons/layers.svg

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

* Update icons/pyramid.svg

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

* Update icons/radius.svg

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

* Update icons/tangent.svg

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

* Update icons/triangle.svg

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

* Update icons/layers-3.svg

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

* Delete icons/area.json

* Delete icons/area.svg

* Delete icons/cylinder-volume.json

* Delete icons/cylinder-volume.svg

* Add comma database.json

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-10-02 19:29:54 +02:00
Jakob Guddas
062a64a078 feat: optimized uncategorized icons (#1573) 2023-09-25 20:16:25 +02:00
Eric Fennis
95a1ea7255 Merge branch 'main' of https://github.com/lucide-icons/lucide 2023-09-24 21:54:03 +02:00
Eric Fennis
a0a5bc8fc2 update digital ocean link website 2023-09-24 21:53:56 +02:00
Jakob Guddas
698eded89b Update gift.svg (#1571)
* Update gift.svg

* Update gift.json
2023-09-21 21:52:19 +02:00
Binyamin Aron Green
a70b713572 Fix solid package.json (#1558) (#1569)
- allow access to types file in "exports" field

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-09-20 15:24:23 +02:00
Jakob Guddas
34530ad805 feat: more tags for graduation-cap (#1562) 2023-09-19 16:34:24 +02:00
Jakob Guddas
f73aed151a chore: added "dropdown" to tags (#1565)
* Update chevron-down.json

* Update chevron-up.json
2023-09-19 16:33:13 +02:00
Maxim Coppieters
2bd7748562 Add theater/drama icons (#1474)
* Add theater/drama icons

Related to #1399

Co-Authored-By: Daniel Bayley <daniel.bayley@me.com>

* Remove alternate drama icon

* Improve tags

---------

Co-authored-by: Daniel Bayley <daniel.bayley@me.com>
2023-09-16 13:04:13 +02:00
Daniel Bayley
da8a6c5a1b Add missing bookmark-* icons (#1259)
* Add `bookmark-x` icon

* Add `bookmark-off` icon

* Remove `bookmark-off` icon

* Add `bookmark-slash` icon

* Swap `bookmark-slash` with `bookmark-check`
2023-09-16 12:57:53 +02:00
Eric Fennis
5736028dfa Update sponsor logos 2023-09-14 11:11:18 +02:00
Eric Fennis
45d2063340 Add digital ocean logo in readme 2023-09-14 10:42:02 +02:00
Erwann Lagouche
f71d3ffd1d Add speech icon (#1337)
* add speech icon

* center icon and apply global attributes

* fix: make paddings wider

* fix: smoothe angle on base of neck

* fix: add jguddas to contributors

* Update speech.svg

* Update speech.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-09-13 21:05:54 +02:00
Oliver Schmidt
b8c3a5fa0b Changed font creation process (#1413)
* Changed font creation process

* Class name prefix

Class name prefix added for backward compatibility.

* Container option in workflow removed

Removed the container option in github workflow lucide-font because it is not needed anymore, workflow was changed to nodejs only

* Fixed whitespaces in package.json

* Use releaseInformation instead of info.json

* Added workflow step

* Moved unicode numbers to convert function

* Added locale argument to sort function

* Delete pnpm-lock

* Updated versions, recreated pnpm-lock

* Updated dependencies

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-09-13 21:05:22 +02:00
Eric Fennis
a4076db69b fix: Allow slash icon with double release 2023-09-11 09:07:14 +02:00
Eric Fennis
55cb681461 Remove conflicting alias (#1555) 2023-09-09 08:29:41 +02:00
Eric Fennis
09d9bb747d Add bot-2 icon (#1544)
* Add bot-2 icon

* replace existing bot icon
2023-09-08 09:46:47 +02:00
Javi Aguilar
42f9cdceca Replace sun-moon icon (#1545)
* Add sun-moon-2 icon

* Update icons/sun-moon-2.svg

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

* CR remarks

* Update sun-moon.json

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-09-06 10:21:01 +02:00
Eric Fennis
c652723b32 Generated aliases for Weird NextJS Case transformations (#1549)
* add script

* Create script to generate the aliases Nextjs

* Apply aliases to the icon meta files

* Make sure duplicated imports are not added

* add command to lint-staged
2023-09-06 09:26:02 +02:00
Jan
a44328d8be Adjust name from "data-lucide-name" to "data-lucide" in documentation & vitepress config adjusted (#1551)
* adjusted name

* adjusted vitepress config and README file

* use glob pattern

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-09-04 16:02:34 +02:00
Eric Fennis
376568239f adjust export order (#1548) 2023-09-02 21:49:11 +02:00
Jackson
92d05b5fca Improve clarity and readability of packages guides in docs (#1547) 2023-09-02 21:48:45 +02:00
Daniel Bayley
27b5b7eaad Add slash icon/improve [*-]slash metadata (#1241)
* Add `slash` icon

* Improve `slash` icons metadata
2023-09-02 15:46:42 +02:00
Daniel Bayley
4de1355e54 Refine film/clapperboard icons (#1506)
* Refine `film` icon

* Refine `clapperboard` icon

* Improve metadata
2023-09-02 15:45:06 +02:00
Daniel Bayley
c8d94bf3e1 Add percent-* (discount price tag) icons/improve metadata (#1326)
* Add `percent-circle` icon

* Improve metadata

* Add `percent-square` icon

* Add `percent-diamond` icon
2023-08-31 13:59:53 +02:00
Daniel Bayley
a128d1c3c1 Optimise/add shield-* icons/improve metadata (#1349)
* Optimise `shield` icons

* Rename `shield-close` to `shield-x`

* Improve `shield` icons metadata

* Add `shield-half` variant

* Add `shield-ban` icon

* Add `shield-plus` icon

* Add `shield-minus` icon

* Add `shield-slash` icon

* Add `shield-more` icon

* Add `shield-cross` icon

* Add `shield-cross-diagonal` icon

* Add `shield-cross-big` icon

* Add `shield-stripe-diagonal` icon

* Add `shield-stripe-vertical` icon

* Add `shield-stripe-horizontal` icon

* Add `shield-stripes-horizontal` icon

* Add `shield-crucifix` icon

* Revert "Add `shield-cross-big` icon"

This reverts commit 6484b6ea45.

* Revert "Add `shield-cross-diagonal` icon"

This reverts commit ed474bdc1f.

* Revert "Add `shield-cross` icon"

This reverts commit 2ebc66e301.

* Revert "Add `shield-crucifix` icon"

This reverts commit 4fa201658a.

* Revert "Add `shield-stripes-horizontal` icon"

This reverts commit b884028623.

* Revert "Add `shield-stripe-horizontal` icon"

This reverts commit 40d7096dbf.

* Revert "Add `shield-stripe-vertical` icon"

This reverts commit 8839e095e3.

* Revert "Add `shield-stripe-diagonal` icon"

This reverts commit a5326ce108.

* Revert "Add `shield-slash` icon"

This reverts commit 7bab9fb256.

* Rename `shield-more` to `shield-ellipsis`
2023-08-31 13:43:30 +02:00
Daniel Bayley
e145cb05e2 Improve [send/bring]-to-[front/back] metadata (#1444)
* Refine `send-to-back` icon

* Improve metadata

* Revert "Refine `send-to-back` icon"

This reverts commit 4f59705fd4.
2023-08-31 13:41:43 +02:00
Daniel Bayley
759ff562fd Add missing badge-* currency (discount) icons (#1406)
* Add `badge-cent` (discount) icon

* Improve `badge-dollar-sign` metadata

* Add `badge-pound-sterling` (discount) icon

* Add `badge-euro` (discount) icon

* Add `badge-swiss-franc` (discount) icon

* Add `badge-japanese-yen` (discount) icon

* Add `badge-indian-rupee` (discount) icon

* Add `badge-russian-ruble` (discount) icon

* Refine `badge-indian-rupee` icon

* Refine `badge-russian-ruble` icon
2023-08-30 13:18:55 +02:00
Karsa
ae2899a09e Optimize russian-ruble.svg (#1541) 2023-08-29 15:17:22 +02:00
Daniel Bayley
8b7ea73aa3 Improve bug icons (#988)
* Refine `bug` icon

* Add `bug-off` icon

* Add `bug-play` (debug) icon

* Add `bug-x` icon

* Add `bug-x` variant

* Delete bug-x.json

* Delete bug-x.svg

* Delete bug-x-2.json

* Delete bug-x-2.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-08-28 20:08:41 +02:00
Eric Fennis
1bdeae5364 Add conditional exports property Lucide Svelte package.json (#1499)
* add exports property

* adjust wild card import

* Fix exports

* revert bundleSize plugin change

* Fix exports build warning
2023-08-28 19:41:24 +02:00
Jan
0e307087f6 replaced SvelteComponentTyped with SvelteComponent (#1517)
Co-authored-by: Jan Richter <j.richter@vanlanschotkempen>
2023-08-28 19:21:04 +02:00
Karsa
a46114b3e7 [github] Added issue template forms (#1535)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-08-28 19:20:30 +02:00
Karsa
fcafe0e7b7 [pull-request-template] Added some clarification to pull request requirements. (#1531) 2023-08-28 15:49:06 +02:00
Karsa
5312982b8f [docs] Fixes icon design guide heading levels + naming mix-up (#1533)
* Fixes icon design guide heading levels + naming mix-up

* Update icon-design-guide.md

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-08-28 09:05:26 +02:00
Daniel Bayley
3a13fab009 Add archive-x (junk) icon (#1203)
* Add `archive-x` (junk) icon

* Improve metadata

* Refine `archive` icon

* Refine `archive-restore` icon

* Refine `archive-*` icons

* Update icons/archive-restore.svg

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

* Update icons/archive-x.svg

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

* Update icons/archive.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-08-25 14:44:53 +02:00
Karsa
30a69ee670 [lucide-angular] Added factory to LUCIDE_ICONS injection token so that standalone components will be able to import LucideAngularModule. (#1529) 2023-08-25 08:43:16 +02:00
Jakob Guddas
5f442122ab feat: added dpi preview (#1510)
* feat: added dpi preview

* fix: switched to resvg

* build: updated versions and nitro build config

* fix: switched to resvg-wasm

* fix: trying out fetch with import meta url

* fix: trying out copy wasm file manually

* fix: wrong file path

* fix: trying out esmImport

* fix: oups

* fix: giving up

* fix: await initialization

* fix: still nothing

* Revert "fix: still nothing"

This reverts commit dcb9fe3837a32ec4149f41c9b8925ae0e2fbdb79.

* fix: implement suggestions

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

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

* Update .github/workflows/pull-request.yml

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-08-24 11:37:07 +02:00
Jakob Guddas
e78d910a83 feat: defention of done (#1224)
* feat: defention of done

* Update new-icon.md

* Update new-icon.md

* move file pull_request_template.md

* updated the PR template

* update checklist items

* update heading

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

* Update .github/pull_request_template.md

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2023-08-21 10:30:09 +02:00
Karsa
ccc8dc2b34 Updated icon design guide (#1518)
* Update icon design guide with new design guidelines, naming convention & code convention additions.

* Fix heading levels.

* Update docs/guide/design/icon-design-guide.md
2023-08-21 10:29:51 +02:00
Jakob Guddas
96bcca0e08 Added more tags to party-popper meta data (#1519) 2023-08-19 15:15:35 +02:00
Alwyn Tan
d95b14a70b Fix: Copy SVG properties into the child in react-native-svg (#1485) 2023-08-16 23:01:41 +02:00
Daniel Bayley
a852a43ef4 Optimise box/package icons (#1481)
* Optimise `box` icon

* Optimise `package` icons

* Update icons/package-check.svg

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

* Update icons/package-minus.svg

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

* Update icons/package-plus.svg

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

* Update icons/package-search.svg

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

* Update icons/package-x.svg

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

* Update icons/package.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-08-15 19:34:12 +02:00
Jakob Guddas
4953a95e36 feat: added fallback background for browsers without prefers-color-scheme support (#1493)
* feat: added fallback background to svg preview for browsers without prefers-color-scheme support

* feat: added fallback background to svg stroke-width preview for browsers without prefers-color-scheme support
2023-08-15 19:32:25 +02:00
Martin Adamko
cad1b95b69 fix(icons): Rename send-horizonal to send-horizontal (#1496)
* fix(icons): Rename `send-horizonal` to `send-horizontal`

* feat(icons): Add `"send-horizonal"` alias for backward compatibility.
2023-08-14 09:00:42 +02:00
Daniel Bayley
92f3fb0f90 Fix database-backup/improve metadata/add database-zap (cache) icon (#1400)
* Fix `database-backup` icon

* Improve `database` icons metadata

* Add `database-zap` icon

* Update icons/database-zap.svg

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

* Update icons/database-backup.svg

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

* Revert "Update icons/database-backup.svg"

This reverts commit ef1cfd2065.

* Update icons/database-backup.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-08-13 22:09:30 +02:00
Jakob Guddas
6e8895d075 fix: generate alias files for nextjs import mapping (#1486)
* fix: generate alias files for nextjs import mapping

* Add entry files in rollup build

* improve build flow other packages

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-08-13 22:07:54 +02:00
Daniel Bayley
a1b2ce5b7b Add browser/dev tools icons (#1319)
* Add `mouse-pointer-square-dashed` (inspect variant) icon

* Rename `inspect` to `mouse-pointer-square`

* Add `crosshair-square` (inspector) variant

* Add `computer-chip` icon

* Add `applications` icon

* Add `tablet-smartphone` (devices/responsive design) icon

* Add `waypoints` icon

* Revert "Add `crosshair-square` (inspector) variant"

This reverts commit 1610b85f66.

* Revert "Add `applications` icon"

This reverts commit 06bc672f0f.

* Remove `computer-chip` icon

* Improve metadata

* Revert "Add `waypoints` icon"

This reverts commit acc47f0816.

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-08-13 12:55:48 +02:00
Jakob Guddas
4a54e87e84 fix: cogs (#1225)
* fix: cogs

* fix: cogs

* fix: added folder-cog-2 as alias for folder-cog

* chore: removed file-cog-2

* feat: rotated cogs

* feat: rotated user-cogs-2 cog
2023-08-13 11:59:48 +02:00
Daniel Bayley
d8bdbff9c6 Improve utility-pole metadata (#1157)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-08-13 11:49:25 +02:00
Zara
70cffa8dd2 Fix lucide-vue-next stroke-width must be number bug (#1492) 2023-08-11 15:29:23 +02:00
Eric Fennis
8cff59627b Update Site to Vitepress 1.0.0-rc.4 and fix gh-icon api (#1491)
* update site dependencies

* revert preact change

* update config
2023-08-09 17:09:21 +02:00
Eric Fennis
b684a0083b update snapshots 2023-08-07 22:20:14 +02:00
Eric Fennis
9fb4b0b161 Add multiline support 2023-08-07 12:59:26 +02:00
Daniel Bayley
9ec40ae506 Add transport icons (#1412)
* Refine `truck` icon

* Refine `train` icon

* Rename `train` icon to `tram`

* Add `rail-symbol` icon

* Add `m-square` (metro) icon

* Add `train-track` icon

* Add `cable-car` icon

* Add `coach` icon

* Add `traffic-cone` icon

* Add `traffic-cone` variant

* Improve metadata

* Refine `bus` icon

* Add `traffic-lights` icon

* Revert "Add `traffic-lights` icon"

This reverts commit 22dcfc7aad.

* Refine `train-track` icon

* Rename `train` to `train-high-speed`

* Refine `car` icon

* Add `car-front` variant

* Add `car-taxi` icon

* Add `car-sports` icon

* Add `parking-meter` icon

* Add `tractor` icon

* Refine `bus` icon

* Refine `tractor` icon

* Refine `car-front` icon

* Refine `car-taxi` icon

* Refine `car-sports` icon

* Add `bus-school` icon

* Remove `traffic-cone` variant

* Add `train-high-speed-tunnel` icon

* Refine `coach` icon

* Refine `cable-car` icon

* Refine `car` icon

* Refine `train-high-speed` icon

* Refine `train-high-speed-tunnel` icon

* Update icons/car-front.svg

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

* Update icons/car.svg

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

* Update icons/car-taxi.svg

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

* Refine `coach` icon

* Add `coach` variant

* Rename `tram` to `tram-front`

* Rename `train-high-speed` to `train-front`

* Rename `train-high-speed-tunnel` to `train-front-tunnel`

* Rename `bus-school` to `bus-school-front`

* Rename `coach` to `coach-front`

* Rename `coach` variant to `coach-front` variant

* Rename `car-taxi` to `car-taxi-front`

* Rename `car-sports` to `car-sports-front`

* Add `car-electric-front` icon

* Refine `car-electric-front` icon

* Refine `car` icon

* Add `ship-wheel` icon

* Improve `ship` metadata

* Remove `bus-school-front` icon

* Remove `car-electric-front` icon

* Remove `car-sports-front` icon

* Remove `coach-front` variant

* Rename `coach-front` to `bus-front`

* Improve `train-front-tunnel` metadata

* Refine `car-taxi-front` icon

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-08-07 11:21:42 +02:00
Daniel Bayley
890514de6c Add blocks icons (#1055)
* Optimise `grid` icon

* Rename `grid` to `grid-3x3`

* Add `grid-2x2` icon

* Add `blocks` icon

* Update icons/blocks.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-08-06 16:24:50 +02:00
Eric Fennis
9463b2e445 Revert .mjs modules in build for Lucide React (#1471)
* switch to different build strategy for dynamicIconImports

* add remove for dynamicIconImports files
2023-08-06 15:47:07 +02:00
dependabot[bot]
0221022e24 Bump semver from 7.5.0 to 7.5.2 (#1469)
Bumps [semver](https://github.com/npm/node-semver) from 7.5.0 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.0...v7.5.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-04 10:47:48 +02:00
Eric Fennis
751f7cb1e3 Adjust workflow 2023-07-31 21:21:43 +02:00
Daniel Bayley
4c90b84236 Add rabbit & turtle/snail & shell/aminal icons (#1234)
* Add `rabbit` icon

* Add `turtle` icon

* Update icons/rabbit.svg

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

* Refine `rabbit` icon

* Add `snail` icon

* Add `shell` icon

* Refine `snail` icon

* Refine `shell` icon

* Refine `snail` icon

* Refine `shell` icon

…to match `snail`.

* Flip `snail` icon to better match Lucide logo

* Refine `shell` icon

…to better match `snail` and the Lucide logo.

* Improve `shell` icon metadata

* Refine `turtle` icon

* Improve `contributor`s

* Reverse `snail` icon

* Reverse `shell` icon

* Reverse `lollipop` icon

* Add `paw-print` icon

* Add `fish-symbol` icon

* Improve metadata

* Update icons/egg-off.json

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

* Update icons/paw-print.svg

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

* Update icons/rabbit.svg

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

* Update icons/shell.svg

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

* Update icons/snail.svg

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

* Update icons/turtle.svg

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

* Fix `turtle` icon

* Update icons/turtle.svg

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

* Update turtle.svg

Restores @danielbayley's original optimization.

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Karsa <contact@karsa.org>
2023-07-31 12:32:44 +02:00
Eric Fennis
01be733532 update workflow 2023-07-30 20:39:47 +02:00
Ishan
4ffa38e013 Add: Missing README Image (#1456)
* Create powered-by-vercel.svg

* Update README.md

Add Missing Image

* Update README.md

* Delete assets directory

Cleanup
2023-07-25 12:53:28 +02:00
Alexandru Bacanu
0a38dccdae Update package.json (#1452) 2023-07-24 21:48:14 +02:00
Eric Fennis
3391b5b717 update workflows 2023-07-21 10:17:43 +02:00
Daniel Bayley
5c145f4e72 Refine [pencil-]ruler icons (#1442)
* Refine `pencil-ruler` icon

* Refine `ruler` icon

…to match `pencil-ruler`.

* Update icons/ruler.svg

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

* Update icons/pencil-ruler.svg

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

* Update icons/pencil-ruler.svg

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

* Update icons/pencil-ruler.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-07-21 09:47:16 +02:00
Daniel Bayley
74429a8e92 Optimise send icon/add variant (#1411)
* Add `send` variant

* Optimise `send` icon

* Refine `send` variant

* Refine `send` variant

* Rename `send-2` to `send-horizonal`
2023-07-19 21:17:31 +02:00
Ishan
1e99499dc8 Update createLucideIcon.ts (#1439)
* Update createLucideIcon.ts

Added Missing ref prop

* Update createLucideIcon.ts

* Update createLucideIcon.ts

ForwardRef need RefAttributes

* Update packages/lucide-react/src/createLucideIcon.ts

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

* Update createLucideIcon.ts

In needs RefAttributes for Forward Ref

* Update createLucideIcon.ts

* Update createLucideIcon.ts

cleanup

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-07-19 21:16:33 +02:00
Eric Fennis
724a43e3f0 fix site build 2023-07-19 19:37:07 +02:00
Eric Fennis
fb79059fca Move dynamicImportFile to dedicated file (#1440)
* test this

* Fixes dynamicImportsMap and types
2023-07-19 19:32:34 +02:00
Daniel Bayley
9a54838538 Sort out pen[cil]/edit icons/add pencil-ruler (stationery) icon/improve metadata (#1286)
* Add `pencil-ruler` icon

* Add `pencil-eraser` icon

* Optimise `pencil` icon

* Improve stationery metadata

* Fix/rename/refine/optimise `pen`[`cil`]/`edit` icons

* Improve metadata
2023-07-18 12:26:49 +02:00
James Yeoman
c7438c0c10 Add forward and backward overlap icons (#1425)
* Add forward and backward overlap icons

* Apply code suggestions

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

* Apply metadata suggestions

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-07-18 09:56:25 +02:00
Eric Fennis
667ae303f8 add inputs in workflow 2023-07-18 09:55:07 +02:00
Eric Fennis
dc1d17181f Fix createdRelease in writeReleaseMetadata 2023-07-17 21:58:10 +02:00
Eric Fennis
26abdb904d Merge branch 'main' of https://github.com/lucide-icons/lucide 2023-07-17 21:28:46 +02:00
Eric Fennis
cf0264745e Remove alias 2023-07-17 21:28:43 +02:00
Daniel Bayley
510a5ec3b9 Add boombox icon (#1249)
* Add `boombox` icon

* Rename/refine `boom-box` icon

* Refine `boom-box` icon
2023-07-17 21:16:43 +02:00
Eric Fennis
e1bc19be4e Refactor to workflow call 2023-07-17 21:12:03 +02:00
Daniel Bayley
062894e113 Add computer (GitHub Codespaces) icon (#1269)
* Add `computer` (GitHub Codespaces)  icon

* Add `pilot` (GitHub Copilot) icon

* Improve ro`bot` metadata

* Refine co`pilot` icon

* Update icons/pilot.svg

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

* Refine `pilot` icon

* Refine `computer` icon

* Remove (co)`pilot` icon

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-07-17 20:40:34 +02:00
Eric Fennis
eaa99b35f6 Merge branch 'main' of https://github.com/lucide-icons/lucide 2023-07-17 20:16:55 +02:00
Eric Fennis
7c22ccfab4 Fix 3 Add back replace changelog formatter 2023-07-17 20:16:52 +02:00
Daniel Bayley
e0e171db81 Add shopping-basket icon (#1430)
* Add `shopping-basket` icon

* Improve `shopping-cart` metadata

* Optimise `shopping-bag` icon

* Fix `shopping-basket` icon
2023-07-17 20:14:49 +02:00
Eric Fennis
3b11552e5e Merge branch 'main' of https://github.com/lucide-icons/lucide 2023-07-17 20:09:25 +02:00
Eric Fennis
d8b455b614 Remove quote github actions 2023-07-17 20:09:23 +02:00
Daniel Bayley
79eecc89f6 Add TV/controller/connector icons (#1341)
* Add [aspect] `ratio` icon

* Rename `tv-2` to `tv-flatscreen`

* Add `triangle-right` (volume) icon

* Add `antenna` icon

* Add `connector-audio-video` icon

* Improve metadata

* Add [generic] `connector` icon

* Add `connector-usb` icon

* Improve metadata

* Add `hdmi-port` icon

* Improve metadata

* Add `connector-audio-video` icon

* Improve metadata

* Rename `connector-*` icons to `cable-*`

* Rename `cable` to `cable-plugs`

* Update icons/tv-flatscreen.json

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

* Update icons/hdmi-port.svg

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

* Update icons/ratio.json

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

* Revert "Rename `tv-2` to `tv-flatscreen`"

This reverts commit 7df3555837.

* Remove `cable-audio-video` icon

* Rename `cable-plugs` to `cable`

* Remove `cable-usb` icon

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-07-17 20:07:29 +02:00
Eric Fennis
b943430a08 Fix 2 Change log output 2023-07-17 20:06:18 +02:00
Daniel Bayley
cebb0ee84b Refine/add scissors[-square] (snippet) icon (#1266)
* Refine `scissors` icon

* Add `scissors-square` (snippet) icon

* Add `scissors-square-dashed-bottom` (snippet) icon

* Refine `scissors-square-dashed-bottom` icon

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

* Add `scissors-line-dashed` (cut along dashed line) icon

* Refine `scissors` icons gap to 2px

* Fix `scissors` optimisation

* Fix `scissors-line-dashed` optimisation

* Fix `scissors-square` optimisation

* Fix `scissors-square-dashed-bottom` optimisation
2023-07-17 19:57:02 +02:00
Eric Fennis
210c56807e Try fix changelog output 2023-07-17 19:56:14 +02:00
Daniel Bayley
c2a8f31176 Add hard-drive-[up/down]load icons (#1318)
* Add `download-hard-drive` icon

* Improve `download` metadata

* Rename `download-hard-drive` to `hard-drive-download`

* Improve metadata

* Add `hard-drive-upload` icon
2023-07-14 13:17:08 +02:00
Daniel Bayley
a3f70d5b8b Add gauge alternate icon (#1256)
* Add `gauge` alternate icon

* Improve `gauge` icons metadata

* Rename `gauge` to `gauge-circle`

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-07-13 16:41:47 +02:00
Eric Fennis
c97c6ed9e4 Improve types export for lucide-react (#1424)
* Add types plugin

* Add js doc comment

* Only enable dynamic imports for CJS and ESM builds

* Add documentation

* Adjust docs

* Add test for dynamic import

* Adjust note

* Adjustment in docs
2023-07-13 16:39:02 +02:00
Eric Fennis
e9d69c6948 Fix workflow actions 2023-07-07 18:37:51 +02:00
Daniel Bayley
270c935cd4 Optimise/improve plus/minus icons/metadata (#1381)
* Optimise `plus`/`minus` icons

* Optimise `square` icon

* Improve `plus`/`minus` icons metadata
2023-07-07 14:16:39 +02:00
Daniel Bayley
b7377d21eb Sort out chevron-* icons (#1355)
* Optimise `chevron-*` icons

* Improve `chevron-*` icons metadata

* Add `chevron-left-circle` icon

* Add `chevron-right-circle` icon

* Add `chevron-up-circle` icon

* Add `chevron-down-circle` icon

* Improve metadata
2023-07-07 13:46:50 +02:00
Eric Fennis
7ccf155ad4 Adjust workflow 2023-07-02 21:42:41 +02:00
Eric Fennis
c696d1e907 update workflow 2023-07-02 21:36:30 +02:00
Daniel Bayley
a8cf24e75a Sort out project management (kanban/gantt) icons (#1405)
* Improve `kanban`/`gantt` icons metadata

* Add `kanban` icon

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

* Rename `square-kanban-dashed` to `kanban-square-dashed`

* Rename `square-gantt` to `gantt-chart-square`

* Fix `gantt-chart` icons metadata
2023-07-02 21:12:09 +02:00
Eric Fennis
4e2773bd2d Fix indentation ci workflow 2023-07-02 14:49:02 +02:00
Eric Fennis
7c8f898893 Improve release workflow (#1397)
* first fixes release workflow

* improve workflow

* remove legacy ::set-outputs
2023-07-02 14:46:53 +02:00
Viktor Szépe
c3951d36c7 Fix latest release link in README (#1415) 2023-07-02 14:10:05 +02:00
Daniel Bayley
f958310d91 Improve scroll icons metadata (#1380) 2023-06-29 21:58:22 +02:00
Daniel Bayley
d00cbebcc4 Optimise/add table icons/simplify metadata (#1391)
* Optimise `table` icon

* Add `table-properties` (property list) icon

* Improve `table` icons metadata
2023-06-29 21:57:35 +02:00
Eric Fennis
3619dfa7f2 Bump Vitest and his dependencies (#1414)
* migration to Svelte 4

* feat: update peer dep

* feat: update lockfile

* Bump vitest and deps

---------

Co-authored-by: joseph <josephrios56@gmail.com>
2023-06-29 21:42:47 +02:00
Eric Fennis
c844bc668f Small fixes site (#1408) 2023-06-28 21:04:37 +02:00
Daniel Bayley
32dec05e0b Add VS Code Lucide SVG snippets (#1359) 2023-06-28 09:20:22 +02:00
Daniel Bayley
5394d7fceb Add tally icons (#1244)
* Add `tally` icon

* Improve `calculator` metadata

* Refine `tally` icon

* Add `tally-1` icon

* Add `tally-2` icon

* Add `tally-3` icon

* Add `tally-4` icon

* Rename `tally` icon to `tally-5`
2023-06-28 08:59:50 +02:00
Daniel Bayley
8dea4c7b7f Add shipping/container (Docker) icons (#1372)
* Add `container` (Docker) icon

* Add `arrows-up-from-line` (this way up) icon
2023-06-27 21:39:20 +02:00
Nathaniel
b8a595275d Add area-chart icon (#1376)
* Add  icon

* Move top line up 1px

* Update paths

* Optimize paths
2023-06-27 21:38:18 +02:00
Daniel Bayley
a7b3ecde63 Add gallery icons (#1389)
* Add `gallery-vertical` icon

* Add `gallery-horizontal` icon

* Add `gallery-vertical-end` icon

* Add `gallery-horizontal-end` icon

* Add `gallery-thumbnails` icon
2023-06-27 21:12:50 +02:00
Daniel Bayley
8bcfc225ce Improve dashed icons metadata (#1361)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-06-25 12:57:44 +02:00
Eric Fennis
1d608db223 Improve labeler paths for site label 2023-06-25 10:02:34 +02:00
Eric Fennis
c1cb5d9bc2 Add labeler (#1379) 2023-06-23 09:37:16 +02:00
Daniel Bayley
66f51474cd Optimise gem icon/improve metadata (#1305)
* Optimise `gem` icon

* Improve `gem` metadata
2023-06-23 09:36:47 +02:00
Daniel Bayley
af0b16bc10 Add wallet-cards icon/wallet variant/optimise credit-card icon/improve metadata (#1332)
* Add `wallet` variant

* Add `wallet-cards` icon

* Optimise `credit-card` icon

* Refine `wallet` icon

* Refine `wallet` variant

* Revert `credit-card` changes

…Handled in #1350.

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-06-23 09:21:54 +02:00
Daniel Bayley
46d6c3c119 Add [cassette/video]-tape icons (#1248)
* Add `cassette-tape` icon

* Add `videotape` (VHS) icon

* Improve `video` metadata

* Improve `voicemail` metadata

* Refine `videotape` icon

* Update icons/cassette-tape.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-23 09:08:17 +02:00
Daniel Bayley
d3b8510602 Add generic folder-root/sync icons (#1215)
* Add generic `folder-root` icon

* Add `folder-dot` icon

* Add `folder-open-dot` icon

* Add `folder-sync` icon

* Refine `folder-sync` icon
2023-06-23 08:46:41 +02:00
Daniel Bayley
97e0f30627 Add square-kanban/gantt (project) icons (#1201)
* Add `project` icon

* Add `project-template` icon

* Add `project-roadmap` icon

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

* Rename `project-roadmap` to `square-gantt`

* Add `gantt-chart` icon

* Improve `target` metadata

* Add `folder-kanban` (project folder) icon
2023-06-23 08:46:19 +02:00
Daniel Bayley
24676ddc8e Add layout-list-check icon (#1232)
* Add `layout-list-check` icon

* Refine `layout-list` icon

* Rename `layout-list-check` icon to `list-todo`

* Add `list-checks` icon

* Update icons/list-checks.svg

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

* Update icons/list-todo.svg

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

* Revert/refine `layout-list` icon

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-23 08:02:08 +02:00
Daniel Bayley
92689a3328 Improve undo-2 metadata (#1339)
* Add `arrow-back` icon

* Improve `undo` variant metadata

* Improve metadata

* Revert "Add `arrow-back` icon"

This reverts commit 9e8c9d97cb.
2023-06-22 09:30:11 +02:00
Daniel Bayley
b578269ecb Add rainbow icon (#1357)
* Add `rainbow` icon

* Add `cloud` variant

* Revert "Add `cloud` variant"

This reverts commit ff23e27606.
2023-06-21 09:21:33 +02:00
Daniel Bayley
d041a2b02a Add square-* code snippet/gist icons (#1068)
* Add `square-dashed-bottom` (snippet) icon

* Add `square-code` (gist) icon

* Optimise `square-dashed-bottom` (snippet) icon

* Optimise `square-code` (gist) icon

* Add `square-dashed-bottom-code` (snippet/gist) icon

* Update icons/square-dashed-bottom.svg

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

* Refine `square-dashed-bottom-code` icon

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-06-21 09:16:02 +02:00
Daniel Bayley
0253326b17 Improve award/badge/medal icons metadata (#1371) 2023-06-19 09:20:10 +02:00
Daniel Bayley
275c2cbc69 Add candy-cane/lollipop/popsicle/dessert/popcorn icons (#1149)
* Add `lolly` icon

* Add `candy` alternate icon

* Add `ice-lolly` icon

* Rename `candy` to `candy-cane`

* Update icons/lolly.svg

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

* Rename `lolly` to `lollipop`

* Rename `ice-lolly` to `popsicle`

* Update icons/candy-cane.svg

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

* Refine `candy-cane` icon

* Fix `lollipop` to match `search` icon

* Update icons/candy-cane.svg

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

* Improve `lollipop` metadata

* Add `pudding` icon

* Rename `pudding` icon to `dessert`

* Add `popcorn` icon

* Refine `popcorn` icon

* Optimise `lollipop` icon

* Optimise `candy-cane` icon

* Optimise `popsicle` icon

* Add `donut` icon

* Add `cake-slice` icon

* Improve `cake` metadata

* Improve `donut` metadata

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-19 09:10:41 +02:00
Daniel Bayley
4bd6a273db Optimise/add arrow-*navigation icons/improve metadata (#1351)
* Optimise `arrow-*` icons

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

* Add `arrow-up-right-square` (share variant) icon

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

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

* Improve `arrow-*` icons metadata

* Improve map icons metadata
2023-06-18 22:30:09 +02:00
Eric Fennis
34155d48e7 Site improvements (#1366)
* write cions details

* add details

* Add icons details

* update gitignore

* Add node details

* Move tags api to own composable

* remove overridden var

* remopve whitespace

* log directory existence

* Fix path name

* Fix build

* Fix tags fetching

* Move max related icons to prebuild

* Improve tags scroller

* Add categories call

* cleanup

* Add active state
2023-06-15 14:44:43 +02:00
Eric Fennis
82db590192 General improvements in documentation (#1348)
* General improvements in documentation

* fix typo

* Update lucide-angular.md

* Fix build

* remove duplicated key

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-12 22:10:15 +02:00
Daniel Bayley
70be55b78f Improve/optimise null/void/x[-*]/linter icons/metadata (#1247)
* Improve null/void metadata

* Optimise `x`/linter icons
2023-06-12 21:39:49 +02:00
Daniel Bayley
7163aeaa6b Add activity-square icon (#1356)
* Add `activity-square` icon

* Optimise `activity` icon

* Improve `activity` metadata
2023-06-12 21:36:07 +02:00
Daniel Bayley
99cd76bb35 Fix circle-dot icons metadata (#1358) 2023-06-12 21:35:18 +02:00
Eric Fennis
f5fb1ec263 Small seo improvements 2023-06-12 21:13:22 +02:00
Daniel Bayley
6916aebee4 Add generic shapes icon (#1239)
* Add generic `shapes` icon

* Update icons/shapes.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-12 21:03:39 +02:00
Jakob Guddas
65d213264f Changed binary (#1188)
* Changed `binary`

Felt to aggressive.

* feat: rounded radius to zero in file-digit
2023-06-11 20:51:26 +02:00
Daniel Bayley
ee77147aff Add circle-dot-* (GitHub issue) icons (#1066)
* Improve `circle-dot` (GitHub issue) metadata

* Add `refresh-ccw-dot` icon

* Add `circle-dot-dashed` icon

* Add `circle-dashed` icon

* Improve `circle-dot` metadata

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-06-11 19:38:12 +02:00
Daniel Bayley
3b7b74fe86 Improve toggle/binary metadata (#1238) 2023-06-08 13:12:42 +02:00
Daniel Bayley
3a2f052ce9 Add presentation/projector icons (#1327)
* Add `projector` icon

* Add `presentation-screen` icon

* Add `presentation` (whiteboard) icon

* Consolidate `presentation` icons

* Refine `presentation` icon

* Update icons/projector.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-07 10:14:32 +02:00
Eric Fennis
cf34d61971 Revert title change 2023-06-07 08:38:21 +02:00
Eric Fennis
2814a63b8f Add sitemap and OG image to site (#1347)
* Add sitemap generation

* Add og image

* Fix links

* remove comments
2023-06-07 08:25:46 +02:00
Daniel Bayley
4bcab462dc Optimise/add search[-*] icons (#1261)
* Optimise `search` icon

* Add `search-code` icon

* Add `search-x` (stop/clear) icon

* Add `search-check` (complete) icon

* Add `circle-slash` (stop/clear) icon

* Refine `search-x` icon

* Refine `search-slash` icon
2023-06-06 16:03:11 +02:00
Daniel Bayley
6c93bb97c7 Add candlestick-chart icon/bar-chart-big variants (#1320)
* Add `candlestick-chart` icon

* Add `bar-chart-big` alternate icon

* Add `bar-chart-horizontal-big` alternate icon

* Refine `bar-chart-big` icons
2023-06-06 15:59:43 +02:00
Eric Fennis
3c1993c463 Fix orbit json 2023-06-06 15:57:12 +02:00
Daniel Bayley
7a57c306c3 Optimise book icons/add book-up (git force push) alternate icon (#1205)
* Optimise `book` icons

* Add `book-up` (force `push`) alternate icon
2023-06-06 15:18:40 +02:00
Jakob Guddas
32637199f5 Added round corners to network (#1190)
* Added round corners to `network`

* Update network.svg

* Update network.svg

* Update network.svg

* Update network.svg
2023-06-06 15:11:25 +02:00
Guillermo Angeles
e490bc35b8 Add Goal icon (#1251)
* Add more music icons and another mic icon (#746)

* Revert "Add more music icons and another mic icon (#746)" (#750)

This reverts commit 57cba6ae0e.

* Add `goal` icon

* Update icons/goal.svg

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

* Update icons/goal.svg

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

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Guillermo Angeles <guillermo.angeles@adoptaunabuelo.com>
Co-authored-by: Guillermo Angeles <67046262+g-angeles-aua@users.noreply.github.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-06-06 15:09:18 +02:00
Jakob Guddas
496058cc15 Update orbit.json (#1342) 2023-06-06 15:03:01 +02:00
Daniel Bayley
4ee46673af Add key variants (#1257)
* Add `key` alternate icon

* Update icons/key-2.svg

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

* Refine `key` alternate icon

* Add `key` variant

* Refine `key` alternate icons

* Rename `key-2` to `key-round`

* Rename `key-3` to `key-square`

* Improve metadata

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-04 23:16:11 +02:00
Jakob Guddas
5a46f4b87c Optimized circle-off (#1262)
* Optimized `circle-off`

* Update icons/circle-off.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-04 22:20:07 +02:00
Daniel Bayley
875e8a2d06 Add versions icons (#1141)
* Add `versions` icon

* Add `versions-files` icon

* Rename `versions-files` icon to `file-stack`

* Rename `versions` icon to `square-stack`
2023-06-04 22:12:28 +02:00
Daniel Bayley
e006a171c1 Improve operator icons metadata (#1263)
* Improve operator icons metadata

* Update icons/square-slash.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-06-04 22:10:29 +02:00
Eric Fennis
606706e8e0 Fix gh-api for strokewidths 2023-06-04 17:52:03 +02:00
2531 changed files with 36214 additions and 16278 deletions

View File

@@ -4,3 +4,7 @@ coverage
lib
tests
node_modules
.eslintrc.js
docs/images
docs/**/examples/
packages/lucide-react/dynamicIconImports.js

View File

@@ -1,22 +1,18 @@
const DEFAULT_ATTRS = require('./scripts/render/default-attrs.json');
module.exports = {
root: true,
env: {
browser: true,
node: true,
},
extends: ['airbnb-base', 'prettier'],
plugins: ['import', 'prettier'],
plugins: ['import', '@html-eslint'],
rules: {
'no-console': 'off',
'no-param-reassign': 'off',
'no-shadow': 'off',
'no-use-before-define': 'off',
'prettier/prettier': [
'error',
{
singleQuote: true,
trailingComma: 'all',
},
],
'import/no-extraneous-dependencies': [
'error',
{ devDependencies: ['**/*.test.js', '**/*.spec.js', './scripts/**'] },
@@ -33,8 +29,45 @@ module.exports = {
},
parserOptions: {
tsconfigRootDir: __dirname,
project: ['./site/tsconfig.json', './packages/*/tsconfig.json'],
project: ['./docs/tsconfig.json', './packages/*/tsconfig.json'],
ecmaVersion: 'latest',
sourceType: 'module',
},
overrides: [
{
files: ['./icons/*.svg'],
parser: '@html-eslint/parser',
rules: {
'@html-eslint/require-doctype': 'off',
'@html-eslint/no-duplicate-attrs': 'error',
'@html-eslint/no-inline-styles': 'error',
'@html-eslint/require-attrs': [
'error',
...Object.entries(DEFAULT_ATTRS).map(([attr, value]) => ({
tag: 'svg',
attr,
value: String(value),
})),
],
'@html-eslint/indent': ['error', 2],
'@html-eslint/no-multiple-empty-lines': ['error', { max: 0 }],
'@html-eslint/no-extra-spacing-attrs': [
'error',
{
enforceBeforeSelfClose: true,
},
],
'@html-eslint/require-closing-tags': [
'error',
{
selfClosing: 'always',
allowSelfClosingCustom: true,
},
],
'@html-eslint/element-newline': 'error',
'@html-eslint/no-trailing-spaces': 'error',
'@html-eslint/quotes': 'error',
},
},
],
};

View File

@@ -0,0 +1,49 @@
name: Icon request
description: Suggest a new icon for this project
labels: ['🙌 icon request']
body:
- type: markdown
attributes:
value: |
Before submitting an icon request check if it has already been requested. If there is an open request, please add a 👍.
**Important note**: No new brand logos are allowed, see https://github.com/lucide-icons/lucide/issues/670.
Existing brand icons will also be phased out. For brand icons, consider using https://simpleicons.org, which offers purpose-built SVGs that are also on a 24×24px grid.
- type: input
id: name
attributes:
label: Icon name
description: What should this icon depict? For multiple icons, provide a comma-separated list.
validations:
required: true
- type: textarea
id: use-cases
attributes:
label: Use cases
description: Why do you need this icon? Include at least two real-life use cases per requested icon, avoiding generic descriptions like "it's a car icon".
placeholder: e.g. I need a star icon to use in my rating system.
validations:
required: true
- type: textarea
id: design-ideas
attributes:
label: Design ideas
description: What should this icon look like? Provide simple, minimalistic icon examples from other sets or your own drafts to help us visualize your request.
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: Please review the following checklist before submitting your request.
options:
- label: I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
required: true
- label: I have searched existing icons to make sure it does not already exist and I didn't find any.
required: true
- label: I am not requesting a brand logo and the art is not protected by copyright.
required: true
- label: I am not requesting an icon that includes religious, political imagery or hate symbols.
required: true
- label: I have provided appropriate use cases for the icon(s) requested.
required: true

View File

@@ -0,0 +1,90 @@
name: Bug report
description: Create a report to help us improve
labels: ['🐛 bug']
body:
- type: markdown
attributes:
value: |
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
- type: checkboxes
id: packages
attributes:
label: Package
description: Which Lucide packages are affected? You may select more than one.
options:
- label: lucide
- label: lucide-angular
- label: lucide-flutter
- label: lucide-preact
- label: lucide-react
- label: lucide-react-native
- label: lucide-solid
- label: lucide-svelte
- label: lucide-vue
- label: lucide-vue-next
- label: Figma plugin
- label: source/main
- label: other/not relevant
validations:
required: true
- type: input
id: version
attributes:
label: Version
description: What version of Lucide are you running?
placeholder: e.g. 0.289.1
validations:
required: true
- type: checkboxes
id: browsers
attributes:
label: Browser
description: In which browser(s) are you experiencing the issue? You may select more than one.
options:
- label: Chrome/Chromium
- label: Firefox
- label: Safari
- label: Edge
- label: iOS Safari
- label: Opera
- label: Other/not relevant
validations:
required: false
- type: checkboxes
id: operating-systems
attributes:
label: Operating system
description: In which operating systems a you experiencing the issue? You may select more than one.
options:
- label: Windows
- label: Linux
- label: macOS
- label: Other/not relevant
- type: textarea
id: description
attributes:
label: Description
description: Try to describe in detail the problem you're running into and provide additional context about your working environment if necessary.
placeholder: e.g. When I do X, Y happens instead of Z
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce
description: Please provide a detailed guide on how this issue can be reproduced or a live example with a working reproduction on Codesandbox, JSFiddle or similar.
placeholder: |
1. Import `check` icon
2. Add to a React component/view
3. Run the react app
4. Notice that the `check` isn't rendering correctly which seems a encoding problem
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: Please review the following checklist before submitting your issue.
options:
- label: I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
required: true

View File

@@ -0,0 +1,62 @@
name: lucide.dev bug report
description: Help us improve the Lucide site
labels: ['🐛 bug', '🌍 site']
body:
- type: markdown
attributes:
value: |
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
- type: checkboxes
id: browsers
attributes:
label: Browser
description: In which browser(s) are you experiencing the issue? You may select more than one.
options:
- label: Chrome/Chromium
- label: Firefox
- label: Safari
- label: Edge
- label: iOS Safari
- label: Opera
- label: Other/not relevant
validations:
required: false
- type: checkboxes
id: operating-systems
attributes:
label: Operating system
description: In which operating systems are you experiencing the issue? You may select more than one.
options:
- label: Windows
- label: Linux
- label: macOS
- label: Other/not relevant
- type: textarea
id: description
attributes:
label: Description
description: Try to describe in detail the problem you're running into and provide additional context about your working environment if necessary.
placeholder: e.g. When I do X, Y happens instead of Z
validations:
required: true
- type: textarea
id: stepsToReproduce
attributes:
label: Steps to reproduce
description: Please provide a detailed guide on how this issue can be reproduced.
placeholder: |
1. I click on an icon
2. I click on `Copy SVG` in the drawer
3. I paste from the clipboard
4. A base64 encoded data URI is inserted.
...
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: Please review the following checklist before submitting your issue.
options:
- label: I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
required: true

View File

@@ -0,0 +1,53 @@
name: Feature request
description: Share with us your ideas on how Lucide could be improved upon.
labels: ['💡 idea']
body:
- type: markdown
attributes:
value: |
Before submitting a new feature request, please search to see if someone has filed a similar request before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
- type: checkboxes
id: packages
attributes:
label: Package
description: Which Lucide project do you wish this feature were added to? You may select more than one.
options:
- label: lucide
- label: lucide-angular
- label: lucide-flutter
- label: lucide-preact
- label: lucide-react
- label: lucide-react-native
- label: lucide-solid
- label: lucide-svelte
- label: lucide-vue
- label: lucide-vue-next
- label: Figma plugin
- label: all JS packages
- label: site
validations:
required: true
- type: textarea
id: description
attributes:
label: Description
description: Try to describe in detail the feature you wish existed.
placeholder: e.g. I want to be able to set extra CSS classes on icon components.
validations:
required: true
- type: textarea
id: use-cases
attributes:
label: Use cases
description: Why do you need this feature? Provide real-life use cases as to why this feature will be useful for others.
placeholder: e.g. I could use the extra classes to add animation or global custom styling to some icons.
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: Please check the following items before submitting your issue.
options:
- label: I have searched the existing issues to make sure this bug has not already been reported.
required: true

View File

@@ -1,68 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
labels: "🐛 bug"
---
<!--
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
-->
## Prerequisites
* Version:
* Are you running from source/main:
* Are you using a released build:
* Operating system:
* Bits:
## Step to reproduce
*(Type here)*
### Actual behavior
## Any message or error
*(Type here)*
## Resources
* Links
* Screenshots
Here is what a great bug report would look like:
```
## Prerequisites
Version: Release v3.1.0
Running from: Import using webpack
Operating system: Mac OSX
Bits: 64 bits
## Step to reproduce
- Import `check` icon
- Add to a React component/view
- Run the react app
- Notice that the `check` isn't rendering correctly which seems a encoding problem
### Actual behavior:
- Import `check` icon
- Add to a React component/view
- Run the react app
- Check is displayed with correct encoding (e.g UTF-8)
## Any message or error
No console output
...
## Resources
No resources
...
```

View File

@@ -1,18 +0,0 @@
---
name: Icon request
about: Suggest an new icon for this project
labels: "🙌 icon request"
---
<!--
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 👍.
A note about brand logos and related material : We follow the decision from Feather Icons (https://github.com/feathericons/feather/issues/763) to deprecate icons relating to brands.
You will find some in the set, but we won't add any new ones. https://simpleicons.org has 24x24 SVG icons for this purpose.
-->
## Icon Request
* Icon name:
* Use case:
* _Screenshots_ of similar icons:

View File

@@ -1,15 +0,0 @@
---
name: New icon
about: Add a new icon to the library
labels: "🎨 <icon"
---
<!-- Thanks for submitting an icon! Please make sure you read the icon design guide
at https://github.com/lucide-icons/lucide/blob/main/docs/icon-design-guide.md beforehand,
and please fill everything below. -->
- **Name of the icon** : <!-- `icon` -->
- **Tags (alternative names for this icon)** (add them in as a separate json file using the same icon name) :
- **What is the purpose of this icon?** : <!-- Shows that one can click it to... / Is used to denote or label... -->
- **100% scale preview** : <!-- upload an image -->
- **Have you considered alternative possibilities** for its naming or design? :

View File

@@ -1,5 +1,5 @@
name: "Build and Test"
description: "Builds and test a package"
name: 'Build and Test'
description: 'Builds and test a package'
inputs:
name:
@@ -7,32 +7,32 @@ inputs:
required: true
runs:
using: "composite"
using: 'composite'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 7
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-lucide-preact-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-lucide-preact-pnpm-store-
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --filter lucide-preact

View File

@@ -1,5 +1,5 @@
name: "Check icons"
description: "Cross-checks icon and category references in JSON descriptors"
name: 'Check icons'
description: 'Cross-checks icon and category references in JSON descriptors'
inputs:
name:
@@ -7,32 +7,32 @@ inputs:
required: true
runs:
using: "composite"
using: 'composite'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 7
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-lucide-preact-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-lucide-preact-pnpm-store-
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --filter .

92
.github/labeler.yml vendored Normal file
View File

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

55
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,55 @@
<!-- Thank you for contributing! -->
<!-- Insert `closes #issueNumber` here if merging this PR will resolve an existing issue -->
## What is the purpose of this pull request?
<!-- Please choose one of the following, and put an "x" next to it. -->
- [ ] New Icon
- [ ] Bug fix
- [ ] New Feature
- [ ] Documentation update
- [ ] Other:
### Description
<!-- Please insert your description here and provide info about the "what" this PR is contribution -->
### Icon use case <!-- ONLY for new icons, remove this part if not icon PR -->
<!-- What is the purpose of this icon? For each icon added, please insert at least two real life use cases (the more the better). Text like "it's a car icon" is not accepted. -->
### Alternative icon designs <!-- ONLY for new icons, remove this part if not icon PR -->
<!-- If you have any alternative icon designs, please attach them here. -->
## Icon Design Checklist <!-- ONLY for new icons, remove this part if not icon PR -->
### Concept <!-- ONLY for new icons -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I have provided valid use cases for each icon.
- [ ] I have not added any a brand or logo icon.
- [ ] I have not used any hate symbols.
- [ ] I have not included any religious or political imagery.
### Author, credits & license<!-- ONLY for new icons. -->
<!-- Please choose one of the following, and put an "x" next to it. -->
- [ ] The icons are solely my own creation.
- [ ] The icons were originally created in #<issueNumber> by @<githubUser>
- [ ] I've based them on the following Lucide icons: <!-- provide the list of icons -->
- [ ] I've based them on the following design: <!-- provide source URL and license permitting use -->
### Naming <!-- ONLY for new icons -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I've read and followed the [naming conventions](https://lucide.dev/guide/design/icon-design-guide#naming-conventions)
- [ ] I've named icons by what they are rather than their use case.
- [ ] I've provided meta JSON files in `icons/[iconName].json`.
### Design <!-- ONLY for new icons -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I've read and followed the [icon design guidelines](https://lucide.dev/guide/design/icon-design-guide)
- [ ] I've made sure that the icons look sharp on low DPI displays.
- [ ] I've made sure that the icons look consistent with the icon set in size, optical volume and density.
- [ ] I've made sure that the icons are visually centered.
- [ ] I've correctly optimized all icons to two points of precision.
## Before Submitting <!-- For every PR! -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I've read the [Contribution Guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
- [ ] I've checked if there was an existing PR that solves the same issue.

View File

@@ -10,64 +10,47 @@ on:
jobs:
create-release:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
outputs:
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Fetch tags
run: git fetch --all --tags
- name: Get latest tag
id: latest-tag
run: echo "::set-output name=LATEST_TAG::$(git describe --tags `git rev-list --tags --max-count=1`)"
- name: Install dependencies
run: pnpm install
run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT
- name: Check if we can patch
run: .github/workflows/version-up.sh --minor
- name: Create new version
id: new-version
run: echo "::set-output name=NEW_VERSION::$(.github/workflows/version-up.sh --minor)"
run: echo "NEW_VERSION=$(.github/workflows/version-up.sh --minor)" >> $GITHUB_OUTPUT
- name: Create change log
id: change-log
run: |
CHANGE_LOG=$(pnpm run generate:changelog --old-tag=${{ steps.latest-tag.outputs.LATEST_TAG }})
CHANGE_LOG="${CHANGE_LOG//'%'/'%25'}"
CHANGE_LOG="${CHANGE_LOG//$'\n'/'%0A'}"
CHANGE_LOG="${CHANGE_LOG//$'\r'/'%0D'}"
CHANGE_LOG=$(tail -n +5 <<< $CHANGE_LOG)
echo $CHANGE_LOG
echo "::set-output name=CHANGE_LOG::$CHANGE_LOG"
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
echo "CHANGE_LOG<<$EOF" >> $GITHUB_OUTPUT
echo "$CHANGE_LOG" >> $GITHUB_OUTPUT
echo "$EOF" >> $GITHUB_OUTPUT
env:
GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
@@ -76,11 +59,17 @@ jobs:
echo '${{ steps.new-version.outputs.NEW_VERSION }}'
echo '${{ steps.change-log.outputs.CHANGE_LOG }}'
- name: Release
- name: Create Release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.CREATE_RELEASE_TOKEN }}
with:
tag_name: ${{ steps.new-version.outputs.NEW_VERSION }}
name: New icons ${{ steps.new-version.outputs.NEW_VERSION }}
body: ${{ steps.change-log.outputs.CHANGE_LOG }}
start-release:
if: github.repository == 'lucide-icons/lucide'
needs: create-release
uses: './.github/workflows/release.yml'
secrets: inherit
with:
version: ${{ needs.create-release.outputs.VERSION }}

View File

@@ -1,18 +1,17 @@
name: Close stale issues and PR
on:
schedule:
- cron: "45 1 * * *"
- cron: '45 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
- uses: actions/stale@v9
with:
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.
close-pr-message: This PR was closed because it has been stalled for 5 days with no activity.
close-pr-label: 🧶 stale
days-before-stale: 30
days-before-close: 5
days-before-pr-close: -1
days-before-close: -1

12
.github/workflows/labeler.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
name: 'Pull Request Labeler'
on:
- pull_request_target
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5

25
.github/workflows/linting.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Linting
on:
pull_request:
branches:
- '**'
jobs:
linting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
- name: Install Dependencies
run: pnpm install --frozen-lockfile
- name: Run Linter
run: pnpm lint

View File

@@ -4,39 +4,24 @@ on:
pull_request:
paths:
- packages/lucide-angular/**
- tools/build-icons/**
- pnpm-lock.yaml
jobs:
lucide-angular:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-angular build

View File

@@ -4,52 +4,33 @@ on:
pull_request:
paths:
- icons/**
- tools/build-font/**
- 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
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --filter outline-svg
run: pnpm install --frozen-lockfile
- name: Outline svg Icons
run: pnpm build:outline-icons
- name: Create directory
run: mkdir lucide-font
- name: Create font in ./lucide-font
run: pnpm build:font
- name: Build font
run: fontcustom compile "./outlined" -h -n "lucide" -o ./lucide-font -F
- name: "Upload to Artifacts"
uses: actions/upload-artifact@v1
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v3
with:
name: lucide-font
path: lucide-font

View File

@@ -4,39 +4,25 @@ on:
pull_request:
paths:
- packages/lucide-preact/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide-preact:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-preact build

View File

@@ -4,39 +4,25 @@ on:
pull_request:
paths:
- packages/lucide-react-native/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide-react-native:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-react-native build

View File

@@ -4,39 +4,26 @@ on:
pull_request:
paths:
- packages/lucide-react/**
- tools/build-icons/**
- tools/rollup-plugins/**
- scripts/generateNextJSAliases.mjs
- pnpm-lock.yaml
jobs:
lucide-react:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-react build

View File

@@ -4,39 +4,25 @@ on:
pull_request:
paths:
- packages/lucide-solid/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide-solid:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-solid build

View File

@@ -4,39 +4,24 @@ on:
pull_request:
paths:
- packages/lucide-static/**
- tools/build-icons/**
- pnpm-lock.yaml
jobs:
lucide-static:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-static build

View File

@@ -4,39 +4,25 @@ on:
pull_request:
paths:
- packages/lucide-svelte/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide-svelte:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-svelte build

View File

@@ -4,39 +4,25 @@ on:
pull_request:
paths:
- packages/lucide-vue-next/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide-vue-next:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-vue-next build

View File

@@ -4,39 +4,25 @@ on:
pull_request:
paths:
- packages/lucide-vue/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide-vue:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-vue build

View File

@@ -4,39 +4,25 @@ on:
pull_request:
paths:
- packages/lucide/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide build

View File

@@ -4,137 +4,106 @@ on:
pull_request_target:
paths:
- 'icons/*.svg'
permissions:
pull-requests: write
contents: write
branches:
- main
- fix-icon-preview
jobs:
add-changed-icons-comment:
lint-filenames:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v2
- 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@v35
uses: tj-actions/changed-files@v41
with:
files: icons/*
- 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)
run: npm install simple-git
- name: Generate annotations
run: node ./scripts/updateContributors.mjs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FETCH_DEPTH: ${{ github.event.pull_request.commits }}
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
- name: Generate annotations
env:
ANNOTATION_SEVERITY: notice
ANNOTATION_TITLE: Contributors have changed!
ANNOTATION_DESCRIPTION: Don't add people who have only performed automatic optimizations.
run: |
git diff --unified=0 -- icons/*.json | # diff icon metadata (unified=0 gives the correct chunk line number)
perl -ne '/^(\+|- |@)/ && print' | # get chunks (lines that start with "+++", "@@", "+ ", "- ")
perl -pe 's/\n/%0A/' | # url encode line breaks (\n -> %0A)
perl -pe 's/%0A(\+\+\+ b\/)/\n\1/g' | # split chunks(one chunk per line)
perl -pe "s/\+\+\+ b\/([^@]*)%0A@@ -(\d+)[^\s]* \+(\d+)[^@]*@@(.*)/::$ANNOTATION_SEVERITY file=\1,line=\2,endLine=\3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A\4/"
# Example for the previous substitution
# 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
generate-changed-icons-comment:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
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/*.svg
- 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
uses: peter-evans/find-comment@v2
id: fc
id: pr-comment
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
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
uses: peter-evans/create-or-update-comment@v2
uses: peter-evans/create-or-update-comment@v3
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
comment-id: ${{ steps.pr-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
### 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>Icon X-rays</summary>
${{ steps.generate-x-rays.outputs.body }}
</details>
body-path: ./comment-markup.md
edit-mode: replace

View File

@@ -5,6 +5,13 @@ on:
tags:
- 'v*'
workflow_call:
inputs:
version:
required: true
description: Version
type: string
workflow_dispatch:
inputs:
version:
@@ -12,8 +19,8 @@ on:
required: true
jobs:
pre-build:
if: github.repository == 'lucide-icons/lucide' && contains('["locness3","ericfennis", "johnletey", "karsa-mistmere"]', github.actor)
pre-release:
if: github.repository == 'lucide-icons/lucide' && contains('["ericfennis", "karsa-mistmere"]', github.actor)
runs-on: ubuntu-latest
outputs:
VERSION: ${{ steps.get_version.outputs.VERSION }}
@@ -23,544 +30,80 @@ jobs:
id: get_version
run: |
echo $VERSION_REF
echo ::set-output name=VERSION::${VERSION_REF/refs\/tags\/\v}
echo "VERSION=${VERSION_REF/refs\/tags\/\v}" >> $GITHUB_OUTPUT
env:
VERSION_REF: ${{ github.event.inputs.version || github.ref }}
VERSION_REF: ${{ inputs.version || github.event.inputs.version || github.ref }}
lucide:
release:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
needs: pre-release
strategy:
fail-fast: false
matrix:
package:
[
'lucide',
'lucide-react',
'lucide-react-native',
'lucide-vue',
'lucide-vue-next',
'lucide-angular',
'lucide-preact',
'lucide-solid',
'lucide-svelte',
]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
run: npm config set //registry.npmjs.org/:_authToken ${{ inputs.NPM_TOKEN || secrets.NPM_TOKEN }}
- name: Set new version
run: pnpm --filter lucide version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
run: pnpm --filter ${{ matrix.package }} version --new-version ${{ needs.pre-release.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide build
run: pnpm --filter ${{ matrix.package }} build
- name: Test
run: pnpm --filter lucide test
run: pnpm --filter ${{ matrix.package }} test
- name: Publish
run: pnpm --filter lucide publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-package-json
path: packages/lucide/package.json
lucide-react:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set package.json version lucide
run: pnpm --filter lucide-react version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-react build
- name: Test
run: pnpm --filter lucide-react test
- name: Publish
run: pnpm --filter lucide-react publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-react-package-json
path: packages/lucide-react/package.json
lucide-react-native:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set package.json version lucide
run: pnpm --filter lucide-react-native version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-react-native build
- name: Test
run: pnpm --filter lucide-react-native test
- name: Publish
run: pnpm --filter lucide-react-native publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-react-native-package-json
path: packages/lucide-react-native/package.json
lucide-vue:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set new version
run: pnpm --filter lucide-vue version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-vue build
- name: Test
run: pnpm --filter lucide-vue test
- name: Publish
run: pnpm --filter lucide-vue publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-vue-package-json
path: packages/lucide-vue/package.json
lucide-vue-next:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set new version
run: pnpm --filter lucide-vue-next version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-vue-next build
- name: Test
run: pnpm --filter lucide-vue-next test
- name: Publish
run: pnpm --filter lucide-vue-next publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-vue-next-package-json
path: packages/lucide-vue-next/package.json
lucide-angular:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set package.json version lucide
run: pnpm --filter lucide-angular version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-angular build
- name: Test
run: pnpm --filter lucide-angular test
- name: Publish
run: pnpm --filter lucide-angular publish --no-git-checks --ignore-scripts
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-angular-package-json
path: packages/lucide-angular/package.json
lucide-preact:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set package.json version lucide
run: pnpm --filter lucide-preact version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-preact build
- name: Test
run: pnpm --filter lucide-preact test
- name: Publish
run: pnpm --filter lucide-preact publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-preact-package-json
path: packages/lucide-preact/package.json
lucide-solid:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set package.json version lucide
run: pnpm --filter lucide-solid version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-solid build
- name: Test
run: pnpm --filter lucide-solid test
- name: Publish
run: pnpm --filter lucide-solid publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-solid-package-json
path: packages/lucide-solid/package.json
lucide-svelte:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set package.json version lucide
run: pnpm --filter lucide-svelte version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-svelte build
- name: Test
run: pnpm --filter lucide-svelte test
- name: Publish
run: pnpm --filter lucide-svelte publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-svelte-package-json
path: packages/lucide-svelte/package.json
run: pnpm --filter ${{ matrix.package }} publish --no-git-checks --ignore-scripts
lucide-static:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: [pre-build, lucide-font]
needs: [pre-release, lucide-font]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v2
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set new version
run: pnpm --filter lucide-static version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
run: pnpm --filter lucide-static version --new-version ${{ needs.pre-release.outputs.VERSION }} --no-git-tag-version
- name: Move Font
run: cp -r lucide-font packages/lucide-static/font
@@ -571,185 +114,52 @@ jobs:
- name: Publish
run: pnpm --filter lucide-static publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-static-package-json
path: packages/lucide-static/package.json
lucide-font:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
container: ericfennis/lucide-font:latest
needs: pre-release
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
version: 8
- uses: actions/setup-node@v4
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 }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --filter outline-svg
run: pnpm install --frozen-lockfile
- name: Outline svg Icons
run: pnpm build:outline-icons
- name: Create directory
run: mkdir lucide-font
- name: Create font in ./lucide-font
run: pnpm build:font
- name: Build font
run: fontcustom compile "./outlined" -h -n "lucide" -o ./lucide-font -F
- name: "Upload to Artifacts"
uses: actions/upload-artifact@v1
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v3
with:
name: lucide-font
path: lucide-font
lucide-flutter:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: [pre-build, lucide-font]
container:
image: cirrusci/flutter:latest
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v2
- uses: actions/cache@v2
with:
path: ~/.pub-cache
key: ${{ runner.os }}-pub-${{ hashFiles('~/.pub-cache') }}
restore-keys: |
${{ runner.os }}-pub-
- name: Setup credentials
run: |
mkdir -p ~/.pub-cache
cat <<EOF > ~/.pub-cache/credentials.json
{
"accessToken": "${{ secrets.GOOGLE_OAUTH_ACCESS_TOKEN }}",
"refreshToken": "${{ secrets.GOOGLE_OAUTH_REFRESH_TOKEN }}",
"idToken": "${{ secrets.GOOGLE_OAUTH_ID_TOKEN }}",
"tokenEndpoint":"https://accounts.google.com/o/oauth2/token",
"scopes": [ "openid", "https://www.googleapis.com/auth/userinfo.email" ],
"expiration": 1629835569218
}
EOF
- name: Get packages
run: flutter pub get
working-directory: packages/lucide-flutter
- name: List lucide-font folder
run: ls lucide-font
- name: Copy assets from lucide-font directory
run: |
mkdir packages/lucide-flutter/assets
cp lucide-font/lucide.ttf packages/lucide-flutter/assets/lucide.ttf
cp lucide-font/lucide-preview.html packages/lucide-flutter/assets/lucide-preview.html
- name: Generate exports file
run: |
dart tool/generate_fonts.dart assets/lucide-preview.html
flutter format .
working-directory: packages/lucide-flutter
- name: Test
run: flutter test
working-directory: packages/lucide-flutter
- name: Copy License
run: cp ../../LICENSE ./LICENSE
working-directory: packages/lucide-flutter
- name: Update yaml
run: sed -E 's/(version:)[^\n]*/\1 ${{ needs.pre-build.outputs.VERSION }}/;' pubspec.yaml > pubspec && mv pubspec pubspec.yaml
working-directory: packages/lucide-flutter
- name: Flutter publish
run: flutter pub publish -f
working-directory: packages/lucide-flutter
- name: Upload pubspec.yaml
uses: actions/upload-artifact@v2
with:
name: lucide-flutter-pubspec-yaml
path: packages/lucide-flutter/pubspec.yaml
post-release:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs:
[
pre-build,
lucide,
lucide-react,
lucide-react-native,
lucide-vue,
lucide-vue-next,
lucide-angular,
lucide-svelte,
lucide-preact,
lucide-flutter,
lucide-font,
]
needs: [pre-release, lucide-font]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v2
- name: Commit package files
run: |
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-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-preact-package-json/package.json packages/lucide-preact/package.json
mv lucide-svelte-package-json/package.json packages/lucide-svelte/package.json
mv lucide-vue-next-package-json/package.json packages/lucide-vue-next/package.json
mv lucide-angular-package-json/package.json packages/lucide-angular/package.json
mv lucide-flutter-pubspec-yaml/pubspec.yaml packages/lucide-flutter/pubspec.yaml
- name: Commit package.jsons
run: |
git add packages/*/package.json packages/lucide-flutter/pubspec.yaml
git -c user.name="Lucide Bot" -c user.email="lucide-bot@users.noreply.github.com" \
commit -m ":package: Bump lucide package versions to ${{ needs.pre-build.outputs.VERSION }}" --no-verify --quiet
git remote set-url --push origin https://lucide-bot:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY.git
git push origin HEAD:main
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- name: Zip font and icons
run: |
zip -r lucide-font-${{ needs.pre-build.outputs.VERSION }}.zip lucide-font
zip -r lucide-icons-${{ needs.pre-build.outputs.VERSION }}.zip icons
zip -r lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip lucide-font
zip -r lucide-icons-${{ needs.pre-release.outputs.VERSION }}.zip icons
- name: Release zip and fonts
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.CREATE_RELEASE_TOKEN }}
with:
tag_name: v${{ needs.pre-build.outputs.VERSION }}
tag_name: ${{ needs.pre-release.outputs.VERSION }}
files: |
lucide-font-${{ needs.pre-build.outputs.VERSION }}.zip
lucide-icons-${{ needs.pre-build.outputs.VERSION }}.zip
lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip
lucide-icons-${{ needs.pre-release.outputs.VERSION }}.zip

5
.gitignore vendored
View File

@@ -17,6 +17,10 @@ packages/**/src/icons/*.js
packages/**/src/icons/*.ts
packages/**/src/icons/*.tsx
packages/**/src/aliases.ts
packages/**/src/dynamicIconImports.ts
packages/**/dynamicIconImports.js
packages/**/dynamicIconImports.d.ts
packages/**/dynamicIconImports.js.map
packages/**/LICENSE
categories.json
tags.json
@@ -30,6 +34,7 @@ docs/.vitepress/data/iconNodes
docs/.vitepress/data/iconMetaData.ts
docs/.vitepress/data/releaseMetaData.json
docs/.vitepress/data/releaseMetaData
docs/.vitepress/data/iconDetails
docs/.vitepress/data/relatedIcons.json
docs/.vercel
docs/.nitro

View File

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

19
.prettierignore Normal file
View File

@@ -0,0 +1,19 @@
pnpm-lock.yaml
# docs examples
docs/**/examples/
# 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

2
.vscode/launch.json vendored
View File

@@ -12,4 +12,4 @@
"webRoot": "${workspaceFolder}"
}
]
}
}

View File

@@ -1,7 +1,6 @@
{
"cSpell.words": [
"devs",
"preact",
"Preact"
]
"cSpell.words": ["devs", "preact", "Preact"],
"eslint.enable": true,
"eslint.validate": ["javascript", "svg"],
"svg.preview.background": "transparent"
}

95
.vscode/svg.code-snippets vendored Normal file
View File

@@ -0,0 +1,95 @@
{
"Lucide SVG": {
"scope": "xml",
"description": "Base SVG with Lucide attributes.",
"prefix": [
"svg",
"lucide"
],
"body": [
"<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\"",
">",
" $0",
"</svg>"
]
},
"Rectangle": {
"scope": "xml",
"description": "SVG `rect`angle, with Lucide defaults.",
"prefix": [
"rect",
"<rect"
],
"body": "<rect width=\"${1:20}\" height=\"${2:12}\" x=\"${3:2}\" y=\"${4:6}\" rx=\"${5|2,1|}\"/>"
},
"Square": {
"scope": "xml",
"description": "SVG square `rect`angle, with Lucide defaults.",
"prefix": [
"square",
"rect",
"<rect",
"tile"
],
"body": "<rect width=\"${1:18}\" height=\"$1\" x=\"${2:3}\" y=\"${3:$2}\" rx=\"${4|2,1|}\" />"
},
"Circle": {
"scope": "xml",
"description": "SVG `circle`, with Lucide defaults.",
"prefix": [
"circle",
"<circle"
],
"body": "<circle cx=\"${2:12}\" cy=\"${3:$2}\" r=\"${1|10,2,.5\" fill=\"currentColor|}\" />"
},
"Ellipse": {
"scope": "xml",
"description": "SVG `ellipse`.",
"prefix": [
"ellipse",
"<ellipse"
],
"body": "<ellipse cx=\"${3:12}\" cy=\"${4:$3}\" rx=\"${1:10}\" ry=\"${2:$1}\" />"
},
"Path": {
"scope": "xml",
"description": "SVG custom `path`.",
"prefix": [
"path",
"<path",
"polyline",
"<polyline",
"polygon",
"<polygon"
],
"body": "<path d=\"${1|M,m|}$0\" />"
},
"Line": {
"scope": "xml",
"description": "SVG `path`, preffered to `line` in Lucide.",
"prefix": [
"line",
"<line",
"minus"
],
"body": "<path d=\"M${3:5} ${4:12}${1|h,v|}${2:14}\" />"
},
"Dot": {
"scope": "xml",
"description": "SVG small dot, within the Lucide guidelines.",
"prefix": [
"dot",
"."
],
"body": "<path d=\"M ${1:12} ${2:$1}h.01\" />"
}
}

View File

@@ -33,7 +33,7 @@ Here you can find instructions on how to implement the guidelines with different
#### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
You can also [download an Adobe Illustrator template](https://lucide.dev/templates/illustrator-template.ai).
You can also [download an Adobe Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/illustrator_template.ai).
#### [Inkscape Guide](https://lucide.dev/docs/inkscape-guide)
@@ -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:.
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
@@ -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).
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.
There are more workspaces defined, see [`pnpm-workspace.yaml`](./pnpm-workspace.yaml).
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`](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.
@@ -144,16 +144,19 @@ Root directories
```sh
lucide
|
├── docs
│ ├── guide
├── icons
├── packages
── scripts
└── site
── scripts
```
### 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.
### 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.
### 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
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,14 +11,14 @@
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!
### Why choose Lucide over Feather Icons
- 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.
- Official libraries and integrations with popular frameworks and design tools.
- Well maintained code base.
- Active community, regularly growing and improving the set.
@@ -35,7 +35,6 @@ Lucide is trying to expand the icon set as much as possible while staying faithf
- [Static (svg sprite, font, icons ..)](#static-svg-sprite-font-icons-)
- [Figma](#figma)
- [Laravel](#laravel)
- [Flutter](#flutter)
- [Svelte](#svelte)
- [Solid](#solid)
- [Hyva](#hyva)
@@ -166,8 +165,8 @@ For more details, see the [documentation](https://github.com/lucide-icons/lucide
### Static (svg sprite, font, icons ..)
Assets:
[Font Files](https://github.com/lucide-icons/lucide/releases/tag/latest)
[SVG Files](https://github.com/lucide-icons/lucide/releases/tag/latest)
[Font Files](https://github.com/lucide-icons/lucide/releases/latest)
[SVG Files](https://github.com/lucide-icons/lucide/releases/latest)
[SVG Sprite](https://cdn.jsdelivr.net/npm/lucide-static@latest/sprite.svg)
NPM package
@@ -200,16 +199,6 @@ composer require mallardduck/blade-lucide-icons
For more details, see the [documentation](https://github.com/mallardduck/blade-lucide-icons/blob/main/README.md).
### Flutter
Implementation of Lucide icon library for Flutter applications.
```sh
flutter pub add lucide_icons
```
For more details, see the [pub.dev](https://pub.dev/packages/lucide_icons).
### Svelte
Implementation of the lucide icon library for Svelte applications.
@@ -285,6 +274,9 @@ Thank you to all the people who contributed to Lucide!
## Sponsors
<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="docs/public/vercel.svg" alt="Powered by Vercel" width="200" />
</a>
<a href="https://www.digitalocean.com/?refcode=b0877a2caebd&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="docs/public/digitalocean.svg" width="200" alt="DigitalOcean Referral Badge" /></a>

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Accessibility",
"icon": "accessibility"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Accounts & access",
"icon": "user"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Animals",
"icon": "dog"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Arrows",
"icon": "arrow-left-right"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Brands",
"icon": "facebook"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Buildings",
"icon": "building"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Charts",
"icon": "pie-chart"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Communication",
"icon": "message-circle"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Connectivity",
"icon": "wifi"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Currency",
"icon": "dollar-sign"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Cursors",
"icon": "mouse-pointer-2"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Design",
"icon": "palette"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Devices",
"icon": "smartphone"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Emoji",
"icon": "smile"
}
}

View File

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

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Food & beverage",
"icon": "coffee"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Furniture",
"icon": "rocking-chair"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Gaming",
"icon": "gamepad-2"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Home",
"icon": "home"
}
}

View File

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

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Mail",
"icon": "mail"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Maps",
"icon": "map"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Maths",
"icon": "divide"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Medical",
"icon": "heart"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Money",
"icon": "piggy-bank"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Multimedia",
"icon": "play-circle"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Nature",
"icon": "sprout"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Navigation",
"icon": "compass"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Notifications",
"icon": "alert-triangle"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "People",
"icon": "person-standing"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Photography",
"icon": "camera"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Science",
"icon": "flask-conical"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Seasons",
"icon": "leaf"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Security",
"icon": "shield"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Shapes",
"icon": "triangle"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Shopping",
"icon": "shopping-bag"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Social",
"icon": "thumbs-up"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Sports",
"icon": "type"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Sustainability",
"icon": "recycle"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Time & calendar",
"icon": "calendar"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Tools",
"icon": "hammer"
}
}

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Transportation",
"icon": "train"
}
"icon": "train-front"
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Travel",
"icon": "backpack"
}
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Weather",
"icon": "cloud-sun"
}
}

View File

@@ -12,8 +12,10 @@
},
"title": "Lucide Icons category schema",
"type": "object",
"additionalProperties": false,
"required": ["$schema", "icon", "title"],
"properties": {
"title": {
"$schema": {
"type": "string"
},
"description": {
@@ -22,13 +24,12 @@
"icon": {
"type": "string"
},
"title": {
"type": "string"
},
"weight": {
"type": "integer"
}
},
"required": [
"title",
"icon"
],
"description": "A JSON Schema for categories defined by Lucide Icons."
}

View File

@@ -0,0 +1,11 @@
import { eventHandler, setResponseHeader } from 'h3';
import iconMetaData from '../../data/iconMetaData';
export default eventHandler((event) => {
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400');
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
return Object.fromEntries(
Object.entries(iconMetaData).map(([name, { categories }]) => [name, categories]),
);
});

View File

@@ -1,41 +1,53 @@
import { eventHandler, setResponseHeader, defaultContentType } from 'h3'
import { renderToString, renderToStaticMarkup } from 'react-dom/server'
import { createElement } from 'react'
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
import { renderToString, renderToStaticMarkup } from 'react-dom/server';
import { createElement } from 'react';
import SvgPreview from '../../lib/SvgPreview/index.tsx';
import iconNodes from '../../data/iconNodes'
import createLucideIcon from 'lucide-react/src/createLucideIcon'
import iconNodes from '../../data/iconNodes';
import createLucideIcon from 'lucide-react/src/createLucideIcon';
import Backdrop from '../../lib/SvgPreview/Backdrop.tsx';
export default eventHandler((event) => {
const { params } = event.context
const { params } = event.context;
const [name, svgData] = params.data.split('/');
const data = svgData.slice(0, -4);
const pathData = params.data.split('/');
const data = pathData.at(-1).slice(0, -4);
const [name] = pathData;
const src = Buffer.from(data, 'base64').toString('utf8');
const children = []
const children = [];
if (name in iconNodes) {
const iconNode = iconNodes[name]
// Finds the longest matching icon to be use as the backdrop.
// For `square-dashed-bottom-code` it suggests `square-dashed-bottom-code`.
// For `square-dashed-bottom-i-dont-exist` it suggests `square-dashed-bottom`.
const backdropName = name
.split('-')
.map((_, idx, arr) => arr.slice(0, idx + 1).join('-'))
.reverse()
.find((groupName) => groupName in iconNodes);
if (backdropName) {
const iconNode = iconNodes[backdropName];
const LucideIcon = createLucideIcon(name, iconNode)
const svg = renderToStaticMarkup(createElement(LucideIcon))
const LucideIcon = createLucideIcon(backdropName, iconNode);
const svg = renderToStaticMarkup(createElement(LucideIcon));
const backdropString = svg.replace(/<svg[^>]*>|<\/svg>/g, '');
children.push(createElement(Backdrop, { backdropString, src }))
children.push(
createElement(Backdrop, {
backdropString,
src,
color: name in iconNodes ? 'red' : '#777',
}),
);
}
const svg = Buffer.from(
// We can't use jsx here, is not supported here by nitro.
renderToString(createElement(SvgPreview, {src, showGrid: true}, children)).replace(
/>/,
'><style>@media screen and (prefers-color-scheme: dark) { svg { stroke: #fff } }</style>'
)
renderToString(createElement(SvgPreview, { src, showGrid: true }, children)),
).toString('utf8');
defaultContentType(event, 'image/svg+xml')
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000')
defaultContentType(event, 'image/svg+xml');
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
return svg
})
return svg;
});

View File

@@ -0,0 +1,73 @@
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
import { Resvg, initWasm } from '@resvg/resvg-wasm';
import wasm from './loadWasm';
var initializedResvg = initWasm(wasm);
export default eventHandler(async (event) => {
const { params = {} } = event.context;
await initializedResvg;
const imageSize = 96;
const [iconSizeString, svgData] = params.data.split('/');
const iconSize = parseInt(iconSizeString, 10);
const data = svgData.slice(0, -4);
const src = Buffer.from(data, 'base64').toString('utf8');
const svg = (src.includes('<svg') ? src : `<svg>${src}</svg>`)
.replace(/(\r\n|\n|\r)/gm, '')
.replace(
/<svg[^>]*/,
`<svg
xmlns="http://www.w3.org/2000/svg"
width="${iconSize}"
height="${iconSize}"
viewBox="0 0 24 24"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
`,
);
const resvg = new Resvg(svg, { background: '#000' });
const pngData = resvg.render();
const pngBuffer = Buffer.from(pngData.asPng());
defaultContentType(event, 'image/svg+xml');
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
return `
<svg xmlns="http://www.w3.org/2000/svg" width="${imageSize}" height="${imageSize}" viewBox="0 0 ${imageSize} ${imageSize}">
<style>
@media screen and (prefers-color-scheme: light) {
#fallback-background { fill: transparent; }
}
@media screen and (prefers-color-scheme: dark) {
#fallback-background { fill: transparent; }
rect { fill: #fff; }
}
</style>
<mask id="mask">
<image
width="${imageSize}"
height="${imageSize}"
href="data:image/png;base64,${pngBuffer.toString('base64')}"
image-rendering="pixelated"
/>
</mask>
<rect
id="fallback-background"
width="${imageSize}"
height="${imageSize}" ry="${imageSize / 24}"
fill="#fff"
/>
<rect
width="${imageSize}"
height="${imageSize}"
fill="#000"
mask="url(#mask)"
/>
</svg>`;
});

View File

@@ -0,0 +1,15 @@
import fs from 'fs';
import module from 'node:module';
/* WASM_IMPORT */
let wasm;
if (process.env.NODE_ENV === 'development') {
const require = module.createRequire(import.meta.url);
wasm = fs.readFileSync(require.resolve('@resvg/resvg-wasm/index_bg.wasm'));
} else {
wasm = resvg_wasm;
}
export default wasm;

View File

@@ -0,0 +1,44 @@
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
import { renderToString } from 'react-dom/server';
import { createElement } from 'react';
import SvgPreview from '../../../lib/SvgPreview/index.tsx';
import createLucideIcon, { IconNode } from 'lucide-react/src/createLucideIcon';
import { parseSync } from 'svgson';
export default eventHandler((event) => {
const { params } = event.context;
const [strokeWidth, svgData] = params.data.split('/');
const data = svgData.slice(0, -4);
const src = Buffer.from(data, 'base64').toString('utf8');
const Icon = createLucideIcon(
'icon',
parseSync(src.includes('<svg') ? src : `<svg>${src}</svg>`).children.map(
({ name, attributes }) => [name, attributes],
) as IconNode,
);
const svg = Buffer.from(
// We can't use jsx here, is not supported here by nitro.
renderToString(createElement(Icon, { strokeWidth }))
.replace(/fill\="none"/, 'fill="#fff"')
.replace(
/>/,
`><style>
@media screen and (prefers-color-scheme: light) {
svg { fill: transparent !important; }
}
@media screen and (prefers-color-scheme: dark) {
svg { stroke: #fff; fill: transparent !important; }
}
</style>`,
),
).toString('utf8');
defaultContentType(event, 'image/svg+xml');
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
return svg;
});

View File

@@ -1,29 +1,30 @@
import { eventHandler, getQuery, setResponseHeader } from 'h3'
import iconNodes from '../../data/iconNodes'
import { IconNodeWithKeys } from '../../theme/types'
import { eventHandler, getQuery, setResponseHeader } from 'h3';
import iconNodes from '../../data/iconNodes';
import { IconNodeWithKeys } from '../../theme/types';
export default eventHandler((event) => {
const query = getQuery(event)
const query = getQuery(event);
const withUniqueKeys = query.withUniqueKeys === 'true'
const withUniqueKeys = query.withUniqueKeys === 'true';
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400')
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400');
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
if (withUniqueKeys) {
return iconNodes
return iconNodes;
}
return Object.entries(iconNodes).reduce((acc, [name, iconNode]) => {
if (withUniqueKeys) {
return [name, iconNode]
return [name, iconNode];
}
const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs}]) => {
return [name, attrs]
})
const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs }]) => {
return [name, attrs];
});
acc[name] = newIconNode
acc[name] = newIconNode;
return acc
}, {})
})
return acc;
}, {});
});

View File

@@ -1,29 +1,29 @@
import { eventHandler, getQuery, setResponseHeader, createError } from 'h3'
import iconNodes from '../../data/iconNodes'
import createLucideIcon from 'lucide-react/src/createLucideIcon'
import { renderToString } from 'react-dom/server'
import { createElement } from 'react'
import { eventHandler, getQuery, setResponseHeader, createError } from 'h3';
import iconNodes from '../../data/iconNodes';
import createLucideIcon from 'lucide-react/src/createLucideIcon';
import { renderToString } from 'react-dom/server';
import { createElement } from 'react';
export default eventHandler((event) => {
const { params } = event.context
const { params } = event.context;
const iconNode = iconNodes[params.iconName]
const iconNode = iconNodes[params.iconName];
if (iconNode == null) {
const error = createError({
statusCode: 404,
message: `Icon "${params.iconName}" not found`,
})
});
return sendError(event, error)
return sendError(event, error);
}
const width = getQuery(event).width || undefined
const height = getQuery(event).height || undefined
const color = getQuery(event).color || undefined
const strokeWidth = getQuery(event).strokeWidth || undefined
const width = getQuery(event).width || undefined;
const height = getQuery(event).height || undefined;
const color = getQuery(event).color || undefined;
const strokeWidth = getQuery(event).strokeWidth || undefined;
const LucideIcon = createLucideIcon(params.iconName, iconNode)
const LucideIcon = createLucideIcon(params.iconName, iconNode);
const svg = Buffer.from(
renderToString(
@@ -32,13 +32,13 @@ export default eventHandler((event) => {
height,
color: color ? `#${color}` : undefined,
strokeWidth,
}
))
}),
),
).toString('utf8');
defaultContentType(event, 'image/svg+xml')
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000')
defaultContentType(event, 'image/svg+xml');
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
return svg
})
return svg;
});

View File

@@ -1,10 +1,9 @@
import { eventHandler, setResponseHeader } from 'h3'
import iconMetaData from '../../data/iconMetaData'
import { eventHandler, setResponseHeader } from 'h3';
import iconMetaData from '../../data/iconMetaData';
export default eventHandler((event) => {
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400')
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400');
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
return Object.fromEntries(
Object.entries(iconMetaData).map(([name, { tags }]) => [ name, tags ])
)
})
return Object.fromEntries(Object.entries(iconMetaData).map(([name, { tags }]) => [name, tags]));
});

View File

@@ -1,3 +1,3 @@
export default eventHandler(() => {
return { nitro: 'Is Awesome! asda' }
})
return { nitro: 'Is Awesome! asda' };
});

View File

@@ -1,65 +1,175 @@
import { fileURLToPath, URL } from 'node:url'
import path from 'path';
import { defineConfig } from 'vitepress'
import { fileURLToPath, URL } from 'node:url';
import { defineConfig } from 'vitepress';
import sidebar from './sidebar';
const title = 'Lucide';
const socialTitle = 'Lucide Icons';
const description = 'Beautiful & consistent icon toolkit made by the community.';
// https://vitepress.dev/reference/site-config
export default defineConfig({
title,
description,
cleanUrls: true,
title: "Lucide",
description: "Beautiful & consistent icon toolkit made by the community.",
outDir: '.vercel/output/static',
srcExclude: ['**/README.md'],
vite: {
resolve: {
alias: [
{
find: /^.*\/VPIconAlignLeft\.vue$/,
replacement: fileURLToPath(
new URL('./theme/components/overrides/VPIconAlignLeft.vue', import.meta.url)
)
new URL('./theme/components/overrides/VPIconAlignLeft.vue', import.meta.url),
),
},
{
find: /^.*\/VPFooter\.vue$/,
replacement: fileURLToPath(
new URL('./theme/components/overrides/VPFooter.vue', import.meta.url)
)
}
]
}
new URL('./theme/components/overrides/VPFooter.vue', import.meta.url),
),
},
],
},
},
head: [
[
'script',
{
src: 'https://plausible.io/js/script.js',
src: 'https://analytics.lucide.dev/js/script.js',
'data-domain': 'lucide.dev',
defer: ''
}
defer: '',
},
],
[
'meta',
{
property: 'og:locale',
content: 'en_US',
},
],
[
'meta',
{
property: 'og:type',
content: 'website',
},
],
[
'meta',
{
property: 'og:site_name',
content: title,
},
],
[
'meta',
{
property: 'og:title',
content: socialTitle,
},
],
[
'meta',
{
property: 'og:description',
content: description,
},
],
[
'meta',
{
property: 'og:url',
content: 'https://lucide.dev',
},
],
[
'meta',
{
property: 'og:image',
content: 'https://lucide.dev/og.png',
},
],
[
'meta',
{
property: 'og:image:width',
content: '1200',
},
],
[
'meta',
{
property: 'og:image:height',
content: '630',
},
],
[
'meta',
{
property: 'og:image:type',
content: 'image/png',
},
],
[
'meta',
{
property: 'twitter:card',
content: 'summary_large_image',
},
],
[
'meta',
{
property: 'twitter:title',
content: socialTitle,
},
],
[
'meta',
{
property: 'twitter:description',
content: description,
},
],
[
'meta',
{
property: 'twitter:image',
content: 'https://lucide.dev/og.png',
},
],
],
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
logo: {
light: '/logo.light.svg',
dark: '/logo.dark.svg'
dark: '/logo.dark.svg',
},
nav: [
{ text: 'Icons', link: '/icons/index.md' },
{ text: 'Icons', link: '/icons/' },
{ text: 'Guide', link: '/guide/' },
{ text: 'Packages', link: '/packages' },
{ text: 'Showcase', link: '/showcase' },
{ text: 'License', link: '/license' },
],
sidebar,
socialLinks: [
{ icon: 'github', link: 'https://github.com/lucide-icons/lucide' },
{ icon: 'discord', link: 'https://discord.gg/EH6nSts' }
{ icon: 'discord', link: 'https://discord.gg/EH6nSts' },
],
footer: {
message: 'Released under the ISC License.',
copyright: `Copyright © ${new Date().getFullYear()} Lucide Contributors`
copyright: `Copyright © ${new Date().getFullYear()} Lucide Contributors`,
},
editLink: {
pattern: 'https://github.com/lucide-icons/lucide/edit/main/docs/:path'
pattern: 'https://github.com/lucide-icons/lucide/edit/main/docs/:path',
},
}
})
carbonAds: {
code: 'CWYIC53U',
placement: 'lucidedev',
},
},
sitemap: {
hostname: 'https://lucide.dev/',
},
});

View File

@@ -0,0 +1,50 @@
[
{
"name": "Vercel",
"url": "https://vercel.com",
"image": {
"light": "/company-logos/vercel-light.svg",
"dark": "/company-logos/vercel-dark.svg"
}
},
{
"name": "Supabase",
"url": "https://supabase.com",
"image": {
"light": "/company-logos/supabase-light.svg",
"dark": "/company-logos/supabase-dark.svg"
}
},
{
"name": "Obsidian",
"url": "https://obsidian.md",
"image": {
"light": "/company-logos/obsidian-light.svg",
"dark": "/company-logos/obsidian-dark.svg"
}
},
{
"name": "Open Collective",
"url": "https://opencollective.com",
"image": {
"light": "/company-logos/open-collective-light.svg",
"dark": "/company-logos/open-collective-dark.svg"
}
},
{
"name": "Super",
"url": "https://super.so",
"image": {
"light": "/company-logos/super-light.svg",
"dark": "/company-logos/super-dark.svg"
}
},
{
"name": "Noodle",
"url": "https://noodle.run/",
"image": {
"light": "/company-logos/noodle-light.svg",
"dark": "/company-logos/noodle-dark.svg"
}
}
]

View File

@@ -0,0 +1,18 @@
[
{
"name": "Shadcn/ui",
"url": "https://ui.shadcn.com/",
"image": {
"light": "/library-logos/shadcn-ui-light.svg",
"dark": "/library-logos/shadcn-ui-dark.svg"
}
},
{
"name": "Tamagui",
"url": "https://tamagui.dev/",
"image": {
"light": "/library-logos/tamagui.svg",
"dark": "/library-logos/tamagui.svg"
}
}
]

View File

@@ -3,87 +3,171 @@
"order": 0,
"icon": "js",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide", "href": "https://www.npmjs.com/package/lucide" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide", "href": "https://www.npmjs.com/package/lucide" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide",
"href": "https://www.npmjs.com/package/lucide"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide",
"href": "https://www.npmjs.com/package/lucide"
}
]
},
"lucide-react": {
"order": 1,
"icon": "react",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-react", "href": "https://www.npmjs.com/package/lucide-react" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-react", "href": "https://www.npmjs.com/package/lucide-react" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-react",
"href": "https://www.npmjs.com/package/lucide-react"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-react",
"href": "https://www.npmjs.com/package/lucide-react"
}
]
},
"lucide-vue": {
"order": 2,
"icon": "vue",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-vue", "href": "https://www.npmjs.com/package/lucide-vue" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-vue", "href": "https://www.npmjs.com/package/lucide-vue" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-vue",
"href": "https://www.npmjs.com/package/lucide-vue"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-vue",
"href": "https://www.npmjs.com/package/lucide-vue"
}
]
},
"lucide-vue-next": {
"order": 3,
"icon": "vue-next",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-vue-next", "href": "https://www.npmjs.com/package/lucide-vue-next" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-vue-next", "href": "https://www.npmjs.com/package/lucide-vue-next" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-vue-next",
"href": "https://www.npmjs.com/package/lucide-vue-next"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-vue-next",
"href": "https://www.npmjs.com/package/lucide-vue-next"
}
]
},
"lucide-svelte": {
"order": 4,
"icon": "svelte",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-svelte", "href": "https://www.npmjs.com/package/lucide-svelte" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-svelte", "href": "https://www.npmjs.com/package/lucide-svelte" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-svelte",
"href": "https://www.npmjs.com/package/lucide-svelte"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-svelte",
"href": "https://www.npmjs.com/package/lucide-svelte"
}
]
},
"lucide-solid": {
"order": 4,
"icon": "solid",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-solid", "href": "https://www.npmjs.com/package/lucide-solid" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-solid", "href": "https://www.npmjs.com/package/lucide-solid" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-solid",
"href": "https://www.npmjs.com/package/lucide-solid"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-solid",
"href": "https://www.npmjs.com/package/lucide-solid"
}
]
},
"lucide-preact": {
"order": 5,
"icon": "preact",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-preact", "href": "https://www.npmjs.com/package/lucide-preact" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-preact", "href": "https://www.npmjs.com/package/lucide-preact" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-preact",
"href": "https://www.npmjs.com/package/lucide-preact"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-preact",
"href": "https://www.npmjs.com/package/lucide-preact"
}
]
},
"lucide-react-native": {
"order": 6,
"icon": "react-native",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-react-native", "href": "https://www.npmjs.com/package/lucide-react-native" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-react-native", "href": "https://www.npmjs.com/package/lucide-react-native" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-react-native",
"href": "https://www.npmjs.com/package/lucide-react-native"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-react-native",
"href": "https://www.npmjs.com/package/lucide-react-native"
}
]
},
"lucide-angular": {
"order": 7,
"icon": "angular",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-angular", "href": "https://www.npmjs.com/package/lucide-angular" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-angular", "href": "https://www.npmjs.com/package/lucide-angular" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-angular",
"href": "https://www.npmjs.com/package/lucide-angular"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-angular",
"href": "https://www.npmjs.com/package/lucide-angular"
}
]
},
"lucide-static": {
"order": 8,
"icon": "svg",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-static", "href": "https://www.npmjs.com/package/lucide-static" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-static", "href": "https://www.npmjs.com/package/lucide-static" }
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/lucide-static",
"href": "https://www.npmjs.com/package/lucide-static"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/lucide-static",
"href": "https://www.npmjs.com/package/lucide-static"
}
]
},
"lucide-flutter": {
"order": 9,
"icon": "flutter",
"shields": [
{ "alt": "flutter", "src": "https://img.shields.io/pub/v/lucide_icons", "href": "https://img.shields.io/pub/v/lucide_icons" }
{
"alt": "flutter",
"src": "https://img.shields.io/pub/v/lucide_icons",
"href": "https://img.shields.io/pub/v/lucide_icons"
}
]
}
}

View File

@@ -1,11 +1,12 @@
import React from 'react';
interface BackdropProps {
src: string
backdropString: string
src: string;
color?: string;
backdropString: string;
}
const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
const Backdrop = ({ src, color = 'red', backdropString }: BackdropProps): JSX.Element => {
return (
<>
<defs xmlns="http://www.w3.org/2000/svg">
@@ -16,18 +17,47 @@ const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
patternUnits="userSpaceOnUse"
patternTransform="rotate(45 50 50)"
>
<line stroke="red" strokeWidth={0.1} y2={1} />
<line stroke="red" strokeWidth={0.1} y2={1} />
<line
stroke={color}
strokeWidth={0.1}
y2={1}
/>
<line
stroke={color}
strokeWidth={0.1}
y2={1}
/>
</pattern>
</defs>
<mask id="svg-preview-backdrop-mask-outline" maskUnits="userSpaceOnUse">
<g stroke="#fff" dangerouslySetInnerHTML={{ __html: backdropString }} />
<g dangerouslySetInnerHTML={{ __html: src }} strokeWidth={2.05} />
<mask
id="svg-preview-backdrop-mask-outline"
maskUnits="userSpaceOnUse"
>
<g
stroke="#fff"
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
<g
dangerouslySetInnerHTML={{ __html: src }}
strokeWidth={2.05}
/>
</mask>
<mask id="svg-preview-backdrop-mask-fill" maskUnits="userSpaceOnUse">
<g stroke="#fff" dangerouslySetInnerHTML={{ __html: backdropString }} />
<g dangerouslySetInnerHTML={{ __html: src }} strokeWidth={2.05} />
<g strokeWidth={1.75} dangerouslySetInnerHTML={{ __html: backdropString }} />
<mask
id="svg-preview-backdrop-mask-fill"
maskUnits="userSpaceOnUse"
>
<g
stroke="#fff"
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
<g
dangerouslySetInnerHTML={{ __html: src }}
strokeWidth={2.05}
/>
<g
strokeWidth={1.75}
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
</mask>
<g
strokeWidth={2.25}
@@ -58,14 +88,13 @@ const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
y="0"
width="24"
height="24"
fill="red"
fill={color}
opacity={0.5}
stroke="none"
mask={'url(#svg-preview-backdrop-mask-fill)'}
/>
</>
)
}
);
};
export default Backdrop;

View File

@@ -4,14 +4,19 @@ import { getPaths, assert } from './utils';
const Grid = ({
radius,
fill,
fill = '#fff',
...props
}: {
strokeWidth: number;
radius: number;
} & PathProps<'stroke', 'strokeWidth'>) => (
<g className="svg-preview-grid-group" strokeLinecap="butt" {...props}>
<g
className="svg-preview-grid-group"
strokeLinecap="butt"
{...props}
>
<rect
className="svg-preview-grid-rect"
width={24 - props.strokeWidth}
height={24 - props.strokeWidth}
x={props.strokeWidth / 2}
@@ -43,15 +48,21 @@ const Shadow = ({
paths: Path[];
} & PathProps<'stroke' | 'strokeWidth' | 'strokeOpacity', 'd'>) => {
const groupedPaths = Object.entries(
paths.reduce((groups, val) => {
const key = val.c.id;
groups[key] = [...(groups[key] || []), val];
return groups;
}, {} as Record<number, Path[]>)
paths.reduce(
(groups, val) => {
const key = val.c.id;
groups[key] = [...(groups[key] || []), val];
return groups;
},
{} as Record<number, Path[]>,
),
);
return (
<>
<g className="svg-preview-shadow-mask-group" {...props}>
<g
className="svg-preview-shadow-mask-group"
{...props}
>
{groupedPaths.map(([id, paths]) => (
<mask
id={`svg-preview-shadow-mask-${id}`}
@@ -60,7 +71,15 @@ const Shadow = ({
strokeWidth={props.strokeWidth}
stroke="#000"
>
<rect x={0} y={0} width={24} height={24} fill="#fff" stroke="none" rx={radius} />
<rect
x={0}
y={0}
width={24}
height={24}
fill="#fff"
stroke="none"
rx={radius}
/>
<path
d={paths
.flatMap(({ prev, next }) => [
@@ -73,9 +92,16 @@ const Shadow = ({
</mask>
))}
</g>
<g className="svg-preview-shadow-group" {...props}>
<g
className="svg-preview-shadow-group"
{...props}
>
{paths.map(({ d, c: { id } }, i) => (
<path key={i} mask={`url(#svg-preview-shadow-mask-${id})`} d={d} />
<path
key={i}
mask={`url(#svg-preview-shadow-mask-${id})`}
d={d}
/>
))}
<path
d={paths
@@ -93,9 +119,16 @@ const ColoredPath = ({
paths,
...props
}: { paths: Path[]; colors: string[] } & PathProps<never, 'd' | 'stroke'>) => (
<g className="svg-preview-colored-path-group" {...props}>
<g
className="svg-preview-colored-path-group"
{...props}
>
{paths.map(({ d, c }, i) => (
<path key={i} d={d} stroke={colors[(c.name === 'path' ? i : c.id) % colors.length]} />
<path
key={i}
d={d}
stroke={colors[(c.name === 'path' ? i : c.id) % colors.length]}
/>
))}
</g>
);
@@ -137,7 +170,15 @@ const ControlPath = ({
key={i}
maskUnits="userSpaceOnUse"
>
<rect x="0" y="0" width="24" height="24" fill="#fff" stroke="none" rx={radius} />
<rect
x="0"
y="0"
width="24"
height="24"
fill="#fff"
stroke="none"
rx={radius}
/>
<path d={`M${prev.x} ${prev.y}h.01`} />
<path d={`M${next.x} ${next.y}h.01`} />
</mask>
@@ -145,7 +186,10 @@ const ControlPath = ({
);
})}
</g>
<g className="svg-preview-control-path-group" {...props}>
<g
className="svg-preview-control-path-group"
{...props}
>
{controlPaths.map(({ d, showMarker }, i) => (
<path
key={i}
@@ -154,18 +198,33 @@ const ControlPath = ({
/>
))}
</g>
<g className="svg-preview-control-path-marker-group" {...props}>
<g
className="svg-preview-control-path-marker-group"
{...props}
>
<path
d={controlPaths
.flatMap(({ prev, next, showMarker }) =>
showMarker ? [`M${prev.x} ${prev.y}h.01`, `M${next.x} ${next.y}h.01`] : []
showMarker ? [`M${prev.x} ${prev.y}h.01`, `M${next.x} ${next.y}h.01`] : [],
)
.join('')}
/>
{controlPaths.map(({ d, prev, next, startMarker, endMarker }, i) => (
<React.Fragment key={i}>
{startMarker && <circle cx={prev.x} cy={prev.y} r={pointSize / 2} />}
{endMarker && <circle cx={next.x} cy={next.y} r={pointSize / 2} />}
{startMarker && (
<circle
cx={prev.x}
cy={prev.y}
r={pointSize / 2}
/>
)}
{endMarker && (
<circle
cx={next.x}
cy={next.y}
r={pointSize / 2}
/>
)}
</React.Fragment>
))}
</g>
@@ -181,19 +240,75 @@ const Radii = ({
any
>) => {
return (
<g className="svg-preview-radii-group" {...props}>
{paths
.filter(({ circle }) => circle)
.map(({ c, prev, next, circle: { x, y, r } }) =>
c.name === 'circle' ? (
<path d={`M${x} ${y}h.01`} />
) : (
<>
<path d={`M${prev.x} ${prev.y} ${x} ${y} ${next.x} ${next.y}`} />
<circle cy={y} cx={x} r={r} />
</>
)
)}
<g
className="svg-preview-radii-group"
{...props}
>
{paths.map(
({ c, prev, next, circle }, i) =>
circle && (
<React.Fragment key={i}>
{c.name !== 'circle' && (
<path d={`M${prev.x} ${prev.y} ${circle.x} ${circle.y} ${next.x} ${next.y}`} />
)}
<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>
);
};
const Handles = ({
paths,
...props
}: { paths: Path[] } & PathProps<
'strokeWidth' | 'stroke' | 'strokeDasharray' | 'strokeOpacity',
any
>) => {
console.log(paths);
return (
<g
className="svg-preview-handles-group"
{...props}
>
{paths.map(({ c, prev, next, cp1, cp2 }) => (
<>
{cp1 && <path d={`M${prev.x} ${prev.y} ${cp1.x} ${cp1.y}`} />}
{cp1 && (
<circle
cy={cp1.y}
cx={cp1.x}
r={0.25}
/>
)}
{cp2 && <path d={`M${next.x} ${next.y} ${cp2.x} ${cp2.y}`} />}
{cp2 && (
<circle
cy={cp2.y}
cx={cp2.x}
r={0.25}
/>
)}
</>
))}
</g>
);
};
@@ -207,7 +322,12 @@ const SvgPreview = React.forwardRef<
>(({ src, children, showGrid = false, ...props }, ref) => {
const paths = typeof src === 'string' ? getPaths(src) : src;
const darkModeCss = `@media screen and (prefers-color-scheme: dark) {
const darkModeCss = `@media screen and (prefers-color-scheme: light) {
.svg-preview-grid-rect { fill: none }
}
@media screen and (prefers-color-scheme: dark) {
.svg-preview-grid-rect { fill: none }
.svg
.svg-preview-grid-group,
.svg-preview-radii-group,
.svg-preview-shadow-mask-group,
@@ -230,8 +350,27 @@ const SvgPreview = React.forwardRef<
{...props}
>
<style>{darkModeCss}</style>
{showGrid && <Grid strokeWidth={0.1} stroke="#777" strokeOpacity={0.3} radius={1} />}
<Shadow paths={paths} strokeWidth={4} stroke="#777" radius={1} strokeOpacity={0.15} />
{showGrid && (
<Grid
strokeWidth={0.1}
stroke="#777"
strokeOpacity={0.3}
radius={1}
/>
)}
<Shadow
paths={paths}
strokeWidth={4}
stroke="#777"
radius={1}
strokeOpacity={0.15}
/>
<Handles
paths={paths}
strokeWidth={0.12}
stroke="#777"
strokeOpacity={0.6}
/>
<ColoredPath
paths={paths}
colors={[
@@ -256,7 +395,19 @@ const SvgPreview = React.forwardRef<
stroke="#777"
strokeOpacity={0.3}
/>
<ControlPath radius={1} paths={paths} pointSize={1} stroke="#fff" strokeWidth={0.125} />
<ControlPath
radius={1}
paths={paths}
pointSize={1}
stroke="#fff"
strokeWidth={0.125}
/>
<Handles
paths={paths}
strokeWidth={0.12}
stroke="#FFF"
strokeOpacity={0.3}
/>
{children}
</svg>
);

View File

@@ -8,13 +8,15 @@ export type Path = {
prev: Point;
next: Point;
isStart: boolean;
circle: { x: number; y: number; r: number };
circle?: { x: number; y: number; r: number };
cp1?: Point;
cp2?: Point;
c: ReturnType<typeof getCommands>[number];
};
export type PathProps<
RequiredProps extends keyof SVGProps<SVGPathElement | SVGRectElement | SVGCircleElement>,
NeverProps extends keyof SVGProps<SVGPathElement | SVGRectElement | SVGCircleElement>
NeverProps extends keyof SVGProps<SVGPathElement | SVGRectElement | SVGCircleElement>,
> = Required<Pick<React.SVGProps<SVGElement & SVGRectElement & SVGCircleElement>, RequiredProps>> &
Omit<
React.SVGProps<SVGPathElement & SVGRectElement & SVGCircleElement>,

View File

@@ -51,7 +51,7 @@ export const getCommands = (src: string) =>
getNodes(src)
.map(convertToPathNode)
.flatMap(({ d, name }, idx) =>
new SVGPathData(d).toAbs().commands.map((c, cIdx) => ({ ...c, id: idx, idx: cIdx, name }))
new SVGPathData(d).toAbs().commands.map((c, cIdx) => ({ ...c, id: idx, idx: cIdx, name })),
);
export const getPaths = (src: string) => {
@@ -60,10 +60,10 @@ export const getPaths = (src: string) => {
let prev: Point | undefined = undefined;
let start: Point | undefined = undefined;
const addPath = (
c: typeof commands[number],
c: (typeof commands)[number],
next: Point,
d?: string,
circle?: Path['circle']
extras?: { circle?: Path['circle']; cp1?: Path['cp1']; cp2?: Path['cp2'] },
) => {
assert(prev);
paths.push({
@@ -71,7 +71,7 @@ export const getPaths = (src: string) => {
d: d || `M ${prev.x} ${prev.y} L ${next.x} ${next.y}`,
prev,
next,
circle,
...extras,
isStart: start === prev,
});
prev = next;
@@ -110,7 +110,10 @@ export const getPaths = (src: string) => {
}
case SVGPathData.CURVE_TO: {
assert(prev);
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`);
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`, {
cp1: { x: c.x1, y: c.y1 },
cp2: { x: c.x2, y: c.y2 },
});
break;
}
case SVGPathData.SMOOTH_CURVE_TO: {
@@ -146,20 +149,27 @@ export const getPaths = (src: string) => {
y1: prev.y - reflectedCp1.y,
x2: c.x2,
y2: c.y2,
})}`
})}`,
{
cp1: { x: prev.x - reflectedCp1.x, y: prev.y - reflectedCp1.y },
cp2: { x: c.x2, y: c.y2 },
},
);
break;
}
case SVGPathData.QUAD_TO: {
assert(prev);
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`);
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`, {
cp1: { x: c.x1, y: c.y1 },
cp2: { x: c.x1, y: c.y1 },
});
break;
}
case SVGPathData.SMOOTH_QUAD_TO: {
assert(prev);
const backTrackCP = (
index: number,
currentPoint: { x: number; y: number }
currentPoint: { x: number; y: number },
): { x: number; y: number } => {
const previousCommand = commands[index - 1];
if (!previousCommand) {
@@ -197,7 +207,11 @@ export const getPaths = (src: string) => {
y: c.y,
x1: prevCP.x,
y1: prevCP.y,
})}`
})}`,
{
cp1: { x: prevCP.x, y: prevCP.y },
cp2: { x: prevCP.x, y: prevCP.y },
},
);
break;
}
@@ -212,13 +226,13 @@ export const getPaths = (src: string) => {
c.lArcFlag,
c.sweepFlag,
c.x,
c.y
c.y,
);
addPath(
c,
c,
`M ${prev.x} ${prev.y} A${c.rX} ${c.rY} ${c.xRot} ${c.lArcFlag} ${c.sweepFlag} ${c.x} ${c.y}`,
c.rX === c.rY ? { ...center, r: c.rX } : undefined
{ circle: c.rX === c.rY ? { ...center, r: c.rX } : undefined },
);
break;
}
@@ -239,7 +253,7 @@ export const arcEllipseCenter = (
fa: number,
fs: number,
x2: number,
y2: number
y2: number,
) => {
const phi = (a * Math.PI) / 180;
@@ -266,7 +280,7 @@ export const arcEllipseCenter = (
sign *
Math.sqrt(
Math.max(rx * rx * ry * ry - rx * rx * y1p * y1p - ry * ry * x1p * x1p, 0) /
(rx * rx * y1p * y1p + ry * ry * x1p * x1p)
(rx * rx * y1p * y1p + ry * ry * x1p * x1p),
);
const V2 = [(rx * y1p) / ry, (-ry * x1p) / rx];

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