diff --git a/tools/ui/src/lib/components/app/dialogs/DialogModelsDiscover.svelte b/tools/ui/src/lib/components/app/dialogs/DialogModelsDiscover.svelte index 8b5a5bb3d6..80f330f834 100644 --- a/tools/ui/src/lib/components/app/dialogs/DialogModelsDiscover.svelte +++ b/tools/ui/src/lib/components/app/dialogs/DialogModelsDiscover.svelte @@ -1,9 +1,6 @@ @@ -59,40 +20,6 @@ class="grid gap-0 p-0 md:h-[calc(100vh-4rem)]! md:max-h-240! md:w-[calc(100vw-4rem)]! md:max-w-360!" style="grid-template-columns: auto 1fr;" > - - -
- {#if selectedId} - - {/if} -
+
diff --git a/tools/ui/src/lib/components/app/models/discover/ModelsDiscover.svelte b/tools/ui/src/lib/components/app/models/discover/ModelsDiscover.svelte new file mode 100644 index 0000000000..c8dee5d76a --- /dev/null +++ b/tools/ui/src/lib/components/app/models/discover/ModelsDiscover.svelte @@ -0,0 +1,70 @@ + + + + +
+ {#if selectedId} + + {/if} +
diff --git a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsDownloadOptions.svelte b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsDownloadOptions.svelte index 160e66372c..3c003c7817 100644 --- a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsDownloadOptions.svelte +++ b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsDownloadOptions.svelte @@ -1,7 +1,7 @@ {#if bitDepthRows.length} -
-
-

- - Download options +
+
+

+ + Downloadable options

-
+
{#each bitDepthRows as row (row.bitDepth)} -
-
+
+
{#if row.bitDepth === 99} Other {:else} {row.bitDepth}-bit {/if}
-
+
{#each row.files as file (file.path)} {@const meta = HuggingFaceService.extractQuantMeta(file.path)} {@const basename = file.path.split('/').pop() ?? file.path} @@ -180,6 +178,7 @@ {label} + {#if isDownloading && progress && progress.totalBytes > 0} {Math.round((progress.downloadedBytes / progress.totalBytes) * 100)}% diff --git a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsHeader.svelte b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsHeader.svelte index d62ef4e77b..e8691ec6b3 100644 --- a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsHeader.svelte +++ b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsHeader.svelte @@ -2,20 +2,12 @@ import ModelsDiscoverAvatar from './ModelsDiscoverAvatar.svelte'; import ModelsDiscoverChatTemplateDialog from './ModelsDiscoverChatTemplateDialog.svelte'; import ModelsDiscoverDetailsName from './ModelsDiscoverDetailsName.svelte'; - import { - Download, - ExternalLink, - Heart, - Image, - Lightbulb, - MessageSquareCode, - Wrench - } from '@lucide/svelte'; - import * as Tooltip from '$lib/components/ui/tooltip'; + import { Download, ExternalLink, Heart, MessageSquareCode } from '@lucide/svelte'; import { HuggingFaceService } from '$lib/services'; import { modelsHubStore } from '$lib/stores'; import type { HfModelDetailInfo, HfModelGguf } from '$lib/types/huggingface'; import { formatParameters } from '$lib/utils'; + import { ICON_CLASS_DEFAULT, ICON_CLASS_SM } from '$lib/constants'; interface Props { modelId: string; @@ -50,16 +42,26 @@ @@ -85,38 +87,42 @@

{description}

{/if} - +
{#if gguf?.total} - - {formatParameters(gguf.total)} params - - {/if} - {#if gguf?.architecture} - - {gguf.architecture.replace(/_/g, ' ')} + + Model size + {formatParameters(gguf.total)} params {/if} {#if gguf?.context_length} - - {gguf.context_length.toLocaleString()} ctx + + Context + {gguf.context_length.toLocaleString()} + + {/if} + {#if gguf?.architecture} + + Architecture + {gguf.architecture} {/if} {#if gguf?.chat_template} {/if} {#if licenseTag} + + License + {licenseTag} + - {licenseTag} {/if} {#if details.gated === true} @@ -127,42 +133,6 @@ {/if}
- - - {#if hasVision || hasTools || hasReasoning} -
- {#if hasVision} - - - - - -

Vision

-
-
- {/if} - {#if hasTools} - - - - - -

Tool use

-
-
- {/if} - {#if hasReasoning} - - - - - -

Reasoning

-
-
- {/if} -
- {/if} {#if gguf?.chat_template} diff --git a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsName.svelte b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsName.svelte index 4e41721d0b..b4cc04c700 100644 --- a/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsName.svelte +++ b/tools/ui/src/lib/components/app/models/discover/ModelsDiscoverDetailsName.svelte @@ -1,29 +1,59 @@

{modelId}

- + + {#if hasVision || hasTools || hasReasoning} +
+ {#if hasVision} + + + + + +

Vision

+
+
+ {/if} + {#if hasTools} + + + + + +

Tool use

+
+
+ {/if} + {#if hasReasoning} + + + + + +

Reasoning

+
+
+ {/if} +
+ {/if}
{#if baseModels.length} 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 b52ca871dd..29b2f26275 100644 --- a/tools/ui/src/lib/components/app/models/discover/index.ts +++ b/tools/ui/src/lib/components/app/models/discover/index.ts @@ -7,6 +7,15 @@ * */ +/** + * **ModelsDiscover** - Models hub explorer + * + * The complete discovery layout: a sidebar search + model list on the left and a + * detail view for the selected model on the right. Used as the body of the + * discovery dialog. + */ +export { default as ModelsDiscover } from './ModelsDiscover.svelte'; + /** * **ModelsDiscoverList** - Sidebar model list * @@ -57,8 +66,9 @@ export { default as ModelsDiscoverDetailsHeader } from './ModelsDiscoverDetailsH /** * **ModelsDiscoverDetailsName** - Model name block * - * Shows the quant model name with a copy button, and the base model name with a - * smaller external-link icon on the line below. + * Shows the quant model name with capability icons (vision, tool use, + * reasoning) beside it, and the base model name with a smaller external-link + * icon on the line below. */ export { default as ModelsDiscoverDetailsName } from './ModelsDiscoverDetailsName.svelte';