@bettercms-ai/types 1.51.0 → 1.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -4001,4 +4001,228 @@ type SectionPlanItem<B> = {
4001
4001
  */
4002
4002
  declare function planSections<B>(slots: readonly string[], blocks: readonly B[] | null | undefined): SectionPlanItem<B>[];
4003
4003
 
4004
- export { type AlignToken, type AllowRule, type ApiError, type ApiKey, type ApiKeyPermission, type ApiKeyTokenType, type ArrayZoneConfig, type AssertEqual, type AuthResponse, type AuthSession, type AuthUser, BLOCK_BINDINGS, BODY_SCHEMA_ORIGINS, BREAKPOINTS, BUTTON_ACTIONS, BUTTON_FULL_WIDTH_INVALID, BUTTON_ICONS, BUTTON_ICON_NAMES, BUTTON_LOOK_KEYS, BUTTON_PLACEMENT_KEYS, BUTTON_SIZES, BUTTON_VARIANTS, type BetterCMSErrorCode, type BgToken, type BindingKind, type BlockBinding, type BlockHoverStyle, type BlockStyle, type BlockType, type BodySchema, type BodySchemaOrigin, type ButtonAction, type ButtonBlock, type ButtonIcon, type ButtonLinkCandidate, type ButtonLookKey, type ButtonProps, type ButtonSiteLook, type ButtonSizeName, type ButtonValue, type ButtonVariant, CANVAS_GESTURE_NAMES, CODE_SLOT_PREFIX, COMPONENT_PROP_TYPES, CONTROL_HELP, type CanonicalInputDefinition, type CanvasGesture, type ChoiceOption, type CollectionBlock, type CollectionFilter, type CollectionProps, type ColorToken, type ColumnsBlock, type ColumnsProps, type Component, type ComponentBlock, type ComponentCategory, type ComponentFormPropRef, type ComponentPreview, type ComponentPropDef, type ComponentPropType, type ComponentPropUi, type ComponentProps, type ComponentSubField, type ComponentTab, type ComponentVariantGroup, type Content, type ContentBlock, type ContentEntry, type ContentModel, type ContentModelField, type ContentModelFieldType, type ContentModelFieldUi, type ContentPageResult, type ContentResponse, type ContentWidthToken, type ControlKind, type CornerToken, DIALOG_SELECTOR, DOCK_BUDGET, DOCK_ICON_NAMES, DOCK_ICON_NAME_SET, type DeepReadonly, type DeliveredLayout, type DeliveryComponent, type DeliveryEntry, type DeliveryEntrySeo, type DeliveryList, type DeliveryPage, type DerivedLocator, type DockBudget, type DockFieldLike, type DockFieldsetLike, type DockIconName, type DockInputRef, type DockLane, type DockNode, type DockPropGroupLike, type DockScreen, type ElementLike, type ExpandedBinding, FIELD_SIZE_ZOOM, FIELD_STYLE_KEYS, FOOTER_SECTION_ID, type FieldConfig, type FieldSize, type FieldStyle, type FieldStyleKey, type FieldStyles, type Fieldset, type FieldsetKind, type FieldsetUiBefore, type FontSizeToken, type FooterBlock, type FooterColumn, type FooterProps, type Form, type FormBlock, type FormField, type FormProps, type FormSubmission, HELP_MAX, type HeadingBlock, type HeadingProps, IMAGE_ASPECTS, IMAGE_FRAME_RADIUS, type ImageAspect, type ImageBlock, type ImageProps, LANDMARK_SELECTOR, LAYOUT_SECTION_ICONS, LAYOUT_SECTION_ICON_SET, LINK_RELS, LINK_VALUE_TYPES, LIST_ITEMS_CAP, LOCATOR_PATH, type LandmarkChainElement, type LandmarkElement, type LayoutComponentItem, type LayoutDataDocument, type LayoutFieldDefinition, type LayoutFieldItem, type LayoutFieldType, type LayoutScalarFieldType, type LayoutSection, type LayoutSectionIcon, type LayoutSectionItem, type LayoutStructureDocument, type LayoutZone, type LinkPairSibling, type LinkRel, type LinkValue, type LinkValueType, type LocatorGrammar, MAIN_SELECTOR, type ManagementLayoutCommand, type MediaAsset, type MediaCaptionTrack, type MediaFieldValue, NAVIGATION_SECTION_ID, type NavLink, type NavbarBlock, type NavbarProps, type NumberFieldFormat, type NumberScale, OPTION_DESCRIPTION_MAX, type OpenMode, PAGE_CONTENT_ANCHOR_ID, type Page, type PageLayoutOverrideDataDocument, type PageLayoutOverrideDocument, type PageLayoutOverrideState, type PageLayoutOverrideStructureDocument, type PageLayoutSectionOverride, type PageLayoutSectionStructureOverride, type PageMetaJson, type PageOnlyLayoutSection, type PageSectionPlacement, type PaginatedResult, type Perspective, type PortableTextDocument, type PortableTextNode, type PropGroup, type PropTab, RESPONSIVE_CSS, ROLE_HELP, ROLE_KEYS, type RadiusToken, type ReadButtonValue, type Redirect, type ReservedLayoutSection, type ResolvedLayoutNode, type RichTextBlock, type RichTextProps, SECTION_DOCTRINE, SECTION_SPACE_TOKENS, SIDE_SPACE_MIN_PX, SIDE_SPACE_TOKENS, SLOT_CHILD_KEYS, SLOT_ITEMS_CAP, SLOT_MAX_ITEMS, SPACE_BOTTOM_TOKENS, SPACE_STEP_TOKENS, type ScaleUnit, type SectionBlock, type SectionPlanItem, type SectionProps, type SectionSpaceToken, type ShadowToken, type ShowIf, type ShowIfRule, type SignInInput, type SignUpInput, type SiteSeoDefaults, type SlideItem, type SliderBlock, type SliderProps, type SlotChild, type SlotItem, type SlotShapeOptions, type SlotShapeProblem, type SlotValue, type SpaceStepToken, type SpaceToken, type SpacerBlock, type SpacerProps, TABLE_COLUMN_TYPES, TABLE_JSONLD_TYPES, TABLE_LIMITS, TABLE_RESPONSIVE, TAG_HEADS, type TabItem, type TableCell, type TableCellObject, type TableCellValue, type TableCheckOptions, type TableColumn, type TableColumnType, type TableFieldOptions, type TableFootnote, type TableGroup, type TableLink, type TableProblem, type TableRef, type TableRefResolved, type TableRow, type TableValue, type TabsBlock, type TabsProps, type TextBlock, type TextProps, type ThemeToken, type UiBefore, type UiOrigin, VIDEO_TRANSCRIPT_MAX, VIDEO_VALUE_KEYS, type VariantInputMapping, type VideoBlock, type VideoProps, type VideoValue, type VisibilityWindow, type WeightToken, type WindowState, type Workspace, type ZoneField, allowRuleOf, anchorTargetRel, blockStyleToColumnCss, blockStyleToCss, blockStyleToInnerCss, bodySchemaOf, buttonBlockProps, buttonFullWidthProblem, buttonIconOf, buttonIconSvg, buttonLinkPairs, buttonLookValue, buttonSiteLookOf, buttonValueOfInstance, buttonValueProblem, buttonVariantOf, candidateRole, componentInstanceAddresses, componentPropTargetKey, derivedPairs, dockBudget, dockScreens, exampleFor, expandBlockBindings, fieldGroupOf, fieldStyleCssText, fieldStyleToCss, formatNumber, formatPropsAttribute, getBlockType, headingPaintCss, hiddenEverywhere, hideOnAttr, imageFrameCss, inWindow, isBlock, isButtonLookValue, isChromeLandmark, isCodeButton, isLinkObject, isRoleKey, isRulePaired, isScriptHref, isSlotChild, isTableValue, keyWords, landmarkRegions, linkAnchorOf, linkHref, linkRefOf, linkValueProblem, locatorFor, locatorPath, normalizeLinkValue, normalizeTableValue, normalizeWindow, parseNumberText, parsePropsAttribute, pickFieldStyle, placementBindOf, planSections, readButtonValue, readNumberFormat, readPath, regionOf, renderTableHtml, rulePartnerOf, safeCssUrl, sideFloorApplies, sideSpaceCss, slotBindOf, slotChildValues, slotItems, slotPathString, slotShapeProblems, spaceTokenCss, splitButtonStyle, tableCellText, tablePathString, tableRefCells, tableSearchText, tableToMarkdown, tableValueProblems, topFieldKeyOf, usesHideOn, videoUrlOf, videoValueProblem, visibleBlocks, visibleDeliveredLayout, visibleLayoutStructure, windowState, withButtonLookProps, withExample };
4004
+ /**
4005
+ * The V2 kit's storage contract, shared by V2 authoring (the dashboard kit) and prod validation.
4006
+ * One home per constant: a bound the two sides kept separately is how a value got refused on one
4007
+ * side and stored on the other (kit-facet-table.v3.md, "Carriers" and "Corpus floor").
4008
+ */
4009
+
4010
+ /** Tabs on one screen, the V2 target: a model's `fieldsets kind:"tab"` and a component's prop tabs alike. */
4011
+ declare const TAB_MAX = 8;
4012
+ /**
4013
+ * The model tab bound prod accepts TODAY (src/lib/content/dock-vocabulary.ts TAB_MAX): the
4014
+ * dashboard renders 3 tabs on a model screen. It rises to TAB_MAX when the dashboard renders 8
4015
+ * (facet table row 7, F12). Component prop tabs are at TAB_MAX already.
4016
+ */
4017
+ declare const TAB_MAX_RENDERABLE_NOW = 3;
4018
+ /** `ui.control:"segmented"`: the option count it stores. V2's 3 is a render-fit rule, not this. */
4019
+ declare const SEGMENTED_MIN = 2;
4020
+ declare const SEGMENTED_MAX = 8;
4021
+ /** Field / prop nesting depth. */
4022
+ declare const DEPTH_MAX = 10;
4023
+ /** Help and description caps by where the text sits. */
4024
+ declare const HELP_CAPS: {
4025
+ readonly field: 500;
4026
+ readonly prop: 200;
4027
+ readonly placeholder: 120;
4028
+ readonly helpMore: 2000;
4029
+ readonly option: 140;
4030
+ readonly fieldset: 500;
4031
+ readonly propGroup: 200;
4032
+ };
4033
+ /** `config.settings` on a slot prop or a slot / modular field: at most this many setting defs. */
4034
+ declare const SLOT_SETTINGS_MAX = 12;
4035
+ /**
4036
+ * The types a slot setting may be: one value on one block. A select's options are written inline
4037
+ * on the setting; no reference type, since a setting never points at another record.
4038
+ */
4039
+ declare const SLOT_SETTINGS_TYPES: readonly ["text", "slug", "select", "multiselect", "number", "rating", "date", "datetime", "boolean", "color", "icon", "link"];
4040
+ /**
4041
+ * The field types a `kind:'block'` model may hold: the TARGET set. The kit corpus uses every one
4042
+ * of them, so this is the bound; anything outside it is refused as out of domain.
4043
+ */
4044
+ declare const BLOCK_FIELD_TYPES: readonly ["text", "longtext", "richtext", "image", "link", "slug", "email", "phone", "color", "select", "number", "rating", "date", "datetime", "boolean", "video", "object", "array", "reference", "file", "tags"];
4045
+ /**
4046
+ * The staged part of BLOCK_FIELD_TYPES a block primitive renders TODAY
4047
+ * (src/lib/sections/block-model-mapping.ts FIELD_PRIMITIVE). A type in the target set but not
4048
+ * here is refused with `schema.block_field_unrenderable` only until its renderer ships, and then
4049
+ * joins this list. When this equals BLOCK_FIELD_TYPES (G7), the staging is over.
4050
+ */
4051
+ declare const BLOCK_FIELD_TYPES_RENDERABLE_NOW: readonly ["text", "longtext", "richtext", "image", "link", "slug", "email", "phone", "color", "select", "number", "rating", "date", "datetime", "boolean"];
4052
+ declare const V2_SHAPES: readonly ["block", "page", "entry", "global", "object"];
4053
+ /** What a definition IS in V2. On a model, `block` ⇔ `content_models.kind = 'block'`. */
4054
+ type V2Shape = (typeof V2_SHAPES)[number];
4055
+ declare const V2_PLACEMENTS: readonly ["inline", "section", "page"];
4056
+ /** Where a block may be placed. */
4057
+ type V2Placement = (typeof V2_PLACEMENTS)[number];
4058
+ /** The kit catalogue's categories, verbatim (dashboard src/kit/library/catalog.ts CATEGORY_ORDER). */
4059
+ declare const KIT_CATEGORIES: readonly ["Navigation & chrome", "Heroes", "Features & storytelling", "Social proof", "Media & galleries", "Commerce", "Pricing & plans", "Conversion & forms", "Listings & feeds", "Long-form & docs", "Company & people", "Events & places", "Data & interactive", "Advanced patterns"];
4060
+ type KitCategory = (typeof KIT_CATEGORIES)[number];
4061
+ /** A variant's chrome. Its slug, name and members are native; only these two are not. */
4062
+ interface V2VariantMeta {
4063
+ icon?: DockIconName;
4064
+ description?: string;
4065
+ }
4066
+ /** `components.v2` / `published_v2`. Category and icon are native columns. */
4067
+ interface ComponentV2 {
4068
+ shape?: V2Shape;
4069
+ placement?: V2Placement;
4070
+ }
4071
+ /** `content_models.v2`. Icon and preview are native (`icon`, `list_preview`). */
4072
+ interface ContentModelV2 {
4073
+ shape?: V2Shape;
4074
+ placement?: V2Placement;
4075
+ category?: KitCategory;
4076
+ /** By variant slug; the slugs themselves are the options of the model's `_variant` select. */
4077
+ variants?: Record<string, V2VariantMeta>;
4078
+ }
4079
+ /** `component_variant_groups.v2` / `published_v2`. ORDER is the array index, like field order. */
4080
+ interface VariantGroupV2 {
4081
+ variants?: Array<V2VariantMeta & {
4082
+ componentId: string;
4083
+ }>;
4084
+ }
4085
+ /** The keys each table's block may hold; validators build strict schemas from these. */
4086
+ declare const V2_KEYS: {
4087
+ readonly components: readonly ["shape", "placement"];
4088
+ readonly content_models: readonly ["shape", "placement", "category", "variants"];
4089
+ readonly component_variant_groups: readonly ["variants"];
4090
+ };
4091
+ /** Who last wrote a facet, weakest first: the generator, the site's own code, an agent, a person. */
4092
+ declare const SOURCE_RANK: {
4093
+ readonly auto: 0;
4094
+ readonly site: 1;
4095
+ readonly agent: 2;
4096
+ readonly human: 3;
4097
+ };
4098
+ type SchemaSource = keyof typeof SOURCE_RANK;
4099
+ /** The facets a per-def `sources` map tracks. */
4100
+ type SourcedFacet = "ui" | "input" | "ai";
4101
+ /** A field's or prop's `sources`: server-owned, stamped on write, never taken from a client. */
4102
+ type DefSources = Partial<Record<SourcedFacet, SchemaSource>>;
4103
+ /**
4104
+ * May `incoming` overwrite a facet `stored` last wrote? Never a weaker source over a stronger
4105
+ * one, so a re-derive cannot undo a person's edit. Equal rank may: an agent revises its own work.
4106
+ * An absent source is `auto`.
4107
+ */
4108
+ declare const mayOverwrite: (stored: SchemaSource | undefined, incoming: SchemaSource) => boolean;
4109
+ declare const UI_REFUSAL_CODES: {
4110
+ readonly schema: readonly ["facet_unclassified", "excluded_facet", "depth_exceeded", "validation_failed", "hash_mismatch", "non_finite_number", "shape_kind_mismatch", "block_field_unrenderable", "block_not_accepted", "derived_field", "feature_unknown"];
4111
+ readonly build: readonly ["peer_missing", "kit_major_unsupported", "compile_error", "nondeterministic", "size_exceeded"];
4112
+ readonly protocol: readonly ["unsupported", "handshake_timeout", "origin_mismatch", "write_denied"];
4113
+ readonly runtime: readonly ["crashed", "blank", "csp_violation"];
4114
+ readonly policy: readonly ["confirmation_required", "flag_off"];
4115
+ };
4116
+ type UiRefusalFamily = keyof typeof UI_REFUSAL_CODES;
4117
+ type UiRefusal = {
4118
+ [F in UiRefusalFamily]: {
4119
+ family: F;
4120
+ code: (typeof UI_REFUSAL_CODES)[F][number];
4121
+ message: string;
4122
+ /** What it is about: a facet name, a field type, a path. */
4123
+ detail?: string;
4124
+ };
4125
+ }[UiRefusalFamily];
4126
+ /** `schema.depth_exceeded` */
4127
+ declare const uiRefusalId: (r: UiRefusal) => string;
4128
+ declare const isUiRefusal: (v: unknown) => v is UiRefusal;
4129
+ /** KEY_RESERVED, the API contract: `derived` (the Layout id prefix), `layout` and `page` (address prefixes). */
4130
+ declare const KEY_RESERVED: ReadonlySet<string>;
4131
+ /** The derive lane's minted-key bound: KEY_RESERVED and `id` (key-rules.ts RESERVED_KEYS). */
4132
+ declare const DERIVE_MINTED_RESERVED: ReadonlySet<string>;
4133
+ /** Keys that reach an object's prototype (safe-keys.ts FORBIDDEN_KEYS): also refused as KEY_RESERVED. */
4134
+ declare const KEY_FORBIDDEN: ReadonlySet<string>;
4135
+ /** A key with this lead is the platform's too (`_type`, `_key`, `_variant`): KEY_RESERVED. */
4136
+ declare const KEY_RESERVED_PREFIX = "_";
4137
+ /** KEY_FORMAT: a stored field key is a letter, then letters, digits, `-` and `_` (key-rules.ts API_KEY). */
4138
+ declare const KEY_FORMAT: RegExp;
4139
+ /** Whether the API refuses a key as KEY_RESERVED (content.ts keyRuleProblem). */
4140
+ declare const isReservedKey: (key: string) => boolean;
4141
+ /** Whether the derive lane may not mint a key (key-rules.ts isReservedKey): the API's words and `id`. */
4142
+ declare const isDeriveReservedKey: (key: string) => boolean;
4143
+ /**
4144
+ * A primitive `array` (`config.itemType`): the item types it may list, the only config keys it may
4145
+ * hold, and the item types an array with `zones` may not name (a list of values holds no rows).
4146
+ * `minItems ≤ maxItems`, and both bound the primitive list only (beside `itemType`).
4147
+ * src/lib/validation/schemas/content.ts ARRAY_ITEM_TYPES / PRIMITIVE_ARRAY_CONFIG_KEYS, in their order.
4148
+ */
4149
+ declare const PRIMITIVE_ARRAY_RULE: {
4150
+ readonly itemTypes: readonly ["text", "number", "date", "image", "link", "richtext"];
4151
+ readonly configKeys: readonly ["itemType", "minItems", "maxItems", "aliases"];
4152
+ readonly notWithZones: readonly ["image", "link", "richtext"];
4153
+ };
4154
+ declare function canonicalJson(value: unknown): string;
4155
+ /**
4156
+ * The definition a table's `schema_hash` is taken over: what a dock UI is built against. Names,
4157
+ * slugs and list chrome are not in it. Migration 0503's schema_hash_clear_when_stale triggers clear
4158
+ * the hash when exactly these change.
4159
+ */
4160
+ declare const SCHEMA_HASH_INPUTS: {
4161
+ readonly components: readonly ["props", "tabs", "v2"];
4162
+ readonly content_models: readonly ["fields", "fieldsets", "v2"];
4163
+ readonly component_variant_groups: readonly ["canonicalInputs", "v2"];
4164
+ };
4165
+ type SchemaHashTable = keyof typeof SCHEMA_HASH_INPUTS;
4166
+ /**
4167
+ * What `canonicalJson` hashes for one definition: exactly its table's inputs, so an unset key and a
4168
+ * cleared one hash alike. `schema_hash` = "v1:" + sha256 hex of `canonicalJson(schemaHashInput(…))`.
4169
+ */
4170
+ declare function schemaHashInput(table: SchemaHashTable, def: Readonly<Record<string, unknown>>): Record<string, unknown>;
4171
+
4172
+ /**
4173
+ * The rich-text features vocabulary: every name a field's `config.features` may carry.
4174
+ *
4175
+ * It is the ONE gate. What a field accepts (the sanitiser's elements, the Portable Text schema)
4176
+ * is derived from it by @bettercms-ai/richtext `acceptFor`, never stored beside it. Pure and
4177
+ * dependency-free, so richtext, the kit and the backend validation read the same list and the
4178
+ * same alias rule, and none of them keeps a copy.
4179
+ */
4180
+
4181
+ /** The always-on inline marks, Lexical-era names kept as written (richtext ALWAYS_ON_FEATURES). */
4182
+ declare const RICHTEXT_MARK_FEATURES: readonly ["bold", "italic", "underline", "strikethrough", "code", "highlight"];
4183
+ /** The toggleable capabilities stored configs already name, in their order (richtext TOGGLEABLE_FEATURES). */
4184
+ declare const RICHTEXT_TOGGLE_FEATURES: readonly ["headings", "blockquote", "horizontalRule", "orderedList", "unorderedList", "checklist", "link", "internalLink", "inlineImage", "videoEmbed", "codeBlock", "table", "columns"];
4185
+ /** One feature per heading level, so a field can allow h2 and h3 without h1. */
4186
+ declare const RICHTEXT_HEADING_FEATURES: readonly ["h1", "h2", "h3", "h4", "h5", "h6"];
4187
+ /**
4188
+ * The V2 blocks the RT steps build. With `checklist` and `columns` above, these are the nine.
4189
+ * `embed` is the third-party providers (X, CodePen, Figma, Maps, Spotify, Podcasts, audio, Shape);
4190
+ * `videoEmbed` stays the video, so a field can take a video without taking an X post.
4191
+ */
4192
+ declare const RICHTEXT_BLOCK_FEATURES: readonly ["gallery", "embed", "tableOfContents", "relatedPosts", "authorBio", "footnotes", "button"];
4193
+ /** Every name a stored config may carry, in vocabulary order. */
4194
+ declare const RICHTEXT_FEATURES: readonly ["bold", "italic", "underline", "strikethrough", "code", "highlight", "headings", "blockquote", "horizontalRule", "orderedList", "unorderedList", "checklist", "link", "internalLink", "inlineImage", "videoEmbed", "codeBlock", "table", "columns", "h1", "h2", "h3", "h4", "h5", "h6", "gallery", "embed", "tableOfContents", "relatedPosts", "authorBio", "footnotes", "button"];
4195
+ type RichTextFeature = (typeof RICHTEXT_FEATURES)[number];
4196
+ /**
4197
+ * Legacy names → the canonical features they mean. A read expands them, and a write stores the
4198
+ * expansion, so an alias never outlives the next save. `headings` was one Lexical switch for every
4199
+ * level; the audit (src, MCP, dashboard writers, 2026-10-24) found no other legacy name.
4200
+ */
4201
+ declare const RICHTEXT_FEATURE_ALIASES: Record<string, readonly RichTextFeature[]>;
4202
+ /**
4203
+ * A stored or submitted feature list in canonical form: aliases expanded (and never returned),
4204
+ * duplicates dropped, VOCABULARY order, so two lists that mean the same thing are equal arrays.
4205
+ * `unknown` keeps each name the vocabulary does not hold, as written and once, so a reader can
4206
+ * log it and a writer can refuse it by name (`richtext.feature_unknown:<name>`).
4207
+ */
4208
+ declare function normaliseRichTextFeatures(names: readonly string[]): {
4209
+ features: RichTextFeature[];
4210
+ unknown: string[];
4211
+ };
4212
+ /** The elements Prismic exposes (richtext CORE_ELEMENTS, in its order). */
4213
+ declare const RICHTEXT_CORE_ELEMENTS: readonly ["p", "pre", "h1", "h2", "h3", "h4", "h5", "h6", "b", "i", "link", "image", "code", "ul", "ol", "rtl"];
4214
+ /** What the platform does beyond Prismic (richtext ADVANCED_ELEMENTS, in its order). `embed` is the video. */
4215
+ declare const RICHTEXT_ADVANCED_ELEMENTS: readonly ["u", "mark", "s", "checklist", "table", "columns", "embed", "internalLink"];
4216
+ /** One element per new V2 block feature. `providerEmbed` is the `embed` feature's (the name `embed` is the video's). */
4217
+ declare const RICHTEXT_BLOCK_ELEMENTS: readonly ["gallery", "providerEmbed", "tableOfContents", "relatedPosts", "authorBio", "footnotes", "button"];
4218
+ declare const RICHTEXT_ELEMENTS: readonly ["p", "pre", "h1", "h2", "h3", "h4", "h5", "h6", "b", "i", "link", "image", "code", "ul", "ol", "rtl", "u", "mark", "s", "checklist", "table", "columns", "embed", "internalLink", "gallery", "providerEmbed", "tableOfContents", "relatedPosts", "authorBio", "footnotes", "button"];
4219
+ type RichTextElementName = (typeof RICHTEXT_ELEMENTS)[number];
4220
+ /** The rich-text refusals of the UiRefusal `schema` family. */
4221
+ type RichTextRefusalCode = "block_not_accepted" | "derived_field" | "feature_unknown";
4222
+ /**
4223
+ * One rich-text refusal, named the same way everywhere: `message` is `richtext.<code>:<detail>`
4224
+ * (a block's `_type`, a derived key, an unknown feature name), so a caller can show or match it.
4225
+ */
4226
+ declare const richTextRefusal: (code: RichTextRefusalCode, detail: string) => UiRefusal;
4227
+
4228
+ export { type AlignToken, type AllowRule, type ApiError, type ApiKey, type ApiKeyPermission, type ApiKeyTokenType, type ArrayZoneConfig, type AssertEqual, type AuthResponse, type AuthSession, type AuthUser, BLOCK_BINDINGS, BLOCK_FIELD_TYPES, BLOCK_FIELD_TYPES_RENDERABLE_NOW, BODY_SCHEMA_ORIGINS, BREAKPOINTS, BUTTON_ACTIONS, BUTTON_FULL_WIDTH_INVALID, BUTTON_ICONS, BUTTON_ICON_NAMES, BUTTON_LOOK_KEYS, BUTTON_PLACEMENT_KEYS, BUTTON_SIZES, BUTTON_VARIANTS, type BetterCMSErrorCode, type BgToken, type BindingKind, type BlockBinding, type BlockHoverStyle, type BlockStyle, type BlockType, type BodySchema, type BodySchemaOrigin, type ButtonAction, type ButtonBlock, type ButtonIcon, type ButtonLinkCandidate, type ButtonLookKey, type ButtonProps, type ButtonSiteLook, type ButtonSizeName, type ButtonValue, type ButtonVariant, CANVAS_GESTURE_NAMES, CODE_SLOT_PREFIX, COMPONENT_PROP_TYPES, CONTROL_HELP, type CanonicalInputDefinition, type CanvasGesture, type ChoiceOption, type CollectionBlock, type CollectionFilter, type CollectionProps, type ColorToken, type ColumnsBlock, type ColumnsProps, type Component, type ComponentBlock, type ComponentCategory, type ComponentFormPropRef, type ComponentPreview, type ComponentPropDef, type ComponentPropType, type ComponentPropUi, type ComponentProps, type ComponentSubField, type ComponentTab, type ComponentV2, type ComponentVariantGroup, type Content, type ContentBlock, type ContentEntry, type ContentModel, type ContentModelField, type ContentModelFieldType, type ContentModelFieldUi, type ContentModelV2, type ContentPageResult, type ContentResponse, type ContentWidthToken, type ControlKind, type CornerToken, DEPTH_MAX, DERIVE_MINTED_RESERVED, DIALOG_SELECTOR, DOCK_BUDGET, DOCK_ICON_NAMES, DOCK_ICON_NAME_SET, type DeepReadonly, type DefSources, type DeliveredLayout, type DeliveryComponent, type DeliveryEntry, type DeliveryEntrySeo, type DeliveryList, type DeliveryPage, type DerivedLocator, type DockBudget, type DockFieldLike, type DockFieldsetLike, type DockIconName, type DockInputRef, type DockLane, type DockNode, type DockPropGroupLike, type DockScreen, type ElementLike, type ExpandedBinding, FIELD_SIZE_ZOOM, FIELD_STYLE_KEYS, FOOTER_SECTION_ID, type FieldConfig, type FieldSize, type FieldStyle, type FieldStyleKey, type FieldStyles, type Fieldset, type FieldsetKind, type FieldsetUiBefore, type FontSizeToken, type FooterBlock, type FooterColumn, type FooterProps, type Form, type FormBlock, type FormField, type FormProps, type FormSubmission, HELP_CAPS, HELP_MAX, type HeadingBlock, type HeadingProps, IMAGE_ASPECTS, IMAGE_FRAME_RADIUS, type ImageAspect, type ImageBlock, type ImageProps, KEY_FORBIDDEN, KEY_FORMAT, KEY_RESERVED, KEY_RESERVED_PREFIX, KIT_CATEGORIES, type KitCategory, LANDMARK_SELECTOR, LAYOUT_SECTION_ICONS, LAYOUT_SECTION_ICON_SET, LINK_RELS, LINK_VALUE_TYPES, LIST_ITEMS_CAP, LOCATOR_PATH, type LandmarkChainElement, type LandmarkElement, type LayoutComponentItem, type LayoutDataDocument, type LayoutFieldDefinition, type LayoutFieldItem, type LayoutFieldType, type LayoutScalarFieldType, type LayoutSection, type LayoutSectionIcon, type LayoutSectionItem, type LayoutStructureDocument, type LayoutZone, type LinkPairSibling, type LinkRel, type LinkValue, type LinkValueType, type LocatorGrammar, MAIN_SELECTOR, type ManagementLayoutCommand, type MediaAsset, type MediaCaptionTrack, type MediaFieldValue, NAVIGATION_SECTION_ID, type NavLink, type NavbarBlock, type NavbarProps, type NumberFieldFormat, type NumberScale, OPTION_DESCRIPTION_MAX, type OpenMode, PAGE_CONTENT_ANCHOR_ID, PRIMITIVE_ARRAY_RULE, type Page, type PageLayoutOverrideDataDocument, type PageLayoutOverrideDocument, type PageLayoutOverrideState, type PageLayoutOverrideStructureDocument, type PageLayoutSectionOverride, type PageLayoutSectionStructureOverride, type PageMetaJson, type PageOnlyLayoutSection, type PageSectionPlacement, type PaginatedResult, type Perspective, type PortableTextDocument, type PortableTextNode, type PropGroup, type PropTab, RESPONSIVE_CSS, RICHTEXT_ADVANCED_ELEMENTS, RICHTEXT_BLOCK_ELEMENTS, RICHTEXT_BLOCK_FEATURES, RICHTEXT_CORE_ELEMENTS, RICHTEXT_ELEMENTS, RICHTEXT_FEATURES, RICHTEXT_FEATURE_ALIASES, RICHTEXT_HEADING_FEATURES, RICHTEXT_MARK_FEATURES, RICHTEXT_TOGGLE_FEATURES, ROLE_HELP, ROLE_KEYS, type RadiusToken, type ReadButtonValue, type Redirect, type ReservedLayoutSection, type ResolvedLayoutNode, type RichTextBlock, type RichTextElementName, type RichTextFeature, type RichTextProps, type RichTextRefusalCode, SCHEMA_HASH_INPUTS, SECTION_DOCTRINE, SECTION_SPACE_TOKENS, SEGMENTED_MAX, SEGMENTED_MIN, SIDE_SPACE_MIN_PX, SIDE_SPACE_TOKENS, SLOT_CHILD_KEYS, SLOT_ITEMS_CAP, SLOT_MAX_ITEMS, SLOT_SETTINGS_MAX, SLOT_SETTINGS_TYPES, SOURCE_RANK, SPACE_BOTTOM_TOKENS, SPACE_STEP_TOKENS, type ScaleUnit, type SchemaHashTable, type SchemaSource, type SectionBlock, type SectionPlanItem, type SectionProps, type SectionSpaceToken, type ShadowToken, type ShowIf, type ShowIfRule, type SignInInput, type SignUpInput, type SiteSeoDefaults, type SlideItem, type SliderBlock, type SliderProps, type SlotChild, type SlotItem, type SlotShapeOptions, type SlotShapeProblem, type SlotValue, type SourcedFacet, type SpaceStepToken, type SpaceToken, type SpacerBlock, type SpacerProps, TABLE_COLUMN_TYPES, TABLE_JSONLD_TYPES, TABLE_LIMITS, TABLE_RESPONSIVE, TAB_MAX, TAB_MAX_RENDERABLE_NOW, TAG_HEADS, type TabItem, type TableCell, type TableCellObject, type TableCellValue, type TableCheckOptions, type TableColumn, type TableColumnType, type TableFieldOptions, type TableFootnote, type TableGroup, type TableLink, type TableProblem, type TableRef, type TableRefResolved, type TableRow, type TableValue, type TabsBlock, type TabsProps, type TextBlock, type TextProps, type ThemeToken, UI_REFUSAL_CODES, type UiBefore, type UiOrigin, type UiRefusal, type UiRefusalFamily, type V2Placement, type V2Shape, type V2VariantMeta, V2_KEYS, V2_PLACEMENTS, V2_SHAPES, VIDEO_TRANSCRIPT_MAX, VIDEO_VALUE_KEYS, type VariantGroupV2, type VariantInputMapping, type VideoBlock, type VideoProps, type VideoValue, type VisibilityWindow, type WeightToken, type WindowState, type Workspace, type ZoneField, allowRuleOf, anchorTargetRel, blockStyleToColumnCss, blockStyleToCss, blockStyleToInnerCss, bodySchemaOf, buttonBlockProps, buttonFullWidthProblem, buttonIconOf, buttonIconSvg, buttonLinkPairs, buttonLookValue, buttonSiteLookOf, buttonValueOfInstance, buttonValueProblem, buttonVariantOf, candidateRole, canonicalJson, componentInstanceAddresses, componentPropTargetKey, derivedPairs, dockBudget, dockScreens, exampleFor, expandBlockBindings, fieldGroupOf, fieldStyleCssText, fieldStyleToCss, formatNumber, formatPropsAttribute, getBlockType, headingPaintCss, hiddenEverywhere, hideOnAttr, imageFrameCss, inWindow, isBlock, isButtonLookValue, isChromeLandmark, isCodeButton, isDeriveReservedKey, isLinkObject, isReservedKey, isRoleKey, isRulePaired, isScriptHref, isSlotChild, isTableValue, isUiRefusal, keyWords, landmarkRegions, linkAnchorOf, linkHref, linkRefOf, linkValueProblem, locatorFor, locatorPath, mayOverwrite, normaliseRichTextFeatures, normalizeLinkValue, normalizeTableValue, normalizeWindow, parseNumberText, parsePropsAttribute, pickFieldStyle, placementBindOf, planSections, readButtonValue, readNumberFormat, readPath, regionOf, renderTableHtml, richTextRefusal, rulePartnerOf, safeCssUrl, schemaHashInput, sideFloorApplies, sideSpaceCss, slotBindOf, slotChildValues, slotItems, slotPathString, slotShapeProblems, spaceTokenCss, splitButtonStyle, tableCellText, tablePathString, tableRefCells, tableSearchText, tableToMarkdown, tableValueProblems, topFieldKeyOf, uiRefusalId, usesHideOn, videoUrlOf, videoValueProblem, visibleBlocks, visibleDeliveredLayout, visibleLayoutStructure, windowState, withButtonLookProps, withExample };
package/dist/index.js CHANGED
@@ -4550,8 +4550,263 @@ function planSections(slots, blocks) {
4550
4550
  });
4551
4551
  return out;
4552
4552
  }
4553
+
4554
+ // src/kit-v2.ts
4555
+ var TAB_MAX = 8;
4556
+ var TAB_MAX_RENDERABLE_NOW = 3;
4557
+ var SEGMENTED_MIN = 2;
4558
+ var SEGMENTED_MAX = 8;
4559
+ var DEPTH_MAX = 10;
4560
+ var HELP_CAPS = {
4561
+ field: 500,
4562
+ prop: 200,
4563
+ placeholder: 120,
4564
+ helpMore: 2e3,
4565
+ option: OPTION_DESCRIPTION_MAX,
4566
+ fieldset: 500,
4567
+ propGroup: 200
4568
+ };
4569
+ var SLOT_SETTINGS_MAX = 12;
4570
+ var SLOT_SETTINGS_TYPES = [
4571
+ "text",
4572
+ "slug",
4573
+ "select",
4574
+ "multiselect",
4575
+ "number",
4576
+ "rating",
4577
+ "date",
4578
+ "datetime",
4579
+ "boolean",
4580
+ "color",
4581
+ "icon",
4582
+ "link"
4583
+ ];
4584
+ var BLOCK_FIELD_TYPES = [
4585
+ "text",
4586
+ "longtext",
4587
+ "richtext",
4588
+ "image",
4589
+ "link",
4590
+ "slug",
4591
+ "email",
4592
+ "phone",
4593
+ "color",
4594
+ "select",
4595
+ "number",
4596
+ "rating",
4597
+ "date",
4598
+ "datetime",
4599
+ "boolean",
4600
+ "video",
4601
+ "object",
4602
+ "array",
4603
+ "reference",
4604
+ "file",
4605
+ "tags"
4606
+ ];
4607
+ var BLOCK_FIELD_TYPES_RENDERABLE_NOW = [
4608
+ "text",
4609
+ "longtext",
4610
+ "richtext",
4611
+ "image",
4612
+ "link",
4613
+ "slug",
4614
+ "email",
4615
+ "phone",
4616
+ "color",
4617
+ "select",
4618
+ "number",
4619
+ "rating",
4620
+ "date",
4621
+ "datetime",
4622
+ "boolean"
4623
+ ];
4624
+ var V2_SHAPES = ["block", "page", "entry", "global", "object"];
4625
+ var V2_PLACEMENTS = ["inline", "section", "page"];
4626
+ var KIT_CATEGORIES = [
4627
+ "Navigation & chrome",
4628
+ "Heroes",
4629
+ "Features & storytelling",
4630
+ "Social proof",
4631
+ "Media & galleries",
4632
+ "Commerce",
4633
+ "Pricing & plans",
4634
+ "Conversion & forms",
4635
+ "Listings & feeds",
4636
+ "Long-form & docs",
4637
+ "Company & people",
4638
+ "Events & places",
4639
+ "Data & interactive",
4640
+ "Advanced patterns"
4641
+ ];
4642
+ var V2_KEYS = {
4643
+ components: ["shape", "placement"],
4644
+ content_models: ["shape", "placement", "category", "variants"],
4645
+ component_variant_groups: ["variants"]
4646
+ };
4647
+ var SOURCE_RANK = { auto: 0, site: 1, agent: 2, human: 3 };
4648
+ var mayOverwrite = (stored, incoming) => SOURCE_RANK[incoming] >= SOURCE_RANK[stored ?? "auto"];
4649
+ var UI_REFUSAL_CODES = {
4650
+ schema: [
4651
+ "facet_unclassified",
4652
+ "excluded_facet",
4653
+ "depth_exceeded",
4654
+ "validation_failed",
4655
+ "hash_mismatch",
4656
+ "non_finite_number",
4657
+ "shape_kind_mismatch",
4658
+ "block_field_unrenderable",
4659
+ // rich text (richtext-features.ts richTextRefusal): `richtext.<code>:<detail>`
4660
+ "block_not_accepted",
4661
+ "derived_field",
4662
+ "feature_unknown"
4663
+ ],
4664
+ build: ["peer_missing", "kit_major_unsupported", "compile_error", "nondeterministic", "size_exceeded"],
4665
+ protocol: ["unsupported", "handshake_timeout", "origin_mismatch", "write_denied"],
4666
+ runtime: ["crashed", "blank", "csp_violation"],
4667
+ policy: ["confirmation_required", "flag_off"]
4668
+ };
4669
+ var uiRefusalId = (r) => `${r.family}.${r.code}`;
4670
+ var isUiRefusal = (v) => {
4671
+ if (typeof v !== "object" || v === null) return false;
4672
+ const { family, code, message } = v;
4673
+ return typeof family === "string" && Object.hasOwn(UI_REFUSAL_CODES, family) && UI_REFUSAL_CODES[family].includes(code) && typeof message === "string";
4674
+ };
4675
+ var KEY_RESERVED = /* @__PURE__ */ new Set(["derived", "layout", "page"]);
4676
+ var DERIVE_MINTED_RESERVED = /* @__PURE__ */ new Set([...KEY_RESERVED, "id"]);
4677
+ var KEY_FORBIDDEN = /* @__PURE__ */ new Set(["__proto__", "prototype", "constructor"]);
4678
+ var KEY_RESERVED_PREFIX = "_";
4679
+ var KEY_FORMAT = /^[A-Za-z][A-Za-z0-9_-]*$/;
4680
+ var isReservedKey = (key) => KEY_FORBIDDEN.has(key) || KEY_RESERVED.has(key) || key.startsWith(KEY_RESERVED_PREFIX);
4681
+ var isDeriveReservedKey = (key) => isReservedKey(key) || DERIVE_MINTED_RESERVED.has(key);
4682
+ var PRIMITIVE_ARRAY_RULE = {
4683
+ itemTypes: ["text", "number", "date", "image", "link", "richtext"],
4684
+ configKeys: ["itemType", "minItems", "maxItems", "aliases"],
4685
+ notWithZones: ["image", "link", "richtext"]
4686
+ };
4687
+ function canonicalNumber(value) {
4688
+ if (!Number.isFinite(value)) throw new TypeError("Canonical JSON only supports finite numbers");
4689
+ if (Object.is(value, -0)) return "0";
4690
+ const encoded = JSON.stringify(value);
4691
+ const scientific = /^(-?)(\d+)(?:\.(\d+))?[eE]([+-]?\d+)$/.exec(encoded);
4692
+ if (!scientific) return encoded;
4693
+ const [, sign, integer, fraction = "", exponentText] = scientific;
4694
+ const digits = `${integer}${fraction}`;
4695
+ const decimalPoint = integer.length + Number(exponentText);
4696
+ if (decimalPoint <= 0) return `${sign}0.${"0".repeat(-decimalPoint)}${digits}`;
4697
+ if (decimalPoint >= digits.length) return `${sign}${digits}${"0".repeat(decimalPoint - digits.length)}`;
4698
+ return `${sign}${digits.slice(0, decimalPoint)}.${digits.slice(decimalPoint)}`;
4699
+ }
4700
+ var skipped = (v) => v === void 0 || typeof v === "function" || typeof v === "symbol";
4701
+ function canonicalJson(value) {
4702
+ if (value === null) return "null";
4703
+ if (typeof value === "number") return canonicalNumber(value);
4704
+ if (typeof value === "string" || typeof value === "boolean") return JSON.stringify(value);
4705
+ if (Array.isArray(value)) return `[${value.map((child) => skipped(child) ? "null" : canonicalJson(child)).join(",")}]`;
4706
+ if (typeof value === "object") {
4707
+ const record = value;
4708
+ const keys = Object.keys(record).filter((key) => !skipped(record[key])).sort();
4709
+ return `{${keys.map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(",")}}`;
4710
+ }
4711
+ throw new TypeError(`Unsupported canonical JSON value: ${typeof value}`);
4712
+ }
4713
+ var SCHEMA_HASH_INPUTS = {
4714
+ components: ["props", "tabs", "v2"],
4715
+ content_models: ["fields", "fieldsets", "v2"],
4716
+ component_variant_groups: ["canonicalInputs", "v2"]
4717
+ };
4718
+ var LIST_INPUTS = /* @__PURE__ */ new Set(["props", "fields", "canonicalInputs"]);
4719
+ function schemaHashInput(table, def) {
4720
+ return Object.fromEntries(SCHEMA_HASH_INPUTS[table].map((k) => [k, def[k] ?? (LIST_INPUTS.has(k) ? [] : null)]));
4721
+ }
4722
+
4723
+ // src/richtext-features.ts
4724
+ var RICHTEXT_MARK_FEATURES = ["bold", "italic", "underline", "strikethrough", "code", "highlight"];
4725
+ var RICHTEXT_TOGGLE_FEATURES = [
4726
+ "headings",
4727
+ "blockquote",
4728
+ "horizontalRule",
4729
+ "orderedList",
4730
+ "unorderedList",
4731
+ "checklist",
4732
+ "link",
4733
+ "internalLink",
4734
+ "inlineImage",
4735
+ "videoEmbed",
4736
+ "codeBlock",
4737
+ "table",
4738
+ "columns"
4739
+ ];
4740
+ var RICHTEXT_HEADING_FEATURES = ["h1", "h2", "h3", "h4", "h5", "h6"];
4741
+ var RICHTEXT_BLOCK_FEATURES = [
4742
+ "gallery",
4743
+ "embed",
4744
+ "tableOfContents",
4745
+ "relatedPosts",
4746
+ "authorBio",
4747
+ "footnotes",
4748
+ "button"
4749
+ ];
4750
+ var RICHTEXT_FEATURES = [
4751
+ ...RICHTEXT_MARK_FEATURES,
4752
+ ...RICHTEXT_TOGGLE_FEATURES,
4753
+ ...RICHTEXT_HEADING_FEATURES,
4754
+ ...RICHTEXT_BLOCK_FEATURES
4755
+ ];
4756
+ var RICHTEXT_FEATURE_ALIASES = {
4757
+ headings: RICHTEXT_HEADING_FEATURES
4758
+ };
4759
+ var KNOWN = new Set(RICHTEXT_FEATURES);
4760
+ var isAlias = (name) => Object.hasOwn(RICHTEXT_FEATURE_ALIASES, name);
4761
+ function normaliseRichTextFeatures(names) {
4762
+ const want = /* @__PURE__ */ new Set();
4763
+ const unknown = [];
4764
+ for (const name of names) {
4765
+ if (isAlias(name)) for (const f of RICHTEXT_FEATURE_ALIASES[name]) want.add(f);
4766
+ else if (KNOWN.has(name)) want.add(name);
4767
+ else if (!unknown.includes(name)) unknown.push(name);
4768
+ }
4769
+ return { features: RICHTEXT_FEATURES.filter((f) => want.has(f) && !isAlias(f)), unknown };
4770
+ }
4771
+ var RICHTEXT_CORE_ELEMENTS = [
4772
+ "p",
4773
+ "pre",
4774
+ "h1",
4775
+ "h2",
4776
+ "h3",
4777
+ "h4",
4778
+ "h5",
4779
+ "h6",
4780
+ "b",
4781
+ "i",
4782
+ "link",
4783
+ "image",
4784
+ "code",
4785
+ "ul",
4786
+ "ol",
4787
+ "rtl"
4788
+ ];
4789
+ var RICHTEXT_ADVANCED_ELEMENTS = ["u", "mark", "s", "checklist", "table", "columns", "embed", "internalLink"];
4790
+ var RICHTEXT_BLOCK_ELEMENTS = [
4791
+ "gallery",
4792
+ "providerEmbed",
4793
+ "tableOfContents",
4794
+ "relatedPosts",
4795
+ "authorBio",
4796
+ "footnotes",
4797
+ "button"
4798
+ ];
4799
+ var RICHTEXT_ELEMENTS = [...RICHTEXT_CORE_ELEMENTS, ...RICHTEXT_ADVANCED_ELEMENTS, ...RICHTEXT_BLOCK_ELEMENTS];
4800
+ var richTextRefusal = (code, detail) => ({
4801
+ family: "schema",
4802
+ code,
4803
+ detail,
4804
+ message: `richtext.${code}:${detail}`
4805
+ });
4553
4806
  export {
4554
4807
  BLOCK_BINDINGS,
4808
+ BLOCK_FIELD_TYPES,
4809
+ BLOCK_FIELD_TYPES_RENDERABLE_NOW,
4555
4810
  BODY_SCHEMA_ORIGINS,
4556
4811
  BREAKPOINTS,
4557
4812
  BUTTON_ACTIONS,
@@ -4566,6 +4821,8 @@ export {
4566
4821
  CODE_SLOT_PREFIX,
4567
4822
  COMPONENT_PROP_TYPES,
4568
4823
  CONTROL_HELP,
4824
+ DEPTH_MAX,
4825
+ DERIVE_MINTED_RESERVED,
4569
4826
  DIALOG_SELECTOR,
4570
4827
  DOCK_BUDGET,
4571
4828
  DOCK_ICON_NAMES,
@@ -4573,9 +4830,15 @@ export {
4573
4830
  FIELD_SIZE_ZOOM,
4574
4831
  FIELD_STYLE_KEYS,
4575
4832
  FOOTER_SECTION_ID,
4833
+ HELP_CAPS,
4576
4834
  HELP_MAX,
4577
4835
  IMAGE_ASPECTS,
4578
4836
  IMAGE_FRAME_RADIUS,
4837
+ KEY_FORBIDDEN,
4838
+ KEY_FORMAT,
4839
+ KEY_RESERVED,
4840
+ KEY_RESERVED_PREFIX,
4841
+ KIT_CATEGORIES,
4579
4842
  LANDMARK_SELECTOR,
4580
4843
  LAYOUT_SECTION_ICONS,
4581
4844
  LAYOUT_SECTION_ICON_SET,
@@ -4587,23 +4850,46 @@ export {
4587
4850
  NAVIGATION_SECTION_ID,
4588
4851
  OPTION_DESCRIPTION_MAX,
4589
4852
  PAGE_CONTENT_ANCHOR_ID,
4853
+ PRIMITIVE_ARRAY_RULE,
4590
4854
  RESPONSIVE_CSS,
4855
+ RICHTEXT_ADVANCED_ELEMENTS,
4856
+ RICHTEXT_BLOCK_ELEMENTS,
4857
+ RICHTEXT_BLOCK_FEATURES,
4858
+ RICHTEXT_CORE_ELEMENTS,
4859
+ RICHTEXT_ELEMENTS,
4860
+ RICHTEXT_FEATURES,
4861
+ RICHTEXT_FEATURE_ALIASES,
4862
+ RICHTEXT_HEADING_FEATURES,
4863
+ RICHTEXT_MARK_FEATURES,
4864
+ RICHTEXT_TOGGLE_FEATURES,
4591
4865
  ROLE_HELP,
4592
4866
  ROLE_KEYS,
4867
+ SCHEMA_HASH_INPUTS,
4593
4868
  SECTION_DOCTRINE,
4594
4869
  SECTION_SPACE_TOKENS,
4870
+ SEGMENTED_MAX,
4871
+ SEGMENTED_MIN,
4595
4872
  SIDE_SPACE_MIN_PX,
4596
4873
  SIDE_SPACE_TOKENS,
4597
4874
  SLOT_CHILD_KEYS,
4598
4875
  SLOT_ITEMS_CAP,
4599
4876
  SLOT_MAX_ITEMS,
4877
+ SLOT_SETTINGS_MAX,
4878
+ SLOT_SETTINGS_TYPES,
4879
+ SOURCE_RANK,
4600
4880
  SPACE_BOTTOM_TOKENS,
4601
4881
  SPACE_STEP_TOKENS,
4602
4882
  TABLE_COLUMN_TYPES,
4603
4883
  TABLE_JSONLD_TYPES,
4604
4884
  TABLE_LIMITS,
4605
4885
  TABLE_RESPONSIVE,
4886
+ TAB_MAX,
4887
+ TAB_MAX_RENDERABLE_NOW,
4606
4888
  TAG_HEADS,
4889
+ UI_REFUSAL_CODES,
4890
+ V2_KEYS,
4891
+ V2_PLACEMENTS,
4892
+ V2_SHAPES,
4607
4893
  VIDEO_TRANSCRIPT_MAX,
4608
4894
  VIDEO_VALUE_KEYS,
4609
4895
  allowRuleOf,
@@ -4623,6 +4909,7 @@ export {
4623
4909
  buttonValueProblem,
4624
4910
  buttonVariantOf,
4625
4911
  candidateRole,
4912
+ canonicalJson,
4626
4913
  componentInstanceAddresses,
4627
4914
  componentPropTargetKey,
4628
4915
  derivedPairs,
@@ -4645,12 +4932,15 @@ export {
4645
4932
  isButtonLookValue,
4646
4933
  isChromeLandmark,
4647
4934
  isCodeButton,
4935
+ isDeriveReservedKey,
4648
4936
  isLinkObject,
4937
+ isReservedKey,
4649
4938
  isRoleKey,
4650
4939
  isRulePaired,
4651
4940
  isScriptHref,
4652
4941
  isSlotChild,
4653
4942
  isTableValue,
4943
+ isUiRefusal,
4654
4944
  keyWords,
4655
4945
  landmarkRegions,
4656
4946
  linkAnchorOf,
@@ -4659,6 +4949,8 @@ export {
4659
4949
  linkValueProblem,
4660
4950
  locatorFor,
4661
4951
  locatorPath,
4952
+ mayOverwrite,
4953
+ normaliseRichTextFeatures,
4662
4954
  normalizeLinkValue,
4663
4955
  normalizeTableValue,
4664
4956
  normalizeWindow,
@@ -4672,8 +4964,10 @@ export {
4672
4964
  readPath,
4673
4965
  regionOf,
4674
4966
  renderTableHtml,
4967
+ richTextRefusal,
4675
4968
  rulePartnerOf,
4676
4969
  safeCssUrl,
4970
+ schemaHashInput,
4677
4971
  sideFloorApplies,
4678
4972
  sideSpaceCss,
4679
4973
  slotBindOf,
@@ -4690,6 +4984,7 @@ export {
4690
4984
  tableToMarkdown,
4691
4985
  tableValueProblems,
4692
4986
  topFieldKeyOf,
4987
+ uiRefusalId,
4693
4988
  usesHideOn,
4694
4989
  videoUrlOf,
4695
4990
  videoValueProblem,