mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-10 13:18:25 +00:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eaace8a81b | ||
|
|
2119ad0eb1 | ||
|
|
c5a83d26ff |
+1
-1
@@ -3,7 +3,7 @@
|
||||
.next
|
||||
.obsidian
|
||||
.now
|
||||
.cache
|
||||
.idea
|
||||
.env
|
||||
node_modules
|
||||
dist
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"colebemis",
|
||||
"karsa-mistmere",
|
||||
"ericfennis",
|
||||
"jguddas",
|
||||
"jennieboops"
|
||||
],
|
||||
"use-cases": [
|
||||
"Composing or editing email messages",
|
||||
"Drafting letters in mail interfaces",
|
||||
"Editing email addresses on settings pages"
|
||||
],
|
||||
"tags": [
|
||||
"email",
|
||||
"message",
|
||||
"letter",
|
||||
"pen",
|
||||
"edit",
|
||||
"compose",
|
||||
"draft",
|
||||
"write",
|
||||
"writing",
|
||||
"create",
|
||||
"reply"
|
||||
],
|
||||
"categories": [
|
||||
"mail"
|
||||
]
|
||||
}
|
||||
@@ -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="M15.506 17.646A2 2 0 0015 18.5l-.837 2.87a.5.5 0 00.62.62l2.87-.837a2 2 0 00.854-.506l3.013-3.009a1 1 0 00-3.004-3.004z" />
|
||||
<path d="M22 10.346V6a2 2 0 00-2-2H4a2 2 0 00-2 2v12a2 2 0 002 2h6.396" />
|
||||
<path d="m22 7-8.991 5.727a2 2 0 01-2.009 0L2 7" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 474 B |
@@ -8,9 +8,15 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"connected",
|
||||
"success",
|
||||
"verified",
|
||||
"running",
|
||||
"active",
|
||||
"virtual machine",
|
||||
|
||||
@@ -9,6 +9,12 @@
|
||||
],
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"virtual machine",
|
||||
"virtual desktop",
|
||||
"vm",
|
||||
@@ -20,10 +26,7 @@
|
||||
"software as a service",
|
||||
"saas",
|
||||
"workstation",
|
||||
"environment",
|
||||
"tv",
|
||||
"screen",
|
||||
"display"
|
||||
"environment"
|
||||
],
|
||||
"categories": [
|
||||
"connectivity",
|
||||
|
||||
@@ -8,13 +8,15 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"virtual machine",
|
||||
"vm",
|
||||
"executable",
|
||||
"settings",
|
||||
"cog",
|
||||
"edit",
|
||||
"gear",
|
||||
"configuration",
|
||||
|
||||
@@ -8,9 +8,15 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"status",
|
||||
"notification",
|
||||
"indicator",
|
||||
"running",
|
||||
"active",
|
||||
"virtual machine",
|
||||
|
||||
@@ -8,10 +8,15 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"download"
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"download",
|
||||
"remote",
|
||||
"cast"
|
||||
],
|
||||
"categories": [
|
||||
"connectivity",
|
||||
|
||||
+11
-1
@@ -7,7 +7,17 @@
|
||||
],
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"share"
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"offline",
|
||||
"disabled",
|
||||
"disconnected",
|
||||
"power"
|
||||
],
|
||||
"categories": [
|
||||
"connectivity",
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"video",
|
||||
"movie",
|
||||
"film",
|
||||
"pause",
|
||||
"suspend",
|
||||
"hibernate",
|
||||
"boot",
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"video",
|
||||
"movie",
|
||||
"film",
|
||||
"play",
|
||||
"running",
|
||||
"start",
|
||||
"boot",
|
||||
|
||||
@@ -6,17 +6,25 @@
|
||||
"jguddas",
|
||||
"ericfennis"
|
||||
],
|
||||
"use-cases": [],
|
||||
"use-cases": [
|
||||
"Showing synchronization between desktop and mobile devices",
|
||||
"Representing responsive previews across screen sizes",
|
||||
"Indicating casting or screen sharing to a display"
|
||||
],
|
||||
"tags": [
|
||||
"smartphone",
|
||||
"phone",
|
||||
"cellphone",
|
||||
"device",
|
||||
"mobile",
|
||||
"desktop",
|
||||
"monitor",
|
||||
"screen",
|
||||
"display",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"responsive",
|
||||
"screens"
|
||||
"screens",
|
||||
"sync",
|
||||
"cast"
|
||||
],
|
||||
"categories": [
|
||||
"connectivity",
|
||||
|
||||
@@ -6,9 +6,18 @@
|
||||
],
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"devices",
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"connect",
|
||||
"cast"
|
||||
"cast",
|
||||
"audio",
|
||||
"sound",
|
||||
"volume",
|
||||
"presentation"
|
||||
],
|
||||
"categories": [
|
||||
"connectivity",
|
||||
|
||||
@@ -8,9 +8,12 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"video",
|
||||
"movie",
|
||||
"film",
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"upload",
|
||||
"connect",
|
||||
"remote",
|
||||
"screen share"
|
||||
"screen sharing",
|
||||
"cast"
|
||||
],
|
||||
"categories": [
|
||||
"connectivity",
|
||||
|
||||
@@ -8,12 +8,18 @@
|
||||
"use-cases": [],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"screen",
|
||||
"display",
|
||||
"desktop",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"virtual machine",
|
||||
"vm",
|
||||
"close",
|
||||
"error",
|
||||
"failed",
|
||||
"disconnected",
|
||||
"stop",
|
||||
"suspend",
|
||||
"remove",
|
||||
|
||||
+9
-1
@@ -7,11 +7,19 @@
|
||||
"jguddas",
|
||||
"karsa-mistmere"
|
||||
],
|
||||
"use-cases": [],
|
||||
"use-cases": [
|
||||
"Representing desktop displays and computer monitors",
|
||||
"Showing screen-sharing or external display settings",
|
||||
"Indicating virtual machines in infrastructure dashboards"
|
||||
],
|
||||
"tags": [
|
||||
"tv",
|
||||
"computer",
|
||||
"desktop",
|
||||
"screen",
|
||||
"display",
|
||||
"external display",
|
||||
"screen sharing",
|
||||
"virtual machine",
|
||||
"vm"
|
||||
],
|
||||
|
||||
+11
-2
@@ -5,12 +5,21 @@
|
||||
"mittalyashu",
|
||||
"ericfennis"
|
||||
],
|
||||
"use-cases": [],
|
||||
"use-cases": [
|
||||
"Representing mobile phones in device settings",
|
||||
"Showing mobile access or app availability",
|
||||
"Indicating phone-based communication channels"
|
||||
],
|
||||
"tags": [
|
||||
"phone",
|
||||
"cellphone",
|
||||
"device",
|
||||
"screen"
|
||||
"mobile",
|
||||
"screen",
|
||||
"display",
|
||||
"touchscreen",
|
||||
"portable",
|
||||
"responsive"
|
||||
],
|
||||
"categories": [
|
||||
"connectivity",
|
||||
|
||||
@@ -3,13 +3,24 @@
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"use-cases": [],
|
||||
"use-cases": [
|
||||
"Previewing layouts across mobile device sizes",
|
||||
"Testing responsive behavior on handheld screens",
|
||||
"Representing mobile-first design workflows"
|
||||
],
|
||||
"tags": [
|
||||
"phone",
|
||||
"cellphone",
|
||||
"device",
|
||||
"mobile",
|
||||
"screen",
|
||||
"display",
|
||||
"touchscreen",
|
||||
"portable",
|
||||
"responsive",
|
||||
"screens",
|
||||
"browser",
|
||||
"testing",
|
||||
"mobile"
|
||||
"testing"
|
||||
],
|
||||
"categories": [
|
||||
"devices",
|
||||
|
||||
+11
-2
@@ -4,9 +4,18 @@
|
||||
"colebemis",
|
||||
"ericfennis"
|
||||
],
|
||||
"use-cases": [],
|
||||
"use-cases": [
|
||||
"Representing tablet devices in responsive layouts",
|
||||
"Showing touch-based interfaces on larger mobile screens"
|
||||
],
|
||||
"tags": [
|
||||
"device"
|
||||
"device",
|
||||
"mobile",
|
||||
"screen",
|
||||
"display",
|
||||
"touchscreen",
|
||||
"portable",
|
||||
"responsive"
|
||||
],
|
||||
"categories": [
|
||||
"devices"
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"briz123",
|
||||
"UsamaKhan",
|
||||
"ajokt123",
|
||||
"timmy471",
|
||||
"jguddas",
|
||||
"karsa-mistmere"
|
||||
],
|
||||
"use-cases": [
|
||||
"Representing coaches or referees in sports apps",
|
||||
"Signaling alerts in training interfaces",
|
||||
"Indicating traffic control or public safety roles",
|
||||
"Marking lifeguard equipment in safety systems"
|
||||
],
|
||||
"tags": [
|
||||
"alert",
|
||||
"signal",
|
||||
"sound",
|
||||
"blow",
|
||||
"noise",
|
||||
"coach",
|
||||
"trainer",
|
||||
"referee",
|
||||
"gym",
|
||||
"game",
|
||||
"training",
|
||||
"sports",
|
||||
"traffic cops",
|
||||
"police",
|
||||
"lifeguard",
|
||||
"safety",
|
||||
"rescue",
|
||||
"emergency"
|
||||
],
|
||||
"categories": [
|
||||
"sports",
|
||||
"notifications"
|
||||
]
|
||||
}
|
||||
@@ -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="M10 6v4" />
|
||||
<path d="M21 6a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-5.675A7 7 0 1 1 9 6z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 304 B |
@@ -26,7 +26,6 @@
|
||||
"generate:sponsors": "node scripts/updateSponsors.mts",
|
||||
"generate:contributors": "node ./scripts/updateContributors.mts icons/*.svg",
|
||||
"generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mts",
|
||||
"icon-usage": "node ./scripts/iconUsage.mts",
|
||||
"suggest:metadata": "node ./scripts/suggestMetaData.mts",
|
||||
"suggest:metadata:watch": "node --env-file .env --watch ./scripts/suggestMetaData.mts",
|
||||
"postinstall": "husky install",
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
# Lucide Icon Usage Estimator
|
||||
|
||||
Run with:
|
||||
|
||||
```sh
|
||||
pnpm icon-usage trash trash-2
|
||||
```
|
||||
|
||||
The default is a bounded first pass over `lucide-react`, with two GitHub search pages and up to 200 candidate files validated per query slice. Use `--all-packages` to include every supported package, or `--thorough` for the previous broader limits of 10 pages and 1,000 candidate files per query slice.
|
||||
|
||||
GitHub code search requires authentication, so set `GITHUB_TOKEN` or pass `--token-env <NAME>`.
|
||||
|
||||
Use `--verbose` or `-v` to print detailed progress logs to stderr, including queries, pages, cache hits, retries, content validation, and matches.
|
||||
|
||||
## Method
|
||||
|
||||
The script uses GitHub REST `GET /search/code` with package-scoped, code-extension-scoped queries, then fetches each returned file and validates common Lucide import styles before counting a repository. Counts are deduplicated by `owner/repository`.
|
||||
|
||||
Output includes overall repository counts and per-package statistics. Per-package statistics are computed from validated matches for that package, so a repository using `trash` via `lucide-react` and `trash-2` via another package is represented correctly in both the overall totals and each package section.
|
||||
|
||||
Supported packages are `lucide-react`, `@lucide/vue`, `@lucide/svelte`, `@lucide/angular`, `@lucide/astro`, `lucide-preact`, `lucide-solid`, `lucide`, and `@lucide/lab`. The default package is `lucide-react` because all packages plus file-scope slicing is slow for broad icons; use `--all-packages` when that broader sample is needed.
|
||||
|
||||
Searches are split across relevant implementation file scopes using REST code search qualifiers such as `language:typescript`, `language:javascript`, `extension:vue`, and `extension:svelte`. Returned paths are still filtered by expected extensions before content is fetched, so Markdown and prompt/spec files are intentionally excluded by default because they frequently contain examples or generated implementation notes rather than live package usage.
|
||||
|
||||
By default, queries exclude forks, archived repositories, generated files, and vendored files using GitHub code search qualifiers. Use `--include-forks`, `--include-archived`, `--include-generated`, or `--include-vendored` to include them.
|
||||
|
||||
## GitHub API Limits
|
||||
|
||||
GitHub REST code search is authenticated and rate-limited to 10 requests per minute. Each query can return at most 1,000 results, with up to 100 results per page. Search only covers default branches and files smaller than 384 KB.
|
||||
|
||||
`total_count` and `incomplete_results` come from GitHub search and are recorded in JSON metadata. If a query exceeds the 1,000-result cap or returns `incomplete_results: true`, the script reports a warning and the result should be treated as incomplete rather than exhaustive.
|
||||
|
||||
GitHub's newer code search syntax is usable for public code search queries and supports qualifiers such as `NOT is:fork`, `NOT is:archived`, `NOT is:generated`, and `NOT is:vendored`, but the documented REST code search endpoint remains capped for result retrieval.
|
||||
|
||||
## Practical Strategy For Broad Icons
|
||||
|
||||
For common icons that hit search caps, use the script output as lower-bound or sampled evidence. The most defensible follow-up is to narrow query slices and cite them separately, for example by package, language/path, or repository cohorts, while preserving the JSON metadata for every query performed.
|
||||
|
||||
## Known Biases
|
||||
|
||||
Only public GitHub repositories visible to the token are observable. Private repositories and consumers outside GitHub are absent. GitHub is not representative of every Lucide consumer. Framework/package usage can differ materially. GitHub indexing may be incomplete or delayed. Generated or vendored code can still create false positives when GitHub does not identify it. Very common icons may exceed GitHub search-result caps.
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user