Compare commits

...

284 Commits

Author SHA1 Message Date
Juan Pablo
ba77aa6a76 feat(icons): added square-dashed-top-solid icon (#3204)
* Added icons/square-dashed-top-solid.svg

* Added icons/square-dashed-top-solid.json
2025-05-16 13:55:55 +02:00
Abdalrhman Almarakeby
42f36a9da3 chore(cspell): remove duplicate 'pilcrow' from custom-words.txt (#3193) 2025-05-16 13:54:19 +02:00
Karsa
9abed5ee16 fix(icons): changed landmark icon (#2967)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Updated icons/landmark.svg

* Updated icons/landmark.json

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-05-16 13:54:02 +02:00
Karsa
e6246ed5c6 fix(icons): changed warehouse icon (#2966)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Updated icons/warehouse.svg

* Updated icons/warehouse.json

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-05-16 13:53:41 +02:00
Karsa
877b467d96 fix(icons): changed university icon (#2965)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Updated icons/university.svg

* Updated icons/university.json

* Update university.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-05-16 13:53:16 +02:00
Karsa
781620d669 fix(icons): changed factory icon (#2970)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Updated icons/factory.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-05-16 13:52:50 +02:00
Jan Vincent Liwanag
3ad1f07ffc fix(lucide-react-native): support react 19 (#2951) (#3126)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-16 13:38:02 +02:00
Karsa
47880403d3 fix(icons): changed satellite icon (#3180)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Updated icons/satellite.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-05-16 12:55:42 +02:00
Jakob Guddas
89d204a35d fix(icons): changed square-code icon (#3173)
* Updated icons/square-code.svg

* Updated icons/square-code.json
2025-05-16 10:52:30 +02:00
Jakob Guddas
bdcd417c1c fix(icons): changed chevrons-left-right-ellipsis icon (#3189)
* Updated icons/chevrons-left-right-ellipsis.svg

* Updated icons/chevrons-left-right-ellipsis.json

* Updated icons/chevrons-left-right-ellipsis.json
2025-05-16 10:50:02 +02:00
Jakob Guddas
4c7738fea1 fix(icons): changed axis-3d icon (#3199)
* Updated icons/axis-3d.svg

* Updated icons/axis-3d.json
2025-05-16 10:48:40 +02:00
Jakob Guddas
12e7cfd7f7 Updated icons/clock-6.svg (#3209) 2025-05-16 10:48:03 +02:00
Jamie Law
09841dd721 Optimise a number of icons using <line> and <polyline> (#3168)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-16 10:47:35 +02:00
Yuta Osawa
8ae65a8fb1 feat(icons): added check-line icon (#2890)
* Added icons/check-line.svg

* Added icons/check-line.json

* Inherit contributors from check icon

* Fix order of properties

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-12 15:07:49 +02:00
Jakob Guddas
fda32bee52 fix(icons): changed brackets icon (#3172)
* Updated icons/brackets.svg

* Updated icons/brackets.svg

* Updated icons/brackets.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-09 10:34:07 +02:00
Alexandre
e913eab8bb feat(icons): added gpu icon (#2955)
* gpu icon added

* updated tags

* svg minification

* fix square view

* update contributors

* Update icons/gpu.json

* Update icons/gpu.json

* fix coma in gpu.json

* Format gpu.json

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-09 10:29:59 +02:00
Jakob Guddas
2408b8bb8f Revert "fix(dev): resets Absolute Stroke Width (#3005)" (#3197)
This reverts commit dcdc0b8bb3.
2025-05-09 10:10:15 +02:00
Karsa
8b257abaf6 fix(icons): changed axe icon (#3201)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Updated icons/axe.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-05-09 10:08:49 +02:00
Abdalrhman Almarakeby
c00ef3a835 chore(metadata): add lens tag to icons with magnifying glass (#3192) 2025-05-06 10:58:27 +02:00
Jakob Guddas
0d3c8f4ea2 fix(icons): arcified laptop icon (#3190)
* Updated icons/laptop.svg

* Updated icons/laptop.json

* Updated icons/laptop.json
2025-05-06 10:58:01 +02:00
Eric Fennis
771cb0bbd6 Update names in docs (#3184) 2025-05-03 09:28:29 +02:00
Jamie Law
3f34f4e7b6 fix(icons): Optimised phone- icons (#3169)
* Optimised `phone-` icons

* fix(site): remove studio link from navbar (#3166)

* Redraw handset to better align arcs still, and replace some with straight lines

* Align ring lines

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2025-05-02 22:10:13 +02:00
Kyle Angelo Galendez
e4f411ce9c feat(icons): added panda icon (#2094)
* Added icons/panda.svg

* Added icons/panda.json

* Enlarge `panda`

* Add contributors

Added "karsa-mistmere" because he redesign the `panda`

* Update panda.svg

fix(icons/panda): fix overeager optimisation by Lucide Studio

---------

Co-authored-by: Karsa <contact@karsa.org>
2025-05-02 22:04:31 +02:00
Jakob Guddas
0f47888a17 feat(icons): added soap-dispenser-droplet icon (#3088)
* Added icons/soap-dispenser-droplet.svg

* Added icons/soap-dispenser-droplet.json

* Updated icons/soap-dispenser-droplet.svg

* Updated icons/soap-dispenser-droplet.svg
2025-05-02 22:04:14 +02:00
Eric Fennis
81ce8fed07 Adjust pr template (#3183) 2025-05-02 13:17:01 +02:00
Jakob Guddas
03b3a4f179 fix(icons): changed mail icon (#3144)
* Updated icons/mail.svg

* Updated icons/mail.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-02 13:09:43 +02:00
Jakob Guddas
24178ca1bc fix(icons): changed menu icon (#3142)
* Updated icons/menu.svg

* Updated icons/menu.json

* Updated icons/menu.json
2025-05-02 13:07:07 +02:00
Jakob Guddas
e91dd659f0 fix(icons): changed bell-electric icon (#3139)
* Updated icons/bell-electric.svg

* Updated icons/bell-electric.json

* Updated icons/bell-electric.svg
2025-05-02 11:10:40 +02:00
Jakob Guddas
6277ceb274 fix(icons): changed touchpad-off icon (#3118)
* Updated icons/touchpad-off.svg

* Updated icons/touchpad-off.json
2025-05-02 11:04:16 +02:00
Jakob Guddas
45b22c9f2d fix(icons): rotate dumbbell icon (#3107)
* Updated icons/dumbbell.svg

* Updated icons/dumbbell.json

* Updated icons/dumbbell.svg

* Updated icons/dumbbell.json

* Updated icons/dumbbell.svg

* Updated icons/dumbbell.svg
2025-05-02 11:02:22 +02:00
Jakob Guddas
3a375e1a17 fix(icons): changed air-vent icon (#3117)
* Updated icons/air-vent.svg

* Updated icons/air-vent.json

* Updated icons/air-vent.svg
2025-05-02 11:00:28 +02:00
Jakob Guddas
ac09719ba6 fix(ci): reduces workflow triggers (#3150)
* ci: reduces workflow triggers

* chore: removed lint-contributors step

* Update .github/workflows/labeler.yml
2025-05-02 10:59:38 +02:00
ajokt123
8d8c41c371 4 missing categories (#3110) 2025-05-02 10:57:39 +02:00
Jamie Law
951c142e96 fix(icons): changed guitar icon (#3115)
* Updated icons/guitar.svg

* Add back missing path

* Remove guitar hole
2025-05-02 10:54:40 +02:00
Brizen Britt
dcdc0b8bb3 fix(dev): resets Absolute Stroke Width (#3005)
* Changed resetStyle to reflect changes of button on absolutestrokewidth

* removed nextTick

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-02 10:52:59 +02:00
Jakob Guddas
e11e134ce1 fix(icons): changed search icon (#3140)
* Updated icons/search.svg

* Updated icons/search.json
2025-05-02 10:31:02 +02:00
Jakob Guddas
e149de42ff fix(metadata): added tags to square-pen icon (#3155)
* Updated icons/square-pen.json

* Updated icons/square-pen.json
2025-05-02 10:27:55 +02:00
gubser
5baa37b85a feat(icons): Added clock plus icon. (#2996)
* Added clock plus icon.

* Reduced gaps.

---------

Co-authored-by: Elio Gubser <3030498-gubser@users.noreply.gitlab.com>
2025-05-02 10:24:08 +02:00
Jakob Guddas
7916c44484 fix(icons): changed expand icon (#2831)
* Updated icons/expand.svg

* Updated icons/expand.json

* Updated icons/expand.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-02 10:23:08 +02:00
Jamie Law
922ba5c781 fix(icons): changed locate-off icon (#3137)
* Updated icons/locate-off.svg

* Updated icons/locate-off.json
2025-05-02 10:14:35 +02:00
Jakob Guddas
c9c1b47e7a fix(icons): changed users icon (#3143)
* Updated icons/users.svg

* Updated icons/users.json
2025-05-02 10:14:09 +02:00
Viktor Andersson
03eb86287a use implicit return in react package (#2325)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-02 09:49:43 +02:00
Karsa
1ab3826607 feat(icons): added brush-cleaning icon (#2395)
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-02 09:40:21 +02:00
shamaamahh
2fde138c46 fix(lucide-svelte): Resolve Svelte 5 deprecation of svelte:component (#3112)
* removed flutter package link

* created drumsticks.svg and json

* Update to Svelte 5 syntax (removed svelte:component)

* Remove drumsticks icons

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-02 09:39:05 +02:00
Jakob Guddas
2640a7c585 docs(icon-design-guide): point people to lucide studio instead of svgo (#3152) 2025-05-02 09:23:36 +02:00
Jakob Guddas
25ce89b191 fix(icons): changed package-2 icon (#3174)
* Updated icons/package-2.svg

* Updated icons/package-2.json
2025-05-02 09:22:30 +02:00
Karsa
fd3f3eb607 feat(icons): added hamburger icon (#3165)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Added icons/hamburger.svg

* Added icons/hamburger.json

* Update hamburger.svg

* Update icons/hamburger.json

* Update icons/hamburger.svg

* Update icons/hamburger.json

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

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-05-02 09:21:06 +02:00
Jakob Guddas
b473c10af9 fix(site): remove studio link from navbar (#3166) 2025-04-28 18:01:10 +02:00
Jakob Guddas
a01c15cc8c fix(icons): redesigned brush icon (#3011)
* Updated icons/brush.svg

* Updated icons/brush.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-21 21:19:52 +02:00
Eric Fennis
0fccc276c3 Bump dependencies (#3096) 2025-04-21 12:37:02 +02:00
lukedukeus
06c33964cb update door icons (#3060) 2025-04-21 12:31:07 +02:00
Luis David Lopera
232d7b4557 feat(icons): added wifi-pen icon (#2576)
* Added icons/wifi-pen.svg

* Added icons/wifi-pen.json

* Apply suggestion from @jguddas - wifi-pen.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-21 12:20:25 +02:00
Jakob Guddas
3205e11173 fix(icons): changed file-badge-2 icon (#2933)
* Updated icons/file-badge-2.svg

* Updated icons/file-badge-2.json

* Updated icons/file-badge-2.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2025-04-21 12:04:24 +02:00
Jakob Guddas
0778ec87ad feat(icons): added ruler-dimension-line icon (#2535) 2025-04-21 11:33:51 +02:00
Brizen Britt
85983552ee fix(docs): PR Conventions (#3066)
* added title for title guidelines

* added example title

---------

Co-authored-by: Jacob Padilla <jp@jacobpadilla.com>
2025-04-21 10:49:10 +02:00
Brizen Britt
7b954807da Added periods (#3065) 2025-04-21 10:45:14 +02:00
Jakob Guddas
9105f0e3dd fix(icons): changed baby icon (#3073)
* Updated icons/baby.svg

* Updated icons/baby.json
2025-04-21 10:38:22 +02:00
Jakob Guddas
fe57bdd291 fix(icons): changed orbit icon (#3074)
* Updated icons/orbit.svg

* Updated icons/orbit.svg
2025-04-21 10:37:41 +02:00
Jakob Guddas
34cb6b12f8 fix(icons): changed clipboard-paste icon (#3075)
* Updated icons/clipboard-paste.svg

* Updated icons/clipboard-paste.json
2025-04-21 10:35:01 +02:00
Jakob Guddas
6a8591c348 Updated icons/book-key.svg (#3062) 2025-04-21 10:31:36 +02:00
Jakob Guddas
547b1846ae fix(icons): changed calendar-plus icon (#3085)
* Updated icons/calendar-plus.svg

* Updated icons/calendar-plus.json
2025-04-21 10:27:03 +02:00
ajokt123
187ce5cff8 fixed grammatical and spelling issues (#3090) 2025-04-21 10:26:20 +02:00
Karsa
40f544433b fix(icons): rebase non-binary on square-asterisk (#3071) 2025-04-19 17:03:51 +02:00
Jacob Padilla
05fa11e073 fixed shredder.json formatting (#3072) 2025-04-19 17:03:27 +02:00
dependabot[bot]
e4988bc1df build(deps-dev): bump vite from 5.4.15 to 5.4.17 (#2993)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.15 to 5.4.17.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.17/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.17/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-19 08:42:07 +02:00
Brizen Britt
3a24adec64 Added link for jguddas next to lucide studio (#3063) 2025-04-19 08:39:42 +02:00
Irvine Acosta
a620a0b08c feat(icons): Add columns-3-cog icon (#2763)
* add columns-cog icon and metadata

* chore: rename columns-cog to columns-3-cog as per maintainer request

* added contributors from the icon this is based on

* Remove not existing category

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 17:17:44 +02:00
Jakob Guddas
2cc06fa703 feat: added request-review workflow (#2502)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 17:10:38 +02:00
Rokas Brazdžionis
9aac2e8424 feat(angular): export icon data types (#2820)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 17:06:27 +02:00
Anthony Mariotti
2517eb642c feat(icons): Add user-lock icon (#2818)
* Added `user-lock` icon

* Corrected lock arc and alignment

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 17:01:25 +02:00
LienMaas
7acf492f63 Add electric-truck icon (#1803)
* add electric truck icon

* update json file

* small change to svg

* update icon with zap in the middle

* move icon one pixel down to align with original truck icon

* use new truck as reference

* Update truck-electric.svg

* Update truck-electric.json

* Update truck-electric.svg

* Add contributor AnnaSasDev to truck-electric.json

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 16:58:06 +02:00
Jakob Guddas
abe8910247 fix(icons): changed traffic-cone icon (#2941)
* Updated icons/traffic-cone.svg

* Updated icons/traffic-cone.json

* Updated icons/traffic-cone.svg

* Updated icons/traffic-cone.json

* Updated icons/traffic-cone.json

* Updated icons/traffic-cone.svg

* Updated icons/traffic-cone.json

* Updated icons/traffic-cone.svg
2025-04-18 16:57:25 +02:00
Jakob Guddas
b35b16e96e fix(icons): arcified lamp-* icons (#2267)
* Updated icons/lamp.svg

* Updated icons/lamp-ceiling.svg

* Updated icons/lamp-desk.svg

* Updated icons/lamp-floor.svg

* Updated icons/lamp-wall-down.svg

* Updated icons/lamp-wall-up.svg

* Updated icons/lamp.svg

* Updated icons/lamp-ceiling.svg

* Updated icons/lamp-ceiling.json

* Updated icons/lamp-floor.svg

* Updated icons/lamp-floor.json

* Updated icons/lamp-wall-up.svg

* Updated icons/lamp-wall-up.json

* Updated icons/lamp-wall-down.svg

* Updated icons/lamp-wall-down.json

* Updated icons/lamp-desk.svg

* Updated icons/lamp-desk.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 16:52:58 +02:00
Usama Khan
b49c387cfe fix(icons): updated *-cog icons (#2782)
* Updated icons/folder-cog.svg

* Updated icons/folder-cog.json

* Updated icons/folder-cog.svg

* Updated icons/brain-cog.svg

* Updated icons/brain-cog.json

* Updated icons/calendar-cog.svg

* Updated icons/calendar-cog.json

* Updated icons/cloud-cog.svg

* Updated icons/cloud-cog.json

* Updated icons/file-cog.svg

* Updated icons/file-cog.json

* Updated icons/monitor-cog.svg

* Updated icons/monitor-cog.json

* Updated icons/server-cog.svg

* Updated icons/server-cog.json

* Updated icons/user-cog.svg

* Updated icons/user-cog.json

* Updated icons/user-round-cog.svg

* Updated icons/user-round-cog.json

* Updated icons/folder-cog.svg

* Updated icons/file-cog.svg

* Updated icons/folder-cog.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 16:51:09 +02:00
Jamie Law
61d6f93023 feat(icons): added bow-arrow icon (#2418)
* Added bow-arrow.svg

* Added bow-arrow.json

* Arcify bow-arrow.svg

* Further arcify bow-arrow.svg

Rounded the tips of the bow
2025-04-18 16:49:10 +02:00
Anna Sas
1a3e9f273e feat(icons): added decimals-arrow-left icon and decimals-arrow-right (#2945)
* fix: name change reflected in contributions

* Added icons/decimals-move-left.json and icons/decimals-move-right.json

* Change: `move` to `arrow`

* Update icons/decimals-arrow-right.json

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

* Change: Updated design to karsa-mistmere example

---------

Co-authored-by: Karsa <contact@karsa.org>
2025-04-18 16:47:46 +02:00
Ali Rashidy
8023c01f37 feat(icons): added shredder icon (#3052)
* Added icons/shredder.svg

* Added icons/shredder.json

* Updated icons/shredder.svg

* Updated icons/shredder.json

* Updated icons/shredder.svg

* Updated icons/shredder.json

* Update icons/shredder.json

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

* Update icons/shredder.json

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

* Update shredder.json

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

* Update shredder.json

* Update icons/shredder.json

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>
2025-04-18 16:46:27 +02:00
Ethan Hazel
674a6bf799 feat(icons): added squares-* operation icons (#2585)
* Added icons: pathfinder (unite, minus, exclude, intersect)

* fix(icons): Altered pathfinder icon names to be more descriptive

* fix: Updated subtraction.svg to replace curves with of arcs

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

* fix(icons): Updated names to be squares-* instead of shape-*

recomended by jguddas

* fix(shapes-unite): Arcified corners & added union tag

* fix(shapes-intersect): Replacing curves with arcs

Done by jguddas

* update(squares-exclude): added extra tags invert & xor

* fix(squares-intersect): Adjusted the look to make it more clear what it's use case is

* fix(icons): Accidentally swapped out the wrong icon for previous commit

* fix(squares-intersect): fixed filename

* fix(squares-exclude): Altered icon to look better under low resolution

Co-Authored-By: Jamie Law <956081+jamiemlaw@users.noreply.github.com>

* fix(squares-subtract): Updated name to fit naming convention better

Co-Authored-By: Jamie Law <956081+jamiemlaw@users.noreply.github.com>

* fix(sqaures-intersect): Removed certain curves for consistency

* fix(squares-exclude): Fixed arcs & arcified corners

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

* fix(squares-exclude): icon was committed with wrong filename

* update(squares-exclude): updated design to be more readable

Co-Authored-By: Jakob Guddas <25524993+jguddas@users.noreply.github.com>

* fix(tags.json): Reverted accidental prettier alterations

* fix(squares-*.svg): enlarged squares to be more consistant

* fix(squares-*): added karsa-mistmere as a contributor

* fix(squares-subtract): fixed accidental copy made called squares-minus

* fix(squares-subtract): fixed rounding amount on some arcs

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Jamie Law <956081+jamiemlaw@users.noreply.github.com>
Co-authored-by: Jakob Guddas <25524993+jguddas@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 16:45:43 +02:00
Ethan Hazel
e3a476a027 feat(icons): added rectangle-goggles icon (#2515)
* Added tiolet icon

* fixed typo lol

* fixed formatting with SVG

* Added icons/vr-headset.svg

* Added icons/vr-headset.json

* removed icon added in from different branch by mistake

* fix(vr-headset): removed circles to avoid conflicts

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

* fix(rectangle-goggles): Updated name, tags, and contributors

Co-Authored-By: Jakob Guddas <25524993+jguddas@users.noreply.github.com>

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Jakob Guddas <25524993+jguddas@users.noreply.github.com>
2025-04-18 16:44:46 +02:00
Sachin kumar
a021c1dbce feat(icons): added map-pin-edit icon #2874 (#2957)
* Add map-pin-edit icon #2874

* Delete package-lock.json

* fixed contributer inherit

* added contributors

---------

Co-authored-by: SachinSettlrs <sachin.kumar@settlrs.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 15:44:18 +02:00
Karsa
a5ea7932dc fix(icons): changed cpu icon (#3033)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Updated icons/cpu.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-04-18 15:18:26 +02:00
Karsa
6eb67bde5a feat(icons): added brick-wall-fire icon (#3036)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Added icons/brick-wall-fire.svg

* Added icons/brick-wall-fire.json

---------

Co-authored-by: Karsa <karsa@karsa.org>
2025-04-18 15:17:23 +02:00
Jamie Law
19eb810537 fix(icons): changed palette icon (#3015)
* Updated icons/palette.svg

* Updated icons/palette.json
2025-04-18 15:08:28 +02:00
Jakob Guddas
6c865ccd9a feat(ci): adds dpi preview for 16, 32 and 48px (#3048)
* feat(ci): adds dpi preview for 18, 32 and 48px

* Update DPI preview from 18px to 16px

* Consolidate DPI preview sections in markup
2025-04-18 15:02:00 +02:00
Eric Fennis
667c80b39f Add Lucide studio link to CONTRIBUTING.md and site (#3058) 2025-04-18 14:32:07 +02:00
vuong quang huy
dbada2a227 feat(icons): added bubbles icon (#2582)
* Added icons/bubbles.svg

* Added icons/bubbles.json

* Updated icons/bubbles.svg

* Updated icons/bubbles.svg

* Update bubbles.json

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2025-04-18 12:51:50 +02:00
Ayberk Yavas
849d9c8af2 feat(icons): added heart-plus & heart-minus icon (#2842)
* Added icons/heart-plus.svg

* Added icons/heart-plus.json

* fix(icons): increase spacing in heart-plus icon

- Updated icons/heart-plus.svg
- Updated icons/heart-plus.json

* refactor(icons): updated heart-plus icon

- Refined the heart-plus icon design for better clarity.
- Updated its metadata accordingly.

* feat(icons): added heart-minus icon

- Added heart-minus as the inverse of heart-plus.
- Included its metadata file.

* chore(metadata): remove a tag from heart-plus icon metadata

- Update heart-plus.json
- Remove ui & ux metadata tag

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 12:30:40 +02:00
Jakob Guddas
d61d47470f fix(icons): changed pipette icon (#2927)
* Updated icons/pipette.svg

* Updated icons/pipette.json

* Updated icons/pipette.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-18 12:23:15 +02:00
Eric Fennis
8b80cf2cef Merge branch 'main' of https://github.com/lucide-icons/lucide 2025-04-18 12:22:54 +02:00
Eric Fennis
41f6c26228 ci(ci): Fix syntax 2025-04-18 12:22:49 +02:00
Paul Bradbury
02efe87c5a feat(icons): added rotate-ccw-key icon (#2587)
* Added icons/key-refresh.svg

* Added icons/key-refresh.json

* Update and rename key-refresh.json to rotate-ccw-key.json

* Rename key-refresh.svg to rotate-ccw-key.svg

* Update rotate-ccw-key.json

* Update rotate-ccw-key.svg

* Update rotate-ccw-key.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2025-04-18 12:20:20 +02:00
Jamie Law
dc39f3d96a fix(icons): changed piggy-bank icon (#3044)
* Updated icons/piggy-bank.svg

* Updated icons/piggy-bank.json
2025-04-18 12:14:54 +02:00
Eric Fennis
9879d8f4ed Merge branch 'main' of https://github.com/lucide-icons/lucide 2025-04-18 12:14:24 +02:00
Eric Fennis
f95afd258a ci(ci): Adjust to only trigger on feat(icons) 2025-04-18 12:14:19 +02:00
Jakob Guddas
6ca07ea1bc fix(icons): changed text-cursor-input icon (#3027)
* Updated icons/text-cursor-input.svg

* Updated icons/text-cursor-input.svg
2025-04-18 11:42:49 +02:00
Eric Fennis
3ff082cfd9 Merge branch 'main' of https://github.com/lucide-icons/lucide 2025-04-18 11:37:14 +02:00
Eric Fennis
f776aaa9bc ci(ci): Improve ci trigger 2025-04-18 11:37:09 +02:00
Jakob Guddas
1587bee16d fix(icons): added 2px gap between layers of layers-2 icon (#2918)
* Updated icons/layers-2.svg

* Updated icons/layers-2.json
2025-04-18 11:02:55 +02:00
Eric Fennis
c78686ceca ci(ci): Log push event 2025-04-18 10:42:19 +02:00
Jakob Guddas
a11ba9e1cd fix(react): added aria-hidden fallback for decorative icons (#2158) 2025-04-17 21:02:05 +02:00
Brizen Britt
99d992678a added link for preact in installation (#3025) 2025-04-15 18:06:58 +02:00
Jamie Law
14822456aa Increase toggle size (#3049) 2025-04-15 18:05:51 +02:00
Jakob Guddas
64d6b10239 Updated icons/text-select.svg (#3028) 2025-04-13 14:39:18 +02:00
Jakob Guddas
0232ce490d fix(icons): changed letter-text icon (#3030)
* Updated icons/letter-text.svg

* Updated icons/letter-text.svg
2025-04-13 14:38:54 +02:00
Jakob Guddas
9d9e2c995a fix(icons): changed text icon (#3029)
* Updated icons/text.svg

* Updated icons/text.json
2025-04-13 14:38:44 +02:00
Jakob Guddas
c68ee7f9a0 feat(ci): added npm package provenance attestation (#3016) 2025-04-11 10:39:20 +02:00
shamaamahh
5f5e052038 removed flutter package link (#2999) 2025-04-08 11:41:10 +02:00
Spencer Smith
aeb376f3a2 Typo fix for @lucide/astro badge (#3004) 2025-04-08 08:55:24 +02:00
dependabot[bot]
ed733916f3 build(deps-dev): bump vite from 5.4.14 to 5.4.15 (#2946)
* build(deps-dev): bump vite from 5.4.14 to 5.4.15

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.14 to 5.4.15.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.15/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.15/packages/vite)

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

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

* Revert icon change

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-04-04 14:26:19 +02:00
Brizen Britt
64a8b7d4d0 Changed packageData.name to pJson.name (#2983)
Co-authored-by: Jakob Guddas <github@jguddas.de>
2025-04-03 09:49:16 +02:00
realguse
c138c2e97d docs(readme): fix packages table (#2976) 2025-04-03 09:47:30 +02:00
Dania Rifki
d82718b222 feat(icons): added spline-pointer icon (#2932)
* Add spline-pointer icon

* Add proper attribution to contributors

* Fix spline-pointer

* Reduce amount of tags and add tools category

* Run SVG to lucide studio
2025-04-02 08:44:42 +02:00
Eric Fennis
acdcf74faf ci(release): Fix publishing scoped packages 2025-04-02 08:41:11 +02:00
Happydev
9fa525e8c6 feat(@lucide/astro): add lucide package for Astro (#2665)
* feat(lucide-astro): initial commit

* test: add test suite

* fix module resolution issue

* chore: update lock file

* chore: update lock file

* chore: fix precommit hook failing

* sync icons generated by precommit hook

* remove useless tab in template

* style: add space for readability

* docs: add bun installation instructions

* fix `clean` script

* fix testing setup

* remove unnecessary `key` props in Astro icons

* fix jest matchers types and undefined behavior

* chore: update lock file

* setup prettier for formatting Astro files

* remove mistakenly added prop from the `Icon` component

* docs: add documentation for new Astro package

* fix incorrect types in `Icon` component

* refactor: use `stroke-width` over `strokeWidth`

* fix unexpected module resolution behavior

* remove hack in test types

* remove review marker

* docs: progress on documentation of lucide-astro

* chore: remove unnecessary .gitignore

* docs: add sidebar entry

* edit package description

* fix uneven icon heights in homepage packages list

* docs: add package to readme table

* add workflows for lucide-astro package

* docs: add package-logos

* use the appropriate Astro logo in light and dark mode

* Remove inadvertently added class

* Update snapshots to reflect removed class `lucide-icon`

* remove dependency on internal `@lucide/shared` package

* fix: revert changes

* revert grid-2x2-x.json

* revert grid-2x2-check.json

* revert picture-in-picture svg

* add package in labeler workflow

* add previously uncommited utils.ts file

* fix dom type errors

* up one major from legacy package

* add package to issue and feature request templates

* docs: add acknowledgement of Aviortheking as original creator of the package

* format

* optimization: more lightweight component footprint

* refactor: simplify removal of `data-astro-source` debugging attributes

* format

* style: fix linting error once again 😠

* wip: rename package to `@lucide/astro`

* remove acknowledgment of `lucide-astro`

* fix error caused by change in build tooling

* chore: upgrade dependencies

* chore: rename lucide-astro folder

* further renaming

* use correct package name in key

* more renaming

* chore: update lock file

* apply review suggestions (#1)

set correct path for package in actions

* apply suggestions from code review (#2)

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

* apply @dotspencer's review

resolve correct link to package docs page and github source

* Format files

---------

Co-authored-by: realguse <realguse@icloud.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-03-31 16:20:33 +02:00
Joffre Veloz
20c0012e62 feat(icons): added banknote-arrow-up icon (#2947)
* Added icons/banknote-arrow-up.svg

* Added icons/banknote-arrow-up.json

* Update banknote-arrow-up.json

* Update banknote-arrow-up.svg

* Update icons/banknote-arrow-up.json

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

* Update icons/banknote-arrow-up.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2025-03-28 15:16:00 +01:00
Joffre Veloz
70248c0f42 feat(icons): added banknote-x icon (#2949)
* Added icons/banknote-x.svg

* Added icons/banknote-x.json

* Update banknote-x.json

* Update banknote-x.svg

* Update icons/banknote-x.json

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

* Update icons/banknote-x.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2025-03-28 15:15:48 +01:00
Joffre Veloz
f8af6ae309 feat(icons): added banknote-arrow-down icon (#2948)
* Added icons/banknote-arrow-down.svg

* Added icons/banknote-arrow-down.json

* Update banknote-arrow-down.json

* Update banknote-arrow-down.svg

* Update icons/banknote-arrow-down.json

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

* Update icons/banknote-arrow-down.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2025-03-28 15:15:28 +01:00
Karsa
e8f64d8dcc fix(icons): arcified candy & candy-off (#2944) 2025-03-25 17:06:23 +01:00
Jakob Guddas
4ea41dc329 feat(ci): add x.com to brand filter (#2939)
* ci: add `x.com` to brand filter

* Update custom-words.txt
2025-03-24 09:33:02 +01:00
Dante Issaias
4835ae67a9 fix(packages): consistent icon name class (#2878)
* fix: consistent icon name class

* merge classes

* fix vue-next

* update test snapshots

* fix vue-next

* fix test

* fix solid

* proper deduplication

* update snapshots

* preact

* refactor

* deprecated

* refactor tests

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-03-21 11:35:54 +01:00
dependabot[bot]
6d6aa4c4cc build(deps): bump tj-actions/changed-files in /.github/workflows (#2920)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 41 to 46.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v41...v46)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-18 14:09:31 +01:00
lukedukeus
70dad77b96 feat(icons): updates filter & adds filter-plus icon (#2917)
* Added icons/filter-add.svg

* Added icons/filter-add.json

* add contributors

* rename according to naming conventions

* add missing tags

* fill gap between plus sign and funnel

* Update icons/filter-plus.svg

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

* update filter icons

* rename filter to funnel

* tidy up

* Update funnel.svg

* Update funnel-x.svg

* Update funnel-plus.svg

* Update funnel-x.json

* Update funnel.json

* Update funnel-x.json

* Update funnel.json

* Update funnel-plus.json

---------

Co-authored-by: Karsa <contact@karsa.org>
2025-03-18 13:43:37 +01:00
Karsa
cc09030f9d fix(packages/lucide-angular): restore exporting prefixed and suffixed icon names (#2919) 2025-03-18 13:43:21 +01:00
Jakob Guddas
73a6c8045d ci: added pix to brand filter (#2908) 2025-03-17 14:38:56 +01:00
Albaraa Hasan
fccfaa3dd0 feat(icons): add saudi-riyal Symbol (#2827)
* add saudi riyal sign

* update name from sign to symbol

* fix stroke and fill issue

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

* removed symbol from the name

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-03-14 18:49:52 +01:00
Anupam Mediratta
14fec0e184 fix(deps): CVE-2024-21538 (#2871)
* fix: CVE-2024-21538 - Update package dependencies

* Update lockfile

* Format

---------

Co-authored-by: Security Bot <security-bot@github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-03-14 16:34:42 +01:00
Jakob Guddas
fcebb5c4db feat(icons): added clock-fading icon (#2405)
* Added icons/clock-fading.svg

* Added icons/clock-fading.json
2025-03-14 16:03:53 +01:00
Jakob Guddas
1058ea5ae3 feat(icons): added shrimp icon (#2319)
* Added icons/shrimp.svg

* Added icons/shrimp.json

* Updated icons/shrimp.json
2025-03-14 15:44:33 +01:00
Jamie Law
e08a1f7973 fix(icons): changed infinity icon (#2868)
* Updated icons/infinity.svg

* Updated icons/infinity.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-03-14 15:37:15 +01:00
Eric Fennis
07f9d3ea79 ci(node): Use correct node version (#2877)
* ci(node): Use correct node version

* Remove overrides

* update lock file

* Change assert to with

* Remove duplicated version
2025-03-14 11:29:59 +01:00
Karsa
73a2c9da6c fix(icons): arcified newspaper (#2885) 2025-03-14 11:25:29 +01:00
Brizen Britt
afa4176737 fix(docs): Resolves #2887 (#2889)
* play with image

* changes to width

* changes to contributing image to show on github
2025-03-14 11:25:08 +01:00
FOSS-VFX
cb86576661 Fix grammatical inconsistencies (#2899) 2025-03-14 09:09:25 +01:00
Jakob Guddas
9b738c1cb6 ci: added bluesky and spotify to brand list filter (#2857)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-03-07 16:40:12 +01:00
Eric Fennis
aefb710e5c feat(@lucide/svelte): Lucide svelte 5 package (#2753)
* Lucide svelte (#1)

* Update peerDependencies to support Svelte 5

* Bump svelte version

* Bump @testing-library/svelte version

* Remove alias in vitest.config.ts that causes tests to fail due to deprecated svelte/internal API

* Convert to svelte 5 syntax

* Bump vite & @sveltejs/vite-plugin-svelte version

* Fix error during render when children prop is missing & fix components being mounted on the server during tests

* Update test snapshots to reflect the differences in the html generated by svelte 5

* Convert class attribute to new array syntax with built-in clsx

* Convert export template to svelte 5 syntax

* Move svelte 5 to separate directory

* Update snapshots

* Update docs

* fix(icon): change variable declaration from let to const in Icon.svelte

* Lucide svelte (#1) (#2727)

* Update peerDependencies to support Svelte 5

* Bump svelte version

* Bump @testing-library/svelte version

* Remove alias in vitest.config.ts that causes tests to fail due to deprecated svelte/internal API

* Convert to svelte 5 syntax

* Bump vite & @sveltejs/vite-plugin-svelte version

* Fix error during render when children prop is missing & fix components being mounted on the server during tests

* Update test snapshots to reflect the differences in the html generated by svelte 5

* Convert class attribute to new array syntax with built-in clsx

* Convert export template to svelte 5 syntax

* Revert changes in lucide-svelte library

* Update package lock

* Update test files

* Formatting

* Update clean command

* Fix build

* Update packages

* update deps

* Fix export script

* Format code

* Revert version number change in package json

* Update workflows

---------

Co-authored-by: Aurélien Richard <56389380+aurelienrichard@users.noreply.github.com>
2025-03-07 13:44:09 +01:00
Jakob Guddas
df063fa378 Updated icons/brackets.svg (#2863)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-03-07 13:03:57 +01:00
Eric Fennis
2c3b6754d5 ci: Update the release workflow 2025-03-07 12:59:41 +01:00
Eric Fennis
47303ac790 ci: Fix icon preview comment 2025-03-07 12:36:32 +01:00
Eric Fennis
3aab3b9b08 fix: Icon preview comment workflow 2025-03-07 12:25:36 +01:00
Eric Fennis
3d29ab9279 ci: Fix icon preview comment - remove bracket 2025-03-07 11:58:36 +01:00
Eric Fennis
e0fbbb6f2d ci: Fix icon preview comment attempt 3 2025-03-07 11:56:43 +01:00
Eric Fennis
c1331798f5 Merge branch 'main' of https://github.com/lucide-icons/lucide 2025-03-07 11:14:21 +01:00
Eric Fennis
ddad14a96d ci: Fix attempt 2 issue with icon preview comments 2025-03-07 11:14:17 +01:00
Anna Sas
a17609b5e4 fix: name change reflected in contributions (#2866) 2025-03-07 11:02:10 +01:00
Eric Fennis
e619963183 ci: fix PR comment workflow 2025-03-07 11:00:07 +01:00
Jakob Guddas
56948fe7c2 fix(ci): run lint pr title on title change (#2872) 2025-03-07 10:48:56 +01:00
Eric Fennis
68116414d0 ci(pr-comment): Fix icon preview comment on PRs (#2854)
* fix: PR icon Comment

* formatting
2025-03-07 10:48:06 +01:00
liamb13
16a18f7908 feat(icons): added square-round-corner icon (#2323)
* adds border-radius

* Update and rename border-radius.svg to square-round-corner.svg

* Update and rename border-radius.json to square-round-corner.json

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2025-02-28 18:00:52 +01:00
dependabot[bot]
ae8af191f7 build(deps-dev): bump vitest from 0.32.4 to 0.33.0 (#2799)
* build(deps-dev): bump vitest from 0.32.4 to 0.33.0

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 0.32.4 to 0.33.0.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v0.33.0/packages/vitest)

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

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

* build(deps-dev): bump vitest from 0.32.4 to 0.33.0

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 0.32.4 to 0.33.0.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v0.33.0/packages/vitest)

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

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

* Update vitest

* Update vitest

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-28 17:59:23 +01:00
dependabot[bot]
1787b82cfe build(deps-dev): bump vite from 5.4.13 to 5.4.14 in /packages/lucide (#2804)
* build(deps-dev): bump vite from 5.4.13 to 5.4.14 in /packages/lucide

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.13 to 5.4.14.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.14/packages/vite)

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

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

* Update lockfile

* Update all vite versions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-28 17:36:25 +01:00
dependabot[bot]
0e49b2b88c build(deps-dev): bump solid-js from 1.8.14 to 1.9.4 (#2844)
Bumps [solid-js](https://github.com/solidjs/solid) from 1.8.14 to 1.9.4.
- [Release notes](https://github.com/solidjs/solid/releases)
- [Changelog](https://github.com/solidjs/solid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/solidjs/solid/compare/v1.8.14...v1.9.4)

---
updated-dependencies:
- dependency-name: solid-js
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-28 17:23:50 +01:00
dependabot[bot]
bab52d7333 build(deps-dev): bump vite from 5.4.13 to 5.4.14 in /packages/lucide-vue-next (#2805)
* build(deps-dev): bump vite in /packages/lucide-vue-next

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.13 to 5.4.14.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.14/packages/vite)

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

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

* update lockfile

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-28 17:23:17 +01:00
Eric Fennis
c96260d82a style(scripts): Fix formatting 2025-02-28 15:06:39 +01:00
Eric Fennis
3c23331e9e ci(actions): Update & cleanup actions (#2764)
* Update actions

* Update workflows

* Remove double jobs
2025-02-28 14:59:41 +01:00
Danilo Leal
5a7c49dc55 Make input autofocus as page reloads (#2581)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-28 11:12:16 +01:00
Jakob Guddas
6ae047557e docs: updated guideline icons (#2676)
* docs: updated guideline icons

* Update docs/images/1px-border-radius.svg

* Update docs/images/1px-border-radius.svg

* Update docs/images/1px-padding.svg

* Update docs/images/24px-24px.svg

* Update docs/images/2px-element-spacing.svg

* Update docs/images/2px-stroke.svg
2025-02-28 11:11:48 +01:00
Epifânio Francisco
fa064306fa feat(docs): Add deprecated badge for icons with deprecation status (#2618)
* feat(docs): Add deprecated badge for icons with deprecation status

* fix: resolve formatting issues in types.ts to pass Prettier checks

* Small adjustments

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-28 11:10:50 +01:00
Jakob Guddas
4f46f43379 fix(icons): added tags to circle-slash-2 icon (#2837)
* Updated icons/circle-slash-2.svg

* Updated icons/circle-slash-2.json
2025-02-25 09:22:49 +01:00
Eric Fennis
fc87643aae Merge branch 'main' of https://github.com/lucide-icons/lucide 2025-02-25 09:21:44 +01:00
Eric Fennis
6f4f47684f fix(scripts): Remove console.log 2025-02-25 09:21:40 +01:00
Sebestyén Németh
c6632ce8d7 feat(icons): added shield-user icon (#2608)
* Added icons/shield-user.svg

* Added icons/shield-user.json

* Update shield-user.svg

Apply suggestion by @karsa-mistmere at https://github.com/lucide-icons/lucide/pull/2608#issuecomment-2541214222

* Inherit coontributors

* Close gaps in svg

* Simplify arc

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-25 09:13:45 +01:00
Eric Fennis
a59c5de61a fix(scripts): Add extra const for path mapping 2025-02-24 10:28:54 +01:00
Eric Fennis
2bd0ae55fd fix(scripts): Add await to readSvgDirectory 2025-02-24 10:18:58 +01:00
Eric Fennis
3f2ad5b2a6 fix(lucide): Lucide create element function returning SVG Element (#2816)
* Fix create element function

* Formatting

* Adjust documentation
2025-02-24 10:10:28 +01:00
Jakob Guddas
1250fc276d fix(icons): optimized beef icon (#2832)
* ci: Improve build speeds (#2778)

* Revert sync to async functions

* Replace more sync fs functions

* Format files

* Fix build svelte package

* build(deps): bump esbuild from 0.19.12 to 0.25.0 (#2791)

Bumps [esbuild](https://github.com/evanw/esbuild) from 0.19.12 to 0.25.0.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.19.12...v0.25.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump vite from 5.1.8 to 5.4.12 (#2786)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.1.8 to 5.4.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.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>

* build(deps-dev): bump vite from 5.4.12 to 5.4.13 (#2798)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.12 to 5.4.13.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.13/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.13/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>

* fix: Add await to checkIconsAndCategories script

* fix(lucide-react): Revert exports property package.json, fixing edge worker environments. (#2814)

* Revert exports prop

* Adjust export

* Adjust export path

* Add to gitignore

* Adjust build process

* Update .gitignore and add dynamicIconImports module

* Formatting

* refactor: Optimize readAllMetadata function to use Promise.all for concurrent metadata reading

* refactor(scripts): Formatting in readAllMetadata

* Updated icons/beef.svg

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 10:09:14 +01:00
Eric Fennis
97f214934d refactor(scripts): Formatting in readAllMetadata 2025-02-19 14:32:10 +01:00
Eric Fennis
34dfc63ce2 refactor: Optimize readAllMetadata function to use Promise.all for concurrent metadata reading 2025-02-19 13:55:31 +01:00
Eric Fennis
b46927e510 fix(lucide-react): Revert exports property package.json, fixing edge worker environments. (#2814)
* Revert exports prop

* Adjust export

* Adjust export path

* Add to gitignore

* Adjust build process

* Update .gitignore and add dynamicIconImports module

* Formatting
2025-02-19 11:33:08 +01:00
Eric Fennis
1828a392c8 fix: Add await to checkIconsAndCategories script 2025-02-19 11:19:53 +01:00
dependabot[bot]
3ab6c373a0 build(deps-dev): bump vite from 5.4.12 to 5.4.13 (#2798)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.12 to 5.4.13.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.13/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.13/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>
2025-02-14 08:53:09 +01:00
dependabot[bot]
ba2c4b526f build(deps-dev): bump vite from 5.1.8 to 5.4.12 (#2786)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.1.8 to 5.4.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.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>
2025-02-12 09:41:52 +01:00
dependabot[bot]
bde3f01e0b build(deps): bump esbuild from 0.19.12 to 0.25.0 (#2791)
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.19.12 to 0.25.0.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.19.12...v0.25.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-12 09:41:40 +01:00
Eric Fennis
50630b3aaf ci: Improve build speeds (#2778)
* Revert sync to async functions

* Replace more sync fs functions

* Format files

* Fix build svelte package
2025-02-10 14:13:52 +01:00
Jamie Law
e28426a871 feat(icons): Add gender icons (#2607)
* Add gender icons

* Rename `nonbinary.*` to `non-binary.*`

* Update icon categories

* Remove `neuter` icon

Pending additional use cases or significant demand

* Add more gender-related tags

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-02-07 15:45:34 +01:00
Eric Fennis
eb158561d3 fix(lucide): Support for iconNodes from other libs like Lab (#2752)
* Add support for iconNodes

* formatting
2025-02-07 15:44:54 +01:00
realguse
410ae434fa docs(readme): improve packages table (#2755) 2025-02-07 15:31:21 +01:00
Ikko Eltociear Ashimine
0801b89e4d chore: fix typo (#2777)
* chore: update replaceElement.spec.js

retuns -> returns

* chore: update replaceElement.spec.js.snap

retuns -> returns
2025-02-07 15:29:29 +01:00
Eric Fennis
a1d17eedc9 fix: Redirect aliases site (#2769)
* Fix redirects site

* Remove console.log
2025-02-06 15:39:07 +01:00
Eric Fennis
7481dd0a3f format(license): add missing semicolon in license script 2025-01-24 16:54:10 +01:00
Eric Fennis
f9e93824f1 format package.svg 2025-01-24 14:34:07 +01:00
Abdalrhman Almarakeby
4ba4cf2f35 feat(cog-icon): update tags to add more relevant keywords (#2748) 2025-01-24 14:32:55 +01:00
Eric Fennis
6b29716aa9 Hide add if script is blocked (#2750) 2025-01-24 14:28:54 +01:00
Jakob Guddas
97bbe1d6b2 fix(icons): changed expand icon (#2677)
* Updated icons/expand.svg

* Updated icons/expand.json
2025-01-23 16:54:06 +01:00
Abdalrhman Almarakeby
608da04bdf fix(bolt-icon): correct "contruction" typo in tags to "construction" (#2749) 2025-01-23 16:25:28 +01:00
ケイラ
961404d5cc replace keyof ReactSVG with SVGElementType (#2668)
* replace `keyof ReactSVG` with `SVGElementType`

* define `SVGElementType` locally

* 🧹

* update comments

* Format types.ts

* Update types.ts

* Update types.ts

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-01-18 16:35:52 +01:00
Sebastian Aarnio
f3100b8af1 fix(icons): update package.svg to be consistent with other package-derived icons (#2706) 2025-01-17 16:31:05 +01:00
Footages
0df4e2991c feat(icons): added battery-plus icon (#2693)
* Added icons/battery-plus.svg

* Added icons/battery-plus.json

* Updated icons/battery-plus.svg

* Updated icons/battery-plus.json

* Update battery-plus.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-01-17 12:10:28 +01:00
Sean
2b8242fa14 feat(icons): added map-plus icon (#2697)
* Added icons/map-plus.svg

* Added icons/map-plus.json
2025-01-17 12:09:02 +01:00
Lettnald
27c667556b Make sure license ends up in SvelteKit bundle (#2728) 2025-01-17 09:13:47 +01:00
Eric Fennis
31c3fefc17 fix(lucide-react) Adds type module in package.json (#2731)
* Adds type module in package.json

* fix typo
2025-01-13 10:58:15 +01:00
Yoh
389fed8770 feat(icons): adds triangle-dashed icon (#2652)
* feat(icons): adds triangle-dashed icon

* Format triangle-dashed.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-01-10 14:36:22 +01:00
Eric Fennis
58c2e108c3 feat(lucide-react): Add DynamicIcon component (#2686)
* Adding the DynamicIcon component

* Fix imports

* Add docs

* Formatting

* Fix use client in output rollup

* revert changes

* Fix formatting

* Revert changes in icons directory

* Revert time command

* update exports
2025-01-10 14:35:28 +01:00
Akshay Memane
d5fe5a0ef4 feat(icons): Add house-wifi icon (#2723)
* feat(icons): Add home-wifi icon

* updated icon

* updated icon as per guidelines

* updated icon name

* updated contributors
2025-01-10 11:52:43 +01:00
Axel
db30ab89f4 Added city tag to building-2.json (#2698)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2025-01-06 14:14:46 +01:00
Julien Zapata Duque
fa7120cbe0 fix(site): use lab icon name in vue and svelte examples (#2715) 2025-01-06 14:12:20 +01:00
Eric Fennis
419d47019c fix(scripts): Fix auto formatting script (#2712)
* Fix ./scripts/generateNextJSAliases.mjs

* Fix generateChangeIconsMarkup scripts
2025-01-06 10:42:53 +01:00
Jakob Guddas
655111e4aa fix(icons): changed rat icon (#2692)
* Updated icons/rat.svg

* Updated icons/rat.svg

* Updated icons/rat.svg
2025-01-02 17:24:58 +01:00
Karsa
ea0ac2f92b feat(icons): upgrade snowflake icons to match real life (#2610)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-20 10:36:02 +01:00
Akseli Palmer
1a5ee439ef Fixed typo in License section of Docs (#2699)
The phrase "personally use" is grammatically incorrect. The correct term is "personal use" because "use" is a noun in this context, and "personal" is the adjective that modifies it.
2024-12-20 10:24:44 +01:00
realguse
5947ca82d5 chore(metadata): add more tags to trophy icon (#2664)
* feat: add more tags to `trophy` icon

* chore: add contributor

* revert: add contributor

Refs: cd99369
2024-12-19 22:43:36 +01:00
dependabot[bot]
edf46adc9e build(deps): bump vite from 4.4.9 to 5.1.8 (#2685)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.9 to 5.1.8.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.1.8/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.1.8/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-19 10:44:47 +01:00
Rodrigo Mesquita
94782f53c1 Fix heading on guide index (#2670)
* Fix heading on guide index

Fixes the heading level of a section on the index page of the guide.

* Update docs/guide/index.md

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-11 10:45:55 +01:00
Kyle Angelo Galendez
79bbfa958e chore(metadata): add more tags to rotate-ccw icon metadata (#2658)
* feat(icons): add more tags

This close #2602

* Update icons/rotate-ccw.json

Add suggested by @realguse

* Add contributor

* Removing non-icon-contributors
2024-12-11 10:36:51 +01:00
Rik Smale
970fc3d4be fix(lucide-react): support React 19 (#2666) 2024-12-11 09:54:28 +01:00
Jakob Guddas
f12b0de177 feat(icons): added waves-ladder icon (#2529)
* Added icons/ladder-over-wave.svg

* Added icons/ladder-over-wave.json

* Rename ladder-over-wave.json to waves-ladder.json

* Rename ladder-over-wave.svg to waves-ladder.svg

* Update icons/waves-ladder.json

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-05 13:18:26 +01:00
Jakob Guddas
67cbce66e9 Updated icons/book-dashed.svg (#2399)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-05 12:56:32 +01:00
Jakob Guddas
b927275150 feat(icons): added scan-heart icon (#2385)
* Added icons/scan-heart.svg

* Added icons/scan-heart.json

* Updated icons/scan-heart.json

* Updated icons/scan-heart.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-05 12:56:02 +01:00
Deniz Abdurrahmani
ea89735f67 feat(icons): added list-filter-plus icon (#2645)
* Added icons/list-filter-plus.svg

* Added icons/list-filter-plus.json

* Move plus to the top line

* Optimize top line and plus gap

* Grid alignment and gap fixes

* Fix gap violation on middle line

* Optimize gap between plus and middle line

* Fix pixel perfect

* Add category `layout` to metadata
2024-12-05 09:51:03 +01:00
Karsa
53c61c0f48 fix(icons/bell): Lucide-ify bell icons (#2656) 2024-12-05 09:23:27 +01:00
Jakob Guddas
4213367a37 feat(icons): added droplet-off icon (#2641)
* Added icons/droplet-off.svg

* Added icons/droplet-off.json

* Update icons/droplet-off.json
2024-12-04 10:06:49 +01:00
Tom Gotsman
bc22d17fa9 docs(showcase): Add reflex to showcase (#2619)
* Add reflex to showcase

* flip colors as were wrong way around

* moved to used in section

---------

Co-authored-by: Tom Gotsman <tomgotsman@Toms-MacBook-Pro.local>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-04 09:56:25 +01:00
nuclearcodecat
7773135308 Update lucide-static.md (#2651) 2024-12-04 09:48:15 +01:00
Jamie Law
4f740348cd fix(icons): Update flask icons (#2659)
* Update flask icons

* Reduce liquid level
2024-12-04 09:47:00 +01:00
Eric Fennis
ca50dd8bc8 chore(metadata): Cleanup categories and some renaming (#2592)
* Delete and rename categories

* Adjust icon categories

* Update categories

* Update metadata

* Update categories/math.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-12-04 09:39:26 +01:00
Jakob Guddas
6b19d52ab0 fix(icons): changed picture-in-picture icon (#2481)
* Updated icons/picture-in-picture.svg

* Updated icons/picture-in-picture.json

* Updated icons/picture-in-picture.svg

* Updated icons/picture-in-picture.svg

* Updated icons/picture-in-picture.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-03 12:45:15 +01:00
Jakob Guddas
7fc3467761 fix(icons): changed paperclip icon (#2482)
* Updated icons/paperclip.svg

* Updated icons/paperclip.json

* Updated icons/paperclip.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-03 12:44:52 +01:00
Jakob Guddas
ee575f6ae9 fix(icons): combined layers and layers-3 icon (#2596)
* Updated icons/layers.svg

* Updated icons/layers.json

* chore: removed layers-3 icon

* Update tools/build-icons/utils/deprecationReasonTemplate.mjs

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-12-03 11:36:22 +01:00
Eric Fennis
212b488dae Fix empy icon page (#2650) 2024-11-29 19:02:31 +01:00
Sunshio
4f038d5fe8 feat(docs): add Bun.sh support to documentation (#2642) 2024-11-29 09:11:30 +01:00
Jakob Guddas
5ca6bc3385 feat(icons): added image-upscale icon (#2462)
* Added icons/image-upscale.svg

* Added icons/image-upscale.json

* Updated icons/image-upscale.svg

* Updated icons/image-upscale.svg

* Updated icons/image-upscale.svg

* Update icons/image-upscale.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-11-27 10:48:27 +01:00
Jakob Guddas
15e4b6b69d fix(icons): changed ship icon (#2548)
* Updated icons/ship.svg

* Updated icons/ship.json
2024-11-26 14:35:47 +01:00
Jakob Guddas
407b55f57c fix(icons): made the venetian-mask icon a bit bigger and change the eye whole shape to a single line to not violate the 2px gap rule (#1950)
* Updated icons/venetian-mask.svg

* Updated icons/venetian-mask.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-11-26 09:53:50 +01:00
Karsa
6fc7297199 feat(docs): add icon showcase to icon page (#2229)
* feat(docs): add icon showcase to icon page

* feat(docs): add pretty name to button

* fix(docs): adjust color for icon counter

* Revert icons changes

* Revert meta data changes

* Revert grid changes

* Fix build

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-11-26 09:52:39 +01:00
Jakob Guddas
c21df35283 fix(metadata): added window related tags to grid-2x2 icon metadata file (#2628)
* Updated icons/grid-2x2.svg

* Updated icons/grid-2x2.json
2024-11-26 08:25:42 +01:00
Jakob Guddas
775359260c fix(icons): changed shuffle icon (#2478)
* Updated icons/shuffle.svg

* Updated icons/shuffle.json
2024-11-25 20:23:29 +01:00
Kyle Angelo Galendez
eaeef9ae37 feat(icons): added calendar-sync icon (#2590)
* Rename box-select.svg to square-dashed.svg

* Update and rename box-select.json to square-dashed.json

* Add aliases

* Added icons/calendar-sync.svg

* Added icons/calendar-sync.json

* Delete icons/square-dashed.json

* Delete icons/square-dashed.svg

* Optimize calendar-sync.svg

* Move arrows 0.5px down

* Update icons/calendar-sync.svg

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

* Maintain icon symmetry

* Remove files category from meta data

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-11-25 19:56:54 +01:00
dependabot[bot]
636f966a98 build(deps-dev): bump vite in /packages/lucide-react (#2484)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.13 to 5.1.8.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.1.8/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.1.8/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>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-11-25 19:52:07 +01:00
Eric Fennis
1d5c725b58 Fix path image backer 2024-11-25 12:03:56 +01:00
Karsa
d9a011994a feat(readme): add pdfme as an awesome backer (#2639) 2024-11-25 12:01:29 +01:00
Eric Fennis
c6c645ca7f docs(readme): Update readme files (#2634)
* Update readme files

* Update readme files

* Fix typos react native readme

* Add back headings
2024-11-25 12:01:13 +01:00
Colin Williams
91391eea7b feat(angular): add support for angular 19 (#2637) (#2638) 2024-11-25 07:35:08 +01:00
Jakob Guddas
49070b4d1f Updated icons/scale-3d.svg (#2627) 2024-11-22 10:23:49 +01:00
Nicolas Boyer
ae43473aa6 Added documentation about Svelte 5 (#2621)
Svelte 5 specifics including removing the "ComponentType" typescript type as components are now static. 
Also merged some imports into one-liners as we don't need to import each icon in a single line.
2024-11-22 10:07:48 +01:00
Jakob Guddas
392bc961aa chore: add bluesky to brand filter (#2617) 2024-11-17 12:50:59 +01:00
Eric Fennis
f238fe1b18 replace extension build config (#2615) 2024-11-16 09:43:23 +01:00
Ethan Hazel
4d91fbb588 feat(icons): Add toilet icon (#2141)
* Added tiolet icon

* fixed typo lol

* fixed formatting with SVG

* fixed typo on tags for Toilet

* Updated icon to add more arcs by jguddas

* Updated toilet json to work with linter

* revert teamData.json

* fix(teamData): Reverted accidental changes from Prettier

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2024-11-15 18:45:21 +01:00
dependabot[bot]
d939a7005d build(deps): bump rollup from 2.79.1 to 3.29.5 (#2613)
Bumps [rollup](https://github.com/rollup/rollup) from 2.79.1 to 3.29.5.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.79.1...v3.29.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-15 13:59:22 +01:00
齋藤 恵介
2c55c2ab93 feat(icons): added equal-approximately icon (#2594)
* Added icons/equal-approximately.svg

* Added icons/equal-approximately.json
2024-11-15 13:57:25 +01:00
Lennard Scheibel
cb60e31162 Add cloud-alert icon (#2611) 2024-11-15 13:55:56 +01:00
Eric Fennis
09cebe178d feat(lucide-svelte): Aliased imports for direct imports (#2584)
* Add way to import aliased icons directly

* Format files

* Fix tests

* Format files
2024-11-15 13:51:58 +01:00
Jakob Guddas
0f3fd12f16 fix(icons): update drill icon (#1919)
* Updated icons/drill.svg

* Updated icons/drill.svg

* Updated icons/drill.json

* Updated icons/drill.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-11-15 12:45:41 +01:00
Jakob Guddas
4b0d17ad24 feat(icons): added laptop-minimal-check icon (#2563)
* Added icons/laptop-minimal-check.svg

* Added icons/laptop-minimal-check.json

* Update laptop-minimal-check.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-11-15 12:23:26 +01:00
Epifânio Francisco
30fe706dd6 fix: #2566 expand card beyond max-width limit by adjusting CSS (#2605) 2024-11-15 12:20:37 +01:00
Jakob Guddas
d6178fa471 Updated icons/vegan.svg (#2556) 2024-11-15 11:59:27 +01:00
Jakob Guddas
855cb4985d fix(icons): changed heading-4 icon (#2546)
* Updated icons/heading-4.svg

* Updated icons/heading-4.json
2024-11-15 11:58:19 +01:00
Jakob Guddas
9f99ea510f fix(icons): changed hard-hat icon (#2559)
* Updated icons/hard-hat.svg

* Updated icons/hard-hat.json

* Updated icons/hard-hat.json
2024-11-15 11:57:00 +01:00
Jakob Guddas
e2ee0c77e7 fix(icons): changed cross icon (#2578)
* Updated icons/cross.svg

* Updated icons/cross.json

* Updated icons/cross.json
2024-11-15 11:56:14 +01:00
Jakob Guddas
d041d5c2d2 fix(icons): arcified school icon (#2598)
* Updated icons/school.svg

* Updated icons/school.json

* Updated icons/school.svg
2024-11-15 11:54:54 +01:00
Jamie Law
8700418260 Optimise puzzle icon (#2603)
Redraw some bezier curves as arcs
2024-11-15 11:32:25 +01:00
Arthur Green
30077f913f docs: update lucide-svelte.md (#2609) 2024-11-15 11:31:15 +01:00
Jamie Law
bc09d5f283 fix(icons): changed bath icon (#2512)
* Update bath.svg

Replaced `<line/>` elements with `<path/>`s and refined the curve of the shower head to use fewer path segments and have a larger radius

* Update bath.json

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-11-15 11:30:38 +01:00
Karsa
88c757f540 fix(icons): Fix rounding to hand-platter icon (#2326)
* feat(icons): add rounding to hand-platter icon

* Update hand-platter.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-11-11 11:45:36 +01:00
Jakob Guddas
f93beca595 Updated icons/glass-water.svg (#2579) 2024-11-08 16:49:34 +01:00
Eric Fennis
b1777430b9 feat(lucide-react, lucide-preact, lucide-react-native, lucide-solid, lucide-vue-next): Adjustable icon naming imports (#2328)
* Add override alias import entry files lucide-react

* Make it work

* Setup files for packages

* Revert icon changes

* Remove solid support and add docs

* Adjust docs

* format files

* Fix lucide-vue-next build

* Fix builds

* Fix lucide-svelte

* Add vscode settings option
2024-11-08 16:47:53 +01:00
Eric Fennis
d30698cb38 ci(pull-request): Fix generate comments for empty changes (#2593) 2024-11-08 16:00:23 +01:00
Jamie Law
d2f7a0931d feat(icons): added air-pressure icon (#2554)
* Add `air-pressure` icon

And slightly modified the `wind` icon to match

* Rename `air-pressure` to `wind-arrow-down`

And update the JSON file with contributors to the original `wind` icon and add `pressure` as a tag
2024-11-08 09:53:10 +01:00
Jakob Guddas
98bbcc4b06 fix(icons): changed slice icon (#2500)
* Updated icons/slice.svg

* Updated icons/slice.json
2024-11-08 09:40:38 +01:00
Jan
c253cb821b update code example for lucide-svelte direct import (#2589)
* update code example for lucide-svelte direct import

* use single quotes
2024-11-08 08:45:19 +01:00
Jakob Guddas
484dc38b0a Updated icons/undo-dot.svg (#2557) 2024-11-05 08:33:56 +01:00
dependabot[bot]
11b95f883a build(deps-dev): bump rollup from 3.27.0 to 3.29.5 (#2571)
Bumps [rollup](https://github.com/rollup/rollup) from 3.27.0 to 3.29.5.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v3.27.0...v3.29.5)

---
updated-dependencies:
- dependency-name: rollup
  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-10-31 10:23:32 +01:00
Eric Fennis
b8cd54f1b2 chore: Update dependencies (#2570)
* Update dependencies

* Revert dep change site

* Update lockfile

* Fix indentation
2024-10-30 13:31:28 +01:00
Jakob Guddas
98b3b6fae7 fix(icons): changed file-music icon (#2536)
* Updated icons/file-music.svg

* Updated icons/file-music.json
2024-10-30 10:12:25 +01:00
Mofiro Jean
3ca465ee11 (docs) update lucide angular guide for standalone components (#2569) 2024-10-30 09:32:47 +01:00
Jamie Law
dcd19cedc9 fix(icons): changed pizza icon (#2476)
* Lucidified pizza.svg

Rounded the corners of the pizza slice and spaced out the pepperoni to address the two-pixel-gap rule

* Update pizza.json

* Update pizza.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-10-28 14:41:30 +01:00
Jakob Guddas
8cea9feecc fix(icons): added rounding to star icon (#1987)
* Updated icons/star.svg

* Updated icons/star.json

* Updated icons/star.svg

* Updated icons/star-half.svg

* Updated icons/star-half.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-10-28 14:30:02 +01:00
Willem Dinkelspiel
e80d98040f Add Lustre Lucide third party package (#2543)
* add lucide lustre to third party packages

* add lustre logo
2024-10-28 13:54:13 +01:00
Eric Fennis
a1641a372b fix(shared): Add trim to mergeClasses (#2522)
* Add trim to merge classes

* Add trim to merge classes

* Adds extra utils check

* Update packages/shared/src/utils.ts

Co-authored-by: Max Malm <benjick@dumfan.net>

---------

Co-authored-by: Max Malm <benjick@dumfan.net>
2024-10-28 13:53:42 +01:00
Peter Uithoven
757bf0fb85 feat(icons): added calendar-1 icon (#2520)
* Added icons/calendar-single.svg

* Added icons/calendar-single.json

* Adjust calendar position

Adjust calendar position based on original

* Update name

* Add tag 1

* Optimize 1 path

* Add first tag

---------

Co-authored-by: peteruithoven <peter@metabolic.nl>
2024-10-15 04:11:47 +02:00
Ishaan
dd3aed1ecd Update icon-design-guide.md (#2530) 2024-10-13 23:39:41 +02:00
Jamie Law
4d98681f05 refactor(icons): optimised some align-, indent- and list-icons (#2528)
* Update `align`- icons

* Update `indent`- icons

* Update `list`- icons
2024-10-11 20:29:36 +02:00
Jakob Guddas
bde9e1cb6b Updated icons/component.svg (#2474) 2024-10-08 11:10:02 +02:00
Jakob Guddas
a5e07c28bd fix(icons): changed package icon (#2499)
* Updated icons/package.svg

* Updated icons/package.svg

* Updated icons/package.json
2024-10-08 10:44:49 +02:00
Jamie Law
2a68b12cbe fix(icons): Updated sandwich icon (#2494)
* Updated `sandwich` icon

Rounded the top-front corners, and better aligned the top-most corner of the bread, and the corner of the filling to the grid

* Update sandwich.svg

Nudge filling to the left to maintain a two-pixel gap

* Widen the sandwich
2024-10-08 10:41:30 +02:00
Jakob Guddas
493382b4fd fix(icons): changed parking-meter icon (#2505)
* Updated icons/parking-meter.svg

* Updated icons/parking-meter.json
2024-10-08 10:37:01 +02:00
Karsa
6588971ead fix(site): use the same camel/pascal same conversion as when releasing packages (#2509) 2024-10-08 10:36:35 +02:00
Jamie Law
13cea45e8b refactor(icons): optimised some move- icons (#2513)
* Update move.svg

Replace `<polyline/>`s with `<path/>`s

* Update move-vertical.svg

* Update move-horizontal.svg

* Update move-diagonal.svg

* Update move-diagonal-2.svg
2024-10-08 10:34:11 +02:00
dependabot[bot]
5dfcfc8d1a build(deps): bump rollup from 4.21.0 to 4.22.4 (#2521)
Bumps [rollup](https://github.com/rollup/rollup) from 4.21.0 to 4.22.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.21.0...v4.22.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 10:29:31 +02:00
Mohit Nagaraj
db24b1d517 fix(app): #2412 Fix tooltip being cut off (#2514) 2024-10-08 10:29:03 +02:00
Jakob Guddas
e1202b545e tests(shared): added mergeClasses tests (#2503) 2024-10-08 10:24:16 +02:00
Jakob Guddas
2e1a5cf6ea feat(icons): added volleyball icon (#1980)
* chore: pull `volleyball` icon from lab branch

* Updated icons/volleyball.svg

* Updated icons/volleyball.json
2024-10-08 10:19:54 +02:00
Karsa
f49ecd73a5 feat(icons): add eye-closed icon (#2349)
* feat(icons): add eye-closed icon

* feat(icons): update tags on eye-off as well

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-10-08 10:17:49 +02:00
Dipanshu Rawat
a72cbc2d49 add(site): Eric Fennis's twitter link (#2511)
* add: Eric Fennis's twitter link

* ref: twitter domain
2024-10-04 07:59:34 +02:00
Pedro Henrique Windisch
d4976890e5 fix: missing deprecation warning for LinkedIn logo (#2466)
Co-authored-by: Karsa <contact@karsa.org>
2024-10-02 14:49:53 +02:00
Jakob Guddas
8c8d1d3338 fix(categories): fixed charts icon name (#2504) 2024-10-02 09:36:31 +02:00
1024 changed files with 23399 additions and 8970 deletions

View File

@@ -8,10 +8,10 @@ squircle
strikethrough
touchpad
ungroup
pilcrow
toc
# Brands
codepen
codesandbox
dribbble
x.com

View File

@@ -22,6 +22,7 @@ body:
- label: lucide-svelte
- label: lucide-vue
- label: lucide-vue-next
- label: lucide-astro
- label: Figma plugin
- label: source/main
- label: other/not relevant

View File

@@ -22,6 +22,7 @@ body:
- label: lucide-svelte
- label: lucide-vue
- label: lucide-vue-next
- label: lucide-astro
- label: Figma plugin
- label: all JS packages
- label: site

View File

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

View File

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

6
.github/labeler.yml vendored
View File

@@ -79,6 +79,12 @@
- any-glob-to-any-file:
- 'packages/lucide-solid/*'
# For changes in the lucide astro package
🚀 astro package:
- changed-files:
- any-glob-to-any-file:
- 'packages/astro/*'
# For changes in the lucide static package
🪨 static package:
- changed-files:

View File

@@ -1,16 +1,18 @@
<!-- Thank you for contributing! -->
<!--
PR Title Guidelines:
Please use the format: <type>(<scope>): <short description>
Example: feat(icons): added `camera` icon
Available types: fix, feat, perf, docs, style, refactor, test, chore, ci, build
Common scopes: icons, docs, studio, site, dev
-->
<!-- 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
## 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 -->

View File

@@ -9,18 +9,18 @@ on:
jobs:
create-release:
if: github.repository == 'lucide-icons/lucide'
if: github.repository == 'lucide-icons/lucide' && startsWith(github.event.head_commit.message, 'feat(icons)')
runs-on: ubuntu-latest
outputs:
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -61,8 +61,40 @@ jobs:
uses: softprops/action-gh-release@v1
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 }}
name: Version ${{ steps.new-version.outputs.NEW_VERSION }}
generate_release_notes: true
test-semantic-release:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Semantic Release
id: semantic
uses: cycjimmy/semantic-release-action@v4
with:
tag_format: ${version}
branches: |
['new-release-workflow']
extends: |
semantic-release-monorepo
extra_plugins: |
@semantic-release/github
@semantic-release/git
@semantic-release/release-notes-generator
conventional-changelog-conventionalcommits
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Log output
if: steps.semantic.outputs.new_release_published == 'true'
run: |
echo ${{ steps.semantic.outputs.new_release_version }}
echo ${{ steps.semantic.outputs.new_release_major_version }}
echo ${{ steps.semantic.outputs.new_release_minor_version }}
echo ${{ steps.semantic.outputs.new_release_patch_version }}
start-release:
if: github.repository == 'lucide-icons/lucide'

View File

@@ -11,12 +11,12 @@ jobs:
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Check for blocked phrases in issue title
run: |
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord")
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord" "bluesky" "spotify" "behance" "pix" "x.com")
# Check title and body for blocked phrases
for PHRASE in "${BLOCKED_PHRASES[@]}"

View File

@@ -0,0 +1,58 @@
name: Icon preview comment
on:
workflow_run:
workflows: ['Pull request icon preview']
types:
- completed
jobs:
upload:
runs-on: ubuntu-latest
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
steps:
- name: 'Download artifact'
uses: actions/github-script@v7
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr_number"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
const fs = require('fs');
fs.writeFileSync('${{github.workspace}}/pr_number.zip', Buffer.from(download.data));
- name: 'Unzip artifact'
run: unzip pr_number.zip
- name: 'Get PR number'
run: echo "number=$(cat NR)" >> $GITHUB_OUTPUT
id: pr-number
- name: Find Comment
uses: peter-evans/find-comment@v2
id: pr-comment
with:
issue-number: ${{ steps.pr-number.outputs.number }}
comment-author: 'github-actions[bot]'
body-includes: Added or changed icons
- name: Create or update comment
uses: peter-evans/create-or-update-comment@v3
with:
comment-id: ${{ steps.pr-comment.outputs.comment-id }}
issue-number: ${{ steps.pr-number.outputs.number }}
body-path: comment-markup.md
edit-mode: replace

View File

@@ -1,20 +1,20 @@
name: Linting
name: Linting PR
on:
pull_request:
branches:
- '**'
paths-ignore:
- icons/*.svg
jobs:
linting:
lint-code:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install Dependencies
run: pnpm install --frozen-lockfile

32
.github/workflows/lint-pr-title.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: Linting PR
on:
pull_request:
types:
- opened
- edited
- reopened
jobs:
lint-pr-title:
name: PR Title Lint
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
types: |
fix
feat
perf
refactor
test
style
docs
ci
build
chore
requireScope: true
ignoreLabels: |
bot

36
.github/workflows/linting-icons.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: Linting Icons
on:
pull_request:
paths:
- 'icons/*'
jobs:
lint-filenames:
name: Lint Filenames
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v46
with:
files: icons/*
- name: Generate annotations
run: node ./scripts/lintFilenames.mjs
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
lint-aliases:
name: Check Uniqueness of Aliases
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Check Uniqueness of Aliases
run: "! cat <(printf \"%s\\n\" icons/*.json | while read -r name; do basename \"$name\" .json; done) <(jq -cr 'select(.aliases) | .aliases[] | if type==\"string\" then . else .name end' icons/*.json) | sort | uniq -c | grep -ve '^\\s*1 '"

View File

@@ -12,11 +12,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -27,12 +27,12 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3.8.1
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -1,11 +1,11 @@
name: Lucide Vue checks
name: Lucide Astro Checks
on:
pull_request:
paths:
- packages/lucide-vue/**
- packages/astro/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
@@ -23,7 +23,7 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-vue build
run: pnpm --filter @lucide/astro build
test:
runs-on: ubuntu-latest
@@ -39,4 +39,4 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-vue test
run: pnpm --filter @lucide/astro test

View File

@@ -3,7 +3,6 @@ name: Lucide font checks
on:
pull_request:
paths:
- icons/**
- tools/build-font/**
- pnpm-lock.yaml
@@ -12,11 +11,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -28,7 +27,7 @@ jobs:
run: pnpm build:font
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: lucide-font
path: lucide-font

View File

@@ -4,6 +4,7 @@ on:
pull_request:
paths:
- packages/lucide-preact/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -13,11 +14,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -4,20 +4,37 @@ on:
pull_request:
paths:
- packages/lucide-react-native/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
lucide-react-native:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-react-native build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -4,6 +4,7 @@ on:
pull_request:
paths:
- packages/lucide-react/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- scripts/generateNextJSAliases.mjs
@@ -14,11 +15,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -29,12 +30,12 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3.8.1
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

24
.github/workflows/lucide-shared.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: Lucide Shared Checks
on:
pull_request:
paths:
- packages/shared/**
- pnpm-lock.yaml
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-react test

View File

@@ -4,6 +4,7 @@ on:
pull_request:
paths:
- packages/lucide-solid/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -13,11 +14,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -28,12 +29,12 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3.8.1
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -12,11 +12,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

43
.github/workflows/lucide-svelte-5.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: Lucide Svelte 5 checks
on:
pull_request:
paths:
- packages/svelte/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter @lucide/svelte build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter @lucide/svelte test

View File

@@ -4,6 +4,7 @@ on:
pull_request:
paths:
- packages/lucide-svelte/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -13,11 +14,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -28,12 +29,12 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3.8.1
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -4,6 +4,7 @@ on:
pull_request:
paths:
- packages/lucide-vue-next/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -13,11 +14,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -28,12 +29,12 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3.8.1
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -13,11 +13,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -28,12 +28,12 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3.8.1
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -0,0 +1,43 @@
name: Pull request icon preview
on:
pull_request:
paths:
- 'icons/*.svg'
jobs:
generate-changed-icons-comment:
name: Generate Changed Icons Comment
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v46
with:
files: icons/*.svg
- uses: actions/setup-node@v4
- name: Install svgson for code preview (safer and faster than installing all deps)
run: npm install svgson
- name: Save PR number
run: |
mkdir -p ./pr
echo ${{ github.event.number }} > ./pr/NR
- name: Generate comment markup
run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> ./pr/comment-markup.md
id: comment-markup
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
- uses: actions/upload-artifact@v4
with:
name: pr_number
path: pr/

View File

@@ -1,123 +0,0 @@
name: Add Changed Icons comment
on:
pull_request_target:
paths:
- 'icons/*'
branches:
- main
- fix-icon-preview
jobs:
lint-filenames:
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/*
- 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
lint-aliases:
name: Check Uniqueness of Aliases
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Check Uniqueness of Aliases
run: "! cat <(printf \"%s\\n\" icons/*.json | while read -r name; do basename \"$name\" .json; done) <(jq -cr 'select(.aliases) | .aliases[] | if type==\"string\" then . else .name end' icons/*.json) | sort | uniq -c | grep -ve '^\\s*1 '"
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: Find Comment
uses: peter-evans/find-comment@v2
id: pr-comment
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: Added or changed icons
- uses: actions/setup-node@v4
- name: Install svgson for code preview (safer and faster than installing all deps)
run: npm install svgson
- 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@v3
with:
comment-id: ${{ steps.pr-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body-path: ./comment-markup.md
edit-mode: replace

View File

@@ -38,6 +38,8 @@ jobs:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-release
permissions:
id-token: write
strategy:
fail-fast: false
matrix:
@@ -52,14 +54,16 @@ jobs:
'lucide-preact',
'lucide-solid',
'lucide-svelte',
'@lucide/astro',
'@lucide/svelte',
]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -77,20 +81,24 @@ jobs:
run: pnpm --filter ${{ matrix.package }} test
- name: Publish
run: pnpm --filter ${{ matrix.package }} publish --no-git-checks --ignore-scripts
run: pnpm --filter ${{ matrix.package }} publish --access public --no-git-checks --ignore-scripts
env:
NPM_CONFIG_PROVENANCE: true
lucide-static:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: [pre-release, lucide-font]
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: pnpm/action-setup@v2
- uses: actions/download-artifact@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -109,6 +117,8 @@ jobs:
- name: Publish
run: pnpm --filter lucide-static publish --no-git-checks
env:
NPM_CONFIG_PROVENANCE: true
lucide-font:
if: github.repository == 'lucide-icons/lucide'
@@ -116,11 +126,11 @@ jobs:
needs: pre-release
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'pnpm'
node-version-file: 'package.json'
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -132,7 +142,7 @@ jobs:
run: pnpm build:font
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: lucide-font
path: lucide-font
@@ -144,14 +154,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
- name: Zip font and icons
run: |
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
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.pre-release.outputs.VERSION }}
files: |

32
.github/workflows/request-review.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: 'Request Review'
on:
pull_request_target:
types: [opened]
paths: icons/*.svg
jobs:
request-review:
if: github.event.pull_request.draft == false
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
- run: |
while IFS= read -r file; do
jq -r '.contributors[]' "${file%.svg}.json"
done <<< "$CHANGED_FILES" | while read -r contributor; do
gh pr edit "${{ github.event.pull_request.number }}" --add-reviewer "$contributor" || true
done
env:
GH_TOKEN: ${{ github.token }}
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}

8
.gitignore vendored
View File

@@ -16,11 +16,17 @@ outlined
packages/**/src/icons/*.js
packages/**/src/icons/*.ts
packages/**/src/icons/*.tsx
packages/**/src/aliases/*.ts
packages/**/src/aliases.ts
!packages/**/src/aliases/index.ts
packages/**/src/dynamicIconImports.ts
packages/**/DynamicIcon.d.ts
packages/**/dynamicIconImports.js
packages/**/dynamicIconImports.d.ts
packages/**/dynamicIconImports.js.map
packages/**/dynamic.d.ts
packages/**/dynamic.mjs.map
packages/**/dynamic.mjs
packages/**/LICENSE
categories.json
tags.json
@@ -39,3 +45,5 @@ docs/.vitepress/data/iconDetails
docs/.vitepress/data/relatedIcons.json
docs/.vercel
docs/.nitro
.gitignore

View File

@@ -16,10 +16,10 @@ Guidelines for pull requests:
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves wont make apparent.
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `main` branch.
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
- __Make sure the target of your pull request is the relevant branch__. Most of bug fixes or new feature should go to the `main` branch.
- __Include only related work__. If your pull request has unrelated commits, it won't be accepted.
### Pull Requests Including Icons
### Icon Pull Requests
#### Guidelines
@@ -27,26 +27,30 @@ Please make sure you follow the icon guidelines, that should be followed to keep
Read it here: [ICON_GUIDELINES](https://lucide.dev/docs/icon-design-guide).
### Editor guides
#### Lucide Studio
For formatting and adjusting SVG icons, [@jguddas](https://github.com/jguddas) made a great tool called [Lucide Studio](https://studio.lucide.dev/). It is a web-based SVG editor that allows you to edit and adjust icons in the Lucide style. You can use it to create new icons or modify existing ones.
#### Editor guides
Here you can find instructions on how to implement the guidelines with different vector graphics editors:
#### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
##### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
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)
##### [Inkscape Guide](https://lucide.dev/docs/inkscape-guide)
#### [Figma Guide](https://lucide.dev/docs/figma-guide)
##### [Figma Guide](https://lucide.dev/docs/figma-guide)
#### [Affinity Designer Guide](https://lucide.dev/guide/design/affinity-designer-guide)
##### [Affinity Designer Guide](https://lucide.dev/guide/design/affinity-designer-guide)
### Submitting Multiple Icons
#### Submitting Multiple Icons
If you want submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keep the thread clean and scoped.
So don't submit multiple icons in one PR that have noting to do with each other.
If you want to submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keeps the thread clean and scoped.
So don't submit multiple icons in one PR that have nothing to do with each other.
So for example don't create one PR with icons: `arrow-up`, `bicycle`, `arrow-down`.
Seperate them by two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
Separate them into two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
## Icon Requests
@@ -77,7 +81,7 @@ To distribute different packages we use [PNPM workspaces](https://pnpm.io/worksp
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.
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and uses pub for publishing.
### Generated Code
@@ -127,7 +131,7 @@ When adding new features to for example the icon component for a framework. It i
### Local Testing
To test changes in a local project, you can use `yarn link`, `npm link` or `pnpm link` to link the package. Before you do this make sure you builded the package first.
To test changes in a local project, you can use `yarn link`, `npm link`, `bun link` or `pnpm link` to link the package. Before you do this make sure you've built the package first.
```sh
# in packages/lucide-react
@@ -165,15 +169,15 @@ Detailed documentation about: installation, guides, packages, design guides etc.
All the icons of lucide in SVG format. These will be used as source for all the packages and other distributions for the lucide icons.
### packages
### Packages
Includes all the (npm) packages of lucide.
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing.
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and uses pub for publishing.
### scripts
### Scripts
Includes usefully scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.
Includes useful 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.
## Documentation
@@ -190,4 +194,4 @@ If you need any help or have problems with you contribution. Please don't hesita
Thank you to all the people who already contributed to Lucide!
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=800" /></a>

268
README.md
View File

@@ -8,185 +8,40 @@
</p>
<p align="center">
<a href="https://github.com/lucide-icons/lucide/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/lucide" alt="license"></a>
<a href="https://www.npmjs.com/package/lucide"><img src="https://img.shields.io/npm/v/lucide" alt="npm package"></a>
<a href="https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons"><img src="https://img.shields.io/endpoint?logo=figma&label=installs&url=https://yuanqing.github.io/figma-plugins-stats/plugin/939567362549682242/installs.json" alt="figma installs"></a>
<a href="https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons"><img src="https://img.shields.io/badge/Figma-F24E1E?logo=figma&logoColor=white" alt="figma installs"></a>
<a href="https://github.com/lucide-icons/lucide/actions/workflows/release.yml"><img src="https://github.com/lucide-icons/lucide/actions/workflows/release.yml/badge.svg" alt="build status"></a>
<a href="https://discord.gg/EH6nSts"><img src="https://img.shields.io/discord/723074157486800936?label=chat&logo=discord&logoColor=%23ffffff&colorB=%237289DA" alt="discord chat"></a>
</p>
<p align="center">
<a href="https://lucide.dev/icons/">Icons</a>
·
<a href="https://lucide.dev/guide/">Guide</a>
·
<a href="https://lucide.dev/packages">Packages</a>
·
<a href="https://lucide.dev/license">License</a>
·
<a href="https://lucide.dev/showcase">Showcase</a>
</p>
# Lucide
Community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
Lucide is an open-source icon library that provides 1000+ vector (svg) files for displaying icons and symbols in digital and non-digital projects. The library aims to make it easier for designers and developers to incorporate icons into their projects by providing several official [packages](https://lucide.dev/packages) to make it easier to use these icons in your project.
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.
## Packages
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 libraries and integrations with popular frameworks and design tools.
- Well maintained code base.
- Active community, regularly growing and improving the set.
## Table of Contents
- [Usage](#usage)
- [Web](#web)
- [React](#react)
- [React Native](#react-native)
- [Vue 2](#vue-2)
- [Vue 3](#vue-3)
- [Angular](#angular)
- [Preact](#preact)
- [Static (svg sprite, font, icons ..)](#static-svg-sprite-font-icons-)
- [Figma](#figma)
- [Laravel](#laravel)
- [Svelte](#svelte)
- [Solid](#solid)
- [Hyva](#hyva)
- [Eleventy](#eleventy)
- [Contributing](#contributing)
- [Community](#community)
- [License](#license)
- [Credits](#credits)
- [Sponsors](#sponsors)
## Usage
At its core, Lucide is a collection of [SVG](https://svgontheweb.com/#svg) files. This means that you can use Lucide icons in all the same ways you can use SVGs (e.g. `img`, `background-image`, `inline`, `object`, `embed`, `iframe`). Here's a helpful article detailing the many ways SVGs can be used on the web: [SVG on the Web Implementation Options](https://svgontheweb.com/#implementation)
The following are additional ways you can use Lucide.
With the Javascript library you can easily incorporate the icon you want in your webpage.
### Web
Implementation of the lucide icon library for web applications.
```sh
npm install lucide
```
or
```sh
yarn add lucide
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide#lucide).
### React
Implementation of the lucide icon library for react applications.
```sh
yarn add lucide-react
```
or
```sh
npm install lucide-react
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-react#lucide-react).
### React Native
Implementation of the lucide icon library for React Native applications.
```sh
yarn add lucide-react-native
```
or
```sh
npm install lucide-react-native
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-react-native#lucide-react-native).
### Vue 2
Implementation of the lucide icon library for vue applications.
```sh
yarn add lucide-vue
```
or
```sh
npm install lucide-vue
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-vue#lucide-vue).
### Vue 3
Implementation of the lucide icon library for vue applications.
```sh
yarn add lucide-vue-next
```
or
```sh
npm install lucide-vue-next
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-vue-next#lucide-vue-next).
### Angular
```sh
yarn add lucide-angular
```
or
```sh
npm install lucide-angular
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-angular#lucide-angular).
### Preact
Implementation of the lucide icon library for preact applications.
```sh
yarn add lucide-preact
```
or
```sh
npm install lucide-preact
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-preact#lucide-preact).
### Static (svg sprite, font, icons ..)
Assets:
[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
```sh
yarn add lucide-static
```
or
```sh
npm install lucide-static
```
| Logo | Package | Version | Downloads | Links |
| ---- | ------- | ------- | --------- | ----- |
| <img src="https://lucide.dev/framework-logos/js.svg" alt="JS logo" width="48"> | **`lucide`** | [![npm](https://img.shields.io/npm/v/lucide)](https://www.npmjs.com/package/lucide) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide) | [Docs](https://lucide.dev/guide/packages/lucide) · [Source](./packages/lucide) |
| <img src="https://lucide.dev/framework-logos/react.svg" alt="React logo" width="48"> | **`lucide-react`** | [![npm](https://img.shields.io/npm/v/lucide-react)](https://www.npmjs.com/package/lucide-react) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-react) | [Docs](https://lucide.dev/guide/packages/lucide-react) · [Source](./packages/lucide-react) |
| <img src="https://lucide.dev/framework-logos/vue.svg" alt="Vue logo" width="48"> | **`lucide-vue-next`** | [![npm](https://img.shields.io/npm/v/lucide-vue-next)](https://www.npmjs.com/package/lucide-vue-next) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-vue-next) | [Docs](https://lucide.dev/guide/packages/lucide-vue-next) · [Source](./packages/lucide-vue-next) |
| <img src="https://lucide.dev/framework-logos/svelte.svg" alt="Svelte logo" width="48"> | **`lucide-svelte`** | [![npm](https://img.shields.io/npm/v/lucide-svelte)](https://www.npmjs.com/package/lucide-svelte) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-svelte) | [Docs](https://lucide.dev/guide/packages/lucide-svelte) · [Source](./packages/lucide-svelte) |
| <img src="https://lucide.dev/framework-logos/solid.svg" alt="Solid logo" width="48"> | **`lucide-solid`** | [![npm](https://img.shields.io/npm/v/lucide-solid)](https://www.npmjs.com/package/lucide-solid) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-solid) | [Docs](https://lucide.dev/guide/packages/lucide-solid) · [Source](./packages/lucide-solid) |
| <img src="https://lucide.dev/framework-logos/preact.svg" alt="Preact logo" width="48"> | **`lucide-preact`** | [![npm](https://img.shields.io/npm/v/lucide-preact)](https://www.npmjs.com/package/lucide-preact) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-preact) | [Docs](https://lucide.dev/guide/packages/lucide-preact) · [Source](./packages/lucide-preact) |
| <img src="https://lucide.dev/framework-logos/react-native.svg" alt="React Native logo" width="48"> | **`lucide-react-native`** | [![npm](https://img.shields.io/npm/v/lucide-react-native)](https://www.npmjs.com/package/lucide-react-native) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-react-native) | [Docs](https://lucide.dev/guide/packages/lucide-react-native) · [Source](./packages/lucide-react-native) |
| <img src="https://lucide.dev/framework-logos/angular.svg" alt="Angular logo" width="48"> | **`lucide-angular`** | [![npm](https://img.shields.io/npm/v/lucide-angular)](https://www.npmjs.com/package/lucide-angular) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-angular) | [Docs](https://lucide.dev/guide/packages/lucide-angular) · [Source](./packages/lucide-angular) |
| <img src="https://lucide.dev/framework-logos/astro.svg" alt="Astro logo" width="48"> | **`@lucide/astro`** | [![npm](https://img.shields.io/npm/v/@lucide/astro)](https://www.npmjs.com/package/@lucide/astro) | ![NPM Downloads](https://img.shields.io/npm/dw/@lucide/astro) | [Docs](https://lucide.dev/guide/packages/lucide-astro) · [Source](./packages/astro) |
| <img src="https://lucide.dev/framework-logos/svg.svg" alt="SVG logo" width="48"> | **`lucide-static`** | [![npm](https://img.shields.io/npm/v/lucide-static)](https://www.npmjs.com/package/lucide-static) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-static) | [Docs](https://lucide.dev/guide/packages/lucide-static) · [Source](./packages/lucide-static) |
### Figma
@@ -196,68 +51,6 @@ Visit [Figma community page](https://www.figma.com/community/plugin/939567362549
<img width="420" src="https://www.figma.com/community/plugin/939567362549682242/thumbnail" alt="Figma Lucide Cover">
### Laravel
Implementation of Lucide icon's using `blade-icons` for Laravel based projects.
```sh
composer require mallardduck/blade-lucide-icons
```
For more details, see the [documentation](https://github.com/mallardduck/blade-lucide-icons/blob/main/README.md).
### Svelte
Implementation of the lucide icon library for Svelte applications.
```sh
yarn add lucide-svelte
```
or
```sh
npm install lucide-svelte
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-svelte#lucide-svelte).
### Solid
Implementation of the lucide icon library for solid applications.
```sh
yarn add lucide-solid
```
or
```sh
npm install lucide-solid
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-solid#lucide-solid).
### Hyva
Implementation of Lucide icon's using Hyvä's svg php viewmodal to render icons for Magento 2 Hyva theme based projects.
```sh
composer require siteation/magento2-hyva-icons-lucide
```
For more details, see the [documentation](https://github.com/Siteation/magento2-hyva-icons-lucide/blob/main/README.md).
### Eleventy
Using this plugin, Eleventy projects can incorporate Lucide icons. it makes it simple to use Lucide icons into your themes via shortcodes, improving your website's overall usability and visual appeal.
```sh
npm install @grimlink/eleventy-plugin-lucide-icons
```
For more details, see the [documentation](https://github.com/GrimLink/eleventy-plugin-lucide-icons/blob/main/README.md).
## Contributing
For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
@@ -270,14 +63,16 @@ Join the community on our [Discord](https://discord.gg/EH6nSts) server!
## License
Lucide is totally free for commercial use and personally use, this software is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/main/LICENSE).
Lucide is totally free for commercial use and personal use, this software is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/main/LICENSE).
## Credits
Thank you to all the people who contributed to Lucide!
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=800" />
</a>
## Sponsors
@@ -287,6 +82,7 @@ Thank you to all the people who contributed to Lucide!
<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>
### Awesome backer 🍺
### Awesome backers 🍺
<a href="https://www.scipress.io?utm_source=lucide"><img src="docs/public/sponsors/scipress.svg" width="180" alt="Scipress sponsor badge" /></a>
<a href="https://github.com/pdfme/pdfme"><img src="docs/public/sponsors/pdfme.svg" width="180" alt="pdfme sponsor badge" /></a>

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Charts",
"icon": "pie-chart"
"icon": "chart-pie"
}

View File

@@ -1,5 +0,0 @@
{
"$schema": "../category.schema.json",
"title": "Currency",
"icon": "dollar-sign"
}

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Money",
"title": "Finance",
"icon": "piggy-bank"
}

View File

@@ -1,5 +0,0 @@
{
"$schema": "../category.schema.json",
"title": "Furniture",
"icon": "rocking-chair"
}

View File

@@ -1,5 +0,0 @@
{
"$schema": "../category.schema.json",
"title": "Maps",
"icon": "map"
}

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Maths",
"title": "Mathematics",
"icon": "divide"
}

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Notifications",
"title": "Notification",
"icon": "triangle-alert"
}

0
comment-markup.md Normal file
View File

View File

@@ -35,10 +35,6 @@
"name": "connectivity",
"title": "Connectivity"
},
{
"name": "currency",
"title": "Currency"
},
{
"name": "cursors",
"title": "Cursors"
@@ -64,12 +60,12 @@
"title": "File icons"
},
{
"name": "food-beverage",
"title": "Food & beverage"
"name": "finance",
"title": "Finance"
},
{
"name": "furniture",
"title": "Furniture"
"name": "food-beverage",
"title": "Food & beverage"
},
{
"name": "gaming",
@@ -88,21 +84,13 @@
"title": "Mail"
},
{
"name": "maps",
"title": "Maps"
},
{
"name": "maths",
"title": "Maths"
"name": "math",
"title": "Mathematics"
},
{
"name": "medical",
"title": "Medical"
},
{
"name": "money",
"title": "Money"
},
{
"name": "multimedia",
"title": "Multimedia"
@@ -117,7 +105,7 @@
},
{
"name": "notifications",
"title": "Notifications"
"title": "Notification"
},
{
"name": "people",

View File

@@ -14,5 +14,13 @@
"light": "/library-logos/tamagui.svg",
"dark": "/library-logos/tamagui.svg"
}
},
{
"name": "Reflex",
"url": "https://reflex.dev",
"image": {
"light": "/library-logos/reflex-light.svg",
"dark": "/library-logos/reflex-dark.svg"
}
}
]

View File

@@ -31,24 +31,8 @@
}
]
},
"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"
}
]
},
"lucide-vue-next": {
"order": 3,
"order": 2,
"icon": "vue-next",
"shields": [
{
@@ -64,7 +48,7 @@
]
},
"lucide-svelte": {
"order": 4,
"order": 3,
"icon": "svelte",
"shields": [
{
@@ -95,24 +79,8 @@
}
]
},
"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"
}
]
},
"lucide-react-native": {
"order": 6,
"order": 5,
"icon": "react-native",
"shields": [
{
@@ -128,7 +96,7 @@
]
},
"lucide-angular": {
"order": 7,
"order": 6,
"icon": "angular",
"shields": [
{
@@ -143,8 +111,43 @@
}
]
},
"lucide-static": {
"lucide-preact": {
"order": 7,
"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"
}
]
},
"@lucide/astro": {
"docsAlias": "lucide-astro",
"packageDirname": "astro",
"order": 8,
"icon": "astro",
"iconDark": "astro-dark",
"shields": [
{
"alt": "npm",
"src": "https://img.shields.io/npm/v/@lucide/astro",
"href": "https://www.npmjs.com/package/@lucide/astro"
},
{
"alt": "npm",
"src": "https://img.shields.io/npm/dw/@lucide/astro",
"href": "https://www.npmjs.com/package/@lucide/astro"
}
]
},
"lucide-static": {
"order": 9,
"icon": "svg",
"shields": [
{

View File

@@ -76,5 +76,24 @@
],
"source": "https://github.com/swisnl/nuxt-lucide-icons",
"documentation": "https://github.com/swisnl/nuxt-lucide-icons/blob/main/README.md"
},
{
"name": "lucide-lustre",
"description": "A library providing https://lucide.dev icons to lustre.",
"icon": "/framework-logos/lustre.webp",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/hexpm/v/lucide_lustre",
"href": "https://hex.pm/packages/lucide_lustre"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/hexpm/dw/lucide_lustre",
"href": "https://hex.pm/packages/lucide_lustre"
}
],
"source": "https://github.com/dinkelspiel/lucide_lustre",
"documentation": "https://github.com/dinkelspiel/lucide_lustre/blob/master/README.md"
}
]

View File

@@ -11,7 +11,7 @@
},
{
"icon": "x",
"link": "https://github.com/ericfennis"
"link": "https://x.com/ericfennis"
}
]
},

View File

@@ -49,7 +49,7 @@ import { $CamelCase } from '@lucide/lab';
</script>
<template>
<Icon :iconNode="burger" />
<Icon :iconNode="$CamelCase" />
</template>
`,
},
@@ -61,7 +61,7 @@ import { Icon } from 'lucide-svelte';
import { $CamelCase } from '@lucide/lab';
</script>
<Icon iconNode={burger} />
<Icon iconNode={$CamelCase} />
`,
},
{

View File

@@ -46,6 +46,10 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
text: 'Filled icons',
link: '/guide/advanced/filled-icons',
},
{
text: 'Aliased Names',
link: '/guide/advanced/aliased-names',
},
// {
// text: 'Combining icons',
// },
@@ -68,10 +72,6 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
text: 'Lucide React',
link: '/guide/packages/lucide-react',
},
{
text: 'Lucide React Native',
link: '/guide/packages/lucide-react-native',
},
{
text: 'Lucide Vue',
link: '/guide/packages/lucide-vue-next',
@@ -85,13 +85,21 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
link: '/guide/packages/lucide-solid',
},
{
text: 'Lucide Preact',
link: '/guide/packages/lucide-preact',
text: 'Lucide React Native',
link: '/guide/packages/lucide-react-native',
},
{
text: 'Lucide Angular',
link: '/guide/packages/lucide-angular',
},
{
text: 'Lucide Preact',
link: '/guide/packages/lucide-preact',
},
{
text: 'Lucide Astro',
link: '/guide/packages/lucide-astro',
},
{
text: 'Lucide Static',
link: '/guide/packages/lucide-static',

View File

@@ -38,6 +38,7 @@ const value = computed({
<Input
ref="input"
type="search"
autofocus
v-bind="$attrs"
v-model="value"
class="input-wrapper"

View File

@@ -42,7 +42,7 @@ onMounted(() => {
font-weight: 400;
background: var(--vp-c-brand-dark);
color: white;
z-index: 10;
z-index: 99;
white-space: nowrap;
padding: 2px 8px;
border-radius: 4px;

View File

@@ -9,7 +9,7 @@ export default {
}
return null;
})
.then((res) => res.tag_name);
.then((res) => res?.tag_name);
return {
version,

View File

@@ -171,16 +171,14 @@ watch(absoluteStrokeWidth, (enabled) => {
margin-top: 32px;
padding: 0;
background: none;
max-width: 280px;
}
@media (min-width: 640px) {
.card {
display: grid;
grid-template-columns: 8fr 10fr;
}
/*
/*
.card-column {
flex: 1;
} */

View File

@@ -37,6 +37,12 @@ export default {
logo: '/framework-logos/angular.svg',
label: 'Lucide documentation for Angular',
},
{
name: 'lucide-astro',
logo: '/framework-logos/astro.svg',
logoDark: '/framework-logos/astro-dark.svg',
label: 'Lucide documentation for Astro',
},
{
name: 'lucide-react-native',
logo: '/framework-logos/react-native.svg',

View File

@@ -13,7 +13,7 @@ const { go } = useRouter()
<HomeSectionTitle>Available For:</HomeSectionTitle>
<div class="packages-list">
<a
v-for="{ name, logo } in data.packages"
v-for="{ name, logo, logoDark } in data.packages"
:href="`/guide/packages/${name}`"
class="package-logo"
:aria-label="`Read more about: ${name} package`"
@@ -21,10 +21,17 @@ const { go } = useRouter()
>
<img
:src="logo"
height="36"
width="36"
loading="lazy"
:class="{ light: logoDark, 'image-logo': true }"
:alt="`${name} logo`"
loading="lazy"
/>
<img
v-if="logoDark"
:src="logoDark"
:alt="`${name} logo`"
class="image-logo dark"
loading="lazy"
/>
</a>
</div>
@@ -35,6 +42,13 @@ const { go } = useRouter()
</template>
<style scoped>
.image-logo {
object-fit: contain;
width: 36px;
height: 36px;
}
.packages-list {
display: flex;
flex-wrap: wrap;
@@ -57,4 +71,11 @@ const { go } = useRouter()
.package-logo:hover {
opacity: .6;
}
html.dark .image-logo.light {
display: none;
}
html:not(.dark) .image-logo.dark {
display: none;
}
</style>

View File

@@ -5,22 +5,32 @@ import IconButton from '../base/IconButton.vue';
import VPDocAsideCarbonAds from 'vitepress/dist/client/theme-default/components/VPDocAsideCarbonAds.vue'
import { x } from '../../../data/iconNodes'
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
import { onMounted, ref } from 'vue';
const { theme } = useData()
const showAd = useSessionStorage('show-carbon-ads',true)
const showAd = useSessionStorage('show-carbon-ads', true)
const carbonLoaded = ref(true)
defineProps<{
drawerOpen: boolean
}>()
const CloseIcon = createLucideIcon('Close', x)
onMounted(() => {
setTimeout(() => {
if (window?._carbonads == null) {
carbonLoaded.value = false
}
}, 5000)
})
</script>
<template>
<div
:class="{
'drawer-open': drawerOpen,
'hide-ad': !showAd
'hide-ad': !(showAd && carbonLoaded)
}"
class="floating-ad"
v-if="theme.carbonAds"

View File

@@ -1,98 +1,98 @@
<script setup lang="ts">
import { computed } from 'vue';
import { startCase, camelCase } from 'lodash-es'
import ButtonMenu from '../base/ButtonMenu.vue'
import { toPascalCase } from '@lucide/shared';
import ButtonMenu from '../base/ButtonMenu.vue';
import { useIconStyleContext } from '../../composables/useIconStyle';
import useConfetti from '../../composables/useConfetti';
const props = defineProps<{
name: string
popoverPosition?: 'top' | 'bottom'
}>()
const { size, color, strokeWidth, absoluteStrokeWidth } = useIconStyleContext()
const { animate, confetti } = useConfetti()
name: string;
popoverPosition?: 'top' | 'bottom';
}>();
const { size, color, strokeWidth, absoluteStrokeWidth } = useIconStyleContext();
const { animate, confetti } = useConfetti();
const componentName = computed(() => {
return startCase(camelCase(props.name)).replace(/\s/g, '')
})
return (toPascalCase(props.name) as string).replace(/\s/g, '');
});
function copyJSX() {
let attrs = ['']
let attrs = [''];
if (size.value && size.value !== 24) {
attrs.push(`size={${size.value}}`)
attrs.push(`size={${size.value}}`);
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`)
attrs.push(`color="${color.value}"`);
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`strokeWidth={${strokeWidth.value}}`)
attrs.push(`strokeWidth={${strokeWidth.value}}`);
}
if (absoluteStrokeWidth.value) {
attrs.push(`absoluteStrokeWidth`)
attrs.push(`absoluteStrokeWidth`);
}
const code = `<${componentName.value}${attrs.join(' ')} />`
const code = `<${componentName.value}${attrs.join(' ')} />`;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
function copyComponentName() {
const code = componentName.value
const code = componentName.value;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
function copyVue() {
let attrs = ['']
let attrs = [''];
if (size.value && size.value !== 24) {
attrs.push(`:size="${size.value}"`)
attrs.push(`:size="${size.value}"`);
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`)
attrs.push(`color="${color.value}"`);
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`:stroke-width="${strokeWidth.value}"`)
attrs.push(`:stroke-width="${strokeWidth.value}"`);
}
if (absoluteStrokeWidth.value) {
attrs.push(`absoluteStrokeWidth`)
attrs.push(`absoluteStrokeWidth`);
}
const code = `<${componentName.value}${attrs.join(' ')} />`
const code = `<${componentName.value}${attrs.join(' ')} />`;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
function copyAngular() {
let attrs = ['']
let attrs = [''];
attrs.push(`name="${props.name}"`)
attrs.push(`name="${props.name}"`);
if (size.value && size.value !== 24) {
attrs.push(`[size]="${size.value}"`)
attrs.push(`[size]="${size.value}"`);
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`)
attrs.push(`color="${color.value}"`);
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`[strokeWidth]="${strokeWidth.value}"`)
attrs.push(`[strokeWidth]="${strokeWidth.value}"`);
}
if (absoluteStrokeWidth.value) {
attrs.push(`[absoluteStrokeWidth]="true"`)
attrs.push(`[absoluteStrokeWidth]="true"`);
}
const code = `<lucide-icon${attrs.join(' ')}></lucide-icon>`
const code = `<lucide-icon${attrs.join(' ')}></lucide-icon>`;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
</script>
@@ -106,11 +106,11 @@ function copyAngular() {
data-confetti-text="Copied!"
:popoverPosition="popoverPosition"
:options="[
{ text: 'Copy JSX' , onClick: copyJSX },
{ text: 'Copy Component Name' , onClick: copyComponentName },
{ text: 'Copy Vue' , onClick: copyVue },
{ text: 'Copy Svelte' , onClick: copyJSX },
{ text: 'Copy Angular' , onClick: copyAngular },
{ text: 'Copy JSX', onClick: copyJSX },
{ text: 'Copy Component Name', onClick: copyComponentName },
{ text: 'Copy Vue', onClick: copyVue },
{ text: 'Copy Svelte', onClick: copyJSX },
{ text: 'Copy Angular', onClick: copyAngular },
]"
/>
</template>

View File

@@ -9,6 +9,8 @@ import {useData, useRouter} from 'vitepress';
import { computed } from 'vue';
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
import { diamond } from '../../../data/iconNodes'
import deprecationReasonTemplate from '../../../../../tools/build-icons/utils/deprecationReasonTemplate.mjs';
const props = defineProps<{
icon: IconEntity
@@ -24,6 +26,15 @@ const tags = computed(() => {
})
const DiamondIcon = createLucideIcon('Diamond', diamond)
const deprecatedTitle = computed(() => {
if (!props.icon.deprecationReason) return '';
return deprecationReasonTemplate(props.icon.deprecationReason, {
componentName: props.icon.name,
iconName: props.icon.name,
toBeRemovedInVersion: props.icon.toBeRemovedInVersion,
});
});
</script>
<template>
@@ -36,6 +47,13 @@ const DiamondIcon = createLucideIcon('Diamond', diamond)
<DiamondIcon fill="currentColor" :size="12"/>
{{ icon.externalLibrary }}
</div>
<Badge
v-if="icon.deprecated"
class="deprecated-badge"
:title="deprecatedTitle"
>
Deprecated
</Badge>
</div>
<div class="tags-scroller" v-if="tags.length">
<p class="icon-tags horizontal-scroller">
@@ -98,6 +116,16 @@ const DiamondIcon = createLucideIcon('Diamond', diamond)
align-items: center;
}
.deprecated-badge {
background-color: var(--vp-c-brand-5);
margin-left: 40px;
opacity: .8;
}
.deprecated-badge:hover {
background-color: var(--vp-c-brand-2);
}
.icon-tags {
font-size: 16px;
color: var(--vp-c-text-2);

View File

@@ -0,0 +1,438 @@
<script setup lang="ts">
import type { IconEntity } from '../../types';
import { computed } from 'vue';
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon.ts';
import Calendar from '../../../data/iconDetails/calendar.ts';
import Clock from '../../../data/iconDetails/clock.ts';
import Bug from '../../../data/iconDetails/bug.ts';
import Rocket from '../../../data/iconDetails/rocket.ts';
import TriangleAlert from '../../../data/iconDetails/triangle-alert.ts';
import PartyPopper from '../../../data/iconDetails/party-popper.ts';
import Scissors from '../../../data/iconDetails/scissors.ts';
import Copy from '../../../data/iconDetails/copy.ts';
import Save from '../../../data/iconDetails/save.ts';
import Clipboard from '../../../data/iconDetails/clipboard.ts';
import MessageCircle from '../../../data/iconDetails/message-circle.ts';
import ThumbsDown from '../../../data/iconDetails/thumbs-down.ts';
import ThumbsUp from '../../../data/iconDetails/thumbs-up.ts';
import Heart from '../../../data/iconDetails/heart.ts';
import Folder from '../../../data/iconDetails/folder.ts';
import Files from '../../../data/iconDetails/files.ts';
import Plus from '../../../data/iconDetails/plus.ts';
import File from '../../../data/iconDetails/file.ts';
import FileText from '../../../data/iconDetails/file-text.ts';
const props = defineProps<{
name: IconEntity['name'];
iconNode: IconEntity['iconNode'];
}>();
const iconComponent = computed(() => {
if (!props.name || !props.iconNode) return null;
return createLucideIcon(props.name, props.iconNode);
});
const CalendarIcon = createLucideIcon('calendar', Calendar.iconNode);
const ClockIcon = createLucideIcon('clock', Clock.iconNode);
const BugIcon = createLucideIcon('bug', Bug.iconNode);
const RocketIcon = createLucideIcon('rocket', Rocket.iconNode);
const AlertTriangleIcon = createLucideIcon('alert-triangle', TriangleAlert.iconNode);
const ScissorsIcon = createLucideIcon('scissors', Scissors.iconNode);
const CopyIcon = createLucideIcon('copy', Copy.iconNode);
const SaveIcon = createLucideIcon('save', Save.iconNode);
const ClipboardIcon = createLucideIcon('clipboard', Clipboard.iconNode);
const PartyPopperIcon = createLucideIcon('party-popper', PartyPopper.iconNode);
const HeartIcon = createLucideIcon('heart', Heart.iconNode);
const ThumbsUpIcon = createLucideIcon('thumbs-up', ThumbsUp.iconNode);
const ThumbsDownIcon = createLucideIcon('thumbs-down', ThumbsDown.iconNode);
const MessageCircleIcon = createLucideIcon('message-circle', MessageCircle.iconNode);
const FolderIcon = createLucideIcon('folder.ts', Folder.iconNode);
const FilesIcon = createLucideIcon('files.ts', Files.iconNode);
const PlusIcon = createLucideIcon('plus.ts', Plus.iconNode);
const FileIcon = createLucideIcon('file.ts', File.iconNode);
const FileTextIcon = createLucideIcon('file-text.ts', FileText.iconNode);
const prettyName = props.name
.split('-')
.at(0)
.split('')
.map((character, index) => (index === 0 ? character.toUpperCase() : character))
.join('');
</script>
<template>
<section class="showcase">
<h2 class="title">See this icon in action</h2>
<div class="showcase-grid">
<div class="showcase-item column">
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder narrow"></div>
<div class="spacer"></div>
<div class="actions">
<button class="button button-brand">
<iconComponent />
{{ prettyName }}
</button>
<button class="button button-alt">Cancel</button>
</div>
</div>
<div class="showcase-item column">
<div class="placeholder narrow"></div>
<div class="input-wrapper">
<CalendarIcon v-if="name !== 'calendar'" />
<ClockIcon v-if="name == 'calendar'" />
<input
type="text"
v-if="name !== 'calendar'"
placeholder="Enter a date..."
/>
<input
type="text"
v-if="name == 'calendar'"
placeholder="Enter a time..."
/>
</div>
<div class="spacer"></div>
<div class="placeholder narrow"></div>
<div class="input-wrapper">
<iconComponent />
<input
type="text"
placeholder="Enter a value..."
/>
</div>
</div>
<div class="showcase-item column">
<div
class="row"
v-if="name !== 'bug'"
>
<div class="placeholder"></div>
<div class="badge badge-red">
<BugIcon :size="20" />
Bug
</div>
</div>
<div
class="row"
v-else
>
<div class="placeholder"></div>
<div class="badge badge-red">
<AlertTriangleIcon :size="20" />
Alert
</div>
</div>
<div class="row">
<div class="placeholder"></div>
<div class="badge badge-indigo">
<RocketIcon
:size="20"
v-if="name !== 'rocket'"
/>
<PartyPopperIcon
:size="20"
v-else
/>
Feature
</div>
</div>
<div class="row">
<div class="placeholder"></div>
<div class="badge badge-green">
<iconComponent :size="20" />
{{ prettyName }}
</div>
</div>
</div>
<div class="showcase-item column">
<button class="button button-alt button-square">
<FolderIcon v-if="name !== 'folder'" />
<FilesIcon v-else />
Documents
<PlusIcon class="ms-auto" />
</button>
<button class="button button-alt button-square">
<FileIcon v-if="name !== 'file'" />
<FileTextIcon v-else />
Readme
</button>
<button class="button button-alt button-square">
<iconComponent />
{{ prettyName }}
<span class="badge-notification ms-auto">12</span>
</button>
</div>
<div class="showcase-item column">
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder narrow"></div>
<div class="spacer"></div>
<div class="actions">
<div class="icon-counter">
<HeartIcon v-if="name !== 'heart'" />
<ThumbsUpIcon v-else />
112
</div>
<div class="spacer"></div>
<div class="icon-counter">
<MessageCircleIcon v-if="name !== 'message-circle'" />
<ThumbsDownIcon v-else />
8
</div>
<div class="spacer"></div>
<div class="icon-counter">
<iconComponent />
11
</div>
</div>
</div>
<div class="showcase-item">
<div class="column align-items-center">
<div class="actions justify-content-center">
<button class="button button-icon">
<CopyIcon v-if="name !== 'copy'" />
<SaveIcon v-else />
</button>
<button class="button button-icon">
<ScissorsIcon v-if="name !== 'scissors'" />
<SaveIcon v-else />
</button>
<button class="button button-icon">
<ClipboardIcon v-if="name !== 'clipboard'" />
<SaveIcon v-else />
</button>
<button class="button button-icon">
<iconComponent></iconComponent>
<span class="badge-notification">2</span>
</button>
</div>
<div class="spacer"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
</div>
</div>
</div>
</section>
</template>
<style scoped>
.showcase {
margin-bottom: 32px;
}
.showcase-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 48px;
margin-inline-start: 24px;
margin-block-start: 48px;
}
.showcase-item {
padding: 24px;
border-radius: 8px;
background-color: var(--vp-c-bg);
box-shadow:
var(--vp-shadow-4),
-24px -24px 0 var(--vp-c-bg-soft);
display: flex;
align-items: center;
justify-content: center;
min-height: 240px;
}
.spacer {
flex-basis: 0;
}
.button {
position: relative;
border-radius: 32px;
padding: 8px 16px;
display: flex;
flex-direction: row;
gap: 12px;
font-weight: 500;
transition:
color 0.25s,
border-color 0.25s,
background-color 0.25s;
border-color: var(--vp-button-alt-border);
color: var(--vp-button-alt-text);
background-color: var(--vp-button-alt-bg);
&:hover {
border-color: var(--vp-button-alt-hover-border);
color: var(--vp-button-alt-hover-text);
background-color: var(--vp-button-alt-hover-bg);
}
&.button-brand {
border-color: var(--vp-button-brand-border);
color: var(--vp-button-brand-text);
background-color: var(--vp-button-brand-bg);
&:hover {
border-color: var(--vp-button-brand-hover-border);
color: var(--vp-button-brand-hover-text);
background-color: var(--vp-button-brand-hover-bg);
}
}
&.button-icon {
padding: 12px;
}
&.button-square {
border-radius: 8px;
width: 100%;
}
}
.actions {
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 12px;
}
.lucide {
flex-shrink: 0;
flex-grow: 0;
}
.placeholder {
display: block;
background-color: var(--vp-c-bg-soft);
border-radius: 32px;
height: 16px;
width: 100%;
&.narrow {
width: 33%;
}
}
.input-wrapper {
position: relative;
width: 100%;
.lucide {
position: absolute;
inset-inline-start: 12px;
inset-block: 50%;
translate: 0 -50%;
color: var(--vp-c-text-1);
opacity: 0.7;
}
input {
padding: 12px 20px;
padding-inline-start: 48px;
border-radius: 8px;
background-color: var(--vp-c-bg-soft);
color: var(--vp-c-text-1);
display: block;
width: 100%;
border: 2px solid transparent;
transition:
color 0.25s,
border-color 0.25s,
background-color 0.25s;
&:hover {
border-color: var(--vp-c-border);
}
&:focus {
border-color: var(--vp-c-brand);
}
}
&:focus-within {
.lucide {
opacity: 1;
}
}
}
.badge {
flex-shrink: 0;
display: flex;
flex-direction: row;
align-items: center;
gap: 6px;
padding: 4px 8px;
border-radius: 8px;
background-color: transparent;
overflow: hidden;
position: relative;
color: var(--badge-color);
&:before {
content: ' ';
inset: 0;
position: absolute;
background-color: var(--badge-color);
opacity: 0.1;
}
&.badge-indigo {
--badge-color: var(--vp-c-indigo-2);
}
&.badge-green {
--badge-color: var(--vp-c-green-2);
}
&.badge-red {
--badge-color: var(--vp-c-brand);
}
}
.badge-notification {
background-color: var(--vp-c-brand);
color: var(--vp-button-brand-text);
border-radius: 32px;
padding: 0 8px;
min-width: 24px;
min-height: 24px;
}
.button-icon {
.badge-notification {
position: absolute;
top: 0;
right: 0;
translate: 33% -33%;
}
}
.row {
display: flex;
flex-direction: row;
gap: 12px;
align-items: center;
width: 100%;
}
.icon-counter {
display: flex;
flex-direction: row;
gap: 6px;
color: var(--vp-c-text-2);
align-items: center;
}
.column {
display: flex;
flex-direction: column;
gap: 12px;
align-items: start;
width: 100%;
}
.align-items-center {
align-items: center;
}
.justify-content-center {
justify-content: center;
}
.ms-auto {
margin-inline-start: auto;
}
</style>

View File

@@ -14,6 +14,7 @@ import CarbonAdOverlay from './CarbonAdOverlay.vue';
const ICON_SIZE = 56;
const ICON_GRID_GAP = 8;
const DEFAULT_GRID_ITEMS = 10 * 160;
const props = defineProps<{
icons: IconEntity[];
@@ -114,11 +115,23 @@ function handleCloseDrawer() {
/>
</StickyBar>
<NoResults
v-if="list.length === 0"
v-if="list.length === 0 && searchQuery !== ''"
:searchQuery="searchQuery"
@clear="searchQuery = ''"
/>
<div v-bind="wrapperProps" class="icon">
<IconGrid
v-else-if="list.length === 0"
:key="index"
overlayMode
:icons="[...searchResults].splice(0, DEFAULT_GRID_ITEMS)"
:activeIcon="activeIconName"
@setActiveIcon="setActiveIconName"
/>
<div
v-bind="wrapperProps"
class="icon"
v-else
>
<IconGrid
v-for="{ index, data: icons } in list"
:key="index"

View File

@@ -1,29 +1,20 @@
<script setup lang="ts">
import type { IconEntity } from '../../types'
import IconGrid from './IconGrid.vue'
import type { IconEntity } from '../../types';
import IconGrid from './IconGrid.vue';
defineProps<{
icons: IconEntity[]
}>()
icons: IconEntity[];
}>();
</script>
<template>
<section class="related-icons">
<h2 class="title">
Related Icons
</h2>
<IconGrid
:icons="icons"
/>
<h2 class="title">More icons like this</h2>
<IconGrid :icons="icons" />
</section>
</template>
<style scoped>
.title {
margin-bottom: 24px;
font-size: 19px;
font-weight: 500;
}
.related-icons {
margin-bottom: 32px;
}

View File

@@ -1,21 +1,27 @@
import packageData from '../../../data/packageData.json';
import packageDataList from '../../../data/packageData.json';
import thirdPartyPackages from '../../../data/packageData.thirdParty.json';
import fetchPackages from '../../../lib/fetchPackages';
export default {
async load() {
const packages = await fetchPackages();
const packageJsonList = await fetchPackages();
return {
packages: packages
.filter((p) => p?.name != null && p.name in packageData)
.map((pData) => ({
...pData,
...packageData[pData.name],
documentation: `/guide/packages/${pData.name}`,
source: `https://github.com/lucide-icons/lucide/tree/main/packages/${pData.name}`,
icon: `/framework-logos/${packageData[pData.name].icon}.svg`,
}))
packages: packageJsonList
.filter((pJson) => pJson?.name != null && pJson.name in packageDataList)
.map((pJson) => {
const packageData = packageDataList[pJson.name];
return {
...pJson,
...packageData,
documentation: `/guide/packages/${packageData.docsAlias ?? pJson.name}`,
source: `https://github.com/lucide-icons/lucide/tree/main/packages/${packageData.packageDirname ?? pJson.name}`,
icon: `/framework-logos/${packageData.icon}.svg`,
iconDark: Boolean(packageData.iconDark)
? `/framework-logos/${packageData.iconDark}.svg`
: null,
};
})
.sort((a, b) => a.order - b.order),
thirdPartyPackages,
};

View File

@@ -6,6 +6,9 @@ export interface IconMetaData {
categories: string[];
contributors: string[];
aliases?: string[];
deprecated?: boolean;
deprecationReason?: string;
toBeRemovedInVersion?: string;
}
export type ExternalLibs = 'lab';
@@ -33,12 +36,19 @@ interface Shield {
export interface PackageItem {
name: string;
// set when the package's directory
// name under the `packages/` directory
// is diffrent from the package name
packageDirname?: string;
description: string;
icon: string;
iconDark: string;
shields: Shield[];
source: string;
documentation: string;
// set when the docs page name is
// diffrent from the package name
docsAlias?: string;
order?: number;
private?: boolean;
flutter?: object;

View File

@@ -139,22 +139,22 @@ contained icon.
```tsx
// Don't do this
<button class="btn-icon">
<Home/>
<House/>
</button>
// Don't do this either
<button class="btn-icon">
<Home aria-label="Home icon"/>
<House aria-label="Home icon"/>
</button>
// This works but might not be the best solution, see below
<button aria-label="Go to home" class="btn-icon">
<Home/>
<House/>
</button>
// Do this instead
<button class="btn-icon">
<Home/>
<House/>
<span class="visually-hidden">Go to home</span>
</button>
```
@@ -167,6 +167,7 @@ Although you could provide accessible labels to your elements via the `aria-labe
generally recommend avoiding this and instead suggest that you use your chosen CSS framework's "
visually hidden" utility whenever possible. You can
[read more about why `aria-label` might not be the best solution](https://gomakethings.com/revisting-aria-label-versus-a-visually-hidden-class/).
### Example - Radix UI
Use [Radix UI's built-in accessible icon utility component](https://www.radix-ui.com/primitives/docs/utilities/accessible-icon).
@@ -179,6 +180,7 @@ import { AccessibleIcon } from '@radix-ui/react-accessible-icon';
<ArrowRightIcon />
</AccessibleIcon>
```
### Example - Bootstrap
```html

View File

@@ -0,0 +1,93 @@
# Aliased Names
Icons can have multiple names for the same icon. This is because we choose to rename some icons to make them more consistent with the rest of the icon set, or the name was not generic. For example, the `edit-2` icon is renamed to `pen` to make the name more generic, since it is just a pen icon.
Beside aliases names lucide also includes prefixed and suffixed names to use within your project. This is to prevent import name collisions with other libraries or your own code.
```tsx
// These are all the same icon
import {
House,
HouseIcon,
LucideHouse,
} from "lucide-react";
```
## Choosing import name style
To be consistent in your imports or want to change the autocompletion of Lucide icons in your IDE there an option to able the choose the import name style you want.
This can be done by creating a custom module declaration file to override the lucide imports and turning off the autocomplete in your IDE.
### Turn off autocomplete in your IDE
```json [.vscode/settings.json]
{
"typescript.preferences.autoImportFileExcludePatterns": [
"lucide-react", // or
"lucide-preact", // or
"lucide-react-native", // or
"lucide-vue-next",
]
}
```
### Create a custom module declaration file
Only available for `lucide-react`, `lucide-preact`, `lucide-react-native`, `lucide-vue-next` package.
This will enable you to choose the import name style you want to use in your project.
::: code-group
```ts [React]
declare module "lucide-react" {
// Prefixed import names
export * from "lucide-react/dist/lucide-react.prefixed";
// or
// Suffixed import names
export * from "lucide-react/dist/lucide-react.suffixed";
}
```
```ts [Vue]
declare module "lucide-vue-next" {
// Prefixed import names
export * from "lucide-vue-next/dist/lucide-vue-next.prefixed";
// or
// Suffixed import names
export * from "lucide-vue-next/dist/lucide-vue-next.suffixed";
}
```
```ts [Preact]
declare module "lucide-preact" {
// Prefixed import names
export * from "lucide-preact/dist/lucide-preact.prefixed";
// or
// Suffixed import names
export * from "lucide-preact/dist/lucide-preact.suffixed";
}
```
```ts [React Native]
declare module "lucide-react-native" {
// Prefixed import names
export * from "lucide-react-native/dist/lucide-react-native.prefixed";
// or
// Suffixed import names
export * from "lucide-react-native/dist/lucide-react-native.suffixed";
}
```
:::
Place this in your project root or in a folder where your tsconfig.json is located, or locate it in your defined type directory.
Easiest way is to create a `@types` folder in your project root and name the file `[package-name].d.ts`.
### Import name styles
| Import Style | Available imports | Declaration file import |
| ------------- | --------------------------- | ----------------------- |
| Default | Home, HomeIcon, LucideHome | |
| Prefixed | LucideHome | [package].prefixed |
| Suffixed | HomeIcon | [package].suffixed |

View File

@@ -52,7 +52,7 @@ Here are rules that should be followed to keep quality and consistency when maki
![optical-volume-high](../../images/optical-volume-high.svg?raw=true "optical-volume-high")
**Tip:** place your icon next to circle or square and blur them both; your icon should not feel much darker than the base shape.
**Tip:** place your icon next to the circle or square icon and blur them both; your icon should not feel much darker than the base shape.
### 10. Icons should be visually centered by their center of gravity.
@@ -76,7 +76,7 @@ Here are rules that should be followed to keep quality and consistency when maki
![curvature-uneven](../../images/curvature-uneven.svg?raw=true "curvature-uneven")
**Tip:** make sure to use arcs or quadratic curves, when using cubic curves control points should have mirrored angles for smooth curves.
**Tip:** make sure to use arcs or quadratic curves. When using cubic curves control points should have mirrored angles for smooth curves.
### 13. Icons should aim to be pixel perfect so that they will be sharp on low DPI displays.
@@ -142,7 +142,7 @@ For each icon these attributes are applied, corresponding to the above rules.
### Minify paths
The code of paths can sometimes get quite large. To reduce file size we like to minify the code.
We recommend to use the [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths to 2 points of precision.
We recommend to use [Lucide Studio](https://studio.lucide.dev/) to tidy paths to 3 points of precision.
### Allowed elements

View File

@@ -12,7 +12,8 @@ Lucide is an open-source icon library that provides 1000+ vector (svg) files for
## Available Icons
Lucide contains icons with different variants and states, allowing users to choose the most suitable icon for their needs. And if a desired icon isn't available yet, users can open a design request, and the Lucide community contributors will help provide new icons. With more icons to choose from, users have more options to work with in their projects.
Complete Set of Icons
### Complete Set of Icons
As new applications with specific features arise, Lucide aims to provide a complete set of icons for every project. The community follows a set of design rules when designing new icons. These rules maintain standards for the icons, such as recognizability, consistency in style, and readability at all sizes. While creativity is valued in new icons, recognizable design conventions are important to ensure that the icons are easily identifiable by users.
@@ -28,7 +29,8 @@ However, not everyone can understand them easily. Read more about [how to use Lu
## Official Packages
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte), [Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs) and [Flutter](https://lucide.dev/guide/packages/lucide-flutter).
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte), [Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [Astro](https://lucide.dev/guide/packages/lucide-astro), and [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs).
## Community
If you have any questions about Lucide, feel free to reach out to the community. You can find them on [GitHub](https://github.com/lucide-icons/lucide) and [Discord](https://discord.gg/EH6nSts).

View File

@@ -22,6 +22,10 @@ yarn add lucide
npm install lucide
```
```sh [bun]
bun add lucide
```
:::
For more details, see the [documentation](packages/lucide.md).
@@ -44,6 +48,10 @@ yarn add lucide-react
npm install lucide-react
```
```sh [bun]
bun add lucide-react
```
:::
For more details, see the [documentation](packages/lucide-react.md).
@@ -67,6 +75,10 @@ yarn add lucide-vue-next
npm install lucide-vue-next
```
```sh [bun]
bun add lucide-vue-next
```
:::
For more details, see the [documentation](packages/lucide-vue-next.md).
@@ -90,6 +102,10 @@ yarn add lucide-svelte
npm install lucide-svelte
```
```sh [bun]
bun add lucide-svelte
```
:::
For more details, see the [documentation](packages/lucide-svelte.md).
@@ -112,6 +128,10 @@ yarn add lucide-solid
npm install lucide-solid
```
```sh [bun]
bun add lucide-solid
```
:::
For more details, see the [documentation](packages/lucide-solid.md).
@@ -134,6 +154,10 @@ yarn add lucide-angular
npm install lucide-angular
```
```sh [bun]
bun add lucide-angular
```
:::
For more details, see the [documentation](packages/lucide-angular.md).
@@ -156,8 +180,41 @@ yarn add lucide-preact
npm install lucide-preact
```
```sh [bun]
bun add lucide-preact
```
:::
For more details, see the [documentation](packages/lucide-preact.md).
## Astro
Implementation of the lucide icon library for Astro applications.
::: code-group
```sh [pnpm]
pnpm install @lucide/astro
```
```sh [yarn]
yarn add @lucide/astro
```
```sh [npm]
npm install @lucide/astro
```
```sh [bun]
bun add @lucide/astro
```
:::
For more details, see the [documentation](packages/lucide-astro.md).
## Static usage
Implementation of the lucide icon library for multiple usages that like to use: SVG files icons, SVG Sprite, Icon Fonts and static SVG strings export in Common JS modules (for NodeJS).
@@ -176,6 +233,10 @@ yarn add lucide-static
npm install lucide-static
```
```sh [bun]
bun add lucide-static
```
:::
For more details, see the [documentation](packages/lucide-static.md).

View File

@@ -18,6 +18,10 @@ yarn add lucide-angular
npm install lucide-angular
```
```sh [bun]
bun add lucide-angular
```
:::
## How to use
@@ -27,11 +31,11 @@ npm install lucide-angular
In any Angular module you wish to use Lucide icons in, you have to import `LucideAngularModule`, and pick any icons you wish to use:
```js
import { LucideAngularModule, File, Home, Menu, UserCheck } from 'lucide-angular';
import { LucideAngularModule, File, House, Menu, UserCheck } from 'lucide-angular';
@NgModule({
imports: [
LucideAngularModule.pick({File, Home, Menu, UserCheck})
LucideAngularModule.pick({File, House, Menu, UserCheck})
]
})
export class AppModule { }
@@ -40,14 +44,17 @@ export class AppModule { }
or using standalone version:
```js
import { Component } from '@angular/core';
import { LucideAngularModule, FileIcon } from 'lucide-angular';
@NgModule({
imports: [
LucideAngularModule
]
@Component({
standalone: true,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrl: './app.component.scss',
imports: [LucideAngularModule]
})
export class AppModule {
export class AppComponent {
readonly FileIcon = FileIcon;
}
```
@@ -57,7 +64,7 @@ Within your templates you may now use one of the following component tags to ins
```html
<lucide-angular name="file" class="my-icon"></lucide-angular>
<lucide-icon name="home" class="my-icon"></lucide-icon>
<lucide-icon name="house" class="my-icon"></lucide-icon>
<i-lucide name="menu" class="my-icon"></i-lucide>
<span-lucide name="user-check" class="my-icon"></span-lucide>
```
@@ -81,7 +88,7 @@ You can pass additional props to adjust the icon appearance.
| `absoluteStrokeWidth` | *boolean* | false |
```html
<i-lucide name="home" [size]="48" color="red" [strokeWidth]="1"></i-lucide>
<i-lucide name="house" [size]="48" color="red" [strokeWidth]="1"></i-lucide>
```
### Global configuration
@@ -144,11 +151,11 @@ They can be used in the same way as the official icons.
```js
import { LucideAngularModule } from 'lucide-angular';
import { burger } from '@lucide/lab';
import { coconut } from '@lucide/lab';
@NgModule({
imports: [
LucideAngularModule.pick({ burger })
LucideAngularModule.pick({ coconut })
]
})
export class AppModule { }

View File

@@ -0,0 +1,187 @@
# Lucide Astro
Implementation of the lucide icon library for Astro applications.
## Installation
::: code-group
```sh [pnpm]
pnpm add @lucide/astro
```
```sh [yarn]
yarn add @lucide/astro
```
```sh [npm]
npm install @lucide/astro
```
```sh [bun]
bun add @lucide/astro
```
:::
## How to use
Lucide is built with ES Modules, so it's completely tree-shakable.
Each icon can be imported as an Astro component, which renders an inline SVG element. This way, only the icons that are imported into your project are included in the final bundle. The rest of the icons are tree-shaken away.
### Example
Default usage:
```astro
---
import { Skull } from '@lucide/astro';
---
<Skull />
```
Additional props can be passed to adjust the icon:
```astro
---
import { Camera } from '@lucide/astro';
---
<Camera color="#ff3e98" />
```
For faster builds and load times, you can import icons directly from the `@lucide/astro/icons` directory:
```astro
---
import CircleAlert from '@lucide/astro/icons/circle-alert';
---
<CircleAlert color="#ff3e98" />
```
## Props
| name | type | default |
| --------------------- | --------- | ------------ |
| `size` | _number_ | 24 |
| `color` | _string_ | currentColor |
| `stroke-width` | _number_ | 2 |
| `absoluteStrokeWidth` | _boolean_ | false |
### Applying props
To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation).
```astro
---
import { Phone } from '@lucide/astro';
---
<Phone fill="#333" />
```
This results a filled phone icon.
## Types
The package includes type definitions for all icons. This is useful if you want to dynamically render icons.
### Example
```astro
---
import { House, Library, Cog, type Icon as IconType } from '@lucide/astro';
type MenuItem = {
name: string;
href: string;
icon: typeof IconType;
};
const menuItems: MenuItem[] = [
{
name: 'Home',
href: '/',
icon: House,
},
{
name: 'Blog',
href: '/blog',
icon: Library,
},
{
name: 'Projects',
href: '/projects',
icon: Cog,
},
];
---
{
menuItems.map((item) => (
<a href={item.href}>
<item.icon />
<span>{item.name}</span>
</a>
))
}
```
## With Lucide lab or custom icons
[Lucide lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library.
They can be used by using the `Icon` component.
All props of the regular Lucide icons can be passed to adjust the icon appearance.
### Using the `Icon` component
This creates a single icon based on the iconNode passed and renders a Lucide icon component.
```astro
---
import { Icon } from '@lucide/astro';
import { burger, sausage } from '@lucide/lab';
---
<Icon iconNode={burger} />
<Icon iconNode={sausage} color="red"/>
```
## One generic icon component
It is possible to create one generic icon component to load icons, but it is not recommended.
::: danger
The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application. This may be passable if you're doing SSG and SSR in server environments. However if you're doing SSR in serverless environments, it could negatively affect your app's performance, as a bigger bundle size will translate to an increase in cold starts.
:::
### Icon Component Example
```astro
---
import { icons, type IconProps } from '@lucide/astro';
interface Props extends IconProps {
name: keyof typeof icons;
}
const { name, ...restProps } = Astro.props;
const Icon = icons[name];
---
<Icon {...restProps} />
```
### Using the Icon Component
```astro
---
import LucideIcon from './LucideIcon.astro';
---
<LucideIcon name="Menu" />
```

View File

@@ -22,6 +22,10 @@ yarn add lucide-preact
npm install lucide-preact
```
```sh [bun]
bun add lucide-preact
```
:::
## How to use
@@ -80,10 +84,10 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
```jsx
import { Icon } from 'lucide-preact';
import { burger } from '@lucide/lab';
import { coconut } from '@lucide/lab';
const App = () => (
<Icon iconNode={burger} />
<Icon iconNode={coconut} />
);
```
@@ -115,7 +119,7 @@ export default Icon;
import Icon from './Icon';
const App = () => {
return <Icon name="home" />;
return <Icon name="house" />;
};
export default App;

View File

@@ -20,6 +20,10 @@ yarn add lucide-react-native
npm install lucide-react-native
```
```sh [bun]
bun add lucide-react-native
```
:::
## How to use
@@ -74,10 +78,10 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
```jsx
import { Icon } from 'lucide-react-native';
import { burger } from '@lucide/lab';
import { coconut } from '@lucide/lab';
const App = () => (
<Icon iconNode={burger} />
<Icon iconNode={coconut} />
);
```
@@ -109,7 +113,7 @@ export default Icon;
import Icon from './Icon';
const App = () => {
return <Icon name="home" />;
return <Icon name="house" />;
};
export default App;

View File

@@ -18,6 +18,10 @@ yarn add lucide-react
npm install lucide-react
```
```sh [bun]
bun add lucide-react
```
:::
## How to use
@@ -74,115 +78,28 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
```jsx
import { Icon } from 'lucide-react';
import { burger } from '@lucide/lab';
import { coconut } from '@lucide/lab';
const App = () => (
<Icon iconNode={burger} />
<Icon iconNode={coconut} />
);
```
## One generic icon component
## Dynamic Icon Component
It is possible to create one generic icon component to load icons, but it is not recommended.
Since it is importing all icons during build. This increases build time and the different modules it will create.
::: danger
The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application, negatively affecting its performance. This is especially important to keep in mind when using bundlers like `Webpack`, `Rollup`, or `Vite`.
`DynamicIcon` is useful for applications that want to show icons dynamically by icon name. For example, when using a content management system with where icon names are stored in a database.
This is not the case for the latest NextJS, because it uses server side rendering. The icons will be streamed to the client when needed. For NextJS with Dynamic Imports, see [dynamic imports](#nextjs-example) section for more information.
:::
For static use cases, it is recommended to import the icons directly.
### Icon Component Example
The same props can be passed to adjust the icon appearance. The `name` prop is required to load the correct icon.
```jsx
import { icons } from 'lucide-react';
import { DynamicIcon } from 'lucide-react/dynamic';
const Icon = ({ name, color, size }) => {
const LucideIcon = icons[name];
return <LucideIcon color={color} size={size} />;
};
export default Icon;
```
#### Using the Icon Component
```jsx
import Icon from './Icon';
const App = () => {
return <Icon name="Home" />;
};
export default App;
```
#### With Dynamic Imports
Lucide react exports a dynamic import map `dynamicIconImports`, which is useful for applications that want to show icons dynamically by icon name. For example, when using a content management system with where icon names are stored in a database.
When using client side rendering, it will fetch the icon component when it's needed. This will reduce the initial bundle size.
The keys of the dynamic import map are the lucide original icon names (kebab case).
Example with React suspense:
```tsx
import React, { lazy, Suspense } from 'react';
import { LucideProps } from 'lucide-react';
import dynamicIconImports from 'lucide-react/dynamicIconImports';
const fallback = <div style={{ background: '#ddd', width: 24, height: 24 }}/>
interface IconProps extends Omit<LucideProps, 'ref'> {
name: keyof typeof dynamicIconImports;
}
const Icon = ({ name, ...props }: IconProps) => {
const LucideIcon = lazy(dynamicIconImports[name]);
return (
<Suspense fallback={fallback}>
<LucideIcon {...props} />
</Suspense>
);
}
export default Icon
```
##### NextJS Example
In NextJS, [the dynamic function](https://nextjs.org/docs/pages/building-your-application/optimizing/lazy-loading#nextdynamic) can be used to dynamically load the icon component.
To make dynamic imports work with NextJS, you need to add `lucide-react` to the [`transpilePackages`](https://nextjs.org/docs/app/api-reference/next-config-js/transpilePackages) option in your `next.config.js` like this:
```js
/** @type {import('next').NextConfig} */
const nextConfig = {
transpilePackages: ['lucide-react'] // add this
}
module.exports = nextConfig
```
You can then start using it:
```tsx
import dynamic from 'next/dynamic'
import { LucideProps } from 'lucide-react';
import dynamicIconImports from 'lucide-react/dynamicIconImports';
interface IconProps extends LucideProps {
name: keyof typeof dynamicIconImports;
}
const Icon = ({ name, ...props }: IconProps) => {
const LucideIcon = dynamic(dynamicIconImports[name])
return <LucideIcon {...props} />;
};
export default Icon;
const App = () => (
<DynamicIcon name="camera" color="red" size={48} />
);
```

View File

@@ -18,6 +18,10 @@ yarn add lucide-solid
npm install lucide-solid
```
```sh [bun]
bun add lucide-solid
```
:::
## How to use
@@ -87,7 +91,7 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
```jsx
import { Icon } from 'lucide-solid';
import { burger, sausage } from '@lucide/lab';
import { sausage } from '@lucide/lab';
const App = () => (
<Icon iconNode={sausage} color="red"/>

View File

@@ -33,13 +33,17 @@ yarn add lucide-static
npm install lucide-static
```
```sh [bun]
bun add lucide-static
```
:::
### CDN
```html
<!-- SVG file for a single icon -->
<img src="https://unpkg.com/lucide-static@latest/icons/home.svg" />
<img src="https://unpkg.com/lucide-static@latest/icons/house.svg" />
<!-- Icon font -->
<style>
@@ -62,12 +66,12 @@ To use it in for example html:
```html
<!-- SVG file for a single icon -->
<img src="~lucide-static/icons/home.svg" />
<img src="~lucide-static/icons/house.svg" />
```
```css
.home-icon {
background-image: url(~lucide-static/icons/home.svg);
.house-icon {
background-image: url(~lucide-static/icons/house.svg);
}
```
@@ -90,7 +94,7 @@ You may need additional loader for this.
```html
<!-- Icon Sprite, not recommended for production! -->
<img src="lucide-static/sprite.svg#home" />
<img src="lucide-static/sprite.svg#house" />
<!-- or -->
<svg
@@ -132,7 +136,7 @@ and update the SVG as follows
class="lucide-icon"
>
<use
href="#alert-triangle"
href="#triangle-alert"
/>
</svg>
<svg>
@@ -147,7 +151,7 @@ and update the SVG as follows
```
```html
<div class="icon-home"></div>
<div class="icon-house"></div>
```
### Node.js

View File

@@ -7,18 +7,22 @@ Implementation of the lucide icon library for svelte applications.
::: code-group
```sh [pnpm]
pnpm install lucide-svelte
pnpm add @lucide/svelte
```
```sh [yarn]
yarn add lucide-svelte
yarn add @lucide/svelte
```
```sh [npm]
npm install lucide-svelte
npm install @lucide/svelte
```
```sh [bun]
bun add @lucide/svelte
```
:::
> `@lucide/svelte` is only for Svelte 5, for Svelte 4 use the `lucide-svelte` package.
## How to use
@@ -32,7 +36,7 @@ Default usage:
```svelte
<script>
import { Skull } from 'lucide-svelte';
import { Skull } from '@lucide/svelte';
</script>
<Skull />
@@ -42,20 +46,20 @@ Additional props can be passed to adjust the icon:
```svelte
<script>
import { Camera } from 'lucide-svelte';
import { Camera } from '@lucide/svelte';
</script>
<Camera color="#ff3e98" />
```
For faster builds and load times, you can import icons directly from the `lucide-svelte/icons` directory:
For faster builds and load times, you can import icons directly from the `@lucide/svelte/icons` directory:
```svelte
<script>
import AlertCircle from 'lucide-svelte/icons/alert-circle';
import CircleAlert from '@lucide/svelte/icons/circle-alert';
</script>
<AlertCircle color="#ff3e98" />
<CircleAlert color="#ff3e98" />
```
## Props
@@ -73,7 +77,7 @@ To customize the appearance of an icon, you can pass custom properties as props
```svelte
<script>
import { Phone } from 'lucide-svelte';
import { Phone } from '@lucide/svelte';
</script>
<Phone fill="#333" />
@@ -87,60 +91,140 @@ The package includes type definitions for all icons. This is useful if you want
### TypeScript Example
```svelte
::: code-group
```svelte [Svelte 5]
<script lang="ts">
import Home from 'lucide-svelte/icons/home';
import Library from 'lucide-svelte/icons/library';
import Cog from 'lucide-svelte/icons/cog';
import type { ComponentType } from 'svelte';
import type { Icon } from 'lucide-svelte';
import { Home, Library, Cog, type Icon as IconType } from '@lucide/svelte';
type MenuItem = {
name: string;
href: string;
icon: ComponentType<Icon>;
}
icon: typeof IconType;
};
const menuItems: MenuItem[] = [
{
name: 'Home',
href: '/',
icon: Home,
icon: Home
},
{
name: 'Blog',
href: '/blog',
icon: Library,
icon: Library
},
{
name: 'Projects',
href: '/projects',
icon: Cog,
icon: Cog
}
];
</script>
{#each menuItems as item}
{@const Icon = item.icon}
<a href={item.href}>
<svelte:component this={item.icon} />
<Icon />
<span>{item.name}</span>
</a>
{/each}
```
```svelte [Svelte 4]
<script lang="ts">
import { Home, Library, Cog, type Icon } from '@lucide/svelte';
import type { ComponentType } from 'svelte';
type MenuItem = {
name: string;
href: string;
icon: ComponentType<Icon>;
};
const menuItems: MenuItem[] = [
{
name: 'Home',
href: '/',
icon: Home
},
{
name: 'Blog',
href: '/blog',
icon: Library
},
{
name: 'Projects',
href: '/projects',
icon: Cog
}
];
</script>
{#each menuItems as item}
{@const Icon = item.icon}
<a href={item.href}>
<Icon />
<span>{item.name}</span>
</a>
{/each}
```
:::
### JSDoc Example
```svelte
::: code-group
```svelte [Svelte 5]
<script>
import Home from 'lucide-svelte/icons/home';
import Library from 'lucide-svelte/icons/library';
import Cog from 'lucide-svelte/icons/cog';
import { Home, Library, Cog } from '@lucide/svelte';
/**
* @typedef {Object} MenuItem
* @property {string} name
* @property {string} href
* @property {import('svelte').ComponentType<import('lucide-svelte').Icon>} icon
* @property {typeof import('@lucide/svelte').Icon} icon
*/
/** @type {MenuItem[]} */
const menuItems = [
{
name: 'Home',
href: '/',
icon: Home
},
{
name: 'Blog',
href: '/blog',
icon: Library
},
{
name: 'Projects',
href: '/projects',
icon: Cog
}
];
</script>
{#each menuItems as item}
{@const Icon = item.icon}
<a href={item.href}>
<Icon />
<span>{item.name}</span>
</a>
{/each}
```
```svelte [Svelte 4]
<script>
import { Home, Library, Cog } from '@lucide/svelte';
/**
* @typedef {Object} MenuItem
* @property {string} name
* @property {string} href
* @property {import('svelte').ComponentType<import('@lucide/svelte').Icon>} icon
*/
/** @type {MenuItem[]} */
@@ -162,8 +246,18 @@ The package includes type definitions for all icons. This is useful if you want
}
];
</script>
{#each menuItems as item}
{@const Icon = item.icon}
<a href={item.href}>
<Icon />
<span>{item.name}</span>
</a>
{/each}
```
:::
For more details about typing the `svelte:component` directive, see the [Svelte documentation](https://svelte.dev/docs/typescript#types-componenttype).
## With Lucide lab or custom icons
@@ -179,11 +273,11 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
```svelte
<script>
import { Icon } from 'lucide-svelte';
import { burger, sausage } from '@lucide/lab';
import { Icon } from '@lucide/svelte';
import { pear, sausage } from '@lucide/lab';
</script>
<Icon iconNode={burger} />
<Icon iconNode={pear} />
<Icon iconNode={sausage} color="red"/>
```
@@ -197,15 +291,30 @@ The example below imports all ES Modules, so exercise caution when using it. Imp
### Icon Component Example
```svelte
::: code-group
```svelte [Svelte 5]
<script>
import * as icons from 'lucide-svelte';
import * as icons from '@lucide/svelte';
let { name } = $props();
const Icon = icons[name];
</script>
<Icon {...props} />
```
```svelte [Svelte 4]
<script>
import * as icons from '@lucide/svelte';
export let name;
</script>
<svelte:component this="{icons[name]}" {...$$props} />
<svelte:component this={icons[name]} {...$$props} />
```
:::
#### Using the Icon Component
```svelte

View File

@@ -2,12 +2,6 @@
Implementation of the lucide icon library for Vue 3 applications.
## Vue 3 or Vue 2
::: tip
This version of lucide is for Vue 3, For Vue 2 got to [lucide-vue ->](lucide-vue)
:::
## Installation
::: code-group
@@ -24,6 +18,10 @@ yarn add lucide-vue-next
npm install lucide-vue-next
```
```sh [bun]
bun add lucide-vue-next
```
:::
## How to use
@@ -83,11 +81,11 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
```vue
<script setup>
import { Icon } from 'lucide-vue-next';
import { burger } from '@lucide/lab';
import { baseball } from '@lucide/lab';
</script>
<template>
<Icon :iconNode="burger" />
<Icon :iconNode="baseball" />
</template>
```

View File

@@ -2,15 +2,8 @@
Implementation of the lucide icon library for Vue applications.
::: warning
This package will be deprecated end of 2023. Vue v2 will be EOF at the end of 2023 See [Announcement](https://v2.vuejs.org/lts/). We recommend to migrate to Vue 3.
The Lucide Vue package will be only maintained for Vue 3 after the deprecation.
:::
## Vue 2 or Vue 3
::: tip
This version of lucide is for Vue 2, For Vue 3 go to [lucide-vue-next ->](lucide-vue-next)
::: danger
This package is deprecated. Vue 2 is EOF See [Announcement](https://v2.vuejs.org/eol/). Migrate to Vue 3.
:::
## Installation
@@ -29,6 +22,10 @@ yarn add lucide-vue
npm install lucide-vue
```
```sh [bun]
bun add lucide-vue
```
:::
## How to use

View File

@@ -20,6 +20,10 @@ yarn add lucide
npm install lucide
```
```sh [bun]
bun add lucide
```
:::
### CDN
@@ -122,11 +126,23 @@ import { createElement, Menu } from 'lucide';
const menuIcon = createElement(Menu); // Returns HTMLElement (svg)
// set custom attributes with browser native functions
menuIcon.setAttribute('stroke', '#333');
menuIcon.classList.add('my-icon-class');
// Append HTMLElement in the DOM
const myApp = document.getElementById('app');
myApp.appendChild(menuIcon);
```
// Append HTMLElement in webpage
#### Custom Element binding with custom attributes
```js
import { createElement, Menu } from 'lucide';
const menuIcon = createElement(Menu, {
class: ['my-custom-class', 'icon'],
'stroke-width': 1,
stroke: '#333'
}); // Returns HTMLElement (svg)
// Append HTMLElement in the DOM
const myApp = document.getElementById('app');
myApp.appendChild(menuIcon);
```
@@ -137,11 +153,11 @@ myApp.appendChild(menuIcon);
They can be used in the same way as the official icons.
```js
import { burger } from '@lucide/lab';
import { coconut } from '@lucide/lab';
createIcons({
icons: {
burger
coconut
}
});
```

View File

@@ -14,13 +14,13 @@ import IconPreview from '~/.vitepress/theme/components/icons/IconPreview.vue'
import IconPreviewSmall from '~/.vitepress/theme/components/icons/IconPreviewSmall.vue'
import IconInfo from '~/.vitepress/theme/components/icons/IconInfo.vue'
import IconContributors from '~/.vitepress/theme/components/icons/IconContributors.vue'
import IconShowcase from '~/.vitepress/theme/components/icons/IconShowcase.vue'
import RelatedIcons from '~/.vitepress/theme/components/icons/RelatedIcons.vue'
import CodeGroup from '~/.vitepress/theme/components/base/CodeGroup.vue'
import Badge from '~/.vitepress/theme/components/base/Badge.vue'
import Label from '~/.vitepress/theme/components/base/Label.vue'
import VPButton from 'vitepress/dist/client/theme-default/components/VPButton.vue';
import { data } from './codeExamples.data'
import { camelCase, startCase } from 'lodash-es'
import { toCamelCase, toPascalCase } from '@lucide/shared'
import { satisfies } from 'semver'
const { params } = useData()
@@ -31,8 +31,8 @@ const tabs = computed(() => data.codeExamples?.map(
const codeExample = computed(() => data.codeExamples?.map(
(codeExample) => {
const pascalCaseName = startCase(camelCase( params.value.name)).replace(/\s/g, '')
const camelCaseName = camelCase(params.value.name)
const pascalCaseName = toPascalCase( params.value.name)
const camelCaseName = toCamelCase(params.value.name)
return codeExample.code
.replace(/\$(?:<[^>]+>)*PascalCase/g, pascalCaseName)
@@ -105,6 +105,11 @@ function releaseTagLink(version) {
</div>
</div>
<IconShowcase
:name="params.name"
:iconNode="params.iconNode"
/>
<RelatedIcons
v-if="params.relatedIcons"
:icons="params.relatedIcons"
@@ -234,3 +239,12 @@ function releaseTagLink(version) {
}
}
</style>
<style>
section h2.title {
text-align: center;
font-weight: 500;
margin-block-end: 64px;
padding-top: 32px;
}
</style>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -48,10 +48,12 @@
<path d="M340 120v240" stroke="#D8D8D9" stroke-width=".5"/>
<path d="M120 350h240" stroke="#D8D8D9" stroke-width=".5"/>
<path d="M350 120v240" stroke="#D8D8D9" stroke-width=".5"/>
</g>
<path d="m240 140-100 50 100 50 100-50-100-50Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m140 290 100 50 100-50" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="m140 240 100 50 100-50" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="embed-lucide-layers" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
<path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z" />
<path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12" />
<path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17" />
</g>
<g opacity=".5" stroke="#fff" stroke-width="3">
<path d="M120 92v16"/>
<path d="M360 92v16"/>

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -53,9 +53,13 @@
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
</g>
<g clip-path="url(#clip1_1612_15659)">
<path d="M310 260C324.9 245.4 340 227.9 340 205C340 190.413 334.205 176.424 323.891 166.109C313.576 155.795 299.587 150 285 150C267.4 150 255 155 240 170C225 155 212.6 150 195 150C180.413 150 166.424 155.795 156.109 166.109C145.795 176.424 140 190.413 140 205C140 228 155 245.5 170 260L240 330L310 260Z" stroke="#F56565" stroke-width="60" stroke-linejoin="round" stroke-dasharray="0.2 0.4"/>
<g id="embed-lucide-heart" stroke="#F56565" stroke-width="7" stroke-dasharray="0.04 0.08" stroke-linejoin="round" transform="translate(120 120), scale(10)">
<path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" />
</g>
</g>
<g id="embed-lucide-heart" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
<path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" />
</g>
<path d="M310 260C324.9 245.4 340 227.9 340 205C340 190.413 334.205 176.424 323.891 166.109C313.576 155.795 299.587 150 285 150C267.4 150 255 155 240 170C225 155 212.6 150 195 150C180.413 150 166.424 155.795 156.109 166.109C145.795 176.424 140 190.413 140 205C140 228 155 245.5 170 260L240 330L310 260Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<defs>
<clipPath id="clip0_1612_15659">
<rect x="120" y="120" width="240" height="240" rx="8" fill="white"/>

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -52,16 +52,18 @@
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
</g>
<path d="M310 160H170C158.954 160 150 168.954 150 180V320C150 331.046 158.954 340 170 340H310C321.046 340 330 331.046 330 320V180C330 168.954 321.046 160 310 160Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M280 140V180" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M200 140V180" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M150 220H330" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M200 260H200.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M240 260H240.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M280 260H280.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M200 300H200.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M240 300H240.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M280 300H280.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<g id="embed-lucide-calendar-days" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
<path d="M8 2v4" />
<path d="M16 2v4" />
<rect width="18" height="18" x="3" y="4" rx="2" />
<path d="M3 10h18" />
<path d="M8 14h.01" />
<path d="M12 14h.01" />
<path d="M16 14h.01" />
<path d="M8 18h.01" />
<path d="M12 18h.01" />
<path d="M16 18h.01" />
</g>
<defs>
<clipPath id="clip0_1612_15298">
<rect x="120" y="120" width="240" height="240" rx="8" fill="white"/>

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -54,10 +54,12 @@
</g>
<circle opacity="0.17" cx="240" cy="240" r="100" stroke="#F56565" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<rect opacity="0.17" x="150" y="150" width="180" height="180" rx="20" stroke="#F56565" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M330 330L270 270M330 330V282M330 330H282" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M150 282V330M150 330H198M150 330L210 270" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M330 198V150M330 150H282M330 150L270 210" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M150 198V150M150 150H198M150 150L210 210" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<g id="embed-lucide-expand" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
<path d="m21 21-6-6m6 6v-4.8m0 4.8h-4.8" />
<path d="M3 16.2V21m0 0h4.8M3 21l6-6" />
<path d="M21 7.8V3m0 0h-4.8M21 3l-6 6" />
<path d="M3 7.8V3m0 0h4.8M3 3l6 6" />
</g>
<circle opacity="0.5" cx="240" cy="240" r="100" stroke="#F56565" stroke-dasharray="1 1"/>
<rect opacity="0.5" x="150" y="150" width="180" height="180" rx="20" stroke="#F56565" stroke-dasharray="1 1"/>
<defs>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -54,7 +54,9 @@
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
</g>
<path d="M150 150L220.7 320L245.8 246.1L320 220.7L150 150Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<g id="embed-lucide-mouse-pointer-2" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(110 110), scale(10)">
<path d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z" />
</g>
<path opacity="0.5" d="M240 120V360M360 240H120" stroke="#F56565" stroke-dasharray="1 1"/>
</g>
<defs>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -53,7 +53,9 @@
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
</g>
<path d="M160 160L230.7 330L255.8 256.1L330 230.7L160 160Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
<g id="embed-lucide-mouse-pointer-2" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
<path d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z" />
</g>
<path opacity="0.5" d="M240 120V360M360 240H120" stroke="#F56565" stroke-dasharray="1 1"/>
</g>
<defs>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -28,7 +28,7 @@
"@lucide/build-icons": "workspace:*",
"@lucide/helpers": "workspace:*",
"@lucide/shared": "workspace:*",
"@rollup/plugin-replace": "^5.0.2",
"@rollup/plugin-replace": "^6.0.1",
"@types/semver": "^7.5.3",
"h3": "^1.8.0",
"nitropack": "2.8.1",
@@ -39,8 +39,8 @@
"@floating-ui/vue": "^1.0.3",
"@headlessui/vue": "^1.7.17",
"@resvg/resvg-wasm": "^2.6.2",
"@vueuse/components": "^10.7.2",
"@vueuse/core": "^10.7.2",
"@vueuse/components": "^12.0.0",
"@vueuse/core": "^12.0.0",
"element-to-path": "^1.2.1",
"fuse.js": "^6.5.3",
"jszip": "^3.7.0",
@@ -57,6 +57,6 @@
"sitemap": "^7.1.1",
"svg-pathdata": "^6.0.3",
"svgson": "^5.2.1",
"vue": "^3.4.13"
"vue": "^3.5.13"
}
}

View File

@@ -0,0 +1,11 @@
<svg width="85" height="107" viewBox="0 0 85 107" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="white"/>
<path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="url(#paint0_linear_1_59)"/>
<path d="M0 69.5866C0 69.5866 14.3139 62.6137 28.6678 62.6137L39.4901 29.1204C39.8953 27.5007 41.0783 26.3999 42.4139 26.3999C43.7495 26.3999 44.9325 27.5007 45.3377 29.1204L56.1601 62.6137C73.1601 62.6137 84.8278 69.5866 84.8278 69.5866C84.8278 69.5866 60.5145 3.35233 60.467 3.21944C59.7692 1.2612 58.5911 0 57.0029 0H27.8274C26.2392 0 25.1087 1.2612 24.3634 3.21944C24.3108 3.34983 0 69.5866 0 69.5866Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_1_59" x1="22.4702" y1="107" x2="69.1451" y2="84.9468" gradientUnits="userSpaceOnUse">
<stop stop-color="#D83333"/>
<stop offset="1" stop-color="#F041FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,4 @@
<svg width="85" height="107" viewBox="0 0 85 107" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27.5893 91.1365C22.7555 86.7178 21.3443 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4374 78.2199 52.0358 77.7822 59.2231 74.2459C60.0453 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.3179 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6844 102.089C39.2086 99.8193 38.5065 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5893 91.1365Z" fill="#17191E"/>
<path d="M0 69.5866C0 69.5866 14.3139 62.6137 28.6678 62.6137L39.4901 29.1204C39.8953 27.5007 41.0783 26.3999 42.4139 26.3999C43.7495 26.3999 44.9325 27.5007 45.3377 29.1204L56.1601 62.6137C73.1601 62.6137 84.8278 69.5866 84.8278 69.5866C84.8278 69.5866 60.5145 3.35233 60.467 3.21944C59.7692 1.2612 58.5911 0 57.0029 0H27.8274C26.2392 0 25.1087 1.2612 24.3634 3.21944C24.3108 3.34983 0 69.5866 0 69.5866Z" fill="#17191E"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="81" height="16" viewBox="0 0 81 16" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M29 16H32V10H39V7H32V4H39V1H29V16ZM42 16H52V13H45V1H42V16ZM55 16H65V13H58.0439L58 10H65V7H58V4H65V1H55V16ZM68 7H71V10H68V16H71V10H78V16H81V10H78V7H81V1H78V7H71V1H68V7Z" fill="#1C2024"/>
<path d="M16 16V1H26V4H19V7H26V10H19L19.0439 13H26V16H16Z" fill="#1C2024"/>
<path d="M10 10V16H13V10H10Z" fill="#1C2024"/>
<path d="M0 1V16H3V10H10V7H3V4H10V7H13V1H0Z" fill="#1C2024"/>
</svg>

After

Width:  |  Height:  |  Size: 522 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="81" height="16" viewBox="0 0 81 16" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M29 16H32V10H39V7H32V4H39V1H29V16ZM42 16H52V13H45V1H42V16ZM55 16H65V13H58.0439L58 10H65V7H58V4H65V1H55V16ZM68 7H71V10H68V16H71V10H78V16H81V10H78V7H81V1H78V7H71V1H68V7Z" fill="#FCFCFD"/>
<path d="M16 16V1H26V4H19V7H26V10H19L19.0439 13H26V16H16Z" fill="#FCFCFD"/>
<path d="M10 10V16H13V10H10Z" fill="#FCFCFD"/>
<path d="M0 1V16H3V10H10V7H3V4H10V7H13V1H0Z" fill="#FCFCFD"/>
</svg>

After

Width:  |  Height:  |  Size: 522 B

View File

@@ -0,0 +1,25 @@
<svg width="120" height="22" viewBox="0 0 120 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M74.2 17.17C73.4081 17.1897 72.6251 16.9999 71.93 16.62C71.302 16.2576 70.7943 15.7186 70.47 15.07C70.1179 14.3272 69.9466 13.5117 69.97 12.69C69.97 11.79 70.13 11 70.47 10.32C70.8 9.64858 71.3176 9.08722 71.9601 8.70386C72.6026 8.32051 73.3424 8.1316 74.09 8.16C74.63 8.16 75.14 8.25 75.62 8.42C76.1 8.59 76.52 8.86 76.89 9.22C77.26 9.58 77.55 10.03 77.76 10.59C77.98 11.14 78.08 11.8 78.08 12.57V13.2H70.93V11.8H76.11C76.11 11.4 76.02 11.06 75.86 10.75C75.69 10.45 75.46 10.2 75.16 10.02C74.86 9.84 74.52 9.75 74.12 9.75C73.732 9.74115 73.3498 9.84539 73.02 10.05C72.7 10.25 72.45 10.52 72.27 10.85C72.1 11.18 72.01 11.54 72 11.93V13.13C72 13.65 72.1 14.08 72.28 14.44C72.47 14.8 72.73 15.08 73.06 15.27C73.39 15.47 73.78 15.56 74.23 15.56C74.53 15.56 74.8 15.52 75.04 15.43C75.29 15.35 75.5 15.22 75.67 15.05C75.85 14.89 75.99 14.68 76.07 14.43L78 14.65C77.8833 15.1455 77.6424 15.6032 77.3 15.98C76.97 16.35 76.54 16.65 76 16.85C75.48 17.05 74.88 17.16 74.2 17.16V17.17Z" fill="white"/>
<path d="M63.5 17.15C62.8309 17.1645 62.1733 16.9752 61.6143 16.6073C61.0553 16.2394 60.6213 15.7102 60.37 15.09C60.0367 14.3208 59.8763 13.4879 59.9 12.65C59.9 11.68 60.06 10.86 60.38 10.19C60.5513 9.78493 60.8009 9.41767 61.1145 9.10931C61.428 8.80095 61.7994 8.55755 62.2073 8.3931C62.6152 8.22864 63.0516 8.14636 63.4913 8.15098C63.9311 8.15559 64.3656 8.24702 64.77 8.42C65.1 8.59 65.36 8.8 65.55 9.04C65.75 9.28 65.89 9.5 66 9.72H66.08V5.36H68.15V17H66.12V15.62H66C65.9 15.84 65.74 16.06 65.54 16.3C65.2864 16.5868 64.9711 16.8123 64.6177 16.9595C64.2644 17.1068 63.8822 17.1719 63.5 17.15ZM64.07 15.47C64.51 15.47 64.87 15.35 65.19 15.11C65.49 14.88 65.73 14.54 65.89 14.11C66.04 13.7 66.12 13.21 66.12 12.64C66.12 12.07 66.04 11.58 65.88 11.16C65.7484 10.7769 65.5087 10.44 65.19 10.19C64.865 9.95506 64.4708 9.8354 64.07 9.85C63.61 9.85 63.23 9.97 62.92 10.2C62.62 10.44 62.39 10.77 62.23 11.2C62.08 11.61 62 12.1 62 12.64C62 13.18 62.08 13.67 62.23 14.1C62.39 14.52 62.63 14.86 62.93 15.1C63.24 15.34 63.63 15.47 64.07 15.47Z" fill="white"/>
<path d="M56.09 17V8.27H58.14V17H56.1H56.09ZM57.12 7.03C56.8 7.03 56.52 6.93 56.28 6.71C56.1684 6.6111 56.0795 6.48938 56.0191 6.35307C55.9587 6.21677 55.9283 6.06907 55.93 5.92C55.93 5.61 56.05 5.35 56.28 5.13C56.52 4.91 56.8 4.8 57.12 4.8C57.45 4.8 57.73 4.91 57.96 5.13C58.2 5.35 58.32 5.61 58.32 5.92C58.32 6.22 58.2 6.49 57.96 6.71C57.73 6.93 57.46 7.03 57.12 7.03Z" fill="white"/>
<path d="M50.66 17.17C49.9015 17.2156 49.1466 17.0346 48.4913 16.65C47.836 16.2653 47.3099 15.6945 46.98 15.01C46.6351 14.279 46.464 13.4781 46.48 12.67C46.48 11.78 46.65 11 46.99 10.32C47.33 9.64 47.81 9.12 48.43 8.73C49.102 8.33587 49.8712 8.13837 50.65 8.16C51.35 8.16 51.98 8.29 52.53 8.56C53.0617 8.80313 53.5168 9.18684 53.8464 9.66971C54.1759 10.1526 54.3674 10.7163 54.4 11.3H52.43C52.364 10.895 52.1673 10.5228 51.87 10.24C51.57 9.96 51.17 9.82 50.67 9.82C50.26 9.82 49.89 9.93 49.57 10.16C49.25 10.38 49 10.7 48.83 11.12C48.65 11.55 48.56 12.05 48.56 12.64C48.56 13.24 48.66 13.74 48.83 14.17C49 14.59 49.24 14.92 49.56 15.15C49.88 15.38 50.25 15.49 50.68 15.49C50.98 15.49 51.25 15.44 51.49 15.32C51.73 15.21 51.94 15.04 52.09 14.82C52.26 14.6 52.37 14.33 52.43 14.02H54.4C54.3725 14.6024 54.1878 15.1664 53.8656 15.6524C53.5434 16.1383 53.0957 16.5279 52.57 16.78C51.9746 17.053 51.3248 17.1864 50.67 17.17H50.66Z" fill="white"/>
<path d="M42.68 13.33V8.27H44.74V17H42.74V15.45H42.65C42.45 15.94 42.13 16.34 41.68 16.65C41.23 16.95 40.68 17.11 40.03 17.11C39.5054 17.1412 38.9835 17.0151 38.531 16.7479C38.0785 16.4806 37.716 16.0844 37.49 15.61C37.2299 15.0535 37.1033 14.444 37.12 13.83V8.27H39.18V13.51C39.18 14.06 39.33 14.51 39.63 14.83C39.93 15.16 40.33 15.32 40.83 15.32C41.1442 15.3154 41.4523 15.2325 41.7265 15.0789C42.0006 14.9252 42.2321 14.7056 42.4 14.44C42.59 14.14 42.68 13.77 42.68 13.33Z" fill="white"/>
<path d="M28.15 17V5.36H30.25V15.23H35.38V17H28.15Z" fill="white"/>
<path d="M14 11C14 9.93913 13.5786 8.92172 12.8284 8.17157C12.0783 7.42142 11.0609 7 10 7C8.93913 7 7.92172 7.42142 7.17157 8.17157C6.42143 8.92172 6 9.93913 6 11C6 13.1217 6.84285 15.1566 8.34315 16.6569C9.84344 18.1571 11.8783 19 14 19C16.1217 19 18.1566 18.1571 19.6569 16.6569C21.1571 15.1566 22 13.1217 22 11C22 7.45 20.45 4.25 18 2.06" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 11C10 12.0609 10.4214 13.0783 11.1716 13.8284C11.9217 14.5786 12.9391 15 14 15C15.0609 15 16.0783 14.5786 16.8284 13.8284C17.5786 13.0783 18 12.0609 18 11C18 8.87827 17.1571 6.84344 15.6569 5.34315C14.1566 3.84285 12.1217 3 10 3C7.87827 3 5.84344 3.84285 4.34315 5.34315C2.84285 6.84344 2 8.87827 2 11C2 14.58 3.57 17.8 6.06 20" stroke="#F56565" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M88 13C89.1046 13 90 12.1046 90 11C90 9.89543 89.1046 9 88 9C86.8954 9 86 9.89543 86 11C86 12.1046 86.8954 13 88 13Z" fill="#737374"/>
<g clip-path="url(#clip0_2_7)">
<path d="M105.193 18.0349C104.283 17.2089 104.018 15.4736 104.397 14.2163C105.054 15.009 105.965 15.2601 106.908 15.4018C108.365 15.6205 109.795 15.5387 111.148 14.8777C111.303 14.8021 111.446 14.7014 111.615 14.5995C111.742 14.9652 111.775 15.3344 111.73 15.7102C111.623 16.6254 111.164 17.3323 110.434 17.8682C110.143 18.0825 109.834 18.2742 109.533 18.4762C108.607 19.0974 108.357 19.8258 108.705 20.8852C108.713 20.9112 108.72 20.937 108.739 21C108.266 20.7899 107.921 20.4841 107.658 20.0821C107.38 19.6578 107.248 19.1884 107.241 18.6805C107.238 18.4334 107.238 18.184 107.204 17.9404C107.123 17.3463 106.842 17.0803 106.313 17.065C105.77 17.0493 105.34 17.3826 105.226 17.9076C105.218 17.9478 105.205 17.9876 105.192 18.0344L105.193 18.0349Z" fill="white"/>
<path d="M105.193 18.0349C104.283 17.2089 104.018 15.4736 104.397 14.2163C105.054 15.009 105.965 15.2601 106.908 15.4018C108.365 15.6205 109.795 15.5387 111.148 14.8777C111.303 14.8021 111.446 14.7014 111.615 14.5995C111.742 14.9652 111.775 15.3344 111.73 15.7102C111.623 16.6254 111.164 17.3323 110.434 17.8682C110.143 18.0825 109.834 18.2742 109.533 18.4762C108.607 19.0974 108.357 19.8258 108.705 20.8852C108.713 20.9112 108.72 20.937 108.739 21C108.266 20.7899 107.921 20.4841 107.658 20.0821C107.38 19.6578 107.248 19.1884 107.241 18.6805C107.238 18.4334 107.238 18.184 107.204 17.9404C107.123 17.3463 106.842 17.0803 106.313 17.065C105.77 17.0493 105.34 17.3826 105.226 17.9076C105.218 17.9478 105.205 17.9876 105.192 18.0344L105.193 18.0349Z" fill="url(#paint0_linear_2_7)"/>
<path d="M100 14.0068C100 14.0068 102.694 12.7035 105.396 12.7035L107.433 6.44306C107.51 6.14032 107.732 5.93456 107.984 5.93456C108.235 5.93456 108.458 6.14032 108.534 6.44306L110.571 12.7035C113.771 12.7035 115.968 14.0068 115.968 14.0068C115.968 14.0068 111.391 1.6266 111.382 1.60176C111.251 1.23574 111.029 1 110.73 1H105.238C104.939 1 104.726 1.23574 104.586 1.60176C104.576 1.62614 100 14.0068 100 14.0068Z" fill="white"/>
</g>
<defs>
<linearGradient id="paint0_linear_2_7" x1="104.23" y1="21" x2="112.993" y2="16.8303" gradientUnits="userSpaceOnUse">
<stop stop-color="#D83333"/>
<stop offset="1" stop-color="#F041FF"/>
</linearGradient>
<clipPath id="clip0_2_7">
<rect width="16" height="20" fill="white" transform="translate(100 1)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@@ -1,4 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 118 22">
<svg viewBox="0 0 160 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="128" height="32" rx="8" fill="#fff"/>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 118 22" height="22" width="118" x="4" y="5">
<path fill="#1B1B1F" d="M74.202 17.17c-.875 0-1.63-.181-2.267-.545a3.694 3.694 0 0 1-1.46-1.557c-.341-.674-.512-1.468-.512-2.38 0-.898.17-1.686.512-2.364a3.867 3.867 0 0 1 1.443-1.591c.617-.383 1.342-.574 2.176-.574.538 0 1.045.087 1.523.261.48.17.905.436 1.272.796.371.36.663.818.875 1.375.212.553.319 1.212.319 1.977v.63h-7.154v-1.386h5.182a2.213 2.213 0 0 0-.256-1.05c-.166-.311-.4-.556-.699-.734a1.964 1.964 0 0 0-1.034-.267c-.42 0-.79.103-1.108.307-.318.2-.566.466-.744.796a2.289 2.289 0 0 0-.267 1.073v1.21c0 .508.093.944.278 1.307.186.36.445.637.779.83.333.19.723.284 1.17.284.3 0 .57-.041.813-.125.242-.087.452-.214.63-.38.178-.167.313-.374.404-.62l1.92.216c-.121.508-.352.95-.693 1.33a3.379 3.379 0 0 1-1.295.875c-.527.204-1.13.306-1.807.306Z"/>
<path fill="#1B1B1F" d="M63.498 17.153c-.685 0-1.299-.176-1.84-.528-.542-.352-.97-.864-1.285-1.534-.314-.67-.471-1.485-.471-2.443 0-.97.159-1.788.477-2.455.322-.67.756-1.176 1.301-1.517a3.344 3.344 0 0 1 1.824-.517c.512 0 .932.087 1.262.261.329.17.59.377.784.62.193.238.342.464.448.676h.086V5.364h2.062V17h-2.023v-1.375h-.125c-.106.212-.259.438-.46.676a2.53 2.53 0 0 1-.795.602c-.33.167-.745.25-1.245.25Zm.574-1.687c.436 0 .807-.117 1.114-.352.307-.239.54-.57.699-.995.159-.424.238-.918.238-1.483 0-.564-.08-1.055-.238-1.471-.156-.417-.387-.74-.693-.972-.303-.23-.676-.346-1.12-.346-.458 0-.84.119-1.147.358-.307.238-.538.568-.694.988-.155.42-.233.902-.233 1.443 0 .546.078 1.033.233 1.46.16.425.392.76.7 1.006.31.243.69.364 1.141.364Z"/>
<path fill="#1B1B1F" d="M56.088 17V8.273h2.057V17h-2.057Zm1.034-9.966a1.2 1.2 0 0 1-.84-.324 1.044 1.044 0 0 1-.353-.79c0-.31.117-.573.352-.79.235-.219.515-.329.841-.329.33 0 .61.11.841.33.235.216.352.479.352.79 0 .306-.117.57-.352.79a1.187 1.187 0 0 1-.84.323Z"/>
@@ -24,4 +26,5 @@
<stop offset="1" stop-color="#FF5BE1" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>
</svg>

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

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