From 0ab9e74333ec9d54c6f0de68b999ee24a79392ce Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 27 Jun 2026 12:10:56 +0000 Subject: [PATCH] ui: finish shadcn migration and remove legacy shim Convert the remaining .btn usages (Concurrency, Performance, CaptureDialog) to shadcn Button, fix CaptureDialog/PerformanceChart styles to shadcn tokens, and remove the transitional legacy palette aliases and component classes from index.css. Drop the now-unused lucide-svelte and shadcn-svelte dependencies. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01UmuGqwNBJNEAMaWsdCDqUC --- ui-svelte/package-lock.json | 47 --------------- ui-svelte/package.json | 2 - ui-svelte/src/components/CaptureDialog.svelte | 41 ++++++------- .../src/components/PerformanceChart.svelte | 2 +- .../playground/ConcurrencyInterface.svelte | 18 +++--- ui-svelte/src/index.css | 58 +------------------ ui-svelte/src/routes/Performance.svelte | 43 +++++--------- 7 files changed, 46 insertions(+), 165 deletions(-) diff --git a/ui-svelte/package-lock.json b/ui-svelte/package-lock.json index 09fa5323..c540b58a 100644 --- a/ui-svelte/package-lock.json +++ b/ui-svelte/package-lock.json @@ -11,7 +11,6 @@ "chart.js": "4.5.1", "highlight.js": "^11.11.1", "katex": "^0.16.28", - "lucide-svelte": "^0.563.0", "rehype-katex": "^7.0.1", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", @@ -33,7 +32,6 @@ "bits-ui": "^2.18.1", "clsx": "^2.1.1", "paneforge": "^1.0.2", - "shadcn-svelte": "^1.3.0", "svelte": "^5.46.4", "svelte-check": "^4.1.4", "tailwind-merge": "^3.6.0", @@ -1980,15 +1978,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/lucide-svelte": { - "version": "0.563.0", - "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.563.0.tgz", - "integrity": "sha512-pjZKw7TpQcamfQrx7YdbOHgmrcNeKiGGMD0tKZQaVktwSsbqw28CsKc2Q97ttwjytiCWkJyOa8ij2Q+Og0nPfQ==", - "license": "ISC", - "peerDependencies": { - "svelte": "^3 || ^4 || ^5.0.0-next.42" - } - }, "node_modules/lz-string": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", @@ -2865,13 +2854,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-fetch-native": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", - "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", - "dev": true, - "license": "MIT" - }, "node_modules/obug": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", @@ -3240,35 +3222,6 @@ "node": ">=6" } }, - "node_modules/shadcn-svelte": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/shadcn-svelte/-/shadcn-svelte-1.3.0.tgz", - "integrity": "sha512-Pd4ICWTkTks/b2YU4c9vF2XsX1x5HFPRl5bKszS1LcnWS83x+7T4WiIvbWz8Qh9knkcGZ+SCz1+Dmhdq+AYooA==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "^14.0.0", - "node-fetch-native": "^1.6.4", - "postcss": "^8.5.5", - "tailwind-merge": "^3.0.0" - }, - "bin": { - "shadcn-svelte": "dist/index.mjs" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/shadcn-svelte/node_modules/commander": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - } - }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", diff --git a/ui-svelte/package.json b/ui-svelte/package.json index 2e73a344..787dcc9d 100644 --- a/ui-svelte/package.json +++ b/ui-svelte/package.json @@ -22,7 +22,6 @@ "bits-ui": "^2.18.1", "clsx": "^2.1.1", "paneforge": "^1.0.2", - "shadcn-svelte": "^1.3.0", "svelte": "^5.46.4", "svelte-check": "^4.1.4", "tailwind-merge": "^3.6.0", @@ -38,7 +37,6 @@ "chart.js": "4.5.1", "highlight.js": "^11.11.1", "katex": "^0.16.28", - "lucide-svelte": "^0.563.0", "rehype-katex": "^7.0.1", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", diff --git a/ui-svelte/src/components/CaptureDialog.svelte b/ui-svelte/src/components/CaptureDialog.svelte index 803ab31f..5093686a 100644 --- a/ui-svelte/src/components/CaptureDialog.svelte +++ b/ui-svelte/src/components/CaptureDialog.svelte @@ -1,5 +1,6 @@ -
+
diff --git a/ui-svelte/src/components/playground/ConcurrencyInterface.svelte b/ui-svelte/src/components/playground/ConcurrencyInterface.svelte index 1b3ebbd7..dee11388 100644 --- a/ui-svelte/src/components/playground/ConcurrencyInterface.svelte +++ b/ui-svelte/src/components/playground/ConcurrencyInterface.svelte @@ -2,6 +2,7 @@ import { models } from "../../stores/api"; import { persistentStore } from "../../stores/persistent"; import { streamChatCompletion } from "../../lib/chatApi"; + import { Button } from "$lib/components/ui/button/index.js"; type Status = "waiting" | "streaming" | "done" | "error"; type Phase = "waiting" | "loading" | "reasoning" | "content"; @@ -366,22 +367,21 @@
{#if isRunning} - + {:else} - + Go + {/if} - +
diff --git a/ui-svelte/src/index.css b/ui-svelte/src/index.css index 82ebd7dd..097b6512 100644 --- a/ui-svelte/src/index.css +++ b/ui-svelte/src/index.css @@ -136,16 +136,6 @@ --color-warning: var(--warning); --color-info: var(--info); --color-error: var(--destructive); - - /* legacy aliases (transitional — removed as views migrate) */ - --color-surface: var(--card); - --color-txtmain: var(--foreground); - --color-txtsecondary: var(--muted-foreground); - --color-navlink-active: var(--primary-foreground); - --color-card-border: var(--border); - --color-card-border-inner: var(--border); - --color-btn-border: var(--border); - --color-btn-primary-text: var(--primary-foreground); } @layer base { @@ -177,60 +167,14 @@ } } -/* Transitional component classes — kept until all views move to shadcn primitives. */ @layer components { + /* default padding for ad-hoc tables (header/detail views) */ table th { @apply p-2 font-semibold; } table td { @apply p-2; } - - .navlink { - @apply text-muted-foreground hover:bg-accent hover:text-foreground rounded-lg p-2; - } - .navlink.active { - @apply bg-primary text-primary-foreground; - } - - .card { - @apply bg-card text-card-foreground rounded-xl border shadow-sm overflow-hidden p-4; - } - .card__body { - @apply p-4; - } - .card__header, - .card__footer { - @apply p-4 border-b; - } - - .status { - @apply inline-flex items-center px-2 py-0.5 text-xs font-medium rounded-md; - } - .status--ready { - @apply bg-success/10 text-success; - } - .status--starting, - .status--stopping, - .status--queued { - @apply bg-warning/10 text-warning; - } - .status--stopped { - @apply bg-destructive/10 text-destructive; - } - - .btn { - @apply bg-background py-2 px-4 text-sm rounded-md border transition-colors duration-200; - } - .btn:hover { - @apply bg-muted cursor-pointer; - } - .btn--sm { - @apply px-2 py-0.5 text-xs; - } - .btn:disabled { - @apply opacity-50 cursor-not-allowed; - } } @utility activity-link { diff --git a/ui-svelte/src/routes/Performance.svelte b/ui-svelte/src/routes/Performance.svelte index 979acd61..dd6ec0d2 100644 --- a/ui-svelte/src/routes/Performance.svelte +++ b/ui-svelte/src/routes/Performance.svelte @@ -4,6 +4,8 @@ import { persistentStore } from "../stores/persistent"; import type { SysStat, GpuStat } from "../lib/types"; import PerformanceChart from "../components/PerformanceChart.svelte"; + import { Button } from "$lib/components/ui/button/index.js"; + import { RefreshCw } from "@lucide/svelte"; const COLORS = [ "#3b82f6", @@ -356,47 +358,30 @@
{#each WINDOWS as win, i} - + {/each}
Refresh: {#each INTERVALS as intv, i} - + {/each}
- +

@@ -410,7 +395,7 @@

GPU

{#if !hasGpuData} -

No GPU data available

+

No GPU data available

{:else}