Compare commits

...

390 Commits

Author SHA1 Message Date
Daniel Bayley
6916aebee4 Add generic shapes icon (#1239)
* Add generic `shapes` icon

* Update icons/shapes.svg

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

---------

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

Felt to aggressive.

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

* Add `refresh-ccw-dot` icon

* Add `circle-dot-dashed` icon

* Add `circle-dashed` icon

* Improve `circle-dot` metadata

---------

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

* Add `presentation-screen` icon

* Add `presentation` (whiteboard) icon

* Consolidate `presentation` icons

* Refine `presentation` icon

* Update icons/projector.svg

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

---------

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

* Add og image

* Fix links

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

* Add `search-code` icon

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

* Add `search-check` (complete) icon

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

* Refine `search-x` icon

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

* Add `bar-chart-big` alternate icon

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

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

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

* Update network.svg

* Update network.svg

* Update network.svg

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

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

This reverts commit 57cba6ae0e.

* Add `goal` icon

* Update icons/goal.svg

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

* Update icons/goal.svg

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

---------

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

* Update icons/key-2.svg

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

* Refine `key` alternate icon

* Add `key` variant

* Refine `key` alternate icons

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

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

* Improve metadata

---------

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

* Update icons/circle-off.svg

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

---------

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

* Add `versions-files` icon

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

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

* Update icons/square-slash.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-06-04 22:10:29 +02:00
Eric Fennis
606706e8e0 Fix gh-api for strokewidths 2023-06-04 17:52:03 +02:00
Daniel Bayley
ffc03ea1f6 Add pocket-knife icon (#1140)
* Add `pocket-knife` icon

* Update icons/pocket-knife.svg

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

* Update icons/pocket-knife.svg

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

* Refine `pocket-knife` icon

* Preview alternate `pocket knife` icon

* Refine `pocket-knife` icon

* Rename `pocket-knife-2` to `pocket-knife`

* Update icons/pocket-knife.svg

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

* Improve `pocket-knife` twizzle/swoosh

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Karsa <contact@karsa.org>
2023-06-04 17:23:01 +02:00
Daniel Bayley
b2e685262b Fix list-end icon (#1325) 2023-06-04 17:19:15 +02:00
Eric Fennis
5bfc736b61 New site! 🚀 (#1275)
* add new docs

* Add styling

* Move files

* Add active selection

* improve grid overview

* improve grid

* Add icon detail page

* Minor changes

* Fix icon preview

* optimize home card

* Add code examples

* Add gitignore

* correct temp directory

* Add first cusotmizer

* Add customizer

* fix images paths

* Add reset function

* Adjust category rendering

* Add packages section

* Some fixes

* Fix vercel build icon

* Small code adjustment

* move file

* Try this

* Add code groups with syntax highlighting

* Add search icon

* Cleanup

* update lockfile

* turnoff 404

* remove docs/iconMetaData.ts

* fix build

* Fix build 2

* cleanup

* Add icon customizer

* Fix build

* Add steps

* Add Button menu

* A lot off fixes!

* cleanup

* Fix build

* Css fixes

* Override menu icon

* try this to improve preformance

* minor improvements

* add comment

* add readme

* Add title

* minor fixes

* Fixes sliders + removes random backticks from index

* Added package list base, still WIP

* Added Guide+Source buttons to package list items

* Responsive support for XS screens

* Map categories count

* Adjust tooltip hover position

* Add see in action icon

* Add download options

* Aligns category list items to baseline and decreases category count weight

* Fixes event target error for categorylistitems

* Added icon release metadata builder

* Adds version badges to hero + icon detail overlay

* Added contributors.
Added Copy Angular.
Added release info to icon page.

* Centres contributor tooltip

* Fixed stroke step + added reset button

* Extracted reset button as a separate component for reusability

* Makes HomeIconCustomizerIcons less dense

* Fixes Button menu

* adjust versions and contributors styling on detail page

* Fix build?

* Fix build 2?

* Fix build 3

* Fix build 4

* Fix build 5?

* Add latest gh-icon changes

* Add comment

* Try fetch tags to retrieve release data

* try fetch all tags

* Add related icons

* Add stikcy search bar

* Add no results components

* Try to fix animation

* Try optimizing for categories

* Hide buggy animated icon

* minor fixes

* Add footer

* Add contributute link in footer

* Add copy name

* Add 100% preview icons

* remove site directory

* clean up

* Add redirects

* Fix build?

* fix redirect?

* minor improvements

* Fix icons preview on mobile

* Small preformance improvement

* Dark mode fixes for package icons

* Sort related icons by similarity + somewhat better name similarity matching

* Replace icon design guide images with uniform SVGs

* update lockfile

* Adds git clone to manually fetch the main repository for creating release metadata

* Remove initial v0.0.0 from release metadata

* Add extra CTA to no results behaviour

* Remove tags, as they are too overused

* Revert "Remove tags, as they are too overused"

This reverts commit 909b7563c0.

* Checkout icons from main

* Add absoluteStrokeWidth switch

* Add absolute strokewidth to home customizer

* Add absolute strokewidth to copy code button

* remove unused import

* compare build time

* improve build speed

* Try new release meta data script

* add fetch tags

* try with branch and remote

* try with url

* try without ssh

* Fix fetch tags in build file

* Cleanup

* Fix fallback

* improve release data

* delete relatedIcons.json, because it should be gitignored

* Add icon details

* Fix import

* minor fixes

* Try running script parallel

* Revert icon details

* include aliases in  release meta data

* Final fixes

* Final fixes 2

* minor code adjustment

* Fix build

* test

* Revert concurrent build flow

* switch back to concurrent build strategy

* revert icon changes

* update package.json

* update package.json

* dedube packages

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-06-04 16:59:38 +02:00
Karsa
2ebf99f591 Restores removed aliases (#1324)
* Restores removed aliases.

* Makes sure not to remove aliases next time.
2023-06-01 17:58:36 +02:00
Jakob Guddas
7a17a2f343 feat: update contributors on release (#1218)
* feat: add contributors on release

* fix: added contributors to icon schema

* fix: added missing dependencies

* feat: changed lost contributor handling

* fix: improved git log arguments

* Add all previous contributors

* Reordered icon JSON attributes

* Merged main and updated contributors

* fix: resolved contributor resolution issue

* chore: added previous contributors

* Added commits with odd e-mails manually

* Added latest icons + removed github workflow

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-06-01 12:17:23 +02:00
Daniel Bayley
4b5d343791 Add squirrel icon (#1229)
* Add `squirrel` icon

* Refine `squirrel` icon

* Refine `rat` icon

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-01 09:25:52 +02:00
Daniel Bayley
b19b01d323 Add text-quote icon (#1230)
* Add `text-quote` icon

* Update icons/text-quote.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-01 09:23:58 +02:00
Daniel Bayley
d2dc5bf75f Add ampersand icon (#1264)
* Add `ampersand` icon

* Add `ampersands` icon

* Refine `ampersand` icon

* Refine `ampersand` icons

* Update icons/ampersand.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-06-01 09:14:58 +02:00
Karsa
9b93200567 Increases mouse in size as per #1192 (#1291) 2023-05-31 19:30:45 +02:00
locness3
a878596572 Add a distinct React Native logo (#1139)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-31 19:29:41 +02:00
Jasper Zonneveld
9d50c05937 docs: add nuxt-lucide-icons package (#1313) 2023-05-31 19:27:45 +02:00
Daniel Bayley
6196c261d3 Add spell-check icons (#1216)
* Add `spell-check` icon

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

* Add `spell-check` alternate icon

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

* Improve `spell-check` icons metadata

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-05-30 22:15:26 +02:00
Daniel Bayley
85cec0dea1 Refine [rotate/refresh]-*/history icons (#1176)
* Refine `rotate-cw` icon

* Refine `rotate-cw` icon

* Refine `rotate-ccw` icon

* Refine `history` icon

* Refine `refresh-cw` icon

* Refine `refresh-ccw` icon

* Add `refresh-cw-off` icon

* Update icons/history.svg

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

* Update icons/refresh-ccw.svg

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

* Refine `history` icon

* Refine `refresh-cww` icon

* Update history.svg

* Optimize refresh-ccw.svg

* Optimize refresh-cw-off.svg

* Optimize refresh-cw.svg

* Optimize rotate-ccw.svg

* Optimize rotate-cw.svg

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Karsa <contact@karsa.org>
2023-05-30 22:13:03 +02:00
Daniel Bayley
07039b7619 Add radar icon (#1152)
* Add `radar` icon

* Fix `radar` optimisation

* Update icons/radar.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-30 21:57:35 +02:00
Daniel Bayley
cf05bd766f Add missing playing cards suit icons (#1018)
* Add `spade` (missing playing card suit) icon

* Add `club` (missing playing card suit) icon

* Improve `heart` and `diamond` metadata

* Update spade.svg

* Optimize club.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-30 21:56:17 +02:00
Daniel Bayley
f05855d1d1 Add spray-can icon (#1277)
* Add `spray-can` icon

* Refine `spray-can` icon
2023-05-30 21:49:20 +02:00
Daniel Bayley
6f39d3743a Improve disc icons metadata/add alternate CD icon (#1307)
* Optimise `disc` alternate icon

* Improve `disc` icons metadata

* Add `disc` alternate icon
2023-05-30 21:48:29 +02:00
Jonas Höbenreich
7ed206af4a Add alternative arrow icons (#1227)
* add move-left icon

* add move-right icon

* add move-down-left icon

* add move-down-right icon

* add move-down icon

* add move-up-right icon

* add move-up-left icon

* add move-up icon

* fix formatting
2023-05-30 21:47:04 +02:00
Daniel Bayley
95daa7c313 Add pilcrow-square icon (#1311)
* Add `pilcrow-square` icon

* Improve `pilcrow` metadata
2023-05-30 21:00:15 +02:00
Karsa
17ecb92946 [Packages][Lucide] Switch to data-lucide (#1169)
* [packages][lucide] Switch to the HTML attribute data-lucide instead of icon-name

* fix tests

* Update lucide.ts

Add BC for `icon-name`.

* Update packages/lucide/src/lucide.ts

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

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-30 20:42:41 +02:00
Daniel Bayley
9ef9921f04 Add scatter-chart icon (#1165)
* Add `scatter-chart` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-29 13:24:42 +02:00
Jesús Ferretti
ac08bb92c1 fix(docs): fix typos and improve docs in Comparison (#1309)
* fix(docs): fix typos and improve docs in Comparison

* Update docs/comparison.md
2023-05-28 19:38:01 +02:00
Karsa
53109037ec Increases ticket in size as per #1192 (#1292) 2023-05-28 12:17:43 +02:00
Daniel Bayley
66de90d63e Optimise monitor icons/add [monitor-]play/dot/check icons (#1282)
* Optimise `monitor` icons

* Add `monitor-play` icon

* Add `monitor-check` icon

* Add `monitor-dot` icon

* Added monitor-x, monitor-stop & monitor-pause

* Update monitor-pause.json

* Update icons/monitor-play.svg

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

* Decrease monitor-x x size.

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-05-28 12:12:43 +02:00
Daniel Bayley
f3c7e44a3d Add [square-]pi/sigma icons (#1278)
* Add `pi-square` icon

* Add `sigma-square` icon
2023-05-28 11:57:00 +02:00
Jakob Guddas
3823993c39 Optimized umbrella (#1295) 2023-05-28 11:49:28 +02:00
Daniel Bayley
36c53f956a Add play-square icon (#1283)
* Improve `play` icon metadata

* Add `play-square` icon

* Update play-square.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-28 11:48:32 +02:00
Eric Fennis
58c652908a Add strokeWidth type for lucide-vue-next (#1246) 2023-05-28 11:46:23 +02:00
Karsa
f4d887339e Adds ferris-wheel and roller-coaster (#1214)
* Adds ferris-wheel and roller-coaster

* Shorten roller-coaster

* Update roller-coaster.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-05-24 12:14:11 +02:00
Jakob Guddas
bde11234ea Fix diamond (#1294)
* Fix `diamond`

* Update icons/diamond.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-19 09:52:38 +02:00
Neutron
3449097f77 Add sparkle icon (#1220)
Co-authored-by: Karsa <contact@karsa.org>
2023-05-17 21:32:39 +02:00
Daniel Bayley
aec41eae39 Fix/optimise life-buoy icon (#1279)
* Fix/optimise `life-buoy` icon

* Update icons/life-buoy.json

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

* Update icons/life-buoy.json

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

* Update icons/life-buoy.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-17 17:45:18 +02:00
Daniel Bayley
3da3cbc63f Improve qr-code icon metadata (#1281) 2023-05-17 10:48:01 +02:00
Karsa
3fc3122054 Adds various badge icons, rebases verified as badge-check (#1118)
* Adds various badge icons, rebases verified as badge-check

* Add some more tags

* Revert "fix: fixed github icon api route issue (#1117)"

This reverts commit 49bd49b843.

* manually revert merge

* manually optimize badge shape

* Update icons/circle-dollar-sign.svg

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

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-05-17 09:52:58 +02:00
Jakob Guddas
871de752e7 Optimized cloud-moon (#1260) 2023-05-11 09:18:24 +02:00
Daniel Bayley
25d7b55459 Add symbols (constant, variable etc…) icons (#1134)
* Add `variable` icon

* Add `constant` icon

* Add `pi` (constant) icon

* Update icons/pi.svg

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

* Refine `pi` icon

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-05-10 10:13:23 +02:00
Daniel Bayley
4d8a8091b6 Improve circle-dot (radio button) metadata (#1243) 2023-05-10 10:09:39 +02:00
Daniel Bayley
a17c1aafbd Improve sigma metadata (#1245) 2023-05-10 09:58:50 +02:00
Daniel Bayley
d1d6eec36e Improve triangle metadata (#1240) 2023-05-09 23:45:24 +02:00
Daniel Bayley
abec311bc9 Optimise/refine case-*/word/space icons (#1217)
* Optimise `case-*` icons

* Optimise `whole-word`/`space` icons

* Refine `whole-word`/`space` icons
2023-05-06 15:14:51 +02:00
Karsa
3df9be04a8 Renames stars to sparkles (#1221)
Co-authored-by: Karsa <karsa@karsa.org>
2023-05-06 15:12:21 +02:00
Jakob Guddas
016c9d1fac feat: added 100% preview with different stroke widths and in context with other icons (#1180)
* feat: added 100% preview with different stroke widths

* feat: added 100% preview with different stroke widths

* fix: fixed detail section issue

* fix: added lost detail section

* feat: added cohesion preview
2023-05-06 15:02:52 +02:00
Daniel Bayley
17f9509f71 Add/optimise layout-* alternate icons (#1184)
* Optimise `layout-template`

* Add `layout-grid` alternate icon

* Add `layout-template` alternate icon`

* Refine `layout-*` icons

* Refine `layout-*` icons

* Rename `layout-grid-2` to `layout-panel-left`

* Rename `layout-template-2` to `layout-panel-top`
2023-05-06 15:01:35 +02:00
Karsa
b6c7434e92 [lucide-angular] Adds support for ng@16.x (#1219)
Co-authored-by: Karsa <karsa@karsa.org>
2023-05-06 07:27:43 +02:00
Daniel Bayley
47aa3c2664 Optimiseat-sign icon (#1213)
* Optimise `at-sign` icon

* Refine `at-sign` icon

* Restore `at-sign` ascender
2023-05-05 14:14:23 +02:00
Karsa
e50b03f316 Adds leafy-green icon (#1168)
Co-authored-by: Karsa <karsa@karsa.org>
2023-05-05 13:27:35 +02:00
Karsa
0065b5952b Adds alternate user icons (#1116)
Co-authored-by: Karsa <karsa@karsa.org>
2023-05-05 09:32:23 +02:00
Daniel Bayley
b35b586eda Add [un]group icons (#1108)
* Add `group` icon

* Add `ungroup` icon
2023-05-05 09:31:56 +02:00
Jakob Guddas
8b57fab71b Increased size of orbit (#1195) 2023-05-05 09:31:03 +02:00
Daniel Bayley
badd34374d Add list-filter icon (#1185) 2023-05-05 08:51:35 +02:00
Daniel Bayley
902431199c Fix unplug metadata (#1212)
This broke the `pre-commit` hook again, because it was `merge`d after the `coding` category was removed.
2023-05-03 22:33:22 +02:00
Daniel Bayley
bdbb4834b0 Replace shuffle icon (#1162)
* Add `shuffle` alternate icon

* Improve `shuffle` metadata

* Replace `shuffle` icon

* Update icons/shuffle.svg

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

* Refine `shuffle` icon

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-03 17:24:45 +02:00
Daniel Bayley
07fc4da6fa Optimise/add scroll[-text] (script) icon (#1211)
* Optimise `scroll` icon

* Add `scroll-text` (script) icon
2023-05-03 17:21:14 +02:00
Daniel Bayley
e1815242cf Fix folder-git icons (#1128)
* Fix `folder-git*` icons

* Refine `folder-git` icon

* Update icons/folder-git-2.svg

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

* Update icons/folder-git.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-03 16:41:28 +02:00
Daniel Bayley
d104ad5c8a Add file-code-2 icon (#1058)
* Add `file-code-2` icon

* Update icons/file-code-2.svg

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

* Swap `file-code`/`-2` icons

* Update icons/file-code-2.json

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

* Improve `file-code` metadata

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2023-05-03 16:40:51 +02:00
Daniel Bayley
69989c5ae5 Optimize replace icons (#1107)
* Optimize `replace` icons

* Update replace.svg

* Update replace-all.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-03 16:16:17 +02:00
Daniel Bayley
9e996ef63c Add/refine [un]plug icons (#1035)
* Refine `plug-zap` icon

* Fix `plug` icon

* Add `unplug` icon

* Refine `plug-zap` alternate icon

* Update plug-zap-2.svg

* Update unplug.svg

* Update icons/plug.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-03 16:11:04 +02:00
Daniel Bayley
6ec9cc3dcf Add arrow-*-[to/from]-line icons (#1158)
* Add `arrow-right-to-line` (tab) icon

<kbd>tab</kbd>

* Add `arrow-left-to-line` icon

* Add `arrow-up-to-line` icon

* Add `arrow-down-to-line` (download) icon

* Add `arrow-up-from-line` icon

* Add `arrow-down-from-line` icon

* Add `arrow-left-from-line` icon

* Add `arrow-right-from-line` icon

* Extend `arrow-*-line`s

* Add `expand`/`collapse` metadata

Closes #980.

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-03 15:50:55 +02:00
Daniel Bayley
01fa96ced3 Add menu-square icon (#1181)
* Add `menu` alternate icon

* Rename `menu-2` to `menu-square`
2023-05-03 15:43:36 +02:00
Jakob Guddas
481b27cc49 feat: added radii helper to svg preview (#1183) 2023-05-03 15:42:46 +02:00
Daniel Bayley
c5df7e73c6 Add list-restart icon (#1053)
* Add `list-restart` icon

* Update icons/list-restart.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-03 15:40:49 +02:00
Daniel Bayley
428088436d Refine database-backup icon (#1051)
* Refine `database-backup` icon

* Refine `database-backup` icon

* Update icons/database-backup.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-03 15:40:00 +02:00
Daniel Bayley
eec2c97595 Add *-dot icons (#1042)
* Add `undo-dot` icon

* Add `redo-dot` icon

* Add `arrow-up-from-dot` icon

* Add `arrow-down-to-dot` icon

* Add `dot` icon
Update icons/dot.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-03 15:23:17 +02:00
Daniel Bayley
f0529b9ef7 Add combine icon (#1069)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-03 15:19:54 +02:00
Karsa
0c216b41c5 optimizes sun and moon icons (#1210)
Co-authored-by: Karsa <karsa@karsa.org>
2023-05-03 14:11:30 +02:00
Daniel Bayley
ac892e5476 Optimise info icon (#1209)
* Optimise `info` icon

Fixes #1206.

* Update icons/info.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-03 13:37:50 +02:00
Daniel Bayley
38f62a571c Improve screen/monitor/smartphone etc. icons metadata (#1202)
* Improve `screen-share` icons metadata

* Improve screen/`monitor`/`smartphone` icons metadata

* Improve `laptop` icons metadata
2023-05-03 08:01:29 +02:00
Daniel Bayley
507750d0a7 Optimise help-circle icon (#1207)
Fixes #1206.
2023-05-03 08:00:12 +02:00
Daniel Bayley
33a0ed9539 Improve corner-down-right metadata (#1178) 2023-05-02 20:53:25 +02:00
Daniel Bayley
37cb860ebe Add square-asterisk icon (#1179) 2023-05-02 20:47:11 +02:00
Daniel Bayley
bd74ac880e Refine lightbulb icons (#1197) 2023-05-02 20:28:02 +02:00
Karsa
e81b76f445 Adds computer hardware icons from #527 (#1170)
* Adds computer hardware icons from #527

* extend top line

* Added satellite

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-05-01 19:18:15 +02:00
Daniel Bayley
c50c0e435b Improve align-* metadata (#1193) 2023-05-01 19:00:31 +02:00
Daniel Bayley
afd2db296c Improve milestone metadata (#1194) 2023-05-01 18:59:57 +02:00
Daniel Bayley
175b2cd483 Add/rename braces/brackets/parenthesis icons and improve braces/json metadata (#1063)
* Add `square-brackets` icon

* Add `parentheses` icon

* Improve `curly-braces`/`json` metadata

* Refine `parentheses` icon

Match `path`s in #1134.

* Rename `square-brackets` to `brackets`

* Rename `curly-braces` to `braces`

* Update icons/parentheses.json

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-05-01 18:58:43 +02:00
Daniel Bayley
716c5baea0 Add radiation/biohazard icons (#1153)
* Add `radiation` icon

* Refine `radiation` icon

* Refine `radiation` icon

* Fix `radiation` corner radius

* Add `biohazard` icon

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-04-30 23:57:34 +02:00
Jakob Guddas
890474889a Simplified microscope (#1189) 2023-04-30 22:11:54 +02:00
Jakob Guddas
e596cd2bad Optimized parking-square-off.svg (#1182) 2023-04-30 22:07:29 +02:00
Quentin Sommer
d4641a4641 Fix children handling in lucide-react-native (#1177) 2023-04-30 22:06:49 +02:00
Karsa
3e3409cee2 Adds generic merge and split icons (#1167)
Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-04-30 21:44:15 +02:00
Daniel Bayley
477f2b2aff Improve heading[-16] metadata (#1173) 2023-04-29 11:24:35 +02:00
Jakob Guddas
000ff56278 Optimized and fixed plug-zap (#1120) 2023-04-29 11:08:03 +02:00
Daniel Bayley
7117220943 Add [un]fold icons (#1060)
* Add `fold-vertical` icon

* Add `unfold-vertical` icon

* Add `fold-horizontal` icon

* Add `unfold-horizontal` icon

* Update icons/fold-horizontal.svg

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

* Update icons/fold-vertical.svg

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

* Update icons/unfold-horizontal.svg

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

* Update icons/unfold-vertical.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-29 11:06:08 +02:00
Eric Fennis
f820da257d Create FUNDING.yml 2023-04-28 22:59:05 +02:00
Daniel Bayley
de629f0fcc Fix removal of sidebar.json (#1174)
Not sure what happened, but `sidebar.json` should have been deleted when replaced with
`panel-left.json` in #1003… This is currently breaking the `pre-commit` hook!
2023-04-28 21:04:02 +02:00
Daniel Bayley
8f7e9b3cde Rename text-selection to text-select (#1131)
This should have been called `text-select`, consistent with `box-select`…
2023-04-28 10:35:35 +02:00
Daniel Bayley
4e79f147cf Add ligature icon (#1160)
* Add `ligature` icon

* Refine `ligature` icon

* Fix missing serifs
2023-04-28 10:33:41 +02:00
Daniel Bayley
3482cd0949 Add rows icon (#1059)
* Add `rows` icon

* Improve `columns` metadata
2023-04-28 10:17:35 +02:00
Daniel Bayley
701f2a1a41 Add panel-* icons (#1003)
* Add `panel-bottom` icon

* Add `panel-bottom-open` icon

* Add `panel-bottom-close` icon

* Add `panel-bottom-inactive` icon

* Rename `sidebar` to `panel-left`

* Rename `sidebar-open` to `panel-left-open`

* Rename `sidebar-close` to `panel-left-close`

* Add `panel-left-inactive` icon

* Add `panel-right` icon

* Add `panel-right-open` icon

* Add `panel-right-close` icon

* Add `panel-right-inactive` icon

* Add `panel-top` icon

* Add `panel-top-open` icon

* Add `panel-top-close` icon

* Add `panel-top-inactive` icon

* Refine `panel-*-inactive` (dashed) icons

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-04-28 09:19:14 +02:00
Daniel Bayley
79f5c6e584 Refine gauge icon (#1159)
* Refine `gauge` icon

* Update icons/gauge.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-28 09:12:04 +02:00
Karsa
02fddd3aac [lucide-angular] Export aliases + fix global configuration issues (#1166)
* [lucide-angular] Exports injection token and provider

* [lucide-angular] Export aliases + fix global config issues

* Add aliases of aliases :)

* Update public-api.ts

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-04-28 06:26:30 +02:00
Daniel Bayley
7816ed88f6 Add bell-dot icon and refine bell-* icons (#1064)
* Add `bell-dot` icon

* Refine `bell` icon

* Refine `bell-ring` icon

* Refine `bell-plus` icon

* Refine `bell-minus` icon

* Refine `bell-off` icon
2023-04-27 23:03:48 +02:00
Jakob Guddas
9c2d57b0dc feat: backdrop improvements (#1138)
* fix: reduced z-fighting

* fix: fixed outline intensity issue

* feat: removed useless outline
2023-04-27 18:08:32 +02:00
Jakob Guddas
6d9a0c3d63 Optimized book-template (#1145) 2023-04-27 18:06:13 +02:00
Daniel Bayley
6f647c58bf Add slash/dot/equal/arrow-*-square icons and tags for git diff (#994)
* Add `tags` to `git diff`-like icons

* Add `square-dot` icon

* Add `square-slash` icon

* Add `square-equal` icon

* Add `arrow-left-square` icon

* Add `arrow-right-square` icon

* Add `arrow-up-square` icon

* Add `arrow-down-square` icon

* Update icons/arrow-right-square.json

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

* Update icons/plus-square.json

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

* Update icons/minus-square.json

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

* Update icons/square-equal.json

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

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-04-26 18:11:35 +02:00
Eric Fennis
41375d5b05 Fix site build 2023-04-26 16:46:15 +02:00
Daniel Bayley
11ce2b6ff3 Add generic window icons (#1045)
* Add generic `app-window` icon

* Update icons/app-window.svg

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

* Update icons/app-window.json

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-25 19:49:03 +02:00
Jakob Guddas
cc7881e759 Changed spline and scale-3d start and end to be circular (#1137)
* Changed `spline` start and end to be circular

* Update scale-3d.svg
2023-04-25 10:46:47 +02:00
Daniel Bayley
bf530d39d3 Add workflow icon (#1132)
* Add `workflow` icon

* Update icons/workflow.svg

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

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-04-25 10:36:52 +02:00
Daniel Bayley
71e8df6354 Add iteration icons (#997)
* Add `iteration-ccw` icon

* Add `iteration-cw` icon

* Refine `iteration-*` icons

---

Co-authored-by: Karsa <karsa@karsa.org>
2023-04-25 06:41:26 +02:00
Karsa
cafd2a838b [lucide-angular] Exports injection token and provider (#1155)
Co-authored-by: Karsa <karsa@karsa.org>
2023-04-25 06:39:01 +02:00
Daniel Bayley
e16f368502 Fix chevron-up metadata! (#1150) 2023-04-24 17:37:56 +02:00
Daniel Bayley
d38509a03d Add monitor-[up/down] icons (#1136)
* Add `monitor-up` icon

* Add `monitor-down` icon

* Update icons/monitor-up.json

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

* Fix `monitor-down` metadata

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-23 13:12:32 +02:00
Daniel Bayley
6550e22874 Improve metadata for keys, and modify arrow-big-* icons to include shift key (#1002)
* Improve metadata for keys

* Modify `arrow-big-up` (`shift` key)

* Modify `arrow-big-right` to match `arrow-big-up` (`shift` key) icon

* Modify `arrow-big-down` to match `arrow-big-up` (`shift` key) icon

* Modify `arrow-big-left` to match `arrow-big-up` (`shift` key) icon

* Add `arrow-big-up-dash` (`caps lock` key) icon

* Fix `arrow-big-up` metadata

* Refine `arrow-big-up-dash` icon

* Add `arrow-big-down-dash` icon

* Fix `arrow-big-left` metadata

* Add `arrow-big-left-dash` icon

* Add `arrow-big-right-dash` icon

* Optimize `arrow-big-*` icons

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-04-23 11:47:31 +02:00
Karsa
22193420c7 Sorting out our sort icons (#1028)
* Refactors sort icons to cover all use cases

* increases arrow head size

* Apply suggestions from code review

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-04-23 11:44:33 +02:00
Karsa
70827d4571 Added and (#1115)
Co-authored-by: Karsa <karsa@karsa.org>
2023-04-23 11:39:11 +02:00
Daniel Bayley
7d980f6cc1 Add repeat-2 (repost/retweet) icon (#1135)
* Add `repeat-2` icon

* Update icons/repeat-2.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-23 11:39:04 +02:00
locness3
67131489c8 lucide-static.md : rephrase warning and improve small details (#1123)
* lucide-static.md : rephrase warning and improve small details

* more capitalization of "svg"
2023-04-23 10:31:02 +02:00
Daniel Bayley
ebf03a5434 Add save-all icon (#1125)
* Add `save-all` icon

* Improve `save` metadata

* Update icons/save-all.json

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

* Update icons/save-all.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-04-22 17:19:45 +02:00
Daniel Bayley
8fda42c719 Improve ban metadata (#1130) 2023-04-21 19:58:45 +02:00
Daniel Bayley
b17627b82d Add shield-question icon (#1112)
Update icons/shield-question.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-04-20 18:28:33 +02:00
Karsa
84ec1620a8 [lucide-angular] Fixes change detection issue with legacy img input setter (#1129)
* [lucide-angular] Fixes img setter alias

* fixes change detection issue with img setter

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-04-20 18:25:18 +02:00
Eric Fennis
a87ae2a92b Introducing absoluteStrokeWidth option on Lucide Components (#939)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* add scale Stroke width

* Added scaleStrokeWidth prop to all packages

* Add scaleStrokeWidth to types

* Rename scaleStrokeWidth to absoluteStrokeWidth

* Adds common API elements to the Angular package (#949)

* Almost complete rewrite of the Angular package

* Update tsconfig.spec.json

* fixes icon build export file name

* Updates Angular documentation with the new properties + provider injection

* Update lucide-angular.md

* refactored scaleStrokeWidth to be absoluteStrokeWidth to match other packages

* removed codelyzer from devDeps + added flexible angular core dependencies

* Deprecates createElement helper in favour of Renderer2 to support SSR

---------

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

* Add absoluteStrokeWidth in docs

* update snapshots

* Manual merge of main

* Fixed incorrectly merged pnpm-lock.yaml

* Fixes lucide-angular build

* [lucide-angular] Global configuration for properties + bugfix for legacy icon provider   (#1012)

* Almost complete rewrite of the Angular package

* Update tsconfig.spec.json

* fixes icon build export file name

* Updates Angular documentation with the new properties + provider injection

* Update lucide-angular.md

* refactored scaleStrokeWidth to be absoluteStrokeWidth to match other packages

* removed codelyzer from devDeps + added flexible angular core dependencies

* Deprecates createElement helper in favour of Renderer2 to support SSR

* Added global configuration and fixed undefined bug in legacy icon provider. Also updated README.md

* Replaces removed line in README.md

* Fixes merge error

* Updates export template to use the non-deprecated type

* downgrade building to ng-cli@13

* downgrade to es2020

---------

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

* rename scaleStrokeWidth to absoluteStrokeWidth in readme

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric@dreamteam.nl>
Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@nac41112.nedap.local>
2023-04-20 16:08:34 +02:00
Daniel Bayley
f35f45c7b3 Add messages-square icon (#1030)
* Add `messages-square` icon

* Add `message-square-plus` icon

* Add `message-square-dashed` icon
2023-04-20 16:02:27 +02:00
Daniel Bayley
c9a418dfc4 Improve play metadata (#1062)
* Improve `play` metadata

* Improve `un`/`re`/`do`/`fresh`/`reload` metadata
2023-04-20 15:53:28 +02:00
Daniel Bayley
70be608a58 Add folder-git icon (#1009)
* Add `folder-git` icon

* Add `folder-git-2` icon
2023-04-20 15:52:03 +02:00
Daniel Bayley
db311ab023 Add list-tree icon (#1114)
Update icons/list-tree.json

Co-authored-by: Karsa <contact@karsa.org>
2023-04-20 15:49:08 +02:00
Daniel Bayley
cac81636fb Fix arrow-up-left-from-circle metadata (#1126)
This is causing the `pre-commit` hook to fail, because it was merged after the `coding` category was removed.
2023-04-20 15:20:41 +02:00
Daniel Bayley
4b225a2e80 Add test-tube/s icon/s and improve metadata for lab icons (#992)
* Improve metadata for `lab` icons

* Improve metadata for `lab` icons

* Add `test-tube` icon

* Add `test-tube` alternate icon

* Add `test-tubes` icon

* Refine `flask-round` icon

* Improve metadata
2023-04-19 21:40:03 +02:00
Jakob Guddas
8aac1c7ba6 Optimized bone (#1119)
* Optimized `bone`

* Update bone.svg

* Update icons/bone.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-19 21:37:57 +02:00
Daniel Bayley
d513a2b9df Add/refine radio[-tower] icons (#1070)
* Add `radio-tower` icon

* Refine `radio` icon
Update icons/radio-tower.svg

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

* Apply suggestions from code review

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-19 21:27:47 +02:00
Jakob Guddas
204a418643 Fixed connection issue and optimized cpu (#1100)
* Fixed connection issue and optimized `cpu`

* Update icons/cpu.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-19 21:26:04 +02:00
Jakob Guddas
36039d8bdc Fixed alignment issues usb (#1103) 2023-04-19 21:25:43 +02:00
Jakob Guddas
49bd49b843 fix: fixed github icon api route issue (#1117) 2023-04-19 19:04:04 +02:00
Jakob Guddas
4679ff791d feat: added backdrop to gh-icon (#1097)
* feat: added backdrop to gh-icon

* feat: added backdrop to gh-icon

* feat: changed fill pattern

* chore: pattern cleanup

* feat: improved backdrop color
2023-04-18 22:40:18 +02:00
Karsa
bfab755958 Merged coding and development categories (#1067)
Co-authored-by: Karsa <karsa@karsa.org>
2023-04-18 09:08:15 +02:00
Daniel Bayley
63aa17a001 Add circuit-board icon (#1065)
Update icons/circuit-board.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-04-18 09:04:46 +02:00
Jakob Guddas
db6194369d Optimized database (#1106) 2023-04-16 23:15:43 +02:00
Daniel Bayley
29c952fdaf Improve [*-]check[-*] metadata (#1057) 2023-04-16 22:01:57 +02:00
Daniel Bayley
637e285c52 Improve minus metadata (#1071) 2023-04-16 22:00:01 +02:00
Lucide Bot
d6ee5d963c 📦 Bump lucide package versions to 0.160.0 2023-04-16 17:20:01 +00:00
Jakob Guddas
97d02ec6e5 Optimized vegan (#1104)
* Optimized `vegan`

* Update icons/vegan.svg

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

* Update vegan.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 19:14:42 +02:00
Lucide Bot
f5be205fc9 📦 Bump lucide package versions to 0.159.0 2023-04-16 16:50:55 +00:00
Jakob Guddas
f2e0da9bb1 Simplified citrus (#1098)
* Simplified `citrus`

* Update icons/citrus.svg

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

* Update citrus.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 18:45:34 +02:00
Jakob Guddas
2ca852fc7d Optimized headphones (#1099) 2023-04-16 18:43:52 +02:00
Jakob Guddas
a64215bb25 Optimized key (#1101) 2023-04-16 18:40:51 +02:00
Daniel Bayley
6d975609c4 Complete circle-* set (#1032)
* Add `circle-equal` icon

* Add `circle-slash` icon

* Rename `slash` to `ban`

* Add `circle-off` icon

* Rename `circle-slashed` to `circle-slash-2`
2023-04-16 18:37:17 +02:00
Lucide Bot
13b9c1fadb 📦 Bump lucide package versions to 0.155.0 2023-04-16 16:18:47 +00:00
Daniel Bayley
dcf396f1e3 Add copy-* icons (#1027)
* Add `copy-x` icon

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

* Refine `copy` icon

* Add `copy-plus` icon

* Add `copy-minus` icon

* Add `copy-check` icon

* Add `copy-slash` icon

---------

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-04-16 18:13:26 +02:00
Lucide Bot
debf9b77c1 📦 Bump lucide package versions to 0.154.0 2023-04-16 12:25:13 +00:00
Jakob Guddas
d30f3fe0c5 Simplified and fixed alignment issues for accessibility (#1076)
* Simplified and fixed alignment issues for `accessibility`

* Update icons/accessibility.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:20:20 +02:00
Jakob Guddas
7d0f9996e6 Simplified bike (#1079)
* Simplified `bike`

* Update icons/bike.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:20:00 +02:00
Jakob Guddas
c263c8baee Simplified and fixed alignment issues of alarm-check (#1077)
* Simplified and fixed alignment issues of `alarm-check`

* Update icons/alarm-check.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:17:36 +02:00
Jakob Guddas
c61207c0ac Simplified and fixed alignment issues of alarm-clock-off (#1078)
* Simplified and fixed alignment issues of `alarm-clock-off`

* Update icons/alarm-clock-off.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:17:17 +02:00
Jakob Guddas
ec5327b870 Fixed misaligned feet of alarm-clock (#1081)
* Fixed misaligned feet of `alarm-clock`

* Update icons/alarm-clock.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:17:10 +02:00
Jakob Guddas
61d3c6f452 Simplified and aligned alarm-minus (#1082)
* Simplified and aligned `alarm-minus`

* Update icons/alarm-minus.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:16:56 +02:00
Jakob Guddas
d777895135 Optimized and aligned alarm-plus (#1083)
* Optimized and aligned `alarm-plus`

* Update icons/alarm-plus.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:16:19 +02:00
Jakob Guddas
846a74ef50 Optimized youtube (#1084)
* Optimized `youtube`

* Update youtube.svg
2023-04-16 14:16:03 +02:00
Jakob Guddas
3901a12d78 Optimized bold (#1085)
* Optimized `bold`

* Update icons/bold.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:15:31 +02:00
Jakob Guddas
f9c49d9973 Optimized and aligned construction (#1090)
* Optimized and aligned `construction`

* Fixed alignment issue

* Update icons/construction.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:15:09 +02:00
Jakob Guddas
08b04f84b7 Optimized command (#1091) 2023-04-16 14:14:42 +02:00
Lucide Bot
f3a97ed59e 📦 Bump lucide package versions to 0.149.0 2023-04-16 12:13:04 +00:00
Jakob Guddas
01663fb90b Optimized message-circle (#1093)
* Optimized `message-circle`

* Optimized `message-circle`

* Update icons/message-circle.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:07:26 +02:00
Jakob Guddas
97aec42fb2 Optimized replace (#1094)
* Optimized `replace`

* Update icons/replace.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:07:01 +02:00
Jakob Guddas
05eaf17ef9 Optimized replace-all (#1095)
* Optimize `replace-all`

* Update icons/replace-all.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:06:46 +02:00
Jakob Guddas
e4d3a74434 Optimized orbit (#1096)
* Optimized `orbit`

* Update `orbit`

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:06:16 +02:00
Jakob Guddas
de6b172e0a Optimized axe (#1089)
* Optimized `axe`

* Optimized `axe`

* Update axe.svg

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:05:28 +02:00
Jakob Guddas
348628329d Optimized building-2 (#1086)
* Optimized `building-2`

* Update icons/building-2.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:04:56 +02:00
Jakob Guddas
38d5093b1d Optimized pizza (#1088)
* Optimized `pizza`

* Update icons/pizza.svg

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-16 14:04:07 +02:00
Lucide Bot
3014d0aa32 📦 Bump lucide package versions to 0.145.0 2023-04-14 20:45:15 +00:00
Daniel Bayley
a418010baa Add arrow-*-circle icons (including escape key) (#1013)
* Add `arrow-up-left-from-circle` (<kbd>esc</kbd>ape key) icon

* Add `arrow-up-right-from-circle` icon

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

* Add `arrow-down-right-from-circle` icon
2023-04-14 22:39:23 +02:00
Wojciech Maj
329d75a2c1 Add note on use of <use> (#1050)
* Add note on use of `<use>`

* Update note

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-12 21:14:34 +02:00
Lucide Bot
2482416aef 📦 Bump lucide package versions to 0.144.0 2023-04-12 18:55:01 +00:00
Daniel Bayley
11d7b48d70 Modify disc to add disc alternate (vinyl/record) icon (#1014)
* Modify `disc` icon

* Add `disc` alternate (`vinyl`/`record`) icon


Update icons/disc-2.svg

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>
2023-04-12 20:49:05 +02:00
Daniel Bayley
5cbf9363cf Fix rotate-ccw metadata (#1049) 2023-04-12 12:37:20 +02:00
Lucide Bot
92531a8a86 📦 Bump lucide package versions to 0.143.0 2023-04-12 10:26:00 +00:00
Daniel Bayley
c67655d402 Refine heart-* icons (#1017)
Co-authored-by: Karsa <contact@karsa.org>
2023-04-12 12:20:32 +02:00
Lucide Bot
edc614bf43 📦 Bump lucide package versions to 0.142.0 2023-04-12 09:41:22 +00:00
Daniel Bayley
ded24ab61f Add book-* (git repository) icons (#1011)
* Add `book-copy` (`git clone` repo) icon

* Add `book-marked` (`git` repo) icon

* Add `book-template` (`git` template repo) icon

* Add `book-up` (`git push` repo) icon

* Add `book-down` (`git pull` repo) icon

* Add `book-add` (`git add` repo) icon

* Add `book-minus` (`git rm` repo) icon

* Add `book-x` (`git rm` repo) icon

* Add `book-lock` (`git` private repo) icon

* Add `book-key` (`git` private repo) icon
2023-04-12 11:35:52 +02:00
Lucide Bot
b626e91d7c 📦 Bump lucide package versions to 0.141.0 2023-04-12 09:27:35 +00:00
henritonus
a68ea8c33e add rat icon (#936)
* add rat icon

* Update icons/rat.json

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

* Update rat.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-04-12 11:21:34 +02:00
Daniel Bayley
4fd815a46c Improve rotate-* metadata (#1046)
* Improve `rotate-*` metadata

* Improve `history` metadata
Update icons/history.json

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

* Apply suggestions from code review

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-12 10:57:55 +02:00
Lucide Bot
0e180515a3 📦 Bump lucide package versions to 0.140.0 2023-04-12 06:26:42 +00:00
Daniel Bayley
5dbae5df45 Add text icon (#1044)
* Add `text` icon
Update icons/text.json

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

* Apply suggestions from code review

---------

Co-authored-by: Karsa <contact@karsa.org>
2023-04-12 08:21:05 +02:00
Daniel Bayley
bcad75bddd Improve power metadata (#1047) 2023-04-12 08:17:29 +02:00
Daniel Bayley
78a0640832 Add metadata for chevron-right-square icon (#1033) 2023-04-11 09:58:38 +02:00
Karsa
05ea32948c Added home category to microwave 2023-04-11 09:18:33 +02:00
Lucide Bot
2e11931d2b 📦 Bump lucide package versions to 0.139.0 2023-04-11 07:09:43 +00:00
Daniel Bayley
689b3e1d83 Add step-forward/back icons (#1034)
* Add `step-forward` icon

* Add `step-back` icon
2023-04-11 09:03:47 +02:00
Lucide Bot
8ec672bd86 📦 Bump lucide package versions to 0.138.0 2023-04-10 18:50:41 +00:00
xnousnow
c096bf2325 Add clipboard-paste icon (#984)
* Adds `clipboard-paste` icon (#951)

* Update icon by ericfennis's review

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-04-10 20:44:39 +02:00
Karsa
a796cb105d Update [iconName].tsx
Revert "quickfix", mea culpa
2023-04-10 12:59:54 +02:00
Karsa
e4ac2cc4e9 Update [iconName].tsx
Quickfix for invalid method call
2023-04-10 12:57:30 +02:00
Eric Fennis
2ee208652f Add site categories (#876)
* bump package

* Add Logo

* remove console

* prettify it

* add favicons and fix issue

* Add categorie page

* add drag and drop

* Make drag and drop working

* Add drag options

* Add modal

* small styling fixes

* fix search

* Add code editor

* Add more styling

* Add more categories

* create context provider

* refactor eslint thing

* update chakra-ui

* improve, category bar

* Add sortly

* Add categories

* Try to fix new categories

* Fix Categories

* Add docs Menu Tree data

* Start with sectiontitles

* Create link list

* Add Docs menu to mobile

* Add some more pages and text

* Optimize text

* add license to the menu

* update packages

* Fix build

* Update title

* Remove ModifiedTooltip

* Fix assets

* add yarn to copy-assets command

* install deps

* update

* try something

* new categories page

* try something

* Add icons reorder

* add new icons page

* add category view button

* add categories

* Fix vercel build

* Add sidebar and costumize button

* fix merge conlfict

* Remove console.logs

* add sidebar

* Add icon overview

* Fix key render issue

* Fix types

* Fix category render

* Fix build

* update lockfile

* Added category icon and icon count in list. Moved scrollbar to the left to make it less intrusive

---------

Co-authored-by: Eric Fennis <eric.fennis@endurance.com>
Co-authored-by: Eric Fennis <eric@dreamteam.nl>
Co-authored-by: Karsa <karsa@karsa.org>
2023-04-09 16:49:11 +02:00
Lucide Bot
d0826259d1 📦 Bump lucide package versions to 0.137.0 2023-04-09 11:34:19 +00:00
Daniel Bayley
3acbfb428b Add orbit icon (#1010) 2023-04-09 13:28:56 +02:00
Karsa
250bd20199 Adds new building icons (#1015) 2023-04-09 13:26:51 +02:00
Daniel Bayley
221e213292 Add find-replace icons (#1023)
* Add `replace` icon
* Add `replace-all` icon
* Add `case-sensitive` icon
* Add `case-upper` icon
* Add `case-lower` icon
* Add `whole-word` icon
* Add `text-selection` icon
* Add `space` icon
2023-04-09 13:24:35 +02:00
Lucide Bot
1e48aecbfe 📦 Bump lucide package versions to 0.134.0 2023-04-09 09:59:47 +00:00
Daniel Bayley
7a6dc5b2f7 Add atomic icon (#991)
Update icons/atom.svg


Update icons/atom.json

Co-authored-by: Karsa <contact@karsa.org>
2023-04-09 11:54:06 +02:00
Daniel Bayley
7f6999fee7 Fix text-cursor-input icon (#1026)
Update icons/text-cursor-input.svg


Update icons/text-cursor-input.svg

Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-04-09 11:52:36 +02:00
Lucide Bot
08c1bc68da 📦 Bump lucide package versions to 0.133.0 2023-04-09 09:52:30 +00:00
Karsa
930260aab5 Adds door icons (#1016)
Co-authored-by: Karsa <karsa@karsa.org>
2023-04-09 11:46:30 +02:00
Eric Fennis
96473f7f7d Fix build 2023-04-08 18:57:28 +02:00
Eric Fennis
f620c85e3b Optimize icons (#1025) 2023-04-08 17:27:53 +02:00
Lucide Bot
f4a8f3d0d8 📦 Bump lucide package versions to 0.132.0 2023-04-08 15:17:40 +00:00
Daniel Bayley
36725eeed9 Add mailbox icon (#1000)
Update icons/mailbox.svg

Co-authored-by: Karsa <contact@karsa.org>
2023-04-08 17:11:36 +02:00
Eric Fennis
ee7ee203e6 Add details summary markdown GitHub comment (#1024)
* Add details and summary github comment

* optimize icons

* test

* replace back main domain

* Revert "optimize icons"

This reverts commit a7e9186a09.
2023-04-08 12:21:35 +02:00
Lucide Bot
7a26dddbcb 📦 Bump lucide package versions to 0.131.0 2023-04-08 09:40:17 +00:00
Karsa
408c683a13 Adds receipt icon (#974)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* adds receipt icon

* Update icons/receipt.svg

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <karsa@karsa.org>
2023-04-08 11:35:09 +02:00
Lucide Bot
546cf61a2e 📦 Bump lucide package versions to 0.130.1 2023-04-05 10:35:22 +00:00
Eric Fennis
a7496aa454 Fix alias support (#1008)
* minor improvements

* minor improvements

* Enable icons aliases CJS

* Add aliasesSupport to configs

* Add link to pnpm-workspace.yaml
2023-04-03 21:54:18 +02:00
Jakob Guddas
93cfd3d27d Added github comment icon workflow (#946)
* feat: added github comment icon workflow

* feat: improved segment node styling

* feat: improved segment node styling

* fix: fixed grid alignment issue

* chore: cleanup

* fix: added ref forwarding to SvgPreview component

* chore: removed svg preview from icon detail overlay

* chore: updated tj-actions/changed-files

* chore: switched to pull_request_target

* chore: simplified path segment highlighting logic

* Fixes incorrect relative links in documentation pages (#973)

* Fixes incorrect relative links in documentation pages

* Unifies documentation page names to avoid 404 links

---------

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

* Add forklift icon (#943)

* Fix vercel build

* Add forklift icon

Co-Authored-By: willythewizard <119956499+willythewizard@users.noreply.github.com>

---------

Co-authored-by: willythewizard <119956499+willythewizard@users.noreply.github.com>

* adds utility-pole icon (#971)

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

* 📦 Bump lucide package versions to 0.123.0

* Adds `nfc` icons (#960)

* added nfc icons

* fixes smartphone-nfc

* Update icons/nfc.svg

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

* Update icons/smartphone-nfc.svg

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

---------

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

* 📦 Bump lucide package versions to 0.124.0

* fix: updated pnpm-lock.yaml

* fix: added missing api endpoint file

* chore: fixed nextjs path name parsing in production

* chore: only run workflow when path includes icons/*.svg

* chore: added Cache-Control header to gh-icon api route response

* feat: added dark mode support to gh-icon

* feat: switched to using picture tag for gh-icon

* feat: added space between gh-icons in pr comment

* fix: changed icon size base back to 24x24

* feat: added title to gh-icon comment image

* fix: changed gh-icon url

* chore: added groups with class names

* feat: improved shadow masking

* Removes need for building duplicate icons by supporting CSS based dark mode

* chore: resolved type issues

* feat: changed image width from 48% to 400px

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: willythewizard <119956499+willythewizard@users.noreply.github.com>
Co-authored-by: Lucide Bot <lucide-bot@users.noreply.github.com>
2023-04-03 21:05:59 +02:00
Daniel Bayley
76ce22ef14 Improve infinity icon (#993)
Update icons/infinity.svg

Co-authored-by: Karsa <contact@karsa.org>
2023-04-02 21:16:56 +02:00
Lucide Bot
873997b48e 📦 Bump lucide package versions to 0.130.0 2023-04-02 19:06:34 +00:00
Daniel Bayley
03276eee9d Add chevron-*-square (including terminal alternate) icons (#996)
* Add `terminal-square` alternate icon

* Add `chevron-right-square` (alternate `terminal`) icon

* Add `chevron-left-square` icon

* Add `chevron-up-square` icon

* Add `chevron-down-square` icon

* Add metadata for `chevron-right`
2023-04-02 21:00:40 +02:00
Daniel Bayley
cf5aa0534b Improve refresh-* metadata (#999)
Update icons/refresh-ccw.json


Update icons/refresh-cw.json

Co-authored-by: Karsa <contact@karsa.org>
2023-04-02 17:29:38 +02:00
Eric Fennis
cccf89e7bb Update ci.yml 2023-04-02 17:29:24 +02:00
Lucide Bot
2d4676160b 📦 Bump lucide package versions to 0.129.0 2023-03-29 06:46:00 +00:00
Daniel Bayley
6346d80ee7 Fix package icon (#989)
Centre line is extended too far.
2023-03-29 08:40:40 +02:00
Lucide Bot
e983ccf974 📦 Bump lucide package versions to 0.128.0 2023-03-27 14:02:39 +00:00
Karsa
f0fe196872 Adds plane-takeoff & plane-landing icons (#964)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* adds plane-takeoff & plane-landing icons

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <karsa@karsa.org>
2023-03-27 15:55:17 +02:00
Lucide Bot
85eaa5fc50 📦 Bump lucide package versions to 0.127.0 2023-03-20 19:48:30 +00:00
Karsa
6a7732077a Adds parking-* and parking-*-off icons (#972)
* adds parking and parking-off icons

* Update icons/parking-square.svg

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

* Update icons/parking-circle.svg

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

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-03-20 20:42:08 +01:00
Lucide Bot
c1c0f99d65 📦 Bump lucide package versions to 0.126.0 2023-03-19 20:12:27 +00:00
Karsa
ee2bfaff0d Adds brain (ai) icons (#967)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* adds brain icons

* adds extra AI tags

* Update icons/brain-circuit.svg

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

* Update brain.svg

* Update brain-circuit.svg

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-03-19 21:06:44 +01:00
Lucide Bot
9370449d7e 📦 Bump lucide package versions to 0.125.0 2023-03-10 21:18:55 +00:00
Karsa
244a5a396e Adds bird icon (#968)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* adds bird icon

* Update icons/bird.svg

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <karsa@karsa.org>
2023-03-10 22:13:44 +01:00
Lucide Bot
2396a53bad 📦 Bump lucide package versions to 0.124.0 2023-03-06 20:17:14 +00:00
Karsa
07a78731a5 Adds nfc icons (#960)
* added nfc icons

* fixes smartphone-nfc

* Update icons/nfc.svg

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

* Update icons/smartphone-nfc.svg

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

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Jakob Guddas <github@jguddas.de>
2023-03-06 21:11:05 +01:00
Lucide Bot
4e2449dc9f 📦 Bump lucide package versions to 0.123.0 2023-03-05 20:28:49 +00:00
Karsa
f02067ea55 adds utility-pole icon (#971)
Co-authored-by: Karsa <karsa@karsa.org>
2023-03-05 21:23:11 +01:00
Eric Fennis
57a72cbb38 Add forklift icon (#943)
* Fix vercel build

* Add forklift icon

Co-Authored-By: willythewizard <119956499+willythewizard@users.noreply.github.com>

---------

Co-authored-by: willythewizard <119956499+willythewizard@users.noreply.github.com>
2023-03-05 21:22:38 +01:00
Karsa
0baf1a49ef Fixes incorrect relative links in documentation pages (#973)
* Fixes incorrect relative links in documentation pages

* Unifies documentation page names to avoid 404 links

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-03-05 21:21:26 +01:00
Lucide Bot
0879262bdb 📦 Bump lucide package versions to 0.122.0 2023-03-04 10:58:52 +00:00
Karsa
9a41d931e9 Adds blinds icon (#970)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* adds blinds icon

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <karsa@karsa.org>
2023-03-04 11:53:29 +01:00
Lucide Bot
7c111a53e1 📦 Bump lucide package versions to 0.121.0 2023-03-02 08:04:30 +00:00
Maxime Franco
7209ed3fcd [ADD] Router icon (#957)
Co-authored-by: Karsa <karsa@karsa.org>
2023-03-02 08:58:27 +01:00
Karsa
e85dffa9b4 Adds gi = generate icons script (#975) 2023-03-02 08:51:56 +01:00
Lucide Bot
0c3d6cd097 📦 Bump lucide package versions to 0.120.0 2023-03-02 07:39:29 +00:00
Karsa
72c25a9936 Adds pill & tablets icons (#969)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* adds tablets & pill icons

* adds some extra tags

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <karsa@karsa.org>
2023-03-02 08:33:50 +01:00
Lucide Bot
5226c326f8 📦 Bump lucide package versions to 0.119.0 2023-03-01 18:15:18 +00:00
Karsa
de2e3036c0 Adds tower-control icon (#963)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* adds tower-control icon

* Update icons/tower-control.json

---------

Co-authored-by: it-is-not <72697755+it-is-not@users.noreply.github.com>
Co-authored-by: Karsa <karsa@karsa.org>
2023-03-01 19:09:35 +01:00
Lucide Bot
8adeb025a6 📦 Bump lucide package versions to 0.118.0 2023-02-28 17:15:47 +00:00
Karsa
22ffb58649 Adds ship icon (#965) 2023-02-28 18:10:57 +01:00
Karsa
278309fe55 Adds footprints icon (#961) 2023-02-28 18:10:44 +01:00
Karsa
bcbae1e406 Adds stamp icon (#962) 2023-02-28 18:10:33 +01:00
Karsa
1173134099 Adds helping-hand icon (#966) 2023-02-28 18:08:19 +01:00
Lucide Bot
894993478f 📦 Bump lucide package versions to 0.116.0 2023-02-28 16:32:39 +00:00
Karsa
36f84a74f6 adds construction icon (#959)
Co-authored-by: Karsa <karsa@karsa.org>
2023-02-28 17:25:08 +01:00
Karsa
1479a9dbd8 Fixes pre-commit git hook to ensure the optimisation of staged icons (#958)
* testing

* Fixes pre-commit hook

* Removing checkIcons from pre commit hook because it might result in false positives and negatives on an unclean local repository

* Added checkIcons Github action

---------

Co-authored-by: Karsa <karsa@karsa.org>
2023-02-28 17:24:17 +01:00
gubser
2485f6117a Added filter-x icon (#954)
* Added filter-off icon

* Renamed filter-off to filter-x

* Update icons/filter-x.svg

---------

Co-authored-by: Elio Gubser <3030498-gubser@users.noreply.gitlab.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-02-22 22:29:14 +01:00
Eric Fennis
0bbaaa8abd Fix site build (#955)
* Fix prebuild

* remove env file
2023-02-21 17:33:29 +01:00
Patchethium
a82af02687 Add split-square icon (#952)
* add split-square

* add horizontal icon

* rename vertical icon

* split path
2023-02-21 08:14:27 +01:00
Lucide Bot
a5be1b4101 📦 Bump lucide package versions to 0.115.0 2023-02-16 11:51:55 +00:00
Eric Fennis
639c0e8d85 Add creative commons icon (#945) 2023-02-16 12:45:45 +01:00
Eric Fennis
b863445492 Add remove formatting icon (#944) 2023-02-16 12:44:43 +01:00
Karsa
8c4a41035b Deprecate tags.json (#896)
* Deprecates tags.json and icons.json

* Removed tags.json dependency from Figma plugin

* Add JSON descriptor information to readme

* Restore packages/index.tsx

* Update packages/lucide-figma/src/api/fetchIcons.ts

Add multiple fetches to `Promise.all`

* Added caching to API endpoints

* Updates pnpm-lock.yaml

* Add tags to static

* Trigger site build

* Added prebuild script to generate api caches at build time

* Migrated NextCache function from arrow to regular to simplify markup

* test if contents are read from cache

* Add cache clear to prebuild

* removes debug object

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-02-16 08:26:29 +01:00
Lucide Bot
4a55ae4b91 📦 Bump lucide package versions to 0.114.0 2023-02-14 06:17:46 +00:00
Karsa
30f683a192 Fixes outline path joins in cat (#947) 2023-02-14 07:11:42 +01:00
Lucide Bot
25e0aaf33c 📦 Bump lucide package versions to 0.113.0 2023-02-12 22:09:06 +00:00
Leon Koole
3cd84c8adf Add grip and make all grip tags consistent (#941)
* Add grip and make all grip tags consistent

* Update icons/grip.svg

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

* Update icons/grip.json

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-02-12 23:03:16 +01:00
Ali
096ce92866 add title attr for "Available for" icons on home (#942) 2023-02-12 18:57:00 +01:00
Lucide Bot
57abe654b1 📦 Bump lucide package versions to 0.112.0 2023-02-07 08:40:49 +00:00
Jakob Guddas
852da97d46 Add fish-off icon (#923)
Co-authored-by: Kemie <kemie@monolinea.com>
2023-02-07 09:35:00 +01:00
Cd16d
ba86ca5ef0 add picture-in-picture icon (#930) 2023-02-07 09:31:44 +01:00
Petros Gasteratos
f2e325264f Add vote icon (#898) (#931)
* Add vote icon (#898)
* Update icons/vote.svg

Co-authored-by: Karsa <contact@karsa.org>
2023-02-07 09:27:06 +01:00
Lucide Bot
de366a1cb0 📦 Bump lucide package versions to 0.109.0 2023-02-02 07:46:11 +00:00
Karsa
5f5cec5b58 Fixes globe-2 icon (#933)
Co-authored-by: Karsa <karsa@karsa.org>
2023-02-02 08:40:52 +01:00
Wojciech Maj
2ccd5b7422 Add more tags to icons (#932) 2023-02-02 08:40:34 +01:00
Luca
e38137822d Svelte: Allow strings for size and strokeWidth (#913)
* Svelte: Allow strings for `size` and `strokeWidth`

* Svelte: Add missing types for building
2023-02-02 08:37:26 +01:00
Karsa
a9fef9f6b0 Fixes toggle-left & toggle-right (#584)
* Fixes toggle-left & toggle-right

* Update icons/toggle-left.svg

* Update icons/toggle-right.svg

* Update icons/toggle-left.svg

* Update icons/toggle-right.svg

---------

Co-authored-by: Karsa <karsa@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-01-29 20:16:15 +01:00
Lucide Bot
f646d84559 📦 Bump lucide package versions to 0.108.0 2023-01-29 10:44:23 +00:00
Kaladii
6f6ffa2478 add battery-warning icon (#927)
* add battery-warning icon

* add battery-warning to to tags.json
2023-01-29 11:38:20 +01:00
Lucide Bot
76326cb289 📦 Bump lucide package versions to 0.107.0 2023-01-26 08:57:04 +00:00
Eric Fennis
13a3f565b6 Add database-backup icon (#918) 2023-01-26 09:51:01 +01:00
Lucide Bot
b0f2e084d8 📦 Bump lucide package versions to 0.106.0 2023-01-26 08:49:45 +00:00
Kemie
fc78d27cc3 Add food related icons: beef, dessert, fish, salad, sandwich, soup & takeout (#869) 2023-01-26 09:38:13 +01:00
Eric Fennis
9b0d0edb61 update package.json lucide-react-native 2023-01-18 22:54:18 +01:00
Eric Fennis
6a5f8d3755 Fix aliases lucide-react-native (#919)
* Fix aliases lucide-react-native

* remove replace import

* Revert version change
2023-01-18 22:49:53 +01:00
Lucide Bot
35c96ab61f 📦 Bump lucide package versions to 0.105.0 2023-01-17 07:10:46 +00:00
Eric Fennis
8fd8007c96 Add support for aliases (#899)
* extract workflow

* Add aliases build

* Setup types building for aliases

* Add types generation for aliases

* Finish React Aliases

* Finish aliases for lucide-react

* setup aliases preact

* Fix aliases in preact

* Add aliases preact

* Add aliases lucide-react-native

* Fix solid js build

* update lock file

* Improve solid for solid start

* update import

* update import

* lucide solid fix types generation

* Fix lucide sold

* Fix svelte aliases

* update lockfile

* Fix imports

* Fix solid js issues

* Add aliases to the vue packages

* Fix lucide react native

* Test alpha versions lucide-vue, lucide-vue-next, lucide-svelte
2023-01-17 08:04:34 +01:00
Sean van Zuidam
621cf6b290 Add Eleventy package to docs (#905)
* ADD: 11ty icon

* ADD: eleventy-lucide-icons to 3th party packages

* ADD: eleventy-lucide-icons to readme
2023-01-10 21:05:27 +01:00
Eric Fennis
a5ce1df506 Fix site build 2022-12-21 14:30:36 +01:00
Eric Fennis
c784dd09c7 Remove exports lucide-react 2022-12-05 14:26:07 +01:00
Markus Napp
0f11acdd7f Language improvements for introduction text (#895)
* Language improvements for introduction text

* Updated number of icons
2022-12-04 22:49:57 +01:00
Lucide Bot
2149645895 📦 Bump lucide package versions to 0.104.0 2022-12-04 21:45:15 +00:00
Eric Fennis
fa6ed02297 Implement: Typescript, Esbuild and vitest (#877)
* init modernization

* implement esbuild

* Make first build work

* Fix esbuild for lucide-react

* Add vitest for lucide-react

* add esbuild lucide and lucide-react

* update package lock

* implement preact

* Add typescript and vitest

* adjust workflows

* Fix mocking react-native package

* update lock file

* Add esbuild in svelte

* make svelte test work in vitest

* Refactor lucide svelte

* Transform lucide vue to typescript

* Finish lucide-vue-next typescript

* 0.104.0-beta.0

* remove version in main package.json

* cleanup

* Fix svelte tests snapshots

* clean up

* add rollup lucide-vue-next

* Fix lucide svelte package

* change to workspace link

* revert filter position

* revert preact workflow change

* cleanup

* Fix some types

* add semi
2022-12-04 22:38:56 +01:00
Lucide Bot
4a2c6ed8b0 📦 Bump lucide package versions to 0.103.0 2022-11-30 10:29:46 +00:00
Karsa
f67dfab128 Merge remote-tracking branch 'remotes/upstream/main' into categories 2022-11-30 11:23:55 +01:00
Karsa
c3b9cff578 fixed eslint warnings 2022-11-30 10:25:59 +01:00
Lucide Bot
9ba4f8c359 📦 Bump lucide package versions to 0.102.0 2022-11-21 07:58:29 +00:00
it-is-not
dd5a5b16f6 Add subtitles icon (#890)
* Add more music icons and another mic icon (#746)

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

This reverts commit 57cba6ae0e.

* add subtitles icon

Co-authored-by: Karsa <contact@karsa.org>
2022-11-21 08:52:17 +01:00
Vlad-Mihai Dumitrache
a1f9a95322 add nuxt.js to files array (#889) 2022-11-21 08:51:40 +01:00
Karsa
7572d2d6c8 Attempts to fix github workflow issues stemming from JSON files within the icons directory 2022-11-16 18:29:47 +01:00
Karsa
58370d63dc Added filtering on SVG extension to outline-svg 2022-11-16 18:21:00 +01:00
Karsa
6552a4cca1 Moved from a single icons.json file to separate JSON files per icon 2022-11-16 18:16:50 +01:00
Karsa
dace5a9f9c Merge remote-tracking branch 'upstream/main' into categories 2022-11-16 18:03:06 +01:00
Karsa
90f32d38a2 Fixes merge conflicts 2022-11-16 18:02:04 +01:00
Lucide Bot
619b7040da 📦 Bump lucide package versions to 0.101.0 2022-11-15 09:39:53 +00:00
Eric Fennis
b75aee4df3 Add Pilcrow Icon (paragraph) (#884)
* add pilcrow icon
* add tags
2022-11-15 10:34:25 +01:00
Ekow Baah-Nyarkoh
0c93e7bcb4 update documentation with correct import for all icons (#875) 2022-11-13 21:59:29 +01:00
Lucide Bot
538dad2d30 📦 Bump lucide package versions to 0.100.0 2022-11-10 21:58:48 +00:00
Karsa
797fa5c431 Update baby.svg (#881) 2022-11-10 22:52:27 +01:00
Wojciech Maj
8ccbb8f2e3 Update lucide-react on marketing site (#848) 2022-11-08 15:43:41 +01:00
Badraxas
b77ce99363 Adds devices icon (#871)
* Adding devices icon

* Update icons/devices.svg

* rename devices into monitor-smartphone

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

* ADD: Hyva to readme

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

* Make the dockerfile work

* try docker container for font building

* remove workflow dep

* add docker compose file

* test docker image

* update build font flow

* update to v3

* cleanup

* add filter options for installs

* test

* revert filter on install

* optimize font building

* Rename workflow

* test and compare workflows

* test workflow

* test

* try with filter

* test old script github actions

* Fix old script

* this works?

* test script

* finialize font script

* remove workspace packages

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

* Update eslint-related packages and fix all linter errors

* Update all rollup-related packages version

* Update all rollup-related packages (part 2)

* Update the rest of package which need to be updated

* Fix unwanted comment

* Fix unwanted comment (again)
2022-11-07 22:29:19 +01:00
Karsa
04ada85c0f Updated categories with new icons + upgraded scripts to use pnpm and mjs scripts 2022-11-07 11:34:40 +01:00
Karsa
17ccaeea75 Merge branch 'master' into categories 2022-11-07 10:39:01 +01:00
Ekow Baah-Nyarkoh
1cdcfd6403 Publish angular dist folder instead of project folder (#872)
* publish angular dist folder instead of project folder

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

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

* Fixes bean outline

* Update dna.svg

* Update bean.svg

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

* Update icons/check-check.svg

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

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

* ADD: more options link

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

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

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

* optimized svgs, tags

* updated cat & dog

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

* Update dog.svg

fixed ears

* Update tags.json

tags for dog

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

* Update tags.json

tags for cat

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

* reoptimized dog & cat svgs

* reoptimized svgs

* svg code formatting

* unmerge paths

* Update icons/cat.svg

* Update icons/dog.svg

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

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

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

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

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

* docs: refactor the usage example to utilize script setup

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

Add "logo" tag to the trello logo

* Update tags.json

Add "maths" tag

* Update tags.json

Add tag "logo" to  chrome

* Update tags.json

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

* Update tags.json

Add tag "shape" to diamond

* Update tags.json

Add tag "maths" to function

* Update tags.json

* Update tags.json

Add "maths" to "circle slashed"

* Update tags.json

Remove the comma after the tag logo from trello
2022-10-23 18:29:43 +02:00
Lucide Bot
6fd0380e19 📦 Bump lucide package versions to 0.93.0 2022-10-23 12:19:23 +00:00
Eric Fennis
603ee05674 Add heading icons (#810) 2022-10-23 14:12:17 +02:00
Eric Fennis
be15f5e54b Update README.md 2022-10-20 08:23:27 +02:00
Eric Fennis
ea409105ce Remove post-install lucide-angular (#808)
* remove postinstall

* final fixes
2022-10-20 08:08:42 +02:00
Eric Fennis
969254d986 Update readme and update repo logo (#828)
* Add ids to logos

* try this

* fix viewBox svg images

* update svgs

* Update README.md

* update readme

* fix badges

* small fix

* fix image url
2022-10-19 22:34:35 +02:00
Lucide Bot
200cc17ef6 📦 Bump lucide package versions to 0.92.0 2022-10-19 11:04:51 +00:00
Luke Murray
893119b064 change direction of arrow in sort ascending (#819)
fixes https://github.com/lucide-icons/lucide/issues/805
2022-10-19 12:58:44 +02:00
Alen Šiljak
3e10988978 fixing the link title for Vue 2 (#821) 2022-10-19 12:46:38 +02:00
Alen Šiljak
53a764fc5b main branch name (#824) 2022-10-19 12:44:56 +02:00
Eric Fennis
4cc195092f Add framework svg logos 2022-10-19 09:19:15 +02:00
priority
b7ef305b9f docs: fix click button download zip accidentally (#816) 2022-10-19 07:52:18 +02:00
Alen Šiljak
52896efc94 Adding Svelte to the readme (#820)
* Adding Svelte to the readme

* adding solid section

Co-authored-by: Alen Šiljak <dev@alensiljak.eu.org>
2022-10-18 22:48:25 +02:00
Luke Murray
2c0448a19a Update CONTRIBUTING.md minimum node version (#818)
The build process uses import assertions which were added in Node 16.4. Updating the docs to reflect that since this bit me while contributing.

Example of import assertion

aa524c65a0/scripts/render/processSvg.mjs (L5)

[documentation for when import assertions were added in node](https://nodejs.org/api/esm.html#import-assertions)
2022-10-18 21:56:23 +02:00
Patrick Barrett
aa524c65a0 Fix signal-zero (#812)
Currently the icons `signal-zero` and `signal-low` are exactly the same.

![signal-low](https://github.com/lucide-icons/lucide/blob/main/icons/signal-low.svg)
![signal-zero](https://github.com/lucide-icons/lucide/blob/main/icons/signal-zero.svg)

Previously called out here https://github.com/lucide-icons/lucide/pull/428#issuecomment-1099289022 and confirmed by @ericfennis, the author of the original PR.

I've just manually edited `signal-zero` to remove the second bar.
2022-10-17 09:29:51 +02:00
Lauren Golembiewski
609ca31815 Update GitHub pull request guide link (#807)
Replace existing, broken link with new link found on egghead.
2022-10-16 18:20:20 +02:00
Lucide Bot
8fc34bfe1b 📦 Bump lucide package versions to 0.91.0 2022-10-03 14:45:59 +00:00
Karsa
48fa902b1c Added ear and ear-off (#804)
* Added ear and ear-off

* Fixes incorrect commit

Co-authored-by: Karsa <karsa@karsa.org>
2022-10-03 16:37:05 +02:00
Eric Fennis
cdd57e6610 Add Solid package (#797)
* init solid package

* add testing

* Fix tests solid

* add workflow

* update types build

* Fix typings file

* switch to camelCase props

* revert camelcased props

* Fix tests

* Fixing dynamic reactive props in lucide icons

* release beta

* strokeWidth fix

* bump beta version

* improve docs

* update beta release

* update vitest config

* Add automatic release for solid package
2022-10-03 16:36:33 +02:00
Lucide Bot
1f5119785b 📦 Bump lucide package versions to 0.90.0 2022-09-20 06:18:24 +00:00
Karsa
692faadd91 Merged and updated categories from main. 2022-06-16 13:11:42 +02:00
Karsa
89a8274246 Merge branch 'master' into categories 2022-06-16 13:03:05 +02:00
Karsa
26987c6eda Added categories to icons merged from master. 2022-06-14 17:35:07 +02:00
Karsa
bf8db289a3 Merge branch 'master' into categories 2022-06-14 17:21:52 +02:00
Karsa
50f0eaec4b Added social to hash 2022-06-02 18:39:45 +02:00
Karsa
dbe35c4f69 Add social category to hash 2022-06-02 14:49:14 +02:00
Karsa
c3056b9ce6 Added a base category system. 2022-06-02 14:17:17 +02:00
Karsa
b016ea08f8 Merge branch 'master' into categories 2022-06-02 10:18:48 +02:00
Karsa
8e041c3c17 [categories] Added photography to icons 2022-06-02 10:18:08 +02:00
Karsa
e3d2525994 Added some icon categories 2022-06-02 08:45:58 +02:00
Karsa
e846b725f6 manual merge fix 2022-05-30 18:40:58 +02:00
Karsa
b924c0a70b Added git pre commit hook for checking the contents of icons.json 2022-05-30 18:40:10 +02:00
Karsa
0d6e89332e Added git pre commit hook for checking the contents of icons.json 2022-05-30 18:38:47 +02:00
Karsa
6ecf908ded Added migration from tags to icons and vice versa 2022-05-30 17:52:11 +02:00
Karsa
f623ac6362 Merge branch 'master' into categories 2022-05-27 15:34:48 +02:00
Karsa
e3644e1419 Initial draft of new icons.json format. 2022-05-26 19:45:36 +02:00
Karsa
84e09058b2 Merge branch 'master' of https://github.com/lucide-icons/lucide 2022-05-23 13:26:12 +02:00
Karsa
3e4bde1d39 Merge branch 'master' of https://github.com/lucide-icons/lucide 2022-05-16 10:49:24 +02:00
Karsa
164854c636 Merge branch 'master' of github.com:lucide-icons/lucide 2022-05-03 16:51:21 +02:00
Karsa
2d1214fc37 Merge branch 'master' of https://github.com/lucide-icons/lucide 2022-04-25 12:52:35 +02:00
Karsa
d528fb728a Updated icon to comply with design guidelines and more closely match accessibleicon.org 2022-04-22 17:06:25 +02:00
Karsa
53d7b772ef added newline to end of file 2022-04-11 14:09:35 +02:00
Karsa
c73fbb6159 Added accessibility icon as per https://github.com/feathericons/feather/issues/633 2022-04-11 14:08:10 +02:00
2404 changed files with 80245 additions and 24330 deletions

View File

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

View File

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

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
# These are supported funding model platforms
open_collective: lucide-icons

View File

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

44
.github/actions/build-and-test.yml vendored Normal file
View File

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

41
.github/actions/check-icons.yml vendored Normal file
View File

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

View File

@@ -5,7 +5,7 @@ on:
branches:
- main
paths:
- icons/**
- icons/**/*.svg
jobs:
create-release:
@@ -14,8 +14,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3.4.1
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16

View File

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

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

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

View File

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

View File

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

View File

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

45
.github/workflows/lucide-solid.yml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: Lucide Solid Checks
on:
pull_request:
paths:
- packages/lucide-solid/**
- pnpm-lock.yaml
jobs:
lucide-solid:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
with:
version: 7
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm --filter lucide-solid build
- name: Test
run: pnpm --filter lucide-solid test

View File

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

View File

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

View File

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

View File

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

View File

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

140
.github/workflows/pull-request.yml vendored Normal file
View File

@@ -0,0 +1,140 @@
name: Add Changed Icons comment
on:
pull_request_target:
paths:
- 'icons/*.svg'
permissions:
pull-requests: write
contents: write
jobs:
add-changed-icons-comment:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v35
with:
files: icons/*.svg
- name: Generate cohesion check random
id: generate-cohesion-check-random
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in $(printf "%s\\n" icons/*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate cohesion check squares
id: generate-cohesion-check-squares
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in $(printf "%s\\n" icons/*square*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 1px stroke-width
id: generate-1px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/1/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 2px stroke-width
id: generate-2px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate 3px stroke-width
id: generate-3px-stroke-width
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/3/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Generate X-rays
id: generate-x-rays
run: |
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img width=\"400\" title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/$(basename ${file//\.svg/})/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name: Find Comment
uses: peter-evans/find-comment@v2
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: Added or changed icons
- name: Create or update comment
uses: peter-evans/create-or-update-comment@v2
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
### Added or changed icons
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
<details>
<summary>Preview cohesion</summary>
${{ steps.generate-cohesion-check-squares.outputs.body }}<br/>
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
${{ steps.generate-cohesion-check-random.outputs.body }}<br/>
</details>
<details>
<summary>Preview stroke widths</summary>
${{ steps.generate-1px-stroke-width.outputs.body }}<br/>
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
${{ steps.generate-3px-stroke-width.outputs.body }}<br/>
</details>
<details>
<summary>Icon X-rays</summary>
${{ steps.generate-x-rays.outputs.body }}
</details>
edit-mode: replace

View File

@@ -3,7 +3,7 @@ name: Release Packages
on:
push:
tags:
- "v*"
- 'v*'
workflow_dispatch:
inputs:
@@ -32,8 +32,8 @@ jobs:
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3.4.1
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -86,9 +86,9 @@ jobs:
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -141,9 +141,9 @@ jobs:
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -196,9 +196,9 @@ jobs:
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -251,9 +251,9 @@ jobs:
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -306,9 +306,9 @@ jobs:
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -345,10 +345,10 @@ jobs:
run: pnpm --filter lucide-angular build
- name: Test
run: pnpm --filter lucide-angular test:headless
run: pnpm --filter lucide-angular test
- name: Publish
run: pnpm --filter lucide-angular publish dist --no-git-checks
run: pnpm --filter lucide-angular publish --no-git-checks --ignore-scripts
- name: Upload package.json
uses: actions/upload-artifact@v2
@@ -361,9 +361,9 @@ jobs:
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -411,14 +411,69 @@ jobs:
name: lucide-preact-package-json
path: packages/lucide-preact/package.json
lucide-solid:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
with:
version: 7
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set Auth Token
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
- name: Set package.json version lucide
run: pnpm --filter lucide-solid version --new-version ${{ needs.pre-build.outputs.VERSION }} --no-git-tag-version
- name: Build
run: pnpm --filter lucide-solid build
- name: Test
run: pnpm --filter lucide-solid test
- name: Publish
run: pnpm --filter lucide-solid publish --no-git-checks
- name: Upload package.json
uses: actions/upload-artifact@v2
with:
name: lucide-solid-package-json
path: packages/lucide-solid/package.json
lucide-svelte:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -471,10 +526,10 @@ jobs:
runs-on: ubuntu-latest
needs: [pre-build, lucide-font]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/download-artifact@v2
- uses: actions/setup-node@v3.4.1
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -526,8 +581,9 @@ jobs:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: pre-build
container: ericfennis/lucide-font:latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3.4.1
with:
node-version: 16
@@ -552,37 +608,17 @@ jobs:
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install FontForge
run: sudo apt-get install zlib1g-dev fontforge
- name: Clone sfnt2woff-zopfli repo
run: git clone https://github.com/bramstein/sfnt2woff-zopfli.git sfnt2woff-zopfli
- name: Install and move sfnt2woff-zopfli
run: |
cd sfnt2woff-zopfli
make
sudo mv sfnt2woff-zopfli /usr/local/bin/sfnt2woff
- name: Clone woff2
run: git clone --recursive https://github.com/google/woff2.git
- name: Install woff2
run: |
cd woff2
sudo make clean all
sudo mv woff2_compress /usr/local/bin/ && sudo mv woff2_decompress /usr/local/bin/
- name: Install Font Custom dependency
run: sudo gem install fontcustom
- name: Install dependencies
run: pnpm install
run: pnpm install --filter outline-svg
- name: Build Icon Font
run: |
mkdir lucide-font
pnpm build:outline-icons --outputDir=converted_icons && fontcustom compile "./converted_icons" -h -n "lucide" -o ./lucide-font -F
- name: Outline svg Icons
run: pnpm build:outline-icons
- name: Create directory
run: mkdir lucide-font
- name: Build font
run: fontcustom compile "./outlined" -h -n "lucide" -o ./lucide-font -F
- name: "Upload to Artifacts"
uses: actions/upload-artifact@v1
@@ -597,7 +633,7 @@ jobs:
container:
image: cirrusci/flutter:latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/download-artifact@v2
- uses: actions/cache@v2
with:
@@ -680,13 +716,14 @@ jobs:
]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/download-artifact@v2
- name: Commit package files
run: |
mv lucide-package-json/package.json packages/lucide/package.json
mv lucide-react-package-json/package.json packages/lucide-react/package.json
mv lucide-react-native-package-json/package.json packages/lucide-react-native/package.json
mv lucide-vue-package-json/package.json packages/lucide-vue/package.json
mv lucide-preact-package-json/package.json packages/lucide-preact/package.json
mv lucide-svelte-package-json/package.json packages/lucide-svelte/package.json

18
.gitignore vendored
View File

@@ -12,6 +12,24 @@ stash
coverage
stats
*.log
outlined
packages/**/src/icons/*.js
packages/**/src/icons/*.ts
packages/**/src/icons/*.tsx
packages/**/src/aliases.ts
packages/**/LICENSE
categories.json
tags.json
.vercel
# docs
docs/.vitepress/cache
docs/.vitepress/dist
docs/.vitepress/.temp
docs/.vitepress/data/iconNodes
docs/.vitepress/data/iconMetaData.ts
docs/.vitepress/data/releaseMetaData.json
docs/.vitepress/data/releaseMetaData
docs/.vitepress/data/relatedIcons.json
docs/.vercel
docs/.nitro

5
.husky/pre-commit Executable file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
pnpm lint-staged
pnpm checkIcons

15
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,15 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}

7
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"cSpell.words": [
"devs",
"preact",
"Preact"
]
}

View File

@@ -10,13 +10,13 @@ The following is a set of guidelines for contributing to Lucide. Feel free to pr
Feel free to open a pull-request to contribute to this project.
**Working on your first Pull Request?** You can learn how from this *free* series
[How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
[How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github)
Guidelines for pull requests:
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves wont make apparent.
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `master` branch.
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `main` branch.
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
### Pull Requests Including Icons
@@ -25,28 +25,21 @@ Guidelines for pull requests:
Please make sure you follow the icon guidelines, that should be followed to keep quality and consistency when making icons for Lucide.
Read it here: [ICON_GUIDELINES](docs/ICON_DESIGN_GUIDE.md).
Read it here: [ICON_GUIDELINES](https://lucide.dev/docs/icon-design-guide).
### Templates
### Editor guides
Here you can find templates and instructions on how to implement the guidelines with different programs.
Here you can find instructions on how to implement the guidelines with different vector graphics editors:
#### Adobe Illustrator
#### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
`Template`: You can find a template for Adobe Illustrator under `/docs/templates/illustrator-template.ai`.
`Instructions`: You can find the [Illustrator Guide](/docs/ILLUSTRATOR_GUIDE.md) and how to work with the template in `/docs/ILLUSTRATOR_GUIDE.md`.
You can also [download an Adobe Illustrator template](https://lucide.dev/templates/illustrator-template.ai).
#### Inkscape
#### [Inkscape Guide](https://lucide.dev/docs/inkscape-guide)
`Template`: None
`Instructions`: You can find the [Inkscape Guide](/docs/INKSCAPE_GUIDE.md) and how to set up Inkscape under `/docs/INKSCAPE_GUIDE.md`.
#### [Figma Guide](https://lucide.dev/docs/figma-guide)
#### Figma
`Template`: None
`Instructions`: You can find the [Figma Guide](/docs/FIGMA_GUIDE.md) and how to set up Figma under `/docs/FIGMA_GUIDE.md`.
#### Submitting Multiple Icons
### Submitting Multiple Icons
If you want submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keep the thread clean and scoped.
So don't submit multiple icons in one PR that have noting to do with each other.
@@ -65,21 +58,22 @@ If you are a designer who wants to contribute to Lucide but you don't know what
## Development
You will need minimum version of [Nodejs 16+](https://nodejs.org)
For packagemanagement you will need [yarn v1](https://yarnpkg.com/getting-started/install).
You will need minimum version of [Nodejs 16.4+](https://nodejs.org)
For package management you will need [PNPM](https://pnpm.io/installation).
For flutter package development, you need [Flutter 1.17+](https://docs.flutter.dev/get-started/install).
After cloning the project you need to run:
```sh
yarn # Install dependencies, including the workspace packages
pnpm install # Install dependencies, including the workspace packages
```
### Packages -> PNPM Workspaces
To distribute different packages we use PNPM workspaces. Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/lang/en/docs/workspaces).
To distribute different packages we use PNPM workspaces. Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/lang/enhttps://lucide.dev/docs/workspaces).
The configured directory for workspaces is the [packages](./packages) directory, located in the root directory. There you will find all the current packages from lucide.
There are more workspaces defined, see [`pnpm-workspace.yaml`](./pnpm-workspace.yaml).
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing.
@@ -178,11 +172,11 @@ Includes usefully scripts to automate certain jobs. Big part of the scripts is t
### site
The lucide.dev website using [Nextjs](https://nextjs.org).
The lucide.dev website is using [vitepress](https://vitepress.dev/) to generate the static website. The markdown files are located in the docs directory.
## Documentation
The documentation files are located in the [docs](./docs) directory. All these markdown files will be loaded in the build of the lucide.dev website.
The documentation files are located in the [docs](https://github.com/lucide-icons/lucide/tree/main/docs) directory. All these markdown files will be loaded in the build of the lucide.dev website.
Feel free to write, adjust or add new markdown files to improve our documentation.

149
README.md
View File

@@ -1,15 +1,15 @@
<p align=center><img width="410" src="https://lucide.dev/logo-text.svg" alt="Lucide Logo"></p>
<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/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/lucide" alt="license"></a>
<a href="https://www.npmjs.com/package/lucide"><img src="https://img.shields.io/npm/v/lucide" alt="npm package"></a>
<a href="https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons"><img src="https://img.shields.io/endpoint?logo=figma&label=installs&url=https://yuanqing.github.io/figma-plugins-stats/plugin/939567362549682242/installs.json" alt="figma installs"></a>
<a href="https://github.com/lucide-icons/lucide/actions/workflows/release.yml"><img src="https://github.com/lucide-icons/lucide/actions/workflows/release.yml/badge.svg" alt="build status"></a>
<a href="https://discord.gg/EH6nSts"><img src="https://img.shields.io/discord/723074157486800936?label=chat&logo=discord&logoColor=%23ffffff&colorB=%237289DA" alt="discord chat"></a>
</p>
# Lucide
![NPM](https://img.shields.io/npm/l/lucide)
[![npm](https://img.shields.io/npm/v/lucide)](https://www.npmjs.com/package/lucide)
[![installs](https://img.shields.io/endpoint?logo=figma&label=installs&url=https://yuanqing.github.io/figma-plugins-stats/plugin/939567362549682242/installs.json)](https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons)
[![Discord](https://img.shields.io/discord/723074157486800936?label=chat&logo=discord&logoColor=%23ffffff&colorB=%237289DA)](https://discord.gg/EH6nSts)
## What is Lucide?
Lucide is a community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
Community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
It began after growing disaffection with the [Feather Icons](https://github.com/feathericons/feather) project moderation. With over 300+ open issues and over 100+ open PRs, the Feather Icons project has been abandoned. This unfortunately means that hundreds of developers and designers wasted their time contributing to Feather Icons with no chance of PRs being accepted.
@@ -17,30 +17,34 @@ Lucide is trying to expand the icon set as much as possible while staying faithf
### Why choose Lucide over Feather Icons
- Lucide already expanded the icon set by 130+ in less than a year, so more icons to work with.
- More icons to work with: Lucide already has hundreds of icons more than Feather does.
- Official librairies and integrations with popular frameworks and design tools.
- Well maintained code base.
- Active community.
- Active community, regularly growing and improving the set.
## Table of Contents
* [Installation](#installation)
* [Package managers](#package-managers)
* [CDN](#cdn)
* [Usage](#usage)
* [Web](#web)
* [React](#react)
* [React Native](#react-native)
* [Vue 2](#vue-2)
* [Vue 3](#vue-3)
* [Angular](#angular)
* [Preact](#preact)
* [Static](#static-svg-sprite-font-icons-)
* [Figma](#figma)
* [Laravel](#laravel)
* [Flutter](#flutter)
* [Contributing](#contributing)
* [Community](#community)
* [License](#license)
- [Usage](#usage)
- [Web](#web)
- [React](#react)
- [React Native](#react-native)
- [Vue 2](#vue-2)
- [Vue 3](#vue-3)
- [Angular](#angular)
- [Preact](#preact)
- [Static (svg sprite, font, icons ..)](#static-svg-sprite-font-icons-)
- [Figma](#figma)
- [Laravel](#laravel)
- [Flutter](#flutter)
- [Svelte](#svelte)
- [Solid](#solid)
- [Hyva](#hyva)
- [Eleventy](#eleventy)
- [Contributing](#contributing)
- [Community](#community)
- [License](#license)
- [Credits](#credits)
- [Sponsors](#sponsors)
## Usage
@@ -55,9 +59,11 @@ Implementation of the lucide icon library for web applications.
```sh
npm install lucide
```
#or
or
```sh
yarn add lucide
```
@@ -69,9 +75,11 @@ Implementation of the lucide icon library for react applications.
```sh
yarn add lucide-react
```
# or
or
```sh
npm install lucide-react
```
@@ -83,13 +91,15 @@ Implementation of the lucide icon library for React Native applications.
```sh
yarn add lucide-react-native
```
# or
or
```sh
npm install lucide-react-native
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/master/packages/lucide-react-native#lucide-react-native).
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-react-native#lucide-react-native).
### Vue 2
@@ -97,9 +107,11 @@ Implementation of the lucide icon library for vue applications.
```sh
yarn add lucide-vue
```
# or
or
```sh
npm install lucide-vue
```
@@ -111,9 +123,11 @@ Implementation of the lucide icon library for vue applications.
```sh
yarn add lucide-vue-next
```
# or
or
```sh
npm install lucide-vue-next
```
@@ -123,9 +137,11 @@ For more details, see the [documentation](https://github.com/lucide-icons/lucide
```sh
yarn add lucide-angular
```
# or
or
```sh
npm install lucide-angular
```
@@ -137,9 +153,11 @@ Implementation of the lucide icon library for preact applications.
```sh
yarn add lucide-preact
```
# or
or
```sh
npm install lucide-preact
```
@@ -156,9 +174,11 @@ NPM package
```sh
yarn add lucide-static
```
# or
or
```sh
npm install lucide-static
```
@@ -190,6 +210,58 @@ flutter pub add lucide_icons
For more details, see the [pub.dev](https://pub.dev/packages/lucide_icons).
### Svelte
Implementation of the lucide icon library for Svelte applications.
```sh
yarn add lucide-svelte
```
or
```sh
npm install lucide-svelte
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-svelte#lucide-svelte).
### Solid
Implementation of the lucide icon library for solid applications.
```sh
yarn add lucide-solid
```
or
```sh
npm install lucide-solid
```
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-solid#lucide-solid).
### Hyva
Implementation of Lucide icon's using Hyvä's svg php viewmodal to render icons for Magento 2 Hyva theme based projects.
```sh
composer require siteation/magento2-hyva-icons-lucide
```
For more details, see the [documentation](https://github.com/Siteation/magento2-hyva-icons-lucide/blob/main/README.md).
### Eleventy
Using this plugin, Eleventy projects can incorporate Lucide icons. it makes it simple to use Lucide icons into your themes via shortcodes, improving your website's overall usability and visual appeal.
```sh
npm install @grimlink/eleventy-plugin-lucide-icons
```
For more details, see the [documentation](https://github.com/GrimLink/eleventy-plugin-lucide-icons/blob/main/README.md).
## Contributing
For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
@@ -216,4 +288,3 @@ Thank you to all the people who contributed to Lucide!
<a href="https://vercel.com?utm_source=lucide&utm_campaign=oss">
<img src="./site/public/vercel.svg" alt="Powered by Vercel" width="200" />
</a>

View File

@@ -1,20 +0,0 @@
module.exports = {
presets: ['@babel/env'],
// babelrcRoots: ['.', './packages/*'],
env: {
test: {
presets: ['@babel/env'],
plugins: ['@babel/plugin-transform-runtime'],
},
dev: {
plugins: [
[
'transform-inline-environment-variables',
{
include: ['NODE_ENV'],
},
],
],
},
},
};

View File

@@ -1,19 +0,0 @@
{
"arrows": [],
"brands": [],
"code": [],
"connectivity": ["airplay"],
"cursors": [],
"development": [],
"devices": ["alarm-clock"],
"file-system": [],
"layout": [],
"maths": ["activity"],
"multimedia": [],
"notifications": ["alert-circle", "alert-octagon", "alert-triangle"],
"nature": [],
"shopping": [],
"shapes": [],
"sports": [],
"text-edit": ["align-center","align-right","align-left","align-justify" ]
}

View File

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

5
categories/account.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Accounts & access",
"icon": "user"
}

5
categories/animals.json Normal file
View File

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

5
categories/arrows.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Arrows",
"icon": "arrow-left-right"
}

5
categories/brands.json Normal file
View File

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

View File

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

5
categories/charts.json Normal file
View File

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

View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Communication",
"icon": "message-circle"
}

View File

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

5
categories/currency.json Normal file
View File

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

5
categories/cursors.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Cursors",
"icon": "mouse-pointer-2"
}

5
categories/design.json Normal file
View File

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

View File

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

5
categories/devices.json Normal file
View File

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

5
categories/emoji.json Normal file
View File

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

5
categories/files.json Normal file
View File

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

View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Food & beverage",
"icon": "coffee"
}

View File

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

5
categories/gaming.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Gaming",
"icon": "gamepad-2"
}

5
categories/home.json Normal file
View File

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

5
categories/layout.json Normal file
View File

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

5
categories/mail.json Normal file
View File

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

5
categories/maps.json Normal file
View File

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

5
categories/maths.json Normal file
View File

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

5
categories/medical.json Normal file
View File

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

5
categories/money.json Normal file
View File

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

View File

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

5
categories/nature.json Normal file
View File

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

View File

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

View File

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

5
categories/people.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "People",
"icon": "person-standing"
}

View File

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

5
categories/science.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Science",
"icon": "flask-conical"
}

5
categories/seasons.json Normal file
View File

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

5
categories/security.json Normal file
View File

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

5
categories/shapes.json Normal file
View File

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

5
categories/shopping.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Shopping",
"icon": "shopping-bag"
}

5
categories/social.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Social",
"icon": "thumbs-up"
}

5
categories/sports.json Normal file
View File

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

View File

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

5
categories/text.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Text formatting",
"icon": "type"
}

5
categories/time.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Time & calendar",
"icon": "calendar"
}

5
categories/tools.json Normal file
View File

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

View File

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

5
categories/travel.json Normal file
View File

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

5
categories/weather.json Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Weather",
"icon": "cloud-sun"
}

34
category.schema.json Normal file
View File

@@ -0,0 +1,34 @@
{
"$id": "https://lucide.dev/category.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/applicator": true,
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true,
"https://json-schema.org/draft/2020-12/vocab/meta-data": true,
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
"https://json-schema.org/draft/2020-12/vocab/content": true
},
"title": "Lucide Icons category schema",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"icon": {
"type": "string"
},
"weight": {
"type": "integer"
}
},
"required": [
"title",
"icon"
],
"description": "A JSON Schema for categories defined by Lucide Icons."
}

View File

@@ -0,0 +1,41 @@
import { eventHandler, setResponseHeader, defaultContentType } from 'h3'
import { renderToString, renderToStaticMarkup } from 'react-dom/server'
import { createElement } from 'react'
import SvgPreview from '../../lib/SvgPreview/index.tsx';
import iconNodes from '../../data/iconNodes'
import createLucideIcon from 'lucide-react/src/createLucideIcon'
import Backdrop from '../../lib/SvgPreview/Backdrop.tsx';
export default eventHandler((event) => {
const { params } = event.context
const [name, svgData] = params.data.split('/');
const data = svgData.slice(0, -4);
const src = Buffer.from(data, 'base64').toString('utf8');
const children = []
if (name in iconNodes) {
const iconNode = iconNodes[name]
const LucideIcon = createLucideIcon(name, iconNode)
const svg = renderToStaticMarkup(createElement(LucideIcon))
const backdropString = svg.replace(/<svg[^>]*>|<\/svg>/g, '');
children.push(createElement(Backdrop, { backdropString, src }))
}
const svg = Buffer.from(
// We can't use jsx here, is not supported here by nitro.
renderToString(createElement(SvgPreview, {src, showGrid: true}, children)).replace(
/>/,
'><style>@media screen and (prefers-color-scheme: dark) { svg { stroke: #fff } }</style>'
)
).toString('utf8');
defaultContentType(event, 'image/svg+xml')
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000')
return svg
})

View File

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

View File

@@ -0,0 +1,29 @@
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 withUniqueKeys = query.withUniqueKeys === 'true'
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400')
if (withUniqueKeys) {
return iconNodes
}
return Object.entries(iconNodes).reduce((acc, [name, iconNode]) => {
if (withUniqueKeys) {
return [name, iconNode]
}
const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs}]) => {
return [name, attrs]
})
acc[name] = newIconNode
return acc
}, {})
})

View File

@@ -0,0 +1,44 @@
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 iconNode = iconNodes[params.iconName]
if (iconNode == null) {
const error = createError({
statusCode: 404,
message: `Icon "${params.iconName}" not found`,
})
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 LucideIcon = createLucideIcon(params.iconName, iconNode)
const svg = Buffer.from(
renderToString(
createElement(LucideIcon, {
width,
height,
color: color ? `#${color}` : undefined,
strokeWidth,
}
))
).toString('utf8');
defaultContentType(event, 'image/svg+xml')
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000')
return svg
})

View File

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

View File

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

160
docs/.vitepress/config.ts Normal file
View File

@@ -0,0 +1,160 @@
import { fileURLToPath, URL } from 'node:url'
import path from 'path';
import { defineConfig } from 'vitepress'
import { createWriteStream } from 'node:fs'
import { resolve } from 'node:path'
import { SitemapStream } from 'sitemap'
import sidebar from './sidebar';
const links = []
const title = "Lucide";
const socialTitle = "Lucide Icons";
const description = "Beautiful & consistent icon toolkit made by the community."
// https://vitepress.dev/reference/site-config
export default defineConfig({
title,
description,
cleanUrls: true,
outDir: '.vercel/output/static',
vite: {
resolve: {
alias: [
{
find: /^.*\/VPIconAlignLeft\.vue$/,
replacement: fileURLToPath(
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)
)
}
]
}
},
head: [
[ 'script', {
src: 'https://plausible.io/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'
},
nav: [
{ text: 'Icons', link: '/icons/' },
{ text: 'Guide', link: '/guide/' },
{ text: 'Packages', link: '/packages' },
{ text: 'License', link: '/license' },
],
sidebar,
socialLinks: [
{ icon: 'github', link: 'https://github.com/lucide-icons/lucide' },
{ icon: 'discord', link: 'https://discord.gg/EH6nSts' }
],
footer: {
message: 'Released under the ISC License.',
copyright: `Copyright © ${new Date().getFullYear()} Lucide Contributors`
},
editLink: {
pattern: 'https://github.com/lucide-icons/lucide/edit/main/docs/:path'
},
},
transformHtml: (_, id, { pageData }) => {
if (/[\\/]404\.html$/.test(id)) {
return
}
if (pageData.relativePath === 'index.md') {
console.log('Home!');
}
if (pageData.relativePath.startsWith('icons/')) {
links.push({
url: pageData.relativePath.replace(/((^|\/)index)?\.md$/, '$2'),
lastmod: pageData?.params?.changedRelease?.date
})
return
}
links.push({
url: pageData.relativePath.replace(/((^|\/)index)?\.md$/, '$2'),
lastmod: pageData.lastUpdated
})
},
buildEnd: async ({ outDir }) => {
const sitemap = new SitemapStream({
hostname: 'https://lucide.dev/'
})
const writeStream = createWriteStream(resolve(outDir, 'sitemap.xml'))
sitemap.pipe(writeStream)
links.forEach((link) => sitemap.write(link))
sitemap.end()
await new Promise((r) => writeStream.on('finish', r))
},
})

View File

@@ -0,0 +1,89 @@
{
"lucide": {
"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" }
]
},
"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" }
]
},
"lucide-vue": {
"order": 2,
"icon": "vue",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-vue", "href": "https://www.npmjs.com/package/lucide-vue" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-vue", "href": "https://www.npmjs.com/package/lucide-vue" }
]
},
"lucide-vue-next": {
"order": 3,
"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" }
]
},
"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" }
]
},
"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" }
]
},
"lucide-preact": {
"order": 5,
"icon": "preact",
"shields": [
{ "alt": "npm", "src": "https://img.shields.io/npm/v/lucide-preact", "href": "https://www.npmjs.com/package/lucide-preact" },
{ "alt": "npm", "src": "https://img.shields.io/npm/dw/lucide-preact", "href": "https://www.npmjs.com/package/lucide-preact" }
]
},
"lucide-react-native": {
"order": 6,
"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" }
]
},
"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" }
]
},
"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" }
]
}
}

View File

@@ -0,0 +1,80 @@
[
{
"name": "blade-lucide-icons",
"description": "Implementation of Lucide icon's using blade-icons for Laravel based projects.",
"icon": "/framework-logos/laravel.svg",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/packagist/v/mallardduck/blade-lucide-icons",
"href": "https://packagist.org/packages/mallardduck/blade-lucide-icons"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/packagist/dt/mallardduck/blade-lucide-icons",
"href": "https://packagist.org/packages/mallardduck/blade-lucide-icons"
}
],
"source": "https://github.com/mallardduck/blade-lucide-icons",
"documentation": "https://github.com/mallardduck/blade-lucide-icons/blob/main/README.md"
},
{
"name": "hyva-lucide-icons",
"description": "Implementation of Lucide icon's using Hyvä's svg php viewmodal to render icons for Magento 2 Hyva theme based projects.",
"icon": "/framework-logos/hyva.svg",
"iconDark": "/framework-logos/hyva-dark.svg",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/packagist/v/siteation/magento2-hyva-icons-lucide",
"href": "https://packagist.org/packages/siteation/magento2-hyva-icons-lucide"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/packagist/dt/siteation/magento2-hyva-icons-lucide",
"href": "https://packagist.org/packages/siteation/magento2-hyva-icons-lucide"
}
],
"source": "https://github.com/siteation/magento2-hyva-icons-lucide",
"documentation": "https://github.com/siteation/magento2-hyva-icons-lucide/blob/main/README.md"
},
{
"name": "eleventy-lucide-icons",
"description": "Using this plugin, Eleventy projects can incorporate Lucide icons. it makes it simple to use Lucide icons into your themes via shortcodes, improving your website's overall usability and visual appeal.",
"icon": "/framework-logos/11ty.svg",
"iconClass": "package-icon-invert",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/npm/v/@grimlink/eleventy-plugin-lucide-icons",
"href": "https://www.npmjs.com/package/@grimlink/eleventy-plugin-lucide-icons"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/npm/dw/@grimlink/eleventy-plugin-lucide-icons",
"href": "https://www.npmjs.com/package/@grimlink/eleventy-plugin-lucide-icons"
}
],
"source": "https://github.com/GrimLink/eleventy-plugin-lucide-icons",
"documentation": "https://github.com/GrimLink/eleventy-plugin-lucide-icons/blob/main/README.md"
},
{
"name": "nuxt-lucide-icons",
"description": "Using this module, Nuxt projects can incorporate Lucide icons. It is fully configurable and supports auto imports and tree-shaking.",
"icon": "/framework-logos/nuxt.svg",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/npm/v/nuxt-lucide-icons",
"href": "https://www.npmjs.com/package/nuxt-lucide-icons"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/npm/dw/nuxt-lucide-icons",
"href": "https://www.npmjs.com/package/nuxt-lucide-icons"
}
],
"source": "https://github.com/swisnl/nuxt-lucide-icons",
"documentation": "https://github.com/swisnl/nuxt-lucide-icons/blob/main/README.md"
}
]

View File

@@ -0,0 +1,71 @@
import React from 'react';
interface BackdropProps {
src: string
backdropString: string
}
const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
return (
<>
<defs xmlns="http://www.w3.org/2000/svg">
<pattern
id="pattern"
width=".1"
height=".1"
patternUnits="userSpaceOnUse"
patternTransform="rotate(45 50 50)"
>
<line stroke="red" strokeWidth={0.1} y2={1} />
<line stroke="red" 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>
<mask id="svg-preview-backdrop-mask-fill" maskUnits="userSpaceOnUse">
<g stroke="#fff" dangerouslySetInnerHTML={{ __html: backdropString }} />
<g dangerouslySetInnerHTML={{ __html: src }} strokeWidth={2.05} />
<g strokeWidth={1.75} dangerouslySetInnerHTML={{ __html: backdropString }} />
</mask>
<g
strokeWidth={2.25}
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>
<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="red"
opacity={0.5}
stroke="none"
mask={'url(#svg-preview-backdrop-mask-fill)'}
/>
</>
)
}
export default Backdrop;

View File

@@ -0,0 +1,265 @@
import React from 'react';
import { PathProps, Path } from './types';
import { getPaths, assert } from './utils';
const Grid = ({
radius,
fill,
...props
}: {
strokeWidth: number;
radius: number;
} & PathProps<'stroke', 'strokeWidth'>) => (
<g className="svg-preview-grid-group" strokeLinecap="butt" {...props}>
<rect
width={24 - props.strokeWidth}
height={24 - props.strokeWidth}
x={props.strokeWidth / 2}
y={props.strokeWidth / 2}
rx={radius}
fill={fill}
/>
<path
d={
props.d ||
new Array(Math.floor(24 - 1))
.fill(null)
.flatMap((_, i) => [
`M${props.strokeWidth} ${i + 1}h${24 - props.strokeWidth * 2}`,
`M${i + 1} ${props.strokeWidth}v${24 - props.strokeWidth * 2}`,
])
.join('')
}
/>
</g>
);
const Shadow = ({
radius,
paths,
...props
}: {
radius: number;
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[]>)
);
return (
<>
<g className="svg-preview-shadow-mask-group" {...props}>
{groupedPaths.map(([id, paths]) => (
<mask
id={`svg-preview-shadow-mask-${id}`}
maskUnits="userSpaceOnUse"
strokeOpacity="1"
strokeWidth={props.strokeWidth}
stroke="#000"
>
<rect x={0} y={0} width={24} height={24} fill="#fff" stroke="none" rx={radius} />
<path
d={paths
.flatMap(({ prev, next }) => [
`M${prev.x} ${prev.y}h.01`,
`M${next.x} ${next.y}h.01`,
])
.filter((val, idx, arr) => arr.indexOf(val) === idx)
.join('')}
/>
</mask>
))}
</g>
<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
d={paths
.flatMap(({ prev, next }) => [`M${prev.x} ${prev.y}h.01`, `M${next.x} ${next.y}h.01`])
.filter((val, idx, arr) => arr.indexOf(val) === idx)
.join('')}
/>
</g>
</>
);
};
const ColoredPath = ({
colors,
paths,
...props
}: { paths: Path[]; colors: string[] } & PathProps<never, 'd' | 'stroke'>) => (
<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]} />
))}
</g>
);
const ControlPath = ({
paths,
radius,
pointSize,
...props
}: { pointSize: number; paths: Path[]; radius: number } & PathProps<
'stroke' | 'strokeWidth',
'd'
>) => {
const controlPaths = paths.map((path, i) => {
const element = paths.filter((p) => p.c.id === path.c.id);
const lastElement = element.at(-1)?.next;
assert(lastElement);
const isClosed = element[0].prev.x === lastElement.x && element[0].prev.y === lastElement.y;
const showMarker = !['rect', 'circle', 'ellipse'].includes(path.c.name);
return {
...path,
showMarker,
startMarker: showMarker && path.isStart && !isClosed,
endMarker: showMarker && paths[i + 1]?.isStart !== false && !isClosed,
};
});
return (
<>
<g
className="svg-preview-control-path-marker-mask-group"
strokeWidth={pointSize}
stroke="#000"
>
{controlPaths.map(({ prev, next, showMarker }, i) => {
return (
showMarker && (
<mask
id={`svg-preview-control-path-marker-mask-${i}`}
key={i}
maskUnits="userSpaceOnUse"
>
<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>
)
);
})}
</g>
<g className="svg-preview-control-path-group" {...props}>
{controlPaths.map(({ d, showMarker }, i) => (
<path
key={i}
mask={showMarker ? `url(#svg-preview-control-path-marker-mask-${i})` : undefined}
d={d}
/>
))}
</g>
<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`] : []
)
.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} />}
</React.Fragment>
))}
</g>
</>
);
};
const Radii = ({
paths,
...props
}: { paths: Path[] } & PathProps<
'strokeWidth' | 'stroke' | 'strokeDasharray' | 'strokeOpacity',
any
>) => {
return (
<g className="svg-preview-radii-group" {...props}>
{paths
.filter(({ circle }) => circle)
.map(({ c, prev, next, circle: { x, y, r } }) =>
c.name === 'circle' ? (
<path d={`M${x} ${y}h.01`} />
) : (
<>
<path d={`M${prev.x} ${prev.y} ${x} ${y} ${next.x} ${next.y}`} />
<circle cy={y} cx={x} r={r} />
</>
)
)}
</g>
);
};
const SvgPreview = React.forwardRef<
SVGSVGElement,
{
src: string | ReturnType<typeof getPaths>;
showGrid?: boolean;
} & React.SVGProps<SVGSVGElement>
>(({ src, children, showGrid = false, ...props }, ref) => {
const paths = typeof src === 'string' ? getPaths(src) : src;
const darkModeCss = `@media screen and (prefers-color-scheme: dark) {
.svg-preview-grid-group,
.svg-preview-radii-group,
.svg-preview-shadow-mask-group,
.svg-preview-shadow-group {
stroke: #fff;
}
}`;
return (
<svg
ref={ref}
xmlns="http://www.w3.org/2000/svg"
width={24}
height={24}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth={2}
strokeLinecap="round"
strokeLinejoin="round"
{...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} />
<ColoredPath
paths={paths}
colors={[
'#1982c4',
'#4267AC',
'#6a4c93',
'#B55379',
'#FF595E',
'#FF7655',
'#ff924c',
'#FFAE43',
'#ffca3a',
'#C5CA30',
'#8ac926',
'#52A675',
]}
/>
<Radii
paths={paths}
strokeWidth={0.12}
strokeDasharray="0 0.25 0.25"
stroke="#777"
strokeOpacity={0.3}
/>
<ControlPath radius={1} paths={paths} pointSize={1} stroke="#fff" strokeWidth={0.125} />
{children}
</svg>
);
});
export default SvgPreview;

View File

@@ -0,0 +1,22 @@
import { SVGProps } from 'react';
import { getCommands } from './utils';
export type Point = { x: number; y: number };
export type Path = {
d: string;
prev: Point;
next: Point;
isStart: boolean;
circle: { x: number; y: number; r: number };
c: ReturnType<typeof getCommands>[number];
};
export type PathProps<
RequiredProps 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>,
RequiredProps & NeverProps
>;

View File

@@ -0,0 +1,286 @@
import { INode, parseSync } from 'svgson';
import toPath from 'element-to-path';
import { SVGPathData, encodeSVGPath } from 'svg-pathdata';
import { Path, Point } from './types';
function assertNever(x: never): never {
throw new Error('Unknown type: ' + x['type']);
}
export function assert(value: unknown): asserts value {
if (value === undefined) {
throw new Error('value must be defined');
}
}
const convertToPathNode = (node: INode): { d: string; name: typeof node.name } => {
if (node.name === 'path') {
return { d: node.attributes.d, name: node.name };
}
if (node.name === 'circle') {
const cx = parseFloat(node.attributes.cx);
const cy = parseFloat(node.attributes.cy);
const r = parseFloat(node.attributes.r);
return {
d: [
`M ${cx} ${cy - r}`,
`a ${r} ${r} 0 0 1 ${r} ${r}`,
`a ${r} ${r} 0 0 1 ${0 - r} ${r}`,
`a ${r} ${r} 0 0 1 ${0 - r} ${0 - r}`,
`a ${r} ${r} 0 0 1 ${r} ${0 - r}`,
].join(''),
name: node.name,
};
}
return { d: toPath(node).replace(/z$/i, ''), name: node.name };
};
const extractNodes = (node: INode): INode[] => {
if (['rect', 'circle', 'ellipse', 'polygon', 'polyline', 'line', 'path'].includes(node.name)) {
return [node];
} else if (node.children && Array.isArray(node.children)) {
return node.children.flatMap(extractNodes);
}
return [];
};
export const getNodes = (src: string) =>
extractNodes(parseSync(src.includes('<svg') ? src : `<svg>${src}</svg>`));
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 }))
);
export const getPaths = (src: string) => {
const commands = getCommands(src.includes('<svg') ? src : `<svg>${src}</svg>`);
const paths: Path[] = [];
let prev: Point | undefined = undefined;
let start: Point | undefined = undefined;
const addPath = (
c: typeof commands[number],
next: Point,
d?: string,
circle?: Path['circle']
) => {
assert(prev);
paths.push({
c,
d: d || `M ${prev.x} ${prev.y} L ${next.x} ${next.y}`,
prev,
next,
circle,
isStart: start === prev,
});
prev = next;
};
let prevCP: Point | undefined = undefined;
for (let i = 0; i < commands.length; i++) {
const previousCommand = commands[i - 1];
const c = commands[i];
switch (c.type) {
case SVGPathData.MOVE_TO: {
prev = c;
start = c;
break;
}
case SVGPathData.LINE_TO: {
assert(prev);
addPath(c, c);
break;
}
case SVGPathData.HORIZ_LINE_TO: {
assert(prev);
addPath(c, { x: c.x, y: prev.y });
break;
}
case SVGPathData.VERT_LINE_TO: {
assert(prev);
addPath(c, { x: prev.x, y: c.y });
break;
}
case SVGPathData.CLOSE_PATH: {
assert(prev);
assert(start);
addPath(c, start);
start = undefined;
break;
}
case SVGPathData.CURVE_TO: {
assert(prev);
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`);
break;
}
case SVGPathData.SMOOTH_CURVE_TO: {
assert(prev);
assert(previousCommand);
const reflectedCp1 = {
x:
previousCommand &&
(previousCommand.type === SVGPathData.SMOOTH_CURVE_TO ||
previousCommand.type === SVGPathData.CURVE_TO)
? previousCommand.relative
? previousCommand.x2 - previousCommand.x
: previousCommand.x2 - prev.x
: 0,
y:
previousCommand &&
(previousCommand.type === SVGPathData.SMOOTH_CURVE_TO ||
previousCommand.type === SVGPathData.CURVE_TO)
? previousCommand.relative
? previousCommand.y2 - previousCommand.y
: previousCommand.y2 - prev.y
: 0,
};
addPath(
c,
c,
`M ${prev.x} ${prev.y} ${encodeSVGPath({
type: SVGPathData.CURVE_TO,
relative: false,
x: c.x,
y: c.y,
x1: prev.x - reflectedCp1.x,
y1: prev.y - reflectedCp1.y,
x2: c.x2,
y2: c.y2,
})}`
);
break;
}
case SVGPathData.QUAD_TO: {
assert(prev);
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`);
break;
}
case SVGPathData.SMOOTH_QUAD_TO: {
assert(prev);
const backTrackCP = (
index: number,
currentPoint: { x: number; y: number }
): { x: number; y: number } => {
const previousCommand = commands[index - 1];
if (!previousCommand) {
return currentPoint;
}
if (previousCommand.type === SVGPathData.QUAD_TO) {
return {
x: previousCommand.relative
? currentPoint.x - (previousCommand.x1 - previousCommand.x)
: currentPoint.x - (previousCommand.x1 - currentPoint.x),
y: previousCommand.relative
? currentPoint.y - (previousCommand.y1 - previousCommand.y)
: currentPoint.y - (previousCommand.y1 - currentPoint.y),
};
}
if (previousCommand.type === SVGPathData.SMOOTH_QUAD_TO) {
if (!prevCP) {
return currentPoint;
}
return {
x: currentPoint.x - (prevCP.x - currentPoint.x),
y: currentPoint.y - (prevCP.y - currentPoint.y),
};
}
return currentPoint;
};
prevCP = backTrackCP(i, prev);
addPath(
c,
c,
`M ${prev.x} ${prev.y} ${encodeSVGPath({
type: SVGPathData.QUAD_TO,
relative: false,
x: c.x,
y: c.y,
x1: prevCP.x,
y1: prevCP.y,
})}`
);
break;
}
case SVGPathData.ARC: {
assert(prev);
const center = arcEllipseCenter(
prev.x,
prev.y,
c.rX,
c.rY,
c.xRot,
c.lArcFlag,
c.sweepFlag,
c.x,
c.y
);
addPath(
c,
c,
`M ${prev.x} ${prev.y} A${c.rX} ${c.rY} ${c.xRot} ${c.lArcFlag} ${c.sweepFlag} ${c.x} ${c.y}`,
c.rX === c.rY ? { ...center, r: c.rX } : undefined
);
break;
}
default: {
assertNever(c);
}
}
}
return paths;
};
export const arcEllipseCenter = (
x1: number,
y1: number,
rx: number,
ry: number,
a: number,
fa: number,
fs: number,
x2: number,
y2: number
) => {
const phi = (a * Math.PI) / 180;
const M = [
[Math.cos(phi), Math.sin(phi)],
[-Math.sin(phi), Math.cos(phi)],
];
const V = [(x1 - x2) / 2, (y1 - y2) / 2];
const [x1p, y1p] = [M[0][0] * V[0] + M[0][1] * V[1], M[1][0] * V[0] + M[1][1] * V[1]];
rx = Math.abs(rx);
ry = Math.abs(ry);
const lambda = (x1p * x1p) / (rx * rx) + (y1p * y1p) / (ry * ry);
if (lambda > 1) {
rx = Math.sqrt(lambda) * rx;
ry = Math.sqrt(lambda) * ry;
}
const sign = fa === fs ? -1 : 1;
const co =
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)
);
const V2 = [(rx * y1p) / ry, (-ry * x1p) / rx];
const Cp = [V2[0] * co, V2[1] * co];
const M2 = [
[Math.cos(phi), -Math.sin(phi)],
[Math.sin(phi), Math.cos(phi)],
];
const V3 = [(x1 + x2) / 2, (y1 + y2) / 2];
const C = [
M2[0][0] * Cp[0] + M2[0][1] * Cp[1] + V3[0],
M2[1][0] * Cp[0] + M2[1][1] * Cp[1] + V3[1],
];
return { x: C[0], y: C[1] };
};

View File

@@ -0,0 +1,28 @@
import fs from "fs";
import path from "path";
import {Category, IconEntity} from "../theme/types";
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 parsedFileContent = JSON.parse(fileContent)
return {
name,
title: parsedFileContent.title,
}
});
}
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)
}))
}

View File

@@ -0,0 +1,218 @@
import {
BUNDLED_LANGUAGES,
type IThemeRegistration
} from 'shiki'
import {
getHighlighter,
} from 'shiki-processor'
type CodeExampleType = {
title: string,
lang: string,
codes: {
language?: string,
code: string,
metastring?: string,
}[],
}[]
const getIconCodes = (): CodeExampleType => {
return [
{
lang: 'html',
title: 'HTML',
codes: [
{
language: 'html',
code: `<i data-lucide-name="Name"></i>
`,
},
],
},
{
lang: 'tsx',
title: 'React',
codes: [
{
language: 'tsx',
code: `import { PascalCase } from 'lucide-react';
const App = () => {
return (
<PascalCase />
);
};
export default App;
`,
},
],
},
{
lang: 'vue',
title: 'Vue 3',
codes: [
{
language: 'vue',
code: `<script setup>
import { PascalCase } from 'lucide-vue-next';
</script>
<template>
<PascalCase />
</template>
`,
},
],
},
{
lang: 'svelte',
title: 'Svelte',
codes: [
{
language: 'svelte',
code: `<script>
import { PascalCase } from 'lucide-svelte';
</script>
<PascalCase />
`,
},
],
},
{
lang: 'preact',
title: 'Preact',
codes: [
{
language: 'tsx',
code: `import { PascalCase } from 'lucide-preact';
const App = () => {
return (
<PascalCase />
);
};
export default App;
`,
},
],
},
{
lang: 'solid',
title: 'Solid',
codes: [
{
language: 'tsx',
code: `import { PascalCase } from 'lucide-solid';
const App = () => {
return (
<PascalCase />
);
};
export default App;
`,
},
],
},
{
lang: 'angular',
title: 'Angular',
codes: [
{
language: 'tsx',
code: `// app.module.ts
import { LucideAngularModule, PascalCase } from 'lucide-angular';
@NgModule({
imports: [
LucideAngularModule.pick({ PascalCase })
],
})
// app.component.html
<lucide-icon name="Name"></lucide-icon>
`,
},
],
},
{
lang: 'html',
title: 'Icon Font',
codes: [
{
language: 'html',
code: `<style>
@import ('~lucide-static/font/Lucide.css');
</style>
<div class="icon-Name"></div>
`,
},
],
},
{
lang: 'dart',
title: 'Flutter',
codes: [
{
language: 'dart',
code: `Icon(LucideIcons.Name);
`,
},
],
},
]
}
export type ThemeOptions =
| IThemeRegistration
| { light: IThemeRegistration; dark: IThemeRegistration }
const highLightCode = async (code: string, lang: string, active?: boolean) => {
const highlighter = await getHighlighter({
themes: ['material-theme-palenight'],
langs: [...BUNDLED_LANGUAGES],
processors: []
})
const highlightedCode = highlighter.codeToHtml(code, {
lang,
// lineOptions,
theme: 'material-theme-palenight'
}).replace('background-color: #292D3E', '')
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 (codeTemplate, index) => {
const { title, lang, codes } = codeTemplate;
const isFirst = index === 0;
const code = await highLightCode(codes[0].code, codes[0].language || lang, isFirst);
return {
title,
language: codes[0].language || lang,
code,
};
})
return Promise.all(codeExamplePromises);
}

View File

@@ -1,7 +1,7 @@
import { promises as fs, constants } from 'fs';
import path from 'path';
import yaml from 'js-yaml'
import { PackageItem } from '../components/Package';
import { PackageItem } from '../theme/types';
const fileExist = (filePath) => fs.access(filePath, constants.F_OK).then(() => true).catch(() => false)

View File

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

View File

@@ -0,0 +1,17 @@
import { createLucideIcon } from "lucide-react/src/lucide-react"
import { type LucideProps, type IconNode } from "lucide-react/src/createLucideIcon"
import { IconEntity } from "../theme/types"
import { renderToStaticMarkup } from 'react-dom/server';
import { IconContent } from "./generateZip";
const getFallbackZip = (icons: IconEntity[], params: LucideProps) => {
return icons
.map<IconContent>((icon) => {
const Icon = createLucideIcon(icon.name, icon.iconNode as IconNode)
const src = renderToStaticMarkup(<Icon {...params} />)
return [icon.name, src]
})
}
export default getFallbackZip

View File

@@ -0,0 +1,28 @@
/**
* djb2 hashing function
*
* @param {string} string
* @param {number} seed
* @returns {string} A hashed string of 6 characters
*/
export const hash = (string: string, seed = 5381) => {
let i = string.length;
while (i) {
// eslint-disable-next-line no-bitwise, no-plusplus
seed = (seed * 33) ^ string.charCodeAt(--i);
}
// eslint-disable-next-line no-bitwise
return (seed >>> 0).toString(36).substr(0, 6);
};
/**
* Generate Hashed string based on name and attributes
*
* @param {object} seed
* @param {string} seed.name A name, for example an icon name
* @param {object} seed.attributes An object of SVGElement Attrbutes
* @returns {string} A hashed string of 6 characters
*/
export const generateHashedKey = ({ name, attributes }) => hash(JSON.stringify([name, attributes]));

View File

@@ -0,0 +1,55 @@
import fs from "fs";
import path from "path";
import { IconNodeWithKeys } from "../theme/types";
import iconNodes from '../data/iconNodes'
import releaseMeta from "../data/releaseMetaData.json";
const DATE_OF_FORK = '2020-06-08T16:39:52+0100';
const directory = path.join(process.cwd(), "../icons");
export function getAllNames() {
const fileNames = fs.readdirSync(directory).filter((file) => path.extname(file) === '.json');
return fileNames
.filter((fileName) => fs.existsSync(directory + '/' + path.basename(fileName, '.json') + '.svg'))
.map((fileName) => path.basename(fileName, '.json'));
}
export interface GetDataOptions {
withChildKeys?: boolean
}
export async function getData(name: string) {
const jsonPath = path.join(directory, `${name}.json`);
const jsonContent = fs.readFileSync(jsonPath, "utf8");
const { tags, categories, contributors } = JSON.parse(jsonContent);
const iconNode = iconNodes[name]
const releaseData = releaseMeta?.[name] ?? {
"createdRelease": {
"version": "0.0.0",
"date": DATE_OF_FORK
},
"changedRelease": {
"version": "0.0.0",
"date": DATE_OF_FORK
}
}
return {
name,
tags,
categories,
iconNode,
contributors,
...releaseData
};
}
export async function getAllData(): Promise<{ name: string, iconNode: IconNodeWithKeys}[]> {
const names = getAllNames();
return Promise.all(names.map((name) => getData(name)));
}

118
docs/.vitepress/sidebar.ts Normal file
View File

@@ -0,0 +1,118 @@
import { DefaultTheme, UserConfig } from "vitepress"
const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
'guide':[
{
text: 'Introduction',
items: [
{ text: 'What is lucide?', link: '/guide/' },
{ text: 'Installation', link: '/guide/installation' },
{ text: 'Comparison', link: '/guide/comparison' }
]
},
// {
// text: 'Using Icons',
// items: [
// {
// text: 'How to use icons',
// link: 'how-to-use-icons'
// },
// {
// text: 'Styling icons',
// link: 'styling-icons'
// },
// {
// text: 'Accessibility',
// link: 'accessibility'
// },
// {
// text: 'What should I use',
// link: 'what-should-i-use'
// },
// ]
// },
{
text: 'Packages',
items: [
{
text: 'Lucide',
link: '/guide/packages/lucide'
},
{
text: 'Lucide React',
link: '/guide/packages/lucide-react'
},
{
text: 'Lucide React Native',
link: '/guide/packages/lucide-react-native'
},
{
text: 'Lucide Vue',
link: '/guide/packages/lucide-vue'
},
{
text: 'Lucide Vue Next (Vue 3)',
link: '/guide/packages/lucide-vue-next'
},
{
text: 'Lucide Svelte',
link: '/guide/packages/lucide-svelte'
},
{
text: 'Lucide Solid',
link: '/guide/packages/lucide-solid'
},
{
text: 'Lucide Preact',
link: '/guide/packages/lucide-preact'
},
{
text: 'Lucide Angular',
link: '/guide/packages/lucide-angular'
},
{
text: 'Lucide Static',
link: '/guide/packages/lucide-static'
},
{
text: 'Lucide Flutter',
link: '/guide/packages/lucide-flutter'
},
]
},
{
text: 'Contributing',
items: [
{
text: 'Icon Design Principles',
link: '/guide/design/icon-design-guide'
},
{
text: 'Designing in Illustrator',
link: '/guide/design/illustrator-guide'
},
{
text: 'Designing in InkScape',
link: '/guide/design/inkscape-guide'
},
{
text: 'Designing in Figma',
link: '/guide/design/figma-guide'
},
]
},
],
'icons': [
{ text: '', link: '/' },
// { text: 'Categorized', link: '/icons/categorized' },
// {
// text: 'Categories',
// items: [
// ...(getAllCategoryFiles().map((category) => ({ text: category, link: `/icons/category/${category}` })))
// ]
// }
],
}
export default sidebar

View File

@@ -0,0 +1,11 @@
<template>
<div class="container">
<slot />
</div>
</template>
<style scoped>
.container {
padding: 32px;
}
</style>

View File

@@ -0,0 +1,62 @@
<script setup lang="ts">
import { computed } from 'vue';
import { useRouter } from 'vitepress';
const { go } = useRouter()
const props = defineProps<{
href?: string
}>()
const component = computed(() => props.href ? 'a' : 'div')
</script>
<template>
<component
:is="component"
:href="href"
class="badge"
@click="props?.href ? go(href) : undefined"
>
<slot/>
</component>
</template>
<style>
.badge, a.badge {
display: block;
border: 1px solid transparent;
text-align: center;
font-weight: 600;
padding: 2px 12px;
white-space: nowrap;
transition: color 0.25s, border-color 0.25s, background-color 0.25s;
border-radius: 6px;
background-color: var(--vp-c-bg-alt);
color: var(--vp-c-text-1);
/* width: 56px;
height: 56px; */
font-size: 16px;
}
.badge[href]:hover, a.badge:hover {
border-color: var(--vp-button-alt-hover-border);
color: var(--vp-button-alt-hover-text);
background-color: var(--vp-button-alt-hover-bg);
text-decoration: none;
}
.badge[href]:active {
border-color: var(--vp-button-alt-active-border);
color: var(--vp-button-alt-active-text);
background-color: var(--vp-button-alt-active-bg);
}
.badge.active {
border-color: var(--vp-c-brand);
/* color: var(--vp-button-alt-active-text);
background-color: var(--vp-button-alt-active-bg); */
}
</style>

View File

@@ -0,0 +1,187 @@
<script setup lang="ts">
import VPButton from 'vitepress/dist/client/theme-default/components/VPButton.vue'
import { computed, ref } from 'vue'
import {
Listbox,
ListboxButton,
ListboxOptions,
ListboxOption,
} from '@headlessui/vue'
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon'
import { chevronUp } from '../../../data/iconNodes'
import { useStorage } from '@vueuse/core'
interface Props {
options: {
text: string
onClick?: () => void
}[],
callOptionOnClick?: boolean
buttonClass?: string
id: string
popoverPosition?: 'top' | 'bottom'
}
const props = withDefaults(defineProps<Props>(), {
callOptionOnClick: false,
popoverPosition: 'bottom'
})
const emit = defineEmits(['click', 'optionClick'])
const buttonRef = ref(null)
const selectedOption = useStorage(props.id, props.options[0].text)
const selectionOptionAction = computed(() => props.options.find(option => option.text === selectedOption.value).onClick)
function onClick(event) {
selectionOptionAction.value()
emit('click', event)
}
function onOptionClick(event, option) {
if(!props.callOptionOnClick) {
return
}
option.onClick()
emit('optionClick', event)
}
const ChevronUp = createLucideIcon('ChevronUp', chevronUp)
</script>
<template>
<Listbox v-model="selectedOption">
<div class="menu" >
<div class="button-wrapper">
<VPButton
v-bind="$attrs"
:text="selectedOption"
@click="onClick"
theme="alt"
class="main-button"
:class="[props.buttonClass]"
ref="buttonRef"
/>
<ListboxButton
:as="VPButton"
:text="''"
theme="alt"
class="arrow-up-button"
:class="popoverPosition"
/>
</div>
<ListboxOptions class="menu-items" :class="popoverPosition">
<ListboxOption
as="button"
class="menu-item"
v-for="option in options"
:value="option.text"
@click="onOptionClick($event, option)"
>
{{ option.text }}
</ListboxOption>
</ListboxOptions>
</div>
</Listbox>
</template>
<style>
.menu {
position: relative;
}
.menu-items {
--menu-offset: 44px;
position: absolute;
display: flex;
flex-direction: column;
border-radius: 12px;
padding: 12px;
min-width: 128px;
border: 1px solid var(--vp-c-divider);
background-color: var(--vp-c-bg);
box-shadow: var(--vp-shadow-3);
transition: background-color 0.5s;
max-height: calc(100vh - var(--vp-nav-height));
overflow-y: auto;
z-index: 90;
right: 0;
}
.menu-item {
padding: 2px 8px;
text-align: left;
display: block;
border-radius: 6px;
padding: 0 12px;
line-height: 32px;
font-size: 14px;
font-weight: 500;
color: var(--vp-c-text-1);
white-space: nowrap;
transition: background-color .25s,color .25s;
}
.menu-item:hover {
color: var(--vp-c-brand);
background-color: var(--vp-c-bg-elv-mute);
}
.menu-item:active {
color: var(--vp-c-brand);
background-color: var(--vp-c-bg-elv);
}
.main-button {
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
padding-right: 12px !important;
}
.button-wrapper {
display: flex;
}
.arrow-up-button {
display: inline-flex;
height: 40px;
border-top-left-radius: 0 !important;
border-bottom-left-radius: 0 !important;
padding-left: 4px !important;
padding-right: 8px !important;
position: relative;
left: -1px;
}
.arrow-up-button::before {
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%0A%3E%3Cpolyline points='18 15 12 9 6 15' /%3E%3C/svg%3E%0A");
width: 20px;
height: 28px;
margin: auto;
display: block;
}
.dark .arrow-up-button::before {
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%0A%3E%3Cpolyline points='18 15 12 9 6 15' /%3E%3C/svg%3E%0A");
}
.menu-items.bottom {
top: var(--menu-offset);
}
.menu-items.top {
bottom: var(--menu-offset);
}
.arrow-up-button.top::before {
transform: rotate(0deg);
}
.arrow-up-button.bottom::before {
transform: rotate(180deg);
}
</style>

View File

@@ -0,0 +1,51 @@
<script setup lang="ts">
import { computed, defineProps, onMounted } from 'vue'
const props = defineProps<{
groups: string[] | undefined,
groupName: string,
}>()
const getSaveIdname = (name: string) => {
return name.toLowerCase().replace(/\s/g, '-')
}
const tabs = computed(() => props.groups?.map((group) => {
return {
id: getSaveIdname(group),
name: group,
}
}))
const saveTabId = (id: string) => {
localStorage.setItem(props.groupName, id)
}
onMounted(() => {
const id = localStorage.getItem(props.groupName)
if (id) {
const tab = document.getElementById(`label-tab-${id}`)
if (tab) {
tab.click()
}
}
})
</script>
<template>
<div class="vp-code-group">
<div class="tabs">
<template v-for="(tab, index) in tabs">
<input
type="radio"
:id="`tab-${tab.id}`"
:name="`group-${groupName}`"
:checked="index === 0"
@change="saveTabId(tab.id)"
>
<label :for="`tab-${tab.id}`" :id="`label-tab-${tab.id}`">{{ tab.name }}</label>
</template>
</div>
<slot />
</div>
</template>

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