import { type HTMLAttributes, type ReactNode } from 'react';
import { type VariantProps } from 'class-variance-authority';
declare const rootVariants: (props?: ({
surface?: "elevated" | "flat" | "bare" | null | undefined;
density?: "comfortable" | "compact" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface AnamnesisSummaryAnswer {
/** Stable key (the intake field key). */
id: string;
/** Question label, already translated by the consumer. */
label: string;
/** Formatted answer. Strings preferred; ReactNode allowed. */
value: ReactNode;
/** Unit symbol rendered muted after the value (e.g. "kg"). */
unit?: string;
/** The practice's highlight rule fired for this answer. */
highlighted?: boolean;
/**
* When the answer was recorded — `YYYY-MM-DD`, `YYYY-MM-DDTHH:mm` (LOCAL
* wall time, no zone) or full ISO-8601. A bare date is never read as UTC.
*/
reportedAtIso?: string;
/** Where the answer came from when the card combines modules (module name). */
sourceLabel?: string;
}
export interface AnamnesisSummarySection {
id: string;
heading: string;
answers: AnamnesisSummaryAnswer[];
}
export interface AnamnesisSummaryCardHandle {
/** Structural snapshot only — counts, never labels or values. */
getSummary: () => {
id?: string;
sectionCount: number;
answerCount: number;
highlightedCount: number;
unansweredCount: number;
};
}
export interface AnamnesisSummaryCardProps extends Omit, 'title'> {
sections: AnamnesisSummarySection[];
/** Card title (e.g. the module name). Falls back to the "Anamnesis summary" region label. */
title?: string;
/** Muted line under the title (e.g. the interview date-time, already formatted). */
subtitle?: string;
/** Questions the consumer omitted because they were unanswered — one muted footer line when > 0. */
unansweredCount?: number;
/** BCP-47 tag for the tooltip date; defaults to the active i18next language. */
locale?: string;
/** Highlighted answers sort to the top of their section. Default `true`. */
highlightedFirst?: boolean;
/**
* Open the card with a "Highlighted answers" group collecting every
* flagged answer, each with where and when it was recorded, before the
* sections. Default `true`; absent when nothing is flagged.
*/
highlightedGroup?: boolean;
/**
* Render ONLY the highlighted-answers group — no sections, no unanswered
* footer — for a card whose sole job is the flagged answers. Empty copy
* when nothing is flagged. Default `false`.
*/
highlightedOnly?: boolean;
/** `'elevated'` (default) — Card with shadow; `'flat'` — outlined Card. */
surface?: 'flat' | 'elevated' | 'bare';
/** `'comfortable'` (default) or `'compact'` (tighter row gap + paddings). */
density?: 'comfortable' | 'compact';
/** Render the skeleton loading placeholder. */
loading?: boolean;
/** Rendered at the inline-end of the heading row (e.g. an action menu). */
actionSlot?: ReactNode;
/** Agent-readiness consumer id, surfaced as `data-component-id`. */
id?: string;
}
export declare const AnamnesisSummaryCard: import("react").ForwardRefExoticComponent>;
/** Variant unions re-exported for downstream typing. */
export type AnamnesisSummaryCardSurface = NonNullable['surface']>;
export type AnamnesisSummaryCardDensity = NonNullable['density']>;
export {};
//# sourceMappingURL=anamnesis-summary-card.d.ts.map