import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"import { Bubble, BubbleContent } from "@/components/ui/bubble"import { Message, MessageAvatar, MessageContent } from "@/components/ui/message"
<Message> <MessageAvatar> <Avatar> <AvatarImage src="https://github.com/jvendramin.png" alt="@jvendramin" /> <AvatarFallback>CN</AvatarFallback> </Avatar> </MessageAvatar> <MessageContent> <Bubble> <BubbleContent>How can I help you today?</BubbleContent> </Bubble> </MessageContent></Message>
Note:Message owns the row layout: avatar, alignment, header, and footer.
Render the visible message surface inside it with
Bubble. For the scroll container around a
conversation, use MessageScroller.
Use MessageGroup to stack consecutive messages from the same sender. Render an empty MessageAvatar on the earlier messages to keep them aligned with the avatar on the last one.
I checked the registry addresses.
The component and example JSON now live under the UI registry.
The avatar slot, aligned to the bottom of the message. When the message has a MessageFooter, the avatar shifts up to stay aligned with the message surface instead of the footer.