KQ-841 · BUBBLE/LAND

Bubble Land

A message thread with a composer whose new bubble rises into the list from the composer's side on recoil, the two bounces of something landing. The bubble's delivery mark walks the states the parent reports: a ring while sending, one check drawn on flick once sent, a second check that walks out on snap when delivered, and both tinted cobalt when read; failure shakes the bubble on a tween and offers Retry beneath it. The composer is a textarea where Enter sends and Shift+Enter breaks a line, every mark is an image with a sentence, and a status region speaks delivered, read, and failure once each.

KQ-841 · BUBBLE/LAND
  1. Order 4471 is packed. Hold it at the depot, or send it on?
    9:38
  2. Hold it until Friday, please.
    9:39

Ines → Marta · read · 0 sent

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/bubble-land

Props

messages
BubbleMessage[]
default
The thread, oldest first: id, from ("me" or "peer"), text, an optional formatted time, and for own messages a delivery of "sending", "sent", "delivered", "read", or "failed".
peerName
string
default "Them"
The other person; the mark's sentences name them ("Read by Marta").
onSend
(text: string) => void
default
Fires from Enter or the Send control with the trimmed draft; append the message here with delivery "sending".
onRetry
(id: string) => void
default
Fires from a failed bubble's Retry control; set that message back to "sending".
placeholder
string
default "Message"
Composer placeholder.
disabled
boolean
default false
Holds the composer while the parent is busy.
label
string
default
Names the thread list for assistive technology.