@riverbankcms/sdk 0.107.0 → 0.109.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 (256) hide show
  1. package/README.md +21 -1
  2. package/dist/{PreviewEditorSidebar-DpAbAl08.mjs → PreviewEditorSidebar-DWqwfy3_.mjs} +48 -28
  3. package/dist/{PreviewEditorUI-O7cn6Xxv.mjs → PreviewEditorUI-B7OL4sfR.mjs} +10 -9
  4. package/dist/{PreviewQueryProvider-D0tnKl0t.mjs → PreviewQueryProvider-D0y2l8JN.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CVB7urtl.mjs → SdkPreviewModeRuntime-D8Gt9Gbe.mjs} +633 -220
  6. package/dist/{SiteChromeCustomizeContext-C_sizso-.mjs → SiteChromeCustomizeContext-DUpalEdL.mjs} +5764 -1556
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +15383 -11388
  8. package/dist/_dts/api/src/blocks.d.ts +41 -7
  9. package/dist/_dts/api/src/bookingAdjustments.d.ts +5 -0
  10. package/dist/_dts/api/src/bookingOperations.d.ts +4 -0
  11. package/dist/_dts/api/src/bookingRecords.d.ts +177 -127
  12. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
  13. package/dist/_dts/api/src/cache-tags.d.ts +3 -0
  14. package/dist/_dts/api/src/common/envelope.d.ts +7 -0
  15. package/dist/_dts/api/src/contentRuntime.d.ts +19 -1
  16. package/dist/_dts/api/src/courses.d.ts +1 -0
  17. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +5 -5
  18. package/dist/_dts/api/src/endpoints.d.ts +134 -0
  19. package/dist/_dts/api/src/footer-settings.d.ts +1 -0
  20. package/dist/_dts/api/src/footerSettings.d.ts +8 -0
  21. package/dist/_dts/api/src/index.d.ts +7 -4
  22. package/dist/_dts/api/src/navigation/contracts.d.ts +3 -3
  23. package/dist/_dts/api/src/participantMessaging.d.ts +18 -12
  24. package/dist/_dts/api/src/previewContentContract.d.ts +4 -0
  25. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  26. package/dist/_dts/api/src/sdkContracts.d.ts +309 -1
  27. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  28. package/dist/_dts/api/src/siteInfrastructure.d.ts +13 -0
  29. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +144 -60
  30. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +35 -1
  31. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +74 -28
  32. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientField.d.ts +9 -0
  33. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +3 -4
  34. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
  35. package/dist/_dts/blocks/src/index.d.ts +1 -1
  36. package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +0 -1
  37. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -0
  38. package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +3 -0
  39. package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +3 -0
  40. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +3 -0
  41. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +1 -22
  42. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +3 -0
  43. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -22
  44. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -0
  45. package/dist/_dts/blocks/src/system/blocks/form.d.ts +3 -0
  46. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +3 -0
  47. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +3 -0
  48. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +3 -0
  49. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +50 -0
  50. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +9 -48
  51. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +3 -0
  52. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  53. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +3 -0
  54. package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +3 -0
  55. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  56. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +16 -6
  57. package/dist/_dts/blocks/src/system/defineBlock.d.ts +9 -1
  58. package/dist/_dts/blocks/src/system/fields/ctas.d.ts +8 -0
  59. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -1
  60. package/dist/_dts/blocks/src/system/icons/social.d.ts +5 -0
  61. package/dist/_dts/blocks/src/system/icons/svg.d.ts +1 -0
  62. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +33 -2
  63. package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +13 -0
  64. package/dist/_dts/blocks/src/system/node/fragments/footerNav.d.ts +2 -0
  65. package/dist/_dts/blocks/src/system/node/fragments/styledContainer.d.ts +4 -4
  66. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +3 -12
  67. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
  69. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  70. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  71. package/dist/_dts/blocks/src/system/types/link.d.ts +3 -3
  72. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +14 -0
  73. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +27 -8
  74. package/dist/_dts/content-editor/src/footerComposer.d.ts +56 -0
  75. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +1 -1
  76. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +5 -5
  77. package/dist/_dts/content-editor/src/index.d.ts +2 -0
  78. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +3 -1
  79. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +20 -36
  80. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +5 -1
  81. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +11 -0
  82. package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +31 -0
  83. package/dist/_dts/content-model/src/content-types/scaffold.d.ts +58 -0
  84. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  85. package/dist/_dts/content-model/src/content-types/sentinels.d.ts +36 -0
  86. package/dist/_dts/content-model/src/definitions/shared.d.ts +3 -0
  87. package/dist/_dts/content-model/src/index.d.ts +3 -0
  88. package/dist/_dts/core/src/booking-date-time.d.ts +8 -0
  89. package/dist/_dts/core/src/branded.d.ts +3 -0
  90. package/dist/_dts/core/src/editor-state.d.ts +4 -0
  91. package/dist/_dts/core/src/footer-composition.d.ts +143 -0
  92. package/dist/_dts/core/src/index.d.ts +2 -0
  93. package/dist/_dts/core/src/public-profile.d.ts +73 -0
  94. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +221 -205
  95. package/dist/_dts/db/src/schemas/forms.d.ts +10 -10
  96. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +5 -0
  97. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -0
  98. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -1
  99. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +2 -1
  100. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +2 -1
  101. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +10 -0
  102. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  103. package/dist/_dts/media-core/src/fileMimeDetection.d.ts +16 -0
  104. package/dist/_dts/media-core/src/fileStorage.d.ts +8 -0
  105. package/dist/_dts/media-core/src/storagePathDomain.d.ts +2 -0
  106. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +3 -0
  107. package/dist/_dts/path-utils/src/index.d.ts +5 -0
  108. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -0
  109. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +5 -0
  110. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  111. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
  112. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
  113. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
  114. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -0
  115. package/dist/_dts/preview-next/src/client/preview/previewErrorMessages.d.ts +4 -0
  116. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
  117. package/dist/_dts/sdk/src/cli/commands/audit.d.ts +1 -1
  118. package/dist/_dts/sdk/src/cli/commands/compare.d.ts +1 -1
  119. package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +1 -1
  120. package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +18 -0
  121. package/dist/_dts/sdk/src/cli/commands/entry.d.ts +15 -0
  122. package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +2 -2
  123. package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +1 -1
  124. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -0
  125. package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +1 -1
  126. package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +3 -0
  127. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +12 -1
  128. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +1 -0
  129. package/dist/_dts/sdk/src/cli/commands/verify.d.ts +1 -0
  130. package/dist/_dts/sdk/src/cli/content/reader.d.ts +1 -0
  131. package/dist/_dts/sdk/src/cli/helpers.d.ts +22 -1
  132. package/dist/_dts/sdk/src/cli/index.d.ts +4 -0
  133. package/dist/_dts/sdk/src/cli/output.d.ts +88 -0
  134. package/dist/_dts/sdk/src/cli/program.d.ts +29 -0
  135. package/dist/_dts/sdk/src/cli/push-config.d.ts +1 -1
  136. package/dist/_dts/sdk/src/client/management/blocks.d.ts +14 -1
  137. package/dist/_dts/sdk/src/client/management/catalog.d.ts +10 -0
  138. package/dist/_dts/sdk/src/client/management/http.d.ts +7 -1
  139. package/dist/_dts/sdk/src/client/management/index.d.ts +2 -1
  140. package/dist/_dts/sdk/src/client/management/types.d.ts +58 -20
  141. package/dist/_dts/sdk/src/config/content-types.d.ts +2 -0
  142. package/dist/_dts/sdk/src/config/content-validation.d.ts +4 -0
  143. package/dist/_dts/sdk/src/date-time/index.d.ts +68 -0
  144. package/dist/_dts/sdk/src/navigation/index.d.ts +2 -0
  145. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -2
  146. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -1
  147. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
  148. package/dist/_dts/sdk/src/version.d.ts +1 -1
  149. package/dist/_dts/site-commands/src/commands.d.ts +900 -827
  150. package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
  151. package/dist/_dts/theme-core/src/buttons/core.d.ts +15 -46
  152. package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +147 -0
  153. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +2 -3
  154. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  156. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  157. package/dist/_dts/theme-core/src/buttons/personalities/two-tone-pill.d.ts +17 -0
  158. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +45 -33
  159. package/dist/_dts/theme-core/src/buttons/presets.d.ts +4 -25
  160. package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +100 -0
  161. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +16 -0
  162. package/dist/_dts/theme-core/src/buttons/types.d.ts +104 -86
  163. package/dist/_dts/theme-core/src/cards/types.d.ts +16 -16
  164. package/dist/_dts/theme-core/src/footer/mode.d.ts +15 -0
  165. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  166. package/dist/_dts/theme-core/src/gradients/presets.d.ts +200 -8
  167. package/dist/_dts/theme-core/src/gradients/utils.d.ts +6 -2
  168. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  169. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +117 -150
  170. package/dist/_dts/theme-core/src/mock-themes/modern-minimal.d.ts +1 -1
  171. package/dist/_dts/theme-core/src/navigation/types.d.ts +3 -3
  172. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -2
  173. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +5 -8
  174. package/dist/_dts/theme-core/src/palette/index.d.ts +0 -1
  175. package/dist/_dts/theme-core/src/schema.d.ts +1264 -138
  176. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  177. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +10 -10
  178. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +12 -1
  179. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +3 -2
  180. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +13 -6
  181. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +29 -8
  182. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +15 -0
  183. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +2 -2
  184. package/dist/cli/index.mjs +68552 -66955
  185. package/dist/cli/init-docs/content/cli-reference.md +50 -7
  186. package/dist/cli/init-docs/content/content-management.md +7 -4
  187. package/dist/cli/init-docs/content/workflow-publish.md +5 -1
  188. package/dist/client/{DiscountCodeDisclosure-BwGkvmVH.mjs → DiscountCodeDisclosure-DU1ygxU2.mjs} +1 -1
  189. package/dist/client/{EventCombined.client-JnWE6Hzc.mjs → EventCombined.client-DB5zagCo.mjs} +3 -3
  190. package/dist/client/{EventListing.client-DQewc_kg.mjs → EventListing.client-CTX9JHBL.mjs} +2 -2
  191. package/dist/client/{LeafletStaticMap-DPAU3SFt.mjs → LeafletStaticMap-BYImhgiB.mjs} +1 -1
  192. package/dist/client/{MagicLinkForm-D4kpWCbW.mjs → MagicLinkForm-CRkw_M3l.mjs} +2 -2
  193. package/dist/client/{StepIndicator-CBlkb4rA.mjs → StepIndicator-BnmVBJJh.mjs} +2 -2
  194. package/dist/client/{accordion-DAIBVpTS.mjs → accordion-CeGreumd.mjs} +1 -1
  195. package/dist/client/{bookingForm-DZ-4l5_1.mjs → bookingForm-CSzFNrpN.mjs} +6 -6
  196. package/dist/client/bookings.mjs +637 -328
  197. package/dist/client/{buttons-DJgynGHQ.mjs → buttons-DoFV7KDL.mjs} +618 -306
  198. package/dist/client/{carousel-D-SLfX8r.mjs → carousel-B2jDtogf.mjs} +1 -1
  199. package/dist/client/{cart-CEgbgJhX.mjs → cart-D-jZ-vaY.mjs} +3 -3
  200. package/dist/client/{checkout-CXWrCRAA.mjs → checkout-Dza-LA7N.mjs} +3 -3
  201. package/dist/client/client.mjs +2497 -1216
  202. package/dist/client/{colorStyles-jZS6KfkP.mjs → colorStyles-CrgzoXsm.mjs} +1 -30
  203. package/dist/client/{courseRegistration-DVmLrRVz.mjs → courseRegistration-TYkNychb.mjs} +7 -7
  204. package/dist/client/{eventCalendar-DCuyPY_c.mjs → eventCalendar-BI_90SsT.mjs} +5 -5
  205. package/dist/client/{eventCombined-kP2CA2D4.mjs → eventCombined-mNrpryE9.mjs} +2 -2
  206. package/dist/client/{eventDetails-DU0LeF5e.mjs → eventDetails-D4GVlCIY.mjs} +3 -3
  207. package/dist/client/{eventListing-CcHF87BI.mjs → eventListing-YhKN018y.mjs} +2 -2
  208. package/dist/client/{eventRegistration-DJnR0yFH.mjs → eventRegistration-CdHGtilr.mjs} +7 -7
  209. package/dist/client/foregroundContract-xICPq59x.mjs +31 -0
  210. package/dist/client/{form-CH1lCusH.mjs → form-AcAL45rA.mjs} +2 -2
  211. package/dist/client/{headerSection-CBPFZoku.mjs → headerSection-uEC52ueD.mjs} +3 -3
  212. package/dist/client/hooks.mjs +1249 -841
  213. package/dist/client/{locationMap-Cx1hBg5n.mjs → locationMap-_wJDSUYe.mjs} +3 -3
  214. package/dist/client/{media-DHtSxS5V.mjs → media-BK0O3b-U.mjs} +3 -2
  215. package/dist/client/{newsletterForm-1ZL_ti9u.mjs → newsletterForm-DrArsb2B.mjs} +2 -2
  216. package/dist/client/{pricing-BIbzmV0G.mjs → pricing-BSYVghwo.mjs} +1 -1
  217. package/dist/client/{productDetail-BTh5gHBV.mjs → productDetail-Dyk90sMs.mjs} +3 -3
  218. package/dist/client/{productList-Cc7OMrqN.mjs → productList-BCKThwAI.mjs} +3 -3
  219. package/dist/client/{propsDecoder-oR-M-ISN.mjs → propsDecoder-CkXxkdSR.mjs} +96 -33
  220. package/dist/client/rendering/client.mjs +1278 -523
  221. package/dist/client/rendering/islands.mjs +19 -19
  222. package/dist/client/rendering.mjs +2308 -1028
  223. package/dist/client/{shop-CQ_YbCnn.mjs → shop-DeltVH10.mjs} +6 -6
  224. package/dist/client/{shop-commerce-BM-AoD3M.mjs → shop-commerce-BD9Jsm2Z.mjs} +6 -6
  225. package/dist/client/{shop-commerce-store-DFMQhU5p.mjs → shop-commerce-store-CmXD6FDS.mjs} +1 -1
  226. package/dist/client/{shopShared-D0SKO2Cu.mjs → shopShared-B8v-lH_F.mjs} +2 -2
  227. package/dist/client/{useDiscountCodeUi-CrG4_ARt.mjs → useDiscountCodeUi-DbWJN8ld.mjs} +1 -1
  228. package/dist/client/{useEventFilters-CxK8Fekl.mjs → useEventFilters-EJIMUnqT.mjs} +46 -69
  229. package/dist/client/{usePolling-jcVryNgZ.mjs → usePolling-Cmh14fc7.mjs} +2 -2
  230. package/dist/preview-next/before-render.mjs +213 -0
  231. package/dist/preview-next/client/runtime.mjs +4 -4
  232. package/dist/preview-next/middleware.mjs +213 -0
  233. package/dist/{previewAuthStore-BPcJPzdz.mjs → previewAuthStore-CTO7CRPk.mjs} +213 -0
  234. package/dist/{sdk-runtime-C39Rsk-x.mjs → sdk-runtime-Dou0GAav.mjs} +2 -2
  235. package/dist/{separator-BoMSQnsP.mjs → separator-CI5wZNXT.mjs} +1 -1
  236. package/dist/server/components.mjs +2370 -1132
  237. package/dist/server/config-validation.mjs +1256 -842
  238. package/dist/server/config.mjs +1256 -843
  239. package/dist/server/data.mjs +1249 -841
  240. package/dist/server/date-time.mjs +386 -0
  241. package/dist/server/index.mjs +214 -1
  242. package/dist/server/navigation.mjs +9 -3
  243. package/dist/server/next.mjs +3421 -1949
  244. package/dist/server/page-converter.mjs +1236 -659
  245. package/dist/server/prebuild.mjs +1 -1
  246. package/dist/server/rendering/server.mjs +2074 -1060
  247. package/dist/server/rendering.mjs +2370 -1132
  248. package/dist/server/routing.mjs +1543 -1062
  249. package/dist/server/server.mjs +1464 -843
  250. package/dist/server/theme-bridge.mjs +1581 -474
  251. package/dist/server/theme.mjs +614 -305
  252. package/dist/styles/index.css +12 -1
  253. package/package.json +7 -1
  254. package/dist/_dts/theme-core/src/buttons/presets/types.d.ts +0 -88
  255. package/dist/_dts/theme-core/src/buttons/utils/contrast.d.ts +0 -38
  256. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +0 -57
@@ -364,12 +364,12 @@ export declare const formFieldSchema: z.ZodObject<{
364
364
  date: "date";
365
365
  time: "time";
366
366
  email: "email";
367
+ url: "url";
367
368
  text: "text";
368
369
  textarea: "textarea";
369
370
  select: "select";
370
371
  checkbox: "checkbox";
371
372
  radio: "radio";
372
- url: "url";
373
373
  consent: "consent";
374
374
  tel: "tel";
375
375
  }>;
@@ -425,12 +425,12 @@ declare const bookingQuestionScalarFieldSchema: z.ZodObject<{
425
425
  date: "date";
426
426
  time: "time";
427
427
  email: "email";
428
+ url: "url";
428
429
  text: "text";
429
430
  textarea: "textarea";
430
431
  select: "select";
431
432
  checkbox: "checkbox";
432
433
  radio: "radio";
433
- url: "url";
434
434
  tel: "tel";
435
435
  }>;
436
436
  }, z.core.$strict>;
@@ -481,12 +481,12 @@ export declare const bookingQuestionFieldSchema: z.ZodDiscriminatedUnion<[z.ZodO
481
481
  date: "date";
482
482
  time: "time";
483
483
  email: "email";
484
+ url: "url";
484
485
  text: "text";
485
486
  textarea: "textarea";
486
487
  select: "select";
487
488
  checkbox: "checkbox";
488
489
  radio: "radio";
489
- url: "url";
490
490
  tel: "tel";
491
491
  }>;
492
492
  }, z.core.$strict>, z.ZodObject<{
@@ -540,12 +540,12 @@ export declare const bookingQuestionsSectionSchema: z.ZodObject<{
540
540
  date: "date";
541
541
  time: "time";
542
542
  email: "email";
543
+ url: "url";
543
544
  text: "text";
544
545
  textarea: "textarea";
545
546
  select: "select";
546
547
  checkbox: "checkbox";
547
548
  radio: "radio";
548
- url: "url";
549
549
  tel: "tel";
550
550
  }>;
551
551
  }, z.core.$strict>, z.ZodObject<{
@@ -602,12 +602,12 @@ export declare const bookingQuestionsDetailedSchemaSchema: z.ZodObject<{
602
602
  date: "date";
603
603
  time: "time";
604
604
  email: "email";
605
+ url: "url";
605
606
  text: "text";
606
607
  textarea: "textarea";
607
608
  select: "select";
608
609
  checkbox: "checkbox";
609
610
  radio: "radio";
610
- url: "url";
611
611
  tel: "tel";
612
612
  }>;
613
613
  }, z.core.$strict>, z.ZodObject<{
@@ -646,12 +646,12 @@ export declare const formSchemaSchema: z.ZodObject<{
646
646
  date: "date";
647
647
  time: "time";
648
648
  email: "email";
649
+ url: "url";
649
650
  text: "text";
650
651
  textarea: "textarea";
651
652
  select: "select";
652
653
  checkbox: "checkbox";
653
654
  radio: "radio";
654
- url: "url";
655
655
  consent: "consent";
656
656
  tel: "tel";
657
657
  }>;
@@ -705,12 +705,12 @@ export declare const bookingQuestionsFlatSchemaSchema: z.ZodObject<{
705
705
  date: "date";
706
706
  time: "time";
707
707
  email: "email";
708
+ url: "url";
708
709
  text: "text";
709
710
  textarea: "textarea";
710
711
  select: "select";
711
712
  checkbox: "checkbox";
712
713
  radio: "radio";
713
- url: "url";
714
714
  tel: "tel";
715
715
  }>;
716
716
  }, z.core.$strict>, z.ZodObject<{
@@ -763,12 +763,12 @@ export declare const bookingQuestionsStoredSchemaSchema: z.ZodUnion<readonly [z.
763
763
  date: "date";
764
764
  time: "time";
765
765
  email: "email";
766
+ url: "url";
766
767
  text: "text";
767
768
  textarea: "textarea";
768
769
  select: "select";
769
770
  checkbox: "checkbox";
770
771
  radio: "radio";
771
- url: "url";
772
772
  tel: "tel";
773
773
  }>;
774
774
  }, z.core.$strict>, z.ZodObject<{
@@ -824,12 +824,12 @@ export declare const bookingQuestionsStoredSchemaSchema: z.ZodUnion<readonly [z.
824
824
  date: "date";
825
825
  time: "time";
826
826
  email: "email";
827
+ url: "url";
827
828
  text: "text";
828
829
  textarea: "textarea";
829
830
  select: "select";
830
831
  checkbox: "checkbox";
831
832
  radio: "radio";
832
- url: "url";
833
833
  tel: "tel";
834
834
  }>;
835
835
  }, z.core.$strict>, z.ZodObject<{
@@ -900,12 +900,12 @@ export declare const createFormPayloadSchema: z.ZodObject<{
900
900
  date: "date";
901
901
  time: "time";
902
902
  email: "email";
903
+ url: "url";
903
904
  text: "text";
904
905
  textarea: "textarea";
905
906
  select: "select";
906
907
  checkbox: "checkbox";
907
908
  radio: "radio";
908
- url: "url";
909
909
  consent: "consent";
910
910
  tel: "tel";
911
911
  }>;
@@ -26,6 +26,11 @@ export type RichTextToolbarLayout = Readonly<{
26
26
  kind: 'inline';
27
27
  tone: 'light' | 'dark';
28
28
  visibility: RichTextToolbarVisibility;
29
+ }> | Readonly<{
30
+ kind: 'external';
31
+ tone: 'light' | 'dark';
32
+ visibility: RichTextToolbarVisibility;
33
+ renderHost: (toolbar: ReactNode) => ReactNode;
29
34
  }> | Readonly<{
30
35
  kind: 'chrome';
31
36
  tone: 'light' | 'dark';
@@ -54,6 +54,7 @@ export type BlockEditorProps = {
54
54
  enableDeletion?: boolean;
55
55
  onBlockSave?: (blockId: string, content: Record<string, unknown>) => void;
56
56
  onBlocksChange?: (blocks: BlockItem[]) => void;
57
+ onStructuralRevisionChange?: (revision: string) => void;
57
58
  theme?: Theme | null;
58
59
  widgetOverrides?: Record<string, FieldWidgetComponent>;
59
60
  headerLeftSlot?: ReactNode;
@@ -10,7 +10,7 @@ type UiStore = {
10
10
  };
11
11
  };
12
12
  };
13
- export declare function useBlockCreation({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, uiStore, }: {
13
+ export declare function useBlockCreation({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, uiStore, onStructuralRevisionChange, }: {
14
14
  allowCreation: boolean;
15
15
  apiClient: ApiClient;
16
16
  siteId: string;
@@ -20,6 +20,7 @@ export declare function useBlockCreation({ allowCreation, apiClient, siteId, own
20
20
  onBlocksChange?: (blocks: BlockItem[]) => void;
21
21
  triggerFocus?: (target: BlockFocusTarget) => void;
22
22
  uiStore?: UiStore | null;
23
+ onStructuralRevisionChange?: (revision: string) => void;
23
24
  }): {
24
25
  pickerOpen: boolean;
25
26
  creatingBlockName: string | null;
@@ -9,7 +9,7 @@ type UiStore = {
9
9
  };
10
10
  };
11
11
  };
12
- export declare function useBlockDuplication({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, setErrorMessage, uiStore, }: {
12
+ export declare function useBlockDuplication({ allowCreation, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, triggerFocus, setErrorMessage, uiStore, onStructuralRevisionChange, }: {
13
13
  allowCreation: boolean;
14
14
  apiClient: ApiClient;
15
15
  siteId: string;
@@ -20,6 +20,7 @@ export declare function useBlockDuplication({ allowCreation, apiClient, siteId,
20
20
  triggerFocus?: (target: BlockFocusTarget) => void;
21
21
  setErrorMessage: (msg: string | null) => void;
22
22
  uiStore?: UiStore | null;
23
+ onStructuralRevisionChange?: (revision: string) => void;
23
24
  }): {
24
25
  duplicatingBlockId: string | null;
25
26
  duplicateBlock: (blockId: string) => Promise<void>;
@@ -15,7 +15,7 @@ type UiStore = {
15
15
  };
16
16
  subscribe: (listener: () => void) => () => void;
17
17
  };
18
- export declare function useBlockReorder({ allowReordering, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, setErrorMessage, uiStore, }: {
18
+ export declare function useBlockReorder({ allowReordering, apiClient, siteId, owner, blockList, setBlockList, onBlocksChange, setErrorMessage, uiStore, onStructuralRevisionChange, }: {
19
19
  allowReordering: boolean;
20
20
  apiClient: ApiClient;
21
21
  siteId: string;
@@ -25,6 +25,7 @@ export declare function useBlockReorder({ allowReordering, apiClient, siteId, ow
25
25
  onBlocksChange?: (blocks: BlockItem[]) => void;
26
26
  setErrorMessage: (msg: string | null) => void;
27
27
  uiStore?: UiStore | null;
28
+ onStructuralRevisionChange?: (revision: string) => void;
28
29
  }): {
29
30
  reorderId: string | null;
30
31
  handleMove: (blockId: string, direction: number) => void;
@@ -7,6 +7,11 @@ export type BlockEditorOwner = Readonly<{
7
7
  type: string;
8
8
  entryId: string;
9
9
  slotKey: string;
10
+ }> | Readonly<{
11
+ kind: 'surface-slot';
12
+ pageSurfaceId: string;
13
+ slotKey: string;
14
+ compositionHash: string;
10
15
  }>;
11
16
  export type CreateEditableBlockInput = Readonly<{
12
17
  kind: string;
@@ -18,6 +23,10 @@ export declare function blockEditorOwnerKey(owner: BlockEditorOwner): string;
18
23
  export declare function createEditableBlockForOwner(apiClient: ApiClient, siteId: string, owner: BlockEditorOwner, input: CreateEditableBlockInput): Promise<{
19
24
  ok: boolean;
20
25
  block: Record<string, unknown>;
26
+ } | {
27
+ ok: boolean;
28
+ block: import("../../../api/src/index").BlockListItem;
29
+ compositionHash: string;
21
30
  }>;
22
31
  export declare function reorderEditableBlocksForOwner(apiClient: ApiClient, siteId: string, owner: BlockEditorOwner, blockIds: string[]): Promise<{
23
32
  ok: boolean;
@@ -25,3 +34,4 @@ export declare function reorderEditableBlocksForOwner(apiClient: ApiClient, site
25
34
  export declare function deleteEditableBlockForOwner(apiClient: ApiClient, siteId: string, owner: BlockEditorOwner, blockId: string): Promise<{
26
35
  ok: boolean;
27
36
  }>;
37
+ export declare function surfaceCompositionHashFromResponse(response: unknown): string | null;
@@ -7,6 +7,7 @@ export type BlockItem = {
7
7
  draftContent?: Record<string, unknown> | null;
8
8
  publishedContent?: Record<string, unknown> | null;
9
9
  bindings?: Record<string, unknown> | null;
10
+ optimisticHash?: string | null;
10
11
  };
11
12
  export type DraftBlockSnapshot = EditorStructuralDraftSnapshot;
12
13
  /**
@@ -8,3 +8,19 @@ export type MagicDetectedMimeType = 'image/png' | 'image/jpeg' | 'image/gif' | '
8
8
  */
9
9
  export declare function detectMimeTypeFromBuffer(buffer: Uint8Array | null | undefined): MagicDetectedMimeType | undefined;
10
10
  export declare function bufferAsLatin1(buffer: Uint8Array, maxBytes?: number): string;
11
+ /**
12
+ * Recognizes an SVG document by its leading element only.
13
+ *
14
+ * Within a bounded window we skip an optional UTF-8 BOM, whitespace, and any XML
15
+ * prolog constructs (XML declaration / processing instructions, comments, and a
16
+ * DOCTYPE) and then require the very first element to be `<svg>`. Requiring the
17
+ * root element — rather than scanning for `<svg` anywhere — is the false-positive
18
+ * guard: an HTML document that merely embeds inline `<svg>` further down (its
19
+ * first element is `<html>`/`<body>`/etc.) is deliberately NOT recognized as SVG.
20
+ *
21
+ * DOCTYPE is skipped rather than rejected here so a DOCTYPE-bearing SVG is still
22
+ * recognized and routed to the finalize sanitizer (which rejects DOCTYPE/entities
23
+ * outright) instead of failing earlier as an opaque MIME mismatch. This probe is
24
+ * intentionally trusted only through the contract-gated `svg-fallback` strategy.
25
+ */
26
+ export declare function looksLikeSvgBuffer(buffer: Uint8Array | null | undefined): boolean;
@@ -9,6 +9,7 @@ export declare const PUBLIC_SITE_FILE_STORAGE_BUCKETS: readonly [StorageBucketNa
9
9
  export declare const FILE_UPLOAD_STAGING_PREFIX = "temp-file-uploads";
10
10
  export declare const DURABLE_FILE_STORAGE_PREFIX = "sites";
11
11
  export declare const DURABLE_FILE_FOLDER = "files";
12
+ export declare const SDK_UPLOAD_STAGING_PREFIX = "sdk-staging";
12
13
  export declare const PRIVATE_SITE_FILE_BUCKET_MIME_TYPES: readonly ["application/pdf", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "text/plain", "application/rtf", "text/rtf", "image/jpeg", "image/png", "image/webp", "image/gif", "image/avif", "image/heic", "image/heif", "image/svg+xml", "text/csv", "application/csv", "application/vnd.ms-excel", "application/zip", "application/x-zip-compressed", "audio/mpeg", "audio/mp4", "audio/wav", "audio/x-wav", "audio/ogg", "audio/webm", "audio/flac", "video/mp4", "video/webm", "video/quicktime"];
13
14
  export declare const TEMP_UPLOAD_BUCKET_MIME_TYPES: readonly ["application/pdf", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "text/plain", "application/rtf", "text/rtf", "image/jpeg", "image/png", "image/webp", "image/gif", "image/avif", "image/heic", "image/heif", "image/svg+xml", "text/csv", "application/csv", "application/vnd.ms-excel", "application/zip", "application/x-zip-compressed", "audio/mpeg", "audio/mp4", "audio/wav", "audio/x-wav", "audio/ogg", "audio/webm", "audio/flac", "video/mp4", "video/webm", "video/quicktime", "font/woff2", "application/font-woff2", "application/x-font-woff2", "application/octet-stream"];
14
15
  export type FileStoragePathError = 'unsafe-path-segment';
@@ -39,3 +40,10 @@ export declare function buildStagedUploadStoragePath(input: StagedUploadStorageP
39
40
  */
40
41
  export declare function buildDurableFileStoragePath(input: DurableFileStoragePathInput): Result<SiteScopedStoragePath, FileStoragePathError>;
41
42
  export declare function parseStoragePath(value: string): Result<StoragePath, FileStoragePathError>;
43
+ /**
44
+ * Builds the private staging path for an SDK-management upload from its intended
45
+ * durable relative path: `sdk-staging/{siteId}/{durableRelativePath}`. Finalize
46
+ * promotes the object from here (in `temp-uploads`) to the public bucket only
47
+ * after verification + sanitization.
48
+ */
49
+ export declare function buildSdkStagedStoragePath(siteId: SiteId, durableRelativePath: string): Result<StoragePath, FileStoragePathError>;
@@ -22,6 +22,8 @@ export type StoragePathParseError = {
22
22
  tag: 'DOUBLE_SLASH';
23
23
  } | {
24
24
  tag: 'TRAVERSAL';
25
+ } | {
26
+ tag: 'PERCENT_ENCODING';
25
27
  } | {
26
28
  tag: 'SITE_SCOPED_PATH';
27
29
  } | {
@@ -17,6 +17,9 @@ export type UploadVerificationStrategy = Readonly<{
17
17
  }> | Readonly<{
18
18
  tag: 'rtf-fallback';
19
19
  detectedMimeType: 'application/rtf';
20
+ }> | Readonly<{
21
+ tag: 'svg-fallback';
22
+ detectedMimeType: 'image/svg+xml';
20
23
  }>;
21
24
  export type AcceptedUploadKindContract = Readonly<{
22
25
  kind: FileKind;
@@ -1,4 +1,9 @@
1
1
  export type PathSegment = string | number;
2
+ export declare class UnsafePathSegmentError extends Error {
3
+ readonly segment: string;
4
+ constructor(segment: string);
5
+ }
6
+ export declare function isUnsafePathSegment(segment: PathSegment): boolean;
2
7
  export declare function parsePath(path: string | Array<PathSegment>): Array<PathSegment>;
3
8
  export declare function segmentsToPath(segments: Array<PathSegment>): string | undefined;
4
9
  export declare function siblingPath(path: string, siblingFieldPath: string): string;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type BookingOfferingPresetSummary, type Theme } from '../../../../blocks/src/index';
3
3
  import { type BackgroundColorPalette } from '../../../../blocks/src/system/customize/backgrounds';
4
+ import { type GradientPresetId } from '../../../../theme-core/src/gradients/index';
4
5
  import { type PreviewChromeFloatingPlacement } from '../preview/previewChromePlacement';
5
6
  export declare function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, theme, placement, }: {
6
7
  blockId: string;
@@ -10,4 +11,5 @@ export declare function BlockToolbar({ blockId, blockKind, content, bookingOffer
10
11
  theme?: Theme | null;
11
12
  placement?: PreviewChromeFloatingPlacement;
12
13
  }): React.JSX.Element;
14
+ export declare function gradientPreviewCss(gradientId: GradientPresetId): string;
13
15
  export declare function readBackgroundColorPaletteSnapshot(): BackgroundColorPalette | null;
@@ -18,4 +18,9 @@ export declare function PreviewChromeFloatingControl({ anchorSelector, anchorTar
18
18
  forceVisible?: boolean;
19
19
  children: ReactNode;
20
20
  }): React.JSX.Element;
21
+ export declare function PreviewChromeFloatingBar({ anchorSelector, gapPx, children, }: {
22
+ anchorSelector: string;
23
+ gapPx?: number;
24
+ children: ReactNode;
25
+ }): React.JSX.Element;
21
26
  export {};
@@ -59,6 +59,7 @@ export type PreviewEditorSidebarProps = {
59
59
  activeTab: PreviewEditorSidebarTab;
60
60
  onTabChange: (tab: PreviewEditorSidebarTab) => void;
61
61
  onClose: () => void;
62
+ onFooterSaved?: () => void;
62
63
  viewportMode: ViewportMode;
63
64
  viewportWidth: ViewportWidth;
64
65
  zoom: ZoomLevel;
@@ -66,4 +67,4 @@ export type PreviewEditorSidebarProps = {
66
67
  onViewportWidthChange: (width: ViewportWidth) => void;
67
68
  onZoomChange: (zoom: ZoomLevel) => void;
68
69
  };
69
- export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, designRowRequest, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
70
+ export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, designRowRequest, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, onFooterSaved, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
@@ -10,6 +10,7 @@ export type PreviewBlock = {
10
10
  draftContent?: Record<string, unknown> | null;
11
11
  publishedContent?: Record<string, unknown> | null;
12
12
  bindings?: Record<string, unknown> | null;
13
+ optimisticHash?: string | null;
13
14
  };
14
15
  export type PreviewPageMetadata = {
15
16
  draftTitle: string;
@@ -72,8 +72,9 @@ export type PreviewShellProps = {
72
72
  /** Hides site-style controls for runtimes without palette authority. */
73
73
  hideSiteStyleConfigurator?: boolean;
74
74
  baseFetch?: BaseFetch;
75
+ onFooterSaved?: () => void;
75
76
  };
76
- export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime, designEditorEligibility, hideSiteStyleConfigurator, baseFetch, }: PreviewShellProps): React.JSX.Element;
77
+ export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, 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;
77
78
  export declare function defaultDesignEditorEligibility(input: Readonly<{
78
79
  pageId: string | null;
79
80
  entryData?: PreviewContentEntryData | null;
@@ -45,5 +45,6 @@ export type PreviewShellLayoutProps = {
45
45
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
46
46
  themeRuntime?: PreviewThemeRuntime;
47
47
  siteStyleAccess?: SiteStyleAccess;
48
+ onFooterSaved?: () => void;
48
49
  };
49
- export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, }: PreviewShellLayoutProps): React.JSX.Element;
50
+ export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, onFooterSaved, }: PreviewShellLayoutProps): React.JSX.Element;
@@ -213,6 +213,7 @@ export declare function reconcilePaletteLibraryActive(state: StyleConfiguratorSt
213
213
  */
214
214
  export declare function rebasePaletteLibraryAuthority(state: StyleConfiguratorState, committedPalette: ResolvedPaletteSelection): StyleConfiguratorState;
215
215
  export declare function selectionSnapshotsEqual(a: SelectionSnapshot, b: SelectionSnapshot): boolean;
216
+ export declare function typographyObjectsEqual(a: ThemeTypography, b: ThemeTypography): boolean;
216
217
  type ModernRuntimePaletteState = Extract<RuntimePaletteState, Readonly<{
217
218
  authority: 'curated';
218
219
  }>> | Extract<RuntimePaletteState, Readonly<{
@@ -0,0 +1,4 @@
1
+ export declare const PREVIEW_DESIGN_SAVE_ERROR_MESSAGE = "We couldn\u2019t save that change just now. Please try again in a minute or two.";
2
+ export declare const PREVIEW_DESIGN_REFRESH_ERROR_MESSAGE = "We couldn\u2019t refresh the latest design just now. Your changes are still here. Please try again in a minute or two.";
3
+ export declare const PREVIEW_DESIGN_LOAD_ERROR_MESSAGE = "We couldn\u2019t load those design options just now. Please try again in a minute or two.";
4
+ export declare function reportPreviewDesignError(operation: string, error: unknown): void;
@@ -20,7 +20,7 @@ export type ApplySiteStyleSelectionBodyBuildResult = Readonly<{
20
20
  ok: false;
21
21
  error: Extract<PaletteApplyCommandPlan, {
22
22
  ok: false;
23
- }>['error'];
23
+ }>['error'] | 'no-selection-changes';
24
24
  }>;
25
25
  export declare function buildApplySiteStyleSelectionBody(input: Readonly<{
26
26
  base: SelectionSnapshot;
@@ -99,4 +99,4 @@ export declare function auditOrphanedEntries(ctx: Pick<AuditContext, 'localEntry
99
99
  export declare function auditContentTypes(localContentTypes: Set<string>, validContentTypes: Set<string>): AuditIssue[];
100
100
  export declare function auditEventReferences(events: LocalEvent[], ctx: Pick<AuditContext, 'localVenueRefs' | 'remoteVenueRefs' | 'localCategoryRefs' | 'remoteCategoryRefs' | 'localFormRefs' | 'remoteFormRefs'>): AuditIssue[];
101
101
  export declare function auditCourseReferences(courses: LocalCourse[], ctx: Pick<AuditContext, 'localVenueRefs' | 'remoteVenueRefs' | 'localCategoryRefs' | 'remoteCategoryRefs' | 'localFormRefs' | 'remoteFormRefs'>): AuditIssue[];
102
- export declare const auditCommand: Command;
102
+ export declare const createAuditCommand: () => Command;
@@ -58,5 +58,5 @@ export declare function compareLocalVsCms(localEntries: LocalEntry[], remoteEntr
58
58
  data: Record<string, unknown>;
59
59
  status: string;
60
60
  }>, contentType: string): ComparisonResult;
61
- export declare const compareCommand: Command;
61
+ export declare const createCompareCommand: () => Command;
62
62
  export {};
@@ -39,5 +39,5 @@ export declare function checkWorkingDirectoryClean(git: SimpleGit, prebuildOutpu
39
39
  * @internal Exported for testing
40
40
  */
41
41
  export declare function commitCacheIfChanged(git: SimpleGit, prebuildOutput: string): Promise<boolean>;
42
- export declare const deployCommand: Command;
42
+ export declare const createDeployCommand: () => Command;
43
43
  export {};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Drafts Command (Phase 7.3)
3
+ *
4
+ * Cross-type overview of pages and entries with pending (unpublished) changes.
5
+ * Consumes the SDK `pull.drafts()` operation (server-side `GET pull/drafts`),
6
+ * which is correctly server-filtered and fully enumerated — replacing the
7
+ * post-pagination `entry list --status draft` trap.
8
+ *
9
+ * Usage:
10
+ * riverbankcms drafts
11
+ * riverbankcms drafts --json
12
+ */
13
+ import { Command } from 'commander';
14
+ import type { PulledDrafts } from '../../client/management/types';
15
+ /** Flatten the drafts overview into unified table rows for human display. */
16
+ export declare function draftsToTableRows(drafts: PulledDrafts): string[][];
17
+ export declare const createDraftsCommand: () => Command;
18
+ export declare const draftsCommand: Command;
@@ -12,6 +12,7 @@
12
12
  * riverbankcms entry list <type> [--limit N] [--page N]
13
13
  */
14
14
  import { Command } from 'commander';
15
+ import { type EntryScaffold } from '../../../../content-model/src/index';
15
16
  import type { ManagementClient, ManagementEntry } from '../../client/management/types';
16
17
  import { type MediaValidationResult } from '../media/write-guard';
17
18
  export declare const ENTRY_LIST_COLUMNS: readonly ["id", "identifier", "slug", "status", "hasUnpublishedChanges", "updatedAt", "createdAt", "publishedAt", "title", "contentType"];
@@ -37,4 +38,18 @@ export declare function findEntryById(client: ManagementClient, contentType: str
37
38
  limit?: number;
38
39
  maxPages?: number;
39
40
  }): Promise<ManagementEntry | null>;
41
+ /**
42
+ * Resolve a scaffold for a content type from the discovery catalog (the field
43
+ * DSL), or an error listing the available keys. Sourced from
44
+ * `client.catalog.contentTypes()`, matching how `content-type list` resolves its
45
+ * source from the client. (An offline local-config fallback is not implemented:
46
+ * the normalized field DSL is only exposed over the catalog API, and
47
+ * `content-type list` likewise has no local fallback.)
48
+ */
49
+ export declare function resolveEntryScaffold(client: ManagementClient, contentType: string): Promise<{
50
+ scaffold: EntryScaffold;
51
+ } | {
52
+ error: string;
53
+ availableKeys: string[];
54
+ }>;
40
55
  export declare const entryCommand: Command;
@@ -9,5 +9,5 @@ interface InitDocsOptions {
9
9
  config?: string;
10
10
  }
11
11
  export declare function runInitDocs(options: InitDocsOptions, command: Command): Promise<void>;
12
- declare const initDocsCommand: Command;
13
- export { initDocsCommand };
12
+ export declare const createInitDocsCommand: () => Command;
13
+ export {};
@@ -47,4 +47,4 @@ export declare function categorizeEntries(entries: ManagementEntry[]): {
47
47
  * Exported for testing.
48
48
  */
49
49
  export declare function aggregateResults(results: PublishResult[]): Omit<PublishAllSummary, 'total'>;
50
- export declare const publishAllCommand: Command;
50
+ export declare const createPublishAllCommand: () => Command;
@@ -39,4 +39,5 @@ export declare function shouldPromptForOverwrite(opts: {
39
39
  force: boolean;
40
40
  yes: boolean;
41
41
  }): boolean;
42
+ export declare const createPullCommand: () => Command;
42
43
  export declare const pullCommand: Command;
@@ -16,4 +16,4 @@ export declare function displayDiff(params: {
16
16
  remoteContent: PulledContent;
17
17
  humanDiff?: boolean;
18
18
  mediaReport?: LocalMediaPushReport;
19
- }): void;
19
+ }): unknown;
@@ -5,7 +5,10 @@ export interface PushOptions {
5
5
  force?: boolean;
6
6
  forceUpdateAsset?: boolean;
7
7
  allowTruncated?: boolean;
8
+ /** @deprecated Use `--diff-detail` instead; folded into the `--json` envelope. */
8
9
  jsonDiff?: string;
10
+ /** Diff verbosity carried in the `--json` envelope: 'summary' (default) or 'full'. */
11
+ diffDetail?: string;
9
12
  withConfig?: boolean;
10
13
  withTheme?: boolean;
11
14
  syncMedia?: boolean;
@@ -7,6 +7,17 @@ import { type PushScope } from './push/consts';
7
7
  export interface PushExecutionResult {
8
8
  success: boolean;
9
9
  }
10
+ /**
11
+ * Single command-owned result for a push, assembled once at the end of the push
12
+ * command (finding 4). `executePushForEnv` writes the diff into `detail` and the
13
+ * sync outcome into `execution`; the command adds `verification` and emits the
14
+ * whole object exactly once, so no stage's result clobbers another's.
15
+ */
16
+ export interface PushResultAccumulator {
17
+ detail?: unknown;
18
+ execution?: unknown;
19
+ verification?: unknown;
20
+ }
10
21
  export declare function noContentFoundWarningDetails(contentDir: string): Readonly<{
11
22
  contentDir: string;
12
23
  expectedFiles: readonly string[];
@@ -39,5 +50,5 @@ export declare function executePushForEnv(output: OutputContext, target: EnvTarg
39
50
  jsonDiffMode?: JsonDiffMode | null;
40
51
  }, globalOpts: {
41
52
  json?: boolean;
42
- }): Promise<PushExecutionResult>;
53
+ }, resultSink?: PushResultAccumulator): Promise<PushExecutionResult>;
43
54
  export {};
@@ -1,2 +1,3 @@
1
1
  import { Command } from 'commander';
2
+ export declare function createSetupCommand(): Command;
2
3
  export declare const setupCommand: Command;
@@ -7,4 +7,5 @@
7
7
  * riverbankcms verify [--env=remote] [--config <path>]
8
8
  */
9
9
  import { Command } from 'commander';
10
+ export declare const createVerifyCommand: () => Command;
10
11
  export declare const verifyCommand: Command;
@@ -62,6 +62,7 @@ export interface LocalNavigationMenu {
62
62
  name: string;
63
63
  isPrimary?: boolean;
64
64
  isFooter?: boolean;
65
+ footerRole?: 'main' | 'legal-policy' | null;
65
66
  items: LocalNavigationItem[];
66
67
  }
67
68
  export interface LocalNavigation {
@@ -7,8 +7,29 @@
7
7
  import { Command } from 'commander';
8
8
  import type { SiteId } from '../../../core/src/index';
9
9
  import type { ManagementClient } from '../client/management/types';
10
- import { type OutputContext } from './output';
10
+ import { InvocationEnvelope, type OutputContext } from './output';
11
11
  import { type CliErrorContext } from './errors';
12
+ /**
13
+ * Run `fn` within a fresh invocation envelope. Returns the envelope so `runCli`
14
+ * can flush it and derive the exit code after the run completes (or fails).
15
+ */
16
+ export declare function runWithInvocation<T>(fn: (envelope: InvocationEnvelope) => Promise<T>): {
17
+ envelope: InvocationEnvelope;
18
+ done: Promise<T>;
19
+ };
20
+ /** The current invocation's envelope, if output is running inside `runCli`. */
21
+ export declare function currentInvocationEnvelope(): InvocationEnvelope | undefined;
22
+ /**
23
+ * Build the space-separated command path for the envelope's `command` field,
24
+ * excluding the root program name (e.g. `entry upsert`, `drafts`).
25
+ */
26
+ export declare function resolveCommandPath(command: Command): string;
27
+ /**
28
+ * Create an OutputContext bound to a command. In JSON mode it resolves the
29
+ * current invocation's envelope from the async context, so all output funnels
30
+ * into one document.
31
+ */
32
+ export declare function createOutputForCommand(command: Command): OutputContext;
12
33
  /**
13
34
  * Environment target for CLI operations.
14
35
  */
@@ -3,5 +3,9 @@
3
3
  *
4
4
  * CLI tools for SDK site developers.
5
5
  * Supports bidirectional content management: pull content from CMS and push content back.
6
+ *
7
+ * This module is the bin entry point: it loads env files, then runs the CLI via
8
+ * `runCli`, which owns the process exit code and guarantees exactly one JSON
9
+ * envelope per invocation under `--json`. The command tree lives in `program.ts`.
6
10
  */
7
11
  export {};