Compare commits

..
Author SHA1 Message Date
Eric Fennis 80a2d2540d Merge branch 'main' of https://github.com/lucide-icons/lucide into adding-use-cases 2026-07-17 18:22:55 +02:00
Karsa 658573b017 fix(docs): fix home page package links & accessible labels (#4540) 2026-07-17 13:33:45 +02:00
Karsagithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
5136572c10 feat(icons): added scan-box icon (#4551)
* Added icons/scan-box.svg

* Added icons/scan-box.json

* Update scan-box.json

* Update scan-box.svg

* Update icons/scan-box.json

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

* Update icons/scan-box.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-07-17 10:25:16 +02:00
Karsa 4f8088fd90 fix(icons): changed file-box icon (#4552)
* Updated icons/file-box.svg

* chore(icons/file-box): extend tags & use case metadata
2026-07-17 10:24:40 +02:00
Karsa ae40cfbc73 fix(icons): changed ethernet-port icon (#4555)
* Updated icons/ethernet-port.svg

* Updated icons/ethernet-port.json
2026-07-17 09:28:22 +02:00
Karsa cdd7db1ce6 fix(icons): changed hdmi-port icon (#4554)
* Updated icons/hdmi-port.svg

* Updated icons/hdmi-port.json
2026-07-17 09:28:17 +02:00
Jakob Guddas f930bbe07c feat(docs): add studio link (#4534)
* feat: add studio link

* fix: add aria label
2026-07-16 14:41:14 +02:00
Eric Fennis f229f83f0c chore(depedencies): Update dependencies (#4553)
* update deps

* Update even more

* Fix lint errors

* Apply feedback

* Update lockfile
2026-07-16 14:38:12 +02:00
Jakob Guddas b442632ee6 fix: broken link in brand logo comment (#4533) 2026-07-11 12:59:38 +02:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Eric Fennis
078a0b2339 chore(deps-dev): bump @babel/core from 7.28.5 to 7.29.6 (#4476)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.5 to 7.29.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.6/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.29.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-07-10 11:53:34 +02:00
5d78605650 fix(site): empty search results on first load for tag-only matches (#4413)
* fix(site): fetch icon search metadata when typing

* fix(site): gate "No results" on metadata availability, not fetch state

* fix(site): also wait on categories metadata on the category page

Keeps the loading guard symmetric with the icons page. The narrower
tags-only check was technically more precise (this page's useSearch
doesn't index categories), but the failure case it guarded against —
brand search landing on a blank area if /api/categories lags behind
/api/tags — is too narrow to justify the asymmetry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-07-10 11:22:57 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> ab61fa277b chore(deps-dev): bump astro from 6.1.10 to 6.4.6 (#4487)
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 6.1.10 to 6.4.6.
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@6.4.6/packages/astro)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 6.4.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 09:58:42 +02:00
Eric Fennis bb1329e512 fix(icons): Rename to circle-euro to match other euro icons (#4531)
* fix(icons): Rename to `circle-euro` to match other euro icons

* Add usecase
2026-07-10 09:58:01 +02:00
Turboman3000 b5b5d95933 feat(icons): added server-plus icon (#4232)
* Added icons/server-plus.svg

* Added icons/server-plus.json

* Updated icons/server-plus.json
2026-07-09 15:09:49 +02:00
Julian Solimandogithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Copilot Autofix powered by AIEric Fennis
7b589f2b5c feat(icons): added circle-euro-sign icon (#4353)
* Added icons/circle-euro-sign.svg

* Added icons/circle-euro-sign.json

* Update icons/circle-euro-sign.json

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

* Potential fix for pull request finding

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

* Apply suggestions from code review

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

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@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>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-09 14:54:38 +02:00
2d36863568 feat(icons): center the dot icon (#4492)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-07-09 14:54:20 +02:00
Eric FennisandCopilot Autofix powered by AI 7291cbcc0f fix(lucide-react-native): Add icon exports property to the package.json file (#4522)
* Add export per icon

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

* Add documentations

* Format code

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-09 14:53:06 +02:00
4c663b9a32 fix(vue): support kebab-case icon-node prop on Icon component (#4512)
* fix(vue): support kebab-case icon-node prop on Icon component

The Icon component destructured `iconNode` camelCase-only while
`stroke-width`/`absolute-stroke-width` accept both cases, so the
idiomatic Vue usage `<Icon :icon-node="..." />` left iconNode undefined
and crashed with 'Cannot read properties of undefined (reading map)'
(#3485). Accept the kebab-case alias and guard the render path.

Closes #3485

* Potential fix for pull request finding

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

* chore(vue): apply prettier formatting to Icon.ts

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-07-09 14:11:20 +02:00
Pavlos Vinieratos 63369b1ac0 fix(lucide-react-native): restore the icons entry point in the JS bundles (#4528) 2026-07-09 13:57:22 +02:00
Jamie Law f07465f82e Updated icons/option.svg (#4326) 2026-07-09 13:32:55 +02:00
GyeongHo KimandEric Fennis 60d583ce4e docs(site): list @gyeonghokim/lucide-lit as third-party package (#4421)
Add the @gyeonghokim/lucide-lit Lit web components package to the
third-party packages list, with a Lit framework logo for the card icon.

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-07-08 09:55:54 +02:00
Karsa 5828ecb38f fix(packages/angular): move child rendering logic to template from effect (#4519)
* fix(packages/angular): move child rendering logic to template from effect

* test(packages/angular): add unit tests on SSR hydration
2026-07-06 12:16:52 +02:00
Eric Fennis 031b226ac6 Add merch link (#4524) 2026-07-05 14:22:51 +02:00
Copilotandcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> 35d535a477 chore(icons): remove toBeRemovedInVersion metadata and make it optional in schema (#4513)
* Remove toBeRemovedInVersion from icons and make optional in schema

* fix(build-icons): align alias deprecation type with schema optional removal version

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-02 12:34:23 +02:00
Karsa 8930dfa827 fix(scripts): fix typo in renameIcon.function.mts (#4514) 2026-07-02 11:41:51 +02:00
Daniel CastillejoandEric Fennis c67c9bdbfb feat(icons): added paper-bag icon (#4023)
* Added icons/paper-bag.svg

* Added icons/paper-bag.json

* Update paper-bag.svg

* Update paper-bag.json with new fields and tags

Added 'use-cases' field and updated 'tags' list.

* Update paper-bag.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-07-01 16:02:09 +02:00
Eric Fennis 52d7c549c3 Set custom COPILOT_GITHUB_TOKEN (#4509) 2026-06-30 20:06:34 +02:00
Eric Fennis 9cb4e49849 Small fix in the workflow (#4508) 2026-06-30 19:15:07 +02:00
Eric FennisandCopilot Autofix powered by AI f59db07ef9 ci(repo-journal.yml): GH copilot repo summary (#4505)
* gh bot posting info

* Set secret

* Potential fix for pull request finding

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

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-30 14:09:53 +02:00
Eric Fennis 46bcf1fa89 chore(docs): Remove certificates banner (#4504)
* chore(docs): Remove certificate dev banner

* Remove css
2026-06-29 15:41:58 +02:00
George Nick Gorzynski 7d15e8466a fix(docs): prevent scrollbar layout shift on icons page (#4500)
Adds scrollbar-gutter: stable to html to reserve space for the scrollbar,
preventing layout shift when navigating to/from the icons route.
2026-06-29 09:21:11 +02:00
Ankit SharmaandEric Fennis ce2d598d96 feat(icons): added phi icon also used as golden-ratio (#4218)
* Added icons/phi.svg

* Added icons/phi.json

* Updated icons/phi.json

* Add use-cases to phi.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-06-28 18:36:16 +02:00
Jakob GuddasandEric Fennis 627b4c1672 fix(icons): changed ungroup icon (#3969)
* Updated icons/ungroup.svg

* Updated icons/ungroup.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-06-28 17:23:52 +02:00
Jakob Guddasgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
ee02505468 fix(icons): changed carrot icon (#4010)
* Updated icons/carrot.svg

* Updated icons/carrot.json

* Updated icons/carrot.svg

* Updated icons/carrot.json

* 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-06-28 17:20:06 +02:00
Konrad SzajnaandClaude Opus 4.8 7c8fbb4813 fix(astro): add Astro v7 compatibility (#4491)
Astro 7 is released and @lucide/astro works with it unchanged. Widen the peerDependencies range to include ^7.

Dev dependencies are intentionally kept on Astro 6: bumping them pulls Vite 8 into the workspace, which destabilizes pnpm's shared peer resolution and breaks the vitest snapshot tests in other packages (icons, svelte).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 17:32:55 +02:00
Eric Fennis 8a3f8c6bb9 Merge branch 'main' of https://github.com/lucide-icons/lucide into adding-use-cases 2026-06-26 08:49:58 +02:00
Eric Fennis 7e938845f0 fix(lcuide-react-native): Fix context provider export (#4497) 2026-06-25 07:22:42 +02:00
Eric Fennis 0d6c47d545 docs(installation.md): Remove outdate next tag in installation (#4495) 2026-06-24 12:03:14 +02:00
HsiandEric Fennis 2f5af2ceb5 fix(docs): allow icon popularity prebuild without token (#4481)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-06-24 11:35:49 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 448bcc90fe chore(deps): bump esbuild from 0.25.12 to 0.28.1 (#4459)
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.25.12 to 0.28.1.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2025.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.25.12...v0.28.1)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version: 0.28.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-24 11:23:17 +02:00
Bartek Iwańczuk 2fed527c00 docs(site): add Deno to installation instructions (#4486) 2026-06-24 11:17:59 +02:00
Hsi 8fc6b70aa5 fix(docs): fix color input clipping (#4488)
* fix(docs): cap customizer hex input

* fix(docs): use full width color field
2026-06-19 16:16:39 +02:00
Eric Fennis cf0e1e44ba ci(release.yml): Remove concurrency field to prevent release mess (#4485) 2026-06-18 14:41:27 +02:00
Eric Fennis 27c997fc14 Add batch 12 2026-06-18 14:39:05 +02:00
Eric Fennis 622d9efa24 Add batch 11 2026-06-18 14:31:44 +02:00
Eric Fennis b61e540082 Add batch 10 2026-06-18 14:29:58 +02:00
Eric Fennis d21b575107 Add batch 9 2026-06-18 14:26:27 +02:00
Eric Fennis 32776e8242 Add batch 8 2026-06-18 14:16:31 +02:00
Eric Fennis bea6fdcac3 Add batch 7 2026-06-18 14:13:01 +02:00
Eric Fennis e86c474fd5 Add batch 6 2026-06-18 13:55:12 +02:00
Eric Fennis 6c36c9ba80 Add batch 5 2026-06-18 13:43:23 +02:00
Eric Fennis e8a2214eee Add batch 4 2026-06-18 13:38:01 +02:00
Eric Fennis 91cc79b19f Add batch 3 2026-06-18 13:34:32 +02:00
Eric Fennis df5fb69839 Add batch 2 2026-06-18 13:07:41 +02:00
Eric Fennis 9b5fd4514e Batch one of use-cases 2026-06-18 11:46:30 +02:00
Eric Fennis b380956554 Apply use-cases 2026-06-18 11:19:17 +02:00
Eric Fennis 1de10e927d Merge branch 'adding-use-cases-part-two' into adding-use-cases 2026-06-18 10:59:30 +02:00
Eric Fennis b01519fd54 Merge branch 'adding-use-cases-part-one' into adding-use-cases 2026-06-18 10:59:21 +02:00
BarakudumandEric Fennis 65ef069acc feat(icons): add 6 database variant icons (#4336)
* feat(icons): added database-variants `database-check`, `database-x`, `database-plus`, `database-minus`, `database-arrow-down`, `database-arrow-up`

* fix(metadata): add missing use-cases for database variant icons

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-06-18 09:06:07 +02:00
Eric Fennis c1fcc1f238 ci(release.yml): Remove concurrency field to prevent release mess 2026-06-18 08:57:54 +02:00
7983b2a262 feat(icons): added broken-bone icon (#4131)
* Added icons/broken-bone.svg

* Added icons/broken-bone.json

* redesign according to guidelines

* fix(bone-fracture.json): Remove trailing comma and ensure proper JSON formatting

* 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-06-18 08:54:04 +02:00
Hsi 7ddb1e237d fix(docs): rename navigation category label (#4483) 2026-06-17 07:42:12 +02:00
Eric Fennis 5ff536e139 ci(release.yml): Fix workflow and remove version scripts in package scripts (#4479)
* ci(release.yml): Remove new-version in release flow

* Remove version in scripts

* Update workflow
2026-06-16 16:24:07 +02:00
Eric Fennis bb7d2d9839 ci(release.yml): Remove new-version in release flow (#4478) 2026-06-16 15:01:58 +02:00
fc20eb6c7a feat(icons): added pencil-sparkles icon (#4445)
* Added icons/pencil-sparkles.svg

* Added icons/pencil-sparkles.json

* Fix pencil-sparkles artboard

viewbox was previously set to 22px instead of 24px

* Potential fix for pull request finding

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

* 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>
Co-authored-by: Karsa <contact@karsa.org>
2026-06-16 13:21:44 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> d850228c3c chore(deps-dev): bump @angular/common from 21.2.5 to 21.2.17 (#4471)
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 21.2.5 to 21.2.17.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.2.17/packages/common)

---
updated-dependencies:
- dependency-name: "@angular/common"
  dependency-version: 21.2.17
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 08:41:07 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> f6cef23cd7 chore(deps-dev): bump markdown-it from 14.1.1 to 14.2.0 (#4475)
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 14.1.1 to 14.2.0.
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/14.1.1...14.2.0)

---
updated-dependencies:
- dependency-name: markdown-it
  dependency-version: 14.2.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 08:37:37 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 766c98af22 chore(deps-dev): bump vitest from 4.0.12 to 4.1.0 (#4429)
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.0.12 to 4.1.0.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 08:36:08 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 1f0f070e84 chore(deps-dev): bump @angular/core from 21.2.5 to 21.2.17 (#4470)
Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 21.2.5 to 21.2.17.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.2.17/packages/core)

---
updated-dependencies:
- dependency-name: "@angular/core"
  dependency-version: 21.2.17
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 08:08:03 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> a90271b282 chore(deps-dev): bump @angular/compiler from 21.2.5 to 21.2.17 (#4474)
Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 21.2.5 to 21.2.17.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.2.17/packages/compiler)

---
updated-dependencies:
- dependency-name: "@angular/compiler"
  dependency-version: 21.2.17
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 06:32:06 +02:00
Scott Krukowski c81680e066 docs(docs): fix broken Svelte package source link in README (#4468) 2026-06-15 09:42:24 +02:00
0c57f7265a feat(icons): added clock-arrow-out icon (#2404)
* Added icons/clock-arrow-out.svg

* Added icons/clock-arrow-out.json

* Rename icon

* Add empty use-cases array

* Potential fix for pull request finding

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

* Update clock-arrow-right.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-13 17:51:32 +02:00
Jakob Guddasgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
f917f247e3 feat(icons): added user-round-arrow-in icon (#2283)
* Added icons/user-round-arrow-inwards.svg

* Added icons/user-round-arrow-inwards.json

* Updated icons/user-round-arrow-inwards.json

* Rename user-round-arrow-inwards.json to user-round-arrow-in.json

* Rename user-round-arrow-inwards.svg to user-round-arrow-in.svg

* Rename icon

* Add use cases empty

* 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-06-13 17:35:55 +02:00
Jacob Padillagithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Copilot Autofix powered by AIEric FennisJakob Guddas
aef0f98a68 feat(icons): added summary icon (#3114)
* ai summary icon

* other summary icon svg

* slightly less pronounced curve

* Modify SVG paths in summary.svg

* Update icons/summary.json

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

* 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: Jakob Guddas <github@jguddas.de>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-13 17:31:07 +02:00
6e5c250af0 feat(icons): added clock-arrow-in icon (#2403)
* Added icons/clock-arrow-in.svg

* Added icons/clock-arrow-in.json

* Updated icons/clock-arrow-in.json

* Rename to clock-arrow-left

* 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-06-13 17:25:43 +02:00
Marcos Ramírez F.github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>KarsaCopilot Autofix powered by AIEric Fennis
f37f235d78 feat(icons): added banknote-check icon (#3956)
* Added icons/banknote-check.svg

* Added icons/banknote-check.json

* Update icons/banknote-check.json

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

* Apply suggestions from code review

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

* Potential fix for pull request finding

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

* Update banknote-check.json

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-13 17:02:57 +02:00
b973e42174 feat(icons): added tag-plus and tag-x icons (#3980)
* add tag-plus icon

* add tag-x icon

* Update icons/tag-x.svg

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

* Apply suggestions from code review

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

* Apply suggestions from code review

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: Karsa <contact@karsa.org>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-13 17:02:40 +02:00
Eric Fennis ce6fb3dd6c fix(metadata): Add use-cases to auto-save 2026-06-13 16:55:50 +02:00
c3262987be feat(icons): added save-check icon (#3120)
* Added icons/save-check.svg

* Added icons/save-check.json

* Fixing angle of the checkmark to be 90 degrees

* Adding contributors of the save icon

* Update save-check.svg paths for new design

* Update save-check.svg

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-06-13 15:51:47 +02:00
Jamie Law 52ee7b3692 Add tags to search- icons (#4099) 2026-06-13 15:32:02 +02:00
Jakob Guddas 04ee825d6b fix(icons): decreased size of arrows inside square-arrow-* icons (#3926)
* Updated icons/square-arrow-down-left.svg

* Updated icons/square-arrow-down-left.json

* Updated icons/square-arrow-up-right.svg

* Updated icons/square-arrow-up-right.json

* Updated icons/square-arrow-up-left.svg

* Updated icons/square-arrow-up-left.json

* Updated icons/square-arrow-down-right.svg

* Updated icons/square-arrow-down-right.json
2026-06-13 15:29:54 +02:00
Eric Fennis 8f2482ac06 Adding remaining use-cases 2026-06-13 10:41:16 +02:00
Eric Fennis c99099ea1c Adding use-cases from prs 2026-06-13 10:40:41 +02:00
1830 changed files with 13331 additions and 11696 deletions
@@ -33,7 +33,7 @@ jobs:
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.](./BRAND_LOGOS_STATEMENT.md)
[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})
+2 -5
View File
@@ -20,9 +20,6 @@ permissions:
id-token: write # Required for OIDC
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
jobs:
prepare:
if: github.repository == 'lucide-icons/lucide' && contains('["ericfennis", "karsa-mistmere", "jguddas"]', github.actor)
@@ -74,7 +71,7 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Set new version
run: pnpm --fail-if-no-match --filter ${{ matrix.package }} version --new-version ${{ needs.prepare.outputs.VERSION }} --no-git-tag-version
run: pnpm version ${{ needs.prepare.outputs.VERSION }} --filter ${{ matrix.package }} --fail-if-no-match --no-git-tag-version
- name: Build
run: pnpm --filter ${{ matrix.package }} build
@@ -108,7 +105,7 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Set new version
run: pnpm --filter lucide-static version --new-version ${{ needs.prepare.outputs.VERSION }} --no-git-tag-version
run: pnpm version ${{ needs.prepare.outputs.VERSION }} --filter lucide-static --no-git-tag-version
- name: Move Font
run: cp -r lucide-font packages/lucide-static/font
+42
View File
@@ -0,0 +1,42 @@
name: Weekly Repo Report
on:
workflow_dispatch:
# Run this workflow every Monday at 07:00 UTC
schedule:
- cron: '0 7 * * 1'
permissions:
contents: read
jobs:
weekly-summary:
runs-on: ubuntu-latest
steps:
- name: Set up Node.js environment
uses: actions/setup-node@v4
with:
node-version: 24
- name: Install Copilot CLI
run: npm install -g @github/copilot
- name: Run the prompt
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
run: |
copilot -p "${{ vars.REPO_REPORT_PROMPT }} Write the details to summary.md" --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user
cat summary.md >> "$GITHUB_STEP_SUMMARY"
- name: Post report to Discord (private channel)
env:
DISCORD_WEBHOOK_URL: ${{ secrets.LUCIDE_DISCORD_WEBHOOK }}
run: |
jq -Rs '{
embeds: [{
title: "📊 Weekly Repo Report",
description: (.[0:4096]),
color: 5814783
}]
}' summary.md > payload.json
curl -sS --fail -X POST \
-H "Content-Type: application/json" \
-d @payload.json \
"$DISCORD_WEBHOOK_URL"
+1 -1
View File
@@ -35,7 +35,7 @@ Lucide is an open-source icon library that provides 1600+ vector (svg) files for
| <img src="https://lucide.dev/framework-logos/js.svg" alt="JS logo" width="48"> | **`lucide`** | [![npm](https://img.shields.io/npm/v/lucide)](https://www.npmjs.com/package/lucide) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide) | [Docs](https://lucide.dev/guide/lucide) · [Source](./packages/lucide) |
| <img src="https://lucide.dev/framework-logos/react.svg" alt="React logo" width="48"> | **`lucide-react`** | [![npm](https://img.shields.io/npm/v/lucide-react)](https://www.npmjs.com/package/lucide-react) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-react) | [Docs](https://lucide.dev/guide/react) · [Source](./packages/lucide-react) |
| <img src="https://lucide.dev/framework-logos/vue.svg" alt="Vue logo" width="48"> | **`@lucide/vue`** | [![npm](https://img.shields.io/npm/v/@lucide/vue)](https://www.npmjs.com/package/@lucide/vue) | ![NPM Downloads](https://img.shields.io/npm/dw/@lucide/vue) | [Docs](https://lucide.dev/guide/vue) · [Source](./packages/vue) |
| <img src="https://lucide.dev/framework-logos/svelte.svg" alt="Svelte logo" width="48"> | **`@lucide/svelte`** | [![npm](https://img.shields.io/npm/v/@lucide/svelte)](https://www.npmjs.com/package/@lucide/svelte) | ![NPM Downloads](https://img.shields.io/npm/dw/@lucide/svelte) | [Docs](https://lucide.dev/guide/svelte) · [Source](./packages/@lucide/svelte) |
| <img src="https://lucide.dev/framework-logos/svelte.svg" alt="Svelte logo" width="48"> | **`@lucide/svelte`** | [![npm](https://img.shields.io/npm/v/@lucide/svelte)](https://www.npmjs.com/package/@lucide/svelte) | ![NPM Downloads](https://img.shields.io/npm/dw/@lucide/svelte) | [Docs](https://lucide.dev/guide/svelte) · [Source](./packages/svelte) |
| <img src="https://lucide.dev/framework-logos/solid.svg" alt="Solid logo" width="48"> | **`lucide-solid`** | [![npm](https://img.shields.io/npm/v/lucide-solid)](https://www.npmjs.com/package/lucide-solid) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-solid) | [Docs](https://lucide.dev/guide/solid) · [Source](./packages/lucide-solid) |
| <img src="https://lucide.dev/framework-logos/preact.svg" alt="Preact logo" width="48"> | **`lucide-preact`** | [![npm](https://img.shields.io/npm/v/lucide-preact)](https://www.npmjs.com/package/lucide-preact) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-preact) | [Docs](https://lucide.dev/guide/preact) · [Source](./packages/lucide-preact) |
| <img src="https://lucide.dev/framework-logos/react-native.svg" alt="React Native logo" width="48"> | **`lucide-react-native`** | [![npm](https://img.shields.io/npm/v/lucide-react-native)](https://www.npmjs.com/package/lucide-react-native) | ![NPM Downloads](https://img.shields.io/npm/dw/lucide-react-native) | [Docs](https://lucide.dev/guide/react-native) · [Source](./packages/lucide-react-native) |
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Navigation, Maps, and POIs",
"title": "Navigation & Places",
"icon": "compass"
}
+1
View File
@@ -101,6 +101,7 @@ export default defineConfig({
},
{ text: 'Packages', link: '/packages' },
{ text: 'Showcase', link: '/showcase' },
{ text: 'Merch', link: 'https://merch.lucide.dev/' },
],
sidebar,
socialLinks: [
+1 -1
View File
@@ -97,7 +97,7 @@
},
{
"name": "navigation",
"title": "Navigation, Maps, and POIs"
"title": "Navigation & Places"
},
{
"name": "notifications",
@@ -209,5 +209,24 @@
],
"source": "https://github.com/shx08/strapi-lucide-icons",
"documentation": "https://github.com/shx08/strapi-lucide-icons/blob/main/README.md"
},
{
"name": "lucide-lit",
"description": "Implementation of Lucide icons as Lit web components.",
"icon": "/framework-logos/lit.svg",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/npm/v/@gyeonghokim/lucide-lit",
"href": "https://www.npmjs.com/package/@gyeonghokim/lucide-lit"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/npm/dw/@gyeonghokim/lucide-lit",
"href": "https://www.npmjs.com/package/@gyeonghokim/lucide-lit"
}
],
"source": "https://github.com/GyeongHoKim/lucide-lit",
"documentation": "https://github.com/GyeongHoKim/lucide-lit/blob/main/README.md"
}
]
-7
View File
@@ -24,13 +24,6 @@ const getHeadConfig = ({
defer: '',
},
],
[
'script',
{
src: 'https://media.bitterbrains.com/main.js?from=LUCIDE&type=top',
async: 'true',
},
],
[
'meta',
{
+5
View File
@@ -72,6 +72,11 @@ export const reactNativeSidebar = [
link: '/guide/react-native/advanced/combining-icons',
desc: 'Combine multiple icons into one',
},
{
text: 'Optimizations',
link: '/guide/react-native/advanced/optimizations',
desc: 'Optimizing your app for performance',
},
],
},
{
@@ -11,6 +11,14 @@ const { isDark } = useData();
const emit = defineEmits(['update:modelValue']);
function limitHexInput(val: string) {
if (val.startsWith('#')) {
return val.slice(0, 9);
}
return val.slice(0, 8);
}
const value = computed({
get: () => {
if (props.modelValue == null || props.modelValue === 'currentColor') {
@@ -19,7 +27,7 @@ const value = computed({
return props.modelValue;
},
set: (val) => emit('update:modelValue', val),
set: (val) => emit('update:modelValue', limitHexInput(val)),
});
</script>
@@ -41,6 +49,7 @@ const value = computed({
class="color-input-text"
aria-label="Color picker input"
v-model="value"
maxlength="9"
placeholder="[default]"
/>
</div>
@@ -91,6 +100,7 @@ const value = computed({
background: transparent;
color: var(--vp-c-text-1);
font-size: 13px;
font-family: var(--vp-font-family-mono);
text-align: left;
border-radius: 8px;
cursor: text;
@@ -1,90 +0,0 @@
<script setup lang="ts">
import { useRouter } from 'vitepress';
import { computed } from 'vue';
const router = useRouter();
const frameworks = [
{
ariaLabel: 'Get JavaScript certificates from certificates.dev',
image: '/certificates-dev/js-certificates-dev.jpg',
href: 'https://certificates.dev/javascript?friend=LUCIDE',
routes: [
'/guide/lucide/',
'/guide/svelte/',
'/guide/solid/',
'/guide/astro/',
'/guide/static/'
],
},
{
ariaLabel: 'Get React certificates from certificates.dev',
image: '/certificates-dev/react-certificates-dev.jpg',
href: 'https://certificates.dev/react?friend=LUCIDE',
routes: [
'/guide/react/',
'/guide/react-native/',
'/guide/preact/',
],
},
{
ariaLabel: 'Get Vue certificates from certificates.dev',
href: 'https://certificates.dev/vuejs?friend=LUCIDE',
image: '/certificates-dev/vue-certificates-dev.jpg',
routes: [
'/guide/vue/',
],
},
{
ariaLabel: 'Get Angular certificates from certificates.dev',
href: 'https://certificates.dev/angular?friend=LUCIDE',
image: '/certificates-dev/angular-certificates-dev.jpg',
routes: [
'/guide/angular/',
],
}
];
const selected = computed(() => {
const current = frameworks.find(({ routes }) => {
return routes.some(route => router.route.path.startsWith(route));
});
return current || frameworks[0];
});
</script>
<template>
<a class="certificates-link" :href="selected.href" :aria-label="selected.ariaLabel" target="_blank" rel="noopener noreferrer">
<img :src="selected.image" :alt="selected.ariaLabel" />
</a>
</template>
<style scoped>
.certificates-link {
/* padding: 20px; */
border-radius: 12px;
min-height: 100px;
text-align: center;
line-height: 18px;
font-size: 12px;
font-weight: 500;
background-color: var(--vp-carbon-ads-bg-color);
margin-bottom: 20px;
overflow: hidden;
}
.certificates-link img {
width: 100%;
height: 100%;
max-width: 100%;
border-radius: 6px;
transition: transform 0.3s ease, opacity 0.3s ease;
}
.certificates-link:hover img {
transform: scale(1.05);
opacity: 0.9;
}
</style>
@@ -13,23 +13,21 @@ const { go } = useRouter()
<HomeSectionTitle>Available For:</HomeSectionTitle>
<div class="packages-list">
<a
v-for="{ name, logo, logoDark } in data.packages"
:href="`/guide/packages/${name}`"
v-for="{ name, label, path, logo, logoDark } in data.packages"
:href="path"
class="package-logo"
:aria-label="`Read more about: ${name} package`"
@click.prevent="go(`/guide/packages/${name}`)"
@click.prevent="go(path)"
>
<img
:src="logo"
:class="{ light: logoDark, 'image-logo': true }"
:alt="`${name} logo`"
:alt="label"
loading="lazy"
/>
<img
v-if="logoDark"
:src="logoDark"
:alt="`${name} logo`"
:alt="label"
class="image-logo dark"
loading="lazy"
/>
@@ -3,6 +3,7 @@ import type { IconEntity } from '../../types';
import { computed, ref } from 'vue';
import createLucideIcon from '@lucide/vue/src/createLucideIcon';
import { useIconStyleContext } from '../../composables/useIconStyle';
import { squarePen } from '../../../data/iconNodes';
const props = defineProps<{
name: IconEntity['name'];
@@ -19,6 +20,31 @@ const iconComponent = computed(() => {
if (!props.name || !props.iconNode) return null;
return createLucideIcon(props.name, props.iconNode);
});
const SquarePenIcon = createLucideIcon('SquarePen', squarePen);
const innerSvg = computed(() => {
if (!props.iconNode) return '';
const string = props.iconNode
.map(([tag, attrs]) => {
const attributes = Object.entries(attrs)
.map(([key, value]) => `${key}="${value}"`)
.join(' ');
return `<${tag} ${attributes}/>`;
})
.join('');
return string
.replace(/>[\r\n ]+</g, '><')
.replace(/(<.*?>)|\s+/g, (m, $1) => $1 || ' ')
.trim();
});
const base64InnerSvg = computed(() => {
if (typeof window === 'undefined') return '';
return btoa(innerSvg.value);
});
</script>
<template>
@@ -57,6 +83,16 @@ const iconComponent = computed(() => {
/>
</g>
</svg>
<a
:href="`https://studio.lucide.dev/edit?value=${encodeURIComponent(base64InnerSvg)}&name=${name}`"
target="_blank"
rel="noopener noreferrer"
class="studio-button"
title="Open in Lucide Studio"
aria-label="Open in Lucide Studio"
>
<SquarePenIcon :size="14" />
</a>
</div>
</template>
@@ -75,6 +111,8 @@ const iconComponent = computed(() => {
position: relative;
background: var(--vp-c-bg-alt);
border-radius: 8px;
overflow: hidden;
flex-shrink: 0;
}
.icon-container > :deep(svg:not(.icon-grid)) {
width: 100%;
@@ -85,6 +123,34 @@ const iconComponent = computed(() => {
opacity: 0.8;
}
.studio-button {
position: absolute;
bottom: 8px;
right: 8px;
background: var(--vp-c-bg);
border: 1px solid var(--vp-c-divider);
border-radius: 6px;
padding: 5px;
display: flex;
align-items: center;
justify-content: center;
color: var(--vp-c-text-2);
opacity: 0;
transition: opacity 0.2s, color 0.2s, background-color 0.2s;
z-index: 2;
}
.icon-container:hover .studio-button,
.studio-button:focus-visible {
opacity: 1;
}
.studio-button:hover,
.studio-button:focus-visible {
background: var(--vp-c-bg-soft);
color: var(--vp-c-text-1);
}
.icon-component.customizable {
will-change: width, height, stroke-width, stroke;
/* color: var(--customize-color, currentColor);
@@ -44,8 +44,12 @@ function setActiveIconName(name: string) {
activeIconName.value = name;
}
const { execute: fetchTags, data: tags } = useFetchTags();
const { execute: fetchCategories, data: categoriesMap } = useFetchCategories();
const { execute: fetchTags, data: tags, isFetching: isFetchingTags } = useFetchTags();
const {
execute: fetchCategories,
data: categoriesMap,
isFetching: isFetchingCategories,
} = useFetchCategories();
const overviewEl = ref<HTMLElement | null>(null);
const { width: containerWidth } = useElementSize(overviewEl);
@@ -117,6 +121,9 @@ const categoriesList = computed(() => {
}, []);
});
const searchPlaceholder = useSearchPlaceholder(searchQuery, searchResults);
const isSearchMetadataLoading = computed(
() => searchQuery.value.length > 0 && (tags.value == null || categoriesMap.value == null),
);
const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(categoriesList, {
itemHeight: ICON_SIZE + ICON_GRID_GAP,
@@ -135,15 +142,21 @@ onMounted(() => {
useEventListener(window, 'scroll', containerProps.onScroll);
});
function onFocusSearchInput() {
if (tags.value == null) {
fetchTags();
function loadSearchMetadata() {
if (tags.value == null && !isFetchingTags.value) {
void fetchTags();
}
if (categoriesMap.value == null) {
fetchCategories();
if (categoriesMap.value == null && !isFetchingCategories.value) {
void fetchCategories();
}
}
watch(searchQuery, (searchString) => {
if (searchString !== '') {
loadSearchMetadata();
}
});
const NoResults = defineAsyncComponent(() => import('./NoResults.vue'));
const IconDetailOverlay = defineAsyncComponent(() => import('./IconDetailOverlay.vue'));
@@ -178,11 +191,11 @@ function handleCloseDrawer() {
:shortcut="kbdSearchShortcut"
class="input-wrapper"
ref="searchInput"
@focus="onFocusSearchInput"
@focus="loadSearchMetadata"
/>
</StickyBar>
<NoResults
v-if="searchPlaceholder.isNoResults"
v-if="searchPlaceholder.isNoResults && !isSearchMetadataLoading"
:searchQuery="searchPlaceholder.query"
:isBrandSearch="searchPlaceholder.isBrand"
@clear="searchQuery = ''"
@@ -52,8 +52,12 @@ const props = defineProps<{
const activeIconName = ref(null);
const selectedSort = ref(SORTING[0])
const { execute: fetchTags, data: tags } = useFetchTags();
const { execute: fetchCategories, data: categories } = useFetchCategories();
const { execute: fetchTags, data: tags, isFetching: isFetchingTags } = useFetchTags();
const {
execute: fetchCategories,
data: categories,
isFetching: isFetchingCategories,
} = useFetchCategories();
const overviewEl = ref<HTMLElement | null>(null);
const { width: containerWidth } = useElementSize(overviewEl);
@@ -110,6 +114,9 @@ const searchResults = useSearch(searchQueryDebounced, mappedIcons, [
]);
const searchPlaceholder = useSearchPlaceholder(searchQuery, searchResults);
const isSearchMetadataLoading = computed(
() => searchQuery.value.length > 0 && (tags.value == null || categories.value == null),
);
const chunkedIcons = computed(() => {
return chunkArray(searchResults.value, columnSize.value);
@@ -135,15 +142,21 @@ function setActiveIconName(name: string) {
activeIconName.value = name;
}
function onFocusSearchInput() {
if (tags.value == null) {
fetchTags();
function loadSearchMetadata() {
if (tags.value == null && !isFetchingTags.value) {
void fetchTags();
}
if (categories.value == null) {
fetchCategories();
if (categories.value == null && !isFetchingCategories.value) {
void fetchCategories();
}
}
watch(searchQuery, (searchString) => {
if (searchString !== '') {
loadSearchMetadata();
}
});
const NoResults = defineAsyncComponent(() => import('./NoResults.vue'));
const IconDetailOverlay = defineAsyncComponent(() => import('./IconDetailOverlay.vue'));
@@ -179,7 +192,7 @@ function handleCloseDrawer() {
ref="searchInput"
:shortcut="kbdSearchShortcut"
class="input-wrapper"
@focus="onFocusSearchInput"
@focus="loadSearchMetadata"
/>
<Select
@@ -197,7 +210,7 @@ function handleCloseDrawer() {
</Select>
</StickyBar>
<NoResults
v-if="searchPlaceholder.isNoResults"
v-if="searchPlaceholder.isNoResults && !isSearchMetadataLoading"
:searchQuery="searchPlaceholder.query"
:isBrandSearch="searchPlaceholder.isBrand"
@clear="searchQuery = ''"
@@ -73,13 +73,11 @@ const customizingActive = computed(() => {
id="icon-color"
label="Color"
>
<template #display>
<ColorPicker
v-model="color"
id="icon-color"
class="color-picker"
/>
</template>
<ColorPicker
v-model="color"
id="icon-color"
class="color-picker"
/>
</InputField>
<InputField
@@ -161,6 +159,6 @@ const customizingActive = computed(() => {
}
.color-picker {
margin-left: auto;
width: 100%;
}
</style>
-2
View File
@@ -12,7 +12,6 @@ import { CATEGORY_VIEW_CONTEXT, categoryViewContext } from './composables/useCat
import { EXTERNAL_LIBS_CONTEXT, externalLibContext } from './composables/useExternalLibs';
import FrameworkSelect from './components/guide/FrameworkSelect.vue';
import SnackPlayer from './components/editors/SnackPlayer.vue';
import CertificatesLink from './components/guide/CertificatesLink.vue';
const theme: Partial<Theme> = {
extends: DefaultTheme,
@@ -23,7 +22,6 @@ const theme: Partial<Theme> = {
'sidebar-nav-after': () => h(IconsSidebarNavAfter),
'home-hero-image': () => h(HomeHeroIconsCard),
'home-hero-actions-after': () => h(HomeHeroAfter),
'aside-ads-before': () => h(CertificatesLink),
// Keep this here for now, we might want to add more things to the top bar in the future
// 'layout-top': () => h(LayoutTop),
});
+4 -14
View File
@@ -67,6 +67,10 @@
animation: .3s transition 0s ease;
} */
html {
scrollbar-gutter: stable;
}
.VPHome {
overflow-x: hidden;
}
@@ -148,14 +152,6 @@
.VPHomeHero .container {
flex-direction: row;
}
html.has-bb-banner {
--vp-layout-top-height: 72px;
}
html.has-bb-banner {
--Dark-Background: #161618;
}
}
.VPNavBarHamburger .container > span {
@@ -167,12 +163,6 @@
max-width: 480px;
}
html:not(.has-bb-banner) #bb-banner {
display: none !important;
visibility: hidden !important;
pointer-events: none !important;
}
.VPSidebar {
/* Hide Scrollbar */
-ms-overflow-style: none;
+1 -1
View File
@@ -1,4 +1,4 @@
import { PageData } from 'vitepress';
import { type PageData } from 'vitepress';
import getStructuredData from './getStructuredData';
import { createGeneralOGImage, createIconOGImage } from './createOGImage';
+64 -28
View File
@@ -12,19 +12,23 @@ Implementation of the Lucide icon library for web applications.
::: code-group
```sh [pnpm]
pnpm add lucide@next
pnpm add lucide
```
```sh [yarn]
yarn add lucide@next
yarn add lucide
```
```sh [npm]
npm install lucide@next
npm install lucide
```
```sh [bun]
bun add lucide@next
bun add lucide
```
```sh [deno]
deno add lucide
```
:::
@@ -38,19 +42,23 @@ Implementation of the Lucide icon library for React applications.
::: code-group
```sh [pnpm]
pnpm add lucide-react@next
pnpm add lucide-react
```
```sh [yarn]
yarn add lucide-react@next
yarn add lucide-react
```
```sh [npm]
npm install lucide-react@next
npm install lucide-react
```
```sh [bun]
bun add lucide-react@next
bun add lucide-react
```
```sh [deno]
deno add lucide-react
```
:::
@@ -80,6 +88,10 @@ npm install @lucide/vue
bun add @lucide/vue
```
```sh [deno]
deno add @lucide/vue
```
:::
For more details, see the [documentation](./vue/index.md).
@@ -91,19 +103,23 @@ Implementation of the Lucide icon library for Svelte applications.
::: code-group
```sh [pnpm]
pnpm add @lucide/svelte@next
pnpm add @lucide/svelte
```
```sh [yarn]
yarn add @lucide/svelte@next
yarn add @lucide/svelte
```
```sh [npm]
npm install @lucide/svelte@next
npm install @lucide/svelte
```
```sh [bun]
bun add @lucide/svelte@next
bun add @lucide/svelte
```
```sh [deno]
deno add @lucide/svelte
```
:::
> `@lucide/svelte` is only for Svelte 5, for Svelte 4 use the `lucide-svelte` package.
@@ -117,19 +133,23 @@ Implementation of the Lucide icon library for Solid applications.
::: code-group
```sh [pnpm]
pnpm add lucide-solid@next
pnpm add lucide-solid
```
```sh [yarn]
yarn add lucide-solid@next
yarn add lucide-solid
```
```sh [npm]
npm install lucide-solid@next
npm install lucide-solid
```
```sh [bun]
bun add lucide-solid@next
bun add lucide-solid
```
```sh [deno]
deno add lucide-solid
```
:::
@@ -158,6 +178,10 @@ npm install @lucide/angular
bun add @lucide/angular
```
```sh [deno]
deno add @lucide/angular
```
:::
For more details, see the [documentation](./angular/index.md).
@@ -169,19 +193,23 @@ Implementation of the Lucide icon library for preact applications.
::: code-group
```sh [pnpm]
pnpm add lucide-preact@next
pnpm add lucide-preact
```
```sh [yarn]
yarn add lucide-preact@next
yarn add lucide-preact
```
```sh [npm]
npm install lucide-preact@next
npm install lucide-preact
```
```sh [bun]
bun add lucide-preact@next
bun add lucide-preact
```
```sh [deno]
deno add lucide-preact
```
@@ -196,19 +224,23 @@ Implementation of the Lucide icon library for Astro applications.
::: code-group
```sh [pnpm]
pnpm add @lucide/astro@next
pnpm add @lucide/astro
```
```sh [yarn]
yarn add @lucide/astro@next
yarn add @lucide/astro
```
```sh [npm]
npm install @lucide/astro@next
npm install @lucide/astro
```
```sh [bun]
bun add @lucide/astro@next
bun add @lucide/astro
```
```sh [deno]
deno add @lucide/astro
```
:::
@@ -222,19 +254,23 @@ Implementation of the Lucide icon library for multiple usages that like to use:
::: code-group
```sh [pnpm]
pnpm add lucide-static@next
pnpm add lucide-static
```
```sh [yarn]
yarn add lucide-static@next
yarn add lucide-static
```
```sh [npm]
npm install lucide-static@next
npm install lucide-static
```
```sh [bun]
bun add lucide-static@next
bun add lucide-static
```
```sh [deno]
deno add lucide-static
```
:::
@@ -0,0 +1,56 @@
---
title: Optimizations - React Native
description: Learn how to optimize the bundle size of your React Native and Expo web exports by tree-shaking Lucide icons.
---
# Optimizations
By default you import icons from the `lucide-react-native` entry point:
```jsx
import { Camera } from 'lucide-react-native';
```
This is convenient, but it relies on the bundler to _tree-shake_ the entry point (a "barrel" file that re-exports every icon) so that only the icons you actually use end up in your bundle.
On native platforms this is usually fine. On **web exports** it can be a problem, because the Metro bundler is currently not very good at tree-shaking barrel imports and may include **all** icons in your final bundle.
## The Metro tree-shaking limitation
When you build for web with Expo (`expo export --platform web`), Metro is used to bundle your JavaScript. Metro bundles modules on-demand and, by default, does not remove unused exports from a barrel file.
This means an import like the one below can pull in the entire icon set, even though only a single icon is rendered:
```jsx
// May bundle every Lucide icon on web exports
import { Camera } from 'lucide-react-native';
```
Expo documents an experimental optimization for [React Native web imports](https://docs.expo.dev/guides/tree-shaking/#react-native-web-imports) and for [removing unused imports and exports](https://docs.expo.dev/guides/tree-shaking/#remove-unused-imports-and-exports). In practice this tree-shaking does **not** currently work reliably for `lucide-react-native` barrel imports, so the unused icons are not removed from web exports.
## Recommended: import icons individually
To guarantee that only the icons you use are bundled — regardless of the bundler's tree-shaking capabilities — import each icon directly from its own module:
```jsx
import Camera from 'lucide-react-native/icons/camera';
// Usage
const App = () => {
return <Camera />;
};
export default App;
```
Because each icon lives in its own file, the bundler only ever includes the icons you explicitly import. This keeps your web export small without depending on Metro's experimental tree-shaking.
The icon module name is the [kebab-case](https://developer.mozilla.org/en-US/docs/Glossary/Kebab_case) version of the icon name. For example, the `ArrowRight` icon is imported from `lucide-react-native/icons/arrow-right`:
```jsx
import ArrowRight from 'lucide-react-native/icons/arrow-right';
```
::: tip
Individual icon imports work identically on native and web, so you can safely use this style across your whole project to keep bundles as small as possible on every platform.
:::
+17 -16
View File
@@ -32,31 +32,32 @@
"@lucide/shared": "workspace:*",
"@rollup/plugin-replace": "^6.0.3",
"@types/semver": "^7.7.1",
"h3": "^1.15.9",
"h3": "^1.15.11",
"markdown-it": "^14.3.0",
"markdown-it-container": "^4.0.0",
"nitropack": "^2.13.4",
"rollup-plugin-copy": "^3.5.0",
"svg-path-commander": "^2.1.11",
"vitepress": "^1.6.4",
"vitepress-plugin-group-icons": "^1.6.5",
"vitepress-plugin-llms": "^1.11.1",
"markdown-it": "^14.1.0",
"markdown-it-container": "^4.0.0",
"semver": "^7.7.3",
"semver": "^7.8.5",
"sharp": "^0.34.5",
"shiki": "^3.15.0",
"shiki": "^3.23.0",
"simple-git": "^3.36.0",
"sitemap": "^7.1.2",
"sitemap": "^7.1.3",
"svg-path-commander": "^2.2.1",
"svg-pathdata": "^6.0.3",
"svgson": "^5.3.1"
"svgson": "^5.3.1",
"vitepress": "^1.6.4",
"vitepress-plugin-group-icons": "^1.7.5",
"vitepress-plugin-llms": "^1.13.3"
},
"dependencies": {
"@floating-ui/vue": "^1.1.9",
"@floating-ui/vue": "^1.1.11",
"@headlessui/vue": "^1.7.23",
"@lucide/vue": "workspace:*",
"@vueuse/components": "^14.0.0",
"@vueuse/core": "^14.0.0",
"@vueuse/components": "^14.3.0",
"@vueuse/core": "^14.3.0",
"@vueuse/integrations": "^14.3.0",
"element-to-path": "^1.2.1",
"fuse.js": "^7.1.0",
"fuse.js": "^7.5.0",
"jszip": "^3.10.1",
"lodash-es": "^4.18.1",
"lucide": "workspace:*",
@@ -65,6 +66,6 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"sandpack-vue3": "3.1.12",
"vue": "^3.5.24"
"vue": "^3.5.39"
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

+6
View File
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 200" fill="none">
<path fill="#00e8ff" d="M40 120l20-60l90 90l-30 50l-40-40h-20" />
<path fill="#283198" d="M80 160 L80 80 L120 40 L 120 120 M0 160 L40 200 L40 120 L20 120" />
<path fill="#324fff" d="M40 120v-80l40-40v80M120 200v-80l40-40v80M0 160v-80l40 40" />
<path fill="#0ff" d="M40 200v-80l40 40" />
</svg>

After

Width:  |  Height:  |  Size: 377 B

+15 -10
View File
@@ -35,9 +35,20 @@ interface AnalyticsResponse {
}[];
}
const writeIconPopularity = async (iconVisitCounts: Record<string, number>) => {
const writePopularityPromises = Object.entries(iconVisitCounts).map(([iconName, count]) => {
const location = path.resolve(iconPopularityDirectory, `${iconName}.json`);
return fs.promises.writeFile(location, JSON.stringify({ count }, null, 2), 'utf-8');
});
await Promise.all(writePopularityPromises);
console.log('Successfully written icon popularity data for', writePopularityPromises.length, 'icons.');
};
if (process.env.LUCIDE_ANALYTICS_TOKEN === undefined) {
console.error('LUCIDE_ANALYTICS_TOKEN environment variable is not set. Please set it to fetch analytics data.');
process.exit(1);
console.warn('LUCIDE_ANALYTICS_TOKEN environment variable is not set. Writing default icon popularity data.');
await writeIconPopularity(defaultIconNamePopularity);
process.exit(0);
}
try {
@@ -85,15 +96,9 @@ try {
return acc;
}, defaultIconNamePopularity);
const writePopularityPromises = Object.entries(iconVisitCounts).map(([iconName, count]) => {
const location = path.resolve(iconPopularityDirectory, `${iconName}.json`);
return fs.promises.writeFile(location, JSON.stringify({ count }, null, 2), 'utf-8');
});
await Promise.all(writePopularityPromises);
console.log('Successfully written icon popularity data for', writePopularityPromises.length, 'icons.');
await writeIconPopularity(iconVisitCounts);
} catch (error) {
console.error('Error fetching analytics data:', error);
await writeIconPopularity(defaultIconNamePopularity);
}
+2 -2
View File
@@ -40,7 +40,7 @@
}
},
"dependentRequired": {
"deprecated": ["deprecationReason", "toBeRemovedInVersion"],
"deprecated": ["deprecationReason"],
"deprecationReason": ["deprecated"],
"toBeRemovedInVersion": ["deprecated"]
}
@@ -134,7 +134,7 @@
}
},
"dependentRequired": {
"deprecated": ["deprecationReason", "toBeRemovedInVersion"],
"deprecated": ["deprecationReason"],
"deprecationReason": ["deprecated"],
"toBeRemovedInVersion": ["deprecated"]
},
+3 -1
View File
@@ -6,7 +6,9 @@
"danielbayley",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Decreasing the font size in a text editor"
],
"tags": [
"letter",
"font size",
+3 -1
View File
@@ -6,7 +6,9 @@
"danielbayley",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Increasing the font size in a text editor"
],
"tags": [
"letter",
"font size",
+4 -1
View File
@@ -4,7 +4,10 @@
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Representing physical disability or accessibility assistance",
"Marking wheelchair-accessible facilities or routes"
],
"tags": [
"disability",
"disabled",
+5 -1
View File
@@ -4,7 +4,11 @@
"colebemis",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Representing an activity feed or recent actions",
"Showing health metrics such as heart rate or vital signs",
"Indicating live system activity or monitoring"
],
"tags": [
"pulse",
"action",
+4 -1
View File
@@ -4,7 +4,10 @@
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Representing air conditioning or ventilation in smart home apps",
"Indicating climate control amenities on hotel and booking platforms"
],
"tags": [
"air conditioner",
"ac",
+4 -1
View File
@@ -5,7 +5,10 @@
"csandman",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Streaming or mirroring a screen to an external display",
"Casting media to a TV or compatible device"
],
"tags": [
"stream",
"cast",
+5 -3
View File
@@ -6,7 +6,10 @@
"jguddas",
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Confirming an alarm or scheduled reminder is set",
"Marking a timed task as complete"
],
"tags": [
"done",
"todo",
@@ -23,8 +26,7 @@
{
"name": "alarm-check",
"deprecationReason": "alias.name",
"deprecated": true,
"toBeRemovedInVersion": "v1.0"
"deprecated": true
}
]
}
+4 -3
View File
@@ -6,7 +6,9 @@
"jguddas",
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Removing or deleting an alarm"
],
"tags": [
"remove"
],
@@ -19,8 +21,7 @@
{
"name": "alarm-minus",
"deprecationReason": "alias.name",
"deprecated": true,
"toBeRemovedInVersion": "v1.0"
"deprecated": true
}
]
}
+3 -1
View File
@@ -6,7 +6,9 @@
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Turning off or disabling an alarm"
],
"tags": [
"morning",
"turn-off"
+4 -3
View File
@@ -6,7 +6,9 @@
"jguddas",
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Adding or creating a new alarm"
],
"tags": [
"add"
],
@@ -19,8 +21,7 @@
{
"name": "alarm-plus",
"deprecationReason": "alias.name",
"deprecated": true,
"toBeRemovedInVersion": "v1.0"
"deprecated": true
}
]
}
+3 -1
View File
@@ -7,7 +7,9 @@
"jguddas",
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Setting an alarm or wake-up reminder"
],
"tags": [
"morning"
],
+4 -1
View File
@@ -5,7 +5,10 @@
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Representing a smoke or fire detector in smart home apps",
"Indicating fire safety equipment or amenities in listings"
],
"tags": [
"fire",
"alert",
+4 -1
View File
@@ -5,7 +5,10 @@
"csandman",
"mittalyashu"
],
"use-cases": [],
"use-cases": [
"Representing a photo album or collection",
"Indicating a music album"
],
"tags": [
"photo",
"book"
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Aligning elements to the horizontal center in page builders and design tools"
],
"tags": [
"items",
"flex",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Aligning elements to the vertical center in page builders and design tools"
],
"tags": [
"items",
"flex",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Aligning elements to the horizontal end in page builders and design tools"
],
"tags": [
"items",
"bottom",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Aligning elements to the vertical end in page builders and design tools"
],
"tags": [
"items",
"right",
@@ -4,7 +4,9 @@
"r4lv",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements evenly around their horizontal centers in design tools"
],
"tags": [
"items",
"flex",
+3 -1
View File
@@ -4,7 +4,9 @@
"r4lv",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements by their right edges in design tools"
],
"tags": [
"right",
"items",
+3 -1
View File
@@ -4,7 +4,9 @@
"r4lv",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements by their left edges in design tools"
],
"tags": [
"left",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Justifying elements around the horizontal center in design tools"
],
"tags": [
"center",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Justifying elements to the horizontal end in design tools"
],
"tags": [
"right",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Justifying elements to the horizontal start in design tools"
],
"tags": [
"left",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements with equal horizontal space around them in design tools"
],
"tags": [
"center",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements with equal horizontal space between them in design tools"
],
"tags": [
"around",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Aligning elements to the horizontal start in page builders and design tools"
],
"tags": [
"top",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Aligning elements to the vertical start in page builders and design tools"
],
"tags": [
"left",
"items",
+3 -1
View File
@@ -4,7 +4,9 @@
"ericfennis",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Distributing elements evenly around the vertical center in design tools"
],
"tags": [
"items",
"flex",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements toward the vertical end in design tools"
],
"tags": [
"bottom",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements toward the vertical start in design tools"
],
"tags": [
"top",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Justifying elements around the vertical center in design tools"
],
"tags": [
"center",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Justifying elements to the vertical end in design tools"
],
"tags": [
"bottom",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Justifying elements to the vertical start in design tools"
],
"tags": [
"top",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements with equal vertical space around them in design tools"
],
"tags": [
"center",
"items",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Distributing elements with equal vertical space between them in design tools"
],
"tags": [
"center",
"items",
+4 -1
View File
@@ -11,7 +11,10 @@
"karsa-mistmere",
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Directing users to nearby emergency services in navigation apps",
"Marking emergency contacts or medical transport services"
],
"tags": [
"ambulance",
"emergency",
+4 -1
View File
@@ -5,7 +5,10 @@
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Inserting an ampersand in text editors",
"Representing a join or concatenation operator in code"
],
"tags": [
"and",
"typography",
+3 -1
View File
@@ -4,7 +4,9 @@
"danielbayley",
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Representing a logical AND operator in code"
],
"tags": [
"and",
"operator",
+6 -1
View File
@@ -3,7 +3,12 @@
"contributors": [
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Representing museological or archaeological artefacts",
"Indicating pottery or ceramics",
"Symbolizing Greek culture or antiquity",
"Denoting amphora-aged wines"
],
"tags": [
"pottery",
"artifact",
+4 -1
View File
@@ -6,7 +6,10 @@
"ericfennis",
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Representing a ship's anchor or maritime context",
"Linking to an anchor point or section within a page"
],
"tags": [
"ship"
],
+4 -1
View File
@@ -4,7 +4,10 @@
"karsa-mistmere",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Expressing strong dissatisfaction in feedback or rating scales",
"Marking the lowest score on a contentment scale (very unhappy to very happy)"
],
"tags": [
"emoji",
"anger",
+4 -1
View File
@@ -3,7 +3,10 @@
"contributors": [
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Expressing mild dissatisfaction in feedback or rating scales",
"Marking an unhappy step on a contentment scale (very unhappy to very happy)"
],
"tags": [
"emoji",
"nuisance",
+5 -1
View File
@@ -3,7 +3,11 @@
"contributors": [
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Representing signal reception or broadcast",
"Indicating a TV antenna or terrestrial reception",
"Showing connectivity or frequency tuning"
],
"tags": [
"signal",
"connection",
+3 -1
View File
@@ -4,7 +4,9 @@
"karsa-mistmere",
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Representing construction, metalwork, or industrial tools"
],
"tags": [
"metal",
"iron",
+4 -1
View File
@@ -4,7 +4,10 @@
"colebemis",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Representing camera aperture or exposure settings",
"Indicating photography or capture features"
],
"tags": [
"camera",
"photo",
+4 -1
View File
@@ -3,7 +3,10 @@
"contributors": [
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Representing an application window on macOS",
"Indicating a desktop app or pane"
],
"tags": [
"application",
"menu bar",
+4 -1
View File
@@ -4,7 +4,10 @@
"danielbayley",
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Representing an application window",
"Indicating a desktop app or executable"
],
"tags": [
"application",
"menu bar",
+5 -1
View File
@@ -3,7 +3,11 @@
"contributors": [
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Representing fruit or healthy eating",
"Categorizing produce or groceries",
"Symbolizing nutrition or a balanced diet"
],
"tags": [
"fruit",
"food",
+3 -1
View File
@@ -5,7 +5,9 @@
"ericfennis",
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Restoring an item from the archive, reversing an archive action"
],
"tags": [
"unarchive",
"index",
+4 -1
View File
@@ -3,7 +3,10 @@
"contributors": [
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Removing an item from the archive",
"Marking archived mail as junk"
],
"tags": [
"index",
"backup",
+4 -1
View File
@@ -6,7 +6,10 @@
"karsa-mistmere",
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Archiving items or moving them to storage",
"Representing backups or stored records"
],
"tags": [
"index",
"backup",
+4 -1
View File
@@ -4,7 +4,10 @@
"karsa-mistmere",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Indicating a lounge or seating area in hotel and booking apps",
"Representing living room furniture in smart home applications"
],
"tags": [
"sofa",
"furniture",
+4 -1
View File
@@ -6,7 +6,10 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Moving down with emphasis, e.g. as a game control",
"Indicating a download or a jump to the bottom"
],
"tags": [
"backwards",
"reverse",
+3 -1
View File
@@ -8,7 +8,9 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Indicating a strong downward direction, e.g. as a game control"
],
"tags": [
"backwards",
"reverse",
+3 -1
View File
@@ -6,7 +6,9 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Indicating a strong leftward direction or turn, e.g. as a game control"
],
"tags": [
"previous",
"back",
+3 -1
View File
@@ -9,7 +9,9 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Indicating a strong leftward direction, e.g. as a game control"
],
"tags": [
"previous",
"back",
+3 -1
View File
@@ -6,7 +6,9 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Indicating a strong rightward direction or turn, e.g. as a game control"
],
"tags": [
"next",
"forward",
+3 -1
View File
@@ -9,7 +9,9 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Indicating a strong rightward direction, e.g. as a game control"
],
"tags": [
"next",
"forward",
+4 -1
View File
@@ -6,7 +6,10 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Representing the Caps Lock key on a keyboard",
"Indicating a speed boost or strong upward direction in games"
],
"tags": [
"caps lock",
"capitals",
+4 -1
View File
@@ -8,7 +8,10 @@
"jamiemlaw",
"jguddas"
],
"use-cases": [],
"use-cases": [
"Representing the Shift key on a keyboard",
"Indicating a strong upward direction in games"
],
"tags": [
"shift",
"keyboard",
+6 -4
View File
@@ -4,7 +4,9 @@
"karsa-mistmere",
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Sorting numerical values in ascending order"
],
"tags": [
"filter",
"sort",
@@ -25,8 +27,8 @@
{
"name": "arrow-down-01",
"deprecationReason": "alias.name",
"deprecated": true,
"toBeRemovedInVersion": "v1.0"
}
"deprecated": true
},
"arrow-down-01"
]
}
+6 -4
View File
@@ -4,7 +4,9 @@
"karsa-mistmere",
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Sorting numerical values in descending order"
],
"tags": [
"filter",
"sort",
@@ -25,8 +27,8 @@
{
"name": "arrow-down-10",
"deprecationReason": "alias.name",
"deprecated": true,
"toBeRemovedInVersion": "v1.0"
}
"deprecated": true
},
"arrow-down-10"
]
}
+6 -4
View File
@@ -4,7 +4,9 @@
"karsa-mistmere",
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Sorting items alphabetically from A to Z"
],
"tags": [
"filter",
"sort",
@@ -25,8 +27,8 @@
{
"name": "arrow-down-az",
"deprecationReason": "alias.name",
"deprecated": true,
"toBeRemovedInVersion": "v1.0"
}
"deprecated": true
},
"arrow-down-az"
]
}
+4 -1
View File
@@ -4,7 +4,10 @@
"danielbayley",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Downloading or moving content downward from a boundary",
"Expanding a section downward"
],
"tags": [
"backwards",
"reverse",
+3 -1
View File
@@ -4,7 +4,9 @@
"colebemis",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Indicating a downward-left diagonal direction"
],
"tags": [
"direction",
"south-west",
+3 -1
View File
@@ -3,7 +3,9 @@
"contributors": [
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Sorting items from narrow to wide, e.g. smallest to largest"
],
"tags": [
"filter",
"sort",
+3 -1
View File
@@ -4,7 +4,9 @@
"colebemis",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Indicating a downward-right diagonal direction"
],
"tags": [
"direction",
"south-east",
+4 -1
View File
@@ -3,7 +3,10 @@
"contributors": [
"danielbayley"
],
"use-cases": [],
"use-cases": [
"Moving down to a specific point or waypoint",
"Indicating a target or destination below"
],
"tags": [
"direction",
"south",
+4 -1
View File
@@ -4,7 +4,10 @@
"danielbayley",
"ericfennis"
],
"use-cases": [],
"use-cases": [
"Downloading or saving content to a boundary",
"Representing a git pull or collapsing a section"
],
"tags": [
"behind",
"direction",
+4 -1
View File
@@ -3,7 +3,10 @@
"contributors": [
"karsa-mistmere"
],
"use-cases": [],
"use-cases": [
"Indicating two-way data transfer or network traffic",
"Sorting or reordering items"
],
"tags": [
"bidirectional",
"two-way",

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