One turn of a conversation, aligned by who said it
User turns read as right-aligned bubbles. Assistant turns read as plain full-width text, so long answers breathe. Bubble colours come only from the four chat bubble tokens, which makes re-theming a chat a four-token change.
Roles
The role drives alignment and the default surface. Users get a sent bubble on the right, assistants get plain text across the full width.
A conversation
Turns compose with avatars, authors, and chat markers into a full transcript. The marker is furniture; the messages are the conversation.
Bubbles and tails
The surface is a default, not a rule. An assistant turn can opt into a received bubble, a user turn can go plain, and a tail squares the corner nearest the speaker.
Grouped runs
Grouped messages drop the author row and hide the avatar while keeping its gutter, so a run of quick messages stays aligned and reads as one utterance.
Pending
Before the first content arrives, the turn shows three pulsing dots. Screen readers hear the pending label instead, and reduced motion parks the dots at a steady legible opacity.
Sizes
Compact drops the type one step and tightens bubble padding for dense transcripts like support consoles.