Components / Chat Pane
Chat Pane
The universal Elle chat layout: one frame (header, optional banner, the scrollable stream on the shared readable measure, working status bar over the composer) across /chats, the area companions, onboarding, and Cora. Surfaces supply the stream entries, header, and footer; the engine behind them is the surface’s concern.
import { ChatPane, ChatHeader, ChatTitle, ChatPaneBanner, CHAT_CONTENT_WIDTH } from '@layers/ui/chat-pane'Rendered stock
House rules
- ONE header shape everywhere: ChatHeader + ChatTitle. Surfaces never hand-roll their own chat chrome.
- ChatTitle is thread identity ALONE — never an area/subpage breadcrumb tail (ruling 2026-07-23). Surface context reaches Elle through page context, not the header.
- Scroll behavior belongs to MessageScroller (follow the live edge, yield to the reader, jump-to-latest); never add scroll hooks around the pane.
- No divider above the footer: the status bar and composer float over the same surface as the stream.
- Consumers import from @layers/ui/chat-pane; never copy the file into an app (the copy arrangement is what drifted).