@riverbankcms/sdk 0.68.0 → 0.70.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 (414) hide show
  1. package/dist/_dts/api/src/accessAdmin.d.ts +3 -3
  2. package/dist/_dts/api/src/admin/types.d.ts +1 -1
  3. package/dist/_dts/api/src/aiPlayground.d.ts +13 -87
  4. package/dist/_dts/api/src/appointmentSetup.d.ts +4 -0
  5. package/dist/_dts/api/src/billing.d.ts +1 -1
  6. package/dist/_dts/api/src/bookingConfig.d.ts +2 -2
  7. package/dist/_dts/api/src/bookingRecords.d.ts +1 -1
  8. package/dist/_dts/api/src/bookings.d.ts +1 -1
  9. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +1 -1
  10. package/dist/_dts/api/src/communications.d.ts +1 -1
  11. package/dist/_dts/api/src/contentRuntime.d.ts +2 -2
  12. package/dist/_dts/api/src/contentTypes.d.ts +1 -1
  13. package/dist/_dts/api/src/navigation/contracts.d.ts +9 -9
  14. package/dist/_dts/api/src/navigation/linkValue.d.ts +1 -1
  15. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  16. package/dist/_dts/api/src/public/index.d.ts +2 -2
  17. package/dist/_dts/api/src/public/types.d.ts +2 -2
  18. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -2
  19. package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
  20. package/dist/_dts/api/src/siteBanner.d.ts +9 -9
  21. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -2
  22. package/dist/_dts/api/src/siteOnboarding.d.ts +1 -1
  23. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  24. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -5
  25. package/dist/_dts/api/src/siteSettings.d.ts +3 -3
  26. package/dist/_dts/api/src/teamMembers.d.ts +1 -1
  27. package/dist/_dts/api/src/types.d.ts +1 -1
  28. package/dist/_dts/api/src/url.d.ts +1 -1
  29. package/dist/_dts/billing/src/components/index.d.ts +61 -3
  30. package/dist/_dts/block-form/src/backend/store-backend.d.ts +1 -1
  31. package/dist/_dts/block-form/src/backend/types.d.ts +2 -2
  32. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +2 -2
  33. package/dist/_dts/block-form/src/context/ImageResolveContext.d.ts +1 -1
  34. package/dist/_dts/block-form/src/fields/types.d.ts +1 -1
  35. package/dist/_dts/block-form/src/manifest/ManifestForm.d.ts +1 -1
  36. package/dist/_dts/block-form/src/manifest/canonicalValidation.d.ts +1 -1
  37. package/dist/_dts/block-form/src/manifest/manifestFormAdapter.d.ts +1 -1
  38. package/dist/_dts/block-form/src/manifest/mergeManifestWithSdkOptions.d.ts +1 -1
  39. package/dist/_dts/block-form/src/sdk-config/SdkConfigContext.d.ts +1 -1
  40. package/dist/_dts/block-form/src/shared/disclosure.d.ts +1 -1
  41. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +1 -1
  42. package/dist/_dts/block-form/src/widgets/DateField/datePickerPopover.d.ts +1 -1
  43. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterLayoutGrid.d.ts +1 -1
  44. package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +1 -1
  45. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -1
  46. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  47. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterPresentation.d.ts +1 -1
  48. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/resolveThumbnail.d.ts +1 -1
  49. package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldSchema.d.ts +4 -4
  50. package/dist/_dts/block-form/src/widgets/constants.d.ts +1 -1
  51. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -1
  52. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  53. package/dist/_dts/blocks/src/client.d.ts +6 -4
  54. package/dist/_dts/blocks/src/index.d.ts +28 -27
  55. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  56. package/dist/_dts/blocks/src/primitives/content/components/Button.d.ts +1 -1
  57. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  58. package/dist/_dts/blocks/src/server.d.ts +1 -1
  59. package/dist/_dts/blocks/src/structure/schema.d.ts +1 -1
  60. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +1665 -1665
  61. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +1666 -1666
  62. package/dist/_dts/blocks/src/system/blocks/blog-post.d.ts +1 -1
  63. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +1665 -1665
  64. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +1665 -1665
  65. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +1666 -1666
  66. package/dist/_dts/blocks/src/system/blocks/columns.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/blocks/courses/shared/pricing.d.ts +3 -2
  68. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +42 -42
  69. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +1761 -1761
  70. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -2
  71. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +1764 -1764
  72. package/dist/_dts/blocks/src/system/blocks/events/shared/filtering.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +44 -44
  74. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +1665 -1665
  76. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +1665 -1665
  78. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +1 -1
  79. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -1
  80. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +9 -9
  81. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +139 -139
  82. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +1665 -1665
  83. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1665 -1665
  84. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +19 -19
  85. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +1665 -1665
  86. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -3
  87. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +1 -1
  88. package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +1 -1
  89. package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -1
  90. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  91. package/dist/_dts/blocks/src/system/customize/facets.d.ts +5 -5
  92. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +1 -1
  93. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +1 -1
  94. package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +1761 -1761
  95. package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +1761 -1761
  96. package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +1761 -1761
  97. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +1761 -1761
  98. package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +1761 -1761
  99. package/dist/_dts/blocks/src/system/frame/frameStyles.d.ts +3 -3
  100. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +2 -2
  101. package/dist/_dts/blocks/src/system/manifest/augmentManifest.d.ts +1 -1
  102. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +201 -201
  103. package/dist/_dts/blocks/src/system/media/constrainedVideoMedia.d.ts +1 -1
  104. package/dist/_dts/blocks/src/system/media/slotContracts.d.ts +1 -1
  105. package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +1 -1
  106. package/dist/_dts/blocks/src/system/node/fragments/typography.d.ts +1 -1
  107. package/dist/_dts/blocks/src/system/node/schema.d.ts +5 -5
  108. package/dist/_dts/blocks/src/system/registry.d.ts +2 -2
  109. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +1 -1
  110. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
  111. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +1 -1
  112. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +2 -2
  113. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -2
  114. package/dist/_dts/blocks/src/system/runtime/nodes/accordion.d.ts +1 -1
  115. package/dist/_dts/blocks/src/system/runtime/nodes/accordion.server.d.ts +1 -1
  116. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -1
  117. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +45 -29
  118. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +27 -0
  119. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +11 -7
  120. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +1 -1
  121. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +3 -3
  122. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +1 -1
  123. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +1 -1
  124. package/dist/_dts/blocks/src/system/runtime/nodes/shared/LeafletStaticMap.d.ts +1 -1
  125. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +6 -6
  126. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptionCopy.d.ts +1 -1
  127. package/dist/_dts/blocks/src/system/theme/index.d.ts +1 -1
  128. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -1
  129. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  130. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +3 -3
  131. package/dist/_dts/blocks/src/system/types/link.d.ts +3 -3
  132. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +3 -3
  133. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +3 -3
  134. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +2 -2
  135. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +2 -2
  136. package/dist/_dts/content-editor/src/controller/deriveRecoveryConflict.d.ts +1 -1
  137. package/dist/_dts/content-editor/src/controller/invalidBlockRecovery.d.ts +1 -1
  138. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +1 -1
  139. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +1 -1
  140. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +3 -3
  141. package/dist/_dts/content-editor/src/controller/useInvalidBlockRecovery.d.ts +1 -1
  142. package/dist/_dts/content-editor/src/hooks/blockedPublishPlan.d.ts +1 -1
  143. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +1 -1
  144. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +2 -2
  145. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +1 -1
  146. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +1 -1
  147. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +1 -1
  148. package/dist/_dts/content-editor/src/primitives/PreviewTextEditor.d.ts +1 -1
  149. package/dist/_dts/content-editor/src/registry.d.ts +1 -1
  150. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +2 -2
  151. package/dist/_dts/content-editor/src/types.d.ts +2 -2
  152. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +3 -3
  153. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +1 -1
  154. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -1
  155. package/dist/_dts/content-editor/src/ui/stores/utils.d.ts +1 -1
  156. package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
  157. package/dist/_dts/core/src/branded.d.ts +2 -0
  158. package/dist/_dts/core/src/index.d.ts +2 -0
  159. package/dist/_dts/core/src/planner.d.ts +64 -0
  160. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +17 -18
  161. package/dist/_dts/db/src/schemas/forms.d.ts +62 -62
  162. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +5 -5
  163. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +5 -5
  164. package/dist/_dts/editor-blocks/src/FormProvider.d.ts +2 -2
  165. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +6 -6
  166. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +3 -3
  167. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -2
  168. package/dist/_dts/editor-blocks/src/block-editor/BlockListContext.d.ts +2 -2
  169. package/dist/_dts/editor-blocks/src/block-editor/BlockPickerDialog.d.ts +1 -1
  170. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +2 -2
  171. package/dist/_dts/editor-blocks/src/block-editor/BlockThumbnail.d.ts +1 -1
  172. package/dist/_dts/editor-blocks/src/block-editor/BlockTile.d.ts +1 -1
  173. package/dist/_dts/editor-blocks/src/block-editor/EnhancedBlockPickerDialog.d.ts +1 -1
  174. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +3 -3
  175. package/dist/_dts/editor-blocks/src/block-editor/blockDiscovery.d.ts +1 -1
  176. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +1 -1
  177. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +1 -1
  178. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +3 -3
  179. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +2 -2
  180. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +2 -2
  181. package/dist/_dts/editor-blocks/src/block-editor/hooks/useDraftContent.d.ts +1 -1
  182. package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +2 -2
  183. package/dist/_dts/editor-blocks/src/block-editor/sdkBlockMerger.d.ts +3 -3
  184. package/dist/_dts/editor-blocks/src/block-editor/settingsIntent.d.ts +1 -1
  185. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -1
  186. package/dist/_dts/editor-blocks/src/block-form/debug.d.ts +1 -1
  187. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +2 -2
  188. package/dist/_dts/editor-blocks/src/index.d.ts +2 -2
  189. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +6 -6
  190. package/dist/_dts/editor-blocks/src/widgets/button/ButtonField.d.ts +1 -1
  191. package/dist/_dts/editor-blocks/src/widgets/button/ButtonVariantField.d.ts +1 -1
  192. package/dist/_dts/editor-blocks/src/widgets/button/context.d.ts +1 -1
  193. package/dist/_dts/editor-blocks/src/widgets/button/index.d.ts +1 -1
  194. package/dist/_dts/editor-blocks/src/widgets/content-type-select/ContentTypeSelectField.d.ts +1 -1
  195. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerField.d.ts +1 -1
  196. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerWidgetProvider.d.ts +1 -1
  197. package/dist/_dts/editor-blocks/src/widgets/entry-picker/index.d.ts +1 -1
  198. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +2 -2
  199. package/dist/_dts/editor-blocks/src/widgets/entry-picker/types.d.ts +2 -2
  200. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  201. package/dist/_dts/editor-blocks/src/widgets/link/LinkField.d.ts +2 -2
  202. package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +3 -3
  203. package/dist/_dts/editor-blocks/src/widgets/link/LinkPickerDialog.d.ts +1 -1
  204. package/dist/_dts/editor-blocks/src/widgets/link/LinkSummary.d.ts +1 -1
  205. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +3 -3
  206. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +2 -2
  207. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +3 -3
  208. package/dist/_dts/editor-blocks/src/widgets/link/types.d.ts +2 -2
  209. package/dist/_dts/editor-blocks/src/widgets/link/utils.d.ts +2 -2
  210. package/dist/_dts/editor-blocks/src/widgets/reference/ReferenceField.d.ts +2 -2
  211. package/dist/_dts/editor-blocks/src/widgets/reference/ReferenceWidgetProvider.d.ts +1 -1
  212. package/dist/_dts/editor-blocks/src/widgets/reference/dynamicAdapters.d.ts +1 -1
  213. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +3 -3
  214. package/dist/_dts/editor-blocks/src/widgets/reference/types.d.ts +3 -3
  215. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextField.d.ts +2 -2
  216. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextWidgetProvider.d.ts +1 -1
  217. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +1 -1
  218. package/dist/_dts/editor-blocks/src/widgets/rich-text/richTextImageHydration.d.ts +1 -1
  219. package/dist/_dts/editor-blocks/src/widgets/shared/Combobox.d.ts +1 -1
  220. package/dist/_dts/media-core/src/fileAssetCompatibility.d.ts +1 -1
  221. package/dist/_dts/media-core/src/fileAssetDeletion.d.ts +1 -1
  222. package/dist/_dts/media-core/src/fileDomain.d.ts +1 -1
  223. package/dist/_dts/media-core/src/fileDownloadResolution.d.ts +1 -1
  224. package/dist/_dts/media-core/src/filePersistence.d.ts +1 -1
  225. package/dist/_dts/media-core/src/fileStorage.d.ts +1 -1
  226. package/dist/_dts/media-core/src/fileUploadAssetBuilder.d.ts +1 -1
  227. package/dist/_dts/media-core/src/fileUploadCleanup.d.ts +1 -1
  228. package/dist/_dts/media-core/src/fileUploadCompletion.d.ts +1 -1
  229. package/dist/_dts/media-core/src/fileUploadDurableFinalization.d.ts +1 -1
  230. package/dist/_dts/media-core/src/fileUploadFinalization.d.ts +1 -1
  231. package/dist/_dts/media-core/src/fileUploadSessionCreation.d.ts +1 -1
  232. package/dist/_dts/media-core/src/types.d.ts +2 -2
  233. package/dist/_dts/media-core/src/url.d.ts +1 -1
  234. package/dist/_dts/media-core/src/videoPrep.d.ts +1 -1
  235. package/dist/_dts/media-editor/src/CropDialog.d.ts +1 -1
  236. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  237. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +1 -1
  238. package/dist/_dts/media-editor/src/context.d.ts +3 -3
  239. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -1
  240. package/dist/_dts/media-editor/src/cropEditorSource.d.ts +1 -1
  241. package/dist/_dts/media-editor/src/debug.d.ts +1 -1
  242. package/dist/_dts/media-editor/src/provider.d.ts +3 -3
  243. package/dist/_dts/media-editor/src/runtimeMediaAssetState.d.ts +1 -1
  244. package/dist/_dts/media-editor/src/transformModel.d.ts +1 -1
  245. package/dist/_dts/media-editor/src/types.d.ts +2 -2
  246. package/dist/_dts/media-editor/src/utils.d.ts +1 -1
  247. package/dist/_dts/media-react/src/components/ImageCropper.d.ts +1 -1
  248. package/dist/_dts/media-react/src/components/cropDraftModel.d.ts +1 -1
  249. package/dist/_dts/media-react/src/components/cropGeometry.d.ts +1 -1
  250. package/dist/_dts/media-react/src/components/cropSessionState.d.ts +1 -1
  251. package/dist/_dts/media-react/src/components/useImageCropperController.d.ts +1 -1
  252. package/dist/_dts/media-react/src/ffmpegLoader.d.ts +1 -1
  253. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  254. package/dist/_dts/media-react/src/hooks/mediaAssetResponseMapper.d.ts +1 -1
  255. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +4 -4
  256. package/dist/_dts/media-react/src/utils/rotation.d.ts +1 -1
  257. package/dist/_dts/media-react/src/videoFrameExtraction.d.ts +1 -1
  258. package/dist/_dts/media-react/src/videoPrepBrowser.d.ts +2 -2
  259. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +1 -1
  260. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +1 -1
  261. package/dist/_dts/preview-next/src/client/blocks/composer/composePageFromBlocks.d.ts +1 -1
  262. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +2 -2
  263. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -3
  264. package/dist/_dts/preview-next/src/client/blocks/customizeFacetControls.d.ts +2 -2
  265. package/dist/_dts/preview-next/src/client/blocks/editorRegistry.d.ts +1 -1
  266. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -2
  267. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +2 -2
  268. package/dist/_dts/preview-next/src/client/blocks/previewProjection/aiProposalProjection.d.ts +2 -2
  269. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +2 -2
  270. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  271. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +3 -3
  272. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +5 -5
  273. package/dist/_dts/preview-next/src/client/preview/OnboardingThemeSwitcher.d.ts +2 -2
  274. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +5 -5
  275. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +1 -1
  276. package/dist/_dts/preview-next/src/client/preview/PreviewAuthBanner.d.ts +1 -1
  277. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +9 -9
  278. package/dist/_dts/preview-next/src/client/preview/PreviewEditorUI.d.ts +2 -2
  279. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +2 -2
  280. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +8 -8
  281. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +8 -8
  282. package/dist/_dts/preview-next/src/client/preview/PreviewViewportControls.d.ts +1 -1
  283. package/dist/_dts/preview-next/src/client/preview/PreviewZoomControls.d.ts +1 -1
  284. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +5 -5
  285. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -5
  286. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +4 -4
  287. package/dist/_dts/preview-next/src/client/preview/pageSchema.d.ts +1 -1
  288. package/dist/_dts/preview-next/src/client/preview/previewChromeSurface.d.ts +1 -1
  289. package/dist/_dts/preview-next/src/client/preview/previewChromeSurfacePolicy.d.ts +1 -1
  290. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +3 -3
  291. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +2 -2
  292. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +1 -1
  293. package/dist/_dts/preview-next/src/client/preview/previewSurface.d.ts +1 -1
  294. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +1 -1
  295. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +2 -2
  296. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +4 -4
  297. package/dist/_dts/preview-next/src/client/preview/subrouteNotice.d.ts +1 -1
  298. package/dist/_dts/preview-next/src/client/preview/themeOverlay.d.ts +1 -1
  299. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +2 -2
  300. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +2 -2
  301. package/dist/_dts/preview-next/src/client/widgets/widgetAdapters.d.ts +3 -3
  302. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +3 -3
  303. package/dist/_dts/sdk/src/bookings/index.d.ts +3 -2
  304. package/dist/_dts/sdk/src/bookings/types.d.ts +16 -10
  305. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +1 -1
  306. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +1 -1
  307. package/dist/_dts/sdk/src/cli/content/reader.d.ts +1 -1
  308. package/dist/_dts/sdk/src/cli/env.d.ts +1 -1
  309. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +1 -1
  310. package/dist/_dts/sdk/src/cli/push-config.d.ts +1 -1
  311. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +1 -1
  312. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +2 -2
  313. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +1 -1
  314. package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +1 -1
  315. package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +2 -2
  316. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +2 -2
  317. package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +2 -2
  318. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +2 -2
  319. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +2 -2
  320. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +1 -1
  321. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  322. package/dist/_dts/sdk/src/config/validation.d.ts +37 -43
  323. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +1 -1
  324. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +19 -19
  325. package/dist/_dts/sdk/src/portal/config.d.ts +1 -1
  326. package/dist/_dts/sdk/src/portal/index.d.ts +1 -1
  327. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +1 -1
  328. package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
  329. package/dist/_dts/sdk/src/preview-next/constants.d.ts +1 -1
  330. package/dist/_dts/sdk/src/preview-next/cookies.d.ts +1 -1
  331. package/dist/_dts/sdk/src/preview-next/index.d.ts +2 -2
  332. package/dist/_dts/sdk/src/preview-next/middleware.d.ts +1 -1
  333. package/dist/_dts/sdk/src/preview-next/session.d.ts +1 -1
  334. package/dist/_dts/sdk/src/public-api/contracts.d.ts +18 -4
  335. package/dist/_dts/sdk/src/rendering/islands/blocksContracts.d.ts +1 -1
  336. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +3 -3
  337. package/dist/_dts/sdk/src/spam-protection/index.d.ts +3 -3
  338. package/dist/_dts/sdk/src/theme-bridge/ThemeBridgeProvider.d.ts +2 -2
  339. package/dist/_dts/sdk/src/version.d.ts +1 -1
  340. package/dist/_dts/site-commands/src/adapter.d.ts +1 -1
  341. package/dist/_dts/site-commands/src/commands.d.ts +70 -39
  342. package/dist/_dts/site-commands/src/domain.d.ts +2 -2
  343. package/dist/_dts/site-commands/src/exposure.d.ts +3 -3
  344. package/dist/_dts/site-commands/src/metadata.d.ts +13 -0
  345. package/dist/_dts/site-commands/src/planner.d.ts +1 -1
  346. package/dist/_dts/site-commands/src/refs.d.ts +1 -1
  347. package/dist/_dts/theme-core/src/accordions/types.d.ts +9 -9
  348. package/dist/_dts/theme-core/src/blocks/index.d.ts +2 -2
  349. package/dist/_dts/theme-core/src/blocks/types.d.ts +3 -2
  350. package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +5 -5
  351. package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +5 -5
  352. package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +5 -5
  353. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +35 -35
  354. package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +5 -5
  355. package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +5 -5
  356. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +5 -5
  357. package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +5 -5
  358. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +7 -7
  359. package/dist/_dts/theme-core/src/buttons/types.d.ts +18 -18
  360. package/dist/_dts/theme-core/src/cards/types.d.ts +17 -17
  361. package/dist/_dts/theme-core/src/inputs/types.d.ts +13 -13
  362. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  363. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +351 -351
  364. package/dist/_dts/theme-core/src/navigation/types.d.ts +15 -15
  365. package/dist/_dts/theme-core/src/palette/recipes/allRecipes.d.ts +1 -1
  366. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +24 -24
  367. package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +18 -18
  368. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +65 -65
  369. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +18 -18
  370. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +7 -7
  371. package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +18 -18
  372. package/dist/_dts/theme-core/src/progress/generateProgressCss.d.ts +2 -1
  373. package/dist/_dts/theme-core/src/recommend/generateThemes.d.ts +1 -1
  374. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +4 -0
  375. package/dist/_dts/theme-core/src/schema.d.ts +568 -568
  376. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +2 -2
  377. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +1 -1
  378. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +1 -1
  379. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +34 -34
  380. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  381. package/dist/_dts/theme-core/src/site-styles/pageDesignAuthority.d.ts +1 -1
  382. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +1 -1
  383. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +14 -14
  384. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  385. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +4 -4
  386. package/dist/_dts/theme-core/src/status/generateStatusCss.d.ts +2 -1
  387. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +5 -5
  388. package/dist/_dts/ui/src/badge.d.ts +1 -1
  389. package/dist/_dts/ui/src/button.d.ts +2 -2
  390. package/dist/_dts/ui/src/card.d.ts +1 -1
  391. package/dist/_dts/ui/src/color-picker.d.ts +1 -1
  392. package/dist/_dts/ui/src/surface.d.ts +2 -2
  393. package/dist/_dts/ui/src/toggle.d.ts +4 -4
  394. package/dist/cli/index.mjs +3031 -2878
  395. package/dist/client/bookings.mjs +104 -34
  396. package/dist/client/client.mjs +7757 -7627
  397. package/dist/client/hooks.mjs +5704 -3822
  398. package/dist/client/rendering/client.mjs +164 -35
  399. package/dist/client/rendering/islands.mjs +164 -35
  400. package/dist/client/rendering.mjs +476 -346
  401. package/dist/preview-next/client/runtime.mjs +188 -55
  402. package/dist/server/components.mjs +364 -310
  403. package/dist/server/config-validation.mjs +6851 -4889
  404. package/dist/server/config.mjs +6841 -4888
  405. package/dist/server/data.mjs +5704 -3822
  406. package/dist/server/index.mjs +160 -1762
  407. package/dist/server/next.mjs +6515 -5260
  408. package/dist/server/prebuild.mjs +1 -1
  409. package/dist/server/rendering/server.mjs +366 -312
  410. package/dist/server/rendering.mjs +366 -312
  411. package/dist/server/routing.mjs +10376 -6836
  412. package/dist/server/server.mjs +5692 -3810
  413. package/dist/server/theme-bridge.mjs +249 -15
  414. package/package.json +1 -3
@@ -6345,10 +6345,10 @@ function appendQueryParam(queryParams, key, value) {
6345
6345
  }
6346
6346
  queryParams.append(key, String(value));
6347
6347
  }
6348
- function invalidateCacheTags(tags2, params) {
6348
+ function invalidateCacheTags(tags, params) {
6349
6349
  const resolved = getRevalidateTag();
6350
- if (typeof window !== "undefined" || !resolved || !tags2) return;
6351
- tags2.forEach((tag) => {
6350
+ if (typeof window !== "undefined" || !resolved || !tags) return;
6351
+ tags.forEach((tag) => {
6352
6352
  let processedTag = tag;
6353
6353
  if (params) {
6354
6354
  Object.entries(params).forEach(([key, value]) => {
@@ -6567,10 +6567,10 @@ function createRawCMSClient(headers = {}, baseUrl) {
6567
6567
  };
6568
6568
  const fetchPromise = fetch(url, requestInit);
6569
6569
  if (!isGetOrHead && "tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
6570
- const tags2 = endpointConfig.tags.map((tag) => tag);
6570
+ const tags = endpointConfig.tags.map((tag) => tag);
6571
6571
  return fetchPromise.then((response) => {
6572
6572
  if (response.ok) {
6573
- invalidateCacheTags(tags2, params);
6573
+ invalidateCacheTags(tags, params);
6574
6574
  }
6575
6575
  return response;
6576
6576
  });
@@ -6758,7 +6758,7 @@ var SimpleCache = class {
6758
6758
  };
6759
6759
 
6760
6760
  // src/version.ts
6761
- var SDK_VERSION = "0.68.0";
6761
+ var SDK_VERSION = "0.70.0";
6762
6762
 
6763
6763
  // src/client/error.ts
6764
6764
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -8535,1767 +8535,165 @@ function createPrebuildLoader(config) {
8535
8535
  return new PrebuildLoader(config);
8536
8536
  }
8537
8537
 
8538
- // ../api/src/accessAdmin.ts
8539
- import { z } from "zod";
8540
- var managedDomainAddOnPricingSnapshotSchema = z.object({
8541
- formulaVersion: z.literal("managed-domain-overage-v1"),
8542
- conversionRule: z.literal("usd-to-gbp-1-to-1-v1"),
8543
- registrarAnnualCost: z.number().nonnegative(),
8544
- registrarCurrency: z.literal("USD"),
8545
- includedAnnualAllowance: z.number().nonnegative(),
8546
- includedAnnualAllowanceCurrency: z.literal("USD"),
8547
- monthlyAmountCents: z.number().int().nonnegative(),
8548
- monthlyCurrency: z.literal("gbp")
8549
- });
8550
-
8551
- // ../api/src/navigation/contracts.ts
8552
- import { z as z2 } from "zod";
8553
- var portalLinkPayloadSchema = z2.object({
8554
- kind: z2.literal("portal"),
8555
- path: z2.string().trim().startsWith("/").optional(),
8556
- labels: z2.object({
8557
- loggedOut: z2.string().trim().min(1).optional(),
8558
- loggedIn: z2.string().trim().min(1).optional()
8559
- }).optional()
8560
- });
8561
- var cartLinkLabelConfigSchema = z2.discriminatedUnion("kind", [
8562
- z2.object({
8563
- kind: z2.literal("icon-only")
8564
- }),
8565
- z2.object({
8566
- kind: z2.literal("icon-with-label"),
8567
- label: z2.string().trim().min(1)
8568
- })
8569
- ]);
8570
- var cartLinkPayloadSchema = z2.object({
8571
- kind: z2.literal("cart"),
8572
- badge: z2.enum(["show-count", "hidden"]),
8573
- label: cartLinkLabelConfigSchema
8574
- });
8575
- var internalLinkPayloadSchema = z2.object({
8576
- kind: z2.literal("internal"),
8577
- routeId: z2.string().uuid(),
8578
- entityId: z2.string().uuid(),
8579
- entityType: z2.enum(["page", "content"]),
8580
- href: z2.string().min(1),
8581
- title: z2.string().min(1),
8582
- typeLabel: z2.string().min(1),
8583
- contentTypeKey: z2.string().nullable().optional(),
8584
- contentTypeName: z2.string().nullable().optional(),
8585
- updatedAt: z2.string().nullable().optional()
8586
- }).passthrough();
8587
- var externalLinkSchema = z2.object({
8588
- kind: z2.literal("external"),
8589
- // Navigation external links are expected to be absolute URLs.
8590
- href: z2.string().url()
8591
- });
8592
- var customLinkSchema = z2.object({
8593
- kind: z2.literal("url"),
8594
- href: z2.string().min(1)
8595
- });
8596
- var pageLinkSchema = z2.object({
8597
- kind: z2.literal("page"),
8598
- identifier: z2.string().min(1)
8599
- });
8600
- var entryLinkSchema = z2.object({
8601
- kind: z2.literal("entry"),
8602
- contentType: z2.string().min(1),
8603
- identifier: z2.string().min(1)
8604
- });
8605
- var linkPayloadSchema = z2.discriminatedUnion("kind", [
8606
- internalLinkPayloadSchema,
8607
- pageLinkSchema,
8608
- entryLinkSchema,
8609
- externalLinkSchema,
8610
- customLinkSchema,
8611
- portalLinkPayloadSchema,
8612
- cartLinkPayloadSchema
8613
- ]);
8614
- var navigationLinkInputSchemaOptions = [
8615
- pageLinkSchema,
8616
- entryLinkSchema,
8617
- externalLinkSchema,
8618
- customLinkSchema,
8619
- portalLinkPayloadSchema,
8620
- cartLinkPayloadSchema
8621
- ];
8622
- var navigationLinkInputSchema = z2.discriminatedUnion(
8623
- "kind",
8624
- navigationLinkInputSchemaOptions
8625
- );
8626
-
8627
- // ../api/src/sdkConfig/contracts.ts
8628
- import { z as z5 } from "zod";
8629
-
8630
- // ../blocks/src/system/manifest/schema.ts
8631
- import { z as z4 } from "zod";
8632
-
8633
- // ../media-core/src/aspectTransforms.ts
8634
- function parseAspectRatioValue(value) {
8635
- if (typeof value === "number") {
8636
- return Number.isFinite(value) && value > 0 ? value : void 0;
8637
- }
8638
- if (typeof value !== "string") return void 0;
8639
- const normalized = value.trim();
8640
- if (!normalized) return void 0;
8641
- if (normalized === "auto") return void 0;
8642
- if (normalized.includes(":") || normalized.includes("/")) {
8643
- const delimiter = normalized.includes(":") ? ":" : "/";
8644
- const [wRaw, hRaw] = normalized.split(delimiter);
8645
- const width = Number(wRaw?.trim());
8646
- const height = Number(hRaw?.trim());
8647
- if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {
8648
- return void 0;
8649
- }
8650
- return width / height;
8651
- }
8652
- const numeric = Number(normalized);
8653
- if (!Number.isFinite(numeric) || numeric <= 0) return void 0;
8654
- return numeric;
8655
- }
8656
-
8657
- // ../blocks/src/system/node/schema.ts
8658
- import { z as z3 } from "zod";
8659
- var transformStepSchema = z3.object({
8660
- id: z3.string().min(1, "Transform requires an identifier"),
8661
- options: z3.record(z3.string(), z3.unknown()).optional()
8662
- });
8663
- var bindingPathSchema = z3.string().min(1, "Binding path is required").regex(/[A-Za-z0-9_\.$\[\]/-]+/, "Binding path contains invalid characters");
8664
- var bindingSchema = z3.object({
8665
- from: bindingPathSchema,
8666
- fallback: z3.unknown().optional(),
8667
- transforms: transformStepSchema.array().default([]),
8668
- pick: z3.enum(["value", "collection", "context"]).default("value"),
8669
- coerce: z3.enum(["number", "boolean", "string"]).optional()
8670
- });
8671
- var repeatSchema = z3.object({
8672
- collection: bindingSchema,
8673
- itemName: z3.string().min(1).default("item"),
8674
- indexName: z3.string().min(1).default("index"),
8675
- limit: z3.number().int().positive().optional(),
8676
- sortBy: z3.object({
8677
- path: bindingPathSchema,
8678
- direction: z3.enum(["asc", "desc"]).default("asc")
8679
- }).optional()
8680
- });
8681
- var conditionSchema = z3.object({
8682
- when: bindingSchema,
8683
- equals: z3.unknown().optional(),
8684
- not: z3.boolean().default(false)
8685
- });
8686
- var dataScopeSchema = z3.object({
8687
- name: z3.string().min(1),
8688
- from: bindingSchema
8689
- });
8690
- var nodePropsSchema = z3.record(z3.string(), z3.unknown()).default({});
8691
- var nodeSchema = z3.object({
8692
- type: z3.string().min(1, "Node type is required"),
8693
- key: z3.string().optional(),
8694
- props: nodePropsSchema.optional(),
8695
- children: z3.lazy(() => nodeSchema.array().default([])).optional(),
8696
- $bind: bindingSchema.optional(),
8697
- $repeat: repeatSchema.optional(),
8698
- $when: conditionSchema.optional(),
8699
- $scopes: dataScopeSchema.array().optional()
8700
- });
8701
- var nodeTreeSchema = nodeSchema.array().or(nodeSchema);
8702
- var NodeSchema = nodeSchema;
8703
- var NodeTreeSchema = nodeTreeSchema;
8704
-
8705
- // ../theme-core/src/responsive/breakpoints.ts
8706
- var BREAKPOINT_SM = 640;
8707
- var BREAKPOINT_MD = 768;
8708
- var BREAKPOINT_LG = 1024;
8709
- var BREAKPOINT_XL = 1280;
8710
- var BREAKPOINT_SM_DOWN = BREAKPOINT_SM - 1;
8711
- var BREAKPOINT_MD_DOWN = BREAKPOINT_MD - 1;
8712
- var BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
8713
- function mqUp(px) {
8714
- return `(min-width: ${px}px)`;
8715
- }
8716
- function mqDown(px) {
8717
- return `(max-width: ${px}px)`;
8718
- }
8719
- function mqBetween(minPx, maxPx) {
8720
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
8721
- }
8722
- var MQ_SM_UP = mqUp(BREAKPOINT_SM);
8723
- var MQ_MD_UP = mqUp(BREAKPOINT_MD);
8724
- var MQ_LG_UP = mqUp(BREAKPOINT_LG);
8725
- var MQ_XL_UP = mqUp(BREAKPOINT_XL);
8726
- var MQ_SM_DOWN = mqDown(BREAKPOINT_SM_DOWN);
8727
- var MQ_MD_DOWN = mqDown(BREAKPOINT_MD_DOWN);
8728
- var MQ_LG_DOWN = mqDown(BREAKPOINT_LG_DOWN);
8729
- var MQ_TABLET_ONLY = mqBetween(BREAKPOINT_SM, BREAKPOINT_LG_DOWN);
8730
- var MQ_MAX_640 = mqDown(BREAKPOINT_SM);
8731
- var MQ_MAX_768 = mqDown(BREAKPOINT_MD);
8732
-
8733
- // ../blocks/src/system/layout/repeaterGrid.ts
8734
- var DEFAULT_REPEATER_GRID_SPAN_FIELD_ID = "gridSpan";
8735
- var DEFAULT_REPEATER_GRID_ROW_FIELD_ID = "gridRow";
8736
- var DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID = "gridColumn";
8737
- function asNonEmptyString(value) {
8738
- if (typeof value !== "string") return null;
8739
- const trimmed = value.trim();
8740
- return trimmed.length > 0 ? trimmed : null;
8741
- }
8742
- function resolveRepeaterGridSpanFieldId(options) {
8743
- return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_SPAN_FIELD_ID;
8744
- }
8745
- function resolveRepeaterGridRowFieldId(options) {
8746
- return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_ROW_FIELD_ID;
8747
- }
8748
- function resolveRepeaterGridColumnFieldId(options) {
8749
- return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID;
8750
- }
8751
-
8752
- // ../blocks/src/system/manifest/schema.ts
8753
- var visibilityLevels = ["admin", "designer", "author"];
8754
- var siteOptionSources = [
8755
- "eventCategories",
8756
- "venues",
8757
- "staffMembers"
8758
- ];
8759
- var mediaDeliverySchema = z4.object({
8760
- sizes: z4.string().optional(),
8761
- widthCandidates: z4.array(z4.number().int().positive()).optional(),
8762
- maxCssWidth: z4.number().positive().optional(),
8763
- maxCssHeight: z4.number().positive().optional(),
8764
- strategy: z4.enum(["default", "columnsAuto", "imageGalleryVariant"]).optional(),
8765
- strategyOptions: z4.record(z4.string(), z4.unknown()).optional()
8766
- });
8767
- var selectOptionSchema = z4.object({
8768
- value: z4.string(),
8769
- label: z4.string(),
8770
- description: z4.string().optional(),
8771
- icon: z4.string().optional()
8772
- });
8773
- var selectSourceSchema = z4.discriminatedUnion("kind", [
8774
- z4.object({
8775
- kind: z4.literal("static")
8776
- }),
8777
- z4.object({
8778
- kind: z4.literal("site"),
8779
- optionSource: z4.enum(siteOptionSources)
8780
- }),
8781
- z4.object({
8782
- kind: z4.literal("sdk")
8783
- })
8784
- ]);
8785
- function assertNeverSelectSource(value) {
8786
- throw new Error(`Unhandled select source: ${JSON.stringify(value)}`);
8787
- }
8788
- var uiSchema = z4.object({
8789
- widget: z4.string().optional(),
8790
- // Container/widget presets (used by Group/Repeater widgets themselves, not for widget selection)
8791
- preset: z4.enum(["disclosure"]).optional(),
8792
- flattenInRepeater: z4.boolean().optional(),
8793
- hidden: z4.boolean().optional(),
8794
- hideLabel: z4.boolean().optional(),
8795
- hideDescription: z4.boolean().optional(),
8796
- showCharCount: z4.union([
8797
- z4.number().int().positive(),
8798
- z4.object({ max: z4.number().int().positive() })
8799
- ]).optional(),
8800
- showSlugPreview: z4.boolean().optional(),
8801
- variant: z4.enum(["full", "inline", "limited", "media", "notes"]).optional(),
8802
- richTextVariant: z4.enum(["full", "inline", "limited", "media", "notes"]).optional(),
8803
- cropEditorMode: z4.enum(["dialog", "inline"]).optional(),
8804
- cropEditorAutoOpen: z4.boolean().optional(),
8805
- mediaPickerAutoOpen: z4.boolean().optional(),
8806
- showMediaPreview: z4.boolean().optional(),
8807
- showMediaOverlayActions: z4.boolean().optional(),
8808
- mediaDelivery: mediaDeliverySchema.optional(),
8809
- mediaDeliveryByVariant: z4.record(z4.string(), mediaDeliverySchema).optional(),
8810
- // Optional input hints for validators/widgets
8811
- inputType: z4.enum(["text", "email", "tel", "number"]).optional(),
8812
- min: z4.number().optional(),
8813
- max: z4.number().optional(),
8814
- step: z4.number().optional(),
8815
- showValue: z4.boolean().optional(),
8816
- pattern: z4.string().optional(),
8817
- placeholder: z4.string().optional(),
8818
- visibleWhen: z4.object({
8819
- field: z4.string().min(1),
8820
- equals: z4.any().optional(),
8821
- notEquals: z4.any().optional(),
8822
- oneOf: z4.array(z4.any()).optional(),
8823
- notIn: z4.array(z4.any()).optional()
8824
- }).optional(),
8825
- // Modal configuration for modal and group fields
8826
- modalConfig: z4.object({
8827
- buttonLabel: z4.string().optional(),
8828
- description: z4.string().optional(),
8829
- buttonVariant: z4.enum(["default", "outline"]).optional(),
8830
- showCustomizedIndicator: z4.boolean().optional(),
8831
- maxWidth: z4.string().optional()
8832
- }).optional(),
8833
- // Background field configuration
8834
- allowedTypes: z4.array(z4.enum(["color", "gradient", "image"])).optional(),
8835
- // Tab group configuration
8836
- fullWidth: z4.boolean().optional(),
8837
- // Field layout configuration
8838
- row: z4.string().optional(),
8839
- colSpan: z4.number().int().min(1).max(4).optional(),
8840
- // Group layout configuration
8841
- layout: z4.enum(["stack", "grid"]).optional(),
8842
- columns: z4.number().int().min(2).max(4).optional(),
8843
- // Named grid presets for GroupField grid layout.
8844
- // Use these for common responsive patterns to avoid embedding Tailwind strings in manifests.
8845
- gridColsPreset: z4.enum([
8846
- "simple2",
8847
- // base 1 col -> sm 2 cols
8848
- "simple3",
8849
- // base 1 col -> sm 2 cols -> md 3 cols
8850
- "simple4",
8851
- // base 1 col -> sm 2 cols -> lg 4 cols
8852
- "buttonCtaRow"
8853
- // CTA/button row with compact label/link widths on lg+
8854
- ]).optional(),
8855
- // Responsive grid columns for GroupField grid layout (mobile-first).
8856
- // Uses Tailwind breakpoints; when provided, GroupField will build the appropriate
8857
- // `grid-cols-*` classes from this config.
8858
- gridColumns: z4.object({
8859
- base: z4.number().int().min(1).max(4).optional(),
8860
- sm: z4.number().int().min(1).max(4).optional(),
8861
- md: z4.number().int().min(1).max(4).optional(),
8862
- lg: z4.number().int().min(1).max(4).optional(),
8863
- xl: z4.number().int().min(1).max(4).optional()
8864
- }).optional(),
8865
- // Group grid override: allows custom responsive grid column classes (e.g. unequal column widths)
8866
- gridColsClassName: z4.string().optional(),
8867
- // Repeater presentation presets
8868
- repeaterPreset: z4.enum(["thumbnailGrid", "layoutGrid"]).optional(),
8869
- thumbnailField: z4.string().optional(),
8870
- thumbnailAltField: z4.string().optional(),
8871
- thumbnailLabelField: z4.string().optional(),
8872
- thumbnailAspectRatio: z4.string().optional(),
8873
- thumbnailCardDensity: z4.enum(["compact", "comfortable"]).optional(),
8874
- layoutGridColumnsFields: z4.object({
8875
- base: z4.string().optional(),
8876
- sm: z4.string().optional(),
8877
- md: z4.string().optional(),
8878
- lg: z4.string().min(1),
8879
- xl: z4.string().optional()
8880
- }).optional(),
8881
- layoutGridSpanField: z4.string().optional(),
8882
- layoutGridRowField: z4.string().optional(),
8883
- layoutGridColumnField: z4.string().optional(),
8884
- layoutGridMaxRows: z4.number().int().positive().optional(),
8885
- // Icon picker configuration (used when ui.widget === 'iconPicker')
8886
- iconPickerPreset: z4.enum(["cta"]).optional(),
8887
- // Entry picker configuration
8888
- contentTypeField: z4.string().optional(),
8889
- fixedContentType: z4.string().optional(),
8890
- valueFrom: z4.enum(["id", "identifier", "slug"]).optional(),
8891
- siteOptionSource: z4.enum(siteOptionSources).optional(),
8892
- searchThreshold: z4.number().int().positive().optional(),
8893
- // Render in block header instead of form body (used for section styles)
8894
- renderInHeader: z4.boolean().optional(),
8895
- // Semantic field intent for content-first form routing and settings tab grouping
8896
- intent: z4.enum(["content", "display", "behavior", "style"]).optional()
8897
- }).partial();
8898
- var baseFieldSchema = z4.object({
8899
- id: z4.string().min(1, "Field id is required"),
8900
- label: z4.string().min(1, "Field label is required"),
8901
- description: z4.string().optional(),
8902
- visibleRoles: z4.array(z4.enum(visibilityLevels)).optional(),
8903
- defaultValue: z4.any().optional(),
8904
- required: z4.boolean().default(false),
8905
- ui: uiSchema.optional()
8906
- });
8907
- var textFieldSchema = baseFieldSchema.extend({
8908
- type: z4.literal("text"),
8909
- multiline: z4.boolean().default(false),
8910
- maxLength: z4.number().int().positive().optional()
8911
- });
8912
- var richTextFieldSchema = baseFieldSchema.extend({
8913
- type: z4.literal("richText")
8914
- });
8915
- var mediaFieldSchema = baseFieldSchema.extend({
8916
- type: z4.literal("media"),
8917
- mediaKinds: z4.array(
8918
- z4.enum(["image", "video", "audio", "document", "spreadsheet", "archive"])
8919
- ).default(["image"]),
8920
- aspectRatio: z4.string().optional()
8921
- });
8922
- var booleanFieldSchema = baseFieldSchema.extend({
8923
- type: z4.literal("boolean")
8924
- });
8925
- var dateFieldSchema = baseFieldSchema.extend({
8926
- type: z4.literal("date")
8927
- });
8928
- var timeFieldSchema = baseFieldSchema.extend({
8929
- type: z4.literal("time")
8930
- });
8931
- var dateTimeFieldSchema = baseFieldSchema.extend({
8932
- type: z4.literal("datetime")
8933
- });
8934
- var slugFieldSchema = baseFieldSchema.extend({
8935
- type: z4.literal("slug"),
8936
- sourceFieldId: z4.string().min(1).optional(),
8937
- statusFieldId: z4.string().min(1).optional(),
8938
- maxLength: z4.number().int().positive().optional()
8939
- });
8940
- var urlFieldSchema = baseFieldSchema.extend({
8941
- type: z4.literal("url"),
8942
- allowRelative: z4.boolean().default(false)
8943
- });
8944
- var linkFieldSchema = baseFieldSchema.extend({
8945
- type: z4.literal("link")
8946
- });
8947
- var selectFieldSchema = baseFieldSchema.extend({
8948
- type: z4.literal("select"),
8949
- options: z4.array(selectOptionSchema),
8950
- multiple: z4.boolean().default(false),
8951
- source: selectSourceSchema.optional()
8952
- }).superRefine((field, ctx) => {
8953
- const widget = field.ui?.widget;
8954
- const siteOptionSource = field.ui?.siteOptionSource;
8955
- if (!field.source) {
8956
- if (siteOptionSource || widget === "sdkSelect") {
8957
- ctx.addIssue({
8958
- code: z4.ZodIssueCode.custom,
8959
- message: "Runtime-backed select fields must declare source.kind explicitly",
8960
- path: ["source"]
8961
- });
8962
- return;
8963
- }
8964
- if (field.options.length === 0) {
8965
- ctx.addIssue({
8966
- code: z4.ZodIssueCode.custom,
8967
- message: "Select fields require at least one option unless a runtime source is configured",
8968
- path: ["options"]
8969
- });
8970
- }
8971
- return;
8972
- }
8973
- switch (field.source.kind) {
8974
- case "static":
8975
- if (siteOptionSource || widget === "sdkSelect") {
8976
- ctx.addIssue({
8977
- code: z4.ZodIssueCode.custom,
8978
- message: "Static select fields cannot declare runtime-backed UI metadata",
8979
- path: ["ui"]
8980
- });
8981
- }
8982
- if (field.options.length === 0) {
8983
- ctx.addIssue({
8984
- code: z4.ZodIssueCode.custom,
8985
- message: "Static select fields require at least one option",
8986
- path: ["options"]
8987
- });
8988
- }
8989
- return;
8990
- case "site":
8991
- if (field.options.length > 0) {
8992
- ctx.addIssue({
8993
- code: z4.ZodIssueCode.custom,
8994
- message: "Site-backed select fields must not define static options",
8995
- path: ["options"]
8996
- });
8997
- }
8998
- if (widget !== "siteOptionPicker") {
8999
- ctx.addIssue({
9000
- code: z4.ZodIssueCode.custom,
9001
- message: "Site-backed select fields must use the siteOptionPicker widget",
9002
- path: ["ui", "widget"]
9003
- });
9004
- }
9005
- if (siteOptionSource !== field.source.optionSource) {
9006
- ctx.addIssue({
9007
- code: z4.ZodIssueCode.custom,
9008
- message: "Site-backed select fields must keep ui.siteOptionSource in sync with source.optionSource",
9009
- path: ["ui", "siteOptionSource"]
9010
- });
9011
- }
9012
- return;
9013
- case "sdk":
9014
- if (widget !== "sdkSelect") {
9015
- ctx.addIssue({
9016
- code: z4.ZodIssueCode.custom,
9017
- message: "SDK-backed select fields must use the sdkSelect widget",
9018
- path: ["ui", "widget"]
9019
- });
9020
- }
9021
- if (siteOptionSource) {
9022
- ctx.addIssue({
9023
- code: z4.ZodIssueCode.custom,
9024
- message: "SDK-backed select fields cannot declare ui.siteOptionSource",
9025
- path: ["ui", "siteOptionSource"]
9026
- });
9027
- }
9028
- return;
9029
- default:
9030
- return assertNeverSelectSource(field.source);
9031
- }
9032
- });
9033
- var referenceFieldSchema = baseFieldSchema.extend({
9034
- type: z4.literal("reference"),
9035
- referenceKind: z4.string().min(1),
9036
- allowManualEntry: z4.boolean().default(false)
9037
- });
9038
- var itemTypeSchema = z4.object({
9039
- label: z4.string().min(1),
9040
- icon: z4.string().optional(),
9041
- fields: z4.lazy(
9042
- () => getFieldSchemaInternal().array().min(1, "Item type requires at least one field")
9043
- )
9044
- });
9045
- var repeaterFieldSchema = baseFieldSchema.extend({
9046
- type: z4.literal("repeater"),
9047
- itemLabel: z4.string().default("Item"),
9048
- itemLabelSource: z4.string().optional(),
9049
- minItems: z4.number().int().min(0).default(0),
9050
- maxItems: z4.number().int().positive().optional(),
9051
- // Monomorphic mode
9052
- schema: z4.object({
9053
- fields: z4.lazy(
9054
- () => getFieldSchemaInternal().array().min(1, "Repeater requires at least one field")
9055
- )
9056
- }).optional(),
9057
- // Polymorphic mode
9058
- polymorphic: z4.boolean().optional(),
9059
- itemTypes: z4.record(z4.string(), itemTypeSchema).optional(),
9060
- allowConversion: z4.boolean().default(true)
9061
- }).refine(
9062
- (data) => {
9063
- const hasSchema = data.schema !== void 0;
9064
- const hasPolymorphic = data.polymorphic === true && data.itemTypes !== void 0;
9065
- return hasSchema !== hasPolymorphic;
9066
- },
9067
- {
9068
- message: "Repeater must have either 'schema' (monomorphic) or 'polymorphic: true' with 'itemTypes' (polymorphic)"
9069
- }
9070
- ).refine(
9071
- (data) => {
9072
- if (data.ui?.repeaterPreset !== "layoutGrid") {
9073
- return true;
9074
- }
9075
- const columnsFields = data.ui.layoutGridColumnsFields;
9076
- return !!columnsFields?.lg;
8538
+ // src/public-api/runtime.ts
8539
+ var API_ENDPOINTS2 = Object.freeze({
8540
+ getSite: {
8541
+ path: "/sites",
8542
+ method: "GET",
8543
+ revalidate: 900,
8544
+ tags: ["riverbank:site", "riverbank:site:id:{id}", "riverbank:site:slug:{slug}", "riverbank:site:domain:{domain}"],
8545
+ auth: "public",
8546
+ responseKind: "json"
9077
8547
  },
9078
- {
9079
- message: "ui.layoutGridColumnsFields.lg is required when ui.repeaterPreset is 'layoutGrid'",
9080
- path: ["ui", "layoutGridColumnsFields", "lg"]
9081
- }
9082
- ).refine(
9083
- (data) => {
9084
- if (data.ui?.repeaterPreset !== "layoutGrid") {
9085
- return true;
9086
- }
9087
- const spanField = resolveRepeaterGridSpanFieldId({
9088
- id: typeof data.ui.layoutGridSpanField === "string" ? data.ui.layoutGridSpanField : void 0
9089
- });
9090
- const rowField = resolveRepeaterGridRowFieldId({
9091
- id: typeof data.ui.layoutGridRowField === "string" ? data.ui.layoutGridRowField : void 0
9092
- });
9093
- const columnField = resolveRepeaterGridColumnFieldId({
9094
- id: typeof data.ui.layoutGridColumnField === "string" ? data.ui.layoutGridColumnField : void 0
9095
- });
9096
- const requiredFieldIds = [spanField, rowField, columnField];
9097
- if (data.polymorphic && data.itemTypes) {
9098
- const itemTypes = Object.values(
9099
- data.itemTypes
9100
- );
9101
- return itemTypes.every(
9102
- (itemType) => Array.isArray(itemType.fields) && requiredFieldIds.every(
9103
- (requiredId) => itemType.fields?.some((field) => field.id === requiredId)
9104
- )
9105
- );
9106
- }
9107
- const schemaFields = data.schema?.fields;
9108
- if (!schemaFields) {
9109
- return true;
9110
- }
9111
- return requiredFieldIds.every(
9112
- (requiredId) => schemaFields.some((field) => field.id === requiredId)
9113
- );
8548
+ getContentByPath: {
8549
+ path: "/sites/{siteId}/pages",
8550
+ method: "GET",
8551
+ tags: ["riverbank:site:{siteId}:routable-content"],
8552
+ auth: "public",
8553
+ responseKind: "json"
9114
8554
  },
9115
- {
9116
- message: `layoutGrid repeaters require span/row/column fields (defaults: '${DEFAULT_REPEATER_GRID_SPAN_FIELD_ID}', '${DEFAULT_REPEATER_GRID_ROW_FIELD_ID}', '${DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID}') to exist in repeater item fields`,
9117
- path: ["ui", "layoutGridRowField"]
9118
- }
9119
- ).refine(
9120
- (data) => {
9121
- const thumbnailAspectRatio = data.ui?.thumbnailAspectRatio;
9122
- if (!thumbnailAspectRatio) {
9123
- return true;
9124
- }
9125
- return parseAspectRatioValue(thumbnailAspectRatio) != null;
8555
+ listPublishedEntries: {
8556
+ path: "/public/content/{siteId}/{type}/entries",
8557
+ method: "GET",
8558
+ revalidate: 60,
8559
+ tags: ["content-{siteId}-{type}"],
8560
+ auth: "public",
8561
+ responseKind: "json"
9126
8562
  },
9127
- {
9128
- message: "ui.thumbnailAspectRatio must be a valid ratio (e.g. '16/9', '4:3', or '1.5')",
9129
- path: ["ui", "thumbnailAspectRatio"]
9130
- }
9131
- ).refine(
9132
- (data) => {
9133
- const labelField = data.ui?.thumbnailLabelField;
9134
- if (!labelField) {
9135
- return true;
9136
- }
9137
- const schemaFields = data.schema?.fields;
9138
- if (!schemaFields) {
9139
- return true;
9140
- }
9141
- const field = schemaFields.find(
9142
- (candidate) => candidate.id === labelField
9143
- );
9144
- return field?.type === "text";
8563
+ getPublishedEntryPreview: {
8564
+ path: "/public/content/{siteId}/{type}/{slug}/preview",
8565
+ method: "GET",
8566
+ revalidate: 60,
8567
+ tags: ["content-{siteId}-{type}-{slug}"],
8568
+ auth: "public",
8569
+ responseKind: "json"
9145
8570
  },
9146
- {
9147
- message: "ui.thumbnailLabelField must reference a text field in the repeater schema",
9148
- path: ["ui", "thumbnailLabelField"]
9149
- }
9150
- );
9151
- var groupFieldSchema = baseFieldSchema.extend({
9152
- type: z4.literal("group"),
9153
- schema: z4.object({
9154
- fields: z4.lazy(
9155
- () => getFieldSchemaInternal().array().min(1, "Group requires at least one field")
9156
- )
9157
- })
9158
- });
9159
- var modalFieldSchema = baseFieldSchema.extend({
9160
- type: z4.literal("modal"),
9161
- schema: z4.object({
9162
- fields: z4.lazy(
9163
- () => getFieldSchemaInternal().array().min(1, "Modal requires at least one field")
9164
- )
9165
- })
9166
- });
9167
- var numberFieldSchema = baseFieldSchema.extend({
9168
- type: z4.literal("number"),
9169
- min: z4.number().optional(),
9170
- max: z4.number().optional(),
9171
- step: z4.number().optional()
9172
- });
9173
- var tabDefinitionSchema = z4.object({
9174
- id: z4.string().min(1),
9175
- label: z4.string().min(1),
9176
- icon: z4.string().optional(),
9177
- description: z4.string().optional(),
9178
- fields: z4.lazy(() => getFieldSchemaInternal().array()),
9179
- /** SDK section option that controls tab visibility based on site config */
9180
- sdkSectionOption: z4.enum(["backgroundColor", "backgroundGradient", "backgroundImage"]).optional()
9181
- });
9182
- var tabGroupFieldSchema = baseFieldSchema.extend({
9183
- type: z4.literal("tabGroup"),
9184
- tabs: z4.array(tabDefinitionSchema).min(1, "TabGroup requires at least one tab"),
9185
- activeTabField: z4.string().optional()
9186
- });
9187
- var presetOptionSchema = z4.object({
9188
- value: z4.string(),
9189
- label: z4.string()
9190
- });
9191
- var presetOrCustomFieldSchema = baseFieldSchema.extend({
9192
- type: z4.literal("presetOrCustom"),
9193
- presets: z4.array(presetOptionSchema).min(1, "PresetOrCustom requires at least one preset"),
9194
- customInput: z4.object({
9195
- placeholder: z4.string().optional(),
9196
- pattern: z4.string().optional(),
9197
- helpText: z4.string().optional()
9198
- }).optional()
9199
- });
9200
- var contentTypeSelectFieldSchema = baseFieldSchema.extend({
9201
- type: z4.literal("contentTypeSelect"),
9202
- /** Filter: all, routable (hasPages=true), nonRoutable (hasPages=false) */
9203
- filter: z4.enum(["all", "routable", "nonRoutable"]).default("all")
9204
- });
9205
- var entryPickerFieldSchema = baseFieldSchema.extend({
9206
- type: z4.literal("entryPicker"),
9207
- // Note: these options also exist under `ui.*` (see uiSchema) because older manifests
9208
- // and some authoring surfaces store widget-specific configuration there. We support
9209
- // both locations so SDK/custom manifests can use the more ergonomic top-level fields
9210
- // without breaking existing `ui.*` configs.
9211
- /** Fixed content type to filter entries by (no sibling contentType field required) */
9212
- fixedContentType: z4.string().optional(),
9213
- /** Field ID that contains the content type to filter entries by */
9214
- contentTypeField: z4.string().optional(),
9215
- /** What value should be stored when an entry is selected */
9216
- valueFrom: z4.enum(["id", "identifier", "slug"]).optional()
9217
- });
9218
- var _fieldSchemaInternal = null;
9219
- function getFieldSchemaInternal() {
9220
- if (_fieldSchemaInternal) {
9221
- return _fieldSchemaInternal;
9222
- }
9223
- _fieldSchemaInternal = z4.discriminatedUnion("type", [
9224
- textFieldSchema,
9225
- richTextFieldSchema,
9226
- mediaFieldSchema,
9227
- booleanFieldSchema,
9228
- numberFieldSchema,
9229
- dateFieldSchema,
9230
- timeFieldSchema,
9231
- dateTimeFieldSchema,
9232
- slugFieldSchema,
9233
- urlFieldSchema,
9234
- linkFieldSchema,
9235
- selectFieldSchema,
9236
- referenceFieldSchema,
9237
- repeaterFieldSchema,
9238
- groupFieldSchema,
9239
- modalFieldSchema,
9240
- tabGroupFieldSchema,
9241
- presetOrCustomFieldSchema,
9242
- contentTypeSelectFieldSchema,
9243
- entryPickerFieldSchema
9244
- ]);
9245
- return _fieldSchemaInternal;
9246
- }
9247
- var fieldSchema = new Proxy({}, {
9248
- get(_, prop) {
9249
- const schema = getFieldSchemaInternal();
9250
- const value = schema[prop];
9251
- return typeof value === "function" ? value.bind(schema) : value;
9252
- },
9253
- // Forward has checks to the real schema
9254
- has(_, prop) {
9255
- return prop in getFieldSchemaInternal();
9256
- }
9257
- });
9258
- var slotSchema = z4.object({
9259
- id: z4.string().min(1),
9260
- label: z4.string().min(1),
9261
- allowedKinds: z4.array(z4.string()).default([]),
9262
- min: z4.number().int().min(0).default(0),
9263
- max: z4.number().int().positive().optional(),
9264
- help: z4.string().optional(),
9265
- visibleRoles: z4.array(z4.enum(visibilityLevels)).optional()
9266
- });
9267
- var typographyTokens = [
9268
- "display",
9269
- "heading",
9270
- "subheading",
9271
- "body",
9272
- "caption"
9273
- ];
9274
- var colorTokens = [
9275
- "background",
9276
- "surface",
9277
- "foreground",
9278
- "accent",
9279
- "muted"
9280
- ];
9281
- var spacingTokens = ["none", "xs", "sm", "md", "lg", "xl"];
9282
- var radiusTokens = ["none", "sm", "md", "lg", "full"];
9283
- var styleTokenSchema = z4.object({
9284
- background: z4.enum(colorTokens).optional(),
9285
- foreground: z4.enum(colorTokens).optional(),
9286
- border: z4.enum(colorTokens).optional(),
9287
- typography: z4.enum(typographyTokens).optional(),
9288
- spacing: z4.enum(spacingTokens).optional(),
9289
- radius: z4.enum(radiusTokens).optional()
9290
- });
9291
- var behaviourSchema = z4.object({
9292
- supportsThemeSwitching: z4.boolean().default(true),
9293
- inlineEditing: z4.boolean().default(false),
9294
- animation: z4.boolean().default(false),
9295
- // Hide from block picker palettes (e.g., header/footer system blocks)
9296
- paletteHidden: z4.boolean().default(false),
9297
- // Block manages its own wrapper (for sticky/fixed positioning)
9298
- managesOwnWrapper: z4.boolean().optional()
9299
- });
9300
- var blockCategoryEnum = z4.enum([
9301
- "marketing",
9302
- "content",
9303
- "blog",
9304
- "media",
9305
- "layout",
9306
- "interactive"
9307
- ]);
9308
- var manifestSchema = z4.object({
9309
- name: z4.string().min(1),
9310
- version: z4.string().min(1),
9311
- title: z4.string().min(1),
9312
- titleSource: z4.union([z4.string().min(1), z4.array(z4.string().min(1)).min(1)]).optional(),
9313
- description: z4.string().optional(),
9314
- component: z4.string().min(1),
9315
- fields: fieldSchema.array().default([]),
9316
- slots: slotSchema.array().default([]),
9317
- styleTokens: styleTokenSchema.optional(),
9318
- behaviours: behaviourSchema.optional(),
9319
- layout: NodeTreeSchema.optional(),
9320
- /**
9321
- * Optional list of nested field paths that should be surfaced in the main form body
9322
- * as "shortcuts" (render-only). These paths should refer to existing data within the
9323
- * block content object (e.g. `_sectionStyles.background.image`).
9324
- *
9325
- * The original fields remain available in settings for power users.
9326
- */
9327
- promotedFields: z4.array(z4.string().min(1)).optional(),
9328
- // Block variants system
9329
- variants: z4.record(z4.string(), NodeTreeSchema).optional(),
9330
- defaultVariant: z4.string().optional(),
9331
- variantOptions: z4.record(
9332
- z4.string(),
9333
- z4.object({
9334
- label: z4.string().optional(),
9335
- description: z4.string().optional(),
9336
- icon: z4.string().optional()
9337
- }).optional()
9338
- ).optional(),
9339
- // Discovery metadata
9340
- category: blockCategoryEnum.optional(),
9341
- contentTypes: z4.array(z4.string()).optional(),
9342
- tags: z4.array(z4.string()).optional(),
9343
- icon: z4.string().optional()
9344
- });
9345
-
9346
- // ../blocks/src/system/data/loaderEndpoints.ts
9347
- var SUPPORTED_LOADER_ENDPOINTS = [
9348
- "listPublishedEntries",
9349
- "getPublishedEntryPreview",
9350
- "listPublicEvents",
9351
- "getPublicEventDetails",
9352
- "listPublicCourses",
9353
- "listPublicTeamMembers",
9354
- "listPublicProducts",
9355
- "listPublicPasses",
9356
- "listPublicMemberships",
9357
- "getPublicFormById",
9358
- "getPublicBookingServices"
9359
- ];
9360
-
9361
- // ../api/src/sdkConfig/contracts.ts
9362
- function unsafeRetypeZodSchema(schema) {
9363
- return schema;
9364
- }
9365
- var navIdListSchema = z5.preprocess((value) => {
9366
- if (!Array.isArray(value)) return void 0;
9367
- const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
9368
- return filtered.length > 0 ? filtered : void 0;
9369
- }, z5.array(z5.string()).max(200).optional());
9370
- var dashboardNavVisibilityBaseSchema = z5.object({
9371
- mode: z5.enum(["augment", "restrict"]).optional(),
9372
- allowIds: navIdListSchema,
9373
- denyIds: navIdListSchema
9374
- }).strip();
9375
- var dashboardNavVisibilityRolesSchema = z5.object({
9376
- administrator: dashboardNavVisibilityBaseSchema.optional(),
9377
- editor: dashboardNavVisibilityBaseSchema.optional(),
9378
- team_member: dashboardNavVisibilityBaseSchema.optional()
9379
- }).strip().optional();
9380
- var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
9381
- roles: dashboardNavVisibilityRolesSchema
9382
- }).strip();
9383
- var dashboardNavigationConfigSchema = z5.object({
9384
- siteNav: dashboardNavVisibilitySchema.optional(),
9385
- settingsNav: dashboardNavVisibilitySchema.optional()
9386
- }).strip();
9387
- var dashboardConfigSchema = z5.object({
9388
- previewEditingEnabled: z5.boolean().optional(),
9389
- navigation: dashboardNavigationConfigSchema.optional()
9390
- }).strip();
9391
- var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
9392
- var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
9393
- var sdkLoaderEndpointSchema = z5.enum(SUPPORTED_LOADER_ENDPOINTS);
9394
- var loaderParamBindingSchema = z5.object({
9395
- $bind: z5.object({
9396
- from: z5.string().min(1, "Binding path is required"),
9397
- fallback: z5.string().optional()
9398
- })
9399
- });
9400
- var loaderParamValueSchema = z5.union([
9401
- z5.string(),
9402
- z5.number(),
9403
- z5.boolean(),
9404
- loaderParamBindingSchema
9405
- ]);
9406
- var sdkConfigLoaderSchema = z5.object({
9407
- endpoint: sdkLoaderEndpointSchema,
9408
- params: z5.record(z5.string(), loaderParamValueSchema),
9409
- mode: z5.enum(["server", "client"]).default("server")
9410
- });
9411
- var sdkDataLoadersSchema = z5.record(z5.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
9412
- var sdkCustomBlockIdSchema = z5.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
9413
- message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
9414
- }).transform((value) => value);
9415
- var sdkCustomBlockInputSchema = z5.object({
9416
- id: sdkCustomBlockIdSchema,
9417
- title: z5.string().min(1),
9418
- titleSource: z5.union([z5.string().min(1), z5.array(z5.string().min(1)).min(1)]).optional(),
9419
- description: z5.string().optional(),
9420
- category: blockCategoryEnum,
9421
- icon: z5.string().optional(),
9422
- tags: z5.array(z5.string()).optional(),
9423
- fields: fieldDefinitionInputSchema.array().min(1),
9424
- dataLoaders: sdkDataLoadersSchema,
9425
- layout: NodeSchema.optional(),
9426
- variants: z5.record(z5.string().min(1), NodeSchema).optional(),
9427
- defaultVariant: z5.string().min(1).optional(),
9428
- variantOptions: z5.record(
9429
- z5.string().min(1),
9430
- z5.object({
9431
- label: z5.string().min(1).optional(),
9432
- description: z5.string().min(1).optional(),
9433
- icon: z5.string().min(1).optional()
9434
- })
9435
- ).optional()
9436
- }).superRefine((data, ctx) => {
9437
- if (data.titleSource) {
9438
- const sources = Array.isArray(data.titleSource) ? data.titleSource : [data.titleSource];
9439
- sources.forEach((source, index) => {
9440
- const exists = data.fields.some((field) => field.id === source);
9441
- if (!exists) {
9442
- ctx.addIssue({
9443
- code: z5.ZodIssueCode.custom,
9444
- message: `titleSource must reference a valid field ID (got "${source}")`,
9445
- path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
9446
- });
9447
- }
9448
- });
9449
- }
9450
- if (data.layout && data.variants) {
9451
- ctx.addIssue({
9452
- code: z5.ZodIssueCode.custom,
9453
- message: "Custom block must define either `layout` or `variants`, not both",
9454
- path: ["variants"]
9455
- });
9456
- }
9457
- if (data.variants) {
9458
- const keys = Object.keys(data.variants);
9459
- if (keys.length === 0) {
9460
- ctx.addIssue({
9461
- code: z5.ZodIssueCode.custom,
9462
- message: "`variants` must contain at least one variant key",
9463
- path: ["variants"]
9464
- });
9465
- }
9466
- if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
9467
- ctx.addIssue({
9468
- code: z5.ZodIssueCode.custom,
9469
- message: "`defaultVariant` must be a key present in `variants`",
9470
- path: ["defaultVariant"]
9471
- });
9472
- }
9473
- if (data.variantOptions) {
9474
- for (const key of Object.keys(data.variantOptions)) {
9475
- if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
9476
- ctx.addIssue({
9477
- code: z5.ZodIssueCode.custom,
9478
- message: "`variantOptions` key must exist in `variants`",
9479
- path: ["variantOptions", key]
9480
- });
9481
- }
9482
- }
9483
- }
9484
- }
9485
- });
9486
- var sdkBlockFieldExtensionInputSchema = z5.object({
9487
- fields: fieldDefinitionInputSchema.array().min(1)
9488
- });
9489
- var sdkBlockFieldExtensionsInputSchema = z5.record(
9490
- z5.string().min(1),
9491
- sdkBlockFieldExtensionInputSchema
9492
- );
9493
- var sdkThemePaletteSchema = z5.record(z5.string(), z5.string());
9494
- var sdkThemeConfigSchema = z5.object({
9495
- palette: sdkThemePaletteSchema
9496
- });
9497
- var sdkSectionBackgroundSchema = z5.object({
9498
- id: z5.string().min(1),
9499
- label: z5.string().min(1),
9500
- token: z5.string().min(1)
9501
- });
9502
- var sdkSectionOptionsConfigSchema = z5.object({
9503
- backgroundColor: z5.boolean().optional(),
9504
- backgroundImage: z5.boolean().optional(),
9505
- backgroundGradient: z5.boolean().optional(),
9506
- spacing: z5.union([z5.array(z5.enum(["compact", "default", "spacious"])), z5.boolean()]).optional(),
9507
- textColor: z5.boolean().optional()
9508
- });
9509
- var sdkContainerOptionsConfigSchema = z5.object({
9510
- maxWidth: z5.union([z5.array(z5.enum(["narrow", "default", "wide", "full"])), z5.boolean()]).optional(),
9511
- alignment: z5.union([z5.array(z5.enum(["left", "center", "right"])), z5.boolean()]).optional()
9512
- });
9513
- var sdkSiteStyleConfigSchema = z5.object({
9514
- sectionBackgrounds: z5.array(sdkSectionBackgroundSchema).optional(),
9515
- sectionOptions: sdkSectionOptionsConfigSchema.optional(),
9516
- containerOptions: sdkContainerOptionsConfigSchema.optional()
9517
- });
9518
- var sdkSiteLayoutConfigSchema = z5.object({
9519
- footerBlocks: z5.array(
9520
- z5.object({
9521
- id: z5.string().min(1).optional(),
9522
- kind: z5.string().min(1),
9523
- content: z5.record(z5.string(), z5.unknown()).optional()
9524
- })
9525
- ).optional()
9526
- });
9527
- var sdkFieldSelectOptionSchema = z5.object({
9528
- value: z5.string(),
9529
- label: z5.string()
9530
- });
9531
- var sdkBlockFieldConfigSchema = z5.object({
9532
- options: z5.array(sdkFieldSelectOptionSchema).optional()
9533
- });
9534
- var sdkBlockFieldOptionsMapSchema = z5.record(
9535
- z5.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
9536
- message: "Block ID must be 'block.*' or 'custom.*' format"
9537
- }),
9538
- z5.record(z5.string().min(1), sdkBlockFieldConfigSchema)
9539
- ).optional();
9540
- var sdkContentTypeTemplateConfigSchema = z5.object({
9541
- blocks: z5.array(z5.unknown())
9542
- }).passthrough();
9543
- var sdkContentTypeConfigSchema = z5.object({
9544
- key: z5.string().min(1),
9545
- fields: z5.array(z5.unknown()),
9546
- template: sdkContentTypeTemplateConfigSchema.nullable().optional()
9547
- }).passthrough();
9548
- var sdkContentConfigSchema = z5.object({
9549
- contentTypes: z5.array(sdkContentTypeConfigSchema).optional(),
9550
- pages: z5.array(z5.unknown()).optional(),
9551
- entries: z5.array(z5.unknown()).optional(),
9552
- navigationMenus: z5.array(z5.unknown()).optional(),
9553
- settings: z5.unknown().optional()
9554
- }).passthrough();
9555
- var SDK_WORKFLOW_ID_MAX_LENGTH = 120;
9556
- var SDK_WORKFLOW_TITLE_MAX_LENGTH = 120;
9557
- var SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH = 500;
9558
- var SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH = 120;
9559
- var SDK_WORKFLOW_ENDPOINT_MAX_LENGTH = 500;
9560
- var SDK_WORKFLOW_TRIGGER_MAX_COUNT = 5;
9561
- var SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH = 120;
9562
- var SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT = 10;
9563
- var SDK_WORKFLOW_MAX_COUNT = 50;
9564
- var SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH = 120;
9565
- var SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH = 500;
9566
- var SDK_WORKFLOW_ID_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
9567
- var SDK_WORKFLOW_ENDPOINT_PATTERN = /^\//;
9568
- var sdkWorkflowIdSchema = z5.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
9569
- message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
9570
- });
9571
- var sdkWorkflowEndpointSchema = z5.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
9572
- var sdkWorkflowManualTriggerSchema = z5.object({
9573
- type: z5.literal("manual")
9574
- }).strict();
9575
- var sdkWorkflowTriggerFieldSchema = z5.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
9576
- message: "Workflow trigger fields must be top-level content field IDs, not paths"
9577
- });
9578
- var sdkWorkflowFieldChangedConditionSchema = z5.object({
9579
- field: sdkWorkflowTriggerFieldSchema,
9580
- changed: z5.literal(true)
9581
- }).strict();
9582
- var sdkWorkflowFieldEmptyConditionSchema = z5.object({
9583
- field: sdkWorkflowTriggerFieldSchema,
9584
- isEmpty: z5.boolean()
9585
- }).strict();
9586
- var sdkWorkflowEntryDraftUpdatedTriggerSchema = z5.object({
9587
- type: z5.literal("entry.draft.updated"),
9588
- when: z5.array(
9589
- z5.union([
9590
- sdkWorkflowFieldChangedConditionSchema,
9591
- sdkWorkflowFieldEmptyConditionSchema
9592
- ])
9593
- ).min(1).max(SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT)
9594
- }).strict();
9595
- var sdkWorkflowTriggerSchema = z5.discriminatedUnion("type", [
9596
- sdkWorkflowManualTriggerSchema,
9597
- sdkWorkflowEntryDraftUpdatedTriggerSchema
9598
- ]);
9599
- var sdkWorkflowConfirmationSchema = z5.object({
9600
- title: z5.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
9601
- body: z5.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
9602
- }).strict();
9603
- var sdkWorkflowConfigSchema = z5.object({
9604
- id: sdkWorkflowIdSchema,
9605
- title: z5.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
9606
- description: z5.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
9607
- contentType: z5.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
9608
- endpoint: sdkWorkflowEndpointSchema,
9609
- triggers: z5.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
9610
- confirmation: sdkWorkflowConfirmationSchema.optional()
9611
- }).strict();
9612
- var sdkWorkflowsSchema = z5.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
9613
- const ids = workflows.map((workflow) => workflow.id);
9614
- return ids.length === new Set(ids).size;
9615
- }, { message: "Workflow IDs must be unique" }).optional();
9616
- var riverbankSiteConfigInputSchema = z5.object({
9617
- siteId: z5.string().uuid(),
9618
- previewUrl: z5.string().url().optional(),
9619
- liveUrl: z5.string().url().optional(),
9620
- theme: sdkThemeConfigSchema.optional(),
9621
- styles: sdkSiteStyleConfigSchema.optional(),
9622
- layout: sdkSiteLayoutConfigSchema.optional(),
9623
- customBlocks: z5.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
9624
- const ids = blocks.map((b) => b.id);
9625
- return ids.length === new Set(ids).size;
9626
- }, { message: "Block IDs must be unique" }).optional(),
9627
- blockFieldOptions: sdkBlockFieldOptionsMapSchema,
9628
- blockFieldExtensions: sdkBlockFieldExtensionsInputSchema.optional(),
9629
- workflows: sdkWorkflowsSchema,
9630
- content: sdkContentConfigSchema.optional(),
9631
- contentDir: z5.string().optional(),
9632
- sync: z5.object({
9633
- existingEntries: z5.enum(["skip", "update"]).optional()
9634
- }).optional(),
9635
- deploy: z5.object({
9636
- verifyCommand: z5.string().optional(),
9637
- prebuildOutput: z5.string().optional()
9638
- }).optional(),
9639
- themeSource: z5.enum(["local", "cms"]).optional(),
9640
- activeTheme: z5.string().optional(),
9641
- enablePortal: z5.boolean().optional(),
9642
- dashboard: dashboardConfigSchema.optional()
9643
- }).strict();
9644
- var pushSdkConfigBodySchema = z5.object({
9645
- config: riverbankSiteConfigInputSchema,
9646
- forceContentTypes: z5.boolean().optional()
9647
- }).strict();
9648
-
9649
- // ../api/src/siteOnboarding.ts
9650
- import { z as z6 } from "zod";
9651
- var LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS = {
9652
- configure_appointments: {
9653
- requirementId: "configure_appointments",
9654
- reason: "launch_anyway"
9655
- }
9656
- };
9657
- var acknowledgeLaunchRequirementRequestSchema = z6.discriminatedUnion(
9658
- "requirementId",
9659
- [
9660
- z6.object({
9661
- requirementId: z6.literal("review_generated_site")
9662
- }),
9663
- z6.object({
9664
- requirementId: z6.literal(
9665
- LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.requirementId
9666
- ),
9667
- overrideReason: z6.literal(
9668
- LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.reason
9669
- )
9670
- })
9671
- ]
9672
- );
9673
- var goLiveSiteRequestSchema = z6.object({
9674
- acceptExtraSiteCharge: z6.boolean().optional()
9675
- });
9676
-
9677
- // ../api/src/customerMembershipOutcomes.ts
9678
- var CANONICAL_REFUND_CONFLICT_CODES = [
9679
- "already_refunded",
9680
- "idempotency_amount_mismatch",
9681
- "idempotency_method_mismatch",
9682
- "refund_in_progress"
9683
- ];
9684
- var CANONICAL_REFUND_PLANNER_ERROR_CODES = [
9685
- ...CANONICAL_REFUND_CONFLICT_CODES,
9686
- "amount_exceeds_remaining",
9687
- "pass_revoke_requires_full_refund",
9688
- "refund_failed"
9689
- ];
9690
- var CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
9691
- ...CANONICAL_REFUND_PLANNER_ERROR_CODES,
9692
- "payment_intent_not_found",
9693
- "stripe_error",
9694
- "stale_pending_missing_context",
9695
- "non_refundable_deposit_remaining"
9696
- ];
9697
- var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
9698
- "not_found",
9699
- "stripe_not_connected",
9700
- "credit_refunds_disabled",
9701
- "invoice_not_found",
9702
- "invoice_lookup_failed",
9703
- ...CANONICAL_REFUND_PLANNER_ERROR_CODES,
9704
- "payment_intent_not_found",
9705
- "stripe_error",
9706
- "stale_pending_missing_context"
9707
- ];
9708
-
9709
- // ../api/src/bookingRefundOutcomes.ts
9710
- var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
9711
- "missing_amount",
9712
- "amount_exceeds_remaining",
9713
- "credit_refunds_disabled",
9714
- "missing_credit_customer",
9715
- "deposit_refund_override_required",
9716
- "refund_revoke_requires_full_line_refund",
9717
- "unified_order_link_required"
9718
- ];
9719
- var EVENT_ATTENDEE_REFUND_INVALID_CODES = [
9720
- "manual_booking_not_refundable",
9721
- ...STANDARD_LINE_ITEM_REFUND_INVALID_CODES
9722
- ];
9723
- var MANAGED_PRODUCT_REFUND_INVALID_CODES = [
9724
- "credit_refunds_disabled",
9725
- "not_refundable",
9726
- "amount_exceeds_remaining"
9727
- ];
9728
- var CUSTOMER_PASS_REFUND_INVALID_CODES = [
9729
- ...MANAGED_PRODUCT_REFUND_INVALID_CODES,
9730
- "pass_revoke_requires_full_refund"
9731
- ];
9732
- var CUSTOMER_PASS_REFUND_FAILED_CODES = [
9733
- "not_found",
9734
- "credit_refunds_disabled",
9735
- "payment_intent_lookup_failed",
9736
- ...CANONICAL_ADMIN_REFUND_FAILURE_CODES
9737
- ];
9738
- var EVENT_ATTENDEE_REFUND_FAILED_CODES = [
9739
- "not_found",
9740
- "refund_not_allowed",
9741
- ...EVENT_ATTENDEE_REFUND_INVALID_CODES,
9742
- ...CANONICAL_ADMIN_REFUND_FAILURE_CODES
9743
- ];
9744
- var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
9745
- "not_found",
9746
- ...STANDARD_LINE_ITEM_REFUND_INVALID_CODES,
9747
- ...CANONICAL_ADMIN_REFUND_FAILURE_CODES
9748
- ];
9749
-
9750
- // ../api/src/bookingVerticals.ts
9751
- var VERTICAL_IDS = [
9752
- "yoga_wellness",
9753
- "fitness_pt",
9754
- "dance_school",
9755
- "therapist_practitioner",
9756
- "beauty_spa",
9757
- "consultant_coach",
9758
- "training_provider",
9759
- "retreat_centre",
9760
- "music_school",
9761
- "performing_arts_school",
9762
- "community_wellbeing",
9763
- "venue_event_space"
9764
- ];
9765
- var BOOKING_ENGINE_BY_BEHAVIOUR = {
9766
- class: "event_series",
9767
- workshop: "event_series",
9768
- course: "course",
9769
- retreat: "event_series",
9770
- performance: "event_series",
9771
- appointment: "appointment_service"
9772
- };
9773
- var VERTICAL_BOOKING_PRESETS = [
9774
- preset("yoga_wellness.classes", "yoga_wellness", "class", "Class", "Classes", "Regular scheduled classes and group sessions."),
9775
- preset("yoga_wellness.workshops", "yoga_wellness", "workshop", "Workshop", "Workshops", "One-off workshops, day retreats, or special sessions."),
9776
- preset("yoga_wellness.courses", "yoga_wellness", "course", "Course", "Courses", "Fixed-schedule courses or multi-session groups."),
9777
- preset("yoga_wellness.retreats", "yoga_wellness", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats and immersive experiences."),
9778
- preset("yoga_wellness.appointments", "yoga_wellness", "appointment", "Appointment", "Appointments", "Private sessions, consultations, or one-to-one support."),
9779
- preset("fitness_pt.group_training", "fitness_pt", "class", "Group training", "Group training", "Regular scheduled classes and group sessions."),
9780
- preset("fitness_pt.personal_training", "fitness_pt", "appointment", "Personal training", "Personal training", "One-to-one sessions booked from your availability."),
9781
- preset("fitness_pt.programmes", "fitness_pt", "course", "Programme", "Programmes", "Multi-session programmes like bootcamps or courses."),
9782
- preset("fitness_pt.workshops", "fitness_pt", "workshop", "Workshop", "Workshops", "One-off workshops, events, or special sessions."),
9783
- preset("fitness_pt.retreats", "fitness_pt", "retreat", "Retreat", "Retreats", "Multi-day or residential fitness experiences."),
9784
- preset("dance_school.classes", "dance_school", "class", "Class", "Classes", "Regular group classes and weekly sessions."),
9785
- preset("dance_school.terms", "dance_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
9786
- preset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
9787
- preset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
9788
- preset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
9789
- preset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
9790
- preset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
9791
- preset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
9792
- preset("beauty_spa.appointments", "beauty_spa", "appointment", "Appointment", "Appointments", "Treatments, consultations, services, and sessions."),
9793
- preset("beauty_spa.workshops", "beauty_spa", "workshop", "Workshop", "Workshops", "Skincare workshops, makeup lessons, demos, or group events."),
9794
- preset("consultant_coach.appointments", "consultant_coach", "appointment", "Appointment", "Appointments", "One-to-one calls, consultations, reviews, or coaching sessions."),
9795
- preset("consultant_coach.workshops", "consultant_coach", "workshop", "Workshop", "Workshops", "One-off group sessions, webinars, or strategy days."),
9796
- preset("consultant_coach.courses", "consultant_coach", "course", "Course", "Courses", "Fixed-schedule cohorts or multi-session group programmes."),
9797
- preset("consultant_coach.retreats", "consultant_coach", "retreat", "Retreat", "Retreats", "Multi-day coaching retreats or immersive experiences."),
9798
- preset("training_provider.courses", "training_provider", "course", "Course", "Courses", "Fixed-schedule courses, cohorts, and multi-session training."),
9799
- preset("training_provider.workshops", "training_provider", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, and short training sessions."),
9800
- preset("training_provider.appointments", "training_provider", "appointment", "Appointment", "Appointments", "Consultations, assessments, mentoring, or office hours."),
9801
- preset("training_provider.classes", "training_provider", "class", "Class", "Classes", "Regular classes, sessions, or groups.", "settings"),
9802
- preset("training_provider.residentials", "training_provider", "retreat", "Residential", "Residentials", "Residential courses or multi-day training experiences.", "settings"),
9803
- preset("retreat_centre.retreats", "retreat_centre", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats with richer booking needs."),
9804
- preset("retreat_centre.workshops", "retreat_centre", "workshop", "Workshop", "Workshops", "One-day retreats, ceremonies, workshops, or special events."),
9805
- preset("retreat_centre.classes", "retreat_centre", "class", "Class", "Classes", "Regular sessions like guided meditations or group practices."),
9806
- preset("retreat_centre.courses", "retreat_centre", "course", "Course", "Courses", "Fixed-schedule programmes or multi-session experiences."),
9807
- preset("retreat_centre.appointments", "retreat_centre", "appointment", "Appointment", "Appointments", "Private sessions, therapies, consultations, or add-ons."),
9808
- preset("music_school.lessons", "music_school", "appointment", "Lesson", "Lessons", "One-to-one lessons, consultations, or coaching sessions."),
9809
- preset("music_school.classes", "music_school", "class", "Class", "Classes", "Regular group classes, ensembles, or recurring sessions."),
9810
- preset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
9811
- preset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
9812
- preset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
9813
- preset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
9814
- preset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
9815
- preset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
9816
- preset("performing_arts_school.performances", "performing_arts_school", "performance", "Performance", "Performances", "Shows, showcases, productions, or ticketed performances."),
9817
- preset("performing_arts_school.lessons", "performing_arts_school", "appointment", "Lesson", "Lessons", "One-to-one lessons, coaching, or audition prep."),
9818
- preset("community_wellbeing.classes", "community_wellbeing", "class", "Class", "Classes", "Regular groups, sessions, practices, or weekly activities."),
9819
- preset("community_wellbeing.workshops", "community_wellbeing", "workshop", "Workshop", "Workshops", "One-off workshops, talks, events, or gatherings."),
9820
- preset("community_wellbeing.courses", "community_wellbeing", "course", "Course", "Courses", "Fixed-schedule courses, study groups, or multi-session programmes."),
9821
- preset("community_wellbeing.appointments", "community_wellbeing", "appointment", "Appointment", "Appointments", "One-to-one appointments, consultations, or support sessions."),
9822
- preset("community_wellbeing.retreats", "community_wellbeing", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats."),
9823
- preset("venue_event_space.resource_hire", "venue_event_space", "appointment", "Hire slot", "Hire slots", "Future room, venue, and resource hire bookings.", "future")
9824
- ];
9825
- var VERTICAL_ID_SET = new Set(VERTICAL_IDS);
9826
- var VERTICAL_PRESET_ID_SET = new Set(
9827
- VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
9828
- );
9829
- function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
9830
- return {
9831
- id,
9832
- verticalId,
9833
- canonicalBehaviour,
9834
- engine: BOOKING_ENGINE_BY_BEHAVIOUR[canonicalBehaviour],
9835
- availability,
9836
- label,
9837
- pluralLabel,
9838
- description
9839
- };
9840
- }
9841
-
9842
- // ../api/src/utils/isRecord.ts
9843
- function isRecord2(value) {
9844
- return typeof value === "object" && value !== null && !Array.isArray(value);
9845
- }
9846
-
9847
- // ../api/src/appointmentSetup.ts
9848
- import { z as z7 } from "zod";
9849
- var appointmentSetupRefSchema = z7.discriminatedUnion("kind", [
9850
- z7.object({ kind: z7.literal("existing"), id: z7.string().min(1) }),
9851
- z7.object({ kind: z7.literal("new"), draftId: z7.string().min(1) })
9852
- ]);
9853
- var appointmentSetupVenueChoiceSchema = z7.discriminatedUnion("kind", [
9854
- z7.object({ kind: z7.literal("none") }),
9855
- z7.object({ kind: z7.literal("existing"), venueId: z7.string().min(1) }),
9856
- z7.object({
9857
- kind: z7.literal("create"),
9858
- draftId: z7.string().min(1),
9859
- title: z7.string().trim().min(1),
9860
- description: z7.string().nullable(),
9861
- timezone: z7.string().trim().min(1).nullable(),
9862
- addressJson: z7.record(z7.string(), z7.unknown()),
9863
- locationJson: z7.object({ lat: z7.number(), lng: z7.number() }).nullable()
9864
- })
9865
- ]);
9866
- var appointmentSetupPaymentDraftSchema = z7.object({
9867
- priceType: z7.union([z7.literal("free"), z7.literal("paid")])
9868
- });
9869
- var appointmentSetupServiceAssignmentDraftSchema = z7.discriminatedUnion("kind", [
9870
- z7.object({ kind: z7.literal("all_practitioners") }),
9871
- z7.object({
9872
- kind: z7.literal("selected_practitioners"),
9873
- resourceRefs: z7.array(appointmentSetupRefSchema)
9874
- })
9875
- ]);
9876
- var appointmentSetupServiceDraftSchema = z7.object({
9877
- ref: appointmentSetupRefSchema,
9878
- title: z7.string().trim().min(1),
9879
- description: z7.string().nullable(),
9880
- durationMinutes: z7.number().int().positive(),
9881
- priceAmount: z7.number().int().nonnegative().nullable(),
9882
- isActive: z7.boolean(),
9883
- locationType: z7.union([
9884
- z7.literal("virtual"),
9885
- z7.literal("in_person"),
9886
- z7.literal("hybrid")
9887
- ]),
9888
- venue: appointmentSetupVenueChoiceSchema,
9889
- timezone: z7.string().trim().min(1).nullable(),
9890
- payment: appointmentSetupPaymentDraftSchema,
9891
- assignment: appointmentSetupServiceAssignmentDraftSchema
9892
- }).superRefine((service, ctx) => {
9893
- if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
9894
- ctx.addIssue({
9895
- code: "custom",
9896
- path: ["priceAmount"],
9897
- message: "Paid appointment services need a positive price."
9898
- });
9899
- }
9900
- if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
9901
- ctx.addIssue({
9902
- code: "custom",
9903
- path: ["priceAmount"],
9904
- message: "Free appointment services cannot carry a positive price."
9905
- });
9906
- }
9907
- });
9908
- var appointmentSetupPractitionerDraftSchema = z7.object({
9909
- ref: appointmentSetupRefSchema,
9910
- displayName: z7.string().trim().min(1),
9911
- bio: z7.string().nullable(),
9912
- timezone: z7.string().trim().min(1),
9913
- colorHex: z7.string().nullable()
9914
- });
9915
- var appointmentSetupWeeklyWindowDraftSchema = z7.object({
9916
- weekday: z7.number().int().min(0).max(6),
9917
- startTime: z7.string(),
9918
- endTime: z7.string()
9919
- });
9920
- var appointmentSetupAvailabilityDraftSchema = z7.object({
9921
- kind: z7.literal("weekly_windows"),
9922
- resourceRef: appointmentSetupRefSchema,
9923
- serviceRef: appointmentSetupRefSchema.nullable(),
9924
- windows: z7.array(appointmentSetupWeeklyWindowDraftSchema)
9925
- });
9926
- var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
9927
- var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
9928
- var appointmentSetupBookingNoticeSchema = z7.object({
9929
- minLeadMinutes: z7.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
9930
- maxBookingNoticeMinutes: z7.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
9931
- });
9932
- var applyAppointmentSetupRequestSchema = z7.object({
9933
- services: z7.array(appointmentSetupServiceDraftSchema),
9934
- practitioners: z7.array(appointmentSetupPractitionerDraftSchema),
9935
- availability: z7.array(appointmentSetupAvailabilityDraftSchema),
9936
- bookingNotice: appointmentSetupBookingNoticeSchema
9937
- });
9938
-
9939
- // ../api/src/bookingRecords.ts
9940
- var BOOKING_QUESTION_ANSWER_EXPORT_SCOPES = {
9941
- site: "site",
9942
- appointments: "appointments",
9943
- eventSeries: "event_series",
9944
- course: "course"
9945
- };
9946
- var BOOKING_QUESTION_ANSWER_EXPORT_SCOPE_VALUES = [
9947
- BOOKING_QUESTION_ANSWER_EXPORT_SCOPES.site,
9948
- BOOKING_QUESTION_ANSWER_EXPORT_SCOPES.appointments,
9949
- BOOKING_QUESTION_ANSWER_EXPORT_SCOPES.eventSeries,
9950
- BOOKING_QUESTION_ANSWER_EXPORT_SCOPES.course
9951
- ];
9952
-
9953
- // ../api/src/common/cancellation.ts
9954
- var STAFF_CANCELLATION_CONTEXT_UI_CATEGORIES = [
9955
- "customer_requested",
9956
- "schedule_conflict",
9957
- "duplicate_or_admin_error",
9958
- "non_payment",
9959
- "policy_or_eligibility",
9960
- "other"
9961
- ];
9962
- var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
9963
- ...STAFF_CANCELLATION_CONTEXT_UI_CATEGORIES,
9964
- "legacy_client_unspecified"
9965
- ];
9966
-
9967
- // ../api/src/siteBanner.ts
9968
- import { z as z8 } from "zod";
9969
- var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
9970
- var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
9971
- var SITE_BANNER_MAX_TEXT_LENGTH = 320;
9972
- var SITE_BANNER_MAX_PARAGRAPHS = 2;
9973
- var siteBannerScopeSchema = z8.enum(SITE_BANNER_SCOPE_VALUES);
9974
- var siteBannerToneSchema = z8.enum(SITE_BANNER_TONE_VALUES);
9975
- var siteBannerBodySchema = z8.unknown().transform(unwrapRichTextValue);
9976
- var siteBannerCtaSchema = z8.object({
9977
- label: z8.string().trim().min(1),
9978
- link: linkPayloadSchema
9979
- });
9980
- var siteBannerSettingsSchema = z8.discriminatedUnion("enabled", [
9981
- z8.object({
9982
- enabled: z8.literal(false)
9983
- }),
9984
- z8.object({
9985
- enabled: z8.literal(true),
9986
- scope: siteBannerScopeSchema,
9987
- tone: siteBannerToneSchema,
9988
- body: siteBannerBodySchema,
9989
- cta: siteBannerCtaSchema.nullable()
9990
- })
9991
- ]);
9992
- var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value, ctx) => {
9993
- if (!value.enabled) {
9994
- return;
9995
- }
9996
- const analysis = analyzeSiteBannerBody(value.body);
9997
- for (const issue of analysis.issues) {
9998
- ctx.addIssue({
9999
- code: z8.ZodIssueCode.custom,
10000
- path: ["body"],
10001
- message: siteBannerBodyIssueMessage(issue)
10002
- });
10003
- }
10004
- });
10005
- var EMPTY_SITE_BANNER_BODY = {
10006
- type: "doc",
10007
- content: [
10008
- {
10009
- type: "paragraph",
10010
- content: []
10011
- }
10012
- ]
10013
- };
10014
- function analyzeSiteBannerBody(body) {
10015
- const sanitizedBody = sanitizeSiteBannerBodyInternal(body, { limitParagraphs: false });
10016
- const paragraphs = collectParagraphs(sanitizedBody);
10017
- const textLength = paragraphs.reduce((total, paragraph) => total + paragraphTextLength(paragraph), 0);
10018
- const issues = [];
10019
- if (textLength === 0) {
10020
- issues.push("empty");
10021
- }
10022
- if (paragraphs.length > SITE_BANNER_MAX_PARAGRAPHS) {
10023
- issues.push("too-many-paragraphs");
10024
- }
10025
- if (textLength > SITE_BANNER_MAX_TEXT_LENGTH) {
10026
- issues.push("too-long");
10027
- }
10028
- return {
10029
- sanitizedBody,
10030
- textLength,
10031
- paragraphCount: paragraphs.length,
10032
- issues
10033
- };
10034
- }
10035
- function siteBannerBodyIssueMessage(issue) {
10036
- switch (issue) {
10037
- case "empty":
10038
- return "Banner message is required when the banner is enabled.";
10039
- case "too-many-paragraphs":
10040
- return `Banner message must be ${SITE_BANNER_MAX_PARAGRAPHS} paragraphs or fewer.`;
10041
- case "too-long":
10042
- return `Banner message must be ${SITE_BANNER_MAX_TEXT_LENGTH} characters or fewer.`;
10043
- }
10044
- }
10045
- function sanitizeSiteBannerBodyInternal(input, options) {
10046
- const root = unwrapRichTextValue(input);
10047
- const content = normalizeTopLevelNodes(root.content ?? [], options);
10048
- return {
10049
- type: "doc",
10050
- content: content.length > 0 ? content : EMPTY_SITE_BANNER_BODY.content
10051
- };
10052
- }
10053
- function normalizeTopLevelNodes(nodes, options) {
10054
- const out = [];
10055
- let inlineBuffer = [];
10056
- const flushInlineBuffer = () => {
10057
- if (inlineBuffer.length === 0) {
10058
- return;
10059
- }
10060
- out.push({
10061
- type: "paragraph",
10062
- content: inlineBuffer
10063
- });
10064
- inlineBuffer = [];
10065
- };
10066
- for (const node of nodes) {
10067
- const normalized = sanitizeNode(node, options);
10068
- for (const child of normalized) {
10069
- if (child.type === "text") {
10070
- inlineBuffer.push(child);
10071
- continue;
10072
- }
10073
- flushInlineBuffer();
10074
- out.push(child);
10075
- }
10076
- }
10077
- flushInlineBuffer();
10078
- return options.limitParagraphs ? out.slice(0, SITE_BANNER_MAX_PARAGRAPHS) : out;
10079
- }
10080
- function sanitizeNode(node, options) {
10081
- if (node.type === "paragraph") {
10082
- const inlineChildren = sanitizeInlineNodes(node.content ?? []);
10083
- return [
10084
- {
10085
- type: "paragraph",
10086
- content: inlineChildren
10087
- }
10088
- ];
10089
- }
10090
- if (node.type === "text") {
10091
- const text = typeof node.text === "string" ? node.text : "";
10092
- const marks = sanitizeMarks(node.marks);
10093
- return text.length > 0 ? [{
10094
- type: "text",
10095
- text,
10096
- ...marks ? { marks } : {}
10097
- }] : [];
10098
- }
10099
- if (Array.isArray(node.content)) {
10100
- return normalizeTopLevelNodes(node.content, options);
10101
- }
10102
- return [];
10103
- }
10104
- function sanitizeInlineNodes(nodes) {
10105
- return nodes.flatMap((node) => {
10106
- if (node.type === "text") {
10107
- const text = typeof node.text === "string" ? node.text : "";
10108
- if (text.length === 0) {
10109
- return [];
10110
- }
10111
- const marks = sanitizeMarks(node.marks);
10112
- return [{
10113
- type: "text",
10114
- text,
10115
- ...marks ? { marks } : {}
10116
- }];
10117
- }
10118
- if (Array.isArray(node.content)) {
10119
- return sanitizeInlineNodes(node.content);
10120
- }
10121
- return [];
10122
- });
10123
- }
10124
- function sanitizeMarks(marks) {
10125
- if (!Array.isArray(marks) || marks.length === 0) {
10126
- return void 0;
10127
- }
10128
- const sanitized = marks.flatMap((mark) => {
10129
- if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
10130
- return [{ type: mark.type }];
10131
- }
10132
- if (mark.type === "link" && isRecord2(mark.attrs) && typeof mark.attrs.href === "string") {
10133
- const attrs = { href: mark.attrs.href };
10134
- if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
10135
- attrs.target = mark.attrs.target;
10136
- }
10137
- if (typeof mark.attrs.rel === "string" && mark.attrs.rel.trim().length > 0) {
10138
- attrs.rel = mark.attrs.rel;
10139
- }
10140
- return [{ type: "link", attrs }];
10141
- }
10142
- return [];
10143
- });
10144
- return sanitized.length > 0 ? sanitized : void 0;
10145
- }
10146
- function unwrapRichTextValue(value) {
10147
- if (isRecord2(value) && isRecord2(value.doc)) {
10148
- return unwrapRichTextValue(value.doc);
10149
- }
10150
- if (isRecord2(value) && value.type === "doc") {
10151
- return {
10152
- type: "doc",
10153
- content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
10154
- };
10155
- }
10156
- return EMPTY_SITE_BANNER_BODY;
10157
- }
10158
- function isTipTapNodeLike(value) {
10159
- return isRecord2(value) && typeof value.type === "string";
10160
- }
10161
- function coerceTipTapNode(value) {
10162
- return {
10163
- type: value.type,
10164
- ...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
10165
- ...typeof value.text === "string" ? { text: value.text } : {},
10166
- ...Array.isArray(value.marks) ? {
10167
- marks: value.marks.filter((mark) => isRecord2(mark) && typeof mark.type === "string").map((mark) => ({
10168
- type: mark.type,
10169
- ...isRecord2(mark.attrs) ? { attrs: mark.attrs } : {}
10170
- }))
10171
- } : {}
10172
- };
10173
- }
10174
- function paragraphTextLength(paragraph) {
10175
- return collectText(paragraph).length;
10176
- }
10177
- function collectParagraphs(doc) {
10178
- return (doc.content ?? []).filter((node) => node.type === "paragraph");
10179
- }
10180
- function collectText(node) {
10181
- if (node.type === "text") {
10182
- return node.text ?? "";
8571
+ getPublicFormById: {
8572
+ path: "/public/forms/{formId}",
8573
+ method: "GET",
8574
+ revalidate: 60,
8575
+ tags: ["riverbank:form:{formId}"],
8576
+ auth: "public",
8577
+ responseKind: "json"
8578
+ },
8579
+ listPublicForms: {
8580
+ path: "/public/sites/{siteId}/forms",
8581
+ method: "GET",
8582
+ revalidate: 60,
8583
+ tags: ["riverbank:site:{siteId}:forms"],
8584
+ auth: "public",
8585
+ responseKind: "json"
8586
+ },
8587
+ getPublicBookingServices: {
8588
+ path: "/public/bookings/services",
8589
+ method: "GET",
8590
+ revalidate: 60,
8591
+ tags: ["site-{siteId}"],
8592
+ auth: "public",
8593
+ responseKind: "json"
8594
+ },
8595
+ getPublicChallenge: {
8596
+ path: "/public/challenge",
8597
+ method: "GET",
8598
+ auth: "public",
8599
+ responseKind: "text"
8600
+ },
8601
+ listPublicEvents: {
8602
+ path: "/public/sites/{siteId}/events",
8603
+ method: "GET",
8604
+ revalidate: 60,
8605
+ tags: ["public-events-{siteId}"],
8606
+ auth: "public",
8607
+ responseKind: "json"
8608
+ },
8609
+ batchBlockLoaders: {
8610
+ path: "/public/sites/{siteId}/block-loaders/batch",
8611
+ method: "POST",
8612
+ auth: "public",
8613
+ responseKind: "json"
8614
+ },
8615
+ listPublicCourses: {
8616
+ path: "/public/sites/{siteId}/courses",
8617
+ method: "GET",
8618
+ revalidate: 60,
8619
+ tags: ["public-courses-{siteId}"],
8620
+ auth: "public",
8621
+ responseKind: "json"
8622
+ },
8623
+ listPublicTeamMembers: {
8624
+ path: "/public/sites/{siteId}/team-members",
8625
+ method: "GET",
8626
+ revalidate: 60,
8627
+ tags: ["public-team-members-{siteId}"],
8628
+ auth: "public",
8629
+ responseKind: "json"
8630
+ },
8631
+ listPublicProducts: {
8632
+ path: "/public/sites/{siteId}/products",
8633
+ method: "GET",
8634
+ revalidate: 300,
8635
+ tags: ["public-products-{siteId}"],
8636
+ auth: "public",
8637
+ responseKind: "json"
8638
+ },
8639
+ listPublicPasses: {
8640
+ path: "/public/sites/{siteId}/bookings/products/passes",
8641
+ method: "GET",
8642
+ revalidate: 300,
8643
+ tags: ["public-passes-{siteId}"],
8644
+ auth: "public",
8645
+ responseKind: "json"
8646
+ },
8647
+ listPublicMemberships: {
8648
+ path: "/public/sites/{siteId}/bookings/products/memberships",
8649
+ method: "GET",
8650
+ revalidate: 300,
8651
+ tags: ["public-memberships-{siteId}"],
8652
+ auth: "public",
8653
+ responseKind: "json"
8654
+ },
8655
+ resolveEntrySubroute: {
8656
+ path: "/public/sites/{siteId}/routing/subroutes/resolve",
8657
+ method: "GET",
8658
+ revalidate: 60,
8659
+ tags: ["site-{siteId}", "entry-subroute"],
8660
+ auth: "public",
8661
+ responseKind: "json"
8662
+ },
8663
+ resolveEventOccurrence: {
8664
+ path: "/public/sites/{siteId}/events/occurrences/resolve",
8665
+ method: "GET",
8666
+ revalidate: 60,
8667
+ tags: ["public-events-{siteId}", "event-occurrence"],
8668
+ auth: "public",
8669
+ responseKind: "json"
8670
+ },
8671
+ checkRedirect: {
8672
+ path: "/public/content/redirect",
8673
+ method: "GET",
8674
+ revalidate: 86400,
8675
+ tags: ["redirect"],
8676
+ auth: "public",
8677
+ responseKind: "json"
8678
+ },
8679
+ getRoutableContent: {
8680
+ path: "/sites/{siteId}/routable-content",
8681
+ method: "GET",
8682
+ revalidate: 60,
8683
+ tags: ["riverbank:site:{siteId}:routable-content"],
8684
+ auth: "user",
8685
+ responseKind: "json"
8686
+ },
8687
+ getPublicSitemapRoutes: {
8688
+ path: "/public/sites/{siteId}/sitemap",
8689
+ method: "GET",
8690
+ revalidate: 60,
8691
+ tags: ["riverbank:site:{siteId}:routable-content", "riverbank:site:{siteId}:settings"],
8692
+ auth: "public",
8693
+ responseKind: "json"
10183
8694
  }
10184
- return (node.content ?? []).map(collectText).join("");
10185
- }
10186
-
10187
- // ../api/src/aiPlayground.ts
10188
- import { z as z9 } from "zod";
10189
- var Rfc6902PatchOp = z9.discriminatedUnion("op", [
10190
- // Standard RFC-6902 operations
10191
- z9.object({
10192
- op: z9.literal("add"),
10193
- path: z9.string(),
10194
- value: z9.unknown()
10195
- }),
10196
- z9.object({
10197
- op: z9.literal("remove"),
10198
- path: z9.string()
10199
- }),
10200
- z9.object({
10201
- op: z9.literal("replace"),
10202
- path: z9.string(),
10203
- value: z9.unknown()
10204
- }),
10205
- z9.object({
10206
- op: z9.literal("move"),
10207
- from: z9.string(),
10208
- path: z9.string()
10209
- }),
10210
- z9.object({
10211
- op: z9.literal("copy"),
10212
- from: z9.string(),
10213
- path: z9.string()
10214
- }),
10215
- // Block-level operations (Phase 2)
10216
- z9.object({
10217
- op: z9.literal("add_block"),
10218
- blockKind: z9.string(),
10219
- afterBlockId: z9.string().nullable(),
10220
- content: z9.record(z9.string(), z9.unknown()),
10221
- rationale: z9.string()
10222
- }),
10223
- z9.object({
10224
- op: z9.literal("delete_block"),
10225
- blockId: z9.string(),
10226
- rationale: z9.string()
10227
- }),
10228
- z9.object({
10229
- op: z9.literal("reorder_block"),
10230
- blockId: z9.string(),
10231
- afterBlockId: z9.string().nullable(),
10232
- rationale: z9.string()
10233
- })
10234
- ]);
10235
- var PlaygroundProposeRequest = z9.object({
10236
- request: z9.string().min(1).max(2e3)
10237
- });
10238
- var MultiPagePatchEnvelope = z9.object({
10239
- pageId: z9.string(),
10240
- blockId: z9.string().optional(),
10241
- // Not present for page-level ops
10242
- blockKind: z9.string().optional(),
10243
- blockPurpose: z9.string().optional().nullable(),
10244
- ops: z9.array(Rfc6902PatchOp),
10245
- rationale: z9.string(),
10246
- currentContent: z9.record(z9.string(), z9.unknown()).optional()
10247
- });
10248
- var MultiPageUpdateResponse = z9.object({
10249
- patches: z9.array(MultiPagePatchEnvelope),
10250
- assistantMessage: z9.string(),
10251
- pagesModified: z9.number(),
10252
- toolCallsUsed: z9.number()
10253
8695
  });
10254
-
10255
- // src/public-api/runtime.ts
10256
- var PUBLIC_ENDPOINT_NAMES2 = [
10257
- "getSite",
10258
- "getContentByPath",
10259
- "listPublishedEntries",
10260
- "getPublishedEntryPreview",
10261
- "getPublicFormById",
10262
- "listPublicForms",
10263
- "getPublicBookingServices",
10264
- "getPublicChallenge",
10265
- "listPublicEvents",
10266
- "batchBlockLoaders",
10267
- "listPublicCourses",
10268
- "listPublicTeamMembers",
10269
- "listPublicProducts",
10270
- "listPublicPasses",
10271
- "listPublicMemberships",
10272
- "resolveEntrySubroute",
10273
- "resolveEventOccurrence",
10274
- "checkRedirect",
10275
- "getRoutableContent",
10276
- "getPublicSitemapRoutes"
10277
- ];
10278
- var API_ENDPOINTS2 = Object.freeze(
10279
- Object.fromEntries(
10280
- PUBLIC_ENDPOINT_NAMES2.map((endpoint) => {
10281
- const definition = API_ENDPOINTS[endpoint];
10282
- const revalidate = "revalidate" in definition ? definition.revalidate : void 0;
10283
- const tags2 = "tags" in definition ? definition.tags : void 0;
10284
- return [
10285
- endpoint,
10286
- {
10287
- path: definition.path,
10288
- method: definition.method,
10289
- ...definition.auth ? { auth: definition.auth } : {},
10290
- ...definition.responseKind ? { responseKind: definition.responseKind } : {},
10291
- ...typeof revalidate === "number" ? { revalidate } : {},
10292
- ...tags2 ? { tags: tags2 } : {}
10293
- }
10294
- ];
10295
- })
10296
- )
10297
- );
10298
- function buildEndpointURL3(baseURL, endpoint) {
8696
+ function buildEndpointURL2(baseURL, endpoint) {
10299
8697
  return baseURL + API_ENDPOINTS2[endpoint].path;
10300
8698
  }
10301
8699
 
@@ -10351,7 +8749,7 @@ export {
10351
8749
  PrebuildLoader,
10352
8750
  RiverbankApiError,
10353
8751
  SYSTEM_BLOCK_KINDS,
10354
- buildEndpointURL3 as buildEndpointURL,
8752
+ buildEndpointURL2 as buildEndpointURL,
10355
8753
  canUsePrebuild,
10356
8754
  createPrebuildLoader,
10357
8755
  createRiverbankClient,