diff --git a/src/routes/chat/model-picker.svelte b/src/routes/chat/model-picker.svelte index 9cd584a..2ee41a2 100644 --- a/src/routes/chat/model-picker.svelte +++ b/src/routes/chat/model-picker.svelte @@ -32,23 +32,6 @@ import MicrosoftIcon from '~icons/simple-icons/microsoft'; import OpenaiIcon from '~icons/simple-icons/openai'; import XIcon from '~icons/simple-icons/x'; - import BrainIcon from '~icons/lucide/brain'; - import CpuIcon from '~icons/lucide/cpu'; - import ZapIcon from '~icons/lucide/zap'; - import Cohere from '$lib/components/icons/cohere.svelte'; - import Deepseek from '$lib/components/icons/deepseek.svelte'; - import { Popover } from 'melt/builders'; - import type { Component } from 'svelte'; - import LogosClaudeIcon from '~icons/logos/claude-icon'; - import LogosMistralAiIcon from '~icons/logos/mistral-ai-icon'; - import MaterialIconThemeGeminiAi from '~icons/material-icon-theme/gemini-ai'; - import { capitalize } from '$lib/utils/strings'; - import { supportsImages } from '$lib/utils/model-capabilities'; - import { models as modelsState } from '$lib/state/models.svelte'; - import { Provider } from '$lib/types'; - import Tooltip from '$lib/components/ui/tooltip.svelte'; - import fuzzysearch from '$lib/utils/fuzzy-search'; - import { IsMobile } from '$lib/hooks/is-mobile.svelte'; type Props = { class?: string; @@ -139,12 +122,10 @@ return 'other'; } - let search = $state(''); - const filteredModels = $derived( fuzzysearch({ haystack: enabledArr, - needle: search, + needle: gridCommand.inputValue, property: 'model_id', }) ); @@ -257,11 +238,7 @@ {...popover.content} class="border-border bg-popover mt-1 max-h-200 min-w-80 flex-col overflow-hidden rounded-xl border p-0 backdrop-blur-sm data-[open]:flex" > - +
- - - - No models available. Enable some models in the account settings. - - {#each groupedModels as [company, models] (company)} - - - {company} - - - {#each models as model (model._id)} - {@const isSelected = settings.modelId === model.model_id} - {@const formatted = formatModelName(model.model_id)} - {#if isMobile.current} - selectModel(model.model_id)} - class={cn( - 'border-border flex h-10 items-center justify-between rounded-lg border p-2', - 'relative scroll-m-2 select-none', - 'data-selected:bg-accent/50 data-selected:text-accent-foreground', - isSelected && 'border-reflect border-none' - )} - > -
- {#if getModelIcon(model.model_id)} - {@const ModelIcon = getModelIcon(model.model_id)} - - {/if} -

- {formatted.full} -

-
+
+ {#each groupedModels as [company, models] (company)} +
+

+ {company} +

+
+ {#each models as model (model._id)} + {@const isSelected = settings.modelId === model.model_id} + {@const formatted = formatModelName(model.model_id)} + {@const openRouterModel = modelsState + .from(Provider.OpenRouter) + .find((m) => m.id === model.model_id)} - {@const openRouterModel = modelsState - .from(Provider.OpenRouter) - .find((m) => m.id === model.model_id)} - {#if openRouterModel && supportsImages(openRouterModel)} - - {#snippet trigger(tooltip)} -
- -
- {/snippet} - Supports image anaylsis -
- {/if} - - {:else} - selectModel(model.model_id)} - class={cn( - 'border-border flex h-40 w-32 flex-col items-center justify-center rounded-lg border p-2', - 'relative select-none', - 'data-selected:bg-accent/50 data-selected:text-accent-foreground', - isSelected && 'border-reflect border-none' - )} - > + {#if isMobile.current} +
+
{#if getModelIcon(model.model_id)} {@const ModelIcon = getModelIcon(model.model_id)} {/if} -

- {formatted.primary} -

-

- {formatted.secondary} +

+ {formatted.full}

+
- {@const openRouterModel = modelsState - .from(Provider.OpenRouter) - .find((m) => m.id === model.model_id)} - {#if openRouterModel && supportsImages(openRouterModel)} - - {#snippet trigger(tooltip)} -
- -
- {/snippet} - Supports image anaylsis -
- {/if} - - {/if} - {/each} - - - {/each} - - - + {#if openRouterModel && supportsImages(openRouterModel)} + + {#snippet trigger(tooltip)} +
+ +
+ {/snippet} + Supports image anaylsis +
+ {/if} +
+ {:else} +
+ {#if getModelIcon(model.model_id)} + {@const ModelIcon = getModelIcon(model.model_id)} + + {/if} +

+ {formatted.primary} +

+

+ {formatted.secondary} +

+ + {#if openRouterModel && supportsImages(openRouterModel)} + + {#snippet trigger(tooltip)} +
+ +
+ {/snippet} + Supports image anaylsis +
+ {/if} +
+ {/if} + {/each} +
+
+ {/each} +
+
{/if}