Placeholder.svelte 2.52 KB
Newer Older
1
<script lang="ts">
2
	import { WEBUI_BASE_URL } from '$lib/constants';
Timothy J. Baek's avatar
Timothy J. Baek committed
3
	import { user } from '$lib/stores';
4
	import { onMount, getContext } from 'svelte';
Timothy J. Baek's avatar
Timothy J. Baek committed
5
	import Suggestions from '../MessageInput/Suggestions.svelte';
6
7

	const i18n = getContext('i18n');
8
9
10
11

	export let models = [];
	export let modelfiles = [];

Timothy J. Baek's avatar
Timothy J. Baek committed
12
13
14
	export let submitPrompt;
	export let suggestionPrompts;

15
16
17
18
19
20
21
22
23
24
25
26
	let modelfile = null;
	let selectedModelIdx = 0;

	$: modelfile =
		models[selectedModelIdx] in modelfiles ? modelfiles[models[selectedModelIdx]] : null;

	$: if (models.length > 0) {
		selectedModelIdx = models.length - 1;
	}
</script>

{#if models.length > 0}
Timothy J. Baek's avatar
Timothy J. Baek committed
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
	<div class=" my-auto text-center pb-10 md:pb-24">
		<div class="m-auto max-w-3xl px-8">
			<div class="flex justify-start mt-8">
				<div class="flex -space-x-4 mb-1">
					{#each models as model, modelIdx}
						<button
							on:click={() => {
								selectedModelIdx = modelIdx;
							}}
						>
							{#if model in modelfiles}
								<img
									src={modelfiles[model]?.imageUrl ?? `${WEBUI_BASE_URL}/static/favicon.png`}
									alt="modelfile"
									class=" size-12 rounded-full border-[1px] border-gray-200 dark:border-none"
									draggable="false"
								/>
							{:else}
								<img
									src={$i18n.language === 'dg-DG'
										? `/doge.png`
										: `${WEBUI_BASE_URL}/static/favicon.png`}
									class=" size-12 rounded-full border-[1px] border-gray-200 dark:border-none"
									alt="logo"
									draggable="false"
								/>
							{/if}
						</button>
					{/each}
				</div>
57
			</div>
Timothy J. Baek's avatar
Timothy J. Baek committed
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
			<div
				class=" mt-2 mb-3.5 text-2xl text-gray-800 dark:text-gray-100 font-semibold text-left flex items-center gap-4"
			>
				<div>
					{#if modelfile}
						<span class=" capitalize">
							{modelfile.title}
						</span>
						<div class="mt-0.5 text-base font-normal text-gray-500 dark:text-gray-400">
							{modelfile.desc}
						</div>
						{#if modelfile.user}
							<div class="mt-0.5 text-sm font-normal text-gray-400 dark:text-gray-500">
								By <a href="https://openwebui.com/m/{modelfile.user.username}"
									>{modelfile.user.name ? modelfile.user.name : `@${modelfile.user.username}`}</a
								>
							</div>
						{/if}
					{:else}
						<div class=" line-clamp-1">{$i18n.t('Hello, {{name}}', { name: $user.name })}</div>

						<div class=" font-medium text-gray-400 dark:">
							{$i18n.t('How can I help you today?')}
						</div>
					{/if}
83
				</div>
Timothy J. Baek's avatar
Timothy J. Baek committed
84
			</div>
Timothy J. Baek's avatar
Timothy J. Baek committed
85

Timothy J. Baek's avatar
Timothy J. Baek committed
86
87
88
			<div class=" max-w-full">
				<Suggestions {suggestionPrompts} {submitPrompt} />
			</div>
89
90
91
		</div>
	</div>
{/if}