ChattisVani / src /components /message-bubble.tsx
sameerbanchhor's picture
Upload folder using huggingface_hub
ba76bdd verified
"use client";
import type { Message } from '@/lib/types';
import { cn } from '@/lib/utils';
import { Avatar, AvatarFallback } from '@/components/ui/avatar';
import { Bot, User } from 'lucide-react';
import Image from 'next/image';
interface MessageBubbleProps {
message: Message;
}
export default function MessageBubble({ message }: MessageBubbleProps) {
const isUser = message.role === 'user';
return (
<div
className={cn(
'flex items-start gap-4 my-4',
isUser ? 'justify-end' : 'justify-start'
)}
>
{!isUser && (
<Avatar className="h-8 w-8 shrink-0">
<AvatarFallback className="bg-primary text-primary-foreground">
<Bot className="h-5 w-5" />
</AvatarFallback>
</Avatar>
)}
<div
className={cn(
'max-w-[75%] rounded-lg p-3 text-sm shadow-md',
isUser
? 'bg-primary text-primary-foreground'
: 'bg-muted'
)}
>
{message.imageUrl && (
<Image
src={message.imageUrl}
alt="Uploaded content"
width={300}
height={300}
className="rounded-md mb-2 object-cover"
/>
)}
<p className="whitespace-pre-wrap leading-relaxed">
{message.content}
</p>
</div>
{isUser && (
<Avatar className="h-8 w-8 shrink-0">
<AvatarFallback className="bg-accent">
<User className="h-5 w-5" />
</AvatarFallback>
</Avatar>
)}
</div>
);
}