import { Button, Group, Textarea } from "@mantine/core"; import { usePubSub } from "create-pubsub/react"; import { Suspense, lazy } from "react"; import { chatGenerationStatePubSub, chatInputPubSub, followUpQuestionPubSub, } from "../../modules/pubSub"; const IconSend = lazy(() => import("@tabler/icons-react").then((module) => ({ default: module.IconSend, })), ); interface ChatInputAreaProps { onKeyDown: (event: React.KeyboardEvent) => void; handleSend: (textToSend?: string) => void; } function ChatInputArea({ onKeyDown, handleSend }: ChatInputAreaProps) { const [input, setInput] = usePubSub(chatInputPubSub); const [generationState] = usePubSub(chatGenerationStatePubSub); const [followUpQuestion] = usePubSub(followUpQuestionPubSub); const isGenerating = generationState.isGeneratingResponse && !generationState.isGeneratingFollowUpQuestion; const placeholder = followUpQuestion || "Anything else you would like to know?"; const onChange = (event: React.ChangeEvent) => { setInput(event.target.value); }; const handleKeyDownWithPlaceholder = ( event: React.KeyboardEvent, ) => { if (input.trim() === "" && followUpQuestion) { if (event.key === "Enter" && !event.shiftKey) { event.preventDefault(); handleSend(followUpQuestion); return; } } onKeyDown(event); }; const handleSendWithPlaceholder = () => { if (input.trim() === "" && followUpQuestion) { handleSend(followUpQuestion); } else { handleSend(); } }; return (