@riverbankcms/sdk 0.77.1 → 0.78.2

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 (295) hide show
  1. package/README.md +114 -43
  2. package/dist/{PreviewEditorSidebar-DVUG7GK4.mjs → PreviewEditorSidebar-4DXLYX2V.mjs} +4962 -4885
  3. package/dist/{PreviewEditorUI-P7RN4CDS.mjs → PreviewEditorUI-CS5P4N3P.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +190 -154
  6. package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
  7. package/dist/_dts/api/src/billing.d.ts +3 -26
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
  9. package/dist/_dts/api/src/content-editor.d.ts +1 -0
  10. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  11. package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
  12. package/dist/_dts/api/src/endpoints.d.ts +17 -0
  13. package/dist/_dts/api/src/index.d.ts +16 -4
  14. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  15. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  16. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  17. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  18. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  19. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  20. package/dist/_dts/api/src/navigation.d.ts +12 -0
  21. package/dist/_dts/api/src/public/types.d.ts +1 -1
  22. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  23. package/dist/_dts/api/src/request.d.ts +3 -11
  24. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  25. package/dist/_dts/api/src/sdkContracts.d.ts +7 -1
  26. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -0
  27. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -0
  28. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +15 -19
  29. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  30. package/dist/_dts/api/src/types.d.ts +14 -27
  31. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  32. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  33. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  34. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  35. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  36. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  37. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  38. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  39. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  40. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  41. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  42. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  43. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  44. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  45. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  46. package/dist/_dts/blocks/src/index.d.ts +1 -0
  47. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
  48. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
  49. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
  50. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
  51. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
  52. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  53. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
  54. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
  55. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
  56. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +68 -21
  57. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
  58. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
  59. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
  60. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  61. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  62. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  63. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  64. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  65. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +193 -29
  66. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  67. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  68. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  69. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  70. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  71. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  72. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  73. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  79. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  80. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  83. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  87. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  88. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  89. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  90. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  91. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  92. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  93. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  94. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  95. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  96. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  97. package/dist/_dts/content-editor/src/index.d.ts +6 -1
  98. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  99. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  100. package/dist/_dts/content-model/src/content-types/schema.d.ts +17 -3
  101. package/dist/_dts/content-model/src/index.d.ts +1 -0
  102. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  103. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  104. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  105. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  106. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  107. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  108. package/dist/_dts/core/src/branded.d.ts +108 -85
  109. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  110. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  111. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  112. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  113. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  114. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  115. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  116. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  117. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  118. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  119. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  120. package/dist/_dts/core/src/duration.d.ts +14 -0
  121. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  122. package/dist/_dts/core/src/email-format.d.ts +10 -0
  123. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  124. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  125. package/dist/_dts/core/src/index.d.ts +20 -0
  126. package/dist/_dts/core/src/number-input.d.ts +22 -0
  127. package/dist/_dts/core/src/participants.d.ts +2 -2
  128. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  129. package/dist/_dts/core/src/slug.d.ts +39 -0
  130. package/dist/_dts/core/src/string.d.ts +19 -0
  131. package/dist/_dts/core/src/uuid.d.ts +6 -0
  132. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +11 -0
  133. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  134. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  135. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  136. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  137. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  138. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  139. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  140. package/dist/_dts/media-core/src/index.d.ts +10 -0
  141. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  142. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  143. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  144. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  145. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  146. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
  147. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  148. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  149. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  150. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  151. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  152. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  153. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  154. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  155. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  156. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  157. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  158. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  159. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  160. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  161. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  162. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  163. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  164. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  165. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  166. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  167. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  168. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  169. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  170. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  171. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  172. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  173. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -0
  174. package/dist/_dts/sdk/src/client/types.d.ts +39 -21
  175. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  176. package/dist/_dts/sdk/src/config/field-definitions.d.ts +2 -0
  177. package/dist/_dts/sdk/src/index.d.ts +2 -2
  178. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  179. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  180. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  181. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  182. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  183. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  184. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  185. package/dist/_dts/sdk/src/version.d.ts +1 -1
  186. package/dist/_dts/site-commands/src/commands.d.ts +15 -12
  187. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  188. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  189. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  190. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  191. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  192. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  193. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  194. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  195. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  196. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  197. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  198. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  199. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  200. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  201. package/dist/_dts/theme-core/src/schema.d.ts +64 -18
  202. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  203. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  204. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  205. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +24 -0
  206. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +31 -3
  207. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  208. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +33 -1
  209. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  210. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  211. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  212. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  213. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  214. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  215. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  216. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  217. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  218. package/dist/{chunk-IENWFSLO.mjs → chunk-4QEGTLK6.mjs} +1 -1
  219. package/dist/{chunk-ZYEJLCTN.mjs → chunk-6HYXHRAI.mjs} +5 -5
  220. package/dist/{chunk-VX7B5VAC.mjs → chunk-CR5HKAGU.mjs} +32 -5
  221. package/dist/{chunk-KWJPDZH2.mjs → chunk-MCRQMPET.mjs} +3793 -1201
  222. package/dist/{chunk-6SMUFTXD.mjs → chunk-OKMBEAXY.mjs} +1 -1
  223. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  224. package/dist/{chunk-2SPENC5M.mjs → chunk-RGTOD4AJ.mjs} +242 -57
  225. package/dist/cli/index.mjs +2361 -668
  226. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  227. package/dist/cli/init-docs/content/content-management.md +2 -2
  228. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  229. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-PLYNJIIM.mjs} +2 -2
  230. package/dist/client/analytics.mjs +1 -1
  231. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-BXAP6AO7.mjs} +76 -72
  232. package/dist/client/bookings.mjs +3765 -310
  233. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-TRBXDHGF.mjs} +3 -4
  234. package/dist/client/{cart-RGXDS5F4.mjs → cart-Z7H3HJRS.mjs} +8 -8
  235. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WAFCUBIX.mjs} +8 -8
  236. package/dist/client/{chunk-II7O4XN3.mjs → chunk-75OUS5MT.mjs} +2 -2
  237. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-AUJ5DBZJ.mjs} +42 -37
  238. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-CE7IBGVW.mjs} +3 -1
  239. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-CWGTG37I.mjs} +2 -1
  240. package/dist/client/{chunk-UFSWADAO.mjs → chunk-DNRGY432.mjs} +6 -67
  241. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-FUXW6VW2.mjs} +512 -66
  242. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-JGXPTEI2.mjs} +322 -106
  243. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-JRDUHZCT.mjs} +53 -53
  244. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  245. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-UVQEJJTN.mjs} +129 -3
  246. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  247. package/dist/client/chunk-ZFHRN6W2.mjs +66 -0
  248. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-ZI3LLBPZ.mjs} +3 -3
  249. package/dist/client/client.mjs +7577 -4979
  250. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-AHFQHWIJ.mjs} +19 -16
  251. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-LDXTV5R7.mjs} +10 -10
  252. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-A4JGTNJO.mjs} +10 -10
  253. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-4YXTZ7EG.mjs} +10 -10
  254. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-P72TPFFM.mjs} +10 -10
  255. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-LSYJHGMT.mjs} +10 -10
  256. package/dist/client/{form-ETFZFATW.mjs → form-AOPYOKOW.mjs} +10 -7
  257. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-5TFYDFVQ.mjs} +3 -3
  258. package/dist/client/hooks.mjs +1119 -327
  259. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-QSZ3ZVAZ.mjs} +3 -3
  260. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-KTRHZY52.mjs} +3 -3
  261. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-N4E775RG.mjs} +8 -8
  262. package/dist/client/{productList-A5RO5WIS.mjs → productList-UGUQ2S45.mjs} +8 -8
  263. package/dist/client/rendering/client.mjs +7262 -2775
  264. package/dist/client/rendering/islands.mjs +19 -19
  265. package/dist/client/rendering.mjs +6964 -4587
  266. package/dist/client/{shop-L4MZH4I2.mjs → shop-VHSZEEQ2.mjs} +8 -8
  267. package/dist/preview-next/before-render.mjs +18 -1
  268. package/dist/preview-next/client/runtime.mjs +6 -6
  269. package/dist/preview-next/editor-chrome.css +10 -0
  270. package/dist/preview-next/middleware.mjs +18 -1
  271. package/dist/preview-next/tailwind-sources.css +1 -0
  272. package/dist/sdk-runtime-WHPJEF5G.mjs +8 -0
  273. package/dist/server/components.mjs +2736 -1316
  274. package/dist/server/config-template-validation.mjs +221 -15
  275. package/dist/server/config-validation.mjs +1346 -550
  276. package/dist/server/config.mjs +1346 -550
  277. package/dist/server/data.mjs +1118 -326
  278. package/dist/server/index.mjs +514 -251
  279. package/dist/server/next.mjs +4446 -2444
  280. package/dist/server/page-converter.mjs +631 -155
  281. package/dist/server/prebuild.mjs +1 -1
  282. package/dist/server/rendering/server.mjs +2743 -1323
  283. package/dist/server/rendering.mjs +2764 -1328
  284. package/dist/server/routing.mjs +1860 -590
  285. package/dist/server/server.mjs +1622 -575
  286. package/dist/server/theme-bridge.mjs +3151 -131
  287. package/dist/server/theme.mjs +10 -1
  288. package/dist/styles/index.css +488 -48
  289. package/package.json +2 -1
  290. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +0 -8
  291. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  292. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  293. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  294. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
  295. package/dist/sdk-runtime-6UT2S7KZ.mjs +0 -8
@@ -161,6 +161,10 @@ export declare const DISCOUNTS: {
161
161
  path: string;
162
162
  method: "POST";
163
163
  };
164
+ apply: {
165
+ path: string;
166
+ method: "POST";
167
+ };
164
168
  };
165
169
  export declare const NEWSLETTER: {
166
170
  subscribe: {
@@ -485,6 +489,10 @@ export declare const ENDPOINTS: {
485
489
  path: string;
486
490
  method: "POST";
487
491
  };
492
+ apply: {
493
+ path: string;
494
+ method: "POST";
495
+ };
488
496
  };
489
497
  readonly newsletter: {
490
498
  subscribe: {
@@ -43,7 +43,7 @@ export { createBlockApi, BlockApiError } from './client';
43
43
  export type { BlockApiClient } from './client';
44
44
  export { BlockApiProvider, useBlockApi, useBlockApiOptional } from './context';
45
45
  export type { BlockApiProviderProps } from './context';
46
- export type { BlockApiConfig, BlockApiAuth, ApiKeyAuth, BearerAuth, NoAuth, ApiResponse, ApiSuccessResponse, ApiErrorResponse, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, FormField, BookingSubmitRequest, BookingSubmitResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, TimeSlot, AvailableDatesRequest, AvailableDatesResponse, BookingService, BookingServicesRequest, BookingServicesResponse, BookingServiceResponse, BookingResource, BookingResourcesRequest, BookingResourcesResponse, PublicEvent, PublicEventsRequest, PublicEventsResponse, EventVenue, PricingType, AccessRestriction, EventFilterCategory, EventFilterStaffMember, EventFilterVenue, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, PaymentMethod, EligibilityCheckRequest, EligibilityCheckResponse, EligiblePass, EligibleMembership, AvailablePass, AvailableMembership, CoursePaymentMethod, CourseEnrollRequest, CourseEnrollResponse, CourseEnrollSuccessResponse, CourseWaitlistResponse, CourseCheckoutRequest, CourseCheckoutResponse, DiscountContext, DiscountsAvailableRequest, DiscountsAvailableResponse, ShopCheckoutRequest, ShopCheckoutResponse, ShopDuplicateMembershipWarning, CustomerProfile, CustomerOrder, CustomerOrderInstalmentPlan, CustomerOrderInstalmentPlanStatus, CustomerOrderInstalmentRow, CustomerOrderInstalmentStatus, CustomerOrderPaymentState, EnabledModules, PortalMeResponse, PortalMeUpdateRequest, CustomerPass, CustomerPassCreditHistoryEntry, CustomerMembership, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, AppointmentBookingQuestionsTaskDetail, BookingQuestionsTaskDetail, BookingQuestionsAnswerValue, BookingQuestionsField, BookingQuestionsFieldOption, BookingQuestionsSection, BeforeYouComeTaskSummary, CustomerCourseEnrollment, EventGuest, PortalCredit, PortalCreditSummary, PortalCreditTransaction, PortalCreditResponse, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProduct, PortalDigitalProductFile, PortalDigitalProductsResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalAppointmentBookingQuestionsResponse, PortalCreateAppointmentBookingQuestionsUploadUrlRequest, PortalCreateAppointmentBookingQuestionsUploadUrlResponse, PortalFinalizeAppointmentBookingQuestionsUploadRequest, PortalFinalizeAppointmentBookingQuestionsUploadResponse, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateAppointmentBookingQuestionsResponse, PortalEventBookingQuestionsResponse, PortalCreateEventBookingQuestionsUploadUrlRequest, PortalCreateEventBookingQuestionsUploadUrlResponse, PortalFinalizeEventBookingQuestionsUploadRequest, PortalFinalizeEventBookingQuestionsUploadResponse, PortalUpdateEventBookingQuestionsRequest, PortalUpdateEventBookingQuestionsResponse, PortalCourseBookingQuestionsResponse, PortalCreateCourseBookingQuestionsUploadUrlRequest, PortalCreateCourseBookingQuestionsUploadUrlResponse, PortalFinalizeCourseBookingQuestionsUploadRequest, PortalFinalizeCourseBookingQuestionsUploadResponse, PortalUpdateCourseBookingQuestionsRequest, PortalUpdateCourseBookingQuestionsResponse, UpdateEventGuestsRequest, EventGuestsResponse, PortalCancelCourseEnrollmentRequest, PortalCancelCourseEnrollmentResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalCancelEventRegistrationRequest, PortalRefundInfo, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, } from './types';
46
+ export type { BlockApiConfig, BlockApiAuth, ApiKeyAuth, BearerAuth, NoAuth, ApiResponse, ApiSuccessResponse, ApiErrorResponse, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, FormField, BookingSubmitRequest, BookingSubmitResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, TimeSlot, AvailableDatesRequest, AvailableDatesResponse, BookingService, BookingServicesRequest, BookingServicesResponse, BookingServiceResponse, BookingResource, BookingResourcesRequest, BookingResourcesResponse, PublicEvent, PublicEventsRequest, PublicEventsResponse, EventVenue, PricingType, AccessRestriction, EventFilterCategory, EventFilterStaffMember, EventFilterVenue, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, PaymentMethod, EligibilityCheckRequest, EligibilityCheckResponse, EligiblePass, EligibleMembership, AvailablePass, AvailableMembership, CoursePaymentMethod, CourseEnrollRequest, CourseEnrollResponse, CourseEnrollSuccessResponse, CourseWaitlistResponse, CourseCheckoutRequest, CourseCheckoutResponse, DiscountContext, DiscountsAvailableRequest, DiscountsAvailableResponse, DiscountApplyLine, DiscountApplyRequest, DiscountApplyRejectedReason, DiscountApplyResponse, ShopCheckoutRequest, ShopCheckoutResponse, ShopDuplicateMembershipWarning, CustomerProfile, CustomerOrder, CustomerOrderInstalmentPlan, CustomerOrderInstalmentPlanStatus, CustomerOrderInstalmentRow, CustomerOrderInstalmentStatus, CustomerOrderPaymentState, EnabledModules, PortalMeResponse, PortalMeUpdateRequest, CustomerPass, CustomerPassCreditHistoryEntry, CustomerMembership, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, AppointmentBookingQuestionsTaskDetail, BookingQuestionsTaskDetail, BookingQuestionsAnswerValue, BookingQuestionsField, BookingQuestionsFieldOption, BookingQuestionsSection, BeforeYouComeTaskSummary, CustomerCourseEnrollment, EventGuest, PortalCredit, PortalCreditSummary, PortalCreditTransaction, PortalCreditResponse, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProduct, PortalDigitalProductFile, PortalDigitalProductsResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalAppointmentBookingQuestionsResponse, PortalCreateAppointmentBookingQuestionsUploadUrlRequest, PortalCreateAppointmentBookingQuestionsUploadUrlResponse, PortalFinalizeAppointmentBookingQuestionsUploadRequest, PortalFinalizeAppointmentBookingQuestionsUploadResponse, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateAppointmentBookingQuestionsResponse, PortalEventBookingQuestionsResponse, PortalCreateEventBookingQuestionsUploadUrlRequest, PortalCreateEventBookingQuestionsUploadUrlResponse, PortalFinalizeEventBookingQuestionsUploadRequest, PortalFinalizeEventBookingQuestionsUploadResponse, PortalUpdateEventBookingQuestionsRequest, PortalUpdateEventBookingQuestionsResponse, PortalCourseBookingQuestionsResponse, PortalCreateCourseBookingQuestionsUploadUrlRequest, PortalCreateCourseBookingQuestionsUploadUrlResponse, PortalFinalizeCourseBookingQuestionsUploadRequest, PortalFinalizeCourseBookingQuestionsUploadResponse, PortalUpdateCourseBookingQuestionsRequest, PortalUpdateCourseBookingQuestionsResponse, UpdateEventGuestsRequest, EventGuestsResponse, PortalCancelCourseEnrollmentRequest, PortalCancelCourseEnrollmentResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalCancelEventRegistrationRequest, PortalRefundInfo, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, } from './types';
47
47
  export type { BookingQuestionsDocumentAnswerValue } from '../../../portal/types';
48
48
  export { deriveCreditProductLabels, getCreditProductCreditUnit, getCreditProductTypeLabel, getPortalCreditProductCreditNoun, } from './creditProducts';
49
49
  export type { CreditProductCreditUnit, CreditProductLabelStyle, CreditProductSource, CreditProductUseCase, DerivedCreditProductLabels, EnabledCreditProductModules, } from './creditProducts';
@@ -590,6 +590,10 @@ export type DiscountContext = {
590
590
  } | {
591
591
  type: "membership";
592
592
  membershipId: string;
593
+ } | {
594
+ type: "product";
595
+ productId: string;
596
+ productCategoryId: string | null;
593
597
  };
594
598
  export interface DiscountsAvailableRequest {
595
599
  siteId: string;
@@ -611,6 +615,32 @@ export interface DiscountsAvailableResponse {
611
615
  manualCodeEntryAllowed: boolean;
612
616
  autoAppliedDiscount: AutoAppliedDiscountPreview | null;
613
617
  }
618
+ export interface DiscountApplyLine {
619
+ context: DiscountContext;
620
+ subtotalCents: number;
621
+ currency: string;
622
+ }
623
+ export interface DiscountApplyRequest {
624
+ siteId: string;
625
+ discountCode: string;
626
+ customerEmail: string;
627
+ lines: DiscountApplyLine[];
628
+ }
629
+ export type DiscountApplyRejectedReason = "invalid_or_not_applicable" | "unavailable" | "unknown";
630
+ export type DiscountApplyResponse = {
631
+ type: "applied";
632
+ code: string;
633
+ publicLabel: string;
634
+ description: string | null;
635
+ discountCents: number;
636
+ subtotalCents: number;
637
+ totalAfterDiscountCents: number;
638
+ currency: string;
639
+ } | {
640
+ type: "rejected";
641
+ reason: DiscountApplyRejectedReason;
642
+ message: string;
643
+ };
614
644
  export interface CourseRegistrationStatusRequest {
615
645
  siteId: string;
616
646
  sessionId: string;
@@ -675,20 +705,25 @@ export interface ShopCheckoutRequest {
675
705
  cancelUrl: string;
676
706
  confirmDuplicate?: boolean;
677
707
  }
678
- export interface ShopCheckoutResponse {
679
- checkoutUrl: string | null;
680
- sessionId: string | null;
681
- bypassed: boolean;
682
- }
683
- export interface ShopDuplicateMembershipWarning {
684
- warning: "duplicate_membership";
708
+ export type ShopCheckoutResponse = {
709
+ type: "redirect";
710
+ checkoutUrl: string;
711
+ sessionId: string;
712
+ } | {
713
+ type: "bypassed";
714
+ sessionId: null;
715
+ } | {
716
+ type: "duplicate_membership_warning";
685
717
  message: string;
686
718
  existingMembership: {
687
719
  id: string;
688
720
  name: string;
689
721
  expiresAt: string | null;
690
722
  };
691
- }
723
+ };
724
+ export type ShopDuplicateMembershipWarning = Extract<ShopCheckoutResponse, {
725
+ type: "duplicate_membership_warning";
726
+ }>;
692
727
  export type UnifiedCheckoutItem = {
693
728
  type: "course_enrollment";
694
729
  courseId: string;
@@ -4,13 +4,7 @@
4
4
  * This module contains constants and functions used by both the server-side
5
5
  * and client-side header section components to avoid code duplication.
6
6
  */
7
- /**
8
- * Classes that belong on the outer nav wrapper (positioning/z-index),
9
- * not on the inner Section (content styling).
10
- *
11
- * CSS position: sticky/fixed must be on the outermost element to work
12
- * correctly relative to the page scroll container.
13
- */
7
+ import type React from 'react';
14
8
  export declare const POSITIONING_CLASSES: readonly ["rb-sticky", "rb-fixed", "rb-absolute", "rb-relative", "rb-top-0", "rb-left-0", "rb-right-0", "rb-bottom-0", "rb-z-40", "rb-z-50"];
15
9
  export { desktopOnlyDisplay, mobileOnlyDisplay, type ResponsiveDisplay, } from '../../../../../theme-core/src/responsiveDisplay';
16
10
  /**
@@ -23,3 +17,10 @@ export declare function splitPositioningClasses(className: string | undefined):
23
17
  wrapperClasses: string;
24
18
  sectionClasses: string;
25
19
  };
20
+ export declare function composeHeaderSectionWrapperClassName(input: Readonly<{
21
+ wrapperClasses: string;
22
+ previewSiteChromeSurface?: string | null;
23
+ }>): string;
24
+ export declare const EDITABLE_SURFACE_FORWARDING_PROP: "forwardsSiteChromeEditableSurface";
25
+ export type EditableSurfaceForwardingComponent<TProps = unknown> = React.ComponentType<TProps> & Record<typeof EDITABLE_SURFACE_FORWARDING_PROP, true>;
26
+ export declare function markEditableSurfaceForwarding<TProps>(component: React.ComponentType<TProps>): EditableSurfaceForwardingComponent<TProps>;
@@ -1,2 +1,2 @@
1
- export { asBookingFieldId, bookingFlowReducer, buildBookingAvailabilityQuery, buildBookingStepPlan, buildBookingSubmitPlan, createBookingBlockApiConfig, createEmptyBookingValidationErrors, createFieldBookingValidationErrors, createFormBookingValidationError, createInitialBookingFlowReducerState, describeUnknownError, deriveBookingFieldViews, deriveBookingFlowSteps, getAppointmentBookingOverrideInput, hasBookingValidationErrors, resolveAppointmentPackagesModel, resolveAvailabilitySelectionInvalidation, resolveHeadlessBookingStatus, resolveHeadlessBookingView, toBookingFormData, toBookingSlotView, toBookingSlotViews, toOptionalAppointmentResourceId, toOptionalAppointmentServiceId, validateBookingField, validateBookingFields, validateBookingStep, } from "../nodes/booking-form.headless.state";
1
+ export { unsafeAsBookingFieldId, bookingFlowReducer, buildBookingAvailabilityQuery, buildBookingStepPlan, buildBookingSubmitPlan, createBookingBlockApiConfig, createEmptyBookingValidationErrors, createFieldBookingValidationErrors, createFormBookingValidationError, createInitialBookingFlowReducerState, describeUnknownError, deriveBookingFieldViews, deriveBookingFlowSteps, getAppointmentBookingOverrideInput, hasBookingValidationErrors, resolveAppointmentPackagesModel, resolveAvailabilitySelectionInvalidation, resolveHeadlessBookingStatus, resolveHeadlessBookingView, toBookingFormData, toBookingSlotView, toBookingSlotViews, toOptionalAppointmentResourceId, toOptionalAppointmentServiceId, validateBookingField, validateBookingFields, validateBookingStep, } from "../nodes/booking-form.headless.state";
2
2
  export type { AppointmentBookingOverrideData, AppointmentBookingOverrideInput, AppointmentBookingOverrideInputResult, AppointmentBookingOverridePropsLike, BookingAvailabilityQuery, BookingAppointmentPackagesModel, BookingAppointmentPackagesUnavailableReason, BookingFieldId, BookingFieldValue, BookingFieldView, BookingFlowActionResult, BookingFlowFeedback, BookingFlowStatus, BookingFlowStep, BookingFlowStepId, BookingFlowView, BookingResourceView, BookingSlotSelection, BookingSlotView, BookingSubmitActionResult, BookingSubmitOptions, BookingValidationErrors, DerivedBookingFlowSteps, DeriveBookingFlowStepsInput, LoadState, } from "../nodes/booking-form.headless.state";
@@ -30,7 +30,7 @@ export type BookingValidationErrors = Readonly<{
30
30
  fieldErrors: Readonly<Record<string, string>>;
31
31
  }>;
32
32
  export type BookingFieldId = Brand<string, "BookingFieldId">;
33
- export declare const asBookingFieldId: (id: string) => BookingFieldId;
33
+ export declare const unsafeAsBookingFieldId: (id: string) => BookingFieldId;
34
34
  export type BookingFieldValue = string | number | boolean | readonly string[] | null;
35
35
  export type BookingSlotView = Readonly<{
36
36
  key: string;
@@ -8,10 +8,7 @@ type EventCompactRowProps = {
8
8
  /**
9
9
  * EventCompactRow Component
10
10
  *
11
- * Dense two-line row for compact event list display.
12
- * Top line: title + date/time
13
- * Bottom line: venue + price
14
- * CTA button on the right, vertically centered.
11
+ * Editorial compact event row with a date rail, event details, and action rail.
15
12
  *
16
13
  * Server-safe (no client-only APIs).
17
14
  */
@@ -44,6 +44,13 @@ export declare function formatEventDateParts(args: {
44
44
  date: string;
45
45
  timeRange: string;
46
46
  };
47
+ export type EventCompactDateRail = Readonly<{
48
+ weekday: string;
49
+ day: string;
50
+ month: string;
51
+ label: string;
52
+ }>;
53
+ export declare function formatEventCompactDateRail(isoTimestamp: string, options?: DateTimeFormatOptions): EventCompactDateRail;
47
54
  export declare function formatTeamMemberNames(names: readonly string[]): string | null;
48
55
  export declare function formatEventTeacherLine(event: PublicEvent): string | null;
49
56
  export { addMonths, formatCalendarTitle, formatDateKey, getEndOfMonth, getMonthCalendarDays, getOrderedDayNames, getStartOfMonth, getThreeMonthRange, getWeekCalendarDays, isToday, MAX_EVENTS_PER_DAY, } from '../../../../../../../calendar/src/index';
@@ -9,11 +9,5 @@ type HeaderSectionNodeProps = React.PropsWithChildren<{
9
9
  "data-preview-site-chrome-surface"?: string;
10
10
  [key: string]: unknown;
11
11
  }>;
12
- /**
13
- * Client-side header wrapper for preview/editor rendering.
14
- *
15
- * Mirrors the server header wrapper structure so preview mode behaves the same
16
- * as published mode (mobile menu, dropdown a11y, scroll behavior).
17
- */
18
- declare const HeaderSectionNode: React.FC<HeaderSectionNodeProps>;
19
- export default HeaderSectionNode;
12
+ declare const _default: import("../header/shared").EditableSurfaceForwardingComponent<HeaderSectionNodeProps>;
13
+ export default _default;
@@ -5,12 +5,5 @@ type HeaderSectionNodeProps = React.PropsWithChildren<{
5
5
  "data-preview-site-chrome-surface"?: string;
6
6
  [key: string]: unknown;
7
7
  }>;
8
- /**
9
- * Server-safe header section without scroll effects.
10
- * Client counterpart adds scroll-aware behavior.
11
- *
12
- * Positioning classes (sticky, fixed, z-index) are applied to the outer wrapper
13
- * so that CSS positioning works correctly relative to the page scroll container.
14
- */
15
- declare const HeaderSectionNode: React.FC<HeaderSectionNodeProps>;
16
- export default HeaderSectionNode;
8
+ declare const _default: import("../header/shared").EditableSurfaceForwardingComponent<HeaderSectionNodeProps>;
9
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import type { BlockApiClient } from '../api';
2
+ import { type CartDiscountUiState, type planCartDiscountAvailabilityRequests } from './shop-checkout-form';
3
+ type CartDiscountAvailabilityPlan = ReturnType<typeof planCartDiscountAvailabilityRequests>;
4
+ export declare function useCartDiscountUiState(api: BlockApiClient, plan: CartDiscountAvailabilityPlan): CartDiscountUiState;
5
+ export {};
@@ -0,0 +1,76 @@
1
+ import { type Brand, type Result } from '../../../../../core/src/index';
2
+ import type { DiscountsAvailableRequest, DiscountsAvailableResponse, ShopCheckoutRequest, UnifiedCheckoutItem, UnifiedCheckoutRequest } from '../api/types';
3
+ import type { CommerceCheckoutState } from './shop-commerce.shared';
4
+ export type ManualDiscountCode = Brand<string, 'ManualDiscountCode'>;
5
+ export type CheckoutContactForm = Readonly<{
6
+ name: string;
7
+ email: string;
8
+ }>;
9
+ export type CheckoutDiscountForm = Readonly<{
10
+ discountCode: string;
11
+ }>;
12
+ export type ShopCheckoutForm = CheckoutContactForm & CheckoutDiscountForm;
13
+ export type NormalizedCheckoutContact = Readonly<{
14
+ name: string;
15
+ email: string;
16
+ }>;
17
+ export type CheckoutFormError = Readonly<{
18
+ type: 'missing_contact';
19
+ message: string;
20
+ }> | Readonly<{
21
+ type: 'invalid_email';
22
+ message: string;
23
+ }> | Readonly<{
24
+ type: 'empty_cart';
25
+ message: string;
26
+ }> | Readonly<{
27
+ type: 'blocked_cart';
28
+ reason: 'mixed_currency';
29
+ message: string;
30
+ }>;
31
+ export type CartDiscountAvailabilityRequest = Readonly<{
32
+ context: DiscountsAvailableRequest['context'];
33
+ subtotalCents: number;
34
+ currency: string;
35
+ }>;
36
+ export type CartDiscountUiState = Readonly<{
37
+ type: 'unavailable';
38
+ }> | Readonly<{
39
+ type: 'loading';
40
+ }> | Readonly<{
41
+ type: 'manual-allowed';
42
+ }> | Readonly<{
43
+ type: 'auto-only';
44
+ autoAppliedDiscount: DiscountsAvailableResponse['autoAppliedDiscount'];
45
+ }> | Readonly<{
46
+ type: 'error-unavailable';
47
+ }>;
48
+ export declare function normalizeManualDiscountCode(raw: string): ManualDiscountCode | null;
49
+ export declare function normalizeCheckoutEmail(raw: string): Result<string, CheckoutFormError>;
50
+ export declare function normalizeCheckoutContactForm(form: CheckoutContactForm): Result<NormalizedCheckoutContact, CheckoutFormError>;
51
+ export type DirectShopCheckoutCommand = Omit<ShopCheckoutRequest, 'siteId' | 'discountCode'> & Readonly<{
52
+ discountCode?: ManualDiscountCode;
53
+ }>;
54
+ export declare function planDirectShopCheckoutRequest(input: Readonly<{
55
+ productType: DirectShopCheckoutCommand['productType'];
56
+ productId: string;
57
+ form: ShopCheckoutForm;
58
+ successUrl: string;
59
+ cancelUrl: string;
60
+ confirmDuplicate?: boolean;
61
+ }>): Result<DirectShopCheckoutCommand, CheckoutFormError>;
62
+ export type UnifiedCheckoutCommand = Omit<UnifiedCheckoutRequest, 'siteId' | 'discountCode'> & Readonly<{
63
+ discountCode?: ManualDiscountCode;
64
+ }>;
65
+ export declare function buildUnifiedCheckoutItems(checkout: Extract<CommerceCheckoutState, {
66
+ kind: 'ready';
67
+ }>): UnifiedCheckoutItem[];
68
+ export declare function planUnifiedCheckoutRequest(input: Readonly<{
69
+ checkout: CommerceCheckoutState;
70
+ form: ShopCheckoutForm;
71
+ successUrl: string;
72
+ cancelUrl: string;
73
+ }>): Result<UnifiedCheckoutCommand, CheckoutFormError>;
74
+ export declare function planCartDiscountAvailabilityRequests(checkout: CommerceCheckoutState): Result<CartDiscountAvailabilityRequest[], CheckoutFormError>;
75
+ export declare function aggregateCartDiscountUiState(availability: readonly DiscountsAvailableResponse[]): CartDiscountUiState;
76
+ export declare function checkoutFormForDiscountUiState(form: ShopCheckoutForm, discountUiState: CartDiscountUiState): ShopCheckoutForm;
@@ -1,9 +1,6 @@
1
1
  import { type FeedbackState } from '@riverbankcms/frontend-state';
2
+ import type { ShopCheckoutForm } from './shop-checkout-form';
2
3
  export type ShopCheckoutNotice = 'success' | 'cancelled' | null;
3
- export type ShopCheckoutForm = Readonly<{
4
- name: string;
5
- email: string;
6
- }>;
7
4
  export type ShopCheckoutState = Readonly<{
8
5
  form: ShopCheckoutForm;
9
6
  submission: 'idle' | 'submitting';
@@ -9,6 +9,7 @@ declare class CommerceCartStore {
9
9
  addProduct(input: Readonly<{
10
10
  key: string;
11
11
  productId: string;
12
+ productCategoryId?: string | null;
12
13
  variantId?: string | null;
13
14
  title: string;
14
15
  variantTitle?: string | null;
@@ -36,6 +37,7 @@ export declare function useCommerceCart(siteId: string | undefined): {
36
37
  addProduct: (input: Readonly<{
37
38
  key: string;
38
39
  productId: string;
40
+ productCategoryId?: string | null;
39
41
  variantId?: string | null;
40
42
  title: string;
41
43
  variantTitle?: string | null;
@@ -3,6 +3,7 @@ export type CommerceCartItem = Readonly<{
3
3
  key: string;
4
4
  kind: 'product';
5
5
  productId: string;
6
+ productCategoryId: string | null;
6
7
  variantId?: string;
7
8
  title: string;
8
9
  variantTitle?: string | null;
@@ -0,0 +1,52 @@
1
+ import type { DiscountApplyRejectedReason, DiscountApplyResponse } from '../api/types';
2
+ import { type ManualDiscountCode } from './shop-checkout-form';
3
+ export type DiscountApplyClientRejectedReason = 'empty_code' | 'email_required';
4
+ export type DiscountApplyRejectedReasonWithClient = DiscountApplyClientRejectedReason | DiscountApplyRejectedReason;
5
+ export type AppliedDiscountCode = Extract<DiscountApplyResponse, {
6
+ type: 'applied';
7
+ }>;
8
+ export type DiscountApplyStatus = Readonly<{
9
+ type: 'idle';
10
+ }> | Readonly<{
11
+ type: 'applying';
12
+ }> | Readonly<{
13
+ type: 'applied';
14
+ discount: AppliedDiscountCode;
15
+ }> | Readonly<{
16
+ type: 'rejected';
17
+ reason: DiscountApplyRejectedReasonWithClient;
18
+ message: string;
19
+ }>;
20
+ export type DiscountApplyState = Readonly<{
21
+ isOpen: boolean;
22
+ draftCode: string;
23
+ status: DiscountApplyStatus;
24
+ }>;
25
+ export type DiscountApplyFeedback = Readonly<{
26
+ tone: 'success' | 'error' | 'info';
27
+ message: string;
28
+ }>;
29
+ export type DiscountApplyAction = Readonly<{
30
+ type: 'open';
31
+ }> | Readonly<{
32
+ type: 'draftChanged';
33
+ draftCode: string;
34
+ }> | Readonly<{
35
+ type: 'remove';
36
+ }> | Readonly<{
37
+ type: 'applyStarted';
38
+ }> | Readonly<{
39
+ type: 'applySucceeded';
40
+ discount: AppliedDiscountCode;
41
+ }> | Readonly<{
42
+ type: 'applyRejected';
43
+ reason: DiscountApplyRejectedReasonWithClient;
44
+ message: string;
45
+ }> | Readonly<{
46
+ type: 'resetApplied';
47
+ }>;
48
+ export declare const initialDiscountApplyState: DiscountApplyState;
49
+ export declare function discountApplyReducer(state: DiscountApplyState, action: DiscountApplyAction): DiscountApplyState;
50
+ export declare function getAppliedDiscountCode(state: DiscountApplyState): ManualDiscountCode | null;
51
+ export declare function isDiscountApplyInFlight(state: DiscountApplyState): boolean;
52
+ export declare function getDiscountApplyFeedback(status: DiscountApplyStatus, formatPrice: (cents: number, currency: string) => string): DiscountApplyFeedback | null;
@@ -1,14 +1,12 @@
1
1
  import type { PublicMembershipProduct, PublicPassProduct } from '../../blocks/shop';
2
2
  import type { ShopDuplicateMembershipWarning as DuplicateMembershipWarning } from '../api';
3
+ import type { ShopCheckoutForm } from './shop-checkout-form';
3
4
  export type CheckoutReturnNotice = Readonly<{
4
5
  kind: 'success';
5
6
  }> | Readonly<{
6
7
  kind: 'cancelled';
7
8
  }> | null;
8
- export type CheckoutForm = Readonly<{
9
- email: string;
10
- name: string;
11
- }>;
9
+ export type CheckoutForm = ShopCheckoutForm;
12
10
  export type CheckoutItem = Readonly<{
13
11
  productType: 'pass';
14
12
  product: PublicPassProduct;
@@ -0,0 +1,21 @@
1
+ import type { BlockApiClient, DiscountApplyLine } from '../api';
2
+ import type { DiscountApplyAction, DiscountApplyState } from './shop-discount-apply.state';
3
+ export type DiscountApplyLinesPlan = Readonly<{
4
+ ok: true;
5
+ lines: DiscountApplyLine[];
6
+ }> | Readonly<{
7
+ ok: false;
8
+ }>;
9
+ export declare const DISCOUNT_APPLY_MESSAGES: {
10
+ readonly emptyCode: "Enter a discount code first.";
11
+ readonly emailRequired: "Enter your email before applying a code.";
12
+ readonly unavailable: "That code doesn't work for this checkout.";
13
+ readonly unknown: "We couldn't check that code. Try again.";
14
+ };
15
+ export declare function useDiscountApply(options: Readonly<{
16
+ api: BlockApiClient;
17
+ state: DiscountApplyState;
18
+ dispatch: (action: DiscountApplyAction) => void;
19
+ getCustomerEmail: () => string;
20
+ getLines: () => DiscountApplyLinesPlan;
21
+ }>): () => Promise<void>;
@@ -0,0 +1,54 @@
1
+ import type React from 'react';
2
+ type BlockDiscountCodeSurface = 'course-registration' | 'event-registration';
3
+ export type DiscountCodeDisclosureSurface = BlockDiscountCodeSurface | 'theme-form';
4
+ export declare const BLOCK_DISCOUNT_CODE_DISCLOSURE_CLASSES: {
5
+ readonly 'course-registration': {
6
+ readonly root: "cr-discount";
7
+ readonly toggle: "cr-discount__toggle";
8
+ readonly form: "cr-discount__form";
9
+ readonly label: "cr-discount__label";
10
+ readonly row: "cr-discount__row";
11
+ readonly input: "cr-discount__input";
12
+ readonly apply: "cr-discount__apply";
13
+ readonly remove: "cr-discount__remove";
14
+ readonly hint: "cr-discount__hint";
15
+ readonly feedback: "cr-discount__feedback";
16
+ };
17
+ readonly 'event-registration': {
18
+ readonly root: "er-discount";
19
+ readonly toggle: "er-discount__toggle";
20
+ readonly form: "er-discount__form";
21
+ readonly label: "er-discount__label";
22
+ readonly row: "er-discount__row";
23
+ readonly input: "er-discount__input";
24
+ readonly apply: "er-discount__apply";
25
+ readonly remove: "er-discount__remove";
26
+ readonly hint: "er-discount__hint";
27
+ readonly feedback: "er-discount__feedback";
28
+ };
29
+ };
30
+ export type DiscountCodeDisclosureProps = Readonly<{
31
+ surface: DiscountCodeDisclosureSurface;
32
+ isOpen: boolean;
33
+ code: string;
34
+ onOpen: () => void;
35
+ onChange: (next: string) => void;
36
+ onRemove: () => void;
37
+ onApply?: () => void;
38
+ id?: string;
39
+ toggleLabel?: string;
40
+ label?: string;
41
+ placeholder?: string;
42
+ applyLabel?: string;
43
+ removeLabel?: string;
44
+ hint?: string;
45
+ feedback?: Readonly<{
46
+ tone: 'success' | 'error' | 'info';
47
+ message: string;
48
+ }> | null;
49
+ isApplying?: boolean;
50
+ applyDisabled?: boolean;
51
+ disabled?: boolean;
52
+ }>;
53
+ export declare function DiscountCodeDisclosure({ surface, isOpen, code, onOpen, onChange, onRemove, onApply, id, toggleLabel, label, placeholder, applyLabel, removeLabel, hint, feedback, isApplying, applyDisabled, disabled, }: DiscountCodeDisclosureProps): React.JSX.Element;
54
+ export {};
@@ -4,6 +4,8 @@
4
4
  export { CheckIcon } from './CheckIcon';
5
5
  export { ClockIcon } from './ClockIcon';
6
6
  export { CrossIcon } from './CrossIcon';
7
+ export { BLOCK_DISCOUNT_CODE_DISCLOSURE_CLASSES, DiscountCodeDisclosure, } from './DiscountCodeDisclosure';
8
+ export type { DiscountCodeDisclosureProps, DiscountCodeDisclosureSurface, } from './DiscountCodeDisclosure';
7
9
  export { ActionRow } from './ActionRow';
8
10
  export type { ActionRowProps } from './ActionRow';
9
11
  export { BookingOptionCompactRow } from './BookingOptionCompactRow';
@@ -8,5 +8,5 @@ export { DEFAULT_CURRENCY } from './types';
8
8
  export { BOOK_TARGET_PARAMS, buildCheckoutReturnUrls, resolveDedicatedBookingHref, resolveDedicatedBookingPath, resolveDedicatedBookingTarget, formatPrice, scrollToBlock, consumeSearchParam, consumeSearchParams, validateFormData, getStepNumber, } from './utils';
9
9
  export type { DedicatedBookingTarget, UniversalBookingRouteTarget, } from './utils';
10
10
  export { createBodyThemePortalRoot } from './utils';
11
- export { ActionRow, BookingOptionCompactRow, BookingOptionList, CheckIcon, ClockIcon, CrossIcon, FieldValidationMessage, FeedbackMessage, getFieldValidationControlProps, MembershipHero, ModalShell, StateIcon, StepIndicator, TerminalPanel, } from './components';
12
- export type { ActionRowProps, BookingOptionCompactRowAction, BookingOptionCompactRowProps, BookingOptionCompactRowViewModel, BookingOptionGroupViewModel, BookingOptionListProps, BookingOptionMetaItem, FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, FeedbackLiveMode, FeedbackMessageProps, FeedbackTone, ModalShellProps, StepIndicatorBaseProps, StepIndicatorProps, TerminalPanelProps, TerminalPanelTitleElement, } from './components';
11
+ export { ActionRow, BookingOptionCompactRow, BookingOptionList, CheckIcon, ClockIcon, CrossIcon, BLOCK_DISCOUNT_CODE_DISCLOSURE_CLASSES, DiscountCodeDisclosure, FieldValidationMessage, FeedbackMessage, getFieldValidationControlProps, MembershipHero, ModalShell, StateIcon, StepIndicator, TerminalPanel, } from './components';
12
+ export type { ActionRowProps, BookingOptionCompactRowAction, BookingOptionCompactRowProps, BookingOptionCompactRowViewModel, BookingOptionGroupViewModel, BookingOptionListProps, BookingOptionMetaItem, DiscountCodeDisclosureProps, DiscountCodeDisclosureSurface, FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, FeedbackLiveMode, FeedbackMessageProps, FeedbackTone, ModalShellProps, StepIndicatorBaseProps, StepIndicatorProps, TerminalPanelProps, TerminalPanelTitleElement, } from './components';
@@ -45,8 +45,8 @@ declare const twoColumnContainerClassOptionsSchema: z.ZodObject<{
45
45
  export declare const twoColumnContainerClassTransform: TransformDefinition<z.infer<typeof twoColumnContainerClassOptionsSchema>>;
46
46
  declare const twoColumnFlexBasisOptionsSchema: z.ZodObject<{
47
47
  side: z.ZodEnum<{
48
- image: "image";
49
48
  text: "text";
49
+ image: "image";
50
50
  }>;
51
51
  }, z.core.$strip>;
52
52
  export declare const twoColumnFlexBasisTransform: TransformDefinition<z.infer<typeof twoColumnFlexBasisOptionsSchema>>;
@@ -73,7 +73,7 @@ export declare const transformDefinitions: {
73
73
  reverseClass: string;
74
74
  }>;
75
75
  readonly "ui.twoColumnFlexBasis": TransformDefinition<{
76
- side: "image" | "text";
76
+ side: "text" | "image";
77
77
  }>;
78
78
  readonly "media.fromUrl": TransformDefinition<{
79
79
  width?: number;
@@ -0,0 +1,26 @@
1
+ export type ContentTypeEditorContentState = Readonly<{
2
+ deleteDialogOpen: boolean;
3
+ deletePending: boolean;
4
+ seoDisclosure: Readonly<{
5
+ open: boolean;
6
+ lastIssueCount: number;
7
+ }>;
8
+ }>;
9
+ export type ContentTypeEditorContentAction = Readonly<{
10
+ type: 'delete-dialog-opened';
11
+ }> | Readonly<{
12
+ type: 'delete-dialog-closed';
13
+ }> | Readonly<{
14
+ type: 'delete-started';
15
+ }> | Readonly<{
16
+ type: 'delete-finished';
17
+ }> | Readonly<{
18
+ type: 'seo-open-changed';
19
+ open: boolean;
20
+ }> | Readonly<{
21
+ type: 'seo-validation-state-changed';
22
+ issueCount: number;
23
+ hasMetadataError: boolean;
24
+ }>;
25
+ export declare function createInitialContentTypeEditorContentState(): ContentTypeEditorContentState;
26
+ export declare function contentTypeEditorContentReducer(state: ContentTypeEditorContentState, action: ContentTypeEditorContentAction): ContentTypeEditorContentState;
@@ -0,0 +1,75 @@
1
+ import type { ContentEntryDetail, ContentTypeKey } from '../../../api/src/content-editor';
2
+ import type { ContentEntryDefinition, ContentEntrySnapshot, ContentLifecycleStatus, ContentTypeSchema, RoutingHelpers } from '../../../content-model/src/index';
3
+ export type SnapshotDefaults = {
4
+ title: string;
5
+ slug?: string | null;
6
+ };
7
+ export type ContentEntryDefinitionPlan<TResponse, TSnapshot extends ContentEntrySnapshot> = Readonly<{
8
+ type: ContentTypeKey;
9
+ title: string;
10
+ kind: 'content' | 'page';
11
+ routing: RoutingHelpers;
12
+ hasRoute: boolean;
13
+ snapshotFromResponse: (response: TResponse) => TSnapshot;
14
+ getRouteId?: (response: TResponse) => string | undefined;
15
+ }>;
16
+ type BaseFactoryOptions<TResponse> = {
17
+ typeKey: ContentTypeKey;
18
+ schema: ContentTypeSchema;
19
+ entityLabel: string;
20
+ getRouteId?: (response: TResponse) => string | undefined;
21
+ };
22
+ export type ContentEntriesDefinitionPlanOptions<TContent> = BaseFactoryOptions<ContentEntryDetail<TContent>>;
23
+ export type PagesDefinitionPlanOptions = BaseFactoryOptions<PageRecordLike>;
24
+ type PageRecordLike = {
25
+ id: string;
26
+ draftTitle?: string | null;
27
+ draftPath?: string | null;
28
+ draftStatus?: string | null;
29
+ title?: string | null;
30
+ path?: string | null;
31
+ status?: string | null;
32
+ publishedAt?: string | null;
33
+ scheduledPublishAt?: string | null;
34
+ scheduledPublishFailedAt?: string | null;
35
+ scheduledPublishLastError?: string | null;
36
+ draftMetaTitle?: string | null;
37
+ draftMetaDescription?: string | null;
38
+ publishedMetaTitle?: string | null;
39
+ publishedMetaDescription?: string | null;
40
+ ogImageId?: string | null;
41
+ };
42
+ type ContentEntryLikeForSnapshot = {
43
+ entry: {
44
+ id: string;
45
+ };
46
+ route: {
47
+ draftTitle?: string | null;
48
+ draftPath?: string | null;
49
+ draftSlug?: string | null;
50
+ draftStatus?: string | null;
51
+ publishedTitle?: string | null;
52
+ publishedPath?: string | null;
53
+ publishedSlug?: string | null;
54
+ status?: string | null;
55
+ publishedAt?: string | null;
56
+ scheduledPublishAt?: string | null;
57
+ draftMetaTitle?: string | null;
58
+ draftMetaDescription?: string | null;
59
+ publishedMetaTitle?: string | null;
60
+ publishedMetaDescription?: string | null;
61
+ ogImageId?: string | null;
62
+ } | null;
63
+ draftContent?: Record<string, unknown> | null;
64
+ publishedContent?: Record<string, unknown> | null;
65
+ };
66
+ export declare function getDefaultEntityLabel(name?: string | null): string;
67
+ export declare function createSnapshotDefaults(entityLabel: string, slugSeed?: string | null): SnapshotDefaults;
68
+ export declare function asContentEntrySnapshotSource<TContent>(detail: ContentEntryDetail<TContent>): ContentEntryLikeForSnapshot;
69
+ export declare function createContentEntriesDefinitionPlan<TContent>(options: ContentEntriesDefinitionPlanOptions<TContent>): ContentEntryDefinitionPlan<ContentEntryDetail<TContent>, ContentEntrySnapshot<ContentLifecycleStatus>>;
70
+ export declare function createPagesDefinitionPlan(options: PagesDefinitionPlanOptions): ContentEntryDefinitionPlan<PageRecordLike, ContentEntrySnapshot<'draft' | 'scheduled' | 'published'>>;
71
+ export type PageEntrySnapshot = ContentEntrySnapshot<'draft' | 'scheduled' | 'published'>;
72
+ export declare function createPageSnapshot(record: PageRecordLike, schema: ContentTypeSchema): PageEntrySnapshot;
73
+ export declare function mapPageRecordToSnapshot(record: PageRecordLike, schema: ContentTypeSchema): PageEntrySnapshot;
74
+ export type DefinitionServices<TEntry extends ContentEntrySnapshot, TMetadataPayload extends Record<string, unknown>, TPublishPayload, TMetadataResponse extends Record<string, unknown> = Record<string, unknown>> = ContentEntryDefinition<TEntry, Record<string, unknown>, TMetadataPayload, TPublishPayload, TMetadataResponse>['services'];
75
+ export {};