UI Components

@kaira/chat-ui contains composable primitives, not a monolithic chat shell.

MessageRenderer

Renders a single message using a RendererRegistry.

export interface DynamicMessageRendererProps extends MessageRendererProps {
  readonly registry: RendererRegistry;
  readonly fallback?: ComponentType<{ readonly message: Message }>;
}

Use when you need polymorphic rendering by message.type.

MessageInput

Generic text input with Enter-to-send behavior.

export interface MessageInputProps {
  readonly disabled?: boolean;
  readonly placeholder?: string;
  readonly onSend: (text: string) => Promise<void> | void;
}

ThinkingIndicator

Lightweight component for streaming/typing feedback.

<ThinkingIndicator />

Typical Composition

<MessageRenderer message={message} conversation={conversation} registry={registry} />
<ThinkingIndicator />
<MessageInput onSend={handleSend} />