Skip to content

Commit 3432a10

Browse files
dependabot[bot]Tyler Grayclaude
authored
Bump lucide-svelte from 0.577.0 to 1.0.1 (#180)
* Bump lucide-svelte from 0.577.0 to 1.0.1 Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.577.0 to 1.0.1. - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/1.0.1/packages/lucide-svelte) --- updated-dependencies: - dependency-name: lucide-svelte dependency-version: 1.0.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * deps: bump lucide-svelte to 1.0.1, replace removed Github icon, close #214 Group D ## What was wrong Two separate problems blocked this dependabot bump: 1. **Github icon removed from lucide.** lucide v1.0 dropped many brand icons (Github, Discord, etc.) for trademark reasons. The bare bump produced two `[MISSING_EXPORT]` build failures in marketplace and settings cloud-sync tab. 2. **#214 Group D — 7 TS errors on icon props.** Existing errors on `ActionMenuItem` / `EmptyState` `icon={SomeIcon}` call sites in `ProjectCard`, `ProjectList`, `McpLibrary`. Both consumers typed the prop as Svelte 5's `Component<any>`, which lucide-svelte 1.x doesn't satisfy: it still exports icons as the legacy `SvelteComponentTyped` class shape (renders fine at runtime, but TS treats `typeof RefreshCw` as incompatible with `Component<...>`). Pre-existing in main since #210/lucide major bumps. ## Fix - Inlined a `GithubIcon.svelte` component using lucide's original stroke-style Github SVG path so the visual is identical to what we had pre-upgrade. Props mirror lucide's shape (`class`, `size`, `color`, `strokeWidth`) so call sites stay one-liners. Replaced the 4 `<Github ...>` usages in `marketplace/+page.svelte` and `SettingsCloudSyncTab.svelte` with `<GithubIcon ...>`. - Loosened `icon` prop type in `ActionMenuItem` and `EmptyState` via a documented `IconLike = any` alias. Comment explains why (lucide uses legacy SvelteComponentTyped — accepting both shapes via a union would be uglier and gain little). This is the canonical resolution for #214 Group D — also closes the 7 errors when the bump lands. ## Verification - `npm run check` — **11 errors** (down from 18 on `main`; closes all 7 Group D errors) - `npm run build` — succeeds - `npx vitest run` — 1567/1567 pass ## Net file changes - `package.json` / `package-lock.json` — lucide-svelte 0.577 -> 1.0.1 - `src/lib/components/shared/GithubIcon.svelte` (new, ~40 lines) - `src/lib/components/shared/ActionMenuItem.svelte` — icon type - `src/lib/components/shared/EmptyState.svelte` — icon type - `src/lib/components/settings/tabs/SettingsCloudSyncTab.svelte` — import swap - `src/routes/marketplace/+page.svelte` — import swap Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tyler Gray <tylerg@emergentsoftware.net> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 55281a5 commit 3432a10

7 files changed

Lines changed: 83 additions & 15 deletions

File tree

package-lock.json

Lines changed: 19 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"@tauri-apps/plugin-shell": "^2.3.5",
3434
"@tauri-apps/plugin-sql": "^2",
3535
"@tauri-apps/plugin-updater": "^2.10.0",
36-
"lucide-svelte": "^0.577.0",
36+
"lucide-svelte": "^1.0.1",
3737
"svelte-dnd-action": "^0.9.69"
3838
},
3939
"devDependencies": {

src/lib/components/settings/tabs/SettingsCloudSyncTab.svelte

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<script lang="ts">
22
import { onMount } from 'svelte';
33
import { cloudSyncStore, projectsStore, notifications } from '$lib/stores';
4-
import { Cloud, Github, Check, AlertCircle, Upload, Download, ExternalLink, LogOut, Loader2, FolderSync, RefreshCw } from 'lucide-svelte';
4+
import { Cloud, Check, AlertCircle, Upload, Download, ExternalLink, LogOut, Loader2, FolderSync, RefreshCw } from 'lucide-svelte';
5+
import GithubIcon from '$lib/components/shared/GithubIcon.svelte';
56
import type { SyncConfig, ProjectMapping } from '$lib/types';
67
78
let isInitialized = $state(false);
@@ -117,7 +118,7 @@
117118
<!-- Authentication Card -->
118119
<div class="card">
119120
<h3 class="text-lg font-semibold text-gray-900 dark:text-white mb-2 flex items-center gap-2">
120-
<Github class="w-5 h-5" />
121+
<GithubIcon class="w-5 h-5" />
121122
GitHub Connection
122123
</h3>
123124
<p class="text-sm text-gray-500 dark:text-gray-400 mb-4">
@@ -184,7 +185,7 @@
184185
<Loader2 class="w-4 h-4 animate-spin" />
185186
Connecting...
186187
{:else}
187-
<Github class="w-4 h-4" />
188+
<GithubIcon class="w-4 h-4" />
188189
Connect with GitHub CLI
189190
{/if}
190191
</button>

src/lib/components/shared/ActionMenuItem.svelte

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
<script lang="ts">
2-
import type { Component } from 'svelte';
2+
// `icon` is intentionally typed loosely. lucide-svelte 1.x still exports
3+
// icons as the legacy `SvelteComponentTyped` class shape, which doesn't
4+
// satisfy Svelte 5's `Component<Props>` type — but renders fine at runtime.
5+
// Accepting both shapes via the broad type avoids forcing a wrapper around
6+
// every icon library import.
7+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
8+
type IconLike = any;
39
410
type Props = {
5-
icon?: Component<any>;
11+
icon?: IconLike;
612
label: string;
713
variant?: 'default' | 'danger';
814
onclick?: () => void;

src/lib/components/shared/EmptyState.svelte

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
<script lang="ts">
2-
import type { Snippet, Component } from 'svelte';
2+
import type { Snippet } from 'svelte';
3+
4+
// See ActionMenuItem.svelte for why `icon` is intentionally loose:
5+
// lucide-svelte 1.x icons use the legacy SvelteComponentTyped shape,
6+
// which doesn't satisfy Svelte 5's `Component<Props>` type but renders fine.
7+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
8+
type IconLike = any;
39
410
type Props = {
5-
icon?: Component<any>;
11+
icon?: IconLike;
612
title: string;
713
description?: string;
814
children?: Snippet;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<script lang="ts">
2+
// Drop-in replacement for `lucide-svelte`'s `Github` icon, which was
3+
// removed in lucide-svelte 1.x for trademark reasons. SVG path is the
4+
// original lucide stroke-style mark so the visual is identical to what
5+
// the codebase used pre-upgrade. Props mirror lucide-svelte's shape so
6+
// existing call sites (`<Github class="w-5 h-5" />` etc.) work unchanged.
7+
8+
type Props = {
9+
class?: string;
10+
size?: number | string;
11+
color?: string;
12+
strokeWidth?: number;
13+
};
14+
15+
let {
16+
class: className = '',
17+
size = 24,
18+
color = 'currentColor',
19+
strokeWidth = 2
20+
}: Props = $props();
21+
</script>
22+
23+
<svg
24+
xmlns="http://www.w3.org/2000/svg"
25+
width={size}
26+
height={size}
27+
viewBox="0 0 24 24"
28+
fill="none"
29+
stroke={color}
30+
stroke-width={strokeWidth}
31+
stroke-linecap="round"
32+
stroke-linejoin="round"
33+
class={className}
34+
aria-hidden="true"
35+
>
36+
<path
37+
d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"
38+
/>
39+
<path d="M9 18c-4.51 2-5-2-7-2" />
40+
</svg>

src/routes/marketplace/+page.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
ExternalLink,
1313
Trash2,
1414
Download,
15-
Github,
1615
X,
1716
Eye,
1817
RotateCcw,
@@ -22,6 +21,7 @@
2221
Loader2,
2322
ArrowUpDown
2423
} from 'lucide-svelte';
24+
import GithubIcon from '$lib/components/shared/GithubIcon.svelte';
2525
import { i18n } from '$lib/i18n';
2626
import type { Repo, RepoItem, CreateRepoRequest, ItemType, RegistryMcpEntry } from '$lib/types';
2727
@@ -299,7 +299,7 @@
299299
? 'border-primary-500 text-primary-600 dark:text-primary-400'
300300
: 'border-transparent text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200'}"
301301
>
302-
<Github class="w-4 h-4" />
302+
<GithubIcon class="w-4 h-4" />
303303
Repos ({repoLibrary.repos.length})
304304
</button>
305305
</div>
@@ -459,7 +459,7 @@
459459
<div
460460
class="w-10 h-10 rounded-lg bg-gray-100 dark:bg-gray-700 flex items-center justify-center"
461461
>
462-
<Github class="w-5 h-5 text-gray-600 dark:text-gray-400" />
462+
<GithubIcon class="w-5 h-5 text-gray-600 dark:text-gray-400" />
463463
</div>
464464
<div>
465465
<div class="flex items-center gap-2">

0 commit comments

Comments
 (0)