Spaces:
Sleeping
Sleeping
File size: 1,547 Bytes
194aaa5 | 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import React from 'react';
import type { Message } from '../../types';
import { MessageBubble } from './MessageBubble';
interface MessageListProps {
messages: Message[];
isStreaming: boolean;
documents: { id: string; filename: string }[];
selectedDocId: string | null;
messagesEndRef: React.RefObject<HTMLDivElement | null>;
onSourceClick: (filename: string, content: string, chunkIndex: number) => void;
}
export function MessageList({
messages,
isStreaming,
documents,
selectedDocId,
messagesEndRef,
onSourceClick,
}: MessageListProps) {
return (
<div className="messages-container">
{messages.length === 0 ? (
<div className="empty-state">
<h3>Welcome to <span>REDNOTE</span></h3>
<p>
Upload a document and select it to ask specific questions, or query all
uploaded context at once.
</p>
{documents.length > 0 && !selectedDocId && (
<p style={{ color: 'var(--red-hover)', fontSize: '0.85rem' }}>
Tip: Click a document on the left sidebar to focus questions specifically to it.
</p>
)}
</div>
) : (
messages.map((msg, index) => (
<MessageBubble
key={index}
message={msg}
isLastMessageStreaming={isStreaming && index === messages.length - 1}
onSourceClick={onSourceClick}
/>
))
)}
<div ref={messagesEndRef} />
</div>
);
}
|