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/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 08f430475..d6d95462f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -793,7 +793,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