@kitn.ai/chat
Version:
Framework-agnostic, Shadow-DOM web components for building AI chat interfaces — works in React, Vue, Angular, Svelte, or plain HTML. Authored in SolidJS.
28 lines (27 loc) • 1.34 kB
TypeScript
import { CardEnvelope, CardHost } from '../primitives/card-contract';
import { JsonSchema } from '../primitives/card-validate';
/** A provider-side renderer for one card `type`. Renamed (was CardRenderer) per H-K
* to avoid colliding with the exported Solid `<CardRenderer>` component. */
export interface RemoteCardRenderer {
/** The card `type` this renderer handles. */
type: string;
/** Optional JSON Schema for this type's `data`; validated best-effort before mount. */
schema?: JsonSchema;
/** Mount into `root`, given the envelope + a CardHost. Return a disposer. */
mount(root: HTMLElement, envelope: CardEnvelope, host: CardHost): () => void;
}
export interface CreateCardBridgeOptions {
/** Element the card mounts into + whose height is observed. */
root: HTMLElement;
/** Renderers by card type. Unknown type → inline "unsupported card" + event{error}. */
renderers: RemoteCardRenderer[];
/** Versions this runtime supports (default ['1']). */
supportedVersions?: string[];
}
export interface CardBridge {
/** Begin: listen for `hello`, complete handshake, render on `render`. */
start(): void;
/** Stop observers + listeners + dispose current card. */
stop(): void;
}
export declare function createCardBridge(options: CreateCardBridgeOptions): CardBridge;