From 5b56ef705da55ded94da362f88b19641a6f4afea Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 9 Dec 2025 15:46:35 +0100 Subject: [PATCH 01/19] fix(icons): changed `memory-stick` icon (#3017) * [github] Added issue template forms * [github] yaml => yml * Syntax fixes * Further syntax fixes * Sort issue templates * Update 02_bug_report.yml * Updated icons/memory-stick.svg * Update memory-stick.svg --------- Co-authored-by: Karsa Co-authored-by: Eric Fennis --- icons/memory-stick.svg | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/icons/memory-stick.svg b/icons/memory-stick.svg index a53804faf..b8ed70aa8 100644 --- a/icons/memory-stick.svg +++ b/icons/memory-stick.svg @@ -9,13 +9,15 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - - - - + + + + + + + + + + + From 83ef8fc98dd2a17d4c40ff271b1d56666da5a948 Mon Sep 17 00:00:00 2001 From: Karsa Date: Tue, 9 Dec 2025 15:47:57 +0100 Subject: [PATCH 02/19] fix(icons): changed `microchip` icon (#3018) * [github] Added issue template forms * [github] yaml => yml * Syntax fixes * Further syntax fixes * Sort issue templates * Update 02_bug_report.yml * Updated icons/microchip.svg --------- Co-authored-by: Karsa --- icons/microchip.svg | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/icons/microchip.svg b/icons/microchip.svg index 58de53c59..15b695c3c 100644 --- a/icons/microchip.svg +++ b/icons/microchip.svg @@ -9,15 +9,14 @@ stroke-linecap="round" stroke-linejoin="round" > + + + - - - - + + - - - - - + + + From 0775d8647e737a52f8648aa9f52b727582add581 Mon Sep 17 00:00:00 2001 From: Karsa Date: Wed, 10 Dec 2025 08:50:17 +0100 Subject: [PATCH 03/19] fix(site): only show search placeholder if there aren't any results --- docs/.vitepress/theme/utils/useSearchPlaceholder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/.vitepress/theme/utils/useSearchPlaceholder.ts b/docs/.vitepress/theme/utils/useSearchPlaceholder.ts index 62ffcaaa1..4e352b24d 100644 --- a/docs/.vitepress/theme/utils/useSearchPlaceholder.ts +++ b/docs/.vitepress/theme/utils/useSearchPlaceholder.ts @@ -29,7 +29,7 @@ export default function useSearchPlaceholder( } } state.value = { - isNoResults: query in BRAND_STOPWORDS || (searchResults.length === 0 && query !== ''), + isNoResults: query in BRAND_STOPWORDS && searchResults.length === 0 && query !== '', isBrand: query in BRAND_STOPWORDS, query: BRAND_STOPWORDS[query] ?? query, }; From 4dda43247168e78997c56ef531422b8f0533cf6c Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 10 Dec 2025 11:06:48 +0100 Subject: [PATCH 04/19] chore(repo): Update Node version and overal cleanup (#3861) * update ci script * Update ci workflow * Update node version --- .github/workflows/ci.yml | 36 +--- .github/workflows/version-up.sh | 284 -------------------------------- .npmrc | 1 - docs/package.json | 16 +- lint-staged.config.mjs | 4 +- package.json | 4 +- 6 files changed, 14 insertions(+), 331 deletions(-) delete mode 100755 .github/workflows/version-up.sh delete mode 100644 .npmrc diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e8388be9..b6b886e4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,11 +37,11 @@ jobs: run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT - name: Check if we can patch - run: .github/workflows/version-up.sh --minor + run: pnpm semver $LATEST_TAG -i minor - name: Create new version id: new-version - run: echo "NEW_VERSION=$(.github/workflows/version-up.sh --minor)" >> $GITHUB_OUTPUT + run: echo "NEW_VERSION=$(pnpm semver $LATEST_TAG -i minor)" >> $GITHUB_OUTPUT - name: Create change log id: change-log @@ -68,38 +68,6 @@ jobs: name: Version ${{ steps.new-version.outputs.NEW_VERSION }} generate_release_notes: true - test-semantic-release: - if: github.repository == 'lucide-icons/lucide' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - - name: Semantic Release - id: semantic - uses: cycjimmy/semantic-release-action@v4 - with: - tag_format: ${version} - branches: | - ['new-release-workflow'] - extends: | - semantic-release-monorepo - extra_plugins: | - @semantic-release/github - @semantic-release/git - @semantic-release/release-notes-generator - conventional-changelog-conventionalcommits - - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Log output - if: steps.semantic.outputs.new_release_published == 'true' - run: | - echo ${{ steps.semantic.outputs.new_release_version }} - echo ${{ steps.semantic.outputs.new_release_major_version }} - echo ${{ steps.semantic.outputs.new_release_minor_version }} - echo ${{ steps.semantic.outputs.new_release_patch_version }} - start-release: if: github.repository == 'lucide-icons/lucide' needs: create-release diff --git a/.github/workflows/version-up.sh b/.github/workflows/version-up.sh deleted file mode 100755 index 32892478e..000000000 --- a/.github/workflows/version-up.sh +++ /dev/null @@ -1,284 +0,0 @@ -#!/usr/bin/env bash -## Copyright (C) 2017, Oleksandr Kucherenko -## Last revisit: 2017-09-29 - -## get highest version tag for all branches -function highest_tag(){ - local TAG=$(git describe --tags `git rev-list --tags --max-count=1`) - echo "$TAG" -} - -## extract current branch name -function current_branch(){ - ## expected: heads/{branch_name} - ## expected: {branch_name} - local BRANCH=$(git rev-parse --abbrev-ref HEAD | cut -d"/" -f2) - echo "$BRANCH" -} - -## get latest/head commit hash number -function head_hash(){ - local COMMIT_HASH=$(git rev-parse --verify HEAD) - echo "$COMMIT_HASH" -} - -## extract tag commit hash code, tag name provided by argument -function tag_hash(){ - local TAG_HASH=$(git log -1 --format=format:"%H" $1 2>/dev/null | tail -n1) - echo "$TAG_HASH" -} - -## get latest revision number -function latest_revision(){ - local REV=$(git rev-list --count HEAD 2>/dev/null) - echo "$REV" -} - -## parse last found tag, extract it PARTS -function parse_last(){ - local position=$(($1-1)) - - # two parts found only - local SUBS=( ${PARTS[$position]//-/ } ) - #echo ${SUBS[@]}, size: ${#SUBS} - - # found NUMBER - PARTS[$position]=${SUBS[0]} - #echo ${PARTS[@]} - - # found SUFFIX - if [[ ${#SUBS} -ge 1 ]]; then - PARTS[4]=${SUBS[1],,} #lowercase - #echo ${PARTS[@]}, ${SUBS[@]} - fi -} - -## increment REVISION part, don't touch STAGE -function increment_revision(){ - PARTS[3]=$(( PARTS[3] + 1 )) - IS_DIRTY=1 -} - -## increment PATCH part, reset all other lower PARTS, don't touch STAGE -function increment_patch(){ - PARTS[2]=$(( PARTS[2] + 1 )) - PARTS[3]=0 - IS_DIRTY=1 -} - -## increment MINOR part, reset all other lower PARTS, don't touch STAGE -function increment_minor(){ - PARTS[1]=$(( PARTS[1] + 1 )) - PARTS[2]=0 - PARTS[3]=0 - IS_DIRTY=1 -} - -## increment MAJOR part, reset all other lower PARTS, don't touch STAGE -function incremet_major(){ - PARTS[0]="v$(( PARTS[0] + 1 ))" - PARTS[1]=0 - PARTS[2]=0 - PARTS[3]=0 - IS_DIRTY=1 -} - -## increment the number only of last found PART: REVISION --> PATCH --> MINOR. don't touch STAGE -function increment_last_found(){ - if [[ "${#PARTS[3]}" == 0 || "${PARTS[3]}" == "0" ]]; then - if [[ "${#PARTS[2]}" == 0 || "${PARTS[2]}" == "0" ]]; then - increment_minor - else - increment_patch - fi - else - increment_revision - fi - - # stage part is not EMPTY - if [[ "${#PARTS[4]}" != 0 ]]; then - IS_SHIFT=1 - fi -} - -## compose version from PARTS -function compose(){ - MAJOR="${PARTS[0]}" - MINOR=".${PARTS[1]}" - PATCH=".${PARTS[2]}" - REVISION=".${PARTS[3]}" - SUFFIX="-${PARTS[4]}" - - if [[ "${#PATCH}" == 1 ]]; then # if empty {PATCH} - PATCH="" - fi - - if [[ "${#REVISION}" == 1 ]]; then # if empty {REVISION} - REVISION="" - fi - - if [[ "${PARTS[3]}" == "0" ]]; then # if revision is ZERO - REVISION="" - fi - - # shrink patch and revision - if [[ -z "${REVISION// }" ]]; then - if [[ "${PARTS[2]}" == "0" ]]; then - PATCH=".0" - fi - else # revision is not EMPTY - if [[ "${#PATCH}" == 0 ]]; then - PATCH=".0" - fi - fi - - # remove suffix if we don't have a alpha/beta/rc - if [[ "${#SUFFIX}" == 1 ]]; then - SUFFIX="" - fi - - - echo "${MAJOR}${MINOR}${PATCH}${REVISION}${SUFFIX}" #full format -} - -# initial version used for repository without tags -INIT_VERSION=0.0.0.0-alpha - -# do GIT data extracting -TAG=$(highest_tag) -REVISION=$(latest_revision) -BRANCH=$(current_branch) -TAG_HASH=$(tag_hash $TAG) -HEAD_HASH=$(head_hash) - -# if tag and branch commit hashes are different, than print info about that -#echo $HEAD_HASH vs $TAG_HASH -if [[ "$@" == "" ]]; then - if [[ "$TAG_HASH" == "$HEAD_HASH" ]]; then - echo "Tag $TAG and HEAD are aligned. We will stay on the TAG version." - echo "" - NO_ARGS_VALUE='--stay' - else - PATTERN="^[0-9]+.[0-9]+(.[0-9]+)*(-(alpha|beta|rc))*$" - - if [[ "$BRANCH" =~ $PATTERN ]]; then - echo "Detected version branch '$BRANCH'. We will auto-increment the last version PART." - echo "" - NO_ARGS_VALUE='--default' - else - echo "Detected branch name '$BRANCH' than does not match version pattern. We will increase MINOR." - echo "" - NO_ARGS_VALUE='--minor' - fi - fi -fi - -# -# {MAJOR}.{MINOR}[.{PATCH}[.{REVISION}][-(.*)] -# -# Suffix: alpha, beta, rc -# No Suffix --> {NEW_VERSION}-alpha -# alpha --> beta -# beta --> rc -# rc --> {VERSION} -# -PARTS=( ${TAG//./ } ) -parse_last ${#PARTS[@]} # array size as argument -#echo ${PARTS[@]} - -# if no parameters than emulate --default parameter -if [[ "$@" == "" ]]; then - set -- $NO_ARGS_VALUE -fi - -# parse input parameters -for i in "$@" -do - key="$i" - - case $key in - -a|--alpha) # switched to ALPHA - PARTS[4]="alpha" - IS_SHIFT=1 - ;; - -b|--beta) # switched to BETA - PARTS[4]="beta" - IS_SHIFT=1 - ;; - -c|--release-candidate) # switched to RC - PARTS[4]="rc" - IS_SHIFT=1 - ;; - -r|--release) # switched to RELEASE - PARTS[4]="" - IS_SHIFT=1 - ;; - -p|--patch) # increment of PATCH - increment_patch - ;; - -e|--revision) # increment of REVISION - increment_revision - ;; - -g|--git-revision) # use git revision number as a revision part§ - PARTS[3]=$(( REVISION )) - IS_DIRTY=1 - ;; - -i|--minor) # increment of MINOR by default - increment_minor - ;; - --default) # stay on the same stage, but increment only last found PART of version code - increment_last_found - ;; - -m|--major) # increment of MAJOR - incremet_major - ;; - -s|--stay) # extract version info - IS_DIRTY=1 - NO_APPLY_MSG=1 - ;; - -t|--tag-only) # extract version info - TAG_ONLY=1 - ;; - --apply) - DO_APPLY=1 - ;; - -h|--help) - help - ;; - esac - shift -done - -# detected shift, but no increment -if [[ "$IS_SHIFT" == "1" ]]; then - # temporary disable stage shift - stage=${PARTS[4]} - PARTS[4]='' - - # detect first run on repository, INIT_VERSION was used - if [[ "$(compose)" == "0.0" ]]; then - increment_minor - fi - - PARTS[4]=$stage -fi - -# no increment applied yet and no shift of state, do minor increase -if [[ "$IS_DIRTY$IS_SHIFT" == "" ]]; then - increment_minor -fi - -compose - -# is proposed tag in conflict with any other TAG -PROPOSED_HASH=$(tag_hash $(compose)) -if [[ "${#PROPOSED_HASH}" -gt 0 && "$NO_APPLY_MSG" == "" ]]; then - echo -e "\033[31mERROR:\033[0m " - echo -e "\033[31mERROR:\033[0m Found conflict with existing tag \033[32m$(compose)\033[0m / $PROPOSED_HASH" - echo -e "\033[31mERROR:\033[0m Only manual resolving is possible now." - echo -e "\033[31mERROR:\033[0m " - echo -e "\033[31mERROR:\033[0m To Resolve try to add --revision or --patch modifier." - echo -e "\033[31mERROR:\033[0m " - echo "" - exit 1 -fi diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 3e775efb0..000000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -auto-install-peers=true diff --git a/docs/package.json b/docs/package.json index ffde218f0..feede4363 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,14 +9,14 @@ "docs:build": "pnpm run /^prebuild:.*/ && vitepress build", "docs:preview": "vitepress preview", "build:docs": "vitepress build", - "prebuild:iconNodes": "node --experimental-strip-types ./scripts/writeIconNodes.mjs", - "prebuild:metaJson": "node --experimental-strip-types ./scripts/writeIconMetaIndex.mjs", - "prebuild:releaseJson": "node --experimental-strip-types ./scripts/writeReleaseMetadata.mjs", - "prebuild:categoriesJson": "node --experimental-strip-types ./scripts/writeCategoriesMetadata.mjs", - "prebuild:relatedIcons": "node --experimental-strip-types ./scripts/writeIconRelatedIcons.mjs", - "prebuild:iconDetails": "node --experimental-strip-types ./scripts/writeIconDetails.mjs", - "prebuild:brandStopwords": "node --experimental-strip-types ./scripts/writeBrandStopwords.mjs", - "postbuild:vercelJson": "node --experimental-strip-types ./scripts/writeVercelOutput.mjs", + "prebuild:iconNodes": "node ./scripts/writeIconNodes.mjs", + "prebuild:metaJson": "node ./scripts/writeIconMetaIndex.mjs", + "prebuild:releaseJson": "node ./scripts/writeReleaseMetadata.mjs", + "prebuild:categoriesJson": "node ./scripts/writeCategoriesMetadata.mjs", + "prebuild:relatedIcons": "node ./scripts/writeIconRelatedIcons.mjs", + "prebuild:iconDetails": "node ./scripts/writeIconDetails.mjs", + "prebuild:brandStopwords": "node ./scripts/writeBrandStopwords.mjs", + "postbuild:vercelJson": "node ./scripts/writeVercelOutput.mjs", "dev": "npx nitropack dev", "prebuild:api": "npx nitropack prepare", "build:api": "npx nitropack build", diff --git a/lint-staged.config.mjs b/lint-staged.config.mjs index 7ba870a29..2b580d645 100644 --- a/lint-staged.config.mjs +++ b/lint-staged.config.mjs @@ -7,8 +7,8 @@ const filenamesToAjvOption = (filenames) => filenames.map((filename) => `-d ${fi /** @satisfies {import('lint-staged').Config} */ const config = { 'icons/*.svg': [ - 'node ./scripts/optimizeStagedSvgs.mjs', - 'node ./scripts/generateNextJSAliases.mjs', + 'node ./scripts/optimizeStagedSvgs.mts', + 'node ./scripts/generateNextJSAliases.mts', ], 'icons/*.json': (filenames) => [ `ajv --spec=draft2020 -s icon.schema.json ${filenamesToAjvOption(filenames)}`, diff --git a/package.json b/package.json index a2e8c4b43..31b44d1fe 100644 --- a/package.json +++ b/package.json @@ -73,9 +73,9 @@ "zod": "^3.25.67" }, "engines": { - "node": ">=23.0.0" + "node": ">=24.11.1" }, - "packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b", + "packageManager": "pnpm@10.24.0+sha512.01ff8ae71b4419903b65c60fb2dc9d34cf8bb6e06d03bde112ef38f7a34d6904c424ba66bea5cdcf12890230bf39f9580473140ed9c946fef328b6e5238a345a", "pnpm": { "packageExtensions": { "vue-template-compiler": { From 42dc5508dd21f5586d11d8f6e4ef7d94409fa81b Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Wed, 10 Dec 2025 11:07:50 +0100 Subject: [PATCH 05/19] fix(icons): changed `paint-bucket` icon (#3865) * Updated icons/paint-bucket.svg * Updated icons/paint-bucket.svg --- icons/paint-bucket.svg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/icons/paint-bucket.svg b/icons/paint-bucket.svg index 56967be43..d19bc7c8c 100644 --- a/icons/paint-bucket.svg +++ b/icons/paint-bucket.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + From c0ea92ebe79ad89a18098c6b90f68a07bf897d07 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Wed, 10 Dec 2025 11:08:55 +0100 Subject: [PATCH 06/19] fix(icons): changed `brush-cleaning` icon (#3863) * Updated icons/brush-cleaning.svg * Updated icons/brush-cleaning.json --- icons/brush-cleaning.json | 3 ++- icons/brush-cleaning.svg | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/icons/brush-cleaning.json b/icons/brush-cleaning.json index 287fbcd00..8d03de6a7 100644 --- a/icons/brush-cleaning.json +++ b/icons/brush-cleaning.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "karsa-mistmere" + "karsa-mistmere", + "jguddas" ], "tags": [ "cleaning", diff --git a/icons/brush-cleaning.svg b/icons/brush-cleaning.svg index 4bd074021..688852625 100644 --- a/icons/brush-cleaning.svg +++ b/icons/brush-cleaning.svg @@ -10,7 +10,7 @@ stroke-linejoin="round" > - - + + From 6d4c91707d3dfb032e36fe602e5477e62793ba9b Mon Sep 17 00:00:00 2001 From: Ian Jones Date: Wed, 10 Dec 2025 03:09:27 -0700 Subject: [PATCH 07/19] fix(icons): Swap `thumbs-up` `thumbs-down` paths to fix fill issue (#3873) * Swap thumbs-up.svg paths * Swap thumbs-down.svg paths --- icons/thumbs-down.svg | 2 +- icons/thumbs-up.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/icons/thumbs-down.svg b/icons/thumbs-down.svg index 1d3ee758f..870a96acc 100644 --- a/icons/thumbs-down.svg +++ b/icons/thumbs-down.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/thumbs-up.svg b/icons/thumbs-up.svg index cc536c03c..573950cd8 100644 --- a/icons/thumbs-up.svg +++ b/icons/thumbs-up.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + From e7c075785f694e7343d123429185e471b52f2ba5 Mon Sep 17 00:00:00 2001 From: Karsa Date: Wed, 10 Dec 2025 11:10:26 +0100 Subject: [PATCH 08/19] fix(icons): changed `tickets` icon (#3859) * Updated icons/tickets.svg * Updated icons/tickets.json * Updated icons/tickets-plane.svg * Updated icons/tickets-plane.json --- icons/tickets-plane.json | 3 ++- icons/tickets-plane.svg | 2 +- icons/tickets.json | 3 ++- icons/tickets.svg | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/icons/tickets-plane.json b/icons/tickets-plane.json index 6de6b91e3..986c13193 100644 --- a/icons/tickets-plane.json +++ b/icons/tickets-plane.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "jguddas" + "jguddas", + "karsa-mistmere" ], "tags": [ "plane", diff --git a/icons/tickets-plane.svg b/icons/tickets-plane.svg index 24526aed9..5a6445d28 100644 --- a/icons/tickets-plane.svg +++ b/icons/tickets-plane.svg @@ -11,7 +11,7 @@ > - + diff --git a/icons/tickets.json b/icons/tickets.json index 4f129c6d1..69e9b82f2 100644 --- a/icons/tickets.json +++ b/icons/tickets.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "jguddas" + "jguddas", + "karsa-mistmere" ], "tags": [ "trip", diff --git a/icons/tickets.svg b/icons/tickets.svg index 4be5cf35d..f1dcd1171 100644 --- a/icons/tickets.svg +++ b/icons/tickets.svg @@ -9,7 +9,7 @@ stroke-linecap="round" stroke-linejoin="round" > - + From 790d30dbfa6ed30dbe02e0f73fb3adac591b917f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Isidoro=20Garc=C3=ADa=20Cifuentes?= Date: Wed, 10 Dec 2025 11:13:25 +0100 Subject: [PATCH 09/19] feat(icons): added `layers-plus` icon (#3367) * Added icons/layers-plus.svg * Added icons/layers-plus.json * Update layers-plus.json fix: updated contributors to reflect actual author * fix(icon): update layers-plus icon to follow size and spacing guidelines * fix(icon): adjust layers-plus plus sign alignment and slope * fix(icon): apply optimized version from reviewer to align on grid and spacing * chore: add karsa-mistmere as contributor --------- Co-authored-by: Eric Fennis --- icons/layers-plus.json | 22 ++++++++++++++++++++++ icons/layers-plus.svg | 17 +++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 icons/layers-plus.json create mode 100644 icons/layers-plus.svg diff --git a/icons/layers-plus.json b/icons/layers-plus.json new file mode 100644 index 000000000..0cce049dc --- /dev/null +++ b/icons/layers-plus.json @@ -0,0 +1,22 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "juanisidoro", + "karsa-mistmere" + ], + "tags": [ + "stack", + "layers", + "add", + "new", + "increase", + "create", + "positive", + "copy", + "upgrade" + ], + "categories": [ + "design", + "layout" + ] +} diff --git a/icons/layers-plus.svg b/icons/layers-plus.svg new file mode 100644 index 000000000..55df36544 --- /dev/null +++ b/icons/layers-plus.svg @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file From fd31cb44a82abdd59fd5153af605f9d1e3484d0a Mon Sep 17 00:00:00 2001 From: Sage Fennel Date: Wed, 10 Dec 2025 02:18:57 -0800 Subject: [PATCH 10/19] docs(dev): Fix code sample for vanilla JS (#3836) * Fix code sample for vanilla JS The .append method of elements takes plain text, not HTML. This updates the code to use .insertAdjacentHTML instead. * Update createLabCodeExamples.ts * fix(site): update createCodeExamples.ts vanilla JS code example * Update createLabCodeExamples.ts * Update createCodeExamples.ts * Update createCodeExamples.ts --------- Co-authored-by: Karsa --- .../lib/codeExamples/createCodeExamples.ts | 14 ++++++++++---- .../lib/codeExamples/createLabCodeExamples.ts | 8 +++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/.vitepress/lib/codeExamples/createCodeExamples.ts b/docs/.vitepress/lib/codeExamples/createCodeExamples.ts index b54abc1bc..eb6313431 100644 --- a/docs/.vitepress/lib/codeExamples/createCodeExamples.ts +++ b/docs/.vitepress/lib/codeExamples/createCodeExamples.ts @@ -9,14 +9,20 @@ type CodeExampleType = { const getIconCodes = (): CodeExampleType => { return [ { - language: 'js', + language: 'html', title: 'Vanilla', code: `\ -import { createIcons, icons } from 'lucide'; + -document.body.append('');\ +\ `, }, { diff --git a/docs/.vitepress/lib/codeExamples/createLabCodeExamples.ts b/docs/.vitepress/lib/codeExamples/createLabCodeExamples.ts index a977cde09..a38772523 100644 --- a/docs/.vitepress/lib/codeExamples/createLabCodeExamples.ts +++ b/docs/.vitepress/lib/codeExamples/createLabCodeExamples.ts @@ -10,10 +10,11 @@ type CodeExampleType = { const getIconCodes = (): CodeExampleType => { return [ { - language: 'js', + language: 'html', title: 'Vanilla', code: `\ -import { createIcons, icons } from 'lucide'; + -document.body.append('');\ +\ `, }, { From 330f4b37db05293dfe28e69a35f4dbc198c9775b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20=C5=BBagiel?= <157885785+Veatec22@users.noreply.github.com> Date: Wed, 10 Dec 2025 11:33:12 +0100 Subject: [PATCH 11/19] feat(icons): add `search-error` icon (#3292) * feat(icons): add `search-error` icon * Update icons/search-error.svg Co-authored-by: Jakob Guddas * Update icons/search-error.json Co-authored-by: Jakob Guddas * chore(icons): rename `search-error` to `search-alert` * Fix indentation contributors in search-alert.json * Format code --------- Co-authored-by: Jakob Guddas Co-authored-by: Eric Fennis --- icons/search-alert.json | 25 +++++++++++++++++++++++++ icons/search-alert.svg | 16 ++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 icons/search-alert.json create mode 100644 icons/search-alert.svg diff --git a/icons/search-alert.json b/icons/search-alert.json new file mode 100644 index 000000000..c5b66c50d --- /dev/null +++ b/icons/search-alert.json @@ -0,0 +1,25 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "ericfennis", + "jguddas", + "Veatec22" + ], + "tags": [ + "find", + "scan", + "magnifier", + "magnifying glass", + "stop", + "warning", + "alert", + "error", + "anomaly", + "lens" + ], + "categories": [ + "text", + "social" + ] +} diff --git a/icons/search-alert.svg b/icons/search-alert.svg new file mode 100644 index 000000000..310cb5c47 --- /dev/null +++ b/icons/search-alert.svg @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file From 4cef8283a7935a44be0c545b41a68db5b227fd49 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 10 Dec 2025 12:49:24 +0100 Subject: [PATCH 12/19] ci(ci.yml): Fix LATEST_TAG assignment --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b6b886e4a..672818bf3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - name: Get latest tag id: latest-tag - run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT + run: LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`) - name: Check if we can patch run: pnpm semver $LATEST_TAG -i minor From e75fbcdec4b6c9b40415dc895b1f4d83d825b4be Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 10 Dec 2025 12:49:56 +0100 Subject: [PATCH 13/19] feat(icons): Add `cloud-sync` and `cloud-backup` (#3466) * Add icons * Update cloud-backup.json * Update cloud-sync.json * Format code --------- Co-authored-by: Karsa --- icons/cloud-backup.json | 33 +++++++++++++++++++++++++++++++++ icons/cloud-backup.svg | 15 +++++++++++++++ icons/cloud-sync.json | 27 +++++++++++++++++++++++++++ icons/cloud-sync.svg | 17 +++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 icons/cloud-backup.json create mode 100644 icons/cloud-backup.svg create mode 100644 icons/cloud-sync.json create mode 100644 icons/cloud-sync.svg diff --git a/icons/cloud-backup.json b/icons/cloud-backup.json new file mode 100644 index 000000000..c2a5aca6c --- /dev/null +++ b/icons/cloud-backup.json @@ -0,0 +1,33 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ericfennis", + "jguddas", + "danielbayley", + "karsa-mistmere" + ], + "tags": [ + "storage", + "memory", + "bytes", + "servers", + "backup", + "timemachine", + "rotate", + "synchronize", + "synchronise", + "refresh", + "reconnect", + "transfer", + "data", + "security", + "upload", + "save", + "remote", + "safety" + ], + "categories": [ + "arrows", + "files" + ] +} diff --git a/icons/cloud-backup.svg b/icons/cloud-backup.svg new file mode 100644 index 000000000..0cf21c69a --- /dev/null +++ b/icons/cloud-backup.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/icons/cloud-sync.json b/icons/cloud-sync.json new file mode 100644 index 000000000..c9722e291 --- /dev/null +++ b/icons/cloud-sync.json @@ -0,0 +1,27 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "karsa-mistmere" + ], + "tags": [ + "synchronize", + "synchronise", + "refresh", + "reconnect", + "transfer", + "backup", + "storage", + "upload", + "download", + "connection", + "network", + "data" + ], + "categories": [ + "arrows", + "files" + ] +} diff --git a/icons/cloud-sync.svg b/icons/cloud-sync.svg new file mode 100644 index 000000000..b9333986a --- /dev/null +++ b/icons/cloud-sync.svg @@ -0,0 +1,17 @@ + + + + + + + From 92bc88b001eaa92c7bcb3005b71010aed7b450a5 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 10 Dec 2025 12:58:06 +0100 Subject: [PATCH 14/19] ci(ci.yml): Fix latest tag from steps and remove superfluous steps --- .github/workflows/ci.yml | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 672818bf3..beda0c4f6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,9 @@ jobs: steps: - uses: actions/checkout@v6 + with: + fetch-tags: true + - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: @@ -29,32 +32,16 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Fetch tags - run: git fetch --all --tags - - name: Get latest tag id: latest-tag - run: LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`) + run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT - name: Check if we can patch - run: pnpm semver $LATEST_TAG -i minor + run: pnpm semver ${{ steps.latest-tag.outputs.LATEST_TAG }} -i minor - name: Create new version id: new-version - run: echo "NEW_VERSION=$(pnpm semver $LATEST_TAG -i minor)" >> $GITHUB_OUTPUT - - - name: Create change log - id: change-log - run: | - CHANGE_LOG=$(pnpm run generate:changelog --old-tag=${{ steps.latest-tag.outputs.LATEST_TAG }}) - CHANGE_LOG=$(tail -n +5 <<< $CHANGE_LOG) - echo $CHANGE_LOG - EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) - echo "CHANGE_LOG<<$EOF" >> $GITHUB_OUTPUT - echo "$CHANGE_LOG" >> $GITHUB_OUTPUT - echo "$EOF" >> $GITHUB_OUTPUT - env: - GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }} + run: echo "NEW_VERSION=$(pnpm semver ${{ steps.latest-tag.outputs.LATEST_TAG }} -i minor)" >> $GITHUB_OUTPUT - name: Check output run: | From 7866a5a5c667c637b76b8e80f755a2e394dacd7c Mon Sep 17 00:00:00 2001 From: Nathan De Pachtere Date: Wed, 10 Dec 2025 12:58:51 +0100 Subject: [PATCH 15/19] feat(icons): added `circle-pile` icon (#3681) * Added icons/circle-pile.svg * Added icons/circle-pile.json * Add tags * Reduce high --- icons/circle-pile.json | 29 +++++++++++++++++++++++++++++ icons/circle-pile.svg | 9 +++++++++ 2 files changed, 38 insertions(+) create mode 100644 icons/circle-pile.json create mode 100644 icons/circle-pile.svg diff --git a/icons/circle-pile.json b/icons/circle-pile.json new file mode 100644 index 000000000..c9788db85 --- /dev/null +++ b/icons/circle-pile.json @@ -0,0 +1,29 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "nathan-de-pachtere" + ], + "tags": [ + "off", + "zero", + "record", + "shape", + "circle-pile", + "circle", + "pile", + "stack", + "layer", + "structure", + "form", + "group", + "collection", + "stock", + "inventory", + "materials", + "warehouse" + ], + "categories": [ + "shapes" + ] +} diff --git a/icons/circle-pile.svg b/icons/circle-pile.svg new file mode 100644 index 000000000..a9e3ddf88 --- /dev/null +++ b/icons/circle-pile.svg @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file From c47ae67a3bf5e4acf4b0ade20b82deac962c6c59 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 10 Dec 2025 13:05:34 +0100 Subject: [PATCH 16/19] ci(ci.yml): Apply env variables --- .github/workflows/ci.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index beda0c4f6..54d1f9e34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,16 +32,27 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Fetch tags + run: git fetch --all --tags + - name: Get latest tag id: latest-tag run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT + - name: Log latest tag + run: echo '${{ steps.latest-tag.outputs.LATEST_TAG }}' + - name: Check if we can patch - run: pnpm semver ${{ steps.latest-tag.outputs.LATEST_TAG }} -i minor + run: pnpm semver $LATEST_TAG -i minor + env: + LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} + - name: Create new version id: new-version - run: echo "NEW_VERSION=$(pnpm semver ${{ steps.latest-tag.outputs.LATEST_TAG }} -i minor)" >> $GITHUB_OUTPUT + run: echo "NEW_VERSION=$(pnpm semver $LATEST_TAG -i minor)" >> $GITHUB_OUTPUT + env: + LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} - name: Check output run: | From b3c80d027a7a8dfabed560a36538a04b0dba5616 Mon Sep 17 00:00:00 2001 From: Peter Uithoven Date: Wed, 10 Dec 2025 13:07:01 +0100 Subject: [PATCH 17/19] feat(icons): added `balloon` icon (#2519) * Added icons/balloon.svg * Added icons/balloon.json * Updated icons/balloon.svg * Optimize paths * Update tags --------- Co-authored-by: peteruithoven Co-authored-by: Eric Fennis --- icons/balloon.json | 22 ++++++++++++++++++++++ icons/balloon.svg | 15 +++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 icons/balloon.json create mode 100644 icons/balloon.svg diff --git a/icons/balloon.json b/icons/balloon.json new file mode 100644 index 000000000..8988c217d --- /dev/null +++ b/icons/balloon.json @@ -0,0 +1,22 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "peteruithoven" + ], + "tags": [ + "party", + "festival", + "congratulations", + "celebration", + "decoration", + "colorful", + "floating", + "fun", + "birthday", + "event", + "entertainment" + ], + "categories": [ + "emoji" + ] +} diff --git a/icons/balloon.svg b/icons/balloon.svg new file mode 100644 index 000000000..1911469eb --- /dev/null +++ b/icons/balloon.svg @@ -0,0 +1,15 @@ + + + + + From c2b059fb6015470130fbbcc1c9d404eb022ac2f2 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 10 Dec 2025 13:12:55 +0100 Subject: [PATCH 18/19] ci(release.yml): Remove deprecated token assignment --- .github/workflows/ci.yml | 4 ---- .github/workflows/release.yml | 12 ++++-------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54d1f9e34..638d7cc2d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,9 +20,6 @@ jobs: steps: - uses: actions/checkout@v6 - with: - fetch-tags: true - - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: @@ -47,7 +44,6 @@ jobs: env: LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} - - name: Create new version id: new-version run: echo "NEW_VERSION=$(pnpm semver $LATEST_TAG -i minor)" >> $GITHUB_OUTPUT diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 065c82710..0b146f718 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ on: permissions: id-token: write # Required for OIDC - contents: read + contents: write jobs: pre-release: @@ -72,9 +72,6 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Set Auth Token - run: npm config set //registry.npmjs.org/:_authToken ${{ inputs.NPM_TOKEN || secrets.NPM_TOKEN }} - - name: Set new version run: pnpm --filter ${{ matrix.package }} version --new-version ${{ needs.pre-release.outputs.VERSION }} --no-git-tag-version @@ -109,9 +106,6 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Set Auth Token - run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }} - - name: Set new version run: pnpm --filter lucide-static version --new-version ${{ needs.pre-release.outputs.VERSION }} --no-git-tag-version @@ -157,7 +151,9 @@ jobs: if: github.repository == 'lucide-icons/lucide' runs-on: ubuntu-latest needs: [pre-release, lucide-font] - + permissions: + id-token: write # Required for OIDC + contents: write steps: - uses: actions/checkout@v6 - uses: actions/download-artifact@v4 From 0f732b411d83ae685febec7bacd8264a65412643 Mon Sep 17 00:00:00 2001 From: Jamie Law Date: Wed, 10 Dec 2025 12:56:10 +0000 Subject: [PATCH 19/19] feat(icons): added `hd` icon (#2958) * Add `hd` icon * Update hd.svg * Update hd.json --------- Co-authored-by: Eric Fennis --- icons/hd.json | 21 +++++++++++++++++++++ icons/hd.svg | 17 +++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 icons/hd.json create mode 100644 icons/hd.svg diff --git a/icons/hd.json b/icons/hd.json new file mode 100644 index 000000000..35628f0c3 --- /dev/null +++ b/icons/hd.json @@ -0,0 +1,21 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ahtohbi4", + "jamiemlaw", + "karsa-mistmere", + "jguddas" + ], + "tags": [ + "tv", + "resolution", + "video", + "high definition", + "720p", + "1080p" + ], + "categories": [ + "devices", + "multimedia" + ] +} diff --git a/icons/hd.svg b/icons/hd.svg new file mode 100644 index 000000000..dd1d21367 --- /dev/null +++ b/icons/hd.svg @@ -0,0 +1,17 @@ + + + + + + +