/** * Line spacing is all-or-nothing: a caller that shows the field owes both the * current override and the inherited value it falls back to, so the field can * never render an empty box. Elemental has no `line_height` on action nodes, so * the button form opts out with `showLineHeight: false` instead. */ type LineHeightProps = { showLineHeight?: true; lineHeight?: number | null; inheritedLineHeight: number; onLineHeightChange: (value: number | null) => void; } | { showLineHeight: false; lineHeight?: never; inheritedLineHeight?: never; onLineHeightChange?: never; }; type TypographyFieldsProps = LineHeightProps & { /** Current px override, or null when the block inherits. */ fontSize?: number | null; /** * What the block renders at while it sets nothing — the document base, then * the tier preset. Shown in the field as an editable placeholder, so the * author sees the real sizing instead of an empty box. */ inheritedFontSize: number; /** Called with null when the field is cleared, i.e. back to inheriting. */ onFontSizeChange: (value: number | null) => void; className?: string; }; /** * Font size / line spacing overrides, in px. * * The fields are seeded with the value the block already renders at — the * document-level base, then the tier preset — and that seed keeps tracking the * document base as it changes. Nothing is written to the block until the author * types a *different* number, so an untouched block carries no `font_size` / * `line_height` of its own. Clearing a field drops the override again. * * Overrides are per-block and don't stick to the next block of the same kind. */ export declare const TypographyFields: ({ fontSize, lineHeight, inheritedFontSize, inheritedLineHeight, onFontSizeChange, onLineHeightChange, showLineHeight, className, }: TypographyFieldsProps) => import("react/jsx-runtime").JSX.Element | null; export {};