@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
@@ -44,7 +44,7 @@ function fallbackBinding(...sources) {
44
44
  }
45
45
 
46
46
  // src/config/validation.ts
47
- import { z as z72 } from "zod";
47
+ import { z as z73 } from "zod";
48
48
 
49
49
  // ../api/src/apiEndpointTypes.ts
50
50
  function blockedDemoMutationPolicy(classification, publicMessage) {
@@ -1085,6 +1085,94 @@ var ENDPOINT_DEFINITIONS = {
1085
1085
  responseKind: "json",
1086
1086
  errors: ["resource:not_found", "server:internal_error"]
1087
1087
  },
1088
+ listAppointmentReservations: {
1089
+ path: "/sites/{siteId}/bookings/appointment-reservations",
1090
+ method: "GET",
1091
+ auth: "user",
1092
+ responseKind: "json",
1093
+ errors: []
1094
+ },
1095
+ createAppointmentReservation: {
1096
+ path: "/sites/{siteId}/bookings/appointment-reservations",
1097
+ method: "POST",
1098
+ auth: "user",
1099
+ responseKind: "json",
1100
+ errors: [
1101
+ "validation:invalid_input",
1102
+ "resource:not_found",
1103
+ "resource:conflict",
1104
+ "server:internal_error"
1105
+ ]
1106
+ },
1107
+ getAppointmentReservation: {
1108
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}",
1109
+ method: "GET",
1110
+ auth: "user",
1111
+ responseKind: "json",
1112
+ errors: ["resource:not_found", "server:internal_error"]
1113
+ },
1114
+ updateAppointmentReservation: {
1115
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}",
1116
+ method: "PUT",
1117
+ auth: "user",
1118
+ responseKind: "json",
1119
+ errors: [
1120
+ "validation:invalid_input",
1121
+ "resource:not_found",
1122
+ "resource:conflict",
1123
+ "server:internal_error"
1124
+ ]
1125
+ },
1126
+ pauseAppointmentReservation: {
1127
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/pause",
1128
+ method: "POST",
1129
+ auth: "user",
1130
+ responseKind: "json",
1131
+ errors: ["resource:not_found", "resource:conflict", "server:internal_error"]
1132
+ },
1133
+ resumeAppointmentReservation: {
1134
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/resume",
1135
+ method: "POST",
1136
+ auth: "user",
1137
+ responseKind: "json",
1138
+ errors: ["resource:not_found", "resource:conflict", "server:internal_error"]
1139
+ },
1140
+ endAppointmentReservation: {
1141
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/end",
1142
+ method: "POST",
1143
+ auth: "user",
1144
+ responseKind: "json",
1145
+ errors: [
1146
+ "validation:invalid_input",
1147
+ "resource:not_found",
1148
+ "resource:conflict",
1149
+ "server:internal_error"
1150
+ ]
1151
+ },
1152
+ previewAppointmentReservationRun: {
1153
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/run-preview",
1154
+ method: "POST",
1155
+ auth: "user",
1156
+ responseKind: "json",
1157
+ errors: [
1158
+ "validation:invalid_input",
1159
+ "resource:not_found",
1160
+ "resource:conflict",
1161
+ "server:internal_error"
1162
+ ]
1163
+ },
1164
+ createAppointmentReservationRun: {
1165
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/runs",
1166
+ method: "POST",
1167
+ auth: "user",
1168
+ responseKind: "json",
1169
+ errors: [
1170
+ "validation:invalid_input",
1171
+ "resource:not_found",
1172
+ "resource:conflict",
1173
+ "server:internal_error"
1174
+ ]
1175
+ },
1088
1176
  createTeamMemberProfile: {
1089
1177
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile",
1090
1178
  method: "POST",
@@ -3541,6 +3629,18 @@ var ENDPOINT_DEFINITIONS = {
3541
3629
  responseKind: "json",
3542
3630
  errors: ["validation:invalid_input", "server:internal_error"]
3543
3631
  },
3632
+ resolveRouteDecision: {
3633
+ path: "/sites/{siteId}/route-decision",
3634
+ method: "GET",
3635
+ tags: [
3636
+ TAG_TEMPLATES.siteRoutableContent,
3637
+ TAG_TEMPLATES.siteRedirects,
3638
+ TAG_TEMPLATES.siteRouteOutcomes
3639
+ ],
3640
+ auth: "public",
3641
+ responseKind: "json",
3642
+ errors: ["validation:invalid_input", "server:internal_error"]
3643
+ },
3544
3644
  getPageByPath: {
3545
3645
  path: "/sites/{siteId}/pages",
3546
3646
  method: "GET",
@@ -3679,6 +3779,15 @@ var ENDPOINT_DEFINITIONS = {
3679
3779
  auth: "public",
3680
3780
  responseKind: "json"
3681
3781
  },
3782
+ getPublicWeeklySlotAvailability: {
3783
+ path: "/public/bookings/weekly-slot-availability",
3784
+ method: "GET",
3785
+ revalidate: 60,
3786
+ tags: ["site-{siteId}"],
3787
+ auth: "public",
3788
+ responseKind: "json",
3789
+ errors: []
3790
+ },
3682
3791
  createPublicBookingAppointment: {
3683
3792
  path: "/public/bookings/appointments",
3684
3793
  method: "POST",
@@ -6831,7 +6940,7 @@ var navigationLinkInputSchema = z2.discriminatedUnion(
6831
6940
  );
6832
6941
 
6833
6942
  // ../api/src/sdkConfig/contracts.ts
6834
- import { z as z63 } from "zod";
6943
+ import { z as z64 } from "zod";
6835
6944
 
6836
6945
  // ../blocks/src/system/manifest/augmentManifest.ts
6837
6946
  function augmentManifest(manifest) {
@@ -7000,10 +7109,20 @@ var repeatSchema = z3.object({
7000
7109
  direction: z3.enum(["asc", "desc"]).default("asc")
7001
7110
  }).optional()
7002
7111
  });
7112
+ var conditionalAuthoringPresenceSchema = z3.discriminatedUnion("kind", [
7113
+ z3.object({ kind: z3.literal("visitor-only") }),
7114
+ z3.object({
7115
+ kind: z3.literal("recover-empty-when-active"),
7116
+ placeholder: z3.string().min(1).optional()
7117
+ })
7118
+ ]);
7003
7119
  var conditionSchema = z3.object({
7004
7120
  when: bindingSchema,
7005
7121
  equals: z3.unknown().optional(),
7006
- not: z3.boolean().default(false)
7122
+ not: z3.boolean().default(false),
7123
+ authoringPresence: conditionalAuthoringPresenceSchema.default({
7124
+ kind: "visitor-only"
7125
+ })
7007
7126
  });
7008
7127
  var dataScopeSchema = z3.object({
7009
7128
  name: z3.string().min(1),
@@ -7064,6 +7183,7 @@ var ALLOWED_NODE_TYPES = [
7064
7183
  // Forms
7065
7184
  "form",
7066
7185
  "booking-form",
7186
+ "weekly-slot-availability",
7067
7187
  // Events
7068
7188
  "event-registration",
7069
7189
  "event-spotlight",
@@ -18101,7 +18221,8 @@ function when(path, options) {
18101
18221
  $when: {
18102
18222
  when: { from: path },
18103
18223
  ...options?.equals !== void 0 ? { equals: options.equals } : {},
18104
- ...options?.not ? { not: true } : {}
18224
+ ...options?.not ? { not: true } : {},
18225
+ ...options?.authoringPresence ? { authoringPresence: options.authoringPresence } : {}
18105
18226
  }
18106
18227
  });
18107
18228
  }
@@ -27928,77 +28049,247 @@ var appointmentBookingBlockDefinition = {
27928
28049
  }
27929
28050
  };
27930
28051
 
28052
+ // ../blocks/src/system/blocks/weekly-slot-availability.ts
28053
+ import { z as z39 } from "zod";
28054
+ var weeklySlotAvailabilityManifest = createBlockManifest({
28055
+ id: "block.weekly-slot-availability",
28056
+ version: "1.0.0",
28057
+ title: "Weekly Slot Availability",
28058
+ titleSource: "heading",
28059
+ description: "Shows available recurring appointment slot patterns",
28060
+ skipSectionStyles: true,
28061
+ additionalFields: [
28062
+ {
28063
+ id: "serviceId",
28064
+ type: "reference",
28065
+ label: "Appointment service",
28066
+ description: "Choose which appointment service to show availability for",
28067
+ required: true,
28068
+ referenceKind: "appointmentService",
28069
+ allowManualEntry: false,
28070
+ ui: { intent: "behavior" }
28071
+ },
28072
+ {
28073
+ id: "resourceId",
28074
+ type: "reference",
28075
+ label: "Appointment resource",
28076
+ description: "Optionally narrow the availability to one practitioner or room",
28077
+ required: false,
28078
+ referenceKind: "appointmentResource",
28079
+ allowManualEntry: false,
28080
+ ui: { intent: "behavior" }
28081
+ },
28082
+ {
28083
+ id: "horizonWeeks",
28084
+ type: "select",
28085
+ label: "Look ahead",
28086
+ required: false,
28087
+ multiple: false,
28088
+ defaultValue: "4",
28089
+ options: [
28090
+ { value: "1", label: "1 week" },
28091
+ { value: "2", label: "2 weeks" },
28092
+ { value: "4", label: "4 weeks" }
28093
+ ],
28094
+ ui: { intent: "behavior" }
28095
+ },
28096
+ {
28097
+ id: "timezone",
28098
+ type: "text",
28099
+ label: "Timezone",
28100
+ description: "Leave blank to use the visitor timezone when the block loads",
28101
+ required: false,
28102
+ multiline: false,
28103
+ defaultValue: "",
28104
+ maxLength: 64,
28105
+ ui: { intent: "behavior" }
28106
+ },
28107
+ {
28108
+ id: "heading",
28109
+ type: "text",
28110
+ label: "Heading",
28111
+ required: false,
28112
+ multiline: false,
28113
+ defaultValue: "Weekly availability"
28114
+ },
28115
+ {
28116
+ id: "description",
28117
+ type: "richText",
28118
+ label: "Description",
28119
+ required: false
28120
+ },
28121
+ {
28122
+ id: "emptyMessage",
28123
+ type: "text",
28124
+ label: "Empty message",
28125
+ required: false,
28126
+ multiline: true,
28127
+ defaultValue: "No regular weekly openings are currently available.",
28128
+ maxLength: 180
28129
+ },
28130
+ {
28131
+ id: "ctaText",
28132
+ type: "text",
28133
+ label: "Enquiry button text",
28134
+ required: false,
28135
+ multiline: false,
28136
+ defaultValue: "Enquire about this slot",
28137
+ maxLength: 60
28138
+ },
28139
+ {
28140
+ id: "ctaUrl",
28141
+ type: "url",
28142
+ label: "Enquiry URL",
28143
+ required: false,
28144
+ ui: { intent: "behavior" }
28145
+ },
28146
+ sectionStylesField({
28147
+ id: "_sectionStyles",
28148
+ label: "Section styles"
28149
+ })
28150
+ ],
28151
+ styleTokens: { background: "surface", typography: "body", spacing: "md" },
28152
+ behaviours: {
28153
+ supportsThemeSwitching: true,
28154
+ inlineEditing: false,
28155
+ animation: false,
28156
+ paletteHidden: false
28157
+ },
28158
+ category: "interactive",
28159
+ tags: ["booking", "appointment", "calendar", "weekly", "availability"],
28160
+ icon: "CalendarDays",
28161
+ layout: [
28162
+ styledSection({
28163
+ children: sectionContainer([
28164
+ text({ as: "h2" }, bind("content.heading"), when("content.heading")),
28165
+ richText({}, bind("content.description"), when("content.description")),
28166
+ el(
28167
+ "weekly-slot-availability",
28168
+ withApiBindings({
28169
+ serviceId: { $bind: { from: "content.serviceId" } },
28170
+ resourceId: { $bind: { from: "content.resourceId", fallback: null } },
28171
+ horizonWeeks: { $bind: { from: "content.horizonWeeks", fallback: "4" } },
28172
+ timezone: { $bind: { from: "content.timezone", fallback: null } },
28173
+ availability: { $bind: { from: "data.availability", fallback: null } },
28174
+ emptyMessage: { $bind: { from: "content.emptyMessage", fallback: null } },
28175
+ ctaText: { $bind: { from: "content.ctaText", fallback: null } },
28176
+ ctaUrl: { $bind: { from: "content.ctaUrl", fallback: null } }
28177
+ })
28178
+ )
28179
+ ], {
28180
+ gap: "lg"
28181
+ }),
28182
+ baseClass: "",
28183
+ spacing: "spacious"
28184
+ })
28185
+ ]
28186
+ });
28187
+ var weeklySlotAvailabilityOptionSchema = z39.object({
28188
+ id: z39.string(),
28189
+ resourceId: z39.string(),
28190
+ weekday: z39.number(),
28191
+ weekdayLabel: z39.string(),
28192
+ startTime: z39.string(),
28193
+ endTime: z39.string(),
28194
+ nextDate: z39.string(),
28195
+ availableWeeks: z39.number()
28196
+ });
28197
+ var weeklySlotAvailabilityDataSchema = z39.object({
28198
+ slots: z39.array(weeklySlotAvailabilityOptionSchema),
28199
+ horizonWeeks: z39.number(),
28200
+ timezone: z39.string(),
28201
+ startDate: z39.string(),
28202
+ endDate: z39.string()
28203
+ });
28204
+ var weeklySlotAvailabilityBlockDefinition = {
28205
+ manifest: weeklySlotAvailabilityManifest,
28206
+ dataSchemas: { availability: weeklySlotAvailabilityDataSchema.optional() },
28207
+ dataLoaders: {
28208
+ availability: {
28209
+ endpoint: "getPublicWeeklySlotAvailability",
28210
+ params: {
28211
+ siteId: { $bind: { from: "$root.siteId" } },
28212
+ serviceId: { $bind: { from: "content.serviceId" } },
28213
+ resourceId: { $bind: { from: "content.resourceId", fallback: void 0 } },
28214
+ horizonWeeks: { $bind: { from: "content.horizonWeeks", fallback: "4" } },
28215
+ timezone: { $bind: { from: "content.timezone", fallback: void 0 } }
28216
+ },
28217
+ mode: "server"
28218
+ }
28219
+ }
28220
+ };
28221
+
27931
28222
  // ../blocks/src/system/blocks/events/shared/schemas.ts
27932
- import { z as z43 } from "zod";
28223
+ import { z as z44 } from "zod";
27933
28224
 
27934
28225
  // ../blocks/src/lib/media.ts
27935
- import z39 from "zod";
28226
+ import z40 from "zod";
27936
28227
  var PUBLIC_DOWNLOAD_MEDIA_TYPES = [
27937
28228
  "document",
27938
28229
  "spreadsheet",
27939
28230
  "archive",
27940
28231
  "audio"
27941
28232
  ];
27942
- var hotspotSchema2 = z39.object({
27943
- x: z39.number().min(0).max(1),
27944
- y: z39.number().min(0).max(1),
27945
- radius: z39.number().optional()
27946
- });
27947
- var rotationSchema2 = z39.union([z39.literal(0), z39.literal(90), z39.literal(180), z39.literal(270)]);
27948
- var rectSchema2 = z39.tuple([z39.number(), z39.number(), z39.number(), z39.number()]);
27949
- var aspectCropSchema2 = z39.object({
27950
- aspect: z39.preprocess((value) => value == null ? void 0 : value, z39.string().optional()),
27951
- rect: z39.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
27952
- hotspot: z39.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
27953
- rotation: z39.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
27954
- });
27955
- var transformSchema2 = z39.object({
27956
- aspectCrops: z39.preprocess((value) => {
28233
+ var hotspotSchema2 = z40.object({
28234
+ x: z40.number().min(0).max(1),
28235
+ y: z40.number().min(0).max(1),
28236
+ radius: z40.number().optional()
28237
+ });
28238
+ var rotationSchema2 = z40.union([z40.literal(0), z40.literal(90), z40.literal(180), z40.literal(270)]);
28239
+ var rectSchema2 = z40.tuple([z40.number(), z40.number(), z40.number(), z40.number()]);
28240
+ var aspectCropSchema2 = z40.object({
28241
+ aspect: z40.preprocess((value) => value == null ? void 0 : value, z40.string().optional()),
28242
+ rect: z40.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
28243
+ hotspot: z40.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
28244
+ rotation: z40.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
28245
+ });
28246
+ var transformSchema2 = z40.object({
28247
+ aspectCrops: z40.preprocess((value) => {
27957
28248
  if (!value || typeof value !== "object" || Array.isArray(value)) {
27958
28249
  return void 0;
27959
28250
  }
27960
28251
  return value;
27961
- }, z39.record(z39.string(), aspectCropSchema2.catch({}))).optional(),
28252
+ }, z40.record(z40.string(), aspectCropSchema2.catch({}))).optional(),
27962
28253
  rect: rectSchema2.optional(),
27963
28254
  hotspot: hotspotSchema2.optional(),
27964
28255
  rotation: rotationSchema2.optional()
27965
28256
  });
27966
- var mediaPosterSchema = z39.discriminatedUnion("tag", [
27967
- z39.object({
27968
- tag: z39.literal("storage"),
27969
- assetId: z39.string().optional(),
27970
- storageBucket: z39.string().min(1),
27971
- storagePath: z39.string().min(1)
28257
+ var mediaPosterSchema = z40.discriminatedUnion("tag", [
28258
+ z40.object({
28259
+ tag: z40.literal("storage"),
28260
+ assetId: z40.string().optional(),
28261
+ storageBucket: z40.string().min(1),
28262
+ storagePath: z40.string().min(1)
27972
28263
  }),
27973
- z39.object({
27974
- tag: z39.literal("external-src"),
27975
- assetId: z39.string().optional(),
27976
- src: z39.string().url()
28264
+ z40.object({
28265
+ tag: z40.literal("external-src"),
28266
+ assetId: z40.string().optional(),
28267
+ src: z40.string().url()
27977
28268
  })
27978
28269
  ]);
27979
- var mediaBaseSchema = z39.object({
27980
- purpose: z39.string().optional(),
27981
- placeholder: z39.boolean().default(true).optional(),
27982
- assetId: z39.string().optional(),
27983
- identifier: z39.string().optional(),
27984
- src: z39.string().optional(),
27985
- alt: z39.string().optional(),
27986
- filename: z39.string().optional(),
27987
- mimeType: z39.string().optional(),
27988
- width: z39.number().optional(),
27989
- height: z39.number().optional(),
27990
- storageBucket: z39.string().optional(),
27991
- storagePath: z39.string().optional(),
28270
+ var mediaBaseSchema = z40.object({
28271
+ purpose: z40.string().optional(),
28272
+ placeholder: z40.boolean().default(true).optional(),
28273
+ assetId: z40.string().optional(),
28274
+ identifier: z40.string().optional(),
28275
+ src: z40.string().optional(),
28276
+ alt: z40.string().optional(),
28277
+ filename: z40.string().optional(),
28278
+ mimeType: z40.string().optional(),
28279
+ width: z40.number().optional(),
28280
+ height: z40.number().optional(),
28281
+ storageBucket: z40.string().optional(),
28282
+ storagePath: z40.string().optional(),
27992
28283
  poster: mediaPosterSchema.optional(),
27993
28284
  transform: transformSchema2.optional()
27994
28285
  });
27995
- var imageMediaSchema = mediaBaseSchema.extend({ type: z39.literal("image") });
27996
- var videoMediaSchema = mediaBaseSchema.extend({ type: z39.literal("video") });
27997
- var audioMediaSchema = mediaBaseSchema.extend({ type: z39.literal("audio") });
27998
- var documentMediaSchema = mediaBaseSchema.extend({ type: z39.literal("document") });
27999
- var spreadsheetMediaSchema = mediaBaseSchema.extend({ type: z39.literal("spreadsheet") });
28000
- var archiveMediaSchema = mediaBaseSchema.extend({ type: z39.literal("archive") });
28001
- var mediaSchema2 = z39.discriminatedUnion("type", [
28286
+ var imageMediaSchema = mediaBaseSchema.extend({ type: z40.literal("image") });
28287
+ var videoMediaSchema = mediaBaseSchema.extend({ type: z40.literal("video") });
28288
+ var audioMediaSchema = mediaBaseSchema.extend({ type: z40.literal("audio") });
28289
+ var documentMediaSchema = mediaBaseSchema.extend({ type: z40.literal("document") });
28290
+ var spreadsheetMediaSchema = mediaBaseSchema.extend({ type: z40.literal("spreadsheet") });
28291
+ var archiveMediaSchema = mediaBaseSchema.extend({ type: z40.literal("archive") });
28292
+ var mediaSchema2 = z40.discriminatedUnion("type", [
28002
28293
  imageMediaSchema,
28003
28294
  videoMediaSchema,
28004
28295
  audioMediaSchema,
@@ -28008,372 +28299,372 @@ var mediaSchema2 = z39.discriminatedUnion("type", [
28008
28299
  ]);
28009
28300
 
28010
28301
  // ../blocks/src/system/manifest/richTextSchema.ts
28011
- import { z as z40 } from "zod";
28012
- var TipTapMarkSchema = z40.object({
28013
- type: z40.string(),
28014
- attrs: z40.record(z40.string(), z40.unknown()).optional()
28015
- });
28016
- var TipTapNodeSchema = z40.lazy(
28017
- () => z40.object({
28018
- type: z40.string(),
28019
- content: z40.array(TipTapNodeSchema).optional(),
28020
- text: z40.string().optional(),
28021
- attrs: z40.record(z40.string(), z40.unknown()).optional(),
28022
- marks: z40.array(TipTapMarkSchema).optional()
28302
+ import { z as z41 } from "zod";
28303
+ var TipTapMarkSchema = z41.object({
28304
+ type: z41.string(),
28305
+ attrs: z41.record(z41.string(), z41.unknown()).optional()
28306
+ });
28307
+ var TipTapNodeSchema = z41.lazy(
28308
+ () => z41.object({
28309
+ type: z41.string(),
28310
+ content: z41.array(TipTapNodeSchema).optional(),
28311
+ text: z41.string().optional(),
28312
+ attrs: z41.record(z41.string(), z41.unknown()).optional(),
28313
+ marks: z41.array(TipTapMarkSchema).optional()
28023
28314
  })
28024
28315
  );
28025
- var RichTextValueSchema = z40.union([
28316
+ var RichTextValueSchema = z41.union([
28026
28317
  // Canonical: TipTap document directly
28027
28318
  TipTapNodeSchema,
28028
28319
  // Legacy (read-tolerance only): wrapped in { doc: {...} }
28029
- z40.object({
28320
+ z41.object({
28030
28321
  doc: TipTapNodeSchema
28031
28322
  })
28032
28323
  ]);
28033
- var RichTextDocSchema = z40.object({
28034
- type: z40.literal("doc"),
28035
- content: z40.array(TipTapNodeSchema)
28324
+ var RichTextDocSchema = z41.object({
28325
+ type: z41.literal("doc"),
28326
+ content: z41.array(TipTapNodeSchema)
28036
28327
  });
28037
28328
 
28038
28329
  // ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
28039
- import { z as z41 } from "zod";
28040
- var bookingDepositRefundPolicySchema = z41.enum([
28330
+ import { z as z42 } from "zod";
28331
+ var bookingDepositRefundPolicySchema = z42.enum([
28041
28332
  "refundable",
28042
28333
  "non_refundable"
28043
28334
  ]);
28044
- var bookingInstalmentPlanSchema = z41.union([
28045
- z41.object({
28046
- kind: z41.literal("deposit_plus_one_remainder"),
28047
- depositAmountCents: z41.number().int().min(0),
28335
+ var bookingInstalmentPlanSchema = z42.union([
28336
+ z42.object({
28337
+ kind: z42.literal("deposit_plus_one_remainder"),
28338
+ depositAmountCents: z42.number().int().min(0),
28048
28339
  depositRefundability: bookingDepositRefundPolicySchema,
28049
- remainderDueCount: z41.number().int().positive(),
28050
- intervalUnit: z41.enum(["day", "week", "month"])
28340
+ remainderDueCount: z42.number().int().positive(),
28341
+ intervalUnit: z42.enum(["day", "week", "month"])
28051
28342
  }),
28052
- z41.object({
28053
- kind: z41.literal("deposit_plus_scheduled_instalments"),
28054
- depositAmountCents: z41.number().int().min(0),
28343
+ z42.object({
28344
+ kind: z42.literal("deposit_plus_scheduled_instalments"),
28345
+ depositAmountCents: z42.number().int().min(0),
28055
28346
  depositRefundability: bookingDepositRefundPolicySchema,
28056
- instalmentCount: z41.number().int().positive(),
28057
- intervalCount: z41.number().int().positive(),
28058
- intervalUnit: z41.enum(["day", "week", "month"])
28347
+ instalmentCount: z42.number().int().positive(),
28348
+ intervalCount: z42.number().int().positive(),
28349
+ intervalUnit: z42.enum(["day", "week", "month"])
28059
28350
  }),
28060
- z41.object({
28061
- kind: z41.literal("equal_scheduled_instalments"),
28062
- instalmentCount: z41.number().int().positive(),
28063
- intervalCount: z41.number().int().positive(),
28064
- intervalUnit: z41.enum(["day", "week", "month"])
28351
+ z42.object({
28352
+ kind: z42.literal("equal_scheduled_instalments"),
28353
+ instalmentCount: z42.number().int().positive(),
28354
+ intervalCount: z42.number().int().positive(),
28355
+ intervalUnit: z42.enum(["day", "week", "month"])
28065
28356
  })
28066
28357
  ]);
28067
- var bookingFlexibleBalanceDueDateRuleSchema = z41.union([
28068
- z41.object({
28069
- kind: z41.literal("relative_to_start_date"),
28070
- daysBeforeStart: z41.number().int().positive()
28358
+ var bookingFlexibleBalanceDueDateRuleSchema = z42.union([
28359
+ z42.object({
28360
+ kind: z42.literal("relative_to_start_date"),
28361
+ daysBeforeStart: z42.number().int().positive()
28071
28362
  }),
28072
- z41.object({
28073
- kind: z41.literal("fixed_calendar_date"),
28074
- dueAt: z41.string().datetime()
28363
+ z42.object({
28364
+ kind: z42.literal("fixed_calendar_date"),
28365
+ dueAt: z42.string().datetime()
28075
28366
  })
28076
28367
  ]);
28077
- var bookingFlexibleBalanceConfigSchema = z41.object({
28078
- upfrontAmountCents: z41.number().int().min(0),
28368
+ var bookingFlexibleBalanceConfigSchema = z42.object({
28369
+ upfrontAmountCents: z42.number().int().min(0),
28079
28370
  dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
28080
28371
  depositRefundability: bookingDepositRefundPolicySchema
28081
28372
  });
28082
- var blockBookingPaymentCollectionOptionSchema = z41.union([
28083
- z41.object({
28084
- kind: z41.literal("upfront")
28373
+ var blockBookingPaymentCollectionOptionSchema = z42.union([
28374
+ z42.object({
28375
+ kind: z42.literal("upfront")
28085
28376
  }),
28086
- z41.object({
28087
- kind: z41.literal("deferred_manual")
28377
+ z42.object({
28378
+ kind: z42.literal("deferred_manual")
28088
28379
  }),
28089
- z41.object({
28090
- kind: z41.literal("instalment_plan"),
28380
+ z42.object({
28381
+ kind: z42.literal("instalment_plan"),
28091
28382
  plan: bookingInstalmentPlanSchema
28092
28383
  }),
28093
- z41.object({
28094
- kind: z41.literal("flexible_balance"),
28384
+ z42.object({
28385
+ kind: z42.literal("flexible_balance"),
28095
28386
  config: bookingFlexibleBalanceConfigSchema
28096
28387
  })
28097
28388
  ]);
28098
- var blockBookingPaymentTermsSchema = z41.object({
28099
- allowedOptions: z41.array(blockBookingPaymentCollectionOptionSchema).min(1)
28389
+ var blockBookingPaymentTermsSchema = z42.object({
28390
+ allowedOptions: z42.array(blockBookingPaymentCollectionOptionSchema).min(1)
28100
28391
  });
28101
28392
 
28102
28393
  // ../blocks/src/system/blocks/courses/shared/schemas.ts
28103
- import { z as z42 } from "zod";
28104
- var courseVenueSchema = z42.object({
28105
- id: z42.string(),
28106
- name: z42.string(),
28107
- address: z42.string().nullable()
28108
- });
28109
- var courseSessionSchema = z42.object({
28110
- id: z42.string(),
28111
- startsAt: z42.string(),
28112
- endsAt: z42.string(),
28113
- timeZone: z42.string(),
28114
- capacityOverride: z42.number().nullable().optional(),
28115
- overrides: z42.record(z42.string(), z42.unknown()).nullable().optional()
28116
- });
28117
- var courseTeamMemberSummarySchema = z42.object({
28118
- id: z42.string(),
28119
- name: z42.string(),
28120
- roleLabel: z42.string().nullable(),
28121
- summary: z42.string().nullable(),
28122
- profilePath: z42.string().nullable()
28123
- });
28124
- var coursePricingOptionSchema = z42.object({
28125
- id: z42.string(),
28126
- name: z42.string(),
28127
- description: z42.string().nullable(),
28128
- priceAmount: z42.number(),
28129
- isActive: z42.boolean(),
28130
- sortOrder: z42.number(),
28131
- capacityLimit: z42.number().nullable(),
28132
- saleStartsAt: z42.string().nullable(),
28133
- saleEndsAt: z42.string().nullable(),
28134
- attendanceScope: z42.enum(["in_person", "online", "both"]).nullable().optional()
28135
- });
28136
- var coursePricingSchema = z42.object({
28137
- bookingRequirement: z42.enum(["none", "required"]),
28138
- pricingStrategy: z42.enum(["free", "single", "tiered", "sliding_scale"]),
28139
- currency: z42.string(),
28140
- singlePriceAmount: z42.number().nullable(),
28141
- slidingMinAmount: z42.number().nullable().optional(),
28142
- slidingMaxAmount: z42.number().nullable().optional(),
28143
- slidingSuggestedAmount: z42.number().nullable().optional(),
28394
+ import { z as z43 } from "zod";
28395
+ var courseVenueSchema = z43.object({
28396
+ id: z43.string(),
28397
+ name: z43.string(),
28398
+ address: z43.string().nullable()
28399
+ });
28400
+ var courseSessionSchema = z43.object({
28401
+ id: z43.string(),
28402
+ startsAt: z43.string(),
28403
+ endsAt: z43.string(),
28404
+ timeZone: z43.string(),
28405
+ capacityOverride: z43.number().nullable().optional(),
28406
+ overrides: z43.record(z43.string(), z43.unknown()).nullable().optional()
28407
+ });
28408
+ var courseTeamMemberSummarySchema = z43.object({
28409
+ id: z43.string(),
28410
+ name: z43.string(),
28411
+ roleLabel: z43.string().nullable(),
28412
+ summary: z43.string().nullable(),
28413
+ profilePath: z43.string().nullable()
28414
+ });
28415
+ var coursePricingOptionSchema = z43.object({
28416
+ id: z43.string(),
28417
+ name: z43.string(),
28418
+ description: z43.string().nullable(),
28419
+ priceAmount: z43.number(),
28420
+ isActive: z43.boolean(),
28421
+ sortOrder: z43.number(),
28422
+ capacityLimit: z43.number().nullable(),
28423
+ saleStartsAt: z43.string().nullable(),
28424
+ saleEndsAt: z43.string().nullable(),
28425
+ attendanceScope: z43.enum(["in_person", "online", "both"]).nullable().optional()
28426
+ });
28427
+ var coursePricingSchema = z43.object({
28428
+ bookingRequirement: z43.enum(["none", "required"]),
28429
+ pricingStrategy: z43.enum(["free", "single", "tiered", "sliding_scale"]),
28430
+ currency: z43.string(),
28431
+ singlePriceAmount: z43.number().nullable(),
28432
+ slidingMinAmount: z43.number().nullable().optional(),
28433
+ slidingMaxAmount: z43.number().nullable().optional(),
28434
+ slidingSuggestedAmount: z43.number().nullable().optional(),
28144
28435
  paymentTerms: blockBookingPaymentTermsSchema,
28145
- options: z42.array(coursePricingOptionSchema)
28146
- });
28147
- var publicCourseSchema = z42.object({
28148
- id: z42.string(),
28149
- title: z42.string(),
28150
- slug: z42.string(),
28151
- description: z42.unknown().nullable(),
28152
- teamMembers: z42.array(courseTeamMemberSummarySchema).optional(),
28153
- enrollmentOpen: z42.boolean(),
28436
+ options: z43.array(coursePricingOptionSchema)
28437
+ });
28438
+ var publicCourseSchema = z43.object({
28439
+ id: z43.string(),
28440
+ title: z43.string(),
28441
+ slug: z43.string(),
28442
+ description: z43.unknown().nullable(),
28443
+ teamMembers: z43.array(courseTeamMemberSummarySchema).optional(),
28444
+ enrollmentOpen: z43.boolean(),
28154
28445
  pricing: coursePricingSchema.optional(),
28155
- priceCents: z42.number().nullable(),
28156
- currency: z42.string(),
28446
+ priceCents: z43.number().nullable(),
28447
+ currency: z43.string(),
28157
28448
  paymentTerms: blockBookingPaymentTermsSchema,
28158
- enrollmentCapacity: z42.number().nullable(),
28159
- acceptsMemberships: z42.boolean(),
28160
- status: z42.enum(["active", "draft", "cancelled"]),
28161
- sessionsCount: z42.number(),
28162
- enrolledCount: z42.number(),
28163
- availableSpots: z42.number().nullable(),
28164
- sessions: z42.array(courseSessionSchema),
28449
+ enrollmentCapacity: z43.number().nullable(),
28450
+ acceptsMemberships: z43.boolean(),
28451
+ status: z43.enum(["active", "draft", "cancelled"]),
28452
+ sessionsCount: z43.number(),
28453
+ enrolledCount: z43.number(),
28454
+ availableSpots: z43.number().nullable(),
28455
+ sessions: z43.array(courseSessionSchema),
28165
28456
  venue: courseVenueSchema.nullable(),
28166
- contentEntryId: z42.string().nullable()
28457
+ contentEntryId: z43.string().nullable()
28167
28458
  });
28168
- var publicCoursesArraySchema = z42.array(publicCourseSchema);
28459
+ var publicCoursesArraySchema = z43.array(publicCourseSchema);
28169
28460
 
28170
28461
  // ../blocks/src/system/blocks/events/shared/schemas.ts
28171
- var eventPresetSchema = z43.enum(["event", "class", "workshop", "retreat", "performance"]);
28172
- var eventScheduleScopeSchema = z43.enum(["recurring", "oneOff"]);
28173
- var eventDestinationModeSchema = z43.enum(["cms-managed", "system-managed"]);
28174
- var publicEventDestinationSchema = z43.discriminatedUnion("kind", [
28175
- z43.object({
28176
- kind: z43.literal("native"),
28462
+ var eventPresetSchema = z44.enum(["event", "class", "workshop", "retreat", "performance"]);
28463
+ var eventScheduleScopeSchema = z44.enum(["recurring", "oneOff"]);
28464
+ var eventDestinationModeSchema = z44.enum(["cms-managed", "system-managed"]);
28465
+ var publicEventDestinationSchema = z44.discriminatedUnion("kind", [
28466
+ z44.object({
28467
+ kind: z44.literal("native"),
28177
28468
  mode: eventDestinationModeSchema,
28178
- path: z43.string()
28469
+ path: z44.string()
28179
28470
  }),
28180
- z43.object({
28181
- kind: z43.literal("external"),
28182
- url: z43.string(),
28183
- label: z43.string()
28471
+ z44.object({
28472
+ kind: z44.literal("external"),
28473
+ url: z44.string(),
28474
+ label: z44.string()
28184
28475
  })
28185
28476
  ]);
28186
- var eventVenueSchema = z43.object({
28187
- id: z43.string(),
28188
- name: z43.string(),
28189
- address: z43.string().nullable(),
28190
- location: z43.object({
28191
- lat: z43.number(),
28192
- lng: z43.number()
28477
+ var eventVenueSchema = z44.object({
28478
+ id: z44.string(),
28479
+ name: z44.string(),
28480
+ address: z44.string().nullable(),
28481
+ location: z44.object({
28482
+ lat: z44.number(),
28483
+ lng: z44.number()
28193
28484
  }).nullable()
28194
28485
  });
28195
- var eventCategorySchema = z43.object({
28196
- id: z43.string(),
28197
- name: z43.string(),
28198
- color: z43.string().nullable()
28199
- });
28200
- var pricingTypeSchema = z43.enum(["free", "paid", "external"]);
28201
- var accessRestrictionSchema = z43.enum(["none", "category"]);
28202
- var eventPricingModeSchema = z43.enum(["single", "ticket_types"]);
28203
- var publicCoursePriceDisplaySchema = z43.discriminatedUnion("kind", [
28204
- z43.object({ kind: z43.literal("free"), currency: z43.string() }),
28205
- z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() }),
28206
- z43.object({ kind: z43.literal("from"), amount: z43.number(), currency: z43.string() }),
28207
- z43.object({ kind: z43.literal("unavailable"), currency: z43.string() })
28486
+ var eventCategorySchema = z44.object({
28487
+ id: z44.string(),
28488
+ name: z44.string(),
28489
+ color: z44.string().nullable()
28490
+ });
28491
+ var pricingTypeSchema = z44.enum(["free", "paid", "external"]);
28492
+ var accessRestrictionSchema = z44.enum(["none", "category"]);
28493
+ var eventPricingModeSchema = z44.enum(["single", "ticket_types"]);
28494
+ var publicCoursePriceDisplaySchema = z44.discriminatedUnion("kind", [
28495
+ z44.object({ kind: z44.literal("free"), currency: z44.string() }),
28496
+ z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() }),
28497
+ z44.object({ kind: z44.literal("from"), amount: z44.number(), currency: z44.string() }),
28498
+ z44.object({ kind: z44.literal("unavailable"), currency: z44.string() })
28208
28499
  ]);
28209
- var publicEventPriceDisplaySchema = z43.discriminatedUnion("kind", [
28210
- z43.object({ kind: z43.literal("free"), currency: z43.string() }),
28211
- z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() }),
28212
- z43.object({ kind: z43.literal("from"), amount: z43.number(), currency: z43.string() }),
28213
- z43.object({ kind: z43.literal("range"), minAmount: z43.number(), maxAmount: z43.number(), currency: z43.string() }),
28214
- z43.object({
28215
- kind: z43.literal("mixed"),
28216
- paidFromAmount: z43.number(),
28217
- paidToAmount: z43.number(),
28218
- currency: z43.string()
28500
+ var publicEventPriceDisplaySchema = z44.discriminatedUnion("kind", [
28501
+ z44.object({ kind: z44.literal("free"), currency: z44.string() }),
28502
+ z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() }),
28503
+ z44.object({ kind: z44.literal("from"), amount: z44.number(), currency: z44.string() }),
28504
+ z44.object({ kind: z44.literal("range"), minAmount: z44.number(), maxAmount: z44.number(), currency: z44.string() }),
28505
+ z44.object({
28506
+ kind: z44.literal("mixed"),
28507
+ paidFromAmount: z44.number(),
28508
+ paidToAmount: z44.number(),
28509
+ currency: z44.string()
28219
28510
  }),
28220
- z43.object({ kind: z43.literal("unavailable"), currency: z43.string() }),
28221
- z43.object({ kind: z43.literal("external"), label: z43.string() }),
28222
- z43.object({ kind: z43.literal("course"), display: publicCoursePriceDisplaySchema })
28511
+ z44.object({ kind: z44.literal("unavailable"), currency: z44.string() }),
28512
+ z44.object({ kind: z44.literal("external"), label: z44.string() }),
28513
+ z44.object({ kind: z44.literal("course"), display: publicCoursePriceDisplaySchema })
28223
28514
  ]);
28224
- var publicEventTicketTypePriceDisplaySchema = z43.union([
28225
- z43.object({ kind: z43.literal("free"), currency: z43.string() }),
28226
- z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() }),
28227
- z43.object({ kind: z43.literal("from"), amount: z43.number(), currency: z43.string() }),
28228
- z43.object({ kind: z43.literal("range"), minAmount: z43.number(), maxAmount: z43.number(), currency: z43.string() }),
28229
- z43.object({
28230
- kind: z43.literal("mixed"),
28231
- paidFromAmount: z43.number(),
28232
- paidToAmount: z43.number(),
28233
- currency: z43.string()
28515
+ var publicEventTicketTypePriceDisplaySchema = z44.union([
28516
+ z44.object({ kind: z44.literal("free"), currency: z44.string() }),
28517
+ z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() }),
28518
+ z44.object({ kind: z44.literal("from"), amount: z44.number(), currency: z44.string() }),
28519
+ z44.object({ kind: z44.literal("range"), minAmount: z44.number(), maxAmount: z44.number(), currency: z44.string() }),
28520
+ z44.object({
28521
+ kind: z44.literal("mixed"),
28522
+ paidFromAmount: z44.number(),
28523
+ paidToAmount: z44.number(),
28524
+ currency: z44.string()
28234
28525
  }),
28235
- z43.object({ kind: z43.literal("unavailable"), currency: z43.string() })
28526
+ z44.object({ kind: z44.literal("unavailable"), currency: z44.string() })
28236
28527
  ]);
28237
- var publicEventAttendanceModeSchema = z43.enum(["in_person", "online"]);
28238
- var publicEventAttendanceModeAvailabilitySchema = z43.object({
28528
+ var publicEventAttendanceModeSchema = z44.enum(["in_person", "online"]);
28529
+ var publicEventAttendanceModeAvailabilitySchema = z44.object({
28239
28530
  mode: publicEventAttendanceModeSchema,
28240
- capacity: z43.number().nullable(),
28241
- registeredCount: z43.number(),
28242
- availableSpots: z43.number().nullable(),
28243
- waitlistEnabled: z43.boolean()
28244
- });
28245
- var publicEventTicketTypeAvailabilitySchema = z43.union([
28246
- z43.object({
28247
- kind: z43.literal("available"),
28248
- remainingCapacity: z43.number().nullable()
28531
+ capacity: z44.number().nullable(),
28532
+ registeredCount: z44.number(),
28533
+ availableSpots: z44.number().nullable(),
28534
+ waitlistEnabled: z44.boolean()
28535
+ });
28536
+ var publicEventTicketTypeAvailabilitySchema = z44.union([
28537
+ z44.object({
28538
+ kind: z44.literal("available"),
28539
+ remainingCapacity: z44.number().nullable()
28249
28540
  }),
28250
- z43.object({
28251
- kind: z43.literal("unavailable"),
28252
- reason: z43.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
28253
- remainingCapacity: z43.number().nullable()
28541
+ z44.object({
28542
+ kind: z44.literal("unavailable"),
28543
+ reason: z44.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
28544
+ remainingCapacity: z44.number().nullable()
28254
28545
  })
28255
28546
  ]);
28256
- var publicEventTicketTypeSchema = z43.object({
28257
- id: z43.string(),
28258
- siteId: z43.string(),
28259
- eventSeriesId: z43.string(),
28260
- name: z43.string(),
28261
- description: z43.string().nullable(),
28262
- priceAmount: z43.number(),
28263
- isActive: z43.boolean(),
28264
- sortOrder: z43.number(),
28265
- capacityMode: z43.enum(["limited", "unlimited"]),
28266
- capacityLimit: z43.number().nullable(),
28267
- attendanceScope: z43.enum(["in_person", "online", "both"]).optional(),
28268
- saleStartsAt: z43.string().nullable(),
28269
- saleEndsAt: z43.string().nullable(),
28547
+ var publicEventTicketTypeSchema = z44.object({
28548
+ id: z44.string(),
28549
+ siteId: z44.string(),
28550
+ eventSeriesId: z44.string(),
28551
+ name: z44.string(),
28552
+ description: z44.string().nullable(),
28553
+ priceAmount: z44.number(),
28554
+ isActive: z44.boolean(),
28555
+ sortOrder: z44.number(),
28556
+ capacityMode: z44.enum(["limited", "unlimited"]),
28557
+ capacityLimit: z44.number().nullable(),
28558
+ attendanceScope: z44.enum(["in_person", "online", "both"]).optional(),
28559
+ saleStartsAt: z44.string().nullable(),
28560
+ saleEndsAt: z44.string().nullable(),
28270
28561
  availability: publicEventTicketTypeAvailabilitySchema,
28271
- createdAt: z43.string(),
28272
- updatedAt: z43.string()
28273
- });
28274
- var publicEventPricingSchema = z43.discriminatedUnion("kind", [
28275
- z43.object({
28276
- kind: z43.literal("drop_in"),
28277
- currency: z43.string(),
28278
- display: z43.object({ kind: z43.literal("free"), currency: z43.string() })
28562
+ createdAt: z44.string(),
28563
+ updatedAt: z44.string()
28564
+ });
28565
+ var publicEventPricingSchema = z44.discriminatedUnion("kind", [
28566
+ z44.object({
28567
+ kind: z44.literal("drop_in"),
28568
+ currency: z44.string(),
28569
+ display: z44.object({ kind: z44.literal("free"), currency: z44.string() })
28279
28570
  }),
28280
- z43.object({
28281
- kind: z43.literal("free_registration"),
28282
- currency: z43.string(),
28283
- display: z43.object({ kind: z43.literal("free"), currency: z43.string() })
28571
+ z44.object({
28572
+ kind: z44.literal("free_registration"),
28573
+ currency: z44.string(),
28574
+ display: z44.object({ kind: z44.literal("free"), currency: z44.string() })
28284
28575
  }),
28285
- z43.object({
28286
- kind: z43.literal("single_paid"),
28287
- amount: z43.number(),
28288
- currency: z43.string(),
28289
- display: z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() })
28576
+ z44.object({
28577
+ kind: z44.literal("single_paid"),
28578
+ amount: z44.number(),
28579
+ currency: z44.string(),
28580
+ display: z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() })
28290
28581
  }),
28291
- z43.object({
28292
- kind: z43.literal("ticket_types"),
28293
- currency: z43.string(),
28294
- ticketTypes: z43.array(publicEventTicketTypeSchema),
28582
+ z44.object({
28583
+ kind: z44.literal("ticket_types"),
28584
+ currency: z44.string(),
28585
+ ticketTypes: z44.array(publicEventTicketTypeSchema),
28295
28586
  display: publicEventTicketTypePriceDisplaySchema
28296
28587
  }),
28297
- z43.object({
28298
- kind: z43.literal("sliding_scale"),
28299
- minAmount: z43.number(),
28300
- maxAmount: z43.number(),
28301
- suggestedAmount: z43.number().nullable(),
28302
- currency: z43.string(),
28303
- display: z43.object({
28304
- kind: z43.literal("range"),
28305
- minAmount: z43.number(),
28306
- maxAmount: z43.number(),
28307
- currency: z43.string()
28588
+ z44.object({
28589
+ kind: z44.literal("sliding_scale"),
28590
+ minAmount: z44.number(),
28591
+ maxAmount: z44.number(),
28592
+ suggestedAmount: z44.number().nullable(),
28593
+ currency: z44.string(),
28594
+ display: z44.object({
28595
+ kind: z44.literal("range"),
28596
+ minAmount: z44.number(),
28597
+ maxAmount: z44.number(),
28598
+ currency: z44.string()
28308
28599
  })
28309
28600
  }),
28310
- z43.object({
28311
- kind: z43.literal("course"),
28312
- display: z43.object({ kind: z43.literal("course"), display: publicCoursePriceDisplaySchema })
28601
+ z44.object({
28602
+ kind: z44.literal("course"),
28603
+ display: z44.object({ kind: z44.literal("course"), display: publicCoursePriceDisplaySchema })
28313
28604
  }),
28314
- z43.object({
28315
- kind: z43.literal("external"),
28316
- display: z43.object({ kind: z43.literal("external"), label: z43.string() })
28605
+ z44.object({
28606
+ kind: z44.literal("external"),
28607
+ display: z44.object({ kind: z44.literal("external"), label: z44.string() })
28317
28608
  })
28318
28609
  ]);
28319
- var publicTeamMemberSummarySchema = z43.object({
28320
- id: z43.string(),
28321
- name: z43.string(),
28322
- roleLabel: z43.string().nullable(),
28323
- summary: z43.string().nullable(),
28324
- profilePath: z43.string().nullable()
28610
+ var publicTeamMemberSummarySchema = z44.object({
28611
+ id: z44.string(),
28612
+ name: z44.string(),
28613
+ roleLabel: z44.string().nullable(),
28614
+ summary: z44.string().nullable(),
28615
+ profilePath: z44.string().nullable()
28325
28616
  });
28326
- var publicEventSchema = z43.object({
28327
- kind: z43.enum(["event", "course_session"]).optional(),
28617
+ var publicEventSchema = z44.object({
28618
+ kind: z44.enum(["event", "course_session"]).optional(),
28328
28619
  eventPreset: eventPresetSchema.optional(),
28329
28620
  eventDestinationMode: eventDestinationModeSchema.optional(),
28330
28621
  scheduleScope: eventScheduleScopeSchema.optional(),
28331
- id: z43.string(),
28332
- occurrenceId: z43.string(),
28333
- seriesId: z43.string(),
28334
- title: z43.string(),
28335
- description: z43.string().nullable(),
28336
- content: z43.object({
28622
+ id: z44.string(),
28623
+ occurrenceId: z44.string(),
28624
+ seriesId: z44.string(),
28625
+ title: z44.string(),
28626
+ description: z44.string().nullable(),
28627
+ content: z44.object({
28337
28628
  body: RichTextDocSchema.nullable().optional()
28338
28629
  }).optional(),
28339
- presentation: z43.object({
28340
- cardTitleOverride: z43.string().nullable().optional(),
28341
- summary: z43.string().nullable().optional(),
28630
+ presentation: z44.object({
28631
+ cardTitleOverride: z44.string().nullable().optional(),
28632
+ summary: z44.string().nullable().optional(),
28342
28633
  image: mediaSchema2.nullable().optional()
28343
28634
  }).optional(),
28344
- slug: z43.string(),
28345
- path: z43.string().nullable(),
28635
+ slug: z44.string(),
28636
+ path: z44.string().nullable(),
28346
28637
  destination: publicEventDestinationSchema,
28347
- requiresRegistration: z43.boolean(),
28348
- deliveryMode: z43.enum(["in_person", "online", "hybrid"]),
28349
- attendanceModes: z43.array(publicEventAttendanceModeAvailabilitySchema),
28350
- startsAt: z43.string(),
28351
- endsAt: z43.string(),
28352
- capacity: z43.number().nullable(),
28353
- registeredCount: z43.number(),
28354
- availableSpots: z43.number().nullable(),
28355
- waitlistEnabled: z43.boolean(),
28638
+ requiresRegistration: z44.boolean(),
28639
+ deliveryMode: z44.enum(["in_person", "online", "hybrid"]),
28640
+ attendanceModes: z44.array(publicEventAttendanceModeAvailabilitySchema),
28641
+ startsAt: z44.string(),
28642
+ endsAt: z44.string(),
28643
+ capacity: z44.number().nullable(),
28644
+ registeredCount: z44.number(),
28645
+ availableSpots: z44.number().nullable(),
28646
+ waitlistEnabled: z44.boolean(),
28356
28647
  venue: eventVenueSchema.nullable(),
28357
28648
  eventCategory: eventCategorySchema.nullable(),
28358
- teamMembers: z43.array(publicTeamMemberSummarySchema).optional(),
28359
- status: z43.enum(["active", "draft", "archived"]).optional(),
28360
- timeZone: z43.string(),
28649
+ teamMembers: z44.array(publicTeamMemberSummarySchema).optional(),
28650
+ status: z44.enum(["active", "draft", "archived"]).optional(),
28651
+ timeZone: z44.string(),
28361
28652
  pricing: publicEventPricingSchema,
28362
28653
  paymentTerms: blockBookingPaymentTermsSchema,
28363
28654
  accessRestriction: accessRestrictionSchema,
28364
- allowedCategoryIds: z43.array(z43.string()),
28365
- requireGuestDetails: z43.boolean().optional(),
28366
- acceptsPasses: z43.boolean().optional(),
28367
- acceptsMemberships: z43.boolean().optional(),
28368
- course: z43.object({
28369
- id: z43.string(),
28655
+ allowedCategoryIds: z44.array(z44.string()),
28656
+ requireGuestDetails: z44.boolean().optional(),
28657
+ acceptsPasses: z44.boolean().optional(),
28658
+ acceptsMemberships: z44.boolean().optional(),
28659
+ course: z44.object({
28660
+ id: z44.string(),
28370
28661
  pricing: coursePricingSchema.optional(),
28371
- priceCents: z43.number().nullable(),
28372
- currency: z43.string(),
28373
- enrollmentOpen: z43.boolean()
28662
+ priceCents: z44.number().nullable(),
28663
+ currency: z44.string(),
28664
+ enrollmentOpen: z44.boolean()
28374
28665
  }).nullable().optional()
28375
28666
  });
28376
- var publicEventsArraySchema = z43.array(publicEventSchema);
28667
+ var publicEventsArraySchema = z44.array(publicEventSchema);
28377
28668
 
28378
28669
  // ../blocks/src/system/blocks/events/shared/fields.ts
28379
28670
  var cardVariantOptions2 = cardVariantRoleValues.map((value) => ({
@@ -28576,52 +28867,80 @@ function normalizeEventStaffMemberId(value) {
28576
28867
  return trimmed ? trimmed : null;
28577
28868
  }
28578
28869
 
28870
+ // ../blocks/src/system/blocks/events/shared/layout.ts
28871
+ var recoverEmptyHeadingWhenActive = {
28872
+ kind: "recover-empty-when-active",
28873
+ placeholder: "Add heading"
28874
+ };
28875
+ var recoverEmptyDescriptionWhenActive = {
28876
+ kind: "recover-empty-when-active",
28877
+ placeholder: "Add description"
28878
+ };
28879
+ function eventSectionHeaderLayoutNodes() {
28880
+ return [
28881
+ text(
28882
+ { as: "h2" },
28883
+ bind("content.heading"),
28884
+ when("content.heading", {
28885
+ authoringPresence: recoverEmptyHeadingWhenActive
28886
+ })
28887
+ ),
28888
+ richText(
28889
+ { className: "rb-prose rb-max-w-none" },
28890
+ bind("content.description"),
28891
+ when("content.description", {
28892
+ authoringPresence: recoverEmptyDescriptionWhenActive
28893
+ })
28894
+ )
28895
+ ];
28896
+ }
28897
+
28579
28898
  // ../blocks/src/system/blocks/shop.shared.ts
28580
- import { z as z44 } from "zod";
28581
- var publicPassProductSchema = z44.object({
28582
- id: z44.string(),
28583
- productUseCase: z44.enum(["event_pass", "appointment_package"]).default("event_pass"),
28584
- name: z44.string(),
28585
- description: z44.string().nullable(),
28586
- price: z44.number(),
28587
- currency: z44.string(),
28588
- creditsTotal: z44.number(),
28589
- pricePerCredit: z44.number(),
28590
- validDays: z44.number().nullable(),
28591
- eligibleCategoryIds: z44.array(z44.string()),
28592
- eligibleCategoryNames: z44.array(z44.string())
28593
- });
28594
- var publicPassProductCollectionSchema = z44.object({
28595
- passes: z44.array(publicPassProductSchema)
28596
- });
28597
- var publicMembershipProductSchema = z44.object({
28598
- id: z44.string(),
28599
- name: z44.string(),
28600
- description: z44.string().nullable(),
28601
- price: z44.number(),
28602
- currency: z44.string(),
28603
- billingInterval: z44.enum(["month", "year"]),
28604
- eligibleCategoryIds: z44.array(z44.string()),
28605
- eligibleCategoryNames: z44.array(z44.string())
28899
+ import { z as z45 } from "zod";
28900
+ var publicPassProductSchema = z45.object({
28901
+ id: z45.string(),
28902
+ productUseCase: z45.enum(["event_pass", "appointment_package"]).default("event_pass"),
28903
+ name: z45.string(),
28904
+ description: z45.string().nullable(),
28905
+ price: z45.number(),
28906
+ currency: z45.string(),
28907
+ creditsTotal: z45.number(),
28908
+ pricePerCredit: z45.number(),
28909
+ validDays: z45.number().nullable(),
28910
+ eligibleCategoryIds: z45.array(z45.string()),
28911
+ eligibleCategoryNames: z45.array(z45.string())
28912
+ });
28913
+ var publicPassProductCollectionSchema = z45.object({
28914
+ passes: z45.array(publicPassProductSchema)
28915
+ });
28916
+ var publicMembershipProductSchema = z45.object({
28917
+ id: z45.string(),
28918
+ name: z45.string(),
28919
+ description: z45.string().nullable(),
28920
+ price: z45.number(),
28921
+ currency: z45.string(),
28922
+ billingInterval: z45.enum(["month", "year"]),
28923
+ eligibleCategoryIds: z45.array(z45.string()),
28924
+ eligibleCategoryNames: z45.array(z45.string())
28606
28925
  });
28607
- var publicMembershipProductCollectionSchema = z44.object({
28608
- memberships: z44.array(publicMembershipProductSchema)
28926
+ var publicMembershipProductCollectionSchema = z45.object({
28927
+ memberships: z45.array(publicMembershipProductSchema)
28609
28928
  });
28610
28929
 
28611
28930
  // ../blocks/src/system/blocks/event-registration.shared.ts
28612
- import { z as z45 } from "zod";
28613
- var occurrenceContextSchema = z45.object({
28614
- id: z45.string(),
28615
- seriesId: z45.string(),
28616
- startsAt: z45.string(),
28617
- endsAt: z45.string(),
28618
- timeZone: z45.string(),
28619
- capacityOverride: z45.number().nullable().optional(),
28620
- overrides: z45.record(z45.string(), z45.unknown()).nullable().optional()
28931
+ import { z as z46 } from "zod";
28932
+ var occurrenceContextSchema = z46.object({
28933
+ id: z46.string(),
28934
+ seriesId: z46.string(),
28935
+ startsAt: z46.string(),
28936
+ endsAt: z46.string(),
28937
+ timeZone: z46.string(),
28938
+ capacityOverride: z46.number().nullable().optional(),
28939
+ overrides: z46.record(z46.string(), z46.unknown()).nullable().optional()
28621
28940
  }).nullable();
28622
28941
 
28623
28942
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28624
- import { z as z47 } from "zod";
28943
+ import { z as z48 } from "zod";
28625
28944
 
28626
28945
  // ../blocks/src/system/constants/events.ts
28627
28946
  var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
@@ -28808,17 +29127,17 @@ function readAmount(value) {
28808
29127
  }
28809
29128
 
28810
29129
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
28811
- import { z as z46 } from "zod";
28812
- var previewStageSchema = z46.enum(["preview", "published"]);
28813
- var registrationButtonVariantSchema = z46.enum(["primary", "secondary", "outline"]);
28814
- var eventButtonVariantSchema = z46.enum(["primary", "secondary", "outline", "link"]);
28815
- var eventLayoutSchema = z46.enum(eventCalendarListLayoutValues);
28816
- var eventCalendarDisplayModeSchema = z46.enum(eventCalendarDisplayModeValues);
28817
- var eventCalendarDefaultViewSchema = z46.enum(eventCalendarDefaultViewValues);
28818
- var columnOptionSchema = z46.enum(["2", "3", "4"]);
28819
- var weekStartSchema = z46.enum(["sunday", "monday"]);
28820
- var filterAutoShowSchema = z46.enum(["auto", "always", "never"]);
28821
- var calendarTabViewsSchema = z46.enum(["both", "month", "week"]);
29130
+ import { z as z47 } from "zod";
29131
+ var previewStageSchema = z47.enum(["preview", "published"]);
29132
+ var registrationButtonVariantSchema = z47.enum(["primary", "secondary", "outline"]);
29133
+ var eventButtonVariantSchema = z47.enum(["primary", "secondary", "outline", "link"]);
29134
+ var eventLayoutSchema = z47.enum(eventCalendarListLayoutValues);
29135
+ var eventCalendarDisplayModeSchema = z47.enum(eventCalendarDisplayModeValues);
29136
+ var eventCalendarDefaultViewSchema = z47.enum(eventCalendarDefaultViewValues);
29137
+ var columnOptionSchema = z47.enum(["2", "3", "4"]);
29138
+ var weekStartSchema = z47.enum(["sunday", "monday"]);
29139
+ var filterAutoShowSchema = z47.enum(["auto", "always", "never"]);
29140
+ var calendarTabViewsSchema = z47.enum(["both", "month", "week"]);
28822
29141
 
28823
29142
  // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
28824
29143
  function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
@@ -28878,72 +29197,72 @@ function toRegistrationEvents(events) {
28878
29197
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28879
29198
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
28880
29199
  var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
28881
- var contentEntrySchema = z47.object({
28882
- id: z47.string(),
28883
- slug: z47.string(),
28884
- contentTypeSlug: z47.string()
29200
+ var contentEntrySchema = z48.object({
29201
+ id: z48.string(),
29202
+ slug: z48.string(),
29203
+ contentTypeSlug: z48.string()
28885
29204
  });
28886
- var eventRegistrationPublicEventSchema = z47.preprocess(
29205
+ var eventRegistrationPublicEventSchema = z48.preprocess(
28887
29206
  normalizeEventRegistrationEventInput,
28888
29207
  publicEventSchema
28889
29208
  );
28890
- var eventRegistrationSourceSchema = z47.object({
28891
- siteId: z47.string().optional(),
28892
- apiBaseUrl: z47.string().optional(),
28893
- portalToken: z47.string().nullable().optional(),
28894
- previewToken: z47.string().nullable().optional(),
29209
+ var eventRegistrationSourceSchema = z48.object({
29210
+ siteId: z48.string().optional(),
29211
+ apiBaseUrl: z48.string().optional(),
29212
+ portalToken: z48.string().nullable().optional(),
29213
+ previewToken: z48.string().nullable().optional(),
28895
29214
  occurrenceContext: occurrenceContextSchema.optional(),
28896
29215
  contentEntry: contentEntrySchema.nullable().optional(),
28897
- events: z47.array(eventRegistrationPublicEventSchema).nullable().optional(),
28898
- className: z47.string().nullable().optional(),
28899
- buttonText: z47.string().nullable().optional(),
28900
- maxTickets: z47.string().nullable().optional(),
28901
- showVenue: z47.boolean().optional(),
28902
- showCapacity: z47.boolean().optional(),
28903
- successMessage: z47.string().optional(),
28904
- waitlistMessage: z47.string().optional(),
29216
+ events: z48.array(eventRegistrationPublicEventSchema).nullable().optional(),
29217
+ className: z48.string().nullable().optional(),
29218
+ buttonText: z48.string().nullable().optional(),
29219
+ maxTickets: z48.string().nullable().optional(),
29220
+ showVenue: z48.boolean().optional(),
29221
+ showCapacity: z48.boolean().optional(),
29222
+ successMessage: z48.string().optional(),
29223
+ waitlistMessage: z48.string().optional(),
28905
29224
  buttonVariant: registrationButtonVariantSchema.optional(),
28906
- overlayEnabled: z47.boolean().optional(),
28907
- spamProtectionEnabled: z47.boolean().optional(),
29225
+ overlayEnabled: z48.boolean().optional(),
29226
+ spamProtectionEnabled: z48.boolean().optional(),
28908
29227
  stage: previewStageSchema.optional(),
28909
- supportEmail: z47.string().optional(),
29228
+ supportEmail: z48.string().optional(),
28910
29229
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
28911
29230
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
28912
29231
  });
28913
- var eventRegistrationDisplaySchema = z47.object({
28914
- kind: z47.literal("event-registration"),
28915
- state: z47.literal("generic-shell"),
28916
- className: z47.string().nullable(),
28917
- titleText: z47.string(),
28918
- bodyText: z47.string(),
28919
- stepLabels: z47.array(z47.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
28920
- summaryButtonText: z47.string()
29232
+ var eventRegistrationDisplaySchema = z48.object({
29233
+ kind: z48.literal("event-registration"),
29234
+ state: z48.literal("generic-shell"),
29235
+ className: z48.string().nullable(),
29236
+ titleText: z48.string(),
29237
+ bodyText: z48.string(),
29238
+ stepLabels: z48.array(z48.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
29239
+ summaryButtonText: z48.string()
28921
29240
  });
28922
- var eventRegistrationHydrationSchema = z47.object({
29241
+ var eventRegistrationHydrationSchema = z48.object({
28923
29242
  occurrenceContext: occurrenceContextSchema.optional(),
28924
29243
  contentEntry: contentEntrySchema.nullable().optional(),
28925
- events: z47.array(eventRegistrationPublicEventSchema).nullable().optional(),
28926
- maxTickets: z47.string().optional(),
28927
- showVenue: z47.boolean().optional(),
28928
- showCapacity: z47.boolean().optional(),
28929
- successMessage: z47.string().optional(),
28930
- waitlistMessage: z47.string().optional(),
29244
+ events: z48.array(eventRegistrationPublicEventSchema).nullable().optional(),
29245
+ maxTickets: z48.string().optional(),
29246
+ showVenue: z48.boolean().optional(),
29247
+ showCapacity: z48.boolean().optional(),
29248
+ successMessage: z48.string().optional(),
29249
+ waitlistMessage: z48.string().optional(),
28931
29250
  buttonVariant: registrationButtonVariantSchema.optional(),
28932
- overlayEnabled: z47.boolean().optional(),
28933
- spamProtectionEnabled: z47.boolean().optional(),
28934
- supportEmail: z47.string().optional(),
29251
+ overlayEnabled: z48.boolean().optional(),
29252
+ spamProtectionEnabled: z48.boolean().optional(),
29253
+ supportEmail: z48.string().optional(),
28935
29254
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
28936
29255
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
28937
29256
  });
28938
- var eventRegistrationRenderSchema = z47.object({
29257
+ var eventRegistrationRenderSchema = z48.object({
28939
29258
  display: eventRegistrationDisplaySchema,
28940
29259
  hydration: eventRegistrationHydrationSchema
28941
29260
  });
28942
- var eventRegistrationIslandMetaCodec = createZodCodec(z47.object({
28943
- siteId: z47.string().optional(),
28944
- apiBaseUrl: z47.string().optional(),
28945
- portalToken: z47.string().nullable().optional(),
28946
- previewToken: z47.string().nullable().optional(),
29261
+ var eventRegistrationIslandMetaCodec = createZodCodec(z48.object({
29262
+ siteId: z48.string().optional(),
29263
+ apiBaseUrl: z48.string().optional(),
29264
+ portalToken: z48.string().nullable().optional(),
29265
+ previewToken: z48.string().nullable().optional(),
28947
29266
  stage: previewStageSchema.optional()
28948
29267
  }));
28949
29268
  var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -29294,73 +29613,73 @@ var eventRegistrationBlockDefinition = {
29294
29613
  };
29295
29614
 
29296
29615
  // ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
29297
- import { z as z48 } from "zod";
29298
- var contentEntrySchema2 = z48.object({
29299
- id: z48.string(),
29300
- slug: z48.string(),
29301
- contentTypeSlug: z48.string()
29302
- });
29303
- var courseEntrySubrouteContextSchema = z48.union([
29304
- z48.object({
29305
- kind: z48.literal("course-run"),
29306
- run: z48.object({
29307
- courseId: z48.string(),
29308
- seriesId: z48.string(),
29309
- runSlug: z48.string(),
29310
- runName: z48.string().nullable()
29616
+ import { z as z49 } from "zod";
29617
+ var contentEntrySchema2 = z49.object({
29618
+ id: z49.string(),
29619
+ slug: z49.string(),
29620
+ contentTypeSlug: z49.string()
29621
+ });
29622
+ var courseEntrySubrouteContextSchema = z49.union([
29623
+ z49.object({
29624
+ kind: z49.literal("course-run"),
29625
+ run: z49.object({
29626
+ courseId: z49.string(),
29627
+ seriesId: z49.string(),
29628
+ runSlug: z49.string(),
29629
+ runName: z49.string().nullable()
29311
29630
  })
29312
29631
  }),
29313
- z48.object({
29314
- kind: z48.literal("event-occurrence"),
29632
+ z49.object({
29633
+ kind: z49.literal("event-occurrence"),
29315
29634
  occurrence: occurrenceContextSchema
29316
29635
  })
29317
29636
  ]);
29318
- var courseRegistrationSourceSchema = z48.object({
29319
- siteId: z48.string().optional(),
29320
- apiBaseUrl: z48.string().optional(),
29321
- portalToken: z48.string().nullable().optional(),
29637
+ var courseRegistrationSourceSchema = z49.object({
29638
+ siteId: z49.string().optional(),
29639
+ apiBaseUrl: z49.string().optional(),
29640
+ portalToken: z49.string().nullable().optional(),
29322
29641
  contentEntry: contentEntrySchema2.nullable().optional(),
29323
29642
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
29324
- courses: z48.array(publicCourseSchema).nullable().optional(),
29325
- className: z48.string().nullable().optional(),
29326
- showSessions: z48.boolean().optional(),
29327
- showPrice: z48.boolean().optional(),
29328
- showCapacity: z48.boolean().optional(),
29329
- showVenue: z48.boolean().optional(),
29330
- successMessage: z48.string().optional(),
29331
- waitlistMessage: z48.string().optional(),
29332
- membershipMessage: z48.string().optional(),
29333
- buttonText: z48.string().nullable().optional(),
29643
+ courses: z49.array(publicCourseSchema).nullable().optional(),
29644
+ className: z49.string().nullable().optional(),
29645
+ showSessions: z49.boolean().optional(),
29646
+ showPrice: z49.boolean().optional(),
29647
+ showCapacity: z49.boolean().optional(),
29648
+ showVenue: z49.boolean().optional(),
29649
+ successMessage: z49.string().optional(),
29650
+ waitlistMessage: z49.string().optional(),
29651
+ membershipMessage: z49.string().optional(),
29652
+ buttonText: z49.string().nullable().optional(),
29334
29653
  buttonVariant: registrationButtonVariantSchema.optional(),
29335
29654
  stage: previewStageSchema.optional()
29336
29655
  });
29337
- var courseRegistrationDisplaySchema = z48.object({
29338
- kind: z48.literal("course-registration"),
29339
- state: z48.literal("shell"),
29340
- className: z48.string().nullable(),
29341
- summaryButtonText: z48.string()
29656
+ var courseRegistrationDisplaySchema = z49.object({
29657
+ kind: z49.literal("course-registration"),
29658
+ state: z49.literal("shell"),
29659
+ className: z49.string().nullable(),
29660
+ summaryButtonText: z49.string()
29342
29661
  });
29343
- var courseRegistrationHydrationSchema = z48.object({
29662
+ var courseRegistrationHydrationSchema = z49.object({
29344
29663
  contentEntry: contentEntrySchema2.nullable().optional(),
29345
29664
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
29346
- courses: z48.array(publicCourseSchema).nullable().optional(),
29347
- showSessions: z48.boolean().optional(),
29348
- showPrice: z48.boolean().optional(),
29349
- showCapacity: z48.boolean().optional(),
29350
- showVenue: z48.boolean().optional(),
29351
- successMessage: z48.string().optional(),
29352
- waitlistMessage: z48.string().optional(),
29353
- membershipMessage: z48.string().optional(),
29665
+ courses: z49.array(publicCourseSchema).nullable().optional(),
29666
+ showSessions: z49.boolean().optional(),
29667
+ showPrice: z49.boolean().optional(),
29668
+ showCapacity: z49.boolean().optional(),
29669
+ showVenue: z49.boolean().optional(),
29670
+ successMessage: z49.string().optional(),
29671
+ waitlistMessage: z49.string().optional(),
29672
+ membershipMessage: z49.string().optional(),
29354
29673
  buttonVariant: registrationButtonVariantSchema.optional()
29355
29674
  });
29356
- var courseRegistrationRenderSchema = z48.object({
29675
+ var courseRegistrationRenderSchema = z49.object({
29357
29676
  display: courseRegistrationDisplaySchema,
29358
29677
  hydration: courseRegistrationHydrationSchema
29359
29678
  });
29360
- var courseRegistrationIslandMetaCodec = createZodCodec(z48.object({
29361
- siteId: z48.string().optional(),
29362
- apiBaseUrl: z48.string().optional(),
29363
- portalToken: z48.string().nullable().optional(),
29679
+ var courseRegistrationIslandMetaCodec = createZodCodec(z49.object({
29680
+ siteId: z49.string().optional(),
29681
+ apiBaseUrl: z49.string().optional(),
29682
+ portalToken: z49.string().nullable().optional(),
29364
29683
  stage: previewStageSchema.optional()
29365
29684
  }));
29366
29685
  var courseRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -29620,7 +29939,7 @@ var courseRegistrationBlockDefinition = {
29620
29939
  };
29621
29940
 
29622
29941
  // ../blocks/src/system/blocks/event-details.ts
29623
- import { z as z49 } from "zod";
29942
+ import { z as z50 } from "zod";
29624
29943
  var eventDetailsManifest = createBlockManifest({
29625
29944
  id: "block.event-details",
29626
29945
  version: "1.0.0",
@@ -29752,37 +30071,37 @@ var eventDetailsManifest = createBlockManifest({
29752
30071
  })
29753
30072
  ]
29754
30073
  });
29755
- var occurrenceContextSchema2 = z49.object({
29756
- id: z49.string(),
29757
- seriesId: z49.string(),
29758
- startsAt: z49.string(),
29759
- endsAt: z49.string(),
29760
- timeZone: z49.string(),
29761
- capacityOverride: z49.number().nullable().optional(),
29762
- overrides: z49.record(z49.string(), z49.unknown()).nullable().optional()
30074
+ var occurrenceContextSchema2 = z50.object({
30075
+ id: z50.string(),
30076
+ seriesId: z50.string(),
30077
+ startsAt: z50.string(),
30078
+ endsAt: z50.string(),
30079
+ timeZone: z50.string(),
30080
+ capacityOverride: z50.number().nullable().optional(),
30081
+ overrides: z50.record(z50.string(), z50.unknown()).nullable().optional()
29763
30082
  }).nullable();
29764
- var eventAutoApplyDiscountPreviewBaseSchema = z49.object({
29765
- id: z49.string(),
29766
- publicLabel: z49.string(),
29767
- description: z49.string().nullable(),
29768
- minTicketsRequired: z49.number().nullable()
30083
+ var eventAutoApplyDiscountPreviewBaseSchema = z50.object({
30084
+ id: z50.string(),
30085
+ publicLabel: z50.string(),
30086
+ description: z50.string().nullable(),
30087
+ minTicketsRequired: z50.number().nullable()
29769
30088
  });
29770
- var eventAutoApplyDiscountPreviewSchema = z49.discriminatedUnion("discountType", [
30089
+ var eventAutoApplyDiscountPreviewSchema = z50.discriminatedUnion("discountType", [
29771
30090
  eventAutoApplyDiscountPreviewBaseSchema.extend({
29772
- discountType: z49.literal("percent"),
29773
- discountPercent: z49.number(),
29774
- discountAmountCents: z49.null()
30091
+ discountType: z50.literal("percent"),
30092
+ discountPercent: z50.number(),
30093
+ discountAmountCents: z50.null()
29775
30094
  }),
29776
30095
  eventAutoApplyDiscountPreviewBaseSchema.extend({
29777
- discountType: z49.literal("fixed"),
29778
- discountPercent: z49.null(),
29779
- discountAmountCents: z49.number()
30096
+ discountType: z50.literal("fixed"),
30097
+ discountPercent: z50.null(),
30098
+ discountAmountCents: z50.number()
29780
30099
  })
29781
30100
  ]);
29782
30101
  var eventDetailsBlockDefinition = {
29783
30102
  manifest: eventDetailsManifest,
29784
30103
  dataSchemas: {
29785
- eventDetailsData: z49.object({
30104
+ eventDetailsData: z50.object({
29786
30105
  events: publicEventsArraySchema,
29787
30106
  sitePasses: publicPassProductCollectionSchema,
29788
30107
  siteMemberships: publicMembershipProductCollectionSchema,
@@ -30037,18 +30356,7 @@ var eventSpotlightFields = [
30037
30356
  var eventSpotlightLayout = [
30038
30357
  styledSection({
30039
30358
  children: sectionContainer([
30040
- // Optional heading
30041
- text(
30042
- { as: "h2" },
30043
- bind("content.heading"),
30044
- when("content.heading")
30045
- ),
30046
- // Optional description
30047
- richText(
30048
- { className: "rb-prose rb-max-w-none" },
30049
- bind("content.description"),
30050
- when("content.description")
30051
- ),
30359
+ ...eventSectionHeaderLayoutNodes(),
30052
30360
  // Event spotlight component
30053
30361
  el("event-spotlight", {
30054
30362
  events: { $bind: { from: "data.events" } },
@@ -30109,7 +30417,7 @@ var eventSpotlightBlockDefinition = {
30109
30417
  };
30110
30418
 
30111
30419
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
30112
- import { z as z51 } from "zod";
30420
+ import { z as z52 } from "zod";
30113
30421
 
30114
30422
  // ../blocks/src/system/runtime/nodes/events/shared/utils.ts
30115
30423
  var COLUMN_CLASSES = {
@@ -30217,16 +30525,16 @@ function computeMediaTransformStyle(value, style, targetAspectRatio, options) {
30217
30525
  }
30218
30526
 
30219
30527
  // ../blocks/src/system/runtime/nodes/events/shared/listOptions.ts
30220
- import { z as z50 } from "zod";
30528
+ import { z as z51 } from "zod";
30221
30529
  var eventPageSizeValues = [3, 6, 10, 12, 20, 24, 30];
30222
- var eventPageSizeSchema = z50.union([
30223
- z50.literal(3),
30224
- z50.literal(6),
30225
- z50.literal(10),
30226
- z50.literal(12),
30227
- z50.literal(20),
30228
- z50.literal(24),
30229
- z50.literal(30)
30530
+ var eventPageSizeSchema = z51.union([
30531
+ z51.literal(3),
30532
+ z51.literal(6),
30533
+ z51.literal(10),
30534
+ z51.literal(12),
30535
+ z51.literal(20),
30536
+ z51.literal(24),
30537
+ z51.literal(30)
30230
30538
  ]);
30231
30539
  var eventPageSizeSet = new Set(eventPageSizeValues);
30232
30540
  function resolveEventPageSize(value, fallback = 12) {
@@ -30236,15 +30544,15 @@ function resolveEventPageSize(value, fallback = 12) {
30236
30544
  function resolveEventCalendarListPageSize(input) {
30237
30545
  return resolveEventPageSize(input.eventsPerPage);
30238
30546
  }
30239
- var eventListPaginationActionSchema = z50.discriminatedUnion("kind", [
30240
- z50.object({
30241
- kind: z50.literal("loadMore"),
30242
- label: z50.string()
30547
+ var eventListPaginationActionSchema = z51.discriminatedUnion("kind", [
30548
+ z51.object({
30549
+ kind: z51.literal("loadMore"),
30550
+ label: z51.string()
30243
30551
  }),
30244
- z50.object({
30245
- kind: z50.literal("seeAllLink"),
30246
- label: z50.string(),
30247
- href: z50.string()
30552
+ z51.object({
30553
+ kind: z51.literal("seeAllLink"),
30554
+ label: z51.string(),
30555
+ href: z51.string()
30248
30556
  })
30249
30557
  ]);
30250
30558
  function resolveEventListPaginationAction(input) {
@@ -30257,89 +30565,89 @@ function resolveEventListPaginationAction(input) {
30257
30565
  }
30258
30566
 
30259
30567
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
30260
- var legacyEventCardVariantSchema = z51.enum(["variant1", "variant2"]);
30261
- var eventCardVariantInputSchema = z51.union([
30568
+ var legacyEventCardVariantSchema = z52.enum(["variant1", "variant2"]);
30569
+ var eventCardVariantInputSchema = z52.union([
30262
30570
  cardVariantRoleSchema,
30263
30571
  legacyEventCardVariantSchema
30264
30572
  ]);
30265
- var cardOrientationSchema = z51.enum(["vertical", "horizontal"]);
30266
- var eventBlockKindSchema = z51.enum(eventBlockKindValues);
30267
- var eventSurfaceScopeSchema = z51.enum(eventSurfaceScopeValues);
30268
- var eventScheduleScopeSchema2 = z51.enum(eventScheduleScopeValues);
30269
- var eventListingSourceSchema = z51.object({
30270
- events: z51.array(publicEventSchema).nullable().optional(),
30271
- siteId: z51.string(),
30272
- apiBaseUrl: z51.string().optional(),
30573
+ var cardOrientationSchema = z52.enum(["vertical", "horizontal"]);
30574
+ var eventBlockKindSchema = z52.enum(eventBlockKindValues);
30575
+ var eventSurfaceScopeSchema = z52.enum(eventSurfaceScopeValues);
30576
+ var eventScheduleScopeSchema2 = z52.enum(eventScheduleScopeValues);
30577
+ var eventListingSourceSchema = z52.object({
30578
+ events: z52.array(publicEventSchema).nullable().optional(),
30579
+ siteId: z52.string(),
30580
+ apiBaseUrl: z52.string().optional(),
30273
30581
  stage: previewStageSchema.optional(),
30274
30582
  layout: eventLayoutSchema.optional(),
30275
30583
  columns: columnOptionSchema.optional(),
30276
- eventsPerPage: z51.string().optional(),
30277
- paginationMode: z51.enum(["loadMore", "seeAllLink"]).optional(),
30278
- seeAllUrl: z51.string().optional(),
30279
- loadMoreText: z51.string().optional(),
30584
+ eventsPerPage: z52.string().optional(),
30585
+ paginationMode: z52.enum(["loadMore", "seeAllLink"]).optional(),
30586
+ seeAllUrl: z52.string().optional(),
30587
+ loadMoreText: z52.string().optional(),
30280
30588
  cardVariant: eventCardVariantInputSchema.optional(),
30281
30589
  buttonVariant: eventButtonVariantSchema.optional(),
30282
- buttonText: z51.string().optional(),
30283
- showVenue: z51.boolean().optional(),
30284
- showMap: z51.boolean().optional(),
30285
- showCapacity: z51.boolean().optional(),
30286
- emptyMessage: z51.string().optional(),
30287
- className: z51.string().optional(),
30288
- showFilters: z51.boolean().nullable().optional(),
30590
+ buttonText: z52.string().optional(),
30591
+ showVenue: z52.boolean().optional(),
30592
+ showMap: z52.boolean().optional(),
30593
+ showCapacity: z52.boolean().optional(),
30594
+ emptyMessage: z52.string().optional(),
30595
+ className: z52.string().optional(),
30596
+ showFilters: z52.boolean().nullable().optional(),
30289
30597
  showCategoryFilter: filterAutoShowSchema.optional(),
30290
- showVenueFilter: z51.boolean().nullable().optional(),
30291
- showStaffFilter: z51.boolean().nullable().optional(),
30598
+ showVenueFilter: z52.boolean().nullable().optional(),
30599
+ showStaffFilter: z52.boolean().nullable().optional(),
30292
30600
  eventKind: eventBlockKindSchema.nullable().optional(),
30293
30601
  eventSurface: eventSurfaceScopeSchema.nullable().optional(),
30294
- filterEventPresets: z51.union([z51.string(), z51.array(z51.string())]).nullable().optional(),
30602
+ filterEventPresets: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
30295
30603
  scheduleScope: eventScheduleScopeSchema2.nullable().optional(),
30296
- filterCategoryIds: z51.string().nullable().optional(),
30297
- filterStaffMemberId: z51.string().nullable().optional(),
30298
- filterVenueId: z51.string().nullable().optional()
30604
+ filterCategoryIds: z52.string().nullable().optional(),
30605
+ filterStaffMemberId: z52.string().nullable().optional(),
30606
+ filterVenueId: z52.string().nullable().optional()
30299
30607
  });
30300
- var eventListingDisplaySchema = z51.object({
30301
- kind: z51.literal("event-listing"),
30302
- state: z51.enum(["loading", "empty", "ready"]),
30608
+ var eventListingDisplaySchema = z52.object({
30609
+ kind: z52.literal("event-listing"),
30610
+ state: z52.enum(["loading", "empty", "ready"]),
30303
30611
  listLayout: eventLayoutSchema,
30304
- className: z51.string().nullable(),
30305
- emptyMessage: z51.string(),
30306
- loadingMessage: z51.string(),
30307
- containerClass: z51.string(),
30612
+ className: z52.string().nullable(),
30613
+ emptyMessage: z52.string(),
30614
+ loadingMessage: z52.string(),
30615
+ containerClass: z52.string(),
30308
30616
  cardVariant: cardVariantRoleSchema,
30309
30617
  buttonVariant: eventButtonVariantSchema,
30310
- buttonText: z51.string(),
30311
- showVenue: z51.boolean(),
30312
- showMap: z51.boolean(),
30313
- showCapacity: z51.boolean(),
30618
+ buttonText: z52.string(),
30619
+ showVenue: z52.boolean(),
30620
+ showMap: z52.boolean(),
30621
+ showCapacity: z52.boolean(),
30314
30622
  orientation: cardOrientationSchema,
30315
- events: z51.array(publicEventSchema)
30623
+ events: z52.array(publicEventSchema)
30316
30624
  });
30317
- var eventListingHydrationSchema = z51.object({
30318
- siteId: z51.string(),
30625
+ var eventListingHydrationSchema = z52.object({
30626
+ siteId: z52.string(),
30319
30627
  stage: previewStageSchema.optional(),
30320
30628
  eventsPerPage: eventPageSizeSchema,
30321
30629
  paginationAction: eventListPaginationActionSchema,
30322
- showFilters: z51.boolean(),
30630
+ showFilters: z52.boolean(),
30323
30631
  showCategoryFilter: filterAutoShowSchema,
30324
- showVenueFilter: z51.boolean(),
30325
- showStaffFilter: z51.boolean(),
30632
+ showVenueFilter: z52.boolean(),
30633
+ showStaffFilter: z52.boolean(),
30326
30634
  eventKind: eventBlockKindSchema,
30327
30635
  eventSurface: eventSurfaceScopeSchema,
30328
- filterEventPresets: z51.string().nullable(),
30636
+ filterEventPresets: z52.string().nullable(),
30329
30637
  scheduleScope: eventScheduleScopeSchema2,
30330
- filterCategoryIds: z51.string().nullable().optional(),
30331
- filterStaffMemberId: z51.string().nullable().optional(),
30332
- filterVenueId: z51.string().nullable().optional(),
30333
- fetchInitialEventsOnMount: z51.boolean()
30638
+ filterCategoryIds: z52.string().nullable().optional(),
30639
+ filterStaffMemberId: z52.string().nullable().optional(),
30640
+ filterVenueId: z52.string().nullable().optional(),
30641
+ fetchInitialEventsOnMount: z52.boolean()
30334
30642
  });
30335
- var eventListingRenderSchema = z51.object({
30643
+ var eventListingRenderSchema = z52.object({
30336
30644
  display: eventListingDisplaySchema,
30337
30645
  hydration: eventListingHydrationSchema
30338
30646
  });
30339
30647
  var eventListingIslandMetaCodec = createZodCodec(
30340
- z51.object({
30341
- siteId: z51.string(),
30342
- apiBaseUrl: z51.string().optional(),
30648
+ z52.object({
30649
+ siteId: z52.string(),
30650
+ apiBaseUrl: z52.string().optional(),
30343
30651
  stage: previewStageSchema.optional()
30344
30652
  })
30345
30653
  );
@@ -30579,18 +30887,7 @@ var eventListingAdditionalFields = [
30579
30887
  var eventListingLayout = [
30580
30888
  styledSection({
30581
30889
  children: sectionContainer([
30582
- // Optional heading
30583
- text(
30584
- { as: "h2" },
30585
- bind("content.heading"),
30586
- when("content.heading")
30587
- ),
30588
- // Optional description
30589
- richText(
30590
- { className: "rb-prose rb-max-w-none" },
30591
- bind("content.description"),
30592
- when("content.description")
30593
- ),
30890
+ ...eventSectionHeaderLayoutNodes(),
30594
30891
  // Event listing component with pagination
30595
30892
  el("event-listing", withApiBindings({
30596
30893
  events: { $bind: { from: "data.events" } },
@@ -30706,15 +31003,15 @@ var eventListingBlockDefinition = {
30706
31003
  };
30707
31004
 
30708
31005
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
30709
- import { z as z52 } from "zod";
30710
- var eventBlockKindSchema2 = z52.enum(eventBlockKindValues);
30711
- var eventSurfaceScopeSchema2 = z52.enum(eventSurfaceScopeValues);
30712
- var eventScheduleScopeSchema3 = z52.enum(eventScheduleScopeValues);
30713
- var eventCalendarSourceSchema = z52.object(
31006
+ import { z as z53 } from "zod";
31007
+ var eventBlockKindSchema2 = z53.enum(eventBlockKindValues);
31008
+ var eventSurfaceScopeSchema2 = z53.enum(eventSurfaceScopeValues);
31009
+ var eventScheduleScopeSchema3 = z53.enum(eventScheduleScopeValues);
31010
+ var eventCalendarSourceSchema = z53.object(
30714
31011
  {
30715
- events: z52.array(publicEventSchema).nullable().optional(),
30716
- siteId: z52.string(),
30717
- apiBaseUrl: z52.string().optional(),
31012
+ events: z53.array(publicEventSchema).nullable().optional(),
31013
+ siteId: z53.string(),
31014
+ apiBaseUrl: z53.string().optional(),
30718
31015
  stage: previewStageSchema.optional(),
30719
31016
  variant: eventCalendarDisplayModeSchema.nullable().optional(),
30720
31017
  displayMode: eventCalendarDisplayModeSchema.nullable().optional(),
@@ -30722,38 +31019,38 @@ var eventCalendarSourceSchema = z52.object(
30722
31019
  listColumns: columnOptionSchema.optional(),
30723
31020
  layout: eventLayoutSchema.optional(),
30724
31021
  columns: columnOptionSchema.optional(),
30725
- eventsPerPage: z52.string().optional(),
30726
- paginationMode: z52.enum(["loadMore", "seeAllLink"]).optional(),
30727
- seeAllUrl: z52.string().optional(),
30728
- loadMoreText: z52.string().optional(),
31022
+ eventsPerPage: z53.string().optional(),
31023
+ paginationMode: z53.enum(["loadMore", "seeAllLink"]).optional(),
31024
+ seeAllUrl: z53.string().optional(),
31025
+ loadMoreText: z53.string().optional(),
30729
31026
  startOfWeek: weekStartSchema.optional(),
30730
31027
  calendarTabViews: calendarTabViewsSchema.optional(),
30731
31028
  defaultCalendarView: eventCalendarDefaultViewSchema.optional(),
30732
- showFilters: z52.boolean().nullable().optional(),
31029
+ showFilters: z53.boolean().nullable().optional(),
30733
31030
  showCategoryFilter: filterAutoShowSchema.optional(),
30734
- showVenueFilter: z52.boolean().nullable().optional(),
30735
- showStaffFilter: z52.boolean().nullable().optional(),
31031
+ showVenueFilter: z53.boolean().nullable().optional(),
31032
+ showStaffFilter: z53.boolean().nullable().optional(),
30736
31033
  kind: eventBlockKindSchema2.nullable().optional(),
30737
31034
  eventSurface: eventSurfaceScopeSchema2.nullable().optional(),
30738
- filterEventPresets: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
31035
+ filterEventPresets: z53.union([z53.string(), z53.array(z53.string())]).nullable().optional(),
30739
31036
  scheduleScope: eventScheduleScopeSchema3.nullable().optional(),
30740
- filterCategoryIds: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
30741
- filterStaffMemberId: z52.string().nullable().optional(),
30742
- filterVenueId: z52.string().nullable().optional(),
31037
+ filterCategoryIds: z53.union([z53.string(), z53.array(z53.string())]).nullable().optional(),
31038
+ filterStaffMemberId: z53.string().nullable().optional(),
31039
+ filterVenueId: z53.string().nullable().optional(),
30743
31040
  buttonVariant: eventButtonVariantSchema.optional(),
30744
- buttonText: z52.string().optional(),
30745
- showVenue: z52.boolean().nullable().optional(),
30746
- showMap: z52.boolean().nullable().optional(),
30747
- showCapacity: z52.boolean().nullable().optional(),
30748
- emptyMessage: z52.string().optional(),
30749
- className: z52.string().optional()
31041
+ buttonText: z53.string().optional(),
31042
+ showVenue: z53.boolean().nullable().optional(),
31043
+ showMap: z53.boolean().nullable().optional(),
31044
+ showCapacity: z53.boolean().nullable().optional(),
31045
+ emptyMessage: z53.string().optional(),
31046
+ className: z53.string().optional()
30750
31047
  }
30751
31048
  );
30752
- var eventCalendarDisplaySchema = z52.object({
30753
- kind: z52.literal("event-calendar"),
31049
+ var eventCalendarDisplaySchema = z53.object({
31050
+ kind: z53.literal("event-calendar"),
30754
31051
  displayMode: eventCalendarDisplayModeSchema,
30755
- className: z52.string().nullable(),
30756
- events: z52.array(publicEventSchema),
31052
+ className: z53.string().nullable(),
31053
+ events: z53.array(publicEventSchema),
30757
31054
  listLayout: eventLayoutSchema,
30758
31055
  listColumns: columnOptionSchema,
30759
31056
  eventsPerPage: eventPageSizeSchema,
@@ -30761,41 +31058,41 @@ var eventCalendarDisplaySchema = z52.object({
30761
31058
  startOfWeek: weekStartSchema,
30762
31059
  calendarTabViews: calendarTabViewsSchema,
30763
31060
  defaultCalendarView: eventCalendarDefaultViewSchema,
30764
- showFilters: z52.boolean(),
31061
+ showFilters: z53.boolean(),
30765
31062
  showCategoryFilter: filterAutoShowSchema,
30766
- showVenueFilter: z52.boolean(),
30767
- showStaffFilter: z52.boolean(),
31063
+ showVenueFilter: z53.boolean(),
31064
+ showStaffFilter: z53.boolean(),
30768
31065
  eventKind: eventBlockKindSchema2,
30769
31066
  eventSurface: eventSurfaceScopeSchema2,
30770
- filterEventPresets: z52.string().nullable(),
31067
+ filterEventPresets: z53.string().nullable(),
30771
31068
  scheduleScope: eventScheduleScopeSchema3,
30772
- filterCategoryIds: z52.string().nullable(),
30773
- filterStaffMemberId: z52.string().nullable(),
30774
- filterVenueId: z52.string().nullable(),
31069
+ filterCategoryIds: z53.string().nullable(),
31070
+ filterStaffMemberId: z53.string().nullable(),
31071
+ filterVenueId: z53.string().nullable(),
30775
31072
  buttonVariant: eventButtonVariantSchema,
30776
- buttonText: z52.string(),
30777
- showVenue: z52.boolean(),
30778
- showMap: z52.boolean(),
30779
- showCapacity: z52.boolean(),
30780
- emptyMessage: z52.string()
30781
- });
30782
- var eventCalendarHydrationSchema = z52.object({
30783
- siteId: z52.string(),
31073
+ buttonText: z53.string(),
31074
+ showVenue: z53.boolean(),
31075
+ showMap: z53.boolean(),
31076
+ showCapacity: z53.boolean(),
31077
+ emptyMessage: z53.string()
31078
+ });
31079
+ var eventCalendarHydrationSchema = z53.object({
31080
+ siteId: z53.string(),
30784
31081
  stage: previewStageSchema.optional(),
30785
- prefetchedEvents: z52.boolean(),
31082
+ prefetchedEvents: z53.boolean(),
30786
31083
  eventKind: eventBlockKindSchema2,
30787
31084
  eventSurface: eventSurfaceScopeSchema2,
30788
- filterEventPresets: z52.string().nullable(),
31085
+ filterEventPresets: z53.string().nullable(),
30789
31086
  scheduleScope: eventScheduleScopeSchema3
30790
31087
  });
30791
- var eventCalendarRenderSchema = z52.object({
31088
+ var eventCalendarRenderSchema = z53.object({
30792
31089
  display: eventCalendarDisplaySchema,
30793
31090
  hydration: eventCalendarHydrationSchema
30794
31091
  });
30795
31092
  var eventCalendarIslandMetaCodec = createZodCodec(
30796
- z52.object({
30797
- siteId: z52.string(),
30798
- apiBaseUrl: z52.string().optional(),
31093
+ z53.object({
31094
+ siteId: z53.string(),
31095
+ apiBaseUrl: z53.string().optional(),
30799
31096
  stage: previewStageSchema.optional()
30800
31097
  })
30801
31098
  );
@@ -30915,14 +31212,7 @@ var eventCalendarLayout = [
30915
31212
  styledSection({
30916
31213
  children: sectionContainer(
30917
31214
  [
30918
- // Optional heading
30919
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
30920
- // Optional description
30921
- richText(
30922
- { className: "rb-prose rb-max-w-none" },
30923
- bind("content.description"),
30924
- when("content.description")
30925
- ),
31215
+ ...eventSectionHeaderLayoutNodes(),
30926
31216
  // Event calendar component (handles all display modes)
30927
31217
  el(
30928
31218
  "event-calendar",
@@ -31567,7 +31857,7 @@ var eventCalendarBlockDefinition = {
31567
31857
  };
31568
31858
 
31569
31859
  // ../blocks/src/system/blocks/offerings-preview/index.ts
31570
- import { z as z53 } from "zod";
31860
+ import { z as z54 } from "zod";
31571
31861
 
31572
31862
  // ../blocks/src/system/blocks/offerings-preview/model.ts
31573
31863
  var OFFERINGS_PREVIEW_DEFAULT_ITEM_LIMIT = "3";
@@ -31659,13 +31949,13 @@ function isRecord6(value) {
31659
31949
  }
31660
31950
 
31661
31951
  // ../blocks/src/system/blocks/offerings-preview/index.ts
31662
- var publicRouteCandidatesSchema = z53.object({
31663
- routes: z53.array(z53.object({
31664
- entityId: z53.string(),
31665
- path: z53.string(),
31666
- title: z53.string(),
31667
- kind: z53.enum(["page", "content"]),
31668
- contentTypeKey: z53.string().nullable().optional()
31952
+ var publicRouteCandidatesSchema = z54.object({
31953
+ routes: z54.array(z54.object({
31954
+ entityId: z54.string(),
31955
+ path: z54.string(),
31956
+ title: z54.string(),
31957
+ kind: z54.enum(["page", "content"]),
31958
+ contentTypeKey: z54.string().nullable().optional()
31669
31959
  }))
31670
31960
  });
31671
31961
  var groupOverrideFields = [
@@ -32063,7 +32353,7 @@ function isRecord7(value) {
32063
32353
  }
32064
32354
 
32065
32355
  // ../blocks/src/system/blocks/embed.ts
32066
- import { z as z54 } from "zod";
32356
+ import { z as z55 } from "zod";
32067
32357
  var embedFields = [
32068
32358
  // Section heading
32069
32359
  parseFieldDefinition({
@@ -32294,18 +32584,18 @@ var embedManifest = createBlockManifest({
32294
32584
  spacing: "lg"
32295
32585
  }
32296
32586
  });
32297
- var embedEntrySchema = z54.object({
32298
- id: z54.string(),
32299
- identifier: z54.string(),
32300
- title: z54.string(),
32301
- slug: z54.string().nullable().optional(),
32302
- content: z54.record(z54.string(), z54.unknown()).optional(),
32303
- publishedAt: z54.string().nullable().optional()
32587
+ var embedEntrySchema = z55.object({
32588
+ id: z55.string(),
32589
+ identifier: z55.string(),
32590
+ title: z55.string(),
32591
+ slug: z55.string().nullable().optional(),
32592
+ content: z55.record(z55.string(), z55.unknown()).optional(),
32593
+ publishedAt: z55.string().nullable().optional()
32304
32594
  });
32305
32595
  var embedBlockDefinition = {
32306
32596
  manifest: embedManifest,
32307
32597
  dataSchemas: {
32308
- entries: z54.array(embedEntrySchema).optional()
32598
+ entries: z55.array(embedEntrySchema).optional()
32309
32599
  },
32310
32600
  dataLoaders: {
32311
32601
  entries: {
@@ -33489,49 +33779,49 @@ var fileDownloadBlockDefinition = {
33489
33779
  };
33490
33780
 
33491
33781
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
33492
- import { z as z57 } from "zod";
33782
+ import { z as z58 } from "zod";
33493
33783
 
33494
33784
  // ../blocks/src/system/blocks/products/shared.ts
33495
- import { z as z55 } from "zod";
33496
- var publicProductVariantSchema = z55.object({
33497
- id: z55.string(),
33498
- title: z55.string(),
33499
- sku: z55.string().nullable(),
33500
- priceCents: z55.number(),
33501
- stockQuantity: z55.number().nullable(),
33502
- soldOut: z55.boolean()
33503
- });
33504
- var publicProductSchema = z55.object({
33505
- id: z55.string(),
33506
- contentEntryId: z55.string().nullable(),
33507
- title: z55.string(),
33508
- slug: z55.string(),
33509
- path: z55.string().nullable(),
33510
- status: z55.enum(["draft", "active"]),
33511
- priceCents: z55.number(),
33512
- currency: z55.string(),
33513
- productType: z55.enum(["physical", "digital"]),
33514
- requiresShipping: z55.boolean(),
33515
- hasVariants: z55.boolean(),
33516
- trackInventory: z55.boolean(),
33517
- soldOut: z55.boolean(),
33518
- category: z55.object({
33519
- id: z55.string(),
33520
- name: z55.string(),
33521
- slug: z55.string()
33785
+ import { z as z56 } from "zod";
33786
+ var publicProductVariantSchema = z56.object({
33787
+ id: z56.string(),
33788
+ title: z56.string(),
33789
+ sku: z56.string().nullable(),
33790
+ priceCents: z56.number(),
33791
+ stockQuantity: z56.number().nullable(),
33792
+ soldOut: z56.boolean()
33793
+ });
33794
+ var publicProductSchema = z56.object({
33795
+ id: z56.string(),
33796
+ contentEntryId: z56.string().nullable(),
33797
+ title: z56.string(),
33798
+ slug: z56.string(),
33799
+ path: z56.string().nullable(),
33800
+ status: z56.enum(["draft", "active"]),
33801
+ priceCents: z56.number(),
33802
+ currency: z56.string(),
33803
+ productType: z56.enum(["physical", "digital"]),
33804
+ requiresShipping: z56.boolean(),
33805
+ hasVariants: z56.boolean(),
33806
+ trackInventory: z56.boolean(),
33807
+ soldOut: z56.boolean(),
33808
+ category: z56.object({
33809
+ id: z56.string(),
33810
+ name: z56.string(),
33811
+ slug: z56.string()
33522
33812
  }).nullable(),
33523
- summary: z55.string().nullable(),
33524
- body: z55.unknown().nullable(),
33525
- gallery: z55.array(
33526
- z55.object({
33527
- url: z55.string(),
33528
- alt: z55.string().nullable()
33813
+ summary: z56.string().nullable(),
33814
+ body: z56.unknown().nullable(),
33815
+ gallery: z56.array(
33816
+ z56.object({
33817
+ url: z56.string(),
33818
+ alt: z56.string().nullable()
33529
33819
  })
33530
33820
  ),
33531
- variants: z55.array(publicProductVariantSchema)
33821
+ variants: z56.array(publicProductVariantSchema)
33532
33822
  });
33533
- var publicProductsResponseSchema = z55.object({
33534
- products: z55.array(publicProductSchema)
33823
+ var publicProductsResponseSchema = z56.object({
33824
+ products: z56.array(publicProductSchema)
33535
33825
  });
33536
33826
 
33537
33827
  // ../blocks/src/system/runtime/api/creditProducts.ts
@@ -33595,27 +33885,27 @@ function deriveCreditProductLabels(products, options = {}) {
33595
33885
  }
33596
33886
 
33597
33887
  // ../blocks/src/system/runtime/nodes/shop-commerce.shared.ts
33598
- import { z as z56 } from "zod";
33599
- var storedProductCartItemSchema = z56.object({
33600
- kind: z56.literal("product"),
33601
- productId: z56.string().min(1),
33602
- productCategoryId: z56.string().min(1).optional().nullable(),
33603
- variantId: z56.string().min(1).optional().nullable(),
33604
- title: z56.string().min(1),
33605
- variantTitle: z56.string().optional().nullable(),
33606
- quantity: z56.number().finite(),
33607
- unitPriceCents: z56.number().finite(),
33608
- currency: z56.string().min(1),
33609
- imageUrl: z56.string().optional().nullable(),
33610
- soldOut: z56.boolean().optional()
33611
- });
33612
- var storedPassCartItemSchema = z56.object({
33613
- kind: z56.literal("pass"),
33614
- passId: z56.string().min(1),
33615
- title: z56.string().min(1),
33616
- quantity: z56.number().finite().optional(),
33617
- unitPriceCents: z56.number().finite(),
33618
- currency: z56.string().min(1)
33888
+ import { z as z57 } from "zod";
33889
+ var storedProductCartItemSchema = z57.object({
33890
+ kind: z57.literal("product"),
33891
+ productId: z57.string().min(1),
33892
+ productCategoryId: z57.string().min(1).optional().nullable(),
33893
+ variantId: z57.string().min(1).optional().nullable(),
33894
+ title: z57.string().min(1),
33895
+ variantTitle: z57.string().optional().nullable(),
33896
+ quantity: z57.number().finite(),
33897
+ unitPriceCents: z57.number().finite(),
33898
+ currency: z57.string().min(1),
33899
+ imageUrl: z57.string().optional().nullable(),
33900
+ soldOut: z57.boolean().optional()
33901
+ });
33902
+ var storedPassCartItemSchema = z57.object({
33903
+ kind: z57.literal("pass"),
33904
+ passId: z57.string().min(1),
33905
+ title: z57.string().min(1),
33906
+ quantity: z57.number().finite().optional(),
33907
+ unitPriceCents: z57.number().finite(),
33908
+ currency: z57.string().min(1)
33619
33909
  });
33620
33910
  function deriveCommerceCheckoutState(state) {
33621
33911
  if (state.items.length === 0) {
@@ -33849,214 +34139,214 @@ function formatValidity(days) {
33849
34139
  }
33850
34140
 
33851
34141
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
33852
- var shopModeSchema = z57.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
33853
- var contentEntrySchema3 = z57.object({
33854
- id: z57.string().nullable().optional(),
33855
- slug: z57.string().nullable().optional()
34142
+ var shopModeSchema = z58.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
34143
+ var contentEntrySchema3 = z58.object({
34144
+ id: z58.string().nullable().optional(),
34145
+ slug: z58.string().nullable().optional()
33856
34146
  }).nullable();
33857
- var shopSourceSchema = z57.object({
33858
- className: z57.string().nullable().optional(),
34147
+ var shopSourceSchema = z58.object({
34148
+ className: z58.string().nullable().optional(),
33859
34149
  mode: shopModeSchema.optional(),
33860
- heading: z57.string().nullable().optional(),
33861
- productSlug: z57.string().nullable().optional(),
33862
- showPasses: z57.boolean().optional(),
33863
- showMemberships: z57.boolean().optional(),
33864
- layout: z57.enum(["grid", "list"]).optional(),
33865
- columns: z57.string().optional(),
33866
- showDescriptions: z57.boolean().optional(),
33867
- showSummary: z57.boolean().optional(),
33868
- showBody: z57.boolean().optional(),
33869
- showPrices: z57.boolean().optional(),
33870
- showValidityPeriod: z57.boolean().optional(),
33871
- showPricePerCredit: z57.boolean().nullable().optional(),
33872
- passesHeading: z57.string().optional(),
33873
- membershipsHeading: z57.string().optional(),
33874
- buyButtonText: z57.string().optional(),
33875
- addButtonText: z57.string().optional(),
33876
- passPurchaseMode: z57.enum(["add_to_cart", "buy_now"]).optional(),
33877
- subscribeButtonText: z57.string().optional(),
33878
- emptyStateText: z57.string().optional(),
33879
- checkoutButtonText: z57.string().optional(),
33880
- clearButtonText: z57.string().optional(),
33881
- submitButtonText: z57.string().optional(),
34150
+ heading: z58.string().nullable().optional(),
34151
+ productSlug: z58.string().nullable().optional(),
34152
+ showPasses: z58.boolean().optional(),
34153
+ showMemberships: z58.boolean().optional(),
34154
+ layout: z58.enum(["grid", "list"]).optional(),
34155
+ columns: z58.string().optional(),
34156
+ showDescriptions: z58.boolean().optional(),
34157
+ showSummary: z58.boolean().optional(),
34158
+ showBody: z58.boolean().optional(),
34159
+ showPrices: z58.boolean().optional(),
34160
+ showValidityPeriod: z58.boolean().optional(),
34161
+ showPricePerCredit: z58.boolean().nullable().optional(),
34162
+ passesHeading: z58.string().optional(),
34163
+ membershipsHeading: z58.string().optional(),
34164
+ buyButtonText: z58.string().optional(),
34165
+ addButtonText: z58.string().optional(),
34166
+ passPurchaseMode: z58.enum(["add_to_cart", "buy_now"]).optional(),
34167
+ subscribeButtonText: z58.string().optional(),
34168
+ emptyStateText: z58.string().optional(),
34169
+ checkoutButtonText: z58.string().optional(),
34170
+ clearButtonText: z58.string().optional(),
34171
+ submitButtonText: z58.string().optional(),
33882
34172
  contentEntry: contentEntrySchema3.optional(),
33883
- passes: z57.array(publicPassProductSchema).nullable().optional(),
33884
- memberships: z57.array(publicMembershipProductSchema).nullable().optional(),
33885
- products: z57.array(publicProductSchema).nullable().optional(),
33886
- siteId: z57.string().optional(),
33887
- apiBaseUrl: z57.string().optional(),
34173
+ passes: z58.array(publicPassProductSchema).nullable().optional(),
34174
+ memberships: z58.array(publicMembershipProductSchema).nullable().optional(),
34175
+ products: z58.array(publicProductSchema).nullable().optional(),
34176
+ siteId: z58.string().optional(),
34177
+ apiBaseUrl: z58.string().optional(),
33888
34178
  stage: previewStageSchema.optional()
33889
34179
  });
33890
- var productVariantOptionDisplaySchema = z57.object({
33891
- id: z57.string(),
33892
- label: z57.string(),
33893
- soldOut: z57.boolean()
33894
- });
33895
- var productCardDisplaySchema = z57.object({
33896
- productId: z57.string(),
33897
- title: z57.string(),
33898
- path: z57.string().nullable(),
33899
- summary: z57.string().nullable(),
33900
- priceLabel: z57.string().nullable(),
33901
- image: z57.object({
33902
- url: z57.string(),
33903
- alt: z57.string().nullable()
34180
+ var productVariantOptionDisplaySchema = z58.object({
34181
+ id: z58.string(),
34182
+ label: z58.string(),
34183
+ soldOut: z58.boolean()
34184
+ });
34185
+ var productCardDisplaySchema = z58.object({
34186
+ productId: z58.string(),
34187
+ title: z58.string(),
34188
+ path: z58.string().nullable(),
34189
+ summary: z58.string().nullable(),
34190
+ priceLabel: z58.string().nullable(),
34191
+ image: z58.object({
34192
+ url: z58.string(),
34193
+ alt: z58.string().nullable()
33904
34194
  }).nullable(),
33905
- variantOptions: z57.array(productVariantOptionDisplaySchema),
33906
- selectedVariantId: z57.string().nullable(),
33907
- selectionLabel: z57.string(),
33908
- actionLabel: z57.string(),
33909
- soldOut: z57.boolean()
33910
- });
33911
- var productListDisplaySchema = z57.object({
33912
- kind: z57.literal("product-list"),
33913
- state: z57.enum(["empty", "ready"]),
33914
- heading: z57.string().nullable(),
33915
- className: z57.string().nullable(),
33916
- layout: z57.enum(["grid", "list"]),
33917
- columns: z57.string(),
33918
- emptyMessage: z57.string(),
33919
- cards: z57.array(productCardDisplaySchema)
33920
- });
33921
- var productDetailDisplaySchema = z57.discriminatedUnion("state", [
33922
- z57.object({
33923
- kind: z57.literal("product-detail"),
33924
- state: z57.literal("empty"),
33925
- heading: z57.string().nullable(),
33926
- className: z57.string().nullable(),
33927
- emptyMessage: z57.string()
34195
+ variantOptions: z58.array(productVariantOptionDisplaySchema),
34196
+ selectedVariantId: z58.string().nullable(),
34197
+ selectionLabel: z58.string(),
34198
+ actionLabel: z58.string(),
34199
+ soldOut: z58.boolean()
34200
+ });
34201
+ var productListDisplaySchema = z58.object({
34202
+ kind: z58.literal("product-list"),
34203
+ state: z58.enum(["empty", "ready"]),
34204
+ heading: z58.string().nullable(),
34205
+ className: z58.string().nullable(),
34206
+ layout: z58.enum(["grid", "list"]),
34207
+ columns: z58.string(),
34208
+ emptyMessage: z58.string(),
34209
+ cards: z58.array(productCardDisplaySchema)
34210
+ });
34211
+ var productDetailDisplaySchema = z58.discriminatedUnion("state", [
34212
+ z58.object({
34213
+ kind: z58.literal("product-detail"),
34214
+ state: z58.literal("empty"),
34215
+ heading: z58.string().nullable(),
34216
+ className: z58.string().nullable(),
34217
+ emptyMessage: z58.string()
33928
34218
  }),
33929
- z57.object({
33930
- kind: z57.literal("product-detail"),
33931
- state: z57.literal("ready"),
33932
- heading: z57.string().nullable(),
33933
- className: z57.string().nullable(),
33934
- title: z57.string(),
33935
- priceLabel: z57.string(),
33936
- summary: z57.string().nullable(),
33937
- categoryLabel: z57.string().nullable(),
33938
- gallery: z57.array(z57.object({
33939
- url: z57.string(),
33940
- alt: z57.string().nullable()
34219
+ z58.object({
34220
+ kind: z58.literal("product-detail"),
34221
+ state: z58.literal("ready"),
34222
+ heading: z58.string().nullable(),
34223
+ className: z58.string().nullable(),
34224
+ title: z58.string(),
34225
+ priceLabel: z58.string(),
34226
+ summary: z58.string().nullable(),
34227
+ categoryLabel: z58.string().nullable(),
34228
+ gallery: z58.array(z58.object({
34229
+ url: z58.string(),
34230
+ alt: z58.string().nullable()
33941
34231
  })),
33942
- variantOptions: z57.array(productVariantOptionDisplaySchema),
33943
- selectedVariantId: z57.string().nullable(),
33944
- selectionLabel: z57.string(),
33945
- actionLabel: z57.string(),
33946
- soldOut: z57.boolean(),
33947
- body: z57.unknown().nullable()
34232
+ variantOptions: z58.array(productVariantOptionDisplaySchema),
34233
+ selectedVariantId: z58.string().nullable(),
34234
+ selectionLabel: z58.string(),
34235
+ actionLabel: z58.string(),
34236
+ soldOut: z58.boolean(),
34237
+ body: z58.unknown().nullable()
33948
34238
  })
33949
34239
  ]);
33950
- var passCardDisplaySchema = z57.object({
33951
- id: z57.string(),
33952
- title: z57.string(),
33953
- description: z57.string().nullable(),
33954
- priceLabel: z57.string(),
33955
- creditsLabel: z57.string(),
33956
- perCreditLabel: z57.string().nullable(),
33957
- validityLabel: z57.string().nullable(),
33958
- actionLabel: z57.string()
33959
- });
33960
- var membershipCardDisplaySchema = z57.object({
33961
- id: z57.string(),
33962
- title: z57.string(),
33963
- description: z57.string().nullable(),
33964
- priceLabel: z57.string(),
33965
- intervalLabel: z57.string(),
33966
- actionLabel: z57.string()
33967
- });
33968
- var passesMembershipsDisplaySchema = z57.object({
33969
- kind: z57.literal("passes-memberships"),
33970
- state: z57.enum(["empty", "ready"]),
33971
- className: z57.string().nullable(),
33972
- layout: z57.enum(["grid", "list"]),
33973
- columns: z57.string(),
33974
- emptyMessage: z57.string(),
33975
- passesHeading: z57.string(),
33976
- membershipsHeading: z57.string(),
33977
- passes: z57.array(passCardDisplaySchema),
33978
- memberships: z57.array(membershipCardDisplaySchema)
33979
- });
33980
- var cartLineDisplaySchema = z57.object({
33981
- key: z57.string(),
33982
- title: z57.string(),
33983
- priceLabel: z57.string(),
33984
- quantity: z57.number(),
33985
- quantityEditable: z57.boolean()
33986
- });
33987
- var cartDisplaySchema = z57.object({
33988
- kind: z57.literal("cart"),
33989
- state: z57.enum(["empty", "ready"]),
33990
- heading: z57.string().nullable(),
33991
- className: z57.string().nullable(),
33992
- emptyMessage: z57.string(),
33993
- supportText: z57.string().nullable(),
33994
- items: z57.array(cartLineDisplaySchema),
33995
- subtotalLabel: z57.string().nullable(),
33996
- checkoutButtonText: z57.string(),
33997
- clearButtonText: z57.string()
33998
- });
33999
- var checkoutDisplaySchema = z57.object({
34000
- kind: z57.literal("checkout"),
34001
- state: z57.enum(["empty", "blocked", "ready"]),
34002
- heading: z57.string().nullable(),
34003
- className: z57.string().nullable(),
34004
- message: z57.string().nullable(),
34005
- submitButtonText: z57.string()
34006
- });
34007
- var passesMembershipsHydrationSchema = z57.object({
34008
- passes: z57.array(publicPassProductSchema),
34009
- memberships: z57.array(publicMembershipProductSchema),
34010
- passPurchaseMode: z57.enum(["add_to_cart", "buy_now"])
34011
- });
34012
- var productListHydrationSchema = z57.object({
34013
- products: z57.array(publicProductSchema),
34014
- showSummary: z57.boolean(),
34015
- showPrices: z57.boolean(),
34016
- addButtonText: z57.string()
34017
- });
34018
- var productDetailHydrationSchema = z57.object({
34019
- products: z57.array(publicProductSchema),
34020
- productId: z57.string().nullable(),
34021
- showSummary: z57.boolean(),
34022
- showBody: z57.boolean(),
34023
- addButtonText: z57.string()
34024
- });
34025
- var cartHydrationSchema = z57.object({
34026
- emptyStateText: z57.string(),
34027
- checkoutButtonText: z57.string(),
34028
- clearButtonText: z57.string()
34029
- });
34030
- var checkoutHydrationSchema = z57.object({
34031
- emptyStateText: z57.string(),
34032
- submitButtonText: z57.string()
34033
- });
34034
- var passesMembershipsRenderSchema = z57.object({
34240
+ var passCardDisplaySchema = z58.object({
34241
+ id: z58.string(),
34242
+ title: z58.string(),
34243
+ description: z58.string().nullable(),
34244
+ priceLabel: z58.string(),
34245
+ creditsLabel: z58.string(),
34246
+ perCreditLabel: z58.string().nullable(),
34247
+ validityLabel: z58.string().nullable(),
34248
+ actionLabel: z58.string()
34249
+ });
34250
+ var membershipCardDisplaySchema = z58.object({
34251
+ id: z58.string(),
34252
+ title: z58.string(),
34253
+ description: z58.string().nullable(),
34254
+ priceLabel: z58.string(),
34255
+ intervalLabel: z58.string(),
34256
+ actionLabel: z58.string()
34257
+ });
34258
+ var passesMembershipsDisplaySchema = z58.object({
34259
+ kind: z58.literal("passes-memberships"),
34260
+ state: z58.enum(["empty", "ready"]),
34261
+ className: z58.string().nullable(),
34262
+ layout: z58.enum(["grid", "list"]),
34263
+ columns: z58.string(),
34264
+ emptyMessage: z58.string(),
34265
+ passesHeading: z58.string(),
34266
+ membershipsHeading: z58.string(),
34267
+ passes: z58.array(passCardDisplaySchema),
34268
+ memberships: z58.array(membershipCardDisplaySchema)
34269
+ });
34270
+ var cartLineDisplaySchema = z58.object({
34271
+ key: z58.string(),
34272
+ title: z58.string(),
34273
+ priceLabel: z58.string(),
34274
+ quantity: z58.number(),
34275
+ quantityEditable: z58.boolean()
34276
+ });
34277
+ var cartDisplaySchema = z58.object({
34278
+ kind: z58.literal("cart"),
34279
+ state: z58.enum(["empty", "ready"]),
34280
+ heading: z58.string().nullable(),
34281
+ className: z58.string().nullable(),
34282
+ emptyMessage: z58.string(),
34283
+ supportText: z58.string().nullable(),
34284
+ items: z58.array(cartLineDisplaySchema),
34285
+ subtotalLabel: z58.string().nullable(),
34286
+ checkoutButtonText: z58.string(),
34287
+ clearButtonText: z58.string()
34288
+ });
34289
+ var checkoutDisplaySchema = z58.object({
34290
+ kind: z58.literal("checkout"),
34291
+ state: z58.enum(["empty", "blocked", "ready"]),
34292
+ heading: z58.string().nullable(),
34293
+ className: z58.string().nullable(),
34294
+ message: z58.string().nullable(),
34295
+ submitButtonText: z58.string()
34296
+ });
34297
+ var passesMembershipsHydrationSchema = z58.object({
34298
+ passes: z58.array(publicPassProductSchema),
34299
+ memberships: z58.array(publicMembershipProductSchema),
34300
+ passPurchaseMode: z58.enum(["add_to_cart", "buy_now"])
34301
+ });
34302
+ var productListHydrationSchema = z58.object({
34303
+ products: z58.array(publicProductSchema),
34304
+ showSummary: z58.boolean(),
34305
+ showPrices: z58.boolean(),
34306
+ addButtonText: z58.string()
34307
+ });
34308
+ var productDetailHydrationSchema = z58.object({
34309
+ products: z58.array(publicProductSchema),
34310
+ productId: z58.string().nullable(),
34311
+ showSummary: z58.boolean(),
34312
+ showBody: z58.boolean(),
34313
+ addButtonText: z58.string()
34314
+ });
34315
+ var cartHydrationSchema = z58.object({
34316
+ emptyStateText: z58.string(),
34317
+ checkoutButtonText: z58.string(),
34318
+ clearButtonText: z58.string()
34319
+ });
34320
+ var checkoutHydrationSchema = z58.object({
34321
+ emptyStateText: z58.string(),
34322
+ submitButtonText: z58.string()
34323
+ });
34324
+ var passesMembershipsRenderSchema = z58.object({
34035
34325
  display: passesMembershipsDisplaySchema,
34036
34326
  hydration: passesMembershipsHydrationSchema
34037
34327
  });
34038
- var productListRenderSchema = z57.object({
34328
+ var productListRenderSchema = z58.object({
34039
34329
  display: productListDisplaySchema,
34040
34330
  hydration: productListHydrationSchema
34041
34331
  });
34042
- var productDetailRenderSchema = z57.object({
34332
+ var productDetailRenderSchema = z58.object({
34043
34333
  display: productDetailDisplaySchema,
34044
34334
  hydration: productDetailHydrationSchema
34045
34335
  });
34046
- var cartRenderSchema = z57.object({
34336
+ var cartRenderSchema = z58.object({
34047
34337
  display: cartDisplaySchema,
34048
34338
  hydration: cartHydrationSchema
34049
34339
  });
34050
- var checkoutRenderSchema = z57.object({
34340
+ var checkoutRenderSchema = z58.object({
34051
34341
  display: checkoutDisplaySchema,
34052
34342
  hydration: checkoutHydrationSchema
34053
34343
  });
34054
34344
  function resolveShowPricePerCredit(source) {
34055
34345
  return source.showPricePerCredit ?? true;
34056
34346
  }
34057
- var shopIslandMetaCodec = createZodCodec(z57.object({
34058
- siteId: z57.string().optional(),
34059
- apiBaseUrl: z57.string().optional(),
34347
+ var shopIslandMetaCodec = createZodCodec(z58.object({
34348
+ siteId: z58.string().optional(),
34349
+ apiBaseUrl: z58.string().optional(),
34060
34350
  stage: previewStageSchema.optional()
34061
34351
  }));
34062
34352
  var shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
@@ -34459,7 +34749,7 @@ var shopBlockDefinition = {
34459
34749
  };
34460
34750
 
34461
34751
  // ../blocks/src/system/blocks/product-list.ts
34462
- import { z as z58 } from "zod";
34752
+ import { z as z59 } from "zod";
34463
34753
  var productListManifest = createBlockManifest({
34464
34754
  id: "block.product-list",
34465
34755
  version: "1.0.0",
@@ -34592,7 +34882,7 @@ var productListBlockDefinition = {
34592
34882
  }
34593
34883
  }
34594
34884
  };
34595
- var productListDataSchema = z58.object({
34885
+ var productListDataSchema = z59.object({
34596
34886
  products: publicProductsResponseSchema.optional()
34597
34887
  });
34598
34888
 
@@ -34853,72 +35143,72 @@ var checkoutBlockDefinition = {
34853
35143
  };
34854
35144
 
34855
35145
  // ../blocks/src/system/runtime/nodes/gifting.interactive.ts
34856
- import { z as z59 } from "zod";
34857
- var publicGiftCardOfferSchema = z59.object({
34858
- id: z59.string(),
34859
- kind: z59.literal("gift_card"),
34860
- title: z59.string(),
34861
- description: z59.string().nullable(),
34862
- sortOrder: z59.number().int(),
34863
- giftCard: z59.object({
34864
- fixedDenominations: z59.array(z59.number().int().positive()),
34865
- customAmountEnabled: z59.boolean(),
34866
- customAmountMinCents: z59.number().int().positive(),
34867
- customAmountMaxCents: z59.number().int().positive()
35146
+ import { z as z60 } from "zod";
35147
+ var publicGiftCardOfferSchema = z60.object({
35148
+ id: z60.string(),
35149
+ kind: z60.literal("gift_card"),
35150
+ title: z60.string(),
35151
+ description: z60.string().nullable(),
35152
+ sortOrder: z60.number().int(),
35153
+ giftCard: z60.object({
35154
+ fixedDenominations: z60.array(z60.number().int().positive()),
35155
+ customAmountEnabled: z60.boolean(),
35156
+ customAmountMinCents: z60.number().int().positive(),
35157
+ customAmountMaxCents: z60.number().int().positive()
34868
35158
  }),
34869
- voucher: z59.null()
34870
- });
34871
- var publicVoucherOfferSchema = z59.object({
34872
- id: z59.string(),
34873
- kind: z59.literal("voucher"),
34874
- title: z59.string(),
34875
- description: z59.string().nullable(),
34876
- sortOrder: z59.number().int(),
34877
- giftCard: z59.null(),
34878
- voucher: z59.object({
34879
- purchaseAmountCents: z59.number().int().positive()
35159
+ voucher: z60.null()
35160
+ });
35161
+ var publicVoucherOfferSchema = z60.object({
35162
+ id: z60.string(),
35163
+ kind: z60.literal("voucher"),
35164
+ title: z60.string(),
35165
+ description: z60.string().nullable(),
35166
+ sortOrder: z60.number().int(),
35167
+ giftCard: z60.null(),
35168
+ voucher: z60.object({
35169
+ purchaseAmountCents: z60.number().int().positive()
34880
35170
  })
34881
35171
  });
34882
- var publicGiftingOffersResponseSchema = z59.object({
34883
- currency: z59.string(),
34884
- giftCards: z59.array(publicGiftCardOfferSchema),
34885
- vouchers: z59.array(publicVoucherOfferSchema)
35172
+ var publicGiftingOffersResponseSchema = z60.object({
35173
+ currency: z60.string(),
35174
+ giftCards: z60.array(publicGiftCardOfferSchema),
35175
+ vouchers: z60.array(publicVoucherOfferSchema)
34886
35176
  });
34887
- var giftingSourceSchema = z59.object({
34888
- siteId: z59.string().optional(),
34889
- apiBaseUrl: z59.string().optional(),
35177
+ var giftingSourceSchema = z60.object({
35178
+ siteId: z60.string().optional(),
35179
+ apiBaseUrl: z60.string().optional(),
34890
35180
  offers: publicGiftingOffersResponseSchema.nullable().optional(),
34891
- className: z59.string().nullable().optional(),
34892
- heading: z59.string().nullable().optional(),
34893
- intro: z59.string().nullable().optional(),
34894
- giftCardsHeading: z59.string().nullable().optional(),
34895
- vouchersHeading: z59.string().nullable().optional(),
34896
- emptyStateText: z59.string().nullable().optional(),
34897
- checkoutButtonText: z59.string().nullable().optional(),
34898
- successMessage: z59.string().nullable().optional()
34899
- });
34900
- var giftingDisplaySchema = z59.object({
34901
- kind: z59.literal("gifting"),
34902
- state: z59.literal("ready"),
34903
- className: z59.string().nullable(),
34904
- heading: z59.string(),
34905
- intro: z59.string().nullable(),
34906
- giftCardsHeading: z59.string(),
34907
- vouchersHeading: z59.string(),
34908
- emptyStateText: z59.string()
34909
- });
34910
- var giftingHydrationSchema = z59.object({
35181
+ className: z60.string().nullable().optional(),
35182
+ heading: z60.string().nullable().optional(),
35183
+ intro: z60.string().nullable().optional(),
35184
+ giftCardsHeading: z60.string().nullable().optional(),
35185
+ vouchersHeading: z60.string().nullable().optional(),
35186
+ emptyStateText: z60.string().nullable().optional(),
35187
+ checkoutButtonText: z60.string().nullable().optional(),
35188
+ successMessage: z60.string().nullable().optional()
35189
+ });
35190
+ var giftingDisplaySchema = z60.object({
35191
+ kind: z60.literal("gifting"),
35192
+ state: z60.literal("ready"),
35193
+ className: z60.string().nullable(),
35194
+ heading: z60.string(),
35195
+ intro: z60.string().nullable(),
35196
+ giftCardsHeading: z60.string(),
35197
+ vouchersHeading: z60.string(),
35198
+ emptyStateText: z60.string()
35199
+ });
35200
+ var giftingHydrationSchema = z60.object({
34911
35201
  offers: publicGiftingOffersResponseSchema.nullable(),
34912
- checkoutButtonText: z59.string(),
34913
- successMessage: z59.string()
35202
+ checkoutButtonText: z60.string(),
35203
+ successMessage: z60.string()
34914
35204
  });
34915
- var giftingRenderSchema = z59.object({
35205
+ var giftingRenderSchema = z60.object({
34916
35206
  display: giftingDisplaySchema,
34917
35207
  hydration: giftingHydrationSchema
34918
35208
  });
34919
- var giftingIslandMetaCodec = createZodCodec(z59.object({
34920
- siteId: z59.string().optional(),
34921
- apiBaseUrl: z59.string().optional()
35209
+ var giftingIslandMetaCodec = createZodCodec(z60.object({
35210
+ siteId: z60.string().optional(),
35211
+ apiBaseUrl: z60.string().optional()
34922
35212
  }));
34923
35213
  var giftingIslandMetaKeys = defineInteractiveIslandMetaKeys(
34924
35214
  "siteId",
@@ -35089,7 +35379,7 @@ var giftingBlockDefinition = {
35089
35379
  };
35090
35380
 
35091
35381
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
35092
- import { z as z60 } from "zod";
35382
+ import { z as z61 } from "zod";
35093
35383
 
35094
35384
  // ../blocks/src/system/blocks/newsletter-signup-destination.ts
35095
35385
  function parseNewsletterSignupBlockId(value) {
@@ -35196,65 +35486,65 @@ function withOptionalPhone(fields3, includePhone) {
35196
35486
  }
35197
35487
 
35198
35488
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
35199
- var newsletterPresetSchema = z60.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
35200
- var newsletterDestinationProviderSchema = z60.enum(["riverbank", "mailchimp"]);
35201
- var newsletterFieldSchema = z60.object({
35202
- id: z60.string(),
35203
- type: z60.enum(["email", "text"]),
35204
- label: z60.string(),
35205
- required: z60.boolean(),
35206
- placeholder: z60.string().optional()
35207
- });
35208
- var newsletterSignupBlockIdSchema = z60.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
35209
- var signedNewsletterDestinationRefSchema = z60.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
35210
- var newsletterPublicDestinationRefSchema = z60.discriminatedUnion("tag", [
35211
- z60.object({
35212
- tag: z60.literal("block_ref"),
35489
+ var newsletterPresetSchema = z61.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
35490
+ var newsletterDestinationProviderSchema = z61.enum(["riverbank", "mailchimp"]);
35491
+ var newsletterFieldSchema = z61.object({
35492
+ id: z61.string(),
35493
+ type: z61.enum(["email", "text"]),
35494
+ label: z61.string(),
35495
+ required: z61.boolean(),
35496
+ placeholder: z61.string().optional()
35497
+ });
35498
+ var newsletterSignupBlockIdSchema = z61.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
35499
+ var signedNewsletterDestinationRefSchema = z61.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
35500
+ var newsletterPublicDestinationRefSchema = z61.discriminatedUnion("tag", [
35501
+ z61.object({
35502
+ tag: z61.literal("block_ref"),
35213
35503
  blockId: newsletterSignupBlockIdSchema
35214
35504
  }),
35215
- z60.object({
35216
- tag: z60.literal("signed_destination_ref"),
35505
+ z61.object({
35506
+ tag: z61.literal("signed_destination_ref"),
35217
35507
  token: signedNewsletterDestinationRefSchema
35218
35508
  })
35219
35509
  ]);
35220
- var newsletterSourceSchema = z60.object({
35221
- blockId: z60.string().nullable().optional(),
35222
- siteId: z60.string().optional(),
35223
- apiBaseUrl: z60.string().optional(),
35224
- listId: z60.string().nullable().optional(),
35510
+ var newsletterSourceSchema = z61.object({
35511
+ blockId: z61.string().nullable().optional(),
35512
+ siteId: z61.string().optional(),
35513
+ apiBaseUrl: z61.string().optional(),
35514
+ listId: z61.string().nullable().optional(),
35225
35515
  destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
35226
35516
  preset: newsletterPresetSchema.optional(),
35227
- includePhone: z60.boolean().optional(),
35228
- buttonLabel: z60.string().nullable().optional(),
35229
- successMessage: z60.string().nullable().optional(),
35230
- privacyNote: z60.string().nullable().optional(),
35231
- tags: z60.string().nullable().optional(),
35232
- spamProtectionEnabled: z60.boolean().optional(),
35233
- className: z60.string().nullable().optional()
35234
- });
35235
- var newsletterDisplaySchema = z60.object({
35236
- kind: z60.literal("newsletter-form"),
35237
- className: z60.string().nullable(),
35238
- buttonLabel: z60.string(),
35239
- successMessage: z60.string().nullable(),
35240
- privacyNote: z60.string().nullable(),
35241
- fields: z60.array(newsletterFieldSchema)
35242
- });
35243
- var newsletterHydrationSchema = z60.object({
35517
+ includePhone: z61.boolean().optional(),
35518
+ buttonLabel: z61.string().nullable().optional(),
35519
+ successMessage: z61.string().nullable().optional(),
35520
+ privacyNote: z61.string().nullable().optional(),
35521
+ tags: z61.string().nullable().optional(),
35522
+ spamProtectionEnabled: z61.boolean().optional(),
35523
+ className: z61.string().nullable().optional()
35524
+ });
35525
+ var newsletterDisplaySchema = z61.object({
35526
+ kind: z61.literal("newsletter-form"),
35527
+ className: z61.string().nullable(),
35528
+ buttonLabel: z61.string(),
35529
+ successMessage: z61.string().nullable(),
35530
+ privacyNote: z61.string().nullable(),
35531
+ fields: z61.array(newsletterFieldSchema)
35532
+ });
35533
+ var newsletterHydrationSchema = z61.object({
35244
35534
  destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
35245
- listId: z60.string().nullable().optional(),
35535
+ listId: z61.string().nullable().optional(),
35246
35536
  preset: newsletterPresetSchema,
35247
- includePhone: z60.boolean(),
35248
- tags: z60.string().nullable().optional(),
35249
- spamProtectionEnabled: z60.boolean().optional()
35537
+ includePhone: z61.boolean(),
35538
+ tags: z61.string().nullable().optional(),
35539
+ spamProtectionEnabled: z61.boolean().optional()
35250
35540
  });
35251
- var newsletterRenderSchema = z60.object({
35541
+ var newsletterRenderSchema = z61.object({
35252
35542
  display: newsletterDisplaySchema,
35253
35543
  hydration: newsletterHydrationSchema
35254
35544
  });
35255
- var newsletterIslandMetaCodec = createZodCodec(z60.object({
35256
- siteId: z60.string().optional(),
35257
- apiBaseUrl: z60.string().optional()
35545
+ var newsletterIslandMetaCodec = createZodCodec(z61.object({
35546
+ siteId: z61.string().optional(),
35547
+ apiBaseUrl: z61.string().optional()
35258
35548
  }));
35259
35549
  var newsletterIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
35260
35550
  function buildNewsletterDisplay(source) {
@@ -35393,23 +35683,23 @@ var newsletterSignupBlockDefinition = {
35393
35683
  };
35394
35684
 
35395
35685
  // ../blocks/src/system/blocks/team-members.ts
35396
- import { z as z61 } from "zod";
35686
+ import { z as z62 } from "zod";
35397
35687
  var ITEM_NAME2 = "member";
35398
35688
  var teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
35399
35689
  message: "Team member photos must be image media"
35400
35690
  }).nullable();
35401
- var teamMemberDataSchema = z61.object({
35402
- _type: z61.literal("teamMember"),
35403
- id: z61.string(),
35404
- name: z61.string(),
35405
- role: z61.string().nullable(),
35406
- roleLabel: z61.string().nullable(),
35407
- bio: z61.string().nullable(),
35408
- summary: z61.string().nullable(),
35691
+ var teamMemberDataSchema = z62.object({
35692
+ _type: z62.literal("teamMember"),
35693
+ id: z62.string(),
35694
+ name: z62.string(),
35695
+ role: z62.string().nullable(),
35696
+ roleLabel: z62.string().nullable(),
35697
+ bio: z62.string().nullable(),
35698
+ summary: z62.string().nullable(),
35409
35699
  photo: teamMemberPhotoSchema,
35410
- profilePath: z61.string().nullable()
35700
+ profilePath: z62.string().nullable()
35411
35701
  });
35412
- var teamMembersDataSchema = z61.array(teamMemberDataSchema);
35702
+ var teamMembersDataSchema = z62.array(teamMemberDataSchema);
35413
35703
  var dynamicSourceWhen = { equals: "site_staff" };
35414
35704
  var manualSourceWhen = { equals: "site_staff", not: true };
35415
35705
  var headingNode = text(
@@ -36515,6 +36805,10 @@ var systemBlockDefinitionsRaw = [
36515
36805
  flow: conversionFlow,
36516
36806
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "form", weight: "standard" })]
36517
36807
  })),
36808
+ withDesignCapability("block.weekly-slot-availability", weeklySlotAvailabilityBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
36809
+ flow: offeringsFlow,
36810
+ layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
36811
+ })),
36518
36812
  withDesignCapability("block.event-registration", eventRegistrationBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
36519
36813
  flow: conversionFlow,
36520
36814
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "form", weight: "standard" })]
@@ -38093,34 +38387,34 @@ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
38093
38387
  var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
38094
38388
 
38095
38389
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
38096
- import { z as z62 } from "zod";
38097
- var themeBridgeConfigSchema = z62.object({
38098
- tokens: z62.record(z62.string(), z62.string()),
38099
- typography: z62.object({
38100
- headingFamily: z62.string().optional(),
38101
- bodyFamily: z62.string().optional(),
38102
- headingWeight: z62.number().optional(),
38103
- bodyWeight: z62.number().optional()
38390
+ import { z as z63 } from "zod";
38391
+ var themeBridgeConfigSchema = z63.object({
38392
+ tokens: z63.record(z63.string(), z63.string()),
38393
+ typography: z63.object({
38394
+ headingFamily: z63.string().optional(),
38395
+ bodyFamily: z63.string().optional(),
38396
+ headingWeight: z63.number().optional(),
38397
+ bodyWeight: z63.number().optional()
38104
38398
  }).optional(),
38105
- spacing: z62.enum(["comfortable", "standard", "dense"]).optional(),
38106
- corners: z62.enum(["square", "soft", "rounded", "pill"]).optional(),
38107
- shadows: z62.enum(["none", "low", "medium", "high"]).optional(),
38108
- components: z62.object({
38109
- buttons: z62.union([
38110
- z62.boolean(),
38111
- z62.object({
38112
- variants: z62.array(z62.enum(["primary", "secondary", "outline", "ghost"])).optional()
38399
+ spacing: z63.enum(["comfortable", "standard", "dense"]).optional(),
38400
+ corners: z63.enum(["square", "soft", "rounded", "pill"]).optional(),
38401
+ shadows: z63.enum(["none", "low", "medium", "high"]).optional(),
38402
+ components: z63.object({
38403
+ buttons: z63.union([
38404
+ z63.boolean(),
38405
+ z63.object({
38406
+ variants: z63.array(z63.enum(["primary", "secondary", "outline", "ghost"])).optional()
38113
38407
  })
38114
38408
  ]).optional(),
38115
- cards: z62.union([
38116
- z62.boolean(),
38117
- z62.object({
38118
- variants: z62.array(z62.enum(["default", "elevated", "outlined"])).optional()
38409
+ cards: z63.union([
38410
+ z63.boolean(),
38411
+ z63.object({
38412
+ variants: z63.array(z63.enum(["default", "elevated", "outlined"])).optional()
38119
38413
  })
38120
38414
  ]).optional(),
38121
- inputs: z62.boolean().optional()
38415
+ inputs: z63.boolean().optional()
38122
38416
  }).optional(),
38123
- overrides: z62.record(z62.string(), z62.string()).optional()
38417
+ overrides: z63.record(z63.string(), z63.string()).optional()
38124
38418
  }).passthrough();
38125
38419
 
38126
38420
  // ../theme-core/src/siteChrome.tsx
@@ -38139,24 +38433,25 @@ var SUPPORTED_LOADER_ENDPOINTS = [
38139
38433
  "listPublicPasses",
38140
38434
  "listPublicMemberships",
38141
38435
  "getPublicFormById",
38142
- "getPublicBookingServices"
38436
+ "getPublicBookingServices",
38437
+ "getPublicWeeklySlotAvailability"
38143
38438
  ];
38144
38439
 
38145
38440
  // ../api/src/sdkConfig/contracts.ts
38146
38441
  function unsafeRetypeZodSchema(schema) {
38147
38442
  return schema;
38148
38443
  }
38149
- var navIdListSchema = z63.preprocess((value) => {
38444
+ var navIdListSchema = z64.preprocess((value) => {
38150
38445
  if (!Array.isArray(value)) return void 0;
38151
38446
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
38152
38447
  return filtered.length > 0 ? filtered : void 0;
38153
- }, z63.array(z63.string()).max(200).optional());
38154
- var dashboardNavVisibilityBaseSchema = z63.object({
38155
- mode: z63.enum(["augment", "restrict"]).optional(),
38448
+ }, z64.array(z64.string()).max(200).optional());
38449
+ var dashboardNavVisibilityBaseSchema = z64.object({
38450
+ mode: z64.enum(["augment", "restrict"]).optional(),
38156
38451
  allowIds: navIdListSchema,
38157
38452
  denyIds: navIdListSchema
38158
38453
  }).strip();
38159
- var dashboardNavVisibilityRolesSchema = z63.object({
38454
+ var dashboardNavVisibilityRolesSchema = z64.object({
38160
38455
  administrator: dashboardNavVisibilityBaseSchema.optional(),
38161
38456
  editor: dashboardNavVisibilityBaseSchema.optional(),
38162
38457
  team_member: dashboardNavVisibilityBaseSchema.optional()
@@ -38164,63 +38459,63 @@ var dashboardNavVisibilityRolesSchema = z63.object({
38164
38459
  var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
38165
38460
  roles: dashboardNavVisibilityRolesSchema
38166
38461
  }).strip();
38167
- var dashboardNavigationConfigSchema = z63.object({
38462
+ var dashboardNavigationConfigSchema = z64.object({
38168
38463
  siteNav: dashboardNavVisibilitySchema.optional(),
38169
38464
  settingsNav: dashboardNavVisibilitySchema.optional()
38170
38465
  }).strip();
38171
- var dashboardConfigSchema = z63.object({
38172
- previewEditingEnabled: z63.boolean().optional(),
38466
+ var dashboardConfigSchema = z64.object({
38467
+ previewEditingEnabled: z64.boolean().optional(),
38173
38468
  navigation: dashboardNavigationConfigSchema.optional()
38174
38469
  }).strip();
38175
38470
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
38176
38471
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
38177
- var sdkLoaderEndpointSchema = z63.enum(SUPPORTED_LOADER_ENDPOINTS);
38178
- var loaderFallbackScalarSchema = z63.union([
38179
- z63.string(),
38180
- z63.number(),
38181
- z63.boolean(),
38182
- z63.null()
38472
+ var sdkLoaderEndpointSchema = z64.enum(SUPPORTED_LOADER_ENDPOINTS);
38473
+ var loaderFallbackScalarSchema = z64.union([
38474
+ z64.string(),
38475
+ z64.number(),
38476
+ z64.boolean(),
38477
+ z64.null()
38183
38478
  ]);
38184
- var loaderParamBindingSchema = z63.object({
38185
- $bind: z63.object({
38186
- from: z63.string().min(1, "Binding path is required"),
38479
+ var loaderParamBindingSchema = z64.object({
38480
+ $bind: z64.object({
38481
+ from: z64.string().min(1, "Binding path is required"),
38187
38482
  fallback: loaderFallbackScalarSchema.optional()
38188
38483
  })
38189
38484
  });
38190
- var loaderParamValueSchema = z63.union([
38191
- z63.string(),
38192
- z63.number(),
38193
- z63.boolean(),
38485
+ var loaderParamValueSchema = z64.union([
38486
+ z64.string(),
38487
+ z64.number(),
38488
+ z64.boolean(),
38194
38489
  loaderParamBindingSchema
38195
38490
  ]);
38196
- var sdkConfigLoaderSchema = z63.object({
38491
+ var sdkConfigLoaderSchema = z64.object({
38197
38492
  endpoint: sdkLoaderEndpointSchema,
38198
- params: z63.record(z63.string(), loaderParamValueSchema),
38199
- mode: z63.enum(["server", "client"]).default("server")
38493
+ params: z64.record(z64.string(), loaderParamValueSchema),
38494
+ mode: z64.enum(["server", "client"]).default("server")
38200
38495
  });
38201
- var sdkDataLoadersSchema = z63.record(z63.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
38202
- var sdkCustomBlockIdSchema = z63.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
38496
+ var sdkDataLoadersSchema = z64.record(z64.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
38497
+ var sdkCustomBlockIdSchema = z64.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
38203
38498
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
38204
38499
  }).transform((value) => value);
38205
- var sdkCustomBlockInputSchema = z63.object({
38500
+ var sdkCustomBlockInputSchema = z64.object({
38206
38501
  id: sdkCustomBlockIdSchema,
38207
- title: z63.string().min(1),
38208
- titleSource: z63.union([z63.string().min(1), z63.array(z63.string().min(1)).min(1)]).optional(),
38209
- description: z63.string().optional(),
38502
+ title: z64.string().min(1),
38503
+ titleSource: z64.union([z64.string().min(1), z64.array(z64.string().min(1)).min(1)]).optional(),
38504
+ description: z64.string().optional(),
38210
38505
  category: blockCategoryEnum,
38211
- icon: z63.string().optional(),
38212
- tags: z63.array(z63.string()).optional(),
38506
+ icon: z64.string().optional(),
38507
+ tags: z64.array(z64.string()).optional(),
38213
38508
  fields: fieldDefinitionInputSchema.array().min(1),
38214
38509
  dataLoaders: sdkDataLoadersSchema,
38215
38510
  layout: NodeSchema.optional(),
38216
- variants: z63.record(z63.string().min(1), NodeSchema).optional(),
38217
- defaultVariant: z63.string().min(1).optional(),
38218
- variantOptions: z63.record(
38219
- z63.string().min(1),
38220
- z63.object({
38221
- label: z63.string().min(1).optional(),
38222
- description: z63.string().min(1).optional(),
38223
- icon: z63.string().min(1).optional()
38511
+ variants: z64.record(z64.string().min(1), NodeSchema).optional(),
38512
+ defaultVariant: z64.string().min(1).optional(),
38513
+ variantOptions: z64.record(
38514
+ z64.string().min(1),
38515
+ z64.object({
38516
+ label: z64.string().min(1).optional(),
38517
+ description: z64.string().min(1).optional(),
38518
+ icon: z64.string().min(1).optional()
38224
38519
  })
38225
38520
  ).optional(),
38226
38521
  previewCustomize: previewCustomizeManifestCurationSchema.optional()
@@ -38231,7 +38526,7 @@ var sdkCustomBlockInputSchema = z63.object({
38231
38526
  const exists = data.fields.some((field) => field.id === source);
38232
38527
  if (!exists) {
38233
38528
  ctx.addIssue({
38234
- code: z63.ZodIssueCode.custom,
38529
+ code: z64.ZodIssueCode.custom,
38235
38530
  message: `titleSource must reference a valid field ID (got "${source}")`,
38236
38531
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
38237
38532
  });
@@ -38240,7 +38535,7 @@ var sdkCustomBlockInputSchema = z63.object({
38240
38535
  }
38241
38536
  if (data.layout && data.variants) {
38242
38537
  ctx.addIssue({
38243
- code: z63.ZodIssueCode.custom,
38538
+ code: z64.ZodIssueCode.custom,
38244
38539
  message: "Custom block must define either `layout` or `variants`, not both",
38245
38540
  path: ["variants"]
38246
38541
  });
@@ -38249,14 +38544,14 @@ var sdkCustomBlockInputSchema = z63.object({
38249
38544
  const keys = Object.keys(data.variants);
38250
38545
  if (keys.length === 0) {
38251
38546
  ctx.addIssue({
38252
- code: z63.ZodIssueCode.custom,
38547
+ code: z64.ZodIssueCode.custom,
38253
38548
  message: "`variants` must contain at least one variant key",
38254
38549
  path: ["variants"]
38255
38550
  });
38256
38551
  }
38257
38552
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
38258
38553
  ctx.addIssue({
38259
- code: z63.ZodIssueCode.custom,
38554
+ code: z64.ZodIssueCode.custom,
38260
38555
  message: "`defaultVariant` must be a key present in `variants`",
38261
38556
  path: ["defaultVariant"]
38262
38557
  });
@@ -38265,7 +38560,7 @@ var sdkCustomBlockInputSchema = z63.object({
38265
38560
  for (const key of Object.keys(data.variantOptions)) {
38266
38561
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
38267
38562
  ctx.addIssue({
38268
- code: z63.ZodIssueCode.custom,
38563
+ code: z64.ZodIssueCode.custom,
38269
38564
  message: "`variantOptions` key must exist in `variants`",
38270
38565
  path: ["variantOptions", key]
38271
38566
  });
@@ -38274,78 +38569,78 @@ var sdkCustomBlockInputSchema = z63.object({
38274
38569
  }
38275
38570
  }
38276
38571
  });
38277
- var sdkBlockFieldExtensionInputSchema = z63.object({
38572
+ var sdkBlockFieldExtensionInputSchema = z64.object({
38278
38573
  fields: fieldDefinitionInputSchema.array().min(1)
38279
38574
  });
38280
- var sdkBlockFieldExtensionsInputSchema = z63.record(
38281
- z63.string().min(1),
38575
+ var sdkBlockFieldExtensionsInputSchema = z64.record(
38576
+ z64.string().min(1),
38282
38577
  sdkBlockFieldExtensionInputSchema
38283
38578
  );
38284
- var sdkThemePaletteSchema = z63.record(z63.string(), z63.string());
38285
- var sdkThemeConfigSchema = z63.object({
38579
+ var sdkThemePaletteSchema = z64.record(z64.string(), z64.string());
38580
+ var sdkThemeConfigSchema = z64.object({
38286
38581
  palette: sdkThemePaletteSchema
38287
38582
  });
38288
- var sdkSectionBackgroundSchema = z63.object({
38289
- id: z63.string().min(1),
38290
- label: z63.string().min(1),
38291
- token: z63.string().min(1)
38583
+ var sdkSectionBackgroundSchema = z64.object({
38584
+ id: z64.string().min(1),
38585
+ label: z64.string().min(1),
38586
+ token: z64.string().min(1)
38292
38587
  });
38293
- var sdkSectionOptionsConfigSchema = z63.object({
38294
- backgroundColor: z63.boolean().optional(),
38295
- backgroundImage: z63.boolean().optional(),
38296
- backgroundGradient: z63.boolean().optional(),
38297
- spacing: z63.union([z63.array(z63.enum(["compact", "default", "spacious"])), z63.boolean()]).optional(),
38298
- textColor: z63.boolean().optional()
38588
+ var sdkSectionOptionsConfigSchema = z64.object({
38589
+ backgroundColor: z64.boolean().optional(),
38590
+ backgroundImage: z64.boolean().optional(),
38591
+ backgroundGradient: z64.boolean().optional(),
38592
+ spacing: z64.union([z64.array(z64.enum(["compact", "default", "spacious"])), z64.boolean()]).optional(),
38593
+ textColor: z64.boolean().optional()
38299
38594
  });
38300
- var sdkContainerOptionsConfigSchema = z63.object({
38301
- maxWidth: z63.union([z63.array(z63.enum(["narrow", "default", "wide", "full"])), z63.boolean()]).optional(),
38302
- alignment: z63.union([z63.array(z63.enum(["left", "center", "right"])), z63.boolean()]).optional()
38595
+ var sdkContainerOptionsConfigSchema = z64.object({
38596
+ maxWidth: z64.union([z64.array(z64.enum(["narrow", "default", "wide", "full"])), z64.boolean()]).optional(),
38597
+ alignment: z64.union([z64.array(z64.enum(["left", "center", "right"])), z64.boolean()]).optional()
38303
38598
  });
38304
- var sdkSiteStyleConfigSchema = z63.object({
38305
- sectionBackgrounds: z63.array(sdkSectionBackgroundSchema).optional(),
38599
+ var sdkSiteStyleConfigSchema = z64.object({
38600
+ sectionBackgrounds: z64.array(sdkSectionBackgroundSchema).optional(),
38306
38601
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
38307
38602
  containerOptions: sdkContainerOptionsConfigSchema.optional()
38308
38603
  });
38309
- var sdkSiteLayoutConfigSchema = z63.object({
38310
- footerBlocks: z63.array(
38311
- z63.object({
38312
- id: z63.string().min(1).optional(),
38313
- kind: z63.string().min(1),
38314
- content: z63.record(z63.string(), z63.unknown()).optional()
38604
+ var sdkSiteLayoutConfigSchema = z64.object({
38605
+ footerBlocks: z64.array(
38606
+ z64.object({
38607
+ id: z64.string().min(1).optional(),
38608
+ kind: z64.string().min(1),
38609
+ content: z64.record(z64.string(), z64.unknown()).optional()
38315
38610
  })
38316
38611
  ).optional()
38317
38612
  });
38318
- var sdkFieldSelectOptionSchema = z63.object({
38319
- value: z63.string(),
38320
- label: z63.string()
38613
+ var sdkFieldSelectOptionSchema = z64.object({
38614
+ value: z64.string(),
38615
+ label: z64.string()
38321
38616
  });
38322
- var sdkBlockFieldConfigSchema = z63.object({
38323
- options: z63.array(sdkFieldSelectOptionSchema).optional()
38617
+ var sdkBlockFieldConfigSchema = z64.object({
38618
+ options: z64.array(sdkFieldSelectOptionSchema).optional()
38324
38619
  });
38325
- var sdkBlockFieldOptionsMapSchema = z63.record(
38326
- z63.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
38620
+ var sdkBlockFieldOptionsMapSchema = z64.record(
38621
+ z64.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
38327
38622
  message: "Block ID must be 'block.*' or 'custom.*' format"
38328
38623
  }),
38329
- z63.record(z63.string().min(1), sdkBlockFieldConfigSchema)
38624
+ z64.record(z64.string().min(1), sdkBlockFieldConfigSchema)
38330
38625
  ).optional();
38331
- var sdkContentTypeTemplateConfigSchema = z63.object({
38332
- blocks: z63.array(z63.unknown())
38626
+ var sdkContentTypeTemplateConfigSchema = z64.object({
38627
+ blocks: z64.array(z64.unknown())
38333
38628
  }).passthrough();
38334
- var sdkContentTypeOrderingConfigSchema = z63.object({
38335
- mode: z63.enum(["default", "manual"]).optional()
38629
+ var sdkContentTypeOrderingConfigSchema = z64.object({
38630
+ mode: z64.enum(["default", "manual"]).optional()
38336
38631
  }).optional();
38337
- var sdkContentTypeConfigSchema = z63.object({
38338
- key: z63.string().min(1),
38339
- fields: z63.array(z63.unknown()),
38632
+ var sdkContentTypeConfigSchema = z64.object({
38633
+ key: z64.string().min(1),
38634
+ fields: z64.array(z64.unknown()),
38340
38635
  ordering: sdkContentTypeOrderingConfigSchema,
38341
38636
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
38342
38637
  }).passthrough();
38343
- var sdkContentConfigSchema = z63.object({
38344
- contentTypes: z63.array(sdkContentTypeConfigSchema).optional(),
38345
- pages: z63.array(z63.unknown()).optional(),
38346
- entries: z63.array(z63.unknown()).optional(),
38347
- navigationMenus: z63.array(z63.unknown()).optional(),
38348
- settings: z63.unknown().optional()
38638
+ var sdkContentConfigSchema = z64.object({
38639
+ contentTypes: z64.array(sdkContentTypeConfigSchema).optional(),
38640
+ pages: z64.array(z64.unknown()).optional(),
38641
+ entries: z64.array(z64.unknown()).optional(),
38642
+ navigationMenus: z64.array(z64.unknown()).optional(),
38643
+ settings: z64.unknown().optional()
38349
38644
  }).passthrough();
38350
38645
  var SDK_WORKFLOW_ID_MAX_LENGTH = 120;
38351
38646
  var SDK_WORKFLOW_TITLE_MAX_LENGTH = 120;
@@ -38360,62 +38655,62 @@ var SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH = 120;
38360
38655
  var SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH = 500;
38361
38656
  var SDK_WORKFLOW_ID_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
38362
38657
  var SDK_WORKFLOW_ENDPOINT_PATTERN = /^\//;
38363
- var sdkWorkflowIdSchema = z63.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
38658
+ var sdkWorkflowIdSchema = z64.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
38364
38659
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
38365
38660
  });
38366
- var sdkWorkflowEndpointSchema = z63.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
38367
- var sdkWorkflowManualTriggerSchema = z63.object({
38368
- type: z63.literal("manual")
38661
+ var sdkWorkflowEndpointSchema = z64.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 "/"' });
38662
+ var sdkWorkflowManualTriggerSchema = z64.object({
38663
+ type: z64.literal("manual")
38369
38664
  }).strict();
38370
- var sdkWorkflowTriggerFieldSchema = z63.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
38665
+ var sdkWorkflowTriggerFieldSchema = z64.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
38371
38666
  message: "Workflow trigger fields must be top-level content field IDs, not paths"
38372
38667
  });
38373
- var sdkWorkflowFieldChangedConditionSchema = z63.object({
38668
+ var sdkWorkflowFieldChangedConditionSchema = z64.object({
38374
38669
  field: sdkWorkflowTriggerFieldSchema,
38375
- changed: z63.literal(true)
38670
+ changed: z64.literal(true)
38376
38671
  }).strict();
38377
- var sdkWorkflowFieldEmptyConditionSchema = z63.object({
38672
+ var sdkWorkflowFieldEmptyConditionSchema = z64.object({
38378
38673
  field: sdkWorkflowTriggerFieldSchema,
38379
- isEmpty: z63.boolean()
38674
+ isEmpty: z64.boolean()
38380
38675
  }).strict();
38381
- var sdkWorkflowEntryDraftUpdatedTriggerSchema = z63.object({
38382
- type: z63.literal("entry.draft.updated"),
38383
- when: z63.array(
38384
- z63.union([
38676
+ var sdkWorkflowEntryDraftUpdatedTriggerSchema = z64.object({
38677
+ type: z64.literal("entry.draft.updated"),
38678
+ when: z64.array(
38679
+ z64.union([
38385
38680
  sdkWorkflowFieldChangedConditionSchema,
38386
38681
  sdkWorkflowFieldEmptyConditionSchema
38387
38682
  ])
38388
38683
  ).min(1).max(SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT)
38389
38684
  }).strict();
38390
- var sdkWorkflowTriggerSchema = z63.discriminatedUnion("type", [
38685
+ var sdkWorkflowTriggerSchema = z64.discriminatedUnion("type", [
38391
38686
  sdkWorkflowManualTriggerSchema,
38392
38687
  sdkWorkflowEntryDraftUpdatedTriggerSchema
38393
38688
  ]);
38394
- var sdkWorkflowConfirmationSchema = z63.object({
38395
- title: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
38396
- body: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
38689
+ var sdkWorkflowConfirmationSchema = z64.object({
38690
+ title: z64.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
38691
+ body: z64.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
38397
38692
  }).strict();
38398
- var sdkWorkflowConfigSchema = z63.object({
38693
+ var sdkWorkflowConfigSchema = z64.object({
38399
38694
  id: sdkWorkflowIdSchema,
38400
- title: z63.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
38401
- description: z63.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
38402
- contentType: z63.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
38695
+ title: z64.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
38696
+ description: z64.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
38697
+ contentType: z64.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
38403
38698
  endpoint: sdkWorkflowEndpointSchema,
38404
- triggers: z63.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
38699
+ triggers: z64.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
38405
38700
  confirmation: sdkWorkflowConfirmationSchema.optional()
38406
38701
  }).strict();
38407
- var sdkWorkflowsSchema = z63.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
38702
+ var sdkWorkflowsSchema = z64.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
38408
38703
  const ids = workflows.map((workflow) => workflow.id);
38409
38704
  return ids.length === new Set(ids).size;
38410
38705
  }, { message: "Workflow IDs must be unique" }).optional();
38411
- var riverbankSiteConfigInputSchema = z63.object({
38412
- siteId: z63.string().uuid(),
38413
- previewUrl: z63.string().url().optional(),
38414
- liveUrl: z63.string().url().optional(),
38706
+ var riverbankSiteConfigInputSchema = z64.object({
38707
+ siteId: z64.string().uuid(),
38708
+ previewUrl: z64.string().url().optional(),
38709
+ liveUrl: z64.string().url().optional(),
38415
38710
  theme: sdkThemeConfigSchema.optional(),
38416
38711
  styles: sdkSiteStyleConfigSchema.optional(),
38417
38712
  layout: sdkSiteLayoutConfigSchema.optional(),
38418
- customBlocks: z63.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
38713
+ customBlocks: z64.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
38419
38714
  const ids = blocks.map((b) => b.id);
38420
38715
  return ids.length === new Set(ids).size;
38421
38716
  }, { message: "Block IDs must be unique" }).optional(),
@@ -38423,50 +38718,51 @@ var riverbankSiteConfigInputSchema = z63.object({
38423
38718
  blockFieldExtensions: sdkBlockFieldExtensionsInputSchema.optional(),
38424
38719
  workflows: sdkWorkflowsSchema,
38425
38720
  content: sdkContentConfigSchema.optional(),
38426
- contentDir: z63.string().optional(),
38427
- sync: z63.object({
38428
- existingEntries: z63.enum(["skip", "update"]).optional()
38721
+ contentDir: z64.string().optional(),
38722
+ sync: z64.object({
38723
+ existingEntries: z64.enum(["skip", "update"]).optional()
38429
38724
  }).optional(),
38430
- deploy: z63.object({
38431
- verifyCommand: z63.string().optional(),
38432
- prebuildOutput: z63.string().optional()
38725
+ deploy: z64.object({
38726
+ verifyCommand: z64.string().optional(),
38727
+ prebuildOutput: z64.string().optional()
38433
38728
  }).optional(),
38434
- themeSource: z63.enum(["local", "cms"]).optional(),
38435
- activeTheme: z63.string().optional(),
38436
- enablePortal: z63.boolean().optional(),
38729
+ themeSource: z64.enum(["local", "cms"]).optional(),
38730
+ activeTheme: z64.string().optional(),
38731
+ enablePortal: z64.boolean().optional(),
38437
38732
  dashboard: dashboardConfigSchema.optional()
38438
38733
  }).strict();
38439
- var pushSdkConfigBodySchema = z63.object({
38734
+ var pushSdkConfigBodySchema = z64.object({
38440
38735
  config: riverbankSiteConfigInputSchema,
38441
- forceContentTypes: z63.boolean().optional()
38736
+ forceContentTypes: z64.boolean().optional(),
38737
+ mode: z64.enum(["apply", "preview"]).optional()
38442
38738
  }).strict();
38443
38739
 
38444
38740
  // ../api/src/siteOnboarding.ts
38445
- import { z as z64 } from "zod";
38741
+ import { z as z65 } from "zod";
38446
38742
  var LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS = {
38447
38743
  configure_appointments: {
38448
38744
  requirementId: "configure_appointments",
38449
38745
  reason: "launch_anyway"
38450
38746
  }
38451
38747
  };
38452
- var acknowledgeLaunchRequirementRequestSchema = z64.discriminatedUnion(
38748
+ var acknowledgeLaunchRequirementRequestSchema = z65.discriminatedUnion(
38453
38749
  "requirementId",
38454
38750
  [
38455
- z64.object({
38456
- requirementId: z64.literal("review_generated_site")
38751
+ z65.object({
38752
+ requirementId: z65.literal("review_generated_site")
38457
38753
  }),
38458
- z64.object({
38459
- requirementId: z64.literal(
38754
+ z65.object({
38755
+ requirementId: z65.literal(
38460
38756
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.requirementId
38461
38757
  ),
38462
- overrideReason: z64.literal(
38758
+ overrideReason: z65.literal(
38463
38759
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.reason
38464
38760
  )
38465
38761
  })
38466
38762
  ]
38467
38763
  );
38468
- var goLiveSiteRequestSchema = z64.object({
38469
- acceptExtraSiteCharge: z64.boolean().optional()
38764
+ var goLiveSiteRequestSchema = z65.object({
38765
+ acceptExtraSiteCharge: z65.boolean().optional()
38470
38766
  });
38471
38767
 
38472
38768
  // ../surfaces/src/index.ts
@@ -38585,7 +38881,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
38585
38881
  ];
38586
38882
 
38587
38883
  // ../api/src/bookingVerticals.ts
38588
- import { z as z65 } from "zod";
38884
+ import { z as z66 } from "zod";
38589
38885
  var VERTICAL_IDS = [
38590
38886
  "yoga_wellness",
38591
38887
  "fitness_pt",
@@ -38750,39 +39046,39 @@ function getSiteVerticalConfigIssues(rawConfig, config) {
38750
39046
  }
38751
39047
  return [...issues];
38752
39048
  }
38753
- var VerticalIdSchema = z65.string().trim().transform((value, ctx) => {
39049
+ var VerticalIdSchema = z66.string().trim().transform((value, ctx) => {
38754
39050
  const parsed = parseVerticalId(value);
38755
39051
  if (!parsed) {
38756
39052
  ctx.addIssue({
38757
- code: z65.ZodIssueCode.custom,
39053
+ code: z66.ZodIssueCode.custom,
38758
39054
  message: "Unknown booking vertical"
38759
39055
  });
38760
- return z65.NEVER;
39056
+ return z66.NEVER;
38761
39057
  }
38762
39058
  return parsed;
38763
39059
  });
38764
- var VerticalPresetIdSchema = z65.string().trim().transform((value, ctx) => {
39060
+ var VerticalPresetIdSchema = z66.string().trim().transform((value, ctx) => {
38765
39061
  const parsed = parseVerticalPresetId(value);
38766
39062
  if (!parsed) {
38767
39063
  ctx.addIssue({
38768
- code: z65.ZodIssueCode.custom,
39064
+ code: z66.ZodIssueCode.custom,
38769
39065
  message: "Unknown booking preset"
38770
39066
  });
38771
- return z65.NEVER;
39067
+ return z66.NEVER;
38772
39068
  }
38773
39069
  return parsed;
38774
39070
  });
38775
- var BookingVerticalConfigSchema = z65.object({
39071
+ var BookingVerticalConfigSchema = z66.object({
38776
39072
  verticalId: VerticalIdSchema.nullable(),
38777
- selectedPresetIds: z65.array(VerticalPresetIdSchema).max(20)
39073
+ selectedPresetIds: z66.array(VerticalPresetIdSchema).max(20)
38778
39074
  }).transform((value, ctx) => {
38779
39075
  const resolved = resolveSiteVerticalBookingConfig(value);
38780
39076
  if (resolved.kind === "invalid") {
38781
39077
  ctx.addIssue({
38782
- code: z65.ZodIssueCode.custom,
39078
+ code: z66.ZodIssueCode.custom,
38783
39079
  message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
38784
39080
  });
38785
- return z65.NEVER;
39081
+ return z66.NEVER;
38786
39082
  }
38787
39083
  return resolved.config;
38788
39084
  });
@@ -38809,51 +39105,51 @@ function isRecord8(value) {
38809
39105
  }
38810
39106
 
38811
39107
  // ../api/src/appointmentSetup.ts
38812
- import { z as z66 } from "zod";
39108
+ import { z as z67 } from "zod";
38813
39109
  var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
38814
- var appointmentSetupRefSchema = z66.discriminatedUnion("kind", [
38815
- z66.object({ kind: z66.literal("existing"), id: z66.string().min(1) }),
38816
- z66.object({ kind: z66.literal("new"), draftId: z66.string().min(1) })
39110
+ var appointmentSetupRefSchema = z67.discriminatedUnion("kind", [
39111
+ z67.object({ kind: z67.literal("existing"), id: z67.string().min(1) }),
39112
+ z67.object({ kind: z67.literal("new"), draftId: z67.string().min(1) })
38817
39113
  ]);
38818
- var appointmentSetupVenueChoiceSchema = z66.discriminatedUnion("kind", [
38819
- z66.object({ kind: z66.literal("none") }),
38820
- z66.object({ kind: z66.literal("existing"), venueId: z66.string().min(1) }),
38821
- z66.object({
38822
- kind: z66.literal("create"),
38823
- draftId: z66.string().min(1),
38824
- title: z66.string().trim().min(1),
38825
- description: z66.string().nullable(),
38826
- timezone: z66.string().trim().min(1).nullable(),
38827
- addressJson: z66.record(z66.string(), z66.unknown()),
38828
- locationJson: z66.object({ lat: z66.number(), lng: z66.number() }).nullable()
39114
+ var appointmentSetupVenueChoiceSchema = z67.discriminatedUnion("kind", [
39115
+ z67.object({ kind: z67.literal("none") }),
39116
+ z67.object({ kind: z67.literal("existing"), venueId: z67.string().min(1) }),
39117
+ z67.object({
39118
+ kind: z67.literal("create"),
39119
+ draftId: z67.string().min(1),
39120
+ title: z67.string().trim().min(1),
39121
+ description: z67.string().nullable(),
39122
+ timezone: z67.string().trim().min(1).nullable(),
39123
+ addressJson: z67.record(z67.string(), z67.unknown()),
39124
+ locationJson: z67.object({ lat: z67.number(), lng: z67.number() }).nullable()
38829
39125
  })
38830
39126
  ]);
38831
- var appointmentSetupPaymentDraftSchema = z66.object({
38832
- priceType: z66.union([z66.literal("free"), z66.literal("paid")])
38833
- });
38834
- var appointmentSetupServiceAssignmentDraftSchema = z66.discriminatedUnion("kind", [
38835
- z66.object({ kind: z66.literal("all_practitioners") }),
38836
- z66.object({
38837
- kind: z66.literal("selected_practitioners"),
38838
- resourceRefs: z66.array(appointmentSetupRefSchema)
39127
+ var appointmentSetupPaymentDraftSchema = z67.object({
39128
+ priceType: z67.union([z67.literal("free"), z67.literal("paid")])
39129
+ });
39130
+ var appointmentSetupServiceAssignmentDraftSchema = z67.discriminatedUnion("kind", [
39131
+ z67.object({ kind: z67.literal("all_practitioners") }),
39132
+ z67.object({
39133
+ kind: z67.literal("selected_practitioners"),
39134
+ resourceRefs: z67.array(appointmentSetupRefSchema)
38839
39135
  })
38840
39136
  ]);
38841
- var appointmentSetupServiceDraftSchema = z66.object({
39137
+ var appointmentSetupServiceDraftSchema = z67.object({
38842
39138
  ref: appointmentSetupRefSchema,
38843
- title: z66.string().trim().min(1),
38844
- description: z66.string().nullable(),
38845
- durationMinutes: z66.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
38846
- prepMinutes: z66.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
38847
- cleanupMinutes: z66.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
38848
- priceAmount: z66.number().int().nonnegative().nullable(),
38849
- isActive: z66.boolean(),
38850
- locationType: z66.union([
38851
- z66.literal("virtual"),
38852
- z66.literal("in_person"),
38853
- z66.literal("hybrid")
39139
+ title: z67.string().trim().min(1),
39140
+ description: z67.string().nullable(),
39141
+ durationMinutes: z67.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
39142
+ prepMinutes: z67.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39143
+ cleanupMinutes: z67.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39144
+ priceAmount: z67.number().int().nonnegative().nullable(),
39145
+ isActive: z67.boolean(),
39146
+ locationType: z67.union([
39147
+ z67.literal("virtual"),
39148
+ z67.literal("in_person"),
39149
+ z67.literal("hybrid")
38854
39150
  ]),
38855
39151
  venue: appointmentSetupVenueChoiceSchema,
38856
- timezone: z66.string().trim().min(1).nullable(),
39152
+ timezone: z67.string().trim().min(1).nullable(),
38857
39153
  payment: appointmentSetupPaymentDraftSchema,
38858
39154
  assignment: appointmentSetupServiceAssignmentDraftSchema
38859
39155
  }).superRefine((service, ctx) => {
@@ -38872,49 +39168,49 @@ var appointmentSetupServiceDraftSchema = z66.object({
38872
39168
  });
38873
39169
  }
38874
39170
  });
38875
- var appointmentSetupPractitionerDraftSchema = z66.object({
39171
+ var appointmentSetupPractitionerDraftSchema = z67.object({
38876
39172
  ref: appointmentSetupRefSchema,
38877
- displayName: z66.string().trim().min(1),
38878
- bio: z66.string().nullable(),
38879
- timezone: z66.string().trim().min(1),
38880
- colorHex: z66.string().nullable()
38881
- });
38882
- var appointmentSetupWeeklyWindowDraftSchema = z66.object({
38883
- weekday: z66.number().int().min(0).max(6),
38884
- startTime: z66.string(),
38885
- endTime: z66.string()
38886
- });
38887
- var appointmentSetupStartTimePolicyDraftSchema = z66.discriminatedUnion("kind", [
38888
- z66.object({ kind: z66.literal("automatic_spacing") }),
38889
- z66.object({
38890
- kind: z66.literal("regular_interval"),
38891
- intervalMinutes: z66.union([
38892
- z66.literal(10),
38893
- z66.literal(15),
38894
- z66.literal(20),
38895
- z66.literal(30),
38896
- z66.literal(45),
38897
- z66.literal(60)
39173
+ displayName: z67.string().trim().min(1),
39174
+ bio: z67.string().nullable(),
39175
+ timezone: z67.string().trim().min(1),
39176
+ colorHex: z67.string().nullable()
39177
+ });
39178
+ var appointmentSetupWeeklyWindowDraftSchema = z67.object({
39179
+ weekday: z67.number().int().min(0).max(6),
39180
+ startTime: z67.string(),
39181
+ endTime: z67.string()
39182
+ });
39183
+ var appointmentSetupStartTimePolicyDraftSchema = z67.discriminatedUnion("kind", [
39184
+ z67.object({ kind: z67.literal("automatic_spacing") }),
39185
+ z67.object({
39186
+ kind: z67.literal("regular_interval"),
39187
+ intervalMinutes: z67.union([
39188
+ z67.literal(10),
39189
+ z67.literal(15),
39190
+ z67.literal(20),
39191
+ z67.literal(30),
39192
+ z67.literal(45),
39193
+ z67.literal(60)
38898
39194
  ])
38899
39195
  })
38900
39196
  ]);
38901
- var appointmentSetupAvailabilityDraftSchema = z66.object({
38902
- kind: z66.literal("weekly_windows"),
39197
+ var appointmentSetupAvailabilityDraftSchema = z67.object({
39198
+ kind: z67.literal("weekly_windows"),
38903
39199
  resourceRef: appointmentSetupRefSchema,
38904
39200
  serviceRef: appointmentSetupRefSchema.nullable(),
38905
- windows: z66.array(appointmentSetupWeeklyWindowDraftSchema),
39201
+ windows: z67.array(appointmentSetupWeeklyWindowDraftSchema),
38906
39202
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
38907
39203
  });
38908
39204
  var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
38909
39205
  var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
38910
- var appointmentSetupBookingNoticeSchema = z66.object({
38911
- minLeadMinutes: z66.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
38912
- maxBookingNoticeMinutes: z66.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
38913
- });
38914
- var applyAppointmentSetupRequestSchema = z66.object({
38915
- services: z66.array(appointmentSetupServiceDraftSchema),
38916
- practitioners: z66.array(appointmentSetupPractitionerDraftSchema),
38917
- availability: z66.array(appointmentSetupAvailabilityDraftSchema),
39206
+ var appointmentSetupBookingNoticeSchema = z67.object({
39207
+ minLeadMinutes: z67.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
39208
+ maxBookingNoticeMinutes: z67.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
39209
+ });
39210
+ var applyAppointmentSetupRequestSchema = z67.object({
39211
+ services: z67.array(appointmentSetupServiceDraftSchema),
39212
+ practitioners: z67.array(appointmentSetupPractitionerDraftSchema),
39213
+ availability: z67.array(appointmentSetupAvailabilityDraftSchema),
38918
39214
  bookingNotice: appointmentSetupBookingNoticeSchema
38919
39215
  });
38920
39216
 
@@ -38947,24 +39243,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
38947
39243
  ];
38948
39244
 
38949
39245
  // ../api/src/siteBanner.ts
38950
- import { z as z67 } from "zod";
39246
+ import { z as z68 } from "zod";
38951
39247
  var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
38952
39248
  var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
38953
39249
  var SITE_BANNER_MAX_TEXT_LENGTH = 320;
38954
39250
  var SITE_BANNER_MAX_PARAGRAPHS = 2;
38955
- var siteBannerScopeSchema = z67.enum(SITE_BANNER_SCOPE_VALUES);
38956
- var siteBannerToneSchema = z67.enum(SITE_BANNER_TONE_VALUES);
38957
- var siteBannerBodySchema = z67.unknown().transform(unwrapRichTextValue);
38958
- var siteBannerCtaSchema = z67.object({
38959
- label: z67.string().trim().min(1),
39251
+ var siteBannerScopeSchema = z68.enum(SITE_BANNER_SCOPE_VALUES);
39252
+ var siteBannerToneSchema = z68.enum(SITE_BANNER_TONE_VALUES);
39253
+ var siteBannerBodySchema = z68.unknown().transform(unwrapRichTextValue);
39254
+ var siteBannerCtaSchema = z68.object({
39255
+ label: z68.string().trim().min(1),
38960
39256
  link: linkPayloadSchema
38961
39257
  });
38962
- var siteBannerSettingsSchema = z67.discriminatedUnion("enabled", [
38963
- z67.object({
38964
- enabled: z67.literal(false)
39258
+ var siteBannerSettingsSchema = z68.discriminatedUnion("enabled", [
39259
+ z68.object({
39260
+ enabled: z68.literal(false)
38965
39261
  }),
38966
- z67.object({
38967
- enabled: z67.literal(true),
39262
+ z68.object({
39263
+ enabled: z68.literal(true),
38968
39264
  scope: siteBannerScopeSchema,
38969
39265
  tone: siteBannerToneSchema,
38970
39266
  body: siteBannerBodySchema,
@@ -38978,7 +39274,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
38978
39274
  const analysis = analyzeSiteBannerBody(value.body);
38979
39275
  for (const issue of analysis.issues) {
38980
39276
  ctx.addIssue({
38981
- code: z67.ZodIssueCode.custom,
39277
+ code: z68.ZodIssueCode.custom,
38982
39278
  path: ["body"],
38983
39279
  message: siteBannerBodyIssueMessage(issue)
38984
39280
  });
@@ -39285,75 +39581,75 @@ function unsafeAsNavigationMenuIdentifier(identifier) {
39285
39581
  var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
39286
39582
 
39287
39583
  // ../api/src/aiPlayground.ts
39288
- import { z as z68 } from "zod";
39289
- var Rfc6902PatchOp = z68.discriminatedUnion("op", [
39584
+ import { z as z69 } from "zod";
39585
+ var Rfc6902PatchOp = z69.discriminatedUnion("op", [
39290
39586
  // Standard RFC-6902 operations
39291
- z68.object({
39292
- op: z68.literal("add"),
39293
- path: z68.string(),
39294
- value: z68.unknown()
39587
+ z69.object({
39588
+ op: z69.literal("add"),
39589
+ path: z69.string(),
39590
+ value: z69.unknown()
39295
39591
  }),
39296
- z68.object({
39297
- op: z68.literal("remove"),
39298
- path: z68.string()
39592
+ z69.object({
39593
+ op: z69.literal("remove"),
39594
+ path: z69.string()
39299
39595
  }),
39300
- z68.object({
39301
- op: z68.literal("replace"),
39302
- path: z68.string(),
39303
- value: z68.unknown()
39596
+ z69.object({
39597
+ op: z69.literal("replace"),
39598
+ path: z69.string(),
39599
+ value: z69.unknown()
39304
39600
  }),
39305
- z68.object({
39306
- op: z68.literal("move"),
39307
- from: z68.string(),
39308
- path: z68.string()
39601
+ z69.object({
39602
+ op: z69.literal("move"),
39603
+ from: z69.string(),
39604
+ path: z69.string()
39309
39605
  }),
39310
- z68.object({
39311
- op: z68.literal("copy"),
39312
- from: z68.string(),
39313
- path: z68.string()
39606
+ z69.object({
39607
+ op: z69.literal("copy"),
39608
+ from: z69.string(),
39609
+ path: z69.string()
39314
39610
  }),
39315
39611
  // Block-level operations (Phase 2)
39316
- z68.object({
39317
- op: z68.literal("add_block"),
39318
- blockKind: z68.string(),
39319
- afterBlockId: z68.string().nullable(),
39320
- content: z68.record(z68.string(), z68.unknown()),
39321
- rationale: z68.string()
39612
+ z69.object({
39613
+ op: z69.literal("add_block"),
39614
+ blockKind: z69.string(),
39615
+ afterBlockId: z69.string().nullable(),
39616
+ content: z69.record(z69.string(), z69.unknown()),
39617
+ rationale: z69.string()
39322
39618
  }),
39323
- z68.object({
39324
- op: z68.literal("delete_block"),
39325
- blockId: z68.string(),
39326
- rationale: z68.string()
39619
+ z69.object({
39620
+ op: z69.literal("delete_block"),
39621
+ blockId: z69.string(),
39622
+ rationale: z69.string()
39327
39623
  }),
39328
- z68.object({
39329
- op: z68.literal("reorder_block"),
39330
- blockId: z68.string(),
39331
- afterBlockId: z68.string().nullable(),
39332
- rationale: z68.string()
39624
+ z69.object({
39625
+ op: z69.literal("reorder_block"),
39626
+ blockId: z69.string(),
39627
+ afterBlockId: z69.string().nullable(),
39628
+ rationale: z69.string()
39333
39629
  })
39334
39630
  ]);
39335
- var PlaygroundProposeRequest = z68.object({
39336
- request: z68.string().min(1).max(2e3)
39631
+ var PlaygroundProposeRequest = z69.object({
39632
+ request: z69.string().min(1).max(2e3)
39337
39633
  });
39338
- var MultiPagePatchEnvelope = z68.object({
39339
- pageId: z68.string(),
39340
- blockId: z68.string().optional(),
39634
+ var MultiPagePatchEnvelope = z69.object({
39635
+ pageId: z69.string(),
39636
+ blockId: z69.string().optional(),
39341
39637
  // Not present for page-level ops
39342
- blockKind: z68.string().optional(),
39343
- blockPurpose: z68.string().optional().nullable(),
39344
- ops: z68.array(Rfc6902PatchOp),
39345
- rationale: z68.string(),
39346
- currentContent: z68.record(z68.string(), z68.unknown()).optional()
39638
+ blockKind: z69.string().optional(),
39639
+ blockPurpose: z69.string().optional().nullable(),
39640
+ ops: z69.array(Rfc6902PatchOp),
39641
+ rationale: z69.string(),
39642
+ currentContent: z69.record(z69.string(), z69.unknown()).optional()
39347
39643
  });
39348
- var MultiPageUpdateResponse = z68.object({
39349
- patches: z68.array(MultiPagePatchEnvelope),
39350
- assistantMessage: z68.string(),
39351
- pagesModified: z68.number(),
39352
- toolCallsUsed: z68.number()
39644
+ var MultiPageUpdateResponse = z69.object({
39645
+ patches: z69.array(MultiPagePatchEnvelope),
39646
+ assistantMessage: z69.string(),
39647
+ pagesModified: z69.number(),
39648
+ toolCallsUsed: z69.number()
39353
39649
  });
39354
39650
 
39355
39651
  // src/config/content-validation.ts
39356
- import { z as z69 } from "zod";
39652
+ import { z as z70 } from "zod";
39357
39653
 
39358
39654
  // src/types/block-kinds.ts
39359
39655
  var SYSTEM_BLOCK_KINDS = [
@@ -39383,6 +39679,7 @@ var SYSTEM_BLOCK_KINDS = [
39383
39679
  "block.form",
39384
39680
  "block.contact-newsletter",
39385
39681
  "block.appointment-booking",
39682
+ "block.weekly-slot-availability",
39386
39683
  "block.event-registration",
39387
39684
  "block.event-details",
39388
39685
  "block.course-registration",
@@ -39484,7 +39781,7 @@ function isUnsupportedDynamicSegment(segment) {
39484
39781
  return segment.startsWith(":") || segment.includes("{") || segment.includes("}");
39485
39782
  }
39486
39783
 
39487
- // src/contracts/bindings.ts
39784
+ // ../field-primitives/src/bindings/index.ts
39488
39785
  var BINDING_TRANSFORMS = {
39489
39786
  RICHTEXT_FIRST_PARAGRAPH: "richtext.firstParagraph",
39490
39787
  DATE_FORMAT_SHORT: "date.formatShort",
@@ -39492,42 +39789,45 @@ var BINDING_TRANSFORMS = {
39492
39789
  TEXT_INLINE_TEXT: "text.inlineText"
39493
39790
  };
39494
39791
  var BINDING_TRANSFORM_VALUES = Object.values(BINDING_TRANSFORMS);
39495
- var BINDING_TRANSFORM_LIST = BINDING_TRANSFORM_VALUES.join(", ");
39792
+
39793
+ // src/contracts/bindings.ts
39794
+ var BINDING_TRANSFORM_VALUES2 = BINDING_TRANSFORM_VALUES;
39795
+ var BINDING_TRANSFORM_LIST = BINDING_TRANSFORM_VALUES2.join(", ");
39496
39796
  function describeInvalidBindingTransform(transform) {
39497
39797
  return `Transform "${transform}" is not valid. Allowed: ${BINDING_TRANSFORM_LIST}`;
39498
39798
  }
39499
39799
 
39500
39800
  // src/config/content-validation.ts
39501
- var jsonDataSchema = z69.record(z69.string(), z69.any());
39502
- var contentTypeKeySchema = z69.string().min(1).regex(
39801
+ var jsonDataSchema = z70.record(z70.string(), z70.any());
39802
+ var contentTypeKeySchema = z70.string().min(1).regex(
39503
39803
  /^[a-z][a-z0-9-]*$/,
39504
39804
  "Key must be lowercase, start with a letter, and contain only letters, numbers, and hyphens"
39505
39805
  );
39506
- var templateConfigSchemaForward = z69.object({
39507
- blocks: z69.array(
39508
- z69.object({
39509
- identifier: z69.string().min(1),
39510
- kind: z69.string(),
39511
- scope: z69.enum(["entry", "template"]),
39512
- bindings: z69.record(z69.string(), z69.any()).optional(),
39513
- content: z69.record(z69.string(), z69.any()).optional()
39806
+ var templateConfigSchemaForward = z70.object({
39807
+ blocks: z70.array(
39808
+ z70.object({
39809
+ identifier: z70.string().min(1),
39810
+ kind: z70.string(),
39811
+ scope: z70.enum(["entry", "template"]),
39812
+ bindings: z70.record(z70.string(), z70.any()).optional(),
39813
+ content: z70.record(z70.string(), z70.any()).optional()
39514
39814
  })
39515
39815
  )
39516
39816
  }).optional();
39517
- var contentTypeOrderingSchema = z69.object({
39518
- mode: z69.enum(["default", "manual"]).optional()
39817
+ var contentTypeOrderingSchema = z70.object({
39818
+ mode: z70.enum(["default", "manual"]).optional()
39519
39819
  }).optional();
39520
- var contentTypeConfigSchema = z69.object({
39820
+ var contentTypeConfigSchema = z70.object({
39521
39821
  key: contentTypeKeySchema,
39522
- name: z69.string().min(1),
39523
- description: z69.string().optional(),
39524
- hasPages: z69.boolean(),
39525
- routePattern: z69.string().optional(),
39822
+ name: z70.string().min(1),
39823
+ description: z70.string().optional(),
39824
+ hasPages: z70.boolean(),
39825
+ routePattern: z70.string().optional(),
39526
39826
  // Fields are validated as unknown[] here - deep field validation happens in @riverbankcms/blocks
39527
- fields: z69.array(z69.any()).min(1, "At least one field is required"),
39528
- titleField: z69.string().optional(),
39827
+ fields: z70.array(z70.any()).min(1, "At least one field is required"),
39828
+ titleField: z70.string().optional(),
39529
39829
  ordering: contentTypeOrderingSchema,
39530
- isSingleton: z69.boolean().optional().default(false),
39830
+ isSingleton: z70.boolean().optional().default(false),
39531
39831
  template: templateConfigSchemaForward
39532
39832
  }).refine(
39533
39833
  (data) => {
@@ -39549,7 +39849,7 @@ var contentTypeConfigSchema = z69.object({
39549
39849
  }
39550
39850
  if (!data.routePattern) {
39551
39851
  ctx.addIssue({
39552
- code: z69.ZodIssueCode.custom,
39852
+ code: z70.ZodIssueCode.custom,
39553
39853
  path: ["routePattern"],
39554
39854
  message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
39555
39855
  });
@@ -39558,7 +39858,7 @@ var contentTypeConfigSchema = z69.object({
39558
39858
  const parseResult = safeParseRouteTemplate(data.routePattern);
39559
39859
  if (!parseResult.success) {
39560
39860
  ctx.addIssue({
39561
- code: z69.ZodIssueCode.custom,
39861
+ code: z70.ZodIssueCode.custom,
39562
39862
  path: ["routePattern"],
39563
39863
  message: describeRouteTemplateParseError(parseResult.error)
39564
39864
  });
@@ -39566,44 +39866,44 @@ var contentTypeConfigSchema = z69.object({
39566
39866
  }
39567
39867
  if (!data.isSingleton && parseResult.routeTemplate.kind !== "slug-template") {
39568
39868
  ctx.addIssue({
39569
- code: z69.ZodIssueCode.custom,
39869
+ code: z70.ZodIssueCode.custom,
39570
39870
  path: ["routePattern"],
39571
39871
  message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
39572
39872
  });
39573
39873
  }
39574
39874
  });
39575
- var fieldBindingSchema = z69.object({
39576
- source: z69.literal("field"),
39577
- path: z69.string().min(1, "Field path is required")
39875
+ var fieldBindingSchema = z70.object({
39876
+ source: z70.literal("field"),
39877
+ path: z70.string().min(1, "Field path is required")
39578
39878
  });
39579
- var metaBindingSchema = z69.object({
39580
- source: z69.literal("meta"),
39581
- path: z69.enum(TEMPLATE_BINDING_META_PATHS, {
39879
+ var metaBindingSchema = z70.object({
39880
+ source: z70.literal("meta"),
39881
+ path: z70.enum(TEMPLATE_BINDING_META_PATHS, {
39582
39882
  error: (issue) => describeInvalidTemplateBindingMetaPath(String(issue.input))
39583
39883
  })
39584
39884
  });
39585
- var literalBindingSchema = z69.object({
39586
- source: z69.literal("literal"),
39587
- value: z69.unknown()
39885
+ var literalBindingSchema = z70.object({
39886
+ source: z70.literal("literal"),
39887
+ value: z70.unknown()
39588
39888
  });
39589
- var transformBindingSchema = z69.object({
39590
- source: z69.literal("transform"),
39591
- path: z69.string().min(1, "Transform path is required"),
39592
- transform: z69.enum(BINDING_TRANSFORM_VALUES, {
39889
+ var transformBindingSchema = z70.object({
39890
+ source: z70.literal("transform"),
39891
+ path: z70.string().min(1, "Transform path is required"),
39892
+ transform: z70.enum(BINDING_TRANSFORM_VALUES2, {
39593
39893
  error: (issue) => describeInvalidBindingTransform(String(issue.input))
39594
39894
  })
39595
39895
  });
39596
- var baseBindingSchema = z69.discriminatedUnion("source", [
39896
+ var baseBindingSchema = z70.discriminatedUnion("source", [
39597
39897
  fieldBindingSchema,
39598
39898
  metaBindingSchema,
39599
39899
  literalBindingSchema,
39600
39900
  transformBindingSchema
39601
39901
  ]);
39602
- var fallbackBindingSchema = z69.object({
39603
- source: z69.literal("fallback"),
39604
- sources: z69.array(z69.lazy(() => bindingSourceSchema)).min(1, "Fallback must have at least one source")
39902
+ var fallbackBindingSchema = z70.object({
39903
+ source: z70.literal("fallback"),
39904
+ sources: z70.array(z70.lazy(() => bindingSourceSchema)).min(1, "Fallback must have at least one source")
39605
39905
  });
39606
- var bindingSourceSchema = z69.union([
39906
+ var bindingSourceSchema = z70.union([
39607
39907
  baseBindingSchema,
39608
39908
  fallbackBindingSchema
39609
39909
  ]);
@@ -39617,12 +39917,12 @@ function isValidBlockKind(kind) {
39617
39917
  return false;
39618
39918
  }
39619
39919
  var BLOCK_KIND_ERROR_MESSAGE = 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.myBlock")';
39620
- var blockKindSchema = z69.string().refine(isValidBlockKind, { message: BLOCK_KIND_ERROR_MESSAGE });
39621
- var templateBlockConfigSchema = z69.object({
39622
- identifier: z69.string().min(1, "Block identifier is required"),
39920
+ var blockKindSchema = z70.string().refine(isValidBlockKind, { message: BLOCK_KIND_ERROR_MESSAGE });
39921
+ var templateBlockConfigSchema = z70.object({
39922
+ identifier: z70.string().min(1, "Block identifier is required"),
39623
39923
  kind: blockKindSchema,
39624
- scope: z69.enum(["entry", "template"]),
39625
- bindings: z69.record(z69.string(), bindingSourceSchema).optional(),
39924
+ scope: z70.enum(["entry", "template"]),
39925
+ bindings: z70.record(z70.string(), bindingSourceSchema).optional(),
39626
39926
  content: jsonDataSchema.optional()
39627
39927
  }).refine(
39628
39928
  (data) => {
@@ -39641,8 +39941,8 @@ var templateBlockConfigSchema = z69.object({
39641
39941
  },
39642
39942
  { message: "Template-scoped blocks should define static content, not bindings" }
39643
39943
  );
39644
- var templateConfigSchema = z69.object({
39645
- blocks: z69.array(templateBlockConfigSchema).min(1, "Template must have at least one block")
39944
+ var templateConfigSchema = z70.object({
39945
+ blocks: z70.array(templateBlockConfigSchema).min(1, "Template must have at least one block")
39646
39946
  }).refine(
39647
39947
  (data) => {
39648
39948
  const identifiers = data.blocks.map((b) => b.identifier);
@@ -39651,77 +39951,77 @@ var templateConfigSchema = z69.object({
39651
39951
  },
39652
39952
  { message: "Template block identifiers must be unique" }
39653
39953
  );
39654
- var blockConfigSchema = z69.object({
39954
+ var blockConfigSchema = z70.object({
39655
39955
  kind: blockKindSchema,
39656
39956
  content: jsonDataSchema,
39657
- orderIndex: z69.number().optional()
39658
- });
39659
- var pageConfigSchema = z69.object({
39660
- identifier: z69.string().min(1, "Identifier is required"),
39661
- title: z69.string().min(1, "Title is required"),
39662
- path: z69.string().regex(/^\//, "Path must start with /"),
39663
- purpose: z69.string().default("content"),
39664
- blocks: z69.array(blockConfigSchema).optional(),
39665
- status: z69.enum(["draft", "published"]).default("draft"),
39666
- metaTitle: z69.string().optional(),
39667
- metaDescription: z69.string().optional()
39668
- });
39669
- var entryConfigSchema = z69.object({
39670
- identifier: z69.string().min(1, "Identifier is required"),
39671
- contentType: z69.string().min(1, "Content type is required"),
39957
+ orderIndex: z70.number().optional()
39958
+ });
39959
+ var pageConfigSchema = z70.object({
39960
+ identifier: z70.string().min(1, "Identifier is required"),
39961
+ title: z70.string().min(1, "Title is required"),
39962
+ path: z70.string().regex(/^\//, "Path must start with /"),
39963
+ purpose: z70.string().default("content"),
39964
+ blocks: z70.array(blockConfigSchema).optional(),
39965
+ status: z70.enum(["draft", "published"]).default("draft"),
39966
+ metaTitle: z70.string().optional(),
39967
+ metaDescription: z70.string().optional()
39968
+ });
39969
+ var entryConfigSchema = z70.object({
39970
+ identifier: z70.string().min(1, "Identifier is required"),
39971
+ contentType: z70.string().min(1, "Content type is required"),
39672
39972
  data: jsonDataSchema,
39673
- status: z69.enum(["draft", "published"]).default("draft"),
39674
- slug: z69.string().optional(),
39675
- summary: z69.string().optional(),
39973
+ status: z70.enum(["draft", "published"]).default("draft"),
39974
+ slug: z70.string().optional(),
39975
+ summary: z70.string().optional(),
39676
39976
  // Hard remove legacy config-only titles: titles must live in entry `data`.
39677
- title: z69.any().optional().refine((value) => value === void 0, {
39977
+ title: z70.any().optional().refine((value) => value === void 0, {
39678
39978
  message: "Entry titles are now derived from entry data. Remove `title` and move it into `data` (e.g. `data.title`, or your configured `titleField`). Run `riverbankcms migrate entries` for guided migration."
39679
39979
  }),
39680
- metaTitle: z69.string().optional(),
39681
- metaDescription: z69.string().optional()
39980
+ metaTitle: z70.string().optional(),
39981
+ metaDescription: z70.string().optional()
39682
39982
  });
39683
- var dropdownLinkSchema = z69.object({
39684
- kind: z69.literal("dropdown")
39983
+ var dropdownLinkSchema = z70.object({
39984
+ kind: z70.literal("dropdown")
39685
39985
  });
39686
- var navigationLinkSchema = z69.discriminatedUnion("kind", [
39986
+ var navigationLinkSchema = z70.discriminatedUnion("kind", [
39687
39987
  ...navigationLinkInputSchemaOptions,
39688
39988
  dropdownLinkSchema
39689
39989
  ]);
39690
- var baseNavigationItemSchema = z69.object({
39691
- label: z69.string().min(1, "Label is required"),
39990
+ var baseNavigationItemSchema = z70.object({
39991
+ label: z70.string().min(1, "Label is required"),
39692
39992
  link: navigationLinkSchema,
39693
- isCta: z69.boolean().optional()
39993
+ isCta: z70.boolean().optional()
39694
39994
  });
39695
39995
  var navigationItemConfigSchema = baseNavigationItemSchema.extend({
39696
- children: z69.lazy(() => z69.array(navigationItemConfigSchema)).optional()
39697
- });
39698
- var navigationMenuConfigSchema = z69.object({
39699
- identifier: z69.string().min(1, "Identifier is required"),
39700
- name: z69.string().min(1, "Name is required"),
39701
- isPrimary: z69.boolean().optional(),
39702
- isFooter: z69.boolean().optional(),
39703
- items: z69.array(navigationItemConfigSchema)
39996
+ children: z70.lazy(() => z70.array(navigationItemConfigSchema)).optional()
39997
+ });
39998
+ var navigationMenuConfigSchema = z70.object({
39999
+ identifier: z70.string().min(1, "Identifier is required"),
40000
+ name: z70.string().min(1, "Name is required"),
40001
+ isPrimary: z70.boolean().optional(),
40002
+ isFooter: z70.boolean().optional(),
40003
+ items: z70.array(navigationItemConfigSchema)
39704
40004
  }).superRefine((menu, ctx) => {
39705
40005
  const portalStats = collectPortalLinkStats(
39706
40006
  menu.items
39707
40007
  );
39708
40008
  if (portalStats.count > 1) {
39709
40009
  ctx.addIssue({
39710
- code: z69.ZodIssueCode.custom,
40010
+ code: z70.ZodIssueCode.custom,
39711
40011
  message: "Only one portal link is allowed per navigation menu",
39712
40012
  path: ["items"]
39713
40013
  });
39714
40014
  }
39715
40015
  if (portalStats.nestedLabels.length > 0) {
39716
40016
  ctx.addIssue({
39717
- code: z69.ZodIssueCode.custom,
40017
+ code: z70.ZodIssueCode.custom,
39718
40018
  message: `Portal links must be root-level items: ${portalStats.nestedLabels.join(", ")}`,
39719
40019
  path: ["items"]
39720
40020
  });
39721
40021
  }
39722
40022
  if (portalStats.withChildrenLabels.length > 0) {
39723
40023
  ctx.addIssue({
39724
- code: z69.ZodIssueCode.custom,
40024
+ code: z70.ZodIssueCode.custom,
39725
40025
  message: `Portal links cannot contain child items: ${portalStats.withChildrenLabels.join(", ")}`,
39726
40026
  path: ["items"]
39727
40027
  });
@@ -39731,44 +40031,44 @@ var navigationMenuConfigSchema = z69.object({
39731
40031
  );
39732
40032
  if (cartStats.nestedLabels.length > 0) {
39733
40033
  ctx.addIssue({
39734
- code: z69.ZodIssueCode.custom,
40034
+ code: z70.ZodIssueCode.custom,
39735
40035
  message: `Cart links must be root-level items: ${cartStats.nestedLabels.join(", ")}`,
39736
40036
  path: ["items"]
39737
40037
  });
39738
40038
  }
39739
40039
  if (cartStats.withChildrenLabels.length > 0) {
39740
40040
  ctx.addIssue({
39741
- code: z69.ZodIssueCode.custom,
40041
+ code: z70.ZodIssueCode.custom,
39742
40042
  message: `Cart links cannot contain child items: ${cartStats.withChildrenLabels.join(", ")}`,
39743
40043
  path: ["items"]
39744
40044
  });
39745
40045
  }
39746
40046
  if (cartStats.ctaLabels.length > 0) {
39747
40047
  ctx.addIssue({
39748
- code: z69.ZodIssueCode.custom,
40048
+ code: z70.ZodIssueCode.custom,
39749
40049
  message: `Cart links cannot be marked as CTA: ${cartStats.ctaLabels.join(", ")}`,
39750
40050
  path: ["items"]
39751
40051
  });
39752
40052
  }
39753
40053
  if (cartStats.missingVisibleTextLabels.length > 0) {
39754
40054
  ctx.addIssue({
39755
- code: z69.ZodIssueCode.custom,
40055
+ code: z70.ZodIssueCode.custom,
39756
40056
  message: `Cart links with icon-with-label must provide a visible label: ${cartStats.missingVisibleTextLabels.join(", ")}`,
39757
40057
  path: ["items"]
39758
40058
  });
39759
40059
  }
39760
40060
  });
39761
- var siteSettingsConfigSchema = z69.object({
39762
- homepagePath: z69.string().optional(),
39763
- siteTitle: z69.string().optional(),
39764
- siteDescription: z69.string().optional(),
39765
- defaultTemplates: z69.record(z69.string(), z69.string()).optional()
40061
+ var siteSettingsConfigSchema = z70.object({
40062
+ homepagePath: z70.string().optional(),
40063
+ siteTitle: z70.string().optional(),
40064
+ siteDescription: z70.string().optional(),
40065
+ defaultTemplates: z70.record(z70.string(), z70.string()).optional()
39766
40066
  });
39767
- var contentConfigBaseSchema = z69.object({
39768
- contentTypes: z69.array(contentTypeConfigSchema).optional(),
39769
- entries: z69.array(entryConfigSchema).optional(),
39770
- pages: z69.array(pageConfigSchema).optional(),
39771
- navigationMenus: z69.array(navigationMenuConfigSchema).optional(),
40067
+ var contentConfigBaseSchema = z70.object({
40068
+ contentTypes: z70.array(contentTypeConfigSchema).optional(),
40069
+ entries: z70.array(entryConfigSchema).optional(),
40070
+ pages: z70.array(pageConfigSchema).optional(),
40071
+ navigationMenus: z70.array(navigationMenuConfigSchema).optional(),
39772
40072
  settings: siteSettingsConfigSchema.optional()
39773
40073
  });
39774
40074
  var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
@@ -39777,7 +40077,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39777
40077
  const duplicateKeys = keys.filter((key, i) => keys.indexOf(key) !== i);
39778
40078
  if (duplicateKeys.length > 0) {
39779
40079
  ctx.addIssue({
39780
- code: z69.ZodIssueCode.custom,
40080
+ code: z70.ZodIssueCode.custom,
39781
40081
  message: `Content type keys must be unique. Duplicates: ${duplicateKeys.join(", ")}`,
39782
40082
  path: ["contentTypes"]
39783
40083
  });
@@ -39788,7 +40088,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39788
40088
  const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
39789
40089
  if (duplicateIds.length > 0) {
39790
40090
  ctx.addIssue({
39791
- code: z69.ZodIssueCode.custom,
40091
+ code: z70.ZodIssueCode.custom,
39792
40092
  message: `Page identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
39793
40093
  path: ["pages"]
39794
40094
  });
@@ -39797,7 +40097,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39797
40097
  const duplicatePaths = paths.filter((path, i) => paths.indexOf(path) !== i);
39798
40098
  if (duplicatePaths.length > 0) {
39799
40099
  ctx.addIssue({
39800
- code: z69.ZodIssueCode.custom,
40100
+ code: z70.ZodIssueCode.custom,
39801
40101
  message: `Page paths must be unique. Duplicates: ${duplicatePaths.join(", ")}`,
39802
40102
  path: ["pages"]
39803
40103
  });
@@ -39808,7 +40108,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39808
40108
  const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
39809
40109
  if (duplicateIds.length > 0) {
39810
40110
  ctx.addIssue({
39811
- code: z69.ZodIssueCode.custom,
40111
+ code: z70.ZodIssueCode.custom,
39812
40112
  message: `Entry identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
39813
40113
  path: ["entries"]
39814
40114
  });
@@ -39819,7 +40119,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39819
40119
  const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
39820
40120
  if (duplicateIds.length > 0) {
39821
40121
  ctx.addIssue({
39822
- code: z69.ZodIssueCode.custom,
40122
+ code: z70.ZodIssueCode.custom,
39823
40123
  message: `Navigation menu identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
39824
40124
  path: ["navigationMenus"]
39825
40125
  });
@@ -39833,7 +40133,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39833
40133
  const entriesForType = data.entries.filter((e) => e.contentType === singletonKey);
39834
40134
  if (entriesForType.length > 1) {
39835
40135
  ctx.addIssue({
39836
- code: z69.ZodIssueCode.custom,
40136
+ code: z70.ZodIssueCode.custom,
39837
40137
  message: `Singleton content type "${singletonKey}" cannot have more than one entry. Found ${entriesForType.length} entries.`,
39838
40138
  path: ["entries"]
39839
40139
  });
@@ -39946,18 +40246,18 @@ function validateLayout(layout) {
39946
40246
  }
39947
40247
 
39948
40248
  // src/config/dashboard-validation.ts
39949
- import { z as z70 } from "zod";
39950
- var navIdListSchema2 = z70.preprocess((value) => {
40249
+ import { z as z71 } from "zod";
40250
+ var navIdListSchema2 = z71.preprocess((value) => {
39951
40251
  if (!Array.isArray(value)) return void 0;
39952
40252
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
39953
40253
  return filtered.length > 0 ? filtered : void 0;
39954
- }, z70.array(z70.string()).max(200, "Maximum 200 nav IDs").optional());
39955
- var dashboardNavVisibilityBaseSchema2 = z70.object({
39956
- mode: z70.enum(["augment", "restrict"]).optional(),
40254
+ }, z71.array(z71.string()).max(200, "Maximum 200 nav IDs").optional());
40255
+ var dashboardNavVisibilityBaseSchema2 = z71.object({
40256
+ mode: z71.enum(["augment", "restrict"]).optional(),
39957
40257
  allowIds: navIdListSchema2,
39958
40258
  denyIds: navIdListSchema2
39959
40259
  }).strip();
39960
- var dashboardNavVisibilityRolesSchema2 = z70.object({
40260
+ var dashboardNavVisibilityRolesSchema2 = z71.object({
39961
40261
  administrator: dashboardNavVisibilityBaseSchema2.optional(),
39962
40262
  editor: dashboardNavVisibilityBaseSchema2.optional(),
39963
40263
  team_member: dashboardNavVisibilityBaseSchema2.optional()
@@ -39965,28 +40265,28 @@ var dashboardNavVisibilityRolesSchema2 = z70.object({
39965
40265
  var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
39966
40266
  roles: dashboardNavVisibilityRolesSchema2
39967
40267
  }).strip();
39968
- var dashboardNavigationConfigSchema2 = z70.object({
40268
+ var dashboardNavigationConfigSchema2 = z71.object({
39969
40269
  siteNav: dashboardNavVisibilitySchema2.optional(),
39970
40270
  settingsNav: dashboardNavVisibilitySchema2.optional()
39971
40271
  }).strip();
39972
- var dashboardConfigSchema2 = z70.object({
39973
- previewEditingEnabled: z70.boolean().optional(),
40272
+ var dashboardConfigSchema2 = z71.object({
40273
+ previewEditingEnabled: z71.boolean().optional(),
39974
40274
  navigation: dashboardNavigationConfigSchema2.optional()
39975
40275
  }).strip();
39976
40276
 
39977
40277
  // src/zod/titleSourceSchema.ts
39978
- import { z as z71 } from "zod";
39979
- var titleSourceValueSchema = z71.union([
39980
- z71.string().min(1),
39981
- z71.array(z71.string().min(1)).min(1)
40278
+ import { z as z72 } from "zod";
40279
+ var titleSourceValueSchema = z72.union([
40280
+ z72.string().min(1),
40281
+ z72.array(z72.string().min(1)).min(1)
39982
40282
  ]);
39983
40283
 
39984
40284
  // src/config/validation.ts
39985
- var sdkThemePaletteSchema2 = z72.record(z72.string(), z72.string());
39986
- var sdkThemeConfigSchema2 = z72.object({
40285
+ var sdkThemePaletteSchema2 = z73.record(z73.string(), z73.string());
40286
+ var sdkThemeConfigSchema2 = z73.object({
39987
40287
  palette: sdkThemePaletteSchema2
39988
40288
  });
39989
- var sdkSiteUrlSchema = z72.string().url("Must be a valid URL").refine((url) => {
40289
+ var sdkSiteUrlSchema = z73.string().url("Must be a valid URL").refine((url) => {
39990
40290
  try {
39991
40291
  const parsed = new URL(url);
39992
40292
  const isLocal = parsed.hostname === "localhost" || parsed.hostname.endsWith(".localhost") || parsed.hostname.endsWith(".local") || parsed.hostname.endsWith(".test");
@@ -39995,97 +40295,97 @@ var sdkSiteUrlSchema = z72.string().url("Must be a valid URL").refine((url) => {
39995
40295
  return false;
39996
40296
  }
39997
40297
  }, { message: "Production URLs must use HTTPS" }).transform((url) => url.replace(/\/$/, ""));
39998
- var sectionBackgroundSchema = z72.object({
39999
- id: z72.string(),
40000
- label: z72.string(),
40001
- token: z72.string()
40298
+ var sectionBackgroundSchema = z73.object({
40299
+ id: z73.string(),
40300
+ label: z73.string(),
40301
+ token: z73.string()
40002
40302
  // Reference to theme palette token
40003
40303
  });
40004
- var sectionSpacingSchema = z72.enum(["compact", "default", "spacious"]);
40005
- var containerMaxWidthSchema = z72.enum(["narrow", "default", "wide", "full"]);
40006
- var containerAlignmentSchema = z72.enum(["left", "center", "right"]);
40007
- var sectionOptionsSchema = z72.object({
40008
- backgroundColor: z72.boolean().optional(),
40009
- backgroundImage: z72.boolean().optional(),
40010
- backgroundGradient: z72.boolean().optional(),
40011
- spacing: z72.union([
40012
- z72.array(sectionSpacingSchema),
40013
- z72.boolean()
40304
+ var sectionSpacingSchema = z73.enum(["compact", "default", "spacious"]);
40305
+ var containerMaxWidthSchema = z73.enum(["narrow", "default", "wide", "full"]);
40306
+ var containerAlignmentSchema = z73.enum(["left", "center", "right"]);
40307
+ var sectionOptionsSchema = z73.object({
40308
+ backgroundColor: z73.boolean().optional(),
40309
+ backgroundImage: z73.boolean().optional(),
40310
+ backgroundGradient: z73.boolean().optional(),
40311
+ spacing: z73.union([
40312
+ z73.array(sectionSpacingSchema),
40313
+ z73.boolean()
40014
40314
  ]).optional(),
40015
- textColor: z72.boolean().optional()
40315
+ textColor: z73.boolean().optional()
40016
40316
  }).optional();
40017
- var containerOptionsSchema = z72.object({
40018
- maxWidth: z72.union([
40019
- z72.array(containerMaxWidthSchema),
40020
- z72.boolean()
40317
+ var containerOptionsSchema = z73.object({
40318
+ maxWidth: z73.union([
40319
+ z73.array(containerMaxWidthSchema),
40320
+ z73.boolean()
40021
40321
  ]).optional(),
40022
- alignment: z72.union([
40023
- z72.array(containerAlignmentSchema),
40024
- z72.boolean()
40322
+ alignment: z73.union([
40323
+ z73.array(containerAlignmentSchema),
40324
+ z73.boolean()
40025
40325
  ]).optional()
40026
40326
  }).optional();
40027
- var siteStyleConfigSchema = z72.object({
40028
- sectionBackgrounds: z72.array(sectionBackgroundSchema).optional(),
40327
+ var siteStyleConfigSchema = z73.object({
40328
+ sectionBackgrounds: z73.array(sectionBackgroundSchema).optional(),
40029
40329
  sectionOptions: sectionOptionsSchema,
40030
40330
  containerOptions: containerOptionsSchema
40031
40331
  }).optional();
40032
- var sdkLoaderEndpointSchema2 = z72.enum(SUPPORTED_LOADER_ENDPOINTS);
40332
+ var sdkLoaderEndpointSchema2 = z73.enum(SUPPORTED_LOADER_ENDPOINTS);
40033
40333
  var allowedTransformIds = new Set(builtinTransformDefinitions.map((transform) => transform.id));
40034
- var loaderTransformStepSchema = z72.object({
40035
- id: z72.string().refine((id) => allowedTransformIds.has(id), {
40334
+ var loaderTransformStepSchema = z73.object({
40335
+ id: z73.string().refine((id) => allowedTransformIds.has(id), {
40036
40336
  message: "Unknown transform id"
40037
40337
  }),
40038
- options: z72.record(z72.string(), z72.unknown()).optional()
40338
+ options: z73.record(z73.string(), z73.unknown()).optional()
40039
40339
  });
40040
- var loaderParamBindingSchema2 = z72.object({
40041
- $bind: z72.object({
40042
- from: z72.string().min(1, "Binding path is required"),
40340
+ var loaderParamBindingSchema2 = z73.object({
40341
+ $bind: z73.object({
40342
+ from: z73.string().min(1, "Binding path is required"),
40043
40343
  // Loader params are ultimately string-normalized for query strings, so fallbacks should
40044
40344
  // stay scalar. Use transforms (e.g. `value.jsonArray`) when you need to serialize
40045
40345
  // more complex values into a string.
40046
40346
  fallback: loaderFallbackScalarSchema.optional(),
40047
- transforms: z72.array(loaderTransformStepSchema).default([]),
40048
- pick: z72.enum(["value", "collection", "context"]).default("value"),
40049
- coerce: z72.enum(["number", "boolean", "string"]).optional()
40347
+ transforms: z73.array(loaderTransformStepSchema).default([]),
40348
+ pick: z73.enum(["value", "collection", "context"]).default("value"),
40349
+ coerce: z73.enum(["number", "boolean", "string"]).optional()
40050
40350
  })
40051
40351
  });
40052
- var loaderParamValueSchema2 = z72.union([
40053
- z72.string(),
40054
- z72.number(),
40055
- z72.boolean(),
40352
+ var loaderParamValueSchema2 = z73.union([
40353
+ z73.string(),
40354
+ z73.number(),
40355
+ z73.boolean(),
40056
40356
  loaderParamBindingSchema2
40057
40357
  ]);
40058
- var loaderWhenValueSchema = z72.union([
40059
- z72.boolean(),
40358
+ var loaderWhenValueSchema = z73.union([
40359
+ z73.boolean(),
40060
40360
  loaderParamBindingSchema2
40061
40361
  ]);
40062
- var sdkConfigLoaderSchema2 = z72.object({
40362
+ var sdkConfigLoaderSchema2 = z73.object({
40063
40363
  endpoint: sdkLoaderEndpointSchema2,
40064
- params: z72.record(z72.string(), loaderParamValueSchema2),
40065
- mode: z72.enum(["server", "client"]).default("server"),
40364
+ params: z73.record(z73.string(), loaderParamValueSchema2),
40365
+ mode: z73.enum(["server", "client"]).default("server"),
40066
40366
  when: loaderWhenValueSchema.optional()
40067
40367
  });
40068
- var sdkDataLoadersSchema2 = z72.record(z72.string(), sdkConfigLoaderSchema2).refine(
40368
+ var sdkDataLoadersSchema2 = z73.record(z73.string(), sdkConfigLoaderSchema2).refine(
40069
40369
  (loaders) => Object.keys(loaders).length <= 5,
40070
40370
  { message: "Maximum 5 data loaders per block" }
40071
40371
  ).optional();
40072
- var fieldSelectOptionSchema = z72.object({
40073
- value: z72.string().min(1, "Option value is required"),
40074
- label: z72.string().min(1, "Option label is required")
40372
+ var fieldSelectOptionSchema = z73.object({
40373
+ value: z73.string().min(1, "Option value is required"),
40374
+ label: z73.string().min(1, "Option label is required")
40075
40375
  });
40076
- var blockFieldConfigSchema = z72.object({
40077
- options: z72.array(fieldSelectOptionSchema).min(1, "At least one option is required").optional()
40376
+ var blockFieldConfigSchema = z73.object({
40377
+ options: z73.array(fieldSelectOptionSchema).min(1, "At least one option is required").optional()
40078
40378
  });
40079
- var blockFieldOptionsSchema = z72.record(
40080
- z72.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
40379
+ var blockFieldOptionsSchema = z73.record(
40380
+ z73.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
40081
40381
  message: "Block ID must be 'block.*' or 'custom.*' format"
40082
40382
  }),
40083
- z72.record(
40084
- z72.string().min(1, "Field ID is required"),
40383
+ z73.record(
40384
+ z73.string().min(1, "Field ID is required"),
40085
40385
  blockFieldConfigSchema
40086
40386
  )
40087
40387
  ).optional();
40088
- var blockFieldExtensionSchema = z72.object({
40388
+ var blockFieldExtensionSchema = z73.object({
40089
40389
  fields: fieldSchema.array().min(1, "At least one field is required")
40090
40390
  }).refine(
40091
40391
  (data) => {
@@ -40099,10 +40399,10 @@ var blockFieldExtensionSchema = z72.object({
40099
40399
  message: "Required fields must have a defaultValue to support existing blocks"
40100
40400
  }
40101
40401
  );
40102
- var blockFieldExtensionsMapSchema = z72.record(
40402
+ var blockFieldExtensionsMapSchema = z73.record(
40103
40403
  // System blocks are kebab-case: block.body-text, block.event-calendar, ...
40104
40404
  // Enforce: lowercase alphanumerics with single hyphens (no trailing hyphen, no consecutive hyphens).
40105
- z72.string().regex(/^block\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, {
40405
+ z73.string().regex(/^block\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, {
40106
40406
  message: "Block ID must be 'block.*' format (system blocks only)"
40107
40407
  }),
40108
40408
  blockFieldExtensionSchema
@@ -40118,7 +40418,7 @@ var blockFieldExtensionsMapSchema = z72.record(
40118
40418
  (field) => field.id === collision.fieldId
40119
40419
  );
40120
40420
  ctx.addIssue({
40121
- code: z72.ZodIssueCode.custom,
40421
+ code: z73.ZodIssueCode.custom,
40122
40422
  message: collision.message,
40123
40423
  path: [
40124
40424
  APPOINTMENT_BOOKING_BLOCK_ID,
@@ -40133,24 +40433,24 @@ var blockFieldExtensionsSchema = blockFieldExtensionsMapSchema.optional();
40133
40433
  function collectAppointmentBookingExtensionReservedFieldCollisions(extension) {
40134
40434
  return collectBookingReservedFieldCollisions(extension, { type: "booking" });
40135
40435
  }
40136
- var syncConfigSchema = z72.object({
40137
- existingEntries: z72.enum(["skip", "update"]).optional()
40436
+ var syncConfigSchema = z73.object({
40437
+ existingEntries: z73.enum(["skip", "update"]).optional()
40138
40438
  }).optional();
40139
- var deployConfigSchema = z72.object({
40140
- verifyCommand: z72.string().optional(),
40141
- prebuildOutput: z72.string().optional()
40439
+ var deployConfigSchema = z73.object({
40440
+ verifyCommand: z73.string().optional(),
40441
+ prebuildOutput: z73.string().optional()
40142
40442
  }).optional();
40143
- var sdkCustomBlockSchema = z72.object({
40443
+ var sdkCustomBlockSchema = z73.object({
40144
40444
  // Block ID must start with 'custom.'
40145
- id: z72.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
40445
+ id: z73.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
40146
40446
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
40147
40447
  }),
40148
- title: z72.string().min(1, "Title is required"),
40448
+ title: z73.string().min(1, "Title is required"),
40149
40449
  titleSource: titleSourceValueSchema.optional(),
40150
- description: z72.string().optional(),
40450
+ description: z73.string().optional(),
40151
40451
  category: blockCategoryEnum,
40152
- icon: z72.string().optional(),
40153
- tags: z72.array(z72.string()).optional(),
40452
+ icon: z73.string().optional(),
40453
+ tags: z73.array(z73.string()).optional(),
40154
40454
  // Reuse the exact field schema from @riverbankcms/blocks - all field types supported
40155
40455
  fields: fieldSchema.array().min(1, "Custom blocks must have at least one field"),
40156
40456
  // Data loaders for CMS endpoints
@@ -40158,14 +40458,14 @@ var sdkCustomBlockSchema = z72.object({
40158
40458
  // Optional declarative layout - when present, block can render without React override
40159
40459
  layout: NodeSchema.optional(),
40160
40460
  // Optional variants system (preferred when a block has multiple structural layouts)
40161
- variants: z72.record(z72.string().min(1), NodeSchema).optional(),
40162
- defaultVariant: z72.string().min(1).optional(),
40163
- variantOptions: z72.record(
40164
- z72.string().min(1),
40165
- z72.object({
40166
- label: z72.string().min(1).optional(),
40167
- description: z72.string().min(1).optional(),
40168
- icon: z72.string().min(1).optional()
40461
+ variants: z73.record(z73.string().min(1), NodeSchema).optional(),
40462
+ defaultVariant: z73.string().min(1).optional(),
40463
+ variantOptions: z73.record(
40464
+ z73.string().min(1),
40465
+ z73.object({
40466
+ label: z73.string().min(1).optional(),
40467
+ description: z73.string().min(1).optional(),
40468
+ icon: z73.string().min(1).optional()
40169
40469
  })
40170
40470
  ).optional(),
40171
40471
  previewCustomize: previewCustomizeManifestCurationSchema.optional()
@@ -40177,7 +40477,7 @@ var sdkCustomBlockSchema = z72.object({
40177
40477
  const exists = fields3.some((field) => field.id === source);
40178
40478
  if (!exists) {
40179
40479
  ctx.addIssue({
40180
- code: z72.ZodIssueCode.custom,
40480
+ code: z73.ZodIssueCode.custom,
40181
40481
  message: `titleSource must reference a valid field ID (got "${source}")`,
40182
40482
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
40183
40483
  });
@@ -40186,7 +40486,7 @@ var sdkCustomBlockSchema = z72.object({
40186
40486
  }
40187
40487
  if (data.layout && data.variants) {
40188
40488
  ctx.addIssue({
40189
- code: z72.ZodIssueCode.custom,
40489
+ code: z73.ZodIssueCode.custom,
40190
40490
  message: "Custom block must define either `layout` or `variants`, not both",
40191
40491
  path: ["variants"]
40192
40492
  });
@@ -40196,7 +40496,7 @@ var sdkCustomBlockSchema = z72.object({
40196
40496
  if (!result.valid) {
40197
40497
  for (const error of result.errors) {
40198
40498
  ctx.addIssue({
40199
- code: z72.ZodIssueCode.custom,
40499
+ code: z73.ZodIssueCode.custom,
40200
40500
  message: error.message,
40201
40501
  path: ["layout"]
40202
40502
  });
@@ -40207,14 +40507,14 @@ var sdkCustomBlockSchema = z72.object({
40207
40507
  const keys = Object.keys(data.variants);
40208
40508
  if (keys.length === 0) {
40209
40509
  ctx.addIssue({
40210
- code: z72.ZodIssueCode.custom,
40510
+ code: z73.ZodIssueCode.custom,
40211
40511
  message: "`variants` must contain at least one variant key",
40212
40512
  path: ["variants"]
40213
40513
  });
40214
40514
  }
40215
40515
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
40216
40516
  ctx.addIssue({
40217
- code: z72.ZodIssueCode.custom,
40517
+ code: z73.ZodIssueCode.custom,
40218
40518
  message: "`defaultVariant` must be a key present in `variants`",
40219
40519
  path: ["defaultVariant"]
40220
40520
  });
@@ -40224,7 +40524,7 @@ var sdkCustomBlockSchema = z72.object({
40224
40524
  if (!result.valid) {
40225
40525
  for (const error of result.errors) {
40226
40526
  ctx.addIssue({
40227
- code: z72.ZodIssueCode.custom,
40527
+ code: z73.ZodIssueCode.custom,
40228
40528
  message: `${key}: ${error.message}`,
40229
40529
  path: ["variants", key]
40230
40530
  });
@@ -40235,7 +40535,7 @@ var sdkCustomBlockSchema = z72.object({
40235
40535
  for (const key of Object.keys(data.variantOptions)) {
40236
40536
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
40237
40537
  ctx.addIssue({
40238
- code: z72.ZodIssueCode.custom,
40538
+ code: z73.ZodIssueCode.custom,
40239
40539
  message: "`variantOptions` key must exist in `variants`",
40240
40540
  path: ["variantOptions", key]
40241
40541
  });
@@ -40244,58 +40544,58 @@ var sdkCustomBlockSchema = z72.object({
40244
40544
  }
40245
40545
  }
40246
40546
  });
40247
- var themeSourceSchema = z72.enum(["local", "cms"]).optional();
40248
- var activeThemeSchema = z72.string().regex(/^[a-z0-9][a-z0-9-_]*$/, {
40547
+ var themeSourceSchema = z73.enum(["local", "cms"]).optional();
40548
+ var activeThemeSchema = z73.string().regex(/^[a-z0-9][a-z0-9-_]*$/, {
40249
40549
  message: "Theme name must be lowercase alphanumeric with hyphens/underscores"
40250
40550
  }).max(64, "Theme name too long").optional();
40251
40551
  function isValidConfigBlockKind(kind) {
40252
40552
  if (getBlockDefinition(kind)) return true;
40253
40553
  return /^custom\.[a-z][a-z0-9-]*$/.test(kind);
40254
40554
  }
40255
- var layoutBlockKindSchema = z72.string().refine(isValidConfigBlockKind, {
40555
+ var layoutBlockKindSchema = z73.string().refine(isValidConfigBlockKind, {
40256
40556
  message: 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.my-block")'
40257
40557
  });
40258
- var layoutFooterBlockSchema = z72.object({
40259
- id: z72.string().min(1).optional(),
40558
+ var layoutFooterBlockSchema = z73.object({
40559
+ id: z73.string().min(1).optional(),
40260
40560
  kind: layoutBlockKindSchema,
40261
40561
  // Allow omitted content for blocks that rely on defaults.
40262
- content: z72.record(z72.string(), z72.unknown()).optional()
40562
+ content: z73.record(z73.string(), z73.unknown()).optional()
40263
40563
  }).strict();
40264
- var layoutConfigSchema = z72.object({
40265
- footerBlocks: z72.array(layoutFooterBlockSchema).optional()
40564
+ var layoutConfigSchema = z73.object({
40565
+ footerBlocks: z73.array(layoutFooterBlockSchema).optional()
40266
40566
  }).strict();
40267
- var sdkWorkflowIdSchema2 = z72.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
40567
+ var sdkWorkflowIdSchema2 = z73.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
40268
40568
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
40269
40569
  });
40270
- var sdkWorkflowEndpointSchema2 = z72.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 "/"' });
40271
- var sdkWorkflowTriggerSchema2 = z72.discriminatedUnion("type", [
40272
- z72.object({ type: z72.literal("manual") }).strict()
40570
+ var sdkWorkflowEndpointSchema2 = z73.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 "/"' });
40571
+ var sdkWorkflowTriggerSchema2 = z73.discriminatedUnion("type", [
40572
+ z73.object({ type: z73.literal("manual") }).strict()
40273
40573
  ]);
40274
- var sdkWorkflowConfirmationSchema2 = z72.object({
40275
- title: z72.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
40276
- body: z72.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
40574
+ var sdkWorkflowConfirmationSchema2 = z73.object({
40575
+ title: z73.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
40576
+ body: z73.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
40277
40577
  }).strict();
40278
- var sdkWorkflowConfigSchema2 = z72.object({
40578
+ var sdkWorkflowConfigSchema2 = z73.object({
40279
40579
  id: sdkWorkflowIdSchema2,
40280
- title: z72.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
40281
- description: z72.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
40282
- contentType: z72.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
40580
+ title: z73.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
40581
+ description: z73.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
40582
+ contentType: z73.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
40283
40583
  endpoint: sdkWorkflowEndpointSchema2,
40284
- triggers: z72.array(sdkWorkflowTriggerSchema2).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
40584
+ triggers: z73.array(sdkWorkflowTriggerSchema2).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
40285
40585
  confirmation: sdkWorkflowConfirmationSchema2.optional()
40286
40586
  }).strict();
40287
- var sdkWorkflowsSchema2 = z72.array(sdkWorkflowConfigSchema2).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
40587
+ var sdkWorkflowsSchema2 = z73.array(sdkWorkflowConfigSchema2).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
40288
40588
  const ids = workflows.map((workflow) => workflow.id);
40289
40589
  return ids.length === new Set(ids).size;
40290
40590
  }, { message: "Workflow IDs must be unique" }).optional();
40291
- var riverbankSiteConfigSchema = z72.object({
40292
- siteId: z72.string().uuid(),
40591
+ var riverbankSiteConfigSchema = z73.object({
40592
+ siteId: z73.string().uuid(),
40293
40593
  previewUrl: sdkSiteUrlSchema.optional(),
40294
40594
  liveUrl: sdkSiteUrlSchema.optional(),
40295
40595
  theme: sdkThemeConfigSchema2.optional(),
40296
40596
  styles: siteStyleConfigSchema,
40297
40597
  layout: layoutConfigSchema.optional(),
40298
- customBlocks: z72.array(sdkCustomBlockSchema).max(100, "Maximum 100 custom blocks per site").refine(
40598
+ customBlocks: z73.array(sdkCustomBlockSchema).max(100, "Maximum 100 custom blocks per site").refine(
40299
40599
  // Ensure unique block IDs
40300
40600
  (blocks) => {
40301
40601
  const ids = blocks.map((b) => b.id);
@@ -40308,7 +40608,7 @@ var riverbankSiteConfigSchema = z72.object({
40308
40608
  workflows: sdkWorkflowsSchema2,
40309
40609
  content: contentConfigSchema.optional(),
40310
40610
  // CLI-related configuration (Phase 4)
40311
- contentDir: z72.string().optional(),
40611
+ contentDir: z73.string().optional(),
40312
40612
  sync: syncConfigSchema,
40313
40613
  deploy: deployConfigSchema,
40314
40614
  // Theme sync configuration (Phase 5)