Spaces:
Running
Running
File size: 907 Bytes
ff6ab6d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import { useRef, useEffect } from 'preact/hooks';
import { useChat } from '../hooks/useChat';
import ChatHeader from './ChatHeader';
import MessageList from './MessageList';
import TypingIndicator from './TypingIndicator';
import ChatInput from './ChatInput';
export default function ChatPanel({ isOpen, onClose }) {
const { messages, isTyping, initialize, sendMessage } = useChat();
const initializedRef = useRef(false);
useEffect(() => {
if (isOpen && !initializedRef.current) {
initializedRef.current = true;
initialize();
}
}, [isOpen]);
return (
<div class={`chat-panel${isOpen ? ' open' : ''}`}>
<ChatHeader onClose={onClose} />
<MessageList messages={messages} />
<TypingIndicator active={isTyping} />
<ChatInput onSend={sendMessage} disabled={isTyping} />
</div>
);
}
|