Suggestions.svelte 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <script lang="ts">
  2. export let submitPrompt: Function;
  3. export let suggestionPrompts = [];
  4. let prompts = [];
  5. $: prompts =
  6. suggestionPrompts.length <= 4
  7. ? suggestionPrompts
  8. : suggestionPrompts.sort(() => Math.random() - 0.5).slice(0, 4);
  9. </script>
  10. <div class=" flex flex-wrap-reverse mb-3 md:p-1 text-left w-full">
  11. {#each prompts as prompt, promptIdx}
  12. <div
  13. class="{promptIdx > 1 ? 'hidden sm:inline-flex' : ''} basis-full sm:basis-1/2 p-[5px] px-2"
  14. >
  15. <button
  16. class=" flex-1 flex justify-between w-full h-full px-4 py-2.5 bg-white hover:bg-gray-50 dark:bg-gray-900 dark:hover:bg-gray-700 outline outline-1 outline-gray-200 dark:outline-gray-800 rounded-lg transition group"
  17. on:click={() => {
  18. submitPrompt(prompt.content);
  19. }}
  20. >
  21. <div class="flex flex-col text-left self-center">
  22. {#if prompt.title && prompt.title[0] !== ''}
  23. <div class="text-sm font-medium dark:text-gray-300">{prompt.title[0]}</div>
  24. <div class="text-sm text-gray-500 line-clamp-1">{prompt.title[1]}</div>
  25. {:else}
  26. <div class=" self-center text-sm font-medium dark:text-gray-300 line-clamp-2">
  27. {prompt.content}
  28. </div>
  29. {/if}
  30. </div>
  31. <div
  32. class="self-center p-1 rounded-lg text-white group-hover:bg-gray-100 group-hover:text-gray-800 dark:group-hover:bg-gray-800 dark:group-hover:text-gray-100 dark:text-gray-900 transition"
  33. >
  34. <svg
  35. xmlns="http://www.w3.org/2000/svg"
  36. viewBox="0 0 16 16"
  37. fill="currentColor"
  38. class="w-4 h-4"
  39. >
  40. <path
  41. fill-rule="evenodd"
  42. d="M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z"
  43. clip-rule="evenodd"
  44. />
  45. </svg>
  46. </div>
  47. </button>
  48. </div>
  49. {/each}
  50. </div>