diff --git a/.github/workflows/lucide-svelte-5.yml b/.github/workflows/lucide-svelte-5.yml
index 64863d714..556f44bfb 100644
--- a/.github/workflows/lucide-svelte-5.yml
+++ b/.github/workflows/lucide-svelte-5.yml
@@ -41,3 +41,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/README.md b/README.md
index 1d2ea701c..ab0c51018 100644
--- a/README.md
+++ b/README.md
@@ -88,7 +88,16 @@ Thank you to all the people who contributed to Lucide!
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/docs/.vitepress/theme/components/base/Input.vue b/docs/.vitepress/theme/components/base/Input.vue
index 33134c9b9..1bac147ba 100644
--- a/docs/.vitepress/theme/components/base/Input.vue
+++ b/docs/.vitepress/theme/components/base/Input.vue
@@ -35,6 +35,8 @@ const updateShortcutSpacing = () => {
});
};
+const isMac = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
+
onMounted(updateShortcutSpacing);
watch(() => props.shortcut, updateShortcutSpacing);
@@ -73,6 +75,7 @@ defineExpose({
v-if="type === 'search' && modelValue"
class="clear-button"
aria-label="Clear input"
+ :style="{ right: isMac ? '50px' : '68px' }"
>
diff --git a/docs/public/sponsors/paxhistoria.svg b/docs/public/sponsors/paxhistoria.svg
new file mode 100644
index 000000000..8ad7999ad
--- /dev/null
+++ b/docs/public/sponsors/paxhistoria.svg
@@ -0,0 +1,7 @@
+
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/package.json b/package.json
index 31b44d1fe..dc10fd703 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"addjsons": "node ./scripts/addMissingIconJsonFiles.mts",
"checkIcons": "node ./scripts/checkIconsAndCategories.mts",
"generate:changelog": "node ./scripts/generateChangelog.mts",
+ "generate:backers": "node scripts/updateOpenCollectiveBackers.mts",
"generate:contributors": "node ./scripts/updateContributors.mts icons/*.svg",
"generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mts",
"suggest:tags": "node ./scripts/suggestTags.mts",
diff --git a/packages/astro/README.md b/packages/astro/README.md
index e5dd39c64..ee104b6cb 100644
--- a/packages/astro/README.md
+++ b/packages/astro/README.md
@@ -68,7 +68,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-angular/README.md b/packages/lucide-angular/README.md
index 729588e2d..412ca7614 100644
--- a/packages/lucide-angular/README.md
+++ b/packages/lucide-angular/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-preact/README.md b/packages/lucide-preact/README.md
index 0bca38c27..caaf88c9f 100644
--- a/packages/lucide-preact/README.md
+++ b/packages/lucide-preact/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-react-native/README.md b/packages/lucide-react-native/README.md
index eef0a6322..33b43966d 100644
--- a/packages/lucide-react-native/README.md
+++ b/packages/lucide-react-native/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-react/README.md b/packages/lucide-react/README.md
index 8d02efe96..b0a625a3f 100644
--- a/packages/lucide-react/README.md
+++ b/packages/lucide-react/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-solid/README.md b/packages/lucide-solid/README.md
index 0c9a8a62f..9cbd6cf5e 100644
--- a/packages/lucide-solid/README.md
+++ b/packages/lucide-solid/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-static/README.md b/packages/lucide-static/README.md
index 41f3434d2..9abb24382 100644
--- a/packages/lucide-static/README.md
+++ b/packages/lucide-static/README.md
@@ -81,7 +81,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-svelte/README.md b/packages/lucide-svelte/README.md
index 6ca96ea77..d9d6f79b5 100644
--- a/packages/lucide-svelte/README.md
+++ b/packages/lucide-svelte/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-vue-next/README.md b/packages/lucide-vue-next/README.md
index ad4c3e7ed..782cd7b44 100644
--- a/packages/lucide-vue-next/README.md
+++ b/packages/lucide-vue-next/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide-vue/README.md b/packages/lucide-vue/README.md
index 447029d15..4a117bfa7 100644
--- a/packages/lucide-vue/README.md
+++ b/packages/lucide-vue/README.md
@@ -71,7 +71,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/lucide/README.md b/packages/lucide/README.md
index d034cd2c1..9ace2f6ff 100644
--- a/packages/lucide/README.md
+++ b/packages/lucide/README.md
@@ -77,7 +77,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
diff --git a/packages/svelte/README.md b/packages/svelte/README.md
index 806eb3fa1..42c2a6736 100644
--- a/packages/svelte/README.md
+++ b/packages/svelte/README.md
@@ -67,7 +67,16 @@ Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/licen
+[//]: <> (Open Collective backers)
### Awesome backers 🍺
-
-
+
+
+
+### Backers ☕
+
+
+
+### Other contributors 💸
+
+You can find all our past and non-recurring financial contributors at [our Open Collective page](https://opencollective.com/lucide-icons).
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 0ba16d9f1..407c976fc 100644
--- a/packages/svelte/src/types.ts
+++ b/packages/svelte/src/types.ts
@@ -13,6 +13,7 @@ export interface IconProps extends Attrs {
absoluteStrokeWidth?: boolean;
iconNode?: IconNode;
children?: Snippet;
+ title?: string;
}
export type IconEvents = {
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 c85b985d6..a98d268a6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -790,7 +790,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
diff --git a/scripts/updateOpenCollectiveBackers.mts b/scripts/updateOpenCollectiveBackers.mts
new file mode 100644
index 000000000..f01b0fffd
--- /dev/null
+++ b/scripts/updateOpenCollectiveBackers.mts
@@ -0,0 +1,34 @@
+import { readdirSync } from 'node:fs';
+import { join } from 'node:path';
+import { existsSync, readFileSync, writeFileSync } from 'fs';
+
+function updateOpenCollectiveBackers() {
+ const packagesPath = join(import.meta.dirname, '../packages');
+ const mainReadme = readFileSync(join(import.meta.dirname, '../README.md'), 'utf8');
+ const awesomeRegex = /(\[\/\/]: <> \(Open Collective backers\).+)$/s;
+ const awesomeBlock = awesomeRegex.exec(mainReadme);
+ if (awesomeBlock?.[1]) {
+ const packageAwesomeBlock = awesomeBlock[1].replaceAll('src="docs/public/sponsors', 'src="https://lucide.dev/sponsors')
+ readdirSync(packagesPath).forEach((packagePath) => {
+ if (['lucide-figma', 'shared'].includes(packagePath) || packagePath.startsWith('.')) {
+ return;
+ }
+ const readmePath = join(packagesPath, packagePath, 'README.md');
+ if (existsSync(readmePath)) {
+ const readmeContent = readFileSync(readmePath, 'utf8');
+ if (awesomeRegex.test(readmeContent)) {
+ writeFileSync(readmePath, readmeContent.replace(awesomeRegex, packageAwesomeBlock));
+ console.log(`Upgraded Awesome backers block in ${readmePath}`);
+ } else {
+ console.error(`Could not find Awesome backers block in ${readmePath}`)
+ }
+ } else {
+ console.warn(`No readme found at ${readmePath}`);
+ }
+ })
+ } else {
+ console.error('Could not identify Awesome backers block')
+ }
+}
+
+updateOpenCollectiveBackers();