Comments & Collaboration

card-ui avatar-ui field-ui menu-ui tag-ui button-ui

The substrate for comments threads, @-mentions, and emoji reactions on any first-class object — docs, tasks, designs, code reviews. Composed entirely from existing primitives; the pattern is in the wiring, not in new components.

When to use

When users need to talk to each other about a specific object — a design, a task, a row, a paragraph. Comments anchor to the object; mentions notify a person; reactions condense agreement without a reply. The three nest: a comment thread carries mentions inside its text and reactions on each message.

Comment thread

A vertical stack of comments anchored to a parent object. Each row carries author avatar + name + timestamp + body + reactions strip + reply action. Threaded replies indent one level — deeper nesting collapses to "X replies" by default.

Discussion 3 comments · 2 participants
Avery Chen 2 hours ago Should the OKLCH ramp here use the chrome or the data scale? @Kim what's the convention? 2 1 Kim Granlund 1 hour ago Chrome — the data scale is reserved for visualization series. Spec at .claude/docs/specs/component-token-contract.md. 3 Jordan Lee 12 minutes ago Filed a follow-up — adding a lint rule so this doesn't happen again. #linter

Comment composer

The input field below a thread. Multiline, with attach + mention + emoji affordances inline, and Send / Cancel actions. Submits on Cmd/Ctrl+Enter; Enter inserts a newline.

Cmd + Enter to send

@-mention picker

Popover that opens after the user types @. Shows team members + recently-mentioned at top, fuzzy-filtered by query. Each row carries avatar + name + handle + role tag. Arrow keys navigate; Enter inserts; Esc closes without inserting.

Mention Kim Granlund @kim · Owner Avery Chen @avery · Designer Jordan Lee @jordan · Engineer @team Notify everyone in this workspace

Reactions bar

The strip of reaction tags under a comment or message. Each tag shows emoji + count; the user's own reaction is highlighted. A trailing "+" opens the picker. Click a count to toggle the user's own reaction; long-press shows who reacted.

👍 4 🎉 2 👀 1 🚀 1

Reactions picker

The emoji-grid popover that opens from the "+" button. Recent + frequent emojis at top; full categorical grid below; search input above. Arrow + Enter for keyboard; click for pointer.

Frequently used Smileys

Composition rules

See also