About this set
Three message threads that cover the static side of a chat interface. Bubble thread with date separators and read receipts groups consecutive messages from the same sender, keeps the tight corner on the sender’s side, puts each message’s time inside its bubble and writes the receipt as text, Read 09:14, under your last message. Compact rows for channels is the team-chat layout: square initials avatars, a name and time line, and continuation rows that show the time in the gutter. Files, link previews, notices and failed messages adds a system notice, a file card with a download link, a link preview inside a sent bubble, a deleted message and a message that failed, marked by a red border and the words Not delivered. Use the bubble thread for one-to-one chat, the rows for busy channels and the third block for the edge cases every chat runs into sooner or later. Each thread is a div with role=”log” and aria-live=”polite”, each message has a sender name, visually hidden for your own messages, and a time element with a datetime attribute. None of it needs JavaScript.
What’s included
- Grouped bubbles with the tight corner on the sender's side
- A time element with a datetime attribute on every message
- Read, delivered and failed states written as text, not colour alone
- Date separators, system notices, file cards and link previews
- No JavaScript; each thread is a role="log" region
Accessibility
Each thread is a role="log" region with aria-live="polite" and a name such as Chat with Maya Chen, so only messages added later are announced. Every message has a sender name, visually hidden for your own messages, and a time element with a machine-readable datetime. Receipts and the failed state are written out as text, the download link has a hidden file name, and links show a 2px focus outline.
Customise it
Change --cb-accent, --cb-in, --cb-r and --cb-r-tight on .cb for colour and bubble shape. In Bootstrap the same --cb-* variables sit on the .card; in Tailwind edit the --color-cb-* theme colours and the rounded-[…] utilities.






