@riverbankcms/sdk 0.111.0 → 0.119.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.
Files changed (196) hide show
  1. package/dist/{PreviewEditorSidebar-CTR6LUhN.mjs → PreviewEditorSidebar-C7TXFitV.mjs} +4 -4
  2. package/dist/{PreviewEditorUI-DZg15Zip.mjs → PreviewEditorUI-_1JIHTXS.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-kkmjklLG.mjs → PreviewQueryProvider-nKUT4TL-.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-DeOTAFvR.mjs → SdkPreviewModeRuntime-CvJTVgWa.mjs} +2579 -34325
  5. package/dist/{SiteChromeCustomizeContext-DOSDLCiJ.mjs → SiteChromeCustomizeContext-66QfCbAS.mjs} +64625 -32791
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +5211 -639
  7. package/dist/_dts/ai/src/designer/themePatch.d.ts +1 -1
  8. package/dist/_dts/api/src/bookingAdjustments.d.ts +30 -36
  9. package/dist/_dts/api/src/bookingConfig.d.ts +26 -1
  10. package/dist/_dts/api/src/bookingRecords.d.ts +6 -74
  11. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +3 -3
  12. package/dist/_dts/api/src/contentRuntime.d.ts +5 -1
  13. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +4 -4
  14. package/dist/_dts/api/src/endpoints.d.ts +35 -0
  15. package/dist/_dts/api/src/event-presentation.d.ts +4 -0
  16. package/dist/_dts/api/src/index.d.ts +4 -4
  17. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +4 -1
  18. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +2 -2
  19. package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
  20. package/dist/_dts/api/src/sdkContracts.d.ts +85 -7
  21. package/dist/_dts/api/src/siteBanner.d.ts +8 -8
  22. package/dist/_dts/api/src/siteOperations.d.ts +1 -1
  23. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +32 -4
  24. package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldDefaults.d.ts +3 -12
  25. package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldSchema.d.ts +1 -5
  26. package/dist/_dts/blocks/src/bindings/index.d.ts +1 -10
  27. package/dist/_dts/blocks/src/index.d.ts +3 -6
  28. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +2 -2
  29. package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +2 -2
  30. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule.d.ts +2 -2
  31. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +2 -8
  32. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +3 -3
  34. package/dist/_dts/blocks/src/system/blocks/form.d.ts +2 -15
  35. package/dist/_dts/blocks/src/system/blocks/intro.d.ts +2 -2
  36. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +66 -66
  37. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +2 -16
  38. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +0 -3
  39. package/dist/_dts/blocks/src/system/fragments/index.d.ts +0 -1
  40. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +19 -2
  41. package/dist/_dts/blocks/src/system/manifest/richTextSchema.d.ts +8 -70
  42. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +1 -0
  43. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +6 -0
  44. package/dist/_dts/blocks/src/system/node/schema.d.ts +4 -4
  45. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -10
  46. package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +5 -21
  47. package/dist/_dts/blocks/src/system/runtime/nodes/richText-coerce.d.ts +14 -2
  48. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  49. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +1 -1
  50. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +17 -1
  51. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +1 -1
  52. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +1 -1
  53. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -2
  54. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +2 -2
  55. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +1 -1
  56. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -1
  57. package/dist/_dts/content-model/src/content-types/builtins.d.ts +3 -15
  58. package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +2 -0
  59. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  60. package/dist/_dts/content-model/src/templates/defaults.d.ts +1 -21
  61. package/dist/_dts/core/src/editor-state.d.ts +14 -1
  62. package/dist/_dts/core/src/footer-composition.d.ts +2 -1
  63. package/dist/_dts/core/src/index.d.ts +1 -0
  64. package/dist/_dts/core/src/rich-text.d.ts +16 -0
  65. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +189 -86
  66. package/dist/_dts/editor/src/index.d.ts +1 -1
  67. package/dist/_dts/editor/src/primitives/rich-text/utils.d.ts +3 -5
  68. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -1
  69. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -1
  70. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -1
  71. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +15 -0
  72. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +3 -7
  73. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +12 -0
  74. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  75. package/dist/_dts/editor-blocks/src/block-editor/utils.d.ts +1 -1
  76. package/dist/_dts/editor-blocks/src/index.d.ts +6 -5
  77. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextField.d.ts +2 -2
  78. package/dist/_dts/media-core/src/contentMediaAudit.d.ts +104 -0
  79. package/dist/_dts/media-core/src/contentMediaAuditFieldAdapter.d.ts +8 -0
  80. package/dist/_dts/media-core/src/contentMediaSnapshotAudit.d.ts +22 -0
  81. package/dist/_dts/media-core/src/index.d.ts +3 -1
  82. package/dist/_dts/sdk/src/cli/commands/event.d.ts +18 -1
  83. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +2 -16
  84. package/dist/_dts/sdk/src/cli/content/reader.d.ts +8 -5
  85. package/dist/_dts/sdk/src/client/management/events.d.ts +2 -1
  86. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  87. package/dist/_dts/sdk/src/client/management/types.d.ts +36 -9
  88. package/dist/_dts/sdk/src/config/typed-entries.d.ts +7 -7
  89. package/dist/_dts/sdk/src/config/validation.d.ts +7 -7
  90. package/dist/_dts/sdk/src/contracts/content.d.ts +5 -15
  91. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  92. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -25
  93. package/dist/_dts/sdk/src/contracts/theme.d.ts +2 -18
  94. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +1 -1
  95. package/dist/_dts/sdk/src/manifest/three-pass-converter.d.ts +4 -4
  96. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +1 -2
  97. package/dist/_dts/sdk/src/rendering/helpers/index.d.ts +1 -1
  98. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -13
  99. package/dist/_dts/sdk/src/theme/index.d.ts +0 -29
  100. package/dist/_dts/sdk/src/version.d.ts +1 -1
  101. package/dist/_dts/site-commands/src/commands.d.ts +31 -18
  102. package/dist/_dts/theme-core/src/buttons/affordanceIcons.d.ts +2 -2
  103. package/dist/_dts/theme-core/src/buttons/core.d.ts +0 -1
  104. package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +22 -9
  105. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -2
  106. package/dist/_dts/theme-core/src/buttons/effects/presets/border.d.ts +1 -2
  107. package/dist/_dts/theme-core/src/buttons/effects/presets/overlay.d.ts +3 -1
  108. package/dist/_dts/theme-core/src/buttons/effects/presets/shadow.d.ts +2 -2
  109. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +8 -18
  110. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +2 -2
  111. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +5 -5
  112. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -4
  113. package/dist/_dts/theme-core/src/buttons/parseThemeForPersistence.d.ts +36 -0
  114. package/dist/_dts/theme-core/src/buttons/types.d.ts +1638 -93
  115. package/dist/_dts/theme-core/src/cards/types.d.ts +13 -13
  116. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +969 -69
  117. package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -2
  118. package/dist/_dts/theme-core/src/recommend/generateThemes.d.ts +0 -1
  119. package/dist/_dts/theme-core/src/schema.d.ts +1100 -116
  120. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  121. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +14 -14
  122. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  123. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  124. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +6 -0
  125. package/dist/cli/index.mjs +5706 -4852
  126. package/dist/cli/init-docs/content/cli-reference.md +40 -1
  127. package/dist/cli/init-docs/content/content-management.md +6 -0
  128. package/dist/client/{DiscountCodeDisclosure-C4xvTBux.mjs → DiscountCodeDisclosure-DIWj-P9v.mjs} +1 -1
  129. package/dist/client/{EventCombined.client-Cr7G131j.mjs → EventCombined.client-De8YWBSr.mjs} +2 -2
  130. package/dist/client/{EventListing.client-CAjbseNy.mjs → EventListing.client-seHTjimY.mjs} +2 -2
  131. package/dist/client/{LeafletStaticMap-BMlWfwz3.mjs → LeafletStaticMap-BmQxFcJW.mjs} +1 -1
  132. package/dist/client/{MagicLinkForm-ChdFz96y.mjs → MagicLinkForm-OoJAIUIj.mjs} +1 -1
  133. package/dist/client/{StepIndicator-7D3GaBeM.mjs → StepIndicator-CiZ8kdPk.mjs} +2 -2
  134. package/dist/client/{accordion-D8JTs2Si.mjs → accordion-6lnN__XJ.mjs} +1 -1
  135. package/dist/client/{bookingForm-H3DCRBHs.mjs → bookingForm-5uyqhONU.mjs} +6 -6
  136. package/dist/client/bookings.mjs +2219 -527
  137. package/dist/client/{carousel-DMr_QWlz.mjs → carousel-Dtnifil_.mjs} +1 -1
  138. package/dist/client/{cart-DWMbfBdR.mjs → cart-5Tc5S7NV.mjs} +3 -3
  139. package/dist/client/{checkout-zmfdkXLx.mjs → checkout-CYKKN5Hr.mjs} +3 -3
  140. package/dist/client/client.mjs +2498 -2384
  141. package/dist/client/{colorTokenParts-FSS3al6l.mjs → colorStyles-BWpj_h4C.mjs} +88 -1
  142. package/dist/client/{courseRegistration-Z_mn18jy.mjs → courseRegistration-CxCBybB4.mjs} +6 -6
  143. package/dist/client/{eventCalendar-CYp0YJGF.mjs → eventCalendar-Xj2jZS9X.mjs} +4 -4
  144. package/dist/client/{eventCombined-rKyYZUa9.mjs → eventCombined-CgcMoOgM.mjs} +2 -2
  145. package/dist/client/{eventDetails-X0ZaUuMj.mjs → eventDetails-CEAH8Edc.mjs} +3 -3
  146. package/dist/client/{eventListing-W1SuL7EP.mjs → eventListing-qyPVQ0wP.mjs} +2 -2
  147. package/dist/client/{eventRegistration-ClWricui.mjs → eventRegistration-DDu79CtL.mjs} +6 -6
  148. package/dist/client/{form--eKPwAAD.mjs → form-Bc7JKI7I.mjs} +1 -1
  149. package/dist/client/{headerSection-BSeGr-FS.mjs → headerSection-vTku_LEl.mjs} +2 -2
  150. package/dist/client/hooks.mjs +373 -555
  151. package/dist/client/{locationMap-BpOrtNYn.mjs → locationMap-Bg7X4Jna.mjs} +3 -3
  152. package/dist/client/{media-DoF0dcVx.mjs → media-CNE1Z-wb.mjs} +1 -2
  153. package/dist/client/{newsletterForm-Bt7it7Dy.mjs → newsletterForm-lpylVdp5.mjs} +1 -1
  154. package/dist/client/{pricing-BTjSDDr4.mjs → pricing-DE8fjJiT.mjs} +1 -1
  155. package/dist/client/{productDetail-ICnVTcCg.mjs → productDetail-D7Bo2RMH.mjs} +3 -3
  156. package/dist/client/{productList-ZHr6D604.mjs → productList-VjnZqiqN.mjs} +3 -3
  157. package/dist/client/{propsDecoder-wWN0tBDF.mjs → propsDecoder-DreFXjNP.mjs} +2212 -621
  158. package/dist/client/rendering/client.mjs +21612 -21646
  159. package/dist/client/rendering/islands.mjs +20 -20
  160. package/dist/client/rendering.mjs +1571 -1547
  161. package/dist/client/{shop-C1u_BUn0.mjs → shop-IRsHHbf7.mjs} +5 -5
  162. package/dist/client/{shop-commerce-CleZdRha.mjs → shop-commerce-gnI8PieZ.mjs} +27 -10
  163. package/dist/client/{shop-commerce-store-ycnoB2Ce.mjs → shop-commerce-store-BTbrhObn.mjs} +1 -1
  164. package/dist/client/{shopShared-CPhByt2a.mjs → shopShared-D6KS2_qk.mjs} +3 -3
  165. package/dist/client/{useDiscountCodeUi-cStSQI6C.mjs → useDiscountCodeUi-DCccGCxV.mjs} +1 -1
  166. package/dist/client/{useEventFilters-DKPN7hSY.mjs → useEventFilters-eGs3rPZQ.mjs} +3 -104
  167. package/dist/client/{usePolling-BKAd6pkZ.mjs → usePolling-CvSU2sur.mjs} +2 -2
  168. package/dist/preview-next/before-render.mjs +57 -0
  169. package/dist/preview-next/client/runtime.mjs +4 -4
  170. package/dist/preview-next/middleware.mjs +57 -0
  171. package/dist/{previewAuthStore-BkT1D06A.mjs → previewAuthStore-DN7vcRsv.mjs} +57 -0
  172. package/dist/{sdk-runtime-hu3wr3ng.mjs → sdk-runtime-DaOiA7ct.mjs} +2 -2
  173. package/dist/{separator-Bln8izQ9.mjs → separator-CqRhcCxD.mjs} +1 -1
  174. package/dist/server/components.mjs +4092 -4108
  175. package/dist/server/config-template-validation.mjs +4 -23
  176. package/dist/server/config-validation.mjs +373 -555
  177. package/dist/server/config.mjs +410 -558
  178. package/dist/server/data.mjs +373 -555
  179. package/dist/server/index.mjs +58 -1
  180. package/dist/server/next.mjs +32958 -32926
  181. package/dist/server/page-converter.mjs +369 -526
  182. package/dist/server/prebuild.mjs +1 -1
  183. package/dist/server/rendering/server.mjs +5371 -3174
  184. package/dist/server/rendering.mjs +4099 -4124
  185. package/dist/server/routing.mjs +758 -966
  186. package/dist/server/server.mjs +448 -632
  187. package/dist/server/theme-bridge.mjs +472 -525
  188. package/dist/server/theme.mjs +1074 -392
  189. package/package.json +1 -1
  190. package/dist/_dts/blocks/src/primitives/content/components/Button.d.ts +0 -40
  191. package/dist/_dts/blocks/src/system/fragments/library/footerBottomText.d.ts +0 -19
  192. package/dist/_dts/media-core/src/legacyMediaValue.d.ts +0 -11
  193. package/dist/_dts/theme-core/src/styles/buttons.d.ts +0 -27
  194. package/dist/_dts/theme-core/src/styles/buttonsLibrary.d.ts +0 -2
  195. package/dist/_dts/theme-core/src/styles/glow.d.ts +0 -3
  196. package/dist/client/colorStyles-gcTh5yZT.mjs +0 -89
@@ -1,5 +1,5 @@
1
1
  import type { Media } from "../../lib/media";
2
- import type { TipTapNode } from "../manifest/richTextSchema";
2
+ import type { RichTextDoc } from "../manifest/richTextSchema";
3
3
  import type { SystemBlockDefinition } from "../registry";
4
4
  import type { SemanticSpacing } from "../spacing";
5
5
  import { type ContentFrameIntent } from "../frame/frameStyles";
@@ -127,14 +127,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
127
127
  readonly id: string;
128
128
  readonly label: string;
129
129
  readonly required: boolean;
130
- readonly type: "select";
131
- readonly options: {
132
- value: string;
133
- label: string;
134
- description?: string | undefined;
135
- icon?: string | undefined;
136
- }[];
137
- readonly multiple: boolean;
130
+ readonly type: "media";
131
+ readonly mediaKinds: ("image" | "video" | "audio")[];
138
132
  readonly description?: string | undefined;
139
133
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
140
134
  readonly defaultValue?: any;
@@ -233,20 +227,13 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
233
227
  renderInHeader?: boolean | undefined;
234
228
  intent?: "style" | "display" | "content" | "behavior" | undefined;
235
229
  } | undefined;
236
- readonly source?: {
237
- kind: "static";
238
- } | {
239
- kind: "site";
240
- optionSource: "venues" | "eventCategories" | "staffMembers";
241
- } | {
242
- kind: "sdk";
243
- } | undefined;
230
+ readonly aspectRatio?: string | undefined;
244
231
  } | {
245
232
  readonly id: string;
246
233
  readonly label: string;
247
234
  readonly required: boolean;
248
- readonly type: "text";
249
- readonly multiline: boolean;
235
+ readonly type: "file";
236
+ readonly fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
250
237
  readonly description?: string | undefined;
251
238
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
252
239
  readonly defaultValue?: any;
@@ -345,12 +332,18 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
345
332
  renderInHeader?: boolean | undefined;
346
333
  intent?: "style" | "display" | "content" | "behavior" | undefined;
347
334
  } | undefined;
348
- readonly maxLength?: number | undefined;
349
335
  } | {
350
336
  readonly id: string;
351
337
  readonly label: string;
352
338
  readonly required: boolean;
353
- readonly type: "richText";
339
+ readonly type: "select";
340
+ readonly options: {
341
+ value: string;
342
+ label: string;
343
+ description?: string | undefined;
344
+ icon?: string | undefined;
345
+ }[];
346
+ readonly multiple: boolean;
354
347
  readonly description?: string | undefined;
355
348
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
356
349
  readonly defaultValue?: any;
@@ -449,11 +442,20 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
449
442
  renderInHeader?: boolean | undefined;
450
443
  intent?: "style" | "display" | "content" | "behavior" | undefined;
451
444
  } | undefined;
445
+ readonly source?: {
446
+ kind: "static";
447
+ } | {
448
+ kind: "site";
449
+ optionSource: "venues" | "eventCategories" | "staffMembers";
450
+ } | {
451
+ kind: "sdk";
452
+ } | undefined;
452
453
  } | {
453
454
  readonly id: string;
454
455
  readonly label: string;
455
456
  readonly required: boolean;
456
- readonly type: "inlineText";
457
+ readonly type: "text";
458
+ readonly multiline: boolean;
457
459
  readonly description?: string | undefined;
458
460
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
459
461
  readonly defaultValue?: any;
@@ -553,13 +555,11 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
553
555
  intent?: "style" | "display" | "content" | "behavior" | undefined;
554
556
  } | undefined;
555
557
  readonly maxLength?: number | undefined;
556
- readonly plainTextField?: string | undefined;
557
558
  } | {
558
559
  readonly id: string;
559
560
  readonly label: string;
560
561
  readonly required: boolean;
561
- readonly type: "media";
562
- readonly mediaKinds: ("image" | "video" | "audio")[];
562
+ readonly type: "richText";
563
563
  readonly description?: string | undefined;
564
564
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
565
565
  readonly defaultValue?: any;
@@ -658,13 +658,11 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
658
658
  renderInHeader?: boolean | undefined;
659
659
  intent?: "style" | "display" | "content" | "behavior" | undefined;
660
660
  } | undefined;
661
- readonly aspectRatio?: string | undefined;
662
661
  } | {
663
662
  readonly id: string;
664
663
  readonly label: string;
665
664
  readonly required: boolean;
666
- readonly type: "file";
667
- readonly fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
665
+ readonly type: "inlineText";
668
666
  readonly description?: string | undefined;
669
667
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
670
668
  readonly defaultValue?: any;
@@ -763,6 +761,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
763
761
  renderInHeader?: boolean | undefined;
764
762
  intent?: "style" | "display" | "content" | "behavior" | undefined;
765
763
  } | undefined;
764
+ readonly maxLength?: number | undefined;
765
+ readonly plainTextField?: string | undefined;
766
766
  } | {
767
767
  readonly id: string;
768
768
  readonly label: string;
@@ -2027,10 +2027,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2027
2027
  readonly type: "repeater";
2028
2028
  readonly required: boolean;
2029
2029
  readonly description?: string | undefined;
2030
- readonly minItems: number;
2031
- readonly maxItems?: number | undefined;
2032
- readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2033
- readonly defaultValue?: any;
2034
2030
  readonly ui?: {
2035
2031
  widget?: string | undefined;
2036
2032
  preset?: "disclosure" | undefined;
@@ -2126,6 +2122,10 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2126
2122
  renderInHeader?: boolean | undefined;
2127
2123
  intent?: "style" | "display" | "content" | "behavior" | undefined;
2128
2124
  } | undefined;
2125
+ readonly minItems: number;
2126
+ readonly maxItems?: number | undefined;
2127
+ readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2128
+ readonly defaultValue?: any;
2129
2129
  readonly itemLabel: string;
2130
2130
  readonly itemLabelSource?: string | undefined;
2131
2131
  readonly showSummary?: boolean | undefined;
@@ -2143,8 +2143,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2143
2143
  readonly type: "group";
2144
2144
  readonly required: boolean;
2145
2145
  readonly description?: string | undefined;
2146
- readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2147
- readonly defaultValue?: any;
2148
2146
  readonly ui?: {
2149
2147
  widget?: string | undefined;
2150
2148
  preset?: "disclosure" | undefined;
@@ -2240,6 +2238,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2240
2238
  renderInHeader?: boolean | undefined;
2241
2239
  intent?: "style" | "display" | "content" | "behavior" | undefined;
2242
2240
  } | undefined;
2241
+ readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2242
+ readonly defaultValue?: any;
2243
2243
  readonly schema: {
2244
2244
  fields: import("../../../../block-form/src/backend/index").FieldDefinition[];
2245
2245
  };
@@ -2249,8 +2249,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2249
2249
  readonly type: "modal";
2250
2250
  readonly required: boolean;
2251
2251
  readonly description?: string | undefined;
2252
- readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2253
- readonly defaultValue?: any;
2254
2252
  readonly ui?: {
2255
2253
  widget?: string | undefined;
2256
2254
  preset?: "disclosure" | undefined;
@@ -2346,6 +2344,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2346
2344
  renderInHeader?: boolean | undefined;
2347
2345
  intent?: "style" | "display" | "content" | "behavior" | undefined;
2348
2346
  } | undefined;
2347
+ readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2348
+ readonly defaultValue?: any;
2349
2349
  readonly schema: {
2350
2350
  fields: import("../../../../block-form/src/backend/index").FieldDefinition[];
2351
2351
  };
@@ -2355,8 +2355,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2355
2355
  readonly type: "tabGroup";
2356
2356
  readonly required: boolean;
2357
2357
  readonly description?: string | undefined;
2358
- readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2359
- readonly defaultValue?: any;
2360
2358
  readonly ui?: {
2361
2359
  widget?: string | undefined;
2362
2360
  preset?: "disclosure" | undefined;
@@ -2452,6 +2450,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2452
2450
  renderInHeader?: boolean | undefined;
2453
2451
  intent?: "style" | "display" | "content" | "behavior" | undefined;
2454
2452
  } | undefined;
2453
+ readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2454
+ readonly defaultValue?: any;
2455
2455
  readonly activeTabField?: string | undefined;
2456
2456
  readonly tabs: import("..").TabDefinition[];
2457
2457
  }, ...({
@@ -2569,25 +2569,12 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2569
2569
  id: string;
2570
2570
  label: string;
2571
2571
  required: boolean;
2572
- type: "select";
2573
- options: {
2574
- value: string;
2575
- label: string;
2576
- description?: string | undefined;
2577
- icon?: string | undefined;
2578
- }[];
2579
- multiple: boolean;
2572
+ type: "media";
2573
+ mediaKinds: ("image" | "video" | "audio")[];
2580
2574
  description?: string | undefined;
2581
2575
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2582
2576
  defaultValue?: any;
2583
- source?: {
2584
- kind: "static";
2585
- } | {
2586
- kind: "site";
2587
- optionSource: "venues" | "eventCategories" | "staffMembers";
2588
- } | {
2589
- kind: "sdk";
2590
- } | undefined;
2577
+ aspectRatio?: string | undefined;
2591
2578
  } | {
2592
2579
  ui: {
2593
2580
  visibleWhen: {
@@ -2703,12 +2690,11 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2703
2690
  id: string;
2704
2691
  label: string;
2705
2692
  required: boolean;
2706
- type: "text";
2707
- multiline: boolean;
2693
+ type: "file";
2694
+ fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
2708
2695
  description?: string | undefined;
2709
2696
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2710
2697
  defaultValue?: any;
2711
- maxLength?: number | undefined;
2712
2698
  } | {
2713
2699
  ui: {
2714
2700
  visibleWhen: {
@@ -2824,10 +2810,25 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2824
2810
  id: string;
2825
2811
  label: string;
2826
2812
  required: boolean;
2827
- type: "richText";
2813
+ type: "select";
2814
+ options: {
2815
+ value: string;
2816
+ label: string;
2817
+ description?: string | undefined;
2818
+ icon?: string | undefined;
2819
+ }[];
2820
+ multiple: boolean;
2828
2821
  description?: string | undefined;
2829
2822
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2830
2823
  defaultValue?: any;
2824
+ source?: {
2825
+ kind: "static";
2826
+ } | {
2827
+ kind: "site";
2828
+ optionSource: "venues" | "eventCategories" | "staffMembers";
2829
+ } | {
2830
+ kind: "sdk";
2831
+ } | undefined;
2831
2832
  } | {
2832
2833
  ui: {
2833
2834
  visibleWhen: {
@@ -2943,12 +2944,12 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2943
2944
  id: string;
2944
2945
  label: string;
2945
2946
  required: boolean;
2946
- type: "inlineText";
2947
+ type: "text";
2948
+ multiline: boolean;
2947
2949
  description?: string | undefined;
2948
2950
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
2949
2951
  defaultValue?: any;
2950
2952
  maxLength?: number | undefined;
2951
- plainTextField?: string | undefined;
2952
2953
  } | {
2953
2954
  ui: {
2954
2955
  visibleWhen: {
@@ -3064,12 +3065,10 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
3064
3065
  id: string;
3065
3066
  label: string;
3066
3067
  required: boolean;
3067
- type: "media";
3068
- mediaKinds: ("image" | "video" | "audio")[];
3068
+ type: "richText";
3069
3069
  description?: string | undefined;
3070
3070
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
3071
3071
  defaultValue?: any;
3072
- aspectRatio?: string | undefined;
3073
3072
  } | {
3074
3073
  ui: {
3075
3074
  visibleWhen: {
@@ -3185,11 +3184,12 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
3185
3184
  id: string;
3186
3185
  label: string;
3187
3186
  required: boolean;
3188
- type: "file";
3189
- fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
3187
+ type: "inlineText";
3190
3188
  description?: string | undefined;
3191
3189
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
3192
3190
  defaultValue?: any;
3191
+ maxLength?: number | undefined;
3192
+ plainTextField?: string | undefined;
3193
3193
  } | {
3194
3194
  ui: {
3195
3195
  visibleWhen: {
@@ -5283,7 +5283,7 @@ export type MediaTextContent = {
5283
5283
  carouselAutoplayDelay?: "3000" | "5000" | "7000" | "10000" | null;
5284
5284
  carouselArrowVisibility?: "always" | "hover" | "never" | null;
5285
5285
  showDots?: boolean | null;
5286
- text: TipTapNode;
5286
+ text: RichTextDoc;
5287
5287
  wrapTextInCard?: boolean | null;
5288
5288
  _textCardStyles?: unknown;
5289
5289
  _frameStyles?: ContentFrameIntent | null;
@@ -2,6 +2,7 @@ import type { SystemBlockDefinition } from "../registry";
2
2
  import type { SectionStylesContent } from "../fields/boxStyles";
3
3
  import { newsletterFormBlockRuntime } from "../runtime/nodes/newsletter-form.interactive";
4
4
  import type { NewsletterSignupAuthoringDestination, NewsletterSignupFieldPreset } from "./newsletter-signup-destination";
5
+ import type { RichTextDoc } from "../manifest/richTextSchema";
5
6
  import type { BlockButtonRole } from "../constants/buttonRoles";
6
7
  export declare const newsletterSignupManifest: import("..").DefinedBlockManifest<import("..").BlockContentShapeInput<{
7
8
  readonly id: "block.newsletter-signup";
@@ -183,25 +184,10 @@ export declare const newsletterSignupManifest: import("..").DefinedBlockManifest
183
184
  readonly tags: readonly ["newsletter", "signup", "email", "subscribe", "subscription", "mailchimp", "marketing", "lead-capture"];
184
185
  readonly icon: "Mail";
185
186
  }>>;
186
- /**
187
- * Rich text document structure (ProseMirror format)
188
- */
189
- type NewsletterRichTextDoc = {
190
- type: 'doc';
191
- content?: Array<{
192
- type: string;
193
- content?: Array<{
194
- type: string;
195
- text?: string;
196
- [key: string]: unknown;
197
- }>;
198
- [key: string]: unknown;
199
- }>;
200
- };
201
187
  export type NewsletterSignupPreset = NewsletterSignupFieldPreset;
202
188
  export type NewsletterSignupContent = {
203
189
  title?: string | null;
204
- subtitle?: NewsletterRichTextDoc | null;
190
+ subtitle?: RichTextDoc | null;
205
191
  listId?: string | null;
206
192
  preset: NewsletterSignupPreset;
207
193
  includePhone?: boolean | null;
@@ -5,9 +5,6 @@ export declare const siteFooterManifest: import("..").DefinedBlockManifest<{
5
5
  }>;
6
6
  export type SiteFooterVariant = 'simple' | 'columns' | 'split';
7
7
  export type SiteFooterContent = Readonly<{
8
- /** Legacy storage-only fields. The V1 runtime does not read these values. */
9
- bodyText?: unknown;
10
- bottomText?: unknown;
11
8
  showBusinessAddress?: boolean | null;
12
9
  footerRuntime?: FooterRuntimeViewModel | null;
13
10
  }>;
@@ -14,7 +14,6 @@ export * from "./library/testimonialsCarousel";
14
14
  export * from "./library/formCopy";
15
15
  export * from "./library/formEmbed";
16
16
  export * from "./library/bookingForm";
17
- export * from "./library/footerBottomText";
18
17
  export * from "./library/headerCta";
19
18
  export * from "./library/singleButton";
20
19
  export * from "./library/blogFeaturedPost";
@@ -201,7 +201,7 @@ export type InlineTextFieldValidationPlan = PlanBase<"inlineText", "array", Inli
201
201
  }>;
202
202
  export type MediaFieldValidationPlan = PlanBase<"media", "object", ObjectConstraint> & Readonly<{
203
203
  fieldType: "media" | "file";
204
- legacyStringType: string;
204
+ allowedMediaTypes: readonly string[];
205
205
  }>;
206
206
  export type LinkFieldValidationPlan = PlanBase<"link", "object", ObjectConstraint> & Readonly<{
207
207
  fieldType: "link";
@@ -216,7 +216,17 @@ export type RepeaterFieldValidationPlan = PlanBase<"repeater", "array", ArrayCon
216
216
  }>;
217
217
  export type GroupFieldValidationPlan = PlanBase<"group", "object", ObjectConstraint> & Readonly<{
218
218
  fieldType: "group" | "modal" | "tabGroup";
219
- children: readonly FieldValidationPlan[];
219
+ childSelection: Readonly<{
220
+ kind: "all";
221
+ fields: readonly FieldValidationPlan[];
222
+ }> | Readonly<{
223
+ kind: "discriminatedTabs";
224
+ activeTabField: string;
225
+ tabs: readonly Readonly<{
226
+ typeId: string;
227
+ fields: readonly FieldValidationPlan[];
228
+ }>[];
229
+ }>;
220
230
  allowNullChildren?: boolean;
221
231
  }>;
222
232
  export type PassthroughFieldValidationPlan = PlanBase<"passthrough", "unknown", RequiredConstraint> & Readonly<{
@@ -241,6 +251,13 @@ export declare function deriveFieldValidationPlans(fields: readonly FieldDefinit
241
251
  export declare function fieldPlanToNativeInputProps(plan: FieldValidationPlan): NativeInputValidationProps;
242
252
  export declare function normalizeFieldInput(plan: FieldValidationPlan, value: unknown, options?: FieldValidationOptions): unknown;
243
253
  export declare function normalizeStoredContentValues(plans: readonly FieldValidationPlan[], content: unknown, options?: FieldValidationOptions): Record<string, unknown>;
254
+ /**
255
+ * Produces the portable representation accepted by content persistence.
256
+ * Runtime-hydrated media fields are stripped only when a canonical identifier
257
+ * is already present; unresolved environment-specific references remain
258
+ * invalid and must be handled by the site-scoped media write normalizer first.
259
+ */
260
+ export declare function normalizeManifestContentForWrite(plans: readonly FieldValidationPlan[], content: unknown, options?: FieldValidationOptions): Record<string, unknown>;
244
261
  export declare function validateFieldValue(plan: FieldValidationPlan, value: unknown, options?: FieldValidationOptions): FieldValidationIssue[];
245
262
  export declare function fieldPlanToZod(plan: FieldValidationPlan, options?: FieldValidationOptions): z.ZodTypeAny;
246
263
  export declare function fieldPresenceForPlan(plan: Pick<FieldValidationPlan, "required">): FieldPresence;
@@ -1,17 +1,7 @@
1
1
  import { z } from 'zod';
2
+ import type { RichTextDoc, TipTapNode } from '../../../../core/src/index';
3
+ export type { RichTextDoc, TipTapMark, TipTapNode, } from '../../../../core/src/index';
2
4
  export declare const TipTapNodeSchema: z.ZodType<TipTapNode>;
3
- /**
4
- * Rich text value schema
5
- *
6
- * Producers MUST emit the canonical unwrapped form `{ type: 'doc', content: [...] }`.
7
- * The wrapped form `{ doc: {...} }` is accepted only as a reading tolerance for data
8
- * that pre-dates the unwrap migration (Supabase migrations `20251029173500_unwrap_richtext_format`
9
- * and `20251029174000_update_template_bindings_unwrapped`). Do not introduce new
10
- * producers of the wrapped shape.
11
- */
12
- export declare const RichTextValueSchema: z.ZodUnion<readonly [z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>, z.ZodObject<{
13
- doc: z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>;
14
- }, z.core.$strip>]>;
15
5
  /**
16
6
  * Build Zod validation schema for rich text fields
17
7
  *
@@ -28,24 +18,7 @@ export declare const RichTextValueSchema: z.ZodUnion<readonly [z.ZodType<TipTapN
28
18
  * // Required field with custom label
29
19
  * const schema = buildRichTextSchema({ required: true, label: 'Description' })
30
20
  */
31
- /**
32
- * TypeScript type for a TipTap document node
33
- *
34
- * Use this type for rich text content fields in block definitions.
35
- * Defined explicitly (rather than inferred) because recursive Zod schemas
36
- * require `z.ZodType<any>` which loses type information.
37
- */
38
- export type TipTapNode = {
39
- type: string;
40
- content?: TipTapNode[];
41
- text?: string;
42
- attrs?: Record<string, unknown>;
43
- marks?: TipTapMark[];
44
- };
45
- export type TipTapMark = {
46
- type: string;
47
- attrs?: Record<string, unknown>;
48
- };
21
+ /** Narrow node variants used by the inline Markdown helpers below. */
49
22
  export type RichTextTextNode = TipTapNode & {
50
23
  type: 'text';
51
24
  text: string;
@@ -65,49 +38,16 @@ export type RichTextInlineNode = RichTextTextNode | RichTextHardBreakNode;
65
38
  * (dummy content, editor output, migrations) must emit, and the shape every
66
39
  * non-legacy consumer can rely on.
67
40
  *
68
- * Legacy envelopes are read-tolerated by {@link RichTextValueSchema} but
69
- * normalised before reaching anywhere typed as `RichTextDoc`.
70
41
  */
71
- export declare const RichTextDocSchema: z.ZodObject<{
72
- type: z.ZodLiteral<"doc">;
73
- content: z.ZodArray<z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>>;
74
- }, z.core.$strip>;
75
- /**
76
- * A TipTap document root — the canonical shape for rich text content
77
- * in this codebase. Derived from {@link RichTextDocSchema} so the type and
78
- * its runtime validator can never drift.
79
- */
80
- export type RichTextDoc = z.infer<typeof RichTextDocSchema>;
42
+ export declare const RichTextDocSchema: z.ZodType<RichTextDoc>;
81
43
  /**
82
44
  * Type guard for {@link RichTextDoc}.
83
45
  *
84
- * Returns `true` only for the canonical unwrapped form. Callers that may
85
- * receive a legacy `{ doc: {...} }` envelope must normalise first via
86
- * {@link unwrapRichTextRoot}.
46
+ * Returns `true` only for the canonical unwrapped form. The shared structural
47
+ * contract lives in `@riverbankcms/core`; parity tests keep its dependency-free
48
+ * guard aligned with this detailed Zod validator.
87
49
  */
88
50
  export declare function isRichTextDoc(value: unknown): value is RichTextDoc;
89
- /**
90
- * Permissive unwrap for a value known to be the root of a rich-text field.
91
- *
92
- * Producers should emit the canonical unwrapped form `{ type: 'doc', content: [...] }`,
93
- * but two legacy shapes still appear in older data and pre-Phase-1 fixtures:
94
- *
95
- * - `{ doc: <typed-doc> }` — pre-migration DB storage.
96
- * - `{ doc: <typed-doc>, html, plain }` — pre-Phase-1 dummy-content output.
97
- *
98
- * This helper is the single right place to tolerate either shape at a known
99
- * rich-text root (transforms, coercion, validators that operate on rich text).
100
- * The strictness sits on the inner node's `type === 'doc'`, which prevents
101
- * misidentifying random objects that happen to carry a field named `doc`.
102
- *
103
- * Returns the inner doc node when the input matches a legacy shape, otherwise
104
- * returns the input unchanged.
105
- *
106
- * For deep structural traversal where any nested key might be named `doc`
107
- * (and unwrapping would be incorrect), use the strict `isDocWrapper` private
108
- * helper inside `@riverbankcms/blocks/bindings`.
109
- */
110
- export declare function unwrapRichTextRoot(value: unknown): unknown;
111
51
  /**
112
52
  * Build a canonical {@link RichTextDoc} from plain-text paragraphs.
113
53
  *
@@ -141,6 +81,4 @@ export declare function createRichTextDocFromMarkdown(markdown: string): RichTex
141
81
  export declare function buildRichTextSchema(options?: {
142
82
  required?: boolean;
143
83
  label?: string;
144
- }): z.ZodUnion<readonly [z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>, z.ZodObject<{
145
- doc: z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>;
146
- }, z.core.$strip>]>;
84
+ }): z.ZodType<RichTextDoc, unknown, z.core.$ZodTypeInternals<RichTextDoc, unknown>>;
@@ -11,6 +11,7 @@ export declare const MEDIA_KINDS: readonly ["image", "video", "audio", "document
11
11
  export type MediaKind = (typeof MEDIA_KINDS)[number];
12
12
  export declare const DISPLAY_MEDIA_KINDS: readonly ["image", "video", "audio"];
13
13
  export type DisplayMediaKind = (typeof DISPLAY_MEDIA_KINDS)[number];
14
+ export declare const DEFAULT_MEDIA_FIELD_KINDS: readonly ["image"];
14
15
  export declare const PUBLIC_FILE_FIELD_KINDS: readonly ["document", "spreadsheet", "archive", "audio"];
15
16
  export type FileFieldKind = (typeof PUBLIC_FILE_FIELD_KINDS)[number];
16
17
  export declare const siteOptionSources: readonly ["eventCategories", "venues", "staffMembers"];
@@ -20,4 +20,10 @@ type ValidatorOptions = {
20
20
  };
21
21
  export declare function deriveContentZodFromManifest(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodObject<FieldShape>;
22
22
  export declare function createManifestValidator(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodType<Record<string, unknown>>;
23
+ /**
24
+ * Validates content at a persistence boundary and returns identifier-only media
25
+ * values. Render-time validation intentionally uses createManifestValidator so
26
+ * hydrated projection fields remain available to renderers.
27
+ */
28
+ export declare function createManifestWriteValidator(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodType<Record<string, unknown>>;
23
29
  export {};
@@ -9,8 +9,8 @@ export declare const bindingSchema: z.ZodObject<{
9
9
  }, z.core.$strip>>>;
10
10
  pick: z.ZodDefault<z.ZodEnum<{
11
11
  value: "value";
12
- collection: "collection";
13
12
  context: "context";
13
+ collection: "collection";
14
14
  }>>;
15
15
  coerce: z.ZodOptional<z.ZodEnum<{
16
16
  string: "string";
@@ -29,8 +29,8 @@ export declare const repeatSchema: z.ZodObject<{
29
29
  }, z.core.$strip>>>;
30
30
  pick: z.ZodDefault<z.ZodEnum<{
31
31
  value: "value";
32
- collection: "collection";
33
32
  context: "context";
33
+ collection: "collection";
34
34
  }>>;
35
35
  coerce: z.ZodOptional<z.ZodEnum<{
36
36
  string: "string";
@@ -67,8 +67,8 @@ export declare const conditionSchema: z.ZodObject<{
67
67
  }, z.core.$strip>>>;
68
68
  pick: z.ZodDefault<z.ZodEnum<{
69
69
  value: "value";
70
- collection: "collection";
71
70
  context: "context";
71
+ collection: "collection";
72
72
  }>>;
73
73
  coerce: z.ZodOptional<z.ZodEnum<{
74
74
  string: "string";
@@ -97,8 +97,8 @@ export declare const dataScopeSchema: z.ZodObject<{
97
97
  }, z.core.$strip>>>;
98
98
  pick: z.ZodDefault<z.ZodEnum<{
99
99
  value: "value";
100
- collection: "collection";
101
100
  context: "context";
101
+ collection: "collection";
102
102
  }>>;
103
103
  coerce: z.ZodOptional<z.ZodEnum<{
104
104
  string: "string";
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { type ButtonSizeName } from '../../../../../theme-core/src/buttons/index';
3
- import { type ButtonAffordance } from './buttonAffordance';
4
3
  import type { PreviewLinkedEntryFieldBinding } from '../../data';
5
4
  export type TextNodeProps = {
6
5
  value?: unknown;
@@ -52,17 +51,9 @@ export type ButtonNodeProps = {
52
51
  linkRequired?: boolean;
53
52
  /**
54
53
  * Optional trailing affordance icon (a registry icon id, e.g. `'ArrowRight'`)
55
- * rendered after the label. Overrides any personality-supplied affordance.
54
+ * rendered after the label. Overrides any theme-owned affordance.
56
55
  */
57
56
  trailingIcon?: string;
58
- /** Optional palette token for the trailing icon colour (e.g. `'accent'`). */
59
- trailingIconColorToken?: string;
60
- /**
61
- * Personality/variant affordance default, supplied by the theme so a variant
62
- * can carry a trailing icon without per-node authoring. Node-level
63
- * `trailingIcon` takes precedence.
64
- */
65
- personalityAffordance?: ButtonAffordance;
66
57
  };
67
58
  export declare const ButtonNode: React.FC<ButtonNodeProps & {
68
59
  blockId?: string;
@@ -1,33 +1,17 @@
1
1
  /**
2
- * Pure resolution of a button's trailing affordance icon.
2
+ * Pure normalization of a button node's authored trailing icon.
3
3
  *
4
- * A button can acquire a trailing icon from two places:
5
- * 1. The node itself (`trailingIcon` / `trailingIconColorToken` props).
6
- * 2. The active button style/variant (`affordance`), supplied by the
7
- * theme so a variant carries an affordance without per-node authoring.
8
- *
9
- * Node-level wins over the personality default. When neither supplies one, the
10
- * button renders no trailing icon (and the personality's CSS `::after`
11
- * affordance, if any, is left to show through).
4
+ * Theme-owned affordances render through canonical button CSS and `currentColor`;
5
+ * they are not duplicated as a second runtime colour contract.
12
6
  */
13
- export type ButtonAffordance = {
7
+ export type ResolvedButtonAffordance = {
14
8
  iconId: string;
15
- colorToken?: string;
16
9
  };
17
10
  export type ResolveButtonAffordanceInput = {
18
11
  /** Node-level icon id (e.g. `'ArrowRight'`). Highest priority. */
19
12
  trailingIcon?: string | null;
20
- /** Node-level colour token for the node icon. */
21
- trailingIconColorToken?: string | null;
22
- /** Personality/variant affordance default (theme-supplied). */
23
- personalityAffordance?: ButtonAffordance | null;
24
- };
25
- export type ResolvedButtonAffordance = ButtonAffordance & {
26
- /** Where the affordance came from — useful for suppression decisions and tests. */
27
- source: 'node' | 'personality';
28
13
  };
29
14
  /**
30
- * Resolve the trailing affordance a button should render. Node overrides
31
- * personality; returns `null` when nothing is configured.
15
+ * Resolve the node-authored trailing affordance, or `null` when no icon exists.
32
16
  */
33
17
  export declare function resolveButtonAffordance(input: ResolveButtonAffordanceInput): ResolvedButtonAffordance | null;