@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
@@ -0,0 +1,386 @@
1
+ //#region ../core/src/result.ts
2
+ function ok(value) {
3
+ return {
4
+ ok: true,
5
+ value
6
+ };
7
+ }
8
+ function err(error) {
9
+ return {
10
+ ok: false,
11
+ error
12
+ };
13
+ }
14
+ //#endregion
15
+ //#region ../core/src/booking-date-time.ts
16
+ const DEFAULT_LOCALE$1 = "en-US";
17
+ const DATE_TIME_FORMATTER_CACHE_LIMIT = 100;
18
+ const dateTimeFormatterCache$1 = /* @__PURE__ */ new Map();
19
+ const timeZoneValidityCache = /* @__PURE__ */ new Map();
20
+ function isValidTimeZone(timeZone) {
21
+ const cached = timeZoneValidityCache.get(timeZone);
22
+ if (cached !== void 0) return cached;
23
+ let isValid;
24
+ try {
25
+ new Intl.DateTimeFormat(DEFAULT_LOCALE$1, { timeZone }).format(/* @__PURE__ */ new Date());
26
+ isValid = true;
27
+ } catch {
28
+ isValid = false;
29
+ }
30
+ if (timeZoneValidityCache.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) timeZoneValidityCache.clear();
31
+ timeZoneValidityCache.set(timeZone, isValid);
32
+ return isValid;
33
+ }
34
+ function parseStrictBookingTimeZone(timeZone) {
35
+ if (typeof timeZone !== "string") return null;
36
+ const normalized = timeZone.trim();
37
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) return null;
38
+ return normalized;
39
+ }
40
+ function formatToPartsLookup(date, locale, timeZone, format) {
41
+ return new Map(getCachedDateTimeFormatter(locale, timeZone, format).formatToParts(date).map((part) => [part.type, part.value]));
42
+ }
43
+ function getCachedDateTimeFormatter(locale, timeZone, format) {
44
+ const key = `${locale}\u0000${timeZone}\u0000${JSON.stringify(Object.entries(format).sort(([left], [right]) => left.localeCompare(right)))}`;
45
+ const cached = dateTimeFormatterCache$1.get(key);
46
+ if (cached !== void 0) return cached;
47
+ const formatter = new Intl.DateTimeFormat(locale, {
48
+ ...format,
49
+ timeZone
50
+ });
51
+ if (dateTimeFormatterCache$1.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) dateTimeFormatterCache$1.clear();
52
+ dateTimeFormatterCache$1.set(key, formatter);
53
+ return formatter;
54
+ }
55
+ function parseUtcIsoDateTimeString(value) {
56
+ const normalized = value.trim();
57
+ const hasUtcSuffix = normalized.endsWith("Z");
58
+ const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
59
+ if (!hasUtcSuffix && !hasExplicitOffset) return err("missing-timezone-offset");
60
+ const date = new Date(normalized);
61
+ if (Number.isNaN(date.getTime())) return err("invalid-date-time");
62
+ return ok(date.toISOString());
63
+ }
64
+ function toUtcIsoDateTimeString(value) {
65
+ const parsed = parseUtcIsoDateTimeString(value);
66
+ if (!parsed.ok) {
67
+ const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
68
+ throw new Error(message);
69
+ }
70
+ return parsed.value;
71
+ }
72
+ function parseScheduledBookingDateTime(input) {
73
+ let startsAt;
74
+ try {
75
+ startsAt = toUtcIsoDateTimeString(input.startsAt);
76
+ } catch {
77
+ return {
78
+ ok: false,
79
+ field: "startsAt",
80
+ reason: "invalid_starts_at",
81
+ value: input.startsAt
82
+ };
83
+ }
84
+ const timeZone = parseStrictBookingTimeZone(input.timeZone);
85
+ if (timeZone === null) return {
86
+ ok: false,
87
+ field: "timeZone",
88
+ reason: "invalid_time_zone",
89
+ value: typeof input.timeZone === "string" ? input.timeZone : ""
90
+ };
91
+ return {
92
+ ok: true,
93
+ value: {
94
+ startsAt,
95
+ timeZone,
96
+ locale: input.locale
97
+ }
98
+ };
99
+ }
100
+ function parseScheduledBookingDateRange(input) {
101
+ const start = parseScheduledBookingDateTime(input);
102
+ if (!start.ok) return start;
103
+ if (input.endsAt == null) return {
104
+ ok: true,
105
+ value: start.value
106
+ };
107
+ try {
108
+ return {
109
+ ok: true,
110
+ value: {
111
+ ...start.value,
112
+ endsAt: toUtcIsoDateTimeString(input.endsAt)
113
+ }
114
+ };
115
+ } catch {
116
+ return {
117
+ ok: false,
118
+ field: "endsAt",
119
+ reason: "invalid_ends_at",
120
+ value: input.endsAt
121
+ };
122
+ }
123
+ }
124
+ /**
125
+ * Formats the compact English event-time presentation used by public surfaces.
126
+ *
127
+ * This intentionally owns the lowercase day-period token and zero-minute
128
+ * omission instead of depending on locale-specific spacing or punctuation.
129
+ * Callers must only use it for an English presentation contract.
130
+ */
131
+ function formatBookingCompactEnglishTime(input) {
132
+ const date = new Date(input.startsAt);
133
+ if (Number.isNaN(date.getTime())) return input.startsAt;
134
+ const parts = formatToPartsLookup(date, input.locale ?? "en-GB", input.timeZone, {
135
+ hour: "numeric",
136
+ minute: "2-digit",
137
+ hour12: true
138
+ });
139
+ const hour = parts.get("hour");
140
+ const minute = parts.get("minute");
141
+ const dayPeriod = parts.get("dayPeriod");
142
+ if (hour === void 0 || minute === void 0 || dayPeriod === void 0) return input.startsAt;
143
+ return `${minute === "00" ? hour : `${hour}:${minute}`}${dayPeriod.toLowerCase()}`;
144
+ }
145
+ //#endregion
146
+ //#region src/date-time/index.ts
147
+ const DEFAULT_LOCALE = "en-GB";
148
+ const COMPACT_ENGLISH_RANGE_SEPARATOR = "–";
149
+ const FORMATTER_CACHE_LIMIT = 100;
150
+ const DEFAULT_DATE_FORMAT = {
151
+ weekday: "long",
152
+ year: "numeric",
153
+ month: "long",
154
+ day: "numeric"
155
+ };
156
+ const DEFAULT_RANGE_DATE_FORMAT = {
157
+ weekday: "short",
158
+ year: "numeric",
159
+ month: "short",
160
+ day: "numeric"
161
+ };
162
+ const DEFAULT_STANDARD_TIME_FORMAT = {
163
+ hour: "numeric",
164
+ minute: "2-digit"
165
+ };
166
+ const dateTimeFormatterCache = /* @__PURE__ */ new Map();
167
+ const parsedLocaleCache = /* @__PURE__ */ new Map();
168
+ var RiverbankDateTimeFormatError = class extends Error {
169
+ constructor(details) {
170
+ super(formatErrorMessage(details));
171
+ this.name = "RiverbankDateTimeFormatError";
172
+ this.code = details.code;
173
+ this.field = details.field;
174
+ this.value = details.value;
175
+ }
176
+ };
177
+ function formatScheduledDate(input, options = {}) {
178
+ return formatInstant(parseDateTime(input), options.format ?? DEFAULT_DATE_FORMAT);
179
+ }
180
+ function formatScheduledTime(input, options = {}) {
181
+ return formatTime(parseDateTime(input), options);
182
+ }
183
+ function formatScheduledDateTime(input, options = {}) {
184
+ return formatDateTime(parseDateTime(input), options, DEFAULT_DATE_FORMAT);
185
+ }
186
+ function formatScheduledDateRange(input, options = {}) {
187
+ const range = parseDateRange(input);
188
+ return formatRange(rangeStart(range), rangeEnd(range), options.format ?? DEFAULT_RANGE_DATE_FORMAT);
189
+ }
190
+ function formatScheduledTimeRange(input, options = {}) {
191
+ const range = parseDateRange(input);
192
+ const start = rangeStart(range);
193
+ const end = rangeEnd(range);
194
+ if (!usesCompactEnglishTime(start, options)) return formatRange(start, end, resolveStandardTimeFormat(options));
195
+ const startTime = formatTime(start, options);
196
+ const endTime = formatTime(end, options);
197
+ return startTime === endTime ? startTime : `${startTime}${COMPACT_ENGLISH_RANGE_SEPARATOR}${endTime}`;
198
+ }
199
+ function formatScheduledDateTimeRange(input, options = {}) {
200
+ const range = parseDateRange(input);
201
+ const start = rangeStart(range);
202
+ const end = rangeEnd(range);
203
+ if (!usesCompactEnglishTime(start, options.time ?? {})) return formatRange(start, end, resolveCombinedFormat(options, DEFAULT_RANGE_DATE_FORMAT));
204
+ const startDate = formatInstant(start, options.dateFormat ?? DEFAULT_RANGE_DATE_FORMAT);
205
+ const startTime = formatTime(start, options.time ?? {});
206
+ const endTime = formatTime(end, options.time ?? {});
207
+ const startDateTime = `${startDate}, ${startTime}`;
208
+ if (sameLocalDate(start, end)) return startTime === endTime ? startDateTime : `${startDate}, ${startTime}${COMPACT_ENGLISH_RANGE_SEPARATOR}${endTime}`;
209
+ const endDateTime = `${formatInstant(end, options.dateFormat ?? DEFAULT_RANGE_DATE_FORMAT)}, ${endTime}`;
210
+ return startDateTime === endDateTime ? startDateTime : `${startDateTime}${COMPACT_ENGLISH_RANGE_SEPARATOR}${endDateTime}`;
211
+ }
212
+ function parseDateTime(input) {
213
+ const locale = parseLocale(input.locale);
214
+ assertStringTimeZone(input.timeZone);
215
+ const result = parseScheduledBookingDateTime({
216
+ ...input,
217
+ locale: locale.locale
218
+ });
219
+ if (result.ok) return {
220
+ ...result.value,
221
+ locale: locale.locale
222
+ };
223
+ throw fromCoreParseError(result);
224
+ }
225
+ function parseDateRange(input) {
226
+ const locale = parseLocale(input.locale);
227
+ assertStringTimeZone(input.timeZone);
228
+ if (input.endsAt === null || input.endsAt === void 0) throw new RiverbankDateTimeFormatError({
229
+ code: "missing_ends_at",
230
+ field: "endsAt",
231
+ value: ""
232
+ });
233
+ const result = parseScheduledBookingDateRange({
234
+ ...input,
235
+ locale: locale.locale
236
+ });
237
+ if (!result.ok) throw fromCoreParseError(result);
238
+ if (result.value.endsAt === null || result.value.endsAt === void 0) throw new RiverbankDateTimeFormatError({
239
+ code: "missing_ends_at",
240
+ field: "endsAt",
241
+ value: ""
242
+ });
243
+ if (new Date(result.value.endsAt).getTime() < new Date(result.value.startsAt).getTime()) throw new RiverbankDateTimeFormatError({
244
+ code: "end_before_start",
245
+ field: "endsAt",
246
+ value: input.endsAt
247
+ });
248
+ return {
249
+ ...result.value,
250
+ endsAt: result.value.endsAt,
251
+ locale: locale.locale
252
+ };
253
+ }
254
+ function parseLocale(value) {
255
+ const locale = value === void 0 ? DEFAULT_LOCALE : value;
256
+ if (typeof locale !== "string") throw new RiverbankDateTimeFormatError({
257
+ code: "invalid_locale",
258
+ field: "locale",
259
+ value: ""
260
+ });
261
+ const cached = parsedLocaleCache.get(locale);
262
+ if (cached !== void 0) return cached;
263
+ try {
264
+ const parsed = new Intl.Locale(locale);
265
+ const canonical = parsed.toString();
266
+ if (Intl.DateTimeFormat.supportedLocalesOf([canonical]).length === 0) throw new RangeError("Unsupported locale");
267
+ const result = {
268
+ locale: canonical,
269
+ language: parsed.language
270
+ };
271
+ if (parsedLocaleCache.size >= FORMATTER_CACHE_LIMIT) parsedLocaleCache.clear();
272
+ parsedLocaleCache.set(locale, result);
273
+ return result;
274
+ } catch {
275
+ throw new RiverbankDateTimeFormatError({
276
+ code: "invalid_locale",
277
+ field: "locale",
278
+ value: typeof value === "string" ? value : ""
279
+ });
280
+ }
281
+ }
282
+ function assertStringTimeZone(value) {
283
+ if (typeof value !== "string") throw new RiverbankDateTimeFormatError({
284
+ code: "invalid_time_zone",
285
+ field: "timeZone",
286
+ value: ""
287
+ });
288
+ }
289
+ function fromCoreParseError(error) {
290
+ switch (error.reason) {
291
+ case "invalid_starts_at": return new RiverbankDateTimeFormatError({
292
+ code: error.reason,
293
+ field: error.field,
294
+ value: typeof error.value === "string" ? error.value : ""
295
+ });
296
+ case "invalid_ends_at": return new RiverbankDateTimeFormatError({
297
+ code: error.reason,
298
+ field: error.field,
299
+ value: typeof error.value === "string" ? error.value : ""
300
+ });
301
+ case "invalid_time_zone": return new RiverbankDateTimeFormatError({
302
+ code: error.reason,
303
+ field: error.field,
304
+ value: error.value
305
+ });
306
+ default: return assertNever(error);
307
+ }
308
+ }
309
+ function formatErrorMessage(details) {
310
+ switch (details.code) {
311
+ case "invalid_starts_at": return `Expected startsAt to be a valid offset-aware ISO datetime, received "${details.value}"`;
312
+ case "invalid_ends_at": return `Expected endsAt to be a valid offset-aware ISO datetime, received "${details.value}"`;
313
+ case "missing_ends_at": return "Expected endsAt to be provided for a scheduled range";
314
+ case "invalid_time_zone": return `Expected timeZone to be a valid IANA timezone, received "${details.value}"`;
315
+ case "invalid_locale": return `Expected locale to be a supported BCP 47 locale, received "${details.value}"`;
316
+ case "end_before_start": return `Expected endsAt to be on or after startsAt, received "${details.value}"`;
317
+ default: return assertNever(details);
318
+ }
319
+ }
320
+ function formatDateTime(input, options, defaultDateFormat) {
321
+ if (!usesCompactEnglishTime(input, options.time ?? {})) return formatInstant(input, resolveCombinedFormat(options, defaultDateFormat));
322
+ return `${formatInstant(input, options.dateFormat ?? defaultDateFormat)}, ${formatTime(input, options.time ?? {})}`;
323
+ }
324
+ function formatTime(input, options) {
325
+ if (usesCompactEnglishTime(input, options)) return formatBookingCompactEnglishTime(input);
326
+ return formatInstant(input, resolveStandardTimeFormat(options));
327
+ }
328
+ function usesCompactEnglishTime(input, options) {
329
+ return options.timePresentation !== "standard" && parseLocale(input.locale).language === "en";
330
+ }
331
+ function resolveStandardTimeFormat(options) {
332
+ return options.timePresentation === "standard" ? options.format ?? DEFAULT_STANDARD_TIME_FORMAT : DEFAULT_STANDARD_TIME_FORMAT;
333
+ }
334
+ function resolveCombinedFormat(options, defaultDateFormat) {
335
+ return {
336
+ ...options.dateFormat ?? defaultDateFormat,
337
+ ...resolveStandardTimeFormat(options.time ?? {})
338
+ };
339
+ }
340
+ function formatInstant(input, format) {
341
+ return getFormatter(input, format).format(new Date(input.startsAt));
342
+ }
343
+ function formatRange(start, end, format) {
344
+ const formatter = getFormatter(start, format);
345
+ const nativeFormatRange = Reflect.get(formatter, "formatRange");
346
+ if (typeof nativeFormatRange !== "function") throw new Error("Intl.DateTimeFormat.formatRange is required");
347
+ const output = Reflect.apply(nativeFormatRange, formatter, [new Date(start.startsAt), new Date(end.startsAt)]);
348
+ if (typeof output !== "string") throw new Error("Intl.DateTimeFormat.formatRange returned a non-string value");
349
+ return output;
350
+ }
351
+ function getFormatter(input, format) {
352
+ const formatKey = JSON.stringify(Object.entries(format).sort(([left], [right]) => left.localeCompare(right)));
353
+ const key = `${input.locale}\u0000${input.timeZone}\u0000${formatKey}`;
354
+ const cached = dateTimeFormatterCache.get(key);
355
+ if (cached !== void 0) return cached;
356
+ const formatter = new Intl.DateTimeFormat(input.locale, {
357
+ ...format,
358
+ timeZone: input.timeZone
359
+ });
360
+ if (dateTimeFormatterCache.size >= FORMATTER_CACHE_LIMIT) dateTimeFormatterCache.clear();
361
+ dateTimeFormatterCache.set(key, formatter);
362
+ return formatter;
363
+ }
364
+ function rangeStart(range) {
365
+ return range;
366
+ }
367
+ function rangeEnd(range) {
368
+ return {
369
+ startsAt: range.endsAt,
370
+ timeZone: range.timeZone,
371
+ locale: range.locale
372
+ };
373
+ }
374
+ function sameLocalDate(start, end) {
375
+ const format = {
376
+ year: "numeric",
377
+ month: "2-digit",
378
+ day: "2-digit"
379
+ };
380
+ return formatInstant(start, format) === formatInstant(end, format);
381
+ }
382
+ function assertNever(value) {
383
+ throw new Error(`Unhandled date-time variant: ${String(value)}`);
384
+ }
385
+ //#endregion
386
+ export { RiverbankDateTimeFormatError, formatScheduledDate, formatScheduledDateRange, formatScheduledDateTime, formatScheduledDateTimeRange, formatScheduledTime, formatScheduledTimeRange };
@@ -19,6 +19,12 @@ function encodePublicProductCategorySelector(selector) {
19
19
  }
20
20
  //#endregion
21
21
  //#region ../api/src/apiEndpointTypes.ts
22
+ function allowedDemoMutationPolicy() {
23
+ return {
24
+ classification: "allowed",
25
+ publicMessage: ""
26
+ };
27
+ }
22
28
  function blockedDemoMutationPolicy(classification, publicMessage) {
23
29
  if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
24
30
  return {
@@ -46,6 +52,7 @@ const TAG_TEMPLATES = {
46
52
  siteRouteOutcomes: "riverbank:site:{siteId}:route-outcomes",
47
53
  routeById: "riverbank:route:{routeId}",
48
54
  pageById: "riverbank:page:{pageId}",
55
+ pageSurfaceById: "riverbank:page-surface:{pageSurfaceId}",
49
56
  workflowRunById: "riverbank:workflow-run:{runId}",
50
57
  siteForms: "riverbank:site:{siteId}:forms",
51
58
  formById: "riverbank:form:{formId}",
@@ -71,6 +78,7 @@ const TAG_TEMPLATES = {
71
78
  const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
72
79
  const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
73
80
  const DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
81
+ const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
74
82
  const API_ENDPOINTS$1 = {
75
83
  aiContentUpdateChat: {
76
84
  path: "/ai/content-update-chat",
@@ -2209,6 +2217,49 @@ const API_ENDPOINTS$1 = {
2209
2217
  auth: "user",
2210
2218
  responseKind: "json"
2211
2219
  },
2220
+ updatePageSurfaceDraftContent: {
2221
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
2222
+ method: "PUT",
2223
+ errors: [
2224
+ "validation:invalid_input",
2225
+ "resource:not_found",
2226
+ "resource:conflict",
2227
+ "server:internal_error"
2228
+ ],
2229
+ tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
2230
+ auth: "user",
2231
+ responseKind: "json"
2232
+ },
2233
+ discardPageSurfaceDraftContent: {
2234
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
2235
+ method: "DELETE",
2236
+ errors: [
2237
+ "validation:invalid_input",
2238
+ "resource:not_found",
2239
+ "resource:conflict",
2240
+ "server:internal_error"
2241
+ ],
2242
+ tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
2243
+ auth: "user",
2244
+ responseKind: "json"
2245
+ },
2246
+ updatePageSurfaceRouteMetadata: {
2247
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
2248
+ method: "PATCH",
2249
+ errors: [
2250
+ "validation:invalid_input",
2251
+ "resource:not_found",
2252
+ "resource:conflict",
2253
+ "server:internal_error"
2254
+ ],
2255
+ tags: [
2256
+ TAG_TEMPLATES.siteCollection,
2257
+ TAG_TEMPLATES.siteRoutableContent,
2258
+ TAG_TEMPLATES.pageSurfaceById
2259
+ ],
2260
+ auth: "user",
2261
+ responseKind: "json"
2262
+ },
2212
2263
  runSdkWorkflow: {
2213
2264
  path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run",
2214
2265
  method: "POST",
@@ -2589,6 +2640,50 @@ const API_ENDPOINTS$1 = {
2589
2640
  errors: [],
2590
2641
  responseKind: "json"
2591
2642
  },
2643
+ getFooterComposition: {
2644
+ path: "/sites/{siteId}/settings/footer-composition",
2645
+ method: "GET",
2646
+ revalidate: 120,
2647
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2648
+ auth: "user",
2649
+ errors: ["resource:not_found", "server:internal_error"],
2650
+ responseKind: "json"
2651
+ },
2652
+ updateFooterComposition: {
2653
+ path: "/sites/{siteId}/settings/footer-composition",
2654
+ method: "POST",
2655
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2656
+ auth: "user",
2657
+ demoMutation: DEMO_MUTATION_ALLOWED,
2658
+ errors: [
2659
+ "validation:invalid_input",
2660
+ "resource:not_found",
2661
+ "server:internal_error"
2662
+ ],
2663
+ responseKind: "json"
2664
+ },
2665
+ getPublicProfile: {
2666
+ path: "/sites/{siteId}/settings/public-profile",
2667
+ method: "GET",
2668
+ revalidate: 120,
2669
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2670
+ auth: "user",
2671
+ errors: ["resource:not_found", "server:internal_error"],
2672
+ responseKind: "json"
2673
+ },
2674
+ updatePublicProfile: {
2675
+ path: "/sites/{siteId}/settings/public-profile",
2676
+ method: "POST",
2677
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2678
+ auth: "user",
2679
+ demoMutation: DEMO_MUTATION_ALLOWED,
2680
+ errors: [
2681
+ "validation:invalid_input",
2682
+ "resource:not_found",
2683
+ "server:internal_error"
2684
+ ],
2685
+ responseKind: "json"
2686
+ },
2592
2687
  updateSiteLayoutSettings: {
2593
2688
  path: "/sites/{siteId}/settings/layout",
2594
2689
  method: "POST",
@@ -3661,6 +3756,76 @@ const API_ENDPOINTS$1 = {
3661
3756
  responseKind: "json",
3662
3757
  errors: ["resource:not_found"]
3663
3758
  },
3759
+ listPageSurfaceContentSlots: {
3760
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots",
3761
+ method: "GET",
3762
+ tags: [
3763
+ TAG_TEMPLATES.siteCollection,
3764
+ TAG_TEMPLATES.pageSurfaceById,
3765
+ "surface-slots",
3766
+ "blocks"
3767
+ ],
3768
+ auth: "user",
3769
+ responseKind: "json",
3770
+ errors: [
3771
+ "resource:not_found",
3772
+ "resource:conflict",
3773
+ "server:internal_error"
3774
+ ]
3775
+ },
3776
+ createPageSurfaceSlotBlock: {
3777
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks",
3778
+ method: "POST",
3779
+ tags: [
3780
+ TAG_TEMPLATES.siteCollection,
3781
+ TAG_TEMPLATES.pageSurfaceById,
3782
+ "surface-slot-{slotKey}",
3783
+ "blocks"
3784
+ ],
3785
+ auth: "user",
3786
+ responseKind: "json",
3787
+ errors: [
3788
+ "validation:invalid_input",
3789
+ "resource:not_found",
3790
+ "resource:conflict",
3791
+ "server:internal_error"
3792
+ ]
3793
+ },
3794
+ reorderPageSurfaceSlotBlocks: {
3795
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/reorder",
3796
+ method: "POST",
3797
+ tags: [
3798
+ TAG_TEMPLATES.siteCollection,
3799
+ TAG_TEMPLATES.pageSurfaceById,
3800
+ "surface-slot-{slotKey}",
3801
+ "blocks"
3802
+ ],
3803
+ auth: "user",
3804
+ responseKind: "json",
3805
+ errors: [
3806
+ "validation:invalid_input",
3807
+ "resource:not_found",
3808
+ "resource:conflict",
3809
+ "server:internal_error"
3810
+ ]
3811
+ },
3812
+ deletePageSurfaceSlotBlock: {
3813
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/{blockId}",
3814
+ method: "DELETE",
3815
+ tags: [
3816
+ TAG_TEMPLATES.siteCollection,
3817
+ TAG_TEMPLATES.pageSurfaceById,
3818
+ "surface-slot-{slotKey}",
3819
+ "blocks"
3820
+ ],
3821
+ auth: "user",
3822
+ responseKind: "json",
3823
+ errors: [
3824
+ "resource:not_found",
3825
+ "resource:conflict",
3826
+ "server:internal_error"
3827
+ ]
3828
+ },
3664
3829
  createBlock: {
3665
3830
  path: "/sites/{siteId}/pages/{pageId}/blocks",
3666
3831
  method: "POST",
@@ -6144,6 +6309,41 @@ const API_ENDPOINTS$1 = {
6144
6309
  auth: "service",
6145
6310
  responseKind: "json"
6146
6311
  },
6312
+ sdkCatalogTheme: {
6313
+ path: "/sdk/{siteId}/catalog/theme",
6314
+ method: "GET",
6315
+ errors: ["server:internal_error"],
6316
+ auth: "service",
6317
+ responseKind: "json"
6318
+ },
6319
+ sdkCatalogBlocks: {
6320
+ path: "/sdk/{siteId}/catalog/blocks",
6321
+ method: "GET",
6322
+ errors: ["server:internal_error"],
6323
+ auth: "service",
6324
+ responseKind: "json"
6325
+ },
6326
+ sdkCatalogContentTypes: {
6327
+ path: "/sdk/{siteId}/catalog/content-types",
6328
+ method: "GET",
6329
+ errors: ["server:internal_error"],
6330
+ auth: "service",
6331
+ responseKind: "json"
6332
+ },
6333
+ sdkCapabilities: {
6334
+ path: "/sdk/{siteId}/capabilities",
6335
+ method: "GET",
6336
+ errors: ["server:internal_error"],
6337
+ auth: "service",
6338
+ responseKind: "json"
6339
+ },
6340
+ sdkListDemoContent: {
6341
+ path: "/sdk/{siteId}/demo-content",
6342
+ method: "GET",
6343
+ errors: ["server:internal_error"],
6344
+ auth: "service",
6345
+ responseKind: "json"
6346
+ },
6147
6347
  sdkPullPages: {
6148
6348
  path: "/sdk/{siteId}/pull/pages",
6149
6349
  method: "GET",
@@ -6273,6 +6473,19 @@ const API_ENDPOINTS$1 = {
6273
6473
  auth: "service",
6274
6474
  responseKind: "json"
6275
6475
  },
6476
+ sdkPatchPageBlock: {
6477
+ path: "/sdk/{siteId}/pages/{identifier}/blocks/{blockIdentifier}",
6478
+ method: "PATCH",
6479
+ errors: [
6480
+ "validation:invalid_input",
6481
+ "resource:not_found",
6482
+ "resource:conflict",
6483
+ "billing:plan_limit_exceeded",
6484
+ "server:internal_error"
6485
+ ],
6486
+ auth: "service",
6487
+ responseKind: "json"
6488
+ },
6276
6489
  sdkReorderPageBlocks: {
6277
6490
  path: "/sdk/{siteId}/pages/{identifier}/blocks/reorder",
6278
6491
  method: "POST",
@@ -7548,7 +7761,7 @@ var SimpleCache = class {
7548
7761
  * 1. This constant
7549
7762
  * 2. The "version" field in package.json
7550
7763
  */
7551
- const SDK_VERSION = "0.107.0";
7764
+ const SDK_VERSION = "0.109.0";
7552
7765
  //#endregion
7553
7766
  //#region src/client/error.ts
7554
7767
  let _Symbol$for;
@@ -111,8 +111,11 @@ function getPrimaryNavigation(navigation) {
111
111
  * ```
112
112
  */
113
113
  function getFooterNavigation(navigation) {
114
+ return getFooterNavigationByRole(navigation, "main");
115
+ }
116
+ function getFooterNavigationByRole(navigation, role) {
114
117
  if (!navigation || navigation.length === 0) return null;
115
- const footerMenus = navigation.filter((menu) => menu.isFooter);
118
+ const footerMenus = navigation.filter((menu) => menu.footerRole === role || role === "main" && menu.footerRole == null && menu.isFooter);
116
119
  if (footerMenus.length > 1) console.warn(`[riverbank/sdk] Multiple footer navigation menus detected (${footerMenus.length}); using first flagged menu by input order.`);
117
120
  return footerMenus[0] ?? null;
118
121
  }
@@ -552,7 +555,10 @@ function buildMenu(navigation, routes, options) {
552
555
  * ```
553
556
  */
554
557
  function buildFooterMenu(navigation, routes, options) {
555
- const menu = getFooterNavigation(navigation);
558
+ return buildFooterMenuForRole(navigation, routes, "main", options);
559
+ }
560
+ function buildFooterMenuForRole(navigation, routes, role, options) {
561
+ const menu = getFooterNavigationByRole(navigation, role);
556
562
  if (!menu) return {
557
563
  items: [],
558
564
  ctaItem: null,
@@ -656,4 +662,4 @@ function buildLogo(logo, fallbackAlt) {
656
662
  return result;
657
663
  }
658
664
  //#endregion
659
- export { buildFooterMenu, buildLogo, buildLogoViewModel, buildMenu, buildMenuViewModel, getFooterNavigation, getNavItemsBySlug, getNavigationBySlug, getPrimaryNavItems, getPrimaryNavigation, isNavDropdown, isNavLink, resolveNavigationLinkHref, transformToNavItems };
665
+ export { buildFooterMenu, buildFooterMenuForRole, buildLogo, buildLogoViewModel, buildMenu, buildMenuViewModel, getFooterNavigation, getFooterNavigationByRole, getNavItemsBySlug, getNavigationBySlug, getPrimaryNavItems, getPrimaryNavigation, isNavDropdown, isNavLink, resolveNavigationLinkHref, transformToNavItems };