diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 638d7cc2d..75473ae2c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,18 +7,24 @@ on: paths: - icons/**/*.svg + workflow_dispatch: + inputs: + version: + description: Version + required: true + permissions: id-token: write # Required for OIDC contents: write jobs: create-release: - if: github.repository == 'lucide-icons/lucide' && startsWith(github.event.head_commit.message, 'feat(icons)') + if: github.repository == 'lucide-icons/lucide' && startsWith(github.event.head_commit.message, 'feat(icons)') && github.event_name != 'workflow_dispatch' runs-on: ubuntu-latest outputs: VERSION: ${{ steps.new-version.outputs.NEW_VERSION }} - steps: + - uses: actions/checkout@v6 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 @@ -69,3 +75,10 @@ jobs: secrets: inherit with: version: ${{ needs.create-release.outputs.VERSION }} + + dispatch-release: + if: github.event_name == 'workflow_dispatch' + uses: './.github/workflows/release.yml' + secrets: inherit + with: + version: ${{ inputs.version }} diff --git a/.github/workflows/lucide-svelte-5.yml b/.github/workflows/lucide-svelte-5.yml index 7912be539..84f3a415f 100644 --- a/.github/workflows/lucide-svelte-5.yml +++ b/.github/workflows/lucide-svelte-5.yml @@ -44,3 +44,19 @@ jobs: - name: Test run: pnpm --filter @lucide/svelte test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v6 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Test + run: pnpm --filter @lucide/svelte typecheck diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f6e76ced7..a5c71e69d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,12 +12,6 @@ on: description: Version type: string - workflow_dispatch: - inputs: - version: - description: Version - required: true - permissions: id-token: write # Required for OIDC contents: write diff --git a/docs/.vitepress/api/icons/[iconName].get.ts b/docs/.vitepress/api/icons/[iconName].get.ts index e2d2091bb..733eeb5ea 100644 --- a/docs/.vitepress/api/icons/[iconName].get.ts +++ b/docs/.vitepress/api/icons/[iconName].get.ts @@ -22,6 +22,7 @@ export default eventHandler((event) => { const height = getQuery(event).height || undefined; const color = getQuery(event).color || undefined; const strokeWidth = getQuery(event).strokeWidth || undefined; + const background = getQuery(event).background || undefined; const LucideIcon = createLucideIcon(params.iconName, iconNode); @@ -32,6 +33,7 @@ export default eventHandler((event) => { height, color: color ? `#${color}` : undefined, strokeWidth, + style: background ? { background } : undefined, }), ), ).toString('utf8'); diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 6b5cbfa32..f6dc9a23e 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -6,6 +6,7 @@ import snackPlayer from './plugins/snackPlayer'; import sandpackPlugin from './plugins/sandpack'; import { readFile } from 'node:fs/promises'; import { resourcesSidebar } from './sidebar/resources'; +import getStructuredData from './getStructuredData'; const defaultSandpackCSS = await readFile( fileURLToPath(new URL('./theme/sandpack-default.css', import.meta.url)), @@ -176,8 +177,36 @@ export default defineConfig({ }, ], ], + async transformPageData(pageData) { + if ( + pageData.relativePath.startsWith('icons/') && + !pageData.relativePath.startsWith('icons/lab/') && + pageData.params?.name + ) { + const iconName = pageData.params.name; + pageData.title = `${iconName} icon details`; + + const taggedAs = pageData.params?.tags?.length + ? `Tagged as: ${pageData.params.tags.join(', ')}.` + : ''; + const categorizedIn = pageData.params?.category?.length + ? `Categorized in: ${pageData.params.category.join(', ')}.` + : ''; + + pageData.description = + `Details and related icons for ${iconName} icon. ${taggedAs} ${categorizedIn}`.trim(); + + const structuredData = await getStructuredData(iconName, pageData); + + pageData.frontmatter.head ??= []; + pageData.frontmatter.head.push([ + 'script', + { type: 'application/ld+json' }, + JSON.stringify(structuredData), + ]); + } + }, themeConfig: { - // https://vitepress.dev/reference/default-theme-config logo: { light: '/logo.light.svg', dark: '/logo.dark.svg', diff --git a/docs/.vitepress/getStructuredData.ts b/docs/.vitepress/getStructuredData.ts new file mode 100644 index 000000000..2ac47df1e --- /dev/null +++ b/docs/.vitepress/getStructuredData.ts @@ -0,0 +1,46 @@ +import { PageData } from 'vitepress'; + +export default async function getStructuredData(iconName: string, pageData: PageData) { + const url = `https://lucide.dev/icons/${iconName}`; + + return { + '@context': 'https://schema.org', + '@type': 'WebPage', + '@id': url, + name: pageData.title, + description: pageData.description, + url, + inLanguage: 'en', + isPartOf: { + '@type': 'WebSite', + name: 'Lucide Icons', + url: 'https://lucide.dev', + }, + breadcrumb: { + '@type': 'BreadcrumbList', + itemListElement: [ + { '@type': 'ListItem', position: 1, name: 'Icons', item: 'https://lucide.dev/icons' }, + { '@type': 'ListItem', position: 2, name: iconName, item: url }, + ], + }, + mainEntity: { + '@type': 'ImageObject', + '@id': `${url}#icon`, + name: iconName, + // TODO: Add support for description extraction from icon metadata + // description: 'An ...SVG icon from the Lucide icon set.', + contentUrl: `https://lucide.dev/api/icons/${iconName}}?width=24&height=24&background=white`, + thumbnailUrl: `https://lucide.dev/api/icons/${iconName}}?width=256&height=256&background=white`, + encodingFormat: 'image/svg+xml', + keywords: pageData.params?.tags, + width: 24, + height: 24, + creator: { + '@type': 'Organization', + name: 'Lucide Icons', + }, + datePublished: pageData?.params?.createdRelease?.date, + dateModified: pageData?.params?.changedRelease?.date, + }, + }; +} diff --git a/docs/icons/categories.md b/docs/icons/categories.md index 04c507358..2dc1a9d44 100644 --- a/docs/icons/categories.md +++ b/docs/icons/categories.md @@ -1,5 +1,6 @@ --- title: Categories +description: Explore Lucide icons organized into various categories for easier browsing. layout: page outline: 2 outlineTitle: Categories diff --git a/docs/icons/index.md b/docs/icons/index.md index c5df9e1b9..9da20410b 100644 --- a/docs/icons/index.md +++ b/docs/icons/index.md @@ -1,5 +1,6 @@ --- title: Icons +description: Browse all Lucide icons. layout: page outline: 2 outlineTitle: Categories diff --git a/docs/license.md b/docs/license.md index c7b1d66c7..ee82f244f 100644 --- a/docs/license.md +++ b/docs/license.md @@ -1,5 +1,6 @@ --- title: License +description: Review the licensing terms for using Lucide icons and resources. aside: false editLink: false --- diff --git a/docs/packages.md b/docs/packages.md index 4e466cae6..6dd9e22ed 100644 --- a/docs/packages.md +++ b/docs/packages.md @@ -1,5 +1,6 @@ --- title: Packages +description: Discover the various packages available in the Lucide ecosystem. layout: page outline: 2 outlineTitle: Packages diff --git a/icons/badge-check.svg b/icons/badge-check.svg old mode 100755 new mode 100644 diff --git a/icons/ban.svg b/icons/ban.svg index e15bd0621..301db8040 100644 --- a/icons/ban.svg +++ b/icons/ban.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/bandage.json b/icons/bandage.json index a3d1fa8e7..59168c00b 100644 --- a/icons/bandage.json +++ b/icons/bandage.json @@ -2,7 +2,8 @@ "$schema": "../icon.schema.json", "contributors": [ "karsa-mistmere", - "jamiemlaw" + "jamiemlaw", + "jguddas" ], "tags": [ "plaster", diff --git a/icons/bandage.svg b/icons/bandage.svg index ebd1c3bc3..8241041a5 100644 --- a/icons/bandage.svg +++ b/icons/bandage.svg @@ -13,7 +13,7 @@ - + diff --git a/icons/bell-dot.json b/icons/bell-dot.json index 08fc8ceec..19f1f6296 100644 --- a/icons/bell-dot.json +++ b/icons/bell-dot.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "danielbayley" + "danielbayley", + "jguddas" ], "tags": [ "alarm", diff --git a/icons/bell-dot.svg b/icons/bell-dot.svg index d554eda48..b9b640db7 100644 --- a/icons/bell-dot.svg +++ b/icons/bell-dot.svg @@ -10,6 +10,6 @@ stroke-linejoin="round" > - - + + diff --git a/icons/book-key.svg b/icons/book-key.svg index 1ce8c3cbe..ec89fee38 100644 --- a/icons/book-key.svg +++ b/icons/book-key.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - + + + + + diff --git a/icons/bug-off.json b/icons/bug-off.json index 04cd93124..eac570e3b 100644 --- a/icons/bug-off.json +++ b/icons/bug-off.json @@ -2,7 +2,8 @@ "$schema": "../icon.schema.json", "contributors": [ "danielbayley", - "jamiemlaw" + "jamiemlaw", + "jguddas" ], "tags": [ "issue", diff --git a/icons/bug-off.svg b/icons/bug-off.svg index 5244cf566..a634f9edb 100644 --- a/icons/bug-off.svg +++ b/icons/bug-off.svg @@ -10,13 +10,15 @@ stroke-linejoin="round" > + - - + - + + - + + diff --git a/icons/circle-divide.svg b/icons/circle-divide.svg index be453cf11..039d7e1a6 100644 --- a/icons/circle-divide.svg +++ b/icons/circle-divide.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > + - diff --git a/icons/circle-equal.svg b/icons/circle-equal.svg index 5dcb6d36f..eb36d38ba 100644 --- a/icons/circle-equal.svg +++ b/icons/circle-equal.svg @@ -9,7 +9,7 @@ stroke-linecap="round" stroke-linejoin="round" > + - diff --git a/icons/circle-pound-sterling.svg b/icons/circle-pound-sterling.svg index 0be081e6a..f8e9f45db 100644 --- a/icons/circle-pound-sterling.svg +++ b/icons/circle-pound-sterling.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > + - diff --git a/icons/circle-power.svg b/icons/circle-power.svg index 018b7cbdc..071038ce6 100644 --- a/icons/circle-power.svg +++ b/icons/circle-power.svg @@ -9,7 +9,7 @@ stroke-linecap="round" stroke-linejoin="round" > + - diff --git a/icons/circle-slash-2.svg b/icons/circle-slash-2.svg index 9cf826ec7..fc6a0465c 100644 --- a/icons/circle-slash-2.svg +++ b/icons/circle-slash-2.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/circle-star.svg b/icons/circle-star.svg index b688fdeb5..4699fa0bd 100644 --- a/icons/circle-star.svg +++ b/icons/circle-star.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clapperboard.json b/icons/clapperboard.json index c02882b23..8463d5a10 100644 --- a/icons/clapperboard.json +++ b/icons/clapperboard.json @@ -3,7 +3,8 @@ "contributors": [ "it-is-not", "ericfennis", - "danielbayley" + "danielbayley", + "torfmuer" ], "tags": [ "movie", diff --git a/icons/clapperboard.svg b/icons/clapperboard.svg index 01153e040..99c818ee3 100644 --- a/icons/clapperboard.svg +++ b/icons/clapperboard.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/clipboard-pen.json b/icons/clipboard-pen.json index bd4f2e2c8..da8b00055 100644 --- a/icons/clipboard-pen.json +++ b/icons/clipboard-pen.json @@ -2,7 +2,8 @@ "$schema": "../icon.schema.json", "contributors": [ "karsa-mistmere", - "ericfennis" + "ericfennis", + "Spleefies" ], "tags": [ "paste", diff --git a/icons/clipboard-pen.svg b/icons/clipboard-pen.svg index ad20a0e5c..2b554de31 100644 --- a/icons/clipboard-pen.svg +++ b/icons/clipboard-pen.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/clock-1.svg b/icons/clock-1.svg index 1b5d87409..982fe53c1 100644 --- a/icons/clock-1.svg +++ b/icons/clock-1.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-10.svg b/icons/clock-10.svg index ba987de65..f2b739e0c 100644 --- a/icons/clock-10.svg +++ b/icons/clock-10.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-11.svg b/icons/clock-11.svg index a5574ad10..466132854 100644 --- a/icons/clock-11.svg +++ b/icons/clock-11.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-12.svg b/icons/clock-12.svg index db5117649..155381202 100644 --- a/icons/clock-12.svg +++ b/icons/clock-12.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-2.svg b/icons/clock-2.svg index 0dc18abed..db1c444a4 100644 --- a/icons/clock-2.svg +++ b/icons/clock-2.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-3.svg b/icons/clock-3.svg index 3f7ff215c..ae9b437bc 100644 --- a/icons/clock-3.svg +++ b/icons/clock-3.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-4.svg b/icons/clock-4.svg index 7acbafe10..b6ae2834e 100644 --- a/icons/clock-4.svg +++ b/icons/clock-4.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-5.svg b/icons/clock-5.svg index 00f84b907..cd66bf9ea 100644 --- a/icons/clock-5.svg +++ b/icons/clock-5.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-6.svg b/icons/clock-6.svg index 47b6b4025..bf1300eac 100644 --- a/icons/clock-6.svg +++ b/icons/clock-6.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-7.svg b/icons/clock-7.svg index e03255e3b..3bc34158b 100644 --- a/icons/clock-7.svg +++ b/icons/clock-7.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-8.svg b/icons/clock-8.svg index df4dda1fe..2a860f9aa 100644 --- a/icons/clock-8.svg +++ b/icons/clock-8.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock-9.svg b/icons/clock-9.svg index 756fbe5bc..c968e9cfc 100644 --- a/icons/clock-9.svg +++ b/icons/clock-9.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/clock.svg b/icons/clock.svg index 7acbafe10..b6ae2834e 100644 --- a/icons/clock.svg +++ b/icons/clock.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/cloud-alert.json b/icons/cloud-alert.json index 19b6c5931..482ae510e 100644 --- a/icons/cloud-alert.json +++ b/icons/cloud-alert.json @@ -5,7 +5,8 @@ "csandman", "ericfennis", "karsa-mistmere", - "lscheibel" + "lscheibel", + "jguddas" ], "tags": [ "weather", diff --git a/icons/cloud-alert.svg b/icons/cloud-alert.svg index 53fc4f4a7..c27377f11 100644 --- a/icons/cloud-alert.svg +++ b/icons/cloud-alert.svg @@ -11,5 +11,5 @@ > - + diff --git a/icons/cloud-check.svg b/icons/cloud-check.svg index 9c4734c44..636242219 100644 --- a/icons/cloud-check.svg +++ b/icons/cloud-check.svg @@ -10,5 +10,5 @@ stroke-linejoin="round" > - + diff --git a/icons/coins.json b/icons/coins.json index f15a7734e..749a19206 100644 --- a/icons/coins.json +++ b/icons/coins.json @@ -3,7 +3,8 @@ "contributors": [ "lscheibel", "ericfennis", - "karsa-mistmere" + "karsa-mistmere", + "jguddas" ], "tags": [ "money", diff --git a/icons/coins.svg b/icons/coins.svg index 063bdb2f3..60451a862 100644 --- a/icons/coins.svg +++ b/icons/coins.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/compass.svg b/icons/compass.svg index 25bf214f5..1a4e8c7dc 100644 --- a/icons/compass.svg +++ b/icons/compass.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/database-search.json b/icons/database-search.json new file mode 100644 index 000000000..89d9b769e --- /dev/null +++ b/icons/database-search.json @@ -0,0 +1,21 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "jguddas", + "Spleefies" + ], + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers" + ], + "categories": [ + "devices", + "development" + ] +} diff --git a/icons/database-search.svg b/icons/database-search.svg new file mode 100644 index 000000000..8ced5142d --- /dev/null +++ b/icons/database-search.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/icons/file-cog.svg b/icons/file-cog.svg index cb0e86dea..06e0aa2f8 100644 --- a/icons/file-cog.svg +++ b/icons/file-cog.svg @@ -9,9 +9,10 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + + diff --git a/icons/file-key.svg b/icons/file-key.svg index ee38eaee5..e2bea1b57 100644 --- a/icons/file-key.svg +++ b/icons/file-key.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/file-pen-line.svg b/icons/file-pen-line.svg index f51c4d0c8..7e79f35cb 100644 --- a/icons/file-pen-line.svg +++ b/icons/file-pen-line.svg @@ -9,7 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + + diff --git a/icons/folder-key.svg b/icons/folder-key.svg index 739932dfd..5983e4a6f 100644 --- a/icons/folder-key.svg +++ b/icons/folder-key.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/forklift.json b/icons/forklift.json index 8946133bd..ed3029b46 100644 --- a/icons/forklift.json +++ b/icons/forklift.json @@ -1,9 +1,18 @@ { "$schema": "../icon.schema.json", "contributors": [ - "ericfennis" + "ericfennis", + "jguddas" ], "tags": [ + "machinery", + "industrial", + "warehouse", + "lifting", + "storage", + "equipment", + "heavy-duty", + "moving", "vehicle", "transport", "logistics" diff --git a/icons/forklift.svg b/icons/forklift.svg index 1e9bb7192..2fdb6bd51 100644 --- a/icons/forklift.svg +++ b/icons/forklift.svg @@ -10,7 +10,10 @@ stroke-linejoin="round" > + + + + - diff --git a/icons/gift.json b/icons/gift.json index 66a767a23..52f42102c 100644 --- a/icons/gift.json +++ b/icons/gift.json @@ -4,7 +4,8 @@ "colebemis", "csandman", "ericfennis", - "jguddas" + "jguddas", + "karsa-mistmere" ], "tags": [ "present", diff --git a/icons/gift.svg b/icons/gift.svg index ad15ed11e..c33b33f64 100644 --- a/icons/gift.svg +++ b/icons/gift.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/git-branch.json b/icons/git-branch.json index e1998f106..97f16d4ea 100644 --- a/icons/git-branch.json +++ b/icons/git-branch.json @@ -3,7 +3,8 @@ "contributors": [ "colebemis", "csandman", - "ericfennis" + "ericfennis", + "jguddas" ], "tags": [ "code", diff --git a/icons/git-branch.svg b/icons/git-branch.svg index f916ff401..06398f448 100644 --- a/icons/git-branch.svg +++ b/icons/git-branch.svg @@ -9,8 +9,7 @@ stroke-linecap="round" stroke-linejoin="round" > - + - diff --git a/icons/git-merge-conflict.json b/icons/git-merge-conflict.json new file mode 100644 index 000000000..59614399b --- /dev/null +++ b/icons/git-merge-conflict.json @@ -0,0 +1,21 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "timmy471", + "colebemis", + "csandman", + "karsa-mistmere", + "ericfennis" + ], + "tags": [ + "code", + "version control", + "commits", + "diff", + "error", + "conflict" + ], + "categories": [ + "development" + ] +} diff --git a/icons/git-merge-conflict.svg b/icons/git-merge-conflict.svg new file mode 100644 index 000000000..d89792893 --- /dev/null +++ b/icons/git-merge-conflict.svg @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/icons/globe-off.json b/icons/globe-off.json new file mode 100644 index 000000000..9068c57f8 --- /dev/null +++ b/icons/globe-off.json @@ -0,0 +1,37 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "TimNekk", + "karsa-mistmere", + "colebemis", + "csandman", + "ericfennis" + ], + "tags": [ + "globe", + "earth", + "planet", + "disable", + "mute", + "off", + "hide", + "avoid", + "world", + "browser", + "language", + "translate", + "internet", + "offline", + "disconnected", + "network", + "connection", + "no connection", + "network failure", + "signal off" + ], + "categories": [ + "navigation", + "connectivity", + "devices" + ] +} diff --git a/icons/globe-off.svg b/icons/globe-off.svg new file mode 100644 index 000000000..bcd24dd77 --- /dev/null +++ b/icons/globe-off.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/icons/hard-drive.json b/icons/hard-drive.json index 7c88ee64d..9daefb89c 100644 --- a/icons/hard-drive.json +++ b/icons/hard-drive.json @@ -3,7 +3,8 @@ "contributors": [ "colebemis", "csandman", - "ericfennis" + "ericfennis", + "jguddas" ], "tags": [ "computer", @@ -12,7 +13,11 @@ "data", "ssd", "disk", - "hard disk" + "hard disk", + "storage", + "hardware", + "backup", + "media" ], "categories": [ "development", diff --git a/icons/hard-drive.svg b/icons/hard-drive.svg index 080a23ed7..4a99fab39 100644 --- a/icons/hard-drive.svg +++ b/icons/hard-drive.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/info.json b/icons/info.json index b54c40547..744ad770c 100644 --- a/icons/info.json +++ b/icons/info.json @@ -6,7 +6,19 @@ "danielbayley" ], "tags": [ - "help" + "about", + "advice", + "clue", + "details", + "help", + "hint", + "indicator", + "information", + "knowledge", + "notice", + "status", + "support", + "tooltip" ], "categories": [ "accessibility", diff --git a/icons/lens-concave.json b/icons/lens-concave.json new file mode 100644 index 000000000..7c37a5ca0 --- /dev/null +++ b/icons/lens-concave.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "Muhammad-Aqib-Bashir", + "jamiemlaw", + "karsa-mistmere" + ], + "tags": [ + "concave", + "lens", + "optics", + "light", + "magnification", + "curved", + "focus", + "refraction", + "science", + "physics", + "eyeglass", + "telescope", + "microscope" + ], + "categories": [ + "science", + "tools", + "shapes" + ] +} diff --git a/icons/lens-concave.svg b/icons/lens-concave.svg new file mode 100644 index 000000000..601540144 --- /dev/null +++ b/icons/lens-concave.svg @@ -0,0 +1,13 @@ + + + diff --git a/icons/lens-convex.json b/icons/lens-convex.json new file mode 100644 index 000000000..9b271c330 --- /dev/null +++ b/icons/lens-convex.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "Muhammad-Aqib-Bashir", + "jamiemlaw", + "karsa-mistmere" + ], + "tags": [ + "convex", + "lens", + "optics", + "magnification", + "focus", + "light", + "refraction", + "physics", + "eyeglass", + "telescope", + "microscope", + "curved", + "science" + ], + "categories": [ + "science", + "tools", + "shapes" + ] +} diff --git a/icons/lens-convex.svg b/icons/lens-convex.svg new file mode 100644 index 000000000..0f7b5540a --- /dev/null +++ b/icons/lens-convex.svg @@ -0,0 +1,14 @@ + + + diff --git a/icons/line-dot-right-horizontal.json b/icons/line-dot-right-horizontal.json new file mode 100644 index 000000000..a52e39c1a --- /dev/null +++ b/icons/line-dot-right-horizontal.json @@ -0,0 +1,22 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "ericfennis", + "johnletey", + "nathan-de-pachtere" + ], + "tags": [ + "code", + "version control", + "waypoint", + "stop", + "station", + "last", + "end" + ], + "categories": [ + "development", + "navigation" + ] +} diff --git a/icons/line-dot-right-horizontal.svg b/icons/line-dot-right-horizontal.svg new file mode 100644 index 000000000..5c89c7686 --- /dev/null +++ b/icons/line-dot-right-horizontal.svg @@ -0,0 +1,14 @@ + + + + diff --git a/icons/message-circle-check.json b/icons/message-circle-check.json new file mode 100644 index 000000000..3e24e0a2f --- /dev/null +++ b/icons/message-circle-check.json @@ -0,0 +1,23 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "Shrinks99" + ], + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "moderate", + "check", + "done", + "todo", + "complete" + ], + "categories": [ + "social", + "account" + ] +} diff --git a/icons/message-circle-check.svg b/icons/message-circle-check.svg new file mode 100644 index 000000000..27222effd --- /dev/null +++ b/icons/message-circle-check.svg @@ -0,0 +1,14 @@ + + + + diff --git a/icons/message-square-check.json b/icons/message-square-check.json new file mode 100644 index 000000000..9dc5ceb1a --- /dev/null +++ b/icons/message-square-check.json @@ -0,0 +1,26 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "karsa-mistmere" + ], + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "moderate", + "check", + "done", + "todo", + "complete" + ], + "categories": [ + "social", + "account" + ] +} diff --git a/icons/message-square-check.svg b/icons/message-square-check.svg new file mode 100644 index 000000000..c20d24f92 --- /dev/null +++ b/icons/message-square-check.svg @@ -0,0 +1,14 @@ + + + + diff --git a/icons/metronome.json b/icons/metronome.json new file mode 100644 index 000000000..0cee32b17 --- /dev/null +++ b/icons/metronome.json @@ -0,0 +1,32 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "jguddas", + "edwloef" + ], + "tags": [ + "metronome", + "tempo", + "rhythm", + "beat", + "bpm", + "music", + "audio", + "sound", + "practice", + "timing", + "timer", + "time", + "pulse", + "sync", + "cadence", + "control", + "playback", + "studio", + "tool" + ], + "categories": [ + "multimedia", + "time" + ] +} diff --git a/icons/metronome.svg b/icons/metronome.svg new file mode 100644 index 000000000..e39a77911 --- /dev/null +++ b/icons/metronome.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/icons/mirror-rectangular.json b/icons/mirror-rectangular.json new file mode 100644 index 000000000..1dfc9e945 --- /dev/null +++ b/icons/mirror-rectangular.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "Muhammad-Aqib-Bashir", + "jamiemlaw", + "karsa-mistmere" + ], + "tags": [ + "reflection", + "optics", + "glass", + "surface", + "image", + "physics", + "science", + "bathroom", + "decor", + "cosmetic", + "shiny", + "periscope", + "vanity" + ], + "categories": [ + "science", + "home", + "tools" + ] +} diff --git a/icons/mirror-rectangular.svg b/icons/mirror-rectangular.svg new file mode 100644 index 000000000..f2c650a65 --- /dev/null +++ b/icons/mirror-rectangular.svg @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/icons/mirror-round.json b/icons/mirror-round.json new file mode 100644 index 000000000..2e48a5e42 --- /dev/null +++ b/icons/mirror-round.json @@ -0,0 +1,29 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "Muhammad-Aqib-Bashir", + "jamiemlaw", + "karsa-mistmere" + ], + "tags": [ + "reflection", + "optics", + "glass", + "surface", + "image", + "physics", + "science", + "bathroom", + "vanity", + "makeup", + "decor", + "cosmetic", + "shiny", + "periscope" + ], + "categories": [ + "science", + "home", + "tools" + ] +} diff --git a/icons/mirror-round.svg b/icons/mirror-round.svg new file mode 100644 index 000000000..e818e7d0e --- /dev/null +++ b/icons/mirror-round.svg @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/icons/mouse-left.json b/icons/mouse-left.json new file mode 100644 index 000000000..61ecbc88f --- /dev/null +++ b/icons/mouse-left.json @@ -0,0 +1,17 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "mittalyashu", + "ericfennis", + "karsa-mistmere", + "marvfash" + ], + "tags": [ + "device", + "scroll", + "click" + ], + "categories": [ + "devices" + ] +} diff --git a/icons/mouse-left.svg b/icons/mouse-left.svg new file mode 100644 index 000000000..cb6e08dd9 --- /dev/null +++ b/icons/mouse-left.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/icons/mouse-right.json b/icons/mouse-right.json new file mode 100644 index 000000000..61ecbc88f --- /dev/null +++ b/icons/mouse-right.json @@ -0,0 +1,17 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "mittalyashu", + "ericfennis", + "karsa-mistmere", + "marvfash" + ], + "tags": [ + "device", + "scroll", + "click" + ], + "categories": [ + "devices" + ] +} diff --git a/icons/mouse-right.svg b/icons/mouse-right.svg new file mode 100644 index 000000000..13fa906a7 --- /dev/null +++ b/icons/mouse-right.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/icons/printer-x.json b/icons/printer-x.json new file mode 100644 index 000000000..bcb10a91d --- /dev/null +++ b/icons/printer-x.json @@ -0,0 +1,22 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "jguddas", + "lt25106" + ], + "tags": [ + "fax", + "office", + "device", + "cross", + "cancel", + "remove", + "error" + ], + "categories": [ + "devices" + ] +} diff --git a/icons/printer-x.svg b/icons/printer-x.svg new file mode 100644 index 000000000..557f314b7 --- /dev/null +++ b/icons/printer-x.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/icons/rocket.json b/icons/rocket.json index 6990e7820..65b380720 100644 --- a/icons/rocket.json +++ b/icons/rocket.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "ericfennis" + "ericfennis", + "jguddas" ], "tags": [ "release", diff --git a/icons/rocket.svg b/icons/rocket.svg index 4ca5ac064..6c006f11b 100644 --- a/icons/rocket.svg +++ b/icons/rocket.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - + + + diff --git a/icons/rocking-chair.json b/icons/rocking-chair.json index 51e337771..5a15213e7 100644 --- a/icons/rocking-chair.json +++ b/icons/rocking-chair.json @@ -2,12 +2,15 @@ "$schema": "../icon.schema.json", "contributors": [ "connium", - "ericfennis" + "ericfennis", + "jamiemlaw" ], "tags": [ "chair", "furniture", - "seat" + "seat", + "comfort", + "relax" ], "categories": [ "home" diff --git a/icons/rocking-chair.svg b/icons/rocking-chair.svg index 1d25a8ee6..bb0ebb98a 100644 --- a/icons/rocking-chair.svg +++ b/icons/rocking-chair.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + diff --git a/icons/rotate-ccw-key.svg b/icons/rotate-ccw-key.svg index 2243b7e78..2c8417cad 100644 --- a/icons/rotate-ccw-key.svg +++ b/icons/rotate-ccw-key.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + - + diff --git a/icons/shelving-unit.json b/icons/shelving-unit.json new file mode 100644 index 000000000..b246a36c6 --- /dev/null +++ b/icons/shelving-unit.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "karsa-mistmere" + ], + "tags": [ + "ledge", + "rack", + "storage", + "inventory", + "furniture", + "sill", + "shelves", + "shelf", + "organize", + "display", + "store", + "arrange", + "unit", + "cabinet", + "fixture", + "retail", + "warehouse" + ], + "categories": [ + "home" + ] +} diff --git a/icons/shelving-unit.svg b/icons/shelving-unit.svg new file mode 100644 index 000000000..0ae8b4a17 --- /dev/null +++ b/icons/shelving-unit.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/icons/square-arrow-right-enter.json b/icons/square-arrow-right-enter.json new file mode 100644 index 000000000..ca0f1d338 --- /dev/null +++ b/icons/square-arrow-right-enter.json @@ -0,0 +1,25 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ethanhazel", + "karsa-mistmere", + "ericfennis" + ], + "tags": [ + "left", + "in", + "inside", + "input", + "insert", + "source", + "import", + "place", + "->" + ], + "categories": [ + "arrows", + "shapes", + "layout", + "multimedia" + ] +} diff --git a/icons/square-arrow-right-enter.svg b/icons/square-arrow-right-enter.svg new file mode 100644 index 000000000..530df0415 --- /dev/null +++ b/icons/square-arrow-right-enter.svg @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/icons/square-arrow-right-exit.json b/icons/square-arrow-right-exit.json new file mode 100644 index 000000000..a02b3579e --- /dev/null +++ b/icons/square-arrow-right-exit.json @@ -0,0 +1,21 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "ethanhazel", + "karsa-mistmere", + "ericfennis" + ], + "tags": [ + "out", + "outside", + "output", + "export", + "->" + ], + "categories": [ + "arrows", + "shapes", + "layout", + "multimedia" + ] +} diff --git a/icons/square-arrow-right-exit.svg b/icons/square-arrow-right-exit.svg new file mode 100644 index 000000000..352aad17c --- /dev/null +++ b/icons/square-arrow-right-exit.svg @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/icons/flip-vertical.json b/icons/square-centerline-dashed-horizontal.json similarity index 58% rename from icons/flip-vertical.json rename to icons/square-centerline-dashed-horizontal.json index a4a1a9a5b..db816a026 100644 --- a/icons/flip-vertical.json +++ b/icons/square-centerline-dashed-horizontal.json @@ -13,5 +13,13 @@ "categories": [ "design", "photography" + ], + "aliases": [ + { + "name": "flip-horizontal", + "deprecationReason": "alias.name", + "deprecated": true, + "toBeRemovedInVersion": "v1.0" + } ] } diff --git a/icons/flip-horizontal.svg b/icons/square-centerline-dashed-horizontal.svg similarity index 100% rename from icons/flip-horizontal.svg rename to icons/square-centerline-dashed-horizontal.svg diff --git a/icons/flip-horizontal.json b/icons/square-centerline-dashed-vertical.json similarity index 58% rename from icons/flip-horizontal.json rename to icons/square-centerline-dashed-vertical.json index a4a1a9a5b..ab3f4413b 100644 --- a/icons/flip-horizontal.json +++ b/icons/square-centerline-dashed-vertical.json @@ -13,5 +13,13 @@ "categories": [ "design", "photography" + ], + "aliases": [ + { + "name": "flip-vertical", + "deprecationReason": "alias.name", + "deprecated": true, + "toBeRemovedInVersion": "v1.0" + } ] } diff --git a/icons/flip-vertical.svg b/icons/square-centerline-dashed-vertical.svg similarity index 100% rename from icons/flip-vertical.svg rename to icons/square-centerline-dashed-vertical.svg diff --git a/icons/towel-rack.json b/icons/towel-rack.json new file mode 100644 index 000000000..7f40a2ec5 --- /dev/null +++ b/icons/towel-rack.json @@ -0,0 +1,30 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "danielbayley", + "jguddas", + "karsa-mistmere" + ], + "tags": [ + "flannel", + "bathroom", + "toiletries", + "sanitation", + "clean", + "fresh", + "dry", + "laundry", + "laundrette", + "hospitality", + "housekeeping", + "room service", + "spa break", + "health club", + "amenities", + "hanging" + ], + "categories": [ + "home", + "travel" + ] +} diff --git a/icons/towel-rack.svg b/icons/towel-rack.svg new file mode 100644 index 000000000..260a64d9e --- /dev/null +++ b/icons/towel-rack.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/icons/user-key.json b/icons/user-key.json new file mode 100644 index 000000000..dc26f66ed --- /dev/null +++ b/icons/user-key.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "mittalyashu", + "karsa-mistmere" + ], + "tags": [ + "passkey", + "password", + "login", + "authentication", + "authorization", + "roles", + "permissions", + "private", + "public", + "security", + "person", + "account", + "contact" + ], + "categories": [ + "account" + ] +} diff --git a/icons/user-key.svg b/icons/user-key.svg new file mode 100644 index 000000000..e11426563 --- /dev/null +++ b/icons/user-key.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/icons/user-lock.json b/icons/user-lock.json index dd0226fdd..98ce488b8 100644 --- a/icons/user-lock.json +++ b/icons/user-lock.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "anthony-mariotti" + "anthony-mariotti", + "jguddas" ], "tags": [ "person", diff --git a/icons/user-lock.svg b/icons/user-lock.svg index 647f5b787..05536786e 100644 --- a/icons/user-lock.svg +++ b/icons/user-lock.svg @@ -9,8 +9,8 @@ stroke-linecap="round" stroke-linejoin="round" > + + - - - + diff --git a/icons/user-round-key.json b/icons/user-round-key.json new file mode 100644 index 000000000..dc26f66ed --- /dev/null +++ b/icons/user-round-key.json @@ -0,0 +1,28 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "csandman", + "ericfennis", + "mittalyashu", + "karsa-mistmere" + ], + "tags": [ + "passkey", + "password", + "login", + "authentication", + "authorization", + "roles", + "permissions", + "private", + "public", + "security", + "person", + "account", + "contact" + ], + "categories": [ + "account" + ] +} diff --git a/icons/user-round-key.svg b/icons/user-round-key.svg new file mode 100644 index 000000000..3988962e3 --- /dev/null +++ b/icons/user-round-key.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/icons/vote.svg b/icons/vote.svg old mode 100755 new mode 100644 diff --git a/icons/x-line-top.json b/icons/x-line-top.json new file mode 100644 index 000000000..96526bc38 --- /dev/null +++ b/icons/x-line-top.json @@ -0,0 +1,36 @@ +{ + "$schema": "../icon.schema.json", + "contributors": [ + "colebemis", + "ericfennis", + "jguddas" + ], + "tags": [ + "line", + "top", + "arrow", + "navigation", + "up", + "pointer", + "direction", + "vector", + "symbol", + "cancel", + "close", + "delete", + "remove", + "times", + "clear", + "math", + "multiply", + "multiplication", + "mean", + "median", + "average", + "x̄" + ], + "categories": [ + "notifications", + "math" + ] +} diff --git a/icons/x-line-top.svg b/icons/x-line-top.svg new file mode 100644 index 000000000..0914be821 --- /dev/null +++ b/icons/x-line-top.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/packages/lucide/rollup.config.mjs b/packages/lucide/rollup.config.mjs index a4840c024..1ee7a12d4 100644 --- a/packages/lucide/rollup.config.mjs +++ b/packages/lucide/rollup.config.mjs @@ -60,6 +60,7 @@ const configs = bundles format, sourcemap: true, preserveModules, + preserveModulesRoot: 'src', }, })), ) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 6eac83f31..4472a6b9c 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -46,7 +46,7 @@ "dist" ], "scripts": { - "build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:package && pnpm build:license", + "build": "pnpm clean && pnpm copy:license && pnpm copy:utils && pnpm build:icons && pnpm build:package && pnpm build:license", "copy:license": "cp ../../LICENSE ./LICENSE", "copy:utils": "mkdir -p ./src/utils && cp -rf ../../packages/shared/src/utils/hasA11yProp.ts ./src/utils/", "clean": "rm -rf dist stats ./src/icons/*.{ts,svelte} ./src/aliases/{aliases,prefixed,suffixed}.ts", @@ -55,6 +55,7 @@ "build:license": "node ./scripts/appendBlockComments.mts", "test": "pnpm copy:license && pnpm copy:utils && pnpm build:icons && vitest run", "test:watch": "vitest watch", + "typecheck": "pnpm copy:license && pnpm copy:utils && pnpm build:icons && svelte-check --tsconfig ./tsconfig.json", "version": "pnpm version --git-tag-version=false" }, "devDependencies": { @@ -68,7 +69,7 @@ "jest-serializer-html": "^7.1.0", "jsdom": "^20.0.3", "svelte": "^5.38.6", - "svelte-check": "^4.3.1", + "svelte-check": "^4.3.4", "svelte-preprocess": "^6.0.3", "typescript": "^5.8.3", "vite": "^6.3.6", diff --git a/packages/svelte/src/types.ts b/packages/svelte/src/types.ts index 31eae0f66..4985c5f30 100644 --- a/packages/svelte/src/types.ts +++ b/packages/svelte/src/types.ts @@ -22,6 +22,7 @@ export interface LucideProps extends Attrs { absoluteStrokeWidth?: boolean; iconNode?: IconNode; children?: Snippet; + title?: string; } export type IconProps = LucideProps; diff --git a/packages/svelte/tests/TestSlots.svelte b/packages/svelte/tests/TestSlots.svelte index a93f05991..b82f27827 100644 --- a/packages/svelte/tests/TestSlots.svelte +++ b/packages/svelte/tests/TestSlots.svelte @@ -1,7 +1,10 @@ - + Test diff --git a/packages/svelte/tests/TestSlotsTitle.svelte b/packages/svelte/tests/TestSlotsTitle.svelte index f6418004f..dd6122d41 100644 --- a/packages/svelte/tests/TestSlotsTitle.svelte +++ b/packages/svelte/tests/TestSlotsTitle.svelte @@ -1,7 +1,10 @@ - + Air conditioning diff --git a/packages/svelte/tsconfig.json b/packages/svelte/tsconfig.json index 8d1b2f88f..3ef7dda35 100644 --- a/packages/svelte/tsconfig.json +++ b/packages/svelte/tsconfig.json @@ -12,4 +12,5 @@ "types": ["@testing-library/jest-dom"], }, "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte", "tests/**/*.ts"], + "exclude": ["tests/setupVitest.ts"], } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d4c98a7c9..712f64190 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -769,7 +769,7 @@ importers: specifier: ^5.38.6 version: 5.43.14 svelte-check: - specifier: ^4.3.1 + specifier: ^4.3.4 version: 4.3.4(picomatch@4.0.3)(svelte@5.43.14)(typescript@5.9.3) svelte-preprocess: specifier: ^6.0.3