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

content
string
defaultExpanded
boolean
delivery · required
MessageDelivery
durationMs
number | undefined
label
string | 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