Spaces:
Build error
Build error
Upload components/MessageBubble.jsx with huggingface_hub
Browse files- components/MessageBubble.jsx +36 -0
components/MessageBubble.jsx
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import Image from 'next/image'
|
| 2 |
+
|
| 3 |
+
export default function MessageBubble({ message, isLast }) {
|
| 4 |
+
const isUser = message.role === 'user'
|
| 5 |
+
const hasImage = Array.isArray(message.content) &&
|
| 6 |
+
message.content.some(item => item.type === 'image_url')
|
| 7 |
+
|
| 8 |
+
const textContent = Array.isArray(message.content)
|
| 9 |
+
? message.content.find(item => item.type === 'text')?.text || ''
|
| 10 |
+
: message.content
|
| 11 |
+
|
| 12 |
+
const imageContent = Array.isArray(message.content)
|
| 13 |
+
? message.content.find(item => item.type === 'image_url')
|
| 14 |
+
: null
|
| 15 |
+
|
| 16 |
+
return (
|
| 17 |
+
<div className={`flex ${isUser ? 'justify-end' : 'justify-start'} mb-4`}>
|
| 18 |
+
<div className={`message-bubble ${isUser ? 'user-bubble' : 'assistant-bubble'} ${!textContent && imageContent ? 'p-0 overflow-hidden' : ''}`}>
|
| 19 |
+
{imageContent && (
|
| 20 |
+
<div className="mb-2">
|
| 21 |
+
<Image
|
| 22 |
+
src={imageContent.image_url.url}
|
| 23 |
+
alt="Uploaded image"
|
| 24 |
+
width={200}
|
| 25 |
+
height={200}
|
| 26 |
+
className="rounded-lg object-cover"
|
| 27 |
+
/>
|
| 28 |
+
</div>
|
| 29 |
+
)}
|
| 30 |
+
{textContent && (
|
| 31 |
+
<p className="whitespace-pre-wrap">{textContent}</p>
|
| 32 |
+
)}
|
| 33 |
+
</div>
|
| 34 |
+
</div>
|
| 35 |
+
)
|
| 36 |
+
}
|