

<Demo name="message/demos/message" />

## Installation [#installation]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npx shadcn@latest add @dotui/message
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm dlx shadcn@latest add @dotui/message
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn dlx shadcn@latest add @dotui/message
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun x shadcn@latest add @dotui/message
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## Usage [#usage]

```tsx
import { Message, MessageContent } from "@/ui/message"
```

```tsx
<Message align="end">
  <MessageContent>{/* bubbles, text, rich content */}</MessageContent>
</Message>
```

## Anatomy [#anatomy]

`Message` lays out one turn: `align` picks the side of the thread and flips
the row, so the `MessageAvatar` sits on the sender's side. `MessageContent`
is the content column — put a [Bubble](/docs/components/bubble) inside for
contained messages, or plain content for full-width assistant replies.
`MessageHeader` and `MessageFooter` carry metadata like the sender name,
timestamp, or delivery status, and consecutive messages from one sender stack
in a `MessageGroup`.

```tsx
import {
  Message,
  MessageAvatar,
  MessageContent,
  MessageFooter,
  MessageHeader,
} from "@/ui/message"
```

```tsx
<Message>
  <MessageAvatar>{/* <Avatar /> */}</MessageAvatar>
  <MessageContent>
    <MessageHeader>Lena · 2:14 PM</MessageHeader>
    {/* content */}
    <MessageFooter>Seen</MessageFooter>
  </MessageContent>
</Message>
```

## Examples [#examples]

<Examples className="md:grid-cols-2">
  <Example name="message/demos/basic" title="Basic" />

  <Example name="message/demos/group" title="Group" />
</Examples>

## API Reference [#api-reference]

### MessageGroup [#messagegroup]

<Reference name="message-group" />

### Message [#message]

<Reference name="message" />

### MessageAvatar [#messageavatar]

<Reference name="message-avatar" />

### MessageContent [#messagecontent]

<Reference name="message-content" />

### MessageHeader [#messageheader]

<Reference name="message-header" />

### MessageFooter [#messagefooter]

<Reference name="message-footer" />
