Compare commits

...
Author SHA1 Message Date
Karsa ec3c3906f7 feat(scripts): added icon usage script 2026-08-31 17:54:23 +02:00
eb3c04d059 feat(icons): Add polygon icon (#3007)
* Add icons/polygon.svg

* Applied code from jguddas

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* extended metadata in polygon.json

* Rename polygon.json to vector-polygon.json

* Rename polygon.svg to vector-polygon.svg

* Update icons/vector-polygon.svg

* Update vector-square.svg

---------

Co-authored-by: timmy471 <timilehin.ayantunji@etranzact.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-31 09:15:36 +02:00
Amenitigithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Karsa
796dad298f feat(icons): added credit-card-plus icon (#4441)
* Added icons/credit-card-plus.svg

* Added icons/credit-card-plus.json

* Update icons/credit-card-plus.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update credit-card-plus.svg

updated + sub as used in other icons

* Update credit-card-plus.svg

* Update credit-card-plus.json

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-29 09:13:34 +02:00
Amenitigithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Karsa
3f4a337c5d feat(icons): added credit-card-minus icon (#4440)
* Added icons/credit-card-minus.svg

* Added icons/credit-card-minus.json

* Update icons/credit-card-minus.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update credit-card-minus.json

* Update credit-card-minus.json

Changed contributors based on credit-card

* Update credit-card-minus.svg

Updated to use "-" based of other icons using minus sign.

* Update credit-card-minus.svg

* Update credit-card-minus.json

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-29 09:13:23 +02:00
Karsa 47ad47f321 feat(icons): added credit-card-x & credit-card-check icon (#4763)
* Added icons/credit-card-x.svg

* Added icons/credit-card-x.json

* Added icons/credit-card-check.svg

* Added icons/credit-card-check.json

* Update credit-card-x.json

* Update credit-card-check.json
2026-08-29 09:13:22 +02:00
Karsa c967b3225c fix(icons): changed piano icon (#4766)
* Updated icons/piano.svg

* Updated icons/piano.json

* Update piano.json
2026-08-28 22:23:07 +02:00
Ali Yasir Naçgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Jakob GuddasKarsa
0516a35c56 feat(icons): added message-circle-dashed-check icon (#3678)
* Added icons/message-circle-tick-dashed.svg

* Added icons/message-circle-tick-dashed.json

* Update icons/message-circle-tick-dashed.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* renamed file names

* Update message-circle-dashed-check.svg

* Update message-circle-dashed-check.svg

replaces paths to use the exact same ones as in `message-circle-dashed`

* Update message-circle-dashed-check.json

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 15:01:56 +02:00
KarsaandEric Fennis 48fb4d0079 fix(icons): unify check, cross and plus sizes across icons (#3875)
* fix(icons): unify check, cross and plus sizes across icons

* fix(icons): fix minor gap issues

* fix(icons): shrink x in git-merge-conflict

* fix(icons): adjust x to be aligned with matching plus in book-x, grid-2x2-x and user-round-x

* fix(icons): update checkmark in message-circle-check.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-08-28 15:01:54 +02:00
Jakob Guddasgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Karsa
672d891a6b fix(icons): changed asterisk icon (#3906)
* Updated icons/asterisk.svg

* Updated icons/asterisk.json

* Updated icons/asterisk.svg

* Update icons/asterisk.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Updated icons/asterisk.svg

* Updated icons/asterisk.json

* Update asterisk.json

* Refactor SVG paths in asterisk icon

* Update paths in asterisk.svg for new design

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 14:22:36 +02:00
Jakob Guddas d8a7841d33 fix(icons): changed square-split-vertical icon (#3939)
* Updated icons/square-split-horizontal.svg

* Updated icons/square-split-horizontal.json

* Updated icons/square-split-vertical.svg

* Updated icons/square-split-vertical.json
2026-08-28 14:22:08 +02:00
716ae6d4e9 fix(icons): rotate key icon (#3111)
* Updated icons/key.svg

* Updated icons/key.json

* Update icons/key.svg

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

* Add space before close key.svg

* Updated icons/key.svg

* Updated icons/key.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 14:17:48 +02:00
Jakob Guddas cd6ee554c8 fix(icons): rotate blend icon (#3105)
* Updated icons/blend.svg

* Updated icons/blend.json

* Updated icons/blend.json
2026-08-28 14:17:15 +02:00
Jakob Guddas be0956479b fix(icons): changed panda icon (#3187)
* Updated icons/panda.svg

* Updated icons/panda.json

* Updated icons/panda.svg
2026-08-28 12:36:34 +02:00
Jakob GuddasandKarsa 9f3692dee3 chore(tags): added music disc related tags to circle-dot (#3909)
* Updated icons/circle-dot.svg

* Updated icons/circle-dot.json

---------

Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 12:25:29 +02:00
Jakob Guddasdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Eric Fennis
af82050077 fix(icons): changed beef icon (#3457)
* ci: Improve build speeds (#2778)

* Revert sync to async functions

* Replace more sync fs functions

* Format files

* Fix build svelte package

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

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

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

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

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

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

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

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

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

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

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

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

* fix: Add await to checkIconsAndCategories script

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

* Revert exports prop

* Adjust export

* Adjust export path

* Add to gitignore

* Adjust build process

* Update .gitignore and add dynamicIconImports module

* Formatting

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

* refactor(scripts): Formatting in readAllMetadata

* Updated icons/beef.svg

* Updated icons/beef.svg

* Updated icons/beef.json

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-28 12:21:38 +02:00
50de1605e1 feat(icons): add playing-card, playing-cards, and playing-cards-fan (#4258)
* Added icons `playing-card`, `playing-cards`, `playing-cards-2`

* updated playing card icons according to @karsa-mistmere

* updated playing card icons according to @karsa-mistmere

* added `playing-cards-fan` icon from @karsa-mistmere

* fix(metadata): add missing use-cases for playing card icons

* Update playing-card.json

* Update playing-cards-fan.json

* Update playing-cards.json

* Update playing-cards.svg

* Update playing-cards-fan.svg

* Update playing-card.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 11:29:51 +02:00
TFJandKarsa 56b50bba8a docs(icon-description): added old and empty tags/use case for ghost (#4762)
* chore: added old and empty tags/use case for ghost

* chore: added dead use-case

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

* chore: applied tags

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

---------

Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 10:47:13 +02:00
bd4cdc5f39 fix(icons): changed shopping-cart icon (#2909)
* Updated icons/shopping-cart.svg

* Updated icons/shopping-cart.json

* Updated icons/shopping-cart.svg

* Update icons/shopping-cart.svg

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

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 09:16:41 +02:00
Jakob GuddasandKarsa fb617bfd6e fix(icons): changed swords icon (#4707)
* Updated icons/swords.svg

* Updated icons/swords.json

* Update swords.json

* Updated icons/swords.svg

* Updated icons/swords.json

* Update swords.json

* Update sword.svg

* Update sword.json

* Update swords.json

---------

Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 09:11:17 +02:00
Karsa 50eacd724a feat(icons): make face-angry yet more angry (#4708) 2026-08-28 09:09:18 +02:00
Benjamin HaubeandKarsa 06e26d6ff1 feat(icons): added 'robot-vacuum' icon (#4599)
* add icons/robot-vacuum

* fix(icons): changed 'robot-vacuum' icon

* Update robot-vacuum.json

* Update robot-vacuum.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 09:07:35 +02:00
ZoharandKarsa a79d711591 feat(icons): added robot-arm icon (#4447)
* Added icons/robot-arm svg and json

* Update robot-arm.json

fixed metadata, removed incorrect tags, fixed categories

---------

Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 09:01:04 +02:00
Jakob Guddasgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric FennisKarsa
1bcad8fccb fix(icons): changed ghost icon (#3533)
* Updated icons/ghost.svg

* Updated icons/ghost.json

* Update icons/ghost.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update ghost.svg

* Apply suggestion from @karsa-mistmere

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-28 08:50:31 +02:00
HoJin KIM 8d8b8744d1 fix(icons): correct "operater" typo to "operator" in equal-approximately (#4760) 2026-08-28 07:46:02 +02:00
Rajnish Kumargithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Rajnish MehtaEric Fennis
23f9abc4ed feat(lab): added bat icon to lab (#3914)
* Added icons/bat.svg

* Added icons/bat.json

* Username change

* Update icons/bat.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update bat.svg

* Modify SVG path data for bat icon

* Add use cases to bat.json

Added use cases for night mode and related themes.

* Update bat.svg

* Move bat icon

---------

Co-authored-by: Rajnish Mehta <172272341+KnarliX@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-08-24 12:13:25 +02:00
Karsaandgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> bc0e5d1929 feat(icons): added galaxy icon (#4715)
* Added icons/galaxy.svg

* Added icons/galaxy.json

* feat(icons): added metadata to galaxy.json

* Update icons/galaxy.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update icons/galaxy.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 12:06:36 +02:00
ce14971fa6 feat(icons): added trailer icon (#4405)
* Added icons/trailer.svg

* Added icons/trailer.json

* Update trailer.svg

* Apply suggestion from @ericfennis

* Update icons/trailer.svg

* Update trailer.json

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-08-24 12:03:07 +02:00
Louisandgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> f68bec5ad1 feat(icons): added ship-cargo icon (#4706)
* added icon

* guidelines

* Update icons/ship-cargo.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update icons/ship-cargo.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* edites icons

* added contributors from `ship` icon

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 12:01:14 +02:00
Eric Fennisandgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> 1a60fd28ed feat(icons): added mail-clock icon (#4722)
* Added icons/mail-clock.svg

* Added icons/mail-clock.json

* Add use cases to mail-clock.json

Added use cases for mail-clock icon.

* Apply suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-24 11:59:03 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> c42aba062d chore(deps-dev): bump the preact-deps group with 2 updates (#4738)
Bumps the preact-deps group with 2 updates: [@preact/preset-vite](https://github.com/preactjs/preset-vite) and [preact](https://github.com/preactjs/preact).


Updates `@preact/preset-vite` from 2.10.5 to 2.10.6
- [Release notes](https://github.com/preactjs/preset-vite/releases)
- [Changelog](https://github.com/preactjs/preset-vite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/preactjs/preset-vite/commits)

Updates `preact` from 10.29.7 to 10.29.8
- [Release notes](https://github.com/preactjs/preact/releases)
- [Commits](https://github.com/preactjs/preact/compare/10.29.7...10.29.8)

---
updated-dependencies:
- dependency-name: "@preact/preset-vite"
  dependency-version: 2.10.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: preact-deps
- dependency-name: preact
  dependency-version: 10.29.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: preact-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-24 11:39:46 +02:00
Jakob GuddasandEric Fennis 33a44aa8b0 fix: update icon design discussion template (#4726)
* fix: update icon design discussion template

Remove name and description fields from icon design template

* Add title field to icon design discussion template

* Add description for icon request template

Added a description field for icon requests.

* Update icon-design.yml

* Format code

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-08-20 14:49:31 +02:00
Simon CoudevilleandKarsa 59978cecf8 feat(icons): added midi-port icon (#3754)
* Added icons/midi.svg

* Added icons/midi.json

* Update midi.svg

* Update midi.json

* Update midi.json

* Update midi.json

* Rename midi.json to midi-port.json

* Rename midi.svg to midi-port.svg

---------

Co-authored-by: Karsa <contact@karsa.org>
2026-08-19 13:37:05 +02:00
Jakob Guddas 2c9b468404 feat(icon-discussions): close discussions with banned phrases (#4692)
* feat: close discussions with band phrases

* feat: close discussions with band phrases

* feat: close discussions with band phrases
2026-08-19 13:09:53 +02:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Eric Fennis
7c758075a3 chore(deps-dev): bump the svelte-deps group with 3 updates (#4720)
Bumps the svelte-deps group with 3 updates: [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte), [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) and [svelte-check](https://github.com/sveltejs/language-tools).


Updates `@sveltejs/vite-plugin-svelte` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/sveltejs/vite-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/vite-plugin-svelte@7.3.0/packages/vite-plugin-svelte)

Updates `svelte` from 5.56.8 to 5.56.9
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.56.9/packages/svelte)

Updates `svelte-check` from 4.7.4 to 4.7.6
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check@4.7.4...svelte-check@4.7.6)

---
updated-dependencies:
- dependency-name: "@sveltejs/vite-plugin-svelte"
  dependency-version: 7.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: svelte-deps
- dependency-name: svelte
  dependency-version: 5.56.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: svelte-deps
- dependency-name: svelte-check
  dependency-version: 4.7.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: svelte-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-08-19 09:57:54 +02:00
Eric FennisandCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> 15804aa9eb Potential fix for code scanning alert no. 31: Inefficient regular expression (#4723)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-08-19 09:36:16 +02:00
Karsagithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
86eb89c794 feat(icons): added mop icon (#4682)
* Added icons/mop.svg

* Added icons/mop.json

* Added icons/mop-sparkles.svg

* Added icons/mop-sparkles.json

* feat(icons): fill out metadata for mop & mop-sparkles

* Update icons/mop.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-18 16:55:10 +02:00
Jakob Guddas a08ebd74dc chore(discussion-template): add icon design template (#4691) 2026-08-18 14:14:42 +02:00
Karsagithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
51b9aa19de feat(icons): added audio-lines-off icon (#4589)
* Added icons/audio-lines-off.svg

* Added icons/audio-lines-off.json

* fix(icons/audio-lines-off): fill in metadata

* Apply suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-18 14:03:58 +02:00
Hugo Moreira c0ea22e282 docs(site): correct Vanilla icon import casing (#4597) 2026-08-18 13:37:48 +02:00
KarsaandEric Fennis 2e88f33494 feat(icons): added usb-c-port icon (#4556)
* Added icons/usb-c-port.svg

* Added icons/usb-c-port.json

* Update usb-c-port.json

* Updated icons/usb-c-port.svg

* Updated icons/usb-c-port.json

* Update usb-c-port.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-08-18 13:34:16 +02:00
Samuel Alakegithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric FennisKarsa
c5b33f81f8 feat(icons): add square-dimensions (#4547)
* feat(icons): add aspect-ratio

Adds an aspect-ratio icon: a frame with two opposing corner brackets,
depicting the proportions of a frame rather than the frame itself.

Distinct from ratio, which is two overlapping rects showing portrait and
landscape orientation, and from the scan / minimize / maximize family,
which use four corner brackets rather than two.

* feat(icons): rename aspect-ratio to square-dimensions

Per review on #4547 (@karsa-mistmere, @ericfennis): the primary shape is
a square, so it takes the square-<x> name, and square-dimensions reads
more naturally for setting width/height than the ratio-specific
aspect-ratio. Retunes tags and use-cases toward size/dimensions.

* Update icons/square-dimensions.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update icons/square-dimensions.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-08-18 13:33:59 +02:00
Lazizbek Ergashevgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
f9d8161e6a feat(icons): add list-clock icon (#4636)
* feat(icons): add list-clock icon

* feat(icons): apply suggested tags/categories/use-cases for list-clock

* Updated icons/list-clock.svg

* Update icons/list-clock.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update icons/list-clock.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update list-clock.json

* Fix duplicate 'categories' key in JSON

* chore(icons): credit clock glyph contributors on list-clock

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-18 13:30:09 +02:00
Samuel Alake e110ccf92f feat(icons): add square-text (#4609)
* feat(icons): add square-text

Adds square-text: a solid square containing three ragged lines of text.

The set has square-dashed-text but no solid-border equivalent, which is
the same asymmetry solid/dashed pairs elsewhere avoid. This reuses
square-dashed-text's exact text glyph (M7 8h8 / M7 12h10 / M7 16h6) on the
standard 18x18 rx=2 square, so it reads as the solid twin.

Distinct from square-menu, whose lines are equal full-width (a menu, not
running text).

* chore(icons): expand square-text tags and fill use-cases

Applies the metadata bot's tag suggestions (curated) and fills the
use-cases field.

* chore(icons): promote lab/text-square to square-text

Per review on #4609: square-text is identical to lab/text-square, so
this removes the lab entry and merges its metadata (tags + development
category) into the promoted icon.

* chore(icons): credit danielbayley and expand square-text use-cases

Per review on #4609: adds @danielbayley (original author of lab/text-square)
to contributors, and expands use-cases per @ericfennis.
2026-08-18 13:10:26 +02:00
Copilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Eric Fennis
75b55160aa chore(dev): upgrade ESLint to latest compatible stack (v10) (#4378)
* chore: upgrade eslint to v9 latest with compatible lint deps

Agent-Logs-Url: https://github.com/lucide-icons/lucide/sessions/f7c1f1b5-d213-4afa-91a8-b799a16397ec

* Fix eslint config

* Fix a lot of eslint errors

* Fix eslint

* Fix eslint errors

* Fix eslint errors

* Fix types

* Fix eslint warning

* Format code

* Add eslint 10

* Remove unused vars

* Update pnpm

* Update deps

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-08-18 13:09:22 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 7367c8f0fc chore(deps): bump vue in the vue-deps group across 1 directory (#4695)
Bumps the vue-deps group with 1 update in the / directory: [vue](https://github.com/vuejs/core).


Updates `vue` from 3.5.40 to 3.5.41
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.40...v3.5.41)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.41
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: vue-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 12:38:30 +02:00
Karsa a7c781bd43 fix(categories): fixes emoji.json (#4697) 2026-08-10 08:38:54 +02:00
Andrey Nazarenko 62527757e2 feat(icons): added car-battery icon (#4088) 2026-08-09 15:42:20 +02:00
Thibaut Maréchal b7b6ecf131 feat(icons): added eject icon (#4043) 2026-08-09 15:38:04 +02:00
Samuel Alakegithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
113a3b1a3b feat(icons): add angle (#4545)
* feat(icons): add angle

Adds an angle icon: two rays meeting at a vertex with an arc marking the
angle between them. There is no icon for an angle or degree measurement
in the set today.

The arc is r=10 centred on the vertex at (3,21), so its endpoints land
exactly on the two rays rather than floating near them. The rays reuse
the 2px rounded corner used throughout the set.

* Apply suggestion from @github-actions[bot]

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Apply suggestion from @github-actions[bot]

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-07 12:28:36 +02:00
Lazizbek Ergashev ea29af9ae8 feat(icons): added mail-badge icon (#4638)
* feat(icons): added `mail-badge` icon

* feat(icons): apply suggested tags/categories/use-cases for mail-badge

* Updated icons/mail-badge.json

* Updated icons/mail-badge.json
2026-08-07 11:40:53 +02:00
190 changed files with 4248 additions and 1536 deletions
-11
View File
@@ -1,11 +0,0 @@
dist
build
coverage
lib
tests
node_modules
.eslintrc.js
docs/images
docs/**/examples/
packages/lucide-react/dynamicIconImports.js
packages/angular/.angular
-75
View File
@@ -1,75 +0,0 @@
const DEFAULT_ATTRS = require('./tools/build-icons/render/default-attrs.json');
module.exports = {
root: true,
env: {
browser: true,
node: true,
},
extends: ['airbnb-base', 'prettier'],
plugins: ['import', '@html-eslint'],
rules: {
'no-console': 'off',
'no-param-reassign': 'off',
'no-shadow': 'off',
'no-use-before-define': 'off',
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: ['**/*.test.js', '**/*.spec.js', '**/scripts/**'],
},
],
'import/extensions': [
'error',
{
pattern: {
mjs: 'always',
json: 'always',
},
},
],
},
parserOptions: {
tsconfigRootDir: __dirname,
project: ['./docs/tsconfig.json', './packages/*/tsconfig.json'],
ecmaVersion: 'latest',
sourceType: 'module',
},
overrides: [
{
files: ['./icons/*.svg'],
parser: '@html-eslint/parser',
rules: {
'@html-eslint/require-doctype': 'off',
'@html-eslint/no-duplicate-attrs': 'error',
'@html-eslint/no-inline-styles': 'error',
'@html-eslint/require-attrs': [
'error',
...Object.entries(DEFAULT_ATTRS).map(([attr, value]) => ({
tag: 'svg',
attr,
value: String(value),
})),
],
'@html-eslint/indent': ['error', 2],
'@html-eslint/no-multiple-empty-lines': ['error', { max: 0 }],
'@html-eslint/no-extra-spacing-attrs': [
'error',
{
enforceBeforeSelfClose: true,
},
],
'@html-eslint/require-closing-tags': [
'error',
{
selfClosing: 'always',
allowSelfClosingCustom: true,
},
],
'@html-eslint/element-newline': 'error',
'@html-eslint/no-trailing-spaces': 'error',
'@html-eslint/quotes': 'error',
},
},
],
};
@@ -0,0 +1,49 @@
title: 'Icon Request: '
body:
- type: markdown
attributes:
value: |
Before submitting an icon request check if it has already been requested. If there is an open request, please add a 👍.
> [!CAUTION]
> New brand logos are **not** allowed, see our official statement: https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md.
>
> Existing brand icons have been phased out. Consider using https://simpleicons.org, which offers purpose-built SVGs that are also on a 24×24px grid.
- type: input
id: name
attributes:
label: Icon name
description: What should this icon depict? For multiple icons, provide a comma-separated list.
validations:
required: true
- type: textarea
id: use-cases
attributes:
label: Use cases
description: Why do you need this icon? Include at least two real-life use cases per requested icon, avoiding generic descriptions like "it's a car icon".
placeholder: e.g. I need a star icon to use in my rating system.
validations:
required: true
- type: textarea
id: design-ideas
attributes:
label: Design ideas
description: What should this icon look like? Provide simple, minimalistic icon examples from other sets or your own drafts to help us visualize your request.
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: Please review the following checklist before submitting your request.
options:
- label: I have searched if someone has submitted a similar request before and there weren't any.
required: true
- label: I have searched existing icons to make sure it does not already exist and I didn't find any.
required: true
- label: I am not requesting a brand logo and the art is not protected by copyright, see more at https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md
required: true
- label: I am not requesting an icon that includes religious, war/violence related, political imagery or hate symbols.
required: true
- label: I have provided appropriate use cases for the icon(s) requested.
required: true
+2
View File
@@ -78,8 +78,10 @@ updates:
- 'vite-plugin-*'
linting-deps:
patterns:
- '@eslint/*'
- '@html-eslint/*'
- '@typescript-eslint/*'
- 'angular-eslint'
- 'cspell'
- 'eslint'
- 'eslint-*'
@@ -3,6 +3,8 @@ name: Close Icon Requests with Brand Terms
on:
issues:
types: [opened]
discussion:
types: [created]
permissions: {}
@@ -16,12 +18,13 @@ jobs:
permissions:
contents: read
issues: write
discussions: write
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Load stopwords from JSON & check issue title & body
if: contains(github.event.issue.labels.*.name, '🙌 icon request')
if: github.event_name == 'issues' && contains(github.event.issue.labels.*.name, '🙌 icon request')
run: |
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
ISSUE_BODY=$(jq -r '.issue.body // ""' "$GITHUB_EVENT_PATH")
@@ -34,6 +37,8 @@ jobs:
if echo "$ISSUE_TITLE" | grep -iqE "$SAFE_KEY|$SAFE_VALUE" || \
{ [ -n "$ICON_NAME_SECTION" ] && echo "$ICON_NAME_SECTION" | grep -iqE "$SAFE_KEY|$SAFE_VALUE"; }; then
URL_ENCODED_VALUE=$(jq -rn --arg val "$VALUE" '$val|@uri')
gh issue close ${{ github.event.issue.number }} \
--reason "not planned" \
--comment "It looks like this request is about **${VALUE}**, which is a brand logo.
@@ -42,7 +47,7 @@ jobs:
[Click here to read our official statement about brand logos in Lucide.](https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md)
You can [search for similar issues.](https://github.com/lucide-icons/lucide/issues?q=is%3Aissue+${VALUE})
You can [search for similar issues.](https://github.com/lucide-icons/lucide/issues?q=is%3Aissue+${URL_ENCODED_VALUE})
We’re always happy to help on [Discord](https://discord.gg/EH6nSts)."
@@ -50,3 +55,56 @@ jobs:
exit 0
fi
done
- name: Load stopwords from JSON & check discussion title & body
if: github.event_name == 'discussion' && github.event.discussion.category.slug == 'icon-design'
run: |
DISCUSSION_TITLE=$(jq -r '.discussion.title' "$GITHUB_EVENT_PATH")
DISCUSSION_BODY=$(jq -r '.discussion.body // ""' "$GITHUB_EVENT_PATH")
ICON_NAME_SECTION=$(printf '%s\n' "$DISCUSSION_BODY" | awk '/### Icon name/{flag=1; next} /^### /{flag=0} flag')
jq -r 'to_entries[] | "\(.key) \(.value)"' brand-stopwords.json | while read -r KEY VALUE; do
SAFE_KEY=$(printf '%s\n' "$KEY" | sed 's/[][\.^$*]/\\&/g')
SAFE_VALUE=$(printf '%s\n' "$VALUE" | sed 's/[][\.^$*]/\\&/g')
if echo "$DISCUSSION_TITLE" | grep -iqE "$SAFE_KEY|$SAFE_VALUE" || \
{ [ -n "$ICON_NAME_SECTION" ] && echo "$ICON_NAME_SECTION" | grep -iqE "$SAFE_KEY|$SAFE_VALUE"; }; then
URL_ENCODED_VALUE=$(jq -rn --arg val "$VALUE" '$val|@uri')
DISCUSSION_NODE_ID=$(jq -r '.discussion.node_id' "$GITHUB_EVENT_PATH")
COMMENT_BODY="It looks like this request is about **${VALUE}**, which is a brand logo.
Lucide **does not accept** brand logos, and we do not plan to add them in the future. This is due to a combination of **legal restrictions**, **design consistency concerns**, and **practical maintenance reasons**.
[Click here to read our official statement about brand logos in Lucide.](https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md)
You can [search for similar discussions.](https://github.com/lucide-icons/lucide/discussions/categories/icon-design?discussions_q=category%253A%22Icon+design%22+${URL_ENCODED_VALUE})
We’re always happy to help on [Discord](https://discord.gg/EH6nSts)."
# Add comment to discussion
gh api graphql -f query='
mutation($discussionId: ID!, $body: String!) {
addDiscussionComment(input: {discussionId: $discussionId, body: $body}) {
comment { id }
}
}' -f discussionId="$DISCUSSION_NODE_ID" -f body="$COMMENT_BODY"
# Close discussion
gh api graphql -f query='
mutation($discussionId: ID!) {
closeDiscussion(input: {discussionId: $discussionId}) {
discussion { closed }
}
}' -f discussionId="$DISCUSSION_NODE_ID"
# Lock discussion
gh api graphql -f query='
mutation($lockableId: ID!, $reason: LockReason) {
lockLockable(input: {lockableId: $lockableId, lockReason: $reason}) {
lockedRecord { locked }
}
}' -f lockableId="$DISCUSSION_NODE_ID" -f reason="SPAM"
exit 0
fi
done
+1 -1
View File
@@ -3,7 +3,7 @@
.next
.obsidian
.now
.idea
.cache
.env
node_modules
dist
+1 -1
View File
@@ -1,5 +1,5 @@
{
"cSpell.words": ["devs", "preact", "Preact"],
"cSpell.words": ["devs", "linecap", "linejoin", "preact", "Preact"],
"eslint.enable": true,
"eslint.validate": ["javascript", "svg"],
"svg.preview.background": "editor"
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Emoji",
"icon": "smile"
"icon": "face-slightly-smiling"
}
+1 -1
View File
@@ -1,4 +1,4 @@
import React, { Fragment } from 'react';
import React from 'react';
interface BackdropProps {
src: string;
@@ -3,7 +3,6 @@ import pathToPoints from './path-to-points';
import { Path, PathProps } from './types';
export const GapViolationHighlight = ({
radius,
stroke,
strokeWidth,
strokeOpacity,
+4 -4
View File
@@ -1,4 +1,4 @@
import React, { Fragment } from 'react';
import React from 'react';
import { PathProps, Path } from './types';
import getPaths, { assert } from './utils';
import { GapViolationHighlight } from './GapViolationHighlight.tsx';
@@ -293,7 +293,7 @@ const Radii = ({
...props
}: { paths: Path[] } & PathProps<
'strokeWidth' | 'stroke' | 'strokeDasharray' | 'strokeOpacity',
any
never
>) => {
return (
<g
@@ -361,12 +361,12 @@ const Radii = ({
const Handles = ({
paths,
...props
}: { paths: Path[] } & PathProps<'strokeWidth' | 'stroke' | 'strokeOpacity', any>) => (
}: { paths: Path[] } & PathProps<'strokeWidth' | 'stroke' | 'strokeOpacity', never>) => (
<g
className="svg-preview-handles-group"
{...props}
>
{paths.map(({ c, prev, next, cp1, cp2 }, i) => (
{paths.map(({ prev, next, cp1, cp2 }, i) => (
<React.Fragment key={i}>
{cp1 && <path d={`M${prev.x} ${prev.y} ${cp1.x} ${cp1.y}`} />}
{cp1 && (
@@ -12,7 +12,9 @@ function pathToPoints({ d, prev, next }: Path, interval = 1) {
points.push(commander.getPointAtLength(i));
}
points.push(next);
} catch (err) {}
} catch (err) {
console.warn(`Failed to convert path to points for d="${d}": ${err}`);
}
return points;
}
+2 -2
View File
@@ -55,7 +55,7 @@ export const getCommands = (src: string) =>
.flatMap(({ d, name }, idx) =>
new SVGPathData(d)
.toAbs()
// @ts-ignore
// @ts-expect-error `commands` is typed as a union of command types svgson does not narrow
.commands.map((c, cIdx) => ({ ...c, id: idx, idx: cIdx, name })),
);
@@ -242,7 +242,7 @@ const getPaths = (src: string) => {
break;
}
default: {
// @ts-ignore
// @ts-expect-error every command type is handled above, so `c` is not `never` here
assertNever(c);
}
}
@@ -13,11 +13,11 @@ const getIconCodes = (): CodeExampleType => {
title: 'Vanilla',
code: `\
<script>
import { createIcons, $CamelCase } from 'lucide';
import { createIcons, $PascalCase } from 'lucide';
createIcons({
icons: {
$CamelCase
$PascalCase
}
});
</script>
-2
View File
@@ -9,11 +9,9 @@ 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);
};
+8 -17
View File
@@ -1,5 +1,6 @@
import type MarkdownIt from 'markdown-it';
import type { RenderRule } from 'markdown-it/lib/renderer.mjs';
import type Token from 'markdown-it/lib/token.mjs';
import container from 'markdown-it-container';
import sandpackTheme from '../theme/sandpackTheme.json';
@@ -21,14 +22,10 @@ export default function sandpackPlugin(md: MarkdownIt, pluginOptions: SnackParam
throw new Error('MarkdownIt instance is required for sandpackPlugin');
}
const escapeHtml = md?.utils?.escapeHtml;
const defaultFence =
md.renderer.rules.fence ||
((tokens, idx, options, env, self) => self.renderToken(tokens, idx, options));
const renderSandbox = (tokenList: any[], index: number) => {
const renderFunc = (tokens: any[], idx: number) => {
const renderSandbox = (tokenList: Token[], index: number) => {
const renderFunc = (tokens: Token[], idx: number) => {
if (tokens[idx].nesting === 1) {
const fileAttr: string[] = [];
const attrs = Object.fromEntries(tokens[idx].attrs || []);
const files: Record<
@@ -47,7 +44,7 @@ export default function sandpackPlugin(md: MarkdownIt, pluginOptions: SnackParam
) {
if (tokens[i].type === 'fence' && tokens[i].tag === 'code') {
const info = tokens[i].info ?? '';
const [lang, fileName, params = ''] = info.split(' ');
const [, fileName, params = ''] = info.split(' ');
const active = params.includes('[active]');
const hidden = params.includes('[hidden]');
@@ -57,15 +54,9 @@ export default function sandpackPlugin(md: MarkdownIt, pluginOptions: SnackParam
if (fileName && code) {
files[fileName] = {
code,
...(active && { active: true }),
...(hidden && { hidden: true }),
};
if (active) {
(files[fileName] as any).active = true;
}
if (hidden) {
(files[fileName] as any).hidden = true;
}
}
}
}
@@ -122,7 +113,7 @@ export default function sandpackPlugin(md: MarkdownIt, pluginOptions: SnackParam
return renderFunc(tokenList, index);
};
function createCodeGroup(md: MarkdownIt): ContainerArgs {
function createCodeGroup(): ContainerArgs {
return [
container,
'sandpack',
@@ -134,5 +125,5 @@ export default function sandpackPlugin(md: MarkdownIt, pluginOptions: SnackParam
];
}
md.use(...createCodeGroup(md));
md.use(...createCodeGroup());
}
+1 -2
View File
@@ -73,7 +73,6 @@ export default function snackPlayerPlugin(md: MarkdownIt) {
'react-native-safe-area-context' + (params.dependencies ? `,${params.dependencies}` : '');
const platform = params.platform ?? 'web';
const supportedPlatforms = params.supportedPlatforms ?? 'ios,android,web';
const theme = params.theme ?? 'light';
const preview = params.preview ?? 'true';
const loading = params.loading ?? 'lazy';
const deviceAppearance = params.deviceAppearance ?? 'dark';
@@ -88,7 +87,7 @@ export default function snackPlayerPlugin(md: MarkdownIt) {
` data-snack-dependencies="${escapeHtml(dependencies)}"` +
` data-snack-platform="${escapeHtml(platform)}"` +
` data-snack-supported-platforms="${escapeHtml(supportedPlatforms)}"` +
// ` data-snack-theme="${escapeHtml(theme)}"` +
// ` data-snack-theme="${escapeHtml(params.theme ?? 'light')}"` +
` data-snack-preview="${escapeHtml(preview)}"` +
` data-snack-loading="${escapeHtml(loading)}"` +
` data-snack-device-appearance="${escapeHtml(deviceAppearance)}"` +
@@ -1,4 +1,3 @@
import { getAllData } from '../../../lib/icons';
import { getAllCategoryFiles, mapCategoryIconCount } from '../../../lib/categories';
import iconsMetaData from '../../../data/iconMetaData';
@@ -1,5 +1,3 @@
/* eslint-disable no-console */
import { ref, inject, Ref } from 'vue';
export const ICON_STYLE_CONTEXT = Symbol('style');
+3 -3
View File
@@ -6,13 +6,13 @@ declare module '*.vue' {
}
declare module '*.data.ts' {
const data: any;
const data: unknown;
export { data };
}
declare module '*.data' {
const data: any;
const data: unknown;
export { data };
}
@@ -75,7 +75,7 @@ declare global {
doNotShowAfterSubmit?: boolean;
customFormUrl?: string; // when you want to load the form via it's custom domain URL
hiddenFields?: {
[key: string]: any;
[key: string]: unknown;
};
onOpen?: () => void;
onClose?: () => void;
+1 -1
View File
@@ -68,6 +68,6 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"sandpack-vue3": "3.1.12",
"vue": "^3.5.40"
"vue": "^3.5.41"
}
}
-1
View File
@@ -1,4 +1,3 @@
/* eslint-disable no-restricted-syntax, no-await-in-loop */
import fs from 'fs';
import path from 'path';
import { simpleGit } from 'simple-git';
+3 -2
View File
@@ -1,4 +1,3 @@
/* eslint-disable no-restricted-syntax, no-await-in-loop */
import fs from 'fs';
import path from 'path';
import { loadEnvFile } from 'node:process';
@@ -10,7 +9,9 @@ const dataDirectory = path.resolve(currentDir, '.vitepress/data');
try {
// Load environment variables from .env file, if it exists.
loadEnvFile(`${currentDir}/.env`);
} catch (error) {}
} catch {
// No .env file, so rely on the environment as-is.
}
interface IconCollection {
/** Human readable name, used for logging. */
+154
View File
@@ -0,0 +1,154 @@
import path from 'node:path';
import js from '@eslint/js';
import { includeIgnoreFile } from '@eslint/compat';
import { defineConfig } from 'eslint/config';
import prettier from 'eslint-config-prettier';
import importX, { createNodeResolver } from 'eslint-plugin-import-x';
import htmlEslint from '@html-eslint/eslint-plugin';
import htmlParser from '@html-eslint/parser';
import defaultAttrs from './tools/build-icons/render/default-attrs.json' with { type: 'json' };
import tseslint from 'typescript-eslint';
const gitignorePath = path.join(import.meta.dirname, '.gitignore');
export default defineConfig([
tseslint.configs.recommended,
{
// `packages/angular` has its own config with its own tsconfig, so a single `eslint .` run sees
// two candidate roots and typescript-eslint refuses to guess between them.
languageOptions: {
parserOptions: {
tsconfigRootDir: import.meta.dirname,
},
},
},
// Everything git ignores (generated icon sources, build output, caches) is ignored here too.
includeIgnoreFile(gitignorePath),
{
// Ignores that are not in .gitignore, because these files are committed.
ignores: [
'lib',
'**/tests',
'packages/**/tests/*',
'docs/images',
'docs/**/examples/',
'docs/.vitepress/theme/components/editors/preact/index.js',
'packages/svelte/.svelte-kit',
// Tracked in git despite matching a .gitignore pattern, so lint it.
'!packages/lucide-react/dynamicIconImports.mjs',
],
},
{
files: ['**/*.js'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
console: 'readonly',
process: 'readonly',
global: 'readonly',
__dirname: 'readonly',
},
},
plugins: {
'import-x': importX,
},
settings: {
'import-x/resolver-next': [createNodeResolver()],
},
rules: {
...js.configs.recommended.rules,
...prettier.rules,
'no-console': 'off',
'no-param-reassign': 'off',
'no-shadow': 'off',
'no-use-before-define': 'off',
'import-x/no-extraneous-dependencies': [
'error',
{
devDependencies: [
'**/*.test.js',
'**/*.spec.js',
'**/scripts/**',
'eslint.config.js',
'packages/**/tests/**',
],
},
],
'import-x/extensions': [
'error',
{
pattern: {
mjs: 'always',
json: 'always',
},
},
],
},
},
{
rules: {
// Omitting a property by destructuring it away (`const { key, ...attrs } = node`) leaves the
// omitted binding unused on purpose, so don't report it.
'@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true }],
},
},
{
files: ['./icons/*.svg'],
languageOptions: {
parser: htmlParser,
},
plugins: {
'@html-eslint': htmlEslint,
},
rules: {
'@html-eslint/require-doctype': 'off',
'@html-eslint/no-duplicate-attrs': 'error',
'@html-eslint/no-inline-styles': 'error',
'@html-eslint/require-attrs': [
'error',
...Object.entries(defaultAttrs).map(([attr, value]) => ({
tag: 'svg',
attr,
value: String(value),
})),
],
'@html-eslint/indent': ['error', 2],
'@html-eslint/no-multiple-empty-lines': ['error', { max: 0 }],
'@html-eslint/no-extra-spacing-attrs': [
'error',
{
enforceBeforeSelfClose: true,
},
],
'@html-eslint/attrs-newline': [
'error',
{
inline: ['path', 'line', 'polyline', 'polygon', 'rect', 'circle', 'ellipse'],
},
],
'@html-eslint/require-closing-tags': [
'error',
{
selfClosing: 'always',
// Inside <svg> every tag counts as "foreign", where the rule only checks that a tag
// already written `/>` stays that way. Listing the shapes here is what actually forces
// `<path ...></path>` to become `<path ... />`.
selfClosingCustomPatterns: ['^(path|line|polyline|polygon|rect|circle|ellipse)$'],
},
],
'@html-eslint/no-restricted-attr-values': [
'error',
{
attrPatterns: ['^(fill|stroke)$'],
attrValuePatterns: ['^(?!(none|currentColor)$).*$'],
message:
'Icons must inherit their colors: `fill` and `stroke` may only be `none` or `currentColor`.',
},
],
'@html-eslint/element-newline': 'error',
'@html-eslint/no-trailing-spaces': 'error',
'@html-eslint/quotes': 'error',
},
},
]);
+34
View File
@@ -0,0 +1,34 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"samuelalake"
],
"use-cases": [
"rotation input in a design inspector",
"measurement tool in cad software",
"dimensioning in technical drawings",
"labeling angles in geometry exercises",
"displaying degrees for rotation controls"
],
"tags": [
"angle",
"degree",
"corner",
"geometry",
"measure",
"math",
"rotate",
"vertex",
"slope",
"protractor",
"measurement",
"dimension",
"arc",
"drafting",
"cad"
],
"categories": [
"math",
"design"
]
}
+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 3v16a2 2 0 0 0 2 2h16" />
<path d="M3 11a10 10 0 0 1 10 10" />
</svg>

After

Width:  |  Height:  |  Size: 287 B

+12 -1
View File
@@ -2,10 +2,21 @@
"$schema": "../icon.schema.json",
"contributors": [
"mittalyashu",
"ericfennis"
"ericfennis",
"jguddas"
],
"use-cases": [],
"tags": [
"symbol",
"sterisk",
"mark",
"pointer",
"pencil",
"sign",
"alert",
"notification",
"indicator",
"symbolic",
"reference",
"times",
"multiply",
+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 6v12" />
<path d="M17.196 9 6.804 15" />
<path d="m6.804 9 10.392 6" />
<path d="M12 5v14" />
<path d="m18.065 8.496-12.125 7" />
<path d="m5.94 8.504 12.125 7" />
</svg>

Before

Width:  |  Height:  |  Size: 299 B

After

Width:  |  Height:  |  Size: 306 B

+55
View File
@@ -0,0 +1,55 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley",
"karsa-mistmere"
],
"use-cases": [
"indicating that audio levels, playback, or monitoring are turned off",
"showing muted sound, silenced voice activity, or disabled audio output",
"marking controls that pause waveform visualization or stop live audio analysis",
"representing inactive music, radio, broadcast, or voice signal displays",
"identifying settings that disable sound processing, hearing feedback, or media levels",
"showing a muted microphone during voice or video calls",
"indicating speaker or headphone output is disabled in system audio controls",
"marking disabled waveform or spectrum visualization in audio editors and daws",
"showing that sound notifications or alerts are silenced"
],
"tags": [
"audio",
"sound",
"noise",
"mute",
"silence",
"off",
"disabled",
"inactive",
"listen",
"hearing",
"equalizer",
"equaliser",
"hertz",
"frequency",
"wavelength",
"vibrate",
"sine",
"waveform",
"synthesizer",
"synthesiser",
"levels",
"track",
"music",
"playback",
"radio",
"broadcast",
"airwaves",
"voice",
"vocals",
"singer",
"song"
],
"categories": [
"multimedia",
"communication"
]
}
+21
View File
@@ -0,0 +1,21 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 10v11" />
<path d="M10 3v1.35" />
<path d="M14 14v1" />
<path d="M14 8v.35" />
<path d="M18 5v7.35" />
<path d="M2 10v3" />
<path d="m2 2 20 20" />
<path d="M22 10v3" />
<path d="M6 6v11" />
</svg>

After

Width:  |  Height:  |  Size: 430 B

+1 -1
View File
@@ -10,5 +10,5 @@
stroke-linejoin="round"
>
<path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
<path d="m9 12 2 2 4-4" />
<path d="m16 9-5.5 5.5L8 12" />
</svg>

Before

Width:  |  Height:  |  Size: 412 B

After

Width:  |  Height:  |  Size: 417 B

+2 -1
View File
@@ -3,7 +3,8 @@
"contributors": [
"kemie",
"ericfennis",
"karsa-mistmere"
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"tags": [
+1 -1
View File
@@ -10,6 +10,6 @@
stroke-linejoin="round"
>
<path d="M16.4 13.7A6.5 6.5 0 1 0 6.28 6.6c-1.1 3.13-.78 3.9-3.18 6.08A3 3 0 0 0 5 18c4 0 8.4-1.8 11.4-4.3" />
<path d="m18.5 6 2.19 4.5a6.48 6.48 0 0 1-2.29 7.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5" />
<path d="m18.5 6 1.754 3.5a6.48 6.48 0 0 1-1.854 8.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5" />
<circle cx="12.5" cy="8.5" r="2.5" />
</svg>

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 470 B

+7 -2
View File
@@ -1,7 +1,8 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
"danielbayley",
"jguddas"
],
"use-cases": [],
"tags": [
@@ -22,7 +23,11 @@
"brightness",
"overlap",
"colors",
"colours"
"colours",
"marriage",
"rings",
"couple",
"connection"
],
"categories": [
"design",
+2 -2
View File
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="9" cy="9" r="7" />
<circle cx="15" cy="15" r="7" />
<circle cx="15" cy="9" r="7" />
<circle cx="9" cy="15" r="7" />
</svg>

Before

Width:  |  Height:  |  Size: 276 B

After

Width:  |  Height:  |  Size: 276 B

+2 -2
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m14.5 7-5 5" />
<path d="m14.5 7.5-5 5" />
<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20" />
<path d="m9.5 7 5 5" />
<path d="m9.5 7.5 5 5" />
</svg>

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 367 B

+29
View File
@@ -0,0 +1,29 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"andreynaz4renko"
],
"use-cases": [
"Showing battery status, power, and charging state",
"Category icon for car batteries, jump starters, or battery testers",
"Menu or shortcut for power-related info"
],
"tags": [
"battery",
"automobile",
"powercell",
"electric",
"power",
"electricity",
"energy",
"accumulator",
"charge",
"transport",
"vehicle",
"car"
],
"categories": [
"connectivity",
"transportation"
]
}
+18
View File
@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14 13h4" />
<path d="M16 15v-4" />
<path d="M18 5v2" />
<path d="M6 13h4" />
<path d="M6 5v2" />
<rect x="2" y="7" width="20" height="12" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 378 B

+1 -1
View File
@@ -10,5 +10,5 @@
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<path d="m9 12 2 2 4-4" />
<path d="m16 9-5.5 5.5L8 12" />
</svg>

Before

Width:  |  Height:  |  Size: 273 B

After

Width:  |  Height:  |  Size: 278 B

+19 -1
View File
@@ -14,7 +14,25 @@
"version control",
"choices",
"multiple choice",
"choose"
"choose",
"album",
"music",
"songs",
"format",
"cd",
"dvd",
"vinyl",
"sleeve",
"cover",
"platinum",
"compilation",
"ep",
"recording",
"playback",
"spin",
"rotate",
"rpm",
"dj"
],
"categories": [
"development",
+1 -1
View File
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<circle cx="12" cy="12" r="1" />
<circle cx="12" cy="12" r="10" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 279 B

+2 -2
View File
@@ -11,6 +11,6 @@
>
<rect width="8" height="4" x="8" y="2" rx="1" ry="1" />
<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2" />
<path d="m15 11-6 6" />
<path d="m9 11 6 6" />
<path d="m14.5 11.5-5 5" />
<path d="m9.5 11.5 5 5" />
</svg>

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 413 B

+2 -2
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21.95 13a10 10 0 1 0-8.685 8.92" />
<path d="M12 6v6l4 2" />
<path d="M22 12a10 10 0 1 0-11 9.95" />
<path d="m22 16-5.5 5.5L14 19" />
<path d="m16 19 2 2 4-4" />
</svg>

Before

Width:  |  Height:  |  Size: 313 B

After

Width:  |  Height:  |  Size: 313 B

+4 -4
View File
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<line x1="12" x2="18" y1="12" y2="18" />
<line x1="12" x2="18" y1="18" y2="12" />
<rect width="14" height="14" x="8" y="8" rx="2" ry="2" />
<path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" />
<path d="M4 16a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2" />
<rect x="8" y="8" width="14" height="14" rx="2" />
<path d="m12.5 12.5 5 5" />
<path d="m12.5 17.5 5-5" />
</svg>

Before

Width:  |  Height:  |  Size: 425 B

After

Width:  |  Height:  |  Size: 389 B

+41
View File
@@ -0,0 +1,41 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"ericfennis",
"karsa-mistmere"
],
"use-cases": [
"Confirming a saved payment card is valid",
"Indicating an approved card payment during checkout",
"Verifying a payment method in billing settings",
"Showing successful card authorization in banking apps"
],
"tags": [
"debit",
"payment",
"banking",
"finance",
"transaction",
"wallet",
"purchase",
"checkout",
"billing",
"account",
"cardholder",
"verified",
"approved",
"authorized",
"valid",
"success",
"complete",
"check",
"bank",
"cc"
],
"categories": [
"account",
"finance",
"shopping"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12.5 19H4a2 2 0 01-2-2V7a2 2 0 012-2h16a2 2 0 012 2v4" />
<path d="m16 17 2 2 4-4" />
<path d="M2 10h20" />
</svg>

After

Width:  |  Height:  |  Size: 332 B

+42
View File
@@ -0,0 +1,42 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"ericfennis",
"karsa-mistmere",
"ameniti-mx"
],
"use-cases": [
"Removing a saved payment card from an account",
"Unlinking a payment method in billing settings",
"Revoking card access in banking apps",
"Indicating a declined or canceled card payment"
],
"tags": [
"debit",
"payment",
"remove",
"delete",
"unlink",
"revoke",
"decline",
"canceled",
"banking",
"finance",
"wallet",
"transaction",
"billing",
"account",
"purchase",
"checkout",
"subtract",
"minus",
"bank",
"cc"
],
"categories": [
"account",
"finance",
"shopping"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 17h6" />
<path d="M22 10H2" />
<path d="M22 13V7a2 2 0 00-2-2H4a2 2 0 00-2 2v10a2 2 0 002 2h8.536" />
</svg>

After

Width:  |  Height:  |  Size: 329 B

+41
View File
@@ -0,0 +1,41 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"ericfennis",
"karsa-mistmere",
"ameniti-mx"
],
"use-cases": [
"Adding a payment card during checkout",
"Saving a new payment method in billing settings",
"Linking a card to a customer account",
"Requesting an additional card in banking apps"
],
"tags": [
"debit",
"payment",
"banking",
"finance",
"transaction",
"wallet",
"purchase",
"checkout",
"billing",
"account",
"cardholder",
"add",
"new",
"link",
"save",
"method",
"plastic",
"bank",
"cc"
],
"categories": [
"account",
"finance",
"shopping"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 17h6" />
<path d="M19 14v6" />
<path d="M22 10H2" />
<path d="M22 11.354V7a2 2 0 00-2-2H4a2 2 0 00-2 2v10a2 2 0 002 2h8.536" />
</svg>

After

Width:  |  Height:  |  Size: 357 B

+41
View File
@@ -0,0 +1,41 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"ericfennis",
"karsa-mistmere"
],
"use-cases": [
"Indicating a declined card payment during checkout",
"Marking an invalid payment card in billing settings",
"Showing failed card authorization in banking apps",
"Canceling a card payment before submission"
],
"tags": [
"debit",
"payment",
"banking",
"finance",
"transaction",
"wallet",
"purchase",
"checkout",
"billing",
"account",
"cardholder",
"declined",
"rejected",
"failed",
"invalid",
"canceled",
"error",
"cancel",
"bank",
"cc"
],
"categories": [
"account",
"finance",
"shopping"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12.5 19H4a2 2 0 01-2-2V7a2 2 0 012-2h16a2 2 0 012 2v3.5" />
<path d="m16.5 14.5 5 5" />
<path d="M2 10h20" />
<path d="m21.5 14.5-5 5" />
</svg>

After

Width:  |  Height:  |  Size: 364 B

+35
View File
@@ -0,0 +1,35 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"BorisDelchambre",
"ThibautMarechal",
"karsa-mistmere"
],
"use-cases": [
"eject removable media",
"unmount external storage",
"optical disc drive",
"media player controls",
"hardware controls"
],
"tags": [
"disc",
"drive",
"dvd",
"blu-ray",
"cd",
"media",
"optical",
"optical drive",
"removable media",
"storage",
"tray",
"unmount",
"usb"
],
"categories": [
"devices",
"files",
"multimedia"
]
}
+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M4 13a1 1 0 0 1-.72-1.695l7.257-7.668a2 2 0 0 1 2.926 0l7.256 7.668A1 1 0 0 1 20 13z" />
<rect x="3" y="17" width="18" height="4" rx="1" />
</svg>

After

Width:  |  Height:  |  Size: 361 B

+1 -1
View File
@@ -8,7 +8,7 @@
"about",
"calculate",
"math",
"operater"
"operator"
],
"categories": [
"math"
+5 -5
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M15 11V9.416" />
<path d="M17 9a5 5 0 00-3 1" />
<path d="M7 9a5 5 0 013 1" />
<path d="M9 11V9.416" />
<path d="M9 16a5 5 0 016.001 0" />
<path d="M15 12v-1.584" />
<path d="M17 10a5 5 0 00-3 1" />
<path d="M7 10a5 5 0 013 1" />
<path d="M9 12v-1.584" />
<path d="M9 17a5 5 0 016.001 0" />
<circle cx="12" cy="12" r="10" />
</svg>

Before

Width:  |  Height:  |  Size: 402 B

After

Width:  |  Height:  |  Size: 406 B

+35
View File
@@ -0,0 +1,35 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere"
],
"use-cases": [
"representing galaxies, stars, or deep space in astronomy content",
"visualizing the universe or cosmos in science education",
"marking space exploration, stargazing, or observatory features",
"identifying star chart or constellation map features",
"signifying interstellar or sci-fi travel sections in apps",
"branding planetarium events or astronomy clubs",
"decorative element in space-themed user interfaces or games",
"marking cosmic discoveries or research in science publications"
],
"tags": [
"astronomy",
"space",
"stars",
"cosmos",
"universe",
"spiral",
"milky way",
"nebula",
"cosmology",
"interstellar",
"celestial",
"constellation",
"stargazing",
"spaceflight"
],
"categories": [
"science"
]
}
+17
View File
@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16.005 15.108a5.041 6.52 28.25 00-8.008-6.217 5.041 6.52 28.25 008.008 6.217A11.884 7.288-60.76 014.029 7.001" />
<path d="M17 21h.01" />
<path d="M7 3h.01" />
<path d="M7.997 8.891a11.885 7.288-60.756 0111.977 8.107" />
<circle cx="12" cy="12" r="1" fill="currentColor" />
</svg>

After

Width:  |  Height:  |  Size: 502 B

+28 -3
View File
@@ -2,12 +2,37 @@
"$schema": "../icon.schema.json",
"contributors": [
"mittalyashu",
"ericfennis"
"ericfennis",
"jguddas"
],
"use-cases": [
"Representing Halloween themes in seasonal content",
"Indicating spooky or haunted themes",
"Marking invisible or hidden states in playful UIs",
"Indicating dead links or obsolete content",
"Showing ghosts or spirits in arcade-style games"
],
"use-cases": [],
"tags": [
"spirit",
"haunt",
"specter",
"apparition",
"wraith",
"shade",
"phantom",
"entity",
"shadow",
"silhouette",
"pac-man",
"spooky"
"spooky",
"halloween",
"haunted",
"invisible",
"hidden",
"empty",
"dead",
"obsolete",
"outdated"
],
"categories": [
"gaming"
+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M9 10h.01" />
<path d="M15 10h.01" />
<path d="M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z" />
<path d="M15 10v1" />
<path d="M7.528 20.472a1.6 1.6 0 012.277 0l1.057 1.056a1.6 1.6 0 002.276 0l1.057-1.056a1.6 1.6 0 012.277 0l1.114 1.114a1.4 1.4 0 002.414-1V10a8 8 0 00-16 0v10.586a1.4 1.4 0 002.414 1z" />
<path d="M9 10v1" />
</svg>

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 445 B

+2 -2
View File
@@ -11,7 +11,7 @@
>
<path d="M12 6h4a2 2 0 0 1 2 2v7" />
<path d="M6 12v9" />
<path d="M9 3 3 9" />
<path d="M9 9 3 3" />
<path d="m8.5 3.5-5 5" />
<path d="m8.5 8.5-5-5" />
<circle cx="18" cy="18" r="3" />
</svg>

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 361 B

+4 -4
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="6" cy="6" r="3" />
<path d="m15.5 3.5 5 5" />
<path d="m15.5 8.5 5-5" />
<path d="M18 11.62V15" />
<path d="M6 9v12" />
<path d="m21 3-6 6" />
<path d="m21 9-6-6" />
<path d="M18 11.5V15" />
<circle cx="18" cy="18" r="3" />
<circle cx="6" cy="6" r="3" />
</svg>

Before

Width:  |  Height:  |  Size: 376 B

After

Width:  |  Height:  |  Size: 385 B

+2 -2
View File
@@ -10,6 +10,6 @@
stroke-linejoin="round"
>
<path d="M12 3v17a1 1 0 0 1-1 1H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6a1 1 0 0 1-1 1H3" />
<path d="m16 16 5 5" />
<path d="m16 21 5-5" />
<path d="m16.5 16.5 5 5" />
<path d="m16.5 21.5 5-5" />
</svg>

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 373 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4" />
<path d="m21 2-9.6 9.6" />
<circle cx="7.5" cy="15.5" r="5.5" />
<path d="m2 21 9.6-9.6" />
<path d="m7.5 15.5 2.3 2.3a1 1 0 0 1 0 1.4l-2.1 2.1a1 1 0 0 1-1.4 0L4 19" />
<circle cx="15.5" cy="7.5" r="5.5" />
</svg>

Before

Width:  |  Height:  |  Size: 355 B

After

Width:  |  Height:  |  Size: 356 B

+33
View File
@@ -0,0 +1,33 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"jamiemlaw",
"kemie"
],
"use-cases": [
"showing the edit or revision history of a list item",
"indicating recently viewed list entries",
"displaying a list of recently changed tasks",
"representing an activity or audit log for list-based content",
"marking last-updated or timestamped list rows"
],
"tags": [
"history",
"log",
"clock",
"time",
"recent",
"updated",
"revision",
"activity",
"timestamp",
"audit",
"list"
],
"categories": [
"text",
"time",
"notifications"
]
}
+17
View File
@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 13v2.2l1.6 1" />
<path d="M3 12h3.458" />
<path d="M3 19h3.832" />
<path d="M3 5h18" />
<circle cx="16" cy="15" r="6" />
</svg>

After

Width:  |  Height:  |  Size: 352 B

+37
View File
@@ -0,0 +1,37 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"rrod497",
"colebemis",
"karsa-mistmere",
"ericfennis",
"jguddas",
"danielbayley"
],
"use-cases": [
"indicating certified or registered email",
"marking messages with proof of delivery",
"marking a message as signed or sealed",
"labeling official or legal correspondence"
],
"tags": [
"email",
"message",
"letter",
"certified",
"registered",
"seal",
"stamp",
"verified",
"envelope",
"rosette",
"signed",
"official",
"delivery"
],
"categories": [
"mail",
"communication",
"security"
]
}
+16
View File
@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M22 7.7V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8.25" />
<path d="M12 12.996a1.94 1.94 0 0 1-1.03-.296L2 7" />
<path d="m20.69 16.479 1.29 4.88a.5.5 0 0 1-.698.591l-1.843-.849a1 1 0 0 0-.879.001l-1.846.85a.5.5 0 0 1-.692-.593l1.29-4.88" />
<circle cx="19" cy="14" r="3" />
</svg>

After

Width:  |  Height:  |  Size: 507 B

+36
View File
@@ -0,0 +1,36 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"karsa-mistmere",
"ericfennis"
],
"use-cases": [
"Represents scheduled communication",
"Represents send later icons",
"Indication scheduled mail",
"Indication delayed delivery features in messaging, email, and productivity tools"
],
"tags": [
"email",
"message",
"letter",
"unread",
"scheduled",
"delayed",
"sendlater",
"delivery",
"reminder",
"pending",
"outgoing",
"timer"
],
"categories": [
"text",
"account",
"mail",
"time",
"notifications",
"communication"
]
}
+17
View File
@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 14v2.2l1.6 1" />
<path d="m22 7-.759.484" />
<path d="M6.835 20H4a2 2 0 01-2-2V6a2 2 0 012-2h16a2 2 0 012 2v2" />
<path d="M7.605 10.567 2 7" />
<circle cx="16" cy="16" r="6" />
</svg>

After

Width:  |  Height:  |  Size: 409 B

+4 -4
View File
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h9" />
<path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7" />
<path d="m17 17 4 4" />
<path d="m21 17-4 4" />
<path d="M22 12.532V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8.792" />
<path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7" />
<path d="m16.5 16.5 5 5" />
<path d="m21.5 16.5-5 5" />
</svg>

Before

Width:  |  Height:  |  Size: 390 B

After

Width:  |  Height:  |  Size: 404 B

+1 -1
View File
@@ -10,5 +10,5 @@
stroke-linejoin="round"
>
<path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719" />
<path d="m9 12 2 2 4-4" />
<path d="m16 9-5.5 5.5L8 12" />
</svg>

Before

Width:  |  Height:  |  Size: 376 B

After

Width:  |  Height:  |  Size: 381 B

+42
View File
@@ -0,0 +1,42 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"csandman",
"ericfennis",
"jguddas",
"karsa-mistmere",
"aliyasirnac"
],
"use-cases": [
"Confirming a draft message is ready",
"Marking pending feedback as resolved",
"Indicating provisional approval in conversation threads",
"Showing completed review status for comments"
],
"tags": [
"comment",
"chat",
"conversation",
"dialog",
"feedback",
"speech bubble",
"draft",
"pending",
"provisional",
"verification",
"confirmation",
"success",
"status",
"check",
"approval",
"moderate",
"resolved",
"done",
"complete"
],
"categories": [
"social",
"account"
]
}
+21
View File
@@ -0,0 +1,21 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10.1 2.182a10 10 0 013.8 0" />
<path d="M13.9 21.818a10 10 0 01-3.8 0" />
<path d="M17.609 3.72a10 10 0 012.69 2.7" />
<path d="M2.182 13.9a10 10 0 010-3.8" />
<path d="M20.28 17.61a10 10 0 01-2.7 2.69" />
<path d="M21.818 10.1a10 10 0 010 3.8" />
<path d="M3.721 6.391a10 10 0 012.7-2.69" />
<path d="m6.163 21.117-2.906.85a1 1 0 01-1.236-1.169l.965-2.98" />
<path d="m16 9-5.5 5.5L8 12" />
</svg>

After

Width:  |  Height:  |  Size: 628 B

+37
View File
@@ -0,0 +1,37 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"simoncoudeville",
"karsa-mistmere"
],
"use-cases": [
"Representing MIDI connections and ports in music production software",
"Indicating MIDI input and output on synthesizers, keyboards, and controllers",
"Showing MIDI device connectivity in audio and hardware configuration interfaces",
"Representing MIDI routing, patching, and signal flow",
"Identifying 5-pin DIN MIDI connectors in technical diagrams and device documentation"
],
"tags": [
"musical instrument digital interface",
"port",
"connector",
"socket",
"jack",
"din",
"5-pin",
"audio",
"music",
"synthesizer",
"keyboard",
"controller",
"interface",
"input",
"output",
"io"
],
"categories": [
"multimedia",
"connectivity",
"devices"
]
}
+19
View File
@@ -0,0 +1,19 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 18h.01" />
<path d="M15 2.458V5a1 1 0 01-1 1h-4a1 1 0 01-1-1V2.458" />
<path d="M16 16h.01" />
<path d="M18 12h.01" />
<path d="M6 12h.01" />
<path d="M8 16h.01" />
<circle cx="12" cy="12" r="10" />
</svg>

After

Width:  |  Height:  |  Size: 434 B

+38
View File
@@ -0,0 +1,38 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere"
],
"use-cases": [
"representing AI-assisted cleaning or automation features",
"indicating spotless or freshly cleaned surfaces",
"showing magical cleanup actions in smart home apps"
],
"tags": [
"cleaning",
"scrubbing",
"sweeping",
"ai",
"magic",
"sparkle",
"smart",
"automation",
"housekeeping",
"hygiene",
"sanitation",
"chores",
"swab",
"tidy",
"floor",
"spotless",
"pristine",
"polish",
"sanitize",
"disinfect"
],
"categories": [
"home",
"tools",
"design"
]
}
+22
View File
@@ -0,0 +1,22 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 22a3 3 0 01-3-3" />
<path d="M10 22c2.761 0 5-1.79 5-4-4.42 0-4.08-5-8.5-5a4.501 4.501 0 000 9z" />
<path d="M10 3H8" />
<path d="M12.5 11.5 22 2" />
<path d="M20 13v4" />
<path d="M22 15h-4" />
<path d="M4 5v4" />
<path d="M6 7H2" />
<path d="m6.98 13.02 2.665-2.664a1.21 1.21 0 011.71 0l2.29 2.288a1.21 1.21 0 010 1.712l-2.088 2.087" />
<path d="M9 2v2" />
</svg>

After

Width:  |  Height:  |  Size: 600 B

+39
View File
@@ -0,0 +1,39 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere"
],
"use-cases": [
"representing floor cleaning and housekeeping tasks",
"indicating janitorial or sanitation services",
"showing cleaning supplies in home maintenance apps",
"showing cleaning-in-progress or wet floor warnings",
"representing cleaning supplies in ecommerce listings",
"adding housekeeping requests in hotel apps",
"scheduling recurring floor maintenance tasks",
"labeling janitorial services on property management dashboards"
],
"tags": [
"cleaning",
"sweeping",
"scrubbing",
"housekeeping",
"hygiene",
"sanitation",
"chores",
"swab",
"tidy",
"floor",
"janitor",
"maintenance",
"wash",
"wipe",
"spotless",
"pristine",
"disinfect"
],
"categories": [
"home",
"tools"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 22c2.761 0 5-1.79 5-4-4.42 0-4.08-5-8.5-5a1 1 0 100 9za3 3 0 01-3-3" />
<path d="M12.5 11.5 22 2" />
<path d="m6.98 13.02 2.665-2.664a1.21 1.21 0 011.71 0l2.29 2.288a1.21 1.21 0 010 1.712l-2.088 2.087" />
</svg>

After

Width:  |  Height:  |  Size: 432 B

+2 -1
View File
@@ -2,7 +2,8 @@
"$schema": "../icon.schema.json",
"contributors": [
"chessurisme",
"karsa-mistmere"
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"tags": [
+3 -3
View File
@@ -11,8 +11,8 @@
>
<path d="M11.25 17.25h1.5L12 18z" />
<path d="m15 12 2 2" />
<path d="M18 6.5a.5.5 0 0 0-.5-.5" />
<path d="M20.69 9.67a4.5 4.5 0 1 0-7.04-5.5 8.35 8.35 0 0 0-3.3 0 4.5 4.5 0 1 0-7.04 5.5C2.49 11.2 2 12.88 2 14.5 2 19.47 6.48 22 12 22s10-2.53 10-7.5c0-1.62-.48-3.3-1.3-4.83" />
<path d="M6 6.5a.495.495 0 0 1 .5-.5" />
<path d="M17.902 6.599a8 8 0 0 0-.5-.5" />
<path d="M2 14.5C2 19.47 6.48 22 12 22s10-2.53 10-7.5a10 10 0 0 0-1.3-4.83 4.5 4.5 0 1 0-7.05-5.5 8 8 0 0 0-3.3 0 4.5 4.5 0 1 0-7.04 5.5A10 10 0 0 0 2 14.5" />
<path d="M6.099 6.599a8 8 0 0 1 .5-.5" />
<path d="m9 12-2 2" />
</svg>

Before

Width:  |  Height:  |  Size: 562 B

After

Width:  |  Height:  |  Size: 549 B

+6 -6
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M18.5 8c-1.4 0-2.6-.8-3.2-2A6.87 6.87 0 0 0 2 9v11a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-8.5C22 9.6 20.4 8 18.5 8" />
<path d="M2 14h20" />
<path d="M6 14v4" />
<path d="M10 14v4" />
<path d="M14 14v4" />
<path d="M18 14v4" />
<path d="M10 13v4" />
<path d="M14 13v4" />
<path d="M18 13v4" />
<path d="M2 13h20" />
<path d="M22 11.5A3.5 3.5 0 0018.5 8a3.52 3.52 0 01-3.173-2A7 7 0 002 9v10a2 2 0 002 2h16a2 2 0 002-2z" />
<path d="M6 13v4" />
</svg>

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 436 B

+41
View File
@@ -0,0 +1,41 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"Barakudum",
"jamiemlaw",
"karsa-mistmere"
],
"use-cases": [
"Representing a single card in tabletop games",
"Showing flashcards in learning interfaces",
"Marking prompts in icebreaker activities",
"Indicating chance-based actions or random selection"
],
"tags": [
"deck",
"draw",
"deal",
"shuffle",
"chance",
"random",
"selection",
"tabletop",
"flashcard",
"study",
"learning",
"prompt",
"icebreaker",
"conversation",
"collectible",
"trading",
"poker",
"casino",
"game",
"gambling",
"suit"
],
"categories": [
"gaming",
"development"
]
}
+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12.832 8.445a1 1 0 00-1.589-.098l-2.075 3.098a1 1 0 000 1.11l2 3a1 1 0 001.664 0l2-3a1 1 0 000-1.11z" />
<rect x="5" y="2" width="14" height="20" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 378 B

+45
View File
@@ -0,0 +1,45 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"Barakudum",
"karsa-mistmere"
],
"use-cases": [
"Representing a player's hand in card games",
"Showing planning poker estimates in agile tools",
"Displaying icebreaker prompts in conversation apps",
"Marking spread or revealed collectible cards"
],
"tags": [
"deck",
"fan",
"spread",
"hand",
"deal",
"dealt",
"draw",
"shuffle",
"tabletop",
"planning poker",
"scrum",
"agile",
"estimation",
"estimate",
"prompt",
"icebreaker",
"conversation",
"collectible",
"collection",
"trading",
"poker",
"casino",
"game",
"gambling",
"suit"
],
"categories": [
"gaming",
"development",
"social"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12.65 7.65a2 2 0 012.629-1.046l5.51 2.374a2 2 0 011.046 2.628l-3.957 9.184a2 2 0 01-2.628 1.046l-5.51-2.374a2 2 0 01-1.046-2.628z" />
<path d="M18 7.777V4a2 2 0 00-2-2h-6a2 2 0 00-2 2v10a2 2 0 001.137 1.805" />
<path d="m8 4.389-4.364.809a2 2 0 00-1.602 2.33l1.822 9.833a2 2 0 002.331 1.602l2.542-.47" />
</svg>

After

Width:  |  Height:  |  Size: 529 B

+43
View File
@@ -0,0 +1,43 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"Barakudum",
"jamiemlaw",
"karsa-mistmere"
],
"use-cases": [
"Representing decks in tabletop games",
"Showing planning poker cards in agile tools",
"Organizing flashcard sets in learning apps",
"Marking collectible card collections in inventories"
],
"tags": [
"deck",
"stack",
"shuffle",
"deal",
"draw",
"hand",
"tabletop",
"planning poker",
"scrum",
"agile",
"estimation",
"estimate",
"flashcards",
"study",
"learning",
"collectible",
"collection",
"trading",
"poker",
"casino",
"game",
"gambling",
"suit"
],
"categories": [
"gaming",
"development"
]
}
+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14.832 8.445a1 1 0 00-1.589-.098l-2.075 3.098a1 1 0 000 1.11l2 3a1 1 0 001.664 0l2-3a1 1 0 000-1.11z" />
<path d="m7.18 20.827-5-11a2 2 0 01.993-2.647L7 5.44" />
<rect x="7" y="2" width="14" height="20" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 437 B

+29
View File
@@ -0,0 +1,29 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"zoharma",
"karsa-mistmere"
],
"use-cases": [
"Representing industrial automation and robotics",
"Showing automated assembly or fabrication processes",
"Controlling robotic equipment in manufacturing apps",
"Monitoring assembly line operations in factory dashboards",
"Indicating automated production tasks in workflow tools"
],
"tags": [
"mechanical",
"automation",
"factory",
"manufacture",
"technology",
"cyborg",
"industrial",
"hardware",
"machinery"
],
"categories": [
"science",
"tools"
]
}
+18
View File
@@ -0,0 +1,18 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 21 7.5 8.322" />
<path d="m14 7 1.75-3.767a.5.5 0 0 1 .662-.172L20 5.005" />
<path d="m20 8.998-3.588 1.944a.5.5 0 0 1-.662-.172L14 7H8" />
<path d="M3.486 21h10" />
<path d="M5 21V8.732" />
<circle cx="6" cy="7" r="2" />
</svg>

After

Width:  |  Height:  |  Size: 455 B

+39
View File
@@ -0,0 +1,39 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"benhaube",
"karsa-mistmere"
],
"use-cases": [
"Representing automated floor cleaning on a smart home app control panel",
"Displaying as a device icon on a local network clients list",
"Controlling robotic cleaning devices from connected home dashboards",
"Scheduling recurring vacuum runs in housekeeping apps",
"Monitoring cleaning progress on mapped floor plans"
],
"tags": [
"appliance",
"cleaning",
"household",
"housekeeping",
"tool",
"maintenance",
"smarthome",
"sweeping",
"hygiene",
"chores",
"automation",
"smart home",
"device",
"floor",
"dust",
"debris",
"navigation",
"sensor"
],
"categories": [
"devices",
"home",
"tools"
]
}
+20
View File
@@ -0,0 +1,20 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M11 17h2" />
<path d="M12 12h.01" />
<path d="M17 12a5 5 0 00-10 0" />
<path d="M19 2v2.8" />
<path d="M2 5h2.8" />
<path d="M22 5h-2.8" />
<path d="M5 2v2.8" />
<circle cx="12" cy="12" r="10" />
</svg>

After

Width:  |  Height:  |  Size: 429 B

+45
View File
@@ -0,0 +1,45 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"l0uisgrange",
"karsa-mistmere",
"jguddas"
],
"use-cases": [
"representing maritime freight or cargo shipments",
"indicating seaborne logistics in supply chain dashboards",
"marking ports, terminals, or dock operations on maps",
"showing import or export status in trade apps",
"offering a shipping option in e-commerce or order tracking",
"illustrating cargo capacity or vessel type in transport apps",
"denoting bulk or container shipping routes"
],
"tags": [
"boat",
"knots",
"nautical mile",
"maritime",
"sailing",
"cruise",
"ocean liner",
"tanker",
"vessel",
"navy",
"cargo",
"container",
"freighter",
"freight",
"shipping",
"port",
"harbor",
"dock",
"logistics",
"import",
"export"
],
"categories": [
"transportation",
"navigation",
"travel"
]
}
+17
View File
@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 15v-3" />
<path d="M12 2v2" />
<path d="M16.5 12V9a1 1 0 011-1h1a1 1 0 001-1V5a1 1 0 00-1-1h-13a1 1 0 00-1 1v2a1 1 0 001 1h1a1 1 0 011 1v3" />
<path d="M19.38 19c1.076-1.815 1.636-4.89 1.628-6.008a1 1 0 00-1-.992H3.984a1 1 0 00-1 .984c-.03 1.86.97 5.621 2.826 7.776" />
<path d="M2 20c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1" />
</svg>

After

Width:  |  Height:  |  Size: 617 B

+5 -5
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 10.189V14" />
<path d="M12 2v3" />
<path d="M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6" />
<path d="M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76" />
<path d="M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1" />
<path d="M12 2v2" />
<path d="M12 9.189V13" />
<path d="M19 12V6a2 2 0 00-2-2H7a2 2 0 00-2 2v6" />
<path d="M19.38 19A11.6 11.6 0 0021 13l-8.188-3.639a2 2 0 00-1.624 0L3 13.001a11.6 11.6 0 002.81 7.76" />
<path d="M2 20c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1" />
</svg>

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 539 B

+2 -1
View File
@@ -4,7 +4,8 @@
"colebemis",
"csandman",
"ericfennis",
"karsa-mistmere"
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"tags": [
+4 -3
View File
@@ -9,7 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="8" cy="21" r="1" />
<circle cx="19" cy="21" r="1" />
<path d="M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12" />
<path d="m2.05 2.05 1.099-.028a1 1 0 0 1 1.008.815l2.69 14.347A1 1 0 0 0 7.83 18H18" />
<path d="M4.563 5h16.435a1 1 0 0 1 .981 1.204l-1.026 6.226A2 2 0 0 1 18.962 14H6.25" />
<circle cx="18" cy="20" r="2" />
<circle cx="8" cy="20" r="2" />
</svg>

Before

Width:  |  Height:  |  Size: 373 B

After

Width:  |  Height:  |  Size: 457 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m6 16 6-12 6 12" />
<path d="M8 12h8" />
<path d="m16 20 2 2 4-4" />
<path d="m20 15-5.5 5.5L12 18" />
<path d="m4 16 6-12 5.115 10.23" />
<path d="M6 12h8" />
</svg>

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 305 B

+1 -1
View File
@@ -10,5 +10,5 @@
stroke-linejoin="round"
>
<rect width="18" height="18" x="3" y="3" rx="2" />
<path d="m9 12 2 2 4-4" />
<path d="m16 9-5.5 5.5L8 12" />
</svg>

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 295 B

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