import type { TFunction } from 'i18next'; import type { SparklineAnnotation } from '../../components/sparkline'; import { type VisitColumn } from './anamnesis-window'; import type { AnamnesisRecord, NumericParameterDef, OpenAnamnesisNote, Visit } from './anamnesis-types'; export interface AnamnesisEvolutionGridProps { record: AnamnesisRecord; defs: NumericParameterDef[]; t: TFunction; /** Make the newest visit column editable (compile mode). */ editable?: boolean; /** The visit whose column takes the inputs, by id. Omitted = the record's * last visit. The evolution section sets it from the REAL record: on the * merged view the last position need not be the visit being compiled. */ editableVisitId?: string; onCellChange?: (visit: Visit, def: NumericParameterDef, value: number | null) => void; /** Draw the outer border + surface (standalone use). Set `false` when the * grid already sits inside a card, to avoid a box-in-a-box. */ framed?: boolean; /** Mount this visit's note popover already open. Demo/story hook only — * Chromatic skips play functions, so a click-opened popover is never * snapshotted. Ignored once `onOpenNote` is wired. */ defaultOpenNoteVisitId?: string; /** Route a visit's note to the host's side panel instead of opening it in * place. Omitted = read in place, which is all a standalone grid can do. */ onOpenNote?: OpenAnamnesisNote; /** Which columns render, from the visit window. Omitted = every visit. * Column order and `index` always follow `record.visits`; the window * changes what is SHOWN, never what was computed. */ visitColumns?: readonly VisitColumn[]; /** Keys the practice still captures. A key outside this set renders its * history read-only: archiving stops capture, it never erases the record. * Omitted = every def is capturable. */ capturableKeys?: ReadonlySet; /** Event reference lines, positioned as a fraction of the record's visit * span. Every row gets this SAME array, which is what makes one event one * vertical line down the whole grid rather than one line per row. */ annotations?: readonly SparklineAnnotation[]; /** Make those lines pointer-selectable — pressing one is pressing the * event's chip in the bar above. Omitted = the lines stay decorative, which * is all a grid with no event bar above it can honestly offer. */ onSelectAnnotation?: (eventId: string) => void; /** The first visits the leftmost column merges, oldest first; the header * lists them. Omitted = no column is synthetic. */ baselineSources?: readonly Visit[]; /** Insert the parameter-group banner rows. `false` when the caller has * already headed the table — a per-source block names its module above * it, and "Blood tests" over a questionnaire's water question misleads. */ groupBanners?: boolean; /** The table's caption. A per-source block names its module here so N * tables on one page do not share one accessible name. */ caption?: string; } export declare function AnamnesisEvolutionGrid({ record, defs, t, editable, editableVisitId, onCellChange, framed, defaultOpenNoteVisitId, onOpenNote, visitColumns, capturableKeys, annotations, onSelectAnnotation, baselineSources, groupBanners, caption, }: AnamnesisEvolutionGridProps): import("react/jsx-runtime").JSX.Element; //# sourceMappingURL=anamnesis-evolution-grid.d.ts.map