import React from 'react'; import { X, ArrowUp } from 'lucide-react'; import { Button } from './ui/button'; import type { QueuedMessage } from './hooks/useQueue'; import { isTextPart } from '../types'; interface QueuedMessagesDisplayProps { messages: QueuedMessage[]; onEditMessage: (message: QueuedMessage) => void; onRemoveMessage: (messageId: string) => void; } /** * Displays queued messages with visual indicators and keyboard hints. */ export function QueuedMessagesDisplay({ messages, onEditMessage, onRemoveMessage, }: QueuedMessagesDisplayProps) { if (messages.length === 0) return null; // Extract text content from message const getMessageText = (message: QueuedMessage): string => { const textParts = message.content.filter(isTextPart).map((part) => part.text); return textParts.join(' ') || '[attachment]'; }; // Truncate text to max lines const truncateText = (text: string, maxLines: number = 2): string => { const lines = text.split('\n'); if (lines.length <= maxLines) { return text.length > 100 ? text.slice(0, 100) + '...' : text; } return lines.slice(0, maxLines).join('\n') + '...'; }; return (
{/* Header */}
{messages.length} message{messages.length !== 1 ? 's' : ''} queued
to edit
{/* Messages list */}
{messages.map((message, index) => (
{/* Arrow indicator */} {index === messages.length - 1 ? '↳' : '│'} {/* Message content */} {/* Remove button */}
))}
); }