Should we keep the default thread header or replace the title slot?
8:34 AM · sent
Replace slots across the headless primitives to adapt the Chat surface to a custom design system.
Slot replacement keeps the headless behavior and accessibility model while letting the markup match a product-specific design system.
Large applications that already standardize avatars, typography, and surfaces can adopt this pattern to reuse Chat's interaction and accessibility behavior without rewriting it.
slotProps for passing local configurationThe demo below replaces the conversation list, message, and composer slots with custom components driven by owner state:
selected, unread, focused, hasValue, isStreaming, and isGroupedslotProps for passing local configuration into custom componentsUse this pattern when:
This is common in design-system-heavy products where avatars, typography, buttons, surfaces, and layout containers are already standardized across the application.