import TypingDots from "./TypingDots"; import type { Message } from "../../lib/types"; export default function ChatPanel({ messages, draft, setDraft, isStreaming, hasFirstToken, chatBodyRef, onSend, pendingThumb, onAttachClick, onClearAttach, isUploading, }: { messages: Message[]; draft: string; setDraft: (s: string) => void; isStreaming: boolean; hasFirstToken: boolean; chatBodyRef: React.RefObject; onSend: () => void; pendingThumb?: string | null; onAttachClick: () => void; onClearAttach: () => void; isUploading: boolean; }) { return (
Assistant
{messages.length === 0 ? (
Try: “Flooded underpass here”, or “List reports near me”.
) : ( messages.map((m, idx) => (
{isStreaming && !hasFirstToken && idx === messages.length - 1 && m.role === "assistant" ? (
) : ( <> {m.text} {m.image && (
attachment
)} )}
)) )}
setDraft(e.target.value)} onKeyDown={(e) => e.key === "Enter" && onSend()} /> {pendingThumb && (
attachment
)}
); }