@riverbankcms/sdk 0.88.0 → 0.90.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 (198) hide show
  1. package/README.md +27 -4
  2. package/dist/{PreviewEditorSidebar-EVRS3C7T.mjs → PreviewEditorSidebar-KVXNF3VW.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-54WD4IGE.mjs → PreviewEditorUI-J3JN5Z7T.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-UBL6MSNP.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +216 -0
  6. package/dist/_dts/altcha/src/AltchaWidget.d.ts +1 -1
  7. package/dist/_dts/api/src/accessAdmin.d.ts +7 -0
  8. package/dist/_dts/api/src/bookingOperations.d.ts +2 -0
  9. package/dist/_dts/api/src/bookingRecords.d.ts +4 -2
  10. package/dist/_dts/api/src/bookings.d.ts +3 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +7 -6
  13. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +15 -5
  14. package/dist/_dts/api/src/request.d.ts +21 -0
  15. package/dist/_dts/api/src/sdk-event-upsert.d.ts +3 -1
  16. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  17. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -1
  18. package/dist/_dts/api/src/siteMembers.d.ts +6 -1
  19. package/dist/_dts/api/src/types.d.ts +4 -2
  20. package/dist/_dts/api/src/url.d.ts +6 -3
  21. package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +1 -0
  22. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailCard.d.ts +5 -1
  23. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailGrid.d.ts +9 -1
  24. package/dist/_dts/block-form/src/widgets/RepeaterField/components/index.d.ts +1 -0
  25. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +7 -11
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +6 -0
  27. package/dist/_dts/blocks/src/index.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +14 -6
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -4
  30. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +0 -2
  31. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +3 -3
  32. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +8 -0
  33. package/dist/_dts/blocks/src/system/constants/events.d.ts +4 -1
  34. package/dist/_dts/blocks/src/system/icons/cta.d.ts +3 -3
  35. package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
  36. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -2
  37. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +3 -3
  38. package/dist/_dts/blocks/src/system/icons/svg.d.ts +72 -0
  39. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +3 -1
  40. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -0
  41. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +18 -5
  42. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +51 -6
  43. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  44. package/dist/_dts/blocks/src/system/runtime/hooks/loadStateError.d.ts +1 -0
  45. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.d.ts +1 -1
  46. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableDates.state.d.ts +55 -0
  47. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.state.d.ts +39 -0
  48. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.d.ts +4 -27
  49. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFormConfig.state.d.ts +40 -0
  50. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -0
  51. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.state.d.ts +31 -0
  52. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +3 -3
  53. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.state.d.ts +39 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +2 -2
  55. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -17
  56. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +5 -9
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +5 -9
  58. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -1
  59. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +5 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +4 -4
  62. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +50 -0
  63. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
  64. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  66. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +11 -1
  67. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +11 -1
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/calendarViewOptions.d.ts +10 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.d.ts +24 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +24 -2
  73. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +24 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +5 -2
  75. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +2 -2
  76. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.state.d.ts +35 -0
  77. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  78. package/dist/_dts/content-model/src/entry-slots/sdkBlocks.d.ts +21 -0
  79. package/dist/_dts/content-model/src/entry-slots/types.d.ts +61 -0
  80. package/dist/_dts/core/src/branded.d.ts +7 -0
  81. package/dist/_dts/core/src/index.d.ts +1 -0
  82. package/dist/_dts/core/src/money-input.d.ts +18 -0
  83. package/dist/_dts/core/src/site-route-target.d.ts +40 -0
  84. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +209 -2
  85. package/dist/_dts/media-core/src/fileDomain.d.ts +4 -0
  86. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  87. package/dist/_dts/media-editor/src/fieldUi.d.ts +6 -0
  88. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  89. package/dist/_dts/preview-next/src/client/index.d.ts +1 -0
  90. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -2
  91. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -2
  92. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +3 -2
  93. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +2 -2
  94. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +6 -0
  95. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +2 -1
  96. package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +10 -0
  97. package/dist/_dts/sdk/src/cli/content/reader.d.ts +12 -5
  98. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -55
  99. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +160 -0
  100. package/dist/_dts/sdk/src/client/types.d.ts +26 -1
  101. package/dist/_dts/sdk/src/components.d.ts +1 -0
  102. package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
  103. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -1
  104. package/dist/_dts/sdk/src/index.d.ts +3 -1
  105. package/dist/_dts/sdk/src/next/types.d.ts +8 -11
  106. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +1 -1
  107. package/dist/_dts/sdk/src/rendering/blocks-theme-scope.d.ts +2 -1
  108. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +8 -7
  109. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +5 -6
  110. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  111. package/dist/_dts/sdk/src/rendering/server.d.ts +1 -0
  112. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +26 -0
  113. package/dist/_dts/sdk/src/version.d.ts +1 -1
  114. package/dist/_dts/site-commands/src/commands.d.ts +18 -0
  115. package/dist/_dts/theme-core/src/ResponsiveScope.d.ts +12 -0
  116. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  117. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -2
  118. package/dist/_dts/theme-core/src/buttons/types.d.ts +5 -5
  119. package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
  120. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  121. package/dist/_dts/theme-core/src/index.d.ts +2 -0
  122. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +21 -21
  123. package/dist/_dts/theme-core/src/schema.d.ts +18 -18
  124. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  125. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  126. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  127. package/dist/_dts/theme-core/src/themeRuntime.d.ts +11 -0
  128. package/dist/{chunk-ER4UIW4X.mjs → chunk-AEOYWPE4.mjs} +91 -55
  129. package/dist/{chunk-O4LVYUVH.mjs → chunk-BOQXMCSP.mjs} +147 -101
  130. package/dist/{chunk-HVOBXA3Y.mjs → chunk-GSPFFUVB.mjs} +2 -2
  131. package/dist/{chunk-7KOO7RPP.mjs → chunk-PMBB6MQ7.mjs} +2273 -1113
  132. package/dist/{chunk-K3JWH6HE.mjs → chunk-RQ3XZ4SJ.mjs} +9 -1
  133. package/dist/{chunk-YDMBIIS5.mjs → chunk-UG7I7S7W.mjs} +1 -1
  134. package/dist/cli/index.mjs +1564 -546
  135. package/dist/cli/init-docs/content/cli-reference.md +6 -1
  136. package/dist/cli/init-docs/content/content-management.md +27 -0
  137. package/dist/client/{accordion-PT5CGW5N.mjs → accordion-GXQNWQ6O.mjs} +2 -2
  138. package/dist/client/{bookingForm-2HLRTEYS.mjs → bookingForm-STLUJ36H.mjs} +206 -335
  139. package/dist/client/bookings.mjs +821 -413
  140. package/dist/client/{carousel-Z2LKYSWA.mjs → carousel-CVRN6EPP.mjs} +4 -3
  141. package/dist/client/{cart-ND5IK4A6.mjs → cart-IYIBA5CL.mjs} +8 -8
  142. package/dist/client/{checkout-EYUSGAY7.mjs → checkout-O3BGM4GS.mjs} +8 -8
  143. package/dist/client/chunk-4RTFGHZN.mjs +433 -0
  144. package/dist/client/{chunk-DIRW2LNG.mjs → chunk-6DPXDOIL.mjs} +336 -225
  145. package/dist/client/chunk-6N7YRNYU.mjs +183 -0
  146. package/dist/client/{chunk-O5JNI3E4.mjs → chunk-7DH35FGA.mjs} +2 -2
  147. package/dist/client/{chunk-S4G65LGR.mjs → chunk-D3ETC2SU.mjs} +1 -1
  148. package/dist/client/{chunk-BAWHZ5GM.mjs → chunk-DAS5CIER.mjs} +460 -157
  149. package/dist/client/{chunk-6DVPO44G.mjs → chunk-FHU6PFPM.mjs} +1 -1
  150. package/dist/client/{chunk-SDIYSQAY.mjs → chunk-HIHOQGIP.mjs} +2 -3
  151. package/dist/client/{chunk-BL66UWGD.mjs → chunk-MFPKS6QS.mjs} +13 -16
  152. package/dist/client/{chunk-X7GVFB7Y.mjs → chunk-NBFRJ5NB.mjs} +157 -5
  153. package/dist/client/{chunk-WCVK4MBJ.mjs → chunk-VFHZLZAC.mjs} +1 -1
  154. package/dist/client/{chunk-GOFO7HRH.mjs → chunk-WHZQDPBZ.mjs} +19 -1
  155. package/dist/client/{chunk-MHBEWDT7.mjs → chunk-Z62JYS5O.mjs} +122 -50
  156. package/dist/client/client.mjs +5979 -5198
  157. package/dist/client/{courseRegistration-H3AZBUEG.mjs → courseRegistration-2D3ACMJR.mjs} +20 -58
  158. package/dist/client/{eventCalendar-FPKJGLGS.mjs → eventCalendar-QY4UZUFF.mjs} +11 -11
  159. package/dist/client/{eventCombined-QCGIZBUY.mjs → eventCombined-RRCDKJC2.mjs} +11 -11
  160. package/dist/client/{eventDetails-HIT3BJWU.mjs → eventDetails-YO335BUT.mjs} +11 -11
  161. package/dist/client/{eventListing-R4HNWJDN.mjs → eventListing-PXA6GFQ3.mjs} +11 -11
  162. package/dist/client/{eventRegistration-Q7BYY5HF.mjs → eventRegistration-2ZHEDDXO.mjs} +11 -11
  163. package/dist/client/{form-NI6YOG6S.mjs → form-ZS6KX4U2.mjs} +7 -7
  164. package/dist/client/{headerSection-SDYGII36.mjs → headerSection-QK5SLIIB.mjs} +3 -3
  165. package/dist/client/hooks.mjs +1102 -1029
  166. package/dist/client/{locationMap-BDETEUQD.mjs → locationMap-GFNIUD2X.mjs} +3 -3
  167. package/dist/client/{newsletterForm-EKYIU67X.mjs → newsletterForm-PGLTTCUG.mjs} +61 -25
  168. package/dist/client/{productDetail-5UTGNN76.mjs → productDetail-OPBE5ZPI.mjs} +8 -8
  169. package/dist/client/{productList-7YA5KXZQ.mjs → productList-NI72Q62Z.mjs} +8 -8
  170. package/dist/client/rendering/client.mjs +4390 -4245
  171. package/dist/client/rendering/islands.mjs +19 -19
  172. package/dist/client/rendering.mjs +3327 -3181
  173. package/dist/client/{shop-AIMUMZYC.mjs → shop-3ZQPEWYI.mjs} +8 -8
  174. package/dist/client/spam-protection.mjs +4 -5
  175. package/dist/preview-next/before-render.mjs +20 -2
  176. package/dist/preview-next/client/runtime.mjs +5 -5
  177. package/dist/preview-next/middleware.mjs +18 -0
  178. package/dist/{sdk-runtime-NW472WNT.mjs → sdk-runtime-FSHXCWDS.mjs} +6 -6
  179. package/dist/server/components.mjs +2580 -2783
  180. package/dist/server/config-validation.mjs +1334 -1261
  181. package/dist/server/config.mjs +1334 -1261
  182. package/dist/server/data.mjs +1102 -1029
  183. package/dist/server/index.mjs +1097 -476
  184. package/dist/server/navigation.mjs +20 -30
  185. package/dist/server/next.mjs +3282 -2847
  186. package/dist/server/page-converter.mjs +1009 -946
  187. package/dist/server/prebuild.mjs +1 -1
  188. package/dist/server/rendering/server.mjs +2580 -2783
  189. package/dist/server/rendering.mjs +2586 -2789
  190. package/dist/server/routing.mjs +1440 -1053
  191. package/dist/server/server.mjs +1886 -1153
  192. package/dist/server/theme-bridge.mjs +34 -5
  193. package/dist/styles/index.css +26 -0
  194. package/package.json +3 -2
  195. package/dist/SdkPreviewModeRuntime-ZALZDJEK.mjs +0 -8
  196. package/dist/client/chunk-H4MHEXYS.mjs +0 -184
  197. package/dist/client/chunk-ZFHRN6W2.mjs +0 -66
  198. /package/dist/client/{chunk-LI2C6M5O.mjs → chunk-25W2EQUN.mjs} +0 -0
@@ -1865,6 +1865,24 @@ var ENDPOINT_DEFINITIONS = {
1865
1865
  auth: "user",
1866
1866
  responseKind: "json"
1867
1867
  },
1868
+ resendSiteInvitation: {
1869
+ path: "/sites/{siteId}/members/invitations/{invitationId}/resend",
1870
+ method: "POST",
1871
+ errors: [
1872
+ "auth:forbidden",
1873
+ "resource:not_found",
1874
+ "validation:invalid_input",
1875
+ "external:service_error",
1876
+ "server:internal_error"
1877
+ ],
1878
+ tags: [
1879
+ "site-{siteId}",
1880
+ "site-members-{siteId}",
1881
+ "site-invite-{invitationId}"
1882
+ ],
1883
+ auth: "user",
1884
+ responseKind: "json"
1885
+ },
1868
1886
  transferSiteOwnership: {
1869
1887
  path: "/sites/{siteId}/members/transfer-ownership",
1870
1888
  method: "POST",
@@ -6501,19 +6519,23 @@ function normalizeDashboardOrigin(input) {
6501
6519
  }
6502
6520
  function deriveCmsApiUrlFromDashboardUrl(input) {
6503
6521
  const origin = normalizeDashboardOrigin(input);
6504
- return origin ? `${origin}/api` : "";
6522
+ return origin ? normalizeCmsApiBaseUrl(`${origin}/api`) : "";
6523
+ }
6524
+ function normalizeCmsApiBaseUrl(input) {
6525
+ return input.trim().replace(/\/+$/, "").replace(/(?:\/api)+$/i, "/api");
6505
6526
  }
6506
6527
  function getCmsApiUrl() {
6507
6528
  if (typeof window !== "undefined") {
6508
- return "/api";
6529
+ return normalizeCmsApiBaseUrl("/api");
6509
6530
  }
6510
6531
  const internalUrl = process.env.CMS_API_URL;
6511
6532
  if (internalUrl) {
6512
- return internalUrl.replace(/\/$/, "");
6533
+ return normalizeCmsApiBaseUrl(internalUrl);
6513
6534
  }
6514
6535
  const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
6515
6536
  if (dashboardUrl) {
6516
- return deriveCmsApiUrlFromDashboardUrl(dashboardUrl);
6537
+ const apiUrl = deriveCmsApiUrlFromDashboardUrl(dashboardUrl);
6538
+ if (apiUrl) return apiUrl;
6517
6539
  }
6518
6540
  throw new Error(
6519
6541
  "CMS_API_URL or NEXT_PUBLIC_DASHBOARD_URL is not configured. Set NEXT_PUBLIC_DASHBOARD_URL to your dashboard URL (e.g., http://localhost:4000)"
@@ -6622,6 +6644,27 @@ function serializeQueryValue(value) {
6622
6644
  if (value instanceof Date) return value.toISOString();
6623
6645
  return null;
6624
6646
  }
6647
+ function normalizeHeaders(source) {
6648
+ const normalized = {};
6649
+ if (!source) return normalized;
6650
+ new Headers(source).forEach((value, key) => {
6651
+ normalized[key] = value;
6652
+ });
6653
+ return normalized;
6654
+ }
6655
+ function buildRequestHeaders(input) {
6656
+ const headers = {
6657
+ ...normalizeHeaders(input.optionsHeaders),
6658
+ ...normalizeHeaders(input.authHeaders)
6659
+ };
6660
+ if (input.sdkVersion) {
6661
+ headers["x-sdk-version"] = input.sdkVersion;
6662
+ }
6663
+ if (input.includeJsonContentType) {
6664
+ headers["Content-Type"] = "application/json";
6665
+ }
6666
+ return headers;
6667
+ }
6625
6668
  function serializePathParam(endpoint, key, value) {
6626
6669
  if (typeof value === "string") {
6627
6670
  return value;
@@ -6757,104 +6800,20 @@ function createRawCMSClient(headers = {}, baseUrl) {
6757
6800
  params,
6758
6801
  options = {}
6759
6802
  }) => {
6760
- const resolvedBaseUrl = baseUrl ?? resolveApiBaseUrl();
6761
- let url = buildEndpointURL(resolvedBaseUrl, endpoint);
6762
- const originalPath = API_ENDPOINTS[endpoint].path;
6763
- const unusedParams = {};
6764
- if (params) {
6765
- Object.entries(params).forEach(([key, value]) => {
6766
- const bracePlaceholder = `{${key}}`;
6767
- const colonPlaceholder = `:${key}`;
6768
- if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
6769
- const stringValue = serializePathParam(endpoint, key, value);
6770
- url = url.replace(bracePlaceholder, stringValue);
6771
- url = url.replace(colonPlaceholder, stringValue);
6772
- } else {
6773
- unusedParams[key] = value;
6774
- }
6775
- });
6776
- }
6777
- const unresolvedPathParams = [
6778
- ...url.match(/\{[^}]+\}/g) ?? [],
6779
- ...url.match(/(^|\/):([A-Za-z][A-Za-z0-9_]*)\b/g) ?? []
6780
- ];
6781
- if (unresolvedPathParams.length > 0) {
6782
- const missingParams = Array.from(
6783
- new Set(
6784
- unresolvedPathParams.map((token) => {
6785
- if (token.startsWith("{") && token.endsWith("}")) {
6786
- return token.slice(1, -1);
6787
- }
6788
- return token.replace(/^\//, "").slice(1);
6789
- })
6790
- )
6791
- );
6792
- throw new Error(
6793
- `Missing required path params for endpoint ${String(endpoint)}: ${missingParams.join(", ")}`
6794
- );
6795
- }
6796
- const endpointConfig = API_ENDPOINTS[endpoint];
6797
- const method = endpointConfig.method;
6798
- const isGetOrHead = method === "GET" || method === "HEAD";
6799
- const queryParams = new URLSearchParams();
6800
- Object.entries(unusedParams).forEach(([key, value]) => {
6801
- appendQueryParam(queryParams, key, value);
6803
+ const plan = buildApiRequestPlan({
6804
+ endpoint,
6805
+ body,
6806
+ params,
6807
+ options,
6808
+ headers,
6809
+ baseUrl: normalizeCmsApiBaseUrl(baseUrl ?? resolveApiBaseUrl()),
6810
+ sdkVersion
6802
6811
  });
6803
- if (isGetOrHead && typeof body === "object" && body !== null && !isFormDataBody(body)) {
6804
- Object.entries(body).forEach(([key, value]) => {
6805
- appendQueryParam(queryParams, key, value);
6806
- });
6807
- }
6808
- const queryString = queryParams.toString();
6809
- if (queryString) {
6810
- url += (url.includes("?") ? "&" : "?") + queryString;
6811
- }
6812
- const formDataBody = isFormDataBody(body) ? body : void 0;
6813
- const optionsNext = options?.next;
6814
- const nextOptions = { ...optionsNext ?? {} };
6815
- const cacheIsNoStore = options?.cache === "no-store";
6816
- if (cacheIsNoStore) {
6817
- delete nextOptions.revalidate;
6818
- } else if (isGetOrHead && nextOptions.revalidate === void 0 && "revalidate" in endpointConfig && typeof endpointConfig.revalidate === "number") {
6819
- nextOptions.revalidate = endpointConfig.revalidate;
6820
- }
6821
- if ("tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
6822
- const processedTags = endpointConfig.tags.map((tag) => {
6823
- let processedTag = tag;
6824
- if (params) {
6825
- Object.entries(params).forEach(([key, value]) => {
6826
- processedTag = processedTag.replace(`{${key}}`, String(value));
6827
- });
6828
- }
6829
- return /\{[^}]+\}/.test(processedTag) ? null : processedTag;
6830
- }).filter((tag) => tag !== null);
6831
- nextOptions.tags = Array.from(/* @__PURE__ */ new Set([...nextOptions.tags ?? [], ...processedTags]));
6832
- }
6833
- const requestInit = {
6834
- method,
6835
- ...options,
6836
- // Include credentials for same-origin requests (sends cookies for auth)
6837
- credentials: "same-origin",
6838
- // Don't include body for GET/HEAD requests
6839
- // FormData is pre-narrowed via isFormDataBody() above
6840
- body: isGetOrHead || body == null ? void 0 : formDataBody ?? JSON.stringify(body),
6841
- headers: {
6842
- ...options.headers,
6843
- ...headers,
6844
- // Include SDK version if set
6845
- ...sdkVersion && { "x-sdk-version": sdkVersion },
6846
- // Don't set Content-Type for GET/HEAD requests without body
6847
- ...isGetOrHead ? {} : formDataBody ? {} : { "Content-Type": "application/json" }
6848
- },
6849
- // Add Next.js caching options
6850
- next: Object.keys(nextOptions).length > 0 ? nextOptions : void 0
6851
- };
6852
- const fetchPromise = fetch(url, requestInit);
6853
- if (!isGetOrHead && "tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
6854
- const tags2 = endpointConfig.tags.map((tag) => tag);
6812
+ const fetchPromise = fetch(plan.url, plan.init);
6813
+ if (plan.cacheInvalidationTags) {
6855
6814
  return fetchPromise.then((response) => {
6856
6815
  if (response.ok) {
6857
- invalidateCacheTags(tags2, params);
6816
+ invalidateCacheTags(plan.cacheInvalidationTags, params);
6858
6817
  }
6859
6818
  return response;
6860
6819
  });
@@ -6862,6 +6821,100 @@ function createRawCMSClient(headers = {}, baseUrl) {
6862
6821
  return fetchPromise;
6863
6822
  };
6864
6823
  }
6824
+ function buildApiRequestPlan(input) {
6825
+ const { endpoint, body, params, headers = {}, baseUrl } = input;
6826
+ const options = input.options ?? {};
6827
+ let url = buildEndpointURL(baseUrl, endpoint);
6828
+ const originalPath = API_ENDPOINTS[endpoint].path;
6829
+ const unusedParams = {};
6830
+ if (params) {
6831
+ Object.entries(params).forEach(([key, value]) => {
6832
+ const bracePlaceholder = `{${key}}`;
6833
+ const colonPlaceholder = `:${key}`;
6834
+ if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
6835
+ const stringValue = serializePathParam(endpoint, key, value);
6836
+ url = url.replace(bracePlaceholder, stringValue);
6837
+ url = url.replace(colonPlaceholder, stringValue);
6838
+ } else {
6839
+ unusedParams[key] = value;
6840
+ }
6841
+ });
6842
+ }
6843
+ const unresolvedPathParams = [
6844
+ ...url.match(/\{[^}]+\}/g) ?? [],
6845
+ ...url.match(/(^|\/):([A-Za-z][A-Za-z0-9_]*)\b/g) ?? []
6846
+ ];
6847
+ if (unresolvedPathParams.length > 0) {
6848
+ const missingParams = Array.from(
6849
+ new Set(
6850
+ unresolvedPathParams.map((token) => {
6851
+ if (token.startsWith("{") && token.endsWith("}")) {
6852
+ return token.slice(1, -1);
6853
+ }
6854
+ return token.replace(/^\//, "").slice(1);
6855
+ })
6856
+ )
6857
+ );
6858
+ throw new Error(
6859
+ `Missing required path params for endpoint ${String(endpoint)}: ${missingParams.join(", ")}`
6860
+ );
6861
+ }
6862
+ const endpointConfig = API_ENDPOINTS[endpoint];
6863
+ const method = endpointConfig.method;
6864
+ const isGetOrHead = method === "GET" || method === "HEAD";
6865
+ const queryParams = new URLSearchParams();
6866
+ Object.entries(unusedParams).forEach(([key, value]) => {
6867
+ appendQueryParam(queryParams, key, value);
6868
+ });
6869
+ if (isGetOrHead && typeof body === "object" && body !== null && !isFormDataBody(body)) {
6870
+ Object.entries(body).forEach(([key, value]) => {
6871
+ appendQueryParam(queryParams, key, value);
6872
+ });
6873
+ }
6874
+ const queryString = queryParams.toString();
6875
+ if (queryString) {
6876
+ url += (url.includes("?") ? "&" : "?") + queryString;
6877
+ }
6878
+ const formDataBody = isFormDataBody(body) ? body : void 0;
6879
+ const optionsNext = options?.next;
6880
+ const nextOptions = { ...optionsNext ?? {} };
6881
+ const cacheIsNoStore = options?.cache === "no-store";
6882
+ if (cacheIsNoStore) {
6883
+ delete nextOptions.revalidate;
6884
+ } else if (isGetOrHead && nextOptions.revalidate === void 0 && "revalidate" in endpointConfig && typeof endpointConfig.revalidate === "number") {
6885
+ nextOptions.revalidate = endpointConfig.revalidate;
6886
+ }
6887
+ if ("tags" in endpointConfig && Array.isArray(endpointConfig.tags)) {
6888
+ const processedTags = endpointConfig.tags.map((tag) => {
6889
+ let processedTag = tag;
6890
+ if (params) {
6891
+ Object.entries(params).forEach(([key, value]) => {
6892
+ processedTag = processedTag.replace(`{${key}}`, String(value));
6893
+ });
6894
+ }
6895
+ return /\{[^}]+\}/.test(processedTag) ? null : processedTag;
6896
+ }).filter((tag) => tag !== null);
6897
+ nextOptions.tags = Array.from(/* @__PURE__ */ new Set([...nextOptions.tags ?? [], ...processedTags]));
6898
+ }
6899
+ const init = {
6900
+ method,
6901
+ ...options,
6902
+ credentials: "same-origin",
6903
+ body: isGetOrHead || body == null ? void 0 : formDataBody ?? JSON.stringify(body),
6904
+ headers: buildRequestHeaders({
6905
+ optionsHeaders: options.headers,
6906
+ authHeaders: headers,
6907
+ sdkVersion: input.sdkVersion,
6908
+ includeJsonContentType: !isGetOrHead && !formDataBody
6909
+ }),
6910
+ ...Object.keys(nextOptions).length > 0 ? { next: nextOptions } : {}
6911
+ };
6912
+ return {
6913
+ url,
6914
+ init,
6915
+ ...!isGetOrHead && "tags" in endpointConfig && Array.isArray(endpointConfig.tags) ? { cacheInvalidationTags: endpointConfig.tags.map((tag) => tag) } : {}
6916
+ };
6917
+ }
6865
6918
  function createParsedClient(rawClient) {
6866
6919
  return async (params) => {
6867
6920
  const response = await rawClient(params);
@@ -7042,7 +7095,7 @@ var SimpleCache = class {
7042
7095
  };
7043
7096
 
7044
7097
  // src/version.ts
7045
- var SDK_VERSION = "0.88.0";
7098
+ var SDK_VERSION = "0.90.0";
7046
7099
 
7047
7100
  // src/client/error.ts
7048
7101
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -7199,6 +7252,476 @@ function attachResilienceStatusToError(error, resilienceStatus) {
7199
7252
  return target;
7200
7253
  }
7201
7254
 
7255
+ // src/public-api/runtime.ts
7256
+ var PUBLIC_ENDPOINT_NAMES2 = [
7257
+ "getSite",
7258
+ "getContentByPath",
7259
+ "listPublishedEntries",
7260
+ "getPublishedEntryPreview",
7261
+ "getPublicFormById",
7262
+ "listPublicForms",
7263
+ "getPublicBookingServices",
7264
+ "getPublicChallenge",
7265
+ "listPublicEvents",
7266
+ "batchBlockLoaders",
7267
+ "listPublicCourses",
7268
+ "listPublicTeamMembers",
7269
+ "listPublicProducts",
7270
+ "listPublicPasses",
7271
+ "listPublicMemberships",
7272
+ "resolveEntrySubroute",
7273
+ "resolveEventOccurrence",
7274
+ "checkRedirect",
7275
+ "getRoutableContent",
7276
+ "getPublicRoutableContent",
7277
+ "getPublicSitemapRoutes"
7278
+ ];
7279
+ var API_ENDPOINTS2 = Object.freeze({
7280
+ getSite: {
7281
+ path: "/sites",
7282
+ method: "GET",
7283
+ revalidate: 900,
7284
+ tags: ["riverbank:site", "riverbank:site:id:{id}", "riverbank:site:slug:{slug}", "riverbank:site:domain:{domain}"],
7285
+ auth: "public",
7286
+ responseKind: "json"
7287
+ },
7288
+ getContentByPath: {
7289
+ path: "/sites/{siteId}/pages",
7290
+ method: "GET",
7291
+ tags: ["riverbank:site:{siteId}:routable-content"],
7292
+ auth: "public",
7293
+ responseKind: "json"
7294
+ },
7295
+ listPublishedEntries: {
7296
+ path: "/public/content/{siteId}/{type}/entries",
7297
+ method: "GET",
7298
+ revalidate: 60,
7299
+ tags: ["content-{siteId}-{type}"],
7300
+ auth: "public",
7301
+ responseKind: "json"
7302
+ },
7303
+ getPublishedEntryPreview: {
7304
+ path: "/public/content/{siteId}/{type}/{slug}/preview",
7305
+ method: "GET",
7306
+ revalidate: 60,
7307
+ tags: ["content-{siteId}-{type}-{slug}"],
7308
+ auth: "public",
7309
+ responseKind: "json"
7310
+ },
7311
+ getPublicFormById: {
7312
+ path: "/public/forms/{formId}",
7313
+ method: "GET",
7314
+ revalidate: 60,
7315
+ tags: ["riverbank:form:{formId}"],
7316
+ auth: "public",
7317
+ responseKind: "json"
7318
+ },
7319
+ listPublicForms: {
7320
+ path: "/public/sites/{siteId}/forms",
7321
+ method: "GET",
7322
+ revalidate: 60,
7323
+ tags: ["riverbank:site:{siteId}:forms"],
7324
+ auth: "public",
7325
+ responseKind: "json"
7326
+ },
7327
+ getPublicBookingServices: {
7328
+ path: "/public/bookings/services",
7329
+ method: "GET",
7330
+ revalidate: 60,
7331
+ tags: ["site-{siteId}"],
7332
+ auth: "public",
7333
+ responseKind: "json"
7334
+ },
7335
+ getPublicChallenge: {
7336
+ path: "/public/challenge",
7337
+ method: "GET",
7338
+ auth: "public",
7339
+ responseKind: "text"
7340
+ },
7341
+ listPublicEvents: {
7342
+ path: "/public/sites/{siteId}/events",
7343
+ method: "GET",
7344
+ revalidate: 60,
7345
+ tags: ["riverbank:site:{siteId}:public-events"],
7346
+ auth: "public",
7347
+ responseKind: "json"
7348
+ },
7349
+ batchBlockLoaders: {
7350
+ path: "/public/sites/{siteId}/block-loaders/batch",
7351
+ method: "POST",
7352
+ auth: "public",
7353
+ responseKind: "json"
7354
+ },
7355
+ listPublicCourses: {
7356
+ path: "/public/sites/{siteId}/courses",
7357
+ method: "GET",
7358
+ revalidate: 60,
7359
+ tags: ["riverbank:site:{siteId}:public-courses"],
7360
+ auth: "public",
7361
+ responseKind: "json"
7362
+ },
7363
+ listPublicTeamMembers: {
7364
+ path: "/public/sites/{siteId}/team-members",
7365
+ method: "GET",
7366
+ revalidate: 60,
7367
+ tags: ["riverbank:site:{siteId}:public-team-members"],
7368
+ auth: "public",
7369
+ responseKind: "json"
7370
+ },
7371
+ listPublicProducts: {
7372
+ path: "/public/sites/{siteId}/products",
7373
+ method: "GET",
7374
+ revalidate: 300,
7375
+ tags: ["riverbank:site:{siteId}:public-products"],
7376
+ auth: "public",
7377
+ responseKind: "json"
7378
+ },
7379
+ listPublicPasses: {
7380
+ path: "/public/sites/{siteId}/bookings/products/passes",
7381
+ method: "GET",
7382
+ revalidate: 300,
7383
+ tags: ["riverbank:site:{siteId}:public-passes"],
7384
+ auth: "public",
7385
+ responseKind: "json"
7386
+ },
7387
+ listPublicMemberships: {
7388
+ path: "/public/sites/{siteId}/bookings/products/memberships",
7389
+ method: "GET",
7390
+ revalidate: 300,
7391
+ tags: ["riverbank:site:{siteId}:public-memberships"],
7392
+ auth: "public",
7393
+ responseKind: "json"
7394
+ },
7395
+ resolveEntrySubroute: {
7396
+ path: "/public/sites/{siteId}/routing/subroutes/resolve",
7397
+ method: "GET",
7398
+ revalidate: 60,
7399
+ tags: ["site-{siteId}", "entry-subroute"],
7400
+ auth: "public",
7401
+ responseKind: "json"
7402
+ },
7403
+ resolveEventOccurrence: {
7404
+ path: "/public/sites/{siteId}/events/occurrences/resolve",
7405
+ method: "GET",
7406
+ revalidate: 60,
7407
+ tags: ["riverbank:site:{siteId}:public-events", "event-occurrence"],
7408
+ auth: "public",
7409
+ responseKind: "json"
7410
+ },
7411
+ checkRedirect: {
7412
+ path: "/public/content/redirect",
7413
+ method: "GET",
7414
+ revalidate: 86400,
7415
+ tags: ["redirect"],
7416
+ auth: "public",
7417
+ responseKind: "json"
7418
+ },
7419
+ getRoutableContent: {
7420
+ path: "/sites/{siteId}/routable-content",
7421
+ method: "GET",
7422
+ revalidate: 60,
7423
+ tags: ["riverbank:site:{siteId}:routable-content"],
7424
+ auth: "user",
7425
+ responseKind: "json"
7426
+ },
7427
+ getPublicRoutableContent: {
7428
+ path: "/public/sites/{siteId}/routable-content",
7429
+ method: "GET",
7430
+ revalidate: 60,
7431
+ tags: ["riverbank:site:{siteId}:routable-content"],
7432
+ auth: "public",
7433
+ responseKind: "json"
7434
+ },
7435
+ getPublicSitemapRoutes: {
7436
+ path: "/public/sites/{siteId}/sitemap",
7437
+ method: "GET",
7438
+ revalidate: 60,
7439
+ tags: ["riverbank:site:{siteId}:routable-content", "riverbank:site:{siteId}:settings"],
7440
+ auth: "public",
7441
+ responseKind: "json"
7442
+ }
7443
+ });
7444
+
7445
+ // src/client/runtimeCachePolicy.ts
7446
+ var DEFAULT_PUBLISHED_RUNTIME_CACHE_PAYLOAD_SCHEMA_VERSION = 1;
7447
+ var DEFAULT_STALE_TTL_SEC = 24 * 60 * 60;
7448
+ var DEFAULT_MEMORY_TTL_SEC = 60;
7449
+ var RUNTIME_CACHE_DURABILITY_OVERRIDES = {
7450
+ getSite: {
7451
+ kind: "durable-public-stale",
7452
+ staleTtlSec: DEFAULT_STALE_TTL_SEC
7453
+ },
7454
+ getContentByPath: {
7455
+ kind: "durable-public-stale",
7456
+ staleTtlSec: DEFAULT_STALE_TTL_SEC
7457
+ },
7458
+ listPublishedEntries: {
7459
+ kind: "memory-only",
7460
+ reason: "durable_rollout_pending"
7461
+ },
7462
+ getPublishedEntryPreview: {
7463
+ kind: "memory-only",
7464
+ reason: "durable_rollout_pending"
7465
+ },
7466
+ getPublicFormById: {
7467
+ kind: "memory-only",
7468
+ reason: "durable_rollout_pending"
7469
+ },
7470
+ listPublicForms: {
7471
+ kind: "memory-only",
7472
+ reason: "durable_rollout_pending"
7473
+ },
7474
+ getPublicBookingServices: {
7475
+ kind: "live-only",
7476
+ reason: "safety_sensitive_booking"
7477
+ },
7478
+ getPublicChallenge: {
7479
+ kind: "live-only",
7480
+ reason: "challenge_endpoint"
7481
+ },
7482
+ listPublicEvents: {
7483
+ kind: "memory-only",
7484
+ reason: "durable_rollout_pending"
7485
+ },
7486
+ batchBlockLoaders: {
7487
+ kind: "live-only",
7488
+ reason: "opaque_batch_loader"
7489
+ },
7490
+ listPublicCourses: {
7491
+ kind: "memory-only",
7492
+ reason: "durable_rollout_pending"
7493
+ },
7494
+ listPublicTeamMembers: {
7495
+ kind: "memory-only",
7496
+ reason: "durable_rollout_pending"
7497
+ },
7498
+ listPublicProducts: {
7499
+ kind: "memory-only",
7500
+ reason: "durable_rollout_pending"
7501
+ },
7502
+ listPublicPasses: {
7503
+ kind: "live-only",
7504
+ reason: "safety_sensitive_booking"
7505
+ },
7506
+ listPublicMemberships: {
7507
+ kind: "live-only",
7508
+ reason: "safety_sensitive_booking"
7509
+ },
7510
+ resolveEntrySubroute: {
7511
+ kind: "memory-only",
7512
+ reason: "durable_rollout_pending"
7513
+ },
7514
+ resolveEventOccurrence: {
7515
+ kind: "memory-only",
7516
+ reason: "durable_rollout_pending"
7517
+ },
7518
+ checkRedirect: {
7519
+ kind: "memory-only",
7520
+ reason: "durable_rollout_pending"
7521
+ },
7522
+ getRoutableContent: {
7523
+ kind: "live-only",
7524
+ reason: "auth_required"
7525
+ },
7526
+ getPublicRoutableContent: {
7527
+ kind: "memory-only",
7528
+ reason: "durable_rollout_pending"
7529
+ },
7530
+ getPublicSitemapRoutes: {
7531
+ kind: "memory-only",
7532
+ reason: "durable_rollout_pending"
7533
+ }
7534
+ };
7535
+ var PUBLIC_ENDPOINT_NAME_SET = new Set(PUBLIC_ENDPOINT_NAMES2);
7536
+ function isPublicEndpointName(endpoint) {
7537
+ return PUBLIC_ENDPOINT_NAME_SET.has(endpoint);
7538
+ }
7539
+ function isTruthyParam(value) {
7540
+ return value === true || value === "true" || value === 1 || value === "1";
7541
+ }
7542
+ function isPreviewRequest(endpoint, params) {
7543
+ if (endpoint === "getContentByPath") {
7544
+ return isTruthyParam(params.preview);
7545
+ }
7546
+ if (endpoint === "listPublishedEntries" || endpoint === "resolveEntrySubroute" || endpoint === "resolveEventOccurrence") {
7547
+ return params.stage === "preview";
7548
+ }
7549
+ return false;
7550
+ }
7551
+ function getEndpointFreshTtlSec(endpoint) {
7552
+ return API_ENDPOINTS2[endpoint].revalidate ?? DEFAULT_MEMORY_TTL_SEC;
7553
+ }
7554
+ function assertNever(value) {
7555
+ throw new Error(`Unhandled runtime cache policy override: ${String(value)}`);
7556
+ }
7557
+ function resolveKnownEndpointPolicy(endpoint, params) {
7558
+ if (isPreviewRequest(endpoint, params)) {
7559
+ return { kind: "live-only", endpoint, reason: "preview_request" };
7560
+ }
7561
+ if (endpoint === "getSite" && isTruthyParam(params.force)) {
7562
+ return { kind: "live-only", endpoint, reason: "force_refresh" };
7563
+ }
7564
+ const override = RUNTIME_CACHE_DURABILITY_OVERRIDES[endpoint];
7565
+ if (override.kind === "live-only") {
7566
+ return { kind: "live-only", endpoint, reason: override.reason };
7567
+ }
7568
+ const endpointDefinition = API_ENDPOINTS2[endpoint];
7569
+ if (endpointDefinition.method !== "GET") {
7570
+ return { kind: "live-only", endpoint, reason: "non_get_request" };
7571
+ }
7572
+ if (endpointDefinition.auth === "user") {
7573
+ return { kind: "live-only", endpoint, reason: "auth_required" };
7574
+ }
7575
+ switch (override.kind) {
7576
+ case "durable-public-stale":
7577
+ return {
7578
+ kind: "durable-public-stale",
7579
+ endpoint,
7580
+ freshTtlSec: getEndpointFreshTtlSec(endpoint),
7581
+ staleTtlSec: override.staleTtlSec
7582
+ };
7583
+ case "memory-only":
7584
+ return {
7585
+ kind: "memory-only",
7586
+ endpoint,
7587
+ freshTtlSec: getEndpointFreshTtlSec(endpoint),
7588
+ reason: override.reason
7589
+ };
7590
+ default:
7591
+ return assertNever(override);
7592
+ }
7593
+ }
7594
+ function resolveRuntimeCachePolicy(input) {
7595
+ if (input.method && input.method.toUpperCase() !== "GET") {
7596
+ return {
7597
+ kind: "live-only",
7598
+ endpoint: input.endpoint,
7599
+ reason: "non_get_request"
7600
+ };
7601
+ }
7602
+ if (!isPublicEndpointName(input.endpoint)) {
7603
+ return {
7604
+ kind: "live-only",
7605
+ endpoint: input.endpoint,
7606
+ reason: "unknown_endpoint"
7607
+ };
7608
+ }
7609
+ return resolveKnownEndpointPolicy(input.endpoint, input.params ?? {});
7610
+ }
7611
+ function toNonEmptyString(value) {
7612
+ if (value === null || value === void 0) return null;
7613
+ if (typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean") {
7614
+ return null;
7615
+ }
7616
+ const normalized = String(value).trim();
7617
+ return normalized.length > 0 ? normalized : null;
7618
+ }
7619
+ function normalizeRuntimePublicPath(value) {
7620
+ const raw = toNonEmptyString(value) ?? "/";
7621
+ const withoutQuery = raw.split(/[?#]/, 1)[0] ?? "/";
7622
+ const withLeadingSlash = withoutQuery.startsWith("/") ? withoutQuery : `/${withoutQuery}`;
7623
+ const collapsed = withLeadingSlash.replace(/\/{2,}/g, "/");
7624
+ const withoutTrailingSlash = collapsed.length > 1 ? collapsed.replace(/\/+$/g, "") : collapsed;
7625
+ return withoutTrailingSlash || "/";
7626
+ }
7627
+ function normalizeRuntimeHostname(value) {
7628
+ const trimmed = value.trim().toLowerCase();
7629
+ const url = /^[a-z][a-z0-9+.-]*:\/\//.test(trimmed) ? new URL(trimmed) : new URL(`http://${trimmed}`);
7630
+ return url.hostname.replace(/\.$/, "");
7631
+ }
7632
+ function normalizeScalar(value) {
7633
+ return value.trim().toLowerCase();
7634
+ }
7635
+ function encodeKeyPart(key, value) {
7636
+ return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
7637
+ }
7638
+ function unsafeAsPublishedRuntimeCacheKey(value) {
7639
+ return value;
7640
+ }
7641
+ function buildPublishedRuntimeCacheKey(endpoint, normalizedParams) {
7642
+ const encodedParams = Object.entries(normalizedParams).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => encodeKeyPart(key, value)).join(":");
7643
+ return unsafeAsPublishedRuntimeCacheKey(
7644
+ `published-runtime:v1:${endpoint}:${encodedParams}`
7645
+ );
7646
+ }
7647
+ function selectSiteRuntimeIdentity(params) {
7648
+ const slug = toNonEmptyString(params.slug);
7649
+ if (slug !== null) return { slug: normalizeScalar(slug) };
7650
+ const domain = toNonEmptyString(params.domain);
7651
+ if (domain !== null) return { domain: normalizeRuntimeHostname(domain) };
7652
+ const id = toNonEmptyString(params.id);
7653
+ if (id !== null) return { id: normalizeScalar(id) };
7654
+ return null;
7655
+ }
7656
+ function deriveGetSiteKey(params) {
7657
+ const identity = selectSiteRuntimeIdentity(params);
7658
+ if (identity === null) {
7659
+ return {
7660
+ ok: false,
7661
+ error: {
7662
+ kind: "missing_site_identity",
7663
+ acceptedParams: ["slug", "domain", "id"]
7664
+ }
7665
+ };
7666
+ }
7667
+ const normalizedParams = {
7668
+ ...identity,
7669
+ currentPath: normalizeRuntimePublicPath(params.currentPath)
7670
+ };
7671
+ return {
7672
+ ok: true,
7673
+ endpoint: "getSite",
7674
+ key: buildPublishedRuntimeCacheKey("getSite", normalizedParams),
7675
+ normalizedParams
7676
+ };
7677
+ }
7678
+ function deriveGetContentByPathKey(params) {
7679
+ const siteId = toNonEmptyString(params.siteId);
7680
+ if (siteId === null) {
7681
+ return {
7682
+ ok: false,
7683
+ error: {
7684
+ kind: "missing_required_param",
7685
+ endpoint: "getContentByPath",
7686
+ param: "siteId"
7687
+ }
7688
+ };
7689
+ }
7690
+ const normalizedParams = {
7691
+ siteId: normalizeScalar(siteId),
7692
+ path: normalizeRuntimePublicPath(params.path)
7693
+ };
7694
+ return {
7695
+ ok: true,
7696
+ endpoint: "getContentByPath",
7697
+ key: buildPublishedRuntimeCacheKey("getContentByPath", normalizedParams),
7698
+ normalizedParams
7699
+ };
7700
+ }
7701
+ var DURABLE_RUNTIME_CACHE_KEY_DERIVERS = {
7702
+ getSite: deriveGetSiteKey,
7703
+ getContentByPath: deriveGetContentByPathKey
7704
+ };
7705
+ function derivePublishedRuntimeCacheKey(input) {
7706
+ const policy = resolveRuntimeCachePolicy({
7707
+ endpoint: input.endpoint,
7708
+ method: "GET",
7709
+ params: input.params
7710
+ });
7711
+ if (policy.kind !== "durable-public-stale") {
7712
+ return {
7713
+ ok: false,
7714
+ error: { kind: "not_durable_eligible", policy }
7715
+ };
7716
+ }
7717
+ switch (input.endpoint) {
7718
+ case "getSite":
7719
+ return DURABLE_RUNTIME_CACHE_KEY_DERIVERS.getSite(input.params);
7720
+ case "getContentByPath":
7721
+ return DURABLE_RUNTIME_CACHE_KEY_DERIVERS.getContentByPath(input.params);
7722
+ }
7723
+ }
7724
+
7202
7725
  // src/client/resilience.ts
7203
7726
  var DEFAULT_RETRY_CONFIG = {
7204
7727
  maxAttempts: 3,
@@ -7508,12 +8031,57 @@ setSdkVersion(SDK_VERSION);
7508
8031
  var DEFAULT_BROWSER_TIMEOUT_MS = 5e3;
7509
8032
  var DEFAULT_SERVER_TIMEOUT_MS = 8e3;
7510
8033
  var MAX_GET_ENTRIES_BY_IDENTIFIERS_REFS = 50;
8034
+ function isDurableRuntimeCacheTier(cacheTier) {
8035
+ return cacheTier === "durable-fresh" || cacheTier === "durable-stale";
8036
+ }
8037
+ function isDegradedResilienceStatus(source, details) {
8038
+ return source === "stale" || source === "error" || isDurableRuntimeCacheTier(details.cacheTier) && details.error !== void 0;
8039
+ }
7511
8040
  function generateRequestId2() {
7512
8041
  return `req-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
7513
8042
  }
7514
8043
  function toRecord(value) {
7515
8044
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
7516
8045
  }
8046
+ function getRuntimePayloadSiteId(value) {
8047
+ const site = toRecord(value).site;
8048
+ if (!site || typeof site !== "object" || Array.isArray(site)) {
8049
+ return null;
8050
+ }
8051
+ const id = site.id;
8052
+ return typeof id === "string" && id.trim().length > 0 ? id : null;
8053
+ }
8054
+ function getRiverbankErrorInfo(error) {
8055
+ if (error instanceof RiverbankApiError) {
8056
+ return { code: error.code, message: error.message, status: error.status };
8057
+ }
8058
+ if (error instanceof Error) {
8059
+ return { message: error.message };
8060
+ }
8061
+ return { message: String(error) };
8062
+ }
8063
+ function planPublishedRuntimeCache(input) {
8064
+ const policy = resolveRuntimeCachePolicy({
8065
+ endpoint: input.endpoint,
8066
+ method: "GET",
8067
+ params: input.params
8068
+ });
8069
+ if (policy.kind !== "durable-public-stale") {
8070
+ return null;
8071
+ }
8072
+ const keyResult = derivePublishedRuntimeCacheKey(input);
8073
+ if (!keyResult.ok) {
8074
+ return null;
8075
+ }
8076
+ return {
8077
+ cacheKey: keyResult.key,
8078
+ endpoint: keyResult.endpoint,
8079
+ normalizedParams: keyResult.normalizedParams,
8080
+ freshTtlSec: policy.freshTtlSec,
8081
+ staleTtlSec: policy.staleTtlSec,
8082
+ siteId: input.siteId ?? null
8083
+ };
8084
+ }
7517
8085
  function normalizeEntryIdentifierRefs(identifiers) {
7518
8086
  const trimmed = identifiers.map((identifier) => identifier.trim()).filter((identifier) => identifier.length > 0);
7519
8087
  if (trimmed.length === 0) {
@@ -7747,6 +8315,8 @@ function createRiverbankClient(config) {
7747
8315
  source,
7748
8316
  isPreview: details.isPreview,
7749
8317
  cacheKey: details.cacheKey,
8318
+ cacheTier: details.cacheTier,
8319
+ durableCache: details.durableCache,
7750
8320
  error: details.error,
7751
8321
  staleAgeSec: details.staleAgeSec,
7752
8322
  prebuildAgeSec: details.prebuildAgeSec,
@@ -7756,7 +8326,7 @@ function createRiverbankClient(config) {
7756
8326
  };
7757
8327
  lastStatus = status;
7758
8328
  config.resilience?.onStatusChange?.(status);
7759
- const nowDegraded = source === "stale" || source === "error";
8329
+ const nowDegraded = isDegradedResilienceStatus(source, details);
7760
8330
  if (nowDegraded !== isDegraded) {
7761
8331
  isDegraded = nowDegraded;
7762
8332
  config.resilience?.onDegradedMode?.(nowDegraded, status);
@@ -7766,6 +8336,80 @@ function createRiverbankClient(config) {
7766
8336
  resilience: status
7767
8337
  };
7768
8338
  }
8339
+ async function tryPublishedRuntimeCacheFallback(plan, statusDetails, errorInfo) {
8340
+ const reader = config.publishedRuntimeCache?.read;
8341
+ if (!plan || !reader) {
8342
+ return null;
8343
+ }
8344
+ try {
8345
+ const result = await reader({
8346
+ cacheKey: plan.cacheKey,
8347
+ endpoint: plan.endpoint,
8348
+ payloadSchemaVersion: DEFAULT_PUBLISHED_RUNTIME_CACHE_PAYLOAD_SCHEMA_VERSION
8349
+ });
8350
+ if (result.kind === "miss") {
8351
+ return {
8352
+ kind: "miss",
8353
+ diagnostic: {
8354
+ outcome: "miss",
8355
+ reason: result.reason
8356
+ }
8357
+ };
8358
+ }
8359
+ if (result.kind === "error") {
8360
+ return {
8361
+ kind: "error",
8362
+ diagnostic: {
8363
+ outcome: "error",
8364
+ error: result.error
8365
+ }
8366
+ };
8367
+ }
8368
+ return {
8369
+ kind: "hit",
8370
+ result: emitStatus(
8371
+ result.freshness === "fresh" ? "cache" : "stale",
8372
+ result.payload,
8373
+ statusDetails({
8374
+ error: errorInfo,
8375
+ staleAgeSec: result.staleAgeSec,
8376
+ cacheTier: result.freshness === "fresh" ? "durable-fresh" : "durable-stale"
8377
+ })
8378
+ )
8379
+ };
8380
+ } catch (error) {
8381
+ return {
8382
+ kind: "error",
8383
+ diagnostic: {
8384
+ outcome: "error",
8385
+ error: {
8386
+ kind: "adapter_exception",
8387
+ message: error instanceof Error ? error.message : String(error)
8388
+ }
8389
+ }
8390
+ };
8391
+ }
8392
+ }
8393
+ async function writePublishedRuntimeCache(plan, payload) {
8394
+ const writer = config.publishedRuntimeCache?.write;
8395
+ if (!plan || !writer) {
8396
+ return;
8397
+ }
8398
+ try {
8399
+ await writer({
8400
+ cacheKey: plan.cacheKey,
8401
+ endpoint: plan.endpoint,
8402
+ normalizedParams: plan.normalizedParams,
8403
+ payload,
8404
+ siteId: plan.siteId ?? getRuntimePayloadSiteId(payload),
8405
+ freshTtlSec: plan.freshTtlSec,
8406
+ staleTtlSec: plan.staleTtlSec,
8407
+ payloadSchemaVersion: DEFAULT_PUBLISHED_RUNTIME_CACHE_PAYLOAD_SCHEMA_VERSION,
8408
+ writeReason: "live_success"
8409
+ });
8410
+ } catch {
8411
+ }
8412
+ }
7769
8413
  async function resilientFetch(cacheKey, fetcher, options) {
7770
8414
  const requestId = generateRequestId2();
7771
8415
  const startTime = Date.now();
@@ -7781,7 +8425,11 @@ function createRiverbankClient(config) {
7781
8425
  if (cacheEnabled && !options.force) {
7782
8426
  const fresh = cache.getFresh(cacheKey);
7783
8427
  if (fresh !== null) {
7784
- return emitStatus("cache", fresh, statusDetails());
8428
+ return emitStatus(
8429
+ "cache",
8430
+ fresh,
8431
+ statusDetails({ cacheTier: "memory-fresh" })
8432
+ );
7785
8433
  }
7786
8434
  }
7787
8435
  if (resilienceEnabled && circuitBreaker.isOpen()) {
@@ -7793,6 +8441,7 @@ function createRiverbankClient(config) {
7793
8441
  stale.value,
7794
8442
  statusDetails({
7795
8443
  staleAgeSec: stale.staleAgeSec,
8444
+ cacheTier: "memory-stale",
7796
8445
  error: {
7797
8446
  code: "circuit_open",
7798
8447
  message: "Circuit breaker is open"
@@ -7801,6 +8450,15 @@ function createRiverbankClient(config) {
7801
8450
  );
7802
8451
  }
7803
8452
  }
8453
+ const durableFallback = allowFallbacks && !isPreview ? await tryPublishedRuntimeCacheFallback(
8454
+ options.publishedRuntimeCache,
8455
+ statusDetails,
8456
+ { code: "circuit_open", message: "Circuit breaker is open" }
8457
+ ) : null;
8458
+ const durableCache = durableFallback?.kind === "miss" || durableFallback?.kind === "error" ? durableFallback.diagnostic : void 0;
8459
+ if (durableFallback?.kind === "hit") {
8460
+ return durableFallback.result;
8461
+ }
7804
8462
  if (allowFallbacks && !isPreview && options.prebuildFallback) {
7805
8463
  const prebuildResult = options.prebuildFallback();
7806
8464
  if (prebuildResult) {
@@ -7809,6 +8467,8 @@ function createRiverbankClient(config) {
7809
8467
  prebuildResult.data,
7810
8468
  statusDetails({
7811
8469
  prebuildAgeSec: prebuildResult.prebuildAgeSec,
8470
+ cacheTier: "prebuild",
8471
+ durableCache,
7812
8472
  error: {
7813
8473
  code: "circuit_open",
7814
8474
  message: "Circuit breaker is open"
@@ -7822,6 +8482,7 @@ function createRiverbankClient(config) {
7822
8482
  "error",
7823
8483
  null,
7824
8484
  statusDetails({
8485
+ durableCache,
7825
8486
  error: { code: "circuit_open", message: "Circuit breaker is open" }
7826
8487
  })
7827
8488
  );
@@ -7862,6 +8523,9 @@ function createRiverbankClient(config) {
7862
8523
  if (cacheEnabled) {
7863
8524
  cache.set(cacheKey, data);
7864
8525
  }
8526
+ if (allowFallbacks && !isPreview) {
8527
+ await writePublishedRuntimeCache(options.publishedRuntimeCache, data);
8528
+ }
7865
8529
  return emitStatus("live", data, statusDetails());
7866
8530
  } catch (error) {
7867
8531
  if (resilienceEnabled && error instanceof Error) {
@@ -7870,44 +8534,47 @@ function createRiverbankClient(config) {
7870
8534
  if (allowFallbacks && !isPreview && staleIfError && cacheEnabled) {
7871
8535
  const stale = cache.getStale(cacheKey);
7872
8536
  if (stale) {
7873
- const errorInfo2 = error instanceof RiverbankApiError ? {
7874
- code: error.code,
7875
- message: error.message,
7876
- status: error.status
7877
- } : { message: error.message };
8537
+ const errorInfo2 = getRiverbankErrorInfo(error);
7878
8538
  return emitStatus(
7879
8539
  "stale",
7880
8540
  stale.value,
7881
8541
  statusDetails({
7882
8542
  staleAgeSec: stale.staleAgeSec,
8543
+ cacheTier: "memory-stale",
7883
8544
  error: errorInfo2
7884
8545
  })
7885
8546
  );
7886
8547
  }
7887
8548
  }
8549
+ const errorInfo = getRiverbankErrorInfo(error);
8550
+ const durableFallback = allowFallbacks && !isPreview ? await tryPublishedRuntimeCacheFallback(
8551
+ options.publishedRuntimeCache,
8552
+ statusDetails,
8553
+ errorInfo
8554
+ ) : null;
8555
+ const durableCache = durableFallback?.kind === "miss" || durableFallback?.kind === "error" ? durableFallback.diagnostic : void 0;
8556
+ if (durableFallback?.kind === "hit") {
8557
+ return durableFallback.result;
8558
+ }
7888
8559
  if (allowFallbacks && !isPreview && options.prebuildFallback) {
7889
8560
  const prebuildResult = options.prebuildFallback();
7890
8561
  if (prebuildResult) {
7891
- const errorInfo2 = error instanceof RiverbankApiError ? {
7892
- code: error.code,
7893
- message: error.message,
7894
- status: error.status
7895
- } : { message: error.message };
7896
8562
  return emitStatus(
7897
8563
  "prebuild",
7898
8564
  prebuildResult.data,
7899
8565
  statusDetails({
7900
8566
  prebuildAgeSec: prebuildResult.prebuildAgeSec,
7901
- error: errorInfo2
8567
+ cacheTier: "prebuild",
8568
+ durableCache,
8569
+ error: errorInfo
7902
8570
  })
7903
8571
  );
7904
8572
  }
7905
8573
  }
7906
- const errorInfo = error instanceof RiverbankApiError ? { code: error.code, message: error.message, status: error.status } : { message: error.message };
7907
8574
  const failure = emitStatus(
7908
8575
  "error",
7909
8576
  null,
7910
- statusDetails({ error: errorInfo })
8577
+ statusDetails({ error: errorInfo, durableCache })
7911
8578
  );
7912
8579
  throw attachResilienceStatusToError(error, failure.resilience);
7913
8580
  }
@@ -7957,8 +8624,12 @@ function createRiverbankClient(config) {
7957
8624
  );
7958
8625
  }
7959
8626
  const siteIdentifier = slug || domain || id;
7960
- const cacheKey = `site:${siteIdentifier ?? "unknown"}:${currentPath ?? ""}`;
7961
8627
  const siteId = id || slug || domain;
8628
+ const publishedRuntimeCache = planPublishedRuntimeCache({
8629
+ endpoint: "getSite",
8630
+ params: { slug, domain, id, currentPath, force }
8631
+ });
8632
+ const cacheKey = publishedRuntimeCache?.cacheKey ?? `site:${siteIdentifier ?? "unknown"}:${currentPath ?? ""}`;
7962
8633
  return resilientFetch(
7963
8634
  cacheKey,
7964
8635
  async (sig) => {
@@ -7981,13 +8652,19 @@ function createRiverbankClient(config) {
7981
8652
  {
7982
8653
  signal,
7983
8654
  force,
8655
+ publishedRuntimeCache,
7984
8656
  prebuildFallback: prebuildLoader && siteId ? () => prebuildLoader.loadSite(siteId) : void 0
7985
8657
  }
7986
8658
  );
7987
8659
  }
7988
8660
  async function getPageWithResilienceInternal(params) {
7989
8661
  const { siteId, path, preview = false, signal } = params;
7990
- const cacheKey = `page:${siteId}:${path}:${preview}`;
8662
+ const publishedRuntimeCache = planPublishedRuntimeCache({
8663
+ endpoint: "getContentByPath",
8664
+ params: { siteId, path, preview },
8665
+ siteId
8666
+ });
8667
+ const cacheKey = publishedRuntimeCache?.cacheKey ?? `page:${siteId}:${path}:${preview}`;
7991
8668
  return resilientFetch(
7992
8669
  cacheKey,
7993
8670
  async (sig) => {
@@ -8000,6 +8677,7 @@ function createRiverbankClient(config) {
8000
8677
  {
8001
8678
  preview,
8002
8679
  signal,
8680
+ publishedRuntimeCache,
8003
8681
  // Prebuild fallback only for published pages (not preview)
8004
8682
  prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadPage(siteId, path) : void 0
8005
8683
  }
@@ -8545,7 +9223,7 @@ function err(error) {
8545
9223
  }
8546
9224
 
8547
9225
  // ../core/src/assert-never.ts
8548
- function assertNever(value, message = "Unexpected variant") {
9226
+ function assertNever2(value, message = "Unexpected variant") {
8549
9227
  throw new Error(`${message}: ${String(value)}`);
8550
9228
  }
8551
9229
 
@@ -8869,7 +9547,7 @@ var navigationLinkInputSchema = z2.discriminatedUnion(
8869
9547
  );
8870
9548
 
8871
9549
  // ../api/src/sdkConfig/contracts.ts
8872
- import { z as z65 } from "zod";
9550
+ import { z as z63 } from "zod";
8873
9551
 
8874
9552
  // ../blocks/src/system/manifest/augmentManifest.ts
8875
9553
  function augmentManifest(manifest) {
@@ -9195,12 +9873,17 @@ var visibleWhenPredicateSchema = z4.object({
9195
9873
  minItems: z4.number().int().nonnegative().optional(),
9196
9874
  maxItems: z4.number().int().nonnegative().optional()
9197
9875
  });
9198
- var visibleWhenSchema = z4.union([
9199
- visibleWhenPredicateSchema,
9200
- z4.object({
9201
- allOf: z4.array(visibleWhenPredicateSchema).min(1)
9202
- })
9203
- ]);
9876
+ var visibleWhenSchema = z4.lazy(
9877
+ () => z4.union([
9878
+ visibleWhenPredicateSchema,
9879
+ z4.object({
9880
+ allOf: z4.array(visibleWhenSchema).min(1)
9881
+ }),
9882
+ z4.object({
9883
+ anyOf: z4.array(visibleWhenSchema).min(1)
9884
+ })
9885
+ ])
9886
+ );
9204
9887
  var uiSchema = z4.object({
9205
9888
  widget: z4.string().optional(),
9206
9889
  // Container/widget presets (used by Group/Repeater widgets themselves, not for widget selection)
@@ -9964,7 +10647,7 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
9964
10647
  const next = encodeURIComponent(nextBlockId);
9965
10648
  return asDesignBoundaryId(`boundary:${previous}:${next}`);
9966
10649
  }
9967
- function assertNever2(value, message = "Unhandled Theme V2 variant") {
10650
+ function assertNever3(value, message = "Unhandled Theme V2 variant") {
9968
10651
  throw new Error(`${message}: ${String(value)}`);
9969
10652
  }
9970
10653
  function brandNonEmptyString(value, label) {
@@ -16345,7 +17028,7 @@ function themedHeaderShadow(theme) {
16345
17028
  case "high":
16346
17029
  return { elevation: "lg" };
16347
17030
  default:
16348
- return assertNever2(
17031
+ return assertNever3(
16349
17032
  theme.shadow.elevation,
16350
17033
  "Unhandled theme shadow elevation"
16351
17034
  );
@@ -22186,9 +22869,6 @@ var heroCopyFragment = defineFragment({
22186
22869
  maxLength: 600
22187
22870
  }
22188
22871
  ],
22189
- // Layout order is [eyebrow, headline, subheadline]. The hero block's
22190
- // `splitEditorial` variant reads these nodes by index; keep the order stable
22191
- // (it fails fast at import if the count changes).
22192
22872
  layout: [
22193
22873
  text(
22194
22874
  {
@@ -24426,32 +25106,6 @@ var splitReverseLayout = splitLayoutWith([
24426
25106
  splitContentColumn,
24427
25107
  splitImageColumn
24428
25108
  ]);
24429
- var heroEyebrowNode = heroCopyFragment.layout[0];
24430
- var heroHeadlineNode = heroCopyFragment.layout[1];
24431
- var heroSubheadlineNode = heroCopyFragment.layout[2];
24432
- var heroCtaRowNode = heroCtaRowFragment.layout[0];
24433
- if (!heroEyebrowNode || !heroHeadlineNode || !heroSubheadlineNode || !heroCtaRowNode) {
24434
- throw new Error("Hero copy/CTA fragments are missing their expected layout nodes.");
24435
- }
24436
- var heroEditorialBottomRow = inline(
24437
- {
24438
- gap: "lg",
24439
- align: "end",
24440
- justify: "start",
24441
- wrap: true,
24442
- className: "rb-w-full"
24443
- },
24444
- [heroSubheadlineNode, heroCtaRowNode]
24445
- );
24446
- var splitEditorialContentColumn = heroContentWrapper(
24447
- [heroEyebrowNode, heroHeadlineNode, heroEditorialBottomRow],
24448
- "md",
24449
- "rb-w-full rb-text-left"
24450
- );
24451
- var splitEditorialLayout = splitLayoutWith([
24452
- splitEditorialContentColumn,
24453
- splitImageColumn
24454
- ]);
24455
25109
  var heroConfig = {
24456
25110
  id: "block.hero",
24457
25111
  title: "Hero",
@@ -24475,7 +25129,8 @@ var heroConfig = {
24475
25129
  id: "imageShape",
24476
25130
  label: "Image shape",
24477
25131
  defaultValue: "default",
24478
- uiIntent: "display"
25132
+ uiIntent: "display",
25133
+ visibleWhen: { field: "variant", oneOf: ["split", "splitReverse"] }
24479
25134
  })
24480
25135
  ],
24481
25136
  layout: classicLayout,
@@ -24483,8 +25138,7 @@ var heroConfig = {
24483
25138
  classic: classicLayout,
24484
25139
  micro: microLayout,
24485
25140
  split: splitLayout,
24486
- splitReverse: splitReverseLayout,
24487
- splitEditorial: splitEditorialLayout
25141
+ splitReverse: splitReverseLayout
24488
25142
  },
24489
25143
  defaultVariant: "classic",
24490
25144
  description: "Hero section with headline, subtitle, and repeatable CTAs.",
@@ -26360,8 +27014,10 @@ function resolveGeneratedHeroLayoutStyles(content) {
26360
27014
  return isPlainObject(raw) ? raw : null;
26361
27015
  }
26362
27016
  function readHeroLayoutString(content, generatedKey, fallbackKey = generatedKey) {
27017
+ const explicitValue = readString(content, fallbackKey);
27018
+ if (explicitValue !== void 0) return explicitValue;
26363
27019
  const generated = resolveGeneratedHeroLayoutStyles(content);
26364
- return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : readString(content, fallbackKey);
27020
+ return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : void 0;
26365
27021
  }
26366
27022
  function resolveHeroVariant(content) {
26367
27023
  const variant = readString(content, "variant");
@@ -26374,7 +27030,7 @@ function resolveHeroContentAlignment(content) {
26374
27030
  const raw = readHeroLayoutString(content, "contentAlignment");
26375
27031
  if (raw === "left" || raw === "center" || raw === "right") return raw;
26376
27032
  const variant = resolveHeroVariant(content);
26377
- if (variant === "split" || variant === "splitReverse" || variant === "splitEditorial") return "left";
27033
+ if (variant === "split" || variant === "splitReverse") return "left";
26378
27034
  return "center";
26379
27035
  }
26380
27036
  function resolveHeroVerticalAlignment(content) {
@@ -26384,7 +27040,7 @@ function resolveHeroVerticalAlignment(content) {
26384
27040
  const minHeight = sectionStyles?.minHeight;
26385
27041
  if (minHeight === "banner" || minHeight === "hero" || minHeight === "immersive") return "center";
26386
27042
  const variant = resolveHeroVariant(content);
26387
- if (variant === "split" || variant === "splitReverse" || variant === "splitEditorial") return "center";
27043
+ if (variant === "split" || variant === "splitReverse") return "center";
26388
27044
  return "top";
26389
27045
  }
26390
27046
  function resolveHeroContentMaxWidth(content) {
@@ -26800,7 +27456,7 @@ function planSiteChromePlacement(positioning) {
26800
27456
  standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
26801
27457
  };
26802
27458
  default:
26803
- return assertNever2(positioning);
27459
+ return assertNever3(positioning);
26804
27460
  }
26805
27461
  }
26806
27462
 
@@ -29953,9 +30609,6 @@ var appointmentBookingBlockDefinition = {
29953
30609
  }
29954
30610
  };
29955
30611
 
29956
- // ../blocks/src/system/blocks/event-registration.ts
29957
- import { z as z47 } from "zod";
29958
-
29959
30612
  // ../blocks/src/system/blocks/events/shared/schemas.ts
29960
30613
  import { z as z43 } from "zod";
29961
30614
 
@@ -30577,24 +31230,57 @@ function normalizeEventStaffMemberId(value) {
30577
31230
  return trimmed ? trimmed : null;
30578
31231
  }
30579
31232
 
30580
- // ../blocks/src/system/blocks/event-registration.shared.ts
31233
+ // ../blocks/src/system/blocks/shop.shared.ts
30581
31234
  import { z as z44 } from "zod";
30582
- var occurrenceContextSchema = z44.object({
31235
+ var publicPassProductSchema = z44.object({
31236
+ id: z44.string(),
31237
+ productUseCase: z44.enum(["event_pass", "appointment_package"]).default("event_pass"),
31238
+ name: z44.string(),
31239
+ description: z44.string().nullable(),
31240
+ price: z44.number(),
31241
+ currency: z44.string(),
31242
+ creditsTotal: z44.number(),
31243
+ pricePerCredit: z44.number(),
31244
+ validDays: z44.number().nullable(),
31245
+ eligibleCategoryIds: z44.array(z44.string()),
31246
+ eligibleCategoryNames: z44.array(z44.string())
31247
+ });
31248
+ var publicPassProductCollectionSchema = z44.object({
31249
+ passes: z44.array(publicPassProductSchema)
31250
+ });
31251
+ var publicMembershipProductSchema = z44.object({
30583
31252
  id: z44.string(),
30584
- seriesId: z44.string(),
30585
- startsAt: z44.string(),
30586
- endsAt: z44.string(),
30587
- timeZone: z44.string(),
30588
- capacityOverride: z44.number().nullable().optional(),
30589
- overrides: z44.record(z44.string(), z44.unknown()).nullable().optional()
31253
+ name: z44.string(),
31254
+ description: z44.string().nullable(),
31255
+ price: z44.number(),
31256
+ currency: z44.string(),
31257
+ billingInterval: z44.enum(["month", "year"]),
31258
+ eligibleCategoryIds: z44.array(z44.string()),
31259
+ eligibleCategoryNames: z44.array(z44.string())
31260
+ });
31261
+ var publicMembershipProductCollectionSchema = z44.object({
31262
+ memberships: z44.array(publicMembershipProductSchema)
31263
+ });
31264
+
31265
+ // ../blocks/src/system/blocks/event-registration.shared.ts
31266
+ import { z as z45 } from "zod";
31267
+ var occurrenceContextSchema = z45.object({
31268
+ id: z45.string(),
31269
+ seriesId: z45.string(),
31270
+ startsAt: z45.string(),
31271
+ endsAt: z45.string(),
31272
+ timeZone: z45.string(),
31273
+ capacityOverride: z45.number().nullable().optional(),
31274
+ overrides: z45.record(z45.string(), z45.unknown()).nullable().optional()
30590
31275
  }).nullable();
30591
31276
 
30592
31277
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
30593
- import { z as z46 } from "zod";
31278
+ import { z as z47 } from "zod";
30594
31279
 
30595
31280
  // ../blocks/src/system/constants/events.ts
30596
31281
  var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
30597
- var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
31282
+ var eventCalendarDisplayModeValues = ["combined", "calendar", "list", "timetable"];
31283
+ var eventCalendarDefaultViewValues = ["month", "week"];
30598
31284
  var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
30599
31285
  var eventCalendarListLayoutOptions = [
30600
31286
  { id: "stack", label: "Stack" },
@@ -30604,6 +31290,9 @@ var eventCalendarListLayoutOptions = [
30604
31290
  function isEventCalendarDisplayMode(value) {
30605
31291
  return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
30606
31292
  }
31293
+ function isEventCalendarDefaultView(value) {
31294
+ return typeof value === "string" && eventCalendarDefaultViewValues.includes(value);
31295
+ }
30607
31296
  function isEventCalendarListLayout(value) {
30608
31297
  return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
30609
31298
  }
@@ -30744,16 +31433,17 @@ function readAmount(value) {
30744
31433
  }
30745
31434
 
30746
31435
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
30747
- import { z as z45 } from "zod";
30748
- var previewStageSchema = z45.enum(["preview", "published"]);
30749
- var registrationButtonVariantSchema = z45.enum(["primary", "secondary", "outline"]);
30750
- var eventButtonVariantSchema = z45.enum(["primary", "secondary", "outline", "link"]);
30751
- var eventLayoutSchema = z45.enum(eventCalendarListLayoutValues);
30752
- var eventCalendarDisplayModeSchema = z45.enum(eventCalendarDisplayModeValues);
30753
- var columnOptionSchema = z45.enum(["2", "3", "4"]);
30754
- var weekStartSchema = z45.enum(["sunday", "monday"]);
30755
- var filterAutoShowSchema = z45.enum(["auto", "always", "never"]);
30756
- var calendarTabViewsSchema = z45.enum(["both", "month", "week"]);
31436
+ import { z as z46 } from "zod";
31437
+ var previewStageSchema = z46.enum(["preview", "published"]);
31438
+ var registrationButtonVariantSchema = z46.enum(["primary", "secondary", "outline"]);
31439
+ var eventButtonVariantSchema = z46.enum(["primary", "secondary", "outline", "link"]);
31440
+ var eventLayoutSchema = z46.enum(eventCalendarListLayoutValues);
31441
+ var eventCalendarDisplayModeSchema = z46.enum(eventCalendarDisplayModeValues);
31442
+ var eventCalendarDefaultViewSchema = z46.enum(eventCalendarDefaultViewValues);
31443
+ var columnOptionSchema = z46.enum(["2", "3", "4"]);
31444
+ var weekStartSchema = z46.enum(["sunday", "monday"]);
31445
+ var filterAutoShowSchema = z46.enum(["auto", "always", "never"]);
31446
+ var calendarTabViewsSchema = z46.enum(["both", "month", "week"]);
30757
31447
 
30758
31448
  // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
30759
31449
  function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
@@ -30771,7 +31461,7 @@ function eventMatchesOccurrenceId(event, occurrenceId) {
30771
31461
  function findPreSelectedEvent(input) {
30772
31462
  const occurrenceContext = input.occurrenceContext;
30773
31463
  if (!occurrenceContext) {
30774
- return null;
31464
+ return input.scopedEvents.length === 1 ? input.scopedEvents[0] ?? null : null;
30775
31465
  }
30776
31466
  const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
30777
31467
  startsAt: occurrenceContext.startsAt,
@@ -30813,68 +31503,72 @@ function toRegistrationEvents(events) {
30813
31503
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
30814
31504
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
30815
31505
  var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
30816
- var contentEntrySchema = z46.object({
30817
- id: z46.string(),
30818
- slug: z46.string(),
30819
- contentTypeSlug: z46.string()
31506
+ var contentEntrySchema = z47.object({
31507
+ id: z47.string(),
31508
+ slug: z47.string(),
31509
+ contentTypeSlug: z47.string()
30820
31510
  });
30821
- var eventRegistrationPublicEventSchema = z46.preprocess(
31511
+ var eventRegistrationPublicEventSchema = z47.preprocess(
30822
31512
  normalizeEventRegistrationEventInput,
30823
31513
  publicEventSchema
30824
31514
  );
30825
- var eventRegistrationSourceSchema = z46.object({
30826
- siteId: z46.string().optional(),
30827
- apiBaseUrl: z46.string().optional(),
30828
- portalToken: z46.string().nullable().optional(),
30829
- previewToken: z46.string().nullable().optional(),
31515
+ var eventRegistrationSourceSchema = z47.object({
31516
+ siteId: z47.string().optional(),
31517
+ apiBaseUrl: z47.string().optional(),
31518
+ portalToken: z47.string().nullable().optional(),
31519
+ previewToken: z47.string().nullable().optional(),
30830
31520
  occurrenceContext: occurrenceContextSchema.optional(),
30831
31521
  contentEntry: contentEntrySchema.nullable().optional(),
30832
- events: z46.array(eventRegistrationPublicEventSchema).nullable().optional(),
30833
- className: z46.string().nullable().optional(),
30834
- buttonText: z46.string().nullable().optional(),
30835
- maxTickets: z46.string().nullable().optional(),
30836
- showVenue: z46.boolean().optional(),
30837
- showCapacity: z46.boolean().optional(),
30838
- successMessage: z46.string().optional(),
30839
- waitlistMessage: z46.string().optional(),
31522
+ events: z47.array(eventRegistrationPublicEventSchema).nullable().optional(),
31523
+ className: z47.string().nullable().optional(),
31524
+ buttonText: z47.string().nullable().optional(),
31525
+ maxTickets: z47.string().nullable().optional(),
31526
+ showVenue: z47.boolean().optional(),
31527
+ showCapacity: z47.boolean().optional(),
31528
+ successMessage: z47.string().optional(),
31529
+ waitlistMessage: z47.string().optional(),
30840
31530
  buttonVariant: registrationButtonVariantSchema.optional(),
30841
- overlayEnabled: z46.boolean().optional(),
30842
- spamProtectionEnabled: z46.boolean().optional(),
31531
+ overlayEnabled: z47.boolean().optional(),
31532
+ spamProtectionEnabled: z47.boolean().optional(),
30843
31533
  stage: previewStageSchema.optional(),
30844
- supportEmail: z46.string().optional()
30845
- });
30846
- var eventRegistrationDisplaySchema = z46.object({
30847
- kind: z46.literal("event-registration"),
30848
- state: z46.literal("generic-shell"),
30849
- className: z46.string().nullable(),
30850
- titleText: z46.string(),
30851
- bodyText: z46.string(),
30852
- stepLabels: z46.array(z46.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
30853
- summaryButtonText: z46.string()
30854
- });
30855
- var eventRegistrationHydrationSchema = z46.object({
31534
+ supportEmail: z47.string().optional(),
31535
+ sitePasses: publicPassProductCollectionSchema.nullable().optional(),
31536
+ siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
31537
+ });
31538
+ var eventRegistrationDisplaySchema = z47.object({
31539
+ kind: z47.literal("event-registration"),
31540
+ state: z47.literal("generic-shell"),
31541
+ className: z47.string().nullable(),
31542
+ titleText: z47.string(),
31543
+ bodyText: z47.string(),
31544
+ stepLabels: z47.array(z47.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
31545
+ summaryButtonText: z47.string()
31546
+ });
31547
+ var eventRegistrationHydrationSchema = z47.object({
30856
31548
  occurrenceContext: occurrenceContextSchema.optional(),
30857
31549
  contentEntry: contentEntrySchema.nullable().optional(),
30858
- events: z46.array(eventRegistrationPublicEventSchema).nullable().optional(),
30859
- maxTickets: z46.string().optional(),
30860
- showVenue: z46.boolean().optional(),
30861
- showCapacity: z46.boolean().optional(),
30862
- successMessage: z46.string().optional(),
30863
- waitlistMessage: z46.string().optional(),
31550
+ events: z47.array(eventRegistrationPublicEventSchema).nullable().optional(),
31551
+ maxTickets: z47.string().optional(),
31552
+ showVenue: z47.boolean().optional(),
31553
+ showCapacity: z47.boolean().optional(),
31554
+ successMessage: z47.string().optional(),
31555
+ waitlistMessage: z47.string().optional(),
30864
31556
  buttonVariant: registrationButtonVariantSchema.optional(),
30865
- overlayEnabled: z46.boolean().optional(),
30866
- spamProtectionEnabled: z46.boolean().optional(),
30867
- supportEmail: z46.string().optional()
31557
+ overlayEnabled: z47.boolean().optional(),
31558
+ spamProtectionEnabled: z47.boolean().optional(),
31559
+ supportEmail: z47.string().optional(),
31560
+ sitePasses: publicPassProductCollectionSchema.nullable().optional(),
31561
+ siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
30868
31562
  });
30869
- var eventRegistrationRenderSchema = z46.object({
31563
+ var eventRegistrationRenderSchema = z47.object({
30870
31564
  display: eventRegistrationDisplaySchema,
30871
31565
  hydration: eventRegistrationHydrationSchema
30872
31566
  });
30873
- var eventRegistrationIslandMetaCodec = createZodCodec(z46.object({
30874
- siteId: z46.string().optional(),
30875
- apiBaseUrl: z46.string().optional(),
30876
- portalToken: z46.string().nullable().optional(),
30877
- previewToken: z46.string().nullable().optional(),
31567
+ var eventRegistrationIslandMetaCodec = createZodCodec(z47.object({
31568
+ siteId: z47.string().optional(),
31569
+ apiBaseUrl: z47.string().optional(),
31570
+ portalToken: z47.string().nullable().optional(),
31571
+ previewToken: z47.string().nullable().optional(),
30878
31572
  stage: previewStageSchema.optional()
30879
31573
  }));
30880
31574
  var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -30980,7 +31674,9 @@ var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
30980
31674
  buttonVariant: source.buttonVariant,
30981
31675
  overlayEnabled: source.overlayEnabled,
30982
31676
  spamProtectionEnabled: source.spamProtectionEnabled,
30983
- supportEmail: source.supportEmail
31677
+ supportEmail: source.supportEmail,
31678
+ sitePasses: source.sitePasses ?? null,
31679
+ siteMemberships: source.siteMemberships ?? null
30984
31680
  }
30985
31681
  })
30986
31682
  });
@@ -31162,6 +31858,8 @@ var eventRegistrationManifest = createBlockManifest({
31162
31858
  },
31163
31859
  // Event data from loader
31164
31860
  events: { $bind: { from: "data.events" } },
31861
+ sitePasses: { $bind: { from: "data.sitePasses" } },
31862
+ siteMemberships: { $bind: { from: "data.siteMemberships" } },
31165
31863
  // Stage for preview mode (allows registering for draft events)
31166
31864
  stage: {
31167
31865
  $bind: { from: "$root.previewStage", fallback: "published" }
@@ -31180,7 +31878,9 @@ var eventRegistrationBlockDefinition = {
31180
31878
  manifest: eventRegistrationManifest,
31181
31879
  runtime: eventRegistrationBlockRuntime,
31182
31880
  dataSchemas: {
31183
- events: z47.array(publicEventSchema).optional(),
31881
+ events: publicEventsArraySchema.optional(),
31882
+ sitePasses: publicPassProductCollectionSchema.optional(),
31883
+ siteMemberships: publicMembershipProductCollectionSchema.optional(),
31184
31884
  occurrenceContext: occurrenceContextSchema.optional()
31185
31885
  },
31186
31886
  dataLoaders: {
@@ -31199,6 +31899,20 @@ var eventRegistrationBlockDefinition = {
31199
31899
  entryId: { $bind: { from: "$root.contentEntry._entryId", fallback: "" } }
31200
31900
  },
31201
31901
  mode: "server"
31902
+ },
31903
+ sitePasses: {
31904
+ endpoint: "listPublicPasses",
31905
+ params: {
31906
+ siteId: { $bind: { from: "$root.siteId" } }
31907
+ },
31908
+ mode: "server"
31909
+ },
31910
+ siteMemberships: {
31911
+ endpoint: "listPublicMemberships",
31912
+ params: {
31913
+ siteId: { $bind: { from: "$root.siteId" } }
31914
+ },
31915
+ mode: "server"
31202
31916
  }
31203
31917
  }
31204
31918
  };
@@ -31530,35 +32244,7 @@ var courseRegistrationBlockDefinition = {
31530
32244
  };
31531
32245
 
31532
32246
  // ../blocks/src/system/blocks/event-details.ts
31533
- import { z as z50 } from "zod";
31534
-
31535
- // ../blocks/src/system/blocks/shop.shared.ts
31536
32247
  import { z as z49 } from "zod";
31537
- var publicPassProductSchema = z49.object({
31538
- id: z49.string(),
31539
- productUseCase: z49.enum(["event_pass", "appointment_package"]).default("event_pass"),
31540
- name: z49.string(),
31541
- description: z49.string().nullable(),
31542
- price: z49.number(),
31543
- currency: z49.string(),
31544
- creditsTotal: z49.number(),
31545
- pricePerCredit: z49.number(),
31546
- validDays: z49.number().nullable(),
31547
- eligibleCategoryIds: z49.array(z49.string()),
31548
- eligibleCategoryNames: z49.array(z49.string())
31549
- });
31550
- var publicMembershipProductSchema = z49.object({
31551
- id: z49.string(),
31552
- name: z49.string(),
31553
- description: z49.string().nullable(),
31554
- price: z49.number(),
31555
- currency: z49.string(),
31556
- billingInterval: z49.enum(["month", "year"]),
31557
- eligibleCategoryIds: z49.array(z49.string()),
31558
- eligibleCategoryNames: z49.array(z49.string())
31559
- });
31560
-
31561
- // ../blocks/src/system/blocks/event-details.ts
31562
32248
  var eventDetailsManifest = createBlockManifest({
31563
32249
  id: "block.event-details",
31564
32250
  version: "1.0.0",
@@ -31690,40 +32376,40 @@ var eventDetailsManifest = createBlockManifest({
31690
32376
  })
31691
32377
  ]
31692
32378
  });
31693
- var occurrenceContextSchema2 = z50.object({
31694
- id: z50.string(),
31695
- seriesId: z50.string(),
31696
- startsAt: z50.string(),
31697
- endsAt: z50.string(),
31698
- timeZone: z50.string(),
31699
- capacityOverride: z50.number().nullable().optional(),
31700
- overrides: z50.record(z50.string(), z50.unknown()).nullable().optional()
32379
+ var occurrenceContextSchema2 = z49.object({
32380
+ id: z49.string(),
32381
+ seriesId: z49.string(),
32382
+ startsAt: z49.string(),
32383
+ endsAt: z49.string(),
32384
+ timeZone: z49.string(),
32385
+ capacityOverride: z49.number().nullable().optional(),
32386
+ overrides: z49.record(z49.string(), z49.unknown()).nullable().optional()
31701
32387
  }).nullable();
31702
- var eventAutoApplyDiscountPreviewBaseSchema = z50.object({
31703
- id: z50.string(),
31704
- publicLabel: z50.string(),
31705
- description: z50.string().nullable(),
31706
- minTicketsRequired: z50.number().nullable()
32388
+ var eventAutoApplyDiscountPreviewBaseSchema = z49.object({
32389
+ id: z49.string(),
32390
+ publicLabel: z49.string(),
32391
+ description: z49.string().nullable(),
32392
+ minTicketsRequired: z49.number().nullable()
31707
32393
  });
31708
- var eventAutoApplyDiscountPreviewSchema = z50.discriminatedUnion("discountType", [
32394
+ var eventAutoApplyDiscountPreviewSchema = z49.discriminatedUnion("discountType", [
31709
32395
  eventAutoApplyDiscountPreviewBaseSchema.extend({
31710
- discountType: z50.literal("percent"),
31711
- discountPercent: z50.number(),
31712
- discountAmountCents: z50.null()
32396
+ discountType: z49.literal("percent"),
32397
+ discountPercent: z49.number(),
32398
+ discountAmountCents: z49.null()
31713
32399
  }),
31714
32400
  eventAutoApplyDiscountPreviewBaseSchema.extend({
31715
- discountType: z50.literal("fixed"),
31716
- discountPercent: z50.null(),
31717
- discountAmountCents: z50.number()
32401
+ discountType: z49.literal("fixed"),
32402
+ discountPercent: z49.null(),
32403
+ discountAmountCents: z49.number()
31718
32404
  })
31719
32405
  ]);
31720
32406
  var eventDetailsBlockDefinition = {
31721
32407
  manifest: eventDetailsManifest,
31722
32408
  dataSchemas: {
31723
- eventDetailsData: z50.object({
32409
+ eventDetailsData: z49.object({
31724
32410
  events: publicEventsArraySchema,
31725
- sitePasses: z50.object({ passes: z50.array(publicPassProductSchema) }),
31726
- siteMemberships: z50.object({ memberships: z50.array(publicMembershipProductSchema) }),
32411
+ sitePasses: publicPassProductCollectionSchema,
32412
+ siteMemberships: publicMembershipProductCollectionSchema,
31727
32413
  autoApplyDiscount: eventAutoApplyDiscountPreviewSchema.nullable().optional().default(null)
31728
32414
  }).optional(),
31729
32415
  occurrenceContext: occurrenceContextSchema2.optional()
@@ -32047,7 +32733,7 @@ var eventSpotlightBlockDefinition = {
32047
32733
  };
32048
32734
 
32049
32735
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
32050
- import { z as z52 } from "zod";
32736
+ import { z as z51 } from "zod";
32051
32737
 
32052
32738
  // ../blocks/src/system/runtime/nodes/events/shared/utils.ts
32053
32739
  var COLUMN_CLASSES = {
@@ -32155,16 +32841,16 @@ function computeMediaTransformStyle(value, style, targetAspectRatio, options) {
32155
32841
  }
32156
32842
 
32157
32843
  // ../blocks/src/system/runtime/nodes/events/shared/listOptions.ts
32158
- import { z as z51 } from "zod";
32844
+ import { z as z50 } from "zod";
32159
32845
  var eventPageSizeValues = [3, 6, 10, 12, 20, 24, 30];
32160
- var eventPageSizeSchema = z51.union([
32161
- z51.literal(3),
32162
- z51.literal(6),
32163
- z51.literal(10),
32164
- z51.literal(12),
32165
- z51.literal(20),
32166
- z51.literal(24),
32167
- z51.literal(30)
32846
+ var eventPageSizeSchema = z50.union([
32847
+ z50.literal(3),
32848
+ z50.literal(6),
32849
+ z50.literal(10),
32850
+ z50.literal(12),
32851
+ z50.literal(20),
32852
+ z50.literal(24),
32853
+ z50.literal(30)
32168
32854
  ]);
32169
32855
  var eventPageSizeSet = new Set(eventPageSizeValues);
32170
32856
  function resolveEventPageSize(value, fallback = 12) {
@@ -32174,15 +32860,15 @@ function resolveEventPageSize(value, fallback = 12) {
32174
32860
  function resolveEventCalendarListPageSize(input) {
32175
32861
  return resolveEventPageSize(input.eventsPerPage);
32176
32862
  }
32177
- var eventListPaginationActionSchema = z51.discriminatedUnion("kind", [
32178
- z51.object({
32179
- kind: z51.literal("loadMore"),
32180
- label: z51.string()
32863
+ var eventListPaginationActionSchema = z50.discriminatedUnion("kind", [
32864
+ z50.object({
32865
+ kind: z50.literal("loadMore"),
32866
+ label: z50.string()
32181
32867
  }),
32182
- z51.object({
32183
- kind: z51.literal("seeAllLink"),
32184
- label: z51.string(),
32185
- href: z51.string()
32868
+ z50.object({
32869
+ kind: z50.literal("seeAllLink"),
32870
+ label: z50.string(),
32871
+ href: z50.string()
32186
32872
  })
32187
32873
  ]);
32188
32874
  function resolveEventListPaginationAction(input) {
@@ -32195,89 +32881,89 @@ function resolveEventListPaginationAction(input) {
32195
32881
  }
32196
32882
 
32197
32883
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
32198
- var legacyEventCardVariantSchema = z52.enum(["variant1", "variant2"]);
32199
- var eventCardVariantInputSchema = z52.union([
32884
+ var legacyEventCardVariantSchema = z51.enum(["variant1", "variant2"]);
32885
+ var eventCardVariantInputSchema = z51.union([
32200
32886
  cardVariantRoleSchema,
32201
32887
  legacyEventCardVariantSchema
32202
32888
  ]);
32203
- var cardOrientationSchema = z52.enum(["vertical", "horizontal"]);
32204
- var eventBlockKindSchema = z52.enum(eventBlockKindValues);
32205
- var eventSurfaceScopeSchema = z52.enum(eventSurfaceScopeValues);
32206
- var eventScheduleScopeSchema2 = z52.enum(eventScheduleScopeValues);
32207
- var eventListingSourceSchema = z52.object({
32208
- events: z52.array(publicEventSchema).nullable().optional(),
32209
- siteId: z52.string(),
32210
- apiBaseUrl: z52.string().optional(),
32889
+ var cardOrientationSchema = z51.enum(["vertical", "horizontal"]);
32890
+ var eventBlockKindSchema = z51.enum(eventBlockKindValues);
32891
+ var eventSurfaceScopeSchema = z51.enum(eventSurfaceScopeValues);
32892
+ var eventScheduleScopeSchema2 = z51.enum(eventScheduleScopeValues);
32893
+ var eventListingSourceSchema = z51.object({
32894
+ events: z51.array(publicEventSchema).nullable().optional(),
32895
+ siteId: z51.string(),
32896
+ apiBaseUrl: z51.string().optional(),
32211
32897
  stage: previewStageSchema.optional(),
32212
32898
  layout: eventLayoutSchema.optional(),
32213
32899
  columns: columnOptionSchema.optional(),
32214
- eventsPerPage: z52.string().optional(),
32215
- paginationMode: z52.enum(["loadMore", "seeAllLink"]).optional(),
32216
- seeAllUrl: z52.string().optional(),
32217
- loadMoreText: z52.string().optional(),
32900
+ eventsPerPage: z51.string().optional(),
32901
+ paginationMode: z51.enum(["loadMore", "seeAllLink"]).optional(),
32902
+ seeAllUrl: z51.string().optional(),
32903
+ loadMoreText: z51.string().optional(),
32218
32904
  cardVariant: eventCardVariantInputSchema.optional(),
32219
32905
  buttonVariant: eventButtonVariantSchema.optional(),
32220
- buttonText: z52.string().optional(),
32221
- showVenue: z52.boolean().optional(),
32222
- showMap: z52.boolean().optional(),
32223
- showCapacity: z52.boolean().optional(),
32224
- emptyMessage: z52.string().optional(),
32225
- className: z52.string().optional(),
32226
- showFilters: z52.boolean().nullable().optional(),
32906
+ buttonText: z51.string().optional(),
32907
+ showVenue: z51.boolean().optional(),
32908
+ showMap: z51.boolean().optional(),
32909
+ showCapacity: z51.boolean().optional(),
32910
+ emptyMessage: z51.string().optional(),
32911
+ className: z51.string().optional(),
32912
+ showFilters: z51.boolean().nullable().optional(),
32227
32913
  showCategoryFilter: filterAutoShowSchema.optional(),
32228
- showVenueFilter: z52.boolean().nullable().optional(),
32229
- showStaffFilter: z52.boolean().nullable().optional(),
32914
+ showVenueFilter: z51.boolean().nullable().optional(),
32915
+ showStaffFilter: z51.boolean().nullable().optional(),
32230
32916
  eventKind: eventBlockKindSchema.nullable().optional(),
32231
32917
  eventSurface: eventSurfaceScopeSchema.nullable().optional(),
32232
- filterEventPresets: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
32918
+ filterEventPresets: z51.union([z51.string(), z51.array(z51.string())]).nullable().optional(),
32233
32919
  scheduleScope: eventScheduleScopeSchema2.nullable().optional(),
32234
- filterCategoryIds: z52.string().nullable().optional(),
32235
- filterStaffMemberId: z52.string().nullable().optional(),
32236
- filterVenueId: z52.string().nullable().optional()
32920
+ filterCategoryIds: z51.string().nullable().optional(),
32921
+ filterStaffMemberId: z51.string().nullable().optional(),
32922
+ filterVenueId: z51.string().nullable().optional()
32237
32923
  });
32238
- var eventListingDisplaySchema = z52.object({
32239
- kind: z52.literal("event-listing"),
32240
- state: z52.enum(["loading", "empty", "ready"]),
32924
+ var eventListingDisplaySchema = z51.object({
32925
+ kind: z51.literal("event-listing"),
32926
+ state: z51.enum(["loading", "empty", "ready"]),
32241
32927
  listLayout: eventLayoutSchema,
32242
- className: z52.string().nullable(),
32243
- emptyMessage: z52.string(),
32244
- loadingMessage: z52.string(),
32245
- containerClass: z52.string(),
32928
+ className: z51.string().nullable(),
32929
+ emptyMessage: z51.string(),
32930
+ loadingMessage: z51.string(),
32931
+ containerClass: z51.string(),
32246
32932
  cardVariant: cardVariantRoleSchema,
32247
32933
  buttonVariant: eventButtonVariantSchema,
32248
- buttonText: z52.string(),
32249
- showVenue: z52.boolean(),
32250
- showMap: z52.boolean(),
32251
- showCapacity: z52.boolean(),
32934
+ buttonText: z51.string(),
32935
+ showVenue: z51.boolean(),
32936
+ showMap: z51.boolean(),
32937
+ showCapacity: z51.boolean(),
32252
32938
  orientation: cardOrientationSchema,
32253
- events: z52.array(publicEventSchema)
32939
+ events: z51.array(publicEventSchema)
32254
32940
  });
32255
- var eventListingHydrationSchema = z52.object({
32256
- siteId: z52.string(),
32941
+ var eventListingHydrationSchema = z51.object({
32942
+ siteId: z51.string(),
32257
32943
  stage: previewStageSchema.optional(),
32258
32944
  eventsPerPage: eventPageSizeSchema,
32259
32945
  paginationAction: eventListPaginationActionSchema,
32260
- showFilters: z52.boolean(),
32946
+ showFilters: z51.boolean(),
32261
32947
  showCategoryFilter: filterAutoShowSchema,
32262
- showVenueFilter: z52.boolean(),
32263
- showStaffFilter: z52.boolean(),
32948
+ showVenueFilter: z51.boolean(),
32949
+ showStaffFilter: z51.boolean(),
32264
32950
  eventKind: eventBlockKindSchema,
32265
32951
  eventSurface: eventSurfaceScopeSchema,
32266
- filterEventPresets: z52.string().nullable(),
32952
+ filterEventPresets: z51.string().nullable(),
32267
32953
  scheduleScope: eventScheduleScopeSchema2,
32268
- filterCategoryIds: z52.string().nullable().optional(),
32269
- filterStaffMemberId: z52.string().nullable().optional(),
32270
- filterVenueId: z52.string().nullable().optional(),
32271
- fetchInitialEventsOnMount: z52.boolean()
32954
+ filterCategoryIds: z51.string().nullable().optional(),
32955
+ filterStaffMemberId: z51.string().nullable().optional(),
32956
+ filterVenueId: z51.string().nullable().optional(),
32957
+ fetchInitialEventsOnMount: z51.boolean()
32272
32958
  });
32273
- var eventListingRenderSchema = z52.object({
32959
+ var eventListingRenderSchema = z51.object({
32274
32960
  display: eventListingDisplaySchema,
32275
32961
  hydration: eventListingHydrationSchema
32276
32962
  });
32277
32963
  var eventListingIslandMetaCodec = createZodCodec(
32278
- z52.object({
32279
- siteId: z52.string(),
32280
- apiBaseUrl: z52.string().optional(),
32964
+ z51.object({
32965
+ siteId: z51.string(),
32966
+ apiBaseUrl: z51.string().optional(),
32281
32967
  stage: previewStageSchema.optional()
32282
32968
  })
32283
32969
  );
@@ -32644,15 +33330,15 @@ var eventListingBlockDefinition = {
32644
33330
  };
32645
33331
 
32646
33332
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
32647
- import { z as z53 } from "zod";
32648
- var eventBlockKindSchema2 = z53.enum(eventBlockKindValues);
32649
- var eventSurfaceScopeSchema2 = z53.enum(eventSurfaceScopeValues);
32650
- var eventScheduleScopeSchema3 = z53.enum(eventScheduleScopeValues);
32651
- var eventCalendarSourceSchema = z53.object(
33333
+ import { z as z52 } from "zod";
33334
+ var eventBlockKindSchema2 = z52.enum(eventBlockKindValues);
33335
+ var eventSurfaceScopeSchema2 = z52.enum(eventSurfaceScopeValues);
33336
+ var eventScheduleScopeSchema3 = z52.enum(eventScheduleScopeValues);
33337
+ var eventCalendarSourceSchema = z52.object(
32652
33338
  {
32653
- events: z53.array(publicEventSchema).nullable().optional(),
32654
- siteId: z53.string(),
32655
- apiBaseUrl: z53.string().optional(),
33339
+ events: z52.array(publicEventSchema).nullable().optional(),
33340
+ siteId: z52.string(),
33341
+ apiBaseUrl: z52.string().optional(),
32656
33342
  stage: previewStageSchema.optional(),
32657
33343
  variant: eventCalendarDisplayModeSchema.nullable().optional(),
32658
33344
  displayMode: eventCalendarDisplayModeSchema.nullable().optional(),
@@ -32660,78 +33346,80 @@ var eventCalendarSourceSchema = z53.object(
32660
33346
  listColumns: columnOptionSchema.optional(),
32661
33347
  layout: eventLayoutSchema.optional(),
32662
33348
  columns: columnOptionSchema.optional(),
32663
- eventsPerPage: z53.string().optional(),
32664
- paginationMode: z53.enum(["loadMore", "seeAllLink"]).optional(),
32665
- seeAllUrl: z53.string().optional(),
32666
- loadMoreText: z53.string().optional(),
33349
+ eventsPerPage: z52.string().optional(),
33350
+ paginationMode: z52.enum(["loadMore", "seeAllLink"]).optional(),
33351
+ seeAllUrl: z52.string().optional(),
33352
+ loadMoreText: z52.string().optional(),
32667
33353
  startOfWeek: weekStartSchema.optional(),
32668
33354
  calendarTabViews: calendarTabViewsSchema.optional(),
32669
- showFilters: z53.boolean().nullable().optional(),
33355
+ defaultCalendarView: eventCalendarDefaultViewSchema.optional(),
33356
+ showFilters: z52.boolean().nullable().optional(),
32670
33357
  showCategoryFilter: filterAutoShowSchema.optional(),
32671
- showVenueFilter: z53.boolean().nullable().optional(),
32672
- showStaffFilter: z53.boolean().nullable().optional(),
33358
+ showVenueFilter: z52.boolean().nullable().optional(),
33359
+ showStaffFilter: z52.boolean().nullable().optional(),
32673
33360
  kind: eventBlockKindSchema2.nullable().optional(),
32674
33361
  eventSurface: eventSurfaceScopeSchema2.nullable().optional(),
32675
- filterEventPresets: z53.union([z53.string(), z53.array(z53.string())]).nullable().optional(),
33362
+ filterEventPresets: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
32676
33363
  scheduleScope: eventScheduleScopeSchema3.nullable().optional(),
32677
- filterCategoryIds: z53.union([z53.string(), z53.array(z53.string())]).nullable().optional(),
32678
- filterStaffMemberId: z53.string().nullable().optional(),
32679
- filterVenueId: z53.string().nullable().optional(),
33364
+ filterCategoryIds: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
33365
+ filterStaffMemberId: z52.string().nullable().optional(),
33366
+ filterVenueId: z52.string().nullable().optional(),
32680
33367
  buttonVariant: eventButtonVariantSchema.optional(),
32681
- buttonText: z53.string().optional(),
32682
- showVenue: z53.boolean().nullable().optional(),
32683
- showMap: z53.boolean().nullable().optional(),
32684
- showCapacity: z53.boolean().nullable().optional(),
32685
- emptyMessage: z53.string().optional(),
32686
- className: z53.string().optional()
33368
+ buttonText: z52.string().optional(),
33369
+ showVenue: z52.boolean().nullable().optional(),
33370
+ showMap: z52.boolean().nullable().optional(),
33371
+ showCapacity: z52.boolean().nullable().optional(),
33372
+ emptyMessage: z52.string().optional(),
33373
+ className: z52.string().optional()
32687
33374
  }
32688
33375
  );
32689
- var eventCalendarDisplaySchema = z53.object({
32690
- kind: z53.literal("event-calendar"),
33376
+ var eventCalendarDisplaySchema = z52.object({
33377
+ kind: z52.literal("event-calendar"),
32691
33378
  displayMode: eventCalendarDisplayModeSchema,
32692
- className: z53.string().nullable(),
32693
- events: z53.array(publicEventSchema),
33379
+ className: z52.string().nullable(),
33380
+ events: z52.array(publicEventSchema),
32694
33381
  listLayout: eventLayoutSchema,
32695
33382
  listColumns: columnOptionSchema,
32696
33383
  eventsPerPage: eventPageSizeSchema,
32697
33384
  paginationAction: eventListPaginationActionSchema,
32698
33385
  startOfWeek: weekStartSchema,
32699
33386
  calendarTabViews: calendarTabViewsSchema,
32700
- showFilters: z53.boolean(),
33387
+ defaultCalendarView: eventCalendarDefaultViewSchema,
33388
+ showFilters: z52.boolean(),
32701
33389
  showCategoryFilter: filterAutoShowSchema,
32702
- showVenueFilter: z53.boolean(),
32703
- showStaffFilter: z53.boolean(),
33390
+ showVenueFilter: z52.boolean(),
33391
+ showStaffFilter: z52.boolean(),
32704
33392
  eventKind: eventBlockKindSchema2,
32705
33393
  eventSurface: eventSurfaceScopeSchema2,
32706
- filterEventPresets: z53.string().nullable(),
33394
+ filterEventPresets: z52.string().nullable(),
32707
33395
  scheduleScope: eventScheduleScopeSchema3,
32708
- filterCategoryIds: z53.string().nullable(),
32709
- filterStaffMemberId: z53.string().nullable(),
32710
- filterVenueId: z53.string().nullable(),
33396
+ filterCategoryIds: z52.string().nullable(),
33397
+ filterStaffMemberId: z52.string().nullable(),
33398
+ filterVenueId: z52.string().nullable(),
32711
33399
  buttonVariant: eventButtonVariantSchema,
32712
- buttonText: z53.string(),
32713
- showVenue: z53.boolean(),
32714
- showMap: z53.boolean(),
32715
- showCapacity: z53.boolean(),
32716
- emptyMessage: z53.string()
32717
- });
32718
- var eventCalendarHydrationSchema = z53.object({
32719
- siteId: z53.string(),
33400
+ buttonText: z52.string(),
33401
+ showVenue: z52.boolean(),
33402
+ showMap: z52.boolean(),
33403
+ showCapacity: z52.boolean(),
33404
+ emptyMessage: z52.string()
33405
+ });
33406
+ var eventCalendarHydrationSchema = z52.object({
33407
+ siteId: z52.string(),
32720
33408
  stage: previewStageSchema.optional(),
32721
- prefetchedEvents: z53.boolean(),
33409
+ prefetchedEvents: z52.boolean(),
32722
33410
  eventKind: eventBlockKindSchema2,
32723
33411
  eventSurface: eventSurfaceScopeSchema2,
32724
- filterEventPresets: z53.string().nullable(),
33412
+ filterEventPresets: z52.string().nullable(),
32725
33413
  scheduleScope: eventScheduleScopeSchema3
32726
33414
  });
32727
- var eventCalendarRenderSchema = z53.object({
33415
+ var eventCalendarRenderSchema = z52.object({
32728
33416
  display: eventCalendarDisplaySchema,
32729
33417
  hydration: eventCalendarHydrationSchema
32730
33418
  });
32731
33419
  var eventCalendarIslandMetaCodec = createZodCodec(
32732
- z53.object({
32733
- siteId: z53.string(),
32734
- apiBaseUrl: z53.string().optional(),
33420
+ z52.object({
33421
+ siteId: z52.string(),
33422
+ apiBaseUrl: z52.string().optional(),
32735
33423
  stage: previewStageSchema.optional()
32736
33424
  })
32737
33425
  );
@@ -32761,6 +33449,7 @@ function buildEventCalendarDisplay(source) {
32761
33449
  }),
32762
33450
  startOfWeek: source.startOfWeek ?? "monday",
32763
33451
  calendarTabViews: source.calendarTabViews ?? "both",
33452
+ defaultCalendarView: source.defaultCalendarView ?? "month",
32764
33453
  showFilters: source.showFilters ?? true,
32765
33454
  showCategoryFilter: source.showCategoryFilter ?? "auto",
32766
33455
  showVenueFilter: source.showVenueFilter ?? false,
@@ -32823,6 +33512,9 @@ function normalizeEventCalendarContent(content) {
32823
33512
  ...variant ? { variant } : {},
32824
33513
  displayMode: normalizeEventCalendarDisplayMode(record.displayMode),
32825
33514
  listLayout: normalizeEventCalendarListLayout(record.listLayout),
33515
+ defaultCalendarView: normalizeEventCalendarDefaultView(
33516
+ record.defaultCalendarView
33517
+ ),
32826
33518
  kind,
32827
33519
  eventSurface: normalizeEventSurfaceScope(record.eventSurface),
32828
33520
  filterEventPresets: normalizeEventSurfacePresets(record.filterEventPresets),
@@ -32840,6 +33532,9 @@ function normalizeEventCalendarDisplayMode(value) {
32840
33532
  function normalizeEventCalendarListLayout(value) {
32841
33533
  return isEventCalendarListLayout(value) ? value : void 0;
32842
33534
  }
33535
+ function normalizeEventCalendarDefaultView(value) {
33536
+ return isEventCalendarDefaultView(value) ? value : void 0;
33537
+ }
32843
33538
  var eventCalendarLayout = [
32844
33539
  styledSection({
32845
33540
  children: sectionContainer(
@@ -32899,6 +33594,9 @@ var eventCalendarLayout = [
32899
33594
  calendarTabViews: {
32900
33595
  $bind: { from: "content.calendarTabViews", fallback: "both" }
32901
33596
  },
33597
+ defaultCalendarView: {
33598
+ $bind: { from: "content.defaultCalendarView", fallback: "month" }
33599
+ },
32902
33600
  // Filtering options
32903
33601
  showFilters: {
32904
33602
  $bind: { from: "content.showFilters", fallback: true }
@@ -32965,8 +33663,7 @@ var eventCalendarAdditionalFields = [
32965
33663
  defaultValue: "combined",
32966
33664
  options: [
32967
33665
  { value: "combined", label: "Combined (List + Calendar tabs)" },
32968
- { value: "month", label: "Month calendar" },
32969
- { value: "week", label: "Week agenda" },
33666
+ { value: "calendar", label: "Calendar" },
32970
33667
  { value: "timetable", label: "Timetable" },
32971
33668
  { value: "list", label: "List" }
32972
33669
  ],
@@ -33005,7 +33702,12 @@ var eventCalendarAdditionalFields = [
33005
33702
  ],
33006
33703
  ui: {
33007
33704
  intent: "display",
33008
- visibleWhen: { field: "listLayout", equals: "grid" }
33705
+ visibleWhen: {
33706
+ allOf: [
33707
+ { field: "variant", oneOf: ["combined", "list"] },
33708
+ { field: "listLayout", equals: "grid" }
33709
+ ]
33710
+ }
33009
33711
  }
33010
33712
  },
33011
33713
  {
@@ -33053,7 +33755,12 @@ var eventCalendarAdditionalFields = [
33053
33755
  required: false,
33054
33756
  ui: {
33055
33757
  intent: "display",
33056
- visibleWhen: { field: "paginationMode", equals: "seeAllLink" }
33758
+ visibleWhen: {
33759
+ allOf: [
33760
+ { field: "variant", oneOf: ["combined", "list"] },
33761
+ { field: "paginationMode", equals: "seeAllLink" }
33762
+ ]
33763
+ }
33057
33764
  }
33058
33765
  },
33059
33766
  {
@@ -33086,7 +33793,7 @@ var eventCalendarAdditionalFields = [
33086
33793
  intent: "display",
33087
33794
  visibleWhen: {
33088
33795
  field: "variant",
33089
- oneOf: ["combined", "month", "week"]
33796
+ oneOf: ["combined", "calendar", "timetable"]
33090
33797
  }
33091
33798
  }
33092
33799
  },
@@ -33109,6 +33816,33 @@ var eventCalendarAdditionalFields = [
33109
33816
  visibleWhen: { field: "variant", equals: "combined" }
33110
33817
  }
33111
33818
  },
33819
+ {
33820
+ id: "defaultCalendarView",
33821
+ type: "select",
33822
+ label: "Calendar view",
33823
+ description: "Choose the standalone calendar view, or the first view in combined mode",
33824
+ required: false,
33825
+ multiple: false,
33826
+ defaultValue: "month",
33827
+ options: [
33828
+ { value: "month", label: "Month" },
33829
+ { value: "week", label: "Week" }
33830
+ ],
33831
+ ui: {
33832
+ intent: "display",
33833
+ visibleWhen: {
33834
+ anyOf: [
33835
+ { field: "variant", equals: "calendar" },
33836
+ {
33837
+ allOf: [
33838
+ { field: "variant", equals: "combined" },
33839
+ { field: "calendarTabViews", equals: "both" }
33840
+ ]
33841
+ }
33842
+ ]
33843
+ }
33844
+ }
33845
+ },
33112
33846
  // Filtering options
33113
33847
  {
33114
33848
  id: "kind",
@@ -33136,7 +33870,7 @@ var eventCalendarAdditionalFields = [
33136
33870
  intent: "display",
33137
33871
  visibleWhen: {
33138
33872
  field: "variant",
33139
- oneOf: ["combined", "list", "timetable"]
33873
+ oneOf: ["combined", "calendar", "list", "timetable"]
33140
33874
  }
33141
33875
  }
33142
33876
  },
@@ -33156,8 +33890,10 @@ var eventCalendarAdditionalFields = [
33156
33890
  ui: {
33157
33891
  intent: "display",
33158
33892
  visibleWhen: {
33159
- field: "variant",
33160
- oneOf: ["combined", "list", "timetable"]
33893
+ allOf: [
33894
+ { field: "variant", oneOf: ["combined", "calendar", "list", "timetable"] },
33895
+ { field: "showFilters", equals: true }
33896
+ ]
33161
33897
  }
33162
33898
  }
33163
33899
  },
@@ -33171,8 +33907,10 @@ var eventCalendarAdditionalFields = [
33171
33907
  ui: {
33172
33908
  intent: "display",
33173
33909
  visibleWhen: {
33174
- field: "variant",
33175
- oneOf: ["combined", "list", "timetable"]
33910
+ allOf: [
33911
+ { field: "variant", oneOf: ["combined", "calendar", "list", "timetable"] },
33912
+ { field: "showFilters", equals: true }
33913
+ ]
33176
33914
  }
33177
33915
  }
33178
33916
  },
@@ -33186,8 +33924,10 @@ var eventCalendarAdditionalFields = [
33186
33924
  ui: {
33187
33925
  intent: "display",
33188
33926
  visibleWhen: {
33189
- field: "variant",
33190
- oneOf: ["combined", "list", "timetable"]
33927
+ allOf: [
33928
+ { field: "variant", oneOf: ["combined", "calendar", "list", "timetable"] },
33929
+ { field: "showFilters", equals: true }
33930
+ ]
33191
33931
  }
33192
33932
  }
33193
33933
  },
@@ -33201,8 +33941,15 @@ var eventCalendarAdditionalFields = [
33201
33941
  ui: {
33202
33942
  intent: "display",
33203
33943
  visibleWhen: {
33204
- field: "variant",
33205
- oneOf: ["combined", "list", "week", "timetable"]
33944
+ anyOf: [
33945
+ { field: "variant", oneOf: ["combined", "list", "timetable"] },
33946
+ {
33947
+ allOf: [
33948
+ { field: "variant", equals: "calendar" },
33949
+ { field: "defaultCalendarView", equals: "week" }
33950
+ ]
33951
+ }
33952
+ ]
33206
33953
  }
33207
33954
  }
33208
33955
  },
@@ -33318,8 +34065,7 @@ var eventCalendarAdditionalFields = [
33318
34065
  ];
33319
34066
  var eventCalendarVariants = {
33320
34067
  combined: eventCalendarLayout[0],
33321
- month: eventCalendarLayout[0],
33322
- week: eventCalendarLayout[0],
34068
+ calendar: eventCalendarLayout[0],
33323
34069
  timetable: eventCalendarLayout[0],
33324
34070
  list: eventCalendarLayout[0]
33325
34071
  };
@@ -33331,8 +34077,7 @@ var eventCalendarDerivedFields = [
33331
34077
  multiple: false,
33332
34078
  options: [
33333
34079
  { value: "combined" },
33334
- { value: "month" },
33335
- { value: "week" },
34080
+ { value: "calendar" },
33336
34081
  { value: "timetable" },
33337
34082
  { value: "list" }
33338
34083
  ]
@@ -33345,6 +34090,13 @@ var eventCalendarDerivedFields = [
33345
34090
  options: eventCalendarListLayoutOptions.map((option) => ({
33346
34091
  value: option.id
33347
34092
  }))
34093
+ },
34094
+ {
34095
+ id: "defaultCalendarView",
34096
+ type: "select",
34097
+ required: false,
34098
+ multiple: false,
34099
+ options: [{ value: "month" }, { value: "week" }]
33348
34100
  }
33349
34101
  ];
33350
34102
  var eventCalendarContentShape = {
@@ -33393,8 +34145,7 @@ var eventCalendarConfig = {
33393
34145
  defaultVariant: "combined",
33394
34146
  variantOptions: {
33395
34147
  combined: { label: "Combined" },
33396
- month: { label: "Month" },
33397
- week: { label: "Week" },
34148
+ calendar: { label: "Calendar" },
33398
34149
  timetable: { label: "Timetable" },
33399
34150
  list: { label: "List" }
33400
34151
  }
@@ -33440,7 +34191,7 @@ var eventCalendarBlockDefinition = {
33440
34191
  };
33441
34192
 
33442
34193
  // ../blocks/src/system/blocks/offerings-preview/index.ts
33443
- import { z as z54 } from "zod";
34194
+ import { z as z53 } from "zod";
33444
34195
 
33445
34196
  // ../blocks/src/system/blocks/offerings-preview/model.ts
33446
34197
  var OFFERINGS_PREVIEW_DEFAULT_ITEM_LIMIT = "3";
@@ -33532,13 +34283,13 @@ function isRecord5(value) {
33532
34283
  }
33533
34284
 
33534
34285
  // ../blocks/src/system/blocks/offerings-preview/index.ts
33535
- var publicRouteCandidatesSchema = z54.object({
33536
- routes: z54.array(z54.object({
33537
- entityId: z54.string(),
33538
- path: z54.string(),
33539
- title: z54.string(),
33540
- kind: z54.enum(["page", "content"]),
33541
- contentTypeKey: z54.string().nullable().optional()
34286
+ var publicRouteCandidatesSchema = z53.object({
34287
+ routes: z53.array(z53.object({
34288
+ entityId: z53.string(),
34289
+ path: z53.string(),
34290
+ title: z53.string(),
34291
+ kind: z53.enum(["page", "content"]),
34292
+ contentTypeKey: z53.string().nullable().optional()
33542
34293
  }))
33543
34294
  });
33544
34295
  var groupOverrideFields = [
@@ -33936,7 +34687,7 @@ function isRecord6(value) {
33936
34687
  }
33937
34688
 
33938
34689
  // ../blocks/src/system/blocks/embed.ts
33939
- import { z as z55 } from "zod";
34690
+ import { z as z54 } from "zod";
33940
34691
  var embedFields = [
33941
34692
  // Section heading
33942
34693
  parseFieldDefinition({
@@ -34167,18 +34918,18 @@ var embedManifest = createBlockManifest({
34167
34918
  spacing: "lg"
34168
34919
  }
34169
34920
  });
34170
- var embedEntrySchema = z55.object({
34171
- id: z55.string(),
34172
- identifier: z55.string(),
34173
- title: z55.string(),
34174
- slug: z55.string().nullable().optional(),
34175
- content: z55.record(z55.string(), z55.unknown()).optional(),
34176
- publishedAt: z55.string().nullable().optional()
34921
+ var embedEntrySchema = z54.object({
34922
+ id: z54.string(),
34923
+ identifier: z54.string(),
34924
+ title: z54.string(),
34925
+ slug: z54.string().nullable().optional(),
34926
+ content: z54.record(z54.string(), z54.unknown()).optional(),
34927
+ publishedAt: z54.string().nullable().optional()
34177
34928
  });
34178
34929
  var embedBlockDefinition = {
34179
34930
  manifest: embedManifest,
34180
34931
  dataSchemas: {
34181
- entries: z55.array(embedEntrySchema).optional()
34932
+ entries: z54.array(embedEntrySchema).optional()
34182
34933
  },
34183
34934
  dataLoaders: {
34184
34935
  entries: {
@@ -35361,57 +36112,54 @@ var fileDownloadBlockDefinition = {
35361
36112
  manifest: fileDownloadManifest
35362
36113
  };
35363
36114
 
35364
- // ../blocks/src/system/blocks/shop.ts
35365
- import { z as z59 } from "zod";
35366
-
35367
36115
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
35368
- import { z as z58 } from "zod";
36116
+ import { z as z57 } from "zod";
35369
36117
 
35370
36118
  // ../blocks/src/system/blocks/products/shared.ts
35371
- import { z as z56 } from "zod";
35372
- var publicProductVariantSchema = z56.object({
35373
- id: z56.string(),
35374
- title: z56.string(),
35375
- sku: z56.string().nullable(),
35376
- priceCents: z56.number(),
35377
- stockQuantity: z56.number().nullable(),
35378
- soldOut: z56.boolean()
35379
- });
35380
- var publicProductSchema = z56.object({
35381
- id: z56.string(),
35382
- contentEntryId: z56.string().nullable(),
35383
- title: z56.string(),
35384
- slug: z56.string(),
35385
- path: z56.string().nullable(),
35386
- status: z56.enum(["draft", "active"]),
35387
- priceCents: z56.number(),
35388
- currency: z56.string(),
35389
- productType: z56.enum(["physical", "digital"]),
35390
- requiresShipping: z56.boolean(),
35391
- hasVariants: z56.boolean(),
35392
- trackInventory: z56.boolean(),
35393
- soldOut: z56.boolean(),
35394
- category: z56.object({
35395
- id: z56.string(),
35396
- name: z56.string(),
35397
- slug: z56.string()
36119
+ import { z as z55 } from "zod";
36120
+ var publicProductVariantSchema = z55.object({
36121
+ id: z55.string(),
36122
+ title: z55.string(),
36123
+ sku: z55.string().nullable(),
36124
+ priceCents: z55.number(),
36125
+ stockQuantity: z55.number().nullable(),
36126
+ soldOut: z55.boolean()
36127
+ });
36128
+ var publicProductSchema = z55.object({
36129
+ id: z55.string(),
36130
+ contentEntryId: z55.string().nullable(),
36131
+ title: z55.string(),
36132
+ slug: z55.string(),
36133
+ path: z55.string().nullable(),
36134
+ status: z55.enum(["draft", "active"]),
36135
+ priceCents: z55.number(),
36136
+ currency: z55.string(),
36137
+ productType: z55.enum(["physical", "digital"]),
36138
+ requiresShipping: z55.boolean(),
36139
+ hasVariants: z55.boolean(),
36140
+ trackInventory: z55.boolean(),
36141
+ soldOut: z55.boolean(),
36142
+ category: z55.object({
36143
+ id: z55.string(),
36144
+ name: z55.string(),
36145
+ slug: z55.string()
35398
36146
  }).nullable(),
35399
- summary: z56.string().nullable(),
35400
- body: z56.unknown().nullable(),
35401
- gallery: z56.array(
35402
- z56.object({
35403
- url: z56.string(),
35404
- alt: z56.string().nullable()
36147
+ summary: z55.string().nullable(),
36148
+ body: z55.unknown().nullable(),
36149
+ gallery: z55.array(
36150
+ z55.object({
36151
+ url: z55.string(),
36152
+ alt: z55.string().nullable()
35405
36153
  })
35406
36154
  ),
35407
- variants: z56.array(publicProductVariantSchema)
36155
+ variants: z55.array(publicProductVariantSchema)
35408
36156
  });
35409
- var publicProductsResponseSchema = z56.object({
35410
- products: z56.array(publicProductSchema)
36157
+ var publicProductsResponseSchema = z55.object({
36158
+ products: z55.array(publicProductSchema)
35411
36159
  });
35412
36160
 
35413
36161
  // ../blocks/src/system/runtime/api/creditProducts.ts
35414
- function assertNever3(value) {
36162
+ function assertNever4(value) {
35415
36163
  throw new Error(`Unhandled credit product case: ${String(value)}`);
35416
36164
  }
35417
36165
  function useCasesFromModules(modules) {
@@ -35444,7 +36192,7 @@ function getCreditProductCreditUnit(useCase) {
35444
36192
  perCreditSuffix: "credit"
35445
36193
  };
35446
36194
  default:
35447
- return assertNever3(useCase);
36195
+ return assertNever4(useCase);
35448
36196
  }
35449
36197
  }
35450
36198
  function deriveCreditProductLabels(products, options = {}) {
@@ -35471,27 +36219,27 @@ function deriveCreditProductLabels(products, options = {}) {
35471
36219
  }
35472
36220
 
35473
36221
  // ../blocks/src/system/runtime/nodes/shop-commerce.shared.ts
35474
- import { z as z57 } from "zod";
35475
- var storedProductCartItemSchema = z57.object({
35476
- kind: z57.literal("product"),
35477
- productId: z57.string().min(1),
35478
- productCategoryId: z57.string().min(1).optional().nullable(),
35479
- variantId: z57.string().min(1).optional().nullable(),
35480
- title: z57.string().min(1),
35481
- variantTitle: z57.string().optional().nullable(),
35482
- quantity: z57.number().finite(),
35483
- unitPriceCents: z57.number().finite(),
35484
- currency: z57.string().min(1),
35485
- imageUrl: z57.string().optional().nullable(),
35486
- soldOut: z57.boolean().optional()
35487
- });
35488
- var storedPassCartItemSchema = z57.object({
35489
- kind: z57.literal("pass"),
35490
- passId: z57.string().min(1),
35491
- title: z57.string().min(1),
35492
- quantity: z57.number().finite().optional(),
35493
- unitPriceCents: z57.number().finite(),
35494
- currency: z57.string().min(1)
36222
+ import { z as z56 } from "zod";
36223
+ var storedProductCartItemSchema = z56.object({
36224
+ kind: z56.literal("product"),
36225
+ productId: z56.string().min(1),
36226
+ productCategoryId: z56.string().min(1).optional().nullable(),
36227
+ variantId: z56.string().min(1).optional().nullable(),
36228
+ title: z56.string().min(1),
36229
+ variantTitle: z56.string().optional().nullable(),
36230
+ quantity: z56.number().finite(),
36231
+ unitPriceCents: z56.number().finite(),
36232
+ currency: z56.string().min(1),
36233
+ imageUrl: z56.string().optional().nullable(),
36234
+ soldOut: z56.boolean().optional()
36235
+ });
36236
+ var storedPassCartItemSchema = z56.object({
36237
+ kind: z56.literal("pass"),
36238
+ passId: z56.string().min(1),
36239
+ title: z56.string().min(1),
36240
+ quantity: z56.number().finite().optional(),
36241
+ unitPriceCents: z56.number().finite(),
36242
+ currency: z56.string().min(1)
35495
36243
  });
35496
36244
  function deriveCommerceCheckoutState(state) {
35497
36245
  if (state.items.length === 0) {
@@ -35725,214 +36473,214 @@ function formatValidity(days) {
35725
36473
  }
35726
36474
 
35727
36475
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
35728
- var shopModeSchema = z58.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
35729
- var contentEntrySchema3 = z58.object({
35730
- id: z58.string().nullable().optional(),
35731
- slug: z58.string().nullable().optional()
36476
+ var shopModeSchema = z57.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
36477
+ var contentEntrySchema3 = z57.object({
36478
+ id: z57.string().nullable().optional(),
36479
+ slug: z57.string().nullable().optional()
35732
36480
  }).nullable();
35733
- var shopSourceSchema = z58.object({
35734
- className: z58.string().nullable().optional(),
36481
+ var shopSourceSchema = z57.object({
36482
+ className: z57.string().nullable().optional(),
35735
36483
  mode: shopModeSchema.optional(),
35736
- heading: z58.string().nullable().optional(),
35737
- productSlug: z58.string().nullable().optional(),
35738
- showPasses: z58.boolean().optional(),
35739
- showMemberships: z58.boolean().optional(),
35740
- layout: z58.enum(["grid", "list"]).optional(),
35741
- columns: z58.string().optional(),
35742
- showDescriptions: z58.boolean().optional(),
35743
- showSummary: z58.boolean().optional(),
35744
- showBody: z58.boolean().optional(),
35745
- showPrices: z58.boolean().optional(),
35746
- showValidityPeriod: z58.boolean().optional(),
35747
- showPricePerCredit: z58.boolean().nullable().optional(),
35748
- passesHeading: z58.string().optional(),
35749
- membershipsHeading: z58.string().optional(),
35750
- buyButtonText: z58.string().optional(),
35751
- addButtonText: z58.string().optional(),
35752
- passPurchaseMode: z58.enum(["add_to_cart", "buy_now"]).optional(),
35753
- subscribeButtonText: z58.string().optional(),
35754
- emptyStateText: z58.string().optional(),
35755
- checkoutButtonText: z58.string().optional(),
35756
- clearButtonText: z58.string().optional(),
35757
- submitButtonText: z58.string().optional(),
36484
+ heading: z57.string().nullable().optional(),
36485
+ productSlug: z57.string().nullable().optional(),
36486
+ showPasses: z57.boolean().optional(),
36487
+ showMemberships: z57.boolean().optional(),
36488
+ layout: z57.enum(["grid", "list"]).optional(),
36489
+ columns: z57.string().optional(),
36490
+ showDescriptions: z57.boolean().optional(),
36491
+ showSummary: z57.boolean().optional(),
36492
+ showBody: z57.boolean().optional(),
36493
+ showPrices: z57.boolean().optional(),
36494
+ showValidityPeriod: z57.boolean().optional(),
36495
+ showPricePerCredit: z57.boolean().nullable().optional(),
36496
+ passesHeading: z57.string().optional(),
36497
+ membershipsHeading: z57.string().optional(),
36498
+ buyButtonText: z57.string().optional(),
36499
+ addButtonText: z57.string().optional(),
36500
+ passPurchaseMode: z57.enum(["add_to_cart", "buy_now"]).optional(),
36501
+ subscribeButtonText: z57.string().optional(),
36502
+ emptyStateText: z57.string().optional(),
36503
+ checkoutButtonText: z57.string().optional(),
36504
+ clearButtonText: z57.string().optional(),
36505
+ submitButtonText: z57.string().optional(),
35758
36506
  contentEntry: contentEntrySchema3.optional(),
35759
- passes: z58.array(publicPassProductSchema).nullable().optional(),
35760
- memberships: z58.array(publicMembershipProductSchema).nullable().optional(),
35761
- products: z58.array(publicProductSchema).nullable().optional(),
35762
- siteId: z58.string().optional(),
35763
- apiBaseUrl: z58.string().optional(),
36507
+ passes: z57.array(publicPassProductSchema).nullable().optional(),
36508
+ memberships: z57.array(publicMembershipProductSchema).nullable().optional(),
36509
+ products: z57.array(publicProductSchema).nullable().optional(),
36510
+ siteId: z57.string().optional(),
36511
+ apiBaseUrl: z57.string().optional(),
35764
36512
  stage: previewStageSchema.optional()
35765
36513
  });
35766
- var productVariantOptionDisplaySchema = z58.object({
35767
- id: z58.string(),
35768
- label: z58.string(),
35769
- soldOut: z58.boolean()
35770
- });
35771
- var productCardDisplaySchema = z58.object({
35772
- productId: z58.string(),
35773
- title: z58.string(),
35774
- path: z58.string().nullable(),
35775
- summary: z58.string().nullable(),
35776
- priceLabel: z58.string().nullable(),
35777
- image: z58.object({
35778
- url: z58.string(),
35779
- alt: z58.string().nullable()
36514
+ var productVariantOptionDisplaySchema = z57.object({
36515
+ id: z57.string(),
36516
+ label: z57.string(),
36517
+ soldOut: z57.boolean()
36518
+ });
36519
+ var productCardDisplaySchema = z57.object({
36520
+ productId: z57.string(),
36521
+ title: z57.string(),
36522
+ path: z57.string().nullable(),
36523
+ summary: z57.string().nullable(),
36524
+ priceLabel: z57.string().nullable(),
36525
+ image: z57.object({
36526
+ url: z57.string(),
36527
+ alt: z57.string().nullable()
35780
36528
  }).nullable(),
35781
- variantOptions: z58.array(productVariantOptionDisplaySchema),
35782
- selectedVariantId: z58.string().nullable(),
35783
- selectionLabel: z58.string(),
35784
- actionLabel: z58.string(),
35785
- soldOut: z58.boolean()
35786
- });
35787
- var productListDisplaySchema = z58.object({
35788
- kind: z58.literal("product-list"),
35789
- state: z58.enum(["empty", "ready"]),
35790
- heading: z58.string().nullable(),
35791
- className: z58.string().nullable(),
35792
- layout: z58.enum(["grid", "list"]),
35793
- columns: z58.string(),
35794
- emptyMessage: z58.string(),
35795
- cards: z58.array(productCardDisplaySchema)
35796
- });
35797
- var productDetailDisplaySchema = z58.discriminatedUnion("state", [
35798
- z58.object({
35799
- kind: z58.literal("product-detail"),
35800
- state: z58.literal("empty"),
35801
- heading: z58.string().nullable(),
35802
- className: z58.string().nullable(),
35803
- emptyMessage: z58.string()
36529
+ variantOptions: z57.array(productVariantOptionDisplaySchema),
36530
+ selectedVariantId: z57.string().nullable(),
36531
+ selectionLabel: z57.string(),
36532
+ actionLabel: z57.string(),
36533
+ soldOut: z57.boolean()
36534
+ });
36535
+ var productListDisplaySchema = z57.object({
36536
+ kind: z57.literal("product-list"),
36537
+ state: z57.enum(["empty", "ready"]),
36538
+ heading: z57.string().nullable(),
36539
+ className: z57.string().nullable(),
36540
+ layout: z57.enum(["grid", "list"]),
36541
+ columns: z57.string(),
36542
+ emptyMessage: z57.string(),
36543
+ cards: z57.array(productCardDisplaySchema)
36544
+ });
36545
+ var productDetailDisplaySchema = z57.discriminatedUnion("state", [
36546
+ z57.object({
36547
+ kind: z57.literal("product-detail"),
36548
+ state: z57.literal("empty"),
36549
+ heading: z57.string().nullable(),
36550
+ className: z57.string().nullable(),
36551
+ emptyMessage: z57.string()
35804
36552
  }),
35805
- z58.object({
35806
- kind: z58.literal("product-detail"),
35807
- state: z58.literal("ready"),
35808
- heading: z58.string().nullable(),
35809
- className: z58.string().nullable(),
35810
- title: z58.string(),
35811
- priceLabel: z58.string(),
35812
- summary: z58.string().nullable(),
35813
- categoryLabel: z58.string().nullable(),
35814
- gallery: z58.array(z58.object({
35815
- url: z58.string(),
35816
- alt: z58.string().nullable()
36553
+ z57.object({
36554
+ kind: z57.literal("product-detail"),
36555
+ state: z57.literal("ready"),
36556
+ heading: z57.string().nullable(),
36557
+ className: z57.string().nullable(),
36558
+ title: z57.string(),
36559
+ priceLabel: z57.string(),
36560
+ summary: z57.string().nullable(),
36561
+ categoryLabel: z57.string().nullable(),
36562
+ gallery: z57.array(z57.object({
36563
+ url: z57.string(),
36564
+ alt: z57.string().nullable()
35817
36565
  })),
35818
- variantOptions: z58.array(productVariantOptionDisplaySchema),
35819
- selectedVariantId: z58.string().nullable(),
35820
- selectionLabel: z58.string(),
35821
- actionLabel: z58.string(),
35822
- soldOut: z58.boolean(),
35823
- body: z58.unknown().nullable()
36566
+ variantOptions: z57.array(productVariantOptionDisplaySchema),
36567
+ selectedVariantId: z57.string().nullable(),
36568
+ selectionLabel: z57.string(),
36569
+ actionLabel: z57.string(),
36570
+ soldOut: z57.boolean(),
36571
+ body: z57.unknown().nullable()
35824
36572
  })
35825
36573
  ]);
35826
- var passCardDisplaySchema = z58.object({
35827
- id: z58.string(),
35828
- title: z58.string(),
35829
- description: z58.string().nullable(),
35830
- priceLabel: z58.string(),
35831
- creditsLabel: z58.string(),
35832
- perCreditLabel: z58.string().nullable(),
35833
- validityLabel: z58.string().nullable(),
35834
- actionLabel: z58.string()
35835
- });
35836
- var membershipCardDisplaySchema = z58.object({
35837
- id: z58.string(),
35838
- title: z58.string(),
35839
- description: z58.string().nullable(),
35840
- priceLabel: z58.string(),
35841
- intervalLabel: z58.string(),
35842
- actionLabel: z58.string()
35843
- });
35844
- var passesMembershipsDisplaySchema = z58.object({
35845
- kind: z58.literal("passes-memberships"),
35846
- state: z58.enum(["empty", "ready"]),
35847
- className: z58.string().nullable(),
35848
- layout: z58.enum(["grid", "list"]),
35849
- columns: z58.string(),
35850
- emptyMessage: z58.string(),
35851
- passesHeading: z58.string(),
35852
- membershipsHeading: z58.string(),
35853
- passes: z58.array(passCardDisplaySchema),
35854
- memberships: z58.array(membershipCardDisplaySchema)
35855
- });
35856
- var cartLineDisplaySchema = z58.object({
35857
- key: z58.string(),
35858
- title: z58.string(),
35859
- priceLabel: z58.string(),
35860
- quantity: z58.number(),
35861
- quantityEditable: z58.boolean()
35862
- });
35863
- var cartDisplaySchema = z58.object({
35864
- kind: z58.literal("cart"),
35865
- state: z58.enum(["empty", "ready"]),
35866
- heading: z58.string().nullable(),
35867
- className: z58.string().nullable(),
35868
- emptyMessage: z58.string(),
35869
- supportText: z58.string().nullable(),
35870
- items: z58.array(cartLineDisplaySchema),
35871
- subtotalLabel: z58.string().nullable(),
35872
- checkoutButtonText: z58.string(),
35873
- clearButtonText: z58.string()
35874
- });
35875
- var checkoutDisplaySchema = z58.object({
35876
- kind: z58.literal("checkout"),
35877
- state: z58.enum(["empty", "blocked", "ready"]),
35878
- heading: z58.string().nullable(),
35879
- className: z58.string().nullable(),
35880
- message: z58.string().nullable(),
35881
- submitButtonText: z58.string()
35882
- });
35883
- var passesMembershipsHydrationSchema = z58.object({
35884
- passes: z58.array(publicPassProductSchema),
35885
- memberships: z58.array(publicMembershipProductSchema),
35886
- passPurchaseMode: z58.enum(["add_to_cart", "buy_now"])
35887
- });
35888
- var productListHydrationSchema = z58.object({
35889
- products: z58.array(publicProductSchema),
35890
- showSummary: z58.boolean(),
35891
- showPrices: z58.boolean(),
35892
- addButtonText: z58.string()
35893
- });
35894
- var productDetailHydrationSchema = z58.object({
35895
- products: z58.array(publicProductSchema),
35896
- productId: z58.string().nullable(),
35897
- showSummary: z58.boolean(),
35898
- showBody: z58.boolean(),
35899
- addButtonText: z58.string()
35900
- });
35901
- var cartHydrationSchema = z58.object({
35902
- emptyStateText: z58.string(),
35903
- checkoutButtonText: z58.string(),
35904
- clearButtonText: z58.string()
35905
- });
35906
- var checkoutHydrationSchema = z58.object({
35907
- emptyStateText: z58.string(),
35908
- submitButtonText: z58.string()
35909
- });
35910
- var passesMembershipsRenderSchema = z58.object({
36574
+ var passCardDisplaySchema = z57.object({
36575
+ id: z57.string(),
36576
+ title: z57.string(),
36577
+ description: z57.string().nullable(),
36578
+ priceLabel: z57.string(),
36579
+ creditsLabel: z57.string(),
36580
+ perCreditLabel: z57.string().nullable(),
36581
+ validityLabel: z57.string().nullable(),
36582
+ actionLabel: z57.string()
36583
+ });
36584
+ var membershipCardDisplaySchema = z57.object({
36585
+ id: z57.string(),
36586
+ title: z57.string(),
36587
+ description: z57.string().nullable(),
36588
+ priceLabel: z57.string(),
36589
+ intervalLabel: z57.string(),
36590
+ actionLabel: z57.string()
36591
+ });
36592
+ var passesMembershipsDisplaySchema = z57.object({
36593
+ kind: z57.literal("passes-memberships"),
36594
+ state: z57.enum(["empty", "ready"]),
36595
+ className: z57.string().nullable(),
36596
+ layout: z57.enum(["grid", "list"]),
36597
+ columns: z57.string(),
36598
+ emptyMessage: z57.string(),
36599
+ passesHeading: z57.string(),
36600
+ membershipsHeading: z57.string(),
36601
+ passes: z57.array(passCardDisplaySchema),
36602
+ memberships: z57.array(membershipCardDisplaySchema)
36603
+ });
36604
+ var cartLineDisplaySchema = z57.object({
36605
+ key: z57.string(),
36606
+ title: z57.string(),
36607
+ priceLabel: z57.string(),
36608
+ quantity: z57.number(),
36609
+ quantityEditable: z57.boolean()
36610
+ });
36611
+ var cartDisplaySchema = z57.object({
36612
+ kind: z57.literal("cart"),
36613
+ state: z57.enum(["empty", "ready"]),
36614
+ heading: z57.string().nullable(),
36615
+ className: z57.string().nullable(),
36616
+ emptyMessage: z57.string(),
36617
+ supportText: z57.string().nullable(),
36618
+ items: z57.array(cartLineDisplaySchema),
36619
+ subtotalLabel: z57.string().nullable(),
36620
+ checkoutButtonText: z57.string(),
36621
+ clearButtonText: z57.string()
36622
+ });
36623
+ var checkoutDisplaySchema = z57.object({
36624
+ kind: z57.literal("checkout"),
36625
+ state: z57.enum(["empty", "blocked", "ready"]),
36626
+ heading: z57.string().nullable(),
36627
+ className: z57.string().nullable(),
36628
+ message: z57.string().nullable(),
36629
+ submitButtonText: z57.string()
36630
+ });
36631
+ var passesMembershipsHydrationSchema = z57.object({
36632
+ passes: z57.array(publicPassProductSchema),
36633
+ memberships: z57.array(publicMembershipProductSchema),
36634
+ passPurchaseMode: z57.enum(["add_to_cart", "buy_now"])
36635
+ });
36636
+ var productListHydrationSchema = z57.object({
36637
+ products: z57.array(publicProductSchema),
36638
+ showSummary: z57.boolean(),
36639
+ showPrices: z57.boolean(),
36640
+ addButtonText: z57.string()
36641
+ });
36642
+ var productDetailHydrationSchema = z57.object({
36643
+ products: z57.array(publicProductSchema),
36644
+ productId: z57.string().nullable(),
36645
+ showSummary: z57.boolean(),
36646
+ showBody: z57.boolean(),
36647
+ addButtonText: z57.string()
36648
+ });
36649
+ var cartHydrationSchema = z57.object({
36650
+ emptyStateText: z57.string(),
36651
+ checkoutButtonText: z57.string(),
36652
+ clearButtonText: z57.string()
36653
+ });
36654
+ var checkoutHydrationSchema = z57.object({
36655
+ emptyStateText: z57.string(),
36656
+ submitButtonText: z57.string()
36657
+ });
36658
+ var passesMembershipsRenderSchema = z57.object({
35911
36659
  display: passesMembershipsDisplaySchema,
35912
36660
  hydration: passesMembershipsHydrationSchema
35913
36661
  });
35914
- var productListRenderSchema = z58.object({
36662
+ var productListRenderSchema = z57.object({
35915
36663
  display: productListDisplaySchema,
35916
36664
  hydration: productListHydrationSchema
35917
36665
  });
35918
- var productDetailRenderSchema = z58.object({
36666
+ var productDetailRenderSchema = z57.object({
35919
36667
  display: productDetailDisplaySchema,
35920
36668
  hydration: productDetailHydrationSchema
35921
36669
  });
35922
- var cartRenderSchema = z58.object({
36670
+ var cartRenderSchema = z57.object({
35923
36671
  display: cartDisplaySchema,
35924
36672
  hydration: cartHydrationSchema
35925
36673
  });
35926
- var checkoutRenderSchema = z58.object({
36674
+ var checkoutRenderSchema = z57.object({
35927
36675
  display: checkoutDisplaySchema,
35928
36676
  hydration: checkoutHydrationSchema
35929
36677
  });
35930
36678
  function resolveShowPricePerCredit(source) {
35931
36679
  return source.showPricePerCredit ?? true;
35932
36680
  }
35933
- var shopIslandMetaCodec = createZodCodec(z58.object({
35934
- siteId: z58.string().optional(),
35935
- apiBaseUrl: z58.string().optional(),
36681
+ var shopIslandMetaCodec = createZodCodec(z57.object({
36682
+ siteId: z57.string().optional(),
36683
+ apiBaseUrl: z57.string().optional(),
35936
36684
  stage: previewStageSchema.optional()
35937
36685
  }));
35938
36686
  var shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
@@ -36310,9 +37058,9 @@ var shopBlockDefinition = {
36310
37058
  runtime: shopBlockRuntime,
36311
37059
  dataSchemas: {
36312
37060
  // listPublicPasses returns { passes: [...] }
36313
- passes: z59.object({ passes: z59.array(publicPassProductSchema) }).optional(),
37061
+ passes: publicPassProductCollectionSchema.optional(),
36314
37062
  // listPublicMemberships returns { memberships: [...] }
36315
- memberships: z59.object({ memberships: z59.array(publicMembershipProductSchema) }).optional()
37063
+ memberships: publicMembershipProductCollectionSchema.optional()
36316
37064
  },
36317
37065
  dataLoaders: {
36318
37066
  // Load passes for display
@@ -36335,7 +37083,7 @@ var shopBlockDefinition = {
36335
37083
  };
36336
37084
 
36337
37085
  // ../blocks/src/system/blocks/product-list.ts
36338
- import { z as z60 } from "zod";
37086
+ import { z as z58 } from "zod";
36339
37087
  var productListManifest = createBlockManifest({
36340
37088
  id: "block.product-list",
36341
37089
  version: "1.0.0",
@@ -36468,7 +37216,7 @@ var productListBlockDefinition = {
36468
37216
  }
36469
37217
  }
36470
37218
  };
36471
- var productListDataSchema = z60.object({
37219
+ var productListDataSchema = z58.object({
36472
37220
  products: publicProductsResponseSchema.optional()
36473
37221
  });
36474
37222
 
@@ -36729,72 +37477,72 @@ var checkoutBlockDefinition = {
36729
37477
  };
36730
37478
 
36731
37479
  // ../blocks/src/system/runtime/nodes/gifting.interactive.ts
36732
- import { z as z61 } from "zod";
36733
- var publicGiftCardOfferSchema = z61.object({
36734
- id: z61.string(),
36735
- kind: z61.literal("gift_card"),
36736
- title: z61.string(),
36737
- description: z61.string().nullable(),
36738
- sortOrder: z61.number().int(),
36739
- giftCard: z61.object({
36740
- fixedDenominations: z61.array(z61.number().int().positive()),
36741
- customAmountEnabled: z61.boolean(),
36742
- customAmountMinCents: z61.number().int().positive(),
36743
- customAmountMaxCents: z61.number().int().positive()
37480
+ import { z as z59 } from "zod";
37481
+ var publicGiftCardOfferSchema = z59.object({
37482
+ id: z59.string(),
37483
+ kind: z59.literal("gift_card"),
37484
+ title: z59.string(),
37485
+ description: z59.string().nullable(),
37486
+ sortOrder: z59.number().int(),
37487
+ giftCard: z59.object({
37488
+ fixedDenominations: z59.array(z59.number().int().positive()),
37489
+ customAmountEnabled: z59.boolean(),
37490
+ customAmountMinCents: z59.number().int().positive(),
37491
+ customAmountMaxCents: z59.number().int().positive()
36744
37492
  }),
36745
- voucher: z61.null()
36746
- });
36747
- var publicVoucherOfferSchema = z61.object({
36748
- id: z61.string(),
36749
- kind: z61.literal("voucher"),
36750
- title: z61.string(),
36751
- description: z61.string().nullable(),
36752
- sortOrder: z61.number().int(),
36753
- giftCard: z61.null(),
36754
- voucher: z61.object({
36755
- purchaseAmountCents: z61.number().int().positive()
37493
+ voucher: z59.null()
37494
+ });
37495
+ var publicVoucherOfferSchema = z59.object({
37496
+ id: z59.string(),
37497
+ kind: z59.literal("voucher"),
37498
+ title: z59.string(),
37499
+ description: z59.string().nullable(),
37500
+ sortOrder: z59.number().int(),
37501
+ giftCard: z59.null(),
37502
+ voucher: z59.object({
37503
+ purchaseAmountCents: z59.number().int().positive()
36756
37504
  })
36757
37505
  });
36758
- var publicGiftingOffersResponseSchema = z61.object({
36759
- currency: z61.string(),
36760
- giftCards: z61.array(publicGiftCardOfferSchema),
36761
- vouchers: z61.array(publicVoucherOfferSchema)
37506
+ var publicGiftingOffersResponseSchema = z59.object({
37507
+ currency: z59.string(),
37508
+ giftCards: z59.array(publicGiftCardOfferSchema),
37509
+ vouchers: z59.array(publicVoucherOfferSchema)
36762
37510
  });
36763
- var giftingSourceSchema = z61.object({
36764
- siteId: z61.string().optional(),
36765
- apiBaseUrl: z61.string().optional(),
37511
+ var giftingSourceSchema = z59.object({
37512
+ siteId: z59.string().optional(),
37513
+ apiBaseUrl: z59.string().optional(),
36766
37514
  offers: publicGiftingOffersResponseSchema.nullable().optional(),
36767
- className: z61.string().nullable().optional(),
36768
- heading: z61.string().nullable().optional(),
36769
- intro: z61.string().nullable().optional(),
36770
- giftCardsHeading: z61.string().nullable().optional(),
36771
- vouchersHeading: z61.string().nullable().optional(),
36772
- emptyStateText: z61.string().nullable().optional(),
36773
- checkoutButtonText: z61.string().nullable().optional(),
36774
- successMessage: z61.string().nullable().optional()
36775
- });
36776
- var giftingDisplaySchema = z61.object({
36777
- kind: z61.literal("gifting"),
36778
- state: z61.literal("ready"),
36779
- className: z61.string().nullable(),
36780
- heading: z61.string(),
36781
- intro: z61.string().nullable(),
36782
- giftCardsHeading: z61.string(),
36783
- vouchersHeading: z61.string(),
36784
- emptyStateText: z61.string()
36785
- });
36786
- var giftingHydrationSchema = z61.object({
37515
+ className: z59.string().nullable().optional(),
37516
+ heading: z59.string().nullable().optional(),
37517
+ intro: z59.string().nullable().optional(),
37518
+ giftCardsHeading: z59.string().nullable().optional(),
37519
+ vouchersHeading: z59.string().nullable().optional(),
37520
+ emptyStateText: z59.string().nullable().optional(),
37521
+ checkoutButtonText: z59.string().nullable().optional(),
37522
+ successMessage: z59.string().nullable().optional()
37523
+ });
37524
+ var giftingDisplaySchema = z59.object({
37525
+ kind: z59.literal("gifting"),
37526
+ state: z59.literal("ready"),
37527
+ className: z59.string().nullable(),
37528
+ heading: z59.string(),
37529
+ intro: z59.string().nullable(),
37530
+ giftCardsHeading: z59.string(),
37531
+ vouchersHeading: z59.string(),
37532
+ emptyStateText: z59.string()
37533
+ });
37534
+ var giftingHydrationSchema = z59.object({
36787
37535
  offers: publicGiftingOffersResponseSchema.nullable(),
36788
- checkoutButtonText: z61.string(),
36789
- successMessage: z61.string()
37536
+ checkoutButtonText: z59.string(),
37537
+ successMessage: z59.string()
36790
37538
  });
36791
- var giftingRenderSchema = z61.object({
37539
+ var giftingRenderSchema = z59.object({
36792
37540
  display: giftingDisplaySchema,
36793
37541
  hydration: giftingHydrationSchema
36794
37542
  });
36795
- var giftingIslandMetaCodec = createZodCodec(z61.object({
36796
- siteId: z61.string().optional(),
36797
- apiBaseUrl: z61.string().optional()
37543
+ var giftingIslandMetaCodec = createZodCodec(z59.object({
37544
+ siteId: z59.string().optional(),
37545
+ apiBaseUrl: z59.string().optional()
36798
37546
  }));
36799
37547
  var giftingIslandMetaKeys = defineInteractiveIslandMetaKeys(
36800
37548
  "siteId",
@@ -36965,7 +37713,7 @@ var giftingBlockDefinition = {
36965
37713
  };
36966
37714
 
36967
37715
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
36968
- import { z as z62 } from "zod";
37716
+ import { z as z60 } from "zod";
36969
37717
 
36970
37718
  // ../blocks/src/system/blocks/newsletter-signup-destination.ts
36971
37719
  function parseNewsletterSignupBlockId(value) {
@@ -37100,65 +37848,65 @@ function withOptionalPhone(fields3, includePhone) {
37100
37848
  }
37101
37849
 
37102
37850
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
37103
- var newsletterPresetSchema = z62.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
37104
- var newsletterDestinationProviderSchema = z62.enum(["riverbank", "mailchimp"]);
37105
- var newsletterFieldSchema = z62.object({
37106
- id: z62.string(),
37107
- type: z62.enum(["email", "text"]),
37108
- label: z62.string(),
37109
- required: z62.boolean(),
37110
- placeholder: z62.string().optional()
37111
- });
37112
- var newsletterSignupBlockIdSchema = z62.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
37113
- var signedNewsletterDestinationRefSchema = z62.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
37114
- var newsletterPublicDestinationRefSchema = z62.discriminatedUnion("tag", [
37115
- z62.object({
37116
- tag: z62.literal("block_ref"),
37851
+ var newsletterPresetSchema = z60.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
37852
+ var newsletterDestinationProviderSchema = z60.enum(["riverbank", "mailchimp"]);
37853
+ var newsletterFieldSchema = z60.object({
37854
+ id: z60.string(),
37855
+ type: z60.enum(["email", "text"]),
37856
+ label: z60.string(),
37857
+ required: z60.boolean(),
37858
+ placeholder: z60.string().optional()
37859
+ });
37860
+ var newsletterSignupBlockIdSchema = z60.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
37861
+ var signedNewsletterDestinationRefSchema = z60.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
37862
+ var newsletterPublicDestinationRefSchema = z60.discriminatedUnion("tag", [
37863
+ z60.object({
37864
+ tag: z60.literal("block_ref"),
37117
37865
  blockId: newsletterSignupBlockIdSchema
37118
37866
  }),
37119
- z62.object({
37120
- tag: z62.literal("signed_destination_ref"),
37867
+ z60.object({
37868
+ tag: z60.literal("signed_destination_ref"),
37121
37869
  token: signedNewsletterDestinationRefSchema
37122
37870
  })
37123
37871
  ]);
37124
- var newsletterSourceSchema = z62.object({
37125
- blockId: z62.string().nullable().optional(),
37126
- siteId: z62.string().optional(),
37127
- apiBaseUrl: z62.string().optional(),
37128
- listId: z62.string().nullable().optional(),
37872
+ var newsletterSourceSchema = z60.object({
37873
+ blockId: z60.string().nullable().optional(),
37874
+ siteId: z60.string().optional(),
37875
+ apiBaseUrl: z60.string().optional(),
37876
+ listId: z60.string().nullable().optional(),
37129
37877
  destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
37130
37878
  preset: newsletterPresetSchema.optional(),
37131
- includePhone: z62.boolean().optional(),
37132
- buttonLabel: z62.string().nullable().optional(),
37133
- successMessage: z62.string().nullable().optional(),
37134
- privacyNote: z62.string().nullable().optional(),
37135
- tags: z62.string().nullable().optional(),
37136
- spamProtectionEnabled: z62.boolean().optional(),
37137
- className: z62.string().nullable().optional()
37138
- });
37139
- var newsletterDisplaySchema = z62.object({
37140
- kind: z62.literal("newsletter-form"),
37141
- className: z62.string().nullable(),
37142
- buttonLabel: z62.string(),
37143
- successMessage: z62.string().nullable(),
37144
- privacyNote: z62.string().nullable(),
37145
- fields: z62.array(newsletterFieldSchema)
37146
- });
37147
- var newsletterHydrationSchema = z62.object({
37879
+ includePhone: z60.boolean().optional(),
37880
+ buttonLabel: z60.string().nullable().optional(),
37881
+ successMessage: z60.string().nullable().optional(),
37882
+ privacyNote: z60.string().nullable().optional(),
37883
+ tags: z60.string().nullable().optional(),
37884
+ spamProtectionEnabled: z60.boolean().optional(),
37885
+ className: z60.string().nullable().optional()
37886
+ });
37887
+ var newsletterDisplaySchema = z60.object({
37888
+ kind: z60.literal("newsletter-form"),
37889
+ className: z60.string().nullable(),
37890
+ buttonLabel: z60.string(),
37891
+ successMessage: z60.string().nullable(),
37892
+ privacyNote: z60.string().nullable(),
37893
+ fields: z60.array(newsletterFieldSchema)
37894
+ });
37895
+ var newsletterHydrationSchema = z60.object({
37148
37896
  destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
37149
- listId: z62.string().nullable().optional(),
37897
+ listId: z60.string().nullable().optional(),
37150
37898
  preset: newsletterPresetSchema,
37151
- includePhone: z62.boolean(),
37152
- tags: z62.string().nullable().optional(),
37153
- spamProtectionEnabled: z62.boolean().optional()
37899
+ includePhone: z60.boolean(),
37900
+ tags: z60.string().nullable().optional(),
37901
+ spamProtectionEnabled: z60.boolean().optional()
37154
37902
  });
37155
- var newsletterRenderSchema = z62.object({
37903
+ var newsletterRenderSchema = z60.object({
37156
37904
  display: newsletterDisplaySchema,
37157
37905
  hydration: newsletterHydrationSchema
37158
37906
  });
37159
- var newsletterIslandMetaCodec = createZodCodec(z62.object({
37160
- siteId: z62.string().optional(),
37161
- apiBaseUrl: z62.string().optional()
37907
+ var newsletterIslandMetaCodec = createZodCodec(z60.object({
37908
+ siteId: z60.string().optional(),
37909
+ apiBaseUrl: z60.string().optional()
37162
37910
  }));
37163
37911
  var newsletterIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
37164
37912
  function buildNewsletterDisplay(source) {
@@ -37297,23 +38045,23 @@ var newsletterSignupBlockDefinition = {
37297
38045
  };
37298
38046
 
37299
38047
  // ../blocks/src/system/blocks/team-members.ts
37300
- import { z as z63 } from "zod";
38048
+ import { z as z61 } from "zod";
37301
38049
  var ITEM_NAME2 = "member";
37302
38050
  var teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
37303
38051
  message: "Team member photos must be image media"
37304
38052
  }).nullable();
37305
- var teamMemberDataSchema = z63.object({
37306
- _type: z63.literal("teamMember"),
37307
- id: z63.string(),
37308
- name: z63.string(),
37309
- role: z63.string().nullable(),
37310
- roleLabel: z63.string().nullable(),
37311
- bio: z63.string().nullable(),
37312
- summary: z63.string().nullable(),
38053
+ var teamMemberDataSchema = z61.object({
38054
+ _type: z61.literal("teamMember"),
38055
+ id: z61.string(),
38056
+ name: z61.string(),
38057
+ role: z61.string().nullable(),
38058
+ roleLabel: z61.string().nullable(),
38059
+ bio: z61.string().nullable(),
38060
+ summary: z61.string().nullable(),
37313
38061
  photo: teamMemberPhotoSchema,
37314
- profilePath: z63.string().nullable()
38062
+ profilePath: z61.string().nullable()
37315
38063
  });
37316
- var teamMembersDataSchema = z63.array(teamMemberDataSchema);
38064
+ var teamMembersDataSchema = z61.array(teamMemberDataSchema);
37317
38065
  var dynamicSourceWhen = { equals: "site_staff" };
37318
38066
  var manualSourceWhen = { equals: "site_staff", not: true };
37319
38067
  var headingNode = text(
@@ -38205,13 +38953,6 @@ var systemBlockDefinitionsRaw = [
38205
38953
  weight: "featured",
38206
38954
  bias: "clear",
38207
38955
  surfaces: heroSectionSurfaces
38208
- }),
38209
- layoutProfile({
38210
- variantKey: "splitEditorial",
38211
- family: "split",
38212
- weight: "featured",
38213
- bias: "clear",
38214
- surfaces: heroSectionSurfaces
38215
38956
  })
38216
38957
  ]
38217
38958
  })),
@@ -38455,9 +39196,8 @@ var systemBlockDefinitionsRaw = [
38455
39196
  flow: offeringsFlow,
38456
39197
  layoutProfiles: [
38457
39198
  layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
39199
+ layoutProfile({ variantKey: "calendar", family: "stack", weight: "standard" }),
38458
39200
  layoutProfile({ variantKey: "list", family: "stack", weight: "standard" }),
38459
- layoutProfile({ variantKey: "month", family: "grid", weight: "standard" }),
38460
- layoutProfile({ variantKey: "week", family: "stack", weight: "standard" }),
38461
39201
  layoutProfile({ variantKey: "timetable", family: "stack", weight: "standard" })
38462
39202
  ]
38463
39203
  })),
@@ -39020,10 +39760,7 @@ function normalizeRenderStage(stage) {
39020
39760
  return stage === "preview" ? "preview" : "published";
39021
39761
  }
39022
39762
  function isRouteVisibleInStage(routeEntry, stageInput) {
39023
- const stage = normalizeRenderStage(stageInput);
39024
- if (stage === "preview" || !isRouteRecord(routeEntry)) {
39025
- return true;
39026
- }
39763
+ if (normalizeRenderStage(stageInput) === "preview" || !isRouteRecord(routeEntry)) return true;
39027
39764
  const status = routeEntry.status;
39028
39765
  return !(typeof status === "string" && status !== "published");
39029
39766
  }
@@ -39032,52 +39769,45 @@ function extractRouteHref(candidate, stageInput = "published") {
39032
39769
  const trimmed = candidate.trim();
39033
39770
  return trimmed.length > 0 ? trimmed : null;
39034
39771
  }
39035
- if (!isRouteRecord(candidate)) {
39036
- return null;
39037
- }
39038
- const stage = normalizeRenderStage(stageInput);
39039
- const fields3 = stage === "preview" ? ["draftPath", "path", "href", "url"] : ["path", "href", "url"];
39772
+ if (!isRouteRecord(candidate)) return null;
39773
+ const fields3 = normalizeRenderStage(stageInput) === "preview" ? [
39774
+ "draftPath",
39775
+ "path",
39776
+ "href",
39777
+ "url"
39778
+ ] : [
39779
+ "path",
39780
+ "href",
39781
+ "url"
39782
+ ];
39040
39783
  for (const field of fields3) {
39041
39784
  const value = candidate[field];
39042
- if (typeof value === "string" && value.trim().length > 0) {
39043
- return value.trim();
39044
- }
39785
+ if (typeof value === "string" && value.trim().length > 0) return value.trim();
39045
39786
  }
39046
39787
  return null;
39047
39788
  }
39048
39789
  function extractRouteUpdatedAt(candidate) {
39049
- if (!isRouteRecord(candidate)) {
39050
- return null;
39051
- }
39052
- const fields3 = [
39790
+ if (!isRouteRecord(candidate)) return null;
39791
+ for (const field of [
39053
39792
  "updatedAt",
39054
39793
  "updated_at",
39055
39794
  "publishedAt",
39056
39795
  "published_at",
39057
39796
  "modifiedAt",
39058
39797
  "modified_at"
39059
- ];
39060
- for (const field of fields3) {
39798
+ ]) {
39061
39799
  const value = candidate[field];
39062
- if (typeof value === "string" && value.length > 0) {
39063
- return value;
39064
- }
39800
+ if (typeof value === "string" && value.length > 0) return value;
39065
39801
  }
39066
39802
  return null;
39067
39803
  }
39068
39804
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
39069
39805
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
39070
- if (!routeId || !routes) {
39071
- return null;
39072
- }
39806
+ if (!routeId || !routes) return null;
39073
39807
  const routeEntry = routes[routeId];
39074
- if (!isRouteVisibleInStage(routeEntry, stageInput)) {
39075
- return null;
39076
- }
39808
+ if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
39077
39809
  const href = extractRouteHref(routeEntry, stageInput);
39078
- if (!href) {
39079
- return null;
39080
- }
39810
+ if (!href) return null;
39081
39811
  return {
39082
39812
  routeId,
39083
39813
  href,
@@ -39315,7 +40045,7 @@ function resolveLinkedContentEditSupport(contentType) {
39315
40045
  case "unsupported-domain-backed":
39316
40046
  return { kind: "unsupported-domain-backed", reason: metadata.reason };
39317
40047
  default:
39318
- return assertNever(metadata);
40048
+ return assertNever2(metadata);
39319
40049
  }
39320
40050
  }
39321
40051
  function contentTypeKeyToLabel(key) {
@@ -40113,42 +40843,45 @@ import { jsx as jsx5 } from "react/jsx-runtime";
40113
40843
  import * as React from "react";
40114
40844
  import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
40115
40845
 
40846
+ // ../theme-core/src/ResponsiveScope.tsx
40847
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
40848
+
40116
40849
  // ../theme-core/src/fonts/uploadFormat.ts
40117
40850
  var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
40118
40851
 
40119
40852
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
40120
- import { z as z64 } from "zod";
40121
- var themeBridgeConfigSchema = z64.object({
40122
- tokens: z64.record(z64.string(), z64.string()),
40123
- typography: z64.object({
40124
- headingFamily: z64.string().optional(),
40125
- bodyFamily: z64.string().optional(),
40126
- headingWeight: z64.number().optional(),
40127
- bodyWeight: z64.number().optional()
40853
+ import { z as z62 } from "zod";
40854
+ var themeBridgeConfigSchema = z62.object({
40855
+ tokens: z62.record(z62.string(), z62.string()),
40856
+ typography: z62.object({
40857
+ headingFamily: z62.string().optional(),
40858
+ bodyFamily: z62.string().optional(),
40859
+ headingWeight: z62.number().optional(),
40860
+ bodyWeight: z62.number().optional()
40128
40861
  }).optional(),
40129
- spacing: z64.enum(["comfortable", "standard", "dense"]).optional(),
40130
- corners: z64.enum(["square", "soft", "rounded", "pill"]).optional(),
40131
- shadows: z64.enum(["none", "low", "medium", "high"]).optional(),
40132
- components: z64.object({
40133
- buttons: z64.union([
40134
- z64.boolean(),
40135
- z64.object({
40136
- variants: z64.array(z64.enum(["primary", "secondary", "outline", "ghost"])).optional()
40862
+ spacing: z62.enum(["comfortable", "standard", "dense"]).optional(),
40863
+ corners: z62.enum(["square", "soft", "rounded", "pill"]).optional(),
40864
+ shadows: z62.enum(["none", "low", "medium", "high"]).optional(),
40865
+ components: z62.object({
40866
+ buttons: z62.union([
40867
+ z62.boolean(),
40868
+ z62.object({
40869
+ variants: z62.array(z62.enum(["primary", "secondary", "outline", "ghost"])).optional()
40137
40870
  })
40138
40871
  ]).optional(),
40139
- cards: z64.union([
40140
- z64.boolean(),
40141
- z64.object({
40142
- variants: z64.array(z64.enum(["default", "elevated", "outlined"])).optional()
40872
+ cards: z62.union([
40873
+ z62.boolean(),
40874
+ z62.object({
40875
+ variants: z62.array(z62.enum(["default", "elevated", "outlined"])).optional()
40143
40876
  })
40144
40877
  ]).optional(),
40145
- inputs: z64.boolean().optional()
40878
+ inputs: z62.boolean().optional()
40146
40879
  }).optional(),
40147
- overrides: z64.record(z64.string(), z64.string()).optional()
40880
+ overrides: z62.record(z62.string(), z62.string()).optional()
40148
40881
  }).passthrough();
40149
40882
 
40150
40883
  // ../theme-core/src/siteChrome.tsx
40151
- import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
40884
+ import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
40152
40885
 
40153
40886
  // ../blocks/src/system/runtime/bindings.ts
40154
40887
  var shouldLogWarnings = isNonProductionEnv();
@@ -40513,17 +41246,17 @@ function normalizeLoaderParams(endpoint, params, context) {
40513
41246
  function unsafeRetypeZodSchema(schema) {
40514
41247
  return schema;
40515
41248
  }
40516
- var navIdListSchema = z65.preprocess((value) => {
41249
+ var navIdListSchema = z63.preprocess((value) => {
40517
41250
  if (!Array.isArray(value)) return void 0;
40518
41251
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
40519
41252
  return filtered.length > 0 ? filtered : void 0;
40520
- }, z65.array(z65.string()).max(200).optional());
40521
- var dashboardNavVisibilityBaseSchema = z65.object({
40522
- mode: z65.enum(["augment", "restrict"]).optional(),
41253
+ }, z63.array(z63.string()).max(200).optional());
41254
+ var dashboardNavVisibilityBaseSchema = z63.object({
41255
+ mode: z63.enum(["augment", "restrict"]).optional(),
40523
41256
  allowIds: navIdListSchema,
40524
41257
  denyIds: navIdListSchema
40525
41258
  }).strip();
40526
- var dashboardNavVisibilityRolesSchema = z65.object({
41259
+ var dashboardNavVisibilityRolesSchema = z63.object({
40527
41260
  administrator: dashboardNavVisibilityBaseSchema.optional(),
40528
41261
  editor: dashboardNavVisibilityBaseSchema.optional(),
40529
41262
  team_member: dashboardNavVisibilityBaseSchema.optional()
@@ -40531,63 +41264,63 @@ var dashboardNavVisibilityRolesSchema = z65.object({
40531
41264
  var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
40532
41265
  roles: dashboardNavVisibilityRolesSchema
40533
41266
  }).strip();
40534
- var dashboardNavigationConfigSchema = z65.object({
41267
+ var dashboardNavigationConfigSchema = z63.object({
40535
41268
  siteNav: dashboardNavVisibilitySchema.optional(),
40536
41269
  settingsNav: dashboardNavVisibilitySchema.optional()
40537
41270
  }).strip();
40538
- var dashboardConfigSchema = z65.object({
40539
- previewEditingEnabled: z65.boolean().optional(),
41271
+ var dashboardConfigSchema = z63.object({
41272
+ previewEditingEnabled: z63.boolean().optional(),
40540
41273
  navigation: dashboardNavigationConfigSchema.optional()
40541
41274
  }).strip();
40542
41275
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
40543
41276
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
40544
- var sdkLoaderEndpointSchema = z65.enum(SUPPORTED_LOADER_ENDPOINTS);
40545
- var loaderFallbackScalarSchema = z65.union([
40546
- z65.string(),
40547
- z65.number(),
40548
- z65.boolean(),
40549
- z65.null()
41277
+ var sdkLoaderEndpointSchema = z63.enum(SUPPORTED_LOADER_ENDPOINTS);
41278
+ var loaderFallbackScalarSchema = z63.union([
41279
+ z63.string(),
41280
+ z63.number(),
41281
+ z63.boolean(),
41282
+ z63.null()
40550
41283
  ]);
40551
- var loaderParamBindingSchema = z65.object({
40552
- $bind: z65.object({
40553
- from: z65.string().min(1, "Binding path is required"),
41284
+ var loaderParamBindingSchema = z63.object({
41285
+ $bind: z63.object({
41286
+ from: z63.string().min(1, "Binding path is required"),
40554
41287
  fallback: loaderFallbackScalarSchema.optional()
40555
41288
  })
40556
41289
  });
40557
- var loaderParamValueSchema = z65.union([
40558
- z65.string(),
40559
- z65.number(),
40560
- z65.boolean(),
41290
+ var loaderParamValueSchema = z63.union([
41291
+ z63.string(),
41292
+ z63.number(),
41293
+ z63.boolean(),
40561
41294
  loaderParamBindingSchema
40562
41295
  ]);
40563
- var sdkConfigLoaderSchema = z65.object({
41296
+ var sdkConfigLoaderSchema = z63.object({
40564
41297
  endpoint: sdkLoaderEndpointSchema,
40565
- params: z65.record(z65.string(), loaderParamValueSchema),
40566
- mode: z65.enum(["server", "client"]).default("server")
41298
+ params: z63.record(z63.string(), loaderParamValueSchema),
41299
+ mode: z63.enum(["server", "client"]).default("server")
40567
41300
  });
40568
- var sdkDataLoadersSchema = z65.record(z65.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
40569
- var sdkCustomBlockIdSchema = z65.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
41301
+ var sdkDataLoadersSchema = z63.record(z63.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
41302
+ var sdkCustomBlockIdSchema = z63.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
40570
41303
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
40571
41304
  }).transform((value) => value);
40572
- var sdkCustomBlockInputSchema = z65.object({
41305
+ var sdkCustomBlockInputSchema = z63.object({
40573
41306
  id: sdkCustomBlockIdSchema,
40574
- title: z65.string().min(1),
40575
- titleSource: z65.union([z65.string().min(1), z65.array(z65.string().min(1)).min(1)]).optional(),
40576
- description: z65.string().optional(),
41307
+ title: z63.string().min(1),
41308
+ titleSource: z63.union([z63.string().min(1), z63.array(z63.string().min(1)).min(1)]).optional(),
41309
+ description: z63.string().optional(),
40577
41310
  category: blockCategoryEnum,
40578
- icon: z65.string().optional(),
40579
- tags: z65.array(z65.string()).optional(),
41311
+ icon: z63.string().optional(),
41312
+ tags: z63.array(z63.string()).optional(),
40580
41313
  fields: fieldDefinitionInputSchema.array().min(1),
40581
41314
  dataLoaders: sdkDataLoadersSchema,
40582
41315
  layout: NodeSchema.optional(),
40583
- variants: z65.record(z65.string().min(1), NodeSchema).optional(),
40584
- defaultVariant: z65.string().min(1).optional(),
40585
- variantOptions: z65.record(
40586
- z65.string().min(1),
40587
- z65.object({
40588
- label: z65.string().min(1).optional(),
40589
- description: z65.string().min(1).optional(),
40590
- icon: z65.string().min(1).optional()
41316
+ variants: z63.record(z63.string().min(1), NodeSchema).optional(),
41317
+ defaultVariant: z63.string().min(1).optional(),
41318
+ variantOptions: z63.record(
41319
+ z63.string().min(1),
41320
+ z63.object({
41321
+ label: z63.string().min(1).optional(),
41322
+ description: z63.string().min(1).optional(),
41323
+ icon: z63.string().min(1).optional()
40591
41324
  })
40592
41325
  ).optional(),
40593
41326
  previewCustomize: previewCustomizeManifestCurationSchema.optional()
@@ -40598,7 +41331,7 @@ var sdkCustomBlockInputSchema = z65.object({
40598
41331
  const exists = data.fields.some((field) => field.id === source);
40599
41332
  if (!exists) {
40600
41333
  ctx.addIssue({
40601
- code: z65.ZodIssueCode.custom,
41334
+ code: z63.ZodIssueCode.custom,
40602
41335
  message: `titleSource must reference a valid field ID (got "${source}")`,
40603
41336
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
40604
41337
  });
@@ -40607,7 +41340,7 @@ var sdkCustomBlockInputSchema = z65.object({
40607
41340
  }
40608
41341
  if (data.layout && data.variants) {
40609
41342
  ctx.addIssue({
40610
- code: z65.ZodIssueCode.custom,
41343
+ code: z63.ZodIssueCode.custom,
40611
41344
  message: "Custom block must define either `layout` or `variants`, not both",
40612
41345
  path: ["variants"]
40613
41346
  });
@@ -40616,14 +41349,14 @@ var sdkCustomBlockInputSchema = z65.object({
40616
41349
  const keys = Object.keys(data.variants);
40617
41350
  if (keys.length === 0) {
40618
41351
  ctx.addIssue({
40619
- code: z65.ZodIssueCode.custom,
41352
+ code: z63.ZodIssueCode.custom,
40620
41353
  message: "`variants` must contain at least one variant key",
40621
41354
  path: ["variants"]
40622
41355
  });
40623
41356
  }
40624
41357
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
40625
41358
  ctx.addIssue({
40626
- code: z65.ZodIssueCode.custom,
41359
+ code: z63.ZodIssueCode.custom,
40627
41360
  message: "`defaultVariant` must be a key present in `variants`",
40628
41361
  path: ["defaultVariant"]
40629
41362
  });
@@ -40632,7 +41365,7 @@ var sdkCustomBlockInputSchema = z65.object({
40632
41365
  for (const key of Object.keys(data.variantOptions)) {
40633
41366
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
40634
41367
  ctx.addIssue({
40635
- code: z65.ZodIssueCode.custom,
41368
+ code: z63.ZodIssueCode.custom,
40636
41369
  message: "`variantOptions` key must exist in `variants`",
40637
41370
  path: ["variantOptions", key]
40638
41371
  });
@@ -40641,78 +41374,78 @@ var sdkCustomBlockInputSchema = z65.object({
40641
41374
  }
40642
41375
  }
40643
41376
  });
40644
- var sdkBlockFieldExtensionInputSchema = z65.object({
41377
+ var sdkBlockFieldExtensionInputSchema = z63.object({
40645
41378
  fields: fieldDefinitionInputSchema.array().min(1)
40646
41379
  });
40647
- var sdkBlockFieldExtensionsInputSchema = z65.record(
40648
- z65.string().min(1),
41380
+ var sdkBlockFieldExtensionsInputSchema = z63.record(
41381
+ z63.string().min(1),
40649
41382
  sdkBlockFieldExtensionInputSchema
40650
41383
  );
40651
- var sdkThemePaletteSchema = z65.record(z65.string(), z65.string());
40652
- var sdkThemeConfigSchema = z65.object({
41384
+ var sdkThemePaletteSchema = z63.record(z63.string(), z63.string());
41385
+ var sdkThemeConfigSchema = z63.object({
40653
41386
  palette: sdkThemePaletteSchema
40654
41387
  });
40655
- var sdkSectionBackgroundSchema = z65.object({
40656
- id: z65.string().min(1),
40657
- label: z65.string().min(1),
40658
- token: z65.string().min(1)
41388
+ var sdkSectionBackgroundSchema = z63.object({
41389
+ id: z63.string().min(1),
41390
+ label: z63.string().min(1),
41391
+ token: z63.string().min(1)
40659
41392
  });
40660
- var sdkSectionOptionsConfigSchema = z65.object({
40661
- backgroundColor: z65.boolean().optional(),
40662
- backgroundImage: z65.boolean().optional(),
40663
- backgroundGradient: z65.boolean().optional(),
40664
- spacing: z65.union([z65.array(z65.enum(["compact", "default", "spacious"])), z65.boolean()]).optional(),
40665
- textColor: z65.boolean().optional()
41393
+ var sdkSectionOptionsConfigSchema = z63.object({
41394
+ backgroundColor: z63.boolean().optional(),
41395
+ backgroundImage: z63.boolean().optional(),
41396
+ backgroundGradient: z63.boolean().optional(),
41397
+ spacing: z63.union([z63.array(z63.enum(["compact", "default", "spacious"])), z63.boolean()]).optional(),
41398
+ textColor: z63.boolean().optional()
40666
41399
  });
40667
- var sdkContainerOptionsConfigSchema = z65.object({
40668
- maxWidth: z65.union([z65.array(z65.enum(["narrow", "default", "wide", "full"])), z65.boolean()]).optional(),
40669
- alignment: z65.union([z65.array(z65.enum(["left", "center", "right"])), z65.boolean()]).optional()
41400
+ var sdkContainerOptionsConfigSchema = z63.object({
41401
+ maxWidth: z63.union([z63.array(z63.enum(["narrow", "default", "wide", "full"])), z63.boolean()]).optional(),
41402
+ alignment: z63.union([z63.array(z63.enum(["left", "center", "right"])), z63.boolean()]).optional()
40670
41403
  });
40671
- var sdkSiteStyleConfigSchema = z65.object({
40672
- sectionBackgrounds: z65.array(sdkSectionBackgroundSchema).optional(),
41404
+ var sdkSiteStyleConfigSchema = z63.object({
41405
+ sectionBackgrounds: z63.array(sdkSectionBackgroundSchema).optional(),
40673
41406
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
40674
41407
  containerOptions: sdkContainerOptionsConfigSchema.optional()
40675
41408
  });
40676
- var sdkSiteLayoutConfigSchema = z65.object({
40677
- footerBlocks: z65.array(
40678
- z65.object({
40679
- id: z65.string().min(1).optional(),
40680
- kind: z65.string().min(1),
40681
- content: z65.record(z65.string(), z65.unknown()).optional()
41409
+ var sdkSiteLayoutConfigSchema = z63.object({
41410
+ footerBlocks: z63.array(
41411
+ z63.object({
41412
+ id: z63.string().min(1).optional(),
41413
+ kind: z63.string().min(1),
41414
+ content: z63.record(z63.string(), z63.unknown()).optional()
40682
41415
  })
40683
41416
  ).optional()
40684
41417
  });
40685
- var sdkFieldSelectOptionSchema = z65.object({
40686
- value: z65.string(),
40687
- label: z65.string()
41418
+ var sdkFieldSelectOptionSchema = z63.object({
41419
+ value: z63.string(),
41420
+ label: z63.string()
40688
41421
  });
40689
- var sdkBlockFieldConfigSchema = z65.object({
40690
- options: z65.array(sdkFieldSelectOptionSchema).optional()
41422
+ var sdkBlockFieldConfigSchema = z63.object({
41423
+ options: z63.array(sdkFieldSelectOptionSchema).optional()
40691
41424
  });
40692
- var sdkBlockFieldOptionsMapSchema = z65.record(
40693
- z65.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
41425
+ var sdkBlockFieldOptionsMapSchema = z63.record(
41426
+ z63.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
40694
41427
  message: "Block ID must be 'block.*' or 'custom.*' format"
40695
41428
  }),
40696
- z65.record(z65.string().min(1), sdkBlockFieldConfigSchema)
41429
+ z63.record(z63.string().min(1), sdkBlockFieldConfigSchema)
40697
41430
  ).optional();
40698
- var sdkContentTypeTemplateConfigSchema = z65.object({
40699
- blocks: z65.array(z65.unknown())
41431
+ var sdkContentTypeTemplateConfigSchema = z63.object({
41432
+ blocks: z63.array(z63.unknown())
40700
41433
  }).passthrough();
40701
- var sdkContentTypeOrderingConfigSchema = z65.object({
40702
- mode: z65.enum(["default", "manual"]).optional()
41434
+ var sdkContentTypeOrderingConfigSchema = z63.object({
41435
+ mode: z63.enum(["default", "manual"]).optional()
40703
41436
  }).optional();
40704
- var sdkContentTypeConfigSchema = z65.object({
40705
- key: z65.string().min(1),
40706
- fields: z65.array(z65.unknown()),
41437
+ var sdkContentTypeConfigSchema = z63.object({
41438
+ key: z63.string().min(1),
41439
+ fields: z63.array(z63.unknown()),
40707
41440
  ordering: sdkContentTypeOrderingConfigSchema,
40708
41441
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
40709
41442
  }).passthrough();
40710
- var sdkContentConfigSchema = z65.object({
40711
- contentTypes: z65.array(sdkContentTypeConfigSchema).optional(),
40712
- pages: z65.array(z65.unknown()).optional(),
40713
- entries: z65.array(z65.unknown()).optional(),
40714
- navigationMenus: z65.array(z65.unknown()).optional(),
40715
- settings: z65.unknown().optional()
41443
+ var sdkContentConfigSchema = z63.object({
41444
+ contentTypes: z63.array(sdkContentTypeConfigSchema).optional(),
41445
+ pages: z63.array(z63.unknown()).optional(),
41446
+ entries: z63.array(z63.unknown()).optional(),
41447
+ navigationMenus: z63.array(z63.unknown()).optional(),
41448
+ settings: z63.unknown().optional()
40716
41449
  }).passthrough();
40717
41450
  var SDK_WORKFLOW_ID_MAX_LENGTH = 120;
40718
41451
  var SDK_WORKFLOW_TITLE_MAX_LENGTH = 120;
@@ -40727,62 +41460,62 @@ var SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH = 120;
40727
41460
  var SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH = 500;
40728
41461
  var SDK_WORKFLOW_ID_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
40729
41462
  var SDK_WORKFLOW_ENDPOINT_PATTERN = /^\//;
40730
- var sdkWorkflowIdSchema = z65.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
41463
+ var sdkWorkflowIdSchema = z63.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
40731
41464
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
40732
41465
  });
40733
- var sdkWorkflowEndpointSchema = z65.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
40734
- var sdkWorkflowManualTriggerSchema = z65.object({
40735
- type: z65.literal("manual")
41466
+ var sdkWorkflowEndpointSchema = z63.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
41467
+ var sdkWorkflowManualTriggerSchema = z63.object({
41468
+ type: z63.literal("manual")
40736
41469
  }).strict();
40737
- var sdkWorkflowTriggerFieldSchema = z65.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
41470
+ var sdkWorkflowTriggerFieldSchema = z63.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
40738
41471
  message: "Workflow trigger fields must be top-level content field IDs, not paths"
40739
41472
  });
40740
- var sdkWorkflowFieldChangedConditionSchema = z65.object({
41473
+ var sdkWorkflowFieldChangedConditionSchema = z63.object({
40741
41474
  field: sdkWorkflowTriggerFieldSchema,
40742
- changed: z65.literal(true)
41475
+ changed: z63.literal(true)
40743
41476
  }).strict();
40744
- var sdkWorkflowFieldEmptyConditionSchema = z65.object({
41477
+ var sdkWorkflowFieldEmptyConditionSchema = z63.object({
40745
41478
  field: sdkWorkflowTriggerFieldSchema,
40746
- isEmpty: z65.boolean()
41479
+ isEmpty: z63.boolean()
40747
41480
  }).strict();
40748
- var sdkWorkflowEntryDraftUpdatedTriggerSchema = z65.object({
40749
- type: z65.literal("entry.draft.updated"),
40750
- when: z65.array(
40751
- z65.union([
41481
+ var sdkWorkflowEntryDraftUpdatedTriggerSchema = z63.object({
41482
+ type: z63.literal("entry.draft.updated"),
41483
+ when: z63.array(
41484
+ z63.union([
40752
41485
  sdkWorkflowFieldChangedConditionSchema,
40753
41486
  sdkWorkflowFieldEmptyConditionSchema
40754
41487
  ])
40755
41488
  ).min(1).max(SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT)
40756
41489
  }).strict();
40757
- var sdkWorkflowTriggerSchema = z65.discriminatedUnion("type", [
41490
+ var sdkWorkflowTriggerSchema = z63.discriminatedUnion("type", [
40758
41491
  sdkWorkflowManualTriggerSchema,
40759
41492
  sdkWorkflowEntryDraftUpdatedTriggerSchema
40760
41493
  ]);
40761
- var sdkWorkflowConfirmationSchema = z65.object({
40762
- title: z65.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
40763
- body: z65.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
41494
+ var sdkWorkflowConfirmationSchema = z63.object({
41495
+ title: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
41496
+ body: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
40764
41497
  }).strict();
40765
- var sdkWorkflowConfigSchema = z65.object({
41498
+ var sdkWorkflowConfigSchema = z63.object({
40766
41499
  id: sdkWorkflowIdSchema,
40767
- title: z65.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
40768
- description: z65.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
40769
- contentType: z65.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
41500
+ title: z63.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
41501
+ description: z63.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
41502
+ contentType: z63.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
40770
41503
  endpoint: sdkWorkflowEndpointSchema,
40771
- triggers: z65.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
41504
+ triggers: z63.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
40772
41505
  confirmation: sdkWorkflowConfirmationSchema.optional()
40773
41506
  }).strict();
40774
- var sdkWorkflowsSchema = z65.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
41507
+ var sdkWorkflowsSchema = z63.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
40775
41508
  const ids = workflows.map((workflow) => workflow.id);
40776
41509
  return ids.length === new Set(ids).size;
40777
41510
  }, { message: "Workflow IDs must be unique" }).optional();
40778
- var riverbankSiteConfigInputSchema = z65.object({
40779
- siteId: z65.string().uuid(),
40780
- previewUrl: z65.string().url().optional(),
40781
- liveUrl: z65.string().url().optional(),
41511
+ var riverbankSiteConfigInputSchema = z63.object({
41512
+ siteId: z63.string().uuid(),
41513
+ previewUrl: z63.string().url().optional(),
41514
+ liveUrl: z63.string().url().optional(),
40782
41515
  theme: sdkThemeConfigSchema.optional(),
40783
41516
  styles: sdkSiteStyleConfigSchema.optional(),
40784
41517
  layout: sdkSiteLayoutConfigSchema.optional(),
40785
- customBlocks: z65.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
41518
+ customBlocks: z63.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
40786
41519
  const ids = blocks.map((b) => b.id);
40787
41520
  return ids.length === new Set(ids).size;
40788
41521
  }, { message: "Block IDs must be unique" }).optional(),
@@ -40790,50 +41523,50 @@ var riverbankSiteConfigInputSchema = z65.object({
40790
41523
  blockFieldExtensions: sdkBlockFieldExtensionsInputSchema.optional(),
40791
41524
  workflows: sdkWorkflowsSchema,
40792
41525
  content: sdkContentConfigSchema.optional(),
40793
- contentDir: z65.string().optional(),
40794
- sync: z65.object({
40795
- existingEntries: z65.enum(["skip", "update"]).optional()
41526
+ contentDir: z63.string().optional(),
41527
+ sync: z63.object({
41528
+ existingEntries: z63.enum(["skip", "update"]).optional()
40796
41529
  }).optional(),
40797
- deploy: z65.object({
40798
- verifyCommand: z65.string().optional(),
40799
- prebuildOutput: z65.string().optional()
41530
+ deploy: z63.object({
41531
+ verifyCommand: z63.string().optional(),
41532
+ prebuildOutput: z63.string().optional()
40800
41533
  }).optional(),
40801
- themeSource: z65.enum(["local", "cms"]).optional(),
40802
- activeTheme: z65.string().optional(),
40803
- enablePortal: z65.boolean().optional(),
41534
+ themeSource: z63.enum(["local", "cms"]).optional(),
41535
+ activeTheme: z63.string().optional(),
41536
+ enablePortal: z63.boolean().optional(),
40804
41537
  dashboard: dashboardConfigSchema.optional()
40805
41538
  }).strict();
40806
- var pushSdkConfigBodySchema = z65.object({
41539
+ var pushSdkConfigBodySchema = z63.object({
40807
41540
  config: riverbankSiteConfigInputSchema,
40808
- forceContentTypes: z65.boolean().optional()
41541
+ forceContentTypes: z63.boolean().optional()
40809
41542
  }).strict();
40810
41543
 
40811
41544
  // ../api/src/siteOnboarding.ts
40812
- import { z as z66 } from "zod";
41545
+ import { z as z64 } from "zod";
40813
41546
  var LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS = {
40814
41547
  configure_appointments: {
40815
41548
  requirementId: "configure_appointments",
40816
41549
  reason: "launch_anyway"
40817
41550
  }
40818
41551
  };
40819
- var acknowledgeLaunchRequirementRequestSchema = z66.discriminatedUnion(
41552
+ var acknowledgeLaunchRequirementRequestSchema = z64.discriminatedUnion(
40820
41553
  "requirementId",
40821
41554
  [
40822
- z66.object({
40823
- requirementId: z66.literal("review_generated_site")
41555
+ z64.object({
41556
+ requirementId: z64.literal("review_generated_site")
40824
41557
  }),
40825
- z66.object({
40826
- requirementId: z66.literal(
41558
+ z64.object({
41559
+ requirementId: z64.literal(
40827
41560
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.requirementId
40828
41561
  ),
40829
- overrideReason: z66.literal(
41562
+ overrideReason: z64.literal(
40830
41563
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.reason
40831
41564
  )
40832
41565
  })
40833
41566
  ]
40834
41567
  );
40835
- var goLiveSiteRequestSchema = z66.object({
40836
- acceptExtraSiteCharge: z66.boolean().optional()
41568
+ var goLiveSiteRequestSchema = z64.object({
41569
+ acceptExtraSiteCharge: z64.boolean().optional()
40837
41570
  });
40838
41571
 
40839
41572
  // ../api/src/customerMembershipOutcomes.ts
@@ -40910,7 +41643,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
40910
41643
  ];
40911
41644
 
40912
41645
  // ../api/src/bookingVerticals.ts
40913
- import { z as z67 } from "zod";
41646
+ import { z as z65 } from "zod";
40914
41647
  var VERTICAL_IDS = [
40915
41648
  "yoga_wellness",
40916
41649
  "fitness_pt",
@@ -41075,39 +41808,39 @@ function getSiteVerticalConfigIssues(rawConfig, config) {
41075
41808
  }
41076
41809
  return [...issues];
41077
41810
  }
41078
- var VerticalIdSchema = z67.string().trim().transform((value, ctx) => {
41811
+ var VerticalIdSchema = z65.string().trim().transform((value, ctx) => {
41079
41812
  const parsed = parseVerticalId(value);
41080
41813
  if (!parsed) {
41081
41814
  ctx.addIssue({
41082
- code: z67.ZodIssueCode.custom,
41815
+ code: z65.ZodIssueCode.custom,
41083
41816
  message: "Unknown booking vertical"
41084
41817
  });
41085
- return z67.NEVER;
41818
+ return z65.NEVER;
41086
41819
  }
41087
41820
  return parsed;
41088
41821
  });
41089
- var VerticalPresetIdSchema = z67.string().trim().transform((value, ctx) => {
41822
+ var VerticalPresetIdSchema = z65.string().trim().transform((value, ctx) => {
41090
41823
  const parsed = parseVerticalPresetId(value);
41091
41824
  if (!parsed) {
41092
41825
  ctx.addIssue({
41093
- code: z67.ZodIssueCode.custom,
41826
+ code: z65.ZodIssueCode.custom,
41094
41827
  message: "Unknown booking preset"
41095
41828
  });
41096
- return z67.NEVER;
41829
+ return z65.NEVER;
41097
41830
  }
41098
41831
  return parsed;
41099
41832
  });
41100
- var BookingVerticalConfigSchema = z67.object({
41833
+ var BookingVerticalConfigSchema = z65.object({
41101
41834
  verticalId: VerticalIdSchema.nullable(),
41102
- selectedPresetIds: z67.array(VerticalPresetIdSchema).max(20)
41835
+ selectedPresetIds: z65.array(VerticalPresetIdSchema).max(20)
41103
41836
  }).transform((value, ctx) => {
41104
41837
  const resolved = resolveSiteVerticalBookingConfig(value);
41105
41838
  if (resolved.kind === "invalid") {
41106
41839
  ctx.addIssue({
41107
- code: z67.ZodIssueCode.custom,
41840
+ code: z65.ZodIssueCode.custom,
41108
41841
  message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
41109
41842
  });
41110
- return z67.NEVER;
41843
+ return z65.NEVER;
41111
41844
  }
41112
41845
  return resolved.config;
41113
41846
  });
@@ -41134,51 +41867,51 @@ function isRecord9(value) {
41134
41867
  }
41135
41868
 
41136
41869
  // ../api/src/appointmentSetup.ts
41137
- import { z as z68 } from "zod";
41870
+ import { z as z66 } from "zod";
41138
41871
  var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
41139
- var appointmentSetupRefSchema = z68.discriminatedUnion("kind", [
41140
- z68.object({ kind: z68.literal("existing"), id: z68.string().min(1) }),
41141
- z68.object({ kind: z68.literal("new"), draftId: z68.string().min(1) })
41872
+ var appointmentSetupRefSchema = z66.discriminatedUnion("kind", [
41873
+ z66.object({ kind: z66.literal("existing"), id: z66.string().min(1) }),
41874
+ z66.object({ kind: z66.literal("new"), draftId: z66.string().min(1) })
41142
41875
  ]);
41143
- var appointmentSetupVenueChoiceSchema = z68.discriminatedUnion("kind", [
41144
- z68.object({ kind: z68.literal("none") }),
41145
- z68.object({ kind: z68.literal("existing"), venueId: z68.string().min(1) }),
41146
- z68.object({
41147
- kind: z68.literal("create"),
41148
- draftId: z68.string().min(1),
41149
- title: z68.string().trim().min(1),
41150
- description: z68.string().nullable(),
41151
- timezone: z68.string().trim().min(1).nullable(),
41152
- addressJson: z68.record(z68.string(), z68.unknown()),
41153
- locationJson: z68.object({ lat: z68.number(), lng: z68.number() }).nullable()
41876
+ var appointmentSetupVenueChoiceSchema = z66.discriminatedUnion("kind", [
41877
+ z66.object({ kind: z66.literal("none") }),
41878
+ z66.object({ kind: z66.literal("existing"), venueId: z66.string().min(1) }),
41879
+ z66.object({
41880
+ kind: z66.literal("create"),
41881
+ draftId: z66.string().min(1),
41882
+ title: z66.string().trim().min(1),
41883
+ description: z66.string().nullable(),
41884
+ timezone: z66.string().trim().min(1).nullable(),
41885
+ addressJson: z66.record(z66.string(), z66.unknown()),
41886
+ locationJson: z66.object({ lat: z66.number(), lng: z66.number() }).nullable()
41154
41887
  })
41155
41888
  ]);
41156
- var appointmentSetupPaymentDraftSchema = z68.object({
41157
- priceType: z68.union([z68.literal("free"), z68.literal("paid")])
41158
- });
41159
- var appointmentSetupServiceAssignmentDraftSchema = z68.discriminatedUnion("kind", [
41160
- z68.object({ kind: z68.literal("all_practitioners") }),
41161
- z68.object({
41162
- kind: z68.literal("selected_practitioners"),
41163
- resourceRefs: z68.array(appointmentSetupRefSchema)
41889
+ var appointmentSetupPaymentDraftSchema = z66.object({
41890
+ priceType: z66.union([z66.literal("free"), z66.literal("paid")])
41891
+ });
41892
+ var appointmentSetupServiceAssignmentDraftSchema = z66.discriminatedUnion("kind", [
41893
+ z66.object({ kind: z66.literal("all_practitioners") }),
41894
+ z66.object({
41895
+ kind: z66.literal("selected_practitioners"),
41896
+ resourceRefs: z66.array(appointmentSetupRefSchema)
41164
41897
  })
41165
41898
  ]);
41166
- var appointmentSetupServiceDraftSchema = z68.object({
41899
+ var appointmentSetupServiceDraftSchema = z66.object({
41167
41900
  ref: appointmentSetupRefSchema,
41168
- title: z68.string().trim().min(1),
41169
- description: z68.string().nullable(),
41170
- durationMinutes: z68.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
41171
- prepMinutes: z68.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
41172
- cleanupMinutes: z68.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
41173
- priceAmount: z68.number().int().nonnegative().nullable(),
41174
- isActive: z68.boolean(),
41175
- locationType: z68.union([
41176
- z68.literal("virtual"),
41177
- z68.literal("in_person"),
41178
- z68.literal("hybrid")
41901
+ title: z66.string().trim().min(1),
41902
+ description: z66.string().nullable(),
41903
+ durationMinutes: z66.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
41904
+ prepMinutes: z66.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
41905
+ cleanupMinutes: z66.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
41906
+ priceAmount: z66.number().int().nonnegative().nullable(),
41907
+ isActive: z66.boolean(),
41908
+ locationType: z66.union([
41909
+ z66.literal("virtual"),
41910
+ z66.literal("in_person"),
41911
+ z66.literal("hybrid")
41179
41912
  ]),
41180
41913
  venue: appointmentSetupVenueChoiceSchema,
41181
- timezone: z68.string().trim().min(1).nullable(),
41914
+ timezone: z66.string().trim().min(1).nullable(),
41182
41915
  payment: appointmentSetupPaymentDraftSchema,
41183
41916
  assignment: appointmentSetupServiceAssignmentDraftSchema
41184
41917
  }).superRefine((service, ctx) => {
@@ -41197,49 +41930,49 @@ var appointmentSetupServiceDraftSchema = z68.object({
41197
41930
  });
41198
41931
  }
41199
41932
  });
41200
- var appointmentSetupPractitionerDraftSchema = z68.object({
41933
+ var appointmentSetupPractitionerDraftSchema = z66.object({
41201
41934
  ref: appointmentSetupRefSchema,
41202
- displayName: z68.string().trim().min(1),
41203
- bio: z68.string().nullable(),
41204
- timezone: z68.string().trim().min(1),
41205
- colorHex: z68.string().nullable()
41206
- });
41207
- var appointmentSetupWeeklyWindowDraftSchema = z68.object({
41208
- weekday: z68.number().int().min(0).max(6),
41209
- startTime: z68.string(),
41210
- endTime: z68.string()
41211
- });
41212
- var appointmentSetupStartTimePolicyDraftSchema = z68.discriminatedUnion("kind", [
41213
- z68.object({ kind: z68.literal("automatic_spacing") }),
41214
- z68.object({
41215
- kind: z68.literal("regular_interval"),
41216
- intervalMinutes: z68.union([
41217
- z68.literal(10),
41218
- z68.literal(15),
41219
- z68.literal(20),
41220
- z68.literal(30),
41221
- z68.literal(45),
41222
- z68.literal(60)
41935
+ displayName: z66.string().trim().min(1),
41936
+ bio: z66.string().nullable(),
41937
+ timezone: z66.string().trim().min(1),
41938
+ colorHex: z66.string().nullable()
41939
+ });
41940
+ var appointmentSetupWeeklyWindowDraftSchema = z66.object({
41941
+ weekday: z66.number().int().min(0).max(6),
41942
+ startTime: z66.string(),
41943
+ endTime: z66.string()
41944
+ });
41945
+ var appointmentSetupStartTimePolicyDraftSchema = z66.discriminatedUnion("kind", [
41946
+ z66.object({ kind: z66.literal("automatic_spacing") }),
41947
+ z66.object({
41948
+ kind: z66.literal("regular_interval"),
41949
+ intervalMinutes: z66.union([
41950
+ z66.literal(10),
41951
+ z66.literal(15),
41952
+ z66.literal(20),
41953
+ z66.literal(30),
41954
+ z66.literal(45),
41955
+ z66.literal(60)
41223
41956
  ])
41224
41957
  })
41225
41958
  ]);
41226
- var appointmentSetupAvailabilityDraftSchema = z68.object({
41227
- kind: z68.literal("weekly_windows"),
41959
+ var appointmentSetupAvailabilityDraftSchema = z66.object({
41960
+ kind: z66.literal("weekly_windows"),
41228
41961
  resourceRef: appointmentSetupRefSchema,
41229
41962
  serviceRef: appointmentSetupRefSchema.nullable(),
41230
- windows: z68.array(appointmentSetupWeeklyWindowDraftSchema),
41963
+ windows: z66.array(appointmentSetupWeeklyWindowDraftSchema),
41231
41964
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
41232
41965
  });
41233
41966
  var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
41234
41967
  var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
41235
- var appointmentSetupBookingNoticeSchema = z68.object({
41236
- minLeadMinutes: z68.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
41237
- maxBookingNoticeMinutes: z68.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
41238
- });
41239
- var applyAppointmentSetupRequestSchema = z68.object({
41240
- services: z68.array(appointmentSetupServiceDraftSchema),
41241
- practitioners: z68.array(appointmentSetupPractitionerDraftSchema),
41242
- availability: z68.array(appointmentSetupAvailabilityDraftSchema),
41968
+ var appointmentSetupBookingNoticeSchema = z66.object({
41969
+ minLeadMinutes: z66.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
41970
+ maxBookingNoticeMinutes: z66.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
41971
+ });
41972
+ var applyAppointmentSetupRequestSchema = z66.object({
41973
+ services: z66.array(appointmentSetupServiceDraftSchema),
41974
+ practitioners: z66.array(appointmentSetupPractitionerDraftSchema),
41975
+ availability: z66.array(appointmentSetupAvailabilityDraftSchema),
41243
41976
  bookingNotice: appointmentSetupBookingNoticeSchema
41244
41977
  });
41245
41978
 
@@ -41272,24 +42005,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
41272
42005
  ];
41273
42006
 
41274
42007
  // ../api/src/siteBanner.ts
41275
- import { z as z69 } from "zod";
42008
+ import { z as z67 } from "zod";
41276
42009
  var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
41277
42010
  var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
41278
42011
  var SITE_BANNER_MAX_TEXT_LENGTH = 320;
41279
42012
  var SITE_BANNER_MAX_PARAGRAPHS = 2;
41280
- var siteBannerScopeSchema = z69.enum(SITE_BANNER_SCOPE_VALUES);
41281
- var siteBannerToneSchema = z69.enum(SITE_BANNER_TONE_VALUES);
41282
- var siteBannerBodySchema = z69.unknown().transform(unwrapRichTextValue);
41283
- var siteBannerCtaSchema = z69.object({
41284
- label: z69.string().trim().min(1),
42013
+ var siteBannerScopeSchema = z67.enum(SITE_BANNER_SCOPE_VALUES);
42014
+ var siteBannerToneSchema = z67.enum(SITE_BANNER_TONE_VALUES);
42015
+ var siteBannerBodySchema = z67.unknown().transform(unwrapRichTextValue);
42016
+ var siteBannerCtaSchema = z67.object({
42017
+ label: z67.string().trim().min(1),
41285
42018
  link: linkPayloadSchema
41286
42019
  });
41287
- var siteBannerSettingsSchema = z69.discriminatedUnion("enabled", [
41288
- z69.object({
41289
- enabled: z69.literal(false)
42020
+ var siteBannerSettingsSchema = z67.discriminatedUnion("enabled", [
42021
+ z67.object({
42022
+ enabled: z67.literal(false)
41290
42023
  }),
41291
- z69.object({
41292
- enabled: z69.literal(true),
42024
+ z67.object({
42025
+ enabled: z67.literal(true),
41293
42026
  scope: siteBannerScopeSchema,
41294
42027
  tone: siteBannerToneSchema,
41295
42028
  body: siteBannerBodySchema,
@@ -41303,7 +42036,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
41303
42036
  const analysis = analyzeSiteBannerBody(value.body);
41304
42037
  for (const issue of analysis.issues) {
41305
42038
  ctx.addIssue({
41306
- code: z69.ZodIssueCode.custom,
42039
+ code: z67.ZodIssueCode.custom,
41307
42040
  path: ["body"],
41308
42041
  message: siteBannerBodyIssueMessage(issue)
41309
42042
  });
@@ -41530,71 +42263,71 @@ function unsafeAsNavigationMenuIdentifier(identifier) {
41530
42263
  var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
41531
42264
 
41532
42265
  // ../api/src/aiPlayground.ts
41533
- import { z as z70 } from "zod";
41534
- var Rfc6902PatchOp = z70.discriminatedUnion("op", [
42266
+ import { z as z68 } from "zod";
42267
+ var Rfc6902PatchOp = z68.discriminatedUnion("op", [
41535
42268
  // Standard RFC-6902 operations
41536
- z70.object({
41537
- op: z70.literal("add"),
41538
- path: z70.string(),
41539
- value: z70.unknown()
42269
+ z68.object({
42270
+ op: z68.literal("add"),
42271
+ path: z68.string(),
42272
+ value: z68.unknown()
41540
42273
  }),
41541
- z70.object({
41542
- op: z70.literal("remove"),
41543
- path: z70.string()
42274
+ z68.object({
42275
+ op: z68.literal("remove"),
42276
+ path: z68.string()
41544
42277
  }),
41545
- z70.object({
41546
- op: z70.literal("replace"),
41547
- path: z70.string(),
41548
- value: z70.unknown()
42278
+ z68.object({
42279
+ op: z68.literal("replace"),
42280
+ path: z68.string(),
42281
+ value: z68.unknown()
41549
42282
  }),
41550
- z70.object({
41551
- op: z70.literal("move"),
41552
- from: z70.string(),
41553
- path: z70.string()
42283
+ z68.object({
42284
+ op: z68.literal("move"),
42285
+ from: z68.string(),
42286
+ path: z68.string()
41554
42287
  }),
41555
- z70.object({
41556
- op: z70.literal("copy"),
41557
- from: z70.string(),
41558
- path: z70.string()
42288
+ z68.object({
42289
+ op: z68.literal("copy"),
42290
+ from: z68.string(),
42291
+ path: z68.string()
41559
42292
  }),
41560
42293
  // Block-level operations (Phase 2)
41561
- z70.object({
41562
- op: z70.literal("add_block"),
41563
- blockKind: z70.string(),
41564
- afterBlockId: z70.string().nullable(),
41565
- content: z70.record(z70.string(), z70.unknown()),
41566
- rationale: z70.string()
42294
+ z68.object({
42295
+ op: z68.literal("add_block"),
42296
+ blockKind: z68.string(),
42297
+ afterBlockId: z68.string().nullable(),
42298
+ content: z68.record(z68.string(), z68.unknown()),
42299
+ rationale: z68.string()
41567
42300
  }),
41568
- z70.object({
41569
- op: z70.literal("delete_block"),
41570
- blockId: z70.string(),
41571
- rationale: z70.string()
42301
+ z68.object({
42302
+ op: z68.literal("delete_block"),
42303
+ blockId: z68.string(),
42304
+ rationale: z68.string()
41572
42305
  }),
41573
- z70.object({
41574
- op: z70.literal("reorder_block"),
41575
- blockId: z70.string(),
41576
- afterBlockId: z70.string().nullable(),
41577
- rationale: z70.string()
42306
+ z68.object({
42307
+ op: z68.literal("reorder_block"),
42308
+ blockId: z68.string(),
42309
+ afterBlockId: z68.string().nullable(),
42310
+ rationale: z68.string()
41578
42311
  })
41579
42312
  ]);
41580
- var PlaygroundProposeRequest = z70.object({
41581
- request: z70.string().min(1).max(2e3)
42313
+ var PlaygroundProposeRequest = z68.object({
42314
+ request: z68.string().min(1).max(2e3)
41582
42315
  });
41583
- var MultiPagePatchEnvelope = z70.object({
41584
- pageId: z70.string(),
41585
- blockId: z70.string().optional(),
42316
+ var MultiPagePatchEnvelope = z68.object({
42317
+ pageId: z68.string(),
42318
+ blockId: z68.string().optional(),
41586
42319
  // Not present for page-level ops
41587
- blockKind: z70.string().optional(),
41588
- blockPurpose: z70.string().optional().nullable(),
41589
- ops: z70.array(Rfc6902PatchOp),
41590
- rationale: z70.string(),
41591
- currentContent: z70.record(z70.string(), z70.unknown()).optional()
41592
- });
41593
- var MultiPageUpdateResponse = z70.object({
41594
- patches: z70.array(MultiPagePatchEnvelope),
41595
- assistantMessage: z70.string(),
41596
- pagesModified: z70.number(),
41597
- toolCallsUsed: z70.number()
42320
+ blockKind: z68.string().optional(),
42321
+ blockPurpose: z68.string().optional().nullable(),
42322
+ ops: z68.array(Rfc6902PatchOp),
42323
+ rationale: z68.string(),
42324
+ currentContent: z68.record(z68.string(), z68.unknown()).optional()
42325
+ });
42326
+ var MultiPageUpdateResponse = z68.object({
42327
+ patches: z68.array(MultiPagePatchEnvelope),
42328
+ assistantMessage: z68.string(),
42329
+ pagesModified: z68.number(),
42330
+ toolCallsUsed: z68.number()
41598
42331
  });
41599
42332
 
41600
42333
  // src/data/prefetchBlockData.ts