import { Message, OpenAIModel, OpenAIModelNames } 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 { model: OpenAIModel; messages: Message[]; messageIsStreaming: boolean; loading: boolean; lightMode: "light" | "dark"; onSend: (message: Message) => void; onSelect: (model: OpenAIModel) => void; } export const Chat: FC = ({ model, messages, messageIsStreaming, loading, lightMode, onSend, onSelect }) => { const messagesEndRef = useRef(null); const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: "auto" }); }; useEffect(() => { scrollToBottom(); }, [messages]); return (
{messages.length === 0 ? ( <>
Chatbot UI
) : ( <>
Model: {OpenAIModelNames[model]}
{messages.map((message, index) => ( ))} {loading && }
)}
); };