/** * Legal-document recipes. * * Pure functions producing spec nodes from options — no own OOXML * representation, no compiler hooks. Everything a recipe returns is built * from the paragraph/table grammar, so its output is inlineable anywhere a * BlockSpec is accepted and serializes through exactly the emitters the * rest of the document uses. Signature lines are bottom-bordered cells, not * VML shapes: Pages and Google Docs mangle VML, borders survive everywhere. */ import type { BlockSpec, TableSpec } from './types.js'; export type CoverTermRow = { label: string; value: string; }; export type CoverTermGroupRow = { group: string; }; export type CoverTermSubrow = { label: string; value: string; subrow: true; }; export type CoverTermEntry = CoverTermRow | CoverTermGroupRow | CoverTermSubrow; export type CoverTermsOptions = { /** Plain rows, group headers, and subrows rendered in declaration order. */ terms: CoverTermEntry[]; /** Two-column widths in twips; defaults to a 2880/6480 split of a 6.5" body. */ columnWidthsTwips?: [number, number]; /** Heading text for a shaded full-width header row; omitted when absent. */ title?: string; /** Table border style; defaults to the historical full grid. */ borderMode?: 'grid' | 'horizontal-rules'; /** Optional minimum row height applied to term/group/sub rows, not the title row. */ rowHeightTwips?: number; /** Optional uniform cell padding applied to every cover-terms cell. */ cellPaddingTwips?: number; /** Text color for subrow labels and values; defaults to mid-gray. */ subrowColorHex?: string; /** * Extra left indent on subrow label cells, added on top of `cellPaddingTwips` * (so the label sits further right than a normal row). Defaults to 240 twips. */ subrowLabelIndentTwips?: number; }; /** * A fixed-layout two-column label/value table for cover-terms blocks * (scenario SDX-GEN-070), with optional house-style grouped/sub rows. */ export declare function coverTermsTable(options: CoverTermsOptions): TableSpec; export type SignatureBlockOptions = { parties: Array<{ /** Party heading above the signature line, e.g. the company name. */ party: string; /** Signatory name printed under the line. */ name: string; title?: string; /** Label for the date row; defaults to 'Date:'. */ dateLabel?: string; }>; /** Signature-line column width in twips; defaults to 4320 (3"). Single-column only. */ lineWidthTwips?: number; /** Layout selector. Defaults to 'single-column' (the historical behavior). */ layout?: 'single-column' | 'two-column'; /** Total grid width in twips, split across the two signer columns. Defaults to 9360 (6.5" body). */ totalWidthTwips?: number; /** Center gutter column width between the two signer cells. Defaults to 360 (0.25"). */ gutterTwips?: number; /** Color for the muted party header and field captions. Defaults to '595959'. */ headerColorHex?: string; /** Captions for the four ruled lines. Defaults to ['Signature', 'Print Name', 'Title', 'Date']. */ ruledLineLabels?: [string, string, string, string]; }; /** * Signature blocks rendered as borderless tables whose content cells carry * only bottom borders — the signature lines. No VML, no images. * * Default `layout: 'single-column'` keeps the historical stacked block: one * table per party, a bottom-bordered line then name/title/date rows * (scenario SDX-GEN-071). With `layout: 'two-column'` the parties render as a * paired signing grid — two signers per row, each a centered uppercase muted * header over ruled Signature / Print Name / Title / Date lines (Print Name and * Title pre-filled from the party data), with an empty padding cell when the * signer count is odd (scenario SDX-GEN-109). */ export declare function signatureBlock(options: SignatureBlockOptions): BlockSpec[]; //# sourceMappingURL=recipes.d.ts.map