Placeholder.svelte 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <script lang="ts">
  2. import { WEBUI_BASE_URL } from '$lib/constants';
  3. import { user } from '$lib/stores';
  4. import { onMount, getContext } from 'svelte';
  5. import Suggestions from '../MessageInput/Suggestions.svelte';
  6. const i18n = getContext('i18n');
  7. export let models = [];
  8. export let modelfiles = [];
  9. export let submitPrompt;
  10. export let suggestionPrompts;
  11. let modelfile = null;
  12. let selectedModelIdx = 0;
  13. $: modelfile =
  14. models[selectedModelIdx] in modelfiles ? modelfiles[models[selectedModelIdx]] : null;
  15. $: if (models.length > 0) {
  16. selectedModelIdx = models.length - 1;
  17. }
  18. </script>
  19. {#if models.length > 0}
  20. <div class="m-auto w-full max-w-3xl px-8 pb-24">
  21. <div class="flex justify-start">
  22. <div class="flex -space-x-4 mb-0.5">
  23. {#each models as model, modelIdx}
  24. <button
  25. on:click={() => {
  26. selectedModelIdx = modelIdx;
  27. }}
  28. >
  29. {#if model in modelfiles}
  30. <img
  31. src={modelfiles[model]?.imageUrl ?? `${WEBUI_BASE_URL}/static/favicon.png`}
  32. alt="modelfile"
  33. class=" size-[2.7rem] rounded-full border-[1px] border-gray-200 dark:border-none"
  34. draggable="false"
  35. />
  36. {:else}
  37. <img
  38. src={$i18n.language === 'dg-DG'
  39. ? `/doge.png`
  40. : `${WEBUI_BASE_URL}/static/favicon.png`}
  41. class=" size-[2.7rem] rounded-full border-[1px] border-gray-200 dark:border-none"
  42. alt="logo"
  43. draggable="false"
  44. />
  45. {/if}
  46. </button>
  47. {/each}
  48. </div>
  49. </div>
  50. <div
  51. class=" mt-2 mb-4 text-2xl text-gray-800 dark:text-gray-100 font-semibold text-left flex items-center gap-4"
  52. >
  53. <div>
  54. {#if modelfile}
  55. <span class=" capitalize">
  56. {modelfile.title}
  57. </span>
  58. <div class="mt-0.5 text-base font-normal text-gray-500 dark:text-gray-400">
  59. {modelfile.desc}
  60. </div>
  61. {#if modelfile.user}
  62. <div class="mt-0.5 text-sm font-normal text-gray-400 dark:text-gray-500">
  63. By <a href="https://openwebui.com/m/{modelfile.user.username}"
  64. >{modelfile.user.name ? modelfile.user.name : `@${modelfile.user.username}`}</a
  65. >
  66. </div>
  67. {/if}
  68. {:else}
  69. <div class=" line-clamp-1">{$i18n.t('Hello, {{name}}', { name: $user.name })}</div>
  70. <div class=" font-medium text-gray-400 dark:text-gray-500">
  71. {$i18n.t('How can I help you today?')}
  72. </div>
  73. {/if}
  74. </div>
  75. </div>
  76. <div class=" w-full">
  77. <Suggestions {suggestionPrompts} {submitPrompt} />
  78. </div>
  79. </div>
  80. {/if}