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 5bfaa3693c..4ffdd01f67 100644 --- a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte @@ -43,6 +43,8 @@ showOrgName = true }: Props = $props(); let render = $derived(renderOption ?? defaultOption); + // a local-only install is one list: favorites first, then the rest, no headings + let localOnly = $derived(groups.providers.length === 0); // section headers stick right below the search/tabs block of the dropdown // scrollport; `--dropdown-sticky-height` is set by DropdownMenuSearchable // and falls back to 0 in surfaces without one (the mobile sheet) @@ -84,22 +86,28 @@ {/snippet} {#if favorites.length > 0} - - - {#snippet trigger()} - - - Favorites - {/snippet} - + {#if localOnly} {#each favorites as item (`fav-${item.option.id}`)} {@render render(item, !showOrgName)} {/each} - + {:else} + + + {#snippet trigger()} + + + Favorites + {/snippet} + + {#each favorites as item (`fav-${item.option.id}`)} + {@render render(item, !showOrgName)} + {/each} + + {/if} {/if} {#if getDownloadEntries.length > 0} @@ -110,29 +118,37 @@ {/each} {/if} -{#if groups.loaded.length > 0 || groups.available.length > 0} - - - {#snippet trigger()} - +{#snippet localRows()} + + {#each groups.loaded as item (`loaded-${item.option.id}`)} + {@render render(item, !showOrgName)} + {/each} - Local models - {/snippet} - - {#each groups.loaded as item (`loaded-${item.option.id}`)} + {#each groups.available as group (group.orgName)} + {#each group.items as item (item.option.id)} {@render render(item, !showOrgName)} {/each} + {/each} +{/snippet} - {#each groups.available as group (group.orgName)} - {#each group.items as item (item.option.id)} - {@render render(item, !showOrgName)} - {/each} - {/each} - +{#if groups.loaded.length > 0 || groups.available.length > 0} + {#if localOnly} + {@render localRows()} + {:else} + + {#snippet trigger()} + + + Local models + {/snippet} + + {@render localRows()} + + {/if} {/if}