component
bubble
Wraps text: incoming, outgoing, muted; aligns with message row.
bubblechatmessageconversationmodifiershadcn

On iPad
The same installed source at a regular width. It adapts its layout without a separate design.


Install
With the sweetui tool (brew install mangobyte-dev/tap/sweetui):
sweetui install bubble --destination Sources/YourFeature/ComponentsInstalls in order: bubble 0.1.1. Point --destination at a folder inside the consuming target's sources.
Usage
Text("Are we still on for Thursday?")
.registryBubble(.incoming)
Text("Yes, 6pm works.")
.registryBubble(.outgoing)Accessibility contract
- Text wraps, MUST NOT truncate; grows Dynamic Type.
- No added element; keeps semantics, reading order.
- Fill, no stroke; outgoing uses tint, onAccent MUST stay legible.
- Muted: border hairline, no fill; reads distinct without color.
- Inherits layout direction; padding/corners follow locale.
Details
| Kind | component |
| Version | 0.1.1 |
| Platforms | iOS 26.0+ |
| Dependencies | none |
| Source | Registry/sources/components/RegistryBubbleModifier.swift |
| Xcode preview | Bubble Variants |