File size: 1,198 Bytes
d870750
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import Image from 'next/image'

export default function MessageBubble({ message, isLast }) {
  const isUser = message.role === 'user'
  const hasImage = Array.isArray(message.content) && 
    message.content.some(item => item.type === 'image_url')
  
  const textContent = Array.isArray(message.content)
    ? message.content.find(item => item.type === 'text')?.text || ''
    : message.content

  const imageContent = Array.isArray(message.content)
    ? message.content.find(item => item.type === 'image_url')
    : null

  return (
    <div className={`flex ${isUser ? 'justify-end' : 'justify-start'} mb-4`}>
      <div className={`message-bubble ${isUser ? 'user-bubble' : 'assistant-bubble'} ${!textContent && imageContent ? 'p-0 overflow-hidden' : ''}`}>
        {imageContent && (
          <div className="mb-2">
            <Image
              src={imageContent.image_url.url}
              alt="Uploaded image"
              width={200}
              height={200}
              className="rounded-lg object-cover"
            />
          </div>
        )}
        {textContent && (
          <p className="whitespace-pre-wrap">{textContent}</p>
        )}
      </div>
    </div>
  )
}