@riverbankcms/sdk 0.96.0 → 0.99.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 (208) hide show
  1. package/README.md +20 -1
  2. package/dist/{PreviewEditorSidebar-46VT4QVU.mjs → PreviewEditorSidebar-TPOKCCKY.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-JD75GE5F.mjs → PreviewEditorUI-Y347GLC2.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-OGTXRQ4M.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -36
  6. package/dist/_dts/api/src/billing.d.ts +2 -0
  7. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +35 -1
  8. package/dist/_dts/api/src/bookingOperations.d.ts +246 -0
  9. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +5 -1
  10. package/dist/_dts/api/src/contentRuntime.d.ts +109 -40
  11. package/dist/_dts/api/src/endpoints.d.ts +88 -0
  12. package/dist/_dts/api/src/index.d.ts +3 -2
  13. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  14. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +10 -0
  15. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  16. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -1
  17. package/dist/_dts/api/src/siteOperations.d.ts +65 -1
  18. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +7 -1
  19. package/dist/_dts/billing/src/site-arrangements.d.ts +151 -0
  20. package/dist/_dts/billing/src/subscriptions/store.d.ts +2 -0
  21. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/resolveThumbnail.d.ts +2 -1
  22. package/dist/_dts/blocks/src/PageRenderer.d.ts +8 -1
  23. package/dist/_dts/blocks/src/bindings/types.d.ts +0 -4
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +7 -0
  25. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +12 -12
  27. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -0
  28. package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +1 -0
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +2 -0
  30. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/blocks/weekly-slot-availability.d.ts +34 -0
  32. package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -0
  33. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  34. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  35. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +4 -1
  37. package/dist/_dts/blocks/src/system/node/builder.d.ts +2 -0
  38. package/dist/_dts/blocks/src/system/node/schema.d.ts +13 -0
  39. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  40. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  41. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  42. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  43. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +24 -0
  44. package/dist/_dts/blocks/src/system/runtime/components/booking/DatePicker.d.ts +6 -2
  45. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +3 -1
  46. package/dist/_dts/blocks/src/system/runtime/components/booking/TimeSlotSelector.d.ts +10 -4
  47. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
  48. package/dist/_dts/blocks/src/system/runtime/hooks/useAppointmentCheckoutVerification.d.ts +7 -0
  49. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +2 -2
  50. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -2
  51. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +4 -0
  52. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +5 -0
  53. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +11 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/StepIndicator.d.ts +3 -1
  55. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +14 -0
  56. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -2
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +133 -2
  58. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.controller.d.ts +3 -0
  59. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.d.ts +9 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.state.d.ts +14 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.server.d.ts +10 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.view.d.ts +11 -0
  63. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +31 -1
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +2 -1
  65. package/dist/_dts/blocks/src/system/runtime/{nodes/event-registration → shared/components}/SelectableOptionCard.d.ts +11 -2
  66. package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +16 -5
  67. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  68. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  69. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +5 -0
  70. package/dist/_dts/blocks/src/utils/date-formatting.d.ts +18 -2
  71. package/dist/_dts/content-editor/src/primitives/PreviewInlineTextEditor.d.ts +1 -1
  72. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +1 -1
  73. package/dist/_dts/content-model/src/templates/defaults.d.ts +5 -5
  74. package/dist/_dts/content-model/src/templates/types.d.ts +2 -6
  75. package/dist/_dts/core/src/branded.d.ts +8 -0
  76. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +767 -20
  77. package/dist/_dts/field-primitives/src/bindings/index.d.ts +8 -0
  78. package/dist/_dts/sdk/src/__mocks__/next-cache.d.ts +1 -1
  79. package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +15 -0
  80. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +2 -1
  81. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +3 -1
  82. package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +9 -3
  83. package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +34 -0
  84. package/dist/_dts/sdk/src/cli/commands/push.d.ts +13 -0
  85. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +2 -0
  86. package/dist/_dts/sdk/src/cli/config-loader.d.ts +2 -0
  87. package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +29 -0
  88. package/dist/_dts/sdk/src/cli/content/reader.d.ts +16 -14
  89. package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -4
  90. package/dist/_dts/sdk/src/cli/env-scope.d.ts +2 -0
  91. package/dist/_dts/sdk/src/cli/helpers.d.ts +6 -7
  92. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -0
  93. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +6 -18
  94. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -4
  95. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +2 -0
  96. package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +6 -18
  97. package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +2 -4
  98. package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +32 -0
  99. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +27 -0
  100. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +63 -0
  101. package/dist/_dts/sdk/src/cli/push-config.d.ts +13 -2
  102. package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +51 -0
  103. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +21 -0
  104. package/dist/_dts/sdk/src/client/index.d.ts +6 -0
  105. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +1 -1
  106. package/dist/_dts/sdk/src/client/types.d.ts +18 -2
  107. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  108. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  109. package/dist/_dts/sdk/src/contracts/bindings.d.ts +3 -7
  110. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +13 -0
  111. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +6 -1
  112. package/dist/_dts/sdk/src/next/route-outcome-proxy.d.ts +3 -3
  113. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  114. package/dist/_dts/sdk/src/prebuild/loader.d.ts +8 -1
  115. package/dist/_dts/sdk/src/public-api/contracts.d.ts +174 -78
  116. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  117. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  118. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -0
  119. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +4 -4
  120. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +58 -1
  121. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +8 -0
  122. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +2 -2
  123. package/dist/_dts/sdk/src/rendering/index.d.ts +7 -7
  124. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +18 -66
  125. package/dist/_dts/sdk/src/rendering/overrides.d.ts +2 -0
  126. package/dist/_dts/sdk/src/routing/resolveRoute.d.ts +18 -0
  127. package/dist/_dts/sdk/src/test/apiClient.d.ts +17 -0
  128. package/dist/_dts/sdk/src/test/bunDom.setup.d.ts +1 -0
  129. package/dist/_dts/sdk/src/test/env.d.ts +4 -0
  130. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  131. package/dist/_dts/sdk/src/version.d.ts +1 -1
  132. package/dist/_dts/site-commands/src/commands.d.ts +3 -3
  133. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  134. package/dist/_dts/theme-core/src/interactive/generateBaseCSS.d.ts +6 -0
  135. package/dist/_dts/theme-core/src/status/contextualColors.d.ts +6 -0
  136. package/dist/_dts/theme-core/src/status/index.d.ts +1 -0
  137. package/dist/{chunk-VHIMXQ7Z.mjs → chunk-4HXF2QLH.mjs} +2 -2
  138. package/dist/{chunk-VTPPVAOL.mjs → chunk-EMJIT3ZJ.mjs} +1 -1
  139. package/dist/{chunk-4TLTV7OB.mjs → chunk-PM7HGDHM.mjs} +2 -2
  140. package/dist/{chunk-XMATDBXO.mjs → chunk-XO34WBBP.mjs} +2139 -1348
  141. package/dist/{chunk-EL55VV6Q.mjs → chunk-YGTTEVUM.mjs} +31 -10
  142. package/dist/{chunk-7ED5UNHL.mjs → chunk-YWTCCOSF.mjs} +117 -0
  143. package/dist/cli/index.mjs +2690 -1503
  144. package/dist/cli/init-docs/content/cli-reference.md +29 -1
  145. package/dist/cli/init-docs/content/getting-started.md +8 -0
  146. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +3 -1
  147. package/dist/cli/init-docs/content/workflow-preview-mode.md +6 -0
  148. package/dist/cli/init-docs/content/workflow-remote-setup.md +51 -0
  149. package/dist/client/{accordion-GUNXIIZR.mjs → accordion-QSUEYL4L.mjs} +2 -2
  150. package/dist/client/{bookingForm-AOU4VHP5.mjs → bookingForm-QYGAHPDP.mjs} +376 -302
  151. package/dist/client/bookings.mjs +795 -429
  152. package/dist/client/{carousel-4QSX2JPC.mjs → carousel-SM2LEWAU.mjs} +3 -3
  153. package/dist/client/{cart-JKN6C4ZB.mjs → cart-3N3SFKNQ.mjs} +7 -7
  154. package/dist/client/{checkout-YY6YMITW.mjs → checkout-YFAYPKPZ.mjs} +7 -7
  155. package/dist/client/{chunk-SY543WZ3.mjs → chunk-5DLGREUB.mjs} +1 -1
  156. package/dist/client/{chunk-A3YN7M3G.mjs → chunk-CLZ7NBSP.mjs} +147 -75
  157. package/dist/client/{chunk-GWCRCJLB.mjs → chunk-CYJ3MUFP.mjs} +18 -6
  158. package/dist/client/{chunk-JNE6UI6U.mjs → chunk-H3H3ODO7.mjs} +1 -1
  159. package/dist/client/{chunk-CPKMJVBD.mjs → chunk-HPEQ4YWW.mjs} +83 -109
  160. package/dist/client/{chunk-PCHACQEB.mjs → chunk-IIUIKJ4K.mjs} +15 -7
  161. package/dist/client/{chunk-TNGL2WJF.mjs → chunk-IOAHWAQG.mjs} +18 -0
  162. package/dist/client/{chunk-6H27K6AA.mjs → chunk-JTKBF3W2.mjs} +10 -4
  163. package/dist/client/{chunk-OLAOAZEO.mjs → chunk-K7KTSACR.mjs} +1 -1
  164. package/dist/client/{chunk-BFCJZODD.mjs → chunk-R32M5HFS.mjs} +6 -6
  165. package/dist/client/{chunk-VJROUYOQ.mjs → chunk-WEVT46PX.mjs} +3 -3
  166. package/dist/client/{chunk-H7A6PUGM.mjs → chunk-ZU65LTI3.mjs} +1 -1
  167. package/dist/client/client.mjs +5052 -4083
  168. package/dist/client/{courseRegistration-UU2KMPSQ.mjs → courseRegistration-LYBE7VVK.mjs} +7 -7
  169. package/dist/client/{eventCalendar-WIVNS2TM.mjs → eventCalendar-FMTB75X6.mjs} +9 -9
  170. package/dist/client/{eventCombined-P3G5MW4J.mjs → eventCombined-E4LUCJXT.mjs} +9 -9
  171. package/dist/client/{eventDetails-2VHJ2RDG.mjs → eventDetails-GELSRR4Z.mjs} +9 -9
  172. package/dist/client/{eventListing-TGO6JI3R.mjs → eventListing-TB623B6R.mjs} +9 -9
  173. package/dist/client/{eventRegistration-B46HEJES.mjs → eventRegistration-NRIKHXTI.mjs} +9 -9
  174. package/dist/client/{form-VKRTFUNQ.mjs → form-Y4U4IAXE.mjs} +3 -3
  175. package/dist/client/{headerSection-XUX4ZJLO.mjs → headerSection-QSOVV5P7.mjs} +3 -3
  176. package/dist/client/hooks.mjs +1776 -1355
  177. package/dist/client/{locationMap-NQFI5MJO.mjs → locationMap-QYCAHH7H.mjs} +3 -3
  178. package/dist/client/{newsletterForm-P2GETCQK.mjs → newsletterForm-NWHY5TBY.mjs} +3 -3
  179. package/dist/client/{productDetail-7NQ7O5IF.mjs → productDetail-FYDMU2CE.mjs} +7 -7
  180. package/dist/client/{productList-RX6ZJ7BL.mjs → productList-D76CGACQ.mjs} +7 -7
  181. package/dist/client/rendering/client.mjs +2990 -2470
  182. package/dist/client/rendering/islands.mjs +19 -19
  183. package/dist/client/rendering.mjs +3236 -2236
  184. package/dist/client/{shop-BHN5AKY6.mjs → shop-SOUACT5N.mjs} +7 -7
  185. package/dist/preview-next/before-render.mjs +117 -0
  186. package/dist/preview-next/client/runtime.mjs +5 -5
  187. package/dist/preview-next/middleware.mjs +117 -0
  188. package/dist/{sdk-runtime-X2LXQ5IC.mjs → sdk-runtime-XPVE3LBA.mjs} +6 -6
  189. package/dist/server/components.mjs +3115 -2484
  190. package/dist/server/config-template-validation.mjs +6 -2
  191. package/dist/server/config-validation.mjs +1961 -1580
  192. package/dist/server/config.mjs +1961 -1580
  193. package/dist/server/data.mjs +1762 -1352
  194. package/dist/server/index.mjs +266 -33
  195. package/dist/server/next/middleware.mjs +2 -2
  196. package/dist/server/next.mjs +3399 -2504
  197. package/dist/server/page-converter.mjs +1553 -1295
  198. package/dist/server/prebuild-loader.mjs +42 -23
  199. package/dist/server/prebuild.mjs +1 -1
  200. package/dist/server/rendering/server.mjs +3151 -2489
  201. package/dist/server/rendering.mjs +3363 -2555
  202. package/dist/server/routing.mjs +1877 -1388
  203. package/dist/server/server.mjs +2057 -1402
  204. package/dist/server/theme-bridge.mjs +597 -505
  205. package/dist/server/theme.mjs +5 -4
  206. package/dist/styles/index.css +499 -490
  207. package/package.json +6 -4
  208. package/dist/SdkPreviewModeRuntime-MJUSYUFB.mjs +0 -8
@@ -1,22 +1,22 @@
1
1
  "use client";
2
- import { LeafletStaticMap } from './chunk-SY543WZ3.mjs';
3
- import { resolveCoursePricingState, useWaitlistClaim, MagicLinkForm, formatCoursePriceAmount, formatCoursePriceDisplay } from './chunk-6H27K6AA.mjs';
2
+ import { LeafletStaticMap } from './chunk-5DLGREUB.mjs';
3
+ import { resolveCoursePricingState, MagicLinkForm, formatCoursePriceAmount, formatCoursePriceDisplay, useWaitlistClaim } from './chunk-JTKBF3W2.mjs';
4
4
  import { CreditCard, Ticket, Star, Sparkles } from './chunk-6N7YRNYU.mjs';
5
- import { usePolling, buildBookingPaymentSelectionViewModel } from './chunk-VJROUYOQ.mjs';
6
- import { SpinnerNode } from './chunk-OLAOAZEO.mjs';
7
- import { createBodyThemePortalRoot, TabBarFragment, useDiscountCodeUi, logoutPortal, consumeSearchParam, StepIndicator, DiscountCodeDisclosure, TerminalPanel, StateIcon, formatPrice, CrossIcon, ClockIcon, LoggedInAsUser, CheckIcon } from './chunk-A3YN7M3G.mjs';
5
+ import { buildBookingPaymentSelectionViewModel, usePolling } from './chunk-WEVT46PX.mjs';
6
+ import { SpinnerNode } from './chunk-K7KTSACR.mjs';
7
+ import { createBodyThemePortalRoot, TabBarFragment, logoutPortal, StepIndicator, DiscountCodeDisclosure, TerminalPanel, StateIcon, formatPrice, CrossIcon, ClockIcon, LoggedInAsUser, SelectableOptionCard, CheckIcon, useDiscountCodeUi, consumeSearchParam } from './chunk-CLZ7NBSP.mjs';
8
8
  import { getFieldValidationControlProps, FieldValidationMessage } from './chunk-3DCJ45Z2.mjs';
9
9
  import { ModalShell } from './chunk-WBQG7VJA.mjs';
10
10
  import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-LJCX6V7Q.mjs';
11
- import { useBlockApi, FeedbackMessage } from './chunk-TNGL2WJF.mjs';
12
- import { buildEventRuntimeFilters, buildEventCalendarListingRender, groupEventsByDate, getOrderedDayNames, formatDateKey, getEventRuntimeFiltersKey, themeButtonClassName, normalizeCsvIds, normalizeOptionalId, normalizeEventBlockKind, normalizeCsvString, EventCompactRow, EmptyState, getContainerClass, getCardOrientation, isToday, MAX_EVENTS_PER_DAY, formatTime, WIZARD_STEPS, getWizardStepsForContext, getStepNumber, formatEventPriceDisplay, resolveRuntimeEventPricing, formatEventPrice, formatEventDateParts, resolveEventLinkProps, DateTimeTile, assertNever, EventCard, buildCalendarViewport, shiftCalendarAnchorDate, addMonths, getThreeMonthRange, buildTimetableModel, formatDate, MONTH_NAMES, getEventAvailability, formatEventTeacherLine, toRegistrationEvents, isEventContentType, findPreSelectedEvent, resolveRegistrationTarget, findEventByOccurrenceId, resolveEventRequiresPayment, resolveDiscountContext } from './chunk-GWCRCJLB.mjs';
13
- import { publicEventPricingType, getBookingLocalDateKey, toScheduledBookingDateTime, toBookingTimeZone, publicEventPricingCurrency, formatBookingDateTime, publicEventPricingMode, publicEventScalarPrice, publicEventTicketTypes, formatCurrencyAmount, formatBookingDate, formatBookingTime } from './chunk-PCHACQEB.mjs';
11
+ import { useBlockApi, FeedbackMessage } from './chunk-IOAHWAQG.mjs';
12
+ import { buildEventRuntimeFilters, buildEventCalendarListingRender, groupEventsByDate, getOrderedDayNames, formatDateKey, getEventRuntimeFiltersKey, themeButtonClassName, normalizeCsvIds, normalizeOptionalId, normalizeEventBlockKind, normalizeCsvString, EventCompactRow, EmptyState, getContainerClass, getCardOrientation, isToday, MAX_EVENTS_PER_DAY, formatTime, WIZARD_STEPS, getWizardStepsForContext, getStepNumber, formatEventPriceDisplay, resolveRuntimeEventPricing, formatEventPrice, formatEventDateParts, resolveEventLinkProps, DateTimeTile, assertNever, EventCard, buildCalendarViewport, shiftCalendarAnchorDate, addMonths, getThreeMonthRange, buildTimetableModel, formatDate, MONTH_NAMES, getEventAvailability, formatEventTeacherLine, toRegistrationEvents, isEventContentType, findPreSelectedEvent, resolveRegistrationTarget, findEventByOccurrenceId, resolveEventRequiresPayment, resolveDiscountContext } from './chunk-CYJ3MUFP.mjs';
13
+ import { publicEventPricingType, getBookingLocalDateKey, toScheduledBookingDateTime, toBookingTimeZone, publicEventPricingCurrency, formatBookingDateTime, publicEventPricingMode, publicEventScalarPrice, formatCurrencyAmount, publicEventTicketTypes, formatBookingDate, formatBookingTime } from './chunk-IIUIKJ4K.mjs';
14
14
  import React9, { createContext, useId, useMemo, useReducer, useState, useRef, useEffect, useCallback, useContext } from 'react';
15
15
  import { createPortal } from 'react-dom';
16
16
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
17
17
 
18
18
  function StepIndicator2(props) {
19
- return /* @__PURE__ */ jsx(StepIndicator, { ...props, classPrefix: "er" });
19
+ return /* @__PURE__ */ jsx(StepIndicator, { ...props, classPrefix: "er", emitSharedClasses: true });
20
20
  }
21
21
 
22
22
  // ../blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.ts
@@ -516,8 +516,14 @@ function existingRegistrationLookupReducer(state, action) {
516
516
  }
517
517
 
518
518
  // ../blocks/src/system/runtime/nodes/event-registration/hooks.ts
519
+ var eventRegistrationHooksDeps = {
520
+ useBlockApi
521
+ };
519
522
  function usePortalAuth() {
520
- const api = useBlockApi();
523
+ return usePortalAuthWithDeps(eventRegistrationHooksDeps);
524
+ }
525
+ function usePortalAuthWithDeps(deps) {
526
+ const api = deps.useBlockApi();
521
527
  const [authState, setAuthState] = useState("checking");
522
528
  const [profile, setProfile] = useState(null);
523
529
  useEffect(() => {
@@ -565,7 +571,10 @@ function usePortalAuth() {
565
571
  };
566
572
  }
567
573
  function useEligibility(params) {
568
- const api = useBlockApi();
574
+ return useEligibilityWithDeps(params, eventRegistrationHooksDeps);
575
+ }
576
+ function useEligibilityWithDeps(params, deps) {
577
+ const api = deps.useBlockApi();
569
578
  const ticketSelectionsKey = JSON.stringify(normalizeTicketSelectionLines(params.ticketSelections));
570
579
  const [state, dispatch] = useReducer(
571
580
  eligibilityLookupReducer,
@@ -634,7 +643,16 @@ function useExistingEventRegistration({
634
643
  isAuthenticated,
635
644
  occurrenceId
636
645
  }) {
637
- const api = useBlockApi();
646
+ return useExistingEventRegistrationWithDeps(
647
+ { isAuthenticated, occurrenceId },
648
+ eventRegistrationHooksDeps
649
+ );
650
+ }
651
+ function useExistingEventRegistrationWithDeps({
652
+ isAuthenticated,
653
+ occurrenceId
654
+ }, deps) {
655
+ const api = deps.useBlockApi();
638
656
  const [state, dispatch] = useReducer(
639
657
  existingRegistrationLookupReducer,
640
658
  initialExistingRegistrationLookupState
@@ -841,7 +859,7 @@ var EventSelectionStep = ({
841
859
  }) => {
842
860
  const selectionMode = getEventSelectionMode(events);
843
861
  const isDateSelection = selectionMode === "date";
844
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
862
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
845
863
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: isDateSelection ? "Choose a date" : "Select an event" }),
846
864
  /* @__PURE__ */ jsx("div", { className: "er-event-grid", children: events.map((event) => {
847
865
  const isSelected = selectedEvent?.publicEventId === event.publicEventId;
@@ -898,7 +916,7 @@ function getEventAttendanceModeLabel(mode) {
898
916
  function TicketCounter(props) {
899
917
  const { ticketsCount, maxAllowed, label, onTicketsChange } = props;
900
918
  const minAllowed = props.minAllowed ?? 1;
901
- return /* @__PURE__ */ jsxs("div", { className: "er-row er-counter", children: [
919
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-row er-row er-counter", children: [
902
920
  /* @__PURE__ */ jsx(
903
921
  "button",
904
922
  {
@@ -970,9 +988,6 @@ function SlidingScaleAmountField(props) {
970
988
  }
971
989
  function TicketTypeQuantityRows(props) {
972
990
  const totalSelectedQuantity = getTicketSelectionTotal(props.ticketSelections);
973
- const selectedTicketTypes = props.ticketTypes.filter(
974
- (ticketType) => getTicketLineQuantity(props.ticketSelections, ticketType.id) > 0
975
- );
976
991
  return /* @__PURE__ */ jsxs("div", { className: "er-ticket-lines", children: [
977
992
  /* @__PURE__ */ jsx("div", { className: "er-ticket-line-list", role: "list", "aria-label": "Tickets", children: props.ticketTypes.map((ticketType) => {
978
993
  const quantity = getTicketLineQuantity(props.ticketSelections, ticketType.id);
@@ -1031,22 +1046,7 @@ function TicketTypeQuantityRows(props) {
1031
1046
  availabilityLabel: props.availableSpots != null ? `${props.availableSpots} spots available` : null
1032
1047
  }
1033
1048
  ),
1034
- selectedTicketTypes.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "er-ticket-line-summary", "aria-live": "polite", children: [
1035
- /* @__PURE__ */ jsxs("div", { className: "er-ticket-line-summary-title", children: [
1036
- totalSelectedQuantity,
1037
- " ticket",
1038
- totalSelectedQuantity === 1 ? "" : "s",
1039
- " selected"
1040
- ] }),
1041
- /* @__PURE__ */ jsx("ul", { className: "er-ticket-line-summary-list", children: selectedTicketTypes.map((ticketType) => {
1042
- const quantity = getTicketLineQuantity(props.ticketSelections, ticketType.id);
1043
- return /* @__PURE__ */ jsxs("li", { children: [
1044
- quantity,
1045
- " x ",
1046
- ticketType.name
1047
- ] }, ticketType.id);
1048
- }) })
1049
- ] }) : props.hasAvailableTicketTypes ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "Choose at least one ticket to continue." }) : /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." })
1049
+ totalSelectedQuantity === 0 && props.hasAvailableTicketTypes ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "Choose at least one ticket to continue." }) : totalSelectedQuantity === 0 ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." }) : null
1050
1050
  ] });
1051
1051
  }
1052
1052
  function getAttendanceModeDetail(attendanceMode) {
@@ -1141,7 +1141,7 @@ var TicketSelectionStep = ({
1141
1141
  });
1142
1142
  const eventAvailabilityLabel = !canJoinWaitlist && event?.availableSpots != null ? `${event.availableSpots} spots available` : null;
1143
1143
  if (deliveryMode === "hybrid" && !selectedAttendanceMode) {
1144
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1144
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1145
1145
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "How will you attend?" }),
1146
1146
  /* @__PURE__ */ jsx(
1147
1147
  AttendanceModeTiles,
@@ -1155,12 +1155,12 @@ var TicketSelectionStep = ({
1155
1155
  ] });
1156
1156
  }
1157
1157
  if (isSoldOut && !canJoinWaitlist) {
1158
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1158
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1159
1159
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Sold Out" }),
1160
1160
  /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "Sorry you missed out! This event is fully booked." })
1161
1161
  ] });
1162
1162
  }
1163
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1163
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1164
1164
  deliveryMode === "hybrid" ? /* @__PURE__ */ jsxs(Fragment, { children: [
1165
1165
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "How will you attend?" }),
1166
1166
  /* @__PURE__ */ jsx(
@@ -1354,7 +1354,7 @@ var AttendeeDetailsStep = ({
1354
1354
  messageId: emailErrorId
1355
1355
  });
1356
1356
  const showGuestSection = requireGuestDetails && ticketsCount > 1 && onGuestsChange;
1357
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1357
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1358
1358
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Your Information" }),
1359
1359
  /* @__PURE__ */ jsxs("div", { children: [
1360
1360
  /* @__PURE__ */ jsxs("div", { className: "er-field", children: [
@@ -1448,7 +1448,7 @@ var AttendeeDetailsStep = ({
1448
1448
  var MembershipHero = ({
1449
1449
  membershipName
1450
1450
  }) => {
1451
- return /* @__PURE__ */ jsx("div", { className: "er-stack", children: /* @__PURE__ */ jsxs("div", { className: "er-booking-mode-hero", children: [
1451
+ return /* @__PURE__ */ jsx("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsxs("div", { className: "er-booking-mode-hero", children: [
1452
1452
  /* @__PURE__ */ jsx("div", { className: "er-booking-mode-hero-icon", children: /* @__PURE__ */ jsx(Sparkles, { size: 20, fill: "currentColor", "aria-hidden": "true" }) }),
1453
1453
  /* @__PURE__ */ jsxs("div", { className: "er-booking-mode-hero-content", children: [
1454
1454
  /* @__PURE__ */ jsxs("h3", { className: "er-booking-mode-hero-title", children: [
@@ -1459,51 +1459,6 @@ var MembershipHero = ({
1459
1459
  ] })
1460
1460
  ] }) });
1461
1461
  };
1462
- function SelectableOptionCard(props) {
1463
- const {
1464
- baseClassName,
1465
- selectedClassName,
1466
- disabledClassName,
1467
- iconClassName,
1468
- labelClassName,
1469
- detailClassName,
1470
- icon,
1471
- label,
1472
- detail,
1473
- selected,
1474
- disabled,
1475
- tooltip,
1476
- extraClassNames = [],
1477
- onClick,
1478
- renderCheck,
1479
- renderDisabledTooltip
1480
- } = props;
1481
- const isSelected = selected && !disabled;
1482
- const className = [
1483
- baseClassName,
1484
- isSelected && selectedClassName,
1485
- disabled && disabledClassName,
1486
- ...extraClassNames
1487
- ].filter(Boolean).join(" ");
1488
- const showNativeTitle = Boolean(tooltip) && !(disabled && renderDisabledTooltip);
1489
- return /* @__PURE__ */ jsxs(
1490
- "button",
1491
- {
1492
- type: "button",
1493
- className,
1494
- onClick: disabled ? void 0 : onClick,
1495
- title: showNativeTitle ? tooltip : void 0,
1496
- "aria-disabled": disabled || void 0,
1497
- children: [
1498
- /* @__PURE__ */ jsx("div", { className: iconClassName, children: icon }),
1499
- /* @__PURE__ */ jsx("div", { className: labelClassName, children: label }),
1500
- /* @__PURE__ */ jsx("div", { className: detailClassName, children: detail }),
1501
- isSelected && renderCheck?.(),
1502
- disabled && tooltip && renderDisabledTooltip?.(tooltip)
1503
- ]
1504
- }
1505
- );
1506
- }
1507
1462
 
1508
1463
  // ../blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.ts
1509
1464
  var DEFAULT_EVENT_DIRECT_PAYMENT_OPTION = {
@@ -1585,7 +1540,7 @@ function resolveEventRegistrationDirectPaymentSelection(input) {
1585
1540
  };
1586
1541
  }
1587
1542
  function PaymentCheckIcon() {
1588
- return /* @__PURE__ */ jsx("div", { className: "er-check", children: /* @__PURE__ */ jsx(CheckIcon, {}) });
1543
+ return /* @__PURE__ */ jsx("div", { className: "rb-option-check er-check", children: /* @__PURE__ */ jsx(CheckIcon, {}) });
1589
1544
  }
1590
1545
  function PaymentTile({
1591
1546
  icon,
@@ -1722,25 +1677,25 @@ var PaymentSelectionStep = ({
1722
1677
  getButtonText
1723
1678
  ]);
1724
1679
  if (eligibilityLoading) {
1725
- return /* @__PURE__ */ jsx("div", { className: "er-stack", children: /* @__PURE__ */ jsxs("div", { className: "er-center", children: [
1680
+ return /* @__PURE__ */ jsx("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsxs("div", { className: "er-center", children: [
1726
1681
  /* @__PURE__ */ jsx(SpinnerNode, { size: "lg", srLabel: "Checking payment options" }),
1727
1682
  /* @__PURE__ */ jsx("p", { className: "er-text--muted", children: "Checking payment options..." })
1728
1683
  ] }) });
1729
1684
  }
1730
1685
  if (eligibilityError) {
1731
- return /* @__PURE__ */ jsx("div", { className: "er-stack", children: /* @__PURE__ */ jsx("div", { className: "er-center", children: /* @__PURE__ */ jsx("p", { className: "er-text er-text--error", children: eligibilityError }) }) });
1686
+ return /* @__PURE__ */ jsx("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsx("div", { className: "er-center", children: /* @__PURE__ */ jsx("p", { className: "er-text er-text--error", children: eligibilityError }) }) });
1732
1687
  }
1733
1688
  if (!eligibility) {
1734
1689
  const missing = [];
1735
1690
  if (!occurrenceId) missing.push("occurrenceId");
1736
1691
  if (!email) missing.push("email");
1737
- return /* @__PURE__ */ jsx("div", { className: "er-stack", children: /* @__PURE__ */ jsx("div", { className: "er-center", children: /* @__PURE__ */ jsxs("p", { className: "er-text er-text--error", children: [
1692
+ return /* @__PURE__ */ jsx("div", { className: "rb-reg-stack er-stack", children: /* @__PURE__ */ jsx("div", { className: "er-center", children: /* @__PURE__ */ jsxs("p", { className: "er-text er-text--error", children: [
1738
1693
  "Unable to determine payment options",
1739
1694
  missing.length > 0 && ` (missing: ${missing.join(", ")})`
1740
1695
  ] }) }) });
1741
1696
  }
1742
1697
  if (eligibility.isFree) {
1743
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1698
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1744
1699
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Payment" }),
1745
1700
  /* @__PURE__ */ jsxs("div", { className: "er-payment-summary", children: [
1746
1701
  /* @__PURE__ */ jsx("p", { className: "er-text er-text--success", children: "This event is free!" }),
@@ -1754,13 +1709,13 @@ var PaymentSelectionStep = ({
1754
1709
  }
1755
1710
  if (!eligibility.eligible) {
1756
1711
  if (eligibility.isFull && !eligibility.canJoinWaitlist) {
1757
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1712
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1758
1713
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Sold Out" }),
1759
1714
  /* @__PURE__ */ jsx("div", { className: "er-center", children: /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "This event is fully booked and there is no waitlist available for this booking." }) })
1760
1715
  ] });
1761
1716
  }
1762
1717
  const shouldPromptLogin = !isAuthenticated && (eligibility.requiresAuthForPasses || eligibility.requiresAuthForMemberships);
1763
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1718
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1764
1719
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: shouldPromptLogin ? "Log In Required" : "Payment Required" }),
1765
1720
  /* @__PURE__ */ jsx("div", { className: "er-center", children: shouldPromptLogin ? /* @__PURE__ */ jsxs(Fragment, { children: [
1766
1721
  /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "Have a pass or membership? Log in to use it." }),
@@ -1786,7 +1741,7 @@ var PaymentSelectionStep = ({
1786
1741
  ] });
1787
1742
  }
1788
1743
  const isMultiTicket = areEntitlementsDisabledForTicketCount(ticketsCount);
1789
- return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
1744
+ return /* @__PURE__ */ jsxs("div", { className: "rb-reg-stack er-stack", children: [
1790
1745
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Payment Options" }),
1791
1746
  /* @__PURE__ */ jsxs("div", { className: "er-payment-tiles", children: [
1792
1747
  canShowDirectPaymentOptions && /* @__PURE__ */ jsx(Fragment, { children: directPaymentOptions.map((option) => /* @__PURE__ */ jsx(
@@ -2161,7 +2116,7 @@ function EventRegistrationWizardActions(props) {
2161
2116
  const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
2162
2117
  const isContinueDisabled = isWaitingForEligibility || isCheckingExistingRegistration || hasExistingRegistration || isSoldOutWithoutWaitlist || ticketTypeSelectionBlocked;
2163
2118
  const continueLabel = isCheckingExistingRegistration ? "Checking registration..." : hasExistingRegistration ? "Already registered" : isSoldOutWithoutWaitlist ? "Sold out" : ticketTypeSelectionBlocked ? "Choose a ticket" : "Continue";
2164
- return /* @__PURE__ */ jsxs("div", { className: "er-actions", children: [
2119
+ return /* @__PURE__ */ jsxs("div", { className: "rb-wizard-actions er-actions", children: [
2165
2120
  !wizard.hasPreSelectedContext && /* @__PURE__ */ jsx("button", { type: "button", onClick: () => wizard.setStep("select-event"), className: "er-back-btn", children: "\u2190 Back" }),
2166
2121
  /* @__PURE__ */ jsx(
2167
2122
  "button",
@@ -2183,7 +2138,7 @@ function EventRegistrationWizardActions(props) {
2183
2138
  const isSoldOut = !hasWaitlistClaim && wizard.eligibility?.isFull === true && wizard.eligibility.canJoinWaitlist !== true;
2184
2139
  const isContinueDisabled = isCheckingEligibility || isSoldOut;
2185
2140
  const continueLabel = isCheckingEligibility ? "Checking availability..." : getDetailsButtonText();
2186
- return /* @__PURE__ */ jsxs("div", { className: "er-actions", children: [
2141
+ return /* @__PURE__ */ jsxs("div", { className: "rb-wizard-actions er-actions", children: [
2187
2142
  /* @__PURE__ */ jsx("button", { type: "button", onClick: () => wizard.setStep(prevStepForDetails), className: "er-back-btn", children: "\u2190 Back" }),
2188
2143
  /* @__PURE__ */ jsx(
2189
2144
  "button",
@@ -2202,7 +2157,7 @@ function EventRegistrationWizardActions(props) {
2202
2157
  const handlePaymentContinue = () => {
2203
2158
  void wizard.handlePaymentSelect();
2204
2159
  };
2205
- return /* @__PURE__ */ jsxs("div", { className: "er-actions", children: [
2160
+ return /* @__PURE__ */ jsxs("div", { className: "rb-wizard-actions er-actions", children: [
2206
2161
  /* @__PURE__ */ jsx("button", { type: "button", onClick: () => wizard.setStep("enter-details"), className: "er-back-btn", children: "\u2190 Back" }),
2207
2162
  status === "ready" && /* @__PURE__ */ jsx(
2208
2163
  "button",
@@ -2258,7 +2213,6 @@ function EventRegistrationSummaryBar(props) {
2258
2213
  const autoAppliedDiscount = wizard.discountCode.trim().length > 0 ? null : wizard.autoAppliedDiscount;
2259
2214
  const autoAppliedDiscountCents = Math.max(0, autoAppliedDiscount?.computedAmountCents ?? 0);
2260
2215
  const discountedTotalCents = Math.max(0, subtotalCents - autoAppliedDiscountCents);
2261
- const selectedLineSummary = (wizard.ticketSelectionSummaryLines ?? []).filter((line) => line.ticketTypeId !== null).map((line) => `${line.quantity} x ${line.label}`).join(", ");
2262
2216
  const selectedDirectPaymentOption = getSelectedDirectPaymentOption({
2263
2217
  wizard,
2264
2218
  totalCents: discountedTotalCents,
@@ -2295,10 +2249,6 @@ function EventRegistrationSummaryBar(props) {
2295
2249
  /* @__PURE__ */ jsx("h4", { className: "er-summary-bar-event", children: summaryTitle }),
2296
2250
  /* @__PURE__ */ jsxs("span", { className: "er-summary-bar-meta", children: [
2297
2251
  summaryDate && formatEventDateTime(summaryDate, { timeZone: summaryTimeZone }),
2298
- selectedLineSummary ? /* @__PURE__ */ jsxs(Fragment, { children: [
2299
- " \xB7 ",
2300
- selectedLineSummary
2301
- ] }) : null,
2302
2252
  wizard.step !== "select-event" && wizard.step !== "select-tickets" && wizard.ticketsCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
2303
2253
  " \xB7 ",
2304
2254
  wizard.ticketsCount,
@@ -2356,8 +2306,14 @@ function validateFormData(formData) {
2356
2306
  }
2357
2307
  return errors;
2358
2308
  }
2309
+ var paymentVerificationDeps = {
2310
+ useBlockApi
2311
+ };
2359
2312
  function usePaymentVerification(config) {
2360
- const api = useBlockApi();
2313
+ return usePaymentVerificationWithDeps(config, paymentVerificationDeps);
2314
+ }
2315
+ function usePaymentVerificationWithDeps(config, deps) {
2316
+ const api = deps.useBlockApi();
2361
2317
  const pollingConfig = useMemo(() => {
2362
2318
  if (!config) return null;
2363
2319
  return {
@@ -2467,7 +2423,13 @@ function useEventRegistrationStripeReturn(options) {
2467
2423
  }
2468
2424
 
2469
2425
  // ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
2426
+ var eventRegistrationSubmitDeps = {
2427
+ savePendingRegistration
2428
+ };
2470
2429
  function useEventRegistrationSubmit(options) {
2430
+ return useEventRegistrationSubmitWithDeps(options, eventRegistrationSubmitDeps);
2431
+ }
2432
+ function useEventRegistrationSubmitWithDeps(options, deps) {
2471
2433
  return async (method, passId, membershipId, selection, submitOptions) => {
2472
2434
  const submitOccurrenceId = options.registrationTarget?.occurrenceId;
2473
2435
  if (!submitOccurrenceId) {
@@ -2556,7 +2518,7 @@ function useEventRegistrationSubmit(options) {
2556
2518
  }
2557
2519
  const siteId = options.api.config.siteId;
2558
2520
  if (siteId && submitOccurrenceId) {
2559
- savePendingRegistration(siteId, submitOccurrenceId, {
2521
+ deps.savePendingRegistration(siteId, submitOccurrenceId, {
2560
2522
  attendeeId: result.attendeeId,
2561
2523
  formData: options.formData,
2562
2524
  ticketSelections,
@@ -2612,6 +2574,15 @@ function useEventRegistrationSubmit(options) {
2612
2574
  }
2613
2575
 
2614
2576
  // ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.ts
2577
+ var eventRegistrationWizardDeps = {
2578
+ usePortalAuth,
2579
+ useEligibility,
2580
+ useExistingEventRegistration,
2581
+ useWaitlistClaim,
2582
+ useEventRegistrationStripeReturn,
2583
+ useEventRegistrationSubmit,
2584
+ useDiscountCodeUi
2585
+ };
2615
2586
  function parseCurrencyInputToCents(value) {
2616
2587
  const trimmed = value.trim();
2617
2588
  if (!trimmed) return null;
@@ -2642,6 +2613,9 @@ function getSlidingScaleSelectionMessage(input) {
2642
2613
  return null;
2643
2614
  }
2644
2615
  function useEventRegistrationWizard(options) {
2616
+ return useEventRegistrationWizardWithDeps(options, eventRegistrationWizardDeps);
2617
+ }
2618
+ function useEventRegistrationWizardWithDeps(options, deps) {
2645
2619
  const api = useBlockApi();
2646
2620
  const registrationEvents = useMemo(
2647
2621
  () => toRegistrationEvents(options.events ?? []),
@@ -2691,8 +2665,8 @@ function useEventRegistrationWizard(options) {
2691
2665
  const [registrationResult, setRegistrationResult] = useState(null);
2692
2666
  const [errorMessage, setErrorMessage] = useState("");
2693
2667
  const [altchaSolution, setAltchaSolution] = useState(null);
2694
- const { authState: portalAuthState, profile: portalProfile } = usePortalAuth();
2695
- const waitlistClaim = useWaitlistClaim();
2668
+ const { authState: portalAuthState, profile: portalProfile } = deps.usePortalAuth();
2669
+ const waitlistClaim = deps.useWaitlistClaim();
2696
2670
  const [showMagicLinkModal, setShowMagicLinkModal] = useState(false);
2697
2671
  const [pendingAttendeeId, setPendingAttendeeId] = useState(null);
2698
2672
  const [paymentStepState, setPaymentStepState] = useState({
@@ -2757,7 +2731,7 @@ function useEventRegistrationWizard(options) {
2757
2731
  if (flowState.ticketsCount === ticketsCount) return;
2758
2732
  dispatchFlow({ type: "set-tickets-count", ticketsCount });
2759
2733
  }, [flowState.ticketsCount, ticketsCount]);
2760
- const eligibilityResult = useEligibility({
2734
+ const eligibilityResult = deps.useEligibility({
2761
2735
  enabled: portalAuthState === "authenticated" || step === "enter-details" || step === "select-payment",
2762
2736
  occurrenceId,
2763
2737
  attendanceMode: selectedAttendanceMode,
@@ -2765,7 +2739,7 @@ function useEventRegistrationWizard(options) {
2765
2739
  selectedSlidingAmount: parseCurrencyInputToCents(selectedSlidingAmountInput),
2766
2740
  email: formData.email
2767
2741
  });
2768
- const existingRegistrationResult = useExistingEventRegistration({
2742
+ const existingRegistrationResult = deps.useExistingEventRegistration({
2769
2743
  isAuthenticated: portalAuthState === "authenticated",
2770
2744
  occurrenceId
2771
2745
  });
@@ -2859,7 +2833,7 @@ function useEventRegistrationWizard(options) {
2859
2833
  useEffect(() => {
2860
2834
  dispatchFlow({ type: "eligibility-updated", eligibility });
2861
2835
  }, [eligibility]);
2862
- const verification = useEventRegistrationStripeReturn({
2836
+ const verification = deps.useEventRegistrationStripeReturn({
2863
2837
  api,
2864
2838
  events: registrationEvents,
2865
2839
  occurrenceId,
@@ -3123,10 +3097,10 @@ function useEventRegistrationWizard(options) {
3123
3097
  if (discountContext?.type !== "event") return void 0;
3124
3098
  return ticketSelectionSubtotalCents;
3125
3099
  }, [discountContext, ticketSelectionSubtotalCents]);
3126
- const discountUi = useDiscountCodeUi({ api, discountContext, subtotalCents: discountSubtotalCents });
3100
+ const discountUi = deps.useDiscountCodeUi({ api, discountContext, subtotalCents: discountSubtotalCents });
3127
3101
  const selectionMethod = paymentSelection.method;
3128
3102
  const shouldShowDiscountToggle = discountContext !== null && discountUi.manualCodeEntryAllowed && (selectionMethod === "stripe" || selectionMethod === "pass_bundle" || selectionMethod === "membership_bundle");
3129
- const handleSubmit = useEventRegistrationSubmit({
3103
+ const handleSubmit = deps.useEventRegistrationSubmit({
3130
3104
  api,
3131
3105
  registrationTarget,
3132
3106
  selectedAttendanceMode,
@@ -3446,7 +3420,7 @@ function EventRegistrationWizard(props) {
3446
3420
  description: wizard.waitlistClaim.loginMessage ?? "Log in to continue with your waitlist claim."
3447
3421
  } : EVENT_PORTAL_AUTH_COPY.membership;
3448
3422
  const showPortalAuthPrompt = waitlistClaimRequiresPortalLogin || wizard.step === "select-tickets" && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && hasPassOrMembershipProducts && summaryEventPricingType !== "free";
3449
- const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsxs("div", { className: `er-container${variant === "overlay" ? " er-container--overlay" : ""}`, children: [
3423
+ const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsxs("div", { className: `rb-reg-surface er-container${variant === "overlay" ? " er-container--overlay" : ""}`, children: [
3450
3424
  isWizardStep && /* @__PURE__ */ jsxs("div", { className: "er-payment-layout er-payment-layout--no-sidebar", children: [
3451
3425
  /* @__PURE__ */ jsxs("div", { className: "er-payment-layout-main", children: [
3452
3426
  totalSteps > 1 && /* @__PURE__ */ jsx(StepIndicator2, { currentStep: currentStepNumber, totalSteps, stepLabels }),
@@ -307,6 +307,13 @@ function assertNever3(value) {
307
307
  // ../core/src/booking-date-time.ts
308
308
  var DEFAULT_LOCALE = "en-US";
309
309
  var FALLBACK_TIMEZONE = "UTC";
310
+ var DEFAULT_BOOKING_DATE_TIME_FORMAT = {
311
+ weekday: "short",
312
+ month: "short",
313
+ day: "numeric",
314
+ hour: "numeric",
315
+ minute: "2-digit"
316
+ };
310
317
  var LOCAL_DATE_PATTERN = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
311
318
  function isValidTimeZone(timeZone) {
312
319
  try {
@@ -509,13 +516,14 @@ function formatBookingTime(input, format = {
509
516
  format
510
517
  });
511
518
  }
512
- function formatBookingDateTime(input, format = {
513
- weekday: "short",
514
- month: "short",
515
- day: "numeric",
516
- hour: "numeric",
517
- minute: "2-digit"
518
- }) {
519
+ function formatBookingDateTime(input, format = DEFAULT_BOOKING_DATE_TIME_FORMAT) {
520
+ if (format === DEFAULT_BOOKING_DATE_TIME_FORMAT) {
521
+ return `${formatBookingDate(input, {
522
+ weekday: "short",
523
+ month: "short",
524
+ day: "numeric"
525
+ })}, ${formatBookingTime(input)}`;
526
+ }
519
527
  return formatBookingInstant(input.startsAt, {
520
528
  locale: input.locale,
521
529
  timeZone: input.timeZone,
@@ -119,6 +119,10 @@ var BOOKINGS = {
119
119
  path: "/public/bookings/availability/slots",
120
120
  method: "GET"
121
121
  },
122
+ getWeeklySlotAvailability: {
123
+ path: "/public/bookings/weekly-slot-availability",
124
+ method: "GET"
125
+ },
122
126
  getAvailableDates: {
123
127
  path: "/public/bookings/availability/dates",
124
128
  method: "GET"
@@ -661,6 +665,18 @@ function createBlockApi(config) {
661
665
  }
662
666
  });
663
667
  },
668
+ async getWeeklySlotAvailability(params) {
669
+ const sid = requireSiteId();
670
+ return request(BOOKINGS.getWeeklySlotAvailability, {
671
+ query: {
672
+ siteId: sid,
673
+ serviceId: params.serviceId,
674
+ resourceId: params.resourceId,
675
+ horizonWeeks: params.horizonWeeks,
676
+ timezone: params.timezone
677
+ }
678
+ });
679
+ },
664
680
  async getAvailableDates(params) {
665
681
  const sid = requireSiteId();
666
682
  return request(BOOKINGS.getAvailableDates, {
@@ -1185,6 +1201,7 @@ function FeedbackMessage({
1185
1201
  tone,
1186
1202
  children,
1187
1203
  className,
1204
+ id,
1188
1205
  title,
1189
1206
  titleClassName,
1190
1207
  bodyClassName,
@@ -1196,6 +1213,7 @@ function FeedbackMessage({
1196
1213
  return /* @__PURE__ */ jsxs(
1197
1214
  "div",
1198
1215
  {
1216
+ id,
1199
1217
  className,
1200
1218
  "data-feedback-tone": tone,
1201
1219
  role,
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { useBlockApi } from './chunk-TNGL2WJF.mjs';
3
- import { themeButtonClassName, assertNever } from './chunk-GWCRCJLB.mjs';
4
- import { resolvePlanningDateInput, formatBookingPriceDisplay } from './chunk-PCHACQEB.mjs';
2
+ import { useBlockApi } from './chunk-IOAHWAQG.mjs';
3
+ import { themeButtonClassName, assertNever } from './chunk-CYJ3MUFP.mjs';
4
+ import { resolvePlanningDateInput, formatBookingPriceDisplay } from './chunk-IIUIKJ4K.mjs';
5
5
  import { useState, useReducer, useSyncExternalStore, useEffect } from 'react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
7
7
 
@@ -373,6 +373,9 @@ function getWaitlistClaimTokenFromUrl() {
373
373
  const token = new URLSearchParams(window.location.search).get("waitlist_claim")?.trim() ?? "";
374
374
  return token.length > 0 ? token : null;
375
375
  }
376
+ var useWaitlistClaimDeps = {
377
+ useBlockApi
378
+ };
376
379
  function subscribeToWaitlistClaimToken(callback) {
377
380
  if (typeof window === "undefined") {
378
381
  return () => {
@@ -388,7 +391,10 @@ function getWaitlistClaimTokenSnapshot() {
388
391
  return getWaitlistClaimTokenFromUrl();
389
392
  }
390
393
  function useWaitlistClaim() {
391
- const api = useBlockApi();
394
+ return useWaitlistClaimWithDeps(useWaitlistClaimDeps);
395
+ }
396
+ function useWaitlistClaimWithDeps(deps) {
397
+ const api = deps.useBlockApi();
392
398
  const token = useSyncExternalStore(
393
399
  subscribeToWaitlistClaimToken,
394
400
  getWaitlistClaimTokenSnapshot,
@@ -1,4 +1,4 @@
1
- import { clsx_default } from './chunk-PCHACQEB.mjs';
1
+ import { clsx_default } from './chunk-IIUIKJ4K.mjs';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
 
4
4
  function resolveColorStyle(color) {
@@ -1,13 +1,13 @@
1
1
  "use client";
2
- import { addPassToCommerceCart, useCommerceCart } from './chunk-H7A6PUGM.mjs';
3
- import { CarouselNodeClient } from './chunk-JNE6UI6U.mjs';
2
+ import { addPassToCommerceCart, useCommerceCart } from './chunk-ZU65LTI3.mjs';
3
+ import { CarouselNodeClient } from './chunk-H3H3ODO7.mjs';
4
4
  import { buildRouteIslandApiConfig } from './chunk-L4J5Y62O.mjs';
5
- import { useDiscountCodeUi, createBodyThemePortalRoot, consumeSearchParams, scrollToBlock, TerminalPanel, StateIcon, CheckIcon, CrossIcon, ActionRow, DiscountCodeDisclosure, consumeSearchParam, buildCheckoutReturnUrls } from './chunk-A3YN7M3G.mjs';
5
+ import { useDiscountCodeUi, createBodyThemePortalRoot, consumeSearchParams, scrollToBlock, TerminalPanel, StateIcon, CheckIcon, CrossIcon, ActionRow, DiscountCodeDisclosure, consumeSearchParam, buildCheckoutReturnUrls } from './chunk-CLZ7NBSP.mjs';
6
6
  import { ModalShell, resolveDedicatedCheckoutPath } from './chunk-WBQG7VJA.mjs';
7
- import { useBlockApi, FeedbackMessage, BlockApiProvider, discountAvailabilityHasDiscounts, discountAvailabilityAllowsManualEntry, getAutoAppliedDiscountPreview } from './chunk-TNGL2WJF.mjs';
7
+ import { useBlockApi, FeedbackMessage, BlockApiProvider, discountAvailabilityHasDiscounts, discountAvailabilityAllowsManualEntry, getAutoAppliedDiscountPreview } from './chunk-IOAHWAQG.mjs';
8
8
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
9
- import { themeButtonClassName, formatCommercePrice, formatInterval, getShopDisplayForItems, deriveCommerceCheckoutState, buildProductDetailDisplay, productItemKey, buildProductCartItem, buildProductCardDisplay, assertNever as assertNever$1, reportWorkflowError, clearWorkflowFeedback, unwrapRichTextRoot, createRichTextDocFromMarkdown, isRecord } from './chunk-GWCRCJLB.mjs';
10
- import { assertNever, ok, err, getCurrentResolveImageUrlContext, resolveImageUrlWithContext, ImagePresets } from './chunk-PCHACQEB.mjs';
9
+ import { themeButtonClassName, formatCommercePrice, formatInterval, getShopDisplayForItems, deriveCommerceCheckoutState, buildProductDetailDisplay, productItemKey, buildProductCartItem, buildProductCardDisplay, assertNever as assertNever$1, reportWorkflowError, clearWorkflowFeedback, unwrapRichTextRoot, createRichTextDocFromMarkdown, isRecord } from './chunk-CYJ3MUFP.mjs';
10
+ import { assertNever, ok, err, getCurrentResolveImageUrlContext, resolveImageUrlWithContext, ImagePresets } from './chunk-IIUIKJ4K.mjs';
11
11
  import * as React3 from 'react';
12
12
  import React3__default, { useState, useRef, useCallback, useEffect } from 'react';
13
13
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { formatPrice } from './chunk-A3YN7M3G.mjs';
3
- import { assertNever } from './chunk-GWCRCJLB.mjs';
4
- import { resolveFlexibleBalanceInitialPaymentCents, resolveFlexibleBalanceDueAt, getBookingInstalmentDepositRefundability, splitAmountWithRemainderInFirst, addIntervalPreservingMonthAnchor, clampConfiguredAmount, getBookingInstalmentPlanIntervalCount, omitZeroAmountFutureRows } from './chunk-PCHACQEB.mjs';
2
+ import { formatPrice } from './chunk-CLZ7NBSP.mjs';
3
+ import { assertNever } from './chunk-CYJ3MUFP.mjs';
4
+ import { resolveFlexibleBalanceInitialPaymentCents, resolveFlexibleBalanceDueAt, getBookingInstalmentDepositRefundability, splitAmountWithRemainderInFirst, addIntervalPreservingMonthAnchor, clampConfiguredAmount, getBookingInstalmentPlanIntervalCount, omitZeroAmountFutureRows } from './chunk-IIUIKJ4K.mjs';
5
5
  import { useReducer, useRef, useCallback, useEffect } from 'react';
6
6
 
7
7
  // ../blocks/src/system/runtime/shared/bookingPaymentOptionCopy.ts
@@ -1,4 +1,4 @@
1
- import { EMPTY_COMMERCE_CART_STATE, parseStoredCommerceCartState, reduceCommerceCart, buildPassCartItem } from './chunk-GWCRCJLB.mjs';
1
+ import { EMPTY_COMMERCE_CART_STATE, parseStoredCommerceCartState, reduceCommerceCart, buildPassCartItem } from './chunk-CYJ3MUFP.mjs';
2
2
  import * as React from 'react';
3
3
 
4
4
  var EMPTY_STATE = EMPTY_COMMERCE_CART_STATE;