2 import { ActionIcon, ChatMessageEditForm, ChatMessageUserBubble } from '$lib/components/app';
3 import { fadeInView } from '$lib/actions/fade-in-view.svelte';
4 import { ArrowUp, Edit, Trash2 } from '@lucide/svelte';
5 import { useMessageEditContext } from '$lib/hooks/use-message-edit-context.svelte';
10 extras?: DatabaseMessageExtra[];
11 onSendImmediately: () => void;
12 onEdit: (newContent: string, extras?: DatabaseMessageExtra[]) => void;
17 class: className = '',
25 const editCtx = useMessageEditContext({
26 getContent: () => content,
27 getExtras: () => extras,
28 onSave: (content, extras) => onEdit(content, extras)
34 aria-label="Pending user message"
35 class="group flex flex-col items-end gap-3 transition-opacity hover:opacity-80 md:gap-2 {className} sticky bottom-32"
38 {#if editCtx.isEditing}
39 <ChatMessageEditForm />
41 <ChatMessageUserBubble
44 textColorClass="text-muted-foreground"
45 cardBgClass="dark:bg-primary/8"
46 maxHeightStyle="overflow-wrap: anywhere; word-break: break-word;"
49 <div class="max-w-[80%]">
50 <div class="relative flex h-6 items-center justify-between">
51 <div class="right-0 flex items-center gap-2 opacity-100 transition-opacity">
53 class="pointer-events-auto inset-0 flex items-center gap-1 opacity-0 transition-all duration-150 group-hover:opacity-100"
55 <ActionIcon icon={Edit} tooltip="Edit" onclick={editCtx.handleEdit} />
56 <ActionIcon icon={Trash2} tooltip="Delete" onclick={onDelete} />
57 <ActionIcon icon={ArrowUp} tooltip="Send immediately" onclick={onSendImmediately} />