# No messages empty state with chat bubbles illustration

> No messages empty state with chat bubbles illustration

A shadcn/ui block from the [@reui](https://reui.io) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/reui/c-empty-17).

- Page, with a live preview: https://shadcn.exchange/r/reui/c-empty-17
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/reui/c-empty-17-light-4aab863b280591d7.png
- Registry item: https://reui.io/r/new-york-v4/c-empty-17.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://reui.io/r/new-york-v4/c-empty-17.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- Registry items: `button`, `empty`

## Files

### `c-empty-17.tsx`

```tsx
import { Button } from "@/components/ui/button"
import {
  Empty,
  EmptyContent,
  EmptyDescription,
  EmptyHeader,
  EmptyMedia,
  EmptyTitle,
} from "@/components/ui/empty"

function ChatIllustration() {
  return (
    <svg
      width="180"
      height="120"
      viewBox="0 0 180 120"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      aria-hidden="true"
    >
      {/* Left bubble */}
      <rect
        x="20"
        y="20"
        width="80"
        height="44"
        rx="12"
        className="fill-muted dark:fill-muted/60 stroke-border"
        strokeWidth="1.5"
      />
      {/* Left bubble tail */}
      <path
        d="M36 64 L32 76 L48 64"
        className="fill-muted dark:fill-muted/60 stroke-border"
        strokeWidth="1.5"
        strokeLinejoin="round"
      />
      {/* Left bubble text lines */}
      <rect
        x="32"
        y="32"
        width="48"
        height="4"
        rx="2"
        className="fill-muted-foreground/20"
      />
      <rect
        x="32"
        y="42"
        width="36"
        height="4"
        rx="2"
        className="fill-muted-foreground/15"
      />
      {/* Left bubble avatar dot */}
      <circle cx="32" cy="52" r="3" className="fill-muted-foreground/12" />

      {/* Right bubble */}
      <rect
        x="80"
        y="50"
        width="80"
        height="40"
        rx="12"
        className="fill-primary/10 dark:fill-primary/15 stroke-primary/30"
        strokeWidth="1.5"
      />
      {/* Right bubble tail */}
      <path
        d="M144 90 L148 100 L132 90"
        className="fill-primary/10 dark:fill-primary/15 stroke-primary/30"
        strokeWidth="1.5"
        strokeLinejoin="round"
      />
      {/* Right bubble text lines */}
      <rect
        x="92"
        y="62"
        width="52"
        height="4"
        rx="2"
        className="fill-primary/20"
      />
      <rect
        x="92"
        y="72"
        width="32"
        height="4"
        rx="2"
        className="fill-primary/15"
      />

      {/* Decorative dots */}
      <circle cx="14" cy="46" r="2" className="fill-muted-foreground/10" />
      <circle cx="168" cy="66" r="2" className="fill-primary/15" />
      <circle cx="110" cy="16" r="2.5" className="fill-muted-foreground/10" />
    </svg>
  )
}

export function Pattern() {
  return (
    <div className="flex items-center justify-center p-4">
      <Empty className="py-12">
        <EmptyHeader>
          <EmptyMedia>
            <ChatIllustration />
          </EmptyMedia>
          <EmptyTitle>No messages yet</EmptyTitle>
          <EmptyDescription>
            Start a conversation with your team. Messages will appear here.
          </EmptyDescription>
        </EmptyHeader>
        <EmptyContent>
          <Button>Send a message</Button>
        </EmptyContent>
      </Empty>
    </div>
  )
}
```
