@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
@@ -1,7 +1,7 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
2
- import { a as textColorStyle, n as borderColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-Wyl6JujD.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-oR-M-ISN.mjs";
2
+ import { a as textColorStyle, n as borderColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-jZS6KfkP.mjs";
3
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
4
- import { t as LeafletStaticMap } from "./LeafletStaticMap-dQrhlUe3.mjs";
4
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-DPAU3SFt.mjs";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region ../core/src/location.ts
@@ -1,6 +1,6 @@
1
1
  import { t as clsx } from "./clsx-DgIEfj3H.mjs";
2
- import { f as unsafeAsStorageBucketName, h as ok, i as resolveMediaTransformForAspect, m as err, n as isExplicitRectCrop, p as unsafeAsStoragePath, r as parseAspectRatioValue, u as unsafeAsMediaAssetId } from "./colorTokenParts-dT8MISgJ.mjs";
3
- import { a as textColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-Wyl6JujD.mjs";
2
+ import { d as unsafeAsMediaAssetId, g as ok$1, h as err, i as resolveMediaTransformForAspect, m as unsafeAsStoragePath, n as isExplicitRectCrop, p as unsafeAsStorageBucketName, r as parseAspectRatioValue } from "./colorTokenParts-CMugwvX_.mjs";
3
+ import { a as textColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-jZS6KfkP.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../media-core/src/fileSafety.ts
@@ -28,19 +28,48 @@ function parseStoragePath(value) {
28
28
  */
29
29
  function joinStoragePathSegments(segments) {
30
30
  if (segments.some(isUnsafePathSegment)) return err("unsafe-path-segment");
31
- return ok(unsafeAsStoragePath(segments.join("/")));
31
+ return ok$1(unsafeAsStoragePath(segments.join("/")));
32
+ }
33
+ //#endregion
34
+ //#region ../media-core/src/storagePathDomain.ts
35
+ function ok(value) {
36
+ return {
37
+ ok: true,
38
+ value
39
+ };
40
+ }
41
+ function fail(error) {
42
+ return {
43
+ ok: false,
44
+ error
45
+ };
46
+ }
47
+ function normalizeStringInput(value) {
48
+ if (typeof value !== "string") return fail({ tag: "MISSING" });
49
+ const trimmed = value.trim();
50
+ if (!trimmed) return fail({ tag: "EMPTY" });
51
+ return ok(trimmed);
52
+ }
53
+ function validateRelativeStoragePath(value) {
54
+ if (value.startsWith("sites/")) return fail({ tag: "SITE_SCOPED_PATH" });
55
+ if (value.startsWith("/")) return fail({ tag: "LEADING_SLASH" });
56
+ if (value.includes("//")) return fail({ tag: "DOUBLE_SLASH" });
57
+ if (value.split("/").some((segment) => segment === "..")) return fail({ tag: "TRAVERSAL" });
58
+ return ok(value);
59
+ }
60
+ function brandRelativeStoragePath(value) {
61
+ return value;
62
+ }
63
+ function parseRelativeStoragePath(value) {
64
+ const normalized = normalizeStringInput(value);
65
+ if (!normalized.ok) return normalized;
66
+ const validated = validateRelativeStoragePath(normalized.value);
67
+ if (!validated.ok) return validated;
68
+ return ok(brandRelativeStoragePath(validated.value));
32
69
  }
33
70
  //#endregion
34
71
  //#region ../media-core/src/url.ts
35
72
  const DEFAULT_BASE_PATH = "/api/img";
36
- const RELATIVE_STORAGE_PATH_PREFIXES = [
37
- "originals/",
38
- "variants/",
39
- "imports/"
40
- ];
41
- function isRelativeDirectImageStoragePath(storagePath) {
42
- return RELATIVE_STORAGE_PATH_PREFIXES.some((prefix) => storagePath.startsWith(prefix)) && parseStoragePath(storagePath).ok;
43
- }
44
73
  function isSiteScopedDirectImageStoragePath(storagePath) {
45
74
  return storagePath.startsWith("sites/") && parseStoragePath(storagePath).ok;
46
75
  }
@@ -54,7 +83,7 @@ function resolveDirectImagePathTarget(target) {
54
83
  case "bucket-scoped": return target.storagePath;
55
84
  }
56
85
  }
57
- function buildDirectImageUrl(supabaseUrl, target, storageBucket = "media", options) {
86
+ function getDirectImageUrl(supabaseUrl, target, storageBucket = "media", options) {
58
87
  const baseUrl = supabaseUrl.replace(/\/$/, "");
59
88
  const encodedPath = encodeStoragePath(resolveDirectImagePathTarget(target));
60
89
  const isSvg = target.storagePath.toLowerCase().endsWith(".svg");
@@ -69,55 +98,18 @@ function buildDirectImageUrl(supabaseUrl, target, storageBucket = "media", optio
69
98
  return `${baseUrl}/storage/v1/object/public/${storageBucket}/${encodedPath}`;
70
99
  }
71
100
  function getDirectImageUrlForRelativePath(supabaseUrl, storagePath, siteId, storageBucket = "media", options) {
72
- return buildDirectImageUrl(supabaseUrl, {
101
+ return getDirectImageUrl(supabaseUrl, {
73
102
  kind: "relative",
74
103
  storagePath,
75
104
  siteId
76
105
  }, storageBucket, options);
77
106
  }
78
107
  function getDirectImageUrlForSiteScopedPath(supabaseUrl, storagePath, storageBucket = "media", options) {
79
- return buildDirectImageUrl(supabaseUrl, {
108
+ return getDirectImageUrl(supabaseUrl, {
80
109
  kind: "site-scoped",
81
110
  storagePath
82
111
  }, storageBucket, options);
83
112
  }
84
- function getDirectImageUrlForBucketPath(supabaseUrl, storagePath, storageBucket = "media", options) {
85
- return buildDirectImageUrl(supabaseUrl, {
86
- kind: "bucket-scoped",
87
- storagePath
88
- }, storageBucket, options);
89
- }
90
- function getDirectImageUrlForStoragePath(supabaseUrl, storagePath, storageBucket = "media", siteId, options) {
91
- if (isRelativeDirectImageStoragePath(storagePath) && siteId) return getDirectImageUrlForRelativePath(supabaseUrl, storagePath, siteId, storageBucket, options);
92
- if (isSiteScopedDirectImageStoragePath(storagePath)) return getDirectImageUrlForSiteScopedPath(supabaseUrl, storagePath, storageBucket, options);
93
- return getDirectImageUrl(supabaseUrl, storagePath, storageBucket, siteId, options);
94
- }
95
- /**
96
- * @deprecated Prefer `getDirectImageUrlForMediaAsset`, `getDirectImageUrlForRelativePath`,
97
- * `getDirectImageUrlForSiteScopedPath`, or `getDirectImageUrlForBucketPath` so path shape
98
- * is explicit at the call site.
99
- *
100
- * Build a direct Supabase storage URL for an image.
101
- *
102
- * For images with transform options, uses the render endpoint which applies
103
- * server-side transformations. For images without transforms (or SVGs),
104
- * returns the direct public object URL.
105
- *
106
- * @param supabaseUrl - Supabase project URL (e.g., https://xxx.supabase.co)
107
- * @param storagePath - Relative path within the bucket (e.g., originals/2024/12/img.png)
108
- * @param storageBucket - Storage bucket name (default: 'media')
109
- * @param siteId - Site UUID to prepend as path prefix
110
- * @param options - Optional transform parameters
111
- * @returns Direct URL to the image
112
- */
113
- function getDirectImageUrl(supabaseUrl, storagePath, storageBucket = "media", siteId, options) {
114
- if (isSiteScopedDirectImageStoragePath(storagePath)) {
115
- if (siteId && true) console.warn(`[media-core] storagePath "${storagePath}" already contains site prefix. Using path as-is for backward compatibility. After migration, paths should be relative (e.g., "originals/2024/12/img.jpg").`);
116
- return getDirectImageUrlForSiteScopedPath(supabaseUrl, storagePath, storageBucket, options);
117
- }
118
- if (siteId && isRelativeDirectImageStoragePath(storagePath)) return getDirectImageUrlForRelativePath(supabaseUrl, storagePath, siteId, storageBucket, options);
119
- return getDirectImageUrlForBucketPath(supabaseUrl, storagePath, storageBucket, options);
120
- }
121
113
  const formatNumber = (value) => Number.isInteger(value) ? value.toString() : value.toFixed(6).replace(/0+$/, "").replace(/\.$/, "");
122
114
  const ORDER = [
123
115
  "w",
@@ -763,6 +755,9 @@ function warnForMediaUrlResolution(result) {
763
755
  case "missing-supabase-url":
764
756
  console.warn(`[blocks] ${result.message} Media URL may be unavailable. Ensure NEXT_PUBLIC_SUPABASE_URL is configured or pass supabaseUrl in the media context.`);
765
757
  return;
758
+ case "invalid-storage-path":
759
+ console.warn(`[blocks] Invalid media storagePath "${result.storagePath}".`);
760
+ return;
766
761
  case "resolved":
767
762
  case "unsupported-media-type":
768
763
  case "missing-storage-path":
@@ -778,10 +773,7 @@ function resolveMediaStorageUrlResult(value, context, transformOptions) {
778
773
  };
779
774
  const siteId = context?.siteId ?? getSiteId();
780
775
  const bucket = canonical.storageBucket ?? "media";
781
- if (isRelativeDirectImageStoragePath(canonical.storagePath) && !siteId) return {
782
- kind: "missing-site-context",
783
- storagePath: canonical.storagePath
784
- };
776
+ const siteScopedPath = isSiteScopedDirectImageStoragePath(canonical.storagePath) ? canonical.storagePath : null;
785
777
  let supabaseUrl;
786
778
  try {
787
779
  supabaseUrl = context?.supabaseUrl?.replace(/\/$/, "") ?? getSupabaseUrl();
@@ -791,7 +783,20 @@ function resolveMediaStorageUrlResult(value, context, transformOptions) {
791
783
  message: error instanceof Error ? error.message : "Supabase URL is not configured."
792
784
  };
793
785
  }
794
- const directUrl = getDirectImageUrlForStoragePath(supabaseUrl, canonical.storagePath, bucket, siteId, transformOptions);
786
+ let directUrl;
787
+ if (siteScopedPath) directUrl = getDirectImageUrlForSiteScopedPath(supabaseUrl, siteScopedPath, bucket, transformOptions);
788
+ else {
789
+ const relativePath = parseRelativeStoragePath(canonical.storagePath);
790
+ if (!relativePath.ok) return {
791
+ kind: "invalid-storage-path",
792
+ storagePath: canonical.storagePath
793
+ };
794
+ if (!siteId) return {
795
+ kind: "missing-site-context",
796
+ storagePath: canonical.storagePath
797
+ };
798
+ directUrl = getDirectImageUrlForRelativePath(supabaseUrl, relativePath.value, siteId, bucket, transformOptions);
799
+ }
795
800
  debugMediaNodeLog("resolve:direct-supabase", {
796
801
  storagePath: canonical.storagePath,
797
802
  siteId,
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { t as clsx } from "./clsx-DgIEfj3H.mjs";
3
- import { _t as assertNever, t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
3
+ import { _t as assertNever, t as defineIslandPropsDecoder } from "./propsDecoder-oR-M-ISN.mjs";
4
4
  import { n as useBlockApi, t as BlockApiProvider } from "./context-BGZNlGXB.mjs";
5
5
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
- import { t as themeButtonClassName } from "./buttons-DfYyqt8C.mjs";
6
+ import { t as themeButtonClassName } from "./buttons-DJgynGHQ.mjs";
7
7
  import { t as FeedbackMessage } from "./FeedbackMessage-ByMrs3cr.mjs";
8
8
  import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
9
9
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
@@ -250,7 +250,7 @@ function NewsletterFormClient({ render }) {
250
250
  children: /* @__PURE__ */ jsx("button", {
251
251
  type: "submit",
252
252
  className: themeButtonClassName({
253
- variant: "primary",
253
+ variant: render.display.buttonVariant,
254
254
  size: "md"
255
255
  }),
256
256
  disabled: isNewsletterFormSubmitting(submissionState),
@@ -1,4 +1,4 @@
1
- import { Ft as formatBookingPriceDisplay } from "./propsDecoder-CD2pJ1WB.mjs";
1
+ import { It as formatBookingPriceDisplay } from "./propsDecoder-oR-M-ISN.mjs";
2
2
  //#region ../core/src/planner.ts
3
3
  /** Default clock for production callers that do not inject time explicitly. */
4
4
  const systemPlanningClock = { now: () => Date.now() };
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-DJAhsTaT.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-CmDcPXUt.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-oR-M-ISN.mjs";
2
+ import { r as ProductDetailController } from "./shop-commerce-BM-AoD3M.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-D0SKO2Cu.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-detail.client.tsx
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
2
- import { i as ProductListController } from "./shop-commerce-DJAhsTaT.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-CmDcPXUt.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-oR-M-ISN.mjs";
2
+ import { i as ProductListController } from "./shop-commerce-BM-AoD3M.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-D0SKO2Cu.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-list.client.tsx
@@ -1,4 +1,4 @@
1
- import { a as parseEventSeriesId, h as ok$1, m as err$1, r as parseAspectRatioValue, t as parseColorTokenParts } from "./colorTokenParts-dT8MISgJ.mjs";
1
+ import { a as parseEventOfferingId, g as ok$1, h as err$1, o as parseEventSeriesId, r as parseAspectRatioValue, t as parseColorTokenParts } from "./colorTokenParts-CMugwvX_.mjs";
2
2
  import z, { z as z$1 } from "zod";
3
3
  //#region ../core/src/assert-never.ts
4
4
  function assertNever$2(value, message = "Unexpected variant") {
@@ -141,6 +141,55 @@ function formatEventPricing(pricing, options = {}) {
141
141
  return formatBookingPriceDisplay(publicEventPricingDisplay(pricing), options);
142
142
  }
143
143
  //#endregion
144
+ //#region ../core/src/event-page-surface-subject.ts
145
+ function parseEventPageSurfaceSubject(value) {
146
+ if (!isRecord$5(value)) return err$1({ kind: "notObject" });
147
+ switch (value.kind) {
148
+ case "eventSeries": {
149
+ const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
150
+ return eventSeriesId.ok ? ok$1({
151
+ kind: "eventSeries",
152
+ eventSeriesId: eventSeriesId.value
153
+ }) : err$1({
154
+ kind: "invalidEventSeriesId",
155
+ error: eventSeriesId.error
156
+ });
157
+ }
158
+ case "eventOffering": {
159
+ const eventOfferingId = parseEventOfferingId(value.eventOfferingId);
160
+ if (!eventOfferingId.ok) return err$1({
161
+ kind: "invalidEventOfferingId",
162
+ error: eventOfferingId.error
163
+ });
164
+ if (!Array.isArray(value.availableEventSeriesIds)) return err$1({
165
+ kind: "unsupportedSubject",
166
+ subjectKind: value.kind
167
+ });
168
+ const parsedSeriesIds = [];
169
+ for (const valueId of value.availableEventSeriesIds) {
170
+ const eventSeriesId = parseEventSeriesId(valueId);
171
+ if (!eventSeriesId.ok) return err$1({
172
+ kind: "invalidEventSeriesId",
173
+ error: eventSeriesId.error
174
+ });
175
+ parsedSeriesIds.push(eventSeriesId.value);
176
+ }
177
+ return ok$1({
178
+ kind: "eventOffering",
179
+ eventOfferingId: eventOfferingId.value,
180
+ availableEventSeriesIds: parsedSeriesIds
181
+ });
182
+ }
183
+ default: return err$1({
184
+ kind: "unsupportedSubject",
185
+ subjectKind: value.kind
186
+ });
187
+ }
188
+ }
189
+ function isRecord$5(value) {
190
+ return typeof value === "object" && value !== null && !Array.isArray(value);
191
+ }
192
+ //#endregion
144
193
  //#region ../core/src/booking-date-time.ts
145
194
  const DEFAULT_LOCALE = "en-US";
146
195
  const FALLBACK_TIMEZONE = "UTC";
@@ -1358,6 +1407,7 @@ const coursePricingSchema = z$1.object({
1358
1407
  */
1359
1408
  const publicCourseSchema = z$1.object({
1360
1409
  id: z$1.string(),
1410
+ seriesId: z$1.string(),
1361
1411
  title: z$1.string(),
1362
1412
  slug: z$1.string(),
1363
1413
  description: z$1.unknown().nullable(),
@@ -1463,6 +1513,68 @@ const calendarTabViewsSchema = z$1.enum([
1463
1513
  "month",
1464
1514
  "week"
1465
1515
  ]);
1516
+ const unsupportedEventRegistrationPageSurfaceSubjectSchema = z$1.object({
1517
+ kind: z$1.literal("unsupported"),
1518
+ reason: z$1.enum([
1519
+ "unsupportedSubject",
1520
+ "invalidEventSeriesId",
1521
+ "invalidEventOfferingId"
1522
+ ])
1523
+ });
1524
+ const eventRegistrationPageSurfaceSubjectSchema = z$1.unknown().transform((value, ctx) => {
1525
+ const unsupported = unsupportedEventRegistrationPageSurfaceSubjectSchema.safeParse(value);
1526
+ if (unsupported.success) return unsupported.data;
1527
+ const parsed = parseEventPageSurfaceSubject(value);
1528
+ if (parsed.ok) return parsed.value;
1529
+ ctx.addIssue({
1530
+ code: z$1.ZodIssueCode.custom,
1531
+ message: `Invalid event page-surface subject (${parsed.error.kind})`
1532
+ });
1533
+ return z$1.NEVER;
1534
+ });
1535
+ function resolveEventRegistrationScope(context) {
1536
+ const occurrenceSeriesId = context.occurrenceContext?.seriesId;
1537
+ if (occurrenceSeriesId) return {
1538
+ kind: "occurrenceSeries",
1539
+ seriesId: occurrenceSeriesId
1540
+ };
1541
+ if (context.subject?.kind === "eventSeries") return {
1542
+ kind: "pageSurfaceSeries",
1543
+ seriesId: context.subject.eventSeriesId
1544
+ };
1545
+ if (context.subject?.kind === "eventOffering") return {
1546
+ kind: "pageSurfaceOffering",
1547
+ offeringId: context.subject.eventOfferingId,
1548
+ seriesIds: context.subject.availableEventSeriesIds
1549
+ };
1550
+ if (context.subject?.kind === "unsupported") return {
1551
+ kind: "unsupportedPageSurfaceSubject",
1552
+ reason: context.subject.reason
1553
+ };
1554
+ const entrySlug = context.contentEntry?.slug;
1555
+ const entryContentType = context.contentEntry?.contentTypeSlug;
1556
+ if (entrySlug && entryContentType && isEventContentType(entryContentType)) return {
1557
+ kind: "legacyEventSlug",
1558
+ slug: entrySlug
1559
+ };
1560
+ return { kind: "unscoped" };
1561
+ }
1562
+ function applyEventRegistrationScope(events, scope) {
1563
+ switch (scope.kind) {
1564
+ case "occurrenceSeries":
1565
+ case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
1566
+ case "pageSurfaceOffering": {
1567
+ const seriesIds = new Set(scope.seriesIds);
1568
+ return events.filter((event) => seriesIds.has(event.seriesId));
1569
+ }
1570
+ case "legacyEventSlug": return events.filter((event) => event.slug === scope.slug);
1571
+ case "unsupportedPageSurfaceSubject": return [];
1572
+ case "unscoped": return [...events];
1573
+ }
1574
+ }
1575
+ function resolveEventRegistrationScopedEvents(events, context) {
1576
+ return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
1577
+ }
1466
1578
  //#endregion
1467
1579
  //#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
1468
1580
  const contentEntrySchema$2 = z$1.object({
@@ -1488,6 +1600,7 @@ const courseRegistrationSourceSchema = z$1.object({
1488
1600
  portalToken: z$1.string().nullable().optional(),
1489
1601
  contentEntry: contentEntrySchema$2.nullable().optional(),
1490
1602
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
1603
+ subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
1491
1604
  courses: z$1.array(publicCourseSchema).nullable().optional(),
1492
1605
  className: z$1.string().nullable().optional(),
1493
1606
  showSessions: z$1.boolean().optional(),
@@ -1510,6 +1623,7 @@ const courseRegistrationDisplaySchema = z$1.object({
1510
1623
  const courseRegistrationHydrationSchema = z$1.object({
1511
1624
  contentEntry: contentEntrySchema$2.nullable().optional(),
1512
1625
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
1626
+ subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
1513
1627
  courses: z$1.array(publicCourseSchema).nullable().optional(),
1514
1628
  showSessions: z$1.boolean().optional(),
1515
1629
  showPrice: z$1.boolean().optional(),
@@ -1536,7 +1650,7 @@ function buildCourseRegistrationDisplay(source) {
1536
1650
  kind: "course-registration",
1537
1651
  state: "shell",
1538
1652
  className: source.className ?? null,
1539
- summaryButtonText: source.buttonText?.trim() || "Enroll Now"
1653
+ summaryButtonText: source.buttonText?.trim() || "Sign up"
1540
1654
  };
1541
1655
  }
1542
1656
  const courseRegistrationInteractiveIslandPropsCodec = createInteractiveIslandCodec({
@@ -1551,6 +1665,7 @@ const courseRegistrationInteractiveIslandPropsCodec = createInteractiveIslandCod
1551
1665
  hydration: {
1552
1666
  contentEntry: source.contentEntry ?? null,
1553
1667
  entrySubrouteContext: source.entrySubrouteContext ?? null,
1668
+ subject: source.subject ?? null,
1554
1669
  courses: source.courses ?? null,
1555
1670
  showSessions: source.showSessions,
1556
1671
  showPrice: source.showPrice,
@@ -2036,6 +2151,19 @@ const eventPresetSchema = z$1.enum([
2036
2151
  "performance"
2037
2152
  ]);
2038
2153
  const eventScheduleScopeSchema$3 = z$1.enum(["recurring", "oneOff"]);
2154
+ const publicEventRecurrenceSchema = z$1.discriminatedUnion("kind", [z$1.object({
2155
+ kind: z$1.literal("weekly"),
2156
+ interval: z$1.number().int().positive(),
2157
+ weekdays: z$1.array(z$1.enum([
2158
+ "MO",
2159
+ "TU",
2160
+ "WE",
2161
+ "TH",
2162
+ "FR",
2163
+ "SA",
2164
+ "SU"
2165
+ ]))
2166
+ }).readonly(), z$1.object({ kind: z$1.literal("other") }).readonly()]);
2039
2167
  const eventDestinationModeSchema = z$1.enum(["cms-managed", "system-managed"]);
2040
2168
  const publicEventDestinationSchema = z$1.discriminatedUnion("kind", [z$1.object({
2041
2169
  kind: z$1.literal("native"),
@@ -2288,6 +2416,7 @@ const publicEventSchema = z$1.object({
2288
2416
  eventPreset: eventPresetSchema.optional(),
2289
2417
  eventDestinationMode: eventDestinationModeSchema.optional(),
2290
2418
  scheduleScope: eventScheduleScopeSchema$3.optional(),
2419
+ recurrence: publicEventRecurrenceSchema.optional(),
2291
2420
  id: z$1.string(),
2292
2421
  occurrenceId: z$1.string(),
2293
2422
  seriesId: z$1.string(),
@@ -5691,6 +5820,10 @@ const eventCalendarSourceSchema = z$1.object({
5691
5820
  filterVenueId: z$1.string().nullable().optional(),
5692
5821
  buttonVariant: eventButtonVariantSchema.optional(),
5693
5822
  buttonText: z$1.string().optional(),
5823
+ boardTitle: z$1.string().optional(),
5824
+ footerNote: z$1.string().optional(),
5825
+ elevated: z$1.boolean().nullable().optional(),
5826
+ banded: z$1.boolean().nullable().optional(),
5694
5827
  showVenue: z$1.boolean().nullable().optional(),
5695
5828
  showMap: z$1.boolean().nullable().optional(),
5696
5829
  showCapacity: z$1.boolean().nullable().optional(),
@@ -5722,6 +5855,12 @@ const eventCalendarDisplaySchema = z$1.object({
5722
5855
  filterVenueId: z$1.string().nullable(),
5723
5856
  buttonVariant: eventButtonVariantSchema,
5724
5857
  buttonText: z$1.string(),
5858
+ boardTitle: z$1.string().optional(),
5859
+ footerNote: z$1.string().optional(),
5860
+ seeAllUrl: z$1.string().optional(),
5861
+ loadMoreText: z$1.string().optional(),
5862
+ elevated: z$1.boolean(),
5863
+ banded: z$1.boolean(),
5725
5864
  showVenue: z$1.boolean(),
5726
5865
  showMap: z$1.boolean(),
5727
5866
  showCapacity: z$1.boolean(),
@@ -5746,6 +5885,16 @@ const eventCalendarIslandMetaCodec = createZodCodec(z$1.object({
5746
5885
  stage: previewStageSchema.optional()
5747
5886
  }));
5748
5887
  const eventCalendarIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
5888
+ /**
5889
+ * Collapse an optional/blank string to `undefined` so downstream week-board
5890
+ * copy (title, footer note) and the CTA href stay hidden unless a site opts in
5891
+ * with real content. Keeps the generic default flat and copy-free.
5892
+ */
5893
+ function normalizeOptionalText(value) {
5894
+ if (typeof value !== "string") return void 0;
5895
+ const trimmed = value.trim();
5896
+ return trimmed.length > 0 ? trimmed : void 0;
5897
+ }
5749
5898
  function buildEventCalendarDisplay(source) {
5750
5899
  const listLayout = source.listLayout ?? source.layout ?? "stack";
5751
5900
  return {
@@ -5777,6 +5926,12 @@ function buildEventCalendarDisplay(source) {
5777
5926
  filterVenueId: normalizeEventVenueId(source.filterVenueId),
5778
5927
  buttonVariant: source.buttonVariant ?? "primary",
5779
5928
  buttonText: source.buttonText ?? "Book",
5929
+ boardTitle: normalizeOptionalText(source.boardTitle),
5930
+ footerNote: normalizeOptionalText(source.footerNote),
5931
+ seeAllUrl: normalizeOptionalText(source.seeAllUrl),
5932
+ loadMoreText: normalizeOptionalText(source.loadMoreText),
5933
+ elevated: source.elevated ?? false,
5934
+ banded: source.banded ?? false,
5780
5935
  showVenue: source.showVenue ?? true,
5781
5936
  showMap: source.showMap ?? true,
5782
5937
  showCapacity: source.showCapacity ?? true,
@@ -6009,57 +6164,6 @@ const eventCombinedInteractiveIslandPropsCodec = createInteractiveIslandCodec({
6009
6164
  stage: value.stage
6010
6165
  })
6011
6166
  });
6012
- const eventRegistrationPageSurfaceSubjectSchema = z$1.discriminatedUnion("kind", [z$1.object({
6013
- kind: z$1.literal("eventSeries"),
6014
- eventSeriesId: z$1.string().transform((value, ctx) => {
6015
- const parsed = parseEventSeriesId(value);
6016
- if (!parsed.ok) {
6017
- ctx.addIssue({
6018
- code: z$1.ZodIssueCode.custom,
6019
- message: `Invalid event series id (${parsed.error.kind})`
6020
- });
6021
- return z$1.NEVER;
6022
- }
6023
- return parsed.value;
6024
- })
6025
- }), z$1.object({
6026
- kind: z$1.literal("unsupported"),
6027
- reason: z$1.enum(["unsupportedSubject", "invalidEventSeriesId"])
6028
- })]);
6029
- function resolveEventRegistrationScope(context) {
6030
- const occurrenceSeriesId = context.occurrenceContext?.seriesId;
6031
- if (occurrenceSeriesId) return {
6032
- kind: "occurrenceSeries",
6033
- seriesId: occurrenceSeriesId
6034
- };
6035
- if (context.subject?.kind === "eventSeries") return {
6036
- kind: "pageSurfaceSeries",
6037
- seriesId: context.subject.eventSeriesId
6038
- };
6039
- if (context.subject?.kind === "unsupported") return {
6040
- kind: "unsupportedPageSurfaceSubject",
6041
- reason: context.subject.reason
6042
- };
6043
- const entrySlug = context.contentEntry?.slug;
6044
- const entryContentType = context.contentEntry?.contentTypeSlug;
6045
- if (entrySlug && entryContentType && isEventContentType(entryContentType)) return {
6046
- kind: "legacyEventSlug",
6047
- slug: entrySlug
6048
- };
6049
- return { kind: "unscoped" };
6050
- }
6051
- function applyEventRegistrationScope(events, scope) {
6052
- switch (scope.kind) {
6053
- case "occurrenceSeries":
6054
- case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
6055
- case "legacyEventSlug": return events.filter((event) => event.slug === scope.slug);
6056
- case "unsupportedPageSurfaceSubject": return [];
6057
- case "unscoped": return [...events];
6058
- }
6059
- }
6060
- function resolveEventRegistrationScopedEvents(events, context) {
6061
- return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
6062
- }
6063
6167
  //#endregion
6064
6168
  //#region ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
6065
6169
  /**
@@ -6735,6 +6839,11 @@ const newsletterPresetSchema = z$1.enum([
6735
6839
  "emailNameCompany"
6736
6840
  ]);
6737
6841
  const newsletterDestinationProviderSchema = z$1.enum(["riverbank", "mailchimp"]);
6842
+ const newsletterButtonVariantSchema = z$1.enum([
6843
+ "primary",
6844
+ "secondary",
6845
+ "outline"
6846
+ ]);
6738
6847
  const newsletterFieldSchema = z$1.object({
6739
6848
  id: z$1.string(),
6740
6849
  type: z$1.enum(["email", "text"]),
@@ -6760,6 +6869,7 @@ const newsletterSourceSchema = z$1.object({
6760
6869
  preset: newsletterPresetSchema.optional(),
6761
6870
  includePhone: z$1.boolean().optional(),
6762
6871
  buttonLabel: z$1.string().nullable().optional(),
6872
+ buttonVariant: newsletterButtonVariantSchema.nullable().optional(),
6763
6873
  successMessage: z$1.string().nullable().optional(),
6764
6874
  privacyNote: z$1.string().nullable().optional(),
6765
6875
  tags: z$1.string().nullable().optional(),
@@ -6770,6 +6880,7 @@ const newsletterDisplaySchema = z$1.object({
6770
6880
  kind: z$1.literal("newsletter-form"),
6771
6881
  className: z$1.string().nullable(),
6772
6882
  buttonLabel: z$1.string(),
6883
+ buttonVariant: newsletterButtonVariantSchema,
6773
6884
  successMessage: z$1.string().nullable(),
6774
6885
  privacyNote: z$1.string().nullable(),
6775
6886
  fields: z$1.array(newsletterFieldSchema)
@@ -6798,6 +6909,7 @@ function buildNewsletterDisplay(source) {
6798
6909
  kind: "newsletter-form",
6799
6910
  className: source.className ?? null,
6800
6911
  buttonLabel: source.buttonLabel?.trim() || "Subscribe",
6912
+ buttonVariant: source.buttonVariant ?? "primary",
6801
6913
  successMessage: source.successMessage ?? "Thanks for subscribing!",
6802
6914
  privacyNote: source.privacyNote ?? null,
6803
6915
  fields: getPresetFields(preset, { includePhone })
@@ -7296,7 +7408,11 @@ const shopSourceSchema = z$1.object({
7296
7408
  productSlug: z$1.string().nullable().optional(),
7297
7409
  showPasses: z$1.boolean().optional(),
7298
7410
  showMemberships: z$1.boolean().optional(),
7299
- layout: z$1.enum(["grid", "list"]).optional(),
7411
+ layout: z$1.enum([
7412
+ "grid",
7413
+ "list",
7414
+ "register"
7415
+ ]).optional(),
7300
7416
  columns: z$1.string().optional(),
7301
7417
  showDescriptions: z$1.boolean().optional(),
7302
7418
  showSummary: z$1.boolean().optional(),
@@ -7304,6 +7420,12 @@ const shopSourceSchema = z$1.object({
7304
7420
  showPrices: z$1.boolean().optional(),
7305
7421
  showValidityPeriod: z$1.boolean().optional(),
7306
7422
  showPricePerCredit: z$1.boolean().nullable().optional(),
7423
+ buttonVariant: z$1.enum([
7424
+ "primary",
7425
+ "secondary",
7426
+ "outline",
7427
+ "link"
7428
+ ]).optional(),
7307
7429
  passesHeading: z$1.string().optional(),
7308
7430
  membershipsHeading: z$1.string().optional(),
7309
7431
  buyButtonText: z$1.string().optional(),
@@ -7401,7 +7523,11 @@ const passesMembershipsDisplaySchema = z$1.object({
7401
7523
  kind: z$1.literal("passes-memberships"),
7402
7524
  state: z$1.enum(["empty", "ready"]),
7403
7525
  className: z$1.string().nullable(),
7404
- layout: z$1.enum(["grid", "list"]),
7526
+ layout: z$1.enum([
7527
+ "grid",
7528
+ "list",
7529
+ "register"
7530
+ ]),
7405
7531
  columns: z$1.string(),
7406
7532
  emptyMessage: z$1.string(),
7407
7533
  passesHeading: z$1.string(),
@@ -7443,7 +7569,13 @@ const checkoutDisplaySchema = z$1.object({
7443
7569
  const passesMembershipsHydrationSchema = z$1.object({
7444
7570
  passes: z$1.array(publicPassProductSchema),
7445
7571
  memberships: z$1.array(publicMembershipProductSchema),
7446
- passPurchaseMode: z$1.enum(["add_to_cart", "buy_now"])
7572
+ passPurchaseMode: z$1.enum(["add_to_cart", "buy_now"]),
7573
+ buttonVariant: z$1.enum([
7574
+ "primary",
7575
+ "secondary",
7576
+ "outline",
7577
+ "link"
7578
+ ])
7447
7579
  });
7448
7580
  const productListHydrationSchema = z$1.object({
7449
7581
  products: z$1.array(publicProductSchema),
@@ -7531,7 +7663,8 @@ const shopBlockRuntime = defineProgressiveBlockRuntime({
7531
7663
  hydration: {
7532
7664
  passes: source.showPasses === false ? [] : source.passes ?? [],
7533
7665
  memberships: source.showMemberships === false ? [] : source.memberships ?? [],
7534
- passPurchaseMode
7666
+ passPurchaseMode,
7667
+ buttonVariant: source.buttonVariant ?? "primary"
7535
7668
  }
7536
7669
  };
7537
7670
  }
@@ -7546,7 +7679,7 @@ const productListBlockRuntime = defineProgressiveBlockRuntime({
7546
7679
  display: buildProductListDisplay(source.products ?? [], {
7547
7680
  heading: source.heading,
7548
7681
  className: source.className,
7549
- layout: source.layout,
7682
+ layout: source.layout === "register" ? "list" : source.layout,
7550
7683
  columns: source.columns,
7551
7684
  emptyMessage: source.emptyStateText,
7552
7685
  showSummary: source.showSummary !== false,
@@ -7723,4 +7856,4 @@ function defineIslandPropsDecoder(kind) {
7723
7856
  };
7724
7857
  }
7725
7858
  //#endregion
7726
- export { parseThemeColorToken as $, normalizeOptionalId as A, getBookingLocalDateKey as At, groupEventsByDate as B, publicEventTicketTypes as Bt, getWizardStepsForContext as C, reportWorkflowSuccess as Ct, getEventRuntimeFiltersKey as D, formatBookingInstant as Dt, buildEventRuntimeFilters as E, formatBookingDateTime as Et, formatEventPriceDisplay as F, formatBookingPriceDisplay as Ft, getEventAvailabilityStatus as G, resolveEventLinkProps as H, assertNever$2 as Ht, formatEventTeacherLine as I, publicEventPricingCurrency as It, normalizeEventBlockKind as J, getLocalDateKey as K, formatTime as L, publicEventPricingMode as Lt, formatEventCompactDateRail as M, resolveBookingTimeZoneId as Mt, formatEventDateParts as N, toBookingTimeZone as Nt, normalizeCsvIds as O, formatBookingTime as Ot, formatEventPrice as P, toScheduledBookingDateTime as Pt, normalizeCardVariantRole as Q, getCardOrientation as R, publicEventPricingType as Rt, getStepNumber as S, reportWorkflowError as St, buildEventCalendarListingRender as T, formatBookingDate as Tt, resolveRuntimeEventPricing as U, resolveEventCta as V, formatCurrencyAmount as Vt, getEventAvailability as W, unwrapRichTextRoot as X, createRichTextDocFromMarkdown as Y, isRecord$3 as Z, findPreSelectedEvent as _, assertNever$1 as _t, buildProductDetailDisplay as a, getBookingRedirectStateFromLocation as at, resolveRegistrationTarget as b, ok as bt, EMPTY_COMMERCE_CART_STATE as c, isBookingServiceSlidingAmountInRange as ct, deriveCommerceCheckoutState as d, resolveAppointmentCheckoutVerificationState as dt, themeColorTokenSchema as et, parseStoredCommerceCartState as f, resolveBookingPaymentStep as ft, findEventByOccurrenceId as g, BOOKING_FORM_DATA_RESERVED_KEYS as gt, toRegistrationEvents as h, toSelectedCollectionOptionKind as ht, buildProductCardDisplay as i, formatBookingSubmissionPreparationError as it, formatDate as j, parseBookingLocalDate as jt, normalizeCsvString as k, formatLocalScheduleDate as kt, buildPassCartItem as l, parseBookingCurrencyInputToCents as lt, reduceCommerceCart as m, resolveDefaultBookingServiceId as mt, getShopDisplayForItems as n, deriveBookingFormViewState as nt, formatCommercePrice as o, getBookingServiceSlidingScale as ot, productItemKey as p, resolveBookingSiteId as pt, getLocalMinuteOfDay as q, buildCartDisplay as r, formatBookingCentsAsCurrencyInput as rt, formatInterval as s, getBookingSuccessMessage as st, defineIslandPropsDecoder as t, logger as tt, buildProductCartItem as u, prepareBookingSubmission as ut, resolveDiscountContext as v, clearWorkflowFeedback as vt, resolveEventRegistrationScopedEvents as w, addLocalScheduleDays as wt, WIZARD_STEPS as x, okWith as xt, resolveEventRequiresPayment as y, err as yt, getContainerClass as z, publicEventScalarPrice as zt };
7859
+ export { themeColorTokenSchema as $, formatDate as A, getBookingLocalDateKey as At, resolveEventCta as B, publicEventScalarPrice as Bt, getWizardStepsForContext as C, reportWorkflowSuccess as Ct, normalizeCsvIds as D, formatBookingInstant as Dt, getEventRuntimeFiltersKey as E, formatBookingDateTime as Et, formatEventTeacherLine as F, parseEventPageSurfaceSubject as Ft, getLocalDateKey as G, resolveRuntimeEventPricing as H, formatCurrencyAmount as Ht, formatTime as I, formatBookingPriceDisplay as It, createRichTextDocFromMarkdown as J, getLocalMinuteOfDay as K, getCardOrientation as L, publicEventPricingCurrency as Lt, formatEventDateParts as M, resolveBookingTimeZoneId as Mt, formatEventPrice as N, toBookingTimeZone as Nt, normalizeCsvString as O, formatBookingTime as Ot, formatEventPriceDisplay as P, toScheduledBookingDateTime as Pt, parseThemeColorToken as Q, getContainerClass as R, publicEventPricingMode as Rt, getStepNumber as S, reportWorkflowError as St, buildEventRuntimeFilters as T, formatBookingDate as Tt, getEventAvailability as U, assertNever$2 as Ut, resolveEventLinkProps as V, publicEventTicketTypes as Vt, getEventAvailabilityStatus as W, isRecord$3 as X, unwrapRichTextRoot as Y, normalizeCardVariantRole as Z, findPreSelectedEvent as _, assertNever$1 as _t, buildProductDetailDisplay as a, getBookingRedirectStateFromLocation as at, resolveRegistrationTarget as b, ok as bt, EMPTY_COMMERCE_CART_STATE as c, isBookingServiceSlidingAmountInRange as ct, deriveCommerceCheckoutState as d, resolveAppointmentCheckoutVerificationState as dt, resolveEventRegistrationScopedEvents as et, parseStoredCommerceCartState as f, resolveBookingPaymentStep as ft, findEventByOccurrenceId as g, BOOKING_FORM_DATA_RESERVED_KEYS as gt, toRegistrationEvents as h, toSelectedCollectionOptionKind as ht, buildProductCardDisplay as i, formatBookingSubmissionPreparationError as it, formatEventCompactDateRail as j, parseBookingLocalDate as jt, normalizeOptionalId as k, formatLocalScheduleDate as kt, buildPassCartItem as l, parseBookingCurrencyInputToCents as lt, reduceCommerceCart as m, resolveDefaultBookingServiceId as mt, getShopDisplayForItems as n, deriveBookingFormViewState as nt, formatCommercePrice as o, getBookingServiceSlidingScale as ot, productItemKey as p, resolveBookingSiteId as pt, normalizeEventBlockKind as q, buildCartDisplay as r, formatBookingCentsAsCurrencyInput as rt, formatInterval as s, getBookingSuccessMessage as st, defineIslandPropsDecoder as t, logger as tt, buildProductCartItem as u, prepareBookingSubmission as ut, resolveDiscountContext as v, clearWorkflowFeedback as vt, buildEventCalendarListingRender as w, addLocalScheduleDays as wt, WIZARD_STEPS as x, okWith as xt, resolveEventRequiresPayment as y, err as yt, groupEventsByDate as z, publicEventPricingType as zt };