@riverbankcms/sdk 0.126.0 → 0.128.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 (212) hide show
  1. package/dist/{PreviewEditorSidebar-DcYJxTgc.mjs → PreviewEditorSidebar-Dbvb7GIr.mjs} +64 -68
  2. package/dist/{PreviewEditorUI-Ctt1yTJr.mjs → PreviewEditorUI-e9O9l20X.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
  4. package/dist/SdkPreviewModeRuntime-BZHt6e9w.mjs +11006 -0
  5. package/dist/{SiteChromeCustomizeContext-C87qlKWw.mjs → SiteChromeCustomizeContext-CvuGbHJX.mjs} +51247 -20733
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +486 -36
  7. package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
  8. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
  9. package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
  10. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  11. package/dist/_dts/api/src/communications.d.ts +2 -1
  12. package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
  13. package/dist/_dts/api/src/contentRuntime.d.ts +3 -10
  14. package/dist/_dts/api/src/endpoints.d.ts +1 -1
  15. package/dist/_dts/api/src/footerSettings.d.ts +11 -0
  16. package/dist/_dts/api/src/index.d.ts +2 -1
  17. package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
  18. package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
  19. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
  20. package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
  21. package/dist/_dts/api/src/siteOperations.d.ts +12 -3
  22. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
  23. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  24. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  25. package/dist/_dts/blocks/src/client/form.d.ts +1 -0
  26. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
  27. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
  29. package/dist/_dts/blocks/src/index.d.ts +3 -2
  30. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  31. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  32. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  33. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  34. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  36. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  37. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  38. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  39. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  45. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  47. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  49. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  50. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  51. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  52. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  53. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  54. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  55. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  56. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  57. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  58. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  59. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  60. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  61. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  62. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  63. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  64. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  65. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  66. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  67. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  68. package/dist/_dts/core/src/index.d.ts +4 -0
  69. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  70. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +200 -159
  71. package/dist/_dts/db/src/index.d.ts +1 -0
  72. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  73. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  74. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  75. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  76. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  77. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  78. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  79. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  80. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  81. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  82. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  83. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  84. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  85. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  86. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  87. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  88. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  89. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  90. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -2
  91. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +8 -4
  92. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -49
  93. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  94. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  95. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  96. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  97. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  98. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  99. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  100. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  101. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  102. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  103. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  104. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  105. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  106. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  107. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  108. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  109. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  110. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  111. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  112. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  113. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  114. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  115. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +7 -0
  116. package/dist/_dts/sdk/src/rendering/index.d.ts +5 -3
  117. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  118. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  119. package/dist/_dts/sdk/src/version.d.ts +1 -1
  120. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  121. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  122. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  123. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  124. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  125. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  126. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  127. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  128. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  129. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +31 -0
  130. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  131. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +8 -0
  132. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  133. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  134. package/dist/_dts/theme-core/src/schema.d.ts +67 -19
  135. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  136. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  137. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  138. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  139. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  140. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  141. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  142. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  143. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  144. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  145. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  146. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  147. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  148. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  149. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  150. package/dist/cli/index.mjs +6272 -5706
  151. package/dist/client/{courseRegistration-BcemLAdN.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  152. package/dist/client/{DiscountCodeDisclosure-DS0AuFWW.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  153. package/dist/client/{EventCombined.client-DtMxLr7q.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  154. package/dist/client/{EventListing.client-BdLSRNg1.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  155. package/dist/client/{LeafletStaticMap-BrpC6vsT.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  156. package/dist/client/{StepIndicator-CBYPFVoy.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  157. package/dist/client/{accordion-BqqwPJWM.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  158. package/dist/client/{bookingForm-SneP3yxC.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  159. package/dist/client/bookings.mjs +126 -23
  160. package/dist/client/{carousel-BTIR9L3I.mjs → carousel-DPNmiH0f.mjs} +1 -1
  161. package/dist/client/{cart-bqiqd8SX.mjs → cart--egVXlrR.mjs} +3 -3
  162. package/dist/client/{checkout-WbTFV5v4.mjs → checkout-DywWtMcq.mjs} +3 -3
  163. package/dist/client/client.mjs +6111 -5794
  164. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  165. package/dist/client/{eventCalendar-CsxIw0V_.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  166. package/dist/client/{eventCombined-B6XMoHfa.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  167. package/dist/client/{eventDetails-BJaoPPfo.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  168. package/dist/client/{eventListing-DgwdYHRT.mjs → eventListing-D0vm-zST.mjs} +2 -2
  169. package/dist/client/{eventRegistration-C0O3folu.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  170. package/dist/client/{form-Bk9txGFt.mjs → form-C2Zf1n3K.mjs} +1 -1
  171. package/dist/client/{headerSection-yIBt0yTv.mjs → headerSection-CP05gzdc.mjs} +2 -2
  172. package/dist/client/hooks.mjs +1013 -935
  173. package/dist/client/{locationMap-C-3KIpv-.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  174. package/dist/client/{newsletterForm-CzB8g8h2.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  175. package/dist/client/{pricing-C1QeDes_.mjs → pricing-DGuNR1W4.mjs} +1 -1
  176. package/dist/client/{productDetail-w7SBp5uc.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  177. package/dist/client/{productList-D0tGKHGf.mjs → productList-DbB3jwqd.mjs} +3 -3
  178. package/dist/client/{propsDecoder-Bcin2DB3.mjs → propsDecoder-CiTuhUwY.mjs} +257 -142
  179. package/dist/client/rendering/client.mjs +1342 -1122
  180. package/dist/client/rendering/islands.mjs +18 -18
  181. package/dist/client/rendering.mjs +6622 -6321
  182. package/dist/client/{scrollToBlock-h-o_STf_.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  183. package/dist/client/{shop-BGzmL8O_.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  184. package/dist/client/{shop-commerce-lX8QxjX-.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  185. package/dist/client/{shop-commerce-store-CEurARtu.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  186. package/dist/client/{shopShared-DXxH8xxw.mjs → shopShared-cF0c20vB.mjs} +2 -2
  187. package/dist/client/{useEventFilters-B591g9vd.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  188. package/dist/client/{usePolling-BvnChV4m.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  189. package/dist/preview-next/before-render.mjs +1 -1
  190. package/dist/preview-next/client/runtime.mjs +4 -4
  191. package/dist/preview-next/middleware.mjs +1 -1
  192. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  193. package/dist/{sdk-runtime-M__i3Jce.mjs → sdk-runtime-Cn_QSCOg.mjs} +2 -2
  194. package/dist/{separator-VSlnI9bc.mjs → separator-CEoGABRc.mjs} +1 -1
  195. package/dist/server/components.mjs +1750 -1614
  196. package/dist/server/config-validation.mjs +1010 -935
  197. package/dist/server/config.mjs +1010 -935
  198. package/dist/server/data.mjs +1013 -935
  199. package/dist/server/index.mjs +40 -16
  200. package/dist/server/next.mjs +1790 -1632
  201. package/dist/server/page-converter.mjs +1012 -938
  202. package/dist/server/prebuild.mjs +1 -1
  203. package/dist/server/rendering/server.mjs +1746 -1601
  204. package/dist/server/rendering.mjs +1759 -1615
  205. package/dist/server/routing.mjs +1123 -975
  206. package/dist/server/server.mjs +1053 -951
  207. package/dist/server/theme-bridge.mjs +151 -118
  208. package/dist/server/theme.mjs +111 -23
  209. package/package.json +1 -1
  210. package/dist/SdkPreviewModeRuntime-CvW1vdQ4.mjs +0 -39468
  211. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
  212. package/dist/client/MagicLinkForm-Bt3IuLMy.mjs +0 -327
@@ -10,6 +10,19 @@ export declare const formPresentationSettingsSchema: z.ZodObject<{
10
10
  submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11
11
  templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
12
  }, z.core.$strict>;
13
+ export declare const contactFormDefinitionSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
14
+ kind: z.ZodLiteral<"custom-contact">;
15
+ }, z.core.$strict>, z.ZodObject<{
16
+ kind: z.ZodLiteral<"standard-contact">;
17
+ optionalFields: z.ZodObject<{
18
+ name: z.ZodObject<{
19
+ visible: z.ZodBoolean;
20
+ }, z.core.$strict>;
21
+ phone: z.ZodObject<{
22
+ visible: z.ZodBoolean;
23
+ }, z.core.$strict>;
24
+ }, z.core.$strict>;
25
+ }, z.core.$strict>], "kind">;
13
26
  /**
14
27
  * Contact form settings
15
28
  * Used for general inquiry forms that send notifications to site owners
@@ -45,6 +58,19 @@ export declare const contactFormSettingsSchema: z.ZodObject<{
45
58
  }, z.core.$strict>>;
46
59
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
47
60
  }, z.core.$strict>>;
61
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
62
+ kind: z.ZodLiteral<"custom-contact">;
63
+ }, z.core.$strict>, z.ZodObject<{
64
+ kind: z.ZodLiteral<"standard-contact">;
65
+ optionalFields: z.ZodObject<{
66
+ name: z.ZodObject<{
67
+ visible: z.ZodBoolean;
68
+ }, z.core.$strict>;
69
+ phone: z.ZodObject<{
70
+ visible: z.ZodBoolean;
71
+ }, z.core.$strict>;
72
+ }, z.core.$strict>;
73
+ }, z.core.$strict>], "kind">>;
48
74
  }, z.core.$strict>;
49
75
  /**
50
76
  * Booking form settings
@@ -168,6 +194,19 @@ export declare const formSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
168
194
  }, z.core.$strict>>;
169
195
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
170
196
  }, z.core.$strict>>;
197
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
198
+ kind: z.ZodLiteral<"custom-contact">;
199
+ }, z.core.$strict>, z.ZodObject<{
200
+ kind: z.ZodLiteral<"standard-contact">;
201
+ optionalFields: z.ZodObject<{
202
+ name: z.ZodObject<{
203
+ visible: z.ZodBoolean;
204
+ }, z.core.$strict>;
205
+ phone: z.ZodObject<{
206
+ visible: z.ZodBoolean;
207
+ }, z.core.$strict>;
208
+ }, z.core.$strict>;
209
+ }, z.core.$strict>], "kind">>;
171
210
  }, z.core.$strict>, z.ZodObject<{
172
211
  type: z.ZodLiteral<"booking">;
173
212
  serviceId: z.ZodOptional<z.ZodString>;
@@ -265,6 +304,19 @@ export declare const formSettingsInputSchema: z.ZodDiscriminatedUnion<[z.ZodObje
265
304
  }, z.core.$strict>>;
266
305
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
267
306
  }, z.core.$strict>>;
307
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
308
+ kind: z.ZodLiteral<"custom-contact">;
309
+ }, z.core.$strict>, z.ZodObject<{
310
+ kind: z.ZodLiteral<"standard-contact">;
311
+ optionalFields: z.ZodObject<{
312
+ name: z.ZodObject<{
313
+ visible: z.ZodBoolean;
314
+ }, z.core.$strict>;
315
+ phone: z.ZodObject<{
316
+ visible: z.ZodBoolean;
317
+ }, z.core.$strict>;
318
+ }, z.core.$strict>;
319
+ }, z.core.$strict>], "kind">>;
268
320
  readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
269
321
  readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
270
322
  }, z.core.$strict>, z.ZodObject<{
@@ -344,6 +396,7 @@ export type BookingQuestionsFormSettings = z.infer<typeof bookingQuestionsFormSe
344
396
  export type FormSettings = z.infer<typeof formSettingsSchema>;
345
397
  export type FormPresentationSettings = z.infer<typeof formPresentationSettingsSchema>;
346
398
  export type FormSettingsInput = z.infer<typeof formSettingsInputSchema>;
399
+ export type ContactFormDefinitionSettings = z.infer<typeof contactFormDefinitionSettingsSchema>;
347
400
  type JsonRecord = Record<string, unknown>;
348
401
  export declare function stripPresentationKeysFromBehaviorSettings(value: unknown): JsonRecord;
349
402
  export declare function extractFormPresentationSettings(input: Readonly<{
@@ -886,10 +939,14 @@ export declare function parseBookingQuestionsContent(shape: BookingQuestionsForm
886
939
  * Form creation payload schema
887
940
  * Validates the request body when creating a new form via API
888
941
  */
889
- export declare const formSlugSchema: z.ZodString;
942
+ declare const formSlugBrand: unique symbol;
943
+ export type FormSlug = string & {
944
+ readonly [formSlugBrand]: 'FormSlug';
945
+ };
946
+ export declare const formSlugSchema: z.ZodPipe<z.ZodString, z.ZodTransform<FormSlug, string>>;
890
947
  export declare const createFormPayloadSchema: z.ZodObject<{
891
948
  name: z.ZodString;
892
- slug: z.ZodString;
949
+ slug: z.ZodPipe<z.ZodString, z.ZodTransform<FormSlug, string>>;
893
950
  schema: z.ZodObject<{
894
951
  version: z.ZodDefault<z.ZodString>;
895
952
  fields: z.ZodArray<z.ZodObject<{
@@ -961,6 +1018,19 @@ export declare const createFormPayloadSchema: z.ZodObject<{
961
1018
  }, z.core.$strict>>;
962
1019
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
963
1020
  }, z.core.$strict>>;
1021
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
1022
+ kind: z.ZodLiteral<"custom-contact">;
1023
+ }, z.core.$strict>, z.ZodObject<{
1024
+ kind: z.ZodLiteral<"standard-contact">;
1025
+ optionalFields: z.ZodObject<{
1026
+ name: z.ZodObject<{
1027
+ visible: z.ZodBoolean;
1028
+ }, z.core.$strict>;
1029
+ phone: z.ZodObject<{
1030
+ visible: z.ZodBoolean;
1031
+ }, z.core.$strict>;
1032
+ }, z.core.$strict>;
1033
+ }, z.core.$strict>], "kind">>;
964
1034
  readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
965
1035
  readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
966
1036
  }, z.core.$strict>, z.ZodObject<{
@@ -0,0 +1,114 @@
1
+ import { z } from 'zod';
2
+ import { type ContactFormDefinitionSettings, type ContactFormSettings, type FormPresentationSettings, type FormSchema } from './forms';
3
+ export declare const standardContactFormSchemaSchema: z.ZodObject<{
4
+ version: z.ZodLiteral<"1.0">;
5
+ fields: z.ZodTuple<[z.ZodObject<{
6
+ id: z.ZodLiteral<"name">;
7
+ label: z.ZodString;
8
+ type: z.ZodLiteral<"text">;
9
+ required: z.ZodLiteral<false>;
10
+ placeholder: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strict>, z.ZodObject<{
12
+ id: z.ZodLiteral<"email">;
13
+ label: z.ZodString;
14
+ type: z.ZodLiteral<"email">;
15
+ required: z.ZodLiteral<true>;
16
+ placeholder: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strict>, z.ZodObject<{
18
+ id: z.ZodLiteral<"phone">;
19
+ label: z.ZodString;
20
+ type: z.ZodLiteral<"tel">;
21
+ required: z.ZodLiteral<false>;
22
+ placeholder: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strict>, z.ZodObject<{
24
+ id: z.ZodLiteral<"message">;
25
+ label: z.ZodString;
26
+ type: z.ZodLiteral<"textarea">;
27
+ required: z.ZodLiteral<true>;
28
+ placeholder: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strict>], null>;
30
+ }, z.core.$strict>;
31
+ export type StandardContactFormSchema = z.infer<typeof standardContactFormSchemaSchema>;
32
+ type ContactSettingsFor<TKind extends ContactFormDefinitionSettings['kind']> = ContactFormSettings & Readonly<{
33
+ definition: Extract<ContactFormDefinitionSettings, {
34
+ kind: TKind;
35
+ }>;
36
+ }>;
37
+ export type ContactFormDefinition = Readonly<{
38
+ kind: 'custom-contact';
39
+ settings: ContactSettingsFor<'custom-contact'>;
40
+ schema: FormSchema;
41
+ }> | Readonly<{
42
+ kind: 'standard-contact';
43
+ settings: ContactSettingsFor<'standard-contact'>;
44
+ schema: StandardContactFormSchema;
45
+ }>;
46
+ export type ContactFormDefinitionParseError = Readonly<{
47
+ kind: 'invalid-contact-settings';
48
+ issues: readonly string[];
49
+ }> | Readonly<{
50
+ kind: 'invalid-custom-contact-schema';
51
+ issues: readonly string[];
52
+ }> | Readonly<{
53
+ kind: 'invalid-standard-contact-schema';
54
+ issues: readonly string[];
55
+ }>;
56
+ export type ContactFormDefinitionParseResult = Readonly<{
57
+ ok: true;
58
+ value: ContactFormDefinition;
59
+ }> | Readonly<{
60
+ ok: false;
61
+ error: ContactFormDefinitionParseError;
62
+ }>;
63
+ export declare function parseContactFormDefinition(input: Readonly<{
64
+ settingsJson: unknown;
65
+ schemaJson: unknown;
66
+ }>): ContactFormDefinitionParseResult;
67
+ export type StandardContactFormPatch = Readonly<{
68
+ name?: Readonly<{
69
+ label?: string;
70
+ placeholder?: string;
71
+ visible?: boolean;
72
+ }>;
73
+ email?: Readonly<{
74
+ label?: string;
75
+ placeholder?: string;
76
+ }>;
77
+ phone?: Readonly<{
78
+ label?: string;
79
+ placeholder?: string;
80
+ visible?: boolean;
81
+ }>;
82
+ message?: Readonly<{
83
+ label?: string;
84
+ placeholder?: string;
85
+ }>;
86
+ }>;
87
+ type StandardContactDefinition = Extract<ContactFormDefinition, {
88
+ kind: 'standard-contact';
89
+ }>;
90
+ export type StandardContactFormUpdateResult = Readonly<{
91
+ ok: true;
92
+ value: StandardContactDefinition;
93
+ }> | Readonly<{
94
+ ok: false;
95
+ error: ContactFormDefinitionParseError;
96
+ }>;
97
+ export declare function createStandardContactFormDefinition(): Extract<ContactFormDefinition, {
98
+ kind: 'standard-contact';
99
+ }>;
100
+ export declare function updateStandardContactFormDefinition(current: StandardContactDefinition, patch: StandardContactFormPatch): StandardContactFormUpdateResult;
101
+ export declare function projectStandardContactRenderedSchema(definition: Extract<ContactFormDefinition, {
102
+ kind: 'standard-contact';
103
+ }>): FormSchema;
104
+ export declare function projectStandardContactAsCustom(input: Readonly<{
105
+ definition: Extract<ContactFormDefinition, {
106
+ kind: 'standard-contact';
107
+ }>;
108
+ presentation: FormPresentationSettings;
109
+ }>): Readonly<{
110
+ schema: FormSchema;
111
+ settings: ContactSettingsFor<'custom-contact'>;
112
+ presentation: FormPresentationSettings;
113
+ }>;
114
+ export {};
@@ -23,6 +23,10 @@ type UiState = {
23
23
  isPathEdited: (blockId: Parameters<DraftsSlice['setAtPath']>[0], path: string) => boolean;
24
24
  showAllValidation: (blockId: Parameters<DraftsSlice['setAtPath']>[0]) => boolean;
25
25
  getBlockSaveability: (blockId: Parameters<DraftsSlice['setAtPath']>[0]) => BlockDraftSaveability;
26
+ setValidationManifests: (manifests: readonly Readonly<{
27
+ blockId: Parameters<DraftsSlice['setAtPath']>[0];
28
+ manifest: import('../../blocks/src/index').BlockManifest;
29
+ }>[]) => void;
26
30
  };
27
31
  structure: {
28
32
  getList: () => readonly BlockItem[];
@@ -0,0 +1,26 @@
1
+ import { type BlockManifest, type Theme } from '../../../../blocks/src/index';
2
+ import type { SdkBlockFieldExtensionsMap, SdkBlockFieldOptionsMap } from '../../../../block-form/src/client/index';
3
+ import { type EditorBlockId } from '../../../../core/src/index';
4
+ import type { BlockItem } from '../types';
5
+ import { type CustomBlockRegistryEntry, type SdkConfigForBlockPicker } from '../sdkBlockMerger';
6
+ type ValidationManifestStore = Readonly<{
7
+ getState: () => Readonly<{
8
+ blockValidation: Readonly<{
9
+ setValidationManifests: (entries: readonly Readonly<{
10
+ blockId: EditorBlockId;
11
+ manifest: BlockManifest;
12
+ }>[]) => void;
13
+ }>;
14
+ }>;
15
+ }>;
16
+ export declare function useBlockValidationManifests(input: Readonly<{
17
+ blockList: readonly BlockItem[];
18
+ uiStore: ValidationManifestStore;
19
+ sdkConfig: SdkConfigForBlockPicker | null;
20
+ customBlocks: readonly CustomBlockRegistryEntry[];
21
+ theme?: Theme | null;
22
+ blockFieldOptions: SdkBlockFieldOptionsMap | null;
23
+ blockFieldExtensions: SdkBlockFieldExtensionsMap | null;
24
+ hideThemeV2RawStyleFields: boolean;
25
+ }>): void;
26
+ export {};
@@ -1,4 +1,4 @@
1
- import type { MediaAssetWithLabels } from '@riverbankcms/media-storage-supabase';
1
+ import type { IdentifierReadyMediaAsset } from '../../../../media-editor/src/index';
2
2
  export declare const RICH_TEXT_IMAGE_MAX_WIDTH = 1920;
3
3
  export declare const RICH_TEXT_IMAGE_QUALITY = 85;
4
4
  export type RichTextImageInsertAttrs = {
@@ -9,9 +9,9 @@ export type RichTextImageInsertAttrs = {
9
9
  height?: number;
10
10
  };
11
11
  type BuildRichTextImageInsertAttrsArgs = {
12
- asset: MediaAssetWithLabels;
12
+ asset: IdentifierReadyMediaAsset;
13
13
  supabaseUrl?: string | null;
14
14
  fallbackSrc?: string | null;
15
15
  };
16
- export declare function buildRichTextImageInsertAttrs({ asset, supabaseUrl, fallbackSrc, }: BuildRichTextImageInsertAttrsArgs): RichTextImageInsertAttrs | null;
16
+ export declare function buildRichTextImageInsertAttrs({ asset, supabaseUrl, fallbackSrc, }: BuildRichTextImageInsertAttrsArgs): RichTextImageInsertAttrs;
17
17
  export {};
@@ -5,10 +5,10 @@ import { type UploadIntentResolver, type VideoPrepIntentResolver } from '../../m
5
5
  import type { VideoPrepIntent } from '../../media-core/src/index';
6
6
  import { type CropDialogProps } from './CropDialog';
7
7
  import { type MediaPickerDialogProps, type MediaPickerPolicy } from './MediaPickerDialog';
8
- import type { MediaValue } from './types';
8
+ import type { MediaValue, PersistableMediaValue } from './types';
9
9
  export type MediaEditorProps = {
10
10
  value: MediaValue | undefined;
11
- onChange: (next: MediaValue | undefined) => void;
11
+ onChange: (next: PersistableMediaValue | undefined) => void;
12
12
  allowedKinds?: readonly MediaKind[];
13
13
  previewAspectRatio?: number;
14
14
  minSourceWidth?: number;
@@ -2,7 +2,7 @@ import { type ReactNode } from 'react';
2
2
  import type { ApiClient } from '../../api/src/request';
3
3
  import type { MediaAssetWithLabels, MediaStorageRepo } from '@riverbankcms/media-storage-supabase';
4
4
  import type { UploadProgressHandler, UseApiMediaUploaderOptions } from '../../media-react/src/index';
5
- import type { MediaAssetIndex, ResolveImageUrlContext } from '../../blocks/src/index';
5
+ import type { ResolveImageUrlContext } from '../../blocks/src/index';
6
6
  type MediaEditorUploaderOptions = Omit<UseApiMediaUploaderOptions, 'siteId' | 'apiClient' | 'bucket'>;
7
7
  export type MediaEditorContextValue = {
8
8
  siteId: string;
@@ -13,7 +13,6 @@ export type MediaEditorContextValue = {
13
13
  getPublicUrl: (asset: MediaAssetWithLabels) => string;
14
14
  registerMediaAsset: (asset: MediaAssetWithLabels) => void;
15
15
  bearerToken?: string | null;
16
- mediaAssetIndex?: MediaAssetIndex;
17
16
  imageResolveContext: ResolveImageUrlContext;
18
17
  };
19
18
  export declare function MediaEditorContextProvider({ value, children, }: {
@@ -14,5 +14,7 @@ export { MediaEditorProvider } from './provider';
14
14
  export type { MediaEditorProviderProps } from './provider';
15
15
  export { createMediaEditorProvider } from './createMediaEditorProvider';
16
16
  export { withRepeaterStackMediaFieldUi, withRepeaterThumbnailMediaFieldUi, withRepeaterThumbnailPickerOnlyMediaFieldUi, } from './fieldUi';
17
- export type { MediaValue, MediaTransform, MediaHotspot } from './types';
17
+ export type { MediaValue, PersistableMediaValue, MediaTransform, MediaHotspot } from './types';
18
18
  export { DEFAULT_HOTSPOT } from './utils';
19
+ export { buildPersistableMediaValue, mediaSelectionFailureMessage, prepareMediaAssetForSelection, } from './mediaSelection';
20
+ export type { BuildPersistableMediaValueOptions, IdentifierReadyMediaAsset, PrepareMediaSelectionResult, } from './mediaSelection';
@@ -0,0 +1,32 @@
1
+ import type { ApiClient } from '../../api/src/request';
2
+ import { type MediaIdentifier } from '../../blocks/src/index';
3
+ import type { MediaAssetWithLabels } from '@riverbankcms/media-storage-supabase';
4
+ import type { MediaValue, PersistableMediaValue } from './types';
5
+ export type IdentifierReadyMediaAsset = Omit<MediaAssetWithLabels, 'identifier'> & Readonly<{
6
+ identifier: MediaIdentifier;
7
+ }>;
8
+ export type PrepareMediaSelectionResult = Readonly<{
9
+ tag: 'ready';
10
+ asset: IdentifierReadyMediaAsset;
11
+ }> | Readonly<{
12
+ tag: 'failed';
13
+ reason: 'identifier-assignment-failed';
14
+ error: unknown;
15
+ }> | Readonly<{
16
+ tag: 'failed';
17
+ reason: 'identifier-missing-after-assignment';
18
+ }>;
19
+ type PrepareMediaSelectionFailure = Extract<PrepareMediaSelectionResult, {
20
+ tag: 'failed';
21
+ }>;
22
+ export declare function mediaSelectionFailureMessage(failure: PrepareMediaSelectionFailure): string;
23
+ export type BuildPersistableMediaValueOptions = Readonly<{
24
+ asset: IdentifierReadyMediaAsset;
25
+ mediaKind: PersistableMediaValue['type'];
26
+ previousValue: MediaValue | undefined;
27
+ poster: MediaValue['poster'] | undefined;
28
+ publicUrl?: string;
29
+ }>;
30
+ export declare function buildPersistableMediaValue({ asset, mediaKind, previousValue, poster, publicUrl, }: BuildPersistableMediaValueOptions): PersistableMediaValue;
31
+ export declare function prepareMediaAssetForSelection(apiClient: ApiClient, asset: MediaAssetWithLabels): Promise<PrepareMediaSelectionResult>;
32
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { ImageHotspot } from '../../media-react/src/index';
2
- import type { Media } from '../../blocks/src/index';
2
+ import type { Media, PersistableMedia } from '../../blocks/src/index';
3
3
  export type MediaHotspot = ImageHotspot;
4
4
  export type MediaTransform = NonNullable<Media['transform']>;
5
5
  /**
@@ -7,3 +7,5 @@ export type MediaTransform = NonNullable<Media['transform']>;
7
7
  * and app consumers all speak the same content contract.
8
8
  */
9
9
  export type MediaValue = Media;
10
+ /** A media editor output that satisfies the canonical block write contract. */
11
+ export type PersistableMediaValue = PersistableMedia;
@@ -0,0 +1,26 @@
1
+ import type { MediaAssetWithLabels, MediaKind } from '@riverbankcms/media-storage-supabase';
2
+ import type { MediaEditorContextValue } from './context';
3
+ import type { MediaPickerAssetSelection } from './MediaPickerDialog';
4
+ import type { MediaValue, PersistableMediaValue } from './types';
5
+ export type MediaSelectionState = Readonly<{
6
+ tag: 'idle';
7
+ }> | Readonly<{
8
+ tag: 'preparing';
9
+ }> | Readonly<{
10
+ tag: 'failed';
11
+ message: string;
12
+ }>;
13
+ type UseMediaSelectionOptions = Readonly<{
14
+ context: MediaEditorContextValue;
15
+ value: MediaValue | undefined;
16
+ allowedKinds: readonly MediaKind[];
17
+ evaluateAssetSelection: (asset: MediaAssetWithLabels) => MediaPickerAssetSelection;
18
+ onChange: (next: PersistableMediaValue | undefined) => void;
19
+ onSelectionComplete: () => void;
20
+ }>;
21
+ export declare function useMediaSelection(options: UseMediaSelectionOptions): {
22
+ readonly cancelSelection: () => void;
23
+ readonly handleSelect: (picked: MediaAssetWithLabels) => Promise<void>;
24
+ readonly selectionState: MediaSelectionState;
25
+ };
26
+ export {};
@@ -0,0 +1,6 @@
1
+ import { type APIEndpoints } from '../../../../api/src/index';
2
+ type BatchBody = NonNullable<APIEndpoints['batchBlockLoaders']['body']>;
3
+ type BatchRequest = BatchBody['requests'][number];
4
+ export type PreviewBatchableLoaderEndpoint = BatchRequest['endpoint'];
5
+ export declare function toPreviewBatchParams(endpoint: PreviewBatchableLoaderEndpoint, params: Record<string, string>): BatchRequest['params'];
6
+ export {};
@@ -35,6 +35,8 @@ export { PreviewShell } from "./preview/PreviewShell";
35
35
  export type { PreviewShellProps } from "./preview/PreviewShell";
36
36
  export { PreviewShellLayout } from "./preview/PreviewShellLayout";
37
37
  export type { PreviewShellLayoutProps } from "./preview/PreviewShellLayout";
38
+ export { resolvePreviewThemeRoles } from "./preview/previewThemeRoles";
39
+ export type { PreviewThemeRoles } from "./preview/previewThemeRoles";
38
40
  export type { PreviewFailureSource } from "./preview/usePreviewKeepAlive";
39
41
  export { usePreviewKeepAlive } from "./preview/usePreviewKeepAlive";
40
42
  export { EditablePageRenderer } from "./blocks/EditablePageRenderer";
@@ -2,7 +2,7 @@ import React, { type ReactNode } from 'react';
2
2
  import type { ApiClient } from '../../../../api/src/request';
3
3
  import { type ContentTypeSchema } from '../../../../content-model/src/index';
4
4
  import { type ZoomLevel } from '../../../../content-editor/src/index';
5
- import type { EntrySubrouteContextData, MediaAssetIndexItem, Theme } from '../../../../blocks/src/index';
5
+ import type { EntrySubrouteContextData, Theme } from '../../../../blocks/src/index';
6
6
  import type { FieldWidgetComponent } from '../../../../block-form/src/client/index';
7
7
  import type { SdkConfigForBlockPicker } from '../../../../editor-blocks/src/index';
8
8
  import { type ViewportMode, type ViewportWidth } from './PreviewViewportControls';
@@ -18,12 +18,9 @@ type EntryEditorPanelProps = {
18
18
  currentTemplate?: PreviewTemplateData | null;
19
19
  theme?: Theme | null;
20
20
  apiClient: ApiClient;
21
- bearerToken?: string | null;
22
- supabaseUrl?: string;
23
21
  entrySubrouteContext?: EntrySubrouteContextData | null;
24
22
  metadataPanel: ReactNode;
25
23
  linkedEntrySection?: PreviewLinkedEntrySidebarSection | null;
26
- mediaAssets?: MediaAssetIndexItem[];
27
24
  widgets: Record<string, FieldWidgetComponent>;
28
25
  sdkConfig?: SdkConfigForBlockPicker | null;
29
26
  viewportMode: ViewportMode;
@@ -33,5 +30,5 @@ type EntryEditorPanelProps = {
33
30
  onViewportWidthChange: (width: ViewportWidth) => void;
34
31
  onZoomChange: (zoom: ZoomLevel) => void;
35
32
  };
36
- export declare function EntryEditorPanel({ siteId, dashboardBaseUrl, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, metadataPanel, linkedEntrySection, mediaAssets, widgets, sdkConfig, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: EntryEditorPanelProps): React.JSX.Element;
33
+ export declare function EntryEditorPanel({ siteId, dashboardBaseUrl, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, entrySubrouteContext, metadataPanel, linkedEntrySection, widgets, sdkConfig, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: EntryEditorPanelProps): React.JSX.Element;
37
34
  export {};
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import type { ApiClient } from "../../../../api/src/request";
3
- import type { MediaAssetIndexItem, Theme } from "../../../../blocks/src/index";
3
+ import type { Theme } from "../../../../blocks/src/index";
4
4
  import type { FieldWidgetComponent } from "../../../../block-form/src/client/index";
5
5
  import type { SdkConfigForBlockPicker } from "../../../../editor-blocks/src/index";
6
6
  type EntrySlotBlockEditorPanelProps = {
@@ -10,11 +10,8 @@ type EntrySlotBlockEditorPanelProps = {
10
10
  entryId: string;
11
11
  theme?: Theme | null;
12
12
  apiClient: ApiClient;
13
- bearerToken?: string | null;
14
- supabaseUrl?: string;
15
13
  sdkConfig?: SdkConfigForBlockPicker | null;
16
- mediaAssets?: MediaAssetIndexItem[];
17
14
  widgets: Record<string, FieldWidgetComponent>;
18
15
  };
19
- export declare function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId, theme, apiClient, bearerToken, supabaseUrl, sdkConfig, mediaAssets, widgets, }: EntrySlotBlockEditorPanelProps): React.JSX.Element | null;
16
+ export declare function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId, theme, apiClient, sdkConfig, widgets, }: EntrySlotBlockEditorPanelProps): React.JSX.Element | null;
20
17
  export {};
@@ -0,0 +1,12 @@
1
+ import type { SiteChromeCustomizeSurfaceState } from './siteChromeCustomizeTypes';
2
+ export type HeaderMenuSurfaceState = Extract<SiteChromeCustomizeSurfaceState, {
3
+ kind: 'available';
4
+ surface: 'header';
5
+ }>;
6
+ export declare function isHeaderMenuSurfaceState(state: SiteChromeCustomizeSurfaceState): state is HeaderMenuSurfaceState;
7
+ export declare function HeaderMenuControls({ state, disabled, onMenuFontChange, onMenuFontSizeChange, }: Readonly<{
8
+ state: HeaderMenuSurfaceState;
9
+ disabled?: boolean;
10
+ onMenuFontChange?: (value: HeaderMenuSurfaceState['menuFont']) => void;
11
+ onMenuFontSizeChange?: (value: HeaderMenuSurfaceState['menuFontSize']) => void;
12
+ }>): import("react").JSX.Element;
@@ -2,7 +2,7 @@ import React, { type MutableRefObject, type ReactNode } from 'react';
2
2
  import type { ApiClient } from '../../../../api/src/request';
3
3
  import type { SdkConfigForBlockPicker } from '../../../../editor-blocks/src/block-editor/sdkBlockMerger';
4
4
  import type { BlockEditorHandle, BlockItem } from '../../../../editor-blocks/src/block-editor/types';
5
- import type { BookingOfferingPresetSummary, MediaAssetIndexItem, Theme } from '../../../../blocks/src/index';
5
+ import type { BookingOfferingPresetSummary, Theme } from '../../../../blocks/src/index';
6
6
  import { type EditorUiState, type ZoomLevel } from '../../../../content-editor/src/index';
7
7
  import { type ViewportMode, type ViewportWidth } from './PreviewViewportControls';
8
8
  import type { PreviewZustandStoreApi } from './storeTypes';
@@ -13,8 +13,6 @@ type PageBlockEditorPanelProps = {
13
13
  dashboardBaseUrl?: string | null;
14
14
  theme?: Theme | null;
15
15
  apiClient: ApiClient;
16
- bearerToken?: string | null;
17
- supabaseUrl?: string;
18
16
  blockItems: BlockItem[];
19
17
  uiStoreForBlockEditor: PreviewZustandStoreApi<EditorUiState>;
20
18
  blockEditorRef: MutableRefObject<BlockEditorHandle | null>;
@@ -24,7 +22,6 @@ type PageBlockEditorPanelProps = {
24
22
  designPanel?: ReactNode;
25
23
  designTakeoverActive?: boolean;
26
24
  sdkConfig?: SdkConfigForBlockPicker | null;
27
- mediaAssets?: MediaAssetIndexItem[];
28
25
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
29
26
  viewportMode: ViewportMode;
30
27
  viewportWidth: ViewportWidth;
@@ -33,5 +30,5 @@ type PageBlockEditorPanelProps = {
33
30
  onViewportWidthChange: (width: ViewportWidth) => void;
34
31
  onZoomChange: (zoom: ZoomLevel) => void;
35
32
  };
36
- export declare function PageBlockEditorPanel({ siteId, pageId, dashboardBaseUrl, theme, apiClient, bearerToken, supabaseUrl, blockItems, uiStoreForBlockEditor, blockEditorRef, onBlocksChange, metadataPanel, linkedEntrySection, designPanel, designTakeoverActive, sdkConfig, mediaAssets, bookingOfferingPresets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PageBlockEditorPanelProps): React.JSX.Element;
33
+ export declare function PageBlockEditorPanel({ siteId, pageId, dashboardBaseUrl, theme, apiClient, blockItems, uiStoreForBlockEditor, blockEditorRef, onBlocksChange, metadataPanel, linkedEntrySection, designPanel, designTakeoverActive, sdkConfig, bookingOfferingPresets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PageBlockEditorPanelProps): React.JSX.Element;
37
34
  export {};
@@ -2,7 +2,7 @@ import React, { type ReactNode } from "react";
2
2
  import type { ApiClient } from "../../../../api/src/request";
3
3
  import type { SdkConfigForBlockPicker } from "../../../../editor-blocks/src/index";
4
4
  import type { SurfaceId } from "../../../../surfaces/src/index";
5
- import type { EntrySubrouteContextData, BookingOfferingPresetSummary, MediaAssetIndexItem, Theme } from "../../../../blocks/src/index";
5
+ import type { EntrySubrouteContextData, BookingOfferingPresetSummary, Theme } from "../../../../blocks/src/index";
6
6
  import { type ContentTypeSchema } from "../../../../content-model/src/index";
7
7
  import { type ZoomLevel } from "../../../../content-editor/src/index";
8
8
  import type { ButtonStyleSelection } from "../../../../theme-core/src/buttons/index";
@@ -42,11 +42,9 @@ export type PreviewEditorSidebarProps = {
42
42
  themeSelectionHeaderContext?: Partial<HeaderSelectionContext>;
43
43
  apiClient: ApiClient;
44
44
  bearerToken?: string | null;
45
- supabaseUrl?: string;
46
45
  entrySubrouteContext?: EntrySubrouteContextData | null;
47
46
  assistantPanel?: ReactNode;
48
47
  sdkConfig?: SdkConfigForBlockPicker | null;
49
- mediaAssets?: MediaAssetIndexItem[];
50
48
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
51
49
  siteStyleAccess?: SiteStyleAccess;
52
50
  activeTab: PreviewEditorSidebarTab;
@@ -60,4 +58,4 @@ export type PreviewEditorSidebarProps = {
60
58
  onViewportWidthChange: (width: ViewportWidth) => void;
61
59
  onZoomChange: (zoom: ZoomLevel) => void;
62
60
  };
63
- export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, onFooterSaved, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
61
+ export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, apiClient, bearerToken, entrySubrouteContext, assistantPanel, sdkConfig, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, onFooterSaved, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
@@ -31,7 +31,18 @@ export type PreviewShellProps = {
31
31
  previewToken: string;
32
32
  dashboardBaseUrl?: string | null;
33
33
  surfaceId: SurfaceId;
34
+ /**
35
+ * Canonical site theme — the persistence/configurator base. Site-style
36
+ * saves are computed against this theme, so it must never carry
37
+ * page-derived adaptations.
38
+ */
34
39
  theme: Theme;
40
+ /**
41
+ * Page-adapted theme used to render the preview document (e.g. opening-
42
+ * foreground header adaptation). Render-only: never persisted. Falls back
43
+ * to the canonical theme when absent.
44
+ */
45
+ renderTheme?: Theme | null;
35
46
  themeId?: string | null;
36
47
  themeSelectionId?: string | null;
37
48
  themeSelectionVersion?: number | null;
@@ -62,7 +73,7 @@ export type PreviewShellProps = {
62
73
  entrySubrouteContext?: EntrySubrouteContextData | null;
63
74
  assistantPanel?: PreviewEditorSidebarProps['assistantPanel'];
64
75
  sdkConfig?: SdkConfigForBlockPicker | null;
65
- mediaAssets?: MediaAssetIndexItem[];
76
+ mediaAssets?: readonly MediaAssetIndexItem[];
66
77
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
67
78
  supabaseUrl?: string;
68
79
  themeRuntime?: PreviewThemeRuntime;
@@ -72,7 +83,7 @@ export type PreviewShellProps = {
72
83
  baseFetch?: BaseFetch;
73
84
  onFooterSaved?: () => void;
74
85
  };
75
- export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime, designEditorEligibility, hideSiteStyleConfigurator, baseFetch, onFooterSaved, }: PreviewShellProps): React.JSX.Element;
86
+ export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, renderTheme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime, designEditorEligibility, hideSiteStyleConfigurator, baseFetch, onFooterSaved, }: PreviewShellProps): React.JSX.Element;
76
87
  export declare function defaultDesignEditorEligibility(input: Readonly<{
77
88
  pageId: string | null;
78
89
  entryData?: PreviewContentEntryData | null;
@@ -1,5 +1,5 @@
1
1
  import React, { type ReactNode } from "react";
2
- import { type EntrySubrouteContextData, type BookingOfferingPresetSummary, type MediaAssetIndexItem, type Theme } from "../../../../blocks/src/index";
2
+ import { type EntrySubrouteContextData, type BookingOfferingPresetSummary, type Theme } from "../../../../blocks/src/index";
3
3
  import type { ButtonStyleSelection } from "../../../../theme-core/src/buttons/index";
4
4
  import type { HeaderSelectionContext, FooterLookId, HeaderLayoutId, HeaderLookId, HeaderStyleId } from "../../../../theme-core/src/site-styles/index";
5
5
  import type { ContentTypeSchema } from "../../../../content-model/src/index";
@@ -11,7 +11,13 @@ import { type SiteStyleAccess } from "./siteStyleAccess";
11
11
  import { type PreviewThemeRuntime } from "./themeRuntime";
12
12
  export type PreviewShellLayoutProps = {
13
13
  children: ReactNode;
14
+ /** Canonical site theme — persistence/configurator base, never page-adapted. */
14
15
  theme: Theme;
16
+ /**
17
+ * Page-adapted theme for rendering the preview document. Render-only;
18
+ * falls back to the canonical theme when absent.
19
+ */
20
+ renderTheme?: Theme | null;
15
21
  surfaceId: SurfaceId;
16
22
  siteId: string;
17
23
  dashboardBaseUrl?: string | null;
@@ -33,16 +39,14 @@ export type PreviewShellLayoutProps = {
33
39
  themeSelectionHeaderLookId?: HeaderLookId | null;
34
40
  themeSelectionFooterLookId?: FooterLookId | null;
35
41
  themeSelectionHeaderContext?: Partial<HeaderSelectionContext>;
36
- supabaseUrl?: string;
37
42
  isSiteLaunched: boolean;
38
43
  maintenanceModeEnabled: boolean;
39
44
  entrySubrouteContext?: EntrySubrouteContextData | null;
40
45
  assistantPanel?: ReactNode;
41
46
  sdkConfig?: SdkConfigForBlockPicker | null;
42
- mediaAssets?: MediaAssetIndexItem[];
43
47
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
44
48
  themeRuntime?: PreviewThemeRuntime;
45
49
  siteStyleAccess?: SiteStyleAccess;
46
50
  onFooterSaved?: () => void;
47
51
  };
48
- export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, onFooterSaved, }: PreviewShellLayoutProps): React.JSX.Element;
52
+ export declare function PreviewShellLayout({ children, theme, renderTheme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, bookingOfferingPresets, themeRuntime, siteStyleAccess, onFooterSaved, }: PreviewShellLayoutProps): React.JSX.Element;