import React, { useState, useRef, useEffect } from "react";
import ChatWindow from "./ChatWindow";
import './ChatArea.css';
const ChatArea = ({ chatHistory, onSendMessage, isProcessing }) => {
const [inputValue, setInputValue] = useState("");
const inputRef = useRef(null);
const chatScrollRef = useRef(null);
const handleSendMessage = (e) => {
e.preventDefault();
if (inputValue.trim() !== "") {
onSendMessage(inputValue);
setInputValue("");
}
};
// Scroll chat to bottom on new message
useEffect(() => {
if (chatScrollRef.current) {
chatScrollRef.current.scrollTop = chatScrollRef.current.scrollHeight;
}
}, [chatHistory]);
return (
<div className="flex flex-col chat-area-fixed-height">
{/* Scrollable ChatWindow */}
<div ref={chatScrollRef} className="flex-grow overflow-y-auto">
<ChatWindow chatHistory={chatHistory} />
</div>
{/* Sticky Input */}
<div className="p-2 bg-transparent sticky bottom-0 left-0 z-10">
<form onSubmit={handleSendMessage} className="flex items-center space-x-2">
<input
ref={inputRef}
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
disabled={isProcessing}
className="flex-grow p-3 rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-indigo-500"
placeholder={isProcessing ? "AI is thinking..." : "Type a message..."}
/>
<button
type="submit"
disabled={isProcessing}
className={`p-3 rounded-lg text-white font-bold transition-colors flex-shrink-0 ${
isProcessing
? "bg-gray-400 dark:bg-gray-600 cursor-not-allowed"
: "bg-indigo-600 hover:bg-indigo-700"
}`}
>
Send
</button>
</form>
</div>
</div>
);
};
export default ChatArea;