@riverbankcms/sdk 0.104.3 → 0.107.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 (236) hide show
  1. package/README.md +84 -51
  2. package/dist/{PreviewEditorSidebar-CBMhU9p_.mjs → PreviewEditorSidebar-DpAbAl08.mjs} +1811 -1179
  3. package/dist/{PreviewEditorUI-C5KEw4M8.mjs → PreviewEditorUI-O7cn6Xxv.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-CStABBUh.mjs → PreviewQueryProvider-D0tnKl0t.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Iq12HjL7.mjs → SdkPreviewModeRuntime-CVB7urtl.mjs} +2144 -393
  6. package/dist/{SiteChromeCustomizeContext-Cx0NMdyv.mjs → SiteChromeCustomizeContext-C_sizso-.mjs} +3825 -2653
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +32945 -1339
  8. package/dist/_dts/api/src/bookingConfig.d.ts +2 -0
  9. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +5 -1
  10. package/dist/_dts/api/src/contentRuntime.d.ts +6 -15
  11. package/dist/_dts/api/src/courses.d.ts +68 -10
  12. package/dist/_dts/api/src/endpoints.d.ts +29 -0
  13. package/dist/_dts/api/src/index.d.ts +124 -124
  14. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +9 -0
  15. package/dist/_dts/api/src/sdkContracts.d.ts +116 -6
  16. package/dist/_dts/api/src/siteOperations.d.ts +1 -0
  17. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +26 -4
  18. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +31 -46
  19. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +36 -4
  20. package/dist/_dts/blocks/src/definitions.d.ts +1 -1
  21. package/dist/_dts/blocks/src/portal/types.d.ts +25 -7
  22. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +2 -2
  23. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -0
  24. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +2 -0
  25. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +4 -0
  26. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule-projection.d.ts +52 -0
  27. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule.d.ts +22 -0
  28. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +45 -0
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +10 -0
  30. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -1
  31. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -0
  33. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +8 -2
  34. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +8 -8
  35. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +24 -24
  36. package/dist/_dts/blocks/src/system/blocks/offerings-preview/scheduleSummary.d.ts +29 -0
  37. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -1
  38. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +2 -5
  40. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +1 -0
  42. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +2 -2
  43. package/dist/_dts/blocks/src/system/node/fragments/styledCard.d.ts +3 -0
  44. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  45. package/dist/_dts/blocks/src/system/runtime/blockComposition.d.ts +2 -0
  46. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +90 -6
  47. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +45 -3
  48. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +2 -2
  50. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/logic.d.ts +2 -1
  51. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/view.d.ts +1 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/course-details.server.d.ts +2 -1
  53. package/dist/_dts/blocks/src/system/runtime/nodes/course-page-surface-scope.d.ts +17 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +3 -0
  55. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +5 -0
  56. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.server.d.ts +1 -1
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +9 -18
  58. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +106 -0
  59. package/dist/_dts/blocks/src/system/runtime/nodes/events/RecurringSchedule.d.ts +11 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +7 -3
  61. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +3 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +11 -1
  63. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +3 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +6 -6
  66. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +11 -5
  67. package/dist/_dts/blocks/src/system/runtime/nodes/shop.types.d.ts +2 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/svg.d.ts +7 -0
  69. package/dist/_dts/core/src/branded.d.ts +44 -0
  70. package/dist/_dts/core/src/dated-offering-settlement.d.ts +47 -0
  71. package/dist/_dts/core/src/event-page-surface-subject.d.ts +44 -0
  72. package/dist/_dts/core/src/index.d.ts +49 -47
  73. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +1452 -15
  74. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +1 -1
  75. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +4 -1
  76. package/dist/_dts/media-core/src/index.d.ts +2 -1
  77. package/dist/_dts/media-core/src/storagePathDomain.d.ts +47 -0
  78. package/dist/_dts/media-core/src/url.d.ts +1 -21
  79. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +4 -2
  80. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -1
  81. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  82. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -9
  83. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +7 -11
  84. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -9
  85. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +2 -6
  86. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -9
  87. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +81 -43
  88. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.typography.d.ts +61 -0
  89. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +7 -17
  90. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +15 -8
  91. package/dist/_dts/preview-next/src/client/preview/typographyFontCatalog.d.ts +57 -0
  92. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -1
  93. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +4 -7
  94. package/dist/_dts/sdk/src/cli/commands/style.d.ts +24 -10
  95. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +3 -3
  96. package/dist/_dts/sdk/src/cli/sync/media.d.ts +16 -2
  97. package/dist/_dts/sdk/src/client/management/blocks.d.ts +1 -1
  98. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  99. package/dist/_dts/sdk/src/client/management/types.d.ts +132 -23
  100. package/dist/_dts/sdk/src/client/types.d.ts +2 -0
  101. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  102. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  103. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  104. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +23 -3
  105. package/dist/_dts/sdk/src/data/dataLoaderContext.d.ts +17 -0
  106. package/dist/_dts/sdk/src/data/dataLoaderValue.d.ts +36 -0
  107. package/dist/_dts/sdk/src/data/defineOwnDataProperty.d.ts +2 -0
  108. package/dist/_dts/sdk/src/data/executeCodeLoaders.d.ts +36 -40
  109. package/dist/_dts/sdk/src/data/index.d.ts +3 -3
  110. package/dist/_dts/sdk/src/data/resolveBlockData.d.ts +54 -0
  111. package/dist/_dts/sdk/src/data/types.d.ts +43 -78
  112. package/dist/_dts/sdk/src/next/index.d.ts +1 -0
  113. package/dist/_dts/sdk/src/next/redirect-destination.d.ts +1 -1
  114. package/dist/_dts/sdk/src/next/resolveTheme.d.ts +2 -1
  115. package/dist/_dts/sdk/src/next/types.d.ts +10 -1
  116. package/dist/_dts/sdk/src/public-api/contracts.d.ts +3 -8
  117. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +9 -4
  118. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +6 -10
  119. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  120. package/dist/_dts/sdk/src/server.d.ts +4 -3
  121. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  122. package/dist/_dts/sdk/src/version.d.ts +1 -1
  123. package/dist/_dts/site-commands/src/capabilityGaps.d.ts +2 -2
  124. package/dist/_dts/site-commands/src/commands.d.ts +921 -30
  125. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +5 -1
  126. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  127. package/dist/_dts/theme-core/src/buttons/personalities/quiet-arrow.d.ts +17 -0
  128. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -2
  129. package/dist/_dts/theme-core/src/buttons/types.d.ts +9 -5
  130. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  131. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -1
  132. package/dist/_dts/theme-core/src/fonts/types.d.ts +6 -0
  133. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  134. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  135. package/dist/_dts/theme-core/src/palette/colors.d.ts +12 -0
  136. package/dist/_dts/theme-core/src/palette/curated/brand-led.d.ts +10 -5
  137. package/dist/_dts/theme-core/src/palette/curated/high-contrast.d.ts +6 -3
  138. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +31 -236
  139. package/dist/_dts/theme-core/src/palette/curated/soft-natural.d.ts +8 -4
  140. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +14 -12
  141. package/dist/_dts/theme-core/src/palette/curated/warm-dark.d.ts +4 -2
  142. package/dist/_dts/theme-core/src/palette/curated/warm-neutral.d.ts +8 -4
  143. package/dist/_dts/theme-core/src/palette/editorState.d.ts +33 -3
  144. package/dist/_dts/theme-core/src/palette/index.d.ts +0 -4
  145. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +12 -6
  146. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +20 -72
  147. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +29 -4
  148. package/dist/_dts/theme-core/src/palette/selection.d.ts +6 -4
  149. package/dist/_dts/theme-core/src/schema.d.ts +121 -4
  150. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +218 -158
  151. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -6
  152. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +218 -158
  153. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +1 -0
  154. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  155. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +161 -51
  156. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +6 -0
  157. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  158. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -1
  159. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +24 -1
  160. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +14 -48
  161. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -23
  162. package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +1 -2
  163. package/dist/_dts/theme-core/src/site-styles/siteStyleTypography.d.ts +456 -0
  164. package/dist/_dts/theme-core/src/site-styles/types.d.ts +52 -3
  165. package/dist/cli/index.mjs +3155 -1701
  166. package/dist/client/{DiscountCodeDisclosure-BXM73_E5.mjs → DiscountCodeDisclosure-BwGkvmVH.mjs} +1 -1
  167. package/dist/client/{EventCombined.client-DT5elP7j.mjs → EventCombined.client-JnWE6Hzc.mjs} +3 -3
  168. package/dist/client/{EventListing.client-pTYGfV9C.mjs → EventListing.client-DQewc_kg.mjs} +2 -2
  169. package/dist/client/{LeafletStaticMap-dQrhlUe3.mjs → LeafletStaticMap-DPAU3SFt.mjs} +1 -1
  170. package/dist/client/{MagicLinkForm-u6Dul4j5.mjs → MagicLinkForm-D4kpWCbW.mjs} +2 -2
  171. package/dist/client/{StepIndicator-nWqineJ2.mjs → StepIndicator-CBlkb4rA.mjs} +2 -2
  172. package/dist/client/{accordion-CSJcTUyH.mjs → accordion-DAIBVpTS.mjs} +1 -1
  173. package/dist/client/{bookingForm-C73wOuVa.mjs → bookingForm-DZ-4l5_1.mjs} +7 -7
  174. package/dist/client/bookings.mjs +239 -110
  175. package/dist/client/{buttons-DfYyqt8C.mjs → buttons-DJgynGHQ.mjs} +122 -58
  176. package/dist/client/{carousel-fMBb0JSc.mjs → carousel-D-SLfX8r.mjs} +1 -1
  177. package/dist/client/{cart-BtaCwT3S.mjs → cart-CEgbgJhX.mjs} +3 -3
  178. package/dist/client/{checkout-DkTwZSnh.mjs → checkout-CXWrCRAA.mjs} +3 -3
  179. package/dist/client/client.mjs +4300 -1560
  180. package/dist/client/{colorStyles-Wyl6JujD.mjs → colorStyles-jZS6KfkP.mjs} +1 -1
  181. package/dist/client/{colorTokenParts-dT8MISgJ.mjs → colorTokenParts-CMugwvX_.mjs} +3 -1
  182. package/dist/client/{courseRegistration-DnLmapJu.mjs → courseRegistration-DVmLrRVz.mjs} +56 -21
  183. package/dist/client/{eventCalendar-BvLOc9KY.mjs → eventCalendar-DCuyPY_c.mjs} +29 -21
  184. package/dist/client/{eventCombined-kShgJPQr.mjs → eventCombined-kP2CA2D4.mjs} +2 -2
  185. package/dist/client/{eventDetails-C5NTM0Vo.mjs → eventDetails-DU0LeF5e.mjs} +4 -4
  186. package/dist/client/{eventListing-B82ZdKP6.mjs → eventListing-CcHF87BI.mjs} +2 -2
  187. package/dist/client/{eventRegistration-qJVFqBWo.mjs → eventRegistration-DJnR0yFH.mjs} +8 -8
  188. package/dist/client/{form-BvAcKiuu.mjs → form-CH1lCusH.mjs} +2 -2
  189. package/dist/client/{headerSection-NvAiEHAg.mjs → headerSection-CBPFZoku.mjs} +3 -3
  190. package/dist/client/hooks.mjs +2958 -1848
  191. package/dist/client/{locationMap-D0j52xfI.mjs → locationMap-Cx1hBg5n.mjs} +3 -3
  192. package/dist/client/{media-BCW_g2cQ.mjs → media-DHtSxS5V.mjs} +61 -56
  193. package/dist/client/{newsletterForm-B8_i93qH.mjs → newsletterForm-1ZL_ti9u.mjs} +3 -3
  194. package/dist/client/{pricing-DIYnyHOk.mjs → pricing-BIbzmV0G.mjs} +1 -1
  195. package/dist/client/{productDetail-w0eAHkuQ.mjs → productDetail-BTh5gHBV.mjs} +3 -3
  196. package/dist/client/{productList-Vsguq5Xt.mjs → productList-Cc7OMrqN.mjs} +3 -3
  197. package/dist/client/{propsDecoder-CD2pJ1WB.mjs → propsDecoder-oR-M-ISN.mjs} +192 -59
  198. package/dist/client/rendering/client.mjs +2031 -1239
  199. package/dist/client/rendering/islands.mjs +20 -20
  200. package/dist/client/rendering.mjs +4889 -1712
  201. package/dist/client/{shop-Dgxs-Q8F.mjs → shop-CQ_YbCnn.mjs} +8 -8
  202. package/dist/client/{shop-commerce-DJAhsTaT.mjs → shop-commerce-BM-AoD3M.mjs} +6 -6
  203. package/dist/client/{shop-commerce-store-CfCXltXW.mjs → shop-commerce-store-DFMQhU5p.mjs} +1 -1
  204. package/dist/client/{shopShared-CmDcPXUt.mjs → shopShared-D0SKO2Cu.mjs} +3 -3
  205. package/dist/client/{useDiscountCodeUi-CirrT2bM.mjs → useDiscountCodeUi-CrG4_ARt.mjs} +1 -1
  206. package/dist/client/{useEventFilters-CNZxlCcO.mjs → useEventFilters-CxK8Fekl.mjs} +6 -6
  207. package/dist/client/{usePolling-Baks_iBI.mjs → usePolling-jcVryNgZ.mjs} +2 -2
  208. package/dist/preview-next/before-render.mjs +40 -1
  209. package/dist/preview-next/client/runtime.mjs +4 -4
  210. package/dist/preview-next/middleware.mjs +40 -1
  211. package/dist/{previewAuthStore-CfquDtTh.mjs → previewAuthStore-BPcJPzdz.mjs} +40 -1
  212. package/dist/{sdk-runtime-BfNiFeNJ.mjs → sdk-runtime-C39Rsk-x.mjs} +2 -2
  213. package/dist/{separator-BhAR_Xmf.mjs → separator-BoMSQnsP.mjs} +1 -1
  214. package/dist/server/components.mjs +4661 -2162
  215. package/dist/server/config-validation.mjs +2728 -1847
  216. package/dist/server/config.mjs +2728 -1847
  217. package/dist/server/data.mjs +3381 -1915
  218. package/dist/server/index.mjs +46 -4
  219. package/dist/server/next/middleware.mjs +1 -1
  220. package/dist/server/next.mjs +5555 -2225
  221. package/dist/server/page-converter.mjs +3058 -2182
  222. package/dist/server/prebuild.mjs +1 -1
  223. package/dist/server/rendering/server.mjs +4850 -2125
  224. package/dist/server/rendering.mjs +5664 -2464
  225. package/dist/server/routing.mjs +3027 -1509
  226. package/dist/server/server.mjs +3844 -2217
  227. package/dist/server/theme-bridge.mjs +9121 -7765
  228. package/dist/server/theme.mjs +152 -59
  229. package/dist/styles/index.css +1217 -31
  230. package/package.json +1 -1
  231. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +0 -16
  232. package/dist/_dts/theme-core/src/palette/historicalThemePalette.d.ts +0 -44
  233. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +0 -55
  234. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +0 -45
  235. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +0 -232
  236. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +0 -234
@@ -3717,12 +3717,14 @@ function parseUuidBrand(value, unsafeConstructor) {
3717
3717
  return ok(unsafeConstructor(normalized));
3718
3718
  }
3719
3719
  const unsafeAsSiteId = (id) => id;
3720
+ const unsafeAsEventOfferingId = (id) => id;
3720
3721
  const unsafeAsEventSeriesId = (id) => id;
3721
3722
  const unsafeAsFormId = (id) => id;
3722
3723
  const unsafeAsPassId = (id) => id;
3723
3724
  const unsafeAsCustomerPassId = (id) => id;
3724
3725
  const unsafeAsAppointmentServiceId = (id) => id;
3725
3726
  const unsafeAsAppointmentResourceId = (id) => id;
3727
+ const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
3726
3728
  const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
3727
3729
  //#endregion
3728
3730
  //#region ../core/src/date-math.ts
@@ -3828,6 +3830,55 @@ function isFreePublicEventPriceDisplay(display) {
3828
3830
  }
3829
3831
  }
3830
3832
  //#endregion
3833
+ //#region ../core/src/event-page-surface-subject.ts
3834
+ function parseEventPageSurfaceSubject(value) {
3835
+ if (!isRecord$5(value)) return err$1({ kind: "notObject" });
3836
+ switch (value.kind) {
3837
+ case "eventSeries": {
3838
+ const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
3839
+ return eventSeriesId.ok ? ok({
3840
+ kind: "eventSeries",
3841
+ eventSeriesId: eventSeriesId.value
3842
+ }) : err$1({
3843
+ kind: "invalidEventSeriesId",
3844
+ error: eventSeriesId.error
3845
+ });
3846
+ }
3847
+ case "eventOffering": {
3848
+ const eventOfferingId = parseEventOfferingId(value.eventOfferingId);
3849
+ if (!eventOfferingId.ok) return err$1({
3850
+ kind: "invalidEventOfferingId",
3851
+ error: eventOfferingId.error
3852
+ });
3853
+ if (!Array.isArray(value.availableEventSeriesIds)) return err$1({
3854
+ kind: "unsupportedSubject",
3855
+ subjectKind: value.kind
3856
+ });
3857
+ const parsedSeriesIds = [];
3858
+ for (const valueId of value.availableEventSeriesIds) {
3859
+ const eventSeriesId = parseEventSeriesId(valueId);
3860
+ if (!eventSeriesId.ok) return err$1({
3861
+ kind: "invalidEventSeriesId",
3862
+ error: eventSeriesId.error
3863
+ });
3864
+ parsedSeriesIds.push(eventSeriesId.value);
3865
+ }
3866
+ return ok({
3867
+ kind: "eventOffering",
3868
+ eventOfferingId: eventOfferingId.value,
3869
+ availableEventSeriesIds: parsedSeriesIds
3870
+ });
3871
+ }
3872
+ default: return err$1({
3873
+ kind: "unsupportedSubject",
3874
+ subjectKind: value.kind
3875
+ });
3876
+ }
3877
+ }
3878
+ function isRecord$5(value) {
3879
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3880
+ }
3881
+ //#endregion
3831
3882
  //#region ../core/src/booking-flexible-balance.ts
3832
3883
  function clampFlexibleBalanceConfiguredAmount(amountCents, totalAmountCents) {
3833
3884
  return Math.max(0, Math.min(amountCents, totalAmountCents));
@@ -4244,12 +4295,12 @@ function resolveBookingSiteId(siteId, form) {
4244
4295
  return siteId || form?.siteId || "";
4245
4296
  }
4246
4297
  function normalizeBookingFormConfig(form) {
4247
- if (!isRecord$5(form)) return null;
4298
+ if (!isRecord$4(form)) return null;
4248
4299
  const id = readNonEmptyString(form.id);
4249
4300
  const name = readNonEmptyString(form.name);
4250
4301
  if (!id || !name) return null;
4251
- const schemaSource = isRecord$5(form.schema) ? form.schema : isRecord$5(form.schemaJson) ? form.schemaJson : null;
4252
- const settingsSource = isRecord$5(form.settings) ? form.settings : isRecord$5(form.settingsJson) ? form.settingsJson : null;
4302
+ const schemaSource = isRecord$4(form.schema) ? form.schema : isRecord$4(form.schemaJson) ? form.schemaJson : null;
4303
+ const settingsSource = isRecord$4(form.settings) ? form.settings : isRecord$4(form.settingsJson) ? form.settingsJson : null;
4253
4304
  return {
4254
4305
  id,
4255
4306
  name,
@@ -4269,8 +4320,8 @@ function normalizeBookingServices(services) {
4269
4320
  };
4270
4321
  if (!services) return [];
4271
4322
  if (Array.isArray(services)) return services.filter(isBookingFormService).map(normalizeService);
4272
- if (isRecord$5(services) && "services" in services) return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
4273
- return isRecord$5(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
4323
+ if (isRecord$4(services) && "services" in services) return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
4324
+ return isRecord$4(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
4274
4325
  }
4275
4326
  function normalizeBookingSchema(value) {
4276
4327
  if (!value) return void 0;
@@ -4281,7 +4332,7 @@ function normalizeBookingSchema(value) {
4281
4332
  };
4282
4333
  }
4283
4334
  function readBookingFormField(value) {
4284
- if (!isRecord$5(value)) return null;
4335
+ if (!isRecord$4(value)) return null;
4285
4336
  const id = readNonEmptyString(value.id);
4286
4337
  const label = readNonEmptyString(value.label);
4287
4338
  const type = readBookingFieldType(value.type);
@@ -4325,7 +4376,7 @@ function readBookingFieldOptions(value) {
4325
4376
  return options.length > 0 ? options : void 0;
4326
4377
  }
4327
4378
  function readBookingFieldOption(value) {
4328
- if (!isRecord$5(value)) return null;
4379
+ if (!isRecord$4(value)) return null;
4329
4380
  const optionValue = readNonEmptyString(value.value);
4330
4381
  const label = readNonEmptyString(value.label);
4331
4382
  return optionValue && label ? {
@@ -4345,7 +4396,7 @@ function normalizeBookingSettings(value) {
4345
4396
  };
4346
4397
  }
4347
4398
  function isBookingFormService(value) {
4348
- return isRecord$5(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
4399
+ return isRecord$4(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
4349
4400
  }
4350
4401
  function collectBookingCustomFields(data) {
4351
4402
  const customFields = {};
@@ -4395,7 +4446,7 @@ function readStringArray(value) {
4395
4446
  const strings = value.filter((item) => typeof item === "string");
4396
4447
  return strings.length > 0 ? strings : void 0;
4397
4448
  }
4398
- function isRecord$5(value) {
4449
+ function isRecord$4(value) {
4399
4450
  return typeof value === "object" && value !== null;
4400
4451
  }
4401
4452
  function getBookingServicePaymentSelectionMode(service) {
@@ -6322,7 +6373,7 @@ function omitRecordKey(record, key) {
6322
6373
  return rest;
6323
6374
  }
6324
6375
  function readAppointmentBookingOverrideData(value) {
6325
- if (!isRecord$4(value)) return null;
6376
+ if (!isRecord$3(value)) return null;
6326
6377
  const services = normalizeBookingServices(value.services);
6327
6378
  return {
6328
6379
  form: normalizeBookingFormConfig(value.form),
@@ -6337,7 +6388,7 @@ function createOverrideInputError(reason, message, warnInDev = false) {
6337
6388
  message
6338
6389
  };
6339
6390
  }
6340
- function isRecord$4(value) {
6391
+ function isRecord$3(value) {
6341
6392
  return typeof value === "object" && value !== null;
6342
6393
  }
6343
6394
  //#endregion
@@ -7490,7 +7541,14 @@ const buttonSizesSchema = z$1.object({
7490
7541
  const buttonGlobalSettingsSchema = z$1.object({
7491
7542
  cornerStyle: cornerStyleSchema,
7492
7543
  cornerRadius: z$1.number().min(0).max(24).optional(),
7493
- shadow: shadowSizeSchema,
7544
+ /**
7545
+ * Family-level shadow inherited by variants that don't set their own.
7546
+ * Optional and flat-by-default: when omitted, buttons carry no drop shadow
7547
+ * (`elevation: 'none'`). A personality opts the whole family into a shadow by
7548
+ * setting this; individual variants still override. There is no system-level
7549
+ * shadow-by-default — shadows only appear when explicitly declared.
7550
+ */
7551
+ shadow: shadowSizeSchema.optional(),
7494
7552
  textTransform: textTransformSchema,
7495
7553
  fontWeight: fontWeightSchema,
7496
7554
  /**
@@ -8078,7 +8136,6 @@ const editorialLink = defineButtonPersonality({
8078
8136
  buttonSystem: {
8079
8137
  global: {
8080
8138
  cornerStyle: "square",
8081
- shadow: "none",
8082
8139
  textTransform: "none",
8083
8140
  fontWeight: 500,
8084
8141
  borderWidth: 1,
@@ -8094,11 +8151,6 @@ const editorialLink = defineButtonPersonality({
8094
8151
  background: { type: "transparent" },
8095
8152
  textColorToken: "text",
8096
8153
  borderRadius: "rounded-none",
8097
- shadow: {
8098
- elevation: "none",
8099
- softness: null,
8100
- position: "bottom"
8101
- },
8102
8154
  sizes: {
8103
8155
  sm: { padding: "0.25rem 0" },
8104
8156
  md: { padding: "0.5rem 0" },
@@ -8122,11 +8174,6 @@ const editorialLink = defineButtonPersonality({
8122
8174
  background: { type: "transparent" },
8123
8175
  textColorToken: "mutedText",
8124
8176
  borderRadius: "rounded-none",
8125
- shadow: {
8126
- elevation: "none",
8127
- softness: null,
8128
- position: "bottom"
8129
- },
8130
8177
  sizes: {
8131
8178
  sm: { padding: "0.25rem 0" },
8132
8179
  md: { padding: "0.5rem 0" },
@@ -8150,11 +8197,6 @@ const editorialLink = defineButtonPersonality({
8150
8197
  background: { type: "transparent" },
8151
8198
  textColorToken: "accent",
8152
8199
  borderRadius: "rounded-none",
8153
- shadow: {
8154
- elevation: "none",
8155
- softness: null,
8156
- position: "bottom"
8157
- },
8158
8200
  sizes: {
8159
8201
  sm: { padding: "0.25rem 0" },
8160
8202
  md: { padding: "0.5rem 0" },
@@ -8178,11 +8220,6 @@ const editorialLink = defineButtonPersonality({
8178
8220
  background: { type: "transparent" },
8179
8221
  textColorToken: "mutedText",
8180
8222
  borderRadius: "rounded-none",
8181
- shadow: {
8182
- elevation: "none",
8183
- softness: null,
8184
- position: "bottom"
8185
- },
8186
8223
  sizes: {
8187
8224
  sm: { padding: "0.25rem 0" },
8188
8225
  md: { padding: "0.5rem 0" },
@@ -8220,7 +8257,6 @@ const flatInk = defineButtonPersonality({
8220
8257
  buttonSystem: {
8221
8258
  global: {
8222
8259
  cornerStyle: "rounded",
8223
- shadow: "low",
8224
8260
  textTransform: "none",
8225
8261
  fontWeight: 600,
8226
8262
  borderWidth: 1,
@@ -8261,11 +8297,6 @@ const flatInk = defineButtonPersonality({
8261
8297
  iconId: "ArrowRight",
8262
8298
  colorToken: "accent"
8263
8299
  },
8264
- shadow: {
8265
- elevation: "none",
8266
- softness: null,
8267
- position: "bottom"
8268
- },
8269
8300
  effects: { hover: [{
8270
8301
  effectId: "lift",
8271
8302
  options: { translateY: "-2px" }
@@ -8286,11 +8317,6 @@ const flatInk = defineButtonPersonality({
8286
8317
  widthClass: "border",
8287
8318
  colorToken: "border"
8288
8319
  },
8289
- shadow: {
8290
- elevation: "none",
8291
- softness: null,
8292
- position: "bottom"
8293
- },
8294
8320
  effects: { hover: [{
8295
8321
  effectId: "lift",
8296
8322
  options: { translateY: "-2px" }
@@ -8310,11 +8336,6 @@ const flatInk = defineButtonPersonality({
8310
8336
  },
8311
8337
  textColorToken: "accentForeground",
8312
8338
  borderRadius: "rounded-lg",
8313
- shadow: {
8314
- elevation: "none",
8315
- softness: null,
8316
- position: "bottom"
8317
- },
8318
8339
  affordance: {
8319
8340
  iconId: "ArrowRight",
8320
8341
  colorToken: "accentForeground"
@@ -8346,7 +8367,6 @@ const inkStamp = defineButtonPersonality({
8346
8367
  buttonSystem: {
8347
8368
  global: {
8348
8369
  cornerStyle: "rounded",
8349
- shadow: "none",
8350
8370
  textTransform: "uppercase",
8351
8371
  fontWeight: 600,
8352
8372
  borderWidth: 1,
@@ -8581,7 +8601,6 @@ const ornateRitual = defineButtonPersonality({
8581
8601
  buttonSystem: {
8582
8602
  global: {
8583
8603
  cornerStyle: "rounded",
8584
- shadow: "none",
8585
8604
  textTransform: "uppercase",
8586
8605
  fontWeight: 600,
8587
8606
  borderWidth: 1,
@@ -8623,11 +8642,6 @@ const ornateRitual = defineButtonPersonality({
8623
8642
  widthClass: "border",
8624
8643
  colorToken: "primary"
8625
8644
  },
8626
- shadow: {
8627
- elevation: "none",
8628
- softness: null,
8629
- position: "bottom"
8630
- },
8631
8645
  effects: {
8632
8646
  hover: [{
8633
8647
  effectId: "background-on-hover",
@@ -8654,11 +8668,6 @@ const ornateRitual = defineButtonPersonality({
8654
8668
  widthClass: "border",
8655
8669
  colorToken: "primary"
8656
8670
  },
8657
- shadow: {
8658
- elevation: "none",
8659
- softness: null,
8660
- position: "bottom"
8661
- },
8662
8671
  effects: { hover: [{
8663
8672
  effectId: "background-on-hover",
8664
8673
  options: { colorToken: "surface" }
@@ -8676,11 +8685,6 @@ const ornateRitual = defineButtonPersonality({
8676
8685
  widthClass: "border",
8677
8686
  colorToken: "primary"
8678
8687
  },
8679
- shadow: {
8680
- elevation: "none",
8681
- softness: null,
8682
- position: "bottom"
8683
- },
8684
8688
  effects: { hover: [{
8685
8689
  effectId: "background-on-hover",
8686
8690
  options: { colorToken: "muted" }
@@ -8743,7 +8747,6 @@ const pebble = defineButtonPersonality({
8743
8747
  buttonSystem: {
8744
8748
  global: {
8745
8749
  cornerStyle: "pill",
8746
- shadow: "none",
8747
8750
  textTransform: "none",
8748
8751
  fontWeight: 500,
8749
8752
  borderWidth: 2,
@@ -8851,6 +8854,117 @@ const pebble = defineButtonPersonality({
8851
8854
  }
8852
8855
  });
8853
8856
  //#endregion
8857
+ //#region ../theme-core/src/buttons/personalities/quiet-arrow.ts
8858
+ /**
8859
+ * Quiet Arrow — wide, flat editorial buttons for grounded service businesses.
8860
+ * Primary and secondary keep stable semantic colours; surrounding surfaces are
8861
+ * responsible for contrast rather than reversing the button roles.
8862
+ */
8863
+ const quietArrow = defineButtonPersonality({
8864
+ id: "quiet-arrow",
8865
+ name: "Quiet Arrow",
8866
+ description: "Wide, flat arrow buttons with a solid primary and a primary-colour outlined secondary.",
8867
+ tags: {
8868
+ tone: "classic",
8869
+ energy: "calm",
8870
+ motion: "subtle",
8871
+ era: "editorial"
8872
+ },
8873
+ buttonSystem: {
8874
+ global: {
8875
+ cornerStyle: "rounded",
8876
+ textTransform: "uppercase",
8877
+ fontWeight: 500,
8878
+ borderWidth: 1,
8879
+ typography: "body",
8880
+ fontSize: "text-sm",
8881
+ letterSpacing: "loose",
8882
+ hoverTransform: "none",
8883
+ hoverColor: "none"
8884
+ },
8885
+ sizes: {
8886
+ sm: {
8887
+ padding: "0.625rem 1.25rem",
8888
+ fontSize: "text-xs"
8889
+ },
8890
+ md: {
8891
+ padding: "0.8125rem 1.75rem",
8892
+ fontSize: "text-sm"
8893
+ },
8894
+ lg: {
8895
+ padding: "0.9375rem 2.125rem",
8896
+ fontSize: "text-sm"
8897
+ },
8898
+ xl: {
8899
+ padding: "1.0625rem 2.5rem",
8900
+ fontSize: "text-base"
8901
+ }
8902
+ },
8903
+ variants: [
8904
+ {
8905
+ id: "primary",
8906
+ name: "Primary",
8907
+ enabled: true,
8908
+ priority: 1,
8909
+ background: {
8910
+ type: "solid",
8911
+ colorToken: "primary"
8912
+ },
8913
+ textColorToken: "primaryForeground",
8914
+ borderRadius: "rounded-xl",
8915
+ affordance: { iconId: "ArrowRight" },
8916
+ effects: { hover: [{
8917
+ effectId: "background-on-hover-alpha",
8918
+ options: {
8919
+ colorToken: "primary",
8920
+ opacity: 90
8921
+ }
8922
+ }] }
8923
+ },
8924
+ {
8925
+ id: "secondary",
8926
+ name: "Secondary",
8927
+ enabled: true,
8928
+ priority: 2,
8929
+ background: { type: "transparent" },
8930
+ textColorToken: "primary",
8931
+ borderRadius: "rounded-xl",
8932
+ border: {
8933
+ widthClass: "border",
8934
+ colorToken: "primary"
8935
+ },
8936
+ affordance: { iconId: "ArrowRight" },
8937
+ effects: { hover: [{
8938
+ effectId: "background-on-hover",
8939
+ options: { colorToken: "surfaceAlt" }
8940
+ }] }
8941
+ },
8942
+ {
8943
+ id: "outline",
8944
+ name: "Outline",
8945
+ enabled: true,
8946
+ priority: 3,
8947
+ background: { type: "transparent" },
8948
+ textColorToken: "primary",
8949
+ borderRadius: "rounded-xl",
8950
+ border: {
8951
+ widthClass: "border",
8952
+ colorToken: "primary"
8953
+ }
8954
+ },
8955
+ {
8956
+ id: "ghost",
8957
+ name: "Ghost",
8958
+ enabled: true,
8959
+ priority: 3,
8960
+ background: { type: "transparent" },
8961
+ textColorToken: "primary",
8962
+ borderRadius: "rounded-xl"
8963
+ }
8964
+ ]
8965
+ }
8966
+ });
8967
+ //#endregion
8854
8968
  //#region ../theme-core/src/buttons/personalities/showtime-pill.ts
8855
8969
  /**
8856
8970
  * Showtime Pill — bold, spacious, fully rounded buttons with playful pop
@@ -9102,7 +9216,8 @@ const buttonPersonalities = [
9102
9216
  brushedWash,
9103
9217
  showtimePill,
9104
9218
  joyStamp,
9105
- ornateRitual
9219
+ ornateRitual,
9220
+ quietArrow
9106
9221
  ];
9107
9222
  new Map(buttonPersonalities.map((p) => [p.id, p]));
9108
9223
  //#endregion
@@ -10623,11 +10738,11 @@ const BookingFormClient$1 = ({ siteId: siteIdProp, render }) => {
10623
10738
  };
10624
10739
  //#endregion
10625
10740
  //#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
10626
- function isRecord$3(value) {
10741
+ function isRecord$2(value) {
10627
10742
  return typeof value === "object" && value !== null && !Array.isArray(value);
10628
10743
  }
10629
10744
  function isRuntimeEventDestination(value) {
10630
- if (!isRecord$3(value) || typeof value.kind !== "string") return false;
10745
+ if (!isRecord$2(value) || typeof value.kind !== "string") return false;
10631
10746
  if (value.kind === "native") return (value.mode === "cms-managed" || value.mode === "system-managed") && typeof value.path === "string";
10632
10747
  return value.kind === "external" && typeof value.url === "string" && typeof value.label === "string";
10633
10748
  }
@@ -10690,15 +10805,15 @@ function resolveRuntimeEventPricing(event) {
10690
10805
  function readCurrency(value) {
10691
10806
  return typeof value === "string" && value.trim().length > 0 ? value : DEFAULT_EVENT_CURRENCY$1;
10692
10807
  }
10693
- function isRecord$2(value) {
10808
+ function isRecord$1(value) {
10694
10809
  return typeof value === "object" && value !== null && !Array.isArray(value);
10695
10810
  }
10696
10811
  function isPublicEventPricing(value) {
10697
- if (!isRecord$2(value) || typeof value.kind !== "string") return false;
10812
+ if (!isRecord$1(value) || typeof value.kind !== "string") return false;
10698
10813
  return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "sliding_scale" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
10699
10814
  }
10700
10815
  function isPublicEventTicketType(value) {
10701
- return isRecord$2(value) && typeof value.id === "string";
10816
+ return isRecord$1(value) && typeof value.id === "string";
10702
10817
  }
10703
10818
  function readTicketTypePriceDisplay(value, currency) {
10704
10819
  const display = readLegacyPriceDisplay(value, currency);
@@ -10708,7 +10823,7 @@ function readTicketTypePriceDisplay(value, currency) {
10708
10823
  } : display;
10709
10824
  }
10710
10825
  function readLegacyPriceDisplay(value, currency) {
10711
- if (!isRecord$2(value) || typeof value.kind !== "string") return {
10826
+ if (!isRecord$1(value) || typeof value.kind !== "string") return {
10712
10827
  kind: "unavailable",
10713
10828
  currency
10714
10829
  };
@@ -10760,7 +10875,7 @@ function readLegacyPriceDisplay(value, currency) {
10760
10875
  kind: "unavailable",
10761
10876
  currency: displayCurrency
10762
10877
  };
10763
- case "course": return isRecord$2(value.display) ? {
10878
+ case "course": return isRecord$1(value.display) ? {
10764
10879
  kind: "course",
10765
10880
  display: readCoursePriceDisplay(value.display, displayCurrency)
10766
10881
  } : {
@@ -12080,6 +12195,7 @@ const coursePricingSchema = z$1.object({
12080
12195
  */
12081
12196
  const publicCourseSchema = z$1.object({
12082
12197
  id: z$1.string(),
12198
+ seriesId: z$1.string(),
12083
12199
  title: z$1.string(),
12084
12200
  slug: z$1.string(),
12085
12201
  description: z$1.unknown().nullable(),
@@ -12114,6 +12230,19 @@ const eventPresetSchema = z$1.enum([
12114
12230
  "performance"
12115
12231
  ]);
12116
12232
  const eventScheduleScopeSchema = z$1.enum(["recurring", "oneOff"]);
12233
+ const publicEventRecurrenceSchema = z$1.discriminatedUnion("kind", [z$1.object({
12234
+ kind: z$1.literal("weekly"),
12235
+ interval: z$1.number().int().positive(),
12236
+ weekdays: z$1.array(z$1.enum([
12237
+ "MO",
12238
+ "TU",
12239
+ "WE",
12240
+ "TH",
12241
+ "FR",
12242
+ "SA",
12243
+ "SU"
12244
+ ]))
12245
+ }).readonly(), z$1.object({ kind: z$1.literal("other") }).readonly()]);
12117
12246
  const eventDestinationModeSchema = z$1.enum(["cms-managed", "system-managed"]);
12118
12247
  const publicEventDestinationSchema = z$1.discriminatedUnion("kind", [z$1.object({
12119
12248
  kind: z$1.literal("native"),
@@ -12366,6 +12495,7 @@ const publicEventSchema = z$1.object({
12366
12495
  eventPreset: eventPresetSchema.optional(),
12367
12496
  eventDestinationMode: eventDestinationModeSchema.optional(),
12368
12497
  scheduleScope: eventScheduleScopeSchema.optional(),
12498
+ recurrence: publicEventRecurrenceSchema.optional(),
12369
12499
  id: z$1.string(),
12370
12500
  occurrenceId: z$1.string(),
12371
12501
  seriesId: z$1.string(),
@@ -12437,44 +12567,33 @@ function isEventContentType(slug) {
12437
12567
  if (!slug) return false;
12438
12568
  return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
12439
12569
  }
12440
- z$1.discriminatedUnion("kind", [z$1.object({
12441
- kind: z$1.literal("eventSeries"),
12442
- eventSeriesId: z$1.string().transform((value, ctx) => {
12443
- const parsed = parseEventSeriesId(value);
12444
- if (!parsed.ok) {
12445
- ctx.addIssue({
12446
- code: z$1.ZodIssueCode.custom,
12447
- message: `Invalid event series id (${parsed.error.kind})`
12448
- });
12449
- return z$1.NEVER;
12450
- }
12451
- return parsed.value;
12452
- })
12453
- }), z$1.object({
12570
+ const unsupportedEventRegistrationPageSurfaceSubjectSchema = z$1.object({
12454
12571
  kind: z$1.literal("unsupported"),
12455
- reason: z$1.enum(["unsupportedSubject", "invalidEventSeriesId"])
12456
- })]);
12457
- function parseEventRegistrationPageSurfaceSubject(value) {
12458
- if (!isRecord$1(value)) return err$1({ kind: "notPageSurfaceSubject" });
12459
- if (value.kind !== "eventSeries") return err$1({
12460
- kind: "unsupportedSubject",
12461
- subjectKind: value.kind
12462
- });
12463
- const parsedSeriesId = parseEventSeriesId(value.eventSeriesId);
12464
- if (!parsedSeriesId.ok) return err$1({
12465
- kind: "invalidEventSeriesId",
12466
- error: parsedSeriesId.error
12467
- });
12468
- return ok({
12469
- kind: "eventSeries",
12470
- eventSeriesId: parsedSeriesId.value
12572
+ reason: z$1.enum([
12573
+ "unsupportedSubject",
12574
+ "invalidEventSeriesId",
12575
+ "invalidEventOfferingId"
12576
+ ])
12577
+ });
12578
+ z$1.unknown().transform((value, ctx) => {
12579
+ const unsupported = unsupportedEventRegistrationPageSurfaceSubjectSchema.safeParse(value);
12580
+ if (unsupported.success) return unsupported.data;
12581
+ const parsed = parseEventPageSurfaceSubject(value);
12582
+ if (parsed.ok) return parsed.value;
12583
+ ctx.addIssue({
12584
+ code: z$1.ZodIssueCode.custom,
12585
+ message: `Invalid event page-surface subject (${parsed.error.kind})`
12471
12586
  });
12587
+ return z$1.NEVER;
12588
+ });
12589
+ function parseEventRegistrationPageSurfaceSubject(value) {
12590
+ return parseEventPageSurfaceSubject(value);
12472
12591
  }
12473
12592
  function normalizeEventRegistrationPageSurfaceSubject(value) {
12474
12593
  const parsed = parseEventRegistrationPageSurfaceSubject(value);
12475
12594
  if (parsed.ok) return parsed.value;
12476
12595
  switch (parsed.error.kind) {
12477
- case "notPageSurfaceSubject": return null;
12596
+ case "notObject": return null;
12478
12597
  case "unsupportedSubject": return {
12479
12598
  kind: "unsupported",
12480
12599
  reason: "unsupportedSubject"
@@ -12483,6 +12602,10 @@ function normalizeEventRegistrationPageSurfaceSubject(value) {
12483
12602
  kind: "unsupported",
12484
12603
  reason: "invalidEventSeriesId"
12485
12604
  };
12605
+ case "invalidEventOfferingId": return {
12606
+ kind: "unsupported",
12607
+ reason: "invalidEventOfferingId"
12608
+ };
12486
12609
  }
12487
12610
  }
12488
12611
  function resolveEventRegistrationScope(context) {
@@ -12495,6 +12618,11 @@ function resolveEventRegistrationScope(context) {
12495
12618
  kind: "pageSurfaceSeries",
12496
12619
  seriesId: context.subject.eventSeriesId
12497
12620
  };
12621
+ if (context.subject?.kind === "eventOffering") return {
12622
+ kind: "pageSurfaceOffering",
12623
+ offeringId: context.subject.eventOfferingId,
12624
+ seriesIds: context.subject.availableEventSeriesIds
12625
+ };
12498
12626
  if (context.subject?.kind === "unsupported") return {
12499
12627
  kind: "unsupportedPageSurfaceSubject",
12500
12628
  reason: context.subject.reason
@@ -12511,6 +12639,10 @@ function applyEventRegistrationScope(events, scope) {
12511
12639
  switch (scope.kind) {
12512
12640
  case "occurrenceSeries":
12513
12641
  case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
12642
+ case "pageSurfaceOffering": {
12643
+ const seriesIds = new Set(scope.seriesIds);
12644
+ return events.filter((event) => seriesIds.has(event.seriesId));
12645
+ }
12514
12646
  case "legacyEventSlug": return events.filter((event) => event.slug === scope.slug);
12515
12647
  case "unsupportedPageSurfaceSubject": return [];
12516
12648
  case "unscoped": return [...events];
@@ -12519,9 +12651,6 @@ function applyEventRegistrationScope(events, scope) {
12519
12651
  function resolveEventRegistrationScopedEvents(events, context) {
12520
12652
  return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
12521
12653
  }
12522
- function isRecord$1(value) {
12523
- return typeof value === "object" && value !== null && !Array.isArray(value);
12524
- }
12525
12654
  //#endregion
12526
12655
  //#region ../blocks/src/system/runtime/nodes/event-registration/event-registration.headless.override.ts
12527
12656
  function createEventRegistrationBlockApiConfig(input) {
@@ -12940,7 +13069,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
12940
13069
  registrationEvents,
12941
13070
  options.occurrenceContext?.seriesId,
12942
13071
  options.subject?.kind,
12943
- options.subject?.kind === "eventSeries" ? options.subject.eventSeriesId : options.subject?.reason,
13072
+ options.subject?.kind === "eventSeries" ? options.subject.eventSeriesId : options.subject?.kind === "eventOffering" ? `${options.subject.eventOfferingId}:${options.subject.availableEventSeriesIds.join(",")}` : options.subject?.reason,
12944
13073
  options.contentEntry?.slug,
12945
13074
  options.contentEntry?.contentTypeSlug
12946
13075
  ]);