import { type HTMLAttributes, type ReactNode } from 'react'; /** A corpus stat shown in the header (e.g. `{ value: 5, label: 'care plans' }`). */ export interface EntitySummaryStat { value: string | number; label: string; } /** One narrative section — a heading over a list of bullet items. */ export interface EntitySummarySection { id: string; heading: string; /** * Leading glyph for the section. On default sections it's the scannability * anchor shown in a `--primary`-tinted medallion beside the heading (e.g. a * calendar for "Scheduled", a wallet for "Financial"); omit it to render no * medallion. On `attention` sections it overrides the warning Alert's icon * (which defaults to an alert triangle). */ icon?: ReactNode; /** * `attention` renders the section as the kit's warning `Alert` — the * standard risk-flag treatment (border, warning surface, alert glyph, * `--warning-foreground` text) — for clinically important callouts. */ tone?: 'default' | 'attention'; /** Bullet items — `ReactNode` so consumers compose inline entity links. */ items: ReactNode[]; } /** * Curated agent handle for EntitySummary. Exposes structural state only — * never the entity name or the section items (both PHI). See * `entity-summary.agent.ts`. */ export interface EntitySummaryHandle { /** Structural snapshot — generated-at + section ids/headings/tone/count. No PHI. */ getState: () => { generatedAtIso?: string; sections: Array<{ id: string; heading: string; tone: 'default' | 'attention'; itemCount: number; }>; }; /** Whether the regenerate affordance is available. */ canRegenerate: () => boolean; /** Request the host to regenerate the brief (mirrors onRegenerate). */ regenerate: () => void; /** Whether the close affordance is available. */ canClose: () => boolean; /** Dismiss the panel (mirrors onClose). */ close: () => void; } export interface EntitySummaryProps extends Omit, 'title' | 'children'> { /** * Stable instance id. Surfaced on the root as `data-component-id` so an * agent / MCP UI bridge can address this specific summary panel. */ id?: string; /** Panel title. Defaults to the localised "AI summary". */ title?: string; /** Entity name shown beside its avatar in the header (links when `entityHref` is set). */ entityName?: string; /** Entity href for the name link. */ entityHref?: string; /** Avatar image URL for the entity. Falls back to initials derived from `entityName`. */ entityAvatarSrc?: string; /** ISO-8601 instant the brief was generated. */ generatedAtIso?: string; /** Corpus the brief was built from, shown as a compact KPI card. */ stats?: EntitySummaryStat[]; /** The narrative sections, in order. */ sections: EntitySummarySection[]; /** Regenerate the brief. Omit to hide the affordance. */ onRegenerate?: () => void; /** Regenerate-button label. */ regenerateLabel?: string; /** * Dismiss the panel. Renders a close button in the panel header for * STANDALONE use (outside the rail). When docked in `ControlRoomRail`, omit * this — the rail injects its own close via `PanelHeaderActionsProvider` * (passing it while docked would render a duplicate close control). */ onClose?: () => void; /** Footer disclaimer. Defaults to the BETA clinical-judgement note. */ disclaimer?: ReactNode; /** BCP-47 locale for the generated-at timestamp. */ locale?: string; /** Accessible name for the panel region (defaults to `title`). */ 'aria-label'?: string; } export declare const EntitySummary: import("react").ForwardRefExoticComponent>; //# sourceMappingURL=entity-summary.d.ts.map