diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..04b38c47c
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,104 @@
+version: 2
+
+updates:
+ - package-ecosystem: npm
+ directory: /
+ schedule:
+ interval: weekly
+ groups:
+ react-deps:
+ patterns:
+ - '@testing-library/react'
+ - '@types/prop-types'
+ - '@types/react'
+ - '@vitejs/plugin-react'
+ - 'react'
+ - 'react-dom'
+ vue-deps:
+ patterns:
+ - '@testing-library/vue'
+ - '@vitejs/plugin-vue'
+ - '@vue/test-utils'
+ - 'vue'
+ svelte-deps:
+ patterns:
+ - '@sveltejs/*'
+ - '@testing-library/svelte'
+ - '@tsconfig/svelte'
+ - 'svelte'
+ - 'svelte-check'
+ - 'svelte-preprocess'
+ solid-deps:
+ patterns:
+ - '@babel/*'
+ - '@rollup/plugin-babel'
+ - '@solidjs/testing-library'
+ - 'babel-preset-solid'
+ - 'solid-js'
+ - 'vite-plugin-solid'
+ react-native-deps:
+ patterns:
+ - 'react-native'
+ - 'react-native-svg'
+ angular-deps:
+ patterns:
+ - '@angular/*'
+ - '@angular-eslint/*'
+ - '@vitest/browser-playwright'
+ - 'angular-eslint'
+ - 'ng-packagr'
+ - 'rxjs'
+ - 'tslib'
+ preact-deps:
+ patterns:
+ - '@preact/preset-vite'
+ - '@testing-library/preact'
+ - 'preact'
+ astro-deps:
+ patterns:
+ - '@astrojs/*'
+ - 'astro'
+ testing-deps:
+ patterns:
+ - '@testing-library/*'
+ - '@vitest/*'
+ - 'jest-serializer-html'
+ - 'jsdom'
+ - 'linkedom'
+ - 'vitest'
+ build-deps:
+ patterns:
+ - '@rollup/*'
+ - '@vitejs/*'
+ - 'esbuild'
+ - 'rollup'
+ - 'rollup-plugin-*'
+ - 'typescript'
+ - 'vite'
+ - 'vite-plugin-*'
+ linting-deps:
+ patterns:
+ - '@html-eslint/*'
+ - '@typescript-eslint/*'
+ - 'cspell'
+ - 'eslint'
+ - 'eslint-*'
+ - 'husky'
+ - 'lint-staged'
+ - 'prettier'
+ - 'prettier-plugin-*'
+ types-deps:
+ patterns:
+ - '@types/*'
+ remaining-deps:
+ patterns:
+ - '*'
+
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: monthly
+ groups:
+ github-actions:
+ patterns:
+ - '*'
diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml
index 886e18a91..76128e2da 100644
--- a/.github/workflows/angular.yml
+++ b/.github/workflows/angular.yml
@@ -14,9 +14,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -30,9 +30,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index dde64cf25..a6a89d0ec 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -23,9 +23,7 @@ on:
- beta
- alpha
-permissions:
- id-token: write # Required for OIDC
- contents: write
+permissions: {}
jobs:
check-dispatch-gate:
@@ -33,10 +31,12 @@ jobs:
startsWith(github.event.head_commit.message, 'feat(icons)') &&
github.event_name != 'workflow_dispatch'
runs-on: ubuntu-latest
+ permissions:
+ contents: read
outputs:
RELEASE_ENVIRONMENT: ${{ steps.environment.outputs.RELEASE_ENVIRONMENT }}
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
+ - uses: actions/checkout@v7
- name: Fetch tags
run: git fetch --all --tags
@@ -60,12 +60,14 @@ jobs:
needs: check-dispatch-gate
environment: ${{ needs.check-dispatch-gate.outputs.RELEASE_ENVIRONMENT }}
runs-on: ubuntu-latest
+ permissions:
+ contents: write # Required to create the release and tag
outputs:
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
# No cache restore here: this job cuts the release, and caches
# are writable from other workflow runs. The lockfile still
@@ -102,7 +104,7 @@ jobs:
echo '${{ steps.change-log.outputs.CHANGE_LOG }}'
- name: Create Release
- uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
+ uses: softprops/action-gh-release@v3
with:
tag_name: ${{ steps.new-version.outputs.NEW_VERSION }}
name: Version ${{ steps.new-version.outputs.NEW_VERSION }}
@@ -112,16 +114,20 @@ jobs:
if: github.repository == 'lucide-icons/lucide'
needs: create-release
uses: './.github/workflows/release.yml'
- secrets:
- BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }}
+ secrets: inherit
+ permissions:
+ id-token: write # Required for OIDC (npm provenance)
+ contents: write # Required to upload release assets
with:
version: ${{ needs.create-release.outputs.VERSION }}
dispatch-release:
- if: github.event_name == 'workflow_dispatch'
+ if: github.repository == 'lucide-icons/lucide' && github.event_name == 'workflow_dispatch'
uses: './.github/workflows/release.yml'
- secrets:
- BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }}
+ secrets: inherit
+ permissions:
+ id-token: write # Required for OIDC (npm provenance)
+ contents: write # Required to upload release assets
with:
version: ${{ inputs.version }}
tag: ${{ inputs.tag }}
diff --git a/.github/workflows/close-issue-with-banned-phrases.yml b/.github/workflows/close-issue-with-banned-phrases.yml
index 773d25911..2fb1dff84 100644
--- a/.github/workflows/close-issue-with-banned-phrases.yml
+++ b/.github/workflows/close-issue-with-banned-phrases.yml
@@ -4,14 +4,21 @@ on:
issues:
types: [opened]
+permissions: {}
+
+env:
+ GH_TOKEN: ${{ github.token }}
+
jobs:
block_phrases:
+ if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
permissions:
+ contents: read
issues: write
steps:
- name: Checkout repository
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
+ uses: actions/checkout@v7
- name: Load stopwords from JSON & check issue title & body
if: contains(github.event.issue.labels.*.name, '🙌 icon request')
@@ -43,6 +50,3 @@ jobs:
exit 0
fi
done
-
-env:
- GH_TOKEN: ${{ github.token }}
diff --git a/.github/workflows/close-stale-prs.yml b/.github/workflows/close-stale-prs.yml
index 0bdeb0b2b..0cdb2f8d1 100644
--- a/.github/workflows/close-stale-prs.yml
+++ b/.github/workflows/close-stale-prs.yml
@@ -3,13 +3,16 @@ on:
schedule:
- cron: '45 1 * * *'
+permissions: {}
+
jobs:
stale:
+ if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
+ - uses: actions/stale@v11
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-pr-message: This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 5 days.
diff --git a/.github/workflows/comment-icon-preview.yml b/.github/workflows/comment-icon-preview.yml
index f476a250a..e3b5e4d04 100644
--- a/.github/workflows/comment-icon-preview.yml
+++ b/.github/workflows/comment-icon-preview.yml
@@ -6,23 +6,22 @@ on:
types:
- completed
-permissions:
- contents: read
- # Download the pr_number artifact from the triggering run.
- actions: read
- # Create or update the icon preview comment on the PR.
- issues: write
- pull-requests: write
+permissions: {}
jobs:
upload:
runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ actions: read # Required to download the artifact from the triggering run
+ pull-requests: write
if: >
+ github.repository == 'lucide-icons/lucide' &&
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
steps:
- name: 'Download artifact'
- uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
+ uses: actions/github-script@v9
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
@@ -50,7 +49,7 @@ jobs:
id: pr-number
- name: Find Comment
- uses: peter-evans/find-comment@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2.4.0
+ uses: peter-evans/find-comment@v4
id: pr-comment
with:
issue-number: ${{ steps.pr-number.outputs.number }}
@@ -58,7 +57,7 @@ jobs:
body-includes: Added or changed icons
- name: Create or update comment
- uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
+ uses: peter-evans/create-or-update-comment@v5
with:
comment-id: ${{ steps.pr-comment.outputs.comment-id }}
issue-number: ${{ steps.pr-number.outputs.number }}
diff --git a/.github/workflows/icons.yml b/.github/workflows/icons.yml
index 538fe1339..4c246a48c 100644
--- a/.github/workflows/icons.yml
+++ b/.github/workflows/icons.yml
@@ -16,9 +16,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -32,9 +32,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 69c87f8a2..9c84fe711 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -2,12 +2,15 @@ name: 'Pull Request Labeler'
on:
- pull_request_target
+permissions: {}
+
jobs:
triage:
+ if: github.repository == 'lucide-icons/lucide'
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
+ - uses: actions/checkout@v7
+ - uses: actions/labeler@v7
diff --git a/.github/workflows/lint-code.yml b/.github/workflows/lint-code.yml
index edb2915cb..297831c50 100644
--- a/.github/workflows/lint-code.yml
+++ b/.github/workflows/lint-code.yml
@@ -10,9 +10,9 @@ jobs:
lint-code:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml
index 0be3ac318..ea29078b4 100644
--- a/.github/workflows/lint-pr-title.yml
+++ b/.github/workflows/lint-pr-title.yml
@@ -8,15 +8,15 @@ on:
- reopened
permissions:
- # The semantic PR action only reads the pull request title.
- pull-requests: read
+ contents: read
+ pull-requests: read # Required to read the PR title
jobs:
lint-pr-title:
name: PR Title Lint
runs-on: ubuntu-latest
steps:
- - uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
+ - uses: amannn/action-semantic-pull-request@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
diff --git a/.github/workflows/linting-icons.yml b/.github/workflows/linting-icons.yml
index 1f4fad795..9204411ca 100644
--- a/.github/workflows/linting-icons.yml
+++ b/.github/workflows/linting-icons.yml
@@ -9,6 +9,8 @@ on:
- 'icons/*'
- 'lab/*'
+permissions: {}
+
jobs:
lint-filenames:
name: Lint Filenames
@@ -17,9 +19,9 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -29,7 +31,7 @@ jobs:
- name: Get changed files
id: changed-files
- uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5
+ uses: tj-actions/changed-files@v47
with:
files: |
icons/*
@@ -46,9 +48,9 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -65,6 +67,6 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
+ - uses: actions/checkout@v7
- name: Check Uniqueness of Aliases
run: "! cat <(printf \"%s\\n\" icons/*.json | while read -r name; do basename \"$name\" .json; done) <(jq -cr 'select(.aliases) | .aliases[] | if type==\"string\" then . else .name end' icons/*.json) | sort | uniq -c | grep -ve '^\\s*1 '"
diff --git a/.github/workflows/lucide-astro.yml b/.github/workflows/lucide-astro.yml
index bd27e26e5..d76be8ccd 100644
--- a/.github/workflows/lucide-astro.yml
+++ b/.github/workflows/lucide-astro.yml
@@ -18,9 +18,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@eae0cfeb286e66ffb5155f1a79b90583a127a68b # v2.4.1
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
node-version-file: 'package.json'
cache: 'pnpm'
@@ -34,9 +34,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@a37ce9120846195fa4ece8f58b268e6043cb2f26 # v3.7.0
- - uses: pnpm/action-setup@eae0cfeb286e66ffb5155f1a79b90583a127a68b # v2.4.1
- - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3.9.1
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
node-version-file: 'package.json'
cache: 'pnpm'
diff --git a/.github/workflows/lucide-font.yml b/.github/workflows/lucide-font.yml
index d6358a774..42e5c2400 100644
--- a/.github/workflows/lucide-font.yml
+++ b/.github/workflows/lucide-font.yml
@@ -16,9 +16,9 @@ jobs:
lucide-font:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -33,7 +33,7 @@ jobs:
run: pnpm build:font
- name: 'Upload to Artifacts'
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ uses: actions/upload-artifact@v7
with:
name: lucide-font
path: lucide-font
diff --git a/.github/workflows/lucide-lab.yml b/.github/workflows/lucide-lab.yml
index ca3f607d6..23500346d 100644
--- a/.github/workflows/lucide-lab.yml
+++ b/.github/workflows/lucide-lab.yml
@@ -16,9 +16,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-preact.yml b/.github/workflows/lucide-preact.yml
index a44092cd6..26c5796f5 100644
--- a/.github/workflows/lucide-preact.yml
+++ b/.github/workflows/lucide-preact.yml
@@ -19,9 +19,9 @@ jobs:
lucide-preact:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-react-native.yml b/.github/workflows/lucide-react-native.yml
index 1430dffb6..1243b5bf6 100644
--- a/.github/workflows/lucide-react-native.yml
+++ b/.github/workflows/lucide-react-native.yml
@@ -19,9 +19,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -35,9 +35,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-react.yml b/.github/workflows/lucide-react.yml
index 165c2c3c8..3c5bf64a6 100644
--- a/.github/workflows/lucide-react.yml
+++ b/.github/workflows/lucide-react.yml
@@ -20,9 +20,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -36,9 +36,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-shared.yml b/.github/workflows/lucide-shared.yml
index 2538582db..581d4a20a 100644
--- a/.github/workflows/lucide-shared.yml
+++ b/.github/workflows/lucide-shared.yml
@@ -16,9 +16,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-solid.yml b/.github/workflows/lucide-solid.yml
index 5c1d99879..ec0f09905 100644
--- a/.github/workflows/lucide-solid.yml
+++ b/.github/workflows/lucide-solid.yml
@@ -19,9 +19,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -35,9 +35,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-static.yml b/.github/workflows/lucide-static.yml
index 3ae78b031..a6c5080d5 100644
--- a/.github/workflows/lucide-static.yml
+++ b/.github/workflows/lucide-static.yml
@@ -14,9 +14,9 @@ jobs:
lucide-static:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-svelte-5.yml b/.github/workflows/lucide-svelte-5.yml
index c82888e05..8f96e85b6 100644
--- a/.github/workflows/lucide-svelte-5.yml
+++ b/.github/workflows/lucide-svelte-5.yml
@@ -19,9 +19,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -35,9 +35,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -51,9 +51,9 @@ jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide-vue.yml b/.github/workflows/lucide-vue.yml
index a998ffd1a..771b36280 100644
--- a/.github/workflows/lucide-vue.yml
+++ b/.github/workflows/lucide-vue.yml
@@ -6,7 +6,7 @@ on:
- next
pull_request:
paths:
- - packages/lucide-vue/**
+ - packages/vue/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
@@ -19,9 +19,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -35,9 +35,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/lucide.yml b/.github/workflows/lucide.yml
index 3ac44fff1..cccbb8407 100644
--- a/.github/workflows/lucide.yml
+++ b/.github/workflows/lucide.yml
@@ -18,9 +18,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -34,9 +34,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/pull-request-icon-preview.yml b/.github/workflows/pull-request-icon-preview.yml
index c95bb3a9e..28c37ed4a 100644
--- a/.github/workflows/pull-request-icon-preview.yml
+++ b/.github/workflows/pull-request-icon-preview.yml
@@ -5,27 +5,30 @@ on:
paths:
- 'icons/*.svg'
+permissions: {}
+
jobs:
generate-changed-icons-comment:
name: Generate Changed Icons Comment
+ if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: actions/setup-node@v7.0.0
with:
node-version-file: 'package.json'
- name: Get changed files
id: changed-files
- uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5
+ uses: tj-actions/changed-files@v47
with:
files: icons/*.svg
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/setup-node@v7.0.0
- name: Install svgson for code preview (safer and faster than installing all deps)
run: npm install svgson@5.3.1 --force
@@ -40,7 +43,7 @@ jobs:
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
- - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ - uses: actions/upload-artifact@v7
with:
name: pr_number
path: pr/
diff --git a/.github/workflows/pull-request-metadata-suggestions.yml b/.github/workflows/pull-request-metadata-suggestions.yml
index 6657f5006..a94b29e7f 100644
--- a/.github/workflows/pull-request-metadata-suggestions.yml
+++ b/.github/workflows/pull-request-metadata-suggestions.yml
@@ -5,9 +5,12 @@ on:
paths:
- 'icons/*.json'
+permissions: {}
+
jobs:
pull-request-metadata-suggestions:
name: Pull Request Metadata Suggestions
+ if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
permissions:
contents: read
@@ -16,11 +19,11 @@ jobs:
steps:
# We checkout the main branch of main repository for security reasons.
# This is to prevent the workflow from running on a forked repository.
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
+ - uses: actions/checkout@v7
with:
repository: lucide-icons/lucide
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 4ec303539..bf9c4ea7a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -20,9 +20,7 @@ on:
description: Token used by build-font to upload the code points blob
required: false
-permissions:
- id-token: write # Required for OIDC
- contents: write
+permissions: {}
jobs:
prepare:
@@ -30,7 +28,6 @@ jobs:
runs-on: ubuntu-latest
outputs:
VERSION: ${{ steps.get_version.outputs.VERSION }}
-
steps:
- name: Get the version
id: get_version
@@ -64,9 +61,9 @@ jobs:
'@lucide/vue',
]
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -97,10 +94,13 @@ jobs:
contents: read
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: actions/download-artifact@v8
+ with:
+ name: lucide-font
+ path: lucide-font
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -126,10 +126,12 @@ jobs:
if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
needs: prepare
+ permissions:
+ contents: read
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/checkout@v7
+ - uses: pnpm/action-setup@v6
+ - uses: actions/setup-node@v7.0.0
with:
cache: 'pnpm'
node-version-file: 'package.json'
@@ -146,7 +148,7 @@ jobs:
BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }}
- name: 'Upload to Artifacts'
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ uses: actions/upload-artifact@v7
with:
name: lucide-font
path: lucide-font
@@ -156,18 +158,20 @@ jobs:
runs-on: ubuntu-latest
needs: [prepare, lucide-font]
permissions:
- id-token: write # Required for OIDC
- contents: write
+ contents: write # Required to upload the release assets
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
- - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
+ - uses: actions/checkout@v7
+ - uses: actions/download-artifact@v8
+ with:
+ name: lucide-font
+ path: lucide-font
- name: Zip font and icons
run: |
zip -r lucide-font-${{ needs.prepare.outputs.VERSION }}.zip lucide-font
zip -r lucide-icons-${{ needs.prepare.outputs.VERSION }}.zip icons
- name: Release zip and fonts
- uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2.6.2
+ uses: softprops/action-gh-release@v3
with:
tag_name: ${{ needs.prepare.outputs.VERSION }}
diff --git a/.github/workflows/repo-journal.yml b/.github/workflows/repo-journal.yml
index 4e7a7812d..2be78d817 100644
--- a/.github/workflows/repo-journal.yml
+++ b/.github/workflows/repo-journal.yml
@@ -4,14 +4,17 @@ on:
# Run this workflow every Monday at 07:00 UTC
schedule:
- cron: '0 7 * * 1'
+
permissions:
contents: read
+
jobs:
weekly-summary:
+ if: github.repository == 'lucide-icons/lucide'
runs-on: ubuntu-latest
steps:
- name: Set up Node.js environment
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+ uses: actions/setup-node@v7.0.0
with:
node-version: 24
diff --git a/.github/workflows/request-review.yml b/.github/workflows/request-review.yml
index 33145d792..3f87de0d1 100644
--- a/.github/workflows/request-review.yml
+++ b/.github/workflows/request-review.yml
@@ -5,21 +5,23 @@ on:
paths:
- icons/*.svg
+permissions: {}
+
jobs:
request-review:
- if: github.event.pull_request.draft == false
+ if: github.repository == 'lucide-icons/lucide' && github.event.pull_request.draft == false
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Get changed files
id: changed-files
- uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5
+ uses: tj-actions/changed-files@v47
with:
files: icons/*.svg
- run: |
diff --git a/docs/package.json b/docs/package.json
index 0ee8cdda0..f2fbb44e4 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -68,6 +68,6 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"sandpack-vue3": "3.1.12",
- "vue": "^3.5.39"
+ "vue": "^3.5.40"
}
}
diff --git a/icons/audio-lines-x.json b/icons/audio-lines-x.json
new file mode 100644
index 000000000..c6d77ea54
--- /dev/null
+++ b/icons/audio-lines-x.json
@@ -0,0 +1,55 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "danielbayley",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "indicating muted, blocked, or unavailable audio playback",
+ "showing that an audio track, waveform, or signal has been removed",
+ "marking controls that disable sound, music, voice, or broadcast output",
+ "representing cancelled recording, paused monitoring, or silenced audio analysis",
+ "identifying error states for sound processing, voice activity, or media levels",
+ "showing a device's speaker or system volume is turned off",
+ "indicating a user's microphone or input is muted",
+ "signaling muted notifications or alerts",
+ "representing muted voice chat in conferencing or multiplayer games"
+ ],
+ "tags": [
+ "sound",
+ "noise",
+ "mute",
+ "silence",
+ "disabled",
+ "cancel",
+ "remove",
+ "unavailable",
+ "listen",
+ "hearing",
+ "equalizer",
+ "equaliser",
+ "hertz",
+ "frequency",
+ "wavelength",
+ "vibrate",
+ "sine",
+ "waveform",
+ "synthesizer",
+ "synthesiser",
+ "levels",
+ "track",
+ "music",
+ "playback",
+ "radio",
+ "broadcast",
+ "airwaves",
+ "voice",
+ "vocals",
+ "singer",
+ "song"
+ ],
+ "categories": [
+ "multimedia",
+ "communication"
+ ]
+}
diff --git a/icons/audio-lines-x.svg b/icons/audio-lines-x.svg
new file mode 100644
index 000000000..eb855e736
--- /dev/null
+++ b/icons/audio-lines-x.svg
@@ -0,0 +1,20 @@
+
diff --git a/icons/angry.json b/icons/face-angry.json
similarity index 52%
rename from icons/angry.json
rename to icons/face-angry.json
index 178069075..b05521ac3 100644
--- a/icons/angry.json
+++ b/icons/face-angry.json
@@ -6,12 +6,23 @@
],
"use-cases": [],
"tags": [
- "emoji",
"anger",
- "face",
+ "rage",
+ "fury",
+ "resentment",
+ "irritation",
+ "disgust",
+ "emoji",
"emotion"
],
"categories": [
"emoji"
+ ],
+ "aliases": [
+ {
+ "name": "angry",
+ "deprecated": true,
+ "deprecationReason": "alias.name"
+ }
]
}
diff --git a/icons/laugh.svg b/icons/face-angry.svg
similarity index 60%
rename from icons/laugh.svg
rename to icons/face-angry.svg
index 41b443c7f..b7c18de72 100644
--- a/icons/laugh.svg
+++ b/icons/face-angry.svg
@@ -9,8 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
+
+
+
+
+
-
-
-
diff --git a/icons/annoyed.json b/icons/face-expressionless.json
similarity index 53%
rename from icons/annoyed.json
rename to icons/face-expressionless.json
index b38f2e28e..a01567e4b 100644
--- a/icons/annoyed.json
+++ b/icons/face-expressionless.json
@@ -5,12 +5,21 @@
],
"use-cases": [],
"tags": [
- "emoji",
"nuisance",
- "face",
+ "annoyed",
+ "annoyance",
+ "frustration",
+ "emoji",
"emotion"
],
"categories": [
"emoji"
+ ],
+ "aliases": [
+ {
+ "name": "annoyed",
+ "deprecated": true,
+ "deprecationReason": "alias.name"
+ }
]
}
diff --git a/icons/annoyed.svg b/icons/face-expressionless.svg
similarity index 77%
rename from icons/annoyed.svg
rename to icons/face-expressionless.svg
index 3279b6621..a10550bbb 100644
--- a/icons/annoyed.svg
+++ b/icons/face-expressionless.svg
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
+
+
+
-
-
-
diff --git a/icons/face-grinning.json b/icons/face-grinning.json
new file mode 100644
index 000000000..d90e6de32
--- /dev/null
+++ b/icons/face-grinning.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "karsa-mistmere",
+ "ericfennis"
+ ],
+ "use-cases": [],
+ "tags": [
+ "happy",
+ "happiness",
+ "good",
+ "laugh",
+ "broad smile",
+ "pleasure",
+ "good cheer",
+ "humour",
+ "funny",
+ "emoji",
+ "emotion"
+ ],
+ "categories": [
+ "emoji"
+ ],
+ "aliases": [
+ {
+ "name": "laugh",
+ "deprecated": true,
+ "deprecationReason": "alias.name"
+ }
+ ]
+}
diff --git a/icons/angry.svg b/icons/face-grinning.svg
similarity index 62%
rename from icons/angry.svg
rename to icons/face-grinning.svg
index 41e4361ad..ada21a91b 100644
--- a/icons/angry.svg
+++ b/icons/face-grinning.svg
@@ -9,10 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
+
+
+
-
-
-
-
-
diff --git a/icons/face-neutral.json b/icons/face-neutral.json
new file mode 100644
index 000000000..abbf36413
--- /dev/null
+++ b/icons/face-neutral.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "colebemis",
+ "csandman",
+ "mittalyashu",
+ "ericfennis"
+ ],
+ "use-cases": [],
+ "tags": [
+ "emoji",
+ "neutral",
+ "emotion",
+ "meh",
+ "blank stare",
+ "social masking",
+ "irritation",
+ "concern",
+ "deadpan"
+ ],
+ "categories": [
+ "emoji"
+ ],
+ "aliases": [
+ {
+ "name": "meh",
+ "deprecated": true,
+ "deprecationReason": "alias.name"
+ }
+ ]
+}
diff --git a/icons/smile.svg b/icons/face-neutral.svg
similarity index 66%
rename from icons/smile.svg
rename to icons/face-neutral.svg
index 59e020763..afa79b090 100644
--- a/icons/smile.svg
+++ b/icons/face-neutral.svg
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
+
+
+
-
-
-
diff --git a/icons/frown.json b/icons/face-slightly-frowning.json
similarity index 56%
rename from icons/frown.json
rename to icons/face-slightly-frowning.json
index 39d33df13..3fc21e638 100644
--- a/icons/frown.json
+++ b/icons/face-slightly-frowning.json
@@ -9,13 +9,21 @@
"use-cases": [],
"tags": [
"emoji",
- "face",
"bad",
- "sad",
- "emotion"
+ "sadness",
+ "emotion",
+ "concern",
+ "disappointment"
],
"categories": [
"emoji",
"account"
+ ],
+ "aliases": [
+ {
+ "name": "frown",
+ "deprecated": true,
+ "deprecationReason": "alias.name"
+ }
]
}
diff --git a/icons/frown.svg b/icons/face-slightly-frowning.svg
similarity index 65%
rename from icons/frown.svg
rename to icons/face-slightly-frowning.svg
index 370dbc736..61c813289 100644
--- a/icons/frown.svg
+++ b/icons/face-slightly-frowning.svg
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
+
+
+
-
-
-
diff --git a/icons/smile-plus.json b/icons/face-slightly-smiling-plus.json
similarity index 64%
rename from icons/smile-plus.json
rename to icons/face-slightly-smiling-plus.json
index faa6caa98..5641fbcc2 100644
--- a/icons/smile-plus.json
+++ b/icons/face-slightly-smiling-plus.json
@@ -6,19 +6,26 @@
],
"use-cases": [],
"tags": [
- "emoji",
- "face",
+ "smile",
"happy",
"good",
- "emotion",
"react",
"reaction",
- "add"
+ "emoji",
+ "add",
+ "emotion"
],
"categories": [
"emoji",
"social",
"notifications",
"communication"
+ ],
+ "aliases": [
+ {
+ "name": "smile-plus",
+ "deprecated": true,
+ "deprecationReason": "alias.name"
+ }
]
}
diff --git a/icons/smile-plus.svg b/icons/face-slightly-smiling-plus.svg
similarity index 60%
rename from icons/smile-plus.svg
rename to icons/face-slightly-smiling-plus.svg
index 47bbf6b0f..3c58cc0b2 100644
--- a/icons/smile-plus.svg
+++ b/icons/face-slightly-smiling-plus.svg
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
-
-
-
-
+
+
+
+
diff --git a/icons/smile.json b/icons/face-slightly-smiling.json
similarity index 52%
rename from icons/smile.json
rename to icons/face-slightly-smiling.json
index b622e70e8..d083317e6 100644
--- a/icons/smile.json
+++ b/icons/face-slightly-smiling.json
@@ -8,14 +8,27 @@
],
"use-cases": [],
"tags": [
- "emoji",
- "face",
+ "smile",
"happy",
+ "happiness",
"good",
+ "positive",
+ "friendly",
+ "patronizing",
+ "passive aggressive",
+ "ironic",
+ "emoji",
"emotion"
],
"categories": [
"emoji",
"account"
+ ],
+ "aliases": [
+ {
+ "name": "smile",
+ "deprecated": true,
+ "deprecationReason": "alias.name"
+ }
]
}
diff --git a/icons/meh.svg b/icons/face-slightly-smiling.svg
similarity index 65%
rename from icons/meh.svg
rename to icons/face-slightly-smiling.svg
index 78ac8d1e2..750065b43 100644
--- a/icons/meh.svg
+++ b/icons/face-slightly-smiling.svg
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
+
+
+
-
-
-
diff --git a/icons/laugh.json b/icons/laugh.json
deleted file mode 100644
index 1c07dc1da..000000000
--- a/icons/laugh.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "$schema": "../icon.schema.json",
- "contributors": [
- "karsa-mistmere",
- "ericfennis"
- ],
- "use-cases": [],
- "tags": [
- "emoji",
- "face",
- "happy",
- "good",
- "emotion"
- ],
- "categories": [
- "emoji"
- ]
-}
diff --git a/icons/layer-arrow-down.json b/icons/layer-arrow-down.json
new file mode 100644
index 000000000..23cb90006
--- /dev/null
+++ b/icons/layer-arrow-down.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "colebemis",
+ "danielbayley",
+ "jguddas",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "lowering a selected layer by one step",
+ "moving an item backward in layer order"
+ ],
+ "tags": [
+ "move back",
+ "backward",
+ "lower",
+ "demote",
+ "step back",
+ "behind",
+ "reorder",
+ "arrange",
+ "layer",
+ "layers",
+ "stack",
+ "stacking",
+ "z-index",
+ "depth",
+ "graphics",
+ "design"
+ ],
+ "categories": [
+ "design",
+ "layout"
+ ]
+}
diff --git a/icons/layer-arrow-down.svg b/icons/layer-arrow-down.svg
new file mode 100644
index 000000000..e11232dc0
--- /dev/null
+++ b/icons/layer-arrow-down.svg
@@ -0,0 +1,16 @@
+
diff --git a/icons/layer-arrow-up.json b/icons/layer-arrow-up.json
new file mode 100644
index 000000000..a9df28a11
--- /dev/null
+++ b/icons/layer-arrow-up.json
@@ -0,0 +1,34 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "colebemis",
+ "danielbayley",
+ "jguddas",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "raising a selected layer by one step",
+ "moving an item forward in layer order"
+ ],
+ "tags": [
+ "move forward",
+ "forward",
+ "raise",
+ "lift",
+ "promote",
+ "advance",
+ "step forward",
+ "reorder",
+ "arrange",
+ "stack",
+ "stacking",
+ "z-index",
+ "depth",
+ "graphics",
+ "design"
+ ],
+ "categories": [
+ "design",
+ "layout"
+ ]
+}
diff --git a/icons/layer-arrow-up.svg b/icons/layer-arrow-up.svg
new file mode 100644
index 000000000..5f018c88e
--- /dev/null
+++ b/icons/layer-arrow-up.svg
@@ -0,0 +1,15 @@
+
diff --git a/icons/layers-arrow-down.json b/icons/layers-arrow-down.json
new file mode 100644
index 000000000..8ab271b7a
--- /dev/null
+++ b/icons/layers-arrow-down.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "colebemis",
+ "danielbayley",
+ "jguddas",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "sending a selected object to the back of a stack",
+ "moving an item behind all others in layer order"
+ ],
+ "tags": [
+ "send to back",
+ "send backward",
+ "back",
+ "background",
+ "bottom",
+ "bottommost",
+ "lower",
+ "demote",
+ "behind",
+ "reorder",
+ "arrange",
+ "stack",
+ "stacking",
+ "z-index",
+ "depth",
+ "graphics",
+ "design"
+ ],
+ "categories": [
+ "design",
+ "layout"
+ ]
+}
diff --git a/icons/layers-arrow-down.svg b/icons/layers-arrow-down.svg
new file mode 100644
index 000000000..10489169c
--- /dev/null
+++ b/icons/layers-arrow-down.svg
@@ -0,0 +1,17 @@
+
diff --git a/icons/layers-arrow-up.json b/icons/layers-arrow-up.json
new file mode 100644
index 000000000..90e6476a3
--- /dev/null
+++ b/icons/layers-arrow-up.json
@@ -0,0 +1,37 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "colebemis",
+ "danielbayley",
+ "jguddas",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "bringing a selected object to the front of a stack",
+ "moving an item in front of all others in layer order"
+ ],
+ "tags": [
+ "bring to front",
+ "bring forward",
+ "front",
+ "foreground",
+ "top",
+ "topmost",
+ "raise",
+ "lift",
+ "promote",
+ "reorder",
+ "arrange",
+ "stack",
+ "stacking",
+ "z-index",
+ "depth",
+ "graphics",
+ "design"
+ ],
+ "categories": [
+ "design",
+ "layout",
+ "arrows"
+ ]
+}
diff --git a/icons/layers-arrow-up.svg b/icons/layers-arrow-up.svg
new file mode 100644
index 000000000..65847d3e5
--- /dev/null
+++ b/icons/layers-arrow-up.svg
@@ -0,0 +1,16 @@
+
diff --git a/icons/meh.json b/icons/meh.json
deleted file mode 100644
index 8676a7377..000000000
--- a/icons/meh.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "$schema": "../icon.schema.json",
- "contributors": [
- "colebemis",
- "csandman",
- "mittalyashu",
- "ericfennis"
- ],
- "use-cases": [],
- "tags": [
- "emoji",
- "face",
- "neutral",
- "emotion"
- ],
- "categories": [
- "emoji"
- ]
-}
diff --git a/icons/mic-signal.json b/icons/mic-signal.json
index 5ef7b1ebe..045a0fab5 100644
--- a/icons/mic-signal.json
+++ b/icons/mic-signal.json
@@ -39,8 +39,7 @@
{
"name": "podcast",
"deprecated": true,
- "deprecationReason": "alias.name",
- "toBeRemovedInVersion": "v1.0"
+ "deprecationReason": "alias.name"
}
]
}
diff --git a/icons/shield-lock.json b/icons/shield-lock.json
new file mode 100644
index 000000000..f760f9c63
--- /dev/null
+++ b/icons/shield-lock.json
@@ -0,0 +1,37 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "caisere",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "encryption settings",
+ "secure login",
+ "privacy controls",
+ "security software",
+ "secure file storage"
+ ],
+ "tags": [
+ "antivirus",
+ "authentication",
+ "authorization",
+ "credentials",
+ "cybersecurity",
+ "data protection",
+ "defense",
+ "encryption",
+ "guard",
+ "login",
+ "password",
+ "privacy",
+ "safeguard",
+ "ssl",
+ "tls",
+ "two-factor authentication",
+ "verification",
+ "vpn"
+ ],
+ "categories": [
+ "security"
+ ]
+}
diff --git a/icons/shield-lock.svg b/icons/shield-lock.svg
new file mode 100644
index 000000000..20cc5b941
--- /dev/null
+++ b/icons/shield-lock.svg
@@ -0,0 +1,15 @@
+
diff --git a/lab/chinese-character.json b/lab/chinese-character.json
new file mode 100644
index 000000000..d639af9f2
--- /dev/null
+++ b/lab/chinese-character.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "congemcd",
+ "rrod497"
+ ],
+ "tags": [
+ "text",
+ "language",
+ "chinese"
+ ],
+ "categories": [
+ "text"
+ ]
+}
diff --git a/lab/chinese-character.svg b/lab/chinese-character.svg
new file mode 100644
index 000000000..a17541863
--- /dev/null
+++ b/lab/chinese-character.svg
@@ -0,0 +1,16 @@
+
diff --git a/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap b/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap
index a6ff7f2e4..35f95548d 100644
--- a/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap
+++ b/packages/astro/tests/__snapshots__/lucide-astro.spec.ts.snap
@@ -12,27 +12,19 @@ exports[`Using lucide icon components > should add a non-default attribute to th
stroke-linejoin="round"
aria-hidden="true"
style="position: absolute"
- class="lucide lucide-smile"
+ class="lucide lucide-face-slightly-smiling"
>
+
+
+
+
+
+
-
-
-
-
-
-
`;
@@ -127,27 +119,19 @@ exports[`Using lucide icon components > should pass children to the icon slot 1`
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
- class="lucide lucide-smile"
+ class="lucide lucide-face-slightly-smiling"
>
+
+
+
+
+
+
-
-
-
-
-
-
Hello World
diff --git a/packages/lucide-react/tests/__snapshots__/dynamicImports.spec.tsx.snap b/packages/lucide-react/tests/__snapshots__/dynamicImports.spec.tsx.snap
index 81acb4297..c4e6bb68a 100644
--- a/packages/lucide-react/tests/__snapshots__/dynamicImports.spec.tsx.snap
+++ b/packages/lucide-react/tests/__snapshots__/dynamicImports.spec.tsx.snap
@@ -10,27 +10,19 @@ exports[`Using dynamicImports > should render icons dynamically by using the dyn
stroke-width="1"
stroke-linecap="round"
stroke-linejoin="round"
- class="lucide lucide-smile"
+ class="lucide lucide-face-slightly-smiling"
aria-label="smile"
>
+
+
+
+
+
+
-
-
-
-
-
-
`;
diff --git a/packages/svelte/package.json b/packages/svelte/package.json
index 074c0d049..d78086dbb 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": "^6.2.4",
+ "@sveltejs/vite-plugin-svelte": "^7.2.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.5",
- "svelte-check": "^4.7.2",
+ "svelte": "^5.56.8",
+ "svelte-check": "^4.7.4",
"svelte-preprocess": "^6.0.5",
"typescript": "^5.9.3",
"vite": "^7.3.6"
diff --git a/packages/svelte/tests/ContextWrapper.svelte b/packages/svelte/tests/ContextWrapper.svelte
index 61a2f6973..3fbd12311 100644
--- a/packages/svelte/tests/ContextWrapper.svelte
+++ b/packages/svelte/tests/ContextWrapper.svelte
@@ -1,5 +1,5 @@
-
+
Test
-
+
diff --git a/packages/svelte/tests/TestSlots.svelte b/packages/svelte/tests/TestSlots.svelte
index b82f27827..0e5d345d2 100644
--- a/packages/svelte/tests/TestSlots.svelte
+++ b/packages/svelte/tests/TestSlots.svelte
@@ -1,10 +1,10 @@
-
+
Test
-
+
diff --git a/packages/svelte/tests/TestSlotsTitle.svelte b/packages/svelte/tests/TestSlotsTitle.svelte
index dd6122d41..a04922d3e 100644
--- a/packages/svelte/tests/TestSlotsTitle.svelte
+++ b/packages/svelte/tests/TestSlotsTitle.svelte
@@ -1,10 +1,10 @@
-
+
Air conditioning
-
+
diff --git a/packages/svelte/tests/__snapshots__/lucide-svelte.spec.ts.snap b/packages/svelte/tests/__snapshots__/lucide-svelte.spec.ts.snap
index b06d5b54f..58f367ded 100644
--- a/packages/svelte/tests/__snapshots__/lucide-svelte.spec.ts.snap
+++ b/packages/svelte/tests/__snapshots__/lucide-svelte.spec.ts.snap
@@ -3,7 +3,7 @@
exports[`Using lucide icon components > should add a class to the element 1`] = `
@@ -59,7 +53,7 @@ exports[`Using lucide icon components > should adjust the size, stroke color and
@@ -124,27 +112,19 @@ exports[`Using lucide icon components > should not scale the strokeWidth when ab
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
- class="lucide-icon lucide lucide-smile"
+ class="lucide-icon lucide lucide-face-slightly-smiling"
>
+
+
+
+
+
+
-
-
-
-
-
-
`;
@@ -152,7 +132,7 @@ exports[`Using lucide icon components > should render an component 1`] = `
@@ -209,7 +183,7 @@ exports[`Using lucide icon components > should render an component 1`] = `
exports[`Using lucide icon components > should render an icon slot 1`] = `