ui · 6 variants · 1 categories
Chat Bubble
Message containers for conversational UIs — supports avatars, typing, media, and side alignment.
npx "@rueda.dev/gems-diamond" add chat-bubble Display
6 variantsMorning! Have you seen v3.2?
Just about to deploy.
Let me know when it's live.
basicAR
Aria · 10:42
Can you review the spec?
Sure, starting now.
avatarMorning!
typingatlas-moodboard.jpg
Love the tones.
mediaSMS-style neutral.
iMessage green
imessagearia: → build pass
<leo:> lgtm, merged
terminalUsage Guide
How to wire up this component in your app — props, callbacks, customization, and the conventions Diamond shares across the library.
Sides and groups
side="them" (default) or side="me" mirrors the bubble. Wrap a thread in ChatBubbleGroup for consistent spacing and the iOS-style group corners.
Media bubbles
The media variant uses media + mediaCaption instead of children.
Universal patterns
Every Diamond component shares the same prop conventions, so once you learn one you can predict the others.
variant— discriminated union of every visual option. Categories shown above are docs-only metadata; the prop is a flat string union.accent— any CSS color string. Overrides--diamond-accentjust for that instance via inlinestyle. Cascades into hover, ring, and selection states.asChild(when present) — renders the underlying primitive via@radix-ui/react-slot, letting you compose with<Link>,motion.button, etc.className— merged with internal Tailwind classes viacn(). Use it to override layout, spacing, or colors.- Native HTML attributes (
onClick,aria-*,data-*,ref, etc.) flow through to the root element without any whitelist. - Diamond is the skin: zero domain state, zero fetch, zero providers. You wire data and reactions in your app code; the components just render and emit events.