@riverbankcms/sdk 0.145.0 → 0.146.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 (159) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +280 -182
  6. package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +1330 -734
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +924 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +84 -0
  9. package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
  10. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +8 -14
  11. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  12. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  13. package/dist/_dts/api/src/communications.d.ts +20 -4
  14. package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
  15. package/dist/_dts/api/src/endpoints.d.ts +223 -88
  16. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  17. package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
  18. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  19. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  20. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  21. package/dist/_dts/api/src/index.d.ts +7 -1
  22. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  23. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  24. package/dist/_dts/api/src/launchReadiness.d.ts +20 -2
  25. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  26. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  27. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +42 -0
  28. package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
  29. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  30. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  31. package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -1
  32. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  33. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  34. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  35. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  36. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  37. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  38. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  39. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  40. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  41. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  42. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -32
  43. package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
  44. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  45. package/dist/_dts/api/src/types.d.ts +7 -1
  46. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  47. package/dist/_dts/blocks/src/index.d.ts +2 -0
  48. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
  49. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
  50. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  51. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  52. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  54. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
  55. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
  56. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +36 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  59. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  60. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  62. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -1
  63. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  65. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  66. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  67. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  68. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
  69. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  70. package/dist/_dts/core/src/editor-state.d.ts +2 -7
  71. package/dist/_dts/core/src/index.d.ts +1 -0
  72. package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
  73. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  74. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  75. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +49 -2
  76. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  77. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  78. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
  79. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  80. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -4
  81. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
  82. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  83. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -2
  84. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -2
  85. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
  86. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  87. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  88. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  89. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
  90. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  91. package/dist/_dts/sdk/src/version.d.ts +1 -1
  92. package/dist/_dts/surfaces/src/index.d.ts +9 -0
  93. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  95. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  96. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  97. package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
  98. package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
  99. package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
  100. package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
  101. package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
  102. package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
  103. package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
  104. package/dist/client/{accordion-BcNF9TjX.mjs → accordion-BEQNSptH.mjs} +1 -1
  105. package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-AMr-s5vw.mjs} +33 -52
  106. package/dist/client/bookings.mjs +48 -46
  107. package/dist/client/{carousel-CTdF6e0V.mjs → carousel-Bbt_QgJy.mjs} +1 -1
  108. package/dist/client/{cart-pGtyf_XU.mjs → cart-CnWi30zJ.mjs} +3 -3
  109. package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-f3nkWgd4.mjs} +3 -3
  110. package/dist/client/client.mjs +1611 -815
  111. package/dist/client/{context-BFeY_Wbm.mjs → context-Bc8T6pCe.mjs} +1 -1
  112. package/dist/client/{dates-BhwVSxDg.mjs → dates-DUsCEzLb.mjs} +2 -3
  113. package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
  114. package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
  115. package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
  116. package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-CA3frIH5.mjs} +4 -4
  117. package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
  118. package/dist/client/{form-Dodt8Y8t.mjs → form-C2h3YAcg.mjs} +135 -104
  119. package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-lwMuMTH9.mjs} +3 -3
  120. package/dist/client/hooks.mjs +489 -65
  121. package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-DJ2bLODV.mjs} +3 -3
  122. package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-8Pu5K32g.mjs} +203 -101
  123. package/dist/client/{pricing-BOU0_Hai.mjs → pricing-HHx3IgBz.mjs} +1 -1
  124. package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-C_1odnAf.mjs} +3 -3
  125. package/dist/client/{productList-D-mItx1n.mjs → productList-CtCv-Nmx.mjs} +3 -3
  126. package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-Dcgsncxb.mjs} +40 -23
  127. package/dist/client/rendering/client.mjs +490 -457
  128. package/dist/client/rendering/islands.mjs +17 -17
  129. package/dist/client/rendering.mjs +1515 -628
  130. package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
  131. package/dist/client/{scrollToBlock-CWs8EIdo.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
  132. package/dist/client/{shop-Dufw7N7o.mjs → shop-DQXrQ8kJ.mjs} +7 -7
  133. package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
  134. package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
  135. package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-cuaONpkJ.mjs} +4 -4
  136. package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
  137. package/dist/preview-next/before-render.mjs +368 -103
  138. package/dist/preview-next/client/runtime.mjs +4 -4
  139. package/dist/preview-next/editor-base.css +11 -0
  140. package/dist/preview-next/keepAlive.mjs +328 -103
  141. package/dist/preview-next/middleware.mjs +329 -103
  142. package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-h5IgbSp4.mjs} +353 -103
  143. package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
  144. package/dist/{separator-EvdCAn4V.mjs → separator-BpHS1KZK.mjs} +1 -1
  145. package/dist/server/components.mjs +1376 -331
  146. package/dist/server/config-validation.mjs +405 -27
  147. package/dist/server/config.mjs +405 -27
  148. package/dist/server/data.mjs +405 -27
  149. package/dist/server/index.mjs +370 -104
  150. package/dist/server/next.mjs +1430 -463
  151. package/dist/server/page-converter.mjs +36 -25
  152. package/dist/server/prebuild.mjs +1 -1
  153. package/dist/server/rendering/server.mjs +1374 -331
  154. package/dist/server/rendering.mjs +1436 -364
  155. package/dist/server/routing.mjs +476 -43
  156. package/dist/server/server.mjs +504 -169
  157. package/dist/server/theme-bridge.mjs +467 -111
  158. package/dist/styles/index.css +186 -65
  159. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  import { i as textColorStyle } from "./colorStyles-CuJBiS-1.mjs";
2
- import { t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
3
- import { n as ThemedButtonLink } from "./ThemedButton-LAJTNrS8.mjs";
2
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
3
+ import { n as ThemedButtonLink } from "./ThemedButton-CE5KYT6z.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as LeafletStaticMap } from "./LeafletStaticMap-C7higg52.mjs";
5
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-mHEJKrTs.mjs";
6
6
  import "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region ../core/src/location.ts
@@ -1,14 +1,159 @@
1
1
  "use client";
2
2
  import { O as clsx } from "./colorStyles-CuJBiS-1.mjs";
3
- import { Jt as parseMailingListVisitorSelection, t as defineIslandPropsDecoder, yn as assertNever$1, zt as assertNever } from "./propsDecoder-C3TP_z4x.mjs";
4
- import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
3
+ import { Vt as assertNever, Xt as parseMailingListVisitorSelection, g as newsletterBlockSubmissionMessage, h as NEWSLETTER_SIGNUPS_PAUSED_MESSAGE, t as defineIslandPropsDecoder, xn as assertNever$1 } from "./propsDecoder-Dcgsncxb.mjs";
4
+ import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
5
5
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
- import { t as ThemedButton } from "./ThemedButton-LAJTNrS8.mjs";
6
+ import { t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
7
7
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
8
8
  import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
9
9
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
10
10
  import { useEffect, useReducer, useRef, useState } from "react";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
+ //#region ../blocks/src/system/runtime/nodes/newsletter-form.parts.tsx
13
+ /**
14
+ * Newsletter form pieces shared by the SSR render and the hydrated island, so
15
+ * both produce the same markup.
16
+ *
17
+ * Labels are visually hidden: every field has a placeholder, and a visible
18
+ * "Email *" label over a single field reads like a generic form. Screen
19
+ * readers still get the label.
20
+ */
21
+ const TOPIC_CHOICE_FIELD_ID = "mailingListChoice";
22
+ const inputIdFor = (field) => `newsletter_${field.id}`;
23
+ /** Splits the preset's fields into the email (joined with the button) and the rest. */
24
+ function partitionNewsletterFields(fields) {
25
+ const email = fields.find((field) => field.type === "email") ?? null;
26
+ return {
27
+ email,
28
+ extra: fields.filter((field) => field !== email)
29
+ };
30
+ }
31
+ function NewsletterExtraField({ field, disabled, error }) {
32
+ const inputId = inputIdFor(field);
33
+ const errorId = `${inputId}-error`;
34
+ return /* @__PURE__ */ jsxs("div", {
35
+ className: "fb-field newsletter-field",
36
+ children: [
37
+ /* @__PURE__ */ jsx("label", {
38
+ htmlFor: inputId,
39
+ className: "rb-sr-only",
40
+ children: field.label
41
+ }),
42
+ /* @__PURE__ */ jsx("input", {
43
+ id: inputId,
44
+ name: field.id,
45
+ type: field.type,
46
+ required: field.required,
47
+ placeholder: field.placeholder ?? field.label,
48
+ className: "form-input",
49
+ disabled,
50
+ ...getFieldValidationControlProps({
51
+ message: error,
52
+ messageId: errorId
53
+ })
54
+ }),
55
+ error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
56
+ id: errorId,
57
+ className: "fb-error",
58
+ children: error
59
+ }) : null
60
+ ]
61
+ });
62
+ }
63
+ /** The email field and submit button sharing one input-styled shell. */
64
+ function NewsletterEmailEntry({ field, buttonVariant, buttonLabel, disabled, error }) {
65
+ const inputId = inputIdFor(field);
66
+ const errorId = `${inputId}-error`;
67
+ return /* @__PURE__ */ jsxs("div", {
68
+ className: "newsletter-entry",
69
+ children: [/* @__PURE__ */ jsxs("div", {
70
+ className: "form-input-group newsletter-entry-group",
71
+ children: [
72
+ /* @__PURE__ */ jsx("label", {
73
+ htmlFor: inputId,
74
+ className: "rb-sr-only",
75
+ children: field.label
76
+ }),
77
+ /* @__PURE__ */ jsx("input", {
78
+ id: inputId,
79
+ name: field.id,
80
+ type: "email",
81
+ required: field.required,
82
+ placeholder: field.placeholder ?? field.label,
83
+ className: "form-input-group-field",
84
+ autoComplete: "email",
85
+ disabled,
86
+ ...getFieldValidationControlProps({
87
+ message: error,
88
+ messageId: errorId
89
+ })
90
+ }),
91
+ /* @__PURE__ */ jsx(ThemedButton, {
92
+ type: "submit",
93
+ variant: buttonVariant,
94
+ size: "md",
95
+ disabled,
96
+ label: buttonLabel
97
+ })
98
+ ]
99
+ }), error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
100
+ id: errorId,
101
+ className: "fb-error",
102
+ children: error
103
+ }) : null]
104
+ });
105
+ }
106
+ /**
107
+ * The submit action: joined to the email field when the preset has one
108
+ * (every current preset does), otherwise a plain themed button.
109
+ */
110
+ function NewsletterSubmitRow({ emailField, buttonVariant, buttonLabel, disabled, error }) {
111
+ if (emailField) return /* @__PURE__ */ jsx(NewsletterEmailEntry, {
112
+ field: emailField,
113
+ buttonVariant,
114
+ buttonLabel,
115
+ disabled,
116
+ error
117
+ });
118
+ return /* @__PURE__ */ jsx("div", {
119
+ className: "newsletter-submit",
120
+ children: /* @__PURE__ */ jsx(ThemedButton, {
121
+ type: "submit",
122
+ variant: buttonVariant,
123
+ size: "md",
124
+ disabled,
125
+ label: buttonLabel
126
+ })
127
+ });
128
+ }
129
+ /** Visitor-chosen topics as toggle chips. Real checkboxes underneath. */
130
+ function NewsletterTopicChips({ choices, disabled, error }) {
131
+ const errorId = `newsletter_${TOPIC_CHOICE_FIELD_ID}-error`;
132
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("fieldset", {
133
+ className: "newsletter-topics",
134
+ "aria-describedby": error ? errorId : void 0,
135
+ children: [/* @__PURE__ */ jsx("legend", {
136
+ className: "newsletter-topics-legend",
137
+ children: "What would you like to hear about?"
138
+ }), /* @__PURE__ */ jsx("div", {
139
+ className: "newsletter-topic-chips",
140
+ children: choices.map((choice) => /* @__PURE__ */ jsxs("label", {
141
+ className: "newsletter-topic-chip",
142
+ children: [/* @__PURE__ */ jsx("input", {
143
+ type: "checkbox",
144
+ name: TOPIC_CHOICE_FIELD_ID,
145
+ value: choice.id,
146
+ disabled
147
+ }), /* @__PURE__ */ jsx("span", { children: choice.label })]
148
+ }, choice.id))
149
+ })]
150
+ }), error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
151
+ id: errorId,
152
+ className: "fb-error",
153
+ children: error
154
+ }) : null] });
155
+ }
156
+ //#endregion
12
157
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.client.state.ts
13
158
  const initialNewsletterFormSubmissionState = { tag: "idle" };
14
159
  function newsletterFormSubmissionReducer(state, action) {
@@ -97,6 +242,10 @@ function resolveNewsletterSubmitTarget(input) {
97
242
  tag: "unavailable",
98
243
  reason: "preview_only_source"
99
244
  };
245
+ case "unpublished-preview": return {
246
+ tag: "unavailable",
247
+ reason: "preview_only_source"
248
+ };
100
249
  default: return assertNever$1(input);
101
250
  }
102
251
  }
@@ -116,6 +265,7 @@ function readSubmittedText(value) {
116
265
  //#endregion
117
266
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.client.tsx
118
267
  function NewsletterFormClient({ render }) {
268
+ const submissionMessage = newsletterBlockSubmissionMessage(render.hydration.target);
119
269
  const api = useBlockApi();
120
270
  const [submissionState, dispatchSubmission] = useReducer(newsletterFormSubmissionReducer, initialNewsletterFormSubmissionState);
121
271
  const [altchaSolution, setAltchaSolution] = useState(null);
@@ -125,7 +275,6 @@ function NewsletterFormClient({ render }) {
125
275
  if (succeeded) successRef.current?.focus();
126
276
  }, [succeeded]);
127
277
  const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
128
- const fields = render.display.fields;
129
278
  const handleSubmit = async (e) => {
130
279
  e.preventDefault();
131
280
  const formData = new FormData(e.currentTarget);
@@ -157,7 +306,7 @@ function NewsletterFormClient({ render }) {
157
306
  reportNewsletterSignupRefusal(submitTarget.reason, { target: render.hydration.target });
158
307
  dispatchSubmission({
159
308
  type: "failed",
160
- error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
309
+ error: newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE)
161
310
  });
162
311
  return;
163
312
  }
@@ -165,7 +314,7 @@ function NewsletterFormClient({ render }) {
165
314
  reportNewsletterSignupRefusal("setup_not_configured");
166
315
  dispatchSubmission({
167
316
  type: "failed",
168
- error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
317
+ error: newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE)
169
318
  });
170
319
  return;
171
320
  }
@@ -173,7 +322,7 @@ function NewsletterFormClient({ render }) {
173
322
  reportNewsletterSignupRefusal("destination_unavailable", { setupRevision: render.hydration.setupRevision });
174
323
  dispatchSubmission({
175
324
  type: "failed",
176
- error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
325
+ error: newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE)
177
326
  });
178
327
  return;
179
328
  }
@@ -248,43 +397,14 @@ function NewsletterFormClient({ render }) {
248
397
  autoComplete: "off",
249
398
  "aria-hidden": "true"
250
399
  }),
251
- /* @__PURE__ */ jsxs("div", {
252
- className: "newsletter-form-fields",
253
- children: [
254
- fields.map((field) => /* @__PURE__ */ jsx(NewsletterField, {
255
- field,
256
- submitting,
257
- error: getNewsletterSubmissionFieldError(submissionState, field.id)
258
- }, field.id)),
259
- render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ jsx(NewsletterTopicChoices, {
260
- choices: render.display.choices,
261
- submitting,
262
- error: getNewsletterSubmissionFieldError(submissionState, TOPIC_CHOICE_FIELD_ID)
263
- }) : null,
264
- showSpamProtection && /* @__PURE__ */ jsx("div", {
265
- className: "newsletter-altcha",
266
- children: /* @__PURE__ */ jsx(AltchaWidget, {
267
- challengeUrl: getChallengeUrl(),
268
- onSolutionChange: setAltchaSolution
269
- })
270
- }),
271
- formError && /* @__PURE__ */ jsx(FeedbackMessage, {
272
- tone: "error",
273
- className: "fb-error",
274
- role: "alert",
275
- children: formError
276
- }),
277
- /* @__PURE__ */ jsx("div", {
278
- className: "newsletter-submit",
279
- children: /* @__PURE__ */ jsx(ThemedButton, {
280
- type: "submit",
281
- variant: render.display.buttonVariant,
282
- size: "md",
283
- disabled: submitting,
284
- label: submitting ? "Subscribing..." : render.display.buttonLabel
285
- })
286
- })
287
- ]
400
+ /* @__PURE__ */ jsx(NewsletterFormFields, {
401
+ render,
402
+ submissionState,
403
+ submitting,
404
+ submissionMessage,
405
+ formError,
406
+ showSpamProtection,
407
+ onAltchaSolution: setAltchaSolution
288
408
  }),
289
409
  render.display.privacyNote && /* @__PURE__ */ jsx("p", {
290
410
  className: "newsletter-privacy-note",
@@ -294,67 +414,52 @@ function NewsletterFormClient({ render }) {
294
414
  })
295
415
  });
296
416
  }
297
- function NewsletterField({ field, submitting, error }) {
298
- const inputId = `newsletter_${field.id}`;
299
- const errorId = `${inputId}-error`;
417
+ function NewsletterFormFields({ render, submissionState, submitting, submissionMessage, formError, showSpamProtection, onAltchaSolution }) {
418
+ const { email: emailField, extra: extraFields } = partitionNewsletterFields(render.display.fields);
419
+ const fieldError = (id) => getNewsletterSubmissionFieldError(submissionState, id);
300
420
  return /* @__PURE__ */ jsxs("div", {
301
- className: "fb-field newsletter-field",
421
+ className: "newsletter-form-fields",
302
422
  children: [
303
- /* @__PURE__ */ jsxs("label", {
304
- htmlFor: inputId,
305
- className: "form-label",
306
- children: [field.label, field.required && /* @__PURE__ */ jsx("span", {
307
- className: "newsletter-required",
308
- "aria-hidden": "true",
309
- children: "*"
310
- })]
311
- }),
312
- /* @__PURE__ */ jsx("input", {
313
- id: inputId,
314
- name: field.id,
315
- type: field.type,
316
- required: field.required,
317
- placeholder: field.placeholder,
318
- className: "form-input",
319
- autoComplete: field.type === "email" ? "email" : void 0,
423
+ render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ jsx(NewsletterTopicChips, {
424
+ choices: render.display.choices,
320
425
  disabled: submitting,
321
- ...getFieldValidationControlProps({
322
- message: error,
323
- messageId: errorId
426
+ error: fieldError(TOPIC_CHOICE_FIELD_ID)
427
+ }) : null,
428
+ extraFields.length > 0 ? /* @__PURE__ */ jsx("div", {
429
+ className: "newsletter-extra-fields",
430
+ children: extraFields.map((field) => /* @__PURE__ */ jsx(NewsletterExtraField, {
431
+ field,
432
+ disabled: submitting,
433
+ error: fieldError(field.id)
434
+ }, field.id))
435
+ }) : null,
436
+ showSpamProtection && /* @__PURE__ */ jsx("div", {
437
+ className: "newsletter-altcha",
438
+ children: /* @__PURE__ */ jsx(AltchaWidget, {
439
+ challengeUrl: getChallengeUrl(),
440
+ onSolutionChange: onAltchaSolution
324
441
  })
325
442
  }),
326
- error && /* @__PURE__ */ jsx(FieldValidationMessage, {
327
- id: errorId,
443
+ formError && /* @__PURE__ */ jsx(FeedbackMessage, {
444
+ tone: "error",
328
445
  className: "fb-error",
329
- children: error
446
+ role: "alert",
447
+ children: formError
448
+ }),
449
+ /* @__PURE__ */ jsx(NewsletterSubmitRow, {
450
+ emailField,
451
+ buttonVariant: render.display.buttonVariant,
452
+ buttonLabel: submitting ? "Subscribing..." : render.display.buttonLabel,
453
+ disabled: submitting || submissionMessage !== null,
454
+ error: emailField ? fieldError(emailField.id) : null
455
+ }),
456
+ submissionMessage && /* @__PURE__ */ jsx("p", {
457
+ role: "status",
458
+ children: submissionMessage
330
459
  })
331
460
  ]
332
461
  });
333
462
  }
334
- function NewsletterTopicChoices({ choices, submitting, error }) {
335
- const errorId = `newsletter_${TOPIC_CHOICE_FIELD_ID}-error`;
336
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("fieldset", {
337
- className: "fb-fieldset newsletter-topics",
338
- "aria-describedby": error ? errorId : void 0,
339
- children: [/* @__PURE__ */ jsx("legend", {
340
- className: "form-label",
341
- children: "What would you like to hear about?"
342
- }), choices.map((choice) => /* @__PURE__ */ jsxs("label", {
343
- className: "fb-inline form-label newsletter-topic-choice",
344
- children: [/* @__PURE__ */ jsx("input", {
345
- type: "checkbox",
346
- name: TOPIC_CHOICE_FIELD_ID,
347
- value: choice.id,
348
- className: "form-checkbox",
349
- disabled: submitting
350
- }), /* @__PURE__ */ jsx("span", { children: choice.label })]
351
- }, choice.id))]
352
- }), error && /* @__PURE__ */ jsx(FieldValidationMessage, {
353
- id: errorId,
354
- className: "fb-error",
355
- children: error
356
- })] });
357
- }
358
463
  function UnavailableNewsletterForm({ className }) {
359
464
  return /* @__PURE__ */ jsx("div", {
360
465
  className: clsx("newsletter-form", className ?? void 0),
@@ -362,13 +467,10 @@ function UnavailableNewsletterForm({ className }) {
362
467
  tone: "error",
363
468
  className: "fb-error",
364
469
  role: "status",
365
- children: SIGNUPS_PAUSED_MESSAGE
470
+ children: NEWSLETTER_SIGNUPS_PAUSED_MESSAGE
366
471
  })
367
472
  });
368
473
  }
369
- const TOPIC_CHOICE_FIELD_ID = "mailingListChoice";
370
- /** The site's setup is broken or missing: nothing the visitor does will help. */
371
- const SIGNUPS_PAUSED_MESSAGE = "We can’t accept signups right now. Please try again later.";
372
474
  /** The provider did not answer in time or at all: worth another go shortly. */
373
475
  const RETRY_SHORTLY_MESSAGE = "We couldn’t confirm your signup. Please try again in a little while.";
374
476
  const TOO_MANY_ATTEMPTS_MESSAGE = "There have been too many signup attempts. Please wait a moment and try again.";
@@ -388,7 +490,7 @@ function transportFailureMessage(err) {
388
490
  function visitorSelectionError(selection) {
389
491
  switch (selection.tag) {
390
492
  case "nothing_chosen": return newsletterFieldError(TOPIC_CHOICE_FIELD_ID, "Choose at least one email topic.");
391
- case "unusable": return newsletterFormError(SIGNUPS_PAUSED_MESSAGE);
493
+ case "unusable": return newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE);
392
494
  case "not_offered":
393
495
  case "chosen": return null;
394
496
  }
@@ -420,7 +522,7 @@ function publicSignupError(outcome) {
420
522
  case "unavailable": switch (outcome.reason) {
421
523
  case "configuration_unavailable":
422
524
  case "authentication_failed":
423
- case "target_unavailable": return SIGNUPS_PAUSED_MESSAGE;
525
+ case "target_unavailable": return NEWSLETTER_SIGNUPS_PAUSED_MESSAGE;
424
526
  case "stale_configuration": return "This signup form has changed. Refresh the page, then try again.";
425
527
  case "rate_limited": return TOO_MANY_ATTEMPTS_MESSAGE;
426
528
  case "temporarily_unavailable": return RETRY_SHORTLY_MESSAGE;
@@ -1,4 +1,4 @@
1
- import { ln as formatBookingPriceDisplay, pn as publicEventPricingDisplay, un as formatEventPricing } from "./propsDecoder-C3TP_z4x.mjs";
1
+ import { dn as formatBookingPriceDisplay, fn as formatEventPricing, hn as publicEventPricingDisplay } from "./propsDecoder-Dcgsncxb.mjs";
2
2
  //#region ../blocks/src/system/runtime/nodes/events/domain/capacity.ts
3
3
  /**
4
4
  * Compute remaining spots for an event from `availableSpots` with a fallback
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-gklw_hLF.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-B5nyA41S.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { r as ProductDetailController } from "./shop-commerce-B88zmWWo.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-cuaONpkJ.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-detail.client.tsx
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { i as ProductListController } from "./shop-commerce-gklw_hLF.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-B5nyA41S.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { i as ProductListController } from "./shop-commerce-B88zmWWo.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-cuaONpkJ.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-list.client.tsx
@@ -1107,15 +1107,6 @@ function parseMailingListContentVersionId(value) {
1107
1107
  const parsed = parseContentVersionId(value);
1108
1108
  return parsed.ok ? parsed.value : null;
1109
1109
  }
1110
- function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
1111
- const parsedBlockId = parseMailingListBlockId(blockId);
1112
- const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
1113
- return parsedBlockId !== null && parsedContentVersionId !== null ? {
1114
- tag: "block_ref",
1115
- blockId: parsedBlockId,
1116
- contentVersionId: parsedContentVersionId
1117
- } : null;
1118
- }
1119
1110
  //#endregion
1120
1111
  //#region ../core/src/whole-series-run-schedule.ts
1121
1112
  /**
@@ -6721,6 +6712,7 @@ const publicEventLoaderQuerySchemaShape = {
6721
6712
  seriesSlug: z.string().optional(),
6722
6713
  includeOccurrenceId: z.string().optional(),
6723
6714
  readIntent: z.string().optional(),
6715
+ detailAdmission: z.string().optional(),
6724
6716
  detailLevel: z.string().optional(),
6725
6717
  readProfile: z.string().optional()
6726
6718
  };
@@ -6887,11 +6879,11 @@ const publicEventBookingAvailabilitySchema = z.discriminatedUnion("kind", [z.obj
6887
6879
  "series_archived",
6888
6880
  "parent_archived",
6889
6881
  "parent_inconsistent",
6890
- "not_public",
6891
6882
  "already_started",
6892
6883
  "enrollment_closed"
6893
6884
  ])
6894
6885
  })]);
6886
+ const publicEventBookingClosedDetailSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("opensSoon") }), z.object({ kind: z.literal("paused") })]);
6895
6887
  const publicRunSessionSchema = z.object({
6896
6888
  occurrenceId: z.string(),
6897
6889
  startsAt: z.string(),
@@ -6936,6 +6928,7 @@ const publicEventBaseSchema = z.object({
6936
6928
  destination: publicEventDestinationSchema,
6937
6929
  requiresRegistration: z.boolean(),
6938
6930
  bookingAvailability: publicEventBookingAvailabilitySchema,
6931
+ bookingClosedDetail: publicEventBookingClosedDetailSchema.optional(),
6939
6932
  deliveryMode: z.enum([
6940
6933
  "in_person",
6941
6934
  "online",
@@ -11605,6 +11598,12 @@ function withOptionalPhone(fields, includePhone) {
11605
11598
  }
11606
11599
  //#endregion
11607
11600
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
11601
+ const NEWSLETTER_SIGNUPS_PAUSED_MESSAGE = "We can’t accept signups right now. Please try again later.";
11602
+ function newsletterBlockSubmissionMessage(target) {
11603
+ if (target.tag === "block-source") return target.sourceRef ? null : NEWSLETTER_SIGNUPS_PAUSED_MESSAGE;
11604
+ if (target.tag !== "unpublished-preview") return null;
11605
+ return target.reason === "unpublished-form" ? "Publish this form to test a signup here." : "This form's signup settings are unpublished. Publish it to test a signup here.";
11606
+ }
11608
11607
  const newsletterButtonVariantSchema = blockButtonRoleSchema;
11609
11608
  const mailingListContextSchema = z.unknown().transform((value, ctx) => {
11610
11609
  const parsed = parseMailingListRuntimeContext(value);
@@ -11645,6 +11644,11 @@ const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
11645
11644
  });
11646
11645
  return z.NEVER;
11647
11646
  });
11647
+ const mailingListSignupBlockSourceRefSchema = z.object({
11648
+ tag: z.literal("block_ref"),
11649
+ blockId: mailingListSignupBlockIdSchema,
11650
+ contentVersionId: mailingListContentVersionIdSchema
11651
+ });
11648
11652
  const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
11649
11653
  const newsletterSourceCommonSchema = z.object({
11650
11654
  siteId: z.string().optional(),
@@ -11659,7 +11663,15 @@ const newsletterSourceSchema = z.discriminatedUnion("source", [
11659
11663
  newsletterSourceCommonSchema.extend({
11660
11664
  source: z.literal("block"),
11661
11665
  blockId: z.string().nullable().optional(),
11662
- contentVersionId: z.string().nullable().optional()
11666
+ newsletterBlockSubmission: z.discriminatedUnion("tag", [
11667
+ z.object({
11668
+ tag: z.literal("ready"),
11669
+ sourceRef: mailingListSignupBlockSourceRefSchema
11670
+ }),
11671
+ z.object({ tag: z.literal("unpublished-form") }),
11672
+ z.object({ tag: z.literal("unpublished-settings") }),
11673
+ z.object({ tag: z.literal("unavailable") })
11674
+ ])
11663
11675
  }),
11664
11676
  newsletterSourceCommonSchema.extend({
11665
11677
  source: z.literal("signed-footer"),
@@ -11688,11 +11700,7 @@ const newsletterHydrationSchema = z.object({
11688
11700
  target: z.discriminatedUnion("tag", [
11689
11701
  z.object({
11690
11702
  tag: z.literal("block-source"),
11691
- sourceRef: z.object({
11692
- tag: z.literal("block_ref"),
11693
- blockId: mailingListSignupBlockIdSchema,
11694
- contentVersionId: mailingListContentVersionIdSchema
11695
- }).nullable()
11703
+ sourceRef: mailingListSignupBlockSourceRefSchema.nullable()
11696
11704
  }),
11697
11705
  z.object({
11698
11706
  tag: z.literal("signed-footer-source"),
@@ -11701,7 +11709,11 @@ const newsletterHydrationSchema = z.object({
11701
11709
  token: signedMailingListSourceTokenSchema
11702
11710
  })
11703
11711
  }),
11704
- z.object({ tag: z.literal("preview") })
11712
+ z.object({ tag: z.literal("preview") }),
11713
+ z.object({
11714
+ tag: z.literal("unpublished-preview"),
11715
+ reason: z.enum(["unpublished-form", "unpublished-settings"])
11716
+ })
11705
11717
  ]),
11706
11718
  setupRevision: z.number().int().positive().nullable(),
11707
11719
  choiceProvider: z.enum([
@@ -11771,16 +11783,21 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
11771
11783
  });
11772
11784
  function projectNewsletterFormHydrationTarget(source) {
11773
11785
  switch (source.source) {
11774
- case "block": {
11775
- const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
11776
- if (sourceRef?.tag === "block_ref") return {
11786
+ case "block": switch (source.newsletterBlockSubmission.tag) {
11787
+ case "unpublished-form":
11788
+ case "unpublished-settings": return {
11789
+ tag: "unpublished-preview",
11790
+ reason: source.newsletterBlockSubmission.tag
11791
+ };
11792
+ case "ready": return {
11777
11793
  tag: "block-source",
11778
- sourceRef
11794
+ sourceRef: source.newsletterBlockSubmission.sourceRef
11779
11795
  };
11780
- return {
11796
+ case "unavailable": return {
11781
11797
  tag: "block-source",
11782
11798
  sourceRef: null
11783
11799
  };
11800
+ default: return assertNever$2(source.newsletterBlockSubmission);
11784
11801
  }
11785
11802
  case "signed-footer": return {
11786
11803
  tag: "signed-footer-source",
@@ -12772,4 +12789,4 @@ function defineIslandPropsDecoder(kind) {
12772
12789
  };
12773
12790
  }
12774
12791
  //#endregion
12775
- export { addDays as $, formatBookingInstant as $t, resolveEventRegistrationScopedEvents as A, resolveBookingSiteId as At, calendarWindowPageSchema as B, clearWorkflowFeedback as Bt, resolveRegistrationTarget as C, getBookingServiceSlidingScale as Ct, getWizardStepsForContext as D, prepareBookingSubmission as Dt, getStepNumber as E, parseBookingCurrencyInputToCents as Et, calendarMonthKey as F, BOOKING_FORM_DATA_RESERVED_KEYS as Ft, buildEventRuntimeFilters as G, reportWorkflowSuccess as Gt, resolveCalendarReadProfile as H, ok as Ht, calendarPageResponseError as I, isBookingRequirementConsentFieldId as It, normalizeCsvString as J, parseMailingListVisitorSelection as Jt, getEventRuntimeFiltersKey as K, CANCELLED_SESSION_STATUS as Kt, calendarQueryKey as L, RichTextDocSchema as Lt, isSemanticSpacing as M, toSelectedCollectionOptionKind as Mt, resolveSpacing as N, projectSelectedAppointmentConsentIntoForm as Nt, buildEventCalendarListingRender as O, resolveAppointmentCheckoutVerificationState as Ot, calendarMonthDate as P, resolveSelectedAppointmentConsent as Pt, MONTH_NAMES as Q, formatBookingDateTime as Qt, calendarWindowBounds as R, isRecord$5 as Rt, resolveEventRequiresPayment as S, getBookingRedirectStateFromLocation as St, WIZARD_STEPS as T, isBookingServiceSlidingAmountInRange as Tt, createHostedBlockApiConfig as U, okWith as Ut, planCalendarMonthRanges as V, err as Vt, getBlockApiReadStage as W, reportWorkflowError as Wt, getCardOrientation as X, formatBookingDate as Xt, normalizeOptionalId as Y, addLocalScheduleDays as Yt, getContainerClass as Z, formatBookingDateParts as Zt, toRegistrationEvents as _, formatCurrencyAmount as _n, normalizeCardRole as _t, buildProductDetailDisplay as a, resolveBookingTimeZoneId as an, getWeekCalendarDays as at, findPreSelectedEvent as b, formatBookingCentsAsCurrencyInput as bt, EMPTY_COMMERCE_CART_STATE as c, toScheduledBookingDateTime as cn, shiftCalendarAnchorDate as ct, deriveCommerceCheckoutState as d, isPublicEventPricingOptionDisplayable as dn, boxBackgroundSchema as dt, formatBookingTime as en, addMonths as et, parseStoredCommerceCartState as f, publicEventPricingCurrency as fn, isCssColorLiteral as ft, getRegistrationStartAt as g, publicEventPricingType as gn, themeButtonVariantClassNames as gt, buildEventRegistrationDisplayFromScopedEvents as h, publicEventPricingStrategy as hn, themeButtonSizeClassName as ht, buildProductCardDisplay as i, parseBookingLocalDate as in, getOrderedDayNames as it, SEMANTIC_SPACING_VALUES as j, resolveDefaultBookingServiceId as jt, staticHeaderChromeRuntime as k, resolveBookingPaymentStep as kt, buildPassCartItem as l, formatBookingPriceDisplay as ln, resolveRuntimeEventDestination as lt, reduceCommerceCart as m, publicEventPricingOptions as mn, resolveTokenOrCssColorValue as mt, getShopDisplayForItems as n, getBookingLocalDateKey as nn, formatDateKey as nt, formatCommercePrice as o, toBookingTimeZone as on, isSameCalendarDay as ot, productItemKey as p, publicEventPricingDisplay as pn, resolveOnColorForThemeToken as pt, normalizeCsvIds as q, resolveWholeSeriesBookingPhase as qt, buildCartDisplay as r, getLocalScheduleDate as rn, getDayOfWeek as rt, formatInterval as s, toScheduledBookingDateRange as sn, isToday as st, defineIslandPropsDecoder as t, formatLocalScheduleDate as tn, buildCalendarViewport as tt, buildProductCartItem as u, formatEventPricing as un, groupPublicEventsByRun as ut, toWholeSeriesRegistrationEvents as v, parseCurrencyCode as vn, logger as vt, toRegistrationRequestSubject as w, getBookingSuccessMessage as wt, resolveDiscountContext as x, formatBookingSubmissionPreparationError as xt, findEventByOccurrenceId as y, assertNever$2 as yn, deriveBookingFormViewState as yt, calendarWindowMonths as z, assertNever$1 as zt };
12792
+ export { getContainerClass as $, formatBookingDateParts as $t, buildEventCalendarListingRender as A, resolveAppointmentCheckoutVerificationState as At, calendarWindowBounds as B, isRecord$5 as Bt, resolveDiscountContext as C, formatBookingSubmissionPreparationError as Ct, WIZARD_STEPS as D, isBookingServiceSlidingAmountInRange as Dt, toRegistrationRequestSubject as E, getBookingSuccessMessage as Et, resolveSpacing as F, projectSelectedAppointmentConsentIntoForm as Ft, createHostedBlockApiConfig as G, okWith as Gt, calendarWindowPageSchema as H, clearWorkflowFeedback as Ht, calendarMonthDate as I, resolveSelectedAppointmentConsent as It, getEventRuntimeFiltersKey as J, CANCELLED_SESSION_STATUS as Jt, getBlockApiReadStage as K, reportWorkflowError as Kt, calendarMonthKey as L, BOOKING_FORM_DATA_RESERVED_KEYS as Lt, resolveEventRegistrationScopedEvents as M, resolveBookingSiteId as Mt, SEMANTIC_SPACING_VALUES as N, resolveDefaultBookingServiceId as Nt, getStepNumber as O, parseBookingCurrencyInputToCents as Ot, isSemanticSpacing as P, toSelectedCollectionOptionKind as Pt, getCardOrientation as Q, formatBookingDate as Qt, calendarPageResponseError as R, isBookingRequirementConsentFieldId as Rt, findPreSelectedEvent as S, formatBookingCentsAsCurrencyInput as St, resolveRegistrationTarget as T, getBookingServiceSlidingScale as Tt, planCalendarMonthRanges as U, err as Ut, calendarWindowMonths as V, assertNever$1 as Vt, resolveCalendarReadProfile as W, ok as Wt, normalizeCsvString as X, parseMailingListVisitorSelection as Xt, normalizeCsvIds as Y, resolveWholeSeriesBookingPhase as Yt, normalizeOptionalId as Z, addLocalScheduleDays as Zt, buildEventRegistrationDisplayFromScopedEvents as _, publicEventPricingStrategy as _n, themeButtonSizeClassName as _t, buildProductDetailDisplay as a, getLocalScheduleDate as an, getDayOfWeek as at, toWholeSeriesRegistrationEvents as b, parseCurrencyCode as bn, logger as bt, EMPTY_COMMERCE_CART_STATE as c, toBookingTimeZone as cn, isSameCalendarDay as ct, deriveCommerceCheckoutState as d, formatBookingPriceDisplay as dn, resolveRuntimeEventDestination as dt, formatBookingDateTime as en, MONTH_NAMES as et, parseStoredCommerceCartState as f, formatEventPricing as fn, groupPublicEventsByRun as ft, newsletterBlockSubmissionMessage as g, publicEventPricingOptions as gn, resolveTokenOrCssColorValue as gt, NEWSLETTER_SIGNUPS_PAUSED_MESSAGE as h, publicEventPricingDisplay as hn, resolveOnColorForThemeToken as ht, buildProductCardDisplay as i, getBookingLocalDateKey as in, formatDateKey as it, staticHeaderChromeRuntime as j, resolveBookingPaymentStep as jt, getWizardStepsForContext as k, prepareBookingSubmission as kt, buildPassCartItem as l, toScheduledBookingDateRange as ln, isToday as lt, reduceCommerceCart as m, publicEventPricingCurrency as mn, isCssColorLiteral as mt, getShopDisplayForItems as n, formatBookingTime as nn, addMonths as nt, formatCommercePrice as o, parseBookingLocalDate as on, getOrderedDayNames as ot, productItemKey as p, isPublicEventPricingOptionDisplayable as pn, boxBackgroundSchema as pt, buildEventRuntimeFilters as q, reportWorkflowSuccess as qt, buildCartDisplay as r, formatLocalScheduleDate as rn, buildCalendarViewport as rt, formatInterval as s, resolveBookingTimeZoneId as sn, getWeekCalendarDays as st, defineIslandPropsDecoder as t, formatBookingInstant as tn, addDays as tt, buildProductCartItem as u, toScheduledBookingDateTime as un, shiftCalendarAnchorDate as ut, getRegistrationStartAt as v, publicEventPricingType as vn, themeButtonVariantClassNames as vt, resolveEventRequiresPayment as w, getBookingRedirectStateFromLocation as wt, findEventByOccurrenceId as x, assertNever$2 as xn, deriveBookingFormViewState as xt, toRegistrationEvents as y, formatCurrencyAmount as yn, normalizeCardRole as yt, calendarQueryKey as z, RichTextDocSchema as zt };