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