UNPKG

@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
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;