/** * The page-metadata field set for the Puck root config. * * Values live at `root.props._meta` in the page snapshot — branch-scoped, * versioned and autosaved like any other authored content. The stored shape is * defined alongside these fields, so the editor fields that write it are * versioned with it: a field set copied into a project could not follow the * shape as it evolved. * * The built-in field set is fixed: no admin-defined fields, no template or site * tiers. Fields are declared flat inside one `_meta` object field — grouping * them would nest object fields, deepening the prop paths the root-prop * migration applier has to handle. A site is free to merge its own field onto * the returned group; it templates like the rest and reaches `` through * the renderer's `transform`. */ /** * The `_meta` field for a root config's `fields`. * * Pass the live root props from `resolveFields` to show what an empty field * will inherit, as a placeholder. It has to be a placeholder and not a value: * autosave persists the whole snapshot, so a derived value written into the * field would be saved and the field would stop inheriting for good. Reading * the source from root props is what makes it track edits — the fields slice * subscribes to the root node, so changing the title re-resolves. * * The chains mirror what the head tags actually emit: `twitter:title` from * `og:title` before `title`, `twitter:image` from `og:image`. A placeholder * that disagreed with the rendered tag would be worse than none. The site * default tier cannot be shown this way, since it does not live in root props. * * No `defaultProps` companion: an unset field falls back at render time, and a * default here would freeze boilerplate metadata into every new page. */ export declare function createSeoRootFields(rootProps?: Record): { _meta: { type: "object"; label: string; metadata: { collapsible: boolean; defaultCollapsed: boolean; }; objectFields: { ogTitle: { type: "text"; label: string; metadata: { help: string; helpWhenEmpty: string; }; }; ogDescription: { type: "textarea"; label: string; metadata: { help: string; helpWhenEmpty: string; }; }; twitterTitle: { type: "text"; label: string; metadata: { help: string; helpWhenEmpty: string; }; }; twitterImage: { type: "text"; label: string; metadata: { help: string; helpWhenEmpty: string; }; }; twitterCard: { type: "select"; label: string; options: { label: string; value: string; }[]; metadata: { help: string; }; }; ogType: { type: "select"; label: string; options: { label: string; value: string; }[]; metadata: { help: string; }; }; ogImage: { type: "text"; label: string; metadata: { help: string; }; }; ogLocale: { type: "text"; label: string; metadata: { help: string; }; }; }; }; };