N/A

ChatMessage

Render a single chat message with AI SDK parts, actions, and layout control for Nuxt chat interfaces.

Hello! How can I help you today?

Can you explain what Vue composables are?

Installation

pnpm dlx shadcn-vue@latest add "https://ui.stackhacker.io/r/chat-message.json"

Usage

<script setup lang="ts">
import { ChatMessage } from '@/components/ui/chat-message'
</script>

<template>
  <ChatMessage
    id="1"
    role="assistant"
    :parts="[{ type: 'text', text: 'Hello!' }]"
    side="left"
  />
</template>

Examples

Default

Hello! How can I help you today?

Can you explain what Vue composables are?

API Reference

Props

PropTypeDefaultDescription
idstringMessage ID.
role'user' | 'assistant' | 'system'Message role.
partsUIMessage['parts']Message parts from AI SDK.
side'left' | 'right''left'Which side to render the message.
actionsChatMessageAction[][]Action buttons shown on hover.
classstringAdditional CSS classes.

Slots

SlotPropsDescription
leadingContent rendered before the message (e.g., avatar).
content{ id, role, parts }Custom message content renderer.

Types

interface ChatMessageAction {
  label: string
  icon: string
  onClick?: (e: MouseEvent, message: UIMessage) => void
}