@riverbankcms/sdk 0.96.0 → 0.98.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 (156) hide show
  1. package/README.md +20 -1
  2. package/dist/{PreviewEditorSidebar-46VT4QVU.mjs → PreviewEditorSidebar-CG3SSJND.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-JD75GE5F.mjs → PreviewEditorUI-RHNGKAAU.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-OV5PNJBB.mjs +8 -0
  5. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +35 -1
  6. package/dist/_dts/api/src/bookingOperations.d.ts +246 -0
  7. package/dist/_dts/api/src/contentRuntime.d.ts +109 -40
  8. package/dist/_dts/api/src/endpoints.d.ts +80 -0
  9. package/dist/_dts/api/src/index.d.ts +3 -2
  10. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  11. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +10 -0
  12. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  13. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -1
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +7 -1
  15. package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -1
  16. package/dist/_dts/blocks/src/bindings/types.d.ts +0 -4
  17. package/dist/_dts/blocks/src/client/site-chrome.d.ts +7 -0
  18. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  19. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +12 -12
  20. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -0
  21. package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +1 -0
  22. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +2 -0
  23. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  24. package/dist/_dts/blocks/src/system/blocks/weekly-slot-availability.d.ts +34 -0
  25. package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  28. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  29. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +4 -1
  30. package/dist/_dts/blocks/src/system/node/builder.d.ts +2 -0
  31. package/dist/_dts/blocks/src/system/node/schema.d.ts +13 -0
  32. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  34. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  35. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  36. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +24 -0
  37. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
  38. package/dist/_dts/blocks/src/system/runtime/hooks/useAppointmentCheckoutVerification.d.ts +7 -0
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +2 -2
  40. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +4 -0
  41. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +5 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +14 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -2
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +133 -2
  45. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.controller.d.ts +3 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.d.ts +9 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.state.d.ts +14 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.server.d.ts +10 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.view.d.ts +11 -0
  50. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +31 -1
  51. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +5 -0
  52. package/dist/_dts/blocks/src/utils/date-formatting.d.ts +1 -1
  53. package/dist/_dts/content-editor/src/primitives/PreviewInlineTextEditor.d.ts +1 -1
  54. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +1 -1
  55. package/dist/_dts/content-model/src/templates/defaults.d.ts +5 -5
  56. package/dist/_dts/content-model/src/templates/types.d.ts +2 -6
  57. package/dist/_dts/core/src/branded.d.ts +8 -0
  58. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +505 -2
  59. package/dist/_dts/field-primitives/src/bindings/index.d.ts +8 -0
  60. package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +15 -0
  61. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +2 -1
  62. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +3 -1
  63. package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +9 -3
  64. package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +34 -0
  65. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +2 -0
  66. package/dist/_dts/sdk/src/cli/config-loader.d.ts +2 -0
  67. package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +29 -0
  68. package/dist/_dts/sdk/src/cli/content/reader.d.ts +16 -14
  69. package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -4
  70. package/dist/_dts/sdk/src/cli/env-scope.d.ts +2 -0
  71. package/dist/_dts/sdk/src/cli/helpers.d.ts +6 -7
  72. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -0
  73. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +2 -0
  74. package/dist/_dts/sdk/src/cli/push-config.d.ts +13 -2
  75. package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +51 -0
  76. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +21 -0
  77. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +1 -1
  78. package/dist/_dts/sdk/src/client/types.d.ts +18 -2
  79. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  80. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  81. package/dist/_dts/sdk/src/contracts/bindings.d.ts +3 -7
  82. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +13 -0
  83. package/dist/_dts/sdk/src/next/route-outcome-proxy.d.ts +3 -3
  84. package/dist/_dts/sdk/src/public-api/contracts.d.ts +174 -78
  85. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  86. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +4 -4
  87. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +52 -1
  88. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +2 -2
  89. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +18 -66
  90. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  91. package/dist/_dts/sdk/src/version.d.ts +1 -1
  92. package/dist/{chunk-EL55VV6Q.mjs → chunk-6WDBXCPX.mjs} +31 -10
  93. package/dist/{chunk-XMATDBXO.mjs → chunk-DBRI3PQF.mjs} +731 -180
  94. package/dist/{chunk-VHIMXQ7Z.mjs → chunk-H24OU7WG.mjs} +2 -2
  95. package/dist/{chunk-4TLTV7OB.mjs → chunk-PKDPQHB5.mjs} +2 -2
  96. package/dist/{chunk-VTPPVAOL.mjs → chunk-QPXE2OUZ.mjs} +1 -1
  97. package/dist/{chunk-7ED5UNHL.mjs → chunk-V2BYFSPW.mjs} +109 -0
  98. package/dist/cli/index.mjs +2131 -1033
  99. package/dist/cli/init-docs/content/cli-reference.md +29 -1
  100. package/dist/cli/init-docs/content/getting-started.md +8 -0
  101. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +3 -1
  102. package/dist/cli/init-docs/content/workflow-preview-mode.md +6 -0
  103. package/dist/cli/init-docs/content/workflow-remote-setup.md +51 -0
  104. package/dist/client/{accordion-GUNXIIZR.mjs → accordion-Q2BDNL53.mjs} +1 -1
  105. package/dist/client/{bookingForm-AOU4VHP5.mjs → bookingForm-ZMP4P7EK.mjs} +16 -6
  106. package/dist/client/bookings.mjs +98 -18
  107. package/dist/client/{carousel-4QSX2JPC.mjs → carousel-LW3UXPWO.mjs} +1 -1
  108. package/dist/client/{cart-JKN6C4ZB.mjs → cart-Z6D3KS6K.mjs} +5 -5
  109. package/dist/client/{checkout-YY6YMITW.mjs → checkout-YMT2QJQM.mjs} +5 -5
  110. package/dist/client/{chunk-6H27K6AA.mjs → chunk-26ZBRXFR.mjs} +9 -3
  111. package/dist/client/{chunk-VJROUYOQ.mjs → chunk-DRRQ7QSL.mjs} +2 -2
  112. package/dist/client/{chunk-BFCJZODD.mjs → chunk-ET2MDQQT.mjs} +4 -4
  113. package/dist/client/{chunk-H7A6PUGM.mjs → chunk-HBQEAOG4.mjs} +1 -1
  114. package/dist/client/{chunk-CPKMJVBD.mjs → chunk-IEOECM7U.mjs} +62 -43
  115. package/dist/client/{chunk-TNGL2WJF.mjs → chunk-KDP7ZRZV.mjs} +16 -0
  116. package/dist/client/{chunk-GWCRCJLB.mjs → chunk-R4XK3CKR.mjs} +12 -1
  117. package/dist/client/{chunk-A3YN7M3G.mjs → chunk-SK2BMD22.mjs} +2 -2
  118. package/dist/client/{chunk-SY543WZ3.mjs → chunk-XNTHVZ25.mjs} +1 -1
  119. package/dist/client/client.mjs +3729 -3054
  120. package/dist/client/{courseRegistration-UU2KMPSQ.mjs → courseRegistration-DGKCMC77.mjs} +4 -4
  121. package/dist/client/{eventCalendar-WIVNS2TM.mjs → eventCalendar-74Z2NNFM.mjs} +7 -7
  122. package/dist/client/{eventCombined-P3G5MW4J.mjs → eventCombined-GK2ODOX2.mjs} +7 -7
  123. package/dist/client/{eventDetails-2VHJ2RDG.mjs → eventDetails-MONAGT3N.mjs} +7 -7
  124. package/dist/client/{eventListing-TGO6JI3R.mjs → eventListing-SKGAO6PS.mjs} +7 -7
  125. package/dist/client/{eventRegistration-B46HEJES.mjs → eventRegistration-6KISGXRD.mjs} +7 -7
  126. package/dist/client/{form-VKRTFUNQ.mjs → form-FXPRTXHI.mjs} +2 -2
  127. package/dist/client/{headerSection-XUX4ZJLO.mjs → headerSection-7NAN5WNB.mjs} +2 -2
  128. package/dist/client/hooks.mjs +1661 -1334
  129. package/dist/client/{locationMap-NQFI5MJO.mjs → locationMap-UERN74U4.mjs} +2 -2
  130. package/dist/client/{newsletterForm-P2GETCQK.mjs → newsletterForm-SGWXMJ7U.mjs} +2 -2
  131. package/dist/client/{productDetail-7NQ7O5IF.mjs → productDetail-HN3HWZQZ.mjs} +5 -5
  132. package/dist/client/{productList-RX6ZJ7BL.mjs → productList-YT22Z5UR.mjs} +5 -5
  133. package/dist/client/rendering/client.mjs +2208 -1922
  134. package/dist/client/rendering/islands.mjs +18 -18
  135. package/dist/client/rendering.mjs +1497 -811
  136. package/dist/client/{shop-BHN5AKY6.mjs → shop-TKEDNWUS.mjs} +5 -5
  137. package/dist/preview-next/before-render.mjs +109 -0
  138. package/dist/preview-next/client/runtime.mjs +5 -5
  139. package/dist/preview-next/middleware.mjs +109 -0
  140. package/dist/{sdk-runtime-X2LXQ5IC.mjs → sdk-runtime-LWNYCQF2.mjs} +6 -6
  141. package/dist/server/components.mjs +2351 -1872
  142. package/dist/server/config-template-validation.mjs +6 -2
  143. package/dist/server/config-validation.mjs +1861 -1561
  144. package/dist/server/config.mjs +1861 -1561
  145. package/dist/server/data.mjs +1647 -1331
  146. package/dist/server/index.mjs +208 -9
  147. package/dist/server/next/middleware.mjs +2 -2
  148. package/dist/server/next.mjs +2572 -1878
  149. package/dist/server/page-converter.mjs +1461 -1276
  150. package/dist/server/prebuild.mjs +1 -1
  151. package/dist/server/rendering/server.mjs +2372 -1875
  152. package/dist/server/rendering.mjs +2557 -1941
  153. package/dist/server/routing.mjs +1716 -1353
  154. package/dist/server/server.mjs +1911 -1380
  155. package/package.json +1 -1
  156. package/dist/SdkPreviewModeRuntime-MJUSYUFB.mjs +0 -8
@@ -1064,6 +1064,94 @@ var init_endpoints = __esm({
1064
1064
  responseKind: "json",
1065
1065
  errors: ["resource:not_found", "server:internal_error"]
1066
1066
  },
1067
+ listAppointmentReservations: {
1068
+ path: "/sites/{siteId}/bookings/appointment-reservations",
1069
+ method: "GET",
1070
+ auth: "user",
1071
+ responseKind: "json",
1072
+ errors: []
1073
+ },
1074
+ createAppointmentReservation: {
1075
+ path: "/sites/{siteId}/bookings/appointment-reservations",
1076
+ method: "POST",
1077
+ auth: "user",
1078
+ responseKind: "json",
1079
+ errors: [
1080
+ "validation:invalid_input",
1081
+ "resource:not_found",
1082
+ "resource:conflict",
1083
+ "server:internal_error"
1084
+ ]
1085
+ },
1086
+ getAppointmentReservation: {
1087
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}",
1088
+ method: "GET",
1089
+ auth: "user",
1090
+ responseKind: "json",
1091
+ errors: ["resource:not_found", "server:internal_error"]
1092
+ },
1093
+ updateAppointmentReservation: {
1094
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}",
1095
+ method: "PUT",
1096
+ auth: "user",
1097
+ responseKind: "json",
1098
+ errors: [
1099
+ "validation:invalid_input",
1100
+ "resource:not_found",
1101
+ "resource:conflict",
1102
+ "server:internal_error"
1103
+ ]
1104
+ },
1105
+ pauseAppointmentReservation: {
1106
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/pause",
1107
+ method: "POST",
1108
+ auth: "user",
1109
+ responseKind: "json",
1110
+ errors: ["resource:not_found", "resource:conflict", "server:internal_error"]
1111
+ },
1112
+ resumeAppointmentReservation: {
1113
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/resume",
1114
+ method: "POST",
1115
+ auth: "user",
1116
+ responseKind: "json",
1117
+ errors: ["resource:not_found", "resource:conflict", "server:internal_error"]
1118
+ },
1119
+ endAppointmentReservation: {
1120
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/end",
1121
+ method: "POST",
1122
+ auth: "user",
1123
+ responseKind: "json",
1124
+ errors: [
1125
+ "validation:invalid_input",
1126
+ "resource:not_found",
1127
+ "resource:conflict",
1128
+ "server:internal_error"
1129
+ ]
1130
+ },
1131
+ previewAppointmentReservationRun: {
1132
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/run-preview",
1133
+ method: "POST",
1134
+ auth: "user",
1135
+ responseKind: "json",
1136
+ errors: [
1137
+ "validation:invalid_input",
1138
+ "resource:not_found",
1139
+ "resource:conflict",
1140
+ "server:internal_error"
1141
+ ]
1142
+ },
1143
+ createAppointmentReservationRun: {
1144
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/runs",
1145
+ method: "POST",
1146
+ auth: "user",
1147
+ responseKind: "json",
1148
+ errors: [
1149
+ "validation:invalid_input",
1150
+ "resource:not_found",
1151
+ "resource:conflict",
1152
+ "server:internal_error"
1153
+ ]
1154
+ },
1067
1155
  createTeamMemberProfile: {
1068
1156
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile",
1069
1157
  method: "POST",
@@ -3520,6 +3608,18 @@ var init_endpoints = __esm({
3520
3608
  responseKind: "json",
3521
3609
  errors: ["validation:invalid_input", "server:internal_error"]
3522
3610
  },
3611
+ resolveRouteDecision: {
3612
+ path: "/sites/{siteId}/route-decision",
3613
+ method: "GET",
3614
+ tags: [
3615
+ TAG_TEMPLATES.siteRoutableContent,
3616
+ TAG_TEMPLATES.siteRedirects,
3617
+ TAG_TEMPLATES.siteRouteOutcomes
3618
+ ],
3619
+ auth: "public",
3620
+ responseKind: "json",
3621
+ errors: ["validation:invalid_input", "server:internal_error"]
3622
+ },
3523
3623
  getPageByPath: {
3524
3624
  path: "/sites/{siteId}/pages",
3525
3625
  method: "GET",
@@ -3658,6 +3758,15 @@ var init_endpoints = __esm({
3658
3758
  auth: "public",
3659
3759
  responseKind: "json"
3660
3760
  },
3761
+ getPublicWeeklySlotAvailability: {
3762
+ path: "/public/bookings/weekly-slot-availability",
3763
+ method: "GET",
3764
+ revalidate: 60,
3765
+ tags: ["site-{siteId}"],
3766
+ auth: "public",
3767
+ responseKind: "json",
3768
+ errors: []
3769
+ },
3661
3770
  createPublicBookingAppointment: {
3662
3771
  path: "/public/bookings/appointments",
3663
3772
  method: "POST",
@@ -7835,7 +7944,7 @@ var init_link = __esm({
7835
7944
 
7836
7945
  // ../blocks/src/system/node/schema.ts
7837
7946
  import { z as z4 } from "zod";
7838
- var transformStepSchema, bindingPathSchema, bindingSchema, repeatSchema, conditionSchema, dataScopeSchema, nodePropsSchema, nodeSchema, nodeTreeSchema, NodeSchema, NodeTreeSchema;
7947
+ var transformStepSchema, bindingPathSchema, bindingSchema, repeatSchema, conditionalAuthoringPresenceSchema, conditionSchema, dataScopeSchema, nodePropsSchema, nodeSchema, nodeTreeSchema, NodeSchema, NodeTreeSchema;
7839
7948
  var init_schema = __esm({
7840
7949
  "../blocks/src/system/node/schema.ts"() {
7841
7950
  "use strict";
@@ -7861,10 +7970,20 @@ var init_schema = __esm({
7861
7970
  direction: z4.enum(["asc", "desc"]).default("asc")
7862
7971
  }).optional()
7863
7972
  });
7973
+ conditionalAuthoringPresenceSchema = z4.discriminatedUnion("kind", [
7974
+ z4.object({ kind: z4.literal("visitor-only") }),
7975
+ z4.object({
7976
+ kind: z4.literal("recover-empty-when-active"),
7977
+ placeholder: z4.string().min(1).optional()
7978
+ })
7979
+ ]);
7864
7980
  conditionSchema = z4.object({
7865
7981
  when: bindingSchema,
7866
7982
  equals: z4.unknown().optional(),
7867
- not: z4.boolean().default(false)
7983
+ not: z4.boolean().default(false),
7984
+ authoringPresence: conditionalAuthoringPresenceSchema.default({
7985
+ kind: "visitor-only"
7986
+ })
7868
7987
  });
7869
7988
  dataScopeSchema = z4.object({
7870
7989
  name: z4.string().min(1),
@@ -7936,6 +8055,7 @@ var init_validation_constants = __esm({
7936
8055
  // Forms
7937
8056
  "form",
7938
8057
  "booking-form",
8058
+ "weekly-slot-availability",
7939
8059
  // Events
7940
8060
  "event-registration",
7941
8061
  "event-spotlight",
@@ -21238,7 +21358,8 @@ function when(path, options) {
21238
21358
  $when: {
21239
21359
  when: { from: path },
21240
21360
  ...options?.equals !== void 0 ? { equals: options.equals } : {},
21241
- ...options?.not ? { not: true } : {}
21361
+ ...options?.not ? { not: true } : {},
21362
+ ...options?.authoringPresence ? { authoringPresence: options.authoringPresence } : {}
21242
21363
  }
21243
21364
  });
21244
21365
  }
@@ -32276,6 +32397,189 @@ var init_appointment_booking = __esm({
32276
32397
  }
32277
32398
  });
32278
32399
 
32400
+ // ../blocks/src/system/blocks/weekly-slot-availability.ts
32401
+ import { z as z42 } from "zod";
32402
+ var weeklySlotAvailabilityManifest, weeklySlotAvailabilityOptionSchema, weeklySlotAvailabilityDataSchema, weeklySlotAvailabilityBlockDefinition;
32403
+ var init_weekly_slot_availability = __esm({
32404
+ "../blocks/src/system/blocks/weekly-slot-availability.ts"() {
32405
+ "use strict";
32406
+ init_builder2();
32407
+ init_builder2();
32408
+ init_styledSection();
32409
+ init_fragments();
32410
+ init_boxStyles();
32411
+ init_defineBlock();
32412
+ init_api_bindings();
32413
+ weeklySlotAvailabilityManifest = createBlockManifest({
32414
+ id: "block.weekly-slot-availability",
32415
+ version: "1.0.0",
32416
+ title: "Weekly Slot Availability",
32417
+ titleSource: "heading",
32418
+ description: "Shows available recurring appointment slot patterns",
32419
+ skipSectionStyles: true,
32420
+ additionalFields: [
32421
+ {
32422
+ id: "serviceId",
32423
+ type: "reference",
32424
+ label: "Appointment service",
32425
+ description: "Choose which appointment service to show availability for",
32426
+ required: true,
32427
+ referenceKind: "appointmentService",
32428
+ allowManualEntry: false,
32429
+ ui: { intent: "behavior" }
32430
+ },
32431
+ {
32432
+ id: "resourceId",
32433
+ type: "reference",
32434
+ label: "Appointment resource",
32435
+ description: "Optionally narrow the availability to one practitioner or room",
32436
+ required: false,
32437
+ referenceKind: "appointmentResource",
32438
+ allowManualEntry: false,
32439
+ ui: { intent: "behavior" }
32440
+ },
32441
+ {
32442
+ id: "horizonWeeks",
32443
+ type: "select",
32444
+ label: "Look ahead",
32445
+ required: false,
32446
+ multiple: false,
32447
+ defaultValue: "4",
32448
+ options: [
32449
+ { value: "1", label: "1 week" },
32450
+ { value: "2", label: "2 weeks" },
32451
+ { value: "4", label: "4 weeks" }
32452
+ ],
32453
+ ui: { intent: "behavior" }
32454
+ },
32455
+ {
32456
+ id: "timezone",
32457
+ type: "text",
32458
+ label: "Timezone",
32459
+ description: "Leave blank to use the visitor timezone when the block loads",
32460
+ required: false,
32461
+ multiline: false,
32462
+ defaultValue: "",
32463
+ maxLength: 64,
32464
+ ui: { intent: "behavior" }
32465
+ },
32466
+ {
32467
+ id: "heading",
32468
+ type: "text",
32469
+ label: "Heading",
32470
+ required: false,
32471
+ multiline: false,
32472
+ defaultValue: "Weekly availability"
32473
+ },
32474
+ {
32475
+ id: "description",
32476
+ type: "richText",
32477
+ label: "Description",
32478
+ required: false
32479
+ },
32480
+ {
32481
+ id: "emptyMessage",
32482
+ type: "text",
32483
+ label: "Empty message",
32484
+ required: false,
32485
+ multiline: true,
32486
+ defaultValue: "No regular weekly openings are currently available.",
32487
+ maxLength: 180
32488
+ },
32489
+ {
32490
+ id: "ctaText",
32491
+ type: "text",
32492
+ label: "Enquiry button text",
32493
+ required: false,
32494
+ multiline: false,
32495
+ defaultValue: "Enquire about this slot",
32496
+ maxLength: 60
32497
+ },
32498
+ {
32499
+ id: "ctaUrl",
32500
+ type: "url",
32501
+ label: "Enquiry URL",
32502
+ required: false,
32503
+ ui: { intent: "behavior" }
32504
+ },
32505
+ sectionStylesField({
32506
+ id: "_sectionStyles",
32507
+ label: "Section styles"
32508
+ })
32509
+ ],
32510
+ styleTokens: { background: "surface", typography: "body", spacing: "md" },
32511
+ behaviours: {
32512
+ supportsThemeSwitching: true,
32513
+ inlineEditing: false,
32514
+ animation: false,
32515
+ paletteHidden: false
32516
+ },
32517
+ category: "interactive",
32518
+ tags: ["booking", "appointment", "calendar", "weekly", "availability"],
32519
+ icon: "CalendarDays",
32520
+ layout: [
32521
+ styledSection({
32522
+ children: sectionContainer([
32523
+ text({ as: "h2" }, bind("content.heading"), when("content.heading")),
32524
+ richText({}, bind("content.description"), when("content.description")),
32525
+ el(
32526
+ "weekly-slot-availability",
32527
+ withApiBindings({
32528
+ serviceId: { $bind: { from: "content.serviceId" } },
32529
+ resourceId: { $bind: { from: "content.resourceId", fallback: null } },
32530
+ horizonWeeks: { $bind: { from: "content.horizonWeeks", fallback: "4" } },
32531
+ timezone: { $bind: { from: "content.timezone", fallback: null } },
32532
+ availability: { $bind: { from: "data.availability", fallback: null } },
32533
+ emptyMessage: { $bind: { from: "content.emptyMessage", fallback: null } },
32534
+ ctaText: { $bind: { from: "content.ctaText", fallback: null } },
32535
+ ctaUrl: { $bind: { from: "content.ctaUrl", fallback: null } }
32536
+ })
32537
+ )
32538
+ ], {
32539
+ gap: "lg"
32540
+ }),
32541
+ baseClass: "",
32542
+ spacing: "spacious"
32543
+ })
32544
+ ]
32545
+ });
32546
+ weeklySlotAvailabilityOptionSchema = z42.object({
32547
+ id: z42.string(),
32548
+ resourceId: z42.string(),
32549
+ weekday: z42.number(),
32550
+ weekdayLabel: z42.string(),
32551
+ startTime: z42.string(),
32552
+ endTime: z42.string(),
32553
+ nextDate: z42.string(),
32554
+ availableWeeks: z42.number()
32555
+ });
32556
+ weeklySlotAvailabilityDataSchema = z42.object({
32557
+ slots: z42.array(weeklySlotAvailabilityOptionSchema),
32558
+ horizonWeeks: z42.number(),
32559
+ timezone: z42.string(),
32560
+ startDate: z42.string(),
32561
+ endDate: z42.string()
32562
+ });
32563
+ weeklySlotAvailabilityBlockDefinition = {
32564
+ manifest: weeklySlotAvailabilityManifest,
32565
+ dataSchemas: { availability: weeklySlotAvailabilityDataSchema.optional() },
32566
+ dataLoaders: {
32567
+ availability: {
32568
+ endpoint: "getPublicWeeklySlotAvailability",
32569
+ params: {
32570
+ siteId: { $bind: { from: "$root.siteId" } },
32571
+ serviceId: { $bind: { from: "content.serviceId" } },
32572
+ resourceId: { $bind: { from: "content.resourceId", fallback: void 0 } },
32573
+ horizonWeeks: { $bind: { from: "content.horizonWeeks", fallback: "4" } },
32574
+ timezone: { $bind: { from: "content.timezone", fallback: void 0 } }
32575
+ },
32576
+ mode: "server"
32577
+ }
32578
+ }
32579
+ };
32580
+ }
32581
+ });
32582
+
32279
32583
  // ../blocks/src/system/blocks/events/shared/types.ts
32280
32584
  var init_types15 = __esm({
32281
32585
  "../blocks/src/system/blocks/events/shared/types.ts"() {
@@ -32284,7 +32588,7 @@ var init_types15 = __esm({
32284
32588
  });
32285
32589
 
32286
32590
  // ../blocks/src/lib/media.ts
32287
- import z42 from "zod";
32591
+ import z43 from "zod";
32288
32592
  var PUBLIC_DOWNLOAD_MEDIA_TYPES, hotspotSchema2, rotationSchema2, rectSchema2, aspectCropSchema2, transformSchema2, mediaPosterSchema, mediaBaseSchema, imageMediaSchema, videoMediaSchema, audioMediaSchema, documentMediaSchema, spreadsheetMediaSchema, archiveMediaSchema, mediaSchema2;
32289
32593
  var init_media4 = __esm({
32290
32594
  "../blocks/src/lib/media.ts"() {
@@ -32295,66 +32599,66 @@ var init_media4 = __esm({
32295
32599
  "archive",
32296
32600
  "audio"
32297
32601
  ];
32298
- hotspotSchema2 = z42.object({
32299
- x: z42.number().min(0).max(1),
32300
- y: z42.number().min(0).max(1),
32301
- radius: z42.number().optional()
32302
- });
32303
- rotationSchema2 = z42.union([z42.literal(0), z42.literal(90), z42.literal(180), z42.literal(270)]);
32304
- rectSchema2 = z42.tuple([z42.number(), z42.number(), z42.number(), z42.number()]);
32305
- aspectCropSchema2 = z42.object({
32306
- aspect: z42.preprocess((value) => value == null ? void 0 : value, z42.string().optional()),
32307
- rect: z42.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
32308
- hotspot: z42.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
32309
- rotation: z42.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
32310
- });
32311
- transformSchema2 = z42.object({
32312
- aspectCrops: z42.preprocess((value) => {
32602
+ hotspotSchema2 = z43.object({
32603
+ x: z43.number().min(0).max(1),
32604
+ y: z43.number().min(0).max(1),
32605
+ radius: z43.number().optional()
32606
+ });
32607
+ rotationSchema2 = z43.union([z43.literal(0), z43.literal(90), z43.literal(180), z43.literal(270)]);
32608
+ rectSchema2 = z43.tuple([z43.number(), z43.number(), z43.number(), z43.number()]);
32609
+ aspectCropSchema2 = z43.object({
32610
+ aspect: z43.preprocess((value) => value == null ? void 0 : value, z43.string().optional()),
32611
+ rect: z43.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
32612
+ hotspot: z43.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
32613
+ rotation: z43.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
32614
+ });
32615
+ transformSchema2 = z43.object({
32616
+ aspectCrops: z43.preprocess((value) => {
32313
32617
  if (!value || typeof value !== "object" || Array.isArray(value)) {
32314
32618
  return void 0;
32315
32619
  }
32316
32620
  return value;
32317
- }, z42.record(z42.string(), aspectCropSchema2.catch({}))).optional(),
32621
+ }, z43.record(z43.string(), aspectCropSchema2.catch({}))).optional(),
32318
32622
  rect: rectSchema2.optional(),
32319
32623
  hotspot: hotspotSchema2.optional(),
32320
32624
  rotation: rotationSchema2.optional()
32321
32625
  });
32322
- mediaPosterSchema = z42.discriminatedUnion("tag", [
32323
- z42.object({
32324
- tag: z42.literal("storage"),
32325
- assetId: z42.string().optional(),
32326
- storageBucket: z42.string().min(1),
32327
- storagePath: z42.string().min(1)
32626
+ mediaPosterSchema = z43.discriminatedUnion("tag", [
32627
+ z43.object({
32628
+ tag: z43.literal("storage"),
32629
+ assetId: z43.string().optional(),
32630
+ storageBucket: z43.string().min(1),
32631
+ storagePath: z43.string().min(1)
32328
32632
  }),
32329
- z42.object({
32330
- tag: z42.literal("external-src"),
32331
- assetId: z42.string().optional(),
32332
- src: z42.string().url()
32633
+ z43.object({
32634
+ tag: z43.literal("external-src"),
32635
+ assetId: z43.string().optional(),
32636
+ src: z43.string().url()
32333
32637
  })
32334
32638
  ]);
32335
- mediaBaseSchema = z42.object({
32336
- purpose: z42.string().optional(),
32337
- placeholder: z42.boolean().default(true).optional(),
32338
- assetId: z42.string().optional(),
32339
- identifier: z42.string().optional(),
32340
- src: z42.string().optional(),
32341
- alt: z42.string().optional(),
32342
- filename: z42.string().optional(),
32343
- mimeType: z42.string().optional(),
32344
- width: z42.number().optional(),
32345
- height: z42.number().optional(),
32346
- storageBucket: z42.string().optional(),
32347
- storagePath: z42.string().optional(),
32639
+ mediaBaseSchema = z43.object({
32640
+ purpose: z43.string().optional(),
32641
+ placeholder: z43.boolean().default(true).optional(),
32642
+ assetId: z43.string().optional(),
32643
+ identifier: z43.string().optional(),
32644
+ src: z43.string().optional(),
32645
+ alt: z43.string().optional(),
32646
+ filename: z43.string().optional(),
32647
+ mimeType: z43.string().optional(),
32648
+ width: z43.number().optional(),
32649
+ height: z43.number().optional(),
32650
+ storageBucket: z43.string().optional(),
32651
+ storagePath: z43.string().optional(),
32348
32652
  poster: mediaPosterSchema.optional(),
32349
32653
  transform: transformSchema2.optional()
32350
32654
  });
32351
- imageMediaSchema = mediaBaseSchema.extend({ type: z42.literal("image") });
32352
- videoMediaSchema = mediaBaseSchema.extend({ type: z42.literal("video") });
32353
- audioMediaSchema = mediaBaseSchema.extend({ type: z42.literal("audio") });
32354
- documentMediaSchema = mediaBaseSchema.extend({ type: z42.literal("document") });
32355
- spreadsheetMediaSchema = mediaBaseSchema.extend({ type: z42.literal("spreadsheet") });
32356
- archiveMediaSchema = mediaBaseSchema.extend({ type: z42.literal("archive") });
32357
- mediaSchema2 = z42.discriminatedUnion("type", [
32655
+ imageMediaSchema = mediaBaseSchema.extend({ type: z43.literal("image") });
32656
+ videoMediaSchema = mediaBaseSchema.extend({ type: z43.literal("video") });
32657
+ audioMediaSchema = mediaBaseSchema.extend({ type: z43.literal("audio") });
32658
+ documentMediaSchema = mediaBaseSchema.extend({ type: z43.literal("document") });
32659
+ spreadsheetMediaSchema = mediaBaseSchema.extend({ type: z43.literal("spreadsheet") });
32660
+ archiveMediaSchema = mediaBaseSchema.extend({ type: z43.literal("archive") });
32661
+ mediaSchema2 = z43.discriminatedUnion("type", [
32358
32662
  imageMediaSchema,
32359
32663
  videoMediaSchema,
32360
32664
  audioMediaSchema,
@@ -32366,186 +32670,186 @@ var init_media4 = __esm({
32366
32670
  });
32367
32671
 
32368
32672
  // ../blocks/src/system/manifest/richTextSchema.ts
32369
- import { z as z43 } from "zod";
32673
+ import { z as z44 } from "zod";
32370
32674
  var TipTapMarkSchema, TipTapNodeSchema, RichTextValueSchema, RichTextDocSchema;
32371
32675
  var init_richTextSchema = __esm({
32372
32676
  "../blocks/src/system/manifest/richTextSchema.ts"() {
32373
32677
  "use strict";
32374
- TipTapMarkSchema = z43.object({
32375
- type: z43.string(),
32376
- attrs: z43.record(z43.string(), z43.unknown()).optional()
32377
- });
32378
- TipTapNodeSchema = z43.lazy(
32379
- () => z43.object({
32380
- type: z43.string(),
32381
- content: z43.array(TipTapNodeSchema).optional(),
32382
- text: z43.string().optional(),
32383
- attrs: z43.record(z43.string(), z43.unknown()).optional(),
32384
- marks: z43.array(TipTapMarkSchema).optional()
32678
+ TipTapMarkSchema = z44.object({
32679
+ type: z44.string(),
32680
+ attrs: z44.record(z44.string(), z44.unknown()).optional()
32681
+ });
32682
+ TipTapNodeSchema = z44.lazy(
32683
+ () => z44.object({
32684
+ type: z44.string(),
32685
+ content: z44.array(TipTapNodeSchema).optional(),
32686
+ text: z44.string().optional(),
32687
+ attrs: z44.record(z44.string(), z44.unknown()).optional(),
32688
+ marks: z44.array(TipTapMarkSchema).optional()
32385
32689
  })
32386
32690
  );
32387
- RichTextValueSchema = z43.union([
32691
+ RichTextValueSchema = z44.union([
32388
32692
  // Canonical: TipTap document directly
32389
32693
  TipTapNodeSchema,
32390
32694
  // Legacy (read-tolerance only): wrapped in { doc: {...} }
32391
- z43.object({
32695
+ z44.object({
32392
32696
  doc: TipTapNodeSchema
32393
32697
  })
32394
32698
  ]);
32395
- RichTextDocSchema = z43.object({
32396
- type: z43.literal("doc"),
32397
- content: z43.array(TipTapNodeSchema)
32699
+ RichTextDocSchema = z44.object({
32700
+ type: z44.literal("doc"),
32701
+ content: z44.array(TipTapNodeSchema)
32398
32702
  });
32399
32703
  }
32400
32704
  });
32401
32705
 
32402
32706
  // ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
32403
- import { z as z44 } from "zod";
32707
+ import { z as z45 } from "zod";
32404
32708
  var bookingDepositRefundPolicySchema, bookingInstalmentPlanSchema, bookingFlexibleBalanceDueDateRuleSchema, bookingFlexibleBalanceConfigSchema, blockBookingPaymentCollectionOptionSchema, blockBookingPaymentTermsSchema;
32405
32709
  var init_bookingPaymentTerms = __esm({
32406
32710
  "../blocks/src/system/blocks/shared/bookingPaymentTerms.ts"() {
32407
32711
  "use strict";
32408
- bookingDepositRefundPolicySchema = z44.enum([
32712
+ bookingDepositRefundPolicySchema = z45.enum([
32409
32713
  "refundable",
32410
32714
  "non_refundable"
32411
32715
  ]);
32412
- bookingInstalmentPlanSchema = z44.union([
32413
- z44.object({
32414
- kind: z44.literal("deposit_plus_one_remainder"),
32415
- depositAmountCents: z44.number().int().min(0),
32716
+ bookingInstalmentPlanSchema = z45.union([
32717
+ z45.object({
32718
+ kind: z45.literal("deposit_plus_one_remainder"),
32719
+ depositAmountCents: z45.number().int().min(0),
32416
32720
  depositRefundability: bookingDepositRefundPolicySchema,
32417
- remainderDueCount: z44.number().int().positive(),
32418
- intervalUnit: z44.enum(["day", "week", "month"])
32721
+ remainderDueCount: z45.number().int().positive(),
32722
+ intervalUnit: z45.enum(["day", "week", "month"])
32419
32723
  }),
32420
- z44.object({
32421
- kind: z44.literal("deposit_plus_scheduled_instalments"),
32422
- depositAmountCents: z44.number().int().min(0),
32724
+ z45.object({
32725
+ kind: z45.literal("deposit_plus_scheduled_instalments"),
32726
+ depositAmountCents: z45.number().int().min(0),
32423
32727
  depositRefundability: bookingDepositRefundPolicySchema,
32424
- instalmentCount: z44.number().int().positive(),
32425
- intervalCount: z44.number().int().positive(),
32426
- intervalUnit: z44.enum(["day", "week", "month"])
32728
+ instalmentCount: z45.number().int().positive(),
32729
+ intervalCount: z45.number().int().positive(),
32730
+ intervalUnit: z45.enum(["day", "week", "month"])
32427
32731
  }),
32428
- z44.object({
32429
- kind: z44.literal("equal_scheduled_instalments"),
32430
- instalmentCount: z44.number().int().positive(),
32431
- intervalCount: z44.number().int().positive(),
32432
- intervalUnit: z44.enum(["day", "week", "month"])
32732
+ z45.object({
32733
+ kind: z45.literal("equal_scheduled_instalments"),
32734
+ instalmentCount: z45.number().int().positive(),
32735
+ intervalCount: z45.number().int().positive(),
32736
+ intervalUnit: z45.enum(["day", "week", "month"])
32433
32737
  })
32434
32738
  ]);
32435
- bookingFlexibleBalanceDueDateRuleSchema = z44.union([
32436
- z44.object({
32437
- kind: z44.literal("relative_to_start_date"),
32438
- daysBeforeStart: z44.number().int().positive()
32739
+ bookingFlexibleBalanceDueDateRuleSchema = z45.union([
32740
+ z45.object({
32741
+ kind: z45.literal("relative_to_start_date"),
32742
+ daysBeforeStart: z45.number().int().positive()
32439
32743
  }),
32440
- z44.object({
32441
- kind: z44.literal("fixed_calendar_date"),
32442
- dueAt: z44.string().datetime()
32744
+ z45.object({
32745
+ kind: z45.literal("fixed_calendar_date"),
32746
+ dueAt: z45.string().datetime()
32443
32747
  })
32444
32748
  ]);
32445
- bookingFlexibleBalanceConfigSchema = z44.object({
32446
- upfrontAmountCents: z44.number().int().min(0),
32749
+ bookingFlexibleBalanceConfigSchema = z45.object({
32750
+ upfrontAmountCents: z45.number().int().min(0),
32447
32751
  dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
32448
32752
  depositRefundability: bookingDepositRefundPolicySchema
32449
32753
  });
32450
- blockBookingPaymentCollectionOptionSchema = z44.union([
32451
- z44.object({
32452
- kind: z44.literal("upfront")
32754
+ blockBookingPaymentCollectionOptionSchema = z45.union([
32755
+ z45.object({
32756
+ kind: z45.literal("upfront")
32453
32757
  }),
32454
- z44.object({
32455
- kind: z44.literal("deferred_manual")
32758
+ z45.object({
32759
+ kind: z45.literal("deferred_manual")
32456
32760
  }),
32457
- z44.object({
32458
- kind: z44.literal("instalment_plan"),
32761
+ z45.object({
32762
+ kind: z45.literal("instalment_plan"),
32459
32763
  plan: bookingInstalmentPlanSchema
32460
32764
  }),
32461
- z44.object({
32462
- kind: z44.literal("flexible_balance"),
32765
+ z45.object({
32766
+ kind: z45.literal("flexible_balance"),
32463
32767
  config: bookingFlexibleBalanceConfigSchema
32464
32768
  })
32465
32769
  ]);
32466
- blockBookingPaymentTermsSchema = z44.object({
32467
- allowedOptions: z44.array(blockBookingPaymentCollectionOptionSchema).min(1)
32770
+ blockBookingPaymentTermsSchema = z45.object({
32771
+ allowedOptions: z45.array(blockBookingPaymentCollectionOptionSchema).min(1)
32468
32772
  });
32469
32773
  }
32470
32774
  });
32471
32775
 
32472
32776
  // ../blocks/src/system/blocks/courses/shared/schemas.ts
32473
- import { z as z45 } from "zod";
32777
+ import { z as z46 } from "zod";
32474
32778
  var courseVenueSchema, courseSessionSchema, courseTeamMemberSummarySchema, coursePricingOptionSchema, coursePricingSchema, publicCourseSchema, publicCoursesArraySchema;
32475
32779
  var init_schemas = __esm({
32476
32780
  "../blocks/src/system/blocks/courses/shared/schemas.ts"() {
32477
32781
  "use strict";
32478
32782
  init_bookingPaymentTerms();
32479
- courseVenueSchema = z45.object({
32480
- id: z45.string(),
32481
- name: z45.string(),
32482
- address: z45.string().nullable()
32483
- });
32484
- courseSessionSchema = z45.object({
32485
- id: z45.string(),
32486
- startsAt: z45.string(),
32487
- endsAt: z45.string(),
32488
- timeZone: z45.string(),
32489
- capacityOverride: z45.number().nullable().optional(),
32490
- overrides: z45.record(z45.string(), z45.unknown()).nullable().optional()
32491
- });
32492
- courseTeamMemberSummarySchema = z45.object({
32493
- id: z45.string(),
32494
- name: z45.string(),
32495
- roleLabel: z45.string().nullable(),
32496
- summary: z45.string().nullable(),
32497
- profilePath: z45.string().nullable()
32498
- });
32499
- coursePricingOptionSchema = z45.object({
32500
- id: z45.string(),
32501
- name: z45.string(),
32502
- description: z45.string().nullable(),
32503
- priceAmount: z45.number(),
32504
- isActive: z45.boolean(),
32505
- sortOrder: z45.number(),
32506
- capacityLimit: z45.number().nullable(),
32507
- saleStartsAt: z45.string().nullable(),
32508
- saleEndsAt: z45.string().nullable(),
32509
- attendanceScope: z45.enum(["in_person", "online", "both"]).nullable().optional()
32510
- });
32511
- coursePricingSchema = z45.object({
32512
- bookingRequirement: z45.enum(["none", "required"]),
32513
- pricingStrategy: z45.enum(["free", "single", "tiered", "sliding_scale"]),
32514
- currency: z45.string(),
32515
- singlePriceAmount: z45.number().nullable(),
32516
- slidingMinAmount: z45.number().nullable().optional(),
32517
- slidingMaxAmount: z45.number().nullable().optional(),
32518
- slidingSuggestedAmount: z45.number().nullable().optional(),
32783
+ courseVenueSchema = z46.object({
32784
+ id: z46.string(),
32785
+ name: z46.string(),
32786
+ address: z46.string().nullable()
32787
+ });
32788
+ courseSessionSchema = z46.object({
32789
+ id: z46.string(),
32790
+ startsAt: z46.string(),
32791
+ endsAt: z46.string(),
32792
+ timeZone: z46.string(),
32793
+ capacityOverride: z46.number().nullable().optional(),
32794
+ overrides: z46.record(z46.string(), z46.unknown()).nullable().optional()
32795
+ });
32796
+ courseTeamMemberSummarySchema = z46.object({
32797
+ id: z46.string(),
32798
+ name: z46.string(),
32799
+ roleLabel: z46.string().nullable(),
32800
+ summary: z46.string().nullable(),
32801
+ profilePath: z46.string().nullable()
32802
+ });
32803
+ coursePricingOptionSchema = z46.object({
32804
+ id: z46.string(),
32805
+ name: z46.string(),
32806
+ description: z46.string().nullable(),
32807
+ priceAmount: z46.number(),
32808
+ isActive: z46.boolean(),
32809
+ sortOrder: z46.number(),
32810
+ capacityLimit: z46.number().nullable(),
32811
+ saleStartsAt: z46.string().nullable(),
32812
+ saleEndsAt: z46.string().nullable(),
32813
+ attendanceScope: z46.enum(["in_person", "online", "both"]).nullable().optional()
32814
+ });
32815
+ coursePricingSchema = z46.object({
32816
+ bookingRequirement: z46.enum(["none", "required"]),
32817
+ pricingStrategy: z46.enum(["free", "single", "tiered", "sliding_scale"]),
32818
+ currency: z46.string(),
32819
+ singlePriceAmount: z46.number().nullable(),
32820
+ slidingMinAmount: z46.number().nullable().optional(),
32821
+ slidingMaxAmount: z46.number().nullable().optional(),
32822
+ slidingSuggestedAmount: z46.number().nullable().optional(),
32519
32823
  paymentTerms: blockBookingPaymentTermsSchema,
32520
- options: z45.array(coursePricingOptionSchema)
32521
- });
32522
- publicCourseSchema = z45.object({
32523
- id: z45.string(),
32524
- title: z45.string(),
32525
- slug: z45.string(),
32526
- description: z45.unknown().nullable(),
32527
- teamMembers: z45.array(courseTeamMemberSummarySchema).optional(),
32528
- enrollmentOpen: z45.boolean(),
32824
+ options: z46.array(coursePricingOptionSchema)
32825
+ });
32826
+ publicCourseSchema = z46.object({
32827
+ id: z46.string(),
32828
+ title: z46.string(),
32829
+ slug: z46.string(),
32830
+ description: z46.unknown().nullable(),
32831
+ teamMembers: z46.array(courseTeamMemberSummarySchema).optional(),
32832
+ enrollmentOpen: z46.boolean(),
32529
32833
  pricing: coursePricingSchema.optional(),
32530
- priceCents: z45.number().nullable(),
32531
- currency: z45.string(),
32834
+ priceCents: z46.number().nullable(),
32835
+ currency: z46.string(),
32532
32836
  paymentTerms: blockBookingPaymentTermsSchema,
32533
- enrollmentCapacity: z45.number().nullable(),
32534
- acceptsMemberships: z45.boolean(),
32535
- status: z45.enum(["active", "draft", "cancelled"]),
32536
- sessionsCount: z45.number(),
32537
- enrolledCount: z45.number(),
32538
- availableSpots: z45.number().nullable(),
32539
- sessions: z45.array(courseSessionSchema),
32837
+ enrollmentCapacity: z46.number().nullable(),
32838
+ acceptsMemberships: z46.boolean(),
32839
+ status: z46.enum(["active", "draft", "cancelled"]),
32840
+ sessionsCount: z46.number(),
32841
+ enrolledCount: z46.number(),
32842
+ availableSpots: z46.number().nullable(),
32843
+ sessions: z46.array(courseSessionSchema),
32540
32844
  venue: courseVenueSchema.nullable(),
32541
- contentEntryId: z45.string().nullable()
32845
+ contentEntryId: z46.string().nullable()
32542
32846
  });
32543
- publicCoursesArraySchema = z45.array(publicCourseSchema);
32847
+ publicCoursesArraySchema = z46.array(publicCourseSchema);
32544
32848
  }
32545
32849
  });
32546
32850
 
32547
32851
  // ../blocks/src/system/blocks/events/shared/schemas.ts
32548
- import { z as z46 } from "zod";
32852
+ import { z as z47 } from "zod";
32549
32853
  var eventPresetSchema, eventScheduleScopeSchema, eventDestinationModeSchema, publicEventDestinationSchema, eventVenueSchema, eventCategorySchema, pricingTypeSchema, accessRestrictionSchema, eventPricingModeSchema, publicCoursePriceDisplaySchema, publicEventPriceDisplaySchema, publicEventTicketTypePriceDisplaySchema, publicEventAttendanceModeSchema, publicEventAttendanceModeAvailabilitySchema, publicEventTicketTypeAvailabilitySchema, publicEventTicketTypeSchema, publicEventPricingSchema, publicTeamMemberSummarySchema, publicEventSchema, publicEventsArraySchema;
32550
32854
  var init_schemas2 = __esm({
32551
32855
  "../blocks/src/system/blocks/events/shared/schemas.ts"() {
@@ -32554,212 +32858,212 @@ var init_schemas2 = __esm({
32554
32858
  init_richTextSchema();
32555
32859
  init_bookingPaymentTerms();
32556
32860
  init_schemas();
32557
- eventPresetSchema = z46.enum(["event", "class", "workshop", "retreat", "performance"]);
32558
- eventScheduleScopeSchema = z46.enum(["recurring", "oneOff"]);
32559
- eventDestinationModeSchema = z46.enum(["cms-managed", "system-managed"]);
32560
- publicEventDestinationSchema = z46.discriminatedUnion("kind", [
32561
- z46.object({
32562
- kind: z46.literal("native"),
32861
+ eventPresetSchema = z47.enum(["event", "class", "workshop", "retreat", "performance"]);
32862
+ eventScheduleScopeSchema = z47.enum(["recurring", "oneOff"]);
32863
+ eventDestinationModeSchema = z47.enum(["cms-managed", "system-managed"]);
32864
+ publicEventDestinationSchema = z47.discriminatedUnion("kind", [
32865
+ z47.object({
32866
+ kind: z47.literal("native"),
32563
32867
  mode: eventDestinationModeSchema,
32564
- path: z46.string()
32868
+ path: z47.string()
32565
32869
  }),
32566
- z46.object({
32567
- kind: z46.literal("external"),
32568
- url: z46.string(),
32569
- label: z46.string()
32870
+ z47.object({
32871
+ kind: z47.literal("external"),
32872
+ url: z47.string(),
32873
+ label: z47.string()
32570
32874
  })
32571
32875
  ]);
32572
- eventVenueSchema = z46.object({
32573
- id: z46.string(),
32574
- name: z46.string(),
32575
- address: z46.string().nullable(),
32576
- location: z46.object({
32577
- lat: z46.number(),
32578
- lng: z46.number()
32876
+ eventVenueSchema = z47.object({
32877
+ id: z47.string(),
32878
+ name: z47.string(),
32879
+ address: z47.string().nullable(),
32880
+ location: z47.object({
32881
+ lat: z47.number(),
32882
+ lng: z47.number()
32579
32883
  }).nullable()
32580
32884
  });
32581
- eventCategorySchema = z46.object({
32582
- id: z46.string(),
32583
- name: z46.string(),
32584
- color: z46.string().nullable()
32585
- });
32586
- pricingTypeSchema = z46.enum(["free", "paid", "external"]);
32587
- accessRestrictionSchema = z46.enum(["none", "category"]);
32588
- eventPricingModeSchema = z46.enum(["single", "ticket_types"]);
32589
- publicCoursePriceDisplaySchema = z46.discriminatedUnion("kind", [
32590
- z46.object({ kind: z46.literal("free"), currency: z46.string() }),
32591
- z46.object({ kind: z46.literal("exact"), amount: z46.number(), currency: z46.string() }),
32592
- z46.object({ kind: z46.literal("from"), amount: z46.number(), currency: z46.string() }),
32593
- z46.object({ kind: z46.literal("unavailable"), currency: z46.string() })
32885
+ eventCategorySchema = z47.object({
32886
+ id: z47.string(),
32887
+ name: z47.string(),
32888
+ color: z47.string().nullable()
32889
+ });
32890
+ pricingTypeSchema = z47.enum(["free", "paid", "external"]);
32891
+ accessRestrictionSchema = z47.enum(["none", "category"]);
32892
+ eventPricingModeSchema = z47.enum(["single", "ticket_types"]);
32893
+ publicCoursePriceDisplaySchema = z47.discriminatedUnion("kind", [
32894
+ z47.object({ kind: z47.literal("free"), currency: z47.string() }),
32895
+ z47.object({ kind: z47.literal("exact"), amount: z47.number(), currency: z47.string() }),
32896
+ z47.object({ kind: z47.literal("from"), amount: z47.number(), currency: z47.string() }),
32897
+ z47.object({ kind: z47.literal("unavailable"), currency: z47.string() })
32594
32898
  ]);
32595
- publicEventPriceDisplaySchema = z46.discriminatedUnion("kind", [
32596
- z46.object({ kind: z46.literal("free"), currency: z46.string() }),
32597
- z46.object({ kind: z46.literal("exact"), amount: z46.number(), currency: z46.string() }),
32598
- z46.object({ kind: z46.literal("from"), amount: z46.number(), currency: z46.string() }),
32599
- z46.object({ kind: z46.literal("range"), minAmount: z46.number(), maxAmount: z46.number(), currency: z46.string() }),
32600
- z46.object({
32601
- kind: z46.literal("mixed"),
32602
- paidFromAmount: z46.number(),
32603
- paidToAmount: z46.number(),
32604
- currency: z46.string()
32899
+ publicEventPriceDisplaySchema = z47.discriminatedUnion("kind", [
32900
+ z47.object({ kind: z47.literal("free"), currency: z47.string() }),
32901
+ z47.object({ kind: z47.literal("exact"), amount: z47.number(), currency: z47.string() }),
32902
+ z47.object({ kind: z47.literal("from"), amount: z47.number(), currency: z47.string() }),
32903
+ z47.object({ kind: z47.literal("range"), minAmount: z47.number(), maxAmount: z47.number(), currency: z47.string() }),
32904
+ z47.object({
32905
+ kind: z47.literal("mixed"),
32906
+ paidFromAmount: z47.number(),
32907
+ paidToAmount: z47.number(),
32908
+ currency: z47.string()
32605
32909
  }),
32606
- z46.object({ kind: z46.literal("unavailable"), currency: z46.string() }),
32607
- z46.object({ kind: z46.literal("external"), label: z46.string() }),
32608
- z46.object({ kind: z46.literal("course"), display: publicCoursePriceDisplaySchema })
32910
+ z47.object({ kind: z47.literal("unavailable"), currency: z47.string() }),
32911
+ z47.object({ kind: z47.literal("external"), label: z47.string() }),
32912
+ z47.object({ kind: z47.literal("course"), display: publicCoursePriceDisplaySchema })
32609
32913
  ]);
32610
- publicEventTicketTypePriceDisplaySchema = z46.union([
32611
- z46.object({ kind: z46.literal("free"), currency: z46.string() }),
32612
- z46.object({ kind: z46.literal("exact"), amount: z46.number(), currency: z46.string() }),
32613
- z46.object({ kind: z46.literal("from"), amount: z46.number(), currency: z46.string() }),
32614
- z46.object({ kind: z46.literal("range"), minAmount: z46.number(), maxAmount: z46.number(), currency: z46.string() }),
32615
- z46.object({
32616
- kind: z46.literal("mixed"),
32617
- paidFromAmount: z46.number(),
32618
- paidToAmount: z46.number(),
32619
- currency: z46.string()
32914
+ publicEventTicketTypePriceDisplaySchema = z47.union([
32915
+ z47.object({ kind: z47.literal("free"), currency: z47.string() }),
32916
+ z47.object({ kind: z47.literal("exact"), amount: z47.number(), currency: z47.string() }),
32917
+ z47.object({ kind: z47.literal("from"), amount: z47.number(), currency: z47.string() }),
32918
+ z47.object({ kind: z47.literal("range"), minAmount: z47.number(), maxAmount: z47.number(), currency: z47.string() }),
32919
+ z47.object({
32920
+ kind: z47.literal("mixed"),
32921
+ paidFromAmount: z47.number(),
32922
+ paidToAmount: z47.number(),
32923
+ currency: z47.string()
32620
32924
  }),
32621
- z46.object({ kind: z46.literal("unavailable"), currency: z46.string() })
32925
+ z47.object({ kind: z47.literal("unavailable"), currency: z47.string() })
32622
32926
  ]);
32623
- publicEventAttendanceModeSchema = z46.enum(["in_person", "online"]);
32624
- publicEventAttendanceModeAvailabilitySchema = z46.object({
32927
+ publicEventAttendanceModeSchema = z47.enum(["in_person", "online"]);
32928
+ publicEventAttendanceModeAvailabilitySchema = z47.object({
32625
32929
  mode: publicEventAttendanceModeSchema,
32626
- capacity: z46.number().nullable(),
32627
- registeredCount: z46.number(),
32628
- availableSpots: z46.number().nullable(),
32629
- waitlistEnabled: z46.boolean()
32630
- });
32631
- publicEventTicketTypeAvailabilitySchema = z46.union([
32632
- z46.object({
32633
- kind: z46.literal("available"),
32634
- remainingCapacity: z46.number().nullable()
32930
+ capacity: z47.number().nullable(),
32931
+ registeredCount: z47.number(),
32932
+ availableSpots: z47.number().nullable(),
32933
+ waitlistEnabled: z47.boolean()
32934
+ });
32935
+ publicEventTicketTypeAvailabilitySchema = z47.union([
32936
+ z47.object({
32937
+ kind: z47.literal("available"),
32938
+ remainingCapacity: z47.number().nullable()
32635
32939
  }),
32636
- z46.object({
32637
- kind: z46.literal("unavailable"),
32638
- reason: z46.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
32639
- remainingCapacity: z46.number().nullable()
32940
+ z47.object({
32941
+ kind: z47.literal("unavailable"),
32942
+ reason: z47.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
32943
+ remainingCapacity: z47.number().nullable()
32640
32944
  })
32641
32945
  ]);
32642
- publicEventTicketTypeSchema = z46.object({
32643
- id: z46.string(),
32644
- siteId: z46.string(),
32645
- eventSeriesId: z46.string(),
32646
- name: z46.string(),
32647
- description: z46.string().nullable(),
32648
- priceAmount: z46.number(),
32649
- isActive: z46.boolean(),
32650
- sortOrder: z46.number(),
32651
- capacityMode: z46.enum(["limited", "unlimited"]),
32652
- capacityLimit: z46.number().nullable(),
32653
- attendanceScope: z46.enum(["in_person", "online", "both"]).optional(),
32654
- saleStartsAt: z46.string().nullable(),
32655
- saleEndsAt: z46.string().nullable(),
32946
+ publicEventTicketTypeSchema = z47.object({
32947
+ id: z47.string(),
32948
+ siteId: z47.string(),
32949
+ eventSeriesId: z47.string(),
32950
+ name: z47.string(),
32951
+ description: z47.string().nullable(),
32952
+ priceAmount: z47.number(),
32953
+ isActive: z47.boolean(),
32954
+ sortOrder: z47.number(),
32955
+ capacityMode: z47.enum(["limited", "unlimited"]),
32956
+ capacityLimit: z47.number().nullable(),
32957
+ attendanceScope: z47.enum(["in_person", "online", "both"]).optional(),
32958
+ saleStartsAt: z47.string().nullable(),
32959
+ saleEndsAt: z47.string().nullable(),
32656
32960
  availability: publicEventTicketTypeAvailabilitySchema,
32657
- createdAt: z46.string(),
32658
- updatedAt: z46.string()
32659
- });
32660
- publicEventPricingSchema = z46.discriminatedUnion("kind", [
32661
- z46.object({
32662
- kind: z46.literal("drop_in"),
32663
- currency: z46.string(),
32664
- display: z46.object({ kind: z46.literal("free"), currency: z46.string() })
32961
+ createdAt: z47.string(),
32962
+ updatedAt: z47.string()
32963
+ });
32964
+ publicEventPricingSchema = z47.discriminatedUnion("kind", [
32965
+ z47.object({
32966
+ kind: z47.literal("drop_in"),
32967
+ currency: z47.string(),
32968
+ display: z47.object({ kind: z47.literal("free"), currency: z47.string() })
32665
32969
  }),
32666
- z46.object({
32667
- kind: z46.literal("free_registration"),
32668
- currency: z46.string(),
32669
- display: z46.object({ kind: z46.literal("free"), currency: z46.string() })
32970
+ z47.object({
32971
+ kind: z47.literal("free_registration"),
32972
+ currency: z47.string(),
32973
+ display: z47.object({ kind: z47.literal("free"), currency: z47.string() })
32670
32974
  }),
32671
- z46.object({
32672
- kind: z46.literal("single_paid"),
32673
- amount: z46.number(),
32674
- currency: z46.string(),
32675
- display: z46.object({ kind: z46.literal("exact"), amount: z46.number(), currency: z46.string() })
32975
+ z47.object({
32976
+ kind: z47.literal("single_paid"),
32977
+ amount: z47.number(),
32978
+ currency: z47.string(),
32979
+ display: z47.object({ kind: z47.literal("exact"), amount: z47.number(), currency: z47.string() })
32676
32980
  }),
32677
- z46.object({
32678
- kind: z46.literal("ticket_types"),
32679
- currency: z46.string(),
32680
- ticketTypes: z46.array(publicEventTicketTypeSchema),
32981
+ z47.object({
32982
+ kind: z47.literal("ticket_types"),
32983
+ currency: z47.string(),
32984
+ ticketTypes: z47.array(publicEventTicketTypeSchema),
32681
32985
  display: publicEventTicketTypePriceDisplaySchema
32682
32986
  }),
32683
- z46.object({
32684
- kind: z46.literal("sliding_scale"),
32685
- minAmount: z46.number(),
32686
- maxAmount: z46.number(),
32687
- suggestedAmount: z46.number().nullable(),
32688
- currency: z46.string(),
32689
- display: z46.object({
32690
- kind: z46.literal("range"),
32691
- minAmount: z46.number(),
32692
- maxAmount: z46.number(),
32693
- currency: z46.string()
32987
+ z47.object({
32988
+ kind: z47.literal("sliding_scale"),
32989
+ minAmount: z47.number(),
32990
+ maxAmount: z47.number(),
32991
+ suggestedAmount: z47.number().nullable(),
32992
+ currency: z47.string(),
32993
+ display: z47.object({
32994
+ kind: z47.literal("range"),
32995
+ minAmount: z47.number(),
32996
+ maxAmount: z47.number(),
32997
+ currency: z47.string()
32694
32998
  })
32695
32999
  }),
32696
- z46.object({
32697
- kind: z46.literal("course"),
32698
- display: z46.object({ kind: z46.literal("course"), display: publicCoursePriceDisplaySchema })
33000
+ z47.object({
33001
+ kind: z47.literal("course"),
33002
+ display: z47.object({ kind: z47.literal("course"), display: publicCoursePriceDisplaySchema })
32699
33003
  }),
32700
- z46.object({
32701
- kind: z46.literal("external"),
32702
- display: z46.object({ kind: z46.literal("external"), label: z46.string() })
33004
+ z47.object({
33005
+ kind: z47.literal("external"),
33006
+ display: z47.object({ kind: z47.literal("external"), label: z47.string() })
32703
33007
  })
32704
33008
  ]);
32705
- publicTeamMemberSummarySchema = z46.object({
32706
- id: z46.string(),
32707
- name: z46.string(),
32708
- roleLabel: z46.string().nullable(),
32709
- summary: z46.string().nullable(),
32710
- profilePath: z46.string().nullable()
33009
+ publicTeamMemberSummarySchema = z47.object({
33010
+ id: z47.string(),
33011
+ name: z47.string(),
33012
+ roleLabel: z47.string().nullable(),
33013
+ summary: z47.string().nullable(),
33014
+ profilePath: z47.string().nullable()
32711
33015
  });
32712
- publicEventSchema = z46.object({
32713
- kind: z46.enum(["event", "course_session"]).optional(),
33016
+ publicEventSchema = z47.object({
33017
+ kind: z47.enum(["event", "course_session"]).optional(),
32714
33018
  eventPreset: eventPresetSchema.optional(),
32715
33019
  eventDestinationMode: eventDestinationModeSchema.optional(),
32716
33020
  scheduleScope: eventScheduleScopeSchema.optional(),
32717
- id: z46.string(),
32718
- occurrenceId: z46.string(),
32719
- seriesId: z46.string(),
32720
- title: z46.string(),
32721
- description: z46.string().nullable(),
32722
- content: z46.object({
33021
+ id: z47.string(),
33022
+ occurrenceId: z47.string(),
33023
+ seriesId: z47.string(),
33024
+ title: z47.string(),
33025
+ description: z47.string().nullable(),
33026
+ content: z47.object({
32723
33027
  body: RichTextDocSchema.nullable().optional()
32724
33028
  }).optional(),
32725
- presentation: z46.object({
32726
- cardTitleOverride: z46.string().nullable().optional(),
32727
- summary: z46.string().nullable().optional(),
33029
+ presentation: z47.object({
33030
+ cardTitleOverride: z47.string().nullable().optional(),
33031
+ summary: z47.string().nullable().optional(),
32728
33032
  image: mediaSchema2.nullable().optional()
32729
33033
  }).optional(),
32730
- slug: z46.string(),
32731
- path: z46.string().nullable(),
33034
+ slug: z47.string(),
33035
+ path: z47.string().nullable(),
32732
33036
  destination: publicEventDestinationSchema,
32733
- requiresRegistration: z46.boolean(),
32734
- deliveryMode: z46.enum(["in_person", "online", "hybrid"]),
32735
- attendanceModes: z46.array(publicEventAttendanceModeAvailabilitySchema),
32736
- startsAt: z46.string(),
32737
- endsAt: z46.string(),
32738
- capacity: z46.number().nullable(),
32739
- registeredCount: z46.number(),
32740
- availableSpots: z46.number().nullable(),
32741
- waitlistEnabled: z46.boolean(),
33037
+ requiresRegistration: z47.boolean(),
33038
+ deliveryMode: z47.enum(["in_person", "online", "hybrid"]),
33039
+ attendanceModes: z47.array(publicEventAttendanceModeAvailabilitySchema),
33040
+ startsAt: z47.string(),
33041
+ endsAt: z47.string(),
33042
+ capacity: z47.number().nullable(),
33043
+ registeredCount: z47.number(),
33044
+ availableSpots: z47.number().nullable(),
33045
+ waitlistEnabled: z47.boolean(),
32742
33046
  venue: eventVenueSchema.nullable(),
32743
33047
  eventCategory: eventCategorySchema.nullable(),
32744
- teamMembers: z46.array(publicTeamMemberSummarySchema).optional(),
32745
- status: z46.enum(["active", "draft", "archived"]).optional(),
32746
- timeZone: z46.string(),
33048
+ teamMembers: z47.array(publicTeamMemberSummarySchema).optional(),
33049
+ status: z47.enum(["active", "draft", "archived"]).optional(),
33050
+ timeZone: z47.string(),
32747
33051
  pricing: publicEventPricingSchema,
32748
33052
  paymentTerms: blockBookingPaymentTermsSchema,
32749
33053
  accessRestriction: accessRestrictionSchema,
32750
- allowedCategoryIds: z46.array(z46.string()),
32751
- requireGuestDetails: z46.boolean().optional(),
32752
- acceptsPasses: z46.boolean().optional(),
32753
- acceptsMemberships: z46.boolean().optional(),
32754
- course: z46.object({
32755
- id: z46.string(),
33054
+ allowedCategoryIds: z47.array(z47.string()),
33055
+ requireGuestDetails: z47.boolean().optional(),
33056
+ acceptsPasses: z47.boolean().optional(),
33057
+ acceptsMemberships: z47.boolean().optional(),
33058
+ course: z47.object({
33059
+ id: z47.string(),
32756
33060
  pricing: coursePricingSchema.optional(),
32757
- priceCents: z46.number().nullable(),
32758
- currency: z46.string(),
32759
- enrollmentOpen: z46.boolean()
33061
+ priceCents: z47.number().nullable(),
33062
+ currency: z47.string(),
33063
+ enrollmentOpen: z47.boolean()
32760
33064
  }).nullable().optional()
32761
33065
  });
32762
- publicEventsArraySchema = z46.array(publicEventSchema);
33066
+ publicEventsArraySchema = z47.array(publicEventSchema);
32763
33067
  }
32764
33068
  });
32765
33069
 
@@ -32984,6 +33288,41 @@ var init_filtering = __esm({
32984
33288
  }
32985
33289
  });
32986
33290
 
33291
+ // ../blocks/src/system/blocks/events/shared/layout.ts
33292
+ function eventSectionHeaderLayoutNodes() {
33293
+ return [
33294
+ text(
33295
+ { as: "h2" },
33296
+ bind("content.heading"),
33297
+ when("content.heading", {
33298
+ authoringPresence: recoverEmptyHeadingWhenActive
33299
+ })
33300
+ ),
33301
+ richText(
33302
+ { className: "rb-prose rb-max-w-none" },
33303
+ bind("content.description"),
33304
+ when("content.description", {
33305
+ authoringPresence: recoverEmptyDescriptionWhenActive
33306
+ })
33307
+ )
33308
+ ];
33309
+ }
33310
+ var recoverEmptyHeadingWhenActive, recoverEmptyDescriptionWhenActive;
33311
+ var init_layout2 = __esm({
33312
+ "../blocks/src/system/blocks/events/shared/layout.ts"() {
33313
+ "use strict";
33314
+ init_builder2();
33315
+ recoverEmptyHeadingWhenActive = {
33316
+ kind: "recover-empty-when-active",
33317
+ placeholder: "Add heading"
33318
+ };
33319
+ recoverEmptyDescriptionWhenActive = {
33320
+ kind: "recover-empty-when-active",
33321
+ placeholder: "Add description"
33322
+ };
33323
+ }
33324
+ });
33325
+
32987
33326
  // ../blocks/src/system/blocks/events/shared/index.ts
32988
33327
  var init_shared3 = __esm({
32989
33328
  "../blocks/src/system/blocks/events/shared/index.ts"() {
@@ -32992,61 +33331,62 @@ var init_shared3 = __esm({
32992
33331
  init_schemas2();
32993
33332
  init_fields();
32994
33333
  init_filtering();
33334
+ init_layout2();
32995
33335
  }
32996
33336
  });
32997
33337
 
32998
33338
  // ../blocks/src/system/blocks/shop.shared.ts
32999
- import { z as z47 } from "zod";
33339
+ import { z as z48 } from "zod";
33000
33340
  var publicPassProductSchema, publicPassProductCollectionSchema, publicMembershipProductSchema, publicMembershipProductCollectionSchema;
33001
33341
  var init_shop_shared = __esm({
33002
33342
  "../blocks/src/system/blocks/shop.shared.ts"() {
33003
33343
  "use strict";
33004
- publicPassProductSchema = z47.object({
33005
- id: z47.string(),
33006
- productUseCase: z47.enum(["event_pass", "appointment_package"]).default("event_pass"),
33007
- name: z47.string(),
33008
- description: z47.string().nullable(),
33009
- price: z47.number(),
33010
- currency: z47.string(),
33011
- creditsTotal: z47.number(),
33012
- pricePerCredit: z47.number(),
33013
- validDays: z47.number().nullable(),
33014
- eligibleCategoryIds: z47.array(z47.string()),
33015
- eligibleCategoryNames: z47.array(z47.string())
33016
- });
33017
- publicPassProductCollectionSchema = z47.object({
33018
- passes: z47.array(publicPassProductSchema)
33019
- });
33020
- publicMembershipProductSchema = z47.object({
33021
- id: z47.string(),
33022
- name: z47.string(),
33023
- description: z47.string().nullable(),
33024
- price: z47.number(),
33025
- currency: z47.string(),
33026
- billingInterval: z47.enum(["month", "year"]),
33027
- eligibleCategoryIds: z47.array(z47.string()),
33028
- eligibleCategoryNames: z47.array(z47.string())
33344
+ publicPassProductSchema = z48.object({
33345
+ id: z48.string(),
33346
+ productUseCase: z48.enum(["event_pass", "appointment_package"]).default("event_pass"),
33347
+ name: z48.string(),
33348
+ description: z48.string().nullable(),
33349
+ price: z48.number(),
33350
+ currency: z48.string(),
33351
+ creditsTotal: z48.number(),
33352
+ pricePerCredit: z48.number(),
33353
+ validDays: z48.number().nullable(),
33354
+ eligibleCategoryIds: z48.array(z48.string()),
33355
+ eligibleCategoryNames: z48.array(z48.string())
33356
+ });
33357
+ publicPassProductCollectionSchema = z48.object({
33358
+ passes: z48.array(publicPassProductSchema)
33359
+ });
33360
+ publicMembershipProductSchema = z48.object({
33361
+ id: z48.string(),
33362
+ name: z48.string(),
33363
+ description: z48.string().nullable(),
33364
+ price: z48.number(),
33365
+ currency: z48.string(),
33366
+ billingInterval: z48.enum(["month", "year"]),
33367
+ eligibleCategoryIds: z48.array(z48.string()),
33368
+ eligibleCategoryNames: z48.array(z48.string())
33029
33369
  });
33030
- publicMembershipProductCollectionSchema = z47.object({
33031
- memberships: z47.array(publicMembershipProductSchema)
33370
+ publicMembershipProductCollectionSchema = z48.object({
33371
+ memberships: z48.array(publicMembershipProductSchema)
33032
33372
  });
33033
33373
  }
33034
33374
  });
33035
33375
 
33036
33376
  // ../blocks/src/system/blocks/event-registration.shared.ts
33037
- import { z as z48 } from "zod";
33377
+ import { z as z49 } from "zod";
33038
33378
  var occurrenceContextSchema;
33039
33379
  var init_event_registration_shared = __esm({
33040
33380
  "../blocks/src/system/blocks/event-registration.shared.ts"() {
33041
33381
  "use strict";
33042
- occurrenceContextSchema = z48.object({
33043
- id: z48.string(),
33044
- seriesId: z48.string(),
33045
- startsAt: z48.string(),
33046
- endsAt: z48.string(),
33047
- timeZone: z48.string(),
33048
- capacityOverride: z48.number().nullable().optional(),
33049
- overrides: z48.record(z48.string(), z48.unknown()).nullable().optional()
33382
+ occurrenceContextSchema = z49.object({
33383
+ id: z49.string(),
33384
+ seriesId: z49.string(),
33385
+ startsAt: z49.string(),
33386
+ endsAt: z49.string(),
33387
+ timeZone: z49.string(),
33388
+ capacityOverride: z49.number().nullable().optional(),
33389
+ overrides: z49.record(z49.string(), z49.unknown()).nullable().optional()
33050
33390
  }).nullable();
33051
33391
  }
33052
33392
  });
@@ -33254,22 +33594,22 @@ var init_pricing = __esm({
33254
33594
  });
33255
33595
 
33256
33596
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
33257
- import { z as z49 } from "zod";
33597
+ import { z as z50 } from "zod";
33258
33598
  var previewStageSchema, registrationButtonVariantSchema, eventButtonVariantSchema, eventLayoutSchema, eventCalendarDisplayModeSchema, eventCalendarDefaultViewSchema, columnOptionSchema, weekStartSchema, filterAutoShowSchema, calendarTabViewsSchema;
33259
33599
  var init_contract_schemas = __esm({
33260
33600
  "../blocks/src/system/runtime/nodes/shared/contract-schemas.ts"() {
33261
33601
  "use strict";
33262
33602
  init_events();
33263
- previewStageSchema = z49.enum(["preview", "published"]);
33264
- registrationButtonVariantSchema = z49.enum(["primary", "secondary", "outline"]);
33265
- eventButtonVariantSchema = z49.enum(["primary", "secondary", "outline", "link"]);
33266
- eventLayoutSchema = z49.enum(eventCalendarListLayoutValues);
33267
- eventCalendarDisplayModeSchema = z49.enum(eventCalendarDisplayModeValues);
33268
- eventCalendarDefaultViewSchema = z49.enum(eventCalendarDefaultViewValues);
33269
- columnOptionSchema = z49.enum(["2", "3", "4"]);
33270
- weekStartSchema = z49.enum(["sunday", "monday"]);
33271
- filterAutoShowSchema = z49.enum(["auto", "always", "never"]);
33272
- calendarTabViewsSchema = z49.enum(["both", "month", "week"]);
33603
+ previewStageSchema = z50.enum(["preview", "published"]);
33604
+ registrationButtonVariantSchema = z50.enum(["primary", "secondary", "outline"]);
33605
+ eventButtonVariantSchema = z50.enum(["primary", "secondary", "outline", "link"]);
33606
+ eventLayoutSchema = z50.enum(eventCalendarListLayoutValues);
33607
+ eventCalendarDisplayModeSchema = z50.enum(eventCalendarDisplayModeValues);
33608
+ eventCalendarDefaultViewSchema = z50.enum(eventCalendarDefaultViewValues);
33609
+ columnOptionSchema = z50.enum(["2", "3", "4"]);
33610
+ weekStartSchema = z50.enum(["sunday", "monday"]);
33611
+ filterAutoShowSchema = z50.enum(["auto", "always", "never"]);
33612
+ calendarTabViewsSchema = z50.enum(["both", "month", "week"]);
33273
33613
  }
33274
33614
  });
33275
33615
 
@@ -33347,7 +33687,7 @@ var init_registrationEventAdapter = __esm({
33347
33687
  });
33348
33688
 
33349
33689
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
33350
- import { z as z50 } from "zod";
33690
+ import { z as z51 } from "zod";
33351
33691
  function buildEventRegistrationDisplay(source) {
33352
33692
  const stepLabels = buildEventRegistrationShellStepLabels(source);
33353
33693
  return {
@@ -33455,72 +33795,72 @@ var init_event_registration_interactive = __esm({
33455
33795
  init_registrationEventAdapter();
33456
33796
  EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
33457
33797
  EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
33458
- contentEntrySchema = z50.object({
33459
- id: z50.string(),
33460
- slug: z50.string(),
33461
- contentTypeSlug: z50.string()
33798
+ contentEntrySchema = z51.object({
33799
+ id: z51.string(),
33800
+ slug: z51.string(),
33801
+ contentTypeSlug: z51.string()
33462
33802
  });
33463
- eventRegistrationPublicEventSchema = z50.preprocess(
33803
+ eventRegistrationPublicEventSchema = z51.preprocess(
33464
33804
  normalizeEventRegistrationEventInput,
33465
33805
  publicEventSchema
33466
33806
  );
33467
- eventRegistrationSourceSchema = z50.object({
33468
- siteId: z50.string().optional(),
33469
- apiBaseUrl: z50.string().optional(),
33470
- portalToken: z50.string().nullable().optional(),
33471
- previewToken: z50.string().nullable().optional(),
33807
+ eventRegistrationSourceSchema = z51.object({
33808
+ siteId: z51.string().optional(),
33809
+ apiBaseUrl: z51.string().optional(),
33810
+ portalToken: z51.string().nullable().optional(),
33811
+ previewToken: z51.string().nullable().optional(),
33472
33812
  occurrenceContext: occurrenceContextSchema.optional(),
33473
33813
  contentEntry: contentEntrySchema.nullable().optional(),
33474
- events: z50.array(eventRegistrationPublicEventSchema).nullable().optional(),
33475
- className: z50.string().nullable().optional(),
33476
- buttonText: z50.string().nullable().optional(),
33477
- maxTickets: z50.string().nullable().optional(),
33478
- showVenue: z50.boolean().optional(),
33479
- showCapacity: z50.boolean().optional(),
33480
- successMessage: z50.string().optional(),
33481
- waitlistMessage: z50.string().optional(),
33814
+ events: z51.array(eventRegistrationPublicEventSchema).nullable().optional(),
33815
+ className: z51.string().nullable().optional(),
33816
+ buttonText: z51.string().nullable().optional(),
33817
+ maxTickets: z51.string().nullable().optional(),
33818
+ showVenue: z51.boolean().optional(),
33819
+ showCapacity: z51.boolean().optional(),
33820
+ successMessage: z51.string().optional(),
33821
+ waitlistMessage: z51.string().optional(),
33482
33822
  buttonVariant: registrationButtonVariantSchema.optional(),
33483
- overlayEnabled: z50.boolean().optional(),
33484
- spamProtectionEnabled: z50.boolean().optional(),
33823
+ overlayEnabled: z51.boolean().optional(),
33824
+ spamProtectionEnabled: z51.boolean().optional(),
33485
33825
  stage: previewStageSchema.optional(),
33486
- supportEmail: z50.string().optional(),
33826
+ supportEmail: z51.string().optional(),
33487
33827
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
33488
33828
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
33489
33829
  });
33490
- eventRegistrationDisplaySchema = z50.object({
33491
- kind: z50.literal("event-registration"),
33492
- state: z50.literal("generic-shell"),
33493
- className: z50.string().nullable(),
33494
- titleText: z50.string(),
33495
- bodyText: z50.string(),
33496
- stepLabels: z50.array(z50.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
33497
- summaryButtonText: z50.string()
33830
+ eventRegistrationDisplaySchema = z51.object({
33831
+ kind: z51.literal("event-registration"),
33832
+ state: z51.literal("generic-shell"),
33833
+ className: z51.string().nullable(),
33834
+ titleText: z51.string(),
33835
+ bodyText: z51.string(),
33836
+ stepLabels: z51.array(z51.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
33837
+ summaryButtonText: z51.string()
33498
33838
  });
33499
- eventRegistrationHydrationSchema = z50.object({
33839
+ eventRegistrationHydrationSchema = z51.object({
33500
33840
  occurrenceContext: occurrenceContextSchema.optional(),
33501
33841
  contentEntry: contentEntrySchema.nullable().optional(),
33502
- events: z50.array(eventRegistrationPublicEventSchema).nullable().optional(),
33503
- maxTickets: z50.string().optional(),
33504
- showVenue: z50.boolean().optional(),
33505
- showCapacity: z50.boolean().optional(),
33506
- successMessage: z50.string().optional(),
33507
- waitlistMessage: z50.string().optional(),
33842
+ events: z51.array(eventRegistrationPublicEventSchema).nullable().optional(),
33843
+ maxTickets: z51.string().optional(),
33844
+ showVenue: z51.boolean().optional(),
33845
+ showCapacity: z51.boolean().optional(),
33846
+ successMessage: z51.string().optional(),
33847
+ waitlistMessage: z51.string().optional(),
33508
33848
  buttonVariant: registrationButtonVariantSchema.optional(),
33509
- overlayEnabled: z50.boolean().optional(),
33510
- spamProtectionEnabled: z50.boolean().optional(),
33511
- supportEmail: z50.string().optional(),
33849
+ overlayEnabled: z51.boolean().optional(),
33850
+ spamProtectionEnabled: z51.boolean().optional(),
33851
+ supportEmail: z51.string().optional(),
33512
33852
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
33513
33853
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
33514
33854
  });
33515
- eventRegistrationRenderSchema = z50.object({
33855
+ eventRegistrationRenderSchema = z51.object({
33516
33856
  display: eventRegistrationDisplaySchema,
33517
33857
  hydration: eventRegistrationHydrationSchema
33518
33858
  });
33519
- eventRegistrationIslandMetaCodec = createZodCodec(z50.object({
33520
- siteId: z50.string().optional(),
33521
- apiBaseUrl: z50.string().optional(),
33522
- portalToken: z50.string().nullable().optional(),
33523
- previewToken: z50.string().nullable().optional(),
33859
+ eventRegistrationIslandMetaCodec = createZodCodec(z51.object({
33860
+ siteId: z51.string().optional(),
33861
+ apiBaseUrl: z51.string().optional(),
33862
+ portalToken: z51.string().nullable().optional(),
33863
+ previewToken: z51.string().nullable().optional(),
33524
33864
  stage: previewStageSchema.optional()
33525
33865
  }));
33526
33866
  eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -33824,7 +34164,7 @@ var init_shared4 = __esm({
33824
34164
  });
33825
34165
 
33826
34166
  // ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
33827
- import { z as z51 } from "zod";
34167
+ import { z as z52 } from "zod";
33828
34168
  function buildCourseRegistrationDisplay(source) {
33829
34169
  return {
33830
34170
  kind: "course-registration",
@@ -33842,72 +34182,72 @@ var init_course_registration_interactive = __esm({
33842
34182
  init_islands();
33843
34183
  init_runtime();
33844
34184
  init_contract_schemas();
33845
- contentEntrySchema2 = z51.object({
33846
- id: z51.string(),
33847
- slug: z51.string(),
33848
- contentTypeSlug: z51.string()
33849
- });
33850
- courseEntrySubrouteContextSchema = z51.union([
33851
- z51.object({
33852
- kind: z51.literal("course-run"),
33853
- run: z51.object({
33854
- courseId: z51.string(),
33855
- seriesId: z51.string(),
33856
- runSlug: z51.string(),
33857
- runName: z51.string().nullable()
34185
+ contentEntrySchema2 = z52.object({
34186
+ id: z52.string(),
34187
+ slug: z52.string(),
34188
+ contentTypeSlug: z52.string()
34189
+ });
34190
+ courseEntrySubrouteContextSchema = z52.union([
34191
+ z52.object({
34192
+ kind: z52.literal("course-run"),
34193
+ run: z52.object({
34194
+ courseId: z52.string(),
34195
+ seriesId: z52.string(),
34196
+ runSlug: z52.string(),
34197
+ runName: z52.string().nullable()
33858
34198
  })
33859
34199
  }),
33860
- z51.object({
33861
- kind: z51.literal("event-occurrence"),
34200
+ z52.object({
34201
+ kind: z52.literal("event-occurrence"),
33862
34202
  occurrence: occurrenceContextSchema
33863
34203
  })
33864
34204
  ]);
33865
- courseRegistrationSourceSchema = z51.object({
33866
- siteId: z51.string().optional(),
33867
- apiBaseUrl: z51.string().optional(),
33868
- portalToken: z51.string().nullable().optional(),
34205
+ courseRegistrationSourceSchema = z52.object({
34206
+ siteId: z52.string().optional(),
34207
+ apiBaseUrl: z52.string().optional(),
34208
+ portalToken: z52.string().nullable().optional(),
33869
34209
  contentEntry: contentEntrySchema2.nullable().optional(),
33870
34210
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
33871
- courses: z51.array(publicCourseSchema).nullable().optional(),
33872
- className: z51.string().nullable().optional(),
33873
- showSessions: z51.boolean().optional(),
33874
- showPrice: z51.boolean().optional(),
33875
- showCapacity: z51.boolean().optional(),
33876
- showVenue: z51.boolean().optional(),
33877
- successMessage: z51.string().optional(),
33878
- waitlistMessage: z51.string().optional(),
33879
- membershipMessage: z51.string().optional(),
33880
- buttonText: z51.string().nullable().optional(),
34211
+ courses: z52.array(publicCourseSchema).nullable().optional(),
34212
+ className: z52.string().nullable().optional(),
34213
+ showSessions: z52.boolean().optional(),
34214
+ showPrice: z52.boolean().optional(),
34215
+ showCapacity: z52.boolean().optional(),
34216
+ showVenue: z52.boolean().optional(),
34217
+ successMessage: z52.string().optional(),
34218
+ waitlistMessage: z52.string().optional(),
34219
+ membershipMessage: z52.string().optional(),
34220
+ buttonText: z52.string().nullable().optional(),
33881
34221
  buttonVariant: registrationButtonVariantSchema.optional(),
33882
34222
  stage: previewStageSchema.optional()
33883
34223
  });
33884
- courseRegistrationDisplaySchema = z51.object({
33885
- kind: z51.literal("course-registration"),
33886
- state: z51.literal("shell"),
33887
- className: z51.string().nullable(),
33888
- summaryButtonText: z51.string()
34224
+ courseRegistrationDisplaySchema = z52.object({
34225
+ kind: z52.literal("course-registration"),
34226
+ state: z52.literal("shell"),
34227
+ className: z52.string().nullable(),
34228
+ summaryButtonText: z52.string()
33889
34229
  });
33890
- courseRegistrationHydrationSchema = z51.object({
34230
+ courseRegistrationHydrationSchema = z52.object({
33891
34231
  contentEntry: contentEntrySchema2.nullable().optional(),
33892
34232
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
33893
- courses: z51.array(publicCourseSchema).nullable().optional(),
33894
- showSessions: z51.boolean().optional(),
33895
- showPrice: z51.boolean().optional(),
33896
- showCapacity: z51.boolean().optional(),
33897
- showVenue: z51.boolean().optional(),
33898
- successMessage: z51.string().optional(),
33899
- waitlistMessage: z51.string().optional(),
33900
- membershipMessage: z51.string().optional(),
34233
+ courses: z52.array(publicCourseSchema).nullable().optional(),
34234
+ showSessions: z52.boolean().optional(),
34235
+ showPrice: z52.boolean().optional(),
34236
+ showCapacity: z52.boolean().optional(),
34237
+ showVenue: z52.boolean().optional(),
34238
+ successMessage: z52.string().optional(),
34239
+ waitlistMessage: z52.string().optional(),
34240
+ membershipMessage: z52.string().optional(),
33901
34241
  buttonVariant: registrationButtonVariantSchema.optional()
33902
34242
  });
33903
- courseRegistrationRenderSchema = z51.object({
34243
+ courseRegistrationRenderSchema = z52.object({
33904
34244
  display: courseRegistrationDisplaySchema,
33905
34245
  hydration: courseRegistrationHydrationSchema
33906
34246
  });
33907
- courseRegistrationIslandMetaCodec = createZodCodec(z51.object({
33908
- siteId: z51.string().optional(),
33909
- apiBaseUrl: z51.string().optional(),
33910
- portalToken: z51.string().nullable().optional(),
34247
+ courseRegistrationIslandMetaCodec = createZodCodec(z52.object({
34248
+ siteId: z52.string().optional(),
34249
+ apiBaseUrl: z52.string().optional(),
34250
+ portalToken: z52.string().nullable().optional(),
33911
34251
  stage: previewStageSchema.optional()
33912
34252
  }));
33913
34253
  courseRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -34175,7 +34515,7 @@ var init_course_registration = __esm({
34175
34515
  });
34176
34516
 
34177
34517
  // ../blocks/src/system/blocks/event-details.ts
34178
- import { z as z52 } from "zod";
34518
+ import { z as z53 } from "zod";
34179
34519
  var eventDetailsManifest, occurrenceContextSchema2, eventAutoApplyDiscountPreviewBaseSchema, eventAutoApplyDiscountPreviewSchema, eventDetailsBlockDefinition;
34180
34520
  var init_event_details = __esm({
34181
34521
  "../blocks/src/system/blocks/event-details.ts"() {
@@ -34318,37 +34658,37 @@ var init_event_details = __esm({
34318
34658
  })
34319
34659
  ]
34320
34660
  });
34321
- occurrenceContextSchema2 = z52.object({
34322
- id: z52.string(),
34323
- seriesId: z52.string(),
34324
- startsAt: z52.string(),
34325
- endsAt: z52.string(),
34326
- timeZone: z52.string(),
34327
- capacityOverride: z52.number().nullable().optional(),
34328
- overrides: z52.record(z52.string(), z52.unknown()).nullable().optional()
34661
+ occurrenceContextSchema2 = z53.object({
34662
+ id: z53.string(),
34663
+ seriesId: z53.string(),
34664
+ startsAt: z53.string(),
34665
+ endsAt: z53.string(),
34666
+ timeZone: z53.string(),
34667
+ capacityOverride: z53.number().nullable().optional(),
34668
+ overrides: z53.record(z53.string(), z53.unknown()).nullable().optional()
34329
34669
  }).nullable();
34330
- eventAutoApplyDiscountPreviewBaseSchema = z52.object({
34331
- id: z52.string(),
34332
- publicLabel: z52.string(),
34333
- description: z52.string().nullable(),
34334
- minTicketsRequired: z52.number().nullable()
34670
+ eventAutoApplyDiscountPreviewBaseSchema = z53.object({
34671
+ id: z53.string(),
34672
+ publicLabel: z53.string(),
34673
+ description: z53.string().nullable(),
34674
+ minTicketsRequired: z53.number().nullable()
34335
34675
  });
34336
- eventAutoApplyDiscountPreviewSchema = z52.discriminatedUnion("discountType", [
34676
+ eventAutoApplyDiscountPreviewSchema = z53.discriminatedUnion("discountType", [
34337
34677
  eventAutoApplyDiscountPreviewBaseSchema.extend({
34338
- discountType: z52.literal("percent"),
34339
- discountPercent: z52.number(),
34340
- discountAmountCents: z52.null()
34678
+ discountType: z53.literal("percent"),
34679
+ discountPercent: z53.number(),
34680
+ discountAmountCents: z53.null()
34341
34681
  }),
34342
34682
  eventAutoApplyDiscountPreviewBaseSchema.extend({
34343
- discountType: z52.literal("fixed"),
34344
- discountPercent: z52.null(),
34345
- discountAmountCents: z52.number()
34683
+ discountType: z53.literal("fixed"),
34684
+ discountPercent: z53.null(),
34685
+ discountAmountCents: z53.number()
34346
34686
  })
34347
34687
  ]);
34348
34688
  eventDetailsBlockDefinition = {
34349
34689
  manifest: eventDetailsManifest,
34350
34690
  dataSchemas: {
34351
- eventDetailsData: z52.object({
34691
+ eventDetailsData: z53.object({
34352
34692
  events: publicEventsArraySchema,
34353
34693
  sitePasses: publicPassProductCollectionSchema,
34354
34694
  siteMemberships: publicMembershipProductCollectionSchema,
@@ -34571,7 +34911,6 @@ var init_event_spotlight = __esm({
34571
34911
  "../blocks/src/system/blocks/events/event-spotlight.ts"() {
34572
34912
  "use strict";
34573
34913
  init_builder2();
34574
- init_builder2();
34575
34914
  init_styledSection();
34576
34915
  init_fragments();
34577
34916
  init_boxStyles();
@@ -34627,18 +34966,7 @@ var init_event_spotlight = __esm({
34627
34966
  eventSpotlightLayout = [
34628
34967
  styledSection({
34629
34968
  children: sectionContainer([
34630
- // Optional heading
34631
- text(
34632
- { as: "h2" },
34633
- bind("content.heading"),
34634
- when("content.heading")
34635
- ),
34636
- // Optional description
34637
- richText(
34638
- { className: "rb-prose rb-max-w-none" },
34639
- bind("content.description"),
34640
- when("content.description")
34641
- ),
34969
+ ...eventSectionHeaderLayoutNodes(),
34642
34970
  // Event spotlight component
34643
34971
  el("event-spotlight", {
34644
34972
  events: { $bind: { from: "data.events" } },
@@ -34835,7 +35163,7 @@ var init_shared5 = __esm({
34835
35163
  });
34836
35164
 
34837
35165
  // ../blocks/src/system/runtime/nodes/events/shared/listOptions.ts
34838
- import { z as z53 } from "zod";
35166
+ import { z as z54 } from "zod";
34839
35167
  function resolveEventPageSize(value, fallback = 12) {
34840
35168
  const candidate = typeof value === "number" ? value : typeof value === "string" && value.trim() !== "" ? Number(value.trim()) : null;
34841
35169
  return candidate != null && Number.isInteger(candidate) && eventPageSizeSet.has(candidate) ? candidate : fallback;
@@ -34856,32 +35184,32 @@ var init_listOptions = __esm({
34856
35184
  "../blocks/src/system/runtime/nodes/events/shared/listOptions.ts"() {
34857
35185
  "use strict";
34858
35186
  eventPageSizeValues = [3, 6, 10, 12, 20, 24, 30];
34859
- eventPageSizeSchema = z53.union([
34860
- z53.literal(3),
34861
- z53.literal(6),
34862
- z53.literal(10),
34863
- z53.literal(12),
34864
- z53.literal(20),
34865
- z53.literal(24),
34866
- z53.literal(30)
35187
+ eventPageSizeSchema = z54.union([
35188
+ z54.literal(3),
35189
+ z54.literal(6),
35190
+ z54.literal(10),
35191
+ z54.literal(12),
35192
+ z54.literal(20),
35193
+ z54.literal(24),
35194
+ z54.literal(30)
34867
35195
  ]);
34868
35196
  eventPageSizeSet = new Set(eventPageSizeValues);
34869
- eventListPaginationActionSchema = z53.discriminatedUnion("kind", [
34870
- z53.object({
34871
- kind: z53.literal("loadMore"),
34872
- label: z53.string()
35197
+ eventListPaginationActionSchema = z54.discriminatedUnion("kind", [
35198
+ z54.object({
35199
+ kind: z54.literal("loadMore"),
35200
+ label: z54.string()
34873
35201
  }),
34874
- z53.object({
34875
- kind: z53.literal("seeAllLink"),
34876
- label: z53.string(),
34877
- href: z53.string()
35202
+ z54.object({
35203
+ kind: z54.literal("seeAllLink"),
35204
+ label: z54.string(),
35205
+ href: z54.string()
34878
35206
  })
34879
35207
  ]);
34880
35208
  }
34881
35209
  });
34882
35210
 
34883
35211
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
34884
- import { z as z54 } from "zod";
35212
+ import { z as z55 } from "zod";
34885
35213
  var legacyEventCardVariantSchema, eventCardVariantInputSchema, cardOrientationSchema, eventBlockKindSchema, eventSurfaceScopeSchema, eventScheduleScopeSchema2, eventListingSourceSchema, eventListingDisplaySchema, eventListingHydrationSchema, eventListingRenderSchema, eventListingIslandMetaCodec, eventListingBlockRuntime, eventListingIslandMetaKeys, eventListingInteractiveIslandPropsCodec;
34886
35214
  var init_EventListing_interactive = __esm({
34887
35215
  "../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts"() {
@@ -34894,89 +35222,89 @@ var init_EventListing_interactive = __esm({
34894
35222
  init_shared5();
34895
35223
  init_contract_schemas();
34896
35224
  init_listOptions();
34897
- legacyEventCardVariantSchema = z54.enum(["variant1", "variant2"]);
34898
- eventCardVariantInputSchema = z54.union([
35225
+ legacyEventCardVariantSchema = z55.enum(["variant1", "variant2"]);
35226
+ eventCardVariantInputSchema = z55.union([
34899
35227
  cardVariantRoleSchema,
34900
35228
  legacyEventCardVariantSchema
34901
35229
  ]);
34902
- cardOrientationSchema = z54.enum(["vertical", "horizontal"]);
34903
- eventBlockKindSchema = z54.enum(eventBlockKindValues);
34904
- eventSurfaceScopeSchema = z54.enum(eventSurfaceScopeValues);
34905
- eventScheduleScopeSchema2 = z54.enum(eventScheduleScopeValues);
34906
- eventListingSourceSchema = z54.object({
34907
- events: z54.array(publicEventSchema).nullable().optional(),
34908
- siteId: z54.string(),
34909
- apiBaseUrl: z54.string().optional(),
35230
+ cardOrientationSchema = z55.enum(["vertical", "horizontal"]);
35231
+ eventBlockKindSchema = z55.enum(eventBlockKindValues);
35232
+ eventSurfaceScopeSchema = z55.enum(eventSurfaceScopeValues);
35233
+ eventScheduleScopeSchema2 = z55.enum(eventScheduleScopeValues);
35234
+ eventListingSourceSchema = z55.object({
35235
+ events: z55.array(publicEventSchema).nullable().optional(),
35236
+ siteId: z55.string(),
35237
+ apiBaseUrl: z55.string().optional(),
34910
35238
  stage: previewStageSchema.optional(),
34911
35239
  layout: eventLayoutSchema.optional(),
34912
35240
  columns: columnOptionSchema.optional(),
34913
- eventsPerPage: z54.string().optional(),
34914
- paginationMode: z54.enum(["loadMore", "seeAllLink"]).optional(),
34915
- seeAllUrl: z54.string().optional(),
34916
- loadMoreText: z54.string().optional(),
35241
+ eventsPerPage: z55.string().optional(),
35242
+ paginationMode: z55.enum(["loadMore", "seeAllLink"]).optional(),
35243
+ seeAllUrl: z55.string().optional(),
35244
+ loadMoreText: z55.string().optional(),
34917
35245
  cardVariant: eventCardVariantInputSchema.optional(),
34918
35246
  buttonVariant: eventButtonVariantSchema.optional(),
34919
- buttonText: z54.string().optional(),
34920
- showVenue: z54.boolean().optional(),
34921
- showMap: z54.boolean().optional(),
34922
- showCapacity: z54.boolean().optional(),
34923
- emptyMessage: z54.string().optional(),
34924
- className: z54.string().optional(),
34925
- showFilters: z54.boolean().nullable().optional(),
35247
+ buttonText: z55.string().optional(),
35248
+ showVenue: z55.boolean().optional(),
35249
+ showMap: z55.boolean().optional(),
35250
+ showCapacity: z55.boolean().optional(),
35251
+ emptyMessage: z55.string().optional(),
35252
+ className: z55.string().optional(),
35253
+ showFilters: z55.boolean().nullable().optional(),
34926
35254
  showCategoryFilter: filterAutoShowSchema.optional(),
34927
- showVenueFilter: z54.boolean().nullable().optional(),
34928
- showStaffFilter: z54.boolean().nullable().optional(),
35255
+ showVenueFilter: z55.boolean().nullable().optional(),
35256
+ showStaffFilter: z55.boolean().nullable().optional(),
34929
35257
  eventKind: eventBlockKindSchema.nullable().optional(),
34930
35258
  eventSurface: eventSurfaceScopeSchema.nullable().optional(),
34931
- filterEventPresets: z54.union([z54.string(), z54.array(z54.string())]).nullable().optional(),
35259
+ filterEventPresets: z55.union([z55.string(), z55.array(z55.string())]).nullable().optional(),
34932
35260
  scheduleScope: eventScheduleScopeSchema2.nullable().optional(),
34933
- filterCategoryIds: z54.string().nullable().optional(),
34934
- filterStaffMemberId: z54.string().nullable().optional(),
34935
- filterVenueId: z54.string().nullable().optional()
35261
+ filterCategoryIds: z55.string().nullable().optional(),
35262
+ filterStaffMemberId: z55.string().nullable().optional(),
35263
+ filterVenueId: z55.string().nullable().optional()
34936
35264
  });
34937
- eventListingDisplaySchema = z54.object({
34938
- kind: z54.literal("event-listing"),
34939
- state: z54.enum(["loading", "empty", "ready"]),
35265
+ eventListingDisplaySchema = z55.object({
35266
+ kind: z55.literal("event-listing"),
35267
+ state: z55.enum(["loading", "empty", "ready"]),
34940
35268
  listLayout: eventLayoutSchema,
34941
- className: z54.string().nullable(),
34942
- emptyMessage: z54.string(),
34943
- loadingMessage: z54.string(),
34944
- containerClass: z54.string(),
35269
+ className: z55.string().nullable(),
35270
+ emptyMessage: z55.string(),
35271
+ loadingMessage: z55.string(),
35272
+ containerClass: z55.string(),
34945
35273
  cardVariant: cardVariantRoleSchema,
34946
35274
  buttonVariant: eventButtonVariantSchema,
34947
- buttonText: z54.string(),
34948
- showVenue: z54.boolean(),
34949
- showMap: z54.boolean(),
34950
- showCapacity: z54.boolean(),
35275
+ buttonText: z55.string(),
35276
+ showVenue: z55.boolean(),
35277
+ showMap: z55.boolean(),
35278
+ showCapacity: z55.boolean(),
34951
35279
  orientation: cardOrientationSchema,
34952
- events: z54.array(publicEventSchema)
35280
+ events: z55.array(publicEventSchema)
34953
35281
  });
34954
- eventListingHydrationSchema = z54.object({
34955
- siteId: z54.string(),
35282
+ eventListingHydrationSchema = z55.object({
35283
+ siteId: z55.string(),
34956
35284
  stage: previewStageSchema.optional(),
34957
35285
  eventsPerPage: eventPageSizeSchema,
34958
35286
  paginationAction: eventListPaginationActionSchema,
34959
- showFilters: z54.boolean(),
35287
+ showFilters: z55.boolean(),
34960
35288
  showCategoryFilter: filterAutoShowSchema,
34961
- showVenueFilter: z54.boolean(),
34962
- showStaffFilter: z54.boolean(),
35289
+ showVenueFilter: z55.boolean(),
35290
+ showStaffFilter: z55.boolean(),
34963
35291
  eventKind: eventBlockKindSchema,
34964
35292
  eventSurface: eventSurfaceScopeSchema,
34965
- filterEventPresets: z54.string().nullable(),
35293
+ filterEventPresets: z55.string().nullable(),
34966
35294
  scheduleScope: eventScheduleScopeSchema2,
34967
- filterCategoryIds: z54.string().nullable().optional(),
34968
- filterStaffMemberId: z54.string().nullable().optional(),
34969
- filterVenueId: z54.string().nullable().optional(),
34970
- fetchInitialEventsOnMount: z54.boolean()
35295
+ filterCategoryIds: z55.string().nullable().optional(),
35296
+ filterStaffMemberId: z55.string().nullable().optional(),
35297
+ filterVenueId: z55.string().nullable().optional(),
35298
+ fetchInitialEventsOnMount: z55.boolean()
34971
35299
  });
34972
- eventListingRenderSchema = z54.object({
35300
+ eventListingRenderSchema = z55.object({
34973
35301
  display: eventListingDisplaySchema,
34974
35302
  hydration: eventListingHydrationSchema
34975
35303
  });
34976
35304
  eventListingIslandMetaCodec = createZodCodec(
34977
- z54.object({
34978
- siteId: z54.string(),
34979
- apiBaseUrl: z54.string().optional(),
35305
+ z55.object({
35306
+ siteId: z55.string(),
35307
+ apiBaseUrl: z55.string().optional(),
34980
35308
  stage: previewStageSchema.optional()
34981
35309
  })
34982
35310
  );
@@ -35066,7 +35394,6 @@ var init_event_listing = __esm({
35066
35394
  "../blocks/src/system/blocks/events/event-listing.ts"() {
35067
35395
  "use strict";
35068
35396
  init_builder2();
35069
- init_builder2();
35070
35397
  init_styledSection();
35071
35398
  init_fragments();
35072
35399
  init_boxStyles();
@@ -35231,18 +35558,7 @@ var init_event_listing = __esm({
35231
35558
  eventListingLayout = [
35232
35559
  styledSection({
35233
35560
  children: sectionContainer([
35234
- // Optional heading
35235
- text(
35236
- { as: "h2" },
35237
- bind("content.heading"),
35238
- when("content.heading")
35239
- ),
35240
- // Optional description
35241
- richText(
35242
- { className: "rb-prose rb-max-w-none" },
35243
- bind("content.description"),
35244
- when("content.description")
35245
- ),
35561
+ ...eventSectionHeaderLayoutNodes(),
35246
35562
  // Event listing component with pagination
35247
35563
  el("event-listing", withApiBindings({
35248
35564
  events: { $bind: { from: "data.events" } },
@@ -35360,7 +35676,7 @@ var init_event_listing = __esm({
35360
35676
  });
35361
35677
 
35362
35678
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
35363
- import { z as z55 } from "zod";
35679
+ import { z as z56 } from "zod";
35364
35680
  function buildEventCalendarDisplay(source) {
35365
35681
  const listLayout = source.listLayout ?? source.layout ?? "stack";
35366
35682
  return {
@@ -35414,14 +35730,14 @@ var init_EventCalendar_interactive = __esm({
35414
35730
  init_runtime();
35415
35731
  init_contract_schemas();
35416
35732
  init_listOptions();
35417
- eventBlockKindSchema2 = z55.enum(eventBlockKindValues);
35418
- eventSurfaceScopeSchema2 = z55.enum(eventSurfaceScopeValues);
35419
- eventScheduleScopeSchema3 = z55.enum(eventScheduleScopeValues);
35420
- eventCalendarSourceSchema = z55.object(
35733
+ eventBlockKindSchema2 = z56.enum(eventBlockKindValues);
35734
+ eventSurfaceScopeSchema2 = z56.enum(eventSurfaceScopeValues);
35735
+ eventScheduleScopeSchema3 = z56.enum(eventScheduleScopeValues);
35736
+ eventCalendarSourceSchema = z56.object(
35421
35737
  {
35422
- events: z55.array(publicEventSchema).nullable().optional(),
35423
- siteId: z55.string(),
35424
- apiBaseUrl: z55.string().optional(),
35738
+ events: z56.array(publicEventSchema).nullable().optional(),
35739
+ siteId: z56.string(),
35740
+ apiBaseUrl: z56.string().optional(),
35425
35741
  stage: previewStageSchema.optional(),
35426
35742
  variant: eventCalendarDisplayModeSchema.nullable().optional(),
35427
35743
  displayMode: eventCalendarDisplayModeSchema.nullable().optional(),
@@ -35429,38 +35745,38 @@ var init_EventCalendar_interactive = __esm({
35429
35745
  listColumns: columnOptionSchema.optional(),
35430
35746
  layout: eventLayoutSchema.optional(),
35431
35747
  columns: columnOptionSchema.optional(),
35432
- eventsPerPage: z55.string().optional(),
35433
- paginationMode: z55.enum(["loadMore", "seeAllLink"]).optional(),
35434
- seeAllUrl: z55.string().optional(),
35435
- loadMoreText: z55.string().optional(),
35748
+ eventsPerPage: z56.string().optional(),
35749
+ paginationMode: z56.enum(["loadMore", "seeAllLink"]).optional(),
35750
+ seeAllUrl: z56.string().optional(),
35751
+ loadMoreText: z56.string().optional(),
35436
35752
  startOfWeek: weekStartSchema.optional(),
35437
35753
  calendarTabViews: calendarTabViewsSchema.optional(),
35438
35754
  defaultCalendarView: eventCalendarDefaultViewSchema.optional(),
35439
- showFilters: z55.boolean().nullable().optional(),
35755
+ showFilters: z56.boolean().nullable().optional(),
35440
35756
  showCategoryFilter: filterAutoShowSchema.optional(),
35441
- showVenueFilter: z55.boolean().nullable().optional(),
35442
- showStaffFilter: z55.boolean().nullable().optional(),
35757
+ showVenueFilter: z56.boolean().nullable().optional(),
35758
+ showStaffFilter: z56.boolean().nullable().optional(),
35443
35759
  kind: eventBlockKindSchema2.nullable().optional(),
35444
35760
  eventSurface: eventSurfaceScopeSchema2.nullable().optional(),
35445
- filterEventPresets: z55.union([z55.string(), z55.array(z55.string())]).nullable().optional(),
35761
+ filterEventPresets: z56.union([z56.string(), z56.array(z56.string())]).nullable().optional(),
35446
35762
  scheduleScope: eventScheduleScopeSchema3.nullable().optional(),
35447
- filterCategoryIds: z55.union([z55.string(), z55.array(z55.string())]).nullable().optional(),
35448
- filterStaffMemberId: z55.string().nullable().optional(),
35449
- filterVenueId: z55.string().nullable().optional(),
35763
+ filterCategoryIds: z56.union([z56.string(), z56.array(z56.string())]).nullable().optional(),
35764
+ filterStaffMemberId: z56.string().nullable().optional(),
35765
+ filterVenueId: z56.string().nullable().optional(),
35450
35766
  buttonVariant: eventButtonVariantSchema.optional(),
35451
- buttonText: z55.string().optional(),
35452
- showVenue: z55.boolean().nullable().optional(),
35453
- showMap: z55.boolean().nullable().optional(),
35454
- showCapacity: z55.boolean().nullable().optional(),
35455
- emptyMessage: z55.string().optional(),
35456
- className: z55.string().optional()
35767
+ buttonText: z56.string().optional(),
35768
+ showVenue: z56.boolean().nullable().optional(),
35769
+ showMap: z56.boolean().nullable().optional(),
35770
+ showCapacity: z56.boolean().nullable().optional(),
35771
+ emptyMessage: z56.string().optional(),
35772
+ className: z56.string().optional()
35457
35773
  }
35458
35774
  );
35459
- eventCalendarDisplaySchema = z55.object({
35460
- kind: z55.literal("event-calendar"),
35775
+ eventCalendarDisplaySchema = z56.object({
35776
+ kind: z56.literal("event-calendar"),
35461
35777
  displayMode: eventCalendarDisplayModeSchema,
35462
- className: z55.string().nullable(),
35463
- events: z55.array(publicEventSchema),
35778
+ className: z56.string().nullable(),
35779
+ events: z56.array(publicEventSchema),
35464
35780
  listLayout: eventLayoutSchema,
35465
35781
  listColumns: columnOptionSchema,
35466
35782
  eventsPerPage: eventPageSizeSchema,
@@ -35468,41 +35784,41 @@ var init_EventCalendar_interactive = __esm({
35468
35784
  startOfWeek: weekStartSchema,
35469
35785
  calendarTabViews: calendarTabViewsSchema,
35470
35786
  defaultCalendarView: eventCalendarDefaultViewSchema,
35471
- showFilters: z55.boolean(),
35787
+ showFilters: z56.boolean(),
35472
35788
  showCategoryFilter: filterAutoShowSchema,
35473
- showVenueFilter: z55.boolean(),
35474
- showStaffFilter: z55.boolean(),
35789
+ showVenueFilter: z56.boolean(),
35790
+ showStaffFilter: z56.boolean(),
35475
35791
  eventKind: eventBlockKindSchema2,
35476
35792
  eventSurface: eventSurfaceScopeSchema2,
35477
- filterEventPresets: z55.string().nullable(),
35793
+ filterEventPresets: z56.string().nullable(),
35478
35794
  scheduleScope: eventScheduleScopeSchema3,
35479
- filterCategoryIds: z55.string().nullable(),
35480
- filterStaffMemberId: z55.string().nullable(),
35481
- filterVenueId: z55.string().nullable(),
35795
+ filterCategoryIds: z56.string().nullable(),
35796
+ filterStaffMemberId: z56.string().nullable(),
35797
+ filterVenueId: z56.string().nullable(),
35482
35798
  buttonVariant: eventButtonVariantSchema,
35483
- buttonText: z55.string(),
35484
- showVenue: z55.boolean(),
35485
- showMap: z55.boolean(),
35486
- showCapacity: z55.boolean(),
35487
- emptyMessage: z55.string()
35488
- });
35489
- eventCalendarHydrationSchema = z55.object({
35490
- siteId: z55.string(),
35799
+ buttonText: z56.string(),
35800
+ showVenue: z56.boolean(),
35801
+ showMap: z56.boolean(),
35802
+ showCapacity: z56.boolean(),
35803
+ emptyMessage: z56.string()
35804
+ });
35805
+ eventCalendarHydrationSchema = z56.object({
35806
+ siteId: z56.string(),
35491
35807
  stage: previewStageSchema.optional(),
35492
- prefetchedEvents: z55.boolean(),
35808
+ prefetchedEvents: z56.boolean(),
35493
35809
  eventKind: eventBlockKindSchema2,
35494
35810
  eventSurface: eventSurfaceScopeSchema2,
35495
- filterEventPresets: z55.string().nullable(),
35811
+ filterEventPresets: z56.string().nullable(),
35496
35812
  scheduleScope: eventScheduleScopeSchema3
35497
35813
  });
35498
- eventCalendarRenderSchema = z55.object({
35814
+ eventCalendarRenderSchema = z56.object({
35499
35815
  display: eventCalendarDisplaySchema,
35500
35816
  hydration: eventCalendarHydrationSchema
35501
35817
  });
35502
35818
  eventCalendarIslandMetaCodec = createZodCodec(
35503
- z55.object({
35504
- siteId: z55.string(),
35505
- apiBaseUrl: z55.string().optional(),
35819
+ z56.object({
35820
+ siteId: z56.string(),
35821
+ apiBaseUrl: z56.string().optional(),
35506
35822
  stage: previewStageSchema.optional()
35507
35823
  })
35508
35824
  );
@@ -35583,7 +35899,6 @@ var init_event_calendar = __esm({
35583
35899
  "use strict";
35584
35900
  init_schema2();
35585
35901
  init_builder2();
35586
- init_builder2();
35587
35902
  init_styledSection();
35588
35903
  init_fragments();
35589
35904
  init_boxStyles();
@@ -35596,14 +35911,7 @@ var init_event_calendar = __esm({
35596
35911
  styledSection({
35597
35912
  children: sectionContainer(
35598
35913
  [
35599
- // Optional heading
35600
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
35601
- // Optional description
35602
- richText(
35603
- { className: "rb-prose rb-max-w-none" },
35604
- bind("content.description"),
35605
- when("content.description")
35606
- ),
35914
+ ...eventSectionHeaderLayoutNodes(),
35607
35915
  // Event calendar component (handles all display modes)
35608
35916
  el(
35609
35917
  "event-calendar",
@@ -36356,7 +36664,7 @@ var init_model = __esm({
36356
36664
  });
36357
36665
 
36358
36666
  // ../blocks/src/system/blocks/offerings-preview/index.ts
36359
- import { z as z56 } from "zod";
36667
+ import { z as z57 } from "zod";
36360
36668
  function eventPresetLoader(preset2) {
36361
36669
  return {
36362
36670
  endpoint: "listPublicEvents",
@@ -36479,13 +36787,13 @@ var init_offerings_preview = __esm({
36479
36787
  init_shared3();
36480
36788
  init_shared4();
36481
36789
  init_model();
36482
- publicRouteCandidatesSchema = z56.object({
36483
- routes: z56.array(z56.object({
36484
- entityId: z56.string(),
36485
- path: z56.string(),
36486
- title: z56.string(),
36487
- kind: z56.enum(["page", "content"]),
36488
- contentTypeKey: z56.string().nullable().optional()
36790
+ publicRouteCandidatesSchema = z57.object({
36791
+ routes: z57.array(z57.object({
36792
+ entityId: z57.string(),
36793
+ path: z57.string(),
36794
+ title: z57.string(),
36795
+ kind: z57.enum(["page", "content"]),
36796
+ contentTypeKey: z57.string().nullable().optional()
36489
36797
  }))
36490
36798
  });
36491
36799
  groupOverrideFields = [
@@ -36775,7 +37083,7 @@ var init_offerings_preview = __esm({
36775
37083
  });
36776
37084
 
36777
37085
  // ../blocks/src/system/blocks/embed.ts
36778
- import { z as z57 } from "zod";
37086
+ import { z as z58 } from "zod";
36779
37087
  var embedFields, embedLayout2, embedManifest, embedEntrySchema, embedBlockDefinition;
36780
37088
  var init_embed = __esm({
36781
37089
  "../blocks/src/system/blocks/embed.ts"() {
@@ -37015,18 +37323,18 @@ var init_embed = __esm({
37015
37323
  spacing: "lg"
37016
37324
  }
37017
37325
  });
37018
- embedEntrySchema = z57.object({
37019
- id: z57.string(),
37020
- identifier: z57.string(),
37021
- title: z57.string(),
37022
- slug: z57.string().nullable().optional(),
37023
- content: z57.record(z57.string(), z57.unknown()).optional(),
37024
- publishedAt: z57.string().nullable().optional()
37326
+ embedEntrySchema = z58.object({
37327
+ id: z58.string(),
37328
+ identifier: z58.string(),
37329
+ title: z58.string(),
37330
+ slug: z58.string().nullable().optional(),
37331
+ content: z58.record(z58.string(), z58.unknown()).optional(),
37332
+ publishedAt: z58.string().nullable().optional()
37025
37333
  });
37026
37334
  embedBlockDefinition = {
37027
37335
  manifest: embedManifest,
37028
37336
  dataSchemas: {
37029
- entries: z57.array(embedEntrySchema).optional()
37337
+ entries: z58.array(embedEntrySchema).optional()
37030
37338
  },
37031
37339
  dataLoaders: {
37032
37340
  entries: {
@@ -38256,50 +38564,50 @@ var init_file_download = __esm({
38256
38564
  });
38257
38565
 
38258
38566
  // ../blocks/src/system/blocks/products/shared.ts
38259
- import { z as z58 } from "zod";
38567
+ import { z as z59 } from "zod";
38260
38568
  var publicProductVariantSchema, publicProductSchema, publicProductsResponseSchema;
38261
38569
  var init_shared6 = __esm({
38262
38570
  "../blocks/src/system/blocks/products/shared.ts"() {
38263
38571
  "use strict";
38264
- publicProductVariantSchema = z58.object({
38265
- id: z58.string(),
38266
- title: z58.string(),
38267
- sku: z58.string().nullable(),
38268
- priceCents: z58.number(),
38269
- stockQuantity: z58.number().nullable(),
38270
- soldOut: z58.boolean()
38271
- });
38272
- publicProductSchema = z58.object({
38273
- id: z58.string(),
38274
- contentEntryId: z58.string().nullable(),
38275
- title: z58.string(),
38276
- slug: z58.string(),
38277
- path: z58.string().nullable(),
38278
- status: z58.enum(["draft", "active"]),
38279
- priceCents: z58.number(),
38280
- currency: z58.string(),
38281
- productType: z58.enum(["physical", "digital"]),
38282
- requiresShipping: z58.boolean(),
38283
- hasVariants: z58.boolean(),
38284
- trackInventory: z58.boolean(),
38285
- soldOut: z58.boolean(),
38286
- category: z58.object({
38287
- id: z58.string(),
38288
- name: z58.string(),
38289
- slug: z58.string()
38572
+ publicProductVariantSchema = z59.object({
38573
+ id: z59.string(),
38574
+ title: z59.string(),
38575
+ sku: z59.string().nullable(),
38576
+ priceCents: z59.number(),
38577
+ stockQuantity: z59.number().nullable(),
38578
+ soldOut: z59.boolean()
38579
+ });
38580
+ publicProductSchema = z59.object({
38581
+ id: z59.string(),
38582
+ contentEntryId: z59.string().nullable(),
38583
+ title: z59.string(),
38584
+ slug: z59.string(),
38585
+ path: z59.string().nullable(),
38586
+ status: z59.enum(["draft", "active"]),
38587
+ priceCents: z59.number(),
38588
+ currency: z59.string(),
38589
+ productType: z59.enum(["physical", "digital"]),
38590
+ requiresShipping: z59.boolean(),
38591
+ hasVariants: z59.boolean(),
38592
+ trackInventory: z59.boolean(),
38593
+ soldOut: z59.boolean(),
38594
+ category: z59.object({
38595
+ id: z59.string(),
38596
+ name: z59.string(),
38597
+ slug: z59.string()
38290
38598
  }).nullable(),
38291
- summary: z58.string().nullable(),
38292
- body: z58.unknown().nullable(),
38293
- gallery: z58.array(
38294
- z58.object({
38295
- url: z58.string(),
38296
- alt: z58.string().nullable()
38599
+ summary: z59.string().nullable(),
38600
+ body: z59.unknown().nullable(),
38601
+ gallery: z59.array(
38602
+ z59.object({
38603
+ url: z59.string(),
38604
+ alt: z59.string().nullable()
38297
38605
  })
38298
38606
  ),
38299
- variants: z58.array(publicProductVariantSchema)
38607
+ variants: z59.array(publicProductVariantSchema)
38300
38608
  });
38301
- publicProductsResponseSchema = z58.object({
38302
- products: z58.array(publicProductSchema)
38609
+ publicProductsResponseSchema = z59.object({
38610
+ products: z59.array(publicProductSchema)
38303
38611
  });
38304
38612
  }
38305
38613
  });
@@ -38370,7 +38678,7 @@ var init_creditProducts = __esm({
38370
38678
  });
38371
38679
 
38372
38680
  // ../blocks/src/system/runtime/nodes/shop-commerce.shared.ts
38373
- import { z as z59 } from "zod";
38681
+ import { z as z60 } from "zod";
38374
38682
  function deriveCommerceCheckoutState(state) {
38375
38683
  if (state.items.length === 0) {
38376
38684
  return { kind: "empty" };
@@ -38409,26 +38717,26 @@ var storedProductCartItemSchema, storedPassCartItemSchema;
38409
38717
  var init_shop_commerce_shared = __esm({
38410
38718
  "../blocks/src/system/runtime/nodes/shop-commerce.shared.ts"() {
38411
38719
  "use strict";
38412
- storedProductCartItemSchema = z59.object({
38413
- kind: z59.literal("product"),
38414
- productId: z59.string().min(1),
38415
- productCategoryId: z59.string().min(1).optional().nullable(),
38416
- variantId: z59.string().min(1).optional().nullable(),
38417
- title: z59.string().min(1),
38418
- variantTitle: z59.string().optional().nullable(),
38419
- quantity: z59.number().finite(),
38420
- unitPriceCents: z59.number().finite(),
38421
- currency: z59.string().min(1),
38422
- imageUrl: z59.string().optional().nullable(),
38423
- soldOut: z59.boolean().optional()
38720
+ storedProductCartItemSchema = z60.object({
38721
+ kind: z60.literal("product"),
38722
+ productId: z60.string().min(1),
38723
+ productCategoryId: z60.string().min(1).optional().nullable(),
38724
+ variantId: z60.string().min(1).optional().nullable(),
38725
+ title: z60.string().min(1),
38726
+ variantTitle: z60.string().optional().nullable(),
38727
+ quantity: z60.number().finite(),
38728
+ unitPriceCents: z60.number().finite(),
38729
+ currency: z60.string().min(1),
38730
+ imageUrl: z60.string().optional().nullable(),
38731
+ soldOut: z60.boolean().optional()
38424
38732
  });
38425
- storedPassCartItemSchema = z59.object({
38426
- kind: z59.literal("pass"),
38427
- passId: z59.string().min(1),
38428
- title: z59.string().min(1),
38429
- quantity: z59.number().finite().optional(),
38430
- unitPriceCents: z59.number().finite(),
38431
- currency: z59.string().min(1)
38733
+ storedPassCartItemSchema = z60.object({
38734
+ kind: z60.literal("pass"),
38735
+ passId: z60.string().min(1),
38736
+ title: z60.string().min(1),
38737
+ quantity: z60.number().finite().optional(),
38738
+ unitPriceCents: z60.number().finite(),
38739
+ currency: z60.string().min(1)
38432
38740
  });
38433
38741
  }
38434
38742
  });
@@ -38638,7 +38946,7 @@ var init_display = __esm({
38638
38946
  });
38639
38947
 
38640
38948
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
38641
- import { z as z60 } from "zod";
38949
+ import { z as z61 } from "zod";
38642
38950
  function resolveShowPricePerCredit(source) {
38643
38951
  return source.showPricePerCredit ?? true;
38644
38952
  }
@@ -38666,211 +38974,211 @@ var init_shop_interactive = __esm({
38666
38974
  init_islands();
38667
38975
  init_runtime();
38668
38976
  init_contract_schemas();
38669
- shopModeSchema = z60.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
38670
- contentEntrySchema3 = z60.object({
38671
- id: z60.string().nullable().optional(),
38672
- slug: z60.string().nullable().optional()
38977
+ shopModeSchema = z61.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
38978
+ contentEntrySchema3 = z61.object({
38979
+ id: z61.string().nullable().optional(),
38980
+ slug: z61.string().nullable().optional()
38673
38981
  }).nullable();
38674
- shopSourceSchema = z60.object({
38675
- className: z60.string().nullable().optional(),
38982
+ shopSourceSchema = z61.object({
38983
+ className: z61.string().nullable().optional(),
38676
38984
  mode: shopModeSchema.optional(),
38677
- heading: z60.string().nullable().optional(),
38678
- productSlug: z60.string().nullable().optional(),
38679
- showPasses: z60.boolean().optional(),
38680
- showMemberships: z60.boolean().optional(),
38681
- layout: z60.enum(["grid", "list"]).optional(),
38682
- columns: z60.string().optional(),
38683
- showDescriptions: z60.boolean().optional(),
38684
- showSummary: z60.boolean().optional(),
38685
- showBody: z60.boolean().optional(),
38686
- showPrices: z60.boolean().optional(),
38687
- showValidityPeriod: z60.boolean().optional(),
38688
- showPricePerCredit: z60.boolean().nullable().optional(),
38689
- passesHeading: z60.string().optional(),
38690
- membershipsHeading: z60.string().optional(),
38691
- buyButtonText: z60.string().optional(),
38692
- addButtonText: z60.string().optional(),
38693
- passPurchaseMode: z60.enum(["add_to_cart", "buy_now"]).optional(),
38694
- subscribeButtonText: z60.string().optional(),
38695
- emptyStateText: z60.string().optional(),
38696
- checkoutButtonText: z60.string().optional(),
38697
- clearButtonText: z60.string().optional(),
38698
- submitButtonText: z60.string().optional(),
38985
+ heading: z61.string().nullable().optional(),
38986
+ productSlug: z61.string().nullable().optional(),
38987
+ showPasses: z61.boolean().optional(),
38988
+ showMemberships: z61.boolean().optional(),
38989
+ layout: z61.enum(["grid", "list"]).optional(),
38990
+ columns: z61.string().optional(),
38991
+ showDescriptions: z61.boolean().optional(),
38992
+ showSummary: z61.boolean().optional(),
38993
+ showBody: z61.boolean().optional(),
38994
+ showPrices: z61.boolean().optional(),
38995
+ showValidityPeriod: z61.boolean().optional(),
38996
+ showPricePerCredit: z61.boolean().nullable().optional(),
38997
+ passesHeading: z61.string().optional(),
38998
+ membershipsHeading: z61.string().optional(),
38999
+ buyButtonText: z61.string().optional(),
39000
+ addButtonText: z61.string().optional(),
39001
+ passPurchaseMode: z61.enum(["add_to_cart", "buy_now"]).optional(),
39002
+ subscribeButtonText: z61.string().optional(),
39003
+ emptyStateText: z61.string().optional(),
39004
+ checkoutButtonText: z61.string().optional(),
39005
+ clearButtonText: z61.string().optional(),
39006
+ submitButtonText: z61.string().optional(),
38699
39007
  contentEntry: contentEntrySchema3.optional(),
38700
- passes: z60.array(publicPassProductSchema).nullable().optional(),
38701
- memberships: z60.array(publicMembershipProductSchema).nullable().optional(),
38702
- products: z60.array(publicProductSchema).nullable().optional(),
38703
- siteId: z60.string().optional(),
38704
- apiBaseUrl: z60.string().optional(),
39008
+ passes: z61.array(publicPassProductSchema).nullable().optional(),
39009
+ memberships: z61.array(publicMembershipProductSchema).nullable().optional(),
39010
+ products: z61.array(publicProductSchema).nullable().optional(),
39011
+ siteId: z61.string().optional(),
39012
+ apiBaseUrl: z61.string().optional(),
38705
39013
  stage: previewStageSchema.optional()
38706
39014
  });
38707
- productVariantOptionDisplaySchema = z60.object({
38708
- id: z60.string(),
38709
- label: z60.string(),
38710
- soldOut: z60.boolean()
38711
- });
38712
- productCardDisplaySchema = z60.object({
38713
- productId: z60.string(),
38714
- title: z60.string(),
38715
- path: z60.string().nullable(),
38716
- summary: z60.string().nullable(),
38717
- priceLabel: z60.string().nullable(),
38718
- image: z60.object({
38719
- url: z60.string(),
38720
- alt: z60.string().nullable()
39015
+ productVariantOptionDisplaySchema = z61.object({
39016
+ id: z61.string(),
39017
+ label: z61.string(),
39018
+ soldOut: z61.boolean()
39019
+ });
39020
+ productCardDisplaySchema = z61.object({
39021
+ productId: z61.string(),
39022
+ title: z61.string(),
39023
+ path: z61.string().nullable(),
39024
+ summary: z61.string().nullable(),
39025
+ priceLabel: z61.string().nullable(),
39026
+ image: z61.object({
39027
+ url: z61.string(),
39028
+ alt: z61.string().nullable()
38721
39029
  }).nullable(),
38722
- variantOptions: z60.array(productVariantOptionDisplaySchema),
38723
- selectedVariantId: z60.string().nullable(),
38724
- selectionLabel: z60.string(),
38725
- actionLabel: z60.string(),
38726
- soldOut: z60.boolean()
38727
- });
38728
- productListDisplaySchema = z60.object({
38729
- kind: z60.literal("product-list"),
38730
- state: z60.enum(["empty", "ready"]),
38731
- heading: z60.string().nullable(),
38732
- className: z60.string().nullable(),
38733
- layout: z60.enum(["grid", "list"]),
38734
- columns: z60.string(),
38735
- emptyMessage: z60.string(),
38736
- cards: z60.array(productCardDisplaySchema)
38737
- });
38738
- productDetailDisplaySchema = z60.discriminatedUnion("state", [
38739
- z60.object({
38740
- kind: z60.literal("product-detail"),
38741
- state: z60.literal("empty"),
38742
- heading: z60.string().nullable(),
38743
- className: z60.string().nullable(),
38744
- emptyMessage: z60.string()
39030
+ variantOptions: z61.array(productVariantOptionDisplaySchema),
39031
+ selectedVariantId: z61.string().nullable(),
39032
+ selectionLabel: z61.string(),
39033
+ actionLabel: z61.string(),
39034
+ soldOut: z61.boolean()
39035
+ });
39036
+ productListDisplaySchema = z61.object({
39037
+ kind: z61.literal("product-list"),
39038
+ state: z61.enum(["empty", "ready"]),
39039
+ heading: z61.string().nullable(),
39040
+ className: z61.string().nullable(),
39041
+ layout: z61.enum(["grid", "list"]),
39042
+ columns: z61.string(),
39043
+ emptyMessage: z61.string(),
39044
+ cards: z61.array(productCardDisplaySchema)
39045
+ });
39046
+ productDetailDisplaySchema = z61.discriminatedUnion("state", [
39047
+ z61.object({
39048
+ kind: z61.literal("product-detail"),
39049
+ state: z61.literal("empty"),
39050
+ heading: z61.string().nullable(),
39051
+ className: z61.string().nullable(),
39052
+ emptyMessage: z61.string()
38745
39053
  }),
38746
- z60.object({
38747
- kind: z60.literal("product-detail"),
38748
- state: z60.literal("ready"),
38749
- heading: z60.string().nullable(),
38750
- className: z60.string().nullable(),
38751
- title: z60.string(),
38752
- priceLabel: z60.string(),
38753
- summary: z60.string().nullable(),
38754
- categoryLabel: z60.string().nullable(),
38755
- gallery: z60.array(z60.object({
38756
- url: z60.string(),
38757
- alt: z60.string().nullable()
39054
+ z61.object({
39055
+ kind: z61.literal("product-detail"),
39056
+ state: z61.literal("ready"),
39057
+ heading: z61.string().nullable(),
39058
+ className: z61.string().nullable(),
39059
+ title: z61.string(),
39060
+ priceLabel: z61.string(),
39061
+ summary: z61.string().nullable(),
39062
+ categoryLabel: z61.string().nullable(),
39063
+ gallery: z61.array(z61.object({
39064
+ url: z61.string(),
39065
+ alt: z61.string().nullable()
38758
39066
  })),
38759
- variantOptions: z60.array(productVariantOptionDisplaySchema),
38760
- selectedVariantId: z60.string().nullable(),
38761
- selectionLabel: z60.string(),
38762
- actionLabel: z60.string(),
38763
- soldOut: z60.boolean(),
38764
- body: z60.unknown().nullable()
39067
+ variantOptions: z61.array(productVariantOptionDisplaySchema),
39068
+ selectedVariantId: z61.string().nullable(),
39069
+ selectionLabel: z61.string(),
39070
+ actionLabel: z61.string(),
39071
+ soldOut: z61.boolean(),
39072
+ body: z61.unknown().nullable()
38765
39073
  })
38766
39074
  ]);
38767
- passCardDisplaySchema = z60.object({
38768
- id: z60.string(),
38769
- title: z60.string(),
38770
- description: z60.string().nullable(),
38771
- priceLabel: z60.string(),
38772
- creditsLabel: z60.string(),
38773
- perCreditLabel: z60.string().nullable(),
38774
- validityLabel: z60.string().nullable(),
38775
- actionLabel: z60.string()
38776
- });
38777
- membershipCardDisplaySchema = z60.object({
38778
- id: z60.string(),
38779
- title: z60.string(),
38780
- description: z60.string().nullable(),
38781
- priceLabel: z60.string(),
38782
- intervalLabel: z60.string(),
38783
- actionLabel: z60.string()
38784
- });
38785
- passesMembershipsDisplaySchema = z60.object({
38786
- kind: z60.literal("passes-memberships"),
38787
- state: z60.enum(["empty", "ready"]),
38788
- className: z60.string().nullable(),
38789
- layout: z60.enum(["grid", "list"]),
38790
- columns: z60.string(),
38791
- emptyMessage: z60.string(),
38792
- passesHeading: z60.string(),
38793
- membershipsHeading: z60.string(),
38794
- passes: z60.array(passCardDisplaySchema),
38795
- memberships: z60.array(membershipCardDisplaySchema)
38796
- });
38797
- cartLineDisplaySchema = z60.object({
38798
- key: z60.string(),
38799
- title: z60.string(),
38800
- priceLabel: z60.string(),
38801
- quantity: z60.number(),
38802
- quantityEditable: z60.boolean()
38803
- });
38804
- cartDisplaySchema = z60.object({
38805
- kind: z60.literal("cart"),
38806
- state: z60.enum(["empty", "ready"]),
38807
- heading: z60.string().nullable(),
38808
- className: z60.string().nullable(),
38809
- emptyMessage: z60.string(),
38810
- supportText: z60.string().nullable(),
38811
- items: z60.array(cartLineDisplaySchema),
38812
- subtotalLabel: z60.string().nullable(),
38813
- checkoutButtonText: z60.string(),
38814
- clearButtonText: z60.string()
38815
- });
38816
- checkoutDisplaySchema = z60.object({
38817
- kind: z60.literal("checkout"),
38818
- state: z60.enum(["empty", "blocked", "ready"]),
38819
- heading: z60.string().nullable(),
38820
- className: z60.string().nullable(),
38821
- message: z60.string().nullable(),
38822
- submitButtonText: z60.string()
38823
- });
38824
- passesMembershipsHydrationSchema = z60.object({
38825
- passes: z60.array(publicPassProductSchema),
38826
- memberships: z60.array(publicMembershipProductSchema),
38827
- passPurchaseMode: z60.enum(["add_to_cart", "buy_now"])
38828
- });
38829
- productListHydrationSchema = z60.object({
38830
- products: z60.array(publicProductSchema),
38831
- showSummary: z60.boolean(),
38832
- showPrices: z60.boolean(),
38833
- addButtonText: z60.string()
38834
- });
38835
- productDetailHydrationSchema = z60.object({
38836
- products: z60.array(publicProductSchema),
38837
- productId: z60.string().nullable(),
38838
- showSummary: z60.boolean(),
38839
- showBody: z60.boolean(),
38840
- addButtonText: z60.string()
38841
- });
38842
- cartHydrationSchema = z60.object({
38843
- emptyStateText: z60.string(),
38844
- checkoutButtonText: z60.string(),
38845
- clearButtonText: z60.string()
38846
- });
38847
- checkoutHydrationSchema = z60.object({
38848
- emptyStateText: z60.string(),
38849
- submitButtonText: z60.string()
38850
- });
38851
- passesMembershipsRenderSchema = z60.object({
39075
+ passCardDisplaySchema = z61.object({
39076
+ id: z61.string(),
39077
+ title: z61.string(),
39078
+ description: z61.string().nullable(),
39079
+ priceLabel: z61.string(),
39080
+ creditsLabel: z61.string(),
39081
+ perCreditLabel: z61.string().nullable(),
39082
+ validityLabel: z61.string().nullable(),
39083
+ actionLabel: z61.string()
39084
+ });
39085
+ membershipCardDisplaySchema = z61.object({
39086
+ id: z61.string(),
39087
+ title: z61.string(),
39088
+ description: z61.string().nullable(),
39089
+ priceLabel: z61.string(),
39090
+ intervalLabel: z61.string(),
39091
+ actionLabel: z61.string()
39092
+ });
39093
+ passesMembershipsDisplaySchema = z61.object({
39094
+ kind: z61.literal("passes-memberships"),
39095
+ state: z61.enum(["empty", "ready"]),
39096
+ className: z61.string().nullable(),
39097
+ layout: z61.enum(["grid", "list"]),
39098
+ columns: z61.string(),
39099
+ emptyMessage: z61.string(),
39100
+ passesHeading: z61.string(),
39101
+ membershipsHeading: z61.string(),
39102
+ passes: z61.array(passCardDisplaySchema),
39103
+ memberships: z61.array(membershipCardDisplaySchema)
39104
+ });
39105
+ cartLineDisplaySchema = z61.object({
39106
+ key: z61.string(),
39107
+ title: z61.string(),
39108
+ priceLabel: z61.string(),
39109
+ quantity: z61.number(),
39110
+ quantityEditable: z61.boolean()
39111
+ });
39112
+ cartDisplaySchema = z61.object({
39113
+ kind: z61.literal("cart"),
39114
+ state: z61.enum(["empty", "ready"]),
39115
+ heading: z61.string().nullable(),
39116
+ className: z61.string().nullable(),
39117
+ emptyMessage: z61.string(),
39118
+ supportText: z61.string().nullable(),
39119
+ items: z61.array(cartLineDisplaySchema),
39120
+ subtotalLabel: z61.string().nullable(),
39121
+ checkoutButtonText: z61.string(),
39122
+ clearButtonText: z61.string()
39123
+ });
39124
+ checkoutDisplaySchema = z61.object({
39125
+ kind: z61.literal("checkout"),
39126
+ state: z61.enum(["empty", "blocked", "ready"]),
39127
+ heading: z61.string().nullable(),
39128
+ className: z61.string().nullable(),
39129
+ message: z61.string().nullable(),
39130
+ submitButtonText: z61.string()
39131
+ });
39132
+ passesMembershipsHydrationSchema = z61.object({
39133
+ passes: z61.array(publicPassProductSchema),
39134
+ memberships: z61.array(publicMembershipProductSchema),
39135
+ passPurchaseMode: z61.enum(["add_to_cart", "buy_now"])
39136
+ });
39137
+ productListHydrationSchema = z61.object({
39138
+ products: z61.array(publicProductSchema),
39139
+ showSummary: z61.boolean(),
39140
+ showPrices: z61.boolean(),
39141
+ addButtonText: z61.string()
39142
+ });
39143
+ productDetailHydrationSchema = z61.object({
39144
+ products: z61.array(publicProductSchema),
39145
+ productId: z61.string().nullable(),
39146
+ showSummary: z61.boolean(),
39147
+ showBody: z61.boolean(),
39148
+ addButtonText: z61.string()
39149
+ });
39150
+ cartHydrationSchema = z61.object({
39151
+ emptyStateText: z61.string(),
39152
+ checkoutButtonText: z61.string(),
39153
+ clearButtonText: z61.string()
39154
+ });
39155
+ checkoutHydrationSchema = z61.object({
39156
+ emptyStateText: z61.string(),
39157
+ submitButtonText: z61.string()
39158
+ });
39159
+ passesMembershipsRenderSchema = z61.object({
38852
39160
  display: passesMembershipsDisplaySchema,
38853
39161
  hydration: passesMembershipsHydrationSchema
38854
39162
  });
38855
- productListRenderSchema = z60.object({
39163
+ productListRenderSchema = z61.object({
38856
39164
  display: productListDisplaySchema,
38857
39165
  hydration: productListHydrationSchema
38858
39166
  });
38859
- productDetailRenderSchema = z60.object({
39167
+ productDetailRenderSchema = z61.object({
38860
39168
  display: productDetailDisplaySchema,
38861
39169
  hydration: productDetailHydrationSchema
38862
39170
  });
38863
- cartRenderSchema = z60.object({
39171
+ cartRenderSchema = z61.object({
38864
39172
  display: cartDisplaySchema,
38865
39173
  hydration: cartHydrationSchema
38866
39174
  });
38867
- checkoutRenderSchema = z60.object({
39175
+ checkoutRenderSchema = z61.object({
38868
39176
  display: checkoutDisplaySchema,
38869
39177
  hydration: checkoutHydrationSchema
38870
39178
  });
38871
- shopIslandMetaCodec = createZodCodec(z60.object({
38872
- siteId: z60.string().optional(),
38873
- apiBaseUrl: z60.string().optional(),
39179
+ shopIslandMetaCodec = createZodCodec(z61.object({
39180
+ siteId: z61.string().optional(),
39181
+ apiBaseUrl: z61.string().optional(),
38874
39182
  stage: previewStageSchema.optional()
38875
39183
  }));
38876
39184
  shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
@@ -39276,7 +39584,7 @@ var init_shop = __esm({
39276
39584
  });
39277
39585
 
39278
39586
  // ../blocks/src/system/blocks/product-list.ts
39279
- import { z as z61 } from "zod";
39587
+ import { z as z62 } from "zod";
39280
39588
  var productListManifest, productListBlockDefinition, productListDataSchema;
39281
39589
  var init_product_list = __esm({
39282
39590
  "../blocks/src/system/blocks/product-list.ts"() {
@@ -39421,7 +39729,7 @@ var init_product_list = __esm({
39421
39729
  }
39422
39730
  }
39423
39731
  };
39424
- productListDataSchema = z61.object({
39732
+ productListDataSchema = z62.object({
39425
39733
  products: publicProductsResponseSchema.optional()
39426
39734
  });
39427
39735
  }
@@ -39724,7 +40032,7 @@ var init_checkout = __esm({
39724
40032
  });
39725
40033
 
39726
40034
  // ../blocks/src/system/runtime/nodes/gifting.interactive.ts
39727
- import { z as z62 } from "zod";
40035
+ import { z as z63 } from "zod";
39728
40036
  function buildGiftingDisplay(source) {
39729
40037
  return {
39730
40038
  kind: "gifting",
@@ -39743,71 +40051,71 @@ var init_gifting_interactive = __esm({
39743
40051
  "use strict";
39744
40052
  init_islands();
39745
40053
  init_runtime();
39746
- publicGiftCardOfferSchema = z62.object({
39747
- id: z62.string(),
39748
- kind: z62.literal("gift_card"),
39749
- title: z62.string(),
39750
- description: z62.string().nullable(),
39751
- sortOrder: z62.number().int(),
39752
- giftCard: z62.object({
39753
- fixedDenominations: z62.array(z62.number().int().positive()),
39754
- customAmountEnabled: z62.boolean(),
39755
- customAmountMinCents: z62.number().int().positive(),
39756
- customAmountMaxCents: z62.number().int().positive()
40054
+ publicGiftCardOfferSchema = z63.object({
40055
+ id: z63.string(),
40056
+ kind: z63.literal("gift_card"),
40057
+ title: z63.string(),
40058
+ description: z63.string().nullable(),
40059
+ sortOrder: z63.number().int(),
40060
+ giftCard: z63.object({
40061
+ fixedDenominations: z63.array(z63.number().int().positive()),
40062
+ customAmountEnabled: z63.boolean(),
40063
+ customAmountMinCents: z63.number().int().positive(),
40064
+ customAmountMaxCents: z63.number().int().positive()
39757
40065
  }),
39758
- voucher: z62.null()
39759
- });
39760
- publicVoucherOfferSchema = z62.object({
39761
- id: z62.string(),
39762
- kind: z62.literal("voucher"),
39763
- title: z62.string(),
39764
- description: z62.string().nullable(),
39765
- sortOrder: z62.number().int(),
39766
- giftCard: z62.null(),
39767
- voucher: z62.object({
39768
- purchaseAmountCents: z62.number().int().positive()
40066
+ voucher: z63.null()
40067
+ });
40068
+ publicVoucherOfferSchema = z63.object({
40069
+ id: z63.string(),
40070
+ kind: z63.literal("voucher"),
40071
+ title: z63.string(),
40072
+ description: z63.string().nullable(),
40073
+ sortOrder: z63.number().int(),
40074
+ giftCard: z63.null(),
40075
+ voucher: z63.object({
40076
+ purchaseAmountCents: z63.number().int().positive()
39769
40077
  })
39770
40078
  });
39771
- publicGiftingOffersResponseSchema = z62.object({
39772
- currency: z62.string(),
39773
- giftCards: z62.array(publicGiftCardOfferSchema),
39774
- vouchers: z62.array(publicVoucherOfferSchema)
40079
+ publicGiftingOffersResponseSchema = z63.object({
40080
+ currency: z63.string(),
40081
+ giftCards: z63.array(publicGiftCardOfferSchema),
40082
+ vouchers: z63.array(publicVoucherOfferSchema)
39775
40083
  });
39776
- giftingSourceSchema = z62.object({
39777
- siteId: z62.string().optional(),
39778
- apiBaseUrl: z62.string().optional(),
40084
+ giftingSourceSchema = z63.object({
40085
+ siteId: z63.string().optional(),
40086
+ apiBaseUrl: z63.string().optional(),
39779
40087
  offers: publicGiftingOffersResponseSchema.nullable().optional(),
39780
- className: z62.string().nullable().optional(),
39781
- heading: z62.string().nullable().optional(),
39782
- intro: z62.string().nullable().optional(),
39783
- giftCardsHeading: z62.string().nullable().optional(),
39784
- vouchersHeading: z62.string().nullable().optional(),
39785
- emptyStateText: z62.string().nullable().optional(),
39786
- checkoutButtonText: z62.string().nullable().optional(),
39787
- successMessage: z62.string().nullable().optional()
39788
- });
39789
- giftingDisplaySchema = z62.object({
39790
- kind: z62.literal("gifting"),
39791
- state: z62.literal("ready"),
39792
- className: z62.string().nullable(),
39793
- heading: z62.string(),
39794
- intro: z62.string().nullable(),
39795
- giftCardsHeading: z62.string(),
39796
- vouchersHeading: z62.string(),
39797
- emptyStateText: z62.string()
39798
- });
39799
- giftingHydrationSchema = z62.object({
40088
+ className: z63.string().nullable().optional(),
40089
+ heading: z63.string().nullable().optional(),
40090
+ intro: z63.string().nullable().optional(),
40091
+ giftCardsHeading: z63.string().nullable().optional(),
40092
+ vouchersHeading: z63.string().nullable().optional(),
40093
+ emptyStateText: z63.string().nullable().optional(),
40094
+ checkoutButtonText: z63.string().nullable().optional(),
40095
+ successMessage: z63.string().nullable().optional()
40096
+ });
40097
+ giftingDisplaySchema = z63.object({
40098
+ kind: z63.literal("gifting"),
40099
+ state: z63.literal("ready"),
40100
+ className: z63.string().nullable(),
40101
+ heading: z63.string(),
40102
+ intro: z63.string().nullable(),
40103
+ giftCardsHeading: z63.string(),
40104
+ vouchersHeading: z63.string(),
40105
+ emptyStateText: z63.string()
40106
+ });
40107
+ giftingHydrationSchema = z63.object({
39800
40108
  offers: publicGiftingOffersResponseSchema.nullable(),
39801
- checkoutButtonText: z62.string(),
39802
- successMessage: z62.string()
40109
+ checkoutButtonText: z63.string(),
40110
+ successMessage: z63.string()
39803
40111
  });
39804
- giftingRenderSchema = z62.object({
40112
+ giftingRenderSchema = z63.object({
39805
40113
  display: giftingDisplaySchema,
39806
40114
  hydration: giftingHydrationSchema
39807
40115
  });
39808
- giftingIslandMetaCodec = createZodCodec(z62.object({
39809
- siteId: z62.string().optional(),
39810
- apiBaseUrl: z62.string().optional()
40116
+ giftingIslandMetaCodec = createZodCodec(z63.object({
40117
+ siteId: z63.string().optional(),
40118
+ apiBaseUrl: z63.string().optional()
39811
40119
  }));
39812
40120
  giftingIslandMetaKeys = defineInteractiveIslandMetaKeys(
39813
40121
  "siteId",
@@ -40124,7 +40432,7 @@ var init_newsletter_form_types = __esm({
40124
40432
  });
40125
40433
 
40126
40434
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
40127
- import { z as z63 } from "zod";
40435
+ import { z as z64 } from "zod";
40128
40436
  function buildNewsletterDisplay(source) {
40129
40437
  const preset2 = source.preset ?? "emailOnly";
40130
40438
  const includePhone = source.includePhone ?? false;
@@ -40159,65 +40467,65 @@ var init_newsletter_form_interactive = __esm({
40159
40467
  init_runtime();
40160
40468
  init_newsletter_signup_destination();
40161
40469
  init_newsletter_form_types();
40162
- newsletterPresetSchema = z63.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
40163
- newsletterDestinationProviderSchema = z63.enum(["riverbank", "mailchimp"]);
40164
- newsletterFieldSchema = z63.object({
40165
- id: z63.string(),
40166
- type: z63.enum(["email", "text"]),
40167
- label: z63.string(),
40168
- required: z63.boolean(),
40169
- placeholder: z63.string().optional()
40170
- });
40171
- newsletterSignupBlockIdSchema = z63.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
40172
- signedNewsletterDestinationRefSchema = z63.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
40173
- newsletterPublicDestinationRefSchema = z63.discriminatedUnion("tag", [
40174
- z63.object({
40175
- tag: z63.literal("block_ref"),
40470
+ newsletterPresetSchema = z64.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
40471
+ newsletterDestinationProviderSchema = z64.enum(["riverbank", "mailchimp"]);
40472
+ newsletterFieldSchema = z64.object({
40473
+ id: z64.string(),
40474
+ type: z64.enum(["email", "text"]),
40475
+ label: z64.string(),
40476
+ required: z64.boolean(),
40477
+ placeholder: z64.string().optional()
40478
+ });
40479
+ newsletterSignupBlockIdSchema = z64.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
40480
+ signedNewsletterDestinationRefSchema = z64.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
40481
+ newsletterPublicDestinationRefSchema = z64.discriminatedUnion("tag", [
40482
+ z64.object({
40483
+ tag: z64.literal("block_ref"),
40176
40484
  blockId: newsletterSignupBlockIdSchema
40177
40485
  }),
40178
- z63.object({
40179
- tag: z63.literal("signed_destination_ref"),
40486
+ z64.object({
40487
+ tag: z64.literal("signed_destination_ref"),
40180
40488
  token: signedNewsletterDestinationRefSchema
40181
40489
  })
40182
40490
  ]);
40183
- newsletterSourceSchema = z63.object({
40184
- blockId: z63.string().nullable().optional(),
40185
- siteId: z63.string().optional(),
40186
- apiBaseUrl: z63.string().optional(),
40187
- listId: z63.string().nullable().optional(),
40491
+ newsletterSourceSchema = z64.object({
40492
+ blockId: z64.string().nullable().optional(),
40493
+ siteId: z64.string().optional(),
40494
+ apiBaseUrl: z64.string().optional(),
40495
+ listId: z64.string().nullable().optional(),
40188
40496
  destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
40189
40497
  preset: newsletterPresetSchema.optional(),
40190
- includePhone: z63.boolean().optional(),
40191
- buttonLabel: z63.string().nullable().optional(),
40192
- successMessage: z63.string().nullable().optional(),
40193
- privacyNote: z63.string().nullable().optional(),
40194
- tags: z63.string().nullable().optional(),
40195
- spamProtectionEnabled: z63.boolean().optional(),
40196
- className: z63.string().nullable().optional()
40197
- });
40198
- newsletterDisplaySchema = z63.object({
40199
- kind: z63.literal("newsletter-form"),
40200
- className: z63.string().nullable(),
40201
- buttonLabel: z63.string(),
40202
- successMessage: z63.string().nullable(),
40203
- privacyNote: z63.string().nullable(),
40204
- fields: z63.array(newsletterFieldSchema)
40205
- });
40206
- newsletterHydrationSchema = z63.object({
40498
+ includePhone: z64.boolean().optional(),
40499
+ buttonLabel: z64.string().nullable().optional(),
40500
+ successMessage: z64.string().nullable().optional(),
40501
+ privacyNote: z64.string().nullable().optional(),
40502
+ tags: z64.string().nullable().optional(),
40503
+ spamProtectionEnabled: z64.boolean().optional(),
40504
+ className: z64.string().nullable().optional()
40505
+ });
40506
+ newsletterDisplaySchema = z64.object({
40507
+ kind: z64.literal("newsletter-form"),
40508
+ className: z64.string().nullable(),
40509
+ buttonLabel: z64.string(),
40510
+ successMessage: z64.string().nullable(),
40511
+ privacyNote: z64.string().nullable(),
40512
+ fields: z64.array(newsletterFieldSchema)
40513
+ });
40514
+ newsletterHydrationSchema = z64.object({
40207
40515
  destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
40208
- listId: z63.string().nullable().optional(),
40516
+ listId: z64.string().nullable().optional(),
40209
40517
  preset: newsletterPresetSchema,
40210
- includePhone: z63.boolean(),
40211
- tags: z63.string().nullable().optional(),
40212
- spamProtectionEnabled: z63.boolean().optional()
40518
+ includePhone: z64.boolean(),
40519
+ tags: z64.string().nullable().optional(),
40520
+ spamProtectionEnabled: z64.boolean().optional()
40213
40521
  });
40214
- newsletterRenderSchema = z63.object({
40522
+ newsletterRenderSchema = z64.object({
40215
40523
  display: newsletterDisplaySchema,
40216
40524
  hydration: newsletterHydrationSchema
40217
40525
  });
40218
- newsletterIslandMetaCodec = createZodCodec(z63.object({
40219
- siteId: z63.string().optional(),
40220
- apiBaseUrl: z63.string().optional()
40526
+ newsletterIslandMetaCodec = createZodCodec(z64.object({
40527
+ siteId: z64.string().optional(),
40528
+ apiBaseUrl: z64.string().optional()
40221
40529
  }));
40222
40530
  newsletterIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
40223
40531
  newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
@@ -40344,7 +40652,7 @@ var init_newsletter_signup = __esm({
40344
40652
  });
40345
40653
 
40346
40654
  // ../blocks/src/system/blocks/team-members.ts
40347
- import { z as z64 } from "zod";
40655
+ import { z as z65 } from "zod";
40348
40656
  var ITEM_NAME2, teamMemberPhotoSchema, teamMemberDataSchema, teamMembersDataSchema, dynamicSourceWhen, manualSourceWhen, headingNode, wrapVariant3, teamMemberStackLayout, manualGridMembersNode, dynamicGridMembersNode, gridVariant, manualStackMembersNode, dynamicStackMembersNode, stackVariant, teamMembersManifest, teamMembersBlockDefinition;
40349
40657
  var init_team_members = __esm({
40350
40658
  "../blocks/src/system/blocks/team-members.ts"() {
@@ -40361,18 +40669,18 @@ var init_team_members = __esm({
40361
40669
  teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
40362
40670
  message: "Team member photos must be image media"
40363
40671
  }).nullable();
40364
- teamMemberDataSchema = z64.object({
40365
- _type: z64.literal("teamMember"),
40366
- id: z64.string(),
40367
- name: z64.string(),
40368
- role: z64.string().nullable(),
40369
- roleLabel: z64.string().nullable(),
40370
- bio: z64.string().nullable(),
40371
- summary: z64.string().nullable(),
40672
+ teamMemberDataSchema = z65.object({
40673
+ _type: z65.literal("teamMember"),
40674
+ id: z65.string(),
40675
+ name: z65.string(),
40676
+ role: z65.string().nullable(),
40677
+ roleLabel: z65.string().nullable(),
40678
+ bio: z65.string().nullable(),
40679
+ summary: z65.string().nullable(),
40372
40680
  photo: teamMemberPhotoSchema,
40373
- profilePath: z64.string().nullable()
40681
+ profilePath: z65.string().nullable()
40374
40682
  });
40375
- teamMembersDataSchema = z64.array(teamMemberDataSchema);
40683
+ teamMembersDataSchema = z65.array(teamMemberDataSchema);
40376
40684
  dynamicSourceWhen = { equals: "site_staff" };
40377
40685
  manualSourceWhen = { equals: "site_staff", not: true };
40378
40686
  headingNode = text(
@@ -41180,6 +41488,7 @@ var init_blocks = __esm({
41180
41488
  init_feature_cards();
41181
41489
  init_media_text();
41182
41490
  init_appointment_booking();
41491
+ init_weekly_slot_availability();
41183
41492
  init_event_registration();
41184
41493
  init_course_registration();
41185
41494
  init_event_details();
@@ -41220,6 +41529,7 @@ var init_blocks = __esm({
41220
41529
  init_feature_card_icons();
41221
41530
  init_media_text();
41222
41531
  init_appointment_booking();
41532
+ init_weekly_slot_availability();
41223
41533
  init_event_registration();
41224
41534
  init_event_details();
41225
41535
  init_course_registration();
@@ -41590,6 +41900,10 @@ var init_blocks = __esm({
41590
41900
  flow: conversionFlow,
41591
41901
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "form", weight: "standard" })]
41592
41902
  })),
41903
+ withDesignCapability("block.weekly-slot-availability", weeklySlotAvailabilityBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
41904
+ flow: offeringsFlow,
41905
+ layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
41906
+ })),
41593
41907
  withDesignCapability("block.event-registration", eventRegistrationBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
41594
41908
  flow: conversionFlow,
41595
41909
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "form", weight: "standard" })]
@@ -42757,7 +43071,7 @@ var init_componentFactory = __esm({
42757
43071
  });
42758
43072
 
42759
43073
  // ../blocks/src/system/layout/index.ts
42760
- var init_layout2 = __esm({
43074
+ var init_layout3 = __esm({
42761
43075
  "../blocks/src/system/layout/index.ts"() {
42762
43076
  "use strict";
42763
43077
  init_repeaterGrid();
@@ -42817,7 +43131,7 @@ var init_system = __esm({
42817
43131
  init_designCapabilities();
42818
43132
  init_fragments2();
42819
43133
  init_icons();
42820
- init_layout2();
43134
+ init_layout3();
42821
43135
  init_defineBlock();
42822
43136
  init_ai();
42823
43137
  init_link();
@@ -43144,7 +43458,7 @@ var init_generateLayoutCss = __esm({
43144
43458
  });
43145
43459
 
43146
43460
  // ../theme-core/src/layout/index.ts
43147
- var init_layout3 = __esm({
43461
+ var init_layout4 = __esm({
43148
43462
  "../theme-core/src/layout/index.ts"() {
43149
43463
  "use strict";
43150
43464
  init_generateLayoutCss();
@@ -43943,7 +44257,7 @@ var init_buildThemeRuntime = __esm({
43943
44257
  init_defaults2();
43944
44258
  init_header();
43945
44259
  init_footer();
43946
- init_layout3();
44260
+ init_layout4();
43947
44261
  init_status();
43948
44262
  init_progress();
43949
44263
  init_typography2();
@@ -44406,30 +44720,30 @@ var init_Button = __esm({
44406
44720
  });
44407
44721
 
44408
44722
  // ../blocks/src/structure/schema.ts
44409
- import z65 from "zod";
44723
+ import z66 from "zod";
44410
44724
  var BlockKind, blockSchema, pagePath, pageOutlineSchema;
44411
44725
  var init_schema4 = __esm({
44412
44726
  "../blocks/src/structure/schema.ts"() {
44413
44727
  "use strict";
44414
- BlockKind = z65.string();
44415
- blockSchema = z65.object({
44416
- id: z65.string().nullable(),
44728
+ BlockKind = z66.string();
44729
+ blockSchema = z66.object({
44730
+ id: z66.string().nullable(),
44417
44731
  // optional ID for reference in toggle ops
44418
44732
  kind: BlockKind,
44419
- purpose: z65.string().min(1),
44733
+ purpose: z66.string().min(1),
44420
44734
  // Optional content fields used by PageRenderer / block runtime.
44421
- content: z65.record(z65.string(), z65.unknown()).optional(),
44735
+ content: z66.record(z66.string(), z66.unknown()).optional(),
44422
44736
  // Nullable because some persisted sources store "no draft" as null.
44423
- draftContent: z65.record(z65.string(), z65.unknown()).nullable().optional(),
44737
+ draftContent: z66.record(z66.string(), z66.unknown()).nullable().optional(),
44424
44738
  // Optional template bindings for reverse field mapping (entry editing)
44425
- bindings: z65.record(z65.string(), z65.unknown()).optional()
44739
+ bindings: z66.record(z66.string(), z66.unknown()).optional()
44426
44740
  }).passthrough();
44427
- pagePath = z65.string().regex(/^\/[\S]*$/, 'path must start with "/" and contain no spaces');
44428
- pageOutlineSchema = z65.object({
44429
- name: z65.string().min(1),
44741
+ pagePath = z66.string().regex(/^\/[\S]*$/, 'path must start with "/" and contain no spaces');
44742
+ pageOutlineSchema = z66.object({
44743
+ name: z66.string().min(1),
44430
44744
  path: pagePath,
44431
- purpose: z65.string().min(1),
44432
- blocks: z65.array(blockSchema).min(1)
44745
+ purpose: z66.string().min(1),
44746
+ blocks: z66.array(blockSchema).min(1)
44433
44747
  });
44434
44748
  }
44435
44749
  });
@@ -44552,7 +44866,7 @@ var init_fonts = __esm({
44552
44866
  });
44553
44867
 
44554
44868
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
44555
- import { z as z66 } from "zod";
44869
+ import { z as z67 } from "zod";
44556
44870
  var themeBridgeConfigSchema;
44557
44871
  var init_buildThemeRuntimeFromBridge = __esm({
44558
44872
  "../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts"() {
@@ -44567,33 +44881,33 @@ var init_buildThemeRuntimeFromBridge = __esm({
44567
44881
  init_progress();
44568
44882
  init_blocks2();
44569
44883
  init_themeCssVarNames();
44570
- themeBridgeConfigSchema = z66.object({
44571
- tokens: z66.record(z66.string(), z66.string()),
44572
- typography: z66.object({
44573
- headingFamily: z66.string().optional(),
44574
- bodyFamily: z66.string().optional(),
44575
- headingWeight: z66.number().optional(),
44576
- bodyWeight: z66.number().optional()
44884
+ themeBridgeConfigSchema = z67.object({
44885
+ tokens: z67.record(z67.string(), z67.string()),
44886
+ typography: z67.object({
44887
+ headingFamily: z67.string().optional(),
44888
+ bodyFamily: z67.string().optional(),
44889
+ headingWeight: z67.number().optional(),
44890
+ bodyWeight: z67.number().optional()
44577
44891
  }).optional(),
44578
- spacing: z66.enum(["comfortable", "standard", "dense"]).optional(),
44579
- corners: z66.enum(["square", "soft", "rounded", "pill"]).optional(),
44580
- shadows: z66.enum(["none", "low", "medium", "high"]).optional(),
44581
- components: z66.object({
44582
- buttons: z66.union([
44583
- z66.boolean(),
44584
- z66.object({
44585
- variants: z66.array(z66.enum(["primary", "secondary", "outline", "ghost"])).optional()
44892
+ spacing: z67.enum(["comfortable", "standard", "dense"]).optional(),
44893
+ corners: z67.enum(["square", "soft", "rounded", "pill"]).optional(),
44894
+ shadows: z67.enum(["none", "low", "medium", "high"]).optional(),
44895
+ components: z67.object({
44896
+ buttons: z67.union([
44897
+ z67.boolean(),
44898
+ z67.object({
44899
+ variants: z67.array(z67.enum(["primary", "secondary", "outline", "ghost"])).optional()
44586
44900
  })
44587
44901
  ]).optional(),
44588
- cards: z66.union([
44589
- z66.boolean(),
44590
- z66.object({
44591
- variants: z66.array(z66.enum(["default", "elevated", "outlined"])).optional()
44902
+ cards: z67.union([
44903
+ z67.boolean(),
44904
+ z67.object({
44905
+ variants: z67.array(z67.enum(["default", "elevated", "outlined"])).optional()
44592
44906
  })
44593
44907
  ]).optional(),
44594
- inputs: z66.boolean().optional()
44908
+ inputs: z67.boolean().optional()
44595
44909
  }).optional(),
44596
- overrides: z66.record(z66.string(), z66.string()).optional()
44910
+ overrides: z67.record(z67.string(), z67.string()).optional()
44597
44911
  }).passthrough();
44598
44912
  }
44599
44913
  });
@@ -44847,14 +45161,21 @@ var init_utils5 = __esm({
44847
45161
 
44848
45162
  // ../blocks/src/system/data/prefetchBlockData.ts
44849
45163
  async function prefetchBlockData(page, context, options) {
44850
- const { apiClient, isValidEndpoint, onError, getCustomBlockLoaders } = options;
45164
+ const {
45165
+ apiClient,
45166
+ isValidEndpoint,
45167
+ onError,
45168
+ getCustomBlockLoaders,
45169
+ getBlockDefinition: getBlockDefinition2 = getBlockDefinition,
45170
+ resolveParamsBindings: resolveParamsBindings2 = resolveParamsBindings
45171
+ } = options;
44851
45172
  const results = {};
44852
45173
  const tasks = [];
44853
45174
  for (const block of page.blocks) {
44854
45175
  const blockId = block.id;
44855
45176
  if (!blockId) continue;
44856
45177
  let loaders;
44857
- const def = getBlockDefinition(block.kind);
45178
+ const def = getBlockDefinition2(block.kind);
44858
45179
  if (def) {
44859
45180
  loaders = normalizeDataLoaders(def);
44860
45181
  } else if (getCustomBlockLoaders) {
@@ -44877,14 +45198,14 @@ async function prefetchBlockData(page, context, options) {
44877
45198
  continue;
44878
45199
  }
44879
45200
  if (typeof loader.when !== "undefined") {
44880
- const resolvedWhen = resolveParamsBindings(loader.when, vm, {
45201
+ const resolvedWhen = resolveParamsBindings2(loader.when, vm, {
44881
45202
  blockKind: block.kind
44882
45203
  });
44883
45204
  if (resolvedWhen !== true) {
44884
45205
  continue;
44885
45206
  }
44886
45207
  }
44887
- const rawParams = resolveParamsBindings(loader.params, vm, {
45208
+ const rawParams = resolveParamsBindings2(loader.params, vm, {
44888
45209
  blockKind: block.kind
44889
45210
  });
44890
45211
  const params = normalizeParams(rawParams);
@@ -44939,7 +45260,8 @@ var init_loaderEndpoints = __esm({
44939
45260
  "listPublicPasses",
44940
45261
  "listPublicMemberships",
44941
45262
  "getPublicFormById",
44942
- "getPublicBookingServices"
45263
+ "getPublicBookingServices",
45264
+ "getPublicWeeklySlotAvailability"
44943
45265
  ];
44944
45266
  }
44945
45267
  });
@@ -44980,6 +45302,10 @@ function normalizeLoaderParams(endpoint, params, context) {
44980
45302
  ensureSiteId(out, context);
44981
45303
  return out;
44982
45304
  }
45305
+ if (endpoint === "getPublicWeeklySlotAvailability") {
45306
+ ensureSiteId(out, context);
45307
+ return out;
45308
+ }
44983
45309
  if (endpoint === "listPublicEvents") {
44984
45310
  ensureSiteId(out, context);
44985
45311
  return out;
@@ -45064,7 +45390,7 @@ var init_src3 = __esm({
45064
45390
  });
45065
45391
 
45066
45392
  // ../api/src/sdkConfig/contracts.ts
45067
- import { z as z67 } from "zod";
45393
+ import { z as z68 } from "zod";
45068
45394
  function unsafeRetypeZodSchema(schema) {
45069
45395
  return schema;
45070
45396
  }
@@ -45073,17 +45399,17 @@ var init_contracts2 = __esm({
45073
45399
  "../api/src/sdkConfig/contracts.ts"() {
45074
45400
  "use strict";
45075
45401
  init_src3();
45076
- navIdListSchema = z67.preprocess((value) => {
45402
+ navIdListSchema = z68.preprocess((value) => {
45077
45403
  if (!Array.isArray(value)) return void 0;
45078
45404
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
45079
45405
  return filtered.length > 0 ? filtered : void 0;
45080
- }, z67.array(z67.string()).max(200).optional());
45081
- dashboardNavVisibilityBaseSchema = z67.object({
45082
- mode: z67.enum(["augment", "restrict"]).optional(),
45406
+ }, z68.array(z68.string()).max(200).optional());
45407
+ dashboardNavVisibilityBaseSchema = z68.object({
45408
+ mode: z68.enum(["augment", "restrict"]).optional(),
45083
45409
  allowIds: navIdListSchema,
45084
45410
  denyIds: navIdListSchema
45085
45411
  }).strip();
45086
- dashboardNavVisibilityRolesSchema = z67.object({
45412
+ dashboardNavVisibilityRolesSchema = z68.object({
45087
45413
  administrator: dashboardNavVisibilityBaseSchema.optional(),
45088
45414
  editor: dashboardNavVisibilityBaseSchema.optional(),
45089
45415
  team_member: dashboardNavVisibilityBaseSchema.optional()
@@ -45091,63 +45417,63 @@ var init_contracts2 = __esm({
45091
45417
  dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
45092
45418
  roles: dashboardNavVisibilityRolesSchema
45093
45419
  }).strip();
45094
- dashboardNavigationConfigSchema = z67.object({
45420
+ dashboardNavigationConfigSchema = z68.object({
45095
45421
  siteNav: dashboardNavVisibilitySchema.optional(),
45096
45422
  settingsNav: dashboardNavVisibilitySchema.optional()
45097
45423
  }).strip();
45098
- dashboardConfigSchema = z67.object({
45099
- previewEditingEnabled: z67.boolean().optional(),
45424
+ dashboardConfigSchema = z68.object({
45425
+ previewEditingEnabled: z68.boolean().optional(),
45100
45426
  navigation: dashboardNavigationConfigSchema.optional()
45101
45427
  }).strip();
45102
45428
  fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
45103
45429
  nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
45104
- sdkLoaderEndpointSchema = z67.enum(SUPPORTED_LOADER_ENDPOINTS);
45105
- loaderFallbackScalarSchema = z67.union([
45106
- z67.string(),
45107
- z67.number(),
45108
- z67.boolean(),
45109
- z67.null()
45430
+ sdkLoaderEndpointSchema = z68.enum(SUPPORTED_LOADER_ENDPOINTS);
45431
+ loaderFallbackScalarSchema = z68.union([
45432
+ z68.string(),
45433
+ z68.number(),
45434
+ z68.boolean(),
45435
+ z68.null()
45110
45436
  ]);
45111
- loaderParamBindingSchema = z67.object({
45112
- $bind: z67.object({
45113
- from: z67.string().min(1, "Binding path is required"),
45437
+ loaderParamBindingSchema = z68.object({
45438
+ $bind: z68.object({
45439
+ from: z68.string().min(1, "Binding path is required"),
45114
45440
  fallback: loaderFallbackScalarSchema.optional()
45115
45441
  })
45116
45442
  });
45117
- loaderParamValueSchema = z67.union([
45118
- z67.string(),
45119
- z67.number(),
45120
- z67.boolean(),
45443
+ loaderParamValueSchema = z68.union([
45444
+ z68.string(),
45445
+ z68.number(),
45446
+ z68.boolean(),
45121
45447
  loaderParamBindingSchema
45122
45448
  ]);
45123
- sdkConfigLoaderSchema = z67.object({
45449
+ sdkConfigLoaderSchema = z68.object({
45124
45450
  endpoint: sdkLoaderEndpointSchema,
45125
- params: z67.record(z67.string(), loaderParamValueSchema),
45126
- mode: z67.enum(["server", "client"]).default("server")
45451
+ params: z68.record(z68.string(), loaderParamValueSchema),
45452
+ mode: z68.enum(["server", "client"]).default("server")
45127
45453
  });
45128
- sdkDataLoadersSchema = z67.record(z67.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
45129
- sdkCustomBlockIdSchema = z67.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
45454
+ sdkDataLoadersSchema = z68.record(z68.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
45455
+ sdkCustomBlockIdSchema = z68.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
45130
45456
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
45131
45457
  }).transform((value) => value);
45132
- sdkCustomBlockInputSchema = z67.object({
45458
+ sdkCustomBlockInputSchema = z68.object({
45133
45459
  id: sdkCustomBlockIdSchema,
45134
- title: z67.string().min(1),
45135
- titleSource: z67.union([z67.string().min(1), z67.array(z67.string().min(1)).min(1)]).optional(),
45136
- description: z67.string().optional(),
45460
+ title: z68.string().min(1),
45461
+ titleSource: z68.union([z68.string().min(1), z68.array(z68.string().min(1)).min(1)]).optional(),
45462
+ description: z68.string().optional(),
45137
45463
  category: blockCategoryEnum,
45138
- icon: z67.string().optional(),
45139
- tags: z67.array(z67.string()).optional(),
45464
+ icon: z68.string().optional(),
45465
+ tags: z68.array(z68.string()).optional(),
45140
45466
  fields: fieldDefinitionInputSchema.array().min(1),
45141
45467
  dataLoaders: sdkDataLoadersSchema,
45142
45468
  layout: NodeSchema.optional(),
45143
- variants: z67.record(z67.string().min(1), NodeSchema).optional(),
45144
- defaultVariant: z67.string().min(1).optional(),
45145
- variantOptions: z67.record(
45146
- z67.string().min(1),
45147
- z67.object({
45148
- label: z67.string().min(1).optional(),
45149
- description: z67.string().min(1).optional(),
45150
- icon: z67.string().min(1).optional()
45469
+ variants: z68.record(z68.string().min(1), NodeSchema).optional(),
45470
+ defaultVariant: z68.string().min(1).optional(),
45471
+ variantOptions: z68.record(
45472
+ z68.string().min(1),
45473
+ z68.object({
45474
+ label: z68.string().min(1).optional(),
45475
+ description: z68.string().min(1).optional(),
45476
+ icon: z68.string().min(1).optional()
45151
45477
  })
45152
45478
  ).optional(),
45153
45479
  previewCustomize: previewCustomizeManifestCurationSchema.optional()
@@ -45158,7 +45484,7 @@ var init_contracts2 = __esm({
45158
45484
  const exists = data.fields.some((field) => field.id === source);
45159
45485
  if (!exists) {
45160
45486
  ctx.addIssue({
45161
- code: z67.ZodIssueCode.custom,
45487
+ code: z68.ZodIssueCode.custom,
45162
45488
  message: `titleSource must reference a valid field ID (got "${source}")`,
45163
45489
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
45164
45490
  });
@@ -45167,7 +45493,7 @@ var init_contracts2 = __esm({
45167
45493
  }
45168
45494
  if (data.layout && data.variants) {
45169
45495
  ctx.addIssue({
45170
- code: z67.ZodIssueCode.custom,
45496
+ code: z68.ZodIssueCode.custom,
45171
45497
  message: "Custom block must define either `layout` or `variants`, not both",
45172
45498
  path: ["variants"]
45173
45499
  });
@@ -45176,14 +45502,14 @@ var init_contracts2 = __esm({
45176
45502
  const keys = Object.keys(data.variants);
45177
45503
  if (keys.length === 0) {
45178
45504
  ctx.addIssue({
45179
- code: z67.ZodIssueCode.custom,
45505
+ code: z68.ZodIssueCode.custom,
45180
45506
  message: "`variants` must contain at least one variant key",
45181
45507
  path: ["variants"]
45182
45508
  });
45183
45509
  }
45184
45510
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
45185
45511
  ctx.addIssue({
45186
- code: z67.ZodIssueCode.custom,
45512
+ code: z68.ZodIssueCode.custom,
45187
45513
  message: "`defaultVariant` must be a key present in `variants`",
45188
45514
  path: ["defaultVariant"]
45189
45515
  });
@@ -45192,7 +45518,7 @@ var init_contracts2 = __esm({
45192
45518
  for (const key of Object.keys(data.variantOptions)) {
45193
45519
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
45194
45520
  ctx.addIssue({
45195
- code: z67.ZodIssueCode.custom,
45521
+ code: z68.ZodIssueCode.custom,
45196
45522
  message: "`variantOptions` key must exist in `variants`",
45197
45523
  path: ["variantOptions", key]
45198
45524
  });
@@ -45201,78 +45527,78 @@ var init_contracts2 = __esm({
45201
45527
  }
45202
45528
  }
45203
45529
  });
45204
- sdkBlockFieldExtensionInputSchema = z67.object({
45530
+ sdkBlockFieldExtensionInputSchema = z68.object({
45205
45531
  fields: fieldDefinitionInputSchema.array().min(1)
45206
45532
  });
45207
- sdkBlockFieldExtensionsInputSchema = z67.record(
45208
- z67.string().min(1),
45533
+ sdkBlockFieldExtensionsInputSchema = z68.record(
45534
+ z68.string().min(1),
45209
45535
  sdkBlockFieldExtensionInputSchema
45210
45536
  );
45211
- sdkThemePaletteSchema = z67.record(z67.string(), z67.string());
45212
- sdkThemeConfigSchema = z67.object({
45537
+ sdkThemePaletteSchema = z68.record(z68.string(), z68.string());
45538
+ sdkThemeConfigSchema = z68.object({
45213
45539
  palette: sdkThemePaletteSchema
45214
45540
  });
45215
- sdkSectionBackgroundSchema = z67.object({
45216
- id: z67.string().min(1),
45217
- label: z67.string().min(1),
45218
- token: z67.string().min(1)
45541
+ sdkSectionBackgroundSchema = z68.object({
45542
+ id: z68.string().min(1),
45543
+ label: z68.string().min(1),
45544
+ token: z68.string().min(1)
45219
45545
  });
45220
- sdkSectionOptionsConfigSchema = z67.object({
45221
- backgroundColor: z67.boolean().optional(),
45222
- backgroundImage: z67.boolean().optional(),
45223
- backgroundGradient: z67.boolean().optional(),
45224
- spacing: z67.union([z67.array(z67.enum(["compact", "default", "spacious"])), z67.boolean()]).optional(),
45225
- textColor: z67.boolean().optional()
45546
+ sdkSectionOptionsConfigSchema = z68.object({
45547
+ backgroundColor: z68.boolean().optional(),
45548
+ backgroundImage: z68.boolean().optional(),
45549
+ backgroundGradient: z68.boolean().optional(),
45550
+ spacing: z68.union([z68.array(z68.enum(["compact", "default", "spacious"])), z68.boolean()]).optional(),
45551
+ textColor: z68.boolean().optional()
45226
45552
  });
45227
- sdkContainerOptionsConfigSchema = z67.object({
45228
- maxWidth: z67.union([z67.array(z67.enum(["narrow", "default", "wide", "full"])), z67.boolean()]).optional(),
45229
- alignment: z67.union([z67.array(z67.enum(["left", "center", "right"])), z67.boolean()]).optional()
45553
+ sdkContainerOptionsConfigSchema = z68.object({
45554
+ maxWidth: z68.union([z68.array(z68.enum(["narrow", "default", "wide", "full"])), z68.boolean()]).optional(),
45555
+ alignment: z68.union([z68.array(z68.enum(["left", "center", "right"])), z68.boolean()]).optional()
45230
45556
  });
45231
- sdkSiteStyleConfigSchema = z67.object({
45232
- sectionBackgrounds: z67.array(sdkSectionBackgroundSchema).optional(),
45557
+ sdkSiteStyleConfigSchema = z68.object({
45558
+ sectionBackgrounds: z68.array(sdkSectionBackgroundSchema).optional(),
45233
45559
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
45234
45560
  containerOptions: sdkContainerOptionsConfigSchema.optional()
45235
45561
  });
45236
- sdkSiteLayoutConfigSchema = z67.object({
45237
- footerBlocks: z67.array(
45238
- z67.object({
45239
- id: z67.string().min(1).optional(),
45240
- kind: z67.string().min(1),
45241
- content: z67.record(z67.string(), z67.unknown()).optional()
45562
+ sdkSiteLayoutConfigSchema = z68.object({
45563
+ footerBlocks: z68.array(
45564
+ z68.object({
45565
+ id: z68.string().min(1).optional(),
45566
+ kind: z68.string().min(1),
45567
+ content: z68.record(z68.string(), z68.unknown()).optional()
45242
45568
  })
45243
45569
  ).optional()
45244
45570
  });
45245
- sdkFieldSelectOptionSchema = z67.object({
45246
- value: z67.string(),
45247
- label: z67.string()
45571
+ sdkFieldSelectOptionSchema = z68.object({
45572
+ value: z68.string(),
45573
+ label: z68.string()
45248
45574
  });
45249
- sdkBlockFieldConfigSchema = z67.object({
45250
- options: z67.array(sdkFieldSelectOptionSchema).optional()
45575
+ sdkBlockFieldConfigSchema = z68.object({
45576
+ options: z68.array(sdkFieldSelectOptionSchema).optional()
45251
45577
  });
45252
- sdkBlockFieldOptionsMapSchema = z67.record(
45253
- z67.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
45578
+ sdkBlockFieldOptionsMapSchema = z68.record(
45579
+ z68.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
45254
45580
  message: "Block ID must be 'block.*' or 'custom.*' format"
45255
45581
  }),
45256
- z67.record(z67.string().min(1), sdkBlockFieldConfigSchema)
45582
+ z68.record(z68.string().min(1), sdkBlockFieldConfigSchema)
45257
45583
  ).optional();
45258
- sdkContentTypeTemplateConfigSchema = z67.object({
45259
- blocks: z67.array(z67.unknown())
45584
+ sdkContentTypeTemplateConfigSchema = z68.object({
45585
+ blocks: z68.array(z68.unknown())
45260
45586
  }).passthrough();
45261
- sdkContentTypeOrderingConfigSchema = z67.object({
45262
- mode: z67.enum(["default", "manual"]).optional()
45587
+ sdkContentTypeOrderingConfigSchema = z68.object({
45588
+ mode: z68.enum(["default", "manual"]).optional()
45263
45589
  }).optional();
45264
- sdkContentTypeConfigSchema = z67.object({
45265
- key: z67.string().min(1),
45266
- fields: z67.array(z67.unknown()),
45590
+ sdkContentTypeConfigSchema = z68.object({
45591
+ key: z68.string().min(1),
45592
+ fields: z68.array(z68.unknown()),
45267
45593
  ordering: sdkContentTypeOrderingConfigSchema,
45268
45594
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
45269
45595
  }).passthrough();
45270
- sdkContentConfigSchema = z67.object({
45271
- contentTypes: z67.array(sdkContentTypeConfigSchema).optional(),
45272
- pages: z67.array(z67.unknown()).optional(),
45273
- entries: z67.array(z67.unknown()).optional(),
45274
- navigationMenus: z67.array(z67.unknown()).optional(),
45275
- settings: z67.unknown().optional()
45596
+ sdkContentConfigSchema = z68.object({
45597
+ contentTypes: z68.array(sdkContentTypeConfigSchema).optional(),
45598
+ pages: z68.array(z68.unknown()).optional(),
45599
+ entries: z68.array(z68.unknown()).optional(),
45600
+ navigationMenus: z68.array(z68.unknown()).optional(),
45601
+ settings: z68.unknown().optional()
45276
45602
  }).passthrough();
45277
45603
  SDK_WORKFLOW_ID_MAX_LENGTH = 120;
45278
45604
  SDK_WORKFLOW_TITLE_MAX_LENGTH = 120;
@@ -45287,62 +45613,62 @@ var init_contracts2 = __esm({
45287
45613
  SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH = 500;
45288
45614
  SDK_WORKFLOW_ID_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
45289
45615
  SDK_WORKFLOW_ENDPOINT_PATTERN = /^\//;
45290
- sdkWorkflowIdSchema = z67.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
45616
+ sdkWorkflowIdSchema = z68.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
45291
45617
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
45292
45618
  });
45293
- sdkWorkflowEndpointSchema = z67.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 "/"' });
45294
- sdkWorkflowManualTriggerSchema = z67.object({
45295
- type: z67.literal("manual")
45619
+ sdkWorkflowEndpointSchema = z68.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 "/"' });
45620
+ sdkWorkflowManualTriggerSchema = z68.object({
45621
+ type: z68.literal("manual")
45296
45622
  }).strict();
45297
- sdkWorkflowTriggerFieldSchema = z67.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
45623
+ sdkWorkflowTriggerFieldSchema = z68.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
45298
45624
  message: "Workflow trigger fields must be top-level content field IDs, not paths"
45299
45625
  });
45300
- sdkWorkflowFieldChangedConditionSchema = z67.object({
45626
+ sdkWorkflowFieldChangedConditionSchema = z68.object({
45301
45627
  field: sdkWorkflowTriggerFieldSchema,
45302
- changed: z67.literal(true)
45628
+ changed: z68.literal(true)
45303
45629
  }).strict();
45304
- sdkWorkflowFieldEmptyConditionSchema = z67.object({
45630
+ sdkWorkflowFieldEmptyConditionSchema = z68.object({
45305
45631
  field: sdkWorkflowTriggerFieldSchema,
45306
- isEmpty: z67.boolean()
45632
+ isEmpty: z68.boolean()
45307
45633
  }).strict();
45308
- sdkWorkflowEntryDraftUpdatedTriggerSchema = z67.object({
45309
- type: z67.literal("entry.draft.updated"),
45310
- when: z67.array(
45311
- z67.union([
45634
+ sdkWorkflowEntryDraftUpdatedTriggerSchema = z68.object({
45635
+ type: z68.literal("entry.draft.updated"),
45636
+ when: z68.array(
45637
+ z68.union([
45312
45638
  sdkWorkflowFieldChangedConditionSchema,
45313
45639
  sdkWorkflowFieldEmptyConditionSchema
45314
45640
  ])
45315
45641
  ).min(1).max(SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT)
45316
45642
  }).strict();
45317
- sdkWorkflowTriggerSchema = z67.discriminatedUnion("type", [
45643
+ sdkWorkflowTriggerSchema = z68.discriminatedUnion("type", [
45318
45644
  sdkWorkflowManualTriggerSchema,
45319
45645
  sdkWorkflowEntryDraftUpdatedTriggerSchema
45320
45646
  ]);
45321
- sdkWorkflowConfirmationSchema = z67.object({
45322
- title: z67.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
45323
- body: z67.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
45647
+ sdkWorkflowConfirmationSchema = z68.object({
45648
+ title: z68.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
45649
+ body: z68.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
45324
45650
  }).strict();
45325
- sdkWorkflowConfigSchema = z67.object({
45651
+ sdkWorkflowConfigSchema = z68.object({
45326
45652
  id: sdkWorkflowIdSchema,
45327
- title: z67.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
45328
- description: z67.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
45329
- contentType: z67.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
45653
+ title: z68.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
45654
+ description: z68.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
45655
+ contentType: z68.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
45330
45656
  endpoint: sdkWorkflowEndpointSchema,
45331
- triggers: z67.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
45657
+ triggers: z68.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
45332
45658
  confirmation: sdkWorkflowConfirmationSchema.optional()
45333
45659
  }).strict();
45334
- sdkWorkflowsSchema = z67.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
45660
+ sdkWorkflowsSchema = z68.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
45335
45661
  const ids = workflows.map((workflow) => workflow.id);
45336
45662
  return ids.length === new Set(ids).size;
45337
45663
  }, { message: "Workflow IDs must be unique" }).optional();
45338
- riverbankSiteConfigInputSchema = z67.object({
45339
- siteId: z67.string().uuid(),
45340
- previewUrl: z67.string().url().optional(),
45341
- liveUrl: z67.string().url().optional(),
45664
+ riverbankSiteConfigInputSchema = z68.object({
45665
+ siteId: z68.string().uuid(),
45666
+ previewUrl: z68.string().url().optional(),
45667
+ liveUrl: z68.string().url().optional(),
45342
45668
  theme: sdkThemeConfigSchema.optional(),
45343
45669
  styles: sdkSiteStyleConfigSchema.optional(),
45344
45670
  layout: sdkSiteLayoutConfigSchema.optional(),
45345
- customBlocks: z67.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
45671
+ customBlocks: z68.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
45346
45672
  const ids = blocks.map((b) => b.id);
45347
45673
  return ids.length === new Set(ids).size;
45348
45674
  }, { message: "Block IDs must be unique" }).optional(),
@@ -45350,22 +45676,23 @@ var init_contracts2 = __esm({
45350
45676
  blockFieldExtensions: sdkBlockFieldExtensionsInputSchema.optional(),
45351
45677
  workflows: sdkWorkflowsSchema,
45352
45678
  content: sdkContentConfigSchema.optional(),
45353
- contentDir: z67.string().optional(),
45354
- sync: z67.object({
45355
- existingEntries: z67.enum(["skip", "update"]).optional()
45679
+ contentDir: z68.string().optional(),
45680
+ sync: z68.object({
45681
+ existingEntries: z68.enum(["skip", "update"]).optional()
45356
45682
  }).optional(),
45357
- deploy: z67.object({
45358
- verifyCommand: z67.string().optional(),
45359
- prebuildOutput: z67.string().optional()
45683
+ deploy: z68.object({
45684
+ verifyCommand: z68.string().optional(),
45685
+ prebuildOutput: z68.string().optional()
45360
45686
  }).optional(),
45361
- themeSource: z67.enum(["local", "cms"]).optional(),
45362
- activeTheme: z67.string().optional(),
45363
- enablePortal: z67.boolean().optional(),
45687
+ themeSource: z68.enum(["local", "cms"]).optional(),
45688
+ activeTheme: z68.string().optional(),
45689
+ enablePortal: z68.boolean().optional(),
45364
45690
  dashboard: dashboardConfigSchema.optional()
45365
45691
  }).strict();
45366
- pushSdkConfigBodySchema = z67.object({
45692
+ pushSdkConfigBodySchema = z68.object({
45367
45693
  config: riverbankSiteConfigInputSchema,
45368
- forceContentTypes: z67.boolean().optional()
45694
+ forceContentTypes: z68.boolean().optional(),
45695
+ mode: z68.enum(["apply", "preview"]).optional()
45369
45696
  }).strict();
45370
45697
  }
45371
45698
  });
@@ -45384,6 +45711,13 @@ var init_incrementalJson = __esm({
45384
45711
  }
45385
45712
  });
45386
45713
 
45714
+ // ../api/src/publicExperienceEndpoints.ts
45715
+ var init_publicExperienceEndpoints = __esm({
45716
+ "../api/src/publicExperienceEndpoints.ts"() {
45717
+ "use strict";
45718
+ }
45719
+ });
45720
+
45387
45721
  // ../api/src/mailchimpIntegration.ts
45388
45722
  var init_mailchimpIntegration = __esm({
45389
45723
  "../api/src/mailchimpIntegration.ts"() {
@@ -45392,7 +45726,7 @@ var init_mailchimpIntegration = __esm({
45392
45726
  });
45393
45727
 
45394
45728
  // ../api/src/siteOnboarding.ts
45395
- import { z as z68 } from "zod";
45729
+ import { z as z69 } from "zod";
45396
45730
  var LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS, acknowledgeLaunchRequirementRequestSchema, goLiveSiteRequestSchema;
45397
45731
  var init_siteOnboarding = __esm({
45398
45732
  "../api/src/siteOnboarding.ts"() {
@@ -45403,24 +45737,24 @@ var init_siteOnboarding = __esm({
45403
45737
  reason: "launch_anyway"
45404
45738
  }
45405
45739
  };
45406
- acknowledgeLaunchRequirementRequestSchema = z68.discriminatedUnion(
45740
+ acknowledgeLaunchRequirementRequestSchema = z69.discriminatedUnion(
45407
45741
  "requirementId",
45408
45742
  [
45409
- z68.object({
45410
- requirementId: z68.literal("review_generated_site")
45743
+ z69.object({
45744
+ requirementId: z69.literal("review_generated_site")
45411
45745
  }),
45412
- z68.object({
45413
- requirementId: z68.literal(
45746
+ z69.object({
45747
+ requirementId: z69.literal(
45414
45748
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.requirementId
45415
45749
  ),
45416
- overrideReason: z68.literal(
45750
+ overrideReason: z69.literal(
45417
45751
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.reason
45418
45752
  )
45419
45753
  })
45420
45754
  ]
45421
45755
  );
45422
- goLiveSiteRequestSchema = z68.object({
45423
- acceptExtraSiteCharge: z68.boolean().optional()
45756
+ goLiveSiteRequestSchema = z69.object({
45757
+ acceptExtraSiteCharge: z69.boolean().optional()
45424
45758
  });
45425
45759
  }
45426
45760
  });
@@ -45609,7 +45943,7 @@ var init_bookingRefundOutcomes = __esm({
45609
45943
  });
45610
45944
 
45611
45945
  // ../api/src/bookingVerticals.ts
45612
- import { z as z69 } from "zod";
45946
+ import { z as z70 } from "zod";
45613
45947
  function parseVerticalId(value) {
45614
45948
  return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
45615
45949
  }
@@ -45790,39 +46124,39 @@ var init_bookingVerticals = __esm({
45790
46124
  VERTICAL_PRESET_ID_SET = new Set(
45791
46125
  VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
45792
46126
  );
45793
- VerticalIdSchema = z69.string().trim().transform((value, ctx) => {
46127
+ VerticalIdSchema = z70.string().trim().transform((value, ctx) => {
45794
46128
  const parsed = parseVerticalId(value);
45795
46129
  if (!parsed) {
45796
46130
  ctx.addIssue({
45797
- code: z69.ZodIssueCode.custom,
46131
+ code: z70.ZodIssueCode.custom,
45798
46132
  message: "Unknown booking vertical"
45799
46133
  });
45800
- return z69.NEVER;
46134
+ return z70.NEVER;
45801
46135
  }
45802
46136
  return parsed;
45803
46137
  });
45804
- VerticalPresetIdSchema = z69.string().trim().transform((value, ctx) => {
46138
+ VerticalPresetIdSchema = z70.string().trim().transform((value, ctx) => {
45805
46139
  const parsed = parseVerticalPresetId(value);
45806
46140
  if (!parsed) {
45807
46141
  ctx.addIssue({
45808
- code: z69.ZodIssueCode.custom,
46142
+ code: z70.ZodIssueCode.custom,
45809
46143
  message: "Unknown booking preset"
45810
46144
  });
45811
- return z69.NEVER;
46145
+ return z70.NEVER;
45812
46146
  }
45813
46147
  return parsed;
45814
46148
  });
45815
- BookingVerticalConfigSchema = z69.object({
46149
+ BookingVerticalConfigSchema = z70.object({
45816
46150
  verticalId: VerticalIdSchema.nullable(),
45817
- selectedPresetIds: z69.array(VerticalPresetIdSchema).max(20)
46151
+ selectedPresetIds: z70.array(VerticalPresetIdSchema).max(20)
45818
46152
  }).transform((value, ctx) => {
45819
46153
  const resolved = resolveSiteVerticalBookingConfig(value);
45820
46154
  if (resolved.kind === "invalid") {
45821
46155
  ctx.addIssue({
45822
- code: z69.ZodIssueCode.custom,
46156
+ code: z70.ZodIssueCode.custom,
45823
46157
  message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
45824
46158
  });
45825
- return z69.NEVER;
46159
+ return z70.NEVER;
45826
46160
  }
45827
46161
  return resolved.config;
45828
46162
  });
@@ -45867,7 +46201,7 @@ var init_error_propagation = __esm({
45867
46201
  });
45868
46202
 
45869
46203
  // ../api/src/appointmentSetup.ts
45870
- import { z as z70 } from "zod";
46204
+ import { z as z71 } from "zod";
45871
46205
  var APPOINTMENT_SETUP_MAX_MINUTES, appointmentSetupRefSchema, appointmentSetupVenueChoiceSchema, appointmentSetupPaymentDraftSchema, appointmentSetupServiceAssignmentDraftSchema, appointmentSetupServiceDraftSchema, appointmentSetupPractitionerDraftSchema, appointmentSetupWeeklyWindowDraftSchema, appointmentSetupStartTimePolicyDraftSchema, appointmentSetupAvailabilityDraftSchema, APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX, APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX, appointmentSetupBookingNoticeSchema, applyAppointmentSetupRequestSchema;
45872
46206
  var init_appointmentSetup = __esm({
45873
46207
  "../api/src/appointmentSetup.ts"() {
@@ -45875,49 +46209,49 @@ var init_appointmentSetup = __esm({
45875
46209
  init_envelope();
45876
46210
  init_error_propagation();
45877
46211
  APPOINTMENT_SETUP_MAX_MINUTES = 1440;
45878
- appointmentSetupRefSchema = z70.discriminatedUnion("kind", [
45879
- z70.object({ kind: z70.literal("existing"), id: z70.string().min(1) }),
45880
- z70.object({ kind: z70.literal("new"), draftId: z70.string().min(1) })
46212
+ appointmentSetupRefSchema = z71.discriminatedUnion("kind", [
46213
+ z71.object({ kind: z71.literal("existing"), id: z71.string().min(1) }),
46214
+ z71.object({ kind: z71.literal("new"), draftId: z71.string().min(1) })
45881
46215
  ]);
45882
- appointmentSetupVenueChoiceSchema = z70.discriminatedUnion("kind", [
45883
- z70.object({ kind: z70.literal("none") }),
45884
- z70.object({ kind: z70.literal("existing"), venueId: z70.string().min(1) }),
45885
- z70.object({
45886
- kind: z70.literal("create"),
45887
- draftId: z70.string().min(1),
45888
- title: z70.string().trim().min(1),
45889
- description: z70.string().nullable(),
45890
- timezone: z70.string().trim().min(1).nullable(),
45891
- addressJson: z70.record(z70.string(), z70.unknown()),
45892
- locationJson: z70.object({ lat: z70.number(), lng: z70.number() }).nullable()
46216
+ appointmentSetupVenueChoiceSchema = z71.discriminatedUnion("kind", [
46217
+ z71.object({ kind: z71.literal("none") }),
46218
+ z71.object({ kind: z71.literal("existing"), venueId: z71.string().min(1) }),
46219
+ z71.object({
46220
+ kind: z71.literal("create"),
46221
+ draftId: z71.string().min(1),
46222
+ title: z71.string().trim().min(1),
46223
+ description: z71.string().nullable(),
46224
+ timezone: z71.string().trim().min(1).nullable(),
46225
+ addressJson: z71.record(z71.string(), z71.unknown()),
46226
+ locationJson: z71.object({ lat: z71.number(), lng: z71.number() }).nullable()
45893
46227
  })
45894
46228
  ]);
45895
- appointmentSetupPaymentDraftSchema = z70.object({
45896
- priceType: z70.union([z70.literal("free"), z70.literal("paid")])
45897
- });
45898
- appointmentSetupServiceAssignmentDraftSchema = z70.discriminatedUnion("kind", [
45899
- z70.object({ kind: z70.literal("all_practitioners") }),
45900
- z70.object({
45901
- kind: z70.literal("selected_practitioners"),
45902
- resourceRefs: z70.array(appointmentSetupRefSchema)
46229
+ appointmentSetupPaymentDraftSchema = z71.object({
46230
+ priceType: z71.union([z71.literal("free"), z71.literal("paid")])
46231
+ });
46232
+ appointmentSetupServiceAssignmentDraftSchema = z71.discriminatedUnion("kind", [
46233
+ z71.object({ kind: z71.literal("all_practitioners") }),
46234
+ z71.object({
46235
+ kind: z71.literal("selected_practitioners"),
46236
+ resourceRefs: z71.array(appointmentSetupRefSchema)
45903
46237
  })
45904
46238
  ]);
45905
- appointmentSetupServiceDraftSchema = z70.object({
46239
+ appointmentSetupServiceDraftSchema = z71.object({
45906
46240
  ref: appointmentSetupRefSchema,
45907
- title: z70.string().trim().min(1),
45908
- description: z70.string().nullable(),
45909
- durationMinutes: z70.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
45910
- prepMinutes: z70.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
45911
- cleanupMinutes: z70.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
45912
- priceAmount: z70.number().int().nonnegative().nullable(),
45913
- isActive: z70.boolean(),
45914
- locationType: z70.union([
45915
- z70.literal("virtual"),
45916
- z70.literal("in_person"),
45917
- z70.literal("hybrid")
46241
+ title: z71.string().trim().min(1),
46242
+ description: z71.string().nullable(),
46243
+ durationMinutes: z71.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
46244
+ prepMinutes: z71.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
46245
+ cleanupMinutes: z71.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
46246
+ priceAmount: z71.number().int().nonnegative().nullable(),
46247
+ isActive: z71.boolean(),
46248
+ locationType: z71.union([
46249
+ z71.literal("virtual"),
46250
+ z71.literal("in_person"),
46251
+ z71.literal("hybrid")
45918
46252
  ]),
45919
46253
  venue: appointmentSetupVenueChoiceSchema,
45920
- timezone: z70.string().trim().min(1).nullable(),
46254
+ timezone: z71.string().trim().min(1).nullable(),
45921
46255
  payment: appointmentSetupPaymentDraftSchema,
45922
46256
  assignment: appointmentSetupServiceAssignmentDraftSchema
45923
46257
  }).superRefine((service, ctx) => {
@@ -45936,49 +46270,49 @@ var init_appointmentSetup = __esm({
45936
46270
  });
45937
46271
  }
45938
46272
  });
45939
- appointmentSetupPractitionerDraftSchema = z70.object({
46273
+ appointmentSetupPractitionerDraftSchema = z71.object({
45940
46274
  ref: appointmentSetupRefSchema,
45941
- displayName: z70.string().trim().min(1),
45942
- bio: z70.string().nullable(),
45943
- timezone: z70.string().trim().min(1),
45944
- colorHex: z70.string().nullable()
45945
- });
45946
- appointmentSetupWeeklyWindowDraftSchema = z70.object({
45947
- weekday: z70.number().int().min(0).max(6),
45948
- startTime: z70.string(),
45949
- endTime: z70.string()
45950
- });
45951
- appointmentSetupStartTimePolicyDraftSchema = z70.discriminatedUnion("kind", [
45952
- z70.object({ kind: z70.literal("automatic_spacing") }),
45953
- z70.object({
45954
- kind: z70.literal("regular_interval"),
45955
- intervalMinutes: z70.union([
45956
- z70.literal(10),
45957
- z70.literal(15),
45958
- z70.literal(20),
45959
- z70.literal(30),
45960
- z70.literal(45),
45961
- z70.literal(60)
46275
+ displayName: z71.string().trim().min(1),
46276
+ bio: z71.string().nullable(),
46277
+ timezone: z71.string().trim().min(1),
46278
+ colorHex: z71.string().nullable()
46279
+ });
46280
+ appointmentSetupWeeklyWindowDraftSchema = z71.object({
46281
+ weekday: z71.number().int().min(0).max(6),
46282
+ startTime: z71.string(),
46283
+ endTime: z71.string()
46284
+ });
46285
+ appointmentSetupStartTimePolicyDraftSchema = z71.discriminatedUnion("kind", [
46286
+ z71.object({ kind: z71.literal("automatic_spacing") }),
46287
+ z71.object({
46288
+ kind: z71.literal("regular_interval"),
46289
+ intervalMinutes: z71.union([
46290
+ z71.literal(10),
46291
+ z71.literal(15),
46292
+ z71.literal(20),
46293
+ z71.literal(30),
46294
+ z71.literal(45),
46295
+ z71.literal(60)
45962
46296
  ])
45963
46297
  })
45964
46298
  ]);
45965
- appointmentSetupAvailabilityDraftSchema = z70.object({
45966
- kind: z70.literal("weekly_windows"),
46299
+ appointmentSetupAvailabilityDraftSchema = z71.object({
46300
+ kind: z71.literal("weekly_windows"),
45967
46301
  resourceRef: appointmentSetupRefSchema,
45968
46302
  serviceRef: appointmentSetupRefSchema.nullable(),
45969
- windows: z70.array(appointmentSetupWeeklyWindowDraftSchema),
46303
+ windows: z71.array(appointmentSetupWeeklyWindowDraftSchema),
45970
46304
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
45971
46305
  });
45972
46306
  APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
45973
46307
  APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
45974
- appointmentSetupBookingNoticeSchema = z70.object({
45975
- minLeadMinutes: z70.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
45976
- maxBookingNoticeMinutes: z70.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
45977
- });
45978
- applyAppointmentSetupRequestSchema = z70.object({
45979
- services: z70.array(appointmentSetupServiceDraftSchema),
45980
- practitioners: z70.array(appointmentSetupPractitionerDraftSchema),
45981
- availability: z70.array(appointmentSetupAvailabilityDraftSchema),
46308
+ appointmentSetupBookingNoticeSchema = z71.object({
46309
+ minLeadMinutes: z71.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
46310
+ maxBookingNoticeMinutes: z71.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
46311
+ });
46312
+ applyAppointmentSetupRequestSchema = z71.object({
46313
+ services: z71.array(appointmentSetupServiceDraftSchema),
46314
+ practitioners: z71.array(appointmentSetupPractitionerDraftSchema),
46315
+ availability: z71.array(appointmentSetupAvailabilityDraftSchema),
45982
46316
  bookingNotice: appointmentSetupBookingNoticeSchema
45983
46317
  });
45984
46318
  }
@@ -46102,7 +46436,7 @@ var init_eventAttendanceLabels = __esm({
46102
46436
  });
46103
46437
 
46104
46438
  // ../api/src/siteBanner.ts
46105
- import { z as z71 } from "zod";
46439
+ import { z as z72 } from "zod";
46106
46440
  function analyzeSiteBannerBody(body) {
46107
46441
  const sanitizedBody = sanitizeSiteBannerBodyInternal(body, { limitParagraphs: false });
46108
46442
  const paragraphs = collectParagraphs(sanitizedBody);
@@ -46285,19 +46619,19 @@ var init_siteBanner = __esm({
46285
46619
  SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
46286
46620
  SITE_BANNER_MAX_TEXT_LENGTH = 320;
46287
46621
  SITE_BANNER_MAX_PARAGRAPHS = 2;
46288
- siteBannerScopeSchema = z71.enum(SITE_BANNER_SCOPE_VALUES);
46289
- siteBannerToneSchema = z71.enum(SITE_BANNER_TONE_VALUES);
46290
- siteBannerBodySchema = z71.unknown().transform(unwrapRichTextValue);
46291
- siteBannerCtaSchema = z71.object({
46292
- label: z71.string().trim().min(1),
46622
+ siteBannerScopeSchema = z72.enum(SITE_BANNER_SCOPE_VALUES);
46623
+ siteBannerToneSchema = z72.enum(SITE_BANNER_TONE_VALUES);
46624
+ siteBannerBodySchema = z72.unknown().transform(unwrapRichTextValue);
46625
+ siteBannerCtaSchema = z72.object({
46626
+ label: z72.string().trim().min(1),
46293
46627
  link: linkPayloadSchema
46294
46628
  });
46295
- siteBannerSettingsSchema = z71.discriminatedUnion("enabled", [
46296
- z71.object({
46297
- enabled: z71.literal(false)
46629
+ siteBannerSettingsSchema = z72.discriminatedUnion("enabled", [
46630
+ z72.object({
46631
+ enabled: z72.literal(false)
46298
46632
  }),
46299
- z71.object({
46300
- enabled: z71.literal(true),
46633
+ z72.object({
46634
+ enabled: z72.literal(true),
46301
46635
  scope: siteBannerScopeSchema,
46302
46636
  tone: siteBannerToneSchema,
46303
46637
  body: siteBannerBodySchema,
@@ -46311,7 +46645,7 @@ var init_siteBanner = __esm({
46311
46645
  const analysis = analyzeSiteBannerBody(value.body);
46312
46646
  for (const issue of analysis.issues) {
46313
46647
  ctx.addIssue({
46314
- code: z71.ZodIssueCode.custom,
46648
+ code: z72.ZodIssueCode.custom,
46315
46649
  path: ["body"],
46316
46650
  message: siteBannerBodyIssueMessage(issue)
46317
46651
  });
@@ -46711,75 +47045,75 @@ var init_aiPatch = __esm({
46711
47045
  });
46712
47046
 
46713
47047
  // ../api/src/aiPlayground.ts
46714
- import { z as z72 } from "zod";
47048
+ import { z as z73 } from "zod";
46715
47049
  var Rfc6902PatchOp, PlaygroundProposeRequest, MultiPagePatchEnvelope, MultiPageUpdateResponse;
46716
47050
  var init_aiPlayground = __esm({
46717
47051
  "../api/src/aiPlayground.ts"() {
46718
47052
  "use strict";
46719
- Rfc6902PatchOp = z72.discriminatedUnion("op", [
47053
+ Rfc6902PatchOp = z73.discriminatedUnion("op", [
46720
47054
  // Standard RFC-6902 operations
46721
- z72.object({
46722
- op: z72.literal("add"),
46723
- path: z72.string(),
46724
- value: z72.unknown()
47055
+ z73.object({
47056
+ op: z73.literal("add"),
47057
+ path: z73.string(),
47058
+ value: z73.unknown()
46725
47059
  }),
46726
- z72.object({
46727
- op: z72.literal("remove"),
46728
- path: z72.string()
47060
+ z73.object({
47061
+ op: z73.literal("remove"),
47062
+ path: z73.string()
46729
47063
  }),
46730
- z72.object({
46731
- op: z72.literal("replace"),
46732
- path: z72.string(),
46733
- value: z72.unknown()
47064
+ z73.object({
47065
+ op: z73.literal("replace"),
47066
+ path: z73.string(),
47067
+ value: z73.unknown()
46734
47068
  }),
46735
- z72.object({
46736
- op: z72.literal("move"),
46737
- from: z72.string(),
46738
- path: z72.string()
47069
+ z73.object({
47070
+ op: z73.literal("move"),
47071
+ from: z73.string(),
47072
+ path: z73.string()
46739
47073
  }),
46740
- z72.object({
46741
- op: z72.literal("copy"),
46742
- from: z72.string(),
46743
- path: z72.string()
47074
+ z73.object({
47075
+ op: z73.literal("copy"),
47076
+ from: z73.string(),
47077
+ path: z73.string()
46744
47078
  }),
46745
47079
  // Block-level operations (Phase 2)
46746
- z72.object({
46747
- op: z72.literal("add_block"),
46748
- blockKind: z72.string(),
46749
- afterBlockId: z72.string().nullable(),
46750
- content: z72.record(z72.string(), z72.unknown()),
46751
- rationale: z72.string()
47080
+ z73.object({
47081
+ op: z73.literal("add_block"),
47082
+ blockKind: z73.string(),
47083
+ afterBlockId: z73.string().nullable(),
47084
+ content: z73.record(z73.string(), z73.unknown()),
47085
+ rationale: z73.string()
46752
47086
  }),
46753
- z72.object({
46754
- op: z72.literal("delete_block"),
46755
- blockId: z72.string(),
46756
- rationale: z72.string()
47087
+ z73.object({
47088
+ op: z73.literal("delete_block"),
47089
+ blockId: z73.string(),
47090
+ rationale: z73.string()
46757
47091
  }),
46758
- z72.object({
46759
- op: z72.literal("reorder_block"),
46760
- blockId: z72.string(),
46761
- afterBlockId: z72.string().nullable(),
46762
- rationale: z72.string()
47092
+ z73.object({
47093
+ op: z73.literal("reorder_block"),
47094
+ blockId: z73.string(),
47095
+ afterBlockId: z73.string().nullable(),
47096
+ rationale: z73.string()
46763
47097
  })
46764
47098
  ]);
46765
- PlaygroundProposeRequest = z72.object({
46766
- request: z72.string().min(1).max(2e3)
47099
+ PlaygroundProposeRequest = z73.object({
47100
+ request: z73.string().min(1).max(2e3)
46767
47101
  });
46768
- MultiPagePatchEnvelope = z72.object({
46769
- pageId: z72.string(),
46770
- blockId: z72.string().optional(),
47102
+ MultiPagePatchEnvelope = z73.object({
47103
+ pageId: z73.string(),
47104
+ blockId: z73.string().optional(),
46771
47105
  // Not present for page-level ops
46772
- blockKind: z72.string().optional(),
46773
- blockPurpose: z72.string().optional().nullable(),
46774
- ops: z72.array(Rfc6902PatchOp),
46775
- rationale: z72.string(),
46776
- currentContent: z72.record(z72.string(), z72.unknown()).optional()
47106
+ blockKind: z73.string().optional(),
47107
+ blockPurpose: z73.string().optional().nullable(),
47108
+ ops: z73.array(Rfc6902PatchOp),
47109
+ rationale: z73.string(),
47110
+ currentContent: z73.record(z73.string(), z73.unknown()).optional()
46777
47111
  });
46778
- MultiPageUpdateResponse = z72.object({
46779
- patches: z72.array(MultiPagePatchEnvelope),
46780
- assistantMessage: z72.string(),
46781
- pagesModified: z72.number(),
46782
- toolCallsUsed: z72.number()
47112
+ MultiPageUpdateResponse = z73.object({
47113
+ patches: z73.array(MultiPagePatchEnvelope),
47114
+ assistantMessage: z73.string(),
47115
+ pagesModified: z73.number(),
47116
+ toolCallsUsed: z73.number()
46783
47117
  });
46784
47118
  }
46785
47119
  });
@@ -46850,6 +47184,7 @@ var init_src5 = __esm({
46850
47184
  init_contracts2();
46851
47185
  init_sdkContracts();
46852
47186
  init_incrementalJson();
47187
+ init_publicExperienceEndpoints();
46853
47188
  init_mailchimpIntegration();
46854
47189
  init_launchReadiness();
46855
47190
  init_url();
@@ -47154,6 +47489,15 @@ async function getPublicBookingServices({ client, params }) {
47154
47489
  ids: readStringParam(params, "ids")
47155
47490
  });
47156
47491
  }
47492
+ async function getPublicWeeklySlotAvailability({ client, params }) {
47493
+ return await client.getPublicWeeklySlotAvailability({
47494
+ siteId: requireStringParam(params, "siteId", "getPublicWeeklySlotAvailability"),
47495
+ serviceId: requireStringParam(params, "serviceId", "getPublicWeeklySlotAvailability"),
47496
+ resourceId: readStringParam(params, "resourceId"),
47497
+ horizonWeeks: parsePositiveIntegerParam(params, "horizonWeeks"),
47498
+ timezone: readStringParam(params, "timezone")
47499
+ });
47500
+ }
47157
47501
  async function prefetchBlockData2(page, context, client, options) {
47158
47502
  const { customBlocks } = options ?? {};
47159
47503
  const customBlockMap = new Map(
@@ -47219,7 +47563,8 @@ var init_prefetchBlockData2 = __esm({
47219
47563
  listPublicPasses,
47220
47564
  listPublicMemberships,
47221
47565
  getPublicFormById,
47222
- getPublicBookingServices
47566
+ getPublicBookingServices,
47567
+ getPublicWeeklySlotAvailability
47223
47568
  };
47224
47569
  }
47225
47570
  });
@@ -47377,7 +47722,16 @@ __export(loadPage_exports, {
47377
47722
  loadPage: () => loadPage
47378
47723
  });
47379
47724
  async function loadPage(params) {
47380
- const { client, siteId, path, pageId, preview = false, dataLoaderOverrides, searchParams, forceSite } = params;
47725
+ const {
47726
+ client,
47727
+ siteId,
47728
+ path,
47729
+ pageId,
47730
+ preview = false,
47731
+ dataLoaderOverrides,
47732
+ searchParams,
47733
+ forceSite
47734
+ } = params;
47381
47735
  const [site, pageResponse] = await Promise.all([
47382
47736
  client.getSite({ id: siteId, ...forceSite ? { force: true } : {} }),
47383
47737
  client.getPage({ siteId, path, preview })
@@ -47387,6 +47741,11 @@ async function loadPage(params) {
47387
47741
  "This path resolves to a content entry, not a page. Use loadContent() instead, which handles both pages and entries. For entries, loadContent() returns the raw entry data for custom rendering."
47388
47742
  );
47389
47743
  }
47744
+ if ("pageSurface" in pageResponse) {
47745
+ throw new Error(
47746
+ "This path resolves to a page surface, not a page. Use loadContent() instead, which handles pages, entries, and page surfaces."
47747
+ );
47748
+ }
47390
47749
  const { page: pageData } = pageResponse;
47391
47750
  const support = buildSiteRenderSupport(
47392
47751
  site,
@@ -47416,7 +47775,11 @@ async function loadPage(params) {
47416
47775
  );
47417
47776
  let resolvedData = configData;
47418
47777
  if (dataLoaderOverrides && Object.keys(dataLoaderOverrides).length > 0) {
47419
- const codeData = await executeCodeLoaders(pageOutline, prefetchContext, dataLoaderOverrides);
47778
+ const codeData = await executeCodeLoaders(
47779
+ pageOutline,
47780
+ prefetchContext,
47781
+ dataLoaderOverrides
47782
+ );
47420
47783
  resolvedData = mergeLoaderResults(configData, codeData);
47421
47784
  }
47422
47785
  return {