import { type ReactElement, type ReactNode } from 'react'; import type { PatientField } from './patient-fields'; export interface PatientFieldCellProps { field: PatientField; /** Master switch — an `editable` field shows its edit affordance. */ editable: boolean; /** The single write channel. Without it, nothing is editable. */ onFieldSave?: (fieldId: string, value: unknown) => Promise; /** Return a message to block the save and keep the row in edit mode. */ validate?: (fieldId: string, value: unknown) => string | null; locale?: string; } /** * The LABEL side of a patient field: its text plus the PHI lock when the * field is marked sensitive. */ export declare function PatientFieldLabel({ field, }: { field: PatientField; }): ReactNode; /** * The VALUE side of a patient field: the formatted value, its copy button, * and the inline editor once opened. List-shape agnostic on purpose — it * carries no row markup, so `PatientDetails` can place it in a * `DescriptionList` and `PatientSummaryCard` in a `KeyValueList` while the * edit behaviour stays one implementation. * * The edit affordance reveals on hover / focus of an ancestor marked * `ds:group`, so whichever list wraps this must set that class on its row. */ export declare function PatientFieldValueCell({ field, editable, onFieldSave, validate, locale, }: PatientFieldCellProps): ReactNode; /** * One patient field as a `DescriptionList` row — the shape `PatientDetails` * uses. `PatientSummaryCard` composes the same cells into its own list * instead, so the two surfaces share the editing behaviour without sharing a * list primitive. */ export declare function PatientFieldRow({ field, icon, ...cell }: PatientFieldCellProps & { icon?: ReactElement | null; }): ReactNode; //# sourceMappingURL=patient-field-row.d.ts.map