diff --git a/tools/ui/package-lock.json b/tools/ui/package-lock.json
index f9b793b29f..a6667cb33c 100644
--- a/tools/ui/package-lock.json
+++ b/tools/ui/package-lock.json
@@ -71,7 +71,7 @@
"svelte-check": "4.6.0",
"svelte-sonner": "1.1.1",
"tailwind-merge": "3.6.0",
- "tailwind-variants": "3.2.2",
+ "tailwind-variants": "^3.3.1",
"tailwindcss": "4.3.0",
"tw-animate-css": "1.4.0",
"typescript": "5.9.3",
@@ -16048,13 +16048,13 @@
}
},
"node_modules/tailwind-variants": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz",
- "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.3.1.tgz",
+ "integrity": "sha512-4pAvwUtM4HKBiRZftncAbpn6V9Hhwoa5Fl7O2u5zbp7Z5Cvu+/o/6+176WY3WCEES209543quG8zFIcXCsc5Jw==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=16.x",
+ "node": ">=16.9.x",
"pnpm": ">=7.x"
},
"peerDependencies": {
@@ -16064,6 +16064,9 @@
"peerDependenciesMeta": {
"tailwind-merge": {
"optional": true
+ },
+ "tailwindcss": {
+ "optional": true
}
}
},
diff --git a/tools/ui/package.json b/tools/ui/package.json
index 3c4f24a755..f44287af33 100644
--- a/tools/ui/package.json
+++ b/tools/ui/package.json
@@ -91,7 +91,7 @@
"svelte-check": "4.6.0",
"svelte-sonner": "1.1.1",
"tailwind-merge": "3.6.0",
- "tailwind-variants": "3.2.2",
+ "tailwind-variants": "^3.3.1",
"tailwindcss": "4.3.0",
"tw-animate-css": "1.4.0",
"typescript": "5.9.3",
diff --git a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetails.svelte b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetails.svelte
index 6e3d8370d4..27834dc17d 100644
--- a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetails.svelte
+++ b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetails.svelte
@@ -1,13 +1,12 @@
-
-
-
- Quant
-
-
-
- {#if sidecars.length}
- Draft
-
-
- {/if}
-
-
- {#each boxes as box, i (box.title)}
-
-
-
-
- {box.title}
-
-
-
- {box.command}
-
-
-
-
- {/each}
-
diff --git a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetailsDownloadOptions.svelte b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetailsDownloadOptions.svelte
index 2f0caf5a66..0a87622461 100644
--- a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetailsDownloadOptions.svelte
+++ b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverModelDetailsDownloadOptions.svelte
@@ -1,14 +1,14 @@
{#if bitDepthRows.length}
-
-
+
+
Downloadable options
+
+ {#if selectedPaths.length}
+ {selected.length} selected
+ {/if}
-
+
{#each bitDepthRows as row (row.bitDepth)}
-
+
{#if row.bitDepth === 99}
Other
@@ -113,58 +227,55 @@
: isDownloaded
? `Already downloaded: ${file.path}`
: isFailed
- ? `Last attempt failed: ${file.path}. Click to retry.`
+ ? `Last attempt failed: ${file.path}`
: `Download ${file.path} (requires ~${memoryGb} GB of memory)`}
- {
- pendingDownload = {
- filePath: file.path,
- quant: meta?.quant ?? null,
- sidecar: meta?.sidecar ?? null,
- sizeBytes: file.size ?? null
- };
- }}
- type="button"
- >
- {#if isFailed && !isDownloading && !isDownloaded}
-
- Failed
-
- {/if}
-
- {#if meta?.sidecar && !isAuxSidecar(meta.sidecar)}
-
- {meta.sidecar}
-
- {/if}
-
- {label}
+
-
-
-
-
- {#if isDownloading && progress && progress.totalBytes > 0}
- {Math.round((progress.downloadedBytes / progress.totalBytes) * 100)}%
- {:else}
- {HuggingFaceService.formatFileSize(file.size ?? 0)}
+ {#if isFailed && !isDownloading && !isDownloaded}
+
+ Failed
+
{/if}
-
- {#if isDownloading && progress}
-
- {/if}
+ {#if meta?.sidecar && !isAuxSidecar(meta.sidecar)}
+
+ {meta.sidecar}
+
+ {/if}
+
+ {label}
+
+
+
+
+ {#if isDownloading && progress && progress.totalBytes > 0}
+ {Math.round((progress.downloadedBytes / progress.totalBytes) * 100)}%
+ {:else}
+ {HuggingFaceService.formatFileSize(file.size ?? 0)}
+ {/if}
+
+
+ {#if isDownloading && progress}
+
+ {/if}
+
@@ -175,25 +286,44 @@
{/each}
+
+
+
+
+
+ {serveCommand}
+
+
+
+
+
{/if}
-
-{#if pendingDownload}
-
pendingDownload !== null,
- (v) => {
- if (!v) pendingDownload = null;
- }
- }
- filePath={pendingDownload.filePath}
- formattedSize={pendingDownload.sizeBytes != null
- ? HuggingFaceService.formatFileSize(pendingDownload.sizeBytes)
- : undefined}
- onClose={() => (pendingDownload = null)}
- quant={pendingDownload.quant}
- repoId={modelId}
- sidecar={pendingDownload.sidecar}
- />
-{/if}
diff --git a/tools/ui/src/lib/components/app/models/discover/index.ts b/tools/ui/src/lib/components/app/models/discover/index.ts
index a37c5b0eda..b64eb67a8e 100644
--- a/tools/ui/src/lib/components/app/models/discover/index.ts
+++ b/tools/ui/src/lib/components/app/models/discover/index.ts
@@ -84,13 +84,6 @@ export { default as ModelsDiscoverChatTemplateDialog } from './ModelsDiscoverCha
*/
export { default as ModelsDiscoverModelDetailsReadme } from './ModelsDiscoverModelDetailsReadme.svelte';
-/**
- * **TerminalCommands** - Terminal command block
- *
- * Shows the `llama serve` / `llama cli` commands for a model with copy buttons.
- */
-export { default as ModelsDiscoverModelDetailsCommands } from './ModelsDiscoverModelDetailsCommands.svelte';
-
/**
* **DialogModelDownload** - Download confirmation / progress dialog
*
diff --git a/tools/ui/src/lib/components/ui/toggle-group/index.ts b/tools/ui/src/lib/components/ui/toggle-group/index.ts
new file mode 100644
index 0000000000..73160fc4c3
--- /dev/null
+++ b/tools/ui/src/lib/components/ui/toggle-group/index.ts
@@ -0,0 +1,10 @@
+import Root from './toggle-group.svelte';
+import Item from './toggle-group-item.svelte';
+
+export {
+ Root,
+ Item,
+ //
+ Root as ToggleGroup,
+ Item as ToggleGroupItem
+};
diff --git a/tools/ui/src/lib/components/ui/toggle-group/toggle-group-item.svelte b/tools/ui/src/lib/components/ui/toggle-group/toggle-group-item.svelte
new file mode 100644
index 0000000000..c7b3e46423
--- /dev/null
+++ b/tools/ui/src/lib/components/ui/toggle-group/toggle-group-item.svelte
@@ -0,0 +1,35 @@
+
+
+
diff --git a/tools/ui/src/lib/components/ui/toggle-group/toggle-group.svelte b/tools/ui/src/lib/components/ui/toggle-group/toggle-group.svelte
new file mode 100644
index 0000000000..26480759e9
--- /dev/null
+++ b/tools/ui/src/lib/components/ui/toggle-group/toggle-group.svelte
@@ -0,0 +1,75 @@
+
+
+
+
+
+
diff --git a/tools/ui/src/lib/components/ui/toggle/index.ts b/tools/ui/src/lib/components/ui/toggle/index.ts
new file mode 100644
index 0000000000..0f18d3be84
--- /dev/null
+++ b/tools/ui/src/lib/components/ui/toggle/index.ts
@@ -0,0 +1,13 @@
+import Root from './toggle.svelte';
+export {
+ toggleVariants,
+ type ToggleSize,
+ type ToggleVariant,
+ type ToggleVariants
+} from './toggle.svelte';
+
+export {
+ Root,
+ //
+ Root as Toggle
+};
diff --git a/tools/ui/src/lib/components/ui/toggle/toggle.svelte b/tools/ui/src/lib/components/ui/toggle/toggle.svelte
new file mode 100644
index 0000000000..657181165e
--- /dev/null
+++ b/tools/ui/src/lib/components/ui/toggle/toggle.svelte
@@ -0,0 +1,52 @@
+
+
+
+
+
diff --git a/tools/ui/tests/stories/ModelsDiscoverModelDetails.stories.svelte b/tools/ui/tests/stories/ModelsDiscoverModelDetails.stories.svelte
index c228349c47..09e8dc74fb 100644
--- a/tools/ui/tests/stories/ModelsDiscoverModelDetails.stories.svelte
+++ b/tools/ui/tests/stories/ModelsDiscoverModelDetails.stories.svelte
@@ -3,11 +3,9 @@
import { defineMeta } from '@storybook/addon-svelte-csf';
import ModelsDiscoverChatTemplateDialog from '$lib/components/app/models/discover/ModelsDiscoverChatTemplateDialog.svelte';
import ModelsDiscoverModelDetails from '$lib/components/app/models/discover/ModelsDiscoverModelDetails.svelte';
- import ModelsDiscoverModelDetailsCommands from '$lib/components/app/models/discover/ModelsDiscoverModelDetailsCommands.svelte';
import ModelsDiscoverModelDetailsDownloadOptions from '$lib/components/app/models/discover/ModelsDiscoverModelDetailsDownloadOptions.svelte';
import ModelsDiscoverModelDetailsHeader from '$lib/components/app/models/discover/ModelsDiscoverModelDetailsHeader.svelte';
import ModelsDiscoverModelDetailsReadme from '$lib/components/app/models/discover/ModelsDiscoverModelDetailsReadme.svelte';
- import { ModelDraftSidecar } from '$lib/enums';
import type { HfModelSibling } from '$lib/types';
const { Story } = defineMeta({
@@ -72,25 +70,6 @@
-
-
-
-
-
-
-
-
-
-
-
-