ChatReasoningComponent
Renders an assistant's reasoning content as a compact pill that expands to reveal the underlying text. Three visual states:
- Streaming: pill shows "Thinking…" with a pulsing dot; auto-expanded so the user sees reasoning stream in real time.
- Idle, with durationMs known: pill shows "Thought for {duration}"; collapsed by default, expand on click.
- Idle, no duration: pill shows "Show reasoning"; collapsed by default.
The body re-uses chat-streaming-md so reasoning content gets the same markdown rendering pipeline as the visible response (lists, code, step labels often appear in reasoning output).
Internal state: a tristate "expanded" — null means follow auto state- driven logic (force-expand while delivery is streaming, otherwise honor defaultExpanded), boolean is a manual user choice that wins for the lifetime of the instance.
import { ChatReasoningComponent } from '@threadplane/chat';Declaration
export declare class ChatReasoningComponent {
constructor();
readonly content: import("@angular/core").InputSignal<string>;
readonly defaultExpanded: import("@angular/core").InputSignal<boolean>;
readonly delivery: import("@angular/core").InputSignal<MessageDelivery>;
readonly document: import("@angular/core").Signal<import("../../streaming/streaming-markdown.component").StreamingMarkdownDocument>;
readonly durationMs: import("@angular/core").InputSignal<number | undefined>;
readonly expanded: import("@angular/core").Signal<boolean>;
readonly expandedStr: import("@angular/core").Signal<string>;
readonly hasContent: import("@angular/core").Signal<boolean>;
readonly isStreaming: import("@angular/core").Signal<boolean>;
readonly label: import("@angular/core").InputSignal<string | undefined>;
readonly resolvedLabel: import("@angular/core").Signal<string>;
toggle(): void;
}Angular template API
Selector: chat-reasoning
Inputs
contentstringdefaultExpandedbooleandelivery· requiredMessageDeliverydurationMsnumber | undefinedlabelstring | undefined
Members
Constructor · overload 1
Constructs a new instance of the ChatReasoningComponent class
constructor();content
readonly content: import("@angular/core").InputSignal<string>;defaultExpanded
readonly defaultExpanded: import("@angular/core").InputSignal<boolean>;delivery
readonly delivery: import("@angular/core").InputSignal<MessageDelivery>;document
readonly document: import("@angular/core").Signal<import("../../streaming/streaming-markdown.component").StreamingMarkdownDocument>;durationMs
readonly durationMs: import("@angular/core").InputSignal<number | undefined>;expanded
readonly expanded: import("@angular/core").Signal<boolean>;expandedStr
readonly expandedStr: import("@angular/core").Signal<string>;hasContent
readonly hasContent: import("@angular/core").Signal<boolean>;isStreaming
readonly isStreaming: import("@angular/core").Signal<boolean>;label
readonly label: import("@angular/core").InputSignal<string | undefined>;resolvedLabel
readonly resolvedLabel: import("@angular/core").Signal<string>;toggle · overload 1
toggle(): void;Returns
void