import type { BlockEditProps, BlockReadProps } from "../types.js"; import { type ColumnsData } from "./columns.config.js"; /** Read renderer: a responsive grid of columns, each child rendered read-only. */ export declare function ColumnsBlockReader({ data, blockId, title, ctx, }: BlockReadProps): import("react").JSX.Element; /** * Editor: the same responsive grid, with child blocks rendered editable in * place through the app dispatcher. A child change updates that child within * its column and commits the whole * columns block — mirroring the legacy `tabs` onChange bubbling so the plan's * recursive `updateBlocks`/`findBlock` (`PlanContentRenderer`) keeps working. * * Renders BARE (no `plan-block` section / title): in edit mode the app's block * dispatcher already wraps registered editors in a titled `plan-block` section, * so wrapping again here would double-nest. The read renderer owns its own * section because read mode renders the spec directly. */ export declare function ColumnsBlockEditor({ data, onChange, editable, blockId, ctx, }: BlockEditProps): import("react").JSX.Element; /** * The standard columns block spec (with React `Read`/`Edit`). Apps register this * in their browser registry. The schema + MDX config come from * `./columns.config.ts`, the exact same object server / agent code registers, so * rendering and source round-trip never drift. */ export declare const columnsBlock: import("../types.js").BlockSpec; //# sourceMappingURL=columns.d.ts.map