ChatPopupComponent

Hosts an agent chat in a toggleable popup with a launcher and configurable keyboard shortcut.

import { ChatPopupComponent } from '@threadplane/chat';

Declaration

export declare class ChatPopupComponent  {
  constructor();
  readonly agent: import("@angular/core").InputSignal<Agent<unknown>>;
  readonly clientTools: import("@angular/core").InputSignal<Readonly<Record<string, import("../../client-tools/tool-def").ClientToolDef>> | undefined>;
  readonly closeOnEscape: import("@angular/core").InputSignal<boolean>;
  closeWindow(): void;
  readonly messageCopy: import("@angular/core").OutputEmitterRef<{
        messageIndex: number;
        content: string;
    }>;
  readonly modelOptions: import("@angular/core").InputSignal<readonly ChatSelectOption[]>;
  readonly open: import("@angular/core").ModelSignal<boolean>;
  openWindow(): void;
  readonly rate: import("@angular/core").OutputEmitterRef<{
        messageIndex: number;
        rating: "up" | "down";
    }>;
  readonly regenerate: import("@angular/core").OutputEmitterRef<void>;
  readonly selectedModel: import("@angular/core").ModelSignal<string>;
  readonly shortcut: import("@angular/core").InputSignal<string | null>;
  readonly showModelPicker: import("@angular/core").InputSignal<boolean>;
  toggle(): void;
  readonly views: import("@angular/core").InputSignal<Readonly<Record<string, import("@threadplane/render").RenderViewEntry | import("@angular/core").Type<unknown>>> | undefined>;
}

Angular template API

Selector: chat-popup

Inputs

agent · required
Agent<unknown>
clientTools
Readonly<Record<string, ClientToolDef>> | undefined
closeOnEscape
boolean
modelOptions
readonly ChatSelectOption[]
open
boolean
selectedModel
string
shortcut
string | null
showModelPicker
boolean
views
Readonly<Record<string, RenderViewEntry | Type<unknown>>> | undefined

Outputs

messageCopy
{ messageIndex: number; content: string; }
openChange
boolean
rate
{ messageIndex: number; rating: "up" | "down"; }
regenerate
void
selectedModelChange
string

Members

Constructor · overload 1

Constructs a new instance of the ChatPopupComponent class

constructor();

agent

readonly agent: import("@angular/core").InputSignal<Agent<unknown>>;

clientTools

Frontend-declared client tools forwarded to the inner <chat>.

readonly clientTools: import("@angular/core").InputSignal<Readonly<Record<string, import("../../client-tools/tool-def").ClientToolDef>> | undefined>;

closeOnEscape

Close the popup on Escape (default true).

readonly closeOnEscape: import("@angular/core").InputSignal<boolean>;

closeWindow · overload 1

closeWindow(): void;

Returns

void

messageCopy

Emitted when the user copies an assistant message.

readonly messageCopy: import("@angular/core").OutputEmitterRef<{
        messageIndex: number;
        content: string;
    }>;

modelOptions

Forwarded to the inner <chat>. When non-empty, a model picker pill renders in the chat-input chrome.

readonly modelOptions: import("@angular/core").InputSignal<readonly ChatSelectOption[]>;

open

readonly open: import("@angular/core").ModelSignal<boolean>;

openWindow · overload 1

openWindow(): void;

Returns

void

rate

Emitted when the user rates an assistant message.

readonly rate: import("@angular/core").OutputEmitterRef<{
        messageIndex: number;
        rating: "up" | "down";
    }>;

regenerate

Emitted when the user clicks the regenerate button on an assistant message.

readonly regenerate: import("@angular/core").OutputEmitterRef<void>;

selectedModel

Two-way bound current model value.

readonly selectedModel: import("@angular/core").ModelSignal<string>;

shortcut

Keyboard shortcut (single key) that toggles the popup with cmd (mac) or ctrl (other). Set to null to disable. Default: 'k' — matches the widely-used cmd/ctrl+K convention.

readonly shortcut: import("@angular/core").InputSignal<string | null>;

showModelPicker

Forwarded to the inner <chat>. When false, hides the auto-rendered model picker even with non-empty modelOptions. Use this in narrow surfaces (the chat-sidebar panel is 28rem wide; chat-popup is 24rem) where the picker crowds the input. Defaults to true.

readonly showModelPicker: import("@angular/core").InputSignal<boolean>;

toggle · overload 1

toggle(): void;

Returns

void

views

A2UI component catalog forwarded to the inner <chat>. Without it, messages classified as A2UI parse correctly but never mount a surface. Pass a2uiBasicCatalog() from @threadplane/chat.

readonly views: import("@angular/core").InputSignal<Readonly<Record<string, import("@threadplane/render").RenderViewEntry | import("@angular/core").Type<unknown>>> | undefined>;