39 lines
996 B
TypeScript
39 lines
996 B
TypeScript
import block from 'bem-css-modules';
|
|
import React, { ReactNode } from 'react';
|
|
|
|
import { IChatMessage } from '@docuservix/models/chat';
|
|
|
|
import { Message } from './Message';
|
|
import styles from './Messages.module.css';
|
|
|
|
const b = block(styles, 'Messages');
|
|
|
|
interface MessagesProps {
|
|
messages: IChatMessage[];
|
|
typing?: boolean;
|
|
}
|
|
|
|
export function Messages({ messages, typing }: MessagesProps): ReactNode {
|
|
return (
|
|
<div className={b()}>
|
|
{messages.map((msg, i) => (
|
|
<Message
|
|
key={i}
|
|
role={msg.role}
|
|
content={msg.content}
|
|
/>
|
|
))}
|
|
|
|
{typing && (
|
|
<div className={b('typing')}>
|
|
<div className={b('typingIndicator')}>
|
|
<span></span>
|
|
<span></span>
|
|
<span></span>
|
|
</div>
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|