{backend.name}
diff --git a/tools/ui/src/lib/components/app/backends/BackendIcon.svelte b/tools/ui/src/lib/components/app/backends/BackendIcon.svelte index d8dc6be131..c221a36c65 100644 --- a/tools/ui/src/lib/components/app/backends/BackendIcon.svelte +++ b/tools/ui/src/lib/components/app/backends/BackendIcon.svelte @@ -2,6 +2,7 @@ import BackendPresetIcon from './BackendPresetIcon.svelte'; import type { Backend } from '$lib/types'; import { backendFaviconUrl, findBackendPreset } from '$lib/utils'; + import type { Snippet } from 'svelte'; import { SvelteSet } from 'svelte/reactivity'; /** Favicons that failed to load, so a row remount does not ask again. */ @@ -10,9 +11,11 @@ interface Props { backend?: Backend; class?: string; + /** Rendered when the backend has neither a bundled mark nor a favicon. */ + fallback?: Snippet; } - let { backend, class: className = 'h-4 w-4' }: Props = $props(); + let { backend, class: className = 'h-4 w-4', fallback }: Props = $props(); let preset = $derived(backend ? findBackendPreset(backend.baseUrl) : undefined); let faviconUrl = $derived(preset || !backend ? null : backendFaviconUrl(backend.baseUrl)); @@ -29,4 +32,6 @@ onerror={() => failedFavicons.add(faviconUrl)} src={faviconUrl} /> +{:else} + {@render fallback?.()} {/if} diff --git a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte index c523b48a00..5bfaa3693c 100644 --- a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte @@ -3,12 +3,13 @@ import { ChevronLeft, CircleAlert, Heart, Loader2 } from '@lucide/svelte'; import { ModelsSelectorOption } from '$lib/components/app'; import { CollapsibleSection } from '$lib/components/app'; - import { BackendPresetIcon } from '$lib/components/app/backends'; + import { BackendIcon } from '$lib/components/app/backends'; import { DialogConfirmDownload } from '$lib/components/app/dialogs'; import Logo from '$lib/components/app/misc/Logo.svelte'; import type { GroupedModelOptions, ModelItem } from '$lib/components/app/navigation/utils'; import { ModelDownloadConfirmAction } from '$lib/enums'; import { modelsStore } from '$lib/stores'; + import { getBackend } from '$lib/utils/api-base'; interface Props { groups: GroupedModelOptions; @@ -153,9 +154,7 @@ {/if} - {#if provider.preset} -