import { Conversation, Message, OpenAIModel } from "@/types"; import { FC, useEffect, useRef } from "react"; import { ChatInput } from "./ChatInput"; import { ChatLoader } from "./ChatLoader"; import { ChatMessage } from "./ChatMessage"; import { ModelSelect } from "./ModelSelect"; interface Props { conversation: Conversation; models: OpenAIModel[]; messageIsStreaming: boolean; loading: boolean; lightMode: "light" | "dark"; onSend: (message: Message) => void; onModelChange: (conversation: Conversation, model: OpenAIModel) => void; } export const Chat: FC = ({ conversation, models, messageIsStreaming, loading, lightMode, onSend, onModelChange }) => { const messagesEndRef = useRef(null); const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: "auto" }); }; useEffect(() => { scrollToBottom(); }, [conversation.messages]); return (
{conversation.messages.length === 0 ? ( <>
onModelChange(conversation, model)} />
{loading ? "Loading..." : "Chatbot UI"}
) : ( <>
Model: {conversation.model.name}
{conversation.messages.map((message, index) => ( ))} {loading && }
)}
); };