Compare commits

...

265 Commits

Author SHA1 Message Date
Karsa
1c12bae0f5 feat(icons): arcified map-pin icons & added map-pin icon variants (#2301) 2024-07-25 16:17:54 +02:00
Jakob Guddas
fdcb73cb7a feat(icons): added square-square icon (#2241)
* Added icons/square-square.svg

* Added icons/square-square.json
2024-07-25 16:15:01 +02:00
Karsa
f2f685bd65 meta(icons): adds extra tags to utensils icons (#2192)
* fix(icons): adds extra tags to utensils icons

* feat(icons): add aliases to utensils

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-22 09:44:25 +02:00
Karsa
18d18361e8 feat(icons): fix chart naming scheme, lucide-ize appearance, et cetera (#2219)
* feat(icons): fix chart naming scheme, lucide-ize appearance, add some extra variants that were implied but missing

* feat(icons): fix missing SVG code

* feat(icons): fix linting issue

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-22 09:43:12 +02:00
Andreas Sas
45c3c00d1d feat(icons): added dam icon (#2233)
* Added icons/dam.svg

* Added icons/dam.json

* Update icons/dam.json

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

* Update icons/dam.json

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

* Update icons/dam.svg

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-07-22 09:31:59 +02:00
Jakob Guddas
45bc8c08da fix(icons): closed gaps in dog icon (#2249)
* Updated icons/dog.svg

* Updated icons/dog.json

* Updated icons/dog.svg
2024-07-22 09:31:30 +02:00
Jakob Guddas
6676cdd513 fix(icons): changed key-square icon (#2277)
* Updated icons/key-square.svg

* Updated icons/key-square.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-22 09:29:38 +02:00
Karsa
eb93f112bd feat(icons): also replace element on changes to other properties, do not use icon from changes, but from current state (#2316) 2024-07-22 09:29:16 +02:00
Benji Grant
54a58881da feat(icons): add letter-text icon (#2252)
* feat(icons): add drop-cap icon

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

* fix(icons): round the top of the `drop-cap` icon

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

* fix(icons): Fix `drop-cap` icon

* fix(icons): rename `drop-cap` icon to `letter-text`

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-20 19:52:04 +02:00
Jakob Guddas
568d0b2fa3 feat: added green positive addition to gh-icon route (#2322)
* feat: added green positive addition to gh-icon route

* Update docs/.vitepress/api/gh-icon/[...data].get.ts
2024-07-20 19:42:52 +02:00
Jakob Guddas
2d1be858c8 fix(icons): removed plug-zap-2 (#2129)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-19 13:00:27 +02:00
Jerome Cabugwason
fa6ddf923f feat(icons): added philippine-peso icon (#2231)
* Added icons/philippine-peso.svg

* Added icons/philippine-peso.json

* Updated icons/philippine-peso.svg

* Updated icons/philippine-peso.svg

* Update philippine-peso.json

added author

* Update philippine-peso.json

reordered author

* Update icons/philippine-peso.svg

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

* Updated icons/philippine-peso.svg

* Updated icons/philippine-peso.json

* Updated icons/philippine-peso.svg

* Updated icons/philippine-peso.svg

* add contributor in `philippine-peso.json`

* Updated icons/philippine-peso.svg

* Update icons/philippine-peso.svg

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-07-19 11:06:24 +02:00
Jakob Guddas
658b94e65a fix(icons): arcified ribbon icon (#2271)
* Updated icons/ribbon.svg

* Updated icons/ribbon.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-19 11:06:01 +02:00
Jakob Guddas
137ab5c885 refactor(icons): changed calendar-minus icon (#2265)
* Updated icons/calendar-minus.svg

* Updated icons/calendar-minus.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-19 10:52:02 +02:00
Karsa
83284d842a feat(icons): clarification on naming overlapping elements (#2304) 2024-07-19 10:42:49 +02:00
Karsa
8993b0b174 feat(icons): add rounding to eye icons (#2317)
* feat(icons): add rounding to eye icons

* Update icons/eye-off.svg

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-07-19 10:40:42 +02:00
Jakob Guddas
1b2b66f1f3 refactor(icons): changed image-plus icon (#2321)
* Updated icons/image-plus.svg

* Updated icons/image-plus.json

* Updated icons/image-plus.json
2024-07-19 10:38:27 +02:00
Jakob Guddas
0186afc0e6 fix(icons): changed drafting-compass icon (#2266)
* Updated icons/drafting-compass.svg

* Updated icons/drafting-compass.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-12 09:04:40 +02:00
Karsa
36c68bd901 feat(icons): added monitor-cog icon (#2310)
* [github] Added issue template forms

* [github] yaml => yml

* Syntax fixes

* Further syntax fixes

* Sort issue templates

* Update 02_bug_report.yml

* Added icons/monitor-cog.svg

* Added icons/monitor-cog.json

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-12 09:04:27 +02:00
Jakob Guddas
e8abed3fa7 Updated icons/church.svg (#2273)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-09 21:31:58 +02:00
Naiyer Asif
b4af645560 docs(contrib): add guide to design icons with Affinity Designer (#2262)
* docs(contrib): add guide to design icons with Affinity Designer

* feat(contrib): add Affinity Designer guide to contribution guidelines
2024-07-09 21:25:16 +02:00
Eric Fennis
8f65b7e6f4 build: Update deps lucide-svelte and lucide-static 2024-07-09 21:23:43 +02:00
Jakob Guddas
3c3e3508ec fix(icons): arcified delete icon (#2279)
* Updated icons/delete.svg

* Updated icons/delete.svg

* Updated icons/delete.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-09 20:40:08 +02:00
Karsa
01e5fd74e6 feat(icons): added type-outline icon (#2206)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-07-09 20:02:31 +02:00
Karsa
7c62c7c662 feat(icons): added clock/calendar-arrow-up/down icons (#2307)
* feat(icons): added clock/calendar-arrow-up/down icons

* feat(icons): add some extra tags to sort icons
2024-07-09 15:50:42 +02:00
Karsa
e92d5e2d40 feat(icons): added user-pen and user-round-pen (#2303) 2024-07-09 14:48:03 +02:00
Janghyeon
3975020fd2 fix: Correct GitHub link in the footer (#2306) 2024-07-09 14:45:40 +02:00
Jakob Guddas
43dfe362b6 feat(icons): added folder-code icon (#2276)
* Added icons/folder-code.svg

* Added icons/folder-code.json
2024-07-09 10:05:31 +02:00
David Boclé
58524b25ee fix(site): Fix svelte code examples (#2298) 2024-07-08 15:54:25 +02:00
Guan-Bo Yang
34805df73f feat(icons): added list-check icon (#2291)
* Added icons/list-check.svg

* Added icons/list-check.json

* Update icons/list-check.json

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-08 15:52:37 +02:00
Virt
7cb867782d feat(icons): add wifi strength icons (#2157) 2024-07-08 09:35:26 +02:00
Vexkiddy
63deb3e4f9 feat(icons): added scan-qr-code icon (#2247)
* Created 'scan-qrcode'

* Rename scan-qrcode to scan-qrcode.svg

* added scan-qrcode.json

* Update icons/scan-qrcode.svg

* Rename scan-qrcode.json to scan-qr-code.json

* Rename scan-qrcode.svg to scan-qr-code.svg

* Update icons/scan-qr-code.json

* Update icons/scan-qr-code.json

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-07 22:12:54 +02:00
Jakob Guddas
4dcc340301 fix(icons): arcified octagon-* icons (#2280)
* Updated icons/octagon.svg

* Updated icons/octagon.json

* Updated icons/octagon-alert.svg

* Updated icons/octagon-alert.json

* Updated icons/octagon-pause.svg

* Updated icons/octagon-x.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-07 22:00:03 +02:00
Jakob Guddas
8bd401fa8c fix(icons): arcified book-* icons (#2274)
* Updated icons/book.svg

* Updated icons/book-a.svg

* Updated icons/book-audio.svg

* Updated icons/book-check.svg

* Updated icons/book-copy.svg

* Updated icons/book-marked.svg

* Updated icons/book-text.svg

* Updated icons/book-type.svg

* Updated icons/book-headphones.svg

* Updated icons/book-heart.svg

* Updated icons/book-dashed.svg

* Updated icons/book-dashed.json

* Updated icons/book-down.svg

* Updated icons/book-image.svg

* Updated icons/book-image.json

* Updated icons/book-key.svg

* Updated icons/book-lock.svg

* Updated icons/book-minus.svg

* Updated icons/book-plus.svg

* Updated icons/book-up.svg

* Added icons/book-up-double-arrow.svg

* Added icons/book-up-double-arrow.json

* Delete icons/book-up-double-arrow.json

* Delete icons/book-up-double-arrow.svg

* Update book-up-2.svg

* Updated icons/book-user.svg

* Updated icons/book-x.svg

* Updated icons/book-copy.svg

* Updated icons/book-copy.json

* Update book-dashed.json

* Updated icons/book-copy.svg

* Updated icons/book-copy.json

* Updated icons/key-square.svg

* Updated icons/key-square.json

* Updated icons/key-square.svg

* Updated icons/key-square.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-07 21:59:44 +02:00
Jakob Guddas
338fc70f6d fix(icons): fixed *-power icons (#2285)
* Updated icons/square-power.svg

* Updated icons/square-power.json

* Updated icons/circle-power.svg

* Updated icons/circle-power.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-07 21:58:15 +02:00
Jakob Guddas
7ca1fabc12 fix(icons): changed key-round icon (#2278)
* Updated icons/key-round.svg

* Updated icons/key-round.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-07 21:57:17 +02:00
Eric Fennis
0d2c6c457e refactor(scripts): Fix linting errors 2024-07-07 21:32:32 +02:00
Karsa
2539470978 chore(icons): improve pixel perfection and curvature of signature (#2293)
* chore(icons): improve pixel perfection and curvature of signature

* chore(icons): restore original curve so that the icon remains less altered
2024-07-07 21:24:50 +02:00
Karsa
12b412aa87 fix(tools): rename shuffle => shuffleArray (#2284) 2024-07-03 22:52:32 +02:00
Jakob Guddas
c8b00be37e feat(icons): added printer-check icon (#2258)
* Added icons/printer-check.svg

* Added icons/printer-check.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-07-01 21:55:47 +02:00
Eric Fennis
291b11fbd1 ci(linter): Fix path default attrs 2024-07-01 21:51:48 +02:00
Eric Fennis
4635141dfa chore: Update lockfile 2024-07-01 21:33:32 +02:00
Eric Fennis
c761ec7b5e ci(pull-request): Fix workflows attempt #7 2024-07-01 21:28:11 +02:00
Eric Fennis
bbd877a3ba ci(pull-request): Fix workflows attempt #6 2024-07-01 18:04:31 +02:00
Eric Fennis
e830fb16e0 ci(pull-request): Fix workflows attempt #5 2024-07-01 17:33:21 +02:00
Eric Fennis
7625cab264 ci(pull-request): Fix workflows attempt #4 2024-07-01 17:30:08 +02:00
Eric Fennis
7726b7e7ff ci(pull-request): Fix workflows attempt #3 2024-07-01 17:23:47 +02:00
Eric Fennis
bca0eeaf09 ci(pull-request): Fix workflows attempt #2 2024-07-01 17:20:58 +02:00
Eric Fennis
8125a21a7e ci(pull-request): Fix GH workflow 2024-07-01 17:15:54 +02:00
Eric Fennis
077242cfa0 refactor(scripts): Cleaning up scripts (#2092)
* cleanup scripts

* Move helpers to package

* Fixes scripts

* Fix scripts

* Formatting

* Fix helpers import paths

* Remove lucide-figma

* Rename helpers package

* Fix build

* formatting

* Adjust main build-icons file

* Add export casing

* Adds `exportModuleNameCasing` fro lab project

* format files

* Bump package version @lucide/build-icons

* Revert changes in icons

* Revert changes in PR yml

* Fix lint issues

* Fix site build

* fix lint errors

* Attempt fix linting

* Fix lint errors
2024-06-28 11:24:37 +02:00
Eric Fennis
ce79418c66 fix lab code examples (#2263) 2024-06-28 10:25:27 +02:00
Andreas Sas
80350b2cb1 feat(icons): added logs icon (#2257)
* Added icons/logs.svg

* Added icons/logs.json
2024-06-28 10:23:27 +02:00
Jakob Guddas
172f397019 fix(icons): optimized cloud-moon-rain icon (#2250)
* Updated icons/cloud-moon-rain.svg

* Updated icons/cloud-moon-rain.svg
2024-06-28 10:11:28 +02:00
Andreas Sas
a463d8a5c7 feat(icons): added save-off icon (#2260)
* Added icons/save-off.svg

* Added icons/save-off.json
2024-06-28 08:53:58 +02:00
Andreas Sas
fbd5225aad feat(icons): added signature icon (#2248)
* Added icons/signature.svg

* Added icons/signature.json

* Update icons/signature.json

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-06-26 10:31:44 +02:00
Eric Fennis
acd4a879f2 Add support for react 19 (#2254) 2024-06-26 09:19:41 +02:00
Eric Fennis
e11fa135a0 docs(icons): External Lucide icons like from lab on lucide.dev (#2194)
* Add section title

* Add external libs list in sidebar

* Make external lib work

* Adds external lib to detail view

* fix lint issues

* Update to https
2024-06-25 09:56:55 +02:00
Jakob Guddas
f980863f6c fix(icons): changed cloud-moon icon (#2251)
* Updated icons/cloud-moon.svg

* Updated icons/cloud-moon.svg
2024-06-25 09:52:32 +02:00
Jakob Guddas
07230a442f fix: changed home category icon from home to house (#2243) 2024-06-22 22:19:55 +02:00
Jakob Guddas
a34919f0af fix: fixed check uniqueness of aliases action (#2242) 2024-06-22 22:19:43 +02:00
Jakob Guddas
f4d451de80 fix(icons): redesigned house icon (#2116)
* Updated icons/home.svg

* Updated icons/home.json

* Updated icons/home.svg

* Updated icons/home.svg

* Updated icons/home.json

* Updated icons/home.svg

* Updated icons/home.json

* Updated icons/home.json

* fix(icons): renamed home to house

* feat(icons): update tags

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-06-21 12:52:28 +02:00
Jakob Guddas
1e887bc30f feat(icons): added house-plug icon (#2123)
* Added icons/home-plug.svg

* Added icons/home-plug.json

* Update icons/home-plug.json

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

* Updated icons/home-plug.json

* fix(icons): renamed home-plug to house-plug

* fix(icons): remove alias

* feat(icons): update tags

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-06-21 12:51:55 +02:00
Karsa
1442b9a35b feat(icons): added house-plus icon (#2221)
* feat(icons): add house-plus icon

* feat(icons): update categories

* feat(icons): add jguddas to house-plus as co-author
2024-06-21 12:50:20 +02:00
Jakob Guddas
41fd856578 feat(ci): check uniqueness of aliases (#2223) 2024-06-21 12:30:05 +02:00
Eric Fennis
621b60b19d fix(site): Aliases redirect (#2235)
* fix: Aliases redirect

* Fix lint errors

* Apply feedback
2024-06-20 16:13:38 +02:00
Karsa
b77e372f3e feat(icons): add additional rounding to sofa and armchair icons (#2228) 2024-06-20 09:51:49 +02:00
Karsa
d4891a7307 feat(docs): added accessibility guide (#2122)
* feat(docs): added a11y guide

* feat(docs): add further resources

* feat(docs): add more resources & note on aria label usage

* feat(docs): update illustration button labels

* feat(docs): fix misaligned overlay in icon button alttext illustration

* fix(docs): deprecate the use of aria label on illustrations and elaborate on not using it.

* feat(docs/a11y): added code examples & rephrased aria-label resource

* feat(docs/a11y): fix typos

* Update docs/guide/advanced/accessibility.md

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

* Apply suggestions from code review

Reformat headers, add RadixUI example.

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

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-06-17 16:12:24 +02:00
Jakob Guddas
199987276b feat(icons): redesigned mic-vocal icon (#2198)
* Updated icons/mic-vocal.svg

* Updated icons/mic-vocal.json
2024-06-14 12:48:41 +02:00
Jakob Guddas
5647b34594 feat: narrowed type for categories in icon.schema.json (#2126) 2024-06-14 12:47:46 +02:00
Jakob Guddas
439e463430 fix(icons): arcified guitar icon (#2133)
* Updated icons/guitar.svg

* Updated icons/guitar.json

* Updated icons/guitar.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-06-14 12:24:51 +02:00
Jakob Guddas
22921304a7 Updated icons/pin-off.svg (#2211) 2024-06-14 12:16:06 +02:00
Jakob Guddas
220abb1510 Updated icons/pin.svg (#2210) 2024-06-14 12:15:29 +02:00
Jakob Guddas
91ce9221e8 fix(icons): rebuild quote icon (#2212)
* Updated icons/quote.svg

* Updated icons/quote.json

* Updated icons/quote.svg

* Update icons/quote.svg

* Updated icons/quote.json
2024-06-14 12:12:17 +02:00
Garrett Pauls
904d74fe4a fix(lucide-svelte): update IconProps to include all properties of Icon component (#2182)
* fix(lucide-svelte): update IconProps to include all properties of Icon component

* fix(lucide-svelte): removed custom Icon type that conflicted with Icon component type

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-06-12 10:49:21 +02:00
Jakob Guddas
f507644488 fix(icons): added round corner to file-archive icon (#2132)
* Updated icons/file-archive.svg

* Updated icons/file-archive.json
2024-06-10 16:25:08 +02:00
Karsa
501b65a7a1 fix(icons): remove edit-2 alias from pen-off (#2209)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-06-10 16:14:36 +02:00
Jakob Guddas
14862fb0dc fix(icons): changed file-cog icon to match other -cog icons (#2184)
* Updated icons/file-cog.svg

* Updated icons/file-cog.json
2024-06-10 16:07:33 +02:00
Karsa
2963369c8d feat(icons): add pen-off pencil-off, update pen icons w/ rounding (#2186) 2024-06-10 16:04:12 +02:00
Karsa
1e20d5087a fix(icons): fixes/removes zero long path segments (#2205)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-06-10 13:16:03 +02:00
Karsa
4b312b369f fix(scripts): fixes writeIconRelatedIcons.mjs (#2190)
* fix(scripts): fixes writeIconRelatedIcons.mjs

* fix(scripts): fixes linting

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-06-07 10:10:17 +02:00
Karsa
afbef743de fix(site): fixes open collective logo in light mode (#2189)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-06-06 19:54:50 +02:00
Alexandre Philibert
864fdeca84 feat(icons): added calendar-cog icon (#2176)
* feat(icons): added calendar-cog icon

* feat(icons): cleanup calendar-cog icon

* feat(icons): fix indentation of calendar-cog icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-06-06 16:27:01 +02:00
Karsa
541add925c fix(icons): fixes duplicate tv-2 alias (#2188)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-06-06 16:26:09 +02:00
Karsa
2e7df30267 fix(icons): fix mismatched lines in dna & dna-off (#2187)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-06-06 15:08:32 +02:00
Viktor
0a578c8803 meta(icons): Added "liquid" tag to Droplet icon (#2152)
Co-authored-by: Karsa <contact@karsa.org>
2024-06-06 13:17:22 +02:00
Karsa
b227caee98 feat(icons): added tv-minimal-play (#2128)
* feat(icons): add tv-minimal-play icon, rename tv-2 to tv-minimal

* feat(icons/tv-minimal-play): add more tags

* feat(icons): add deprecation reason to tv-2 alias

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-06-06 13:16:25 +02:00
Jakob Guddas
72b74fbdb4 fix(icons): added round corners to signpost icon (#2002)
* Updated icons/signpost.svg

* Updated icons/signpost.svg

* Updated icons/signpost.json
2024-06-06 11:08:10 +02:00
Jakob Guddas
01d36ad363 fix(icons): added rounding to sigma icon (#2149)
* Updated icons/sigma.svg

* Update icons/sigma.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-06-06 11:06:56 +02:00
Karsa
548cb9cdf5 feat(icons): added biceps-flexed icon (#2127) 2024-06-06 11:06:19 +02:00
Jakob Guddas
79430da42e fix(icons): arcified tractor icon (#2112)
* Updated icons/tractor.svg

* Updated icons/tractor.json

* Updated icons/tractor.svg

* Updated icons/tractor.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-06-06 11:02:31 +02:00
Karsa
0620843f4c fix(icons): added rounding to paintbrush (#2147)
* fix(icons): arcified paintbrush

* Update icons/paintbrush.svg

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

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-06-06 10:59:42 +02:00
Quill Zhou
34d063302a Add copy component name (#2169) 2024-06-05 23:22:19 +02:00
Jakub Różbicki
0abc3389db Update circle-slash.svg (#2183)
Having <line> after <circle> allows to set `fill` as a background and line would still be visible
2024-06-05 21:43:33 +02:00
Jakob Guddas
ebb8ec66af fix(icons): added rounding radical icon (#2150)
* Updated icons/radical.svg

* Updated icons/radical.svg

* Updated icons/radical.json
2024-06-02 12:05:05 +02:00
Jakob Guddas
f55ced97a5 fix(icons): added rounding to compass icon (#2143)
* Updated icons/compass.svg

* Updated icons/compass.json
2024-06-02 10:41:30 +02:00
Karsa
8458345535 feat(icons): added pill-bottle icon (#2174)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-06-02 10:39:11 +02:00
Karsa
66d6c2fe4b feat(icons): added lectern icon (#2171)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-05-30 12:56:40 +02:00
Karsa
053808685c feat(icons): added section icon (#2172)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-05-30 12:03:14 +02:00
Sayakie
4f2a6b70d8 fix license typos (#2161) 2024-05-24 12:06:03 +02:00
Karsa
d8004e471a feat(angular): add support for ng 18 (#2167)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-05-24 12:04:15 +02:00
Karsa
e2b46eac8e feat(icons): add deprecationReason and alias deprecation feature (#1960)
* feat(icons): add deprecationReason and alias deprecation feature

* chore(tools): run prettier. again.

* fix(scripts): overall alias as object support

* fix(icon.schema.json): add dependentRequired on deprecated properties

* fix(icon.schema.json): remove unicode for now

* fix(icon.schema.json): use const true for deprecated

* fix(build): convert deprecation reason to enum

* fix(build): fix linting of icon.schema.json

* fix(build): renamed gracePeriod => toBeRemovedInVersion

* fix(build): fix aliases map in related icons generation

* fix(build): deprecate aliases using numbers

* feat(icon-schema): separate deprecation reason enumerations, extract removal notice

* fix(icon-schema): fix linting

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

* fix(icons): add deprecation reason to some more icons

* fix(docs): fix linting issue

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-05-22 13:08:34 +02:00
Karsa
1b3173b17b fix(icons): arcified and renamed paintbrush-2 (#2146)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-05-21 15:34:42 +02:00
Eric Fennis
d5f4275055 fix(lucide-svelte): Remove export mergeClasses in svelte Icon (#2119)
* Remove export svelte icon

* formatting
2024-05-21 15:31:05 +02:00
Jakob Guddas
6abae7cc14 fix(icons): arcified key icon (#2067)
* Updated icons/key.svg

* Updated icons/key.json

* Update icons/key.svg

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

* Add space before close key.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-05-21 15:29:20 +02:00
Eric Fennis
f32ffcd2a2 fix(docs): Fix data api 2024-05-14 23:31:11 +02:00
Karsa
824bb897cf feat(figma): add data API endpoint for new plugin (#2018)
* feat(figma): add data API endpoint with every metadata needed by new Figma plugin

* chore(docs/api): extract data as static const

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-05-14 22:44:52 +02:00
Jakob Guddas
2843a76e28 docs(site): changed my name in the team section (#2142) 2024-05-13 08:23:53 +02:00
Jakob Guddas
155ff3319a fix: resolved broken icons as code details section issue (#2144) 2024-05-13 08:23:23 +02:00
Karsa
34dddb811b fix(icons): fix incorrect category name for diamond-plus/minus (#2125)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-05-03 17:15:48 +02:00
Daniel Bayley
5fead67bf3 Sort out loader/cursor icons (#1331)
* Add `loader-pinwheel` icon

* Optimise `loader` icon

* Improve `loader` metadata

* Add `loader-circle-big` variant

* Rename `loader-2` to `loader-circle`

* Improve `more-horizontal` metadata

* Add `mouse-pointer-ban` icon

* Improve `mouse-pointer` icons metadata

* Improve metadata

* Revert rename of `loader-2` to `loader-circle`

* Revert "Improve `more-horizontal` metadata"

This reverts commit 41fa676b15.

* Formatting

* Format pinwheel and remove loader-circle-big

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-05-03 10:31:21 +02:00
Karsa
48dc9372db fix(icons): add more Lucide-ish rounding to sparkle icons (#1937)
* fix(icons): add more Lucide-ish rounding to sparkle icons

* chore(icons): sharpen points ever so slightly for better visual weight

* chore(icons): linting fix

* chore(icons): update sparkles & moon-star icon as per Discord

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-05-03 10:27:46 +02:00
Karsa
747446fc76 fix(docs): fix uppercase import in lucide-static docs (#2118) 2024-05-03 08:34:04 +02:00
Jakob Guddas
5862ea735e fix(icons): arcified award icon (#2113)
* Updated icons/award.svg

* Update icons/award.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-05-02 11:44:15 +02:00
Rob van Bakel
3a8a349771 fix: Prevent internal router from handling external links (#2107) 2024-04-28 11:22:07 +02:00
Eric Fennis
70bc2245c7 fix(lucide-svelte): Revert shared package for lucide-svelte (#2109)
* fix(lucide-svelte): Revert shared package for `lucide-svelte`

* Update lockfile
2024-04-28 11:05:58 +02:00
Eric Fennis
89f6b6357d fix: Revert moving createIcons to separate file 2024-04-26 19:39:48 +02:00
Jakob Guddas
354af456d3 fix(icons): added rounding to alarm-smoke icon (#2059)
* Updated icons/alarm-smoke.svg

* Updated icons/alarm-smoke.svg

* Updated icons/alarm-smoke.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-26 18:45:50 +02:00
Eric Fennis
e50582e93e feat(icon-component): Creating icons with iconNodes (#1997)
* Add useIconComponent, lucide-react

* Add concept useIconComponent

* add useIconComponents to packages

* Add icon component

* Add icon component

* Add tests for react packages

* Reset changes in icons

* Add types

* Add support for Icon components in Lucide Vue Next

* update tests

* Update tests

* Enable Svelte component

* Fix lucide-react-native tests

* Update Solid package

* update snapshots

* Add docs

* add docs

* Update tests

* Formatting

* Formatting

* Update package lock

* Remove `useIconComponent`

* Update guides

* Update exports preact and solid package

* Formatting

* Format createIcons.ts

* Add lucide lab repo link in docs
2024-04-26 17:59:04 +02:00
Eric Fennis
65deefa53c ci: Revert pnpm in pull-request.yml 2024-04-26 16:25:44 +02:00
Kyle Angelo Galendez
54ef137b49 feat(icons): added grid-2x2-x icon (#2085)
* Added icons/grid-2x2-x.svg

* Added icons/grid-2x2-x.json

* Archify grid-2x2-x.svg
2024-04-26 15:41:08 +02:00
Kyle Angelo Galendez
d4df542117 feat(icons): added grid-2x2-check icon (#2084)
* Added icons/grid-2x2-check.svg

* Added icons/grid-2x2-check.json

* Updated icons/grid-2x2-check.json

* Arcify grid-2x2-check.svg

* Unarcify the check
2024-04-26 15:40:50 +02:00
Jakob Guddas
8c1e56a7bf fix(icons): arcify activity icon (#2058)
* Updated icons/activity.svg

* Updated icons/activity.svg

* Updated icons/activity.json

* Updated icons/activity.svg

* Updated icons/activity.svg

* Update icons/activity.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-04-26 10:59:23 +02:00
Jakob Guddas
dff2172173 Updated icons/printer.svg (#2066) 2024-04-26 10:42:33 +02:00
Kyle Angelo Galendez
e8ccd3df7e Add more OS (#2101)
This includes ChromeOS, iOS, and Android to ensure the report is concise as possible.
2024-04-26 10:40:29 +02:00
Kyle Angelo Galendez
b593355537 Add more OS (#2100)
This includes ChromeOS, iOS, and Android to ensure the report is concise as possible.
2024-04-26 10:40:08 +02:00
Eric Fennis
09420cbca5 docs: Fix dark logo paths 2024-04-25 09:45:07 +02:00
Eric Fennis
45e82a51b8 docs: Update readme files (#2102)
* Update lucide readme

* Add Readme and update package.jsons

* Update readme

* Update package logos

* Update darkmode logos

* Update title build font readme
2024-04-24 17:43:51 +02:00
Jakob Guddas
305e282e19 fix(icons): changed search-code icon (#1953)
* Updated icons/search-code.svg

* Updated icons/search-code.json

* fix: magic apply changes

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-24 09:09:33 +02:00
Eric Fennis
ad7ae84987 Split up workflows (#2093) 2024-04-24 09:08:01 +02:00
Jakob Guddas
df100bde73 fix(icons): changed save-all icon (#2065)
* Updated icons/save-all.svg

* Updated icons/save-all.json

* Updated icons/save-all.svg

* Updated icons/save-all.json
2024-04-24 09:00:01 +02:00
Jakob Guddas
0724851934 Updated icons/bold.svg (#2060) 2024-04-23 19:56:04 +02:00
Riley
34cf88d209 feat(icons): add origami (#2035)
* Add origami

* Reformat

* Change rounding on wing, add right fold

* Fix head outlining

* Merge paths

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

* Add rounding to neck peak

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-04-19 10:49:38 +02:00
Jakob Guddas
6322d1df66 fix(icons): changed save icon (#2064)
* Updated icons/save.svg

* Update icons/save.svg

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

* Add whitespace before closing tag

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-19 10:48:35 +02:00
Riley
8a414b3249 fix(icons): Add axis tag to scale-3d (#2033)
* Add axis tag to scale-3d

* Update scale-3d.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-19 10:30:36 +02:00
Kyle Angelo Galendez
58f614acca feat(icons): add diamond-minus (#2073)
* Add diamond-minus icon

* Add json file
2024-04-18 09:25:51 +02:00
Kyle Angelo Galendez
d598ad7190 feat(icons): add diamond-plus (#2074)
* Add diamond-plus icon

* Add json file
2024-04-18 09:25:20 +02:00
Jakob Guddas
439ee3f707 chore: always fold Icon as code preview comment (#2062) 2024-04-18 09:21:10 +02:00
Jakob Guddas
c2c85fbd5c fix(icons): changed monitor-play icon (#2063)
* Updated icons/monitor-play.svg

* Update icons/monitor-play.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-04-17 16:42:55 +02:00
Taichi Maeda
59aa7bc824 Add bot-off icon (#2079)
* Add bot-off icon

* Fix gap size and corners

Thanks to @karsa-mistmere

* Add @ericfennis as original author
2024-04-17 16:41:23 +02:00
Jakob Guddas
0beb50ebca Updated icons/scroll-text.svg (#2069) 2024-04-17 16:40:27 +02:00
Jakob Guddas
649b440d9d Updated icons/scroll.svg (#2068) 2024-04-17 16:39:52 +02:00
Jakob Guddas
a74e8f3863 Updated icons/feather.svg (#2070) 2024-04-17 16:39:15 +02:00
Jakob Guddas
46318b1605 fix(icons): redesigned dumbbell icon (#2001)
* Updated icons/dumbbell.svg

* Updated icons/dumbbell.json

* Updated icons/dumbbell.svg

* Updated icons/dumbbell.json

* Updated icons/dumbbell.svg
2024-04-12 12:21:52 +02:00
Jakob Guddas
4bf91a3c51 feat(icons): added image-play icon (#2054)
* Added icons/image-play.svg

* Added icons/image-play.json

* Updated icons/image-play.json
2024-04-10 09:26:32 +02:00
Jakob Guddas
3cde4f2a41 fix(icons): changed cable icon (#2026)
* Updated icons/cable.svg

* Update cable.svg

* Update cable.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-10 08:36:44 +02:00
Nicolas Diotto
d75c7613b2 feat(icons): add keyboard-off (#1963)
* feat(icons): added keyboard-off

* fix: change name contribuitor

* fix: fix adjust 2px gap of empty space to the right of the line

* fix: fix adjust 2px gap of empty space to the right of the line

* feat: add contribuitor

* fix: update metadata

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-04-09 09:20:49 +02:00
Jakob Guddas
d17e81d712 fix(icons): added rounding to video-off icon (#2051)
* Updated icons/video-off.svg

* Updated icons/video-off.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-09 09:17:22 +02:00
Jakob Guddas
3b4a19efcf fix(icons): added rounding to video icon (#2050)
* Updated icons/video.svg

* Updated icons/video.svg

* Updated icons/video.json
2024-04-09 09:15:35 +02:00
Jakob Guddas
94bbdb4e06 fix(icons): added rounding to coffee icon (#2004)
* Updated icons/coffee.svg

* Updated icons/coffee.json
2024-04-05 16:28:45 +02:00
Zakher Masri
4b87cdb55f feat: added pilcrow-right icon (#1668)
* feat: added `pilcrow-right` icon

* Update icons/pilcrow-right.svg

* Format pilcrow-right.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-05 16:27:57 +02:00
Zakher Masri
52de557ec1 feat: added pilcrow-left icon (#1667)
* Fixed Illustrator template link + fixed typo

* Added `pilcrow-left` icon

* Update pilcrow-left.json

* Update illustrator-guide.md

* Update CONTRIBUTING.md

* update pilcrow-left icon

* Formatting pilcrow-left.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-05 15:56:40 +02:00
Jakob Guddas
642fa718f6 refactor(icons): optimized fingerprint icon (#1993)
* Updated icons/fingerprint.svg

* Updated icons/fingerprint.json

* Updated icons/fingerprint.svg
2024-04-05 15:48:01 +02:00
Riley
215f0767d7 meta(icons): Add axis tag to rotate-3d (#2034)
* Add axis tag to rotate-3d

* Update rotate-3d.json

* Update rotate-3d.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-05 15:35:06 +02:00
Jakob Guddas
a0befaf186 fix(icons): added rounding pen-tool icon (#2006)
* Updated icons/pen-tool.svg

* Updated icons/pen-tool.svg

* Updated icons/pen-tool.json

* Updated icons/pen-tool.svg
2024-04-05 15:31:20 +02:00
Jakob Guddas
167f563f6d fix(icons): added rounding to cctv icon (#2003)
* Updated icons/cctv.svg

* Updated icons/cctv.svg
2024-04-05 10:54:21 +02:00
dependabot[bot]
0ee6b84a06 chore(deps-dev): bump vite from 5.0.12 to 5.0.13 (#2043)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.12 to 5.0.13.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.0.13/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.0.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>
2024-04-05 08:45:48 +02:00
Jakob Guddas
9a65837e45 Update generateChangedIconsCommentMarkup.mjs (#2029) 2024-04-03 09:54:30 +02:00
Jakob Guddas
4c6587612a feat: include code snippet in preview comment (#1973)
* feat: include code snippet in preview comment

* feat: collapse code snippet in preview comment when it has more than 20 lines

* Update scripts/generateChangedIconsCommentMarkup.mjs

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-02 17:48:08 +02:00
Karsa
4aa36db1cb feat(icons): added mouse off icon (#2020)
* feat(icons): added mouse off icon

* Update icons/mouse-off.svg

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

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-04-01 11:14:40 +02:00
Jakob Guddas
01401a3c97 docs: improved warning message in lucide-static readme (#2025) 2024-04-01 11:14:06 +02:00
Eric Fennis
d1e528fd95 feat(site): Add team section and subtle ads (#2016)
* Add team member cards

* finish up

* Final improvements

* Add ads

* Fix lint errors

* Update docs/.vitepress/data/teamData.json

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

* Update docs/.vitepress/data/teamData.json

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Karsa <contact@karsa.org>
2024-03-25 16:35:43 +01:00
Karsa
5f5be9ec1e fix(icons): fix tram front icon dots (#2017)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-25 15:12:05 +01:00
Karsa
c66cda28da refactor(icons): optimizes drumstick and improves pixel perfection (#1948)
* fix(icons): optimizes drumstick and improves pixel perfection

* feat(icons): convert drumstick manually to arcs

* feat(icons): close gaps

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-22 16:36:58 +01:00
Jakob Guddas
e565116a4a fix(icons): increased file-question icon question mark size to match other icons (#1992)
* Updated icons/file-question.svg

* Updated icons/file-question.json
2024-03-22 16:35:19 +01:00
Jakob Guddas
cf50c9f849 Updated icons/monitor-stop.svg (#1991) 2024-03-22 16:32:02 +01:00
Jakob Guddas
9fa47227a7 fix(icons): added rounding to pause icon (#1988)
* Updated icons/pause.svg

* Updated icons/pause.json
2024-03-22 16:22:30 +01:00
Jakob Guddas
547111ed5b Updated icons/map.svg (#1998) 2024-03-22 16:14:45 +01:00
Jakob Guddas
0d6aa9feaa Updated icons/wallet.svg (#2009) 2024-03-22 12:10:37 +01:00
Jakob Guddas
3a0f2b3fa8 Update pull_request_template.md (#2013) 2024-03-22 10:26:00 +01:00
Jakob Guddas
712e6bf6e4 fix(icons): fixed align-vertical-distribute-center icon (#2014)
* Updated icons/align-vertical-distribute-center.svg

* Updated icons/align-vertical-distribute-center.json
2024-03-22 09:12:03 +01:00
Jakob Guddas
58319dd447 fix(icons): added rounding to bug-play icon (#1990)
* Updated icons/bug-play.svg

* Updated icons/bug-play.json
2024-03-21 12:08:42 +01:00
Karsa
cf89b8eeac fix(icons/cpu): add guideline compliant rounding to CPU center (#1981)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-18 18:43:05 +01:00
Karsa
a8c6add82b feat(icons): add worm icon 2024-03-14 13:51:17 +01:00
Karsa
d000e4904d Update 02_bug_report.yml
Fix newly arisen syntax issue
2024-03-14 09:21:36 +01:00
Jakob Guddas
c99d6cbf4a fix(icons): optimized chef-hat icon (#1974)
* Updated icons/chef-hat.svg

* Updated icons/chef-hat.json

* Updated icons/chef-hat.svg

* Updated icons/chef-hat.svg

* Update icons/chef-hat.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-03-14 08:41:01 +01:00
Jakob Guddas
0b1fb8ff1f feat(icons): added beer-off icon (#1971)
* Added icons/beer-off.svg

* Added icons/beer-off.json
2024-03-13 17:10:03 +01:00
Karsa
dcde43e97e fix(packages/lucide): exports aliases from lucide package (#1976)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-13 17:09:39 +01:00
Karsa
96da23cc88 feat(icons): added hospital (#1952)
* feat(icons): added hospital

* chore(icons): add some extra icons

* chore(icons): add contributors

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-11 15:00:43 +01:00
Karsa
78182c3573 fix(icons): updates crown to look more Lucide-y (#1947)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-11 14:59:06 +01:00
Eric Fennis
02f8f5a1c1 Update sandpack (#1968) 2024-03-11 14:21:03 +01:00
Jakob Guddas
16ee591f49 fix(icons): optimized hotel icon (#1951)
* Updated icons/hotel.svg

* Updated icons/hotel.json
2024-03-09 15:21:39 +01:00
Han Yeong-woo
5378156833 fix(lucide-solid): use jsx for exports too (#1970) 2024-03-09 14:11:25 +01:00
Karsa
7b76078792 feat(icons): added ham icon (#1949)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-09 10:42:01 +01:00
Karsa
e2af1af4f9 fix(packages/lucide-solid): use jsx extension for solid build (#1964)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-09 10:41:06 +01:00
Jakob Guddas
c9513d0bf4 Update 02_bug_report.yml (#1967) 2024-03-09 10:40:22 +01:00
Karsa
6fbd5ee06a chore(icons): update icon names to match naming guidelines no. 7 to 9 (#1906)
* Update icon names to match naming guidelines no. 7 to 9
Update and extend rename icon helper script.

* Ran prettier

* Refactor rename scripts so that simplegit import doesn't cause other helper script usages to crash.

* Revert renaming key-square

* Revert renaming message-circle|square

* Fix square-dashed-kanban

* Optimize circle power

* pnpm rename square-dashed-bottom-scissors square-bottom-dashed-scissors

* Fix linting

* Fix file name linting issues via cspell configuration

* Rename unlock => lock-open

* Rename (square|circle)-check-2 => (square|circle)-check-small

* pnpm rename code-2 code-xml
pnpm rename contact-2 contact-round

* rename test-tube-2 test-tube-diagonal
rename mic-2 mic-vocal
rename loader-2 loader-circle
rename test-tube-2 test-tube-diagonal
rename school-2 university

* fix icons linting

* rename ice-cream => ice-cream-cone
rename ice-cream-2 => ice-cream-bowl
rename laptop-2 => laptop-abstract

* renamePattern "^(square|circle)-arrow-([a-z-]+)-from$" "\\1-arrow-out-\\2"

* rename wand-2 => wand-sparkles

* Update university.json tags.

* fix(icons): renamePattern '^(.+)-abstract$' '\1-minimal' --add-alias=false
feat(scripts): added yargs option parsing to renamePattern

* fix(packages): Remove protractor and puppeteer from lucide-angular, they are no longer in use but cause pnpm install to fail

* Lint fix, this is starting to get ridiculous.

* fix(packages): fix lucide-angular karma config.

* chore(icons): renamePattern '^(square|circle)-check$' '\1-check-big'
chore(icons): renamePattern '^(square|circle)-check-small$' '\1-check'

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-08 16:55:46 +01:00
Karsa
d8773827fb hotfix(icons): remove circle-ellipsis alias from circle-ellipsis (#1961) 2024-03-08 16:46:56 +01:00
Daniel Bayley
bc1843f767 chore(icons): sort out more/ellipsis… icons/metadata (#1459)
* Add `more-horizontal-rectangle` icon

* Refine `circle-ellipsis` icon

* Rename `circle-ellipsis` to `more-circle`

* Improve `more` icons metadata

* Revert "Refine `circle-ellipsis` icon"

This reverts commit 973db1e140.

* Revert "Add `more-horizontal-rectangle` icon"

This reverts commit 3960c6ee0c.

* Rename `more-circle` to `more-horizontal-circle`

* Rename `form-input` to `more-horizontal-rectangle`

* Improve metadata

* Rename `more-horizontal-circle` to `ellipsis-circle`

* Rename `more-horizontal-rectangle` to `ellipsis-rectangle`

* Rename `more-horizontal` to `ellipsis`

* Rename `more-vertical` to `ellipsis-vertical`

* Fix lint issues

* Rename vertical ellipsis

* formatting

* Rename circle-ellipsis

* Rename rectangle ellipsis

* Revert "Rename vertical ellipsis"

This reverts commit acb80b75f8.

* Add EOFs

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-08 15:32:35 +01:00
Karsa
07aefe3b88 feat(icons): add briefcase-medical & briefcase-business (#1954)
* feat(icons): add briefcase-medical & briefcase-business

* chore(icons): add extra tag to briefcase-business.json

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-08 15:28:45 +01:00
Eric Fennis
76d449a974 Aliases redirect on site (#1959)
* test aliases

* test

* Add redirect routes

* Formatting
2024-03-08 15:20:15 +01:00
Karsa
dd39fa328c Update cannabis.json (#1946) 2024-03-07 10:40:20 +01:00
Bernardo Ferrari
0cf568c38b fix(icons): play icon uncentered (#1834)
* Fix play.svg

* Update play.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-03-07 08:21:30 +01:00
Jakob Guddas
a8b8dfc58e fix(icons): optimized and closed gaps in file-pie-chart icon (#1939)
* Updated icons/file-pie-chart.svg

* Updated icons/file-pie-chart.json

* Updated icons/file-pie-chart.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-06 22:16:52 +01:00
Jakob Guddas
41dde6b574 fix(icons): added round corner to file-volume icon (#1940)
* Updated icons/file-volume.svg

* Updated icons/file-volume.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-06 22:16:47 +01:00
Jakob Guddas
ae35ca256c fix(icons): added round corner to file-search icon (#1941)
* Updated icons/file-search.svg

* Updated icons/file-search.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-06 22:16:41 +01:00
Eric Fennis
38142f24a5 Update metadata (#1943) 2024-03-06 22:16:23 +01:00
Eric Fennis
b16f70993a workflow: Update stale workflow 2024-03-06 21:39:39 +01:00
Eric Fennis
ad1accb2e3 refactor: Adds repo shared package @lucide/shared (#1904)
* Fixed import of toKebabCase helper function

* Added utils package

* utils

* Make utils package work in build

* Add lucide-shared

* Transpile solid with esbuild

* Fix resolve modules

* Cleanup

* Format files

* Fix properties plugins function

* Fix properties plugins in lucide package

* Revert remove resolve plugin and cleanup

* Update snapshots

* Revert icon changes

---------

Co-authored-by: Rohan <rohancrrm@gmail.com>
2024-03-06 21:03:12 +01:00
Jakob Guddas
d255c6ac4e fix: readded gap between x-ray preview comment icons. (#1915)
* fix: readded gap between x-ray preview comment icons.

* feat: keep size 400px

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-06 21:00:26 +01:00
Jakob Guddas
d67ef7b0ca feat(icons): add cannabis icon (#1901)
* Added icons/cannabis.svg

* Added icons/cannabis.json

* Updated icons/cannabis.svg

* Updated icons/cannabis.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-06 20:59:25 +01:00
Karsa
198ccb8430 fix(icons): increased rounding of zap icons (#1936)
* fix(icons): add more Lucide-ish rounding to zap icons

* chore(icons): optimise zap-off manually

* chore(icons): fix linting

* Update icons/zap-off.svg

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

* Update icons/zap.svg

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

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2024-03-06 20:58:17 +01:00
Eric Fennis
ce1b5bdefa style: Fix formatting 2024-03-06 20:54:55 +01:00
Daniel Bayley
45aa928369 Optimise/refine radio[-tower]/add airdrop/Apple/mac/iOS/app related icons (#1514)
* Add `airdrop` icon

* Optimise `radio` icon

* Refine `radio-tower` icon

* Add `airplay` icon

* Add `dock` (desktop) icon

* Improve metadata

* Optimise `podcast` icon

* Add `app-window-mac` icon

* Update icons/radio.svg

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

* Update icons/radio-tower.svg

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

* Update icons/podcast.svg

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

* Update icons/radio-tower.svg

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

* Update icons/radio.svg

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

* Revert "Add `airdrop` icon"

This reverts commit af60a17784.

* Revert radio and radio-tower changes

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2024-03-06 20:29:21 +01:00
Daniel Bayley
93dc356fa1 Add rotate/resize element icons (#1516)
* Add `proportions` icon

* Improve metadata

* Add `rotate-cw-square` icon

* Add `rotate-ccw-square` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-06 20:13:53 +01:00
Jakob Guddas
a0aa132682 Updated icons/keyboard.svg (#1930)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-03-01 11:40:56 +01:00
Karsa
1a4dd64862 feat(icons): redesign brain and related icons (#1902)
* Update brain and related icons

* Update central line and increase in size

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-28 16:53:48 +01:00
Jakob Guddas
3481f70ad7 feat: added 16x16 sub grid to svg preview component (#1914)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-02-28 16:52:12 +01:00
Daniel Bayley
024f21e896 Add bot-message-square (chatbot) icon (#1709) 2024-02-28 16:35:25 +01:00
Jakob Guddas
c30ccd472e fix(icons): update goal icon (#1924)
* Updated icons/goal.svg

* Updated icons/goal.json
2024-02-27 10:17:59 +01:00
Wojciech Maj
28ec03ebc8 Add support for react-native-svg ^15.0.0 (#1929) 2024-02-27 10:13:42 +01:00
Eric Fennis
ab3a31367a feat(site): adds virtual scrolling to icons grid and categories (#1911)
* Add virtual scrolling icons page

* improve scrolling

* Small fixes in the routing

* Cleanup

* Fix routing issue

* Remove log

* Cleanup

* Cleanup

* Show search results in sidebar

* Improve alphabetical list

* Add whitespace

* Extract logic into a composable and fix icon selection

* Formatting
2024-02-27 10:09:52 +01:00
Karsa
148bae88d8 feat(icons): added globe-lock icon (#1587)
* Added globe-lock icon

* feat(icons): Added globe-lock, renamed globe-2 to earth, and added earth-lock

* feat(icons): Added globe as a tag to earth

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-26 09:53:04 +01:00
Chaoying
ca4a38ba85 Fix import statements (#1922) 2024-02-25 19:04:23 +01:00
Karsa
f297765a13 Update shield to have better centre of gravity (#1905)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-25 11:28:31 +01:00
Karsa
4657ccbfff fix(icons/concierge-bell): Adds missing rounding from bottom part (#1923)
Co-authored-by: Karsa <karsa@sztaki.hu>
2024-02-25 10:27:22 +01:00
Jakob Guddas
db222d4591 Optimized and fixed alignment issues in package-open icon (#1648)
* Optimized and fixed alignment issues in `package-open` icon

* Update icons/package-open.svg

---------

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

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

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

* Update flower.json

* Update flower.json

* Update icons/flower.svg

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

---------

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

* Add split-table.json

* Add split-rows icon

* Add split-rows.json

* Add merge-rows icon

* Add merge-rows.json

* Update icons/merge-rows.svg

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

* Update split-rows.svg

* Update split-table.svg

* Fix by add padding to split-table icon

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

* Update split-table icon

- Add 1px to the row borders down below

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

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

* Rename merge-rows to table-cells-merge

* Rename split-rows to table-cells-split

* Rename table-row-split to table-split

* Add `table-columns-split` icon

* Add table-columns-split.json

* Delete table-split icon and json

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

* Update icons/table-cells-split.json

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

* Update icons/table-rows-split.json

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

* Update icons/table-cells-merge.json

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

* Update icons/table-columns-split.json

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

---------

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

* Replace missing icon, haha 😅

---------

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

* Further adjustments to pixel perfection

* Nudge things around a bit more

* Elongate front part of head

---------

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

* Add rounding to spike

---------

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

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

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

---------

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

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

* Improve pixel perfection

---------

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

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

* Updated icons/clover.json

* Updated icons/clover.svg

* Update icons/clover.svg

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

---------

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

* Updated icons/circle-dashed.json

* Update icons/circle-dashed.svg

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

---------

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

* Update square-root.svg

* Fix square icon SVG

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

* Rename `square-root` `radical`

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

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

* Update radical.json

* Match activity height

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

---------

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

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

* Updated icons/graduation-cap.json

* Updated icons/graduation-cap.svg

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

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

* Updated icons/shopping-basket.json

* Updated icons/shopping-basket.svg

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

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

* Updated icons/wifi.json

* Updated icons/wifi.svg

* Updated icons/wifi.json

* Update wifi-off.svg

---------

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

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

* Add subtitle category

* Changed corner radius to 2px

* Fixed metadata for caption icons

* Took suggestions to heart

* Removed trailing spaces

* Fixed captions-off violations

* Fixed name and added aliases

* Removed subtitles svg and json

* Removed alias from captions-off

* format

---------

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

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

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

---------

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

* Update tags.svg

* Update tag.svg

---------

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

* update handshake icon

* Update handshake.svg

* Update icons/handshake.json

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

---------

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

* Update package.json

---------

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

* Formatting JSX single attribute per line

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

* Bump prettier version

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

* Update shield-minus to match other minus icons

---------

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

* Switch to same plus minus as file icons

* update contributors

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

* Fix lint errors

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

* Split single path into multiple elements

* Refine icons/story.svg

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

* Update contributors to icons/story.json

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

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

---------

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

* Remove extra attributes and connect path under wheels

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

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

* Increase cab height of ambulance

* Add contributors from truck icon

---------

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

* renamed script

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

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

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

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

* renamed file

---------

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

* Add `hand-platter` icon

* Add `hand-coins` (savings) icon

* Add `hand-heart` icon

* Fix/optimise `helping-hand` icon

* Fix/optimise `hand-coins` icon

* Fix/optimise `hand-heart` icon

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

* Fix/optimise `hand-platter` icon

* Add `thumbs-up-down` icon

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

* Improve metadata

* Delete thumbs-up-down icons

---------

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

* Fixing fill on circles

* Fixing fills

* Revert tractor fill

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-26 09:58:05 +01:00
Jakob Guddas
28686b5bd5 feat: added webhook-off icon (#1566)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-01-25 08:54:18 +01:00
Eric Fennis
8cc143915c Update JSdoc lucide svelte (#1826) 2024-01-25 08:23:34 +01:00
2367 changed files with 26064 additions and 41174 deletions

16
.cspell/custom-words.txt Normal file
View File

@@ -0,0 +1,16 @@
# Custom words
fullscreen
gamepad
gantt
kanban
pilcrow
squircle
strikethrough
touchpad
ungroup
pilcrow
# Brands
codepen
codesandbox
dribbble

View File

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

View File

@@ -1,4 +1,4 @@
const DEFAULT_ATTRS = require('./scripts/render/default-attrs.json');
const DEFAULT_ATTRS = require('./tools/build-icons/render/default-attrs.json');
module.exports = {
root: true,
@@ -15,7 +15,9 @@ module.exports = {
'no-use-before-define': 'off',
'import/no-extraneous-dependencies': [
'error',
{ devDependencies: ['**/*.test.js', '**/*.spec.js', './scripts/**'] },
{
devDependencies: ['**/*.test.js', '**/*.spec.js', '**/scripts/**'],
},
],
'import/extensions': [
'error',
@@ -42,12 +44,15 @@ module.exports = {
'@html-eslint/no-duplicate-attrs': 'error',
'@html-eslint/no-inline-styles': 'error',
'@html-eslint/require-attrs': [
'error',
...Object.entries(DEFAULT_ATTRS)
.map(([attr, value]) => ({ tag: 'svg', attr, value: String(value) }))
'error',
...Object.entries(DEFAULT_ATTRS).map(([attr, value]) => ({
tag: 'svg',
attr,
value: String(value),
})),
],
'@html-eslint/indent': ['error', 2],
"@html-eslint/no-multiple-empty-lines": ["error", { "max": 0 }],
'@html-eslint/no-multiple-empty-lines': ['error', { max: 0 }],
'@html-eslint/no-extra-spacing-attrs': [
'error',
{
@@ -64,7 +69,7 @@ module.exports = {
'@html-eslint/element-newline': 'error',
'@html-eslint/no-trailing-spaces': 'error',
'@html-eslint/quotes': 'error',
}
},
},
],
};

View File

@@ -35,6 +35,16 @@ body:
placeholder: e.g. 0.289.1
validations:
required: true
- type: checkboxes
id: can-reproduce-in-latest-version
attributes:
label: Can you reproduce this in the latest version?
description: i.e. after running `npm install lucide-react@latest`
options:
- label: 'Yes'
- label: 'No'
validations:
required: false
- type: checkboxes
id: browsers
attributes:
@@ -59,6 +69,9 @@ body:
- label: Windows
- label: Linux
- label: macOS
- label: ChromeOS
- label: iOS
- label: Android
- label: Other/not relevant
- type: textarea
id: description

View File

@@ -30,6 +30,9 @@ body:
- label: Windows
- label: Linux
- label: macOS
- label: ChromeOS
- label: iOS
- label: Android
- label: Other/not relevant
- type: textarea
id: description

View File

@@ -1,5 +1,5 @@
name: "Build and Test"
description: "Builds and test a package"
name: 'Build and Test'
description: 'Builds and test a package'
inputs:
name:
@@ -7,7 +7,7 @@ inputs:
required: true
runs:
using: "composite"
using: 'composite'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4

View File

@@ -1,5 +1,5 @@
name: "Check icons"
description: "Cross-checks icon and category references in JSON descriptors"
name: 'Check icons'
description: 'Cross-checks icon and category references in JSON descriptors'
inputs:
name:
@@ -7,7 +7,7 @@ inputs:
required: true
runs:
using: "composite"
using: 'composite'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4

96
.github/labeler.yml vendored
View File

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

View File

@@ -47,7 +47,7 @@
- [ ] I've made sure that the icons look sharp on low DPI displays.
- [ ] I've made sure that the icons look consistent with the icon set in size, optical volume and density.
- [ ] I've made sure that the icons are visually centered.
- [ ] I've correctly optimized all icons to two points of precision.
- [ ] I've correctly optimized all icons to three points of precision.
## Before Submitting <!-- For every PR! -->
<!-- All of these requirements must be fulfilled. -->

View File

@@ -1,11 +1,13 @@
name: Close stale issues and PR
on:
schedule:
- cron: "45 1 * * *"
- cron: '45 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/stale@v9
with:
@@ -14,4 +16,5 @@ jobs:
close-pr-message: This PR was closed because it has been stalled for 5 days with no activity.
close-pr-label: 🧶 stale
days-before-stale: 30
days-before-issue-stale: -1
days-before-close: -1

View File

@@ -1,6 +1,6 @@
name: "Pull Request Labeler"
name: 'Pull Request Labeler'
on:
- pull_request_target
- pull_request_target
jobs:
triage:
@@ -9,4 +9,4 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5
- uses: actions/labeler@v5

View File

@@ -8,7 +8,7 @@ on:
- pnpm-lock.yaml
jobs:
lucide-angular:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -26,5 +26,20 @@ jobs:
- name: Build
run: pnpm --filter lucide-angular build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-angular test

View File

@@ -29,7 +29,7 @@ jobs:
- name: Create font in ./lucide-font
run: pnpm build:font
- name: "Upload to Artifacts"
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v3
with:
name: lucide-font

View File

@@ -24,8 +24,5 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-preact build
- name: Test
run: pnpm --filter lucide-preact test

View File

@@ -24,8 +24,5 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter lucide-react-native build
- name: Test
run: pnpm --filter lucide-react-native test

View File

@@ -10,7 +10,7 @@ on:
- pnpm-lock.yaml
jobs:
lucide-react:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -28,5 +28,20 @@ jobs:
- name: Build
run: pnpm --filter lucide-react build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-react test

View File

@@ -9,7 +9,7 @@ on:
- pnpm-lock.yaml
jobs:
lucide-solid:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -27,5 +27,20 @@ jobs:
- name: Build
run: pnpm --filter lucide-solid build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-solid test

View File

@@ -9,7 +9,7 @@ on:
- pnpm-lock.yaml
jobs:
lucide-svelte:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -27,5 +27,20 @@ jobs:
- name: Build
run: pnpm --filter lucide-svelte build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-svelte test

View File

@@ -9,7 +9,7 @@ on:
- pnpm-lock.yaml
jobs:
lucide-vue-next:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -27,5 +27,20 @@ jobs:
- name: Build
run: pnpm --filter lucide-vue-next build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-vue-next test

View File

@@ -9,7 +9,7 @@ on:
- pnpm-lock.yaml
jobs:
lucide-vue:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -27,5 +27,20 @@ jobs:
- name: Build
run: pnpm --filter lucide-vue build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-vue test

View File

@@ -9,7 +9,7 @@ on:
- pnpm-lock.yaml
jobs:
lucide:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -27,5 +27,20 @@ jobs:
- name: Build
run: pnpm --filter lucide build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide test

View File

@@ -3,7 +3,7 @@ name: Add Changed Icons comment
on:
pull_request_target:
paths:
- 'icons/*.svg'
- 'icons/*'
branches:
- main
- fix-icon-preview
@@ -68,6 +68,16 @@ jobs:
# 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:
@@ -94,6 +104,10 @@ jobs:
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

View File

@@ -41,17 +41,18 @@ jobs:
strategy:
fail-fast: false
matrix:
package: [
'lucide',
'lucide-react',
'lucide-react-native',
'lucide-vue',
'lucide-vue-next',
'lucide-angular',
'lucide-preact',
'lucide-solid',
'lucide-svelte',
]
package:
[
'lucide',
'lucide-react',
'lucide-react-native',
'lucide-vue',
'lucide-vue-next',
'lucide-angular',
'lucide-preact',
'lucide-solid',
'lucide-svelte',
]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
@@ -136,7 +137,7 @@ jobs:
- name: Create font in ./lucide-font
run: pnpm build:font
- name: "Upload to Artifacts"
- name: 'Upload to Artifacts'
uses: actions/upload-artifact@v3
with:
name: lucide-font
@@ -145,10 +146,7 @@ jobs:
post-release:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: [
pre-release,
lucide-font,
]
needs: [pre-release, lucide-font]
steps:
- uses: actions/checkout@v4

1
.gitignore vendored
View File

@@ -34,6 +34,7 @@ docs/.vitepress/data/iconNodes
docs/.vitepress/data/iconMetaData.ts
docs/.vitepress/data/releaseMetaData.json
docs/.vitepress/data/releaseMetaData
docs/.vitepress/data/categoriesData.json
docs/.vitepress/data/iconDetails
docs/.vitepress/data/relatedIcons.json
docs/.vercel

View File

@@ -1,5 +1,12 @@
pnpm-lock.yaml
# docs examples
docs/**/examples/
docs/.vitepress/.temp
docs/.vitepress/cache
docs/.vitepress/data
docs/.nitro
# lucide-angular
packages/lucide-angular/.angular/cache

2
.vscode/launch.json vendored
View File

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

11
.vscode/settings.json vendored
View File

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

View File

@@ -49,7 +49,7 @@
"circle",
"<circle"
],
"body": "<circle cx=\"${2:12}\" cy=\"${3:$2}\" r=\"${1|10,2,.5|}\" />"
"body": "<circle cx=\"${2:12}\" cy=\"${3:$2}\" r=\"${1|10,2,.5\" fill=\"currentColor|}\" />"
},
"Ellipse": {
"scope": "xml",

View File

@@ -39,6 +39,8 @@ You can also [download an Adobe Illustrator template](https://github.com/lucide-
#### [Figma Guide](https://lucide.dev/docs/figma-guide)
#### [Affinity Designer Guide](https://lucide.dev/guide/design/affinity-designer-guide)
### 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.

View File

@@ -1,4 +1,11 @@
<p align=center><img width="480" src="https://lucide.dev/lucide-logo-repo.svg" alt="Lucide Logo"></p>
<p align="center">
<a href="https://github.com/lucide-icons/lucide#gh-light-mode-only">
<img src="https://lucide.dev/lucide-logo-repo.svg#gh-light-mode-only" alt="Lucide - Beautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons." width="480">
</a>
<a href="https://github.com/lucide-icons/lucide#gh-dark-mode-only">
<img src="https://lucide.dev/lucide-logo-repo-dark.svg#gh-dark-mode-only" alt="Lucide - Beautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons." width="480">
</a>
</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>
@@ -274,9 +281,12 @@ Thank you to all the people who contributed to Lucide!
## Sponsors
<a href="https://vercel.com?utm_source=lucide&utm_campaign=oss">
<img src="docs/public/vercel.svg" alt="Powered by Vercel" width="200" />
</a>
<a href="https://www.digitalocean.com/?refcode=b0877a2caebd&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="docs/public/digitalocean.svg" width="200" alt="DigitalOcean Referral Badge" /></a>
### Awesome backer 🍺
<a href="https://www.scipress.io?utm_source=lucide"><img src="docs/public/sponsors/scipress.svg" width="180" alt="Scipress sponsor badge" /></a>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Coding & development",
"icon": "code-2"
"icon": "code-xml"
}

View File

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

View File

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

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "File icons",
"icon": "panels-top-left"
}
}

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Home",
"icon": "home"
}
"icon": "house"
}

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Layout",
"icon": "panels-top-left"
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Multimedia",
"icon": "play-circle"
}
"icon": "circle-play"
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,4 +2,4 @@
"$schema": "../category.schema.json",
"title": "Transportation",
"icon": "train-front"
}
}

View File

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

View File

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

10
cspell.json Normal file
View File

@@ -0,0 +1,10 @@
{
"dictionaries": ["en-us", "custom-words"],
"dictionaryDefinitions": [
{
"name": "custom-words",
"path": "./.cspell/custom-words.txt",
"addWords": true
}
]
}

View File

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

View File

@@ -0,0 +1,40 @@
import iconNodes from '../../data/iconNodes/index.ts';
import { IconNodeWithKeys } from '../../theme/types';
import iconMetaData from '../../data/iconMetaData';
import releaseMeta from '../../data/releaseMetaData.json';
import categories from '../../data/categoriesData.json';
const dataResponse = {
icons: Object.entries(iconNodes).reduce((acc, [name, iconNode]) => {
const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs }]) => {
return [name, attrs];
});
acc[name] = {
iconNode: newIconNode,
aliases: (iconMetaData[name]?.aliases ?? []).map((alias) =>
typeof alias === 'string' ? alias : alias.name,
),
tags: iconMetaData[name].tags ?? [],
categories: iconMetaData[name].categories ?? [],
...releaseMeta[name],
};
return acc;
}, {}),
aliases: Object.entries(iconNodes).reduce((acc, [name]) => {
for (const alias of iconMetaData[name]?.aliases ?? []) {
acc[typeof alias === 'string' ? alias : alias.name] = name;
}
return acc;
}, {}),
categories,
};
export default eventHandler((event) => {
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400');
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
return dataResponse;
});

View File

@@ -13,7 +13,10 @@ export default eventHandler((event) => {
const data = pathData.at(-1).slice(0, -4);
const [name] = pathData;
const src = Buffer.from(data, 'base64').toString('utf8');
const src = Buffer.from(data, 'base64')
.toString('utf8')
.replaceAll('\n', '')
.replace(/<svg[^>]*>|<\/svg>/g, '');
const children = [];
@@ -30,20 +33,29 @@ export default eventHandler((event) => {
const LucideIcon = createLucideIcon(backdropName, iconNode);
const svg = renderToStaticMarkup(createElement(LucideIcon));
const backdropString = svg.replace(/<svg[^>]*>|<\/svg>/g, '');
const backdropString = svg.replaceAll('\n', '').replace(/<svg[^>]*>|<\/svg>/g, '');
children.push(
createElement(Backdrop, {
backdropString,
src,
color: name in iconNodes ? 'red' : '#777',
})
}),
);
if (name in iconNodes) {
children.push(
createElement(Backdrop, {
backdropString: src,
src: backdropString,
color: 'lime',
}),
);
}
}
const svg = Buffer.from(
// We can't use jsx here, is not supported here by nitro.
renderToString(createElement(SvgPreview, { src, showGrid: true }, children))
renderToString(createElement(SvgPreview, { src, showGrid: true }, children)),
).toString('utf8');
defaultContentType(event, 'image/svg+xml');

View File

@@ -28,7 +28,7 @@ export default eventHandler(async (event) => {
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
`
`,
);
const resvg = new Resvg(svg, { background: '#000' });

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,186 @@
[
{
"name": "accessibility",
"title": "Accessibility"
},
{
"name": "account",
"title": "Accounts & access"
},
{
"name": "animals",
"title": "Animals"
},
{
"name": "arrows",
"title": "Arrows"
},
{
"name": "brands",
"title": "Brands"
},
{
"name": "buildings",
"title": "Buildings"
},
{
"name": "charts",
"title": "Charts"
},
{
"name": "communication",
"title": "Communication"
},
{
"name": "connectivity",
"title": "Connectivity"
},
{
"name": "currency",
"title": "Currency"
},
{
"name": "cursors",
"title": "Cursors"
},
{
"name": "design",
"title": "Design"
},
{
"name": "development",
"title": "Coding & development"
},
{
"name": "devices",
"title": "Devices"
},
{
"name": "emoji",
"title": "Emoji"
},
{
"name": "files",
"title": "File icons"
},
{
"name": "food-beverage",
"title": "Food & beverage"
},
{
"name": "furniture",
"title": "Furniture"
},
{
"name": "gaming",
"title": "Gaming"
},
{
"name": "home",
"title": "Home"
},
{
"name": "layout",
"title": "Layout"
},
{
"name": "mail",
"title": "Mail"
},
{
"name": "maps",
"title": "Maps"
},
{
"name": "maths",
"title": "Maths"
},
{
"name": "medical",
"title": "Medical"
},
{
"name": "money",
"title": "Money"
},
{
"name": "multimedia",
"title": "Multimedia"
},
{
"name": "nature",
"title": "Nature"
},
{
"name": "navigation",
"title": "Navigation"
},
{
"name": "notifications",
"title": "Notifications"
},
{
"name": "people",
"title": "People"
},
{
"name": "photography",
"title": "Photography"
},
{
"name": "science",
"title": "Science"
},
{
"name": "seasons",
"title": "Seasons"
},
{
"name": "security",
"title": "Security"
},
{
"name": "shapes",
"title": "Shapes"
},
{
"name": "shopping",
"title": "Shopping"
},
{
"name": "social",
"title": "Social"
},
{
"name": "sports",
"title": "Sports"
},
{
"name": "sustainability",
"title": "Sustainability"
},
{
"name": "text",
"title": "Text formatting"
},
{
"name": "time",
"title": "Time & calendar"
},
{
"name": "tools",
"title": "Tools"
},
{
"name": "transportation",
"title": "Transportation"
},
{
"name": "travel",
"title": "Travel"
},
{
"name": "weather",
"title": "Weather"
}
]

View File

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

View File

@@ -0,0 +1,48 @@
[
{
"name": "Eric Fennis",
"title": "Creator of Lucide & Software engineer @nedap",
"image": "https://github.com/ericfennis.png?size=192",
"sponsor": "https://github.com/sponsors/ericfennis",
"socialLinks": [
{
"icon": "github",
"link": "https://github.com/ericfennis"
},
{
"icon": "x",
"link": "https://github.com/ericfennis"
}
]
},
{
"name": "Karsa Rigó",
"title": "Maintainer of Lucide & Software engineer @sztaki",
"image": "https://github.com/karsa-mistmere.png?size=192",
"socialLinks": [
{
"icon": "github",
"link": "https://github.com/karsa-mistmere"
},
{
"icon": "linkedin",
"link": "https://www.linkedin.com/in/karsamistmere"
}
]
},
{
"name": "Jakob Guddas",
"title": "Maintainer of Lucide & Software engineer @LEGO",
"image": "https://github.com/jguddas.png?size=192",
"socialLinks": [
{
"icon": "github",
"link": "https://github.com/jguddas"
},
{
"icon": "linkedin",
"link": "https://www.linkedin.com/in/jguddas"
}
]
}
]

View File

@@ -7,51 +7,80 @@ interface BackdropProps {
}
const Backdrop = ({ src, color = 'red', backdropString }: BackdropProps): JSX.Element => {
const id = React.useId();
return (
<>
<defs xmlns="http://www.w3.org/2000/svg">
<pattern
id="pattern"
id={`pattern-${id}`}
width=".1"
height=".1"
patternUnits="userSpaceOnUse"
patternTransform="rotate(45 50 50)"
>
<line stroke={color} strokeWidth={0.1} y2={1} />
<line stroke={color} strokeWidth={0.1} y2={1} />
<line
stroke={color}
strokeWidth={0.1}
y2={1}
/>
<line
stroke={color}
strokeWidth={0.1}
y2={1}
/>
</pattern>
</defs>
<mask id="svg-preview-backdrop-mask-outline" maskUnits="userSpaceOnUse">
<g stroke="#fff" dangerouslySetInnerHTML={{ __html: backdropString }} />
<g dangerouslySetInnerHTML={{ __html: src }} strokeWidth={2.05} />
<mask
id={`svg-preview-backdrop-mask-${id}`}
maskUnits="userSpaceOnUse"
>
<g
stroke="#fff"
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
<g dangerouslySetInnerHTML={{ __html: src }} />
</mask>
<mask id="svg-preview-backdrop-mask-fill" maskUnits="userSpaceOnUse">
<g stroke="#fff" dangerouslySetInnerHTML={{ __html: backdropString }} />
<g dangerouslySetInnerHTML={{ __html: src }} strokeWidth={2.05} />
<g strokeWidth={1.75} dangerouslySetInnerHTML={{ __html: backdropString }} />
<mask
id={`svg-preview-backdrop-mask-outline-${id}`}
maskUnits="userSpaceOnUse"
>
<rect
x="0"
y="0"
width="24"
height="24"
fill="#fff"
stroke="none"
/>
<g
strokeWidth={1.75}
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
</mask>
<g strokeWidth={2.25} stroke="url(#pattern)" mask={'url(#svg-preview-backdrop-mask-outline)'}>
<rect x="0" y="0" width="24" height="24" fill="url(#pattern)" opacity={0.5} stroke="none" />
<g mask={`url(#svg-preview-backdrop-mask-${id})`}>
<rect
x="0"
y="0"
width="24"
height="24"
opacity={0.5}
fill={`url(#pattern-${id})`}
stroke="none"
/>
<g
stroke={color}
strokeWidth={2.25}
opacity={0.75}
dangerouslySetInnerHTML={{ __html: src }}
/>
<g
stroke={color}
strokeWidth={2.25}
opacity={0.75}
mask={`url(#svg-preview-backdrop-mask-outline-${id})`}
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
</g>
<rect
x="0"
y="0"
width="24"
height="24"
fill="url(#pattern)"
stroke="none"
mask={'url(#svg-preview-backdrop-mask-fill)'}
/>
<rect
x="0"
y="0"
width="24"
height="24"
fill={color}
opacity={0.5}
stroke="none"
mask={'url(#svg-preview-backdrop-mask-fill)'}
/>
</>
);
};

View File

@@ -10,7 +10,11 @@ const Grid = ({
strokeWidth: number;
radius: number;
} & PathProps<'stroke', 'strokeWidth'>) => (
<g className="svg-preview-grid-group" strokeLinecap="butt" {...props}>
<g
className="svg-preview-grid-group"
strokeLinecap="butt"
{...props}
>
<rect
className="svg-preview-grid-rect"
width={24 - props.strokeWidth}
@@ -21,11 +25,29 @@ const Grid = ({
fill={fill}
/>
<path
strokeDasharray={'0 0.1 ' + '0.1 0.15 '.repeat(11) + '0 0.15'}
strokeWidth={0.1}
d={
props.d ||
new Array(Math.floor(24 - 1))
.fill(null)
.flatMap((_, i) => [
.map((_, i) => i)
.filter((i) => i % 3 !== 2)
.flatMap((i) => [
`M${props.strokeWidth} ${i + 1}h${24 - props.strokeWidth * 2}`,
`M${i + 1} ${props.strokeWidth}v${24 - props.strokeWidth * 2}`,
])
.join('')
}
/>
<path
d={
props.d ||
new Array(Math.floor(24 - 1))
.fill(null)
.map((_, i) => i)
.filter((i) => i % 3 === 2)
.flatMap((i) => [
`M${props.strokeWidth} ${i + 1}h${24 - props.strokeWidth * 2}`,
`M${i + 1} ${props.strokeWidth}v${24 - props.strokeWidth * 2}`,
])
@@ -44,15 +66,21 @@ const Shadow = ({
paths: Path[];
} & PathProps<'stroke' | 'strokeWidth' | 'strokeOpacity', 'd'>) => {
const groupedPaths = Object.entries(
paths.reduce((groups, val) => {
const key = val.c.id;
groups[key] = [...(groups[key] || []), val];
return groups;
}, {} as Record<number, Path[]>)
paths.reduce(
(groups, val) => {
const key = val.c.id;
groups[key] = [...(groups[key] || []), val];
return groups;
},
{} as Record<number, Path[]>,
),
);
return (
<>
<g className="svg-preview-shadow-mask-group" {...props}>
<g
className="svg-preview-shadow-mask-group"
{...props}
>
{groupedPaths.map(([id, paths]) => (
<mask
id={`svg-preview-shadow-mask-${id}`}
@@ -61,7 +89,15 @@ const Shadow = ({
strokeWidth={props.strokeWidth}
stroke="#000"
>
<rect x={0} y={0} width={24} height={24} fill="#fff" stroke="none" rx={radius} />
<rect
x={0}
y={0}
width={24}
height={24}
fill="#fff"
stroke="none"
rx={radius}
/>
<path
d={paths
.flatMap(({ prev, next }) => [
@@ -74,9 +110,16 @@ const Shadow = ({
</mask>
))}
</g>
<g className="svg-preview-shadow-group" {...props}>
<g
className="svg-preview-shadow-group"
{...props}
>
{paths.map(({ d, c: { id } }, i) => (
<path key={i} mask={`url(#svg-preview-shadow-mask-${id})`} d={d} />
<path
key={i}
mask={`url(#svg-preview-shadow-mask-${id})`}
d={d}
/>
))}
<path
d={paths
@@ -94,9 +137,16 @@ const ColoredPath = ({
paths,
...props
}: { paths: Path[]; colors: string[] } & PathProps<never, 'd' | 'stroke'>) => (
<g className="svg-preview-colored-path-group" {...props}>
<g
className="svg-preview-colored-path-group"
{...props}
>
{paths.map(({ d, c }, i) => (
<path key={i} d={d} stroke={colors[(c.name === 'path' ? i : c.id) % colors.length]} />
<path
key={i}
d={d}
stroke={colors[(c.name === 'path' ? i : c.id) % colors.length]}
/>
))}
</g>
);
@@ -138,7 +188,15 @@ const ControlPath = ({
key={i}
maskUnits="userSpaceOnUse"
>
<rect x="0" y="0" width="24" height="24" fill="#fff" stroke="none" rx={radius} />
<rect
x="0"
y="0"
width="24"
height="24"
fill="#fff"
stroke="none"
rx={radius}
/>
<path d={`M${prev.x} ${prev.y}h.01`} />
<path d={`M${next.x} ${next.y}h.01`} />
</mask>
@@ -146,7 +204,10 @@ const ControlPath = ({
);
})}
</g>
<g className="svg-preview-control-path-group" {...props}>
<g
className="svg-preview-control-path-group"
{...props}
>
{controlPaths.map(({ d, showMarker }, i) => (
<path
key={i}
@@ -155,18 +216,33 @@ const ControlPath = ({
/>
))}
</g>
<g className="svg-preview-control-path-marker-group" {...props}>
<g
className="svg-preview-control-path-marker-group"
{...props}
>
<path
d={controlPaths
.flatMap(({ prev, next, showMarker }) =>
showMarker ? [`M${prev.x} ${prev.y}h.01`, `M${next.x} ${next.y}h.01`] : []
showMarker ? [`M${prev.x} ${prev.y}h.01`, `M${next.x} ${next.y}h.01`] : [],
)
.join('')}
/>
{controlPaths.map(({ d, prev, next, startMarker, endMarker }, i) => (
<React.Fragment key={i}>
{startMarker && <circle cx={prev.x} cy={prev.y} r={pointSize / 2} />}
{endMarker && <circle cx={next.x} cy={next.y} r={pointSize / 2} />}
{startMarker && (
<circle
cx={prev.x}
cy={prev.y}
r={pointSize / 2}
/>
)}
{endMarker && (
<circle
cx={next.x}
cy={next.y}
r={pointSize / 2}
/>
)}
</React.Fragment>
))}
</g>
@@ -182,15 +258,16 @@ const Radii = ({
any
>) => {
return (
<g className="svg-preview-radii-group" {...props}>
<g
className="svg-preview-radii-group"
{...props}
>
{paths.map(
({ c, prev, next, circle }, i) =>
circle && (
<React.Fragment key={i}>
{c.name !== "circle" && (
<path
d={`M${prev.x} ${prev.y} ${circle.x} ${circle.y} ${next.x} ${next.y}`}
/>
{c.name !== 'circle' && (
<path d={`M${prev.x} ${prev.y} ${circle.x} ${circle.y} ${next.x} ${next.y}`} />
)}
<circle
cy={circle.y}
@@ -200,7 +277,7 @@ const Radii = ({
stroke={
(Math.round(circle.x * 100) / 100) % 1 !== 0 ||
(Math.round(circle.y * 100) / 100) % 1 !== 0
? "red"
? 'red'
: undefined
}
/>
@@ -208,11 +285,7 @@ const Radii = ({
cy={circle.y}
cx={circle.x}
r={circle.r}
stroke={
(Math.round(circle.r * 1000) / 1000) % 1 !== 0
? "red"
: undefined
}
stroke={(Math.round(circle.r * 1000) / 1000) % 1 !== 0 ? 'red' : undefined}
/>
</React.Fragment>
),
@@ -228,15 +301,29 @@ const Handles = ({
'strokeWidth' | 'stroke' | 'strokeDasharray' | 'strokeOpacity',
any
>) => {
console.log(paths);
return (
<g className="svg-preview-handles-group" {...props}>
<g
className="svg-preview-handles-group"
{...props}
>
{paths.map(({ c, prev, next, cp1, cp2 }) => (
<>
{cp1 && <path d={`M${prev.x} ${prev.y} ${cp1.x} ${cp1.y}`} />}
{cp1 && <circle cy={cp1.y} cx={cp1.x} r={0.25} />}
{cp1 && (
<circle
cy={cp1.y}
cx={cp1.x}
r={0.25}
/>
)}
{cp2 && <path d={`M${next.x} ${next.y} ${cp2.x} ${cp2.y}`} />}
{cp2 && <circle cy={cp2.y} cx={cp2.x} r={0.25} />}
{cp2 && (
<circle
cy={cp2.y}
cx={cp2.x}
r={0.25}
/>
)}
</>
))}
</g>
@@ -280,9 +367,27 @@ const SvgPreview = React.forwardRef<
{...props}
>
<style>{darkModeCss}</style>
{showGrid && <Grid strokeWidth={0.1} stroke="#777" strokeOpacity={0.3} radius={1} />}
<Shadow paths={paths} strokeWidth={4} stroke="#777" radius={1} strokeOpacity={0.15} />
<Handles paths={paths} strokeWidth={0.12} stroke="#777" strokeOpacity={0.6} />
{showGrid && (
<Grid
strokeWidth={0.1}
stroke="#777"
strokeOpacity={0.3}
radius={1}
/>
)}
<Shadow
paths={paths}
strokeWidth={4}
stroke="#777"
radius={1}
strokeOpacity={0.15}
/>
<Handles
paths={paths}
strokeWidth={0.12}
stroke="#777"
strokeOpacity={0.6}
/>
<ColoredPath
paths={paths}
colors={[
@@ -307,8 +412,19 @@ const SvgPreview = React.forwardRef<
stroke="#777"
strokeOpacity={0.3}
/>
<ControlPath radius={1} paths={paths} pointSize={1} stroke="#fff" strokeWidth={0.125} />
<Handles paths={paths} strokeWidth={0.12} stroke="#FFF" strokeOpacity={0.3} />
<ControlPath
radius={1}
paths={paths}
pointSize={1}
stroke="#fff"
strokeWidth={0.125}
/>
<Handles
paths={paths}
strokeWidth={0.12}
stroke="#FFF"
strokeOpacity={0.3}
/>
{children}
</svg>
);

View File

@@ -16,7 +16,7 @@ export type Path = {
export type PathProps<
RequiredProps extends keyof SVGProps<SVGPathElement | SVGRectElement | SVGCircleElement>,
NeverProps extends keyof SVGProps<SVGPathElement | SVGRectElement | SVGCircleElement>
NeverProps extends keyof SVGProps<SVGPathElement | SVGRectElement | SVGCircleElement>,
> = Required<Pick<React.SVGProps<SVGElement & SVGRectElement & SVGCircleElement>, RequiredProps>> &
Omit<
React.SVGProps<SVGPathElement & SVGRectElement & SVGCircleElement>,

View File

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

View File

@@ -1,28 +1,34 @@
import fs from "fs";
import path from "path";
import {Category, IconEntity} from "../theme/types";
import fs from 'fs';
import path from 'path';
import { Category, IconEntity } from '../theme/types';
const directory = path.join(process.cwd(), "../categories");
const directory = path.join(process.cwd(), '../categories');
export function getAllCategoryFiles(): Category[] {
const fileNames = fs.readdirSync(directory).filter((file) => path.extname(file) === '.json');
return fileNames.map((fileName) => {
const name = path.basename(fileName, '.json')
const fileContent = fs.readFileSync(path.join(directory, fileName), 'utf8')
const name = path.basename(fileName, '.json');
const fileContent = fs.readFileSync(path.join(directory, fileName), 'utf8');
const parsedFileContent = JSON.parse(fileContent)
const parsedFileContent = JSON.parse(fileContent);
return {
name,
title: parsedFileContent.title,
}
};
});
}
export function mapCategoryIconCount(categories: Category[], icons: { categories: IconEntity['categories'] }[]) {
export function mapCategoryIconCount(
categories: Category[],
icons: { categories: IconEntity['categories'] }[],
) {
return categories.map((category) => ({
...category,
iconCount: icons.reduce((acc, curr) => (curr.categories.includes(category.name) ? ++acc : acc), 0)
}))
iconCount: icons.reduce(
(acc, curr) => (curr.categories.includes(category.name) ? ++acc : acc),
0,
),
}));
}

View File

@@ -1,33 +1,33 @@
import {
bundledLanguages,
type ThemeRegistration
} from 'shikiji'
import {
getHighlighter,
} from 'shikiji'
import { bundledLanguages, type ThemeRegistration } from 'shikiji';
import { getHighlighter } from 'shikiji';
type CodeExampleType = {
title: string,
language: string,
code: string,
}[]
title: string;
language: string;
code: string;
}[];
const getIconCodes = (): CodeExampleType => {
return [
{
language: 'html',
title: 'HTML',
code: `<i data-lucide="Name"></i>`
language: 'js',
title: 'Vanilla',
code: `\
import { createIcons, icons } from 'lucide';
createIcons({ icons });
document.body.append('<i data-lucide="$Name"></i>');\
`,
},
{
language: 'tsx',
title: 'React',
code: `import { PascalCase } from 'lucide-react';
code: `import { $PascalCase } from 'lucide-react';
const App = () => {
return (
<PascalCase />
<$PascalCase />
);
};
@@ -38,11 +38,11 @@ export default App;
language: 'vue',
title: 'Vue',
code: `<script setup>
import { PascalCase } from 'lucide-vue-next';
import { $PascalCase } from 'lucide-vue-next';
</script>
<template>
<PascalCase />
<$PascalCase />
</template>
`,
},
@@ -50,20 +50,20 @@ export default App;
language: 'svelte',
title: 'Svelte',
code: `<script>
import { PascalCase } from 'lucide-svelte';
import { $PascalCase } from 'lucide-svelte';
</script>
<PascalCase />
<$PascalCase />
`,
},
{
language: 'tsx',
title: 'Preact',
code: `import { PascalCase } from 'lucide-preact';
code: `import { $PascalCase } from 'lucide-preact';
const App = () => {
return (
<PascalCase />
<$PascalCase />
);
};
@@ -73,11 +73,11 @@ export default App;
{
language: 'tsx',
title: 'Solid',
code: `import { PascalCase } from 'lucide-solid';
code: `import { $PascalCase } from 'lucide-solid';
const App = () => {
return (
<PascalCase />
<$PascalCase />
);
};
@@ -88,16 +88,16 @@ export default App;
language: 'tsx',
title: 'Angular',
code: `// app.module.ts
import { LucideAngularModule, PascalCase } from 'lucide-angular';
import { LucideAngularModule, $PascalCase } from 'lucide-angular';
@NgModule({
imports: [
LucideAngularModule.pick({ PascalCase })
LucideAngularModule.pick({ $PascalCase })
],
})
// app.component.html
<lucide-icon name="Name"></lucide-icon>
<lucide-icon name="$Name"></lucide-icon>
`,
},
{
@@ -107,38 +107,39 @@ import { LucideAngularModule, PascalCase } from 'lucide-angular';
@import ('~lucide-static/font/Lucide.css');
</style>
<div class="icon-Name"></div>
<div class="icon-$Name"></div>
`,
}
]
}
},
];
};
export type ThemeOptions =
| ThemeRegistration
| { light: ThemeRegistration; dark: ThemeRegistration }
| { light: ThemeRegistration; dark: ThemeRegistration };
const highLightCode = async (code: string, lang: string, active?: boolean) => {
const highlighter = await getHighlighter({
themes: ['github-light', 'github-dark'],
langs: Object.keys(bundledLanguages)
})
langs: Object.keys(bundledLanguages),
});
const highlightedCode = highlighter.codeToHtml(code, {
lang,
themes: {
light: 'github-light',
dark: 'github-dark'
},
defaultColor: false
}).replace('shiki-themes', 'shiki-themes vp-code')
const highlightedCode = highlighter
.codeToHtml(code, {
lang,
themes: {
light: 'github-light',
dark: 'github-dark',
},
defaultColor: false,
})
.replace('shiki-themes', 'shiki-themes vp-code');
return `<div class="language-${lang} ${active ? 'active' : ''}">
<button title="Copy Code" class="copy"></button>
<span class="lang">${lang}</span>
${highlightedCode}
</div>`
}
</div>`;
};
export default async function createCodeExamples() {
const codes = getIconCodes();
@@ -153,7 +154,7 @@ export default async function createCodeExamples() {
language: language,
code: codeString,
};
})
});
return Promise.all(codeExamplePromises);
}

View File

@@ -0,0 +1,161 @@
import { bundledLanguages, type ThemeRegistration } from 'shikiji';
import { getHighlighter } from 'shikiji';
type CodeExampleType = {
title: string;
language: string;
code: string;
}[];
const getIconCodes = (): CodeExampleType => {
return [
{
language: 'js',
title: 'Vanilla',
code: `\
import { createIcons, icons } from 'lucide';
import { $CamelCase } from '@lucide/lab';
createIcons({
icons: {
$CamelCase
}
});
document.body.append('<i data-lucide="$Name"></i>');\
`,
},
{
language: 'tsx',
title: 'React',
code: `import { Icon } from 'lucide-react';
import { $CamelCase } from '@lucide/lab';
const App = () => {
return (
<Icon iconNode={$CamelCase} />
);
};
export default App;
`,
},
{
language: 'vue',
title: 'Vue',
code: `<script setup>
import { Icon } from 'lucide-vue-next';
import { $CamelCase } from '@lucide/lab';
</script>
<template>
<Icon :iconNode="burger" />
</template>
`,
},
{
language: 'svelte',
title: 'Svelte',
code: `<script>
import { Icon } from 'lucide-svelte';
import { $CamelCase } from '@lucide/lab';
</script>
<Icon iconNode={burger} />
`,
},
{
language: 'tsx',
title: 'Preact',
code: `import { Icon } from 'lucide-preact';
import { $CamelCase } from '@lucide/lab';
const App = () => {
return (
<Icon iconNode={$CamelCase} />
);
};
export default App;
`,
},
{
language: 'tsx',
title: 'Solid',
code: `import { Icon } from 'lucide-solid';
import { $CamelCase } from '@lucide/lab';
const App = () => {
return (
<Icon iconNode={$CamelCase} />
);
};
export default App;
`,
},
{
language: 'tsx',
title: 'Angular',
code: `// app.module.ts
import { LucideAngularModule } from 'lucide-angular';
import { $CamelCase } from '@lucide/lab';
@NgModule({
imports: [
LucideAngularModule.pick({ $CamelCase })
],
})
// app.component.html
<lucide-icon name="$CamelCase"></lucide-icon>
`,
},
];
};
export type ThemeOptions =
| ThemeRegistration
| { light: ThemeRegistration; dark: ThemeRegistration };
const highLightCode = async (code: string, lang: string, active?: boolean) => {
const highlighter = await getHighlighter({
themes: ['github-light', 'github-dark'],
langs: Object.keys(bundledLanguages),
});
const highlightedCode = highlighter
.codeToHtml(code, {
lang,
themes: {
light: 'github-light',
dark: 'github-dark',
},
defaultColor: false,
})
.replace('shiki-themes', 'shiki-themes vp-code');
return `<div class="language-${lang} ${active ? 'active' : ''}">
<button title="Copy Code" class="copy"></button>
<span class="lang">${lang}</span>
${highlightedCode}
</div>`;
};
export default async function createCodeExamples() {
const codes = getIconCodes();
const codeExamplePromises = codes.map(async ({ title, language, code }, index) => {
const isFirst = index === 0;
const codeString = await highLightCode(code, language, isFirst);
return {
title,
language: language,
code: codeString,
};
});
return Promise.all(codeExamplePromises);
}

View File

@@ -0,0 +1,32 @@
import { bundledLanguages, type ThemeRegistration } from 'shikiji';
import { getHighlighter } from 'shikiji';
export type ThemeOptions =
| ThemeRegistration
| { light: ThemeRegistration; dark: ThemeRegistration };
const highLightCode = async (code: string, lang: string, active?: boolean) => {
const highlighter = await getHighlighter({
themes: ['github-light', 'github-dark'],
langs: Object.keys(bundledLanguages),
});
const highlightedCode = highlighter
.codeToHtml(code, {
lang,
themes: {
light: 'github-light',
dark: 'github-dark',
},
defaultColor: false,
})
.replace('shiki-themes', 'shiki-themes vp-code');
return `<div class="language-${lang} ${active ? 'active' : ''}">
<button title="Copy Code" class="copy"></button>
<span class="lang">${lang}</span>
${highlightedCode}
</div>`;
};
export default highLightCode;

View File

@@ -0,0 +1,5 @@
export type CodeExampleType = {
title: string;
language: string;
code: string;
}[];

View File

@@ -1,38 +1,36 @@
import { promises as fs, constants } from 'fs';
import path from 'path';
import yaml from 'js-yaml'
import { PackageItem } from '../theme/types';
const fileExist = (filePath) => fs.access(filePath, constants.F_OK).then(() => true).catch(() => false)
const fileExist = (filePath) =>
fs
.access(filePath, constants.F_OK)
.then(() => true)
.catch(() => false);
const fetchPackages = async (): Promise<PackageItem[]> => {
const docsDir = path.resolve(process.cwd(), '../packages');
const fileNames = await (await fs.readdir(docsDir)).map(filename => ({filename, directory: docsDir}))
const fileNames = await (
await fs.readdir(docsDir)
).map((filename) => ({ filename, directory: docsDir }));
const packageJsons = await Promise.all(fileNames.map( async ({filename, directory}) => {
const filePath = path.resolve(directory, filename)
const fileStat = await fs.lstat(filePath);
const packageJsons = await Promise.all(
fileNames.map(async ({ filename, directory }) => {
const filePath = path.resolve(directory, filename);
const fileStat = await fs.lstat(filePath);
if(!fileStat.isDirectory()) return null;
if (!fileStat.isDirectory()) return null;
const jsonFilePath = path.resolve(filePath, 'package.json')
if (await fileExist(jsonFilePath)) {
return JSON.parse(
await fs.readFile(jsonFilePath, 'utf-8')
)
}
const jsonFilePath = path.resolve(filePath, 'package.json');
if (await fileExist(jsonFilePath)) {
return JSON.parse(await fs.readFile(jsonFilePath, 'utf-8'));
}
const ymlFilePath = path.resolve(filePath, 'pubspec.yaml')
if(await fileExist(ymlFilePath)) {
return yaml.load(
await fs.readFile(ymlFilePath, 'utf-8')
);
}
return null;
}),
);
return null
}))
return packageJsons
}
return packageJsons;
};
export default fetchPackages;

View File

@@ -1,17 +1,15 @@
export type IconContent = [icon: string, src:string];
export type IconContent = [icon: string, src: string];
async function generateZip(icons: IconContent[]) {
const JSZip = (await import('jszip')).default
const JSZip = (await import('jszip')).default;
const zip = new JSZip();
const addingZipPromises = icons.map(([name, src]) =>
zip.file(`${name}.svg`, src),
);
const addingZipPromises = icons.map(([name, src]) => zip.file(`${name}.svg`, src));
await Promise.all(addingZipPromises)
await Promise.all(addingZipPromises);
return zip.generateAsync({ type: 'blob' });
}
export default generateZip
export default generateZip;

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