|
<script lang="ts"> |
|
import Bolt from '$lib/components/icons/Bolt.svelte'; |
|
import { onMount, getContext, createEventDispatcher } from 'svelte'; |
|
|
|
const i18n = getContext('i18n'); |
|
const dispatch = createEventDispatcher(); |
|
|
|
export let suggestionPrompts = []; |
|
export let className = ''; |
|
|
|
let prompts = []; |
|
|
|
$: prompts = (suggestionPrompts ?? []) |
|
.reduce((acc, current) => [...acc, ...[current]], []) |
|
.sort(() => Math.random() - 0.5); |
|
</script> |
|
|
|
{#if prompts.length > 0} |
|
<div class="mb-1 flex gap-1 text-sm font-medium items-center text-gray-400 dark:text-gray-600"> |
|
<Bolt /> |
|
{$i18n.t('Suggested')} |
|
</div> |
|
{/if} |
|
|
|
<div class=" h-40 max-h-full overflow-auto scrollbar-none {className}"> |
|
{#each prompts as prompt, promptIdx} |
|
<button |
|
class="flex flex-col flex-1 shrink-0 w-full justify-between px-3 py-2 rounded-xl bg-transparent hover:bg-black/5 dark:hover:bg-white/5 transition group" |
|
on:click={() => { |
|
dispatch('select', prompt.content); |
|
}} |
|
> |
|
<div class="flex flex-col text-left"> |
|
{#if prompt.title && prompt.title[0] !== ''} |
|
<div |
|
class=" font-medium dark:text-gray-300 dark:group-hover:text-gray-200 transition line-clamp-1" |
|
> |
|
{prompt.title[0]} |
|
</div> |
|
<div class="text-xs text-gray-500 font-normal line-clamp-1">{prompt.title[1]}</div> |
|
{:else} |
|
<div |
|
class=" font-medium dark:text-gray-300 dark:group-hover:text-gray-200 transition line-clamp-1" |
|
> |
|
{prompt.content} |
|
</div> |
|
|
|
<div class="text-xs text-gray-500 font-normal line-clamp-1">Prompt</div> |
|
{/if} |
|
</div> |
|
</button> |
|
{/each} |
|
</div> |
|
|