@riverbankcms/sdk 0.146.0 → 0.147.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 (195) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{PreviewEditorSidebar-kg2r2Fyi.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
  3. package/dist/{PreviewEditorUI-sWMLp5dT.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-Cg51xq1w.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-h2ti3Hch.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +39 -12
  6. package/dist/{SiteChromeCustomizeContext-DEACFH9m.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +2499 -1682
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +18 -0
  9. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  10. package/dist/_dts/api/src/bookingConfig.d.ts +16 -0
  11. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -13
  12. package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
  13. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  14. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  15. package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
  16. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  17. package/dist/_dts/api/src/bookings.d.ts +1 -0
  18. package/dist/_dts/api/src/endpoints.d.ts +587 -561
  19. package/dist/_dts/api/src/eventManagementContracts.d.ts +23 -8
  20. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +1 -1
  21. package/dist/_dts/api/src/index.d.ts +3 -2
  22. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  23. package/dist/_dts/api/src/launchReadiness.d.ts +1 -6
  24. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  25. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  26. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +15 -0
  27. package/dist/_dts/api/src/occurrenceScheduling.d.ts +19 -0
  28. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
  29. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  30. package/dist/_dts/api/src/sdk-event-upsert.d.ts +15 -0
  31. package/dist/_dts/api/src/sdkCourseBooking.d.ts +4 -4
  32. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  33. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -18
  34. package/dist/_dts/api/src/siteOnboarding.d.ts +2 -14
  35. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  36. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
  37. package/dist/_dts/blocks/src/index.d.ts +1 -1
  38. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +22 -4
  39. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  40. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  41. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
  42. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
  43. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
  44. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
  45. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
  46. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  51. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  53. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  54. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
  56. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
  59. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  63. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
  64. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
  67. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +2 -4
  68. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -0
  69. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  70. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  71. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  72. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  73. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  74. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  75. package/dist/_dts/core/src/index.d.ts +1 -1
  76. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  77. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  78. package/dist/_dts/core/src/mailing-list-submission.d.ts +6 -0
  79. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  80. package/dist/_dts/core/src/participants.d.ts +0 -38
  81. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +102 -22
  82. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  83. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  84. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +4 -3
  85. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  86. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
  87. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  88. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -2
  89. package/dist/_dts/sdk/src/version.d.ts +1 -1
  90. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  92. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  93. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  95. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  96. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  97. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  98. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  99. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  100. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  101. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  102. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  103. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  104. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  105. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  106. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  107. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  108. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  109. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  110. package/dist/_dts/ui/src/badge.d.ts +2 -1
  111. package/dist/_dts/ui/src/button.d.ts +1 -1
  112. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  113. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  114. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  115. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  116. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  117. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  118. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  119. package/dist/_dts/ui/src/index.d.ts +4 -1
  120. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  121. package/dist/_dts/ui/src/popover.d.ts +7 -1
  122. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  123. package/dist/_dts/ui/src/surface.d.ts +1 -1
  124. package/dist/client/{BookingConsentAgreement-BQKL045f.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
  125. package/dist/client/{CheckboxChoice--W2n6yKs.mjs → CheckboxChoice-B33MqoUo.mjs} +1 -1
  126. package/dist/client/{DiscountCodeDisclosure-CsOtjFY7.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
  127. package/dist/client/{EventCombined.client-BdRjVbhH.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
  128. package/dist/client/{EventListing.client-DBxC6xOU.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
  129. package/dist/client/{LeafletStaticMap-mHEJKrTs.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
  130. package/dist/client/{scrollToBlock-BNgaEUpo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
  131. package/dist/client/{ThemedButton-CE5KYT6z.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
  132. package/dist/client/{accordion-BEQNSptH.mjs → accordion-CoT5g7zo.mjs} +1 -1
  133. package/dist/client/{bookingForm-AMr-s5vw.mjs → bookingForm-BWxB46xD.mjs} +226 -106
  134. package/dist/client/bookings.mjs +367 -188
  135. package/dist/client/{carousel-Bbt_QgJy.mjs → carousel-DtNYWFd3.mjs} +2 -2
  136. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  137. package/dist/client/{cart-CnWi30zJ.mjs → cart-z4qZih1Y.mjs} +3 -3
  138. package/dist/client/{checkout-f3nkWgd4.mjs → checkout-DpL7euFH.mjs} +3 -3
  139. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
  140. package/dist/client/client.mjs +2125 -1420
  141. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  142. package/dist/client/{context-Bc8T6pCe.mjs → context-C8TinPJc.mjs} +1 -1
  143. package/dist/client/{dates-DUsCEzLb.mjs → dates-vwwxTeB0.mjs} +2 -2
  144. package/dist/client/{eventCalendar-CKwgXui5.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
  145. package/dist/client/{eventCombined-CBAOSTGR.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
  146. package/dist/client/{eventDetails-Dh-_WiBD.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
  147. package/dist/client/{eventListing-CA3frIH5.mjs → eventListing-DajjWgOv.mjs} +4 -4
  148. package/dist/client/{eventRegistration-BHtsgdcg.mjs → eventRegistration-DMq9gMA-.mjs} +109 -41
  149. package/dist/client/{form-C2h3YAcg.mjs → form-Qf6qTbos.mjs} +5 -5
  150. package/dist/client/{headerSection-lwMuMTH9.mjs → headerSection-D7qJrqFX.mjs} +3 -3
  151. package/dist/client/hooks.mjs +661 -116
  152. package/dist/client/{locationMap-DJ2bLODV.mjs → locationMap-CCF9-t_0.mjs} +4 -4
  153. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  154. package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
  155. package/dist/client/{newsletterForm-8Pu5K32g.mjs → newsletterForm-DzCLSP4S.mjs} +6 -6
  156. package/dist/client/{pricing-HHx3IgBz.mjs → pricing-Cgxv2KLC.mjs} +1 -1
  157. package/dist/client/{productDetail-C_1odnAf.mjs → productDetail-ru9w5GHx.mjs} +3 -3
  158. package/dist/client/{productList-CtCv-Nmx.mjs → productList-zaapKSl-.mjs} +3 -3
  159. package/dist/client/{propsDecoder-Dcgsncxb.mjs → propsDecoder-CwvvNOHx.mjs} +52 -6
  160. package/dist/client/rendering/client.mjs +951 -369
  161. package/dist/client/rendering/islands.mjs +19 -19
  162. package/dist/client/rendering.mjs +2153 -1393
  163. package/dist/client/{routeIslandApiConfig-CWLP7wu3.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
  164. package/dist/client/{shop-commerce-B88zmWWo.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
  165. package/dist/client/{shop-commerce-store-DtSfkKuX.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
  166. package/dist/client/{shop-DQXrQ8kJ.mjs → shop-mktkXvbV.mjs} +7 -7
  167. package/dist/client/{shopShared-cuaONpkJ.mjs → shopShared-TqExh235.mjs} +5 -5
  168. package/dist/client/{useEventFilters-Bukew6Gb.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
  169. package/dist/preview-next/before-render.mjs +122 -50
  170. package/dist/preview-next/client/runtime.mjs +4 -4
  171. package/dist/preview-next/editor-base.css +53 -2
  172. package/dist/preview-next/editor-chrome.css +7 -4
  173. package/dist/preview-next/keepAlive.mjs +122 -50
  174. package/dist/preview-next/middleware.mjs +122 -50
  175. package/dist/{previewAuthStore-h5IgbSp4.mjs → previewAuthStore-C_EHQ5XA.mjs} +122 -50
  176. package/dist/{sdk-runtime-DTc1uIXn.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
  177. package/dist/{separator-BpHS1KZK.mjs → separator-C9qDP95Z.mjs} +1 -1
  178. package/dist/server/components.mjs +25345 -24942
  179. package/dist/server/config-validation.mjs +711 -163
  180. package/dist/server/config.mjs +711 -163
  181. package/dist/server/data.mjs +709 -162
  182. package/dist/server/index.mjs +123 -51
  183. package/dist/server/navigation.mjs +13 -2
  184. package/dist/server/next.mjs +4538 -4169
  185. package/dist/server/page-converter.mjs +107 -64
  186. package/dist/server/prebuild.mjs +1 -1
  187. package/dist/server/rendering/server.mjs +2509 -2104
  188. package/dist/server/rendering.mjs +25526 -25104
  189. package/dist/server/routing.mjs +750 -289
  190. package/dist/server/server.mjs +671 -148
  191. package/dist/server/theme-bridge.mjs +66 -17
  192. package/dist/server/theme.mjs +5 -1
  193. package/dist/styles/index.css +32 -4
  194. package/package.json +1 -1
  195. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
@@ -124,13 +124,16 @@ const SURFACE_FOREGROUND_CSS_VARS = {
124
124
  text: "--rb-surface-text-color",
125
125
  heading: "--rb-surface-heading-color",
126
126
  link: "--rb-surface-link-color",
127
+ linkHover: "--rb-surface-link-hover-color",
127
128
  supporting: "--rb-surface-supporting-color"
128
129
  };
129
130
  const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
131
+ const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
130
132
  const DEFAULT_ROLE_FALLBACKS = {
131
133
  text: DEFAULT_SURFACE_TEXT_COLOR,
132
134
  heading: DEFAULT_SURFACE_TEXT_COLOR,
133
- link: "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))",
135
+ link: DEFAULT_SURFACE_LINK_COLOR,
136
+ linkHover: DEFAULT_SURFACE_LINK_COLOR,
134
137
  supporting: "rgb(var(--tb-mutedText, 100 116 139))"
135
138
  };
136
139
  function requireSurfaceColorValue(role, value) {
@@ -142,6 +145,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
142
145
  const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
143
146
  const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
144
147
  if (role === "text") return `var(${roleVariable}, ${fallback})`;
148
+ if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
145
149
  return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
146
150
  }
147
151
  function surfaceForegroundValueWithOpacity(role, opacityPercent) {
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { H as calendarWindowPageSchema } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { H as calendarWindowPageSchema } from "./propsDecoder-CwvvNOHx.mjs";
3
3
  import { createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/api/deduplication.ts
@@ -1,5 +1,5 @@
1
- import { $t as formatBookingDateParts, Qt as formatBookingDate, cn as toBookingTimeZone, dt as resolveRuntimeEventDestination, ln as toScheduledBookingDateRange, nn as formatBookingTime, un as toScheduledBookingDateTime, xn as assertNever } from "./propsDecoder-Dcgsncxb.mjs";
2
- import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-HHx3IgBz.mjs";
1
+ import { $t as formatBookingDate, Sn as assertNever, dn as toScheduledBookingDateTime, dt as resolveRuntimeEventDestination, en as formatBookingDateParts, ln as toBookingTimeZone, rn as formatBookingTime, un as toScheduledBookingDateRange } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-Cgxv2KLC.mjs";
3
3
  //#region ../blocks/src/system/runtime/nodes/events/domain/cta.ts
4
4
  /**
5
5
  * Booking call-to-action resolution for events: where an event links to and
@@ -1,15 +1,15 @@
1
1
  "use client";
2
- import { O as clsx } from "./colorStyles-CuJBiS-1.mjs";
3
- import { A as buildEventCalendarListingRender, W as resolveCalendarReadProfile, at as getDayOfWeek, ct as isSameCalendarDay, et as MONTH_NAMES, it as formatDateKey, lt as isToday, ot as getOrderedDayNames, q as buildEventRuntimeFilters, st as getWeekCalendarDays, t as defineIslandPropsDecoder, tt as addDays } from "./propsDecoder-Dcgsncxb.mjs";
4
- import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-Bukew6Gb.mjs";
5
- import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-HHx3IgBz.mjs";
6
- import { a as formatTime, c as getLocalDateKey, d as resolveEventLinkProps, l as getLocalMinuteOfDay, o as groupEventsByDate, s as resolveEventTimeZone } from "./dates-DUsCEzLb.mjs";
7
- import { a as WeekAgendaView, c as CalendarDayCell, d as useCalendarEvents, i as useHydrationReady, l as EventModalProvider, o as CalendarNavigationChevron, r as EventModals, s as CalendarDayHeaders, t as EventCombinedClient, u as useEventModal } from "./EventCombined.client-BdRjVbhH.mjs";
8
- import { t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
9
- import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
2
+ import { O as clsx } from "./colorStyles-j5U9v5JA.mjs";
3
+ import { A as buildEventCalendarListingRender, W as resolveCalendarReadProfile, at as getDayOfWeek, ct as isSameCalendarDay, et as MONTH_NAMES, it as formatDateKey, lt as isToday, ot as getOrderedDayNames, q as buildEventRuntimeFilters, st as getWeekCalendarDays, t as defineIslandPropsDecoder, tt as addDays } from "./propsDecoder-CwvvNOHx.mjs";
4
+ import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-n_OjkIjX.mjs";
5
+ import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-Cgxv2KLC.mjs";
6
+ import { a as formatTime, c as getLocalDateKey, d as resolveEventLinkProps, l as getLocalMinuteOfDay, o as groupEventsByDate, s as resolveEventTimeZone } from "./dates-vwwxTeB0.mjs";
7
+ import { a as WeekAgendaView, c as CalendarDayCell, d as useCalendarEvents, i as useHydrationReady, l as EventModalProvider, o as CalendarNavigationChevron, r as EventModals, s as CalendarDayHeaders, t as EventCombinedClient, u as useEventModal } from "./EventCombined.client-C0pgma9y.mjs";
8
+ import { t as BlockApiProvider } from "./context-C8TinPJc.mjs";
9
+ import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-DoVIV1Ao.mjs";
10
10
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
11
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
12
- import { n as EventListingController } from "./EventListing.client-DBxC6xOU.mjs";
11
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
12
+ import { n as EventListingController } from "./EventListing.client-4fhLOvHP.mjs";
13
13
  import { useEffect, useId, useMemo, useState } from "react";
14
14
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
15
  //#region ../calendar/src/lane-packing.ts
@@ -1,8 +1,8 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
- import { n as EventCombinedIslandClient } from "./EventCombined.client-BdRjVbhH.mjs";
3
- import { t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { n as EventCombinedIslandClient } from "./EventCombined.client-C0pgma9y.mjs";
3
+ import { t as BlockApiProvider } from "./context-C8TinPJc.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
5
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/rendering/islands/enhancers/eventCombined.tsx
@@ -1,8 +1,8 @@
1
- import { Jt as CANCELLED_SESSION_STATUS, M as resolveEventRegistrationScopedEvents, Yt as resolveWholeSeriesBookingPhase, cn as toBookingTimeZone, dn as formatBookingPriceDisplay, hn as publicEventPricingDisplay, in as getBookingLocalDateKey, mn as publicEventPricingCurrency, pn as isPublicEventPricingOptionDisplayable, t as defineIslandPropsDecoder, un as toScheduledBookingDateTime, vn as publicEventPricingType, yn as formatCurrencyAmount } from "./propsDecoder-Dcgsncxb.mjs";
2
- import { l as formatTotalCapacity, n as formatEventPriceAmount, t as formatEventPrice } from "./pricing-HHx3IgBz.mjs";
3
- import { d as resolveEventLinkProps, r as formatEventDateParts } from "./dates-DUsCEzLb.mjs";
1
+ import { Jt as CANCELLED_SESSION_STATUS, M as resolveEventRegistrationScopedEvents, Yt as resolveWholeSeriesBookingPhase, an as getBookingLocalDateKey, bn as formatCurrencyAmount, dn as toScheduledBookingDateTime, fn as formatBookingPriceDisplay, gn as publicEventPricingDisplay, hn as publicEventPricingCurrency, ln as toBookingTimeZone, mn as isPublicEventPricingOptionDisplayable, t as defineIslandPropsDecoder, yn as publicEventPricingType } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { l as formatTotalCapacity, n as formatEventPriceAmount, t as formatEventPrice } from "./pricing-Cgxv2KLC.mjs";
3
+ import { d as resolveEventLinkProps, r as formatEventDateParts } from "./dates-vwwxTeB0.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as LeafletStaticMap } from "./LeafletStaticMap-mHEJKrTs.mjs";
5
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-DScC4F3w.mjs";
6
6
  import "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region ../blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.ts
@@ -1,8 +1,8 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
- import { t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { t as BlockApiProvider } from "./context-C8TinPJc.mjs";
3
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
4
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
5
- import { t as EventListingClient } from "./EventListing.client-DBxC6xOU.mjs";
4
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
5
+ import { t as EventListingClient } from "./EventListing.client-4fhLOvHP.mjs";
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/rendering/islands/enhancers/eventListing.tsx
@@ -1,21 +1,21 @@
1
1
  "use client";
2
- import { a as resolveBookingPaymentDueNowCents, i as buildBookingPaymentSelectionViewModel, n as StepIndicator$1, o as formatPrice, r as usePolling, t as BookingConsentAgreement } from "./BookingConsentAgreement-BQKL045f.mjs";
3
- import { C as resolveDiscountContext, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber, Qt as formatBookingDate, S as findPreSelectedEvent, T as resolveRegistrationTarget, Vt as assertNever, _ as buildEventRegistrationDisplayFromScopedEvents, _n as publicEventPricingStrategy, b as toWholeSeriesRegistrationEvents, bn as parseCurrencyCode, cn as toBookingTimeZone, en as formatBookingDateTime, ft as groupPublicEventsByRun, gn as publicEventPricingOptions, k as getWizardStepsForContext, mn as publicEventPricingCurrency, nn as formatBookingTime, t as defineIslandPropsDecoder, un as toScheduledBookingDateTime, v as getRegistrationStartAt, vn as publicEventPricingType, w as resolveEventRequiresPayment, x as findEventByOccurrenceId, y as toRegistrationEvents, yn as formatCurrencyAmount } from "./propsDecoder-Dcgsncxb.mjs";
4
- import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-HHx3IgBz.mjs";
5
- import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
2
+ import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as BookingConsentAgreement, o as resolveBookingPaymentDueNowCents, r as StepIndicator$1, s as formatPrice, t as BookingMailingListNote } from "./BookingMailingListNote-1n4Ch_u_.mjs";
3
+ import { $t as formatBookingDate, C as resolveDiscountContext, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber, S as findPreSelectedEvent, T as resolveRegistrationTarget, Vt as assertNever, Zt as resolveBookingSignupOffer, _ as buildEventRegistrationDisplayFromScopedEvents, _n as publicEventPricingOptions, b as toWholeSeriesRegistrationEvents, bn as formatCurrencyAmount, dn as toScheduledBookingDateTime, ft as groupPublicEventsByRun, hn as publicEventPricingCurrency, k as getWizardStepsForContext, ln as toBookingTimeZone, rn as formatBookingTime, t as defineIslandPropsDecoder, tn as formatBookingDateTime, v as getRegistrationStartAt, vn as publicEventPricingStrategy, w as resolveEventRequiresPayment, x as findEventByOccurrenceId, xn as parseCurrencyCode, y as toRegistrationEvents, yn as publicEventPricingType } from "./propsDecoder-CwvvNOHx.mjs";
4
+ import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-Cgxv2KLC.mjs";
5
+ import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-C8TinPJc.mjs";
6
6
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
7
- import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-BNgaEUpo.mjs";
8
- import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-CsOtjFY7.mjs";
9
- import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
7
+ import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-CKJtz0mY.mjs";
8
+ import { a as useDiscountCodeUi, i as CheckIcon, n as StateIcon, r as scrollToBlock, t as TerminalPanel } from "./TerminalPanel-B5ZUsYhe.mjs";
9
+ import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-DoVIV1Ao.mjs";
10
10
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
11
- import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
12
- import { t as buildCheckoutReturnUrls } from "./checkoutUrls-CW3-78uu.mjs";
13
- import { t as CheckboxChoice } from "./CheckboxChoice--W2n6yKs.mjs";
11
+ import { i as getFieldValidationControlProps, r as FieldValidationMessage } from "./mailingListSignupCopy-DZSHZrm6.mjs";
12
+ import { t as buildCheckoutReturnUrls } from "./checkoutUrls-BEfR7kVu.mjs";
13
+ import { t as CheckboxChoice } from "./CheckboxChoice-B33MqoUo.mjs";
14
14
  import { t as createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
15
15
  import { n as consumeSearchParams } from "./urlParams-D71VXFGx.mjs";
16
16
  import { t as CrossIcon } from "./CrossIcon-Dn1KRKW5.mjs";
17
17
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
18
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
18
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
19
19
  import { t as createLucideIcon } from "./createLucideIcon-PaLVMov4.mjs";
20
20
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
21
21
  import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
@@ -833,7 +833,8 @@ function createInitialRegistrationFormData() {
833
833
  email: "",
834
834
  phone: "",
835
835
  notes: "",
836
- consentAccepted: false
836
+ consentAccepted: false,
837
+ mailingListOptIn: false
837
838
  };
838
839
  }
839
840
  function validateFormData(formData, requiresConsent = false) {
@@ -1906,7 +1907,10 @@ async function handleCheckoutReturn(options, deps, returnContextRef) {
1906
1907
  }
1907
1908
  const { checkoutAttemptId } = command;
1908
1909
  const pending = deps.getPendingRegistration(siteId, checkoutAttemptId);
1909
- returnContextRef.current = { checkoutAttemptId };
1910
+ returnContextRef.current = {
1911
+ checkoutAttemptId,
1912
+ mailingListSignupNote: pending?.mailingListSignupNote
1913
+ };
1910
1914
  if (pending) restorePendingPresentation(options, pending);
1911
1915
  options.setStep("verifying-payment");
1912
1916
  try {
@@ -1927,7 +1931,10 @@ function completeVerifiedRegistration(options, deps, returnContext) {
1927
1931
  const siteId = options.api.config.siteId;
1928
1932
  const checkoutAttemptId = returnContext?.checkoutAttemptId;
1929
1933
  if (siteId && checkoutAttemptId) deps.clearPendingRegistration(siteId, checkoutAttemptId);
1930
- options.setRegistrationResult({ status: "confirmed" });
1934
+ options.setRegistrationResult({
1935
+ status: "confirmed",
1936
+ mailingListSignupNote: returnContext?.mailingListSignupNote
1937
+ });
1931
1938
  options.setStep("success");
1932
1939
  }
1933
1940
  function useEventRegistrationStripeReturnWithDeps(options, deps) {
@@ -2000,6 +2007,9 @@ function registrationErrorPresentation(error) {
2000
2007
  }
2001
2008
  //#endregion
2002
2009
  //#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
2010
+ function wantsMailingListSignup(options) {
2011
+ return options.mailingListSignup !== null && options.formData.mailingListOptIn === true;
2012
+ }
2003
2013
  function createClientCommandId(cryptoSource = {
2004
2014
  randomUUID: globalThis.crypto.randomUUID?.bind(globalThis.crypto),
2005
2015
  getRandomValues: (bytes) => globalThis.crypto.getRandomValues(bytes)
@@ -2097,7 +2107,8 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2097
2107
  case "paymentStatusRequired":
2098
2108
  options.setPaymentStatusRecovery({
2099
2109
  kind: "ready",
2100
- subject: result.subject
2110
+ subject: result.subject,
2111
+ mailingListSignupNote: result.mailingListSignupNote
2101
2112
  });
2102
2113
  options.setStep("payment-status");
2103
2114
  return {
@@ -2106,14 +2117,15 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2106
2117
  };
2107
2118
  case "checkoutRequired":
2108
2119
  options.setPendingRegistrationReference(result.reference);
2109
- savePendingCheckout(options, deps, prepared, result.submissionId, result.reference);
2120
+ savePendingCheckout(options, deps, prepared, result.submissionId, result.reference, result.mailingListSignupNote);
2110
2121
  options.setStep("redirecting");
2111
2122
  return redirectToCheckout(result.checkoutUrl, submitOptions);
2112
2123
  case "waitlisted":
2113
2124
  options.setRegistrationResult({
2114
2125
  status: "waitlist",
2115
2126
  title: "Added to waitlist",
2116
- message: result.waitlist.message
2127
+ message: result.waitlist.message,
2128
+ mailingListSignupNote: result.mailingListSignupNote
2117
2129
  });
2118
2130
  break;
2119
2131
  case "bookingComplete":
@@ -2121,7 +2133,8 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2121
2133
  options.setPendingRegistrationReference(result.reference);
2122
2134
  options.setRegistrationResult({
2123
2135
  status: "confirmed",
2124
- message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0
2136
+ message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0,
2137
+ mailingListSignupNote: result.mailingListSignupNote
2125
2138
  });
2126
2139
  break;
2127
2140
  }
@@ -2180,7 +2193,7 @@ function resolveSelectionSnapshot(method, passId, membershipId, bundleProductId,
2180
2193
  if (method === "free") return { method };
2181
2194
  throw new Error("Choose an available payment option.");
2182
2195
  }
2183
- function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference) {
2196
+ function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference, mailingListSignupNote) {
2184
2197
  const siteId = options.api.config.siteId;
2185
2198
  if (!siteId) return;
2186
2199
  deps.savePendingRegistration(siteId, checkoutAttemptId, {
@@ -2189,7 +2202,8 @@ function savePendingCheckout(options, deps, prepared, checkoutAttemptId, referen
2189
2202
  ticketSelections: prepared.ticketSelections,
2190
2203
  selectedEventId: options.registrationTarget?.selectedEventId ?? null,
2191
2204
  selectedAttendanceMode: options.selectedAttendanceMode,
2192
- paymentSelection: prepared.selectionSnapshot
2205
+ paymentSelection: prepared.selectionSnapshot,
2206
+ mailingListSignupNote
2193
2207
  });
2194
2208
  }
2195
2209
  function redirectToCheckout(checkoutUrl, submitOptions) {
@@ -2203,7 +2217,7 @@ function redirectToCheckout(checkoutUrl, submitOptions) {
2203
2217
  };
2204
2218
  }
2205
2219
  function registrationRequestIntentKey(request) {
2206
- const { registrationCommandId: _command, altchaSolution: _proof, checkout, ...intent } = request;
2220
+ const { registrationCommandId: _command, altchaSolution: _proof, mailingListOptIn: _marketingConsent, checkout, ...intent } = request;
2207
2221
  return JSON.stringify({
2208
2222
  ...intent,
2209
2223
  checkout: checkout ? {
@@ -2228,6 +2242,7 @@ function buildRegistrationRequest(options, prepared, method, passId, membershipI
2228
2242
  phone: options.formData.phone.trim() || void 0,
2229
2243
  notes: options.formData.notes.trim() || void 0,
2230
2244
  consentAccepted: options.formData.consentAccepted,
2245
+ mailingListOptIn: wantsMailingListSignup(options),
2231
2246
  altchaSolution: options.altchaSolution,
2232
2247
  paymentMethod: method,
2233
2248
  customerPassId: method === "pass" ? passId : void 0,
@@ -2462,13 +2477,17 @@ function isCheckableRecovery(state) {
2462
2477
  function assistanceRequired(recovery) {
2463
2478
  return {
2464
2479
  kind: "assistanceRequired",
2465
- subject: recovery.subject
2480
+ subject: recovery.subject,
2481
+ mailingListSignupNote: recovery.mailingListSignupNote
2466
2482
  };
2467
2483
  }
2468
2484
  function applyStatusOutcome(outcome, recovery, setters, setRecovery) {
2469
2485
  if (outcome.kind === "resolved") {
2470
2486
  setters.setPendingRegistrationReference(outcome.reference);
2471
- setters.setRegistrationResult({ status: "confirmed" });
2487
+ setters.setRegistrationResult({
2488
+ status: "confirmed",
2489
+ mailingListSignupNote: recovery.mailingListSignupNote
2490
+ });
2472
2491
  setRecovery(null);
2473
2492
  setters.setStep("success");
2474
2493
  return;
@@ -2597,6 +2616,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
2597
2616
  const paymentSelection = flowState.paymentSelection;
2598
2617
  const [selectedEvent, setSelectedEvent] = useState(preSelectedEvent ?? null);
2599
2618
  const [formData, setFormData] = useState(createInitialRegistrationFormData);
2619
+ const mailingListSignup = resolveBookingSignupOffer(options.mailingList, options.siteName);
2600
2620
  const [errors, setErrors] = useState({});
2601
2621
  const [guests, setGuests] = useState([]);
2602
2622
  const [guestErrors, setGuestErrors] = useState({});
@@ -3043,6 +3063,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
3043
3063
  ticketSelections,
3044
3064
  selectedSlidingAmount,
3045
3065
  formData,
3066
+ mailingListSignup,
3046
3067
  altchaSolution,
3047
3068
  requireGuestDetails,
3048
3069
  guests,
@@ -3139,6 +3160,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
3139
3160
  hasValidTicketSelection,
3140
3161
  eventRequiresPayment,
3141
3162
  formData,
3163
+ mailingListSignup,
3142
3164
  setFormData,
3143
3165
  errors,
3144
3166
  guests,
@@ -4598,13 +4620,31 @@ function NotesField({ id, onChange, value }) {
4598
4620
  })]
4599
4621
  });
4600
4622
  }
4623
+ function MailingListOptInField({ signup, formData, onChange }) {
4624
+ if (!signup) return null;
4625
+ return /* @__PURE__ */ jsxs("div", {
4626
+ className: "er-field",
4627
+ children: [/* @__PURE__ */ jsx(CheckboxChoice, {
4628
+ checked: formData.mailingListOptIn === true,
4629
+ onChange: (event) => onChange({
4630
+ ...formData,
4631
+ mailingListOptIn: event.target.checked
4632
+ }),
4633
+ label: `Email me news and updates from ${signup.siteName}.`,
4634
+ presentation: "row"
4635
+ }), /* @__PURE__ */ jsx("p", {
4636
+ className: "er-text er-text--muted",
4637
+ children: "Optional. You can unsubscribe at any time."
4638
+ })]
4639
+ });
4640
+ }
4601
4641
  /**
4602
4642
  * Attendee Details Step
4603
4643
  *
4604
4644
  * Collects attendee information: name, email, phone, and notes.
4605
4645
  * Validates required fields and displays errors.
4606
4646
  */
4607
- const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent }) => {
4647
+ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent, mailingListSignup }) => {
4608
4648
  const idBase = useId();
4609
4649
  const nameId = `${idBase}-name`;
4610
4650
  const emailId = `${idBase}-email`;
@@ -4713,6 +4753,11 @@ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false,
4713
4753
  placeholder: "(optional)"
4714
4754
  })]
4715
4755
  }),
4756
+ /* @__PURE__ */ jsx(MailingListOptInField, {
4757
+ signup: mailingListSignup,
4758
+ formData,
4759
+ onChange
4760
+ }),
4716
4761
  /* @__PURE__ */ jsx(NotesField, {
4717
4762
  id: notesId,
4718
4763
  value: formData.notes,
@@ -5206,7 +5251,8 @@ function AttendeeDetailsContent(props) {
5206
5251
  guestErrors: wizard.guestErrors,
5207
5252
  guestSectionShake: wizard.guestSectionShake,
5208
5253
  onGuestShakeEnd: wizard.handleGuestShakeEnd,
5209
- consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null
5254
+ consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null,
5255
+ mailingListSignup: wizard.mailingListSignup
5210
5256
  }),
5211
5257
  props.showSpamProtection && /* @__PURE__ */ jsx("div", {
5212
5258
  className: "er-altcha",
@@ -5408,6 +5454,10 @@ function PaymentStatusStep(props) {
5408
5454
  "aria-atomic": "true",
5409
5455
  children: props.state.kind === "checking" ? "Checking payment…" : view.title
5410
5456
  })] }),
5457
+ secondaryBody: props.state.mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
5458
+ note: props.state.mailingListSignupNote,
5459
+ context: "booking"
5460
+ }) : void 0,
5411
5461
  actionsClassName: "er-button-group",
5412
5462
  actions: view.action ? /* @__PURE__ */ jsx("button", {
5413
5463
  type: "button",
@@ -5440,7 +5490,7 @@ function StepIndicator(props) {
5440
5490
  *
5441
5491
  * Displays registration confirmation with a success icon and message.
5442
5492
  */
5443
- const SuccessStep = ({ title, message, variant = "success" }) => {
5493
+ const SuccessStep = ({ title, message, variant = "success", mailingListSignupNote, context = "booking" }) => {
5444
5494
  return /* @__PURE__ */ jsx(TerminalPanel, {
5445
5495
  tone: variant === "info" ? "info" : "success",
5446
5496
  className: "er-center",
@@ -5481,7 +5531,11 @@ const SuccessStep = ({ title, message, variant = "success" }) => {
5481
5531
  })
5482
5532
  }),
5483
5533
  title: title ?? (variant === "info" ? "Already Registered" : "Registration Confirmed!"),
5484
- body: message
5534
+ body: message,
5535
+ secondaryBody: mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
5536
+ note: mailingListSignupNote,
5537
+ context
5538
+ }) : void 0
5485
5539
  });
5486
5540
  };
5487
5541
  //#endregion
@@ -5652,11 +5706,10 @@ function EventRegistrationTerminalState(props) {
5652
5706
  onReturnToPayment: wizard.handleReturnToPayment,
5653
5707
  onReturnToBooking: wizard.handleReturnToBooking
5654
5708
  }) : null;
5655
- case "success": return wizard.registrationResult ? /* @__PURE__ */ jsx(SuccessStep, {
5656
- title: wizard.registrationResult.title,
5657
- variant: wizard.registrationResult.variant,
5658
- message: wizard.registrationResult.message ?? props.successMessage
5659
- }) : null;
5709
+ case "success": return /* @__PURE__ */ jsx(EventRegistrationSuccess, {
5710
+ wizard,
5711
+ fallbackMessage: props.successMessage
5712
+ });
5660
5713
  case "error": return /* @__PURE__ */ jsx(ErrorStep, {
5661
5714
  message: wizard.errorMessage,
5662
5715
  action: wizard.errorAction,
@@ -5669,6 +5722,17 @@ function EventRegistrationTerminalState(props) {
5669
5722
  case "select-payment": return null;
5670
5723
  }
5671
5724
  }
5725
+ function EventRegistrationSuccess(props) {
5726
+ const result = props.wizard.registrationResult;
5727
+ if (!result) return null;
5728
+ return /* @__PURE__ */ jsx(SuccessStep, {
5729
+ title: result.title,
5730
+ variant: result.variant,
5731
+ message: result.message ?? props.fallbackMessage,
5732
+ mailingListSignupNote: result.mailingListSignupNote,
5733
+ context: result.status === "waitlist" ? "waitlist" : "booking"
5734
+ });
5735
+ }
5672
5736
  function EventRegistrationSurface(props) {
5673
5737
  const { wizard } = props;
5674
5738
  const mainRef = useRef(null);
@@ -5864,19 +5928,23 @@ function getWizardStepLabel(input) {
5864
5928
  case "payment-failed": return "";
5865
5929
  }
5866
5930
  }
5931
+ function useConfiguredEventRegistrationWizard(props) {
5932
+ return useEventRegistrationWizard({
5933
+ anchorId: EVENT_REGISTRATION_ANCHOR_ID,
5934
+ occurrenceContext: props.occurrenceContext ?? null,
5935
+ subject: props.subject ?? null,
5936
+ events: props.events ?? [],
5937
+ maxTicketsNum: normalizeEventRegistrationMaxTickets(props.maxTickets ?? "5"),
5938
+ mailingList: props.mailingList,
5939
+ siteName: props.siteName
5940
+ });
5941
+ }
5867
5942
  function EventRegistrationWizard(props) {
5868
- const { occurrenceContext, subject, events, maxTickets = "5", showVenue = true, showCapacity = true, successMessage = "Thank you for registering! Check your email for confirmation details.", buttonText = "Complete Registration", buttonVariant = "primary", className, spamProtectionEnabled, supportEmail } = props;
5869
- const maxTicketsNum = normalizeEventRegistrationMaxTickets(maxTickets);
5943
+ const { occurrenceContext, subject, events, showVenue = true, showCapacity = true, successMessage = "Thank you for registering! Check your email for confirmation details.", buttonText = "Complete Registration", buttonVariant = "primary", className, spamProtectionEnabled, supportEmail } = props;
5870
5944
  const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
5871
5945
  const registrationRootClassName = `event-registration ${className || ""}`;
5872
5946
  const registrationRootRef = React.useRef(null);
5873
- const wizard = useEventRegistrationWizard({
5874
- anchorId: EVENT_REGISTRATION_ANCHOR_ID,
5875
- occurrenceContext: occurrenceContext ?? null,
5876
- subject: subject ?? null,
5877
- events: events ?? [],
5878
- maxTicketsNum
5879
- });
5947
+ const wizard = useConfiguredEventRegistrationWizard(props);
5880
5948
  useEventCheckoutHandoffRestore(wizard.step === "redirecting");
5881
5949
  const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
5882
5950
  const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { O as clsx } from "./colorStyles-CuJBiS-1.mjs";
3
- import { Ut as err, Vt as assertNever, Wt as ok, t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
4
- import { n as useBlockApi, t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
2
+ import { O as clsx } from "./colorStyles-j5U9v5JA.mjs";
3
+ import { Ut as err, Vt as assertNever, Wt as ok, t as defineIslandPropsDecoder } from "./propsDecoder-CwvvNOHx.mjs";
4
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-C8TinPJc.mjs";
5
5
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
- import { t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
6
+ import { t as ThemedButton } from "./ThemedButton-DoVIV1Ao.mjs";
7
7
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
8
- import { t as CheckboxChoice } from "./CheckboxChoice--W2n6yKs.mjs";
8
+ import { t as CheckboxChoice } from "./CheckboxChoice-B33MqoUo.mjs";
9
9
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
10
10
  import { useReducer, useRef, useState } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { j as staticHeaderChromeRuntime, r as buildCartDisplay, t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
3
- import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
2
+ import { j as staticHeaderChromeRuntime, r as buildCartDisplay, t as defineIslandPropsDecoder } from "./propsDecoder-CwvvNOHx.mjs";
3
+ import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-DoVIV1Ao.mjs";
4
4
  import { t as resolveDedicatedCheckoutPath } from "./checkoutRoute-ClwHwYVA.mjs";
5
- import { n as useCommerceCart } from "./shop-commerce-store-DtSfkKuX.mjs";
5
+ import { n as useCommerceCart } from "./shop-commerce-store-B3MCxIBW.mjs";
6
6
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
7
7
  import * as React$1 from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";