Atoms are pure presentational components. Most publish a matching *Props type, and most are
overridable slots — but neither is universal, so check
Slot overrides for which names overrides accepts, and rely on your
editor for which props types exist.
Messages and content
preloadMarkdownOpenUI() eagerly loads the OpenUI renderer, avoiding a hitch on the first rich
message. ThreadContainer already calls it on mount, so you only need this in a custom layout
that does not render ThreadContainer.
Composer
Thread shell and list
ThreadRootShell, ThreadViewportShell, ThreadComposerAreaShell, MessageGroup,
ScrollToBottomButton, MessageListSkeleton, HistoryLoader, ThreadListShell,
ThreadListNewButton, ThreadListRow ({ title, active, onSelect, agentName?, lastMessageAt?, actions?, className? }
— agentName renders as a sublabel and lastMessageAt as a relative timestamp),
ThreadListRowSkeleton, ThreadListEmptyState.
ToolCallCard carries the widest surface:
icon is an icon name looked up in the icon registry, not a rendered node — it defaults
to "mcp-server". Passing an element renders nothing useful. To supply your own artwork, map
the name through theme.icons; see Theming.
Also ToolCallContentBlock, ToolApprovalBar, ToolGroupCard, SubAgentCard,
SandboxToolCallCard, AgentStepsCard.
AskUserPrompt, McpAuthPrompt, and ReasoningCard are override-only: supply your own
component for the slot, typed with the published props. The types available are
AskUserPromptProps, AskUserQuestionCardProps, AskUserQuestion,
AskUserAnsweredQuestion, AskUserAnswerDraft, McpAuthPromptProps, McpAuthCardProps,
McpAuthServer, and ReasoningCardProps.
Agent library and draft composer
AgentsLibrary ({ open, onOpenChange, onSelectAgent? }), AgentsLibraryButton,
SaveAgentButton, ClearChatButton, SelectAgentEmptyState, DraftCatalogProvider,
useDraftCatalog(), DraftComposerLeftSection, DraftComposerRightSection,
DraftCompositeSelector, DraftModelSelector.
All of these except DraftCatalogProvider and useDraftCatalog are also overridable slots, so
you can either render them yourself or replace them globally through overrides.
ShellActionsActionSlot belongs to the same shell chrome. It renders nothing by default and
exists to be overridden — the supported way to add host controls such as logout beside the
theme and settings buttons.
Primitives
BottomSheet, CenteredModal, Avatar / AvatarImage / AvatarFallback, Icon, Toast,
ToastStack, CodeEditor, MonacoEditorCore, Button (Button.Primary, Button.Secondary,
Button.Ghost, Button.Destructive).
Button is a public design-system atom (Button.Primary / .Secondary / .Ghost /
.Destructive, or variant for dynamic cases). ButtonProps, ButtonVariant, ButtonSize,
and IconButtonProps are also available as types. Buttons are styled through semantic tokens
rather than slot overrides — see Theming.