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}
- ($selectedWindow = i)}
>
{win.label}
-
+
{/each}
Refresh:
{#each INTERVALS as intv, i}
- handleIntervalChange(i)}
>
{intv.label}
-
+
{/each}
-
-
-
+
+
+
@@ -410,7 +395,7 @@
GPU
{#if !hasGpuData}
- No GPU data available
+ No GPU data available
{:else}