diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8e8388be9..638d7cc2d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -36,25 +36,19 @@ jobs:
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: .github/workflows/version-up.sh --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=$(.github/workflows/version-up.sh --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
+ run: echo "NEW_VERSION=$(pnpm semver $LATEST_TAG -i minor)" >> $GITHUB_OUTPUT
env:
- GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
+ LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }}
- name: Check output
run: |
@@ -68,38 +62,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/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
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/.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('');\
+\
`,
},
{
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,
};
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/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 @@
+
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"
>
-
-
+
+
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
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 @@
+
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 @@
+
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
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"
>
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
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"
>
+
+
+
-
-
-
-
+
+
-
-
-
-
-
+
+
+
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"
>
-
-
-
-
+
+
+
+
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
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"
>
-
+
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"
>
-
+
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": {