Spaces:
Runtime error
Runtime error
File size: 2,656 Bytes
5c5d81b 7357f85 5c5d81b 9b4caaa 64cfbce 9b4caaa b1426d3 f48efbb 5c5d81b 5ac02d2 5c5d81b 5ac02d2 5c5d81b b924465 9b4caaa 5c5d81b 1a8c098 5c5d81b e7afcb4 5ac02d2 5c5d81b bbbc9a8 5c5d81b e30fa56 382cad0 73b6f4f 5c5d81b 556c447 5ac02d2 f39959c 5c5d81b 8c5a2cf 5ac02d2 5c5d81b 8c5a2cf 5c5d81b f39959c 5c5d81b ba9894c f48efbb ba9894c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
<script lang="ts">
import type { Conversation, ModelWithTokenizer } from "$lib/types.js";
import { createEventDispatcher } from "svelte";
import { models } from "$lib/state/models.svelte.js";
import IconCog from "~icons/carbon/settings";
import Avatar from "../avatar.svelte";
import GenerationConfig from "./generation-config.svelte";
import ModelSelectorModal from "./model-selector-modal.svelte";
import ProviderSelect from "./provider-select.svelte";
interface Props {
conversation: Conversation;
conversationIdx: number;
}
let { conversation = $bindable(), conversationIdx }: Props = $props();
const dispatch = createEventDispatcher<{ close: string }>();
let modelSelectorOpen = $state(false);
function changeModel(newModelId: ModelWithTokenizer["id"]) {
const model = models.all.find(m => m.id === newModelId);
if (!model) {
return;
}
conversation.model = model;
conversation.provider = undefined;
}
let nameSpace = $derived(conversation.model.id.split("/")[0] ?? "");
</script>
{#if modelSelectorOpen}
<ModelSelectorModal {conversation} onModelSelect={changeModel} onClose={() => (modelSelectorOpen = false)} />
{/if}
<div
class="{conversationIdx === 0
? 'mr-4 max-sm:ml-4'
: 'mx-4'} flex h-11 flex-none items-center gap-2 rounded-lg border border-gray-200/80 bg-white pr-2 pl-3 text-sm leading-none whitespace-nowrap shadow-xs *:flex-none max-sm:mt-4 dark:border-white/5 dark:bg-gray-800/70 dark:hover:bg-gray-800"
>
<Avatar orgName={nameSpace} size="md" />
<button class="flex-1! self-stretch text-left hover:underline" onclick={() => (modelSelectorOpen = true)}
>{conversation.model.id}</button
>
<button
class="borderdark:border-white/5 flex size-6 items-center justify-center rounded-sm bg-gray-50 text-xs hover:bg-gray-100 dark:bg-gray-700 dark:hover:bg-gray-600"
onclick={() => dispatch("close", conversation.model.id)}
>
✕
</button>
<button
class="borderdark:border-white/5 group relative flex size-6 items-center justify-center rounded-sm bg-gray-50 hover:bg-gray-100 dark:bg-gray-700 dark:hover:bg-gray-600"
>
<IconCog />
<GenerationConfig
bind:conversation
classNames="absolute top-7 min-w-[250px] z-10 right-3 bg-white dark:bg-gray-900 p-4 rounded-xl border border-gray-200 dark:border-gray-800 hidden group-focus:flex hover:flex"
/>
</button>
</div>
<div
class="{conversationIdx === 0
? 'mr-4 max-sm:ml-4'
: 'mx-4'} mt-2 h-11 text-sm leading-none whitespace-nowrap max-sm:mt-4"
>
<ProviderSelect
bind:conversation
class="rounded-lg border border-gray-200/80 bg-white dark:border-white/5 dark:bg-gray-800/70 dark:hover:bg-gray-800"
/>
</div>
|