Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

AI Assistant Chat Block for React

A team messenger with an inbox and a bot named Quill that is a contact like the others: typed replies by keyword, one message it writes first, and a switch that mutes it.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Put a helper bot in the same inbox as your teammates, with this assistant chat for React with Base UI. A hairline frame with a plus mark on each corner holds a wide window of fixed height for Tandemwick, a team messenger: an inbox at the start lists three teammates and Quill, a bot with a "Bot" badge, pinned first with no presence dot, and the thread beside it uses Message and Bubble rows. Quill answers by keyword (remind me, who is on call, help) from a typed script, and it can write first: open a teammate's thread and stay three seconds and it sends one message about the invoice you asked it to remember, which raises a "New" badge in the inbox and is announced in the status line. A Switch in its thread mutes the nudge. The composer's Shine Button, the only colored control, sends what you type. On a phone the inbox is the first screen and "All chats" goes back. It's the starting point for a workplace messenger or any inbox that has a bot among its contacts.

FAQ

What stays in the page, and how do I make it real?

Everything. Quill's replies come from a short typed script, teammates answer with one typed line each, and the nudge is a single three-second timer started when you open a human thread. Nothing is sent and no model runs, as the line under the composer says. To wire it for real, send post's text to your messaging service where the code says so, append incoming messages to the thread, and have your own bot service decide when to write first.

When does Quill write first, and how do I stop it?

Once, three seconds after you open a teammate's thread, if Quill is not muted and has not already written. The inbox row gets a New badge and the status line says Quill sent you a message. Turn on Mute Quill in its thread before that and it never fires; the timer is cleared when you leave or unmount, so nothing runs in the background.

How can I tell the bot from a person?

Quill carries a Bot word beside its name in the inbox and says Bot in its status line, and it has no presence dot. It is told apart by words, not color. Teammates show their team instead.

Is it usable with a keyboard and a screen reader?

The inbox is a list of buttons with the open chat marked current, the log is a focusable region announced as a log, and every message starts with a hidden sender and time. Opening a chat moves focus to the composer, and All chats returns focus to its row. The Mute switch has its own label.

How does it look on a phone?

One column at a time: the inbox first, then the thread after you open a row, with an All chats button in the top bar. The window keeps its height and only the log and the inbox scroll.