diff --git a/.github/DISCUSSION_TEMPLATE/icon-design.yml b/.github/DISCUSSION_TEMPLATE/icon-design.yml
index 895c7b9d1..2b753e3b9 100644
--- a/.github/DISCUSSION_TEMPLATE/icon-design.yml
+++ b/.github/DISCUSSION_TEMPLATE/icon-design.yml
@@ -1,5 +1,4 @@
-name: Icon request
-description: Suggest a new icon for this project
+title: 'Icon Request: '
body:
- type: markdown
attributes:
diff --git a/.github/workflows/close-issue-with-banned-phrases.yml b/.github/workflows/close-issue-with-banned-phrases.yml
index 5fb35811d..de14b3000 100644
--- a/.github/workflows/close-issue-with-banned-phrases.yml
+++ b/.github/workflows/close-issue-with-banned-phrases.yml
@@ -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
diff --git a/icons/asterisk.json b/icons/asterisk.json
index 7cf6834f7..65a8e1b1c 100644
--- a/icons/asterisk.json
+++ b/icons/asterisk.json
@@ -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",
diff --git a/icons/asterisk.svg b/icons/asterisk.svg
index 9629c6dc0..dcfad708b 100644
--- a/icons/asterisk.svg
+++ b/icons/asterisk.svg
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
+
+
+
diff --git a/icons/beef.json b/icons/beef.json
index 51b9484e1..49f58239d 100644
--- a/icons/beef.json
+++ b/icons/beef.json
@@ -3,7 +3,8 @@
"contributors": [
"kemie",
"ericfennis",
- "karsa-mistmere"
+ "karsa-mistmere",
+ "jguddas"
],
"use-cases": [],
"tags": [
diff --git a/icons/beef.svg b/icons/beef.svg
index 84132063c..ebd191b3f 100644
--- a/icons/beef.svg
+++ b/icons/beef.svg
@@ -10,6 +10,6 @@
stroke-linejoin="round"
>
-
+
diff --git a/icons/blend.json b/icons/blend.json
index 79dc77e2e..8a1f8e0e4 100644
--- a/icons/blend.json
+++ b/icons/blend.json
@@ -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",
diff --git a/icons/blend.svg b/icons/blend.svg
index 7433e6fcf..3ee5832c5 100644
--- a/icons/blend.svg
+++ b/icons/blend.svg
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
+
+
diff --git a/icons/circle-dot.json b/icons/circle-dot.json
index 0136dd52a..87c4d4e30 100644
--- a/icons/circle-dot.json
+++ b/icons/circle-dot.json
@@ -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",
diff --git a/icons/circle-dot.svg b/icons/circle-dot.svg
index 357549b9b..880029dbd 100644
--- a/icons/circle-dot.svg
+++ b/icons/circle-dot.svg
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
+
diff --git a/icons/equal-approximately.json b/icons/equal-approximately.json
index e3d5aa1bf..97fd1b348 100644
--- a/icons/equal-approximately.json
+++ b/icons/equal-approximately.json
@@ -8,7 +8,7 @@
"about",
"calculate",
"math",
- "operater"
+ "operator"
],
"categories": [
"math"
diff --git a/icons/face-angry.svg b/icons/face-angry.svg
index b7c18de72..521d9a563 100644
--- a/icons/face-angry.svg
+++ b/icons/face-angry.svg
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
-
-
+
+
+
+
+
diff --git a/icons/galaxy.json b/icons/galaxy.json
new file mode 100644
index 000000000..3ca399e42
--- /dev/null
+++ b/icons/galaxy.json
@@ -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"
+ ]
+}
diff --git a/icons/galaxy.svg b/icons/galaxy.svg
new file mode 100644
index 000000000..d86f01e86
--- /dev/null
+++ b/icons/galaxy.svg
@@ -0,0 +1,17 @@
+
diff --git a/icons/ghost.json b/icons/ghost.json
index 83376e566..8490ee7ba 100644
--- a/icons/ghost.json
+++ b/icons/ghost.json
@@ -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"
diff --git a/icons/ghost.svg b/icons/ghost.svg
index 3226449f4..18b559dbf 100644
--- a/icons/ghost.svg
+++ b/icons/ghost.svg
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
+
+
+
diff --git a/icons/key.svg b/icons/key.svg
index 93422dc97..e9e4eab5a 100644
--- a/icons/key.svg
+++ b/icons/key.svg
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
+
+
+
diff --git a/icons/mail-clock.json b/icons/mail-clock.json
new file mode 100644
index 000000000..8299dd5d4
--- /dev/null
+++ b/icons/mail-clock.json
@@ -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"
+ ]
+}
diff --git a/icons/mail-clock.svg b/icons/mail-clock.svg
new file mode 100644
index 000000000..2e23b78bd
--- /dev/null
+++ b/icons/mail-clock.svg
@@ -0,0 +1,17 @@
+
diff --git a/icons/midi-port.json b/icons/midi-port.json
new file mode 100644
index 000000000..10fa2c128
--- /dev/null
+++ b/icons/midi-port.json
@@ -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"
+ ]
+}
diff --git a/icons/midi-port.svg b/icons/midi-port.svg
new file mode 100644
index 000000000..5cdf98100
--- /dev/null
+++ b/icons/midi-port.svg
@@ -0,0 +1,19 @@
+
diff --git a/icons/mop-sparkles.json b/icons/mop-sparkles.json
new file mode 100644
index 000000000..8071324fb
--- /dev/null
+++ b/icons/mop-sparkles.json
@@ -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"
+ ]
+}
diff --git a/icons/mop-sparkles.svg b/icons/mop-sparkles.svg
new file mode 100644
index 000000000..e93a35966
--- /dev/null
+++ b/icons/mop-sparkles.svg
@@ -0,0 +1,22 @@
+
diff --git a/icons/mop.json b/icons/mop.json
new file mode 100644
index 000000000..7dee8bbfd
--- /dev/null
+++ b/icons/mop.json
@@ -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"
+ ]
+}
diff --git a/icons/mop.svg b/icons/mop.svg
new file mode 100644
index 000000000..6a05a39e0
--- /dev/null
+++ b/icons/mop.svg
@@ -0,0 +1,15 @@
+
diff --git a/icons/panda.json b/icons/panda.json
index 6d40bca53..33b79c96b 100644
--- a/icons/panda.json
+++ b/icons/panda.json
@@ -2,7 +2,8 @@
"$schema": "../icon.schema.json",
"contributors": [
"chessurisme",
- "karsa-mistmere"
+ "karsa-mistmere",
+ "jguddas"
],
"use-cases": [],
"tags": [
diff --git a/icons/panda.svg b/icons/panda.svg
index 67f7bb4ae..cb232d63b 100644
--- a/icons/panda.svg
+++ b/icons/panda.svg
@@ -11,8 +11,8 @@
>
-
-
-
+
+
+
diff --git a/icons/playing-card.json b/icons/playing-card.json
new file mode 100644
index 000000000..eb2da95c7
--- /dev/null
+++ b/icons/playing-card.json
@@ -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"
+ ]
+}
diff --git a/icons/playing-card.svg b/icons/playing-card.svg
new file mode 100644
index 000000000..308f97fa5
--- /dev/null
+++ b/icons/playing-card.svg
@@ -0,0 +1,14 @@
+
diff --git a/icons/playing-cards-fan.json b/icons/playing-cards-fan.json
new file mode 100644
index 000000000..379a29ae8
--- /dev/null
+++ b/icons/playing-cards-fan.json
@@ -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"
+ ]
+}
diff --git a/icons/playing-cards-fan.svg b/icons/playing-cards-fan.svg
new file mode 100644
index 000000000..00d35897b
--- /dev/null
+++ b/icons/playing-cards-fan.svg
@@ -0,0 +1,15 @@
+
diff --git a/icons/playing-cards.json b/icons/playing-cards.json
new file mode 100644
index 000000000..62b4bcc08
--- /dev/null
+++ b/icons/playing-cards.json
@@ -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"
+ ]
+}
diff --git a/icons/playing-cards.svg b/icons/playing-cards.svg
new file mode 100644
index 000000000..020979ecd
--- /dev/null
+++ b/icons/playing-cards.svg
@@ -0,0 +1,15 @@
+
diff --git a/icons/robot-arm.json b/icons/robot-arm.json
new file mode 100644
index 000000000..022cb676b
--- /dev/null
+++ b/icons/robot-arm.json
@@ -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"
+ ]
+}
diff --git a/icons/robot-arm.svg b/icons/robot-arm.svg
new file mode 100644
index 000000000..7b0f7a714
--- /dev/null
+++ b/icons/robot-arm.svg
@@ -0,0 +1,18 @@
+
diff --git a/icons/robot-vacuum.json b/icons/robot-vacuum.json
new file mode 100644
index 000000000..41c1b55d5
--- /dev/null
+++ b/icons/robot-vacuum.json
@@ -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"
+ ]
+}
diff --git a/icons/robot-vacuum.svg b/icons/robot-vacuum.svg
new file mode 100644
index 000000000..b266516d3
--- /dev/null
+++ b/icons/robot-vacuum.svg
@@ -0,0 +1,20 @@
+
diff --git a/icons/ship-cargo.json b/icons/ship-cargo.json
new file mode 100644
index 000000000..ad0e58ec2
--- /dev/null
+++ b/icons/ship-cargo.json
@@ -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"
+ ]
+}
diff --git a/icons/ship-cargo.svg b/icons/ship-cargo.svg
new file mode 100644
index 000000000..672cc55f2
--- /dev/null
+++ b/icons/ship-cargo.svg
@@ -0,0 +1,17 @@
+
diff --git a/icons/ship.svg b/icons/ship.svg
index ea5640e9b..7a43ea90e 100644
--- a/icons/ship.svg
+++ b/icons/ship.svg
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
-
-
+
+
+
+
+
diff --git a/icons/shopping-cart.json b/icons/shopping-cart.json
index 00e464003..ad108fa64 100644
--- a/icons/shopping-cart.json
+++ b/icons/shopping-cart.json
@@ -4,7 +4,8 @@
"colebemis",
"csandman",
"ericfennis",
- "karsa-mistmere"
+ "karsa-mistmere",
+ "jguddas"
],
"use-cases": [],
"tags": [
diff --git a/icons/shopping-cart.svg b/icons/shopping-cart.svg
index 6d9f8844e..40a1a8284 100644
--- a/icons/shopping-cart.svg
+++ b/icons/shopping-cart.svg
@@ -9,7 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
+
+
+
+
diff --git a/icons/square-split-horizontal.json b/icons/square-split-horizontal.json
index 2856b2177..bd375d074 100644
--- a/icons/square-split-horizontal.json
+++ b/icons/square-split-horizontal.json
@@ -2,7 +2,8 @@
"$schema": "../icon.schema.json",
"contributors": [
"Patchethium",
- "ericfennis"
+ "ericfennis",
+ "jguddas"
],
"use-cases": [],
"tags": [
diff --git a/icons/square-split-horizontal.svg b/icons/square-split-horizontal.svg
index 2c867ef15..1332b9947 100644
--- a/icons/square-split-horizontal.svg
+++ b/icons/square-split-horizontal.svg
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
+
+
+
diff --git a/icons/square-split-vertical.json b/icons/square-split-vertical.json
index f5cff659a..2ef2d856a 100644
--- a/icons/square-split-vertical.json
+++ b/icons/square-split-vertical.json
@@ -2,7 +2,8 @@
"$schema": "../icon.schema.json",
"contributors": [
"Patchethium",
- "ericfennis"
+ "ericfennis",
+ "jguddas"
],
"use-cases": [],
"tags": [
diff --git a/icons/square-split-vertical.svg b/icons/square-split-vertical.svg
index 6a78df0ba..b7410c984 100644
--- a/icons/square-split-vertical.svg
+++ b/icons/square-split-vertical.svg
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
+
+
+
diff --git a/icons/sword.json b/icons/sword.json
index 100ad37fa..b83878563 100644
--- a/icons/sword.json
+++ b/icons/sword.json
@@ -5,13 +5,28 @@
"jguddas",
"ericfennis"
],
- "use-cases": [],
+ "use-cases": [
+ "Representing weapons or melee attacks in games",
+ "Indicating combat abilities in character interfaces",
+ "Showing fantasy or medieval equipment in inventories",
+ "Marking offensive actions in strategy tools"
+ ],
"tags": [
"battle",
"challenge",
+ "combat",
+ "duel",
+ "fantasy",
"game",
+ "knight",
+ "melee",
+ "medieval",
+ "offense",
+ "rpg",
+ "sharp",
+ "weapon",
"war",
- "weapon"
+ "warrior"
],
"categories": [
"gaming",
diff --git a/icons/sword.svg b/icons/sword.svg
index 4350bacdc..32480d513 100644
--- a/icons/sword.svg
+++ b/icons/sword.svg
@@ -12,5 +12,5 @@
-
+
diff --git a/icons/swords.json b/icons/swords.json
index 172d49a10..494990bf5 100644
--- a/icons/swords.json
+++ b/icons/swords.json
@@ -2,15 +2,34 @@
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
- "ericfennis"
+ "ericfennis",
+ "jguddas"
+ ],
+ "use-cases": [
+ "Representing battles or duels in games",
+ "Indicating player-versus-player combat modes",
+ "Showing opposing factions in strategy interfaces",
+ "Marking conflict or rivalry in competition brackets"
],
- "use-cases": [],
"tags": [
"battle",
"challenge",
+ "combat",
+ "conflict",
+ "crossed",
+ "duel",
+ "faction",
+ "fantasy",
"game",
+ "melee",
+ "medieval",
+ "opponent",
+ "rivalry",
+ "rpg",
+ "versus",
+ "weapon",
"war",
- "weapon"
+ "warrior"
],
"categories": [
"gaming",
diff --git a/icons/swords.svg b/icons/swords.svg
index 4b1a87c76..68449ffd7 100644
--- a/icons/swords.svg
+++ b/icons/swords.svg
@@ -9,12 +9,12 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/icons/trailer.json b/icons/trailer.json
new file mode 100644
index 000000000..c66b91226
--- /dev/null
+++ b/icons/trailer.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "MadsMadsDk",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "Ecommerce (self pick-up options for large items)",
+ "Trailer lending services",
+ "Map markers",
+ "Asset tracking systems in construction"
+ ],
+ "tags": [
+ "tow",
+ "shipping",
+ "delivery",
+ "haulage",
+ "vehicle",
+ "equipment",
+ "freight"
+ ],
+ "categories": [
+ "transportation"
+ ]
+}
diff --git a/icons/trailer.svg b/icons/trailer.svg
new file mode 100644
index 000000000..97e270f3a
--- /dev/null
+++ b/icons/trailer.svg
@@ -0,0 +1,18 @@
+
diff --git a/lab/bat.json b/lab/bat.json
new file mode 100644
index 000000000..cdac45241
--- /dev/null
+++ b/lab/bat.json
@@ -0,0 +1,38 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "RajnishKMehta"
+ ],
+ "use-cases": [
+ "night mode",
+ "nocturnal wildlife",
+ "cave exploration",
+ "halloween theme",
+ "spooky content",
+ "horror category",
+ "wildlife tracking",
+ "animal identification",
+ "dark themed event",
+ "vampire themed content"
+ ],
+ "tags": [
+ "nocturnal",
+ "vampire",
+ "winged",
+ "creature",
+ "nocturne",
+ "flying",
+ "bat",
+ "animal",
+ "mammal",
+ "wildlife",
+ "cave",
+ "halloween",
+ "wings",
+ "night",
+ "chamgadar"
+ ],
+ "categories": [
+ "animals"
+ ]
+}
diff --git a/lab/bat.svg b/lab/bat.svg
new file mode 100644
index 000000000..4c06b9263
--- /dev/null
+++ b/lab/bat.svg
@@ -0,0 +1,14 @@
+
diff --git a/packages/lucide-preact/package.json b/packages/lucide-preact/package.json
index a36f3a423..157f0b34c 100644
--- a/packages/lucide-preact/package.json
+++ b/packages/lucide-preact/package.json
@@ -50,11 +50,11 @@
"@lucide/build-icons": "workspace:*",
"@lucide/rollup-plugins": "workspace:*",
"@lucide/shared": "workspace:*",
- "@preact/preset-vite": "^2.10.5",
+ "@preact/preset-vite": "^2.10.6",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/preact": "^3.2.4",
"jest-serializer-html": "^7.1.0",
- "preact": "^10.29.7",
+ "preact": "^10.29.8",
"rollup": "^4.62.2",
"rollup-plugin-dts": "^6.4.1",
"typescript": "^5.9.3",
diff --git a/packages/svelte/package.json b/packages/svelte/package.json
index d78086dbb..352b254b8 100644
--- a/packages/svelte/package.json
+++ b/packages/svelte/package.json
@@ -61,14 +61,14 @@
"@lucide/build-icons": "workspace:*",
"@lucide/helpers": "workspace:*",
"@sveltejs/package": "^2.5.8",
- "@sveltejs/vite-plugin-svelte": "^7.2.0",
+ "@sveltejs/vite-plugin-svelte": "^7.3.0",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/svelte": "^5.4.2",
"@tsconfig/svelte": "^5.0.8",
"jest-serializer-html": "^7.1.0",
"jsdom": "^27.4.0",
- "svelte": "^5.56.8",
- "svelte-check": "^4.7.4",
+ "svelte": "^5.56.9",
+ "svelte-check": "^4.7.6",
"svelte-preprocess": "^6.0.5",
"typescript": "^5.9.3",
"vite": "^7.3.6"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 162c9e447..873d5a126 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -458,20 +458,20 @@ importers:
specifier: workspace:*
version: link:../shared
'@preact/preset-vite':
- specifier: ^2.10.5
- version: 2.10.5(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.7)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
+ specifier: ^2.10.6
+ version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
'@testing-library/jest-dom':
specifier: ^6.9.1
version: 6.9.1
'@testing-library/preact':
specifier: ^3.2.4
- version: 3.2.4(preact@10.29.7)
+ version: 3.2.4(preact@10.29.8)
jest-serializer-html:
specifier: ^7.1.0
version: 7.1.0
preact:
- specifier: ^10.29.7
- version: 10.29.7
+ specifier: ^10.29.8
+ version: 10.29.8
rollup:
specifier: ^4.62.2
version: 4.62.2
@@ -687,16 +687,16 @@ importers:
version: link:../../tools/build-helpers
'@sveltejs/package':
specifier: ^2.5.8
- version: 2.5.8(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3)
+ version: 2.5.8(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3)
'@sveltejs/vite-plugin-svelte':
- specifier: ^7.2.0
- version: 7.2.0(svelte@5.56.8(@typescript-eslint/types@8.64.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
+ specifier: ^7.3.0
+ version: 7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
'@testing-library/jest-dom':
specifier: ^6.9.1
version: 6.9.1
'@testing-library/svelte':
specifier: ^5.4.2
- version: 5.4.2(svelte@5.56.8(@typescript-eslint/types@8.64.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)
+ version: 5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)
'@tsconfig/svelte':
specifier: ^5.0.8
version: 5.0.8
@@ -707,14 +707,14 @@ importers:
specifier: ^27.4.0
version: 27.4.0(supports-color@10.2.2)
svelte:
- specifier: ^5.56.8
- version: 5.56.8(@typescript-eslint/types@8.64.0)
+ specifier: ^5.56.9
+ version: 5.56.9(@typescript-eslint/types@8.66.0)
svelte-check:
- specifier: ^4.7.4
- version: 4.7.4(picomatch@4.0.5)(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3)
+ specifier: ^4.7.6
+ version: 4.7.6(picomatch@4.0.5)(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3)
svelte-preprocess:
specifier: ^6.0.5
- version: 6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.6.7)(postcss@8.5.19)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3)
+ version: 6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.6.7)(postcss@8.5.19)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3)
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -3958,8 +3958,8 @@ packages:
'@poppinss/exception@1.2.3':
resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==}
- '@preact/preset-vite@2.10.5':
- resolution: {integrity: sha512-p0vJpxiVO7KWWazWny3LUZ+saXyZKWv6Ju0bYMWNJRp2YveufRPgSUB1C4MTqGJfz07EehMgfN+AJNwQy+w6Iw==}
+ '@preact/preset-vite@2.10.6':
+ resolution: {integrity: sha512-ZZ5RIT2ZVXg8UxRA8VZpoT8CdpDG7RFIqOT4bELqNBp85+HKvQBbgmh3gsoW1UOQXx26TLe+ZRNKI7q281Kckw==}
peerDependencies:
'@babel/core': 7.x
vite: ^7.3.6
@@ -4596,13 +4596,13 @@ packages:
'@stitches/core@1.2.8':
resolution: {integrity: sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==}
- '@sveltejs/acorn-typescript@1.0.11':
- resolution: {integrity: sha512-LFuZUkjJ9iF7JZye/aG5XM0SFcQ5VyL0oVX4WJ9dc0Va3R3s0OauX1BESVCb+YN/ol8TAfqGDDAQsTG627Y5kw==}
+ '@sveltejs/acorn-typescript@1.0.13':
+ resolution: {integrity: sha512-wgKggnhZVL9Bfx1OaKKTrYY9BFRk6C8UAkQNUcIv1+llzYrIqy+RZm5HPKzn0NpEBvTVhTqB4kQyllZywsRBRQ==}
peerDependencies:
acorn: ^8.9.0
- '@sveltejs/load-config@0.2.1':
- resolution: {integrity: sha512-5m3B2cbqQ4TbwW6Xkh66Ntw6dD7gNc77cCxABTTesWcq9jxIzMgTk97pZx5vEtvQx8iokgi7GIphqZe+PGwcZA==}
+ '@sveltejs/load-config@0.2.3':
+ resolution: {integrity: sha512-VT3qmUb8pRV2QrZjd8iAmtg8lf4W0TIjZbvXtz5MKei/q96teWZgGJyyidJzOjzZzvdq616eSRVeMYIQChUTAQ==}
engines: {node: '>= 18.0.0'}
'@sveltejs/package@2.5.8':
@@ -4612,8 +4612,8 @@ packages:
peerDependencies:
svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1
- '@sveltejs/vite-plugin-svelte@7.2.0':
- resolution: {integrity: sha512-1SpkuMSRLfugrVX+IrKfE1RUegzo8AQzKQ6qQPfVzbcWi5IhuTPaKb5ZrLpucleFznkc4/RTeSPoRnGWFxX+EQ==}
+ '@sveltejs/vite-plugin-svelte@7.3.0':
+ resolution: {integrity: sha512-QbRoJyD92e9R0ufeQIWRHrCC0ObcqSv/aBDdrQMoU+sypav3cDx5wytdQ6GLdXjEMO6xjrXGzfkUygng8JMv0A==}
engines: {node: ^20.19 || ^22.12 || >=24}
peerDependencies:
svelte: ^5.46.4
@@ -6927,8 +6927,8 @@ packages:
resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
engines: {node: '>=0.10'}
- esrap@2.3.0:
- resolution: {integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==}
+ esrap@2.3.4:
+ resolution: {integrity: sha512-CHnJXZDfBeOAjLIGNy/0BEsmDu5+irHgUXRW9pGptxCbO3uyjJ98crilzFgiBqizW94UodjX3GAPLg/dhEnUfA==}
peerDependencies:
'@typescript-eslint/types': ^8.2.0
peerDependenciesMeta:
@@ -8235,6 +8235,9 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+ magic-string@1.2.0:
+ resolution: {integrity: sha512-ptco+HFxTLgjafSLim2LojBSwfg5feBjd+SqyiwdGkzC38UPdZy3zgrHMI2CoTf5fJL38tbHMYWVzIH8BxGqJw==}
+
magicast@0.5.3:
resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==}
@@ -9255,6 +9258,14 @@ packages:
preact-render-to-string:
optional: true
+ preact@10.29.8:
+ resolution: {integrity: sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==}
+ peerDependencies:
+ preact-render-to-string: '>=5'
+ peerDependenciesMeta:
+ preact-render-to-string:
+ optional: true
+
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -10176,8 +10187,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svelte-check@4.7.4:
- resolution: {integrity: sha512-IW9ot9YqAoyv8FvyN+eb4ZTe8zgcKZrJLNYU6dzSKkGwEBsSPc4K7lmQ8bKn8W2YMXM6WDfZSSVOaGtekyUfOQ==}
+ svelte-check@4.7.6:
+ resolution: {integrity: sha512-t2scM//ZuVbSY/T2w6FSBw1v9s2NEmh/g+sy1lqtosW5ylBV5AF4wFb1Ts9Kf3MbfPDUDJDZ9L436YT0SPTdvw==}
engines: {node: '>= 18.0.0'}
hasBin: true
peerDependencies:
@@ -10227,8 +10238,8 @@ packages:
svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
typescript: ^4.9.4 || ^5.0.0 || ^6.0.0
- svelte@5.56.8:
- resolution: {integrity: sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==}
+ svelte@5.56.9:
+ resolution: {integrity: sha512-VT8kSnlEg8069w7AiCcAk3Yf5xvMnrGTagVOmU/OpOLHaHnNqXhWZCH/4EVga/bT/HtWhvE6/fHrXLErx7OnJA==}
engines: {node: '>=18'}
svg-path-commander@2.2.1:
@@ -11987,7 +11998,7 @@ snapshots:
'@babel/helper-annotate-as-pure@7.29.7':
dependencies:
- '@babel/types': 7.29.7
+ '@babel/types': 7.29.8
'@babel/helper-compilation-targets@7.29.7':
dependencies:
@@ -12039,7 +12050,7 @@ snapshots:
'@babel/helper-module-imports@7.18.6':
dependencies:
- '@babel/types': 7.29.7
+ '@babel/types': 7.29.8
'@babel/helper-module-imports@7.29.7(supports-color@10.2.2)':
dependencies:
@@ -12606,7 +12617,7 @@ snapshots:
'@babel/helper-module-imports': 7.29.7(supports-color@10.2.2)
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
- '@babel/types': 7.29.7
+ '@babel/types': 7.29.8
transitivePeerDependencies:
- supports-color
@@ -14704,12 +14715,12 @@ snapshots:
'@poppinss/exception@1.2.3': {}
- '@preact/preset-vite@2.10.5(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.7)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))':
+ '@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(rollup@4.62.2)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
'@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
- '@prefresh/vite': 2.4.12(preact@10.29.7)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
+ '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
'@rollup/pluginutils': 5.4.0(rollup@4.62.2)
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2))
debug: 4.4.3(supports-color@10.2.2)
@@ -14725,20 +14736,20 @@ snapshots:
'@prefresh/babel-plugin@0.5.3': {}
- '@prefresh/core@1.5.10(preact@10.29.7)':
+ '@prefresh/core@1.5.10(preact@10.29.8)':
dependencies:
- preact: 10.29.7
+ preact: 10.29.8
'@prefresh/utils@1.2.1': {}
- '@prefresh/vite@2.4.12(preact@10.29.7)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))':
+ '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@prefresh/babel-plugin': 0.5.3
- '@prefresh/core': 1.5.10(preact@10.29.7)
+ '@prefresh/core': 1.5.10(preact@10.29.8)
'@prefresh/utils': 1.2.1
'@rollup/pluginutils': 4.2.1
- preact: 10.29.7
+ preact: 10.29.8
vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
@@ -15334,29 +15345,29 @@ snapshots:
'@stitches/core@1.2.8': {}
- '@sveltejs/acorn-typescript@1.0.11(acorn@8.18.0)':
+ '@sveltejs/acorn-typescript@1.0.13(acorn@8.18.0)':
dependencies:
acorn: 8.18.0
- '@sveltejs/load-config@0.2.1': {}
+ '@sveltejs/load-config@0.2.3': {}
- '@sveltejs/package@2.5.8(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3)':
+ '@sveltejs/package@2.5.8(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3)':
dependencies:
chokidar: 5.0.0
kleur: 4.1.5
sade: 1.8.1
semver: 7.8.5
- svelte: 5.56.8(@typescript-eslint/types@8.64.0)
- svelte2tsx: 0.7.57(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3)
+ svelte: 5.56.9(@typescript-eslint/types@8.66.0)
+ svelte2tsx: 0.7.57(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3)
transitivePeerDependencies:
- typescript
- '@sveltejs/vite-plugin-svelte@7.2.0(svelte@5.56.8(@typescript-eslint/types@8.64.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))':
+ '@sveltejs/vite-plugin-svelte@7.3.0(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))':
dependencies:
deepmerge: 4.3.1
- magic-string: 0.30.21
+ magic-string: 1.2.0
obug: 2.1.4
- svelte: 5.56.8(@typescript-eslint/types@8.64.0)
+ svelte: 5.56.9(@typescript-eslint/types@8.66.0)
vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)
vitefu: 1.1.3(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
@@ -15470,10 +15481,10 @@ snapshots:
picocolors: 1.1.1
redent: 3.0.0
- '@testing-library/preact@3.2.4(preact@10.29.7)':
+ '@testing-library/preact@3.2.4(preact@10.29.8)':
dependencies:
'@testing-library/dom': 8.20.1
- preact: 10.29.7
+ preact: 10.29.8
'@testing-library/react@14.3.1(@types/react@18.3.31)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
@@ -15495,15 +15506,15 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@testing-library/svelte-core@1.1.3(svelte@5.56.8(@typescript-eslint/types@8.64.0))':
+ '@testing-library/svelte-core@1.1.3(svelte@5.56.9(@typescript-eslint/types@8.66.0))':
dependencies:
- svelte: 5.56.8(@typescript-eslint/types@8.64.0)
+ svelte: 5.56.9(@typescript-eslint/types@8.66.0)
- '@testing-library/svelte@5.4.2(svelte@5.56.8(@typescript-eslint/types@8.64.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)':
+ '@testing-library/svelte@5.4.2(svelte@5.56.9(@typescript-eslint/types@8.66.0))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))(vitest@4.1.10)':
dependencies:
'@testing-library/dom': 10.4.1
- '@testing-library/svelte-core': 1.1.3(svelte@5.56.8(@typescript-eslint/types@8.64.0))
- svelte: 5.56.8(@typescript-eslint/types@8.64.0)
+ '@testing-library/svelte-core': 1.1.3(svelte@5.56.9(@typescript-eslint/types@8.66.0))
+ svelte: 5.56.9(@typescript-eslint/types@8.66.0)
optionalDependencies:
vite: 7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0)
vitest: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@27.4.0(supports-color@10.2.2))(vite@7.3.6(@types/node@26.1.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(terser@5.49.0)(yaml@2.9.0))
@@ -18195,11 +18206,11 @@ snapshots:
dependencies:
estraverse: 5.3.0
- esrap@2.3.0(@typescript-eslint/types@8.64.0):
+ esrap@2.3.4(@typescript-eslint/types@8.66.0):
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
optionalDependencies:
- '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/types': 8.66.0
esrecurse@4.3.0:
dependencies:
@@ -19684,6 +19695,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
+ magic-string@1.2.0:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
magicast@0.5.3:
dependencies:
'@babel/parser': 7.29.7
@@ -21088,6 +21103,8 @@ snapshots:
preact@10.29.7: {}
+ preact@10.29.8: {}
+
prelude-ls@1.2.1: {}
prettier-plugin-astro@0.14.1:
@@ -22320,22 +22337,22 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svelte-check@4.7.4(picomatch@4.0.5)(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3):
+ svelte-check@4.7.6(picomatch@4.0.5)(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
- '@sveltejs/load-config': 0.2.1
+ '@sveltejs/load-config': 0.2.3
chokidar: 4.0.3
fdir: 6.5.0(picomatch@4.0.5)
picocolors: 1.1.1
sade: 1.8.1
- svelte: 5.56.8(@typescript-eslint/types@8.64.0)
+ svelte: 5.56.9(@typescript-eslint/types@8.66.0)
typescript: 5.9.3
transitivePeerDependencies:
- picomatch
- svelte-preprocess@6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.6.7)(postcss@8.5.19)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3):
+ svelte-preprocess@6.0.5(@babel/core@7.29.7(supports-color@10.2.2))(less@4.6.7)(postcss@8.5.19)(sass@1.101.0)(stylus@0.56.0(supports-color@10.2.2))(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3):
dependencies:
- svelte: 5.56.8(@typescript-eslint/types@8.64.0)
+ svelte: 5.56.9(@typescript-eslint/types@8.66.0)
optionalDependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
less: 4.6.7
@@ -22344,18 +22361,18 @@ snapshots:
stylus: 0.56.0(supports-color@10.2.2)
typescript: 5.9.3
- svelte2tsx@0.7.57(svelte@5.56.8(@typescript-eslint/types@8.64.0))(typescript@5.9.3):
+ svelte2tsx@0.7.57(svelte@5.56.9(@typescript-eslint/types@8.66.0))(typescript@5.9.3):
dependencies:
dedent-js: 1.0.1
scule: 1.3.0
- svelte: 5.56.8(@typescript-eslint/types@8.64.0)
+ svelte: 5.56.9(@typescript-eslint/types@8.66.0)
typescript: 5.9.3
- svelte@5.56.8(@typescript-eslint/types@8.64.0):
+ svelte@5.56.9(@typescript-eslint/types@8.66.0):
dependencies:
'@jridgewell/remapping': 2.3.5
'@jridgewell/sourcemap-codec': 1.5.5
- '@sveltejs/acorn-typescript': 1.0.11(acorn@8.18.0)
+ '@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0)
'@types/estree': 1.0.9
'@types/trusted-types': 2.0.7
acorn: 8.18.0
@@ -22364,7 +22381,7 @@ snapshots:
clsx: 2.1.1
devalue: 5.9.0
esm-env: 1.2.2
- esrap: 2.3.0(@typescript-eslint/types@8.64.0)
+ esrap: 2.3.4(@typescript-eslint/types@8.66.0)
is-reference: 3.0.3
locate-character: 3.0.0
magic-string: 0.30.21
diff --git a/scripts/updateGuidelineIcons.mts b/scripts/updateGuidelineIcons.mts
index e0ea91ff0..ec54fcd45 100644
--- a/scripts/updateGuidelineIcons.mts
+++ b/scripts/updateGuidelineIcons.mts
@@ -14,7 +14,7 @@ for (const file of readdirSync(path.join(import.meta.dirname, '../docs/images'))
[
groupOpeningTag,
...readFileSync(path.join(import.meta.dirname, `../icons/${iconName}.svg`), 'utf8')
- .replace(/(