Compare commits

...

342 Commits

Author SHA1 Message Date
Daniel Bayley
275c2cbc69 Add candy-cane/lollipop/popsicle/dessert/popcorn icons (#1149)
* Add `lolly` icon

* Add `candy` alternate icon

* Add `ice-lolly` icon

* Rename `candy` to `candy-cane`

* Update icons/lolly.svg

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

* Rename `lolly` to `lollipop`

* Rename `ice-lolly` to `popsicle`

* Update icons/candy-cane.svg

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

* Refine `candy-cane` icon

* Fix `lollipop` to match `search` icon

* Update icons/candy-cane.svg

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

* Improve `lollipop` metadata

* Add `pudding` icon

* Rename `pudding` icon to `dessert`

* Add `popcorn` icon

* Refine `popcorn` icon

* Optimise `lollipop` icon

* Optimise `candy-cane` icon

* Optimise `popsicle` icon

* Add `donut` icon

* Add `cake-slice` icon

* Improve `cake` metadata

* Improve `donut` metadata

---------

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

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

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

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

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

* Improve `arrow-*` icons metadata

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

* add details

* Add icons details

* update gitignore

* Add node details

* Move tags api to own composable

* remove overridden var

* remopve whitespace

* log directory existence

* Fix path name

* Fix build

* Fix tags fetching

* Move max related icons to prebuild

* Improve tags scroller

* Add categories call

* cleanup

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

* fix typo

* Update lucide-angular.md

* Fix build

* remove duplicated key

---------

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

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

* Optimise `activity` icon

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

* Update icons/shapes.svg

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

---------

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

Felt to aggressive.

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

* Add `refresh-ccw-dot` icon

* Add `circle-dot-dashed` icon

* Add `circle-dashed` icon

* Improve `circle-dot` metadata

---------

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

* Add `presentation-screen` icon

* Add `presentation` (whiteboard) icon

* Consolidate `presentation` icons

* Refine `presentation` icon

* Update icons/projector.svg

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

---------

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

* Add og image

* Fix links

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

* Add `search-code` icon

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

* Add `search-check` (complete) icon

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

* Refine `search-x` icon

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

* Add `bar-chart-big` alternate icon

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

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

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

* Update network.svg

* Update network.svg

* Update network.svg

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

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

This reverts commit 57cba6ae0e.

* Add `goal` icon

* Update icons/goal.svg

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

* Update icons/goal.svg

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

---------

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

* Update icons/key-2.svg

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

* Refine `key` alternate icon

* Add `key` variant

* Refine `key` alternate icons

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

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

* Improve metadata

---------

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

* Update icons/circle-off.svg

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

---------

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

* Add `versions-files` icon

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

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

* Update icons/square-slash.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-06-04 22:10:29 +02:00
Eric Fennis
606706e8e0 Fix gh-api for strokewidths 2023-06-04 17:52:03 +02:00
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
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
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
2386 changed files with 48994 additions and 23438 deletions

View File

@@ -34,6 +34,7 @@ module.exports = {
parserOptions: {
tsconfigRootDir: __dirname,
project: ['./site/tsconfig.json', './packages/*/tsconfig.json'],
ecmaVersion: 2020,
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:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-angular/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-angular/**
- pnpm-lock.yaml
jobs:
lucide-angular:

View File

@@ -5,10 +5,6 @@ on:
paths:
- icons/**
- pnpm-lock.yaml
push:
paths:
- icons/**
- pnpm-lock.yaml
jobs:
lucide-font:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-preact/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-preact/**
- pnpm-lock.yaml
jobs:
lucide-preact:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-react-native/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-react-native/**
- pnpm-lock.yaml
jobs:
lucide-react-native:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-react/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-react/**
- pnpm-lock.yaml
jobs:
lucide-react:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-solid/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-solid/**
- pnpm-lock.yaml
jobs:
lucide-solid:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-static/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-static/**
- pnpm-lock.yaml
jobs:
lucide-static:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-svelte/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-svelte/**
- pnpm-lock.yaml
jobs:
lucide-svelte:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-vue-next/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-vue-next/**
- pnpm-lock.yaml
jobs:
lucide-vue-next:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide-vue/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide-vue/**
- pnpm-lock.yaml
jobs:
lucide-vue:

View File

@@ -5,10 +5,6 @@ on:
paths:
- packages/lucide/**
- pnpm-lock.yaml
push:
paths:
- packages/lucide/**
- pnpm-lock.yaml
jobs:
lucide:

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

18
.gitignore vendored
View File

@@ -15,4 +15,22 @@ stats
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/iconDetails
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

@@ -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.
@@ -66,20 +59,21 @@ 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.4+](https://nodejs.org)
For packagemanagement you will need [yarn v1](https://yarnpkg.com/getting-started/install).
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.

View File

@@ -39,6 +39,7 @@ Lucide is trying to expand the icon set as much as possible while staying faithf
- [Svelte](#svelte)
- [Solid](#solid)
- [Hyva](#hyva)
- [Eleventy](#eleventy)
- [Contributing](#contributing)
- [Community](#community)
- [License](#license)
@@ -251,6 +252,16 @@ 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).

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

View File

@@ -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,30 @@
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')
setResponseHeader(event, 'Access-Control-Allow-Origin', '*')
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,45 @@
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')
setResponseHeader(event, 'Access-Control-Allow-Origin', '*')
return svg
})

View File

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

View File

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

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

@@ -0,0 +1,157 @@
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';
import fs from 'fs';
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.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,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,47 @@
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 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 = Object.keys(iconNodes);
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>

View File

@@ -0,0 +1,93 @@
<script setup lang="ts">
import { computed } from 'vue';
const props = defineProps<{
modelValue: string
id: string
}>()
const emit = defineEmits(['update:modelValue'])
const value = computed({
get: () => props.modelValue,
set: (val) => emit('update:modelValue', val)
})
</script>
<template>
<div class="color-picker">
<div class="color-input-wrapper">
<!-- TODO: Add currentColor div if value is currentColor -->
<input
type="color"
:id="id"
:name="id"
class="color-input"
v-model="value"
/>
</div>
<input
type="text"
:id="`${id}-input`"
:name="`${id}-input`"
class="color-input-text"
aria-label="Color picker input"
v-model="value"
/>
</div>
</template>
<style scoped>
.color-input {
width: 34px;
height: 34px;
position: absolute;
top: -5px;
left: -5px;
}
.color-input-wrapper {
height: 24px;
width: 24px;
overflow: hidden;
position: relative;
border-radius: 12px;
flex-shrink: 0;
}
.color-picker {
background: var(--color-picker-bg, var(--vp-c-bg-soft));
border-radius: 8px;
color: var(--vp-c-text-2);
padding: 4px 8px;
height: auto;
font-size: 14px;
text-align: left;
border: 1px solid transparent;
cursor: text;
display: flex;
align-items: center;
gap: 2px;
}
.color-input-text {
width: 100%;
height: 100%;
padding: 0 8px;
border: none;
background: transparent;
color: var(--vp-c-text-2);
font-size: 14px;
text-align: left;
border-radius: 8px;
cursor: text;
transition: border-color 0.25s, background 0.4s ease;
}
.color-picker:hover, .color-picker:focus {
border-color: var(--vp-c-brand);
background: var(--vp-c-bg-alt);
}
.color-input[value="currentColor"] {
}
</style>

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