Settings.svelte 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <script lang="ts">
  2. import { getContext } from 'svelte';
  3. const i18n = getContext('i18n');
  4. import XMark from '$lib/components/icons/XMark.svelte';
  5. import { models } from '$lib/stores';
  6. export let show = false;
  7. export let selectedModelId = '';
  8. </script>
  9. <div class="flex items-center mb-1.5 pt-1.5">
  10. <div class=" -translate-x-1.5 flex items-center">
  11. <button
  12. class="p-0.5 bg-transparent transition rounded-lg"
  13. on:click={() => {
  14. show = !show;
  15. }}
  16. >
  17. <XMark className="size-5" strokeWidth="2.5" />
  18. </button>
  19. </div>
  20. <div class=" font-medium text-base flex items-center gap-1">
  21. <div>
  22. {$i18n.t('Settings')}
  23. </div>
  24. </div>
  25. </div>
  26. <div class="mt-1">
  27. <div>
  28. <div class=" text-xs font-medium mb-1">Model</div>
  29. <div class="w-full">
  30. <select class="w-full bg-transparent text-sm outline-hidden" bind:value={selectedModelId}>
  31. <option value="" class="bg-gray-50 dark:bg-gray-700" disabled>
  32. {$i18n.t('Select a model')}
  33. </option>
  34. {#each $models.filter((model) => !(model?.info?.meta?.hidden ?? false)) as model}
  35. <option value={model.id} class="bg-gray-50 dark:bg-gray-700">{model.name}</option>
  36. {/each}
  37. </select>
  38. </div>
  39. </div>
  40. </div>