@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
@@ -1,5 +1,5 @@
1
1
  // src/config/validation.ts
2
- import { z as z72 } from "zod";
2
+ import { z as z73 } from "zod";
3
3
 
4
4
  // ../api/src/apiEndpointTypes.ts
5
5
  function blockedDemoMutationPolicy(classification, publicMessage) {
@@ -1040,6 +1040,94 @@ var ENDPOINT_DEFINITIONS = {
1040
1040
  responseKind: "json",
1041
1041
  errors: ["resource:not_found", "server:internal_error"]
1042
1042
  },
1043
+ listAppointmentReservations: {
1044
+ path: "/sites/{siteId}/bookings/appointment-reservations",
1045
+ method: "GET",
1046
+ auth: "user",
1047
+ responseKind: "json",
1048
+ errors: []
1049
+ },
1050
+ createAppointmentReservation: {
1051
+ path: "/sites/{siteId}/bookings/appointment-reservations",
1052
+ method: "POST",
1053
+ auth: "user",
1054
+ responseKind: "json",
1055
+ errors: [
1056
+ "validation:invalid_input",
1057
+ "resource:not_found",
1058
+ "resource:conflict",
1059
+ "server:internal_error"
1060
+ ]
1061
+ },
1062
+ getAppointmentReservation: {
1063
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}",
1064
+ method: "GET",
1065
+ auth: "user",
1066
+ responseKind: "json",
1067
+ errors: ["resource:not_found", "server:internal_error"]
1068
+ },
1069
+ updateAppointmentReservation: {
1070
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}",
1071
+ method: "PUT",
1072
+ auth: "user",
1073
+ responseKind: "json",
1074
+ errors: [
1075
+ "validation:invalid_input",
1076
+ "resource:not_found",
1077
+ "resource:conflict",
1078
+ "server:internal_error"
1079
+ ]
1080
+ },
1081
+ pauseAppointmentReservation: {
1082
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/pause",
1083
+ method: "POST",
1084
+ auth: "user",
1085
+ responseKind: "json",
1086
+ errors: ["resource:not_found", "resource:conflict", "server:internal_error"]
1087
+ },
1088
+ resumeAppointmentReservation: {
1089
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/resume",
1090
+ method: "POST",
1091
+ auth: "user",
1092
+ responseKind: "json",
1093
+ errors: ["resource:not_found", "resource:conflict", "server:internal_error"]
1094
+ },
1095
+ endAppointmentReservation: {
1096
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/end",
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
+ previewAppointmentReservationRun: {
1108
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/run-preview",
1109
+ method: "POST",
1110
+ auth: "user",
1111
+ responseKind: "json",
1112
+ errors: [
1113
+ "validation:invalid_input",
1114
+ "resource:not_found",
1115
+ "resource:conflict",
1116
+ "server:internal_error"
1117
+ ]
1118
+ },
1119
+ createAppointmentReservationRun: {
1120
+ path: "/sites/{siteId}/bookings/appointment-reservations/{reservationId}/runs",
1121
+ method: "POST",
1122
+ auth: "user",
1123
+ responseKind: "json",
1124
+ errors: [
1125
+ "validation:invalid_input",
1126
+ "resource:not_found",
1127
+ "resource:conflict",
1128
+ "server:internal_error"
1129
+ ]
1130
+ },
1043
1131
  createTeamMemberProfile: {
1044
1132
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile",
1045
1133
  method: "POST",
@@ -3496,6 +3584,18 @@ var ENDPOINT_DEFINITIONS = {
3496
3584
  responseKind: "json",
3497
3585
  errors: ["validation:invalid_input", "server:internal_error"]
3498
3586
  },
3587
+ resolveRouteDecision: {
3588
+ path: "/sites/{siteId}/route-decision",
3589
+ method: "GET",
3590
+ tags: [
3591
+ TAG_TEMPLATES.siteRoutableContent,
3592
+ TAG_TEMPLATES.siteRedirects,
3593
+ TAG_TEMPLATES.siteRouteOutcomes
3594
+ ],
3595
+ auth: "public",
3596
+ responseKind: "json",
3597
+ errors: ["validation:invalid_input", "server:internal_error"]
3598
+ },
3499
3599
  getPageByPath: {
3500
3600
  path: "/sites/{siteId}/pages",
3501
3601
  method: "GET",
@@ -3634,6 +3734,15 @@ var ENDPOINT_DEFINITIONS = {
3634
3734
  auth: "public",
3635
3735
  responseKind: "json"
3636
3736
  },
3737
+ getPublicWeeklySlotAvailability: {
3738
+ path: "/public/bookings/weekly-slot-availability",
3739
+ method: "GET",
3740
+ revalidate: 60,
3741
+ tags: ["site-{siteId}"],
3742
+ auth: "public",
3743
+ responseKind: "json",
3744
+ errors: []
3745
+ },
3637
3746
  createPublicBookingAppointment: {
3638
3747
  path: "/public/bookings/appointments",
3639
3748
  method: "POST",
@@ -6786,7 +6895,7 @@ var navigationLinkInputSchema = z2.discriminatedUnion(
6786
6895
  );
6787
6896
 
6788
6897
  // ../api/src/sdkConfig/contracts.ts
6789
- import { z as z63 } from "zod";
6898
+ import { z as z64 } from "zod";
6790
6899
 
6791
6900
  // ../blocks/src/system/manifest/augmentManifest.ts
6792
6901
  function augmentManifest(manifest) {
@@ -6955,10 +7064,20 @@ var repeatSchema = z3.object({
6955
7064
  direction: z3.enum(["asc", "desc"]).default("asc")
6956
7065
  }).optional()
6957
7066
  });
7067
+ var conditionalAuthoringPresenceSchema = z3.discriminatedUnion("kind", [
7068
+ z3.object({ kind: z3.literal("visitor-only") }),
7069
+ z3.object({
7070
+ kind: z3.literal("recover-empty-when-active"),
7071
+ placeholder: z3.string().min(1).optional()
7072
+ })
7073
+ ]);
6958
7074
  var conditionSchema = z3.object({
6959
7075
  when: bindingSchema,
6960
7076
  equals: z3.unknown().optional(),
6961
- not: z3.boolean().default(false)
7077
+ not: z3.boolean().default(false),
7078
+ authoringPresence: conditionalAuthoringPresenceSchema.default({
7079
+ kind: "visitor-only"
7080
+ })
6962
7081
  });
6963
7082
  var dataScopeSchema = z3.object({
6964
7083
  name: z3.string().min(1),
@@ -7019,6 +7138,7 @@ var ALLOWED_NODE_TYPES = [
7019
7138
  // Forms
7020
7139
  "form",
7021
7140
  "booking-form",
7141
+ "weekly-slot-availability",
7022
7142
  // Events
7023
7143
  "event-registration",
7024
7144
  "event-spotlight",
@@ -18056,7 +18176,8 @@ function when(path, options) {
18056
18176
  $when: {
18057
18177
  when: { from: path },
18058
18178
  ...options?.equals !== void 0 ? { equals: options.equals } : {},
18059
- ...options?.not ? { not: true } : {}
18179
+ ...options?.not ? { not: true } : {},
18180
+ ...options?.authoringPresence ? { authoringPresence: options.authoringPresence } : {}
18060
18181
  }
18061
18182
  });
18062
18183
  }
@@ -27883,77 +28004,247 @@ var appointmentBookingBlockDefinition = {
27883
28004
  }
27884
28005
  };
27885
28006
 
28007
+ // ../blocks/src/system/blocks/weekly-slot-availability.ts
28008
+ import { z as z39 } from "zod";
28009
+ var weeklySlotAvailabilityManifest = createBlockManifest({
28010
+ id: "block.weekly-slot-availability",
28011
+ version: "1.0.0",
28012
+ title: "Weekly Slot Availability",
28013
+ titleSource: "heading",
28014
+ description: "Shows available recurring appointment slot patterns",
28015
+ skipSectionStyles: true,
28016
+ additionalFields: [
28017
+ {
28018
+ id: "serviceId",
28019
+ type: "reference",
28020
+ label: "Appointment service",
28021
+ description: "Choose which appointment service to show availability for",
28022
+ required: true,
28023
+ referenceKind: "appointmentService",
28024
+ allowManualEntry: false,
28025
+ ui: { intent: "behavior" }
28026
+ },
28027
+ {
28028
+ id: "resourceId",
28029
+ type: "reference",
28030
+ label: "Appointment resource",
28031
+ description: "Optionally narrow the availability to one practitioner or room",
28032
+ required: false,
28033
+ referenceKind: "appointmentResource",
28034
+ allowManualEntry: false,
28035
+ ui: { intent: "behavior" }
28036
+ },
28037
+ {
28038
+ id: "horizonWeeks",
28039
+ type: "select",
28040
+ label: "Look ahead",
28041
+ required: false,
28042
+ multiple: false,
28043
+ defaultValue: "4",
28044
+ options: [
28045
+ { value: "1", label: "1 week" },
28046
+ { value: "2", label: "2 weeks" },
28047
+ { value: "4", label: "4 weeks" }
28048
+ ],
28049
+ ui: { intent: "behavior" }
28050
+ },
28051
+ {
28052
+ id: "timezone",
28053
+ type: "text",
28054
+ label: "Timezone",
28055
+ description: "Leave blank to use the visitor timezone when the block loads",
28056
+ required: false,
28057
+ multiline: false,
28058
+ defaultValue: "",
28059
+ maxLength: 64,
28060
+ ui: { intent: "behavior" }
28061
+ },
28062
+ {
28063
+ id: "heading",
28064
+ type: "text",
28065
+ label: "Heading",
28066
+ required: false,
28067
+ multiline: false,
28068
+ defaultValue: "Weekly availability"
28069
+ },
28070
+ {
28071
+ id: "description",
28072
+ type: "richText",
28073
+ label: "Description",
28074
+ required: false
28075
+ },
28076
+ {
28077
+ id: "emptyMessage",
28078
+ type: "text",
28079
+ label: "Empty message",
28080
+ required: false,
28081
+ multiline: true,
28082
+ defaultValue: "No regular weekly openings are currently available.",
28083
+ maxLength: 180
28084
+ },
28085
+ {
28086
+ id: "ctaText",
28087
+ type: "text",
28088
+ label: "Enquiry button text",
28089
+ required: false,
28090
+ multiline: false,
28091
+ defaultValue: "Enquire about this slot",
28092
+ maxLength: 60
28093
+ },
28094
+ {
28095
+ id: "ctaUrl",
28096
+ type: "url",
28097
+ label: "Enquiry URL",
28098
+ required: false,
28099
+ ui: { intent: "behavior" }
28100
+ },
28101
+ sectionStylesField({
28102
+ id: "_sectionStyles",
28103
+ label: "Section styles"
28104
+ })
28105
+ ],
28106
+ styleTokens: { background: "surface", typography: "body", spacing: "md" },
28107
+ behaviours: {
28108
+ supportsThemeSwitching: true,
28109
+ inlineEditing: false,
28110
+ animation: false,
28111
+ paletteHidden: false
28112
+ },
28113
+ category: "interactive",
28114
+ tags: ["booking", "appointment", "calendar", "weekly", "availability"],
28115
+ icon: "CalendarDays",
28116
+ layout: [
28117
+ styledSection({
28118
+ children: sectionContainer([
28119
+ text({ as: "h2" }, bind("content.heading"), when("content.heading")),
28120
+ richText({}, bind("content.description"), when("content.description")),
28121
+ el(
28122
+ "weekly-slot-availability",
28123
+ withApiBindings({
28124
+ serviceId: { $bind: { from: "content.serviceId" } },
28125
+ resourceId: { $bind: { from: "content.resourceId", fallback: null } },
28126
+ horizonWeeks: { $bind: { from: "content.horizonWeeks", fallback: "4" } },
28127
+ timezone: { $bind: { from: "content.timezone", fallback: null } },
28128
+ availability: { $bind: { from: "data.availability", fallback: null } },
28129
+ emptyMessage: { $bind: { from: "content.emptyMessage", fallback: null } },
28130
+ ctaText: { $bind: { from: "content.ctaText", fallback: null } },
28131
+ ctaUrl: { $bind: { from: "content.ctaUrl", fallback: null } }
28132
+ })
28133
+ )
28134
+ ], {
28135
+ gap: "lg"
28136
+ }),
28137
+ baseClass: "",
28138
+ spacing: "spacious"
28139
+ })
28140
+ ]
28141
+ });
28142
+ var weeklySlotAvailabilityOptionSchema = z39.object({
28143
+ id: z39.string(),
28144
+ resourceId: z39.string(),
28145
+ weekday: z39.number(),
28146
+ weekdayLabel: z39.string(),
28147
+ startTime: z39.string(),
28148
+ endTime: z39.string(),
28149
+ nextDate: z39.string(),
28150
+ availableWeeks: z39.number()
28151
+ });
28152
+ var weeklySlotAvailabilityDataSchema = z39.object({
28153
+ slots: z39.array(weeklySlotAvailabilityOptionSchema),
28154
+ horizonWeeks: z39.number(),
28155
+ timezone: z39.string(),
28156
+ startDate: z39.string(),
28157
+ endDate: z39.string()
28158
+ });
28159
+ var weeklySlotAvailabilityBlockDefinition = {
28160
+ manifest: weeklySlotAvailabilityManifest,
28161
+ dataSchemas: { availability: weeklySlotAvailabilityDataSchema.optional() },
28162
+ dataLoaders: {
28163
+ availability: {
28164
+ endpoint: "getPublicWeeklySlotAvailability",
28165
+ params: {
28166
+ siteId: { $bind: { from: "$root.siteId" } },
28167
+ serviceId: { $bind: { from: "content.serviceId" } },
28168
+ resourceId: { $bind: { from: "content.resourceId", fallback: void 0 } },
28169
+ horizonWeeks: { $bind: { from: "content.horizonWeeks", fallback: "4" } },
28170
+ timezone: { $bind: { from: "content.timezone", fallback: void 0 } }
28171
+ },
28172
+ mode: "server"
28173
+ }
28174
+ }
28175
+ };
28176
+
27886
28177
  // ../blocks/src/system/blocks/events/shared/schemas.ts
27887
- import { z as z43 } from "zod";
28178
+ import { z as z44 } from "zod";
27888
28179
 
27889
28180
  // ../blocks/src/lib/media.ts
27890
- import z39 from "zod";
28181
+ import z40 from "zod";
27891
28182
  var PUBLIC_DOWNLOAD_MEDIA_TYPES = [
27892
28183
  "document",
27893
28184
  "spreadsheet",
27894
28185
  "archive",
27895
28186
  "audio"
27896
28187
  ];
27897
- var hotspotSchema2 = z39.object({
27898
- x: z39.number().min(0).max(1),
27899
- y: z39.number().min(0).max(1),
27900
- radius: z39.number().optional()
27901
- });
27902
- var rotationSchema2 = z39.union([z39.literal(0), z39.literal(90), z39.literal(180), z39.literal(270)]);
27903
- var rectSchema2 = z39.tuple([z39.number(), z39.number(), z39.number(), z39.number()]);
27904
- var aspectCropSchema2 = z39.object({
27905
- aspect: z39.preprocess((value) => value == null ? void 0 : value, z39.string().optional()),
27906
- rect: z39.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
27907
- hotspot: z39.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
27908
- rotation: z39.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
27909
- });
27910
- var transformSchema2 = z39.object({
27911
- aspectCrops: z39.preprocess((value) => {
28188
+ var hotspotSchema2 = z40.object({
28189
+ x: z40.number().min(0).max(1),
28190
+ y: z40.number().min(0).max(1),
28191
+ radius: z40.number().optional()
28192
+ });
28193
+ var rotationSchema2 = z40.union([z40.literal(0), z40.literal(90), z40.literal(180), z40.literal(270)]);
28194
+ var rectSchema2 = z40.tuple([z40.number(), z40.number(), z40.number(), z40.number()]);
28195
+ var aspectCropSchema2 = z40.object({
28196
+ aspect: z40.preprocess((value) => value == null ? void 0 : value, z40.string().optional()),
28197
+ rect: z40.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
28198
+ hotspot: z40.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
28199
+ rotation: z40.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
28200
+ });
28201
+ var transformSchema2 = z40.object({
28202
+ aspectCrops: z40.preprocess((value) => {
27912
28203
  if (!value || typeof value !== "object" || Array.isArray(value)) {
27913
28204
  return void 0;
27914
28205
  }
27915
28206
  return value;
27916
- }, z39.record(z39.string(), aspectCropSchema2.catch({}))).optional(),
28207
+ }, z40.record(z40.string(), aspectCropSchema2.catch({}))).optional(),
27917
28208
  rect: rectSchema2.optional(),
27918
28209
  hotspot: hotspotSchema2.optional(),
27919
28210
  rotation: rotationSchema2.optional()
27920
28211
  });
27921
- var mediaPosterSchema = z39.discriminatedUnion("tag", [
27922
- z39.object({
27923
- tag: z39.literal("storage"),
27924
- assetId: z39.string().optional(),
27925
- storageBucket: z39.string().min(1),
27926
- storagePath: z39.string().min(1)
28212
+ var mediaPosterSchema = z40.discriminatedUnion("tag", [
28213
+ z40.object({
28214
+ tag: z40.literal("storage"),
28215
+ assetId: z40.string().optional(),
28216
+ storageBucket: z40.string().min(1),
28217
+ storagePath: z40.string().min(1)
27927
28218
  }),
27928
- z39.object({
27929
- tag: z39.literal("external-src"),
27930
- assetId: z39.string().optional(),
27931
- src: z39.string().url()
28219
+ z40.object({
28220
+ tag: z40.literal("external-src"),
28221
+ assetId: z40.string().optional(),
28222
+ src: z40.string().url()
27932
28223
  })
27933
28224
  ]);
27934
- var mediaBaseSchema = z39.object({
27935
- purpose: z39.string().optional(),
27936
- placeholder: z39.boolean().default(true).optional(),
27937
- assetId: z39.string().optional(),
27938
- identifier: z39.string().optional(),
27939
- src: z39.string().optional(),
27940
- alt: z39.string().optional(),
27941
- filename: z39.string().optional(),
27942
- mimeType: z39.string().optional(),
27943
- width: z39.number().optional(),
27944
- height: z39.number().optional(),
27945
- storageBucket: z39.string().optional(),
27946
- storagePath: z39.string().optional(),
28225
+ var mediaBaseSchema = z40.object({
28226
+ purpose: z40.string().optional(),
28227
+ placeholder: z40.boolean().default(true).optional(),
28228
+ assetId: z40.string().optional(),
28229
+ identifier: z40.string().optional(),
28230
+ src: z40.string().optional(),
28231
+ alt: z40.string().optional(),
28232
+ filename: z40.string().optional(),
28233
+ mimeType: z40.string().optional(),
28234
+ width: z40.number().optional(),
28235
+ height: z40.number().optional(),
28236
+ storageBucket: z40.string().optional(),
28237
+ storagePath: z40.string().optional(),
27947
28238
  poster: mediaPosterSchema.optional(),
27948
28239
  transform: transformSchema2.optional()
27949
28240
  });
27950
- var imageMediaSchema = mediaBaseSchema.extend({ type: z39.literal("image") });
27951
- var videoMediaSchema = mediaBaseSchema.extend({ type: z39.literal("video") });
27952
- var audioMediaSchema = mediaBaseSchema.extend({ type: z39.literal("audio") });
27953
- var documentMediaSchema = mediaBaseSchema.extend({ type: z39.literal("document") });
27954
- var spreadsheetMediaSchema = mediaBaseSchema.extend({ type: z39.literal("spreadsheet") });
27955
- var archiveMediaSchema = mediaBaseSchema.extend({ type: z39.literal("archive") });
27956
- var mediaSchema2 = z39.discriminatedUnion("type", [
28241
+ var imageMediaSchema = mediaBaseSchema.extend({ type: z40.literal("image") });
28242
+ var videoMediaSchema = mediaBaseSchema.extend({ type: z40.literal("video") });
28243
+ var audioMediaSchema = mediaBaseSchema.extend({ type: z40.literal("audio") });
28244
+ var documentMediaSchema = mediaBaseSchema.extend({ type: z40.literal("document") });
28245
+ var spreadsheetMediaSchema = mediaBaseSchema.extend({ type: z40.literal("spreadsheet") });
28246
+ var archiveMediaSchema = mediaBaseSchema.extend({ type: z40.literal("archive") });
28247
+ var mediaSchema2 = z40.discriminatedUnion("type", [
27957
28248
  imageMediaSchema,
27958
28249
  videoMediaSchema,
27959
28250
  audioMediaSchema,
@@ -27963,372 +28254,372 @@ var mediaSchema2 = z39.discriminatedUnion("type", [
27963
28254
  ]);
27964
28255
 
27965
28256
  // ../blocks/src/system/manifest/richTextSchema.ts
27966
- import { z as z40 } from "zod";
27967
- var TipTapMarkSchema = z40.object({
27968
- type: z40.string(),
27969
- attrs: z40.record(z40.string(), z40.unknown()).optional()
27970
- });
27971
- var TipTapNodeSchema = z40.lazy(
27972
- () => z40.object({
27973
- type: z40.string(),
27974
- content: z40.array(TipTapNodeSchema).optional(),
27975
- text: z40.string().optional(),
27976
- attrs: z40.record(z40.string(), z40.unknown()).optional(),
27977
- marks: z40.array(TipTapMarkSchema).optional()
28257
+ import { z as z41 } from "zod";
28258
+ var TipTapMarkSchema = z41.object({
28259
+ type: z41.string(),
28260
+ attrs: z41.record(z41.string(), z41.unknown()).optional()
28261
+ });
28262
+ var TipTapNodeSchema = z41.lazy(
28263
+ () => z41.object({
28264
+ type: z41.string(),
28265
+ content: z41.array(TipTapNodeSchema).optional(),
28266
+ text: z41.string().optional(),
28267
+ attrs: z41.record(z41.string(), z41.unknown()).optional(),
28268
+ marks: z41.array(TipTapMarkSchema).optional()
27978
28269
  })
27979
28270
  );
27980
- var RichTextValueSchema = z40.union([
28271
+ var RichTextValueSchema = z41.union([
27981
28272
  // Canonical: TipTap document directly
27982
28273
  TipTapNodeSchema,
27983
28274
  // Legacy (read-tolerance only): wrapped in { doc: {...} }
27984
- z40.object({
28275
+ z41.object({
27985
28276
  doc: TipTapNodeSchema
27986
28277
  })
27987
28278
  ]);
27988
- var RichTextDocSchema = z40.object({
27989
- type: z40.literal("doc"),
27990
- content: z40.array(TipTapNodeSchema)
28279
+ var RichTextDocSchema = z41.object({
28280
+ type: z41.literal("doc"),
28281
+ content: z41.array(TipTapNodeSchema)
27991
28282
  });
27992
28283
 
27993
28284
  // ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
27994
- import { z as z41 } from "zod";
27995
- var bookingDepositRefundPolicySchema = z41.enum([
28285
+ import { z as z42 } from "zod";
28286
+ var bookingDepositRefundPolicySchema = z42.enum([
27996
28287
  "refundable",
27997
28288
  "non_refundable"
27998
28289
  ]);
27999
- var bookingInstalmentPlanSchema = z41.union([
28000
- z41.object({
28001
- kind: z41.literal("deposit_plus_one_remainder"),
28002
- depositAmountCents: z41.number().int().min(0),
28290
+ var bookingInstalmentPlanSchema = z42.union([
28291
+ z42.object({
28292
+ kind: z42.literal("deposit_plus_one_remainder"),
28293
+ depositAmountCents: z42.number().int().min(0),
28003
28294
  depositRefundability: bookingDepositRefundPolicySchema,
28004
- remainderDueCount: z41.number().int().positive(),
28005
- intervalUnit: z41.enum(["day", "week", "month"])
28295
+ remainderDueCount: z42.number().int().positive(),
28296
+ intervalUnit: z42.enum(["day", "week", "month"])
28006
28297
  }),
28007
- z41.object({
28008
- kind: z41.literal("deposit_plus_scheduled_instalments"),
28009
- depositAmountCents: z41.number().int().min(0),
28298
+ z42.object({
28299
+ kind: z42.literal("deposit_plus_scheduled_instalments"),
28300
+ depositAmountCents: z42.number().int().min(0),
28010
28301
  depositRefundability: bookingDepositRefundPolicySchema,
28011
- instalmentCount: z41.number().int().positive(),
28012
- intervalCount: z41.number().int().positive(),
28013
- intervalUnit: z41.enum(["day", "week", "month"])
28302
+ instalmentCount: z42.number().int().positive(),
28303
+ intervalCount: z42.number().int().positive(),
28304
+ intervalUnit: z42.enum(["day", "week", "month"])
28014
28305
  }),
28015
- z41.object({
28016
- kind: z41.literal("equal_scheduled_instalments"),
28017
- instalmentCount: z41.number().int().positive(),
28018
- intervalCount: z41.number().int().positive(),
28019
- intervalUnit: z41.enum(["day", "week", "month"])
28306
+ z42.object({
28307
+ kind: z42.literal("equal_scheduled_instalments"),
28308
+ instalmentCount: z42.number().int().positive(),
28309
+ intervalCount: z42.number().int().positive(),
28310
+ intervalUnit: z42.enum(["day", "week", "month"])
28020
28311
  })
28021
28312
  ]);
28022
- var bookingFlexibleBalanceDueDateRuleSchema = z41.union([
28023
- z41.object({
28024
- kind: z41.literal("relative_to_start_date"),
28025
- daysBeforeStart: z41.number().int().positive()
28313
+ var bookingFlexibleBalanceDueDateRuleSchema = z42.union([
28314
+ z42.object({
28315
+ kind: z42.literal("relative_to_start_date"),
28316
+ daysBeforeStart: z42.number().int().positive()
28026
28317
  }),
28027
- z41.object({
28028
- kind: z41.literal("fixed_calendar_date"),
28029
- dueAt: z41.string().datetime()
28318
+ z42.object({
28319
+ kind: z42.literal("fixed_calendar_date"),
28320
+ dueAt: z42.string().datetime()
28030
28321
  })
28031
28322
  ]);
28032
- var bookingFlexibleBalanceConfigSchema = z41.object({
28033
- upfrontAmountCents: z41.number().int().min(0),
28323
+ var bookingFlexibleBalanceConfigSchema = z42.object({
28324
+ upfrontAmountCents: z42.number().int().min(0),
28034
28325
  dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
28035
28326
  depositRefundability: bookingDepositRefundPolicySchema
28036
28327
  });
28037
- var blockBookingPaymentCollectionOptionSchema = z41.union([
28038
- z41.object({
28039
- kind: z41.literal("upfront")
28328
+ var blockBookingPaymentCollectionOptionSchema = z42.union([
28329
+ z42.object({
28330
+ kind: z42.literal("upfront")
28040
28331
  }),
28041
- z41.object({
28042
- kind: z41.literal("deferred_manual")
28332
+ z42.object({
28333
+ kind: z42.literal("deferred_manual")
28043
28334
  }),
28044
- z41.object({
28045
- kind: z41.literal("instalment_plan"),
28335
+ z42.object({
28336
+ kind: z42.literal("instalment_plan"),
28046
28337
  plan: bookingInstalmentPlanSchema
28047
28338
  }),
28048
- z41.object({
28049
- kind: z41.literal("flexible_balance"),
28339
+ z42.object({
28340
+ kind: z42.literal("flexible_balance"),
28050
28341
  config: bookingFlexibleBalanceConfigSchema
28051
28342
  })
28052
28343
  ]);
28053
- var blockBookingPaymentTermsSchema = z41.object({
28054
- allowedOptions: z41.array(blockBookingPaymentCollectionOptionSchema).min(1)
28344
+ var blockBookingPaymentTermsSchema = z42.object({
28345
+ allowedOptions: z42.array(blockBookingPaymentCollectionOptionSchema).min(1)
28055
28346
  });
28056
28347
 
28057
28348
  // ../blocks/src/system/blocks/courses/shared/schemas.ts
28058
- import { z as z42 } from "zod";
28059
- var courseVenueSchema = z42.object({
28060
- id: z42.string(),
28061
- name: z42.string(),
28062
- address: z42.string().nullable()
28063
- });
28064
- var courseSessionSchema = z42.object({
28065
- id: z42.string(),
28066
- startsAt: z42.string(),
28067
- endsAt: z42.string(),
28068
- timeZone: z42.string(),
28069
- capacityOverride: z42.number().nullable().optional(),
28070
- overrides: z42.record(z42.string(), z42.unknown()).nullable().optional()
28071
- });
28072
- var courseTeamMemberSummarySchema = z42.object({
28073
- id: z42.string(),
28074
- name: z42.string(),
28075
- roleLabel: z42.string().nullable(),
28076
- summary: z42.string().nullable(),
28077
- profilePath: z42.string().nullable()
28078
- });
28079
- var coursePricingOptionSchema = z42.object({
28080
- id: z42.string(),
28081
- name: z42.string(),
28082
- description: z42.string().nullable(),
28083
- priceAmount: z42.number(),
28084
- isActive: z42.boolean(),
28085
- sortOrder: z42.number(),
28086
- capacityLimit: z42.number().nullable(),
28087
- saleStartsAt: z42.string().nullable(),
28088
- saleEndsAt: z42.string().nullable(),
28089
- attendanceScope: z42.enum(["in_person", "online", "both"]).nullable().optional()
28090
- });
28091
- var coursePricingSchema = z42.object({
28092
- bookingRequirement: z42.enum(["none", "required"]),
28093
- pricingStrategy: z42.enum(["free", "single", "tiered", "sliding_scale"]),
28094
- currency: z42.string(),
28095
- singlePriceAmount: z42.number().nullable(),
28096
- slidingMinAmount: z42.number().nullable().optional(),
28097
- slidingMaxAmount: z42.number().nullable().optional(),
28098
- slidingSuggestedAmount: z42.number().nullable().optional(),
28349
+ import { z as z43 } from "zod";
28350
+ var courseVenueSchema = z43.object({
28351
+ id: z43.string(),
28352
+ name: z43.string(),
28353
+ address: z43.string().nullable()
28354
+ });
28355
+ var courseSessionSchema = z43.object({
28356
+ id: z43.string(),
28357
+ startsAt: z43.string(),
28358
+ endsAt: z43.string(),
28359
+ timeZone: z43.string(),
28360
+ capacityOverride: z43.number().nullable().optional(),
28361
+ overrides: z43.record(z43.string(), z43.unknown()).nullable().optional()
28362
+ });
28363
+ var courseTeamMemberSummarySchema = z43.object({
28364
+ id: z43.string(),
28365
+ name: z43.string(),
28366
+ roleLabel: z43.string().nullable(),
28367
+ summary: z43.string().nullable(),
28368
+ profilePath: z43.string().nullable()
28369
+ });
28370
+ var coursePricingOptionSchema = z43.object({
28371
+ id: z43.string(),
28372
+ name: z43.string(),
28373
+ description: z43.string().nullable(),
28374
+ priceAmount: z43.number(),
28375
+ isActive: z43.boolean(),
28376
+ sortOrder: z43.number(),
28377
+ capacityLimit: z43.number().nullable(),
28378
+ saleStartsAt: z43.string().nullable(),
28379
+ saleEndsAt: z43.string().nullable(),
28380
+ attendanceScope: z43.enum(["in_person", "online", "both"]).nullable().optional()
28381
+ });
28382
+ var coursePricingSchema = z43.object({
28383
+ bookingRequirement: z43.enum(["none", "required"]),
28384
+ pricingStrategy: z43.enum(["free", "single", "tiered", "sliding_scale"]),
28385
+ currency: z43.string(),
28386
+ singlePriceAmount: z43.number().nullable(),
28387
+ slidingMinAmount: z43.number().nullable().optional(),
28388
+ slidingMaxAmount: z43.number().nullable().optional(),
28389
+ slidingSuggestedAmount: z43.number().nullable().optional(),
28099
28390
  paymentTerms: blockBookingPaymentTermsSchema,
28100
- options: z42.array(coursePricingOptionSchema)
28101
- });
28102
- var publicCourseSchema = z42.object({
28103
- id: z42.string(),
28104
- title: z42.string(),
28105
- slug: z42.string(),
28106
- description: z42.unknown().nullable(),
28107
- teamMembers: z42.array(courseTeamMemberSummarySchema).optional(),
28108
- enrollmentOpen: z42.boolean(),
28391
+ options: z43.array(coursePricingOptionSchema)
28392
+ });
28393
+ var publicCourseSchema = z43.object({
28394
+ id: z43.string(),
28395
+ title: z43.string(),
28396
+ slug: z43.string(),
28397
+ description: z43.unknown().nullable(),
28398
+ teamMembers: z43.array(courseTeamMemberSummarySchema).optional(),
28399
+ enrollmentOpen: z43.boolean(),
28109
28400
  pricing: coursePricingSchema.optional(),
28110
- priceCents: z42.number().nullable(),
28111
- currency: z42.string(),
28401
+ priceCents: z43.number().nullable(),
28402
+ currency: z43.string(),
28112
28403
  paymentTerms: blockBookingPaymentTermsSchema,
28113
- enrollmentCapacity: z42.number().nullable(),
28114
- acceptsMemberships: z42.boolean(),
28115
- status: z42.enum(["active", "draft", "cancelled"]),
28116
- sessionsCount: z42.number(),
28117
- enrolledCount: z42.number(),
28118
- availableSpots: z42.number().nullable(),
28119
- sessions: z42.array(courseSessionSchema),
28404
+ enrollmentCapacity: z43.number().nullable(),
28405
+ acceptsMemberships: z43.boolean(),
28406
+ status: z43.enum(["active", "draft", "cancelled"]),
28407
+ sessionsCount: z43.number(),
28408
+ enrolledCount: z43.number(),
28409
+ availableSpots: z43.number().nullable(),
28410
+ sessions: z43.array(courseSessionSchema),
28120
28411
  venue: courseVenueSchema.nullable(),
28121
- contentEntryId: z42.string().nullable()
28412
+ contentEntryId: z43.string().nullable()
28122
28413
  });
28123
- var publicCoursesArraySchema = z42.array(publicCourseSchema);
28414
+ var publicCoursesArraySchema = z43.array(publicCourseSchema);
28124
28415
 
28125
28416
  // ../blocks/src/system/blocks/events/shared/schemas.ts
28126
- var eventPresetSchema = z43.enum(["event", "class", "workshop", "retreat", "performance"]);
28127
- var eventScheduleScopeSchema = z43.enum(["recurring", "oneOff"]);
28128
- var eventDestinationModeSchema = z43.enum(["cms-managed", "system-managed"]);
28129
- var publicEventDestinationSchema = z43.discriminatedUnion("kind", [
28130
- z43.object({
28131
- kind: z43.literal("native"),
28417
+ var eventPresetSchema = z44.enum(["event", "class", "workshop", "retreat", "performance"]);
28418
+ var eventScheduleScopeSchema = z44.enum(["recurring", "oneOff"]);
28419
+ var eventDestinationModeSchema = z44.enum(["cms-managed", "system-managed"]);
28420
+ var publicEventDestinationSchema = z44.discriminatedUnion("kind", [
28421
+ z44.object({
28422
+ kind: z44.literal("native"),
28132
28423
  mode: eventDestinationModeSchema,
28133
- path: z43.string()
28424
+ path: z44.string()
28134
28425
  }),
28135
- z43.object({
28136
- kind: z43.literal("external"),
28137
- url: z43.string(),
28138
- label: z43.string()
28426
+ z44.object({
28427
+ kind: z44.literal("external"),
28428
+ url: z44.string(),
28429
+ label: z44.string()
28139
28430
  })
28140
28431
  ]);
28141
- var eventVenueSchema = z43.object({
28142
- id: z43.string(),
28143
- name: z43.string(),
28144
- address: z43.string().nullable(),
28145
- location: z43.object({
28146
- lat: z43.number(),
28147
- lng: z43.number()
28432
+ var eventVenueSchema = z44.object({
28433
+ id: z44.string(),
28434
+ name: z44.string(),
28435
+ address: z44.string().nullable(),
28436
+ location: z44.object({
28437
+ lat: z44.number(),
28438
+ lng: z44.number()
28148
28439
  }).nullable()
28149
28440
  });
28150
- var eventCategorySchema = z43.object({
28151
- id: z43.string(),
28152
- name: z43.string(),
28153
- color: z43.string().nullable()
28154
- });
28155
- var pricingTypeSchema = z43.enum(["free", "paid", "external"]);
28156
- var accessRestrictionSchema = z43.enum(["none", "category"]);
28157
- var eventPricingModeSchema = z43.enum(["single", "ticket_types"]);
28158
- var publicCoursePriceDisplaySchema = z43.discriminatedUnion("kind", [
28159
- z43.object({ kind: z43.literal("free"), currency: z43.string() }),
28160
- z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() }),
28161
- z43.object({ kind: z43.literal("from"), amount: z43.number(), currency: z43.string() }),
28162
- z43.object({ kind: z43.literal("unavailable"), currency: z43.string() })
28441
+ var eventCategorySchema = z44.object({
28442
+ id: z44.string(),
28443
+ name: z44.string(),
28444
+ color: z44.string().nullable()
28445
+ });
28446
+ var pricingTypeSchema = z44.enum(["free", "paid", "external"]);
28447
+ var accessRestrictionSchema = z44.enum(["none", "category"]);
28448
+ var eventPricingModeSchema = z44.enum(["single", "ticket_types"]);
28449
+ var publicCoursePriceDisplaySchema = z44.discriminatedUnion("kind", [
28450
+ z44.object({ kind: z44.literal("free"), currency: z44.string() }),
28451
+ z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() }),
28452
+ z44.object({ kind: z44.literal("from"), amount: z44.number(), currency: z44.string() }),
28453
+ z44.object({ kind: z44.literal("unavailable"), currency: z44.string() })
28163
28454
  ]);
28164
- var publicEventPriceDisplaySchema = z43.discriminatedUnion("kind", [
28165
- z43.object({ kind: z43.literal("free"), currency: z43.string() }),
28166
- z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() }),
28167
- z43.object({ kind: z43.literal("from"), amount: z43.number(), currency: z43.string() }),
28168
- z43.object({ kind: z43.literal("range"), minAmount: z43.number(), maxAmount: z43.number(), currency: z43.string() }),
28169
- z43.object({
28170
- kind: z43.literal("mixed"),
28171
- paidFromAmount: z43.number(),
28172
- paidToAmount: z43.number(),
28173
- currency: z43.string()
28455
+ var publicEventPriceDisplaySchema = z44.discriminatedUnion("kind", [
28456
+ z44.object({ kind: z44.literal("free"), currency: z44.string() }),
28457
+ z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() }),
28458
+ z44.object({ kind: z44.literal("from"), amount: z44.number(), currency: z44.string() }),
28459
+ z44.object({ kind: z44.literal("range"), minAmount: z44.number(), maxAmount: z44.number(), currency: z44.string() }),
28460
+ z44.object({
28461
+ kind: z44.literal("mixed"),
28462
+ paidFromAmount: z44.number(),
28463
+ paidToAmount: z44.number(),
28464
+ currency: z44.string()
28174
28465
  }),
28175
- z43.object({ kind: z43.literal("unavailable"), currency: z43.string() }),
28176
- z43.object({ kind: z43.literal("external"), label: z43.string() }),
28177
- z43.object({ kind: z43.literal("course"), display: publicCoursePriceDisplaySchema })
28466
+ z44.object({ kind: z44.literal("unavailable"), currency: z44.string() }),
28467
+ z44.object({ kind: z44.literal("external"), label: z44.string() }),
28468
+ z44.object({ kind: z44.literal("course"), display: publicCoursePriceDisplaySchema })
28178
28469
  ]);
28179
- var publicEventTicketTypePriceDisplaySchema = z43.union([
28180
- z43.object({ kind: z43.literal("free"), currency: z43.string() }),
28181
- z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() }),
28182
- z43.object({ kind: z43.literal("from"), amount: z43.number(), currency: z43.string() }),
28183
- z43.object({ kind: z43.literal("range"), minAmount: z43.number(), maxAmount: z43.number(), currency: z43.string() }),
28184
- z43.object({
28185
- kind: z43.literal("mixed"),
28186
- paidFromAmount: z43.number(),
28187
- paidToAmount: z43.number(),
28188
- currency: z43.string()
28470
+ var publicEventTicketTypePriceDisplaySchema = z44.union([
28471
+ z44.object({ kind: z44.literal("free"), currency: z44.string() }),
28472
+ z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() }),
28473
+ z44.object({ kind: z44.literal("from"), amount: z44.number(), currency: z44.string() }),
28474
+ z44.object({ kind: z44.literal("range"), minAmount: z44.number(), maxAmount: z44.number(), currency: z44.string() }),
28475
+ z44.object({
28476
+ kind: z44.literal("mixed"),
28477
+ paidFromAmount: z44.number(),
28478
+ paidToAmount: z44.number(),
28479
+ currency: z44.string()
28189
28480
  }),
28190
- z43.object({ kind: z43.literal("unavailable"), currency: z43.string() })
28481
+ z44.object({ kind: z44.literal("unavailable"), currency: z44.string() })
28191
28482
  ]);
28192
- var publicEventAttendanceModeSchema = z43.enum(["in_person", "online"]);
28193
- var publicEventAttendanceModeAvailabilitySchema = z43.object({
28483
+ var publicEventAttendanceModeSchema = z44.enum(["in_person", "online"]);
28484
+ var publicEventAttendanceModeAvailabilitySchema = z44.object({
28194
28485
  mode: publicEventAttendanceModeSchema,
28195
- capacity: z43.number().nullable(),
28196
- registeredCount: z43.number(),
28197
- availableSpots: z43.number().nullable(),
28198
- waitlistEnabled: z43.boolean()
28199
- });
28200
- var publicEventTicketTypeAvailabilitySchema = z43.union([
28201
- z43.object({
28202
- kind: z43.literal("available"),
28203
- remainingCapacity: z43.number().nullable()
28486
+ capacity: z44.number().nullable(),
28487
+ registeredCount: z44.number(),
28488
+ availableSpots: z44.number().nullable(),
28489
+ waitlistEnabled: z44.boolean()
28490
+ });
28491
+ var publicEventTicketTypeAvailabilitySchema = z44.union([
28492
+ z44.object({
28493
+ kind: z44.literal("available"),
28494
+ remainingCapacity: z44.number().nullable()
28204
28495
  }),
28205
- z43.object({
28206
- kind: z43.literal("unavailable"),
28207
- reason: z43.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
28208
- remainingCapacity: z43.number().nullable()
28496
+ z44.object({
28497
+ kind: z44.literal("unavailable"),
28498
+ reason: z44.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
28499
+ remainingCapacity: z44.number().nullable()
28209
28500
  })
28210
28501
  ]);
28211
- var publicEventTicketTypeSchema = z43.object({
28212
- id: z43.string(),
28213
- siteId: z43.string(),
28214
- eventSeriesId: z43.string(),
28215
- name: z43.string(),
28216
- description: z43.string().nullable(),
28217
- priceAmount: z43.number(),
28218
- isActive: z43.boolean(),
28219
- sortOrder: z43.number(),
28220
- capacityMode: z43.enum(["limited", "unlimited"]),
28221
- capacityLimit: z43.number().nullable(),
28222
- attendanceScope: z43.enum(["in_person", "online", "both"]).optional(),
28223
- saleStartsAt: z43.string().nullable(),
28224
- saleEndsAt: z43.string().nullable(),
28502
+ var publicEventTicketTypeSchema = z44.object({
28503
+ id: z44.string(),
28504
+ siteId: z44.string(),
28505
+ eventSeriesId: z44.string(),
28506
+ name: z44.string(),
28507
+ description: z44.string().nullable(),
28508
+ priceAmount: z44.number(),
28509
+ isActive: z44.boolean(),
28510
+ sortOrder: z44.number(),
28511
+ capacityMode: z44.enum(["limited", "unlimited"]),
28512
+ capacityLimit: z44.number().nullable(),
28513
+ attendanceScope: z44.enum(["in_person", "online", "both"]).optional(),
28514
+ saleStartsAt: z44.string().nullable(),
28515
+ saleEndsAt: z44.string().nullable(),
28225
28516
  availability: publicEventTicketTypeAvailabilitySchema,
28226
- createdAt: z43.string(),
28227
- updatedAt: z43.string()
28228
- });
28229
- var publicEventPricingSchema = z43.discriminatedUnion("kind", [
28230
- z43.object({
28231
- kind: z43.literal("drop_in"),
28232
- currency: z43.string(),
28233
- display: z43.object({ kind: z43.literal("free"), currency: z43.string() })
28517
+ createdAt: z44.string(),
28518
+ updatedAt: z44.string()
28519
+ });
28520
+ var publicEventPricingSchema = z44.discriminatedUnion("kind", [
28521
+ z44.object({
28522
+ kind: z44.literal("drop_in"),
28523
+ currency: z44.string(),
28524
+ display: z44.object({ kind: z44.literal("free"), currency: z44.string() })
28234
28525
  }),
28235
- z43.object({
28236
- kind: z43.literal("free_registration"),
28237
- currency: z43.string(),
28238
- display: z43.object({ kind: z43.literal("free"), currency: z43.string() })
28526
+ z44.object({
28527
+ kind: z44.literal("free_registration"),
28528
+ currency: z44.string(),
28529
+ display: z44.object({ kind: z44.literal("free"), currency: z44.string() })
28239
28530
  }),
28240
- z43.object({
28241
- kind: z43.literal("single_paid"),
28242
- amount: z43.number(),
28243
- currency: z43.string(),
28244
- display: z43.object({ kind: z43.literal("exact"), amount: z43.number(), currency: z43.string() })
28531
+ z44.object({
28532
+ kind: z44.literal("single_paid"),
28533
+ amount: z44.number(),
28534
+ currency: z44.string(),
28535
+ display: z44.object({ kind: z44.literal("exact"), amount: z44.number(), currency: z44.string() })
28245
28536
  }),
28246
- z43.object({
28247
- kind: z43.literal("ticket_types"),
28248
- currency: z43.string(),
28249
- ticketTypes: z43.array(publicEventTicketTypeSchema),
28537
+ z44.object({
28538
+ kind: z44.literal("ticket_types"),
28539
+ currency: z44.string(),
28540
+ ticketTypes: z44.array(publicEventTicketTypeSchema),
28250
28541
  display: publicEventTicketTypePriceDisplaySchema
28251
28542
  }),
28252
- z43.object({
28253
- kind: z43.literal("sliding_scale"),
28254
- minAmount: z43.number(),
28255
- maxAmount: z43.number(),
28256
- suggestedAmount: z43.number().nullable(),
28257
- currency: z43.string(),
28258
- display: z43.object({
28259
- kind: z43.literal("range"),
28260
- minAmount: z43.number(),
28261
- maxAmount: z43.number(),
28262
- currency: z43.string()
28543
+ z44.object({
28544
+ kind: z44.literal("sliding_scale"),
28545
+ minAmount: z44.number(),
28546
+ maxAmount: z44.number(),
28547
+ suggestedAmount: z44.number().nullable(),
28548
+ currency: z44.string(),
28549
+ display: z44.object({
28550
+ kind: z44.literal("range"),
28551
+ minAmount: z44.number(),
28552
+ maxAmount: z44.number(),
28553
+ currency: z44.string()
28263
28554
  })
28264
28555
  }),
28265
- z43.object({
28266
- kind: z43.literal("course"),
28267
- display: z43.object({ kind: z43.literal("course"), display: publicCoursePriceDisplaySchema })
28556
+ z44.object({
28557
+ kind: z44.literal("course"),
28558
+ display: z44.object({ kind: z44.literal("course"), display: publicCoursePriceDisplaySchema })
28268
28559
  }),
28269
- z43.object({
28270
- kind: z43.literal("external"),
28271
- display: z43.object({ kind: z43.literal("external"), label: z43.string() })
28560
+ z44.object({
28561
+ kind: z44.literal("external"),
28562
+ display: z44.object({ kind: z44.literal("external"), label: z44.string() })
28272
28563
  })
28273
28564
  ]);
28274
- var publicTeamMemberSummarySchema = z43.object({
28275
- id: z43.string(),
28276
- name: z43.string(),
28277
- roleLabel: z43.string().nullable(),
28278
- summary: z43.string().nullable(),
28279
- profilePath: z43.string().nullable()
28565
+ var publicTeamMemberSummarySchema = z44.object({
28566
+ id: z44.string(),
28567
+ name: z44.string(),
28568
+ roleLabel: z44.string().nullable(),
28569
+ summary: z44.string().nullable(),
28570
+ profilePath: z44.string().nullable()
28280
28571
  });
28281
- var publicEventSchema = z43.object({
28282
- kind: z43.enum(["event", "course_session"]).optional(),
28572
+ var publicEventSchema = z44.object({
28573
+ kind: z44.enum(["event", "course_session"]).optional(),
28283
28574
  eventPreset: eventPresetSchema.optional(),
28284
28575
  eventDestinationMode: eventDestinationModeSchema.optional(),
28285
28576
  scheduleScope: eventScheduleScopeSchema.optional(),
28286
- id: z43.string(),
28287
- occurrenceId: z43.string(),
28288
- seriesId: z43.string(),
28289
- title: z43.string(),
28290
- description: z43.string().nullable(),
28291
- content: z43.object({
28577
+ id: z44.string(),
28578
+ occurrenceId: z44.string(),
28579
+ seriesId: z44.string(),
28580
+ title: z44.string(),
28581
+ description: z44.string().nullable(),
28582
+ content: z44.object({
28292
28583
  body: RichTextDocSchema.nullable().optional()
28293
28584
  }).optional(),
28294
- presentation: z43.object({
28295
- cardTitleOverride: z43.string().nullable().optional(),
28296
- summary: z43.string().nullable().optional(),
28585
+ presentation: z44.object({
28586
+ cardTitleOverride: z44.string().nullable().optional(),
28587
+ summary: z44.string().nullable().optional(),
28297
28588
  image: mediaSchema2.nullable().optional()
28298
28589
  }).optional(),
28299
- slug: z43.string(),
28300
- path: z43.string().nullable(),
28590
+ slug: z44.string(),
28591
+ path: z44.string().nullable(),
28301
28592
  destination: publicEventDestinationSchema,
28302
- requiresRegistration: z43.boolean(),
28303
- deliveryMode: z43.enum(["in_person", "online", "hybrid"]),
28304
- attendanceModes: z43.array(publicEventAttendanceModeAvailabilitySchema),
28305
- startsAt: z43.string(),
28306
- endsAt: z43.string(),
28307
- capacity: z43.number().nullable(),
28308
- registeredCount: z43.number(),
28309
- availableSpots: z43.number().nullable(),
28310
- waitlistEnabled: z43.boolean(),
28593
+ requiresRegistration: z44.boolean(),
28594
+ deliveryMode: z44.enum(["in_person", "online", "hybrid"]),
28595
+ attendanceModes: z44.array(publicEventAttendanceModeAvailabilitySchema),
28596
+ startsAt: z44.string(),
28597
+ endsAt: z44.string(),
28598
+ capacity: z44.number().nullable(),
28599
+ registeredCount: z44.number(),
28600
+ availableSpots: z44.number().nullable(),
28601
+ waitlistEnabled: z44.boolean(),
28311
28602
  venue: eventVenueSchema.nullable(),
28312
28603
  eventCategory: eventCategorySchema.nullable(),
28313
- teamMembers: z43.array(publicTeamMemberSummarySchema).optional(),
28314
- status: z43.enum(["active", "draft", "archived"]).optional(),
28315
- timeZone: z43.string(),
28604
+ teamMembers: z44.array(publicTeamMemberSummarySchema).optional(),
28605
+ status: z44.enum(["active", "draft", "archived"]).optional(),
28606
+ timeZone: z44.string(),
28316
28607
  pricing: publicEventPricingSchema,
28317
28608
  paymentTerms: blockBookingPaymentTermsSchema,
28318
28609
  accessRestriction: accessRestrictionSchema,
28319
- allowedCategoryIds: z43.array(z43.string()),
28320
- requireGuestDetails: z43.boolean().optional(),
28321
- acceptsPasses: z43.boolean().optional(),
28322
- acceptsMemberships: z43.boolean().optional(),
28323
- course: z43.object({
28324
- id: z43.string(),
28610
+ allowedCategoryIds: z44.array(z44.string()),
28611
+ requireGuestDetails: z44.boolean().optional(),
28612
+ acceptsPasses: z44.boolean().optional(),
28613
+ acceptsMemberships: z44.boolean().optional(),
28614
+ course: z44.object({
28615
+ id: z44.string(),
28325
28616
  pricing: coursePricingSchema.optional(),
28326
- priceCents: z43.number().nullable(),
28327
- currency: z43.string(),
28328
- enrollmentOpen: z43.boolean()
28617
+ priceCents: z44.number().nullable(),
28618
+ currency: z44.string(),
28619
+ enrollmentOpen: z44.boolean()
28329
28620
  }).nullable().optional()
28330
28621
  });
28331
- var publicEventsArraySchema = z43.array(publicEventSchema);
28622
+ var publicEventsArraySchema = z44.array(publicEventSchema);
28332
28623
 
28333
28624
  // ../blocks/src/system/blocks/events/shared/fields.ts
28334
28625
  var cardVariantOptions2 = cardVariantRoleValues.map((value) => ({
@@ -28531,52 +28822,80 @@ function normalizeEventStaffMemberId(value) {
28531
28822
  return trimmed ? trimmed : null;
28532
28823
  }
28533
28824
 
28825
+ // ../blocks/src/system/blocks/events/shared/layout.ts
28826
+ var recoverEmptyHeadingWhenActive = {
28827
+ kind: "recover-empty-when-active",
28828
+ placeholder: "Add heading"
28829
+ };
28830
+ var recoverEmptyDescriptionWhenActive = {
28831
+ kind: "recover-empty-when-active",
28832
+ placeholder: "Add description"
28833
+ };
28834
+ function eventSectionHeaderLayoutNodes() {
28835
+ return [
28836
+ text(
28837
+ { as: "h2" },
28838
+ bind("content.heading"),
28839
+ when("content.heading", {
28840
+ authoringPresence: recoverEmptyHeadingWhenActive
28841
+ })
28842
+ ),
28843
+ richText(
28844
+ { className: "rb-prose rb-max-w-none" },
28845
+ bind("content.description"),
28846
+ when("content.description", {
28847
+ authoringPresence: recoverEmptyDescriptionWhenActive
28848
+ })
28849
+ )
28850
+ ];
28851
+ }
28852
+
28534
28853
  // ../blocks/src/system/blocks/shop.shared.ts
28535
- import { z as z44 } from "zod";
28536
- var publicPassProductSchema = z44.object({
28537
- id: z44.string(),
28538
- productUseCase: z44.enum(["event_pass", "appointment_package"]).default("event_pass"),
28539
- name: z44.string(),
28540
- description: z44.string().nullable(),
28541
- price: z44.number(),
28542
- currency: z44.string(),
28543
- creditsTotal: z44.number(),
28544
- pricePerCredit: z44.number(),
28545
- validDays: z44.number().nullable(),
28546
- eligibleCategoryIds: z44.array(z44.string()),
28547
- eligibleCategoryNames: z44.array(z44.string())
28548
- });
28549
- var publicPassProductCollectionSchema = z44.object({
28550
- passes: z44.array(publicPassProductSchema)
28551
- });
28552
- var publicMembershipProductSchema = z44.object({
28553
- id: z44.string(),
28554
- name: z44.string(),
28555
- description: z44.string().nullable(),
28556
- price: z44.number(),
28557
- currency: z44.string(),
28558
- billingInterval: z44.enum(["month", "year"]),
28559
- eligibleCategoryIds: z44.array(z44.string()),
28560
- eligibleCategoryNames: z44.array(z44.string())
28854
+ import { z as z45 } from "zod";
28855
+ var publicPassProductSchema = z45.object({
28856
+ id: z45.string(),
28857
+ productUseCase: z45.enum(["event_pass", "appointment_package"]).default("event_pass"),
28858
+ name: z45.string(),
28859
+ description: z45.string().nullable(),
28860
+ price: z45.number(),
28861
+ currency: z45.string(),
28862
+ creditsTotal: z45.number(),
28863
+ pricePerCredit: z45.number(),
28864
+ validDays: z45.number().nullable(),
28865
+ eligibleCategoryIds: z45.array(z45.string()),
28866
+ eligibleCategoryNames: z45.array(z45.string())
28867
+ });
28868
+ var publicPassProductCollectionSchema = z45.object({
28869
+ passes: z45.array(publicPassProductSchema)
28870
+ });
28871
+ var publicMembershipProductSchema = z45.object({
28872
+ id: z45.string(),
28873
+ name: z45.string(),
28874
+ description: z45.string().nullable(),
28875
+ price: z45.number(),
28876
+ currency: z45.string(),
28877
+ billingInterval: z45.enum(["month", "year"]),
28878
+ eligibleCategoryIds: z45.array(z45.string()),
28879
+ eligibleCategoryNames: z45.array(z45.string())
28561
28880
  });
28562
- var publicMembershipProductCollectionSchema = z44.object({
28563
- memberships: z44.array(publicMembershipProductSchema)
28881
+ var publicMembershipProductCollectionSchema = z45.object({
28882
+ memberships: z45.array(publicMembershipProductSchema)
28564
28883
  });
28565
28884
 
28566
28885
  // ../blocks/src/system/blocks/event-registration.shared.ts
28567
- import { z as z45 } from "zod";
28568
- var occurrenceContextSchema = z45.object({
28569
- id: z45.string(),
28570
- seriesId: z45.string(),
28571
- startsAt: z45.string(),
28572
- endsAt: z45.string(),
28573
- timeZone: z45.string(),
28574
- capacityOverride: z45.number().nullable().optional(),
28575
- overrides: z45.record(z45.string(), z45.unknown()).nullable().optional()
28886
+ import { z as z46 } from "zod";
28887
+ var occurrenceContextSchema = z46.object({
28888
+ id: z46.string(),
28889
+ seriesId: z46.string(),
28890
+ startsAt: z46.string(),
28891
+ endsAt: z46.string(),
28892
+ timeZone: z46.string(),
28893
+ capacityOverride: z46.number().nullable().optional(),
28894
+ overrides: z46.record(z46.string(), z46.unknown()).nullable().optional()
28576
28895
  }).nullable();
28577
28896
 
28578
28897
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28579
- import { z as z47 } from "zod";
28898
+ import { z as z48 } from "zod";
28580
28899
 
28581
28900
  // ../blocks/src/system/constants/events.ts
28582
28901
  var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
@@ -28763,17 +29082,17 @@ function readAmount(value) {
28763
29082
  }
28764
29083
 
28765
29084
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
28766
- import { z as z46 } from "zod";
28767
- var previewStageSchema = z46.enum(["preview", "published"]);
28768
- var registrationButtonVariantSchema = z46.enum(["primary", "secondary", "outline"]);
28769
- var eventButtonVariantSchema = z46.enum(["primary", "secondary", "outline", "link"]);
28770
- var eventLayoutSchema = z46.enum(eventCalendarListLayoutValues);
28771
- var eventCalendarDisplayModeSchema = z46.enum(eventCalendarDisplayModeValues);
28772
- var eventCalendarDefaultViewSchema = z46.enum(eventCalendarDefaultViewValues);
28773
- var columnOptionSchema = z46.enum(["2", "3", "4"]);
28774
- var weekStartSchema = z46.enum(["sunday", "monday"]);
28775
- var filterAutoShowSchema = z46.enum(["auto", "always", "never"]);
28776
- var calendarTabViewsSchema = z46.enum(["both", "month", "week"]);
29085
+ import { z as z47 } from "zod";
29086
+ var previewStageSchema = z47.enum(["preview", "published"]);
29087
+ var registrationButtonVariantSchema = z47.enum(["primary", "secondary", "outline"]);
29088
+ var eventButtonVariantSchema = z47.enum(["primary", "secondary", "outline", "link"]);
29089
+ var eventLayoutSchema = z47.enum(eventCalendarListLayoutValues);
29090
+ var eventCalendarDisplayModeSchema = z47.enum(eventCalendarDisplayModeValues);
29091
+ var eventCalendarDefaultViewSchema = z47.enum(eventCalendarDefaultViewValues);
29092
+ var columnOptionSchema = z47.enum(["2", "3", "4"]);
29093
+ var weekStartSchema = z47.enum(["sunday", "monday"]);
29094
+ var filterAutoShowSchema = z47.enum(["auto", "always", "never"]);
29095
+ var calendarTabViewsSchema = z47.enum(["both", "month", "week"]);
28777
29096
 
28778
29097
  // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
28779
29098
  function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
@@ -28833,72 +29152,72 @@ function toRegistrationEvents(events) {
28833
29152
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28834
29153
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
28835
29154
  var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
28836
- var contentEntrySchema = z47.object({
28837
- id: z47.string(),
28838
- slug: z47.string(),
28839
- contentTypeSlug: z47.string()
29155
+ var contentEntrySchema = z48.object({
29156
+ id: z48.string(),
29157
+ slug: z48.string(),
29158
+ contentTypeSlug: z48.string()
28840
29159
  });
28841
- var eventRegistrationPublicEventSchema = z47.preprocess(
29160
+ var eventRegistrationPublicEventSchema = z48.preprocess(
28842
29161
  normalizeEventRegistrationEventInput,
28843
29162
  publicEventSchema
28844
29163
  );
28845
- var eventRegistrationSourceSchema = z47.object({
28846
- siteId: z47.string().optional(),
28847
- apiBaseUrl: z47.string().optional(),
28848
- portalToken: z47.string().nullable().optional(),
28849
- previewToken: z47.string().nullable().optional(),
29164
+ var eventRegistrationSourceSchema = z48.object({
29165
+ siteId: z48.string().optional(),
29166
+ apiBaseUrl: z48.string().optional(),
29167
+ portalToken: z48.string().nullable().optional(),
29168
+ previewToken: z48.string().nullable().optional(),
28850
29169
  occurrenceContext: occurrenceContextSchema.optional(),
28851
29170
  contentEntry: contentEntrySchema.nullable().optional(),
28852
- events: z47.array(eventRegistrationPublicEventSchema).nullable().optional(),
28853
- className: z47.string().nullable().optional(),
28854
- buttonText: z47.string().nullable().optional(),
28855
- maxTickets: z47.string().nullable().optional(),
28856
- showVenue: z47.boolean().optional(),
28857
- showCapacity: z47.boolean().optional(),
28858
- successMessage: z47.string().optional(),
28859
- waitlistMessage: z47.string().optional(),
29171
+ events: z48.array(eventRegistrationPublicEventSchema).nullable().optional(),
29172
+ className: z48.string().nullable().optional(),
29173
+ buttonText: z48.string().nullable().optional(),
29174
+ maxTickets: z48.string().nullable().optional(),
29175
+ showVenue: z48.boolean().optional(),
29176
+ showCapacity: z48.boolean().optional(),
29177
+ successMessage: z48.string().optional(),
29178
+ waitlistMessage: z48.string().optional(),
28860
29179
  buttonVariant: registrationButtonVariantSchema.optional(),
28861
- overlayEnabled: z47.boolean().optional(),
28862
- spamProtectionEnabled: z47.boolean().optional(),
29180
+ overlayEnabled: z48.boolean().optional(),
29181
+ spamProtectionEnabled: z48.boolean().optional(),
28863
29182
  stage: previewStageSchema.optional(),
28864
- supportEmail: z47.string().optional(),
29183
+ supportEmail: z48.string().optional(),
28865
29184
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
28866
29185
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
28867
29186
  });
28868
- var eventRegistrationDisplaySchema = z47.object({
28869
- kind: z47.literal("event-registration"),
28870
- state: z47.literal("generic-shell"),
28871
- className: z47.string().nullable(),
28872
- titleText: z47.string(),
28873
- bodyText: z47.string(),
28874
- stepLabels: z47.array(z47.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
28875
- summaryButtonText: z47.string()
29187
+ var eventRegistrationDisplaySchema = z48.object({
29188
+ kind: z48.literal("event-registration"),
29189
+ state: z48.literal("generic-shell"),
29190
+ className: z48.string().nullable(),
29191
+ titleText: z48.string(),
29192
+ bodyText: z48.string(),
29193
+ stepLabels: z48.array(z48.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
29194
+ summaryButtonText: z48.string()
28876
29195
  });
28877
- var eventRegistrationHydrationSchema = z47.object({
29196
+ var eventRegistrationHydrationSchema = z48.object({
28878
29197
  occurrenceContext: occurrenceContextSchema.optional(),
28879
29198
  contentEntry: contentEntrySchema.nullable().optional(),
28880
- events: z47.array(eventRegistrationPublicEventSchema).nullable().optional(),
28881
- maxTickets: z47.string().optional(),
28882
- showVenue: z47.boolean().optional(),
28883
- showCapacity: z47.boolean().optional(),
28884
- successMessage: z47.string().optional(),
28885
- waitlistMessage: z47.string().optional(),
29199
+ events: z48.array(eventRegistrationPublicEventSchema).nullable().optional(),
29200
+ maxTickets: z48.string().optional(),
29201
+ showVenue: z48.boolean().optional(),
29202
+ showCapacity: z48.boolean().optional(),
29203
+ successMessage: z48.string().optional(),
29204
+ waitlistMessage: z48.string().optional(),
28886
29205
  buttonVariant: registrationButtonVariantSchema.optional(),
28887
- overlayEnabled: z47.boolean().optional(),
28888
- spamProtectionEnabled: z47.boolean().optional(),
28889
- supportEmail: z47.string().optional(),
29206
+ overlayEnabled: z48.boolean().optional(),
29207
+ spamProtectionEnabled: z48.boolean().optional(),
29208
+ supportEmail: z48.string().optional(),
28890
29209
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
28891
29210
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
28892
29211
  });
28893
- var eventRegistrationRenderSchema = z47.object({
29212
+ var eventRegistrationRenderSchema = z48.object({
28894
29213
  display: eventRegistrationDisplaySchema,
28895
29214
  hydration: eventRegistrationHydrationSchema
28896
29215
  });
28897
- var eventRegistrationIslandMetaCodec = createZodCodec(z47.object({
28898
- siteId: z47.string().optional(),
28899
- apiBaseUrl: z47.string().optional(),
28900
- portalToken: z47.string().nullable().optional(),
28901
- previewToken: z47.string().nullable().optional(),
29216
+ var eventRegistrationIslandMetaCodec = createZodCodec(z48.object({
29217
+ siteId: z48.string().optional(),
29218
+ apiBaseUrl: z48.string().optional(),
29219
+ portalToken: z48.string().nullable().optional(),
29220
+ previewToken: z48.string().nullable().optional(),
28902
29221
  stage: previewStageSchema.optional()
28903
29222
  }));
28904
29223
  var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -29249,73 +29568,73 @@ var eventRegistrationBlockDefinition = {
29249
29568
  };
29250
29569
 
29251
29570
  // ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
29252
- import { z as z48 } from "zod";
29253
- var contentEntrySchema2 = z48.object({
29254
- id: z48.string(),
29255
- slug: z48.string(),
29256
- contentTypeSlug: z48.string()
29257
- });
29258
- var courseEntrySubrouteContextSchema = z48.union([
29259
- z48.object({
29260
- kind: z48.literal("course-run"),
29261
- run: z48.object({
29262
- courseId: z48.string(),
29263
- seriesId: z48.string(),
29264
- runSlug: z48.string(),
29265
- runName: z48.string().nullable()
29571
+ import { z as z49 } from "zod";
29572
+ var contentEntrySchema2 = z49.object({
29573
+ id: z49.string(),
29574
+ slug: z49.string(),
29575
+ contentTypeSlug: z49.string()
29576
+ });
29577
+ var courseEntrySubrouteContextSchema = z49.union([
29578
+ z49.object({
29579
+ kind: z49.literal("course-run"),
29580
+ run: z49.object({
29581
+ courseId: z49.string(),
29582
+ seriesId: z49.string(),
29583
+ runSlug: z49.string(),
29584
+ runName: z49.string().nullable()
29266
29585
  })
29267
29586
  }),
29268
- z48.object({
29269
- kind: z48.literal("event-occurrence"),
29587
+ z49.object({
29588
+ kind: z49.literal("event-occurrence"),
29270
29589
  occurrence: occurrenceContextSchema
29271
29590
  })
29272
29591
  ]);
29273
- var courseRegistrationSourceSchema = z48.object({
29274
- siteId: z48.string().optional(),
29275
- apiBaseUrl: z48.string().optional(),
29276
- portalToken: z48.string().nullable().optional(),
29592
+ var courseRegistrationSourceSchema = z49.object({
29593
+ siteId: z49.string().optional(),
29594
+ apiBaseUrl: z49.string().optional(),
29595
+ portalToken: z49.string().nullable().optional(),
29277
29596
  contentEntry: contentEntrySchema2.nullable().optional(),
29278
29597
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
29279
- courses: z48.array(publicCourseSchema).nullable().optional(),
29280
- className: z48.string().nullable().optional(),
29281
- showSessions: z48.boolean().optional(),
29282
- showPrice: z48.boolean().optional(),
29283
- showCapacity: z48.boolean().optional(),
29284
- showVenue: z48.boolean().optional(),
29285
- successMessage: z48.string().optional(),
29286
- waitlistMessage: z48.string().optional(),
29287
- membershipMessage: z48.string().optional(),
29288
- buttonText: z48.string().nullable().optional(),
29598
+ courses: z49.array(publicCourseSchema).nullable().optional(),
29599
+ className: z49.string().nullable().optional(),
29600
+ showSessions: z49.boolean().optional(),
29601
+ showPrice: z49.boolean().optional(),
29602
+ showCapacity: z49.boolean().optional(),
29603
+ showVenue: z49.boolean().optional(),
29604
+ successMessage: z49.string().optional(),
29605
+ waitlistMessage: z49.string().optional(),
29606
+ membershipMessage: z49.string().optional(),
29607
+ buttonText: z49.string().nullable().optional(),
29289
29608
  buttonVariant: registrationButtonVariantSchema.optional(),
29290
29609
  stage: previewStageSchema.optional()
29291
29610
  });
29292
- var courseRegistrationDisplaySchema = z48.object({
29293
- kind: z48.literal("course-registration"),
29294
- state: z48.literal("shell"),
29295
- className: z48.string().nullable(),
29296
- summaryButtonText: z48.string()
29611
+ var courseRegistrationDisplaySchema = z49.object({
29612
+ kind: z49.literal("course-registration"),
29613
+ state: z49.literal("shell"),
29614
+ className: z49.string().nullable(),
29615
+ summaryButtonText: z49.string()
29297
29616
  });
29298
- var courseRegistrationHydrationSchema = z48.object({
29617
+ var courseRegistrationHydrationSchema = z49.object({
29299
29618
  contentEntry: contentEntrySchema2.nullable().optional(),
29300
29619
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
29301
- courses: z48.array(publicCourseSchema).nullable().optional(),
29302
- showSessions: z48.boolean().optional(),
29303
- showPrice: z48.boolean().optional(),
29304
- showCapacity: z48.boolean().optional(),
29305
- showVenue: z48.boolean().optional(),
29306
- successMessage: z48.string().optional(),
29307
- waitlistMessage: z48.string().optional(),
29308
- membershipMessage: z48.string().optional(),
29620
+ courses: z49.array(publicCourseSchema).nullable().optional(),
29621
+ showSessions: z49.boolean().optional(),
29622
+ showPrice: z49.boolean().optional(),
29623
+ showCapacity: z49.boolean().optional(),
29624
+ showVenue: z49.boolean().optional(),
29625
+ successMessage: z49.string().optional(),
29626
+ waitlistMessage: z49.string().optional(),
29627
+ membershipMessage: z49.string().optional(),
29309
29628
  buttonVariant: registrationButtonVariantSchema.optional()
29310
29629
  });
29311
- var courseRegistrationRenderSchema = z48.object({
29630
+ var courseRegistrationRenderSchema = z49.object({
29312
29631
  display: courseRegistrationDisplaySchema,
29313
29632
  hydration: courseRegistrationHydrationSchema
29314
29633
  });
29315
- var courseRegistrationIslandMetaCodec = createZodCodec(z48.object({
29316
- siteId: z48.string().optional(),
29317
- apiBaseUrl: z48.string().optional(),
29318
- portalToken: z48.string().nullable().optional(),
29634
+ var courseRegistrationIslandMetaCodec = createZodCodec(z49.object({
29635
+ siteId: z49.string().optional(),
29636
+ apiBaseUrl: z49.string().optional(),
29637
+ portalToken: z49.string().nullable().optional(),
29319
29638
  stage: previewStageSchema.optional()
29320
29639
  }));
29321
29640
  var courseRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -29575,7 +29894,7 @@ var courseRegistrationBlockDefinition = {
29575
29894
  };
29576
29895
 
29577
29896
  // ../blocks/src/system/blocks/event-details.ts
29578
- import { z as z49 } from "zod";
29897
+ import { z as z50 } from "zod";
29579
29898
  var eventDetailsManifest = createBlockManifest({
29580
29899
  id: "block.event-details",
29581
29900
  version: "1.0.0",
@@ -29707,37 +30026,37 @@ var eventDetailsManifest = createBlockManifest({
29707
30026
  })
29708
30027
  ]
29709
30028
  });
29710
- var occurrenceContextSchema2 = z49.object({
29711
- id: z49.string(),
29712
- seriesId: z49.string(),
29713
- startsAt: z49.string(),
29714
- endsAt: z49.string(),
29715
- timeZone: z49.string(),
29716
- capacityOverride: z49.number().nullable().optional(),
29717
- overrides: z49.record(z49.string(), z49.unknown()).nullable().optional()
30029
+ var occurrenceContextSchema2 = z50.object({
30030
+ id: z50.string(),
30031
+ seriesId: z50.string(),
30032
+ startsAt: z50.string(),
30033
+ endsAt: z50.string(),
30034
+ timeZone: z50.string(),
30035
+ capacityOverride: z50.number().nullable().optional(),
30036
+ overrides: z50.record(z50.string(), z50.unknown()).nullable().optional()
29718
30037
  }).nullable();
29719
- var eventAutoApplyDiscountPreviewBaseSchema = z49.object({
29720
- id: z49.string(),
29721
- publicLabel: z49.string(),
29722
- description: z49.string().nullable(),
29723
- minTicketsRequired: z49.number().nullable()
30038
+ var eventAutoApplyDiscountPreviewBaseSchema = z50.object({
30039
+ id: z50.string(),
30040
+ publicLabel: z50.string(),
30041
+ description: z50.string().nullable(),
30042
+ minTicketsRequired: z50.number().nullable()
29724
30043
  });
29725
- var eventAutoApplyDiscountPreviewSchema = z49.discriminatedUnion("discountType", [
30044
+ var eventAutoApplyDiscountPreviewSchema = z50.discriminatedUnion("discountType", [
29726
30045
  eventAutoApplyDiscountPreviewBaseSchema.extend({
29727
- discountType: z49.literal("percent"),
29728
- discountPercent: z49.number(),
29729
- discountAmountCents: z49.null()
30046
+ discountType: z50.literal("percent"),
30047
+ discountPercent: z50.number(),
30048
+ discountAmountCents: z50.null()
29730
30049
  }),
29731
30050
  eventAutoApplyDiscountPreviewBaseSchema.extend({
29732
- discountType: z49.literal("fixed"),
29733
- discountPercent: z49.null(),
29734
- discountAmountCents: z49.number()
30051
+ discountType: z50.literal("fixed"),
30052
+ discountPercent: z50.null(),
30053
+ discountAmountCents: z50.number()
29735
30054
  })
29736
30055
  ]);
29737
30056
  var eventDetailsBlockDefinition = {
29738
30057
  manifest: eventDetailsManifest,
29739
30058
  dataSchemas: {
29740
- eventDetailsData: z49.object({
30059
+ eventDetailsData: z50.object({
29741
30060
  events: publicEventsArraySchema,
29742
30061
  sitePasses: publicPassProductCollectionSchema,
29743
30062
  siteMemberships: publicMembershipProductCollectionSchema,
@@ -29992,18 +30311,7 @@ var eventSpotlightFields = [
29992
30311
  var eventSpotlightLayout = [
29993
30312
  styledSection({
29994
30313
  children: sectionContainer([
29995
- // Optional heading
29996
- text(
29997
- { as: "h2" },
29998
- bind("content.heading"),
29999
- when("content.heading")
30000
- ),
30001
- // Optional description
30002
- richText(
30003
- { className: "rb-prose rb-max-w-none" },
30004
- bind("content.description"),
30005
- when("content.description")
30006
- ),
30314
+ ...eventSectionHeaderLayoutNodes(),
30007
30315
  // Event spotlight component
30008
30316
  el("event-spotlight", {
30009
30317
  events: { $bind: { from: "data.events" } },
@@ -30064,7 +30372,7 @@ var eventSpotlightBlockDefinition = {
30064
30372
  };
30065
30373
 
30066
30374
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
30067
- import { z as z51 } from "zod";
30375
+ import { z as z52 } from "zod";
30068
30376
 
30069
30377
  // ../blocks/src/system/runtime/nodes/events/shared/utils.ts
30070
30378
  var COLUMN_CLASSES = {
@@ -30172,16 +30480,16 @@ function computeMediaTransformStyle(value, style, targetAspectRatio, options) {
30172
30480
  }
30173
30481
 
30174
30482
  // ../blocks/src/system/runtime/nodes/events/shared/listOptions.ts
30175
- import { z as z50 } from "zod";
30483
+ import { z as z51 } from "zod";
30176
30484
  var eventPageSizeValues = [3, 6, 10, 12, 20, 24, 30];
30177
- var eventPageSizeSchema = z50.union([
30178
- z50.literal(3),
30179
- z50.literal(6),
30180
- z50.literal(10),
30181
- z50.literal(12),
30182
- z50.literal(20),
30183
- z50.literal(24),
30184
- z50.literal(30)
30485
+ var eventPageSizeSchema = z51.union([
30486
+ z51.literal(3),
30487
+ z51.literal(6),
30488
+ z51.literal(10),
30489
+ z51.literal(12),
30490
+ z51.literal(20),
30491
+ z51.literal(24),
30492
+ z51.literal(30)
30185
30493
  ]);
30186
30494
  var eventPageSizeSet = new Set(eventPageSizeValues);
30187
30495
  function resolveEventPageSize(value, fallback = 12) {
@@ -30191,15 +30499,15 @@ function resolveEventPageSize(value, fallback = 12) {
30191
30499
  function resolveEventCalendarListPageSize(input) {
30192
30500
  return resolveEventPageSize(input.eventsPerPage);
30193
30501
  }
30194
- var eventListPaginationActionSchema = z50.discriminatedUnion("kind", [
30195
- z50.object({
30196
- kind: z50.literal("loadMore"),
30197
- label: z50.string()
30502
+ var eventListPaginationActionSchema = z51.discriminatedUnion("kind", [
30503
+ z51.object({
30504
+ kind: z51.literal("loadMore"),
30505
+ label: z51.string()
30198
30506
  }),
30199
- z50.object({
30200
- kind: z50.literal("seeAllLink"),
30201
- label: z50.string(),
30202
- href: z50.string()
30507
+ z51.object({
30508
+ kind: z51.literal("seeAllLink"),
30509
+ label: z51.string(),
30510
+ href: z51.string()
30203
30511
  })
30204
30512
  ]);
30205
30513
  function resolveEventListPaginationAction(input) {
@@ -30212,89 +30520,89 @@ function resolveEventListPaginationAction(input) {
30212
30520
  }
30213
30521
 
30214
30522
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
30215
- var legacyEventCardVariantSchema = z51.enum(["variant1", "variant2"]);
30216
- var eventCardVariantInputSchema = z51.union([
30523
+ var legacyEventCardVariantSchema = z52.enum(["variant1", "variant2"]);
30524
+ var eventCardVariantInputSchema = z52.union([
30217
30525
  cardVariantRoleSchema,
30218
30526
  legacyEventCardVariantSchema
30219
30527
  ]);
30220
- var cardOrientationSchema = z51.enum(["vertical", "horizontal"]);
30221
- var eventBlockKindSchema = z51.enum(eventBlockKindValues);
30222
- var eventSurfaceScopeSchema = z51.enum(eventSurfaceScopeValues);
30223
- var eventScheduleScopeSchema2 = z51.enum(eventScheduleScopeValues);
30224
- var eventListingSourceSchema = z51.object({
30225
- events: z51.array(publicEventSchema).nullable().optional(),
30226
- siteId: z51.string(),
30227
- apiBaseUrl: z51.string().optional(),
30528
+ var cardOrientationSchema = z52.enum(["vertical", "horizontal"]);
30529
+ var eventBlockKindSchema = z52.enum(eventBlockKindValues);
30530
+ var eventSurfaceScopeSchema = z52.enum(eventSurfaceScopeValues);
30531
+ var eventScheduleScopeSchema2 = z52.enum(eventScheduleScopeValues);
30532
+ var eventListingSourceSchema = z52.object({
30533
+ events: z52.array(publicEventSchema).nullable().optional(),
30534
+ siteId: z52.string(),
30535
+ apiBaseUrl: z52.string().optional(),
30228
30536
  stage: previewStageSchema.optional(),
30229
30537
  layout: eventLayoutSchema.optional(),
30230
30538
  columns: columnOptionSchema.optional(),
30231
- eventsPerPage: z51.string().optional(),
30232
- paginationMode: z51.enum(["loadMore", "seeAllLink"]).optional(),
30233
- seeAllUrl: z51.string().optional(),
30234
- loadMoreText: z51.string().optional(),
30539
+ eventsPerPage: z52.string().optional(),
30540
+ paginationMode: z52.enum(["loadMore", "seeAllLink"]).optional(),
30541
+ seeAllUrl: z52.string().optional(),
30542
+ loadMoreText: z52.string().optional(),
30235
30543
  cardVariant: eventCardVariantInputSchema.optional(),
30236
30544
  buttonVariant: eventButtonVariantSchema.optional(),
30237
- buttonText: z51.string().optional(),
30238
- showVenue: z51.boolean().optional(),
30239
- showMap: z51.boolean().optional(),
30240
- showCapacity: z51.boolean().optional(),
30241
- emptyMessage: z51.string().optional(),
30242
- className: z51.string().optional(),
30243
- showFilters: z51.boolean().nullable().optional(),
30545
+ buttonText: z52.string().optional(),
30546
+ showVenue: z52.boolean().optional(),
30547
+ showMap: z52.boolean().optional(),
30548
+ showCapacity: z52.boolean().optional(),
30549
+ emptyMessage: z52.string().optional(),
30550
+ className: z52.string().optional(),
30551
+ showFilters: z52.boolean().nullable().optional(),
30244
30552
  showCategoryFilter: filterAutoShowSchema.optional(),
30245
- showVenueFilter: z51.boolean().nullable().optional(),
30246
- showStaffFilter: z51.boolean().nullable().optional(),
30553
+ showVenueFilter: z52.boolean().nullable().optional(),
30554
+ showStaffFilter: z52.boolean().nullable().optional(),
30247
30555
  eventKind: eventBlockKindSchema.nullable().optional(),
30248
30556
  eventSurface: eventSurfaceScopeSchema.nullable().optional(),
30249
- filterEventPresets: z51.union([z51.string(), z51.array(z51.string())]).nullable().optional(),
30557
+ filterEventPresets: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
30250
30558
  scheduleScope: eventScheduleScopeSchema2.nullable().optional(),
30251
- filterCategoryIds: z51.string().nullable().optional(),
30252
- filterStaffMemberId: z51.string().nullable().optional(),
30253
- filterVenueId: z51.string().nullable().optional()
30559
+ filterCategoryIds: z52.string().nullable().optional(),
30560
+ filterStaffMemberId: z52.string().nullable().optional(),
30561
+ filterVenueId: z52.string().nullable().optional()
30254
30562
  });
30255
- var eventListingDisplaySchema = z51.object({
30256
- kind: z51.literal("event-listing"),
30257
- state: z51.enum(["loading", "empty", "ready"]),
30563
+ var eventListingDisplaySchema = z52.object({
30564
+ kind: z52.literal("event-listing"),
30565
+ state: z52.enum(["loading", "empty", "ready"]),
30258
30566
  listLayout: eventLayoutSchema,
30259
- className: z51.string().nullable(),
30260
- emptyMessage: z51.string(),
30261
- loadingMessage: z51.string(),
30262
- containerClass: z51.string(),
30567
+ className: z52.string().nullable(),
30568
+ emptyMessage: z52.string(),
30569
+ loadingMessage: z52.string(),
30570
+ containerClass: z52.string(),
30263
30571
  cardVariant: cardVariantRoleSchema,
30264
30572
  buttonVariant: eventButtonVariantSchema,
30265
- buttonText: z51.string(),
30266
- showVenue: z51.boolean(),
30267
- showMap: z51.boolean(),
30268
- showCapacity: z51.boolean(),
30573
+ buttonText: z52.string(),
30574
+ showVenue: z52.boolean(),
30575
+ showMap: z52.boolean(),
30576
+ showCapacity: z52.boolean(),
30269
30577
  orientation: cardOrientationSchema,
30270
- events: z51.array(publicEventSchema)
30578
+ events: z52.array(publicEventSchema)
30271
30579
  });
30272
- var eventListingHydrationSchema = z51.object({
30273
- siteId: z51.string(),
30580
+ var eventListingHydrationSchema = z52.object({
30581
+ siteId: z52.string(),
30274
30582
  stage: previewStageSchema.optional(),
30275
30583
  eventsPerPage: eventPageSizeSchema,
30276
30584
  paginationAction: eventListPaginationActionSchema,
30277
- showFilters: z51.boolean(),
30585
+ showFilters: z52.boolean(),
30278
30586
  showCategoryFilter: filterAutoShowSchema,
30279
- showVenueFilter: z51.boolean(),
30280
- showStaffFilter: z51.boolean(),
30587
+ showVenueFilter: z52.boolean(),
30588
+ showStaffFilter: z52.boolean(),
30281
30589
  eventKind: eventBlockKindSchema,
30282
30590
  eventSurface: eventSurfaceScopeSchema,
30283
- filterEventPresets: z51.string().nullable(),
30591
+ filterEventPresets: z52.string().nullable(),
30284
30592
  scheduleScope: eventScheduleScopeSchema2,
30285
- filterCategoryIds: z51.string().nullable().optional(),
30286
- filterStaffMemberId: z51.string().nullable().optional(),
30287
- filterVenueId: z51.string().nullable().optional(),
30288
- fetchInitialEventsOnMount: z51.boolean()
30593
+ filterCategoryIds: z52.string().nullable().optional(),
30594
+ filterStaffMemberId: z52.string().nullable().optional(),
30595
+ filterVenueId: z52.string().nullable().optional(),
30596
+ fetchInitialEventsOnMount: z52.boolean()
30289
30597
  });
30290
- var eventListingRenderSchema = z51.object({
30598
+ var eventListingRenderSchema = z52.object({
30291
30599
  display: eventListingDisplaySchema,
30292
30600
  hydration: eventListingHydrationSchema
30293
30601
  });
30294
30602
  var eventListingIslandMetaCodec = createZodCodec(
30295
- z51.object({
30296
- siteId: z51.string(),
30297
- apiBaseUrl: z51.string().optional(),
30603
+ z52.object({
30604
+ siteId: z52.string(),
30605
+ apiBaseUrl: z52.string().optional(),
30298
30606
  stage: previewStageSchema.optional()
30299
30607
  })
30300
30608
  );
@@ -30534,18 +30842,7 @@ var eventListingAdditionalFields = [
30534
30842
  var eventListingLayout = [
30535
30843
  styledSection({
30536
30844
  children: sectionContainer([
30537
- // Optional heading
30538
- text(
30539
- { as: "h2" },
30540
- bind("content.heading"),
30541
- when("content.heading")
30542
- ),
30543
- // Optional description
30544
- richText(
30545
- { className: "rb-prose rb-max-w-none" },
30546
- bind("content.description"),
30547
- when("content.description")
30548
- ),
30845
+ ...eventSectionHeaderLayoutNodes(),
30549
30846
  // Event listing component with pagination
30550
30847
  el("event-listing", withApiBindings({
30551
30848
  events: { $bind: { from: "data.events" } },
@@ -30661,15 +30958,15 @@ var eventListingBlockDefinition = {
30661
30958
  };
30662
30959
 
30663
30960
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
30664
- import { z as z52 } from "zod";
30665
- var eventBlockKindSchema2 = z52.enum(eventBlockKindValues);
30666
- var eventSurfaceScopeSchema2 = z52.enum(eventSurfaceScopeValues);
30667
- var eventScheduleScopeSchema3 = z52.enum(eventScheduleScopeValues);
30668
- var eventCalendarSourceSchema = z52.object(
30961
+ import { z as z53 } from "zod";
30962
+ var eventBlockKindSchema2 = z53.enum(eventBlockKindValues);
30963
+ var eventSurfaceScopeSchema2 = z53.enum(eventSurfaceScopeValues);
30964
+ var eventScheduleScopeSchema3 = z53.enum(eventScheduleScopeValues);
30965
+ var eventCalendarSourceSchema = z53.object(
30669
30966
  {
30670
- events: z52.array(publicEventSchema).nullable().optional(),
30671
- siteId: z52.string(),
30672
- apiBaseUrl: z52.string().optional(),
30967
+ events: z53.array(publicEventSchema).nullable().optional(),
30968
+ siteId: z53.string(),
30969
+ apiBaseUrl: z53.string().optional(),
30673
30970
  stage: previewStageSchema.optional(),
30674
30971
  variant: eventCalendarDisplayModeSchema.nullable().optional(),
30675
30972
  displayMode: eventCalendarDisplayModeSchema.nullable().optional(),
@@ -30677,38 +30974,38 @@ var eventCalendarSourceSchema = z52.object(
30677
30974
  listColumns: columnOptionSchema.optional(),
30678
30975
  layout: eventLayoutSchema.optional(),
30679
30976
  columns: columnOptionSchema.optional(),
30680
- eventsPerPage: z52.string().optional(),
30681
- paginationMode: z52.enum(["loadMore", "seeAllLink"]).optional(),
30682
- seeAllUrl: z52.string().optional(),
30683
- loadMoreText: z52.string().optional(),
30977
+ eventsPerPage: z53.string().optional(),
30978
+ paginationMode: z53.enum(["loadMore", "seeAllLink"]).optional(),
30979
+ seeAllUrl: z53.string().optional(),
30980
+ loadMoreText: z53.string().optional(),
30684
30981
  startOfWeek: weekStartSchema.optional(),
30685
30982
  calendarTabViews: calendarTabViewsSchema.optional(),
30686
30983
  defaultCalendarView: eventCalendarDefaultViewSchema.optional(),
30687
- showFilters: z52.boolean().nullable().optional(),
30984
+ showFilters: z53.boolean().nullable().optional(),
30688
30985
  showCategoryFilter: filterAutoShowSchema.optional(),
30689
- showVenueFilter: z52.boolean().nullable().optional(),
30690
- showStaffFilter: z52.boolean().nullable().optional(),
30986
+ showVenueFilter: z53.boolean().nullable().optional(),
30987
+ showStaffFilter: z53.boolean().nullable().optional(),
30691
30988
  kind: eventBlockKindSchema2.nullable().optional(),
30692
30989
  eventSurface: eventSurfaceScopeSchema2.nullable().optional(),
30693
- filterEventPresets: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
30990
+ filterEventPresets: z53.union([z53.string(), z53.array(z53.string())]).nullable().optional(),
30694
30991
  scheduleScope: eventScheduleScopeSchema3.nullable().optional(),
30695
- filterCategoryIds: z52.union([z52.string(), z52.array(z52.string())]).nullable().optional(),
30696
- filterStaffMemberId: z52.string().nullable().optional(),
30697
- filterVenueId: z52.string().nullable().optional(),
30992
+ filterCategoryIds: z53.union([z53.string(), z53.array(z53.string())]).nullable().optional(),
30993
+ filterStaffMemberId: z53.string().nullable().optional(),
30994
+ filterVenueId: z53.string().nullable().optional(),
30698
30995
  buttonVariant: eventButtonVariantSchema.optional(),
30699
- buttonText: z52.string().optional(),
30700
- showVenue: z52.boolean().nullable().optional(),
30701
- showMap: z52.boolean().nullable().optional(),
30702
- showCapacity: z52.boolean().nullable().optional(),
30703
- emptyMessage: z52.string().optional(),
30704
- className: z52.string().optional()
30996
+ buttonText: z53.string().optional(),
30997
+ showVenue: z53.boolean().nullable().optional(),
30998
+ showMap: z53.boolean().nullable().optional(),
30999
+ showCapacity: z53.boolean().nullable().optional(),
31000
+ emptyMessage: z53.string().optional(),
31001
+ className: z53.string().optional()
30705
31002
  }
30706
31003
  );
30707
- var eventCalendarDisplaySchema = z52.object({
30708
- kind: z52.literal("event-calendar"),
31004
+ var eventCalendarDisplaySchema = z53.object({
31005
+ kind: z53.literal("event-calendar"),
30709
31006
  displayMode: eventCalendarDisplayModeSchema,
30710
- className: z52.string().nullable(),
30711
- events: z52.array(publicEventSchema),
31007
+ className: z53.string().nullable(),
31008
+ events: z53.array(publicEventSchema),
30712
31009
  listLayout: eventLayoutSchema,
30713
31010
  listColumns: columnOptionSchema,
30714
31011
  eventsPerPage: eventPageSizeSchema,
@@ -30716,41 +31013,41 @@ var eventCalendarDisplaySchema = z52.object({
30716
31013
  startOfWeek: weekStartSchema,
30717
31014
  calendarTabViews: calendarTabViewsSchema,
30718
31015
  defaultCalendarView: eventCalendarDefaultViewSchema,
30719
- showFilters: z52.boolean(),
31016
+ showFilters: z53.boolean(),
30720
31017
  showCategoryFilter: filterAutoShowSchema,
30721
- showVenueFilter: z52.boolean(),
30722
- showStaffFilter: z52.boolean(),
31018
+ showVenueFilter: z53.boolean(),
31019
+ showStaffFilter: z53.boolean(),
30723
31020
  eventKind: eventBlockKindSchema2,
30724
31021
  eventSurface: eventSurfaceScopeSchema2,
30725
- filterEventPresets: z52.string().nullable(),
31022
+ filterEventPresets: z53.string().nullable(),
30726
31023
  scheduleScope: eventScheduleScopeSchema3,
30727
- filterCategoryIds: z52.string().nullable(),
30728
- filterStaffMemberId: z52.string().nullable(),
30729
- filterVenueId: z52.string().nullable(),
31024
+ filterCategoryIds: z53.string().nullable(),
31025
+ filterStaffMemberId: z53.string().nullable(),
31026
+ filterVenueId: z53.string().nullable(),
30730
31027
  buttonVariant: eventButtonVariantSchema,
30731
- buttonText: z52.string(),
30732
- showVenue: z52.boolean(),
30733
- showMap: z52.boolean(),
30734
- showCapacity: z52.boolean(),
30735
- emptyMessage: z52.string()
30736
- });
30737
- var eventCalendarHydrationSchema = z52.object({
30738
- siteId: z52.string(),
31028
+ buttonText: z53.string(),
31029
+ showVenue: z53.boolean(),
31030
+ showMap: z53.boolean(),
31031
+ showCapacity: z53.boolean(),
31032
+ emptyMessage: z53.string()
31033
+ });
31034
+ var eventCalendarHydrationSchema = z53.object({
31035
+ siteId: z53.string(),
30739
31036
  stage: previewStageSchema.optional(),
30740
- prefetchedEvents: z52.boolean(),
31037
+ prefetchedEvents: z53.boolean(),
30741
31038
  eventKind: eventBlockKindSchema2,
30742
31039
  eventSurface: eventSurfaceScopeSchema2,
30743
- filterEventPresets: z52.string().nullable(),
31040
+ filterEventPresets: z53.string().nullable(),
30744
31041
  scheduleScope: eventScheduleScopeSchema3
30745
31042
  });
30746
- var eventCalendarRenderSchema = z52.object({
31043
+ var eventCalendarRenderSchema = z53.object({
30747
31044
  display: eventCalendarDisplaySchema,
30748
31045
  hydration: eventCalendarHydrationSchema
30749
31046
  });
30750
31047
  var eventCalendarIslandMetaCodec = createZodCodec(
30751
- z52.object({
30752
- siteId: z52.string(),
30753
- apiBaseUrl: z52.string().optional(),
31048
+ z53.object({
31049
+ siteId: z53.string(),
31050
+ apiBaseUrl: z53.string().optional(),
30754
31051
  stage: previewStageSchema.optional()
30755
31052
  })
30756
31053
  );
@@ -30870,14 +31167,7 @@ var eventCalendarLayout = [
30870
31167
  styledSection({
30871
31168
  children: sectionContainer(
30872
31169
  [
30873
- // Optional heading
30874
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
30875
- // Optional description
30876
- richText(
30877
- { className: "rb-prose rb-max-w-none" },
30878
- bind("content.description"),
30879
- when("content.description")
30880
- ),
31170
+ ...eventSectionHeaderLayoutNodes(),
30881
31171
  // Event calendar component (handles all display modes)
30882
31172
  el(
30883
31173
  "event-calendar",
@@ -31522,7 +31812,7 @@ var eventCalendarBlockDefinition = {
31522
31812
  };
31523
31813
 
31524
31814
  // ../blocks/src/system/blocks/offerings-preview/index.ts
31525
- import { z as z53 } from "zod";
31815
+ import { z as z54 } from "zod";
31526
31816
 
31527
31817
  // ../blocks/src/system/blocks/offerings-preview/model.ts
31528
31818
  var OFFERINGS_PREVIEW_DEFAULT_ITEM_LIMIT = "3";
@@ -31614,13 +31904,13 @@ function isRecord6(value) {
31614
31904
  }
31615
31905
 
31616
31906
  // ../blocks/src/system/blocks/offerings-preview/index.ts
31617
- var publicRouteCandidatesSchema = z53.object({
31618
- routes: z53.array(z53.object({
31619
- entityId: z53.string(),
31620
- path: z53.string(),
31621
- title: z53.string(),
31622
- kind: z53.enum(["page", "content"]),
31623
- contentTypeKey: z53.string().nullable().optional()
31907
+ var publicRouteCandidatesSchema = z54.object({
31908
+ routes: z54.array(z54.object({
31909
+ entityId: z54.string(),
31910
+ path: z54.string(),
31911
+ title: z54.string(),
31912
+ kind: z54.enum(["page", "content"]),
31913
+ contentTypeKey: z54.string().nullable().optional()
31624
31914
  }))
31625
31915
  });
31626
31916
  var groupOverrideFields = [
@@ -32018,7 +32308,7 @@ function isRecord7(value) {
32018
32308
  }
32019
32309
 
32020
32310
  // ../blocks/src/system/blocks/embed.ts
32021
- import { z as z54 } from "zod";
32311
+ import { z as z55 } from "zod";
32022
32312
  var embedFields = [
32023
32313
  // Section heading
32024
32314
  parseFieldDefinition({
@@ -32249,18 +32539,18 @@ var embedManifest = createBlockManifest({
32249
32539
  spacing: "lg"
32250
32540
  }
32251
32541
  });
32252
- var embedEntrySchema = z54.object({
32253
- id: z54.string(),
32254
- identifier: z54.string(),
32255
- title: z54.string(),
32256
- slug: z54.string().nullable().optional(),
32257
- content: z54.record(z54.string(), z54.unknown()).optional(),
32258
- publishedAt: z54.string().nullable().optional()
32542
+ var embedEntrySchema = z55.object({
32543
+ id: z55.string(),
32544
+ identifier: z55.string(),
32545
+ title: z55.string(),
32546
+ slug: z55.string().nullable().optional(),
32547
+ content: z55.record(z55.string(), z55.unknown()).optional(),
32548
+ publishedAt: z55.string().nullable().optional()
32259
32549
  });
32260
32550
  var embedBlockDefinition = {
32261
32551
  manifest: embedManifest,
32262
32552
  dataSchemas: {
32263
- entries: z54.array(embedEntrySchema).optional()
32553
+ entries: z55.array(embedEntrySchema).optional()
32264
32554
  },
32265
32555
  dataLoaders: {
32266
32556
  entries: {
@@ -33444,49 +33734,49 @@ var fileDownloadBlockDefinition = {
33444
33734
  };
33445
33735
 
33446
33736
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
33447
- import { z as z57 } from "zod";
33737
+ import { z as z58 } from "zod";
33448
33738
 
33449
33739
  // ../blocks/src/system/blocks/products/shared.ts
33450
- import { z as z55 } from "zod";
33451
- var publicProductVariantSchema = z55.object({
33452
- id: z55.string(),
33453
- title: z55.string(),
33454
- sku: z55.string().nullable(),
33455
- priceCents: z55.number(),
33456
- stockQuantity: z55.number().nullable(),
33457
- soldOut: z55.boolean()
33458
- });
33459
- var publicProductSchema = z55.object({
33460
- id: z55.string(),
33461
- contentEntryId: z55.string().nullable(),
33462
- title: z55.string(),
33463
- slug: z55.string(),
33464
- path: z55.string().nullable(),
33465
- status: z55.enum(["draft", "active"]),
33466
- priceCents: z55.number(),
33467
- currency: z55.string(),
33468
- productType: z55.enum(["physical", "digital"]),
33469
- requiresShipping: z55.boolean(),
33470
- hasVariants: z55.boolean(),
33471
- trackInventory: z55.boolean(),
33472
- soldOut: z55.boolean(),
33473
- category: z55.object({
33474
- id: z55.string(),
33475
- name: z55.string(),
33476
- slug: z55.string()
33740
+ import { z as z56 } from "zod";
33741
+ var publicProductVariantSchema = z56.object({
33742
+ id: z56.string(),
33743
+ title: z56.string(),
33744
+ sku: z56.string().nullable(),
33745
+ priceCents: z56.number(),
33746
+ stockQuantity: z56.number().nullable(),
33747
+ soldOut: z56.boolean()
33748
+ });
33749
+ var publicProductSchema = z56.object({
33750
+ id: z56.string(),
33751
+ contentEntryId: z56.string().nullable(),
33752
+ title: z56.string(),
33753
+ slug: z56.string(),
33754
+ path: z56.string().nullable(),
33755
+ status: z56.enum(["draft", "active"]),
33756
+ priceCents: z56.number(),
33757
+ currency: z56.string(),
33758
+ productType: z56.enum(["physical", "digital"]),
33759
+ requiresShipping: z56.boolean(),
33760
+ hasVariants: z56.boolean(),
33761
+ trackInventory: z56.boolean(),
33762
+ soldOut: z56.boolean(),
33763
+ category: z56.object({
33764
+ id: z56.string(),
33765
+ name: z56.string(),
33766
+ slug: z56.string()
33477
33767
  }).nullable(),
33478
- summary: z55.string().nullable(),
33479
- body: z55.unknown().nullable(),
33480
- gallery: z55.array(
33481
- z55.object({
33482
- url: z55.string(),
33483
- alt: z55.string().nullable()
33768
+ summary: z56.string().nullable(),
33769
+ body: z56.unknown().nullable(),
33770
+ gallery: z56.array(
33771
+ z56.object({
33772
+ url: z56.string(),
33773
+ alt: z56.string().nullable()
33484
33774
  })
33485
33775
  ),
33486
- variants: z55.array(publicProductVariantSchema)
33776
+ variants: z56.array(publicProductVariantSchema)
33487
33777
  });
33488
- var publicProductsResponseSchema = z55.object({
33489
- products: z55.array(publicProductSchema)
33778
+ var publicProductsResponseSchema = z56.object({
33779
+ products: z56.array(publicProductSchema)
33490
33780
  });
33491
33781
 
33492
33782
  // ../blocks/src/system/runtime/api/creditProducts.ts
@@ -33550,27 +33840,27 @@ function deriveCreditProductLabels(products, options = {}) {
33550
33840
  }
33551
33841
 
33552
33842
  // ../blocks/src/system/runtime/nodes/shop-commerce.shared.ts
33553
- import { z as z56 } from "zod";
33554
- var storedProductCartItemSchema = z56.object({
33555
- kind: z56.literal("product"),
33556
- productId: z56.string().min(1),
33557
- productCategoryId: z56.string().min(1).optional().nullable(),
33558
- variantId: z56.string().min(1).optional().nullable(),
33559
- title: z56.string().min(1),
33560
- variantTitle: z56.string().optional().nullable(),
33561
- quantity: z56.number().finite(),
33562
- unitPriceCents: z56.number().finite(),
33563
- currency: z56.string().min(1),
33564
- imageUrl: z56.string().optional().nullable(),
33565
- soldOut: z56.boolean().optional()
33566
- });
33567
- var storedPassCartItemSchema = z56.object({
33568
- kind: z56.literal("pass"),
33569
- passId: z56.string().min(1),
33570
- title: z56.string().min(1),
33571
- quantity: z56.number().finite().optional(),
33572
- unitPriceCents: z56.number().finite(),
33573
- currency: z56.string().min(1)
33843
+ import { z as z57 } from "zod";
33844
+ var storedProductCartItemSchema = z57.object({
33845
+ kind: z57.literal("product"),
33846
+ productId: z57.string().min(1),
33847
+ productCategoryId: z57.string().min(1).optional().nullable(),
33848
+ variantId: z57.string().min(1).optional().nullable(),
33849
+ title: z57.string().min(1),
33850
+ variantTitle: z57.string().optional().nullable(),
33851
+ quantity: z57.number().finite(),
33852
+ unitPriceCents: z57.number().finite(),
33853
+ currency: z57.string().min(1),
33854
+ imageUrl: z57.string().optional().nullable(),
33855
+ soldOut: z57.boolean().optional()
33856
+ });
33857
+ var storedPassCartItemSchema = z57.object({
33858
+ kind: z57.literal("pass"),
33859
+ passId: z57.string().min(1),
33860
+ title: z57.string().min(1),
33861
+ quantity: z57.number().finite().optional(),
33862
+ unitPriceCents: z57.number().finite(),
33863
+ currency: z57.string().min(1)
33574
33864
  });
33575
33865
  function deriveCommerceCheckoutState(state) {
33576
33866
  if (state.items.length === 0) {
@@ -33804,214 +34094,214 @@ function formatValidity(days) {
33804
34094
  }
33805
34095
 
33806
34096
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
33807
- var shopModeSchema = z57.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
33808
- var contentEntrySchema3 = z57.object({
33809
- id: z57.string().nullable().optional(),
33810
- slug: z57.string().nullable().optional()
34097
+ var shopModeSchema = z58.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
34098
+ var contentEntrySchema3 = z58.object({
34099
+ id: z58.string().nullable().optional(),
34100
+ slug: z58.string().nullable().optional()
33811
34101
  }).nullable();
33812
- var shopSourceSchema = z57.object({
33813
- className: z57.string().nullable().optional(),
34102
+ var shopSourceSchema = z58.object({
34103
+ className: z58.string().nullable().optional(),
33814
34104
  mode: shopModeSchema.optional(),
33815
- heading: z57.string().nullable().optional(),
33816
- productSlug: z57.string().nullable().optional(),
33817
- showPasses: z57.boolean().optional(),
33818
- showMemberships: z57.boolean().optional(),
33819
- layout: z57.enum(["grid", "list"]).optional(),
33820
- columns: z57.string().optional(),
33821
- showDescriptions: z57.boolean().optional(),
33822
- showSummary: z57.boolean().optional(),
33823
- showBody: z57.boolean().optional(),
33824
- showPrices: z57.boolean().optional(),
33825
- showValidityPeriod: z57.boolean().optional(),
33826
- showPricePerCredit: z57.boolean().nullable().optional(),
33827
- passesHeading: z57.string().optional(),
33828
- membershipsHeading: z57.string().optional(),
33829
- buyButtonText: z57.string().optional(),
33830
- addButtonText: z57.string().optional(),
33831
- passPurchaseMode: z57.enum(["add_to_cart", "buy_now"]).optional(),
33832
- subscribeButtonText: z57.string().optional(),
33833
- emptyStateText: z57.string().optional(),
33834
- checkoutButtonText: z57.string().optional(),
33835
- clearButtonText: z57.string().optional(),
33836
- submitButtonText: z57.string().optional(),
34105
+ heading: z58.string().nullable().optional(),
34106
+ productSlug: z58.string().nullable().optional(),
34107
+ showPasses: z58.boolean().optional(),
34108
+ showMemberships: z58.boolean().optional(),
34109
+ layout: z58.enum(["grid", "list"]).optional(),
34110
+ columns: z58.string().optional(),
34111
+ showDescriptions: z58.boolean().optional(),
34112
+ showSummary: z58.boolean().optional(),
34113
+ showBody: z58.boolean().optional(),
34114
+ showPrices: z58.boolean().optional(),
34115
+ showValidityPeriod: z58.boolean().optional(),
34116
+ showPricePerCredit: z58.boolean().nullable().optional(),
34117
+ passesHeading: z58.string().optional(),
34118
+ membershipsHeading: z58.string().optional(),
34119
+ buyButtonText: z58.string().optional(),
34120
+ addButtonText: z58.string().optional(),
34121
+ passPurchaseMode: z58.enum(["add_to_cart", "buy_now"]).optional(),
34122
+ subscribeButtonText: z58.string().optional(),
34123
+ emptyStateText: z58.string().optional(),
34124
+ checkoutButtonText: z58.string().optional(),
34125
+ clearButtonText: z58.string().optional(),
34126
+ submitButtonText: z58.string().optional(),
33837
34127
  contentEntry: contentEntrySchema3.optional(),
33838
- passes: z57.array(publicPassProductSchema).nullable().optional(),
33839
- memberships: z57.array(publicMembershipProductSchema).nullable().optional(),
33840
- products: z57.array(publicProductSchema).nullable().optional(),
33841
- siteId: z57.string().optional(),
33842
- apiBaseUrl: z57.string().optional(),
34128
+ passes: z58.array(publicPassProductSchema).nullable().optional(),
34129
+ memberships: z58.array(publicMembershipProductSchema).nullable().optional(),
34130
+ products: z58.array(publicProductSchema).nullable().optional(),
34131
+ siteId: z58.string().optional(),
34132
+ apiBaseUrl: z58.string().optional(),
33843
34133
  stage: previewStageSchema.optional()
33844
34134
  });
33845
- var productVariantOptionDisplaySchema = z57.object({
33846
- id: z57.string(),
33847
- label: z57.string(),
33848
- soldOut: z57.boolean()
33849
- });
33850
- var productCardDisplaySchema = z57.object({
33851
- productId: z57.string(),
33852
- title: z57.string(),
33853
- path: z57.string().nullable(),
33854
- summary: z57.string().nullable(),
33855
- priceLabel: z57.string().nullable(),
33856
- image: z57.object({
33857
- url: z57.string(),
33858
- alt: z57.string().nullable()
34135
+ var productVariantOptionDisplaySchema = z58.object({
34136
+ id: z58.string(),
34137
+ label: z58.string(),
34138
+ soldOut: z58.boolean()
34139
+ });
34140
+ var productCardDisplaySchema = z58.object({
34141
+ productId: z58.string(),
34142
+ title: z58.string(),
34143
+ path: z58.string().nullable(),
34144
+ summary: z58.string().nullable(),
34145
+ priceLabel: z58.string().nullable(),
34146
+ image: z58.object({
34147
+ url: z58.string(),
34148
+ alt: z58.string().nullable()
33859
34149
  }).nullable(),
33860
- variantOptions: z57.array(productVariantOptionDisplaySchema),
33861
- selectedVariantId: z57.string().nullable(),
33862
- selectionLabel: z57.string(),
33863
- actionLabel: z57.string(),
33864
- soldOut: z57.boolean()
33865
- });
33866
- var productListDisplaySchema = z57.object({
33867
- kind: z57.literal("product-list"),
33868
- state: z57.enum(["empty", "ready"]),
33869
- heading: z57.string().nullable(),
33870
- className: z57.string().nullable(),
33871
- layout: z57.enum(["grid", "list"]),
33872
- columns: z57.string(),
33873
- emptyMessage: z57.string(),
33874
- cards: z57.array(productCardDisplaySchema)
33875
- });
33876
- var productDetailDisplaySchema = z57.discriminatedUnion("state", [
33877
- z57.object({
33878
- kind: z57.literal("product-detail"),
33879
- state: z57.literal("empty"),
33880
- heading: z57.string().nullable(),
33881
- className: z57.string().nullable(),
33882
- emptyMessage: z57.string()
34150
+ variantOptions: z58.array(productVariantOptionDisplaySchema),
34151
+ selectedVariantId: z58.string().nullable(),
34152
+ selectionLabel: z58.string(),
34153
+ actionLabel: z58.string(),
34154
+ soldOut: z58.boolean()
34155
+ });
34156
+ var productListDisplaySchema = z58.object({
34157
+ kind: z58.literal("product-list"),
34158
+ state: z58.enum(["empty", "ready"]),
34159
+ heading: z58.string().nullable(),
34160
+ className: z58.string().nullable(),
34161
+ layout: z58.enum(["grid", "list"]),
34162
+ columns: z58.string(),
34163
+ emptyMessage: z58.string(),
34164
+ cards: z58.array(productCardDisplaySchema)
34165
+ });
34166
+ var productDetailDisplaySchema = z58.discriminatedUnion("state", [
34167
+ z58.object({
34168
+ kind: z58.literal("product-detail"),
34169
+ state: z58.literal("empty"),
34170
+ heading: z58.string().nullable(),
34171
+ className: z58.string().nullable(),
34172
+ emptyMessage: z58.string()
33883
34173
  }),
33884
- z57.object({
33885
- kind: z57.literal("product-detail"),
33886
- state: z57.literal("ready"),
33887
- heading: z57.string().nullable(),
33888
- className: z57.string().nullable(),
33889
- title: z57.string(),
33890
- priceLabel: z57.string(),
33891
- summary: z57.string().nullable(),
33892
- categoryLabel: z57.string().nullable(),
33893
- gallery: z57.array(z57.object({
33894
- url: z57.string(),
33895
- alt: z57.string().nullable()
34174
+ z58.object({
34175
+ kind: z58.literal("product-detail"),
34176
+ state: z58.literal("ready"),
34177
+ heading: z58.string().nullable(),
34178
+ className: z58.string().nullable(),
34179
+ title: z58.string(),
34180
+ priceLabel: z58.string(),
34181
+ summary: z58.string().nullable(),
34182
+ categoryLabel: z58.string().nullable(),
34183
+ gallery: z58.array(z58.object({
34184
+ url: z58.string(),
34185
+ alt: z58.string().nullable()
33896
34186
  })),
33897
- variantOptions: z57.array(productVariantOptionDisplaySchema),
33898
- selectedVariantId: z57.string().nullable(),
33899
- selectionLabel: z57.string(),
33900
- actionLabel: z57.string(),
33901
- soldOut: z57.boolean(),
33902
- body: z57.unknown().nullable()
34187
+ variantOptions: z58.array(productVariantOptionDisplaySchema),
34188
+ selectedVariantId: z58.string().nullable(),
34189
+ selectionLabel: z58.string(),
34190
+ actionLabel: z58.string(),
34191
+ soldOut: z58.boolean(),
34192
+ body: z58.unknown().nullable()
33903
34193
  })
33904
34194
  ]);
33905
- var passCardDisplaySchema = z57.object({
33906
- id: z57.string(),
33907
- title: z57.string(),
33908
- description: z57.string().nullable(),
33909
- priceLabel: z57.string(),
33910
- creditsLabel: z57.string(),
33911
- perCreditLabel: z57.string().nullable(),
33912
- validityLabel: z57.string().nullable(),
33913
- actionLabel: z57.string()
33914
- });
33915
- var membershipCardDisplaySchema = z57.object({
33916
- id: z57.string(),
33917
- title: z57.string(),
33918
- description: z57.string().nullable(),
33919
- priceLabel: z57.string(),
33920
- intervalLabel: z57.string(),
33921
- actionLabel: z57.string()
33922
- });
33923
- var passesMembershipsDisplaySchema = z57.object({
33924
- kind: z57.literal("passes-memberships"),
33925
- state: z57.enum(["empty", "ready"]),
33926
- className: z57.string().nullable(),
33927
- layout: z57.enum(["grid", "list"]),
33928
- columns: z57.string(),
33929
- emptyMessage: z57.string(),
33930
- passesHeading: z57.string(),
33931
- membershipsHeading: z57.string(),
33932
- passes: z57.array(passCardDisplaySchema),
33933
- memberships: z57.array(membershipCardDisplaySchema)
33934
- });
33935
- var cartLineDisplaySchema = z57.object({
33936
- key: z57.string(),
33937
- title: z57.string(),
33938
- priceLabel: z57.string(),
33939
- quantity: z57.number(),
33940
- quantityEditable: z57.boolean()
33941
- });
33942
- var cartDisplaySchema = z57.object({
33943
- kind: z57.literal("cart"),
33944
- state: z57.enum(["empty", "ready"]),
33945
- heading: z57.string().nullable(),
33946
- className: z57.string().nullable(),
33947
- emptyMessage: z57.string(),
33948
- supportText: z57.string().nullable(),
33949
- items: z57.array(cartLineDisplaySchema),
33950
- subtotalLabel: z57.string().nullable(),
33951
- checkoutButtonText: z57.string(),
33952
- clearButtonText: z57.string()
33953
- });
33954
- var checkoutDisplaySchema = z57.object({
33955
- kind: z57.literal("checkout"),
33956
- state: z57.enum(["empty", "blocked", "ready"]),
33957
- heading: z57.string().nullable(),
33958
- className: z57.string().nullable(),
33959
- message: z57.string().nullable(),
33960
- submitButtonText: z57.string()
33961
- });
33962
- var passesMembershipsHydrationSchema = z57.object({
33963
- passes: z57.array(publicPassProductSchema),
33964
- memberships: z57.array(publicMembershipProductSchema),
33965
- passPurchaseMode: z57.enum(["add_to_cart", "buy_now"])
33966
- });
33967
- var productListHydrationSchema = z57.object({
33968
- products: z57.array(publicProductSchema),
33969
- showSummary: z57.boolean(),
33970
- showPrices: z57.boolean(),
33971
- addButtonText: z57.string()
33972
- });
33973
- var productDetailHydrationSchema = z57.object({
33974
- products: z57.array(publicProductSchema),
33975
- productId: z57.string().nullable(),
33976
- showSummary: z57.boolean(),
33977
- showBody: z57.boolean(),
33978
- addButtonText: z57.string()
33979
- });
33980
- var cartHydrationSchema = z57.object({
33981
- emptyStateText: z57.string(),
33982
- checkoutButtonText: z57.string(),
33983
- clearButtonText: z57.string()
33984
- });
33985
- var checkoutHydrationSchema = z57.object({
33986
- emptyStateText: z57.string(),
33987
- submitButtonText: z57.string()
33988
- });
33989
- var passesMembershipsRenderSchema = z57.object({
34195
+ var passCardDisplaySchema = z58.object({
34196
+ id: z58.string(),
34197
+ title: z58.string(),
34198
+ description: z58.string().nullable(),
34199
+ priceLabel: z58.string(),
34200
+ creditsLabel: z58.string(),
34201
+ perCreditLabel: z58.string().nullable(),
34202
+ validityLabel: z58.string().nullable(),
34203
+ actionLabel: z58.string()
34204
+ });
34205
+ var membershipCardDisplaySchema = z58.object({
34206
+ id: z58.string(),
34207
+ title: z58.string(),
34208
+ description: z58.string().nullable(),
34209
+ priceLabel: z58.string(),
34210
+ intervalLabel: z58.string(),
34211
+ actionLabel: z58.string()
34212
+ });
34213
+ var passesMembershipsDisplaySchema = z58.object({
34214
+ kind: z58.literal("passes-memberships"),
34215
+ state: z58.enum(["empty", "ready"]),
34216
+ className: z58.string().nullable(),
34217
+ layout: z58.enum(["grid", "list"]),
34218
+ columns: z58.string(),
34219
+ emptyMessage: z58.string(),
34220
+ passesHeading: z58.string(),
34221
+ membershipsHeading: z58.string(),
34222
+ passes: z58.array(passCardDisplaySchema),
34223
+ memberships: z58.array(membershipCardDisplaySchema)
34224
+ });
34225
+ var cartLineDisplaySchema = z58.object({
34226
+ key: z58.string(),
34227
+ title: z58.string(),
34228
+ priceLabel: z58.string(),
34229
+ quantity: z58.number(),
34230
+ quantityEditable: z58.boolean()
34231
+ });
34232
+ var cartDisplaySchema = z58.object({
34233
+ kind: z58.literal("cart"),
34234
+ state: z58.enum(["empty", "ready"]),
34235
+ heading: z58.string().nullable(),
34236
+ className: z58.string().nullable(),
34237
+ emptyMessage: z58.string(),
34238
+ supportText: z58.string().nullable(),
34239
+ items: z58.array(cartLineDisplaySchema),
34240
+ subtotalLabel: z58.string().nullable(),
34241
+ checkoutButtonText: z58.string(),
34242
+ clearButtonText: z58.string()
34243
+ });
34244
+ var checkoutDisplaySchema = z58.object({
34245
+ kind: z58.literal("checkout"),
34246
+ state: z58.enum(["empty", "blocked", "ready"]),
34247
+ heading: z58.string().nullable(),
34248
+ className: z58.string().nullable(),
34249
+ message: z58.string().nullable(),
34250
+ submitButtonText: z58.string()
34251
+ });
34252
+ var passesMembershipsHydrationSchema = z58.object({
34253
+ passes: z58.array(publicPassProductSchema),
34254
+ memberships: z58.array(publicMembershipProductSchema),
34255
+ passPurchaseMode: z58.enum(["add_to_cart", "buy_now"])
34256
+ });
34257
+ var productListHydrationSchema = z58.object({
34258
+ products: z58.array(publicProductSchema),
34259
+ showSummary: z58.boolean(),
34260
+ showPrices: z58.boolean(),
34261
+ addButtonText: z58.string()
34262
+ });
34263
+ var productDetailHydrationSchema = z58.object({
34264
+ products: z58.array(publicProductSchema),
34265
+ productId: z58.string().nullable(),
34266
+ showSummary: z58.boolean(),
34267
+ showBody: z58.boolean(),
34268
+ addButtonText: z58.string()
34269
+ });
34270
+ var cartHydrationSchema = z58.object({
34271
+ emptyStateText: z58.string(),
34272
+ checkoutButtonText: z58.string(),
34273
+ clearButtonText: z58.string()
34274
+ });
34275
+ var checkoutHydrationSchema = z58.object({
34276
+ emptyStateText: z58.string(),
34277
+ submitButtonText: z58.string()
34278
+ });
34279
+ var passesMembershipsRenderSchema = z58.object({
33990
34280
  display: passesMembershipsDisplaySchema,
33991
34281
  hydration: passesMembershipsHydrationSchema
33992
34282
  });
33993
- var productListRenderSchema = z57.object({
34283
+ var productListRenderSchema = z58.object({
33994
34284
  display: productListDisplaySchema,
33995
34285
  hydration: productListHydrationSchema
33996
34286
  });
33997
- var productDetailRenderSchema = z57.object({
34287
+ var productDetailRenderSchema = z58.object({
33998
34288
  display: productDetailDisplaySchema,
33999
34289
  hydration: productDetailHydrationSchema
34000
34290
  });
34001
- var cartRenderSchema = z57.object({
34291
+ var cartRenderSchema = z58.object({
34002
34292
  display: cartDisplaySchema,
34003
34293
  hydration: cartHydrationSchema
34004
34294
  });
34005
- var checkoutRenderSchema = z57.object({
34295
+ var checkoutRenderSchema = z58.object({
34006
34296
  display: checkoutDisplaySchema,
34007
34297
  hydration: checkoutHydrationSchema
34008
34298
  });
34009
34299
  function resolveShowPricePerCredit(source) {
34010
34300
  return source.showPricePerCredit ?? true;
34011
34301
  }
34012
- var shopIslandMetaCodec = createZodCodec(z57.object({
34013
- siteId: z57.string().optional(),
34014
- apiBaseUrl: z57.string().optional(),
34302
+ var shopIslandMetaCodec = createZodCodec(z58.object({
34303
+ siteId: z58.string().optional(),
34304
+ apiBaseUrl: z58.string().optional(),
34015
34305
  stage: previewStageSchema.optional()
34016
34306
  }));
34017
34307
  var shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
@@ -34414,7 +34704,7 @@ var shopBlockDefinition = {
34414
34704
  };
34415
34705
 
34416
34706
  // ../blocks/src/system/blocks/product-list.ts
34417
- import { z as z58 } from "zod";
34707
+ import { z as z59 } from "zod";
34418
34708
  var productListManifest = createBlockManifest({
34419
34709
  id: "block.product-list",
34420
34710
  version: "1.0.0",
@@ -34547,7 +34837,7 @@ var productListBlockDefinition = {
34547
34837
  }
34548
34838
  }
34549
34839
  };
34550
- var productListDataSchema = z58.object({
34840
+ var productListDataSchema = z59.object({
34551
34841
  products: publicProductsResponseSchema.optional()
34552
34842
  });
34553
34843
 
@@ -34808,72 +35098,72 @@ var checkoutBlockDefinition = {
34808
35098
  };
34809
35099
 
34810
35100
  // ../blocks/src/system/runtime/nodes/gifting.interactive.ts
34811
- import { z as z59 } from "zod";
34812
- var publicGiftCardOfferSchema = z59.object({
34813
- id: z59.string(),
34814
- kind: z59.literal("gift_card"),
34815
- title: z59.string(),
34816
- description: z59.string().nullable(),
34817
- sortOrder: z59.number().int(),
34818
- giftCard: z59.object({
34819
- fixedDenominations: z59.array(z59.number().int().positive()),
34820
- customAmountEnabled: z59.boolean(),
34821
- customAmountMinCents: z59.number().int().positive(),
34822
- customAmountMaxCents: z59.number().int().positive()
35101
+ import { z as z60 } from "zod";
35102
+ var publicGiftCardOfferSchema = z60.object({
35103
+ id: z60.string(),
35104
+ kind: z60.literal("gift_card"),
35105
+ title: z60.string(),
35106
+ description: z60.string().nullable(),
35107
+ sortOrder: z60.number().int(),
35108
+ giftCard: z60.object({
35109
+ fixedDenominations: z60.array(z60.number().int().positive()),
35110
+ customAmountEnabled: z60.boolean(),
35111
+ customAmountMinCents: z60.number().int().positive(),
35112
+ customAmountMaxCents: z60.number().int().positive()
34823
35113
  }),
34824
- voucher: z59.null()
34825
- });
34826
- var publicVoucherOfferSchema = z59.object({
34827
- id: z59.string(),
34828
- kind: z59.literal("voucher"),
34829
- title: z59.string(),
34830
- description: z59.string().nullable(),
34831
- sortOrder: z59.number().int(),
34832
- giftCard: z59.null(),
34833
- voucher: z59.object({
34834
- purchaseAmountCents: z59.number().int().positive()
35114
+ voucher: z60.null()
35115
+ });
35116
+ var publicVoucherOfferSchema = z60.object({
35117
+ id: z60.string(),
35118
+ kind: z60.literal("voucher"),
35119
+ title: z60.string(),
35120
+ description: z60.string().nullable(),
35121
+ sortOrder: z60.number().int(),
35122
+ giftCard: z60.null(),
35123
+ voucher: z60.object({
35124
+ purchaseAmountCents: z60.number().int().positive()
34835
35125
  })
34836
35126
  });
34837
- var publicGiftingOffersResponseSchema = z59.object({
34838
- currency: z59.string(),
34839
- giftCards: z59.array(publicGiftCardOfferSchema),
34840
- vouchers: z59.array(publicVoucherOfferSchema)
35127
+ var publicGiftingOffersResponseSchema = z60.object({
35128
+ currency: z60.string(),
35129
+ giftCards: z60.array(publicGiftCardOfferSchema),
35130
+ vouchers: z60.array(publicVoucherOfferSchema)
34841
35131
  });
34842
- var giftingSourceSchema = z59.object({
34843
- siteId: z59.string().optional(),
34844
- apiBaseUrl: z59.string().optional(),
35132
+ var giftingSourceSchema = z60.object({
35133
+ siteId: z60.string().optional(),
35134
+ apiBaseUrl: z60.string().optional(),
34845
35135
  offers: publicGiftingOffersResponseSchema.nullable().optional(),
34846
- className: z59.string().nullable().optional(),
34847
- heading: z59.string().nullable().optional(),
34848
- intro: z59.string().nullable().optional(),
34849
- giftCardsHeading: z59.string().nullable().optional(),
34850
- vouchersHeading: z59.string().nullable().optional(),
34851
- emptyStateText: z59.string().nullable().optional(),
34852
- checkoutButtonText: z59.string().nullable().optional(),
34853
- successMessage: z59.string().nullable().optional()
34854
- });
34855
- var giftingDisplaySchema = z59.object({
34856
- kind: z59.literal("gifting"),
34857
- state: z59.literal("ready"),
34858
- className: z59.string().nullable(),
34859
- heading: z59.string(),
34860
- intro: z59.string().nullable(),
34861
- giftCardsHeading: z59.string(),
34862
- vouchersHeading: z59.string(),
34863
- emptyStateText: z59.string()
34864
- });
34865
- var giftingHydrationSchema = z59.object({
35136
+ className: z60.string().nullable().optional(),
35137
+ heading: z60.string().nullable().optional(),
35138
+ intro: z60.string().nullable().optional(),
35139
+ giftCardsHeading: z60.string().nullable().optional(),
35140
+ vouchersHeading: z60.string().nullable().optional(),
35141
+ emptyStateText: z60.string().nullable().optional(),
35142
+ checkoutButtonText: z60.string().nullable().optional(),
35143
+ successMessage: z60.string().nullable().optional()
35144
+ });
35145
+ var giftingDisplaySchema = z60.object({
35146
+ kind: z60.literal("gifting"),
35147
+ state: z60.literal("ready"),
35148
+ className: z60.string().nullable(),
35149
+ heading: z60.string(),
35150
+ intro: z60.string().nullable(),
35151
+ giftCardsHeading: z60.string(),
35152
+ vouchersHeading: z60.string(),
35153
+ emptyStateText: z60.string()
35154
+ });
35155
+ var giftingHydrationSchema = z60.object({
34866
35156
  offers: publicGiftingOffersResponseSchema.nullable(),
34867
- checkoutButtonText: z59.string(),
34868
- successMessage: z59.string()
35157
+ checkoutButtonText: z60.string(),
35158
+ successMessage: z60.string()
34869
35159
  });
34870
- var giftingRenderSchema = z59.object({
35160
+ var giftingRenderSchema = z60.object({
34871
35161
  display: giftingDisplaySchema,
34872
35162
  hydration: giftingHydrationSchema
34873
35163
  });
34874
- var giftingIslandMetaCodec = createZodCodec(z59.object({
34875
- siteId: z59.string().optional(),
34876
- apiBaseUrl: z59.string().optional()
35164
+ var giftingIslandMetaCodec = createZodCodec(z60.object({
35165
+ siteId: z60.string().optional(),
35166
+ apiBaseUrl: z60.string().optional()
34877
35167
  }));
34878
35168
  var giftingIslandMetaKeys = defineInteractiveIslandMetaKeys(
34879
35169
  "siteId",
@@ -35044,7 +35334,7 @@ var giftingBlockDefinition = {
35044
35334
  };
35045
35335
 
35046
35336
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
35047
- import { z as z60 } from "zod";
35337
+ import { z as z61 } from "zod";
35048
35338
 
35049
35339
  // ../blocks/src/system/blocks/newsletter-signup-destination.ts
35050
35340
  function parseNewsletterSignupBlockId(value) {
@@ -35151,65 +35441,65 @@ function withOptionalPhone(fields3, includePhone) {
35151
35441
  }
35152
35442
 
35153
35443
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
35154
- var newsletterPresetSchema = z60.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
35155
- var newsletterDestinationProviderSchema = z60.enum(["riverbank", "mailchimp"]);
35156
- var newsletterFieldSchema = z60.object({
35157
- id: z60.string(),
35158
- type: z60.enum(["email", "text"]),
35159
- label: z60.string(),
35160
- required: z60.boolean(),
35161
- placeholder: z60.string().optional()
35162
- });
35163
- var newsletterSignupBlockIdSchema = z60.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
35164
- var signedNewsletterDestinationRefSchema = z60.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
35165
- var newsletterPublicDestinationRefSchema = z60.discriminatedUnion("tag", [
35166
- z60.object({
35167
- tag: z60.literal("block_ref"),
35444
+ var newsletterPresetSchema = z61.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
35445
+ var newsletterDestinationProviderSchema = z61.enum(["riverbank", "mailchimp"]);
35446
+ var newsletterFieldSchema = z61.object({
35447
+ id: z61.string(),
35448
+ type: z61.enum(["email", "text"]),
35449
+ label: z61.string(),
35450
+ required: z61.boolean(),
35451
+ placeholder: z61.string().optional()
35452
+ });
35453
+ var newsletterSignupBlockIdSchema = z61.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
35454
+ var signedNewsletterDestinationRefSchema = z61.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
35455
+ var newsletterPublicDestinationRefSchema = z61.discriminatedUnion("tag", [
35456
+ z61.object({
35457
+ tag: z61.literal("block_ref"),
35168
35458
  blockId: newsletterSignupBlockIdSchema
35169
35459
  }),
35170
- z60.object({
35171
- tag: z60.literal("signed_destination_ref"),
35460
+ z61.object({
35461
+ tag: z61.literal("signed_destination_ref"),
35172
35462
  token: signedNewsletterDestinationRefSchema
35173
35463
  })
35174
35464
  ]);
35175
- var newsletterSourceSchema = z60.object({
35176
- blockId: z60.string().nullable().optional(),
35177
- siteId: z60.string().optional(),
35178
- apiBaseUrl: z60.string().optional(),
35179
- listId: z60.string().nullable().optional(),
35465
+ var newsletterSourceSchema = z61.object({
35466
+ blockId: z61.string().nullable().optional(),
35467
+ siteId: z61.string().optional(),
35468
+ apiBaseUrl: z61.string().optional(),
35469
+ listId: z61.string().nullable().optional(),
35180
35470
  destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
35181
35471
  preset: newsletterPresetSchema.optional(),
35182
- includePhone: z60.boolean().optional(),
35183
- buttonLabel: z60.string().nullable().optional(),
35184
- successMessage: z60.string().nullable().optional(),
35185
- privacyNote: z60.string().nullable().optional(),
35186
- tags: z60.string().nullable().optional(),
35187
- spamProtectionEnabled: z60.boolean().optional(),
35188
- className: z60.string().nullable().optional()
35189
- });
35190
- var newsletterDisplaySchema = z60.object({
35191
- kind: z60.literal("newsletter-form"),
35192
- className: z60.string().nullable(),
35193
- buttonLabel: z60.string(),
35194
- successMessage: z60.string().nullable(),
35195
- privacyNote: z60.string().nullable(),
35196
- fields: z60.array(newsletterFieldSchema)
35197
- });
35198
- var newsletterHydrationSchema = z60.object({
35472
+ includePhone: z61.boolean().optional(),
35473
+ buttonLabel: z61.string().nullable().optional(),
35474
+ successMessage: z61.string().nullable().optional(),
35475
+ privacyNote: z61.string().nullable().optional(),
35476
+ tags: z61.string().nullable().optional(),
35477
+ spamProtectionEnabled: z61.boolean().optional(),
35478
+ className: z61.string().nullable().optional()
35479
+ });
35480
+ var newsletterDisplaySchema = z61.object({
35481
+ kind: z61.literal("newsletter-form"),
35482
+ className: z61.string().nullable(),
35483
+ buttonLabel: z61.string(),
35484
+ successMessage: z61.string().nullable(),
35485
+ privacyNote: z61.string().nullable(),
35486
+ fields: z61.array(newsletterFieldSchema)
35487
+ });
35488
+ var newsletterHydrationSchema = z61.object({
35199
35489
  destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
35200
- listId: z60.string().nullable().optional(),
35490
+ listId: z61.string().nullable().optional(),
35201
35491
  preset: newsletterPresetSchema,
35202
- includePhone: z60.boolean(),
35203
- tags: z60.string().nullable().optional(),
35204
- spamProtectionEnabled: z60.boolean().optional()
35492
+ includePhone: z61.boolean(),
35493
+ tags: z61.string().nullable().optional(),
35494
+ spamProtectionEnabled: z61.boolean().optional()
35205
35495
  });
35206
- var newsletterRenderSchema = z60.object({
35496
+ var newsletterRenderSchema = z61.object({
35207
35497
  display: newsletterDisplaySchema,
35208
35498
  hydration: newsletterHydrationSchema
35209
35499
  });
35210
- var newsletterIslandMetaCodec = createZodCodec(z60.object({
35211
- siteId: z60.string().optional(),
35212
- apiBaseUrl: z60.string().optional()
35500
+ var newsletterIslandMetaCodec = createZodCodec(z61.object({
35501
+ siteId: z61.string().optional(),
35502
+ apiBaseUrl: z61.string().optional()
35213
35503
  }));
35214
35504
  var newsletterIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
35215
35505
  function buildNewsletterDisplay(source) {
@@ -35348,23 +35638,23 @@ var newsletterSignupBlockDefinition = {
35348
35638
  };
35349
35639
 
35350
35640
  // ../blocks/src/system/blocks/team-members.ts
35351
- import { z as z61 } from "zod";
35641
+ import { z as z62 } from "zod";
35352
35642
  var ITEM_NAME2 = "member";
35353
35643
  var teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
35354
35644
  message: "Team member photos must be image media"
35355
35645
  }).nullable();
35356
- var teamMemberDataSchema = z61.object({
35357
- _type: z61.literal("teamMember"),
35358
- id: z61.string(),
35359
- name: z61.string(),
35360
- role: z61.string().nullable(),
35361
- roleLabel: z61.string().nullable(),
35362
- bio: z61.string().nullable(),
35363
- summary: z61.string().nullable(),
35646
+ var teamMemberDataSchema = z62.object({
35647
+ _type: z62.literal("teamMember"),
35648
+ id: z62.string(),
35649
+ name: z62.string(),
35650
+ role: z62.string().nullable(),
35651
+ roleLabel: z62.string().nullable(),
35652
+ bio: z62.string().nullable(),
35653
+ summary: z62.string().nullable(),
35364
35654
  photo: teamMemberPhotoSchema,
35365
- profilePath: z61.string().nullable()
35655
+ profilePath: z62.string().nullable()
35366
35656
  });
35367
- var teamMembersDataSchema = z61.array(teamMemberDataSchema);
35657
+ var teamMembersDataSchema = z62.array(teamMemberDataSchema);
35368
35658
  var dynamicSourceWhen = { equals: "site_staff" };
35369
35659
  var manualSourceWhen = { equals: "site_staff", not: true };
35370
35660
  var headingNode = text(
@@ -36470,6 +36760,10 @@ var systemBlockDefinitionsRaw = [
36470
36760
  flow: conversionFlow,
36471
36761
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "form", weight: "standard" })]
36472
36762
  })),
36763
+ withDesignCapability("block.weekly-slot-availability", weeklySlotAvailabilityBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
36764
+ flow: offeringsFlow,
36765
+ layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
36766
+ })),
36473
36767
  withDesignCapability("block.event-registration", eventRegistrationBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
36474
36768
  flow: conversionFlow,
36475
36769
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "form", weight: "standard" })]
@@ -38048,34 +38342,34 @@ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
38048
38342
  var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
38049
38343
 
38050
38344
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
38051
- import { z as z62 } from "zod";
38052
- var themeBridgeConfigSchema = z62.object({
38053
- tokens: z62.record(z62.string(), z62.string()),
38054
- typography: z62.object({
38055
- headingFamily: z62.string().optional(),
38056
- bodyFamily: z62.string().optional(),
38057
- headingWeight: z62.number().optional(),
38058
- bodyWeight: z62.number().optional()
38345
+ import { z as z63 } from "zod";
38346
+ var themeBridgeConfigSchema = z63.object({
38347
+ tokens: z63.record(z63.string(), z63.string()),
38348
+ typography: z63.object({
38349
+ headingFamily: z63.string().optional(),
38350
+ bodyFamily: z63.string().optional(),
38351
+ headingWeight: z63.number().optional(),
38352
+ bodyWeight: z63.number().optional()
38059
38353
  }).optional(),
38060
- spacing: z62.enum(["comfortable", "standard", "dense"]).optional(),
38061
- corners: z62.enum(["square", "soft", "rounded", "pill"]).optional(),
38062
- shadows: z62.enum(["none", "low", "medium", "high"]).optional(),
38063
- components: z62.object({
38064
- buttons: z62.union([
38065
- z62.boolean(),
38066
- z62.object({
38067
- variants: z62.array(z62.enum(["primary", "secondary", "outline", "ghost"])).optional()
38354
+ spacing: z63.enum(["comfortable", "standard", "dense"]).optional(),
38355
+ corners: z63.enum(["square", "soft", "rounded", "pill"]).optional(),
38356
+ shadows: z63.enum(["none", "low", "medium", "high"]).optional(),
38357
+ components: z63.object({
38358
+ buttons: z63.union([
38359
+ z63.boolean(),
38360
+ z63.object({
38361
+ variants: z63.array(z63.enum(["primary", "secondary", "outline", "ghost"])).optional()
38068
38362
  })
38069
38363
  ]).optional(),
38070
- cards: z62.union([
38071
- z62.boolean(),
38072
- z62.object({
38073
- variants: z62.array(z62.enum(["default", "elevated", "outlined"])).optional()
38364
+ cards: z63.union([
38365
+ z63.boolean(),
38366
+ z63.object({
38367
+ variants: z63.array(z63.enum(["default", "elevated", "outlined"])).optional()
38074
38368
  })
38075
38369
  ]).optional(),
38076
- inputs: z62.boolean().optional()
38370
+ inputs: z63.boolean().optional()
38077
38371
  }).optional(),
38078
- overrides: z62.record(z62.string(), z62.string()).optional()
38372
+ overrides: z63.record(z63.string(), z63.string()).optional()
38079
38373
  }).passthrough();
38080
38374
 
38081
38375
  // ../theme-core/src/siteChrome.tsx
@@ -38094,24 +38388,25 @@ var SUPPORTED_LOADER_ENDPOINTS = [
38094
38388
  "listPublicPasses",
38095
38389
  "listPublicMemberships",
38096
38390
  "getPublicFormById",
38097
- "getPublicBookingServices"
38391
+ "getPublicBookingServices",
38392
+ "getPublicWeeklySlotAvailability"
38098
38393
  ];
38099
38394
 
38100
38395
  // ../api/src/sdkConfig/contracts.ts
38101
38396
  function unsafeRetypeZodSchema(schema) {
38102
38397
  return schema;
38103
38398
  }
38104
- var navIdListSchema = z63.preprocess((value) => {
38399
+ var navIdListSchema = z64.preprocess((value) => {
38105
38400
  if (!Array.isArray(value)) return void 0;
38106
38401
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
38107
38402
  return filtered.length > 0 ? filtered : void 0;
38108
- }, z63.array(z63.string()).max(200).optional());
38109
- var dashboardNavVisibilityBaseSchema = z63.object({
38110
- mode: z63.enum(["augment", "restrict"]).optional(),
38403
+ }, z64.array(z64.string()).max(200).optional());
38404
+ var dashboardNavVisibilityBaseSchema = z64.object({
38405
+ mode: z64.enum(["augment", "restrict"]).optional(),
38111
38406
  allowIds: navIdListSchema,
38112
38407
  denyIds: navIdListSchema
38113
38408
  }).strip();
38114
- var dashboardNavVisibilityRolesSchema = z63.object({
38409
+ var dashboardNavVisibilityRolesSchema = z64.object({
38115
38410
  administrator: dashboardNavVisibilityBaseSchema.optional(),
38116
38411
  editor: dashboardNavVisibilityBaseSchema.optional(),
38117
38412
  team_member: dashboardNavVisibilityBaseSchema.optional()
@@ -38119,63 +38414,63 @@ var dashboardNavVisibilityRolesSchema = z63.object({
38119
38414
  var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
38120
38415
  roles: dashboardNavVisibilityRolesSchema
38121
38416
  }).strip();
38122
- var dashboardNavigationConfigSchema = z63.object({
38417
+ var dashboardNavigationConfigSchema = z64.object({
38123
38418
  siteNav: dashboardNavVisibilitySchema.optional(),
38124
38419
  settingsNav: dashboardNavVisibilitySchema.optional()
38125
38420
  }).strip();
38126
- var dashboardConfigSchema = z63.object({
38127
- previewEditingEnabled: z63.boolean().optional(),
38421
+ var dashboardConfigSchema = z64.object({
38422
+ previewEditingEnabled: z64.boolean().optional(),
38128
38423
  navigation: dashboardNavigationConfigSchema.optional()
38129
38424
  }).strip();
38130
38425
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
38131
38426
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
38132
- var sdkLoaderEndpointSchema = z63.enum(SUPPORTED_LOADER_ENDPOINTS);
38133
- var loaderFallbackScalarSchema = z63.union([
38134
- z63.string(),
38135
- z63.number(),
38136
- z63.boolean(),
38137
- z63.null()
38427
+ var sdkLoaderEndpointSchema = z64.enum(SUPPORTED_LOADER_ENDPOINTS);
38428
+ var loaderFallbackScalarSchema = z64.union([
38429
+ z64.string(),
38430
+ z64.number(),
38431
+ z64.boolean(),
38432
+ z64.null()
38138
38433
  ]);
38139
- var loaderParamBindingSchema = z63.object({
38140
- $bind: z63.object({
38141
- from: z63.string().min(1, "Binding path is required"),
38434
+ var loaderParamBindingSchema = z64.object({
38435
+ $bind: z64.object({
38436
+ from: z64.string().min(1, "Binding path is required"),
38142
38437
  fallback: loaderFallbackScalarSchema.optional()
38143
38438
  })
38144
38439
  });
38145
- var loaderParamValueSchema = z63.union([
38146
- z63.string(),
38147
- z63.number(),
38148
- z63.boolean(),
38440
+ var loaderParamValueSchema = z64.union([
38441
+ z64.string(),
38442
+ z64.number(),
38443
+ z64.boolean(),
38149
38444
  loaderParamBindingSchema
38150
38445
  ]);
38151
- var sdkConfigLoaderSchema = z63.object({
38446
+ var sdkConfigLoaderSchema = z64.object({
38152
38447
  endpoint: sdkLoaderEndpointSchema,
38153
- params: z63.record(z63.string(), loaderParamValueSchema),
38154
- mode: z63.enum(["server", "client"]).default("server")
38448
+ params: z64.record(z64.string(), loaderParamValueSchema),
38449
+ mode: z64.enum(["server", "client"]).default("server")
38155
38450
  });
38156
- var sdkDataLoadersSchema = z63.record(z63.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
38157
- var sdkCustomBlockIdSchema = z63.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
38451
+ var sdkDataLoadersSchema = z64.record(z64.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
38452
+ var sdkCustomBlockIdSchema = z64.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
38158
38453
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
38159
38454
  }).transform((value) => value);
38160
- var sdkCustomBlockInputSchema = z63.object({
38455
+ var sdkCustomBlockInputSchema = z64.object({
38161
38456
  id: sdkCustomBlockIdSchema,
38162
- title: z63.string().min(1),
38163
- titleSource: z63.union([z63.string().min(1), z63.array(z63.string().min(1)).min(1)]).optional(),
38164
- description: z63.string().optional(),
38457
+ title: z64.string().min(1),
38458
+ titleSource: z64.union([z64.string().min(1), z64.array(z64.string().min(1)).min(1)]).optional(),
38459
+ description: z64.string().optional(),
38165
38460
  category: blockCategoryEnum,
38166
- icon: z63.string().optional(),
38167
- tags: z63.array(z63.string()).optional(),
38461
+ icon: z64.string().optional(),
38462
+ tags: z64.array(z64.string()).optional(),
38168
38463
  fields: fieldDefinitionInputSchema.array().min(1),
38169
38464
  dataLoaders: sdkDataLoadersSchema,
38170
38465
  layout: NodeSchema.optional(),
38171
- variants: z63.record(z63.string().min(1), NodeSchema).optional(),
38172
- defaultVariant: z63.string().min(1).optional(),
38173
- variantOptions: z63.record(
38174
- z63.string().min(1),
38175
- z63.object({
38176
- label: z63.string().min(1).optional(),
38177
- description: z63.string().min(1).optional(),
38178
- icon: z63.string().min(1).optional()
38466
+ variants: z64.record(z64.string().min(1), NodeSchema).optional(),
38467
+ defaultVariant: z64.string().min(1).optional(),
38468
+ variantOptions: z64.record(
38469
+ z64.string().min(1),
38470
+ z64.object({
38471
+ label: z64.string().min(1).optional(),
38472
+ description: z64.string().min(1).optional(),
38473
+ icon: z64.string().min(1).optional()
38179
38474
  })
38180
38475
  ).optional(),
38181
38476
  previewCustomize: previewCustomizeManifestCurationSchema.optional()
@@ -38186,7 +38481,7 @@ var sdkCustomBlockInputSchema = z63.object({
38186
38481
  const exists = data.fields.some((field) => field.id === source);
38187
38482
  if (!exists) {
38188
38483
  ctx.addIssue({
38189
- code: z63.ZodIssueCode.custom,
38484
+ code: z64.ZodIssueCode.custom,
38190
38485
  message: `titleSource must reference a valid field ID (got "${source}")`,
38191
38486
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
38192
38487
  });
@@ -38195,7 +38490,7 @@ var sdkCustomBlockInputSchema = z63.object({
38195
38490
  }
38196
38491
  if (data.layout && data.variants) {
38197
38492
  ctx.addIssue({
38198
- code: z63.ZodIssueCode.custom,
38493
+ code: z64.ZodIssueCode.custom,
38199
38494
  message: "Custom block must define either `layout` or `variants`, not both",
38200
38495
  path: ["variants"]
38201
38496
  });
@@ -38204,14 +38499,14 @@ var sdkCustomBlockInputSchema = z63.object({
38204
38499
  const keys = Object.keys(data.variants);
38205
38500
  if (keys.length === 0) {
38206
38501
  ctx.addIssue({
38207
- code: z63.ZodIssueCode.custom,
38502
+ code: z64.ZodIssueCode.custom,
38208
38503
  message: "`variants` must contain at least one variant key",
38209
38504
  path: ["variants"]
38210
38505
  });
38211
38506
  }
38212
38507
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
38213
38508
  ctx.addIssue({
38214
- code: z63.ZodIssueCode.custom,
38509
+ code: z64.ZodIssueCode.custom,
38215
38510
  message: "`defaultVariant` must be a key present in `variants`",
38216
38511
  path: ["defaultVariant"]
38217
38512
  });
@@ -38220,7 +38515,7 @@ var sdkCustomBlockInputSchema = z63.object({
38220
38515
  for (const key of Object.keys(data.variantOptions)) {
38221
38516
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
38222
38517
  ctx.addIssue({
38223
- code: z63.ZodIssueCode.custom,
38518
+ code: z64.ZodIssueCode.custom,
38224
38519
  message: "`variantOptions` key must exist in `variants`",
38225
38520
  path: ["variantOptions", key]
38226
38521
  });
@@ -38229,78 +38524,78 @@ var sdkCustomBlockInputSchema = z63.object({
38229
38524
  }
38230
38525
  }
38231
38526
  });
38232
- var sdkBlockFieldExtensionInputSchema = z63.object({
38527
+ var sdkBlockFieldExtensionInputSchema = z64.object({
38233
38528
  fields: fieldDefinitionInputSchema.array().min(1)
38234
38529
  });
38235
- var sdkBlockFieldExtensionsInputSchema = z63.record(
38236
- z63.string().min(1),
38530
+ var sdkBlockFieldExtensionsInputSchema = z64.record(
38531
+ z64.string().min(1),
38237
38532
  sdkBlockFieldExtensionInputSchema
38238
38533
  );
38239
- var sdkThemePaletteSchema = z63.record(z63.string(), z63.string());
38240
- var sdkThemeConfigSchema = z63.object({
38534
+ var sdkThemePaletteSchema = z64.record(z64.string(), z64.string());
38535
+ var sdkThemeConfigSchema = z64.object({
38241
38536
  palette: sdkThemePaletteSchema
38242
38537
  });
38243
- var sdkSectionBackgroundSchema = z63.object({
38244
- id: z63.string().min(1),
38245
- label: z63.string().min(1),
38246
- token: z63.string().min(1)
38538
+ var sdkSectionBackgroundSchema = z64.object({
38539
+ id: z64.string().min(1),
38540
+ label: z64.string().min(1),
38541
+ token: z64.string().min(1)
38247
38542
  });
38248
- var sdkSectionOptionsConfigSchema = z63.object({
38249
- backgroundColor: z63.boolean().optional(),
38250
- backgroundImage: z63.boolean().optional(),
38251
- backgroundGradient: z63.boolean().optional(),
38252
- spacing: z63.union([z63.array(z63.enum(["compact", "default", "spacious"])), z63.boolean()]).optional(),
38253
- textColor: z63.boolean().optional()
38543
+ var sdkSectionOptionsConfigSchema = z64.object({
38544
+ backgroundColor: z64.boolean().optional(),
38545
+ backgroundImage: z64.boolean().optional(),
38546
+ backgroundGradient: z64.boolean().optional(),
38547
+ spacing: z64.union([z64.array(z64.enum(["compact", "default", "spacious"])), z64.boolean()]).optional(),
38548
+ textColor: z64.boolean().optional()
38254
38549
  });
38255
- var sdkContainerOptionsConfigSchema = z63.object({
38256
- maxWidth: z63.union([z63.array(z63.enum(["narrow", "default", "wide", "full"])), z63.boolean()]).optional(),
38257
- alignment: z63.union([z63.array(z63.enum(["left", "center", "right"])), z63.boolean()]).optional()
38550
+ var sdkContainerOptionsConfigSchema = z64.object({
38551
+ maxWidth: z64.union([z64.array(z64.enum(["narrow", "default", "wide", "full"])), z64.boolean()]).optional(),
38552
+ alignment: z64.union([z64.array(z64.enum(["left", "center", "right"])), z64.boolean()]).optional()
38258
38553
  });
38259
- var sdkSiteStyleConfigSchema = z63.object({
38260
- sectionBackgrounds: z63.array(sdkSectionBackgroundSchema).optional(),
38554
+ var sdkSiteStyleConfigSchema = z64.object({
38555
+ sectionBackgrounds: z64.array(sdkSectionBackgroundSchema).optional(),
38261
38556
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
38262
38557
  containerOptions: sdkContainerOptionsConfigSchema.optional()
38263
38558
  });
38264
- var sdkSiteLayoutConfigSchema = z63.object({
38265
- footerBlocks: z63.array(
38266
- z63.object({
38267
- id: z63.string().min(1).optional(),
38268
- kind: z63.string().min(1),
38269
- content: z63.record(z63.string(), z63.unknown()).optional()
38559
+ var sdkSiteLayoutConfigSchema = z64.object({
38560
+ footerBlocks: z64.array(
38561
+ z64.object({
38562
+ id: z64.string().min(1).optional(),
38563
+ kind: z64.string().min(1),
38564
+ content: z64.record(z64.string(), z64.unknown()).optional()
38270
38565
  })
38271
38566
  ).optional()
38272
38567
  });
38273
- var sdkFieldSelectOptionSchema = z63.object({
38274
- value: z63.string(),
38275
- label: z63.string()
38568
+ var sdkFieldSelectOptionSchema = z64.object({
38569
+ value: z64.string(),
38570
+ label: z64.string()
38276
38571
  });
38277
- var sdkBlockFieldConfigSchema = z63.object({
38278
- options: z63.array(sdkFieldSelectOptionSchema).optional()
38572
+ var sdkBlockFieldConfigSchema = z64.object({
38573
+ options: z64.array(sdkFieldSelectOptionSchema).optional()
38279
38574
  });
38280
- var sdkBlockFieldOptionsMapSchema = z63.record(
38281
- z63.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
38575
+ var sdkBlockFieldOptionsMapSchema = z64.record(
38576
+ z64.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
38282
38577
  message: "Block ID must be 'block.*' or 'custom.*' format"
38283
38578
  }),
38284
- z63.record(z63.string().min(1), sdkBlockFieldConfigSchema)
38579
+ z64.record(z64.string().min(1), sdkBlockFieldConfigSchema)
38285
38580
  ).optional();
38286
- var sdkContentTypeTemplateConfigSchema = z63.object({
38287
- blocks: z63.array(z63.unknown())
38581
+ var sdkContentTypeTemplateConfigSchema = z64.object({
38582
+ blocks: z64.array(z64.unknown())
38288
38583
  }).passthrough();
38289
- var sdkContentTypeOrderingConfigSchema = z63.object({
38290
- mode: z63.enum(["default", "manual"]).optional()
38584
+ var sdkContentTypeOrderingConfigSchema = z64.object({
38585
+ mode: z64.enum(["default", "manual"]).optional()
38291
38586
  }).optional();
38292
- var sdkContentTypeConfigSchema = z63.object({
38293
- key: z63.string().min(1),
38294
- fields: z63.array(z63.unknown()),
38587
+ var sdkContentTypeConfigSchema = z64.object({
38588
+ key: z64.string().min(1),
38589
+ fields: z64.array(z64.unknown()),
38295
38590
  ordering: sdkContentTypeOrderingConfigSchema,
38296
38591
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
38297
38592
  }).passthrough();
38298
- var sdkContentConfigSchema = z63.object({
38299
- contentTypes: z63.array(sdkContentTypeConfigSchema).optional(),
38300
- pages: z63.array(z63.unknown()).optional(),
38301
- entries: z63.array(z63.unknown()).optional(),
38302
- navigationMenus: z63.array(z63.unknown()).optional(),
38303
- settings: z63.unknown().optional()
38593
+ var sdkContentConfigSchema = z64.object({
38594
+ contentTypes: z64.array(sdkContentTypeConfigSchema).optional(),
38595
+ pages: z64.array(z64.unknown()).optional(),
38596
+ entries: z64.array(z64.unknown()).optional(),
38597
+ navigationMenus: z64.array(z64.unknown()).optional(),
38598
+ settings: z64.unknown().optional()
38304
38599
  }).passthrough();
38305
38600
  var SDK_WORKFLOW_ID_MAX_LENGTH = 120;
38306
38601
  var SDK_WORKFLOW_TITLE_MAX_LENGTH = 120;
@@ -38315,62 +38610,62 @@ var SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH = 120;
38315
38610
  var SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH = 500;
38316
38611
  var SDK_WORKFLOW_ID_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
38317
38612
  var SDK_WORKFLOW_ENDPOINT_PATTERN = /^\//;
38318
- var sdkWorkflowIdSchema = z63.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
38613
+ var sdkWorkflowIdSchema = z64.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
38319
38614
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
38320
38615
  });
38321
- 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 "/"' });
38322
- var sdkWorkflowManualTriggerSchema = z63.object({
38323
- type: z63.literal("manual")
38616
+ 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 "/"' });
38617
+ var sdkWorkflowManualTriggerSchema = z64.object({
38618
+ type: z64.literal("manual")
38324
38619
  }).strict();
38325
- var sdkWorkflowTriggerFieldSchema = z63.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
38620
+ var sdkWorkflowTriggerFieldSchema = z64.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
38326
38621
  message: "Workflow trigger fields must be top-level content field IDs, not paths"
38327
38622
  });
38328
- var sdkWorkflowFieldChangedConditionSchema = z63.object({
38623
+ var sdkWorkflowFieldChangedConditionSchema = z64.object({
38329
38624
  field: sdkWorkflowTriggerFieldSchema,
38330
- changed: z63.literal(true)
38625
+ changed: z64.literal(true)
38331
38626
  }).strict();
38332
- var sdkWorkflowFieldEmptyConditionSchema = z63.object({
38627
+ var sdkWorkflowFieldEmptyConditionSchema = z64.object({
38333
38628
  field: sdkWorkflowTriggerFieldSchema,
38334
- isEmpty: z63.boolean()
38629
+ isEmpty: z64.boolean()
38335
38630
  }).strict();
38336
- var sdkWorkflowEntryDraftUpdatedTriggerSchema = z63.object({
38337
- type: z63.literal("entry.draft.updated"),
38338
- when: z63.array(
38339
- z63.union([
38631
+ var sdkWorkflowEntryDraftUpdatedTriggerSchema = z64.object({
38632
+ type: z64.literal("entry.draft.updated"),
38633
+ when: z64.array(
38634
+ z64.union([
38340
38635
  sdkWorkflowFieldChangedConditionSchema,
38341
38636
  sdkWorkflowFieldEmptyConditionSchema
38342
38637
  ])
38343
38638
  ).min(1).max(SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT)
38344
38639
  }).strict();
38345
- var sdkWorkflowTriggerSchema = z63.discriminatedUnion("type", [
38640
+ var sdkWorkflowTriggerSchema = z64.discriminatedUnion("type", [
38346
38641
  sdkWorkflowManualTriggerSchema,
38347
38642
  sdkWorkflowEntryDraftUpdatedTriggerSchema
38348
38643
  ]);
38349
- var sdkWorkflowConfirmationSchema = z63.object({
38350
- title: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
38351
- body: z63.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
38644
+ var sdkWorkflowConfirmationSchema = z64.object({
38645
+ title: z64.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
38646
+ body: z64.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
38352
38647
  }).strict();
38353
- var sdkWorkflowConfigSchema = z63.object({
38648
+ var sdkWorkflowConfigSchema = z64.object({
38354
38649
  id: sdkWorkflowIdSchema,
38355
- title: z63.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
38356
- description: z63.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
38357
- contentType: z63.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
38650
+ title: z64.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
38651
+ description: z64.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
38652
+ contentType: z64.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
38358
38653
  endpoint: sdkWorkflowEndpointSchema,
38359
- triggers: z63.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
38654
+ triggers: z64.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
38360
38655
  confirmation: sdkWorkflowConfirmationSchema.optional()
38361
38656
  }).strict();
38362
- var sdkWorkflowsSchema = z63.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
38657
+ var sdkWorkflowsSchema = z64.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
38363
38658
  const ids = workflows.map((workflow) => workflow.id);
38364
38659
  return ids.length === new Set(ids).size;
38365
38660
  }, { message: "Workflow IDs must be unique" }).optional();
38366
- var riverbankSiteConfigInputSchema = z63.object({
38367
- siteId: z63.string().uuid(),
38368
- previewUrl: z63.string().url().optional(),
38369
- liveUrl: z63.string().url().optional(),
38661
+ var riverbankSiteConfigInputSchema = z64.object({
38662
+ siteId: z64.string().uuid(),
38663
+ previewUrl: z64.string().url().optional(),
38664
+ liveUrl: z64.string().url().optional(),
38370
38665
  theme: sdkThemeConfigSchema.optional(),
38371
38666
  styles: sdkSiteStyleConfigSchema.optional(),
38372
38667
  layout: sdkSiteLayoutConfigSchema.optional(),
38373
- customBlocks: z63.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
38668
+ customBlocks: z64.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
38374
38669
  const ids = blocks.map((b) => b.id);
38375
38670
  return ids.length === new Set(ids).size;
38376
38671
  }, { message: "Block IDs must be unique" }).optional(),
@@ -38378,50 +38673,51 @@ var riverbankSiteConfigInputSchema = z63.object({
38378
38673
  blockFieldExtensions: sdkBlockFieldExtensionsInputSchema.optional(),
38379
38674
  workflows: sdkWorkflowsSchema,
38380
38675
  content: sdkContentConfigSchema.optional(),
38381
- contentDir: z63.string().optional(),
38382
- sync: z63.object({
38383
- existingEntries: z63.enum(["skip", "update"]).optional()
38676
+ contentDir: z64.string().optional(),
38677
+ sync: z64.object({
38678
+ existingEntries: z64.enum(["skip", "update"]).optional()
38384
38679
  }).optional(),
38385
- deploy: z63.object({
38386
- verifyCommand: z63.string().optional(),
38387
- prebuildOutput: z63.string().optional()
38680
+ deploy: z64.object({
38681
+ verifyCommand: z64.string().optional(),
38682
+ prebuildOutput: z64.string().optional()
38388
38683
  }).optional(),
38389
- themeSource: z63.enum(["local", "cms"]).optional(),
38390
- activeTheme: z63.string().optional(),
38391
- enablePortal: z63.boolean().optional(),
38684
+ themeSource: z64.enum(["local", "cms"]).optional(),
38685
+ activeTheme: z64.string().optional(),
38686
+ enablePortal: z64.boolean().optional(),
38392
38687
  dashboard: dashboardConfigSchema.optional()
38393
38688
  }).strict();
38394
- var pushSdkConfigBodySchema = z63.object({
38689
+ var pushSdkConfigBodySchema = z64.object({
38395
38690
  config: riverbankSiteConfigInputSchema,
38396
- forceContentTypes: z63.boolean().optional()
38691
+ forceContentTypes: z64.boolean().optional(),
38692
+ mode: z64.enum(["apply", "preview"]).optional()
38397
38693
  }).strict();
38398
38694
 
38399
38695
  // ../api/src/siteOnboarding.ts
38400
- import { z as z64 } from "zod";
38696
+ import { z as z65 } from "zod";
38401
38697
  var LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS = {
38402
38698
  configure_appointments: {
38403
38699
  requirementId: "configure_appointments",
38404
38700
  reason: "launch_anyway"
38405
38701
  }
38406
38702
  };
38407
- var acknowledgeLaunchRequirementRequestSchema = z64.discriminatedUnion(
38703
+ var acknowledgeLaunchRequirementRequestSchema = z65.discriminatedUnion(
38408
38704
  "requirementId",
38409
38705
  [
38410
- z64.object({
38411
- requirementId: z64.literal("review_generated_site")
38706
+ z65.object({
38707
+ requirementId: z65.literal("review_generated_site")
38412
38708
  }),
38413
- z64.object({
38414
- requirementId: z64.literal(
38709
+ z65.object({
38710
+ requirementId: z65.literal(
38415
38711
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.requirementId
38416
38712
  ),
38417
- overrideReason: z64.literal(
38713
+ overrideReason: z65.literal(
38418
38714
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.reason
38419
38715
  )
38420
38716
  })
38421
38717
  ]
38422
38718
  );
38423
- var goLiveSiteRequestSchema = z64.object({
38424
- acceptExtraSiteCharge: z64.boolean().optional()
38719
+ var goLiveSiteRequestSchema = z65.object({
38720
+ acceptExtraSiteCharge: z65.boolean().optional()
38425
38721
  });
38426
38722
 
38427
38723
  // ../surfaces/src/index.ts
@@ -38540,7 +38836,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
38540
38836
  ];
38541
38837
 
38542
38838
  // ../api/src/bookingVerticals.ts
38543
- import { z as z65 } from "zod";
38839
+ import { z as z66 } from "zod";
38544
38840
  var VERTICAL_IDS = [
38545
38841
  "yoga_wellness",
38546
38842
  "fitness_pt",
@@ -38705,39 +39001,39 @@ function getSiteVerticalConfigIssues(rawConfig, config) {
38705
39001
  }
38706
39002
  return [...issues];
38707
39003
  }
38708
- var VerticalIdSchema = z65.string().trim().transform((value, ctx) => {
39004
+ var VerticalIdSchema = z66.string().trim().transform((value, ctx) => {
38709
39005
  const parsed = parseVerticalId(value);
38710
39006
  if (!parsed) {
38711
39007
  ctx.addIssue({
38712
- code: z65.ZodIssueCode.custom,
39008
+ code: z66.ZodIssueCode.custom,
38713
39009
  message: "Unknown booking vertical"
38714
39010
  });
38715
- return z65.NEVER;
39011
+ return z66.NEVER;
38716
39012
  }
38717
39013
  return parsed;
38718
39014
  });
38719
- var VerticalPresetIdSchema = z65.string().trim().transform((value, ctx) => {
39015
+ var VerticalPresetIdSchema = z66.string().trim().transform((value, ctx) => {
38720
39016
  const parsed = parseVerticalPresetId(value);
38721
39017
  if (!parsed) {
38722
39018
  ctx.addIssue({
38723
- code: z65.ZodIssueCode.custom,
39019
+ code: z66.ZodIssueCode.custom,
38724
39020
  message: "Unknown booking preset"
38725
39021
  });
38726
- return z65.NEVER;
39022
+ return z66.NEVER;
38727
39023
  }
38728
39024
  return parsed;
38729
39025
  });
38730
- var BookingVerticalConfigSchema = z65.object({
39026
+ var BookingVerticalConfigSchema = z66.object({
38731
39027
  verticalId: VerticalIdSchema.nullable(),
38732
- selectedPresetIds: z65.array(VerticalPresetIdSchema).max(20)
39028
+ selectedPresetIds: z66.array(VerticalPresetIdSchema).max(20)
38733
39029
  }).transform((value, ctx) => {
38734
39030
  const resolved = resolveSiteVerticalBookingConfig(value);
38735
39031
  if (resolved.kind === "invalid") {
38736
39032
  ctx.addIssue({
38737
- code: z65.ZodIssueCode.custom,
39033
+ code: z66.ZodIssueCode.custom,
38738
39034
  message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
38739
39035
  });
38740
- return z65.NEVER;
39036
+ return z66.NEVER;
38741
39037
  }
38742
39038
  return resolved.config;
38743
39039
  });
@@ -38764,51 +39060,51 @@ function isRecord8(value) {
38764
39060
  }
38765
39061
 
38766
39062
  // ../api/src/appointmentSetup.ts
38767
- import { z as z66 } from "zod";
39063
+ import { z as z67 } from "zod";
38768
39064
  var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
38769
- var appointmentSetupRefSchema = z66.discriminatedUnion("kind", [
38770
- z66.object({ kind: z66.literal("existing"), id: z66.string().min(1) }),
38771
- z66.object({ kind: z66.literal("new"), draftId: z66.string().min(1) })
39065
+ var appointmentSetupRefSchema = z67.discriminatedUnion("kind", [
39066
+ z67.object({ kind: z67.literal("existing"), id: z67.string().min(1) }),
39067
+ z67.object({ kind: z67.literal("new"), draftId: z67.string().min(1) })
38772
39068
  ]);
38773
- var appointmentSetupVenueChoiceSchema = z66.discriminatedUnion("kind", [
38774
- z66.object({ kind: z66.literal("none") }),
38775
- z66.object({ kind: z66.literal("existing"), venueId: z66.string().min(1) }),
38776
- z66.object({
38777
- kind: z66.literal("create"),
38778
- draftId: z66.string().min(1),
38779
- title: z66.string().trim().min(1),
38780
- description: z66.string().nullable(),
38781
- timezone: z66.string().trim().min(1).nullable(),
38782
- addressJson: z66.record(z66.string(), z66.unknown()),
38783
- locationJson: z66.object({ lat: z66.number(), lng: z66.number() }).nullable()
39069
+ var appointmentSetupVenueChoiceSchema = z67.discriminatedUnion("kind", [
39070
+ z67.object({ kind: z67.literal("none") }),
39071
+ z67.object({ kind: z67.literal("existing"), venueId: z67.string().min(1) }),
39072
+ z67.object({
39073
+ kind: z67.literal("create"),
39074
+ draftId: z67.string().min(1),
39075
+ title: z67.string().trim().min(1),
39076
+ description: z67.string().nullable(),
39077
+ timezone: z67.string().trim().min(1).nullable(),
39078
+ addressJson: z67.record(z67.string(), z67.unknown()),
39079
+ locationJson: z67.object({ lat: z67.number(), lng: z67.number() }).nullable()
38784
39080
  })
38785
39081
  ]);
38786
- var appointmentSetupPaymentDraftSchema = z66.object({
38787
- priceType: z66.union([z66.literal("free"), z66.literal("paid")])
38788
- });
38789
- var appointmentSetupServiceAssignmentDraftSchema = z66.discriminatedUnion("kind", [
38790
- z66.object({ kind: z66.literal("all_practitioners") }),
38791
- z66.object({
38792
- kind: z66.literal("selected_practitioners"),
38793
- resourceRefs: z66.array(appointmentSetupRefSchema)
39082
+ var appointmentSetupPaymentDraftSchema = z67.object({
39083
+ priceType: z67.union([z67.literal("free"), z67.literal("paid")])
39084
+ });
39085
+ var appointmentSetupServiceAssignmentDraftSchema = z67.discriminatedUnion("kind", [
39086
+ z67.object({ kind: z67.literal("all_practitioners") }),
39087
+ z67.object({
39088
+ kind: z67.literal("selected_practitioners"),
39089
+ resourceRefs: z67.array(appointmentSetupRefSchema)
38794
39090
  })
38795
39091
  ]);
38796
- var appointmentSetupServiceDraftSchema = z66.object({
39092
+ var appointmentSetupServiceDraftSchema = z67.object({
38797
39093
  ref: appointmentSetupRefSchema,
38798
- title: z66.string().trim().min(1),
38799
- description: z66.string().nullable(),
38800
- durationMinutes: z66.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
38801
- prepMinutes: z66.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
38802
- cleanupMinutes: z66.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
38803
- priceAmount: z66.number().int().nonnegative().nullable(),
38804
- isActive: z66.boolean(),
38805
- locationType: z66.union([
38806
- z66.literal("virtual"),
38807
- z66.literal("in_person"),
38808
- z66.literal("hybrid")
39094
+ title: z67.string().trim().min(1),
39095
+ description: z67.string().nullable(),
39096
+ durationMinutes: z67.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
39097
+ prepMinutes: z67.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39098
+ cleanupMinutes: z67.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39099
+ priceAmount: z67.number().int().nonnegative().nullable(),
39100
+ isActive: z67.boolean(),
39101
+ locationType: z67.union([
39102
+ z67.literal("virtual"),
39103
+ z67.literal("in_person"),
39104
+ z67.literal("hybrid")
38809
39105
  ]),
38810
39106
  venue: appointmentSetupVenueChoiceSchema,
38811
- timezone: z66.string().trim().min(1).nullable(),
39107
+ timezone: z67.string().trim().min(1).nullable(),
38812
39108
  payment: appointmentSetupPaymentDraftSchema,
38813
39109
  assignment: appointmentSetupServiceAssignmentDraftSchema
38814
39110
  }).superRefine((service, ctx) => {
@@ -38827,49 +39123,49 @@ var appointmentSetupServiceDraftSchema = z66.object({
38827
39123
  });
38828
39124
  }
38829
39125
  });
38830
- var appointmentSetupPractitionerDraftSchema = z66.object({
39126
+ var appointmentSetupPractitionerDraftSchema = z67.object({
38831
39127
  ref: appointmentSetupRefSchema,
38832
- displayName: z66.string().trim().min(1),
38833
- bio: z66.string().nullable(),
38834
- timezone: z66.string().trim().min(1),
38835
- colorHex: z66.string().nullable()
38836
- });
38837
- var appointmentSetupWeeklyWindowDraftSchema = z66.object({
38838
- weekday: z66.number().int().min(0).max(6),
38839
- startTime: z66.string(),
38840
- endTime: z66.string()
38841
- });
38842
- var appointmentSetupStartTimePolicyDraftSchema = z66.discriminatedUnion("kind", [
38843
- z66.object({ kind: z66.literal("automatic_spacing") }),
38844
- z66.object({
38845
- kind: z66.literal("regular_interval"),
38846
- intervalMinutes: z66.union([
38847
- z66.literal(10),
38848
- z66.literal(15),
38849
- z66.literal(20),
38850
- z66.literal(30),
38851
- z66.literal(45),
38852
- z66.literal(60)
39128
+ displayName: z67.string().trim().min(1),
39129
+ bio: z67.string().nullable(),
39130
+ timezone: z67.string().trim().min(1),
39131
+ colorHex: z67.string().nullable()
39132
+ });
39133
+ var appointmentSetupWeeklyWindowDraftSchema = z67.object({
39134
+ weekday: z67.number().int().min(0).max(6),
39135
+ startTime: z67.string(),
39136
+ endTime: z67.string()
39137
+ });
39138
+ var appointmentSetupStartTimePolicyDraftSchema = z67.discriminatedUnion("kind", [
39139
+ z67.object({ kind: z67.literal("automatic_spacing") }),
39140
+ z67.object({
39141
+ kind: z67.literal("regular_interval"),
39142
+ intervalMinutes: z67.union([
39143
+ z67.literal(10),
39144
+ z67.literal(15),
39145
+ z67.literal(20),
39146
+ z67.literal(30),
39147
+ z67.literal(45),
39148
+ z67.literal(60)
38853
39149
  ])
38854
39150
  })
38855
39151
  ]);
38856
- var appointmentSetupAvailabilityDraftSchema = z66.object({
38857
- kind: z66.literal("weekly_windows"),
39152
+ var appointmentSetupAvailabilityDraftSchema = z67.object({
39153
+ kind: z67.literal("weekly_windows"),
38858
39154
  resourceRef: appointmentSetupRefSchema,
38859
39155
  serviceRef: appointmentSetupRefSchema.nullable(),
38860
- windows: z66.array(appointmentSetupWeeklyWindowDraftSchema),
39156
+ windows: z67.array(appointmentSetupWeeklyWindowDraftSchema),
38861
39157
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
38862
39158
  });
38863
39159
  var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
38864
39160
  var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
38865
- var appointmentSetupBookingNoticeSchema = z66.object({
38866
- minLeadMinutes: z66.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
38867
- maxBookingNoticeMinutes: z66.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
38868
- });
38869
- var applyAppointmentSetupRequestSchema = z66.object({
38870
- services: z66.array(appointmentSetupServiceDraftSchema),
38871
- practitioners: z66.array(appointmentSetupPractitionerDraftSchema),
38872
- availability: z66.array(appointmentSetupAvailabilityDraftSchema),
39161
+ var appointmentSetupBookingNoticeSchema = z67.object({
39162
+ minLeadMinutes: z67.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
39163
+ maxBookingNoticeMinutes: z67.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
39164
+ });
39165
+ var applyAppointmentSetupRequestSchema = z67.object({
39166
+ services: z67.array(appointmentSetupServiceDraftSchema),
39167
+ practitioners: z67.array(appointmentSetupPractitionerDraftSchema),
39168
+ availability: z67.array(appointmentSetupAvailabilityDraftSchema),
38873
39169
  bookingNotice: appointmentSetupBookingNoticeSchema
38874
39170
  });
38875
39171
 
@@ -38902,24 +39198,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
38902
39198
  ];
38903
39199
 
38904
39200
  // ../api/src/siteBanner.ts
38905
- import { z as z67 } from "zod";
39201
+ import { z as z68 } from "zod";
38906
39202
  var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
38907
39203
  var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
38908
39204
  var SITE_BANNER_MAX_TEXT_LENGTH = 320;
38909
39205
  var SITE_BANNER_MAX_PARAGRAPHS = 2;
38910
- var siteBannerScopeSchema = z67.enum(SITE_BANNER_SCOPE_VALUES);
38911
- var siteBannerToneSchema = z67.enum(SITE_BANNER_TONE_VALUES);
38912
- var siteBannerBodySchema = z67.unknown().transform(unwrapRichTextValue);
38913
- var siteBannerCtaSchema = z67.object({
38914
- label: z67.string().trim().min(1),
39206
+ var siteBannerScopeSchema = z68.enum(SITE_BANNER_SCOPE_VALUES);
39207
+ var siteBannerToneSchema = z68.enum(SITE_BANNER_TONE_VALUES);
39208
+ var siteBannerBodySchema = z68.unknown().transform(unwrapRichTextValue);
39209
+ var siteBannerCtaSchema = z68.object({
39210
+ label: z68.string().trim().min(1),
38915
39211
  link: linkPayloadSchema
38916
39212
  });
38917
- var siteBannerSettingsSchema = z67.discriminatedUnion("enabled", [
38918
- z67.object({
38919
- enabled: z67.literal(false)
39213
+ var siteBannerSettingsSchema = z68.discriminatedUnion("enabled", [
39214
+ z68.object({
39215
+ enabled: z68.literal(false)
38920
39216
  }),
38921
- z67.object({
38922
- enabled: z67.literal(true),
39217
+ z68.object({
39218
+ enabled: z68.literal(true),
38923
39219
  scope: siteBannerScopeSchema,
38924
39220
  tone: siteBannerToneSchema,
38925
39221
  body: siteBannerBodySchema,
@@ -38933,7 +39229,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
38933
39229
  const analysis = analyzeSiteBannerBody(value.body);
38934
39230
  for (const issue of analysis.issues) {
38935
39231
  ctx.addIssue({
38936
- code: z67.ZodIssueCode.custom,
39232
+ code: z68.ZodIssueCode.custom,
38937
39233
  path: ["body"],
38938
39234
  message: siteBannerBodyIssueMessage(issue)
38939
39235
  });
@@ -39240,75 +39536,75 @@ function unsafeAsNavigationMenuIdentifier(identifier) {
39240
39536
  var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
39241
39537
 
39242
39538
  // ../api/src/aiPlayground.ts
39243
- import { z as z68 } from "zod";
39244
- var Rfc6902PatchOp = z68.discriminatedUnion("op", [
39539
+ import { z as z69 } from "zod";
39540
+ var Rfc6902PatchOp = z69.discriminatedUnion("op", [
39245
39541
  // Standard RFC-6902 operations
39246
- z68.object({
39247
- op: z68.literal("add"),
39248
- path: z68.string(),
39249
- value: z68.unknown()
39542
+ z69.object({
39543
+ op: z69.literal("add"),
39544
+ path: z69.string(),
39545
+ value: z69.unknown()
39250
39546
  }),
39251
- z68.object({
39252
- op: z68.literal("remove"),
39253
- path: z68.string()
39547
+ z69.object({
39548
+ op: z69.literal("remove"),
39549
+ path: z69.string()
39254
39550
  }),
39255
- z68.object({
39256
- op: z68.literal("replace"),
39257
- path: z68.string(),
39258
- value: z68.unknown()
39551
+ z69.object({
39552
+ op: z69.literal("replace"),
39553
+ path: z69.string(),
39554
+ value: z69.unknown()
39259
39555
  }),
39260
- z68.object({
39261
- op: z68.literal("move"),
39262
- from: z68.string(),
39263
- path: z68.string()
39556
+ z69.object({
39557
+ op: z69.literal("move"),
39558
+ from: z69.string(),
39559
+ path: z69.string()
39264
39560
  }),
39265
- z68.object({
39266
- op: z68.literal("copy"),
39267
- from: z68.string(),
39268
- path: z68.string()
39561
+ z69.object({
39562
+ op: z69.literal("copy"),
39563
+ from: z69.string(),
39564
+ path: z69.string()
39269
39565
  }),
39270
39566
  // Block-level operations (Phase 2)
39271
- z68.object({
39272
- op: z68.literal("add_block"),
39273
- blockKind: z68.string(),
39274
- afterBlockId: z68.string().nullable(),
39275
- content: z68.record(z68.string(), z68.unknown()),
39276
- rationale: z68.string()
39567
+ z69.object({
39568
+ op: z69.literal("add_block"),
39569
+ blockKind: z69.string(),
39570
+ afterBlockId: z69.string().nullable(),
39571
+ content: z69.record(z69.string(), z69.unknown()),
39572
+ rationale: z69.string()
39277
39573
  }),
39278
- z68.object({
39279
- op: z68.literal("delete_block"),
39280
- blockId: z68.string(),
39281
- rationale: z68.string()
39574
+ z69.object({
39575
+ op: z69.literal("delete_block"),
39576
+ blockId: z69.string(),
39577
+ rationale: z69.string()
39282
39578
  }),
39283
- z68.object({
39284
- op: z68.literal("reorder_block"),
39285
- blockId: z68.string(),
39286
- afterBlockId: z68.string().nullable(),
39287
- rationale: z68.string()
39579
+ z69.object({
39580
+ op: z69.literal("reorder_block"),
39581
+ blockId: z69.string(),
39582
+ afterBlockId: z69.string().nullable(),
39583
+ rationale: z69.string()
39288
39584
  })
39289
39585
  ]);
39290
- var PlaygroundProposeRequest = z68.object({
39291
- request: z68.string().min(1).max(2e3)
39586
+ var PlaygroundProposeRequest = z69.object({
39587
+ request: z69.string().min(1).max(2e3)
39292
39588
  });
39293
- var MultiPagePatchEnvelope = z68.object({
39294
- pageId: z68.string(),
39295
- blockId: z68.string().optional(),
39589
+ var MultiPagePatchEnvelope = z69.object({
39590
+ pageId: z69.string(),
39591
+ blockId: z69.string().optional(),
39296
39592
  // Not present for page-level ops
39297
- blockKind: z68.string().optional(),
39298
- blockPurpose: z68.string().optional().nullable(),
39299
- ops: z68.array(Rfc6902PatchOp),
39300
- rationale: z68.string(),
39301
- currentContent: z68.record(z68.string(), z68.unknown()).optional()
39593
+ blockKind: z69.string().optional(),
39594
+ blockPurpose: z69.string().optional().nullable(),
39595
+ ops: z69.array(Rfc6902PatchOp),
39596
+ rationale: z69.string(),
39597
+ currentContent: z69.record(z69.string(), z69.unknown()).optional()
39302
39598
  });
39303
- var MultiPageUpdateResponse = z68.object({
39304
- patches: z68.array(MultiPagePatchEnvelope),
39305
- assistantMessage: z68.string(),
39306
- pagesModified: z68.number(),
39307
- toolCallsUsed: z68.number()
39599
+ var MultiPageUpdateResponse = z69.object({
39600
+ patches: z69.array(MultiPagePatchEnvelope),
39601
+ assistantMessage: z69.string(),
39602
+ pagesModified: z69.number(),
39603
+ toolCallsUsed: z69.number()
39308
39604
  });
39309
39605
 
39310
39606
  // src/config/content-validation.ts
39311
- import { z as z69 } from "zod";
39607
+ import { z as z70 } from "zod";
39312
39608
 
39313
39609
  // src/types/block-kinds.ts
39314
39610
  var SYSTEM_BLOCK_KINDS = [
@@ -39338,6 +39634,7 @@ var SYSTEM_BLOCK_KINDS = [
39338
39634
  "block.form",
39339
39635
  "block.contact-newsletter",
39340
39636
  "block.appointment-booking",
39637
+ "block.weekly-slot-availability",
39341
39638
  "block.event-registration",
39342
39639
  "block.event-details",
39343
39640
  "block.course-registration",
@@ -39451,7 +39748,7 @@ function isUnsupportedDynamicSegment(segment) {
39451
39748
  return segment.startsWith(":") || segment.includes("{") || segment.includes("}");
39452
39749
  }
39453
39750
 
39454
- // src/contracts/bindings.ts
39751
+ // ../field-primitives/src/bindings/index.ts
39455
39752
  var BINDING_TRANSFORMS = {
39456
39753
  RICHTEXT_FIRST_PARAGRAPH: "richtext.firstParagraph",
39457
39754
  DATE_FORMAT_SHORT: "date.formatShort",
@@ -39459,42 +39756,45 @@ var BINDING_TRANSFORMS = {
39459
39756
  TEXT_INLINE_TEXT: "text.inlineText"
39460
39757
  };
39461
39758
  var BINDING_TRANSFORM_VALUES = Object.values(BINDING_TRANSFORMS);
39462
- var BINDING_TRANSFORM_LIST = BINDING_TRANSFORM_VALUES.join(", ");
39759
+
39760
+ // src/contracts/bindings.ts
39761
+ var BINDING_TRANSFORM_VALUES2 = BINDING_TRANSFORM_VALUES;
39762
+ var BINDING_TRANSFORM_LIST = BINDING_TRANSFORM_VALUES2.join(", ");
39463
39763
  function describeInvalidBindingTransform(transform) {
39464
39764
  return `Transform "${transform}" is not valid. Allowed: ${BINDING_TRANSFORM_LIST}`;
39465
39765
  }
39466
39766
 
39467
39767
  // src/config/content-validation.ts
39468
- var jsonDataSchema = z69.record(z69.string(), z69.any());
39469
- var contentTypeKeySchema = z69.string().min(1).regex(
39768
+ var jsonDataSchema = z70.record(z70.string(), z70.any());
39769
+ var contentTypeKeySchema = z70.string().min(1).regex(
39470
39770
  /^[a-z][a-z0-9-]*$/,
39471
39771
  "Key must be lowercase, start with a letter, and contain only letters, numbers, and hyphens"
39472
39772
  );
39473
- var templateConfigSchemaForward = z69.object({
39474
- blocks: z69.array(
39475
- z69.object({
39476
- identifier: z69.string().min(1),
39477
- kind: z69.string(),
39478
- scope: z69.enum(["entry", "template"]),
39479
- bindings: z69.record(z69.string(), z69.any()).optional(),
39480
- content: z69.record(z69.string(), z69.any()).optional()
39773
+ var templateConfigSchemaForward = z70.object({
39774
+ blocks: z70.array(
39775
+ z70.object({
39776
+ identifier: z70.string().min(1),
39777
+ kind: z70.string(),
39778
+ scope: z70.enum(["entry", "template"]),
39779
+ bindings: z70.record(z70.string(), z70.any()).optional(),
39780
+ content: z70.record(z70.string(), z70.any()).optional()
39481
39781
  })
39482
39782
  )
39483
39783
  }).optional();
39484
- var contentTypeOrderingSchema = z69.object({
39485
- mode: z69.enum(["default", "manual"]).optional()
39784
+ var contentTypeOrderingSchema = z70.object({
39785
+ mode: z70.enum(["default", "manual"]).optional()
39486
39786
  }).optional();
39487
- var contentTypeConfigSchema = z69.object({
39787
+ var contentTypeConfigSchema = z70.object({
39488
39788
  key: contentTypeKeySchema,
39489
- name: z69.string().min(1),
39490
- description: z69.string().optional(),
39491
- hasPages: z69.boolean(),
39492
- routePattern: z69.string().optional(),
39789
+ name: z70.string().min(1),
39790
+ description: z70.string().optional(),
39791
+ hasPages: z70.boolean(),
39792
+ routePattern: z70.string().optional(),
39493
39793
  // Fields are validated as unknown[] here - deep field validation happens in @riverbankcms/blocks
39494
- fields: z69.array(z69.any()).min(1, "At least one field is required"),
39495
- titleField: z69.string().optional(),
39794
+ fields: z70.array(z70.any()).min(1, "At least one field is required"),
39795
+ titleField: z70.string().optional(),
39496
39796
  ordering: contentTypeOrderingSchema,
39497
- isSingleton: z69.boolean().optional().default(false),
39797
+ isSingleton: z70.boolean().optional().default(false),
39498
39798
  template: templateConfigSchemaForward
39499
39799
  }).refine(
39500
39800
  (data) => {
@@ -39516,7 +39816,7 @@ var contentTypeConfigSchema = z69.object({
39516
39816
  }
39517
39817
  if (!data.routePattern) {
39518
39818
  ctx.addIssue({
39519
- code: z69.ZodIssueCode.custom,
39819
+ code: z70.ZodIssueCode.custom,
39520
39820
  path: ["routePattern"],
39521
39821
  message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
39522
39822
  });
@@ -39525,7 +39825,7 @@ var contentTypeConfigSchema = z69.object({
39525
39825
  const parseResult = safeParseRouteTemplate(data.routePattern);
39526
39826
  if (!parseResult.success) {
39527
39827
  ctx.addIssue({
39528
- code: z69.ZodIssueCode.custom,
39828
+ code: z70.ZodIssueCode.custom,
39529
39829
  path: ["routePattern"],
39530
39830
  message: describeRouteTemplateParseError(parseResult.error)
39531
39831
  });
@@ -39533,44 +39833,44 @@ var contentTypeConfigSchema = z69.object({
39533
39833
  }
39534
39834
  if (!data.isSingleton && parseResult.routeTemplate.kind !== "slug-template") {
39535
39835
  ctx.addIssue({
39536
- code: z69.ZodIssueCode.custom,
39836
+ code: z70.ZodIssueCode.custom,
39537
39837
  path: ["routePattern"],
39538
39838
  message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
39539
39839
  });
39540
39840
  }
39541
39841
  });
39542
- var fieldBindingSchema = z69.object({
39543
- source: z69.literal("field"),
39544
- path: z69.string().min(1, "Field path is required")
39842
+ var fieldBindingSchema = z70.object({
39843
+ source: z70.literal("field"),
39844
+ path: z70.string().min(1, "Field path is required")
39545
39845
  });
39546
- var metaBindingSchema = z69.object({
39547
- source: z69.literal("meta"),
39548
- path: z69.enum(TEMPLATE_BINDING_META_PATHS, {
39846
+ var metaBindingSchema = z70.object({
39847
+ source: z70.literal("meta"),
39848
+ path: z70.enum(TEMPLATE_BINDING_META_PATHS, {
39549
39849
  error: (issue) => describeInvalidTemplateBindingMetaPath(String(issue.input))
39550
39850
  })
39551
39851
  });
39552
- var literalBindingSchema = z69.object({
39553
- source: z69.literal("literal"),
39554
- value: z69.unknown()
39852
+ var literalBindingSchema = z70.object({
39853
+ source: z70.literal("literal"),
39854
+ value: z70.unknown()
39555
39855
  });
39556
- var transformBindingSchema = z69.object({
39557
- source: z69.literal("transform"),
39558
- path: z69.string().min(1, "Transform path is required"),
39559
- transform: z69.enum(BINDING_TRANSFORM_VALUES, {
39856
+ var transformBindingSchema = z70.object({
39857
+ source: z70.literal("transform"),
39858
+ path: z70.string().min(1, "Transform path is required"),
39859
+ transform: z70.enum(BINDING_TRANSFORM_VALUES2, {
39560
39860
  error: (issue) => describeInvalidBindingTransform(String(issue.input))
39561
39861
  })
39562
39862
  });
39563
- var baseBindingSchema = z69.discriminatedUnion("source", [
39863
+ var baseBindingSchema = z70.discriminatedUnion("source", [
39564
39864
  fieldBindingSchema,
39565
39865
  metaBindingSchema,
39566
39866
  literalBindingSchema,
39567
39867
  transformBindingSchema
39568
39868
  ]);
39569
- var fallbackBindingSchema = z69.object({
39570
- source: z69.literal("fallback"),
39571
- sources: z69.array(z69.lazy(() => bindingSourceSchema)).min(1, "Fallback must have at least one source")
39869
+ var fallbackBindingSchema = z70.object({
39870
+ source: z70.literal("fallback"),
39871
+ sources: z70.array(z70.lazy(() => bindingSourceSchema)).min(1, "Fallback must have at least one source")
39572
39872
  });
39573
- var bindingSourceSchema = z69.union([
39873
+ var bindingSourceSchema = z70.union([
39574
39874
  baseBindingSchema,
39575
39875
  fallbackBindingSchema
39576
39876
  ]);
@@ -39584,12 +39884,12 @@ function isValidBlockKind(kind) {
39584
39884
  return false;
39585
39885
  }
39586
39886
  var BLOCK_KIND_ERROR_MESSAGE = 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.myBlock")';
39587
- var blockKindSchema = z69.string().refine(isValidBlockKind, { message: BLOCK_KIND_ERROR_MESSAGE });
39588
- var templateBlockConfigSchema = z69.object({
39589
- identifier: z69.string().min(1, "Block identifier is required"),
39887
+ var blockKindSchema = z70.string().refine(isValidBlockKind, { message: BLOCK_KIND_ERROR_MESSAGE });
39888
+ var templateBlockConfigSchema = z70.object({
39889
+ identifier: z70.string().min(1, "Block identifier is required"),
39590
39890
  kind: blockKindSchema,
39591
- scope: z69.enum(["entry", "template"]),
39592
- bindings: z69.record(z69.string(), bindingSourceSchema).optional(),
39891
+ scope: z70.enum(["entry", "template"]),
39892
+ bindings: z70.record(z70.string(), bindingSourceSchema).optional(),
39593
39893
  content: jsonDataSchema.optional()
39594
39894
  }).refine(
39595
39895
  (data) => {
@@ -39608,8 +39908,8 @@ var templateBlockConfigSchema = z69.object({
39608
39908
  },
39609
39909
  { message: "Template-scoped blocks should define static content, not bindings" }
39610
39910
  );
39611
- var templateConfigSchema = z69.object({
39612
- blocks: z69.array(templateBlockConfigSchema).min(1, "Template must have at least one block")
39911
+ var templateConfigSchema = z70.object({
39912
+ blocks: z70.array(templateBlockConfigSchema).min(1, "Template must have at least one block")
39613
39913
  }).refine(
39614
39914
  (data) => {
39615
39915
  const identifiers = data.blocks.map((b) => b.identifier);
@@ -39618,77 +39918,77 @@ var templateConfigSchema = z69.object({
39618
39918
  },
39619
39919
  { message: "Template block identifiers must be unique" }
39620
39920
  );
39621
- var blockConfigSchema = z69.object({
39921
+ var blockConfigSchema = z70.object({
39622
39922
  kind: blockKindSchema,
39623
39923
  content: jsonDataSchema,
39624
- orderIndex: z69.number().optional()
39625
- });
39626
- var pageConfigSchema = z69.object({
39627
- identifier: z69.string().min(1, "Identifier is required"),
39628
- title: z69.string().min(1, "Title is required"),
39629
- path: z69.string().regex(/^\//, "Path must start with /"),
39630
- purpose: z69.string().default("content"),
39631
- blocks: z69.array(blockConfigSchema).optional(),
39632
- status: z69.enum(["draft", "published"]).default("draft"),
39633
- metaTitle: z69.string().optional(),
39634
- metaDescription: z69.string().optional()
39635
- });
39636
- var entryConfigSchema = z69.object({
39637
- identifier: z69.string().min(1, "Identifier is required"),
39638
- contentType: z69.string().min(1, "Content type is required"),
39924
+ orderIndex: z70.number().optional()
39925
+ });
39926
+ var pageConfigSchema = z70.object({
39927
+ identifier: z70.string().min(1, "Identifier is required"),
39928
+ title: z70.string().min(1, "Title is required"),
39929
+ path: z70.string().regex(/^\//, "Path must start with /"),
39930
+ purpose: z70.string().default("content"),
39931
+ blocks: z70.array(blockConfigSchema).optional(),
39932
+ status: z70.enum(["draft", "published"]).default("draft"),
39933
+ metaTitle: z70.string().optional(),
39934
+ metaDescription: z70.string().optional()
39935
+ });
39936
+ var entryConfigSchema = z70.object({
39937
+ identifier: z70.string().min(1, "Identifier is required"),
39938
+ contentType: z70.string().min(1, "Content type is required"),
39639
39939
  data: jsonDataSchema,
39640
- status: z69.enum(["draft", "published"]).default("draft"),
39641
- slug: z69.string().optional(),
39642
- summary: z69.string().optional(),
39940
+ status: z70.enum(["draft", "published"]).default("draft"),
39941
+ slug: z70.string().optional(),
39942
+ summary: z70.string().optional(),
39643
39943
  // Hard remove legacy config-only titles: titles must live in entry `data`.
39644
- title: z69.any().optional().refine((value) => value === void 0, {
39944
+ title: z70.any().optional().refine((value) => value === void 0, {
39645
39945
  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."
39646
39946
  }),
39647
- metaTitle: z69.string().optional(),
39648
- metaDescription: z69.string().optional()
39947
+ metaTitle: z70.string().optional(),
39948
+ metaDescription: z70.string().optional()
39649
39949
  });
39650
- var dropdownLinkSchema = z69.object({
39651
- kind: z69.literal("dropdown")
39950
+ var dropdownLinkSchema = z70.object({
39951
+ kind: z70.literal("dropdown")
39652
39952
  });
39653
- var navigationLinkSchema = z69.discriminatedUnion("kind", [
39953
+ var navigationLinkSchema = z70.discriminatedUnion("kind", [
39654
39954
  ...navigationLinkInputSchemaOptions,
39655
39955
  dropdownLinkSchema
39656
39956
  ]);
39657
- var baseNavigationItemSchema = z69.object({
39658
- label: z69.string().min(1, "Label is required"),
39957
+ var baseNavigationItemSchema = z70.object({
39958
+ label: z70.string().min(1, "Label is required"),
39659
39959
  link: navigationLinkSchema,
39660
- isCta: z69.boolean().optional()
39960
+ isCta: z70.boolean().optional()
39661
39961
  });
39662
39962
  var navigationItemConfigSchema = baseNavigationItemSchema.extend({
39663
- children: z69.lazy(() => z69.array(navigationItemConfigSchema)).optional()
39664
- });
39665
- var navigationMenuConfigSchema = z69.object({
39666
- identifier: z69.string().min(1, "Identifier is required"),
39667
- name: z69.string().min(1, "Name is required"),
39668
- isPrimary: z69.boolean().optional(),
39669
- isFooter: z69.boolean().optional(),
39670
- items: z69.array(navigationItemConfigSchema)
39963
+ children: z70.lazy(() => z70.array(navigationItemConfigSchema)).optional()
39964
+ });
39965
+ var navigationMenuConfigSchema = z70.object({
39966
+ identifier: z70.string().min(1, "Identifier is required"),
39967
+ name: z70.string().min(1, "Name is required"),
39968
+ isPrimary: z70.boolean().optional(),
39969
+ isFooter: z70.boolean().optional(),
39970
+ items: z70.array(navigationItemConfigSchema)
39671
39971
  }).superRefine((menu, ctx) => {
39672
39972
  const portalStats = collectPortalLinkStats(
39673
39973
  menu.items
39674
39974
  );
39675
39975
  if (portalStats.count > 1) {
39676
39976
  ctx.addIssue({
39677
- code: z69.ZodIssueCode.custom,
39977
+ code: z70.ZodIssueCode.custom,
39678
39978
  message: "Only one portal link is allowed per navigation menu",
39679
39979
  path: ["items"]
39680
39980
  });
39681
39981
  }
39682
39982
  if (portalStats.nestedLabels.length > 0) {
39683
39983
  ctx.addIssue({
39684
- code: z69.ZodIssueCode.custom,
39984
+ code: z70.ZodIssueCode.custom,
39685
39985
  message: `Portal links must be root-level items: ${portalStats.nestedLabels.join(", ")}`,
39686
39986
  path: ["items"]
39687
39987
  });
39688
39988
  }
39689
39989
  if (portalStats.withChildrenLabels.length > 0) {
39690
39990
  ctx.addIssue({
39691
- code: z69.ZodIssueCode.custom,
39991
+ code: z70.ZodIssueCode.custom,
39692
39992
  message: `Portal links cannot contain child items: ${portalStats.withChildrenLabels.join(", ")}`,
39693
39993
  path: ["items"]
39694
39994
  });
@@ -39698,44 +39998,44 @@ var navigationMenuConfigSchema = z69.object({
39698
39998
  );
39699
39999
  if (cartStats.nestedLabels.length > 0) {
39700
40000
  ctx.addIssue({
39701
- code: z69.ZodIssueCode.custom,
40001
+ code: z70.ZodIssueCode.custom,
39702
40002
  message: `Cart links must be root-level items: ${cartStats.nestedLabels.join(", ")}`,
39703
40003
  path: ["items"]
39704
40004
  });
39705
40005
  }
39706
40006
  if (cartStats.withChildrenLabels.length > 0) {
39707
40007
  ctx.addIssue({
39708
- code: z69.ZodIssueCode.custom,
40008
+ code: z70.ZodIssueCode.custom,
39709
40009
  message: `Cart links cannot contain child items: ${cartStats.withChildrenLabels.join(", ")}`,
39710
40010
  path: ["items"]
39711
40011
  });
39712
40012
  }
39713
40013
  if (cartStats.ctaLabels.length > 0) {
39714
40014
  ctx.addIssue({
39715
- code: z69.ZodIssueCode.custom,
40015
+ code: z70.ZodIssueCode.custom,
39716
40016
  message: `Cart links cannot be marked as CTA: ${cartStats.ctaLabels.join(", ")}`,
39717
40017
  path: ["items"]
39718
40018
  });
39719
40019
  }
39720
40020
  if (cartStats.missingVisibleTextLabels.length > 0) {
39721
40021
  ctx.addIssue({
39722
- code: z69.ZodIssueCode.custom,
40022
+ code: z70.ZodIssueCode.custom,
39723
40023
  message: `Cart links with icon-with-label must provide a visible label: ${cartStats.missingVisibleTextLabels.join(", ")}`,
39724
40024
  path: ["items"]
39725
40025
  });
39726
40026
  }
39727
40027
  });
39728
- var siteSettingsConfigSchema = z69.object({
39729
- homepagePath: z69.string().optional(),
39730
- siteTitle: z69.string().optional(),
39731
- siteDescription: z69.string().optional(),
39732
- defaultTemplates: z69.record(z69.string(), z69.string()).optional()
40028
+ var siteSettingsConfigSchema = z70.object({
40029
+ homepagePath: z70.string().optional(),
40030
+ siteTitle: z70.string().optional(),
40031
+ siteDescription: z70.string().optional(),
40032
+ defaultTemplates: z70.record(z70.string(), z70.string()).optional()
39733
40033
  });
39734
- var contentConfigBaseSchema = z69.object({
39735
- contentTypes: z69.array(contentTypeConfigSchema).optional(),
39736
- entries: z69.array(entryConfigSchema).optional(),
39737
- pages: z69.array(pageConfigSchema).optional(),
39738
- navigationMenus: z69.array(navigationMenuConfigSchema).optional(),
40034
+ var contentConfigBaseSchema = z70.object({
40035
+ contentTypes: z70.array(contentTypeConfigSchema).optional(),
40036
+ entries: z70.array(entryConfigSchema).optional(),
40037
+ pages: z70.array(pageConfigSchema).optional(),
40038
+ navigationMenus: z70.array(navigationMenuConfigSchema).optional(),
39739
40039
  settings: siteSettingsConfigSchema.optional()
39740
40040
  });
39741
40041
  var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
@@ -39744,7 +40044,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39744
40044
  const duplicateKeys = keys.filter((key, i) => keys.indexOf(key) !== i);
39745
40045
  if (duplicateKeys.length > 0) {
39746
40046
  ctx.addIssue({
39747
- code: z69.ZodIssueCode.custom,
40047
+ code: z70.ZodIssueCode.custom,
39748
40048
  message: `Content type keys must be unique. Duplicates: ${duplicateKeys.join(", ")}`,
39749
40049
  path: ["contentTypes"]
39750
40050
  });
@@ -39755,7 +40055,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39755
40055
  const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
39756
40056
  if (duplicateIds.length > 0) {
39757
40057
  ctx.addIssue({
39758
- code: z69.ZodIssueCode.custom,
40058
+ code: z70.ZodIssueCode.custom,
39759
40059
  message: `Page identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
39760
40060
  path: ["pages"]
39761
40061
  });
@@ -39764,7 +40064,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39764
40064
  const duplicatePaths = paths.filter((path, i) => paths.indexOf(path) !== i);
39765
40065
  if (duplicatePaths.length > 0) {
39766
40066
  ctx.addIssue({
39767
- code: z69.ZodIssueCode.custom,
40067
+ code: z70.ZodIssueCode.custom,
39768
40068
  message: `Page paths must be unique. Duplicates: ${duplicatePaths.join(", ")}`,
39769
40069
  path: ["pages"]
39770
40070
  });
@@ -39775,7 +40075,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39775
40075
  const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
39776
40076
  if (duplicateIds.length > 0) {
39777
40077
  ctx.addIssue({
39778
- code: z69.ZodIssueCode.custom,
40078
+ code: z70.ZodIssueCode.custom,
39779
40079
  message: `Entry identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
39780
40080
  path: ["entries"]
39781
40081
  });
@@ -39786,7 +40086,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39786
40086
  const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
39787
40087
  if (duplicateIds.length > 0) {
39788
40088
  ctx.addIssue({
39789
- code: z69.ZodIssueCode.custom,
40089
+ code: z70.ZodIssueCode.custom,
39790
40090
  message: `Navigation menu identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
39791
40091
  path: ["navigationMenus"]
39792
40092
  });
@@ -39800,7 +40100,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
39800
40100
  const entriesForType = data.entries.filter((e) => e.contentType === singletonKey);
39801
40101
  if (entriesForType.length > 1) {
39802
40102
  ctx.addIssue({
39803
- code: z69.ZodIssueCode.custom,
40103
+ code: z70.ZodIssueCode.custom,
39804
40104
  message: `Singleton content type "${singletonKey}" cannot have more than one entry. Found ${entriesForType.length} entries.`,
39805
40105
  path: ["entries"]
39806
40106
  });
@@ -39913,18 +40213,18 @@ function validateLayout(layout) {
39913
40213
  }
39914
40214
 
39915
40215
  // src/config/dashboard-validation.ts
39916
- import { z as z70 } from "zod";
39917
- var navIdListSchema2 = z70.preprocess((value) => {
40216
+ import { z as z71 } from "zod";
40217
+ var navIdListSchema2 = z71.preprocess((value) => {
39918
40218
  if (!Array.isArray(value)) return void 0;
39919
40219
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
39920
40220
  return filtered.length > 0 ? filtered : void 0;
39921
- }, z70.array(z70.string()).max(200, "Maximum 200 nav IDs").optional());
39922
- var dashboardNavVisibilityBaseSchema2 = z70.object({
39923
- mode: z70.enum(["augment", "restrict"]).optional(),
40221
+ }, z71.array(z71.string()).max(200, "Maximum 200 nav IDs").optional());
40222
+ var dashboardNavVisibilityBaseSchema2 = z71.object({
40223
+ mode: z71.enum(["augment", "restrict"]).optional(),
39924
40224
  allowIds: navIdListSchema2,
39925
40225
  denyIds: navIdListSchema2
39926
40226
  }).strip();
39927
- var dashboardNavVisibilityRolesSchema2 = z70.object({
40227
+ var dashboardNavVisibilityRolesSchema2 = z71.object({
39928
40228
  administrator: dashboardNavVisibilityBaseSchema2.optional(),
39929
40229
  editor: dashboardNavVisibilityBaseSchema2.optional(),
39930
40230
  team_member: dashboardNavVisibilityBaseSchema2.optional()
@@ -39932,28 +40232,28 @@ var dashboardNavVisibilityRolesSchema2 = z70.object({
39932
40232
  var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
39933
40233
  roles: dashboardNavVisibilityRolesSchema2
39934
40234
  }).strip();
39935
- var dashboardNavigationConfigSchema2 = z70.object({
40235
+ var dashboardNavigationConfigSchema2 = z71.object({
39936
40236
  siteNav: dashboardNavVisibilitySchema2.optional(),
39937
40237
  settingsNav: dashboardNavVisibilitySchema2.optional()
39938
40238
  }).strip();
39939
- var dashboardConfigSchema2 = z70.object({
39940
- previewEditingEnabled: z70.boolean().optional(),
40239
+ var dashboardConfigSchema2 = z71.object({
40240
+ previewEditingEnabled: z71.boolean().optional(),
39941
40241
  navigation: dashboardNavigationConfigSchema2.optional()
39942
40242
  }).strip();
39943
40243
 
39944
40244
  // src/zod/titleSourceSchema.ts
39945
- import { z as z71 } from "zod";
39946
- var titleSourceValueSchema = z71.union([
39947
- z71.string().min(1),
39948
- z71.array(z71.string().min(1)).min(1)
40245
+ import { z as z72 } from "zod";
40246
+ var titleSourceValueSchema = z72.union([
40247
+ z72.string().min(1),
40248
+ z72.array(z72.string().min(1)).min(1)
39949
40249
  ]);
39950
40250
 
39951
40251
  // src/config/validation.ts
39952
- var sdkThemePaletteSchema2 = z72.record(z72.string(), z72.string());
39953
- var sdkThemeConfigSchema2 = z72.object({
40252
+ var sdkThemePaletteSchema2 = z73.record(z73.string(), z73.string());
40253
+ var sdkThemeConfigSchema2 = z73.object({
39954
40254
  palette: sdkThemePaletteSchema2
39955
40255
  });
39956
- var sdkSiteUrlSchema = z72.string().url("Must be a valid URL").refine((url) => {
40256
+ var sdkSiteUrlSchema = z73.string().url("Must be a valid URL").refine((url) => {
39957
40257
  try {
39958
40258
  const parsed = new URL(url);
39959
40259
  const isLocal = parsed.hostname === "localhost" || parsed.hostname.endsWith(".localhost") || parsed.hostname.endsWith(".local") || parsed.hostname.endsWith(".test");
@@ -39962,97 +40262,97 @@ var sdkSiteUrlSchema = z72.string().url("Must be a valid URL").refine((url) => {
39962
40262
  return false;
39963
40263
  }
39964
40264
  }, { message: "Production URLs must use HTTPS" }).transform((url) => url.replace(/\/$/, ""));
39965
- var sectionBackgroundSchema = z72.object({
39966
- id: z72.string(),
39967
- label: z72.string(),
39968
- token: z72.string()
40265
+ var sectionBackgroundSchema = z73.object({
40266
+ id: z73.string(),
40267
+ label: z73.string(),
40268
+ token: z73.string()
39969
40269
  // Reference to theme palette token
39970
40270
  });
39971
- var sectionSpacingSchema = z72.enum(["compact", "default", "spacious"]);
39972
- var containerMaxWidthSchema = z72.enum(["narrow", "default", "wide", "full"]);
39973
- var containerAlignmentSchema = z72.enum(["left", "center", "right"]);
39974
- var sectionOptionsSchema = z72.object({
39975
- backgroundColor: z72.boolean().optional(),
39976
- backgroundImage: z72.boolean().optional(),
39977
- backgroundGradient: z72.boolean().optional(),
39978
- spacing: z72.union([
39979
- z72.array(sectionSpacingSchema),
39980
- z72.boolean()
40271
+ var sectionSpacingSchema = z73.enum(["compact", "default", "spacious"]);
40272
+ var containerMaxWidthSchema = z73.enum(["narrow", "default", "wide", "full"]);
40273
+ var containerAlignmentSchema = z73.enum(["left", "center", "right"]);
40274
+ var sectionOptionsSchema = z73.object({
40275
+ backgroundColor: z73.boolean().optional(),
40276
+ backgroundImage: z73.boolean().optional(),
40277
+ backgroundGradient: z73.boolean().optional(),
40278
+ spacing: z73.union([
40279
+ z73.array(sectionSpacingSchema),
40280
+ z73.boolean()
39981
40281
  ]).optional(),
39982
- textColor: z72.boolean().optional()
40282
+ textColor: z73.boolean().optional()
39983
40283
  }).optional();
39984
- var containerOptionsSchema = z72.object({
39985
- maxWidth: z72.union([
39986
- z72.array(containerMaxWidthSchema),
39987
- z72.boolean()
40284
+ var containerOptionsSchema = z73.object({
40285
+ maxWidth: z73.union([
40286
+ z73.array(containerMaxWidthSchema),
40287
+ z73.boolean()
39988
40288
  ]).optional(),
39989
- alignment: z72.union([
39990
- z72.array(containerAlignmentSchema),
39991
- z72.boolean()
40289
+ alignment: z73.union([
40290
+ z73.array(containerAlignmentSchema),
40291
+ z73.boolean()
39992
40292
  ]).optional()
39993
40293
  }).optional();
39994
- var siteStyleConfigSchema = z72.object({
39995
- sectionBackgrounds: z72.array(sectionBackgroundSchema).optional(),
40294
+ var siteStyleConfigSchema = z73.object({
40295
+ sectionBackgrounds: z73.array(sectionBackgroundSchema).optional(),
39996
40296
  sectionOptions: sectionOptionsSchema,
39997
40297
  containerOptions: containerOptionsSchema
39998
40298
  }).optional();
39999
- var sdkLoaderEndpointSchema2 = z72.enum(SUPPORTED_LOADER_ENDPOINTS);
40299
+ var sdkLoaderEndpointSchema2 = z73.enum(SUPPORTED_LOADER_ENDPOINTS);
40000
40300
  var allowedTransformIds = new Set(builtinTransformDefinitions.map((transform) => transform.id));
40001
- var loaderTransformStepSchema = z72.object({
40002
- id: z72.string().refine((id) => allowedTransformIds.has(id), {
40301
+ var loaderTransformStepSchema = z73.object({
40302
+ id: z73.string().refine((id) => allowedTransformIds.has(id), {
40003
40303
  message: "Unknown transform id"
40004
40304
  }),
40005
- options: z72.record(z72.string(), z72.unknown()).optional()
40305
+ options: z73.record(z73.string(), z73.unknown()).optional()
40006
40306
  });
40007
- var loaderParamBindingSchema2 = z72.object({
40008
- $bind: z72.object({
40009
- from: z72.string().min(1, "Binding path is required"),
40307
+ var loaderParamBindingSchema2 = z73.object({
40308
+ $bind: z73.object({
40309
+ from: z73.string().min(1, "Binding path is required"),
40010
40310
  // Loader params are ultimately string-normalized for query strings, so fallbacks should
40011
40311
  // stay scalar. Use transforms (e.g. `value.jsonArray`) when you need to serialize
40012
40312
  // more complex values into a string.
40013
40313
  fallback: loaderFallbackScalarSchema.optional(),
40014
- transforms: z72.array(loaderTransformStepSchema).default([]),
40015
- pick: z72.enum(["value", "collection", "context"]).default("value"),
40016
- coerce: z72.enum(["number", "boolean", "string"]).optional()
40314
+ transforms: z73.array(loaderTransformStepSchema).default([]),
40315
+ pick: z73.enum(["value", "collection", "context"]).default("value"),
40316
+ coerce: z73.enum(["number", "boolean", "string"]).optional()
40017
40317
  })
40018
40318
  });
40019
- var loaderParamValueSchema2 = z72.union([
40020
- z72.string(),
40021
- z72.number(),
40022
- z72.boolean(),
40319
+ var loaderParamValueSchema2 = z73.union([
40320
+ z73.string(),
40321
+ z73.number(),
40322
+ z73.boolean(),
40023
40323
  loaderParamBindingSchema2
40024
40324
  ]);
40025
- var loaderWhenValueSchema = z72.union([
40026
- z72.boolean(),
40325
+ var loaderWhenValueSchema = z73.union([
40326
+ z73.boolean(),
40027
40327
  loaderParamBindingSchema2
40028
40328
  ]);
40029
- var sdkConfigLoaderSchema2 = z72.object({
40329
+ var sdkConfigLoaderSchema2 = z73.object({
40030
40330
  endpoint: sdkLoaderEndpointSchema2,
40031
- params: z72.record(z72.string(), loaderParamValueSchema2),
40032
- mode: z72.enum(["server", "client"]).default("server"),
40331
+ params: z73.record(z73.string(), loaderParamValueSchema2),
40332
+ mode: z73.enum(["server", "client"]).default("server"),
40033
40333
  when: loaderWhenValueSchema.optional()
40034
40334
  });
40035
- var sdkDataLoadersSchema2 = z72.record(z72.string(), sdkConfigLoaderSchema2).refine(
40335
+ var sdkDataLoadersSchema2 = z73.record(z73.string(), sdkConfigLoaderSchema2).refine(
40036
40336
  (loaders) => Object.keys(loaders).length <= 5,
40037
40337
  { message: "Maximum 5 data loaders per block" }
40038
40338
  ).optional();
40039
- var fieldSelectOptionSchema = z72.object({
40040
- value: z72.string().min(1, "Option value is required"),
40041
- label: z72.string().min(1, "Option label is required")
40339
+ var fieldSelectOptionSchema = z73.object({
40340
+ value: z73.string().min(1, "Option value is required"),
40341
+ label: z73.string().min(1, "Option label is required")
40042
40342
  });
40043
- var blockFieldConfigSchema = z72.object({
40044
- options: z72.array(fieldSelectOptionSchema).min(1, "At least one option is required").optional()
40343
+ var blockFieldConfigSchema = z73.object({
40344
+ options: z73.array(fieldSelectOptionSchema).min(1, "At least one option is required").optional()
40045
40345
  });
40046
- var blockFieldOptionsSchema = z72.record(
40047
- z72.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
40346
+ var blockFieldOptionsSchema = z73.record(
40347
+ z73.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
40048
40348
  message: "Block ID must be 'block.*' or 'custom.*' format"
40049
40349
  }),
40050
- z72.record(
40051
- z72.string().min(1, "Field ID is required"),
40350
+ z73.record(
40351
+ z73.string().min(1, "Field ID is required"),
40052
40352
  blockFieldConfigSchema
40053
40353
  )
40054
40354
  ).optional();
40055
- var blockFieldExtensionSchema = z72.object({
40355
+ var blockFieldExtensionSchema = z73.object({
40056
40356
  fields: fieldSchema.array().min(1, "At least one field is required")
40057
40357
  }).refine(
40058
40358
  (data) => {
@@ -40066,10 +40366,10 @@ var blockFieldExtensionSchema = z72.object({
40066
40366
  message: "Required fields must have a defaultValue to support existing blocks"
40067
40367
  }
40068
40368
  );
40069
- var blockFieldExtensionsMapSchema = z72.record(
40369
+ var blockFieldExtensionsMapSchema = z73.record(
40070
40370
  // System blocks are kebab-case: block.body-text, block.event-calendar, ...
40071
40371
  // Enforce: lowercase alphanumerics with single hyphens (no trailing hyphen, no consecutive hyphens).
40072
- z72.string().regex(/^block\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, {
40372
+ z73.string().regex(/^block\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, {
40073
40373
  message: "Block ID must be 'block.*' format (system blocks only)"
40074
40374
  }),
40075
40375
  blockFieldExtensionSchema
@@ -40085,7 +40385,7 @@ var blockFieldExtensionsMapSchema = z72.record(
40085
40385
  (field) => field.id === collision.fieldId
40086
40386
  );
40087
40387
  ctx.addIssue({
40088
- code: z72.ZodIssueCode.custom,
40388
+ code: z73.ZodIssueCode.custom,
40089
40389
  message: collision.message,
40090
40390
  path: [
40091
40391
  APPOINTMENT_BOOKING_BLOCK_ID,
@@ -40151,24 +40451,24 @@ function validateFieldIdConflicts(blockFieldExtensions) {
40151
40451
  }
40152
40452
  return conflicts;
40153
40453
  }
40154
- var syncConfigSchema = z72.object({
40155
- existingEntries: z72.enum(["skip", "update"]).optional()
40454
+ var syncConfigSchema = z73.object({
40455
+ existingEntries: z73.enum(["skip", "update"]).optional()
40156
40456
  }).optional();
40157
- var deployConfigSchema = z72.object({
40158
- verifyCommand: z72.string().optional(),
40159
- prebuildOutput: z72.string().optional()
40457
+ var deployConfigSchema = z73.object({
40458
+ verifyCommand: z73.string().optional(),
40459
+ prebuildOutput: z73.string().optional()
40160
40460
  }).optional();
40161
- var sdkCustomBlockSchema = z72.object({
40461
+ var sdkCustomBlockSchema = z73.object({
40162
40462
  // Block ID must start with 'custom.'
40163
- id: z72.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
40463
+ id: z73.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
40164
40464
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
40165
40465
  }),
40166
- title: z72.string().min(1, "Title is required"),
40466
+ title: z73.string().min(1, "Title is required"),
40167
40467
  titleSource: titleSourceValueSchema.optional(),
40168
- description: z72.string().optional(),
40468
+ description: z73.string().optional(),
40169
40469
  category: blockCategoryEnum,
40170
- icon: z72.string().optional(),
40171
- tags: z72.array(z72.string()).optional(),
40470
+ icon: z73.string().optional(),
40471
+ tags: z73.array(z73.string()).optional(),
40172
40472
  // Reuse the exact field schema from @riverbankcms/blocks - all field types supported
40173
40473
  fields: fieldSchema.array().min(1, "Custom blocks must have at least one field"),
40174
40474
  // Data loaders for CMS endpoints
@@ -40176,14 +40476,14 @@ var sdkCustomBlockSchema = z72.object({
40176
40476
  // Optional declarative layout - when present, block can render without React override
40177
40477
  layout: NodeSchema.optional(),
40178
40478
  // Optional variants system (preferred when a block has multiple structural layouts)
40179
- variants: z72.record(z72.string().min(1), NodeSchema).optional(),
40180
- defaultVariant: z72.string().min(1).optional(),
40181
- variantOptions: z72.record(
40182
- z72.string().min(1),
40183
- z72.object({
40184
- label: z72.string().min(1).optional(),
40185
- description: z72.string().min(1).optional(),
40186
- icon: z72.string().min(1).optional()
40479
+ variants: z73.record(z73.string().min(1), NodeSchema).optional(),
40480
+ defaultVariant: z73.string().min(1).optional(),
40481
+ variantOptions: z73.record(
40482
+ z73.string().min(1),
40483
+ z73.object({
40484
+ label: z73.string().min(1).optional(),
40485
+ description: z73.string().min(1).optional(),
40486
+ icon: z73.string().min(1).optional()
40187
40487
  })
40188
40488
  ).optional(),
40189
40489
  previewCustomize: previewCustomizeManifestCurationSchema.optional()
@@ -40195,7 +40495,7 @@ var sdkCustomBlockSchema = z72.object({
40195
40495
  const exists = fields3.some((field) => field.id === source);
40196
40496
  if (!exists) {
40197
40497
  ctx.addIssue({
40198
- code: z72.ZodIssueCode.custom,
40498
+ code: z73.ZodIssueCode.custom,
40199
40499
  message: `titleSource must reference a valid field ID (got "${source}")`,
40200
40500
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
40201
40501
  });
@@ -40204,7 +40504,7 @@ var sdkCustomBlockSchema = z72.object({
40204
40504
  }
40205
40505
  if (data.layout && data.variants) {
40206
40506
  ctx.addIssue({
40207
- code: z72.ZodIssueCode.custom,
40507
+ code: z73.ZodIssueCode.custom,
40208
40508
  message: "Custom block must define either `layout` or `variants`, not both",
40209
40509
  path: ["variants"]
40210
40510
  });
@@ -40214,7 +40514,7 @@ var sdkCustomBlockSchema = z72.object({
40214
40514
  if (!result.valid) {
40215
40515
  for (const error of result.errors) {
40216
40516
  ctx.addIssue({
40217
- code: z72.ZodIssueCode.custom,
40517
+ code: z73.ZodIssueCode.custom,
40218
40518
  message: error.message,
40219
40519
  path: ["layout"]
40220
40520
  });
@@ -40225,14 +40525,14 @@ var sdkCustomBlockSchema = z72.object({
40225
40525
  const keys = Object.keys(data.variants);
40226
40526
  if (keys.length === 0) {
40227
40527
  ctx.addIssue({
40228
- code: z72.ZodIssueCode.custom,
40528
+ code: z73.ZodIssueCode.custom,
40229
40529
  message: "`variants` must contain at least one variant key",
40230
40530
  path: ["variants"]
40231
40531
  });
40232
40532
  }
40233
40533
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
40234
40534
  ctx.addIssue({
40235
- code: z72.ZodIssueCode.custom,
40535
+ code: z73.ZodIssueCode.custom,
40236
40536
  message: "`defaultVariant` must be a key present in `variants`",
40237
40537
  path: ["defaultVariant"]
40238
40538
  });
@@ -40242,7 +40542,7 @@ var sdkCustomBlockSchema = z72.object({
40242
40542
  if (!result.valid) {
40243
40543
  for (const error of result.errors) {
40244
40544
  ctx.addIssue({
40245
- code: z72.ZodIssueCode.custom,
40545
+ code: z73.ZodIssueCode.custom,
40246
40546
  message: `${key}: ${error.message}`,
40247
40547
  path: ["variants", key]
40248
40548
  });
@@ -40253,7 +40553,7 @@ var sdkCustomBlockSchema = z72.object({
40253
40553
  for (const key of Object.keys(data.variantOptions)) {
40254
40554
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
40255
40555
  ctx.addIssue({
40256
- code: z72.ZodIssueCode.custom,
40556
+ code: z73.ZodIssueCode.custom,
40257
40557
  message: "`variantOptions` key must exist in `variants`",
40258
40558
  path: ["variantOptions", key]
40259
40559
  });
@@ -40262,58 +40562,58 @@ var sdkCustomBlockSchema = z72.object({
40262
40562
  }
40263
40563
  }
40264
40564
  });
40265
- var themeSourceSchema = z72.enum(["local", "cms"]).optional();
40266
- var activeThemeSchema = z72.string().regex(/^[a-z0-9][a-z0-9-_]*$/, {
40565
+ var themeSourceSchema = z73.enum(["local", "cms"]).optional();
40566
+ var activeThemeSchema = z73.string().regex(/^[a-z0-9][a-z0-9-_]*$/, {
40267
40567
  message: "Theme name must be lowercase alphanumeric with hyphens/underscores"
40268
40568
  }).max(64, "Theme name too long").optional();
40269
40569
  function isValidConfigBlockKind(kind) {
40270
40570
  if (getBlockDefinition(kind)) return true;
40271
40571
  return /^custom\.[a-z][a-z0-9-]*$/.test(kind);
40272
40572
  }
40273
- var layoutBlockKindSchema = z72.string().refine(isValidConfigBlockKind, {
40573
+ var layoutBlockKindSchema = z73.string().refine(isValidConfigBlockKind, {
40274
40574
  message: 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.my-block")'
40275
40575
  });
40276
- var layoutFooterBlockSchema = z72.object({
40277
- id: z72.string().min(1).optional(),
40576
+ var layoutFooterBlockSchema = z73.object({
40577
+ id: z73.string().min(1).optional(),
40278
40578
  kind: layoutBlockKindSchema,
40279
40579
  // Allow omitted content for blocks that rely on defaults.
40280
- content: z72.record(z72.string(), z72.unknown()).optional()
40580
+ content: z73.record(z73.string(), z73.unknown()).optional()
40281
40581
  }).strict();
40282
- var layoutConfigSchema = z72.object({
40283
- footerBlocks: z72.array(layoutFooterBlockSchema).optional()
40582
+ var layoutConfigSchema = z73.object({
40583
+ footerBlocks: z73.array(layoutFooterBlockSchema).optional()
40284
40584
  }).strict();
40285
- var sdkWorkflowIdSchema2 = z72.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
40585
+ var sdkWorkflowIdSchema2 = z73.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
40286
40586
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
40287
40587
  });
40288
- 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 "/"' });
40289
- var sdkWorkflowTriggerSchema2 = z72.discriminatedUnion("type", [
40290
- z72.object({ type: z72.literal("manual") }).strict()
40588
+ 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 "/"' });
40589
+ var sdkWorkflowTriggerSchema2 = z73.discriminatedUnion("type", [
40590
+ z73.object({ type: z73.literal("manual") }).strict()
40291
40591
  ]);
40292
- var sdkWorkflowConfirmationSchema2 = z72.object({
40293
- title: z72.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
40294
- body: z72.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
40592
+ var sdkWorkflowConfirmationSchema2 = z73.object({
40593
+ title: z73.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
40594
+ body: z73.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
40295
40595
  }).strict();
40296
- var sdkWorkflowConfigSchema2 = z72.object({
40596
+ var sdkWorkflowConfigSchema2 = z73.object({
40297
40597
  id: sdkWorkflowIdSchema2,
40298
- title: z72.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
40299
- description: z72.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
40300
- contentType: z72.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
40598
+ title: z73.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
40599
+ description: z73.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
40600
+ contentType: z73.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
40301
40601
  endpoint: sdkWorkflowEndpointSchema2,
40302
- triggers: z72.array(sdkWorkflowTriggerSchema2).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
40602
+ triggers: z73.array(sdkWorkflowTriggerSchema2).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
40303
40603
  confirmation: sdkWorkflowConfirmationSchema2.optional()
40304
40604
  }).strict();
40305
- var sdkWorkflowsSchema2 = z72.array(sdkWorkflowConfigSchema2).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
40605
+ var sdkWorkflowsSchema2 = z73.array(sdkWorkflowConfigSchema2).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
40306
40606
  const ids = workflows.map((workflow) => workflow.id);
40307
40607
  return ids.length === new Set(ids).size;
40308
40608
  }, { message: "Workflow IDs must be unique" }).optional();
40309
- var riverbankSiteConfigSchema = z72.object({
40310
- siteId: z72.string().uuid(),
40609
+ var riverbankSiteConfigSchema = z73.object({
40610
+ siteId: z73.string().uuid(),
40311
40611
  previewUrl: sdkSiteUrlSchema.optional(),
40312
40612
  liveUrl: sdkSiteUrlSchema.optional(),
40313
40613
  theme: sdkThemeConfigSchema2.optional(),
40314
40614
  styles: siteStyleConfigSchema,
40315
40615
  layout: layoutConfigSchema.optional(),
40316
- customBlocks: z72.array(sdkCustomBlockSchema).max(100, "Maximum 100 custom blocks per site").refine(
40616
+ customBlocks: z73.array(sdkCustomBlockSchema).max(100, "Maximum 100 custom blocks per site").refine(
40317
40617
  // Ensure unique block IDs
40318
40618
  (blocks) => {
40319
40619
  const ids = blocks.map((b) => b.id);
@@ -40326,7 +40626,7 @@ var riverbankSiteConfigSchema = z72.object({
40326
40626
  workflows: sdkWorkflowsSchema2,
40327
40627
  content: contentConfigSchema.optional(),
40328
40628
  // CLI-related configuration (Phase 4)
40329
- contentDir: z72.string().optional(),
40629
+ contentDir: z73.string().optional(),
40330
40630
  sync: syncConfigSchema,
40331
40631
  deploy: deployConfigSchema,
40332
40632
  // Theme sync configuration (Phase 5)