@riverbankcms/sdk 0.62.4 → 0.67.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 (349) hide show
  1. package/README.md +11 -0
  2. package/dist/_dts/api/src/accessAdmin.d.ts +64 -2
  3. package/dist/_dts/api/src/aiEndpoints.d.ts +2 -2
  4. package/dist/_dts/api/src/aiPlayground.d.ts +18 -11
  5. package/dist/_dts/api/src/apiEndpointTypes.d.ts +12 -0
  6. package/dist/_dts/api/src/billing.d.ts +46 -10
  7. package/dist/_dts/api/src/bookingConfig.d.ts +2 -0
  8. package/dist/_dts/api/src/bookingOperations.d.ts +1 -1
  9. package/dist/_dts/api/src/bookingRecords.d.ts +26 -0
  10. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +12 -1
  11. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  12. package/dist/_dts/api/src/courses.d.ts +3 -0
  13. package/dist/_dts/api/src/endpoints.d.ts +48 -0
  14. package/dist/_dts/api/src/index.d.ts +8 -5
  15. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +29 -40
  16. package/dist/_dts/api/src/sdkContracts.d.ts +14 -2
  17. package/dist/_dts/api/src/siteMembers.d.ts +1 -1
  18. package/dist/_dts/api/src/siteOnboarding.d.ts +4 -0
  19. package/dist/_dts/api/src/siteOperations.d.ts +11 -1
  20. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +29 -0
  21. package/dist/_dts/api/src/types.d.ts +2 -1
  22. package/dist/_dts/billing/src/plans/registry.d.ts +1 -0
  23. package/dist/_dts/billing/src/plans/types.d.ts +10 -1
  24. package/dist/_dts/block-form/src/FormRenderer.d.ts +38 -0
  25. package/dist/_dts/block-form/src/backend/adapter.d.ts +7 -0
  26. package/dist/_dts/block-form/src/backend/hooks/useRepeaterBackend.d.ts +34 -0
  27. package/dist/_dts/block-form/src/backend/hooks.d.ts +66 -0
  28. package/dist/_dts/block-form/src/backend/index.d.ts +12 -0
  29. package/dist/_dts/block-form/src/backend/rhf-backend.d.ts +34 -0
  30. package/dist/_dts/block-form/src/backend/store-backend.d.ts +60 -0
  31. package/dist/_dts/block-form/src/backend/types.d.ts +137 -0
  32. package/dist/_dts/block-form/src/backend/useBackendWatch.d.ts +22 -0
  33. package/dist/_dts/block-form/src/backend/utils/getErrorMessage.d.ts +1 -0
  34. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +70 -0
  35. package/dist/_dts/block-form/src/client/blockDraftSaveability.d.ts +1 -0
  36. package/dist/_dts/block-form/src/client/index.d.ts +30 -0
  37. package/dist/_dts/block-form/src/context/BlockContext.d.ts +29 -0
  38. package/dist/_dts/block-form/src/context/DisplayLabelResolverContext.d.ts +33 -0
  39. package/dist/_dts/block-form/src/context/FieldPreviewResolverContext.d.ts +30 -0
  40. package/dist/_dts/block-form/src/context/ImageResolveContext.d.ts +1 -0
  41. package/dist/_dts/block-form/src/context/index.d.ts +4 -0
  42. package/dist/_dts/block-form/src/fields/props.d.ts +48 -0
  43. package/dist/_dts/block-form/src/fields/types.d.ts +223 -0
  44. package/dist/_dts/block-form/src/index.d.ts +22 -0
  45. package/dist/_dts/block-form/src/manifest/ManifestForm.d.ts +37 -0
  46. package/dist/_dts/block-form/src/manifest/canonicalValidation.d.ts +5 -0
  47. package/dist/_dts/block-form/src/manifest/filterSdkTabs.d.ts +44 -0
  48. package/dist/_dts/block-form/src/manifest/manifestFormAdapter.d.ts +61 -0
  49. package/dist/_dts/block-form/src/manifest/mergeManifestWithSdkOptions.d.ts +24 -0
  50. package/dist/_dts/block-form/src/palette/PaletteContext.d.ts +11 -0
  51. package/dist/_dts/block-form/src/registry/schemas.d.ts +105 -0
  52. package/dist/_dts/block-form/src/registry/widgets.d.ts +59 -0
  53. package/dist/_dts/block-form/src/sdk-config/SdkConfigContext.d.ts +110 -0
  54. package/dist/_dts/block-form/src/sdk-config/hooks.d.ts +21 -0
  55. package/dist/_dts/block-form/src/sdk-config/index.d.ts +2 -0
  56. package/dist/_dts/block-form/src/shared/disclosure.d.ts +1 -0
  57. package/dist/_dts/block-form/src/shared/hooks/index.d.ts +2 -0
  58. package/dist/_dts/block-form/src/shared/hooks/useCoarsePointer.d.ts +5 -0
  59. package/dist/_dts/block-form/src/shared/hooks/useContainerWidth.d.ts +6 -0
  60. package/dist/_dts/block-form/src/utils/VisibilityWrapper.d.ts +25 -0
  61. package/dist/_dts/block-form/src/utils/computeWatchedPath.d.ts +18 -0
  62. package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +9 -0
  63. package/dist/_dts/block-form/src/utils/fieldHelpers.d.ts +94 -0
  64. package/dist/_dts/block-form/src/utils/resolvePromotedFields.d.ts +22 -0
  65. package/dist/_dts/block-form/src/utils/slug.d.ts +3 -0
  66. package/dist/_dts/block-form/src/utils/typeGuards.d.ts +3 -0
  67. package/dist/_dts/block-form/src/widgets/BackgroundColorWidget/BackgroundColorField.d.ts +10 -0
  68. package/dist/_dts/block-form/src/widgets/BackgroundColorWidget/BackgroundColorWidget.d.ts +23 -0
  69. package/dist/_dts/block-form/src/widgets/BackgroundColorWidget/index.d.ts +2 -0
  70. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientField.d.ts +13 -0
  71. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +17 -0
  72. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/index.d.ts +2 -0
  73. package/dist/_dts/block-form/src/widgets/BooleanField/BooleanField.d.ts +6 -0
  74. package/dist/_dts/block-form/src/widgets/BooleanField/booleanFieldDefaults.d.ts +6 -0
  75. package/dist/_dts/block-form/src/widgets/BooleanField/booleanFieldSchema.d.ts +7 -0
  76. package/dist/_dts/block-form/src/widgets/BooleanField/index.d.ts +3 -0
  77. package/dist/_dts/block-form/src/widgets/BoxStyleWidget/BoxStyleWidget.d.ts +17 -0
  78. package/dist/_dts/block-form/src/widgets/BoxStyleWidget/index.d.ts +1 -0
  79. package/dist/_dts/block-form/src/widgets/ContentTypeSelectField/contentTypeSelectFieldDefaults.d.ts +3 -0
  80. package/dist/_dts/block-form/src/widgets/ContentTypeSelectField/contentTypeSelectFieldSchema.d.ts +4 -0
  81. package/dist/_dts/block-form/src/widgets/DateField/DateField.d.ts +23 -0
  82. package/dist/_dts/block-form/src/widgets/DateField/dateFieldDefaults.d.ts +8 -0
  83. package/dist/_dts/block-form/src/widgets/DateField/dateFieldSchema.d.ts +9 -0
  84. package/dist/_dts/block-form/src/widgets/DateField/datePickerPopover.d.ts +32 -0
  85. package/dist/_dts/block-form/src/widgets/DateField/index.d.ts +4 -0
  86. package/dist/_dts/block-form/src/widgets/DateTimeField/DateTimeField.d.ts +30 -0
  87. package/dist/_dts/block-form/src/widgets/DateTimeField/dateTimeFieldDefaults.d.ts +8 -0
  88. package/dist/_dts/block-form/src/widgets/DateTimeField/dateTimeFieldSchema.d.ts +11 -0
  89. package/dist/_dts/block-form/src/widgets/DateTimeField/index.d.ts +4 -0
  90. package/dist/_dts/block-form/src/widgets/DateTimeField/utils/dateTimeUtils.d.ts +22 -0
  91. package/dist/_dts/block-form/src/widgets/DateTimeField/utils/index.d.ts +1 -0
  92. package/dist/_dts/block-form/src/widgets/EntryPickerField/entryPickerFieldDefaults.d.ts +3 -0
  93. package/dist/_dts/block-form/src/widgets/EntryPickerField/entryPickerFieldSchema.d.ts +4 -0
  94. package/dist/_dts/block-form/src/widgets/Field.d.ts +21 -0
  95. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +32 -0
  96. package/dist/_dts/block-form/src/widgets/FieldSettingsModal/FieldSettingsModal.d.ts +34 -0
  97. package/dist/_dts/block-form/src/widgets/FieldSettingsModal/index.d.ts +2 -0
  98. package/dist/_dts/block-form/src/widgets/GroupField/GroupField.d.ts +23 -0
  99. package/dist/_dts/block-form/src/widgets/GroupField/groupFieldDefaults.d.ts +9 -0
  100. package/dist/_dts/block-form/src/widgets/GroupField/groupFieldSchema.d.ts +10 -0
  101. package/dist/_dts/block-form/src/widgets/GroupField/index.d.ts +3 -0
  102. package/dist/_dts/block-form/src/widgets/LinkField/linkFieldDefaults.d.ts +10 -0
  103. package/dist/_dts/block-form/src/widgets/LinkField/linkFieldSchema.d.ts +3 -0
  104. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldDefaults.d.ts +6 -0
  105. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldSchema.d.ts +6 -0
  106. package/dist/_dts/block-form/src/widgets/ModalGroupField/ModalGroupField.d.ts +17 -0
  107. package/dist/_dts/block-form/src/widgets/ModalGroupField/index.d.ts +3 -0
  108. package/dist/_dts/block-form/src/widgets/ModalGroupField/modalFieldDefaults.d.ts +18 -0
  109. package/dist/_dts/block-form/src/widgets/ModalGroupField/modalFieldSchema.d.ts +14 -0
  110. package/dist/_dts/block-form/src/widgets/NumberField/NumberField.d.ts +7 -0
  111. package/dist/_dts/block-form/src/widgets/NumberField/index.d.ts +3 -0
  112. package/dist/_dts/block-form/src/widgets/NumberField/numberFieldDefaults.d.ts +6 -0
  113. package/dist/_dts/block-form/src/widgets/NumberField/numberFieldSchema.d.ts +7 -0
  114. package/dist/_dts/block-form/src/widgets/PresetOrCustomField/PresetOrCustomField.d.ts +11 -0
  115. package/dist/_dts/block-form/src/widgets/PresetOrCustomField/index.d.ts +4 -0
  116. package/dist/_dts/block-form/src/widgets/PresetOrCustomField/presetOrCustomFieldDefaults.d.ts +3 -0
  117. package/dist/_dts/block-form/src/widgets/PresetOrCustomField/presetOrCustomFieldSchema.d.ts +4 -0
  118. package/dist/_dts/block-form/src/widgets/PresetOrCustomField/types.d.ts +37 -0
  119. package/dist/_dts/block-form/src/widgets/ReferenceField/referenceFieldDefaults.d.ts +3 -0
  120. package/dist/_dts/block-form/src/widgets/ReferenceField/referenceFieldSchema.d.ts +4 -0
  121. package/dist/_dts/block-form/src/widgets/RepeaterField/RepeaterField.d.ts +26 -0
  122. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterDragHandle.d.ts +8 -0
  123. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterError.d.ts +11 -0
  124. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterHeader.d.ts +10 -0
  125. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterLayoutGrid.d.ts +27 -0
  126. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +19 -0
  127. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +23 -0
  128. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +16 -0
  129. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowContent.d.ts +19 -0
  130. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterTabbedEditDialog.d.ts +16 -0
  131. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailCard.d.ts +26 -0
  132. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterThumbnailGrid.d.ts +20 -0
  133. package/dist/_dts/block-form/src/widgets/RepeaterField/components/index.d.ts +11 -0
  134. package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +34 -0
  135. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +6 -0
  136. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/layoutGridCapacityDecision.d.ts +22 -0
  137. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLayoutGridCapacity.d.ts +20 -0
  138. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +23 -0
  139. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +10 -0
  140. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterRowErrors.d.ts +12 -0
  141. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterVisibility.d.ts +6 -0
  142. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +12 -0
  143. package/dist/_dts/block-form/src/widgets/RepeaterField/index.d.ts +3 -0
  144. package/dist/_dts/block-form/src/widgets/RepeaterField/repeaterFieldDefaults.d.ts +7 -0
  145. package/dist/_dts/block-form/src/widgets/RepeaterField/repeaterFieldSchema.d.ts +8 -0
  146. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildItemLabel.d.ts +7 -0
  147. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +7 -0
  148. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/createDefaultItem.d.ts +6 -0
  149. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/getRepeaterItemFieldGroups.d.ts +8 -0
  150. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/getRepeaterItemFields.d.ts +22 -0
  151. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +10 -0
  152. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/layoutGridCapacityContext.d.ts +2 -0
  153. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +43 -0
  154. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterPresentation.d.ts +24 -0
  155. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/resolveThumbnail.d.ts +12 -0
  156. package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldDefaults.d.ts +20 -0
  157. package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldSchema.d.ts +16 -0
  158. package/dist/_dts/block-form/src/widgets/SdkSelectField/SdkSelectField.d.ts +11 -0
  159. package/dist/_dts/block-form/src/widgets/SdkSelectField/index.d.ts +1 -0
  160. package/dist/_dts/block-form/src/widgets/SelectField/SelectField.d.ts +7 -0
  161. package/dist/_dts/block-form/src/widgets/SelectField/index.d.ts +3 -0
  162. package/dist/_dts/block-form/src/widgets/SelectField/selectFieldDefaults.d.ts +6 -0
  163. package/dist/_dts/block-form/src/widgets/SelectField/selectFieldSchema.d.ts +7 -0
  164. package/dist/_dts/block-form/src/widgets/SelectWidget.d.ts +34 -0
  165. package/dist/_dts/block-form/src/widgets/SettingsModal/SettingsModal.d.ts +17 -0
  166. package/dist/_dts/block-form/src/widgets/SettingsModal/index.d.ts +2 -0
  167. package/dist/_dts/block-form/src/widgets/SliderField/SliderField.d.ts +16 -0
  168. package/dist/_dts/block-form/src/widgets/SliderField/index.d.ts +1 -0
  169. package/dist/_dts/block-form/src/widgets/SlugField/SlugField.d.ts +39 -0
  170. package/dist/_dts/block-form/src/widgets/SlugField/hooks/index.d.ts +1 -0
  171. package/dist/_dts/block-form/src/widgets/SlugField/hooks/useSlugAutoGeneration.d.ts +29 -0
  172. package/dist/_dts/block-form/src/widgets/SlugField/index.d.ts +5 -0
  173. package/dist/_dts/block-form/src/widgets/SlugField/slugFieldDefaults.d.ts +8 -0
  174. package/dist/_dts/block-form/src/widgets/SlugField/slugFieldSchema.d.ts +14 -0
  175. package/dist/_dts/block-form/src/widgets/SlugField/utils/index.d.ts +2 -0
  176. package/dist/_dts/block-form/src/widgets/SlugField/utils/pathUtils.d.ts +30 -0
  177. package/dist/_dts/block-form/src/widgets/SlugField/utils/slugUtils.d.ts +17 -0
  178. package/dist/_dts/block-form/src/widgets/TabGroupField/TabGroupField.d.ts +13 -0
  179. package/dist/_dts/block-form/src/widgets/TabGroupField/index.d.ts +3 -0
  180. package/dist/_dts/block-form/src/widgets/TabGroupField/tabGroupFieldSchema.d.ts +25 -0
  181. package/dist/_dts/block-form/src/widgets/TabGroupField/types.d.ts +46 -0
  182. package/dist/_dts/block-form/src/widgets/TextField/TextField.d.ts +7 -0
  183. package/dist/_dts/block-form/src/widgets/TextField/index.d.ts +3 -0
  184. package/dist/_dts/block-form/src/widgets/TextField/textFieldDefaults.d.ts +6 -0
  185. package/dist/_dts/block-form/src/widgets/TextField/textFieldSchema.d.ts +7 -0
  186. package/dist/_dts/block-form/src/widgets/TextInputWidget.d.ts +20 -0
  187. package/dist/_dts/block-form/src/widgets/TimeField/TimeField.d.ts +23 -0
  188. package/dist/_dts/block-form/src/widgets/TimeField/index.d.ts +3 -0
  189. package/dist/_dts/block-form/src/widgets/TimeField/timeFieldDefaults.d.ts +8 -0
  190. package/dist/_dts/block-form/src/widgets/TimeField/timeFieldSchema.d.ts +9 -0
  191. package/dist/_dts/block-form/src/widgets/ToggleWidget.d.ts +16 -0
  192. package/dist/_dts/block-form/src/widgets/UrlField/UrlField.d.ts +23 -0
  193. package/dist/_dts/block-form/src/widgets/UrlField/index.d.ts +3 -0
  194. package/dist/_dts/block-form/src/widgets/UrlField/urlFieldDefaults.d.ts +8 -0
  195. package/dist/_dts/block-form/src/widgets/UrlField/urlFieldSchema.d.ts +9 -0
  196. package/dist/_dts/block-form/src/widgets/constants.d.ts +58 -0
  197. package/dist/_dts/block-form/src/widgets/groupFieldHelpers.d.ts +61 -0
  198. package/dist/_dts/block-form/src/widgets/index.d.ts +20 -0
  199. package/dist/_dts/block-form/src/widgets/selectValueMapping.d.ts +9 -0
  200. package/dist/_dts/block-form/src/widgets/types/modalConfig.d.ts +18 -0
  201. package/dist/_dts/block-form/src/widgets/utils/readNumericUiConfig.d.ts +10 -0
  202. package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
  203. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +4 -0
  204. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +2 -0
  205. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +1 -1
  206. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +2 -2
  207. package/dist/_dts/blocks/src/system/blocks/blog-post.d.ts +1 -1
  208. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +1 -1
  209. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +1 -1
  210. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +2 -2
  211. package/dist/_dts/blocks/src/system/blocks/columns.d.ts +1 -1
  212. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  213. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +1 -1
  214. package/dist/_dts/blocks/src/system/blocks/event-details.d.ts +25 -0
  215. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -2
  216. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +2 -2
  217. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +1 -1
  218. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +1 -1
  219. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +1 -1
  220. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +1 -1
  221. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  222. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +6 -6
  223. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +1 -1
  224. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +2 -2
  225. package/dist/_dts/blocks/src/system/blocks/products/shared.d.ts +2 -2
  226. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +1 -1
  227. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
  228. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +1 -1
  229. package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +1 -1
  230. package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +1 -1
  231. package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +1 -1
  232. package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +1 -1
  233. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +1 -1
  234. package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +1 -1
  235. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  236. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +1 -0
  237. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/view.d.ts +4 -1
  238. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +4 -1
  239. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +4 -1
  240. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +1 -0
  241. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +2 -1
  242. package/dist/_dts/calendar/src/grid.d.ts +60 -0
  243. package/dist/_dts/calendar/src/group.d.ts +14 -0
  244. package/dist/_dts/calendar/src/index.d.ts +6 -0
  245. package/dist/_dts/calendar/src/lane-packing.d.ts +28 -0
  246. package/dist/_dts/calendar/src/timetable.d.ts +90 -0
  247. package/dist/_dts/calendar/src/timezone.d.ts +19 -0
  248. package/dist/_dts/content-editor/src/index.d.ts +1 -4
  249. package/dist/_dts/core/src/booking-date-time.d.ts +1 -0
  250. package/dist/_dts/core/src/branded.d.ts +18 -0
  251. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +900 -69
  252. package/dist/_dts/editor-blocks/src/index.d.ts +1 -1
  253. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +7 -7
  254. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +1 -2
  255. package/dist/_dts/editor-blocks/src/widgets/link/index.d.ts +1 -0
  256. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +7 -3
  257. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  258. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  259. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
  260. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
  261. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +4 -0
  262. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +49 -0
  263. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +6 -0
  264. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -1
  265. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -0
  266. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +18 -0
  267. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +5 -0
  268. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +33 -0
  269. package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +2 -0
  270. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +18 -0
  271. package/dist/_dts/sdk/src/cli/content/entryPaths.d.ts +6 -0
  272. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -0
  273. package/dist/_dts/sdk/src/cli/env.d.ts +2 -1
  274. package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +3 -0
  275. package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +77 -0
  276. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePlan.d.ts +45 -0
  277. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +22 -0
  278. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +30 -0
  279. package/dist/_dts/sdk/src/cli/merge-remote/entryRemote.d.ts +9 -0
  280. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +50 -0
  281. package/dist/_dts/sdk/src/cli/merge-remote/stableJson.d.ts +3 -0
  282. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +13 -0
  283. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +114 -0
  284. package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +63 -0
  285. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +50 -0
  286. package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +57 -0
  287. package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +7 -0
  288. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +57 -0
  289. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +83 -0
  290. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +83 -0
  291. package/dist/_dts/sdk/src/cli/sync/executor.d.ts +11 -28
  292. package/dist/_dts/sdk/src/cli/sync/index.d.ts +1 -1
  293. package/dist/_dts/sdk/src/config/dashboard-validation.d.ts +0 -48
  294. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  295. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  296. package/dist/_dts/sdk/src/version.d.ts +1 -1
  297. package/dist/_dts/site-commands/src/adapter.d.ts +23 -0
  298. package/dist/_dts/site-commands/src/capabilityGaps.d.ts +8 -0
  299. package/dist/_dts/site-commands/src/commands.d.ts +2341 -0
  300. package/dist/_dts/site-commands/src/domain.d.ts +104 -0
  301. package/dist/_dts/site-commands/src/exposure.d.ts +41 -0
  302. package/dist/_dts/site-commands/src/guards.d.ts +1 -0
  303. package/dist/_dts/site-commands/src/index.d.ts +10 -0
  304. package/dist/_dts/site-commands/src/metadata.d.ts +503 -0
  305. package/dist/_dts/site-commands/src/planner.d.ts +58 -0
  306. package/dist/_dts/site-commands/src/refContributions.d.ts +10 -0
  307. package/dist/_dts/site-commands/src/refs.d.ts +87 -0
  308. package/dist/_dts/site-commands/src/staticExecutionGaps.d.ts +10 -0
  309. package/dist/_dts/theme-core/src/palette/utils/index.d.ts +1 -0
  310. package/dist/_dts/theme-core/src/palette/utils/onColor.d.ts +2 -0
  311. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +83 -0
  312. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  313. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +89 -12
  314. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +8 -2
  315. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  316. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +3 -2
  317. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -6
  318. package/dist/_dts/ui/src/callout.d.ts +1 -1
  319. package/dist/cli/index.mjs +6446 -1220
  320. package/dist/cli/init-docs/content/cli-reference.md +18 -0
  321. package/dist/client/bookings.mjs +25 -25
  322. package/dist/client/client.mjs +3157 -2858
  323. package/dist/client/hooks.mjs +2608 -2326
  324. package/dist/client/rendering/client.mjs +505 -176
  325. package/dist/client/rendering/islands.mjs +18329 -13012
  326. package/dist/client/rendering.mjs +1204 -903
  327. package/dist/preview-next/before-render.mjs +84 -13
  328. package/dist/preview-next/client/runtime.mjs +3149 -2452
  329. package/dist/preview-next/middleware.mjs +84 -13
  330. package/dist/server/components.mjs +936 -631
  331. package/dist/server/config-validation.mjs +2838 -2556
  332. package/dist/server/config.mjs +2838 -2556
  333. package/dist/server/data.mjs +2608 -2326
  334. package/dist/server/index.mjs +676 -552
  335. package/dist/server/next.mjs +3043 -2738
  336. package/dist/server/page-converter.mjs +201 -51
  337. package/dist/server/prebuild.mjs +1 -1
  338. package/dist/server/rendering/server.mjs +936 -631
  339. package/dist/server/rendering.mjs +936 -631
  340. package/dist/server/routing.mjs +2701 -2426
  341. package/dist/server/server.mjs +2626 -2344
  342. package/dist/server/theme-bridge.mjs +169 -52
  343. package/package.json +2 -1
  344. package/dist/_dts/content-editor/src/ai/patch/allowed.d.ts +0 -2
  345. package/dist/_dts/content-editor/src/ai/patch/diff.d.ts +0 -17
  346. package/dist/_dts/content-editor/src/ai/patch/schema.d.ts +0 -49
  347. package/dist/_dts/path-utils/src/index.d.ts +0 -8
  348. package/dist/_dts/path-utils/src/redirectPaths.d.ts +0 -26
  349. package/dist/_dts/path-utils/src/safeAppPath.d.ts +0 -26
@@ -5179,21 +5179,6 @@ var init_business_address = __esm({
5179
5179
  }
5180
5180
  });
5181
5181
 
5182
- // ../core/src/assert-never.ts
5183
- var init_assert_never = __esm({
5184
- "../core/src/assert-never.ts"() {
5185
- "use strict";
5186
- }
5187
- });
5188
-
5189
- // ../core/src/try-async.ts
5190
- var init_try_async = __esm({
5191
- "../core/src/try-async.ts"() {
5192
- "use strict";
5193
- init_result();
5194
- }
5195
- });
5196
-
5197
5182
  // ../core/src/narrow-result.ts
5198
5183
  var init_narrow_result = __esm({
5199
5184
  "../core/src/narrow-result.ts"() {
@@ -5205,7 +5190,6 @@ var init_narrow_result = __esm({
5205
5190
  var init_non_empty_array = __esm({
5206
5191
  "../core/src/non-empty-array.ts"() {
5207
5192
  "use strict";
5208
- init_result();
5209
5193
  }
5210
5194
  });
5211
5195
 
@@ -5227,7 +5211,6 @@ var init_sensitive_collection = __esm({
5227
5211
  var init_assertNever = __esm({
5228
5212
  "../core/src/assertNever.ts"() {
5229
5213
  "use strict";
5230
- init_assert_never();
5231
5214
  }
5232
5215
  });
5233
5216
 
@@ -5235,8 +5218,6 @@ var init_assertNever = __esm({
5235
5218
  var init_participants = __esm({
5236
5219
  "../core/src/participants.ts"() {
5237
5220
  "use strict";
5238
- init_branded();
5239
- init_result();
5240
5221
  }
5241
5222
  });
5242
5223
 
@@ -5244,7 +5225,6 @@ var init_participants = __esm({
5244
5225
  var init_participant_identity = __esm({
5245
5226
  "../core/src/participant-identity.ts"() {
5246
5227
  "use strict";
5247
- init_assertNever();
5248
5228
  }
5249
5229
  });
5250
5230
 
@@ -5266,8 +5246,6 @@ var init_src = __esm({
5266
5246
  init_location();
5267
5247
  init_business_address();
5268
5248
  init_result();
5269
- init_assert_never();
5270
- init_try_async();
5271
5249
  init_narrow_result();
5272
5250
  init_non_empty_array();
5273
5251
  init_editor_state();
@@ -5396,7 +5374,6 @@ var init_typeGuards = __esm({
5396
5374
  var init_filePersistence = __esm({
5397
5375
  "../media-core/src/filePersistence.ts"() {
5398
5376
  "use strict";
5399
- init_src();
5400
5377
  }
5401
5378
  });
5402
5379
 
@@ -5404,7 +5381,6 @@ var init_filePersistence = __esm({
5404
5381
  var init_fileUploadFinalization = __esm({
5405
5382
  "../media-core/src/fileUploadFinalization.ts"() {
5406
5383
  "use strict";
5407
- init_src();
5408
5384
  }
5409
5385
  });
5410
5386
 
@@ -5412,7 +5388,6 @@ var init_fileUploadFinalization = __esm({
5412
5388
  var init_fileUploadSessionCreation = __esm({
5413
5389
  "../media-core/src/fileUploadSessionCreation.ts"() {
5414
5390
  "use strict";
5415
- init_src();
5416
5391
  }
5417
5392
  });
5418
5393
 
@@ -5420,7 +5395,6 @@ var init_fileUploadSessionCreation = __esm({
5420
5395
  var init_fileUploadAssetBuilder = __esm({
5421
5396
  "../media-core/src/fileUploadAssetBuilder.ts"() {
5422
5397
  "use strict";
5423
- init_src();
5424
5398
  }
5425
5399
  });
5426
5400
 
@@ -5428,7 +5402,6 @@ var init_fileUploadAssetBuilder = __esm({
5428
5402
  var init_fileUploadCompletion = __esm({
5429
5403
  "../media-core/src/fileUploadCompletion.ts"() {
5430
5404
  "use strict";
5431
- init_src();
5432
5405
  }
5433
5406
  });
5434
5407
 
@@ -5436,7 +5409,6 @@ var init_fileUploadCompletion = __esm({
5436
5409
  var init_fileUploadDurableFinalization = __esm({
5437
5410
  "../media-core/src/fileUploadDurableFinalization.ts"() {
5438
5411
  "use strict";
5439
- init_src();
5440
5412
  }
5441
5413
  });
5442
5414
 
@@ -5451,7 +5423,6 @@ var init_fileUploadCleanup = __esm({
5451
5423
  var init_fileDownloadResolution = __esm({
5452
5424
  "../media-core/src/fileDownloadResolution.ts"() {
5453
5425
  "use strict";
5454
- init_src();
5455
5426
  }
5456
5427
  });
5457
5428
 
@@ -5459,7 +5430,6 @@ var init_fileDownloadResolution = __esm({
5459
5430
  var init_fileAssetDeletion = __esm({
5460
5431
  "../media-core/src/fileAssetDeletion.ts"() {
5461
5432
  "use strict";
5462
- init_src();
5463
5433
  }
5464
5434
  });
5465
5435
 
@@ -5467,7 +5437,6 @@ var init_fileAssetDeletion = __esm({
5467
5437
  var init_fileAssetCompatibility = __esm({
5468
5438
  "../media-core/src/fileAssetCompatibility.ts"() {
5469
5439
  "use strict";
5470
- init_src();
5471
5440
  }
5472
5441
  });
5473
5442
 
@@ -5486,7 +5455,6 @@ var VIDEO_PREP_LIMITS;
5486
5455
  var init_videoPrep = __esm({
5487
5456
  "../media-core/src/videoPrep.ts"() {
5488
5457
  "use strict";
5489
- init_src();
5490
5458
  VIDEO_PREP_LIMITS = {
5491
5459
  maxRawByteCount: 500 * 1024 * 1024,
5492
5460
  inlineContentMaxDurationSeconds: 60,
@@ -9408,7 +9376,7 @@ function okWith(data) {
9408
9376
  function err2(error) {
9409
9377
  return { ok: false, error };
9410
9378
  }
9411
- function assertNever5(value, message) {
9379
+ function assertNever4(value, message) {
9412
9380
  throw new Error(message ?? `Unexpected value: ${String(value)}`);
9413
9381
  }
9414
9382
  var init_dist = __esm({
@@ -9554,7 +9522,7 @@ function deriveBookingFormViewState(input) {
9554
9522
  resourceName: input.verificationState.resourceName
9555
9523
  };
9556
9524
  default:
9557
- return assertNever5(input.verificationState);
9525
+ return assertNever4(input.verificationState);
9558
9526
  }
9559
9527
  }
9560
9528
  function resolveBookingSiteId(siteId, form2) {
@@ -9637,7 +9605,7 @@ function getBookingServicePaymentSelectionMode(service) {
9637
9605
  case "flexible_balance":
9638
9606
  return "implicit_flexible_balance";
9639
9607
  default:
9640
- return assertNever5(onlyKind);
9608
+ return assertNever4(onlyKind);
9641
9609
  }
9642
9610
  }
9643
9611
  if (allowedKinds.length === 2 && allowedKinds.includes("upfront") && (allowedKinds.includes("deferred_manual") || allowedKinds.includes("instalment_plan") || allowedKinds.includes("flexible_balance"))) {
@@ -9839,7 +9807,7 @@ function formatBookingSubmissionPreparationError(error) {
9839
9807
  case "service-missing-duration":
9840
9808
  return `Service "${error.serviceTitle}" is missing duration. Please update the service in the dashboard to include a duration (e.g., 30 minutes).`;
9841
9809
  default:
9842
- return assertNever5(error);
9810
+ return assertNever4(error);
9843
9811
  }
9844
9812
  }
9845
9813
  function getBookingSuccessMessage(successMessage) {
@@ -11284,6 +11252,11 @@ var init_CoursePricingDisplay = __esm({
11284
11252
 
11285
11253
  // ../blocks/src/system/runtime/nodes/event-details/view.tsx
11286
11254
  import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs9 } from "react/jsx-runtime";
11255
+ function formatAutoApplyDiscountLine(preview, currency) {
11256
+ const rate = preview.discountType === "percent" ? `${preview.discountPercent}% off` : `${formatCoursePriceAmount(preview.discountAmountCents, currency)} off`;
11257
+ const label = preview.publicLabel.trim() || "Discount";
11258
+ return preview.minTicketsRequired && preview.minTicketsRequired > 1 ? `${label} \u2014 ${rate} when buying ${preview.minTicketsRequired}+ tickets` : `${label} \u2014 ${rate} applied automatically`;
11259
+ }
11287
11260
  function TeamMemberName({
11288
11261
  name,
11289
11262
  profilePath
@@ -11300,6 +11273,7 @@ function EventDetailsView({
11300
11273
  showAcceptedMemberships = true,
11301
11274
  applicablePasses = [],
11302
11275
  applicableMemberships = [],
11276
+ autoApplyDiscount = null,
11303
11277
  mapHeight = 200,
11304
11278
  mapClassName = "event-details-map",
11305
11279
  renderVenueMap
@@ -11375,6 +11349,7 @@ function EventDetailsView({
11375
11349
  ) : shouldShowEventCost ? /* @__PURE__ */ jsxs9("div", { className: "rb-mt-6", children: [
11376
11350
  /* @__PURE__ */ jsx23("div", { className: "rb-label rb-mb-2", children: "Cost" }),
11377
11351
  eventPrice !== null ? /* @__PURE__ */ jsx23("p", { children: /* @__PURE__ */ jsx23("strong", { children: formatCoursePriceAmount(eventPrice, selected.currency ?? "USD") }) }) : /* @__PURE__ */ jsx23("p", { className: "rb-caption status-muted", children: "See checkout for details" }),
11352
+ autoApplyDiscount ? /* @__PURE__ */ jsx23("p", { className: "rb-caption rb-mt-1", children: formatAutoApplyDiscountLine(autoApplyDiscount, selected.currency ?? "USD") }) : null,
11378
11353
  hasAcceptedItems ? /* @__PURE__ */ jsxs9("p", { className: "rb-caption rb-mt-1", children: [
11379
11354
  "You can also attend with: ",
11380
11355
  acceptedItems.join(", ")
@@ -11432,6 +11407,7 @@ function EventDetailsSSR({
11432
11407
  showAcceptedMemberships = true,
11433
11408
  sitePasses,
11434
11409
  siteMemberships,
11410
+ autoApplyDiscount,
11435
11411
  className,
11436
11412
  children
11437
11413
  }) {
@@ -11468,6 +11444,7 @@ function EventDetailsSSR({
11468
11444
  showAcceptedMemberships,
11469
11445
  sitePasses,
11470
11446
  siteMemberships,
11447
+ autoApplyDiscount,
11471
11448
  className,
11472
11449
  nowIso
11473
11450
  }
@@ -11485,6 +11462,7 @@ function EventDetailsSSR({
11485
11462
  showAcceptedMemberships,
11486
11463
  applicablePasses,
11487
11464
  applicableMemberships,
11465
+ autoApplyDiscount: autoApplyDiscount ?? null,
11488
11466
  mapClassName: "venue-map event-details-map",
11489
11467
  renderVenueMap: ({ venueName, className: className2, height }) => /* @__PURE__ */ jsx24("div", { className: "event-details-map-wrap rb-w-full rb-ml-auto", children: /* @__PURE__ */ jsx24(
11490
11468
  "div",
@@ -14690,6 +14668,44 @@ var init_core2 = __esm({
14690
14668
  }
14691
14669
  });
14692
14670
 
14671
+ // ../theme-core/src/palette/utils/onColor.ts
14672
+ function onColorTokenName(backgroundToken) {
14673
+ return `on${backgroundToken.split("-").filter((part) => part.length > 0).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("")}`;
14674
+ }
14675
+ function isOnColorBackgroundCandidateToken(token) {
14676
+ const role = token.match(/^(.*?)(?:-\d{2,3})?$/)?.[1] ?? token;
14677
+ return BACKGROUND_ROLE_NAMES.has(role);
14678
+ }
14679
+ var BACKGROUND_ROLE_NAMES;
14680
+ var init_onColor = __esm({
14681
+ "../theme-core/src/palette/utils/onColor.ts"() {
14682
+ "use strict";
14683
+ BACKGROUND_ROLE_NAMES = /* @__PURE__ */ new Set([
14684
+ "primary",
14685
+ "secondary",
14686
+ "accent",
14687
+ "success",
14688
+ "warning",
14689
+ "destructive",
14690
+ "info",
14691
+ "background",
14692
+ "surface",
14693
+ "surfaceAlt",
14694
+ "muted",
14695
+ "neutral"
14696
+ ]);
14697
+ }
14698
+ });
14699
+
14700
+ // ../theme-core/src/site-styles/accessibleSurfaces.ts
14701
+ var init_accessibleSurfaces = __esm({
14702
+ "../theme-core/src/site-styles/accessibleSurfaces.ts"() {
14703
+ "use strict";
14704
+ init_contrast2();
14705
+ init_onColor();
14706
+ }
14707
+ });
14708
+
14693
14709
  // ../theme-core/src/site-styles/appearancePresetResolution.ts
14694
14710
  function assertValidOptionGroups(preset2) {
14695
14711
  preset2.optionGroups?.forEach((group) => {
@@ -17140,11 +17156,21 @@ function asHeaderLookId(value) {
17140
17156
  return value;
17141
17157
  }
17142
17158
  function baseHeader(theme) {
17159
+ const {
17160
+ navLinkStyle: _navLinkStyle,
17161
+ dropdownStyle: _dropdownStyle,
17162
+ ctaVariant: _ctaVariant,
17163
+ navContainer: _navContainer,
17164
+ container: _container,
17165
+ shadow: _shadow,
17166
+ logo: _logo,
17167
+ logoText: _logoText,
17168
+ border: _border,
17169
+ ...header
17170
+ } = theme.header;
17143
17171
  return {
17144
- ...theme.header,
17145
- navLinkStyle: void 0,
17146
- dropdownStyle: void 0,
17147
- ctaVariant: void 0
17172
+ ...header,
17173
+ navContainer: { type: "none", tint: null, opacity: 0.15 }
17148
17174
  };
17149
17175
  }
17150
17176
  function solidBrandHeader(theme) {
@@ -17635,7 +17661,8 @@ function defineCuratedSiteStyle(input) {
17635
17661
  name: input.name,
17636
17662
  description: input.description,
17637
17663
  generationBrief: input.generationBrief,
17638
- selectionKeywords: input.selectionKeywords ?? [],
17664
+ selectionKeywordRules: input.selectionKeywordRules ?? [],
17665
+ siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
17639
17666
  template: {
17640
17667
  id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
17641
17668
  name: input.name,
@@ -17680,6 +17707,9 @@ var init_curatedSiteStyles = __esm({
17680
17707
  "site-style:bright-community",
17681
17708
  "site-style:quiet-luxury",
17682
17709
  "site-style:practical-services",
17710
+ "site-style:quiet-practice",
17711
+ "site-style:personal-retreat-journal",
17712
+ "site-style:tactile-workshop",
17683
17713
  "site-style:modern-wellness",
17684
17714
  "site-style:bold-launch",
17685
17715
  "site-style:south-west-twerk-school"
@@ -17863,12 +17893,13 @@ var init_curatedSiteStyles = __esm({
17863
17893
  name: "Quiet Luxury",
17864
17894
  description: "Minimal, confident, and refined for premium experiences and private services.",
17865
17895
  generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
17866
- selectionKeywords: [
17867
- "luxury",
17868
- "premium",
17869
- "boutique",
17870
- "bespoke",
17871
- "exclusive"
17896
+ siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
17897
+ selectionKeywordRules: [
17898
+ { kind: "word", value: "luxury" },
17899
+ { kind: "word", value: "premium" },
17900
+ { kind: "word", value: "boutique" },
17901
+ { kind: "word", value: "bespoke" },
17902
+ { kind: "word", value: "exclusive" }
17872
17903
  ],
17873
17904
  tokenRecipes: {
17874
17905
  palette: "high-contrast",
@@ -17897,13 +17928,14 @@ var init_curatedSiteStyles = __esm({
17897
17928
  name: "Practical Services",
17898
17929
  description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
17899
17930
  generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
17900
- selectionKeywords: [
17901
- "repair",
17902
- "plumb",
17903
- "electric",
17904
- "cleaning",
17905
- "landscap",
17906
- "contractor"
17931
+ siteCreatorSelection: { kind: "primary_goal_support" },
17932
+ selectionKeywordRules: [
17933
+ { kind: "word", value: "repair" },
17934
+ { kind: "substring", value: "plumb" },
17935
+ { kind: "substring", value: "electric" },
17936
+ { kind: "word", value: "cleaning" },
17937
+ { kind: "substring", value: "landscap" },
17938
+ { kind: "substring", value: "contractor" }
17907
17939
  ],
17908
17940
  tokenRecipes: {
17909
17941
  palette: "brand-led",
@@ -17954,18 +17986,134 @@ var init_curatedSiteStyles = __esm({
17954
17986
  paletteChoice("warm-neutral-forest")
17955
17987
  ]
17956
17988
  }),
17989
+ defineCuratedSiteStyle({
17990
+ id: "site-style:quiet-practice",
17991
+ name: "Quiet Practice",
17992
+ description: "Grounded, calm, and practical for small appointment-first practices.",
17993
+ generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
17994
+ siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
17995
+ selectionKeywordRules: [
17996
+ { kind: "substring", value: "massage" },
17997
+ { kind: "word", value: "bodywork" },
17998
+ { kind: "phrase", value: "appointment practice" },
17999
+ { kind: "phrase", value: "appointment-first" },
18000
+ { kind: "substring", value: "practitioner" },
18001
+ { kind: "substring", value: "therap" },
18002
+ { kind: "substring", value: "clinic" },
18003
+ { kind: "phrase", value: "wellness practice" }
18004
+ ],
18005
+ tokenRecipes: {
18006
+ palette: "soft-natural",
18007
+ contrast: "standard",
18008
+ radius: "soft",
18009
+ shadow: "subtle",
18010
+ typography: "clean-sans",
18011
+ spacing: "regular",
18012
+ motion: "subtle"
18013
+ },
18014
+ compositionBudget: quietBudget,
18015
+ recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
18016
+ buttonPersonalityChoices: [
18017
+ buttonChoice("pebble"),
18018
+ buttonChoice("soft-pill"),
18019
+ buttonChoice("editorial-link")
18020
+ ],
18021
+ paletteVariantChoices: [
18022
+ paletteChoice("soft-natural-stone"),
18023
+ paletteChoice("soft-natural-sage"),
18024
+ paletteChoice("warm-neutral-clay")
18025
+ ]
18026
+ }),
18027
+ defineCuratedSiteStyle({
18028
+ id: "site-style:personal-retreat-journal",
18029
+ name: "Personal Retreat Journal",
18030
+ description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
18031
+ generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
18032
+ siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
18033
+ selectionKeywordRules: [
18034
+ { kind: "substring", value: "retreat" },
18035
+ { kind: "phrase", value: "solo practitioner" },
18036
+ { kind: "phrase", value: "personal brand" },
18037
+ { kind: "substring", value: "teacher" },
18038
+ { kind: "substring", value: "coach" },
18039
+ { kind: "phrase", value: "retreat resources" },
18040
+ { kind: "substring", value: "journal" }
18041
+ ],
18042
+ tokenRecipes: {
18043
+ palette: "warm-neutral",
18044
+ contrast: "standard",
18045
+ radius: "soft",
18046
+ shadow: "subtle",
18047
+ typography: "serif-editorial",
18048
+ spacing: "airy",
18049
+ motion: "subtle"
18050
+ },
18051
+ compositionBudget: balancedBudget,
18052
+ recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
18053
+ buttonPersonalityChoices: [
18054
+ buttonChoice("editorial-link"),
18055
+ buttonChoice("soft-pill"),
18056
+ buttonChoice("brushed-wash")
18057
+ ],
18058
+ paletteVariantChoices: [
18059
+ paletteChoice("warm-neutral-forest"),
18060
+ paletteChoice("warm-neutral-clay"),
18061
+ paletteChoice("soft-natural-stone")
18062
+ ]
18063
+ }),
18064
+ defineCuratedSiteStyle({
18065
+ id: "site-style:tactile-workshop",
18066
+ name: "Tactile Workshop",
18067
+ description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
18068
+ generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
18069
+ siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
18070
+ selectionKeywordRules: [
18071
+ { kind: "substring", value: "ceramic" },
18072
+ { kind: "word", value: "pottery" },
18073
+ { kind: "phrase", value: "maker studio" },
18074
+ { kind: "phrase", value: "craft class" },
18075
+ { kind: "phrase", value: "craft workshop" },
18076
+ { kind: "word", value: "clay" },
18077
+ { kind: "word", value: "kiln" }
18078
+ ],
18079
+ tokenRecipes: {
18080
+ palette: "brand-led",
18081
+ contrast: "standard",
18082
+ radius: "soft",
18083
+ shadow: "subtle",
18084
+ typography: "friendly-sans",
18085
+ spacing: "regular",
18086
+ motion: "subtle"
18087
+ },
18088
+ compositionBudget: balancedBudget,
18089
+ recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
18090
+ recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
18091
+ buttonPersonalityChoices: [
18092
+ buttonChoice("pebble"),
18093
+ buttonChoice("confident-chip"),
18094
+ buttonChoice("ink-stamp"),
18095
+ buttonChoice("editorial-link")
18096
+ ],
18097
+ paletteVariantChoices: [
18098
+ paletteChoice("brand-led-warm"),
18099
+ paletteChoice("brand-led-cool"),
18100
+ paletteChoice("soft-natural-watercolor"),
18101
+ paletteChoice("warm-neutral-clay")
18102
+ ]
18103
+ }),
17957
18104
  defineCuratedSiteStyle({
17958
18105
  id: "site-style:bold-launch",
17959
18106
  name: "Bold Launch",
17960
18107
  description: "High-energy and punchy for launches, campaigns, and creative offers.",
17961
18108
  generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
17962
- selectionKeywords: [
17963
- "launch",
17964
- "campaign",
17965
- "preorder",
17966
- "pre-order",
17967
- "waitlist",
17968
- "drop"
18109
+ siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
18110
+ selectionKeywordRules: [
18111
+ { kind: "substring", value: "launch" },
18112
+ { kind: "substring", value: "campaign" },
18113
+ { kind: "word", value: "preorder" },
18114
+ { kind: "phrase", value: "pre-order" },
18115
+ { kind: "substring", value: "waitlist" },
18116
+ { kind: "word", value: "drop" }
17969
18117
  ],
17970
18118
  tokenRecipes: {
17971
18119
  palette: "high-contrast",
@@ -17996,15 +18144,6 @@ var init_curatedSiteStyles = __esm({
17996
18144
  name: "South West Twerk School",
17997
18145
  description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
17998
18146
  generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
17999
- selectionKeywords: [
18000
- "dance",
18001
- "classes",
18002
- "workshop",
18003
- "school",
18004
- "movement",
18005
- "performance",
18006
- "community"
18007
- ],
18008
18147
  tokenRecipes: {
18009
18148
  palette: "brand-led",
18010
18149
  contrast: "maximum",
@@ -18293,6 +18432,131 @@ var init_modern_minimal = __esm({
18293
18432
  }
18294
18433
  });
18295
18434
 
18435
+ // ../theme-core/src/palette/generateShades.ts
18436
+ function generateShades(hexColor, name) {
18437
+ const shadeSteps = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
18438
+ const base = featuresFromHex(hexColor);
18439
+ const hue = base.okH;
18440
+ const baseChroma = base.okC;
18441
+ const toneMap = {
18442
+ 50: 0.975,
18443
+ 100: 0.945,
18444
+ 200: 0.89,
18445
+ 300: 0.82,
18446
+ 400: 0.74,
18447
+ 500: 0.66,
18448
+ 600: 0.58,
18449
+ 700: 0.49,
18450
+ 800: 0.4,
18451
+ 900: 0.28,
18452
+ 950: 0.16
18453
+ };
18454
+ const shadeDefs = shadeSteps.map((step, idx) => {
18455
+ const t = idx / (shadeSteps.length - 1);
18456
+ const L2 = toneMap[step];
18457
+ const chromaFactor = 0.06 + 0.94 * Math.sin(Math.PI * t);
18458
+ const C = baseChroma * chromaFactor;
18459
+ return {
18460
+ name: `${name}-${step}`,
18461
+ hex: oklchToHexGamut(L2, C, hue)
18462
+ };
18463
+ });
18464
+ shadeDefs.push({ name, hex: hexColor });
18465
+ return shadeDefs;
18466
+ }
18467
+ var init_generateShades = __esm({
18468
+ "../theme-core/src/palette/generateShades.ts"() {
18469
+ "use strict";
18470
+ init_colorConversion();
18471
+ }
18472
+ });
18473
+
18474
+ // ../theme-core/src/palette/neutralScale.ts
18475
+ function generateNeutralScale({
18476
+ background,
18477
+ steps = 11,
18478
+ warm = false
18479
+ }) {
18480
+ const isDark = background === "#000000" || background.startsWith("#0") || background.startsWith("#1");
18481
+ const shadeNames = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
18482
+ const count = Math.min(steps, shadeNames.length);
18483
+ const scale = [];
18484
+ for (let i = 0; i < count; i++) {
18485
+ const t = i / (count - 1);
18486
+ const tone = isDark ? mix(0.06, 0.92, t) : mix(0.98, 0.1, t);
18487
+ const hex = oklchToHexGamut(tone, 0.02, warm ? 85 : 250);
18488
+ const name = `neutral-${shadeNames[i]}`;
18489
+ scale.push({ name, hex });
18490
+ }
18491
+ return scale;
18492
+ }
18493
+ function mix(a, b2, t) {
18494
+ return a + (b2 - a) * Math.max(0, Math.min(1, t));
18495
+ }
18496
+ var init_neutralScale = __esm({
18497
+ "../theme-core/src/palette/neutralScale.ts"() {
18498
+ "use strict";
18499
+ init_colorConversion();
18500
+ }
18501
+ });
18502
+
18503
+ // ../theme-core/src/palette/expandPalette.ts
18504
+ function colorsToMap(palette) {
18505
+ const map = {};
18506
+ for (const c2 of palette.colors) {
18507
+ map[c2.name] = c2.hex;
18508
+ }
18509
+ return map;
18510
+ }
18511
+ function isBackgroundDark(hex) {
18512
+ try {
18513
+ return featuresFromHex(hex).Y < 0.5;
18514
+ } catch {
18515
+ return false;
18516
+ }
18517
+ }
18518
+ function expandPalette(palette) {
18519
+ const base = colorsToMap(palette);
18520
+ const expanded = { ...base };
18521
+ const background = base.background || base.surface || "#ffffff";
18522
+ const neutral2 = generateNeutralScale({ background, steps: 11, warm: false });
18523
+ neutral2.forEach((n) => {
18524
+ expanded[n.name] = n.hex;
18525
+ });
18526
+ for (const [name, hex] of Object.entries(base)) {
18527
+ if (hex) {
18528
+ const shades = generateShades(hex, name);
18529
+ shades.forEach((shade) => {
18530
+ expanded[shade.name] = shade.hex;
18531
+ });
18532
+ }
18533
+ }
18534
+ if (base.text) expanded.body = base.text;
18535
+ if (base.danger && !base.destructive) {
18536
+ expanded.destructive = base.danger;
18537
+ }
18538
+ const isDark = base.background ? isBackgroundDark(base.background) : false;
18539
+ const isDarkMode = palette.meta?.mode === "dark" || isDark;
18540
+ expanded.mutedText = isDarkMode ? expanded["neutral-600"] ?? "#666" : expanded["neutral-500"] ?? "#888";
18541
+ for (const [token, hex] of Object.entries({ ...expanded })) {
18542
+ if (!hex || !isOnColorBackgroundCandidateToken(token)) continue;
18543
+ const onToken = onColorTokenName(token);
18544
+ if (expanded[onToken]) continue;
18545
+ expanded[onToken] = getTextColorForBackground(hex);
18546
+ }
18547
+ return expanded;
18548
+ }
18549
+ var init_expandPalette = __esm({
18550
+ "../theme-core/src/palette/expandPalette.ts"() {
18551
+ "use strict";
18552
+ init_generateShades();
18553
+ init_neutralScale();
18554
+ init_colorConversion();
18555
+ init_textColor();
18556
+ init_onColor();
18557
+ }
18558
+ });
18559
+
18296
18560
  // ../theme-core/src/site-styles/rawStyleFields.ts
18297
18561
  var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNameSet;
18298
18562
  var init_rawStyleFields = __esm({
@@ -18476,35 +18740,31 @@ var init_runtimeCompiler = __esm({
18476
18740
  "use strict";
18477
18741
  init_schema2();
18478
18742
  init_modern_minimal();
18743
+ init_expandPalette();
18479
18744
  init_personalities();
18480
18745
  init_variants();
18481
18746
  init_designState();
18482
18747
  init_types9();
18748
+ init_accessibleSurfaces();
18483
18749
  defaultDesignRuntimeRules = defineDesignRuntimeRules({
18484
18750
  sectionSurfaces: {
18485
18751
  base: {},
18486
18752
  "muted-band": {
18487
18753
  background: {
18488
18754
  type: "color",
18489
- color: "muted",
18490
- textColor: "text",
18491
- headingColor: "text"
18755
+ color: "muted"
18492
18756
  }
18493
18757
  },
18494
18758
  "accent-band": {
18495
18759
  background: {
18496
18760
  type: "color",
18497
- color: "primary",
18498
- textColor: "primaryForeground",
18499
- headingColor: "primaryForeground"
18761
+ color: "primary"
18500
18762
  }
18501
18763
  },
18502
18764
  "brand-depth-band": {
18503
18765
  background: {
18504
18766
  type: "color",
18505
- color: "primary-800",
18506
- textColor: "primaryForeground",
18507
- headingColor: "primaryForeground"
18767
+ color: "primary-800"
18508
18768
  }
18509
18769
  },
18510
18770
  "hero-image": {
@@ -18970,6 +19230,7 @@ var init_tokenRecipes = __esm({
18970
19230
  var init_site_styles = __esm({
18971
19231
  "../theme-core/src/site-styles/index.ts"() {
18972
19232
  "use strict";
19233
+ init_accessibleSurfaces();
18973
19234
  init_appearancePresets();
18974
19235
  init_blockFlow();
18975
19236
  init_compositionBudget();
@@ -20441,6 +20702,7 @@ var init_validation_constants = __esm({
20441
20702
  "date.formatShort",
20442
20703
  "array.length",
20443
20704
  "value.jsonArray",
20705
+ "value.csv",
20444
20706
  "array.marqueeLoop",
20445
20707
  // Layout (layout.ts)
20446
20708
  "layout.maxWidthClass",
@@ -27432,7 +27694,12 @@ var init_event_calendar = __esm({
27432
27694
  // Pass filter params if configured
27433
27695
  kind: { $bind: { from: "content.kind" } },
27434
27696
  eventSurface: { $bind: { from: "content.eventSurface" } },
27435
- eventPresets: { $bind: { from: "content.filterEventPresets" } },
27697
+ eventPresets: {
27698
+ $bind: {
27699
+ from: "content.filterEventPresets",
27700
+ transforms: [{ id: "value.csv" }]
27701
+ }
27702
+ },
27436
27703
  scheduleScope: { $bind: { from: "content.scheduleScope" } },
27437
27704
  categoryIds: { $bind: { from: "content.filterCategoryIds" } },
27438
27705
  staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
@@ -27907,7 +28174,12 @@ var init_event_listing = __esm({
27907
28174
  detailLevel: "listing",
27908
28175
  kind: { $bind: { from: "content.kind" } },
27909
28176
  eventSurface: { $bind: { from: "content.eventSurface" } },
27910
- eventPresets: { $bind: { from: "content.filterEventPresets" } },
28177
+ eventPresets: {
28178
+ $bind: {
28179
+ from: "content.filterEventPresets",
28180
+ transforms: [{ id: "value.csv" }]
28181
+ }
28182
+ },
27911
28183
  scheduleScope: { $bind: { from: "content.scheduleScope" } }
27912
28184
  },
27913
28185
  mode: "server"
@@ -33369,7 +33641,7 @@ function multiStepReducer(state, action) {
33369
33641
  case "reset":
33370
33642
  return createInitialMultiStepState(action.initialData);
33371
33643
  default:
33372
- return assertNever5(action);
33644
+ return assertNever4(action);
33373
33645
  }
33374
33646
  }
33375
33647
  function getVisibleSteps(steps, data) {
@@ -34821,7 +35093,7 @@ function buildBookingPaymentOptionViewModel(input) {
34821
35093
  };
34822
35094
  }
34823
35095
  default:
34824
- return assertNever5(input.option);
35096
+ return assertNever4(input.option);
34825
35097
  }
34826
35098
  }
34827
35099
  function buildInstalmentSchedulePreview(input) {
@@ -34878,7 +35150,7 @@ function buildInstalmentSchedulePreview(input) {
34878
35150
  })));
34879
35151
  }
34880
35152
  default:
34881
- return assertNever5(input.option.plan);
35153
+ return assertNever4(input.option.plan);
34882
35154
  }
34883
35155
  }
34884
35156
  function getPaymentCadenceLabel(plan) {
@@ -35709,7 +35981,7 @@ function pollingReducer(state, action) {
35709
35981
  case "timeout":
35710
35982
  return state;
35711
35983
  default:
35712
- return assertNever5(state);
35984
+ return assertNever4(state);
35713
35985
  }
35714
35986
  case "polling-timed-out":
35715
35987
  return {
@@ -35718,7 +35990,7 @@ function pollingReducer(state, action) {
35718
35990
  error: new Error("Polling timed out")
35719
35991
  };
35720
35992
  default:
35721
- return assertNever5(action);
35993
+ return assertNever4(action);
35722
35994
  }
35723
35995
  }
35724
35996
  var init_usePolling_state = __esm({
@@ -35908,7 +36180,7 @@ function bookingSubmissionReducer(state, action) {
35908
36180
  feedback: { tag: "idle" }
35909
36181
  };
35910
36182
  default:
35911
- return assertNever5(action);
36183
+ return assertNever4(action);
35912
36184
  }
35913
36185
  }
35914
36186
  function selectIsSubmitting2(state) {
@@ -37411,7 +37683,7 @@ function eligibilityLookupReducer(state, action) {
37411
37683
  error: action.message
37412
37684
  };
37413
37685
  default:
37414
- return assertNever5(action);
37686
+ return assertNever4(action);
37415
37687
  }
37416
37688
  }
37417
37689
  function existingRegistrationLookupReducer(state, action) {
@@ -37429,7 +37701,7 @@ function existingRegistrationLookupReducer(state, action) {
37429
37701
  registration: action.registration
37430
37702
  };
37431
37703
  default:
37432
- return assertNever5(action);
37704
+ return assertNever4(action);
37433
37705
  }
37434
37706
  }
37435
37707
  var initialEligibilityLookupState, initialExistingRegistrationLookupState;
@@ -42585,6 +42857,7 @@ function toEventDetailsClientProps(props2) {
42585
42857
  showAcceptedMemberships: props2.showAcceptedMemberships,
42586
42858
  sitePasses: props2.sitePasses ? { passes: [...props2.sitePasses.passes] } : props2.sitePasses,
42587
42859
  siteMemberships: props2.siteMemberships ? { memberships: [...props2.siteMemberships.memberships] } : props2.siteMemberships,
42860
+ autoApplyDiscount: props2.autoApplyDiscount ?? null,
42588
42861
  className: props2.className,
42589
42862
  nowIso: props2.nowIso
42590
42863
  };
@@ -42601,6 +42874,7 @@ function EventDetailsClient({
42601
42874
  showAcceptedMemberships = true,
42602
42875
  sitePasses,
42603
42876
  siteMemberships,
42877
+ autoApplyDiscount,
42604
42878
  className,
42605
42879
  nowIso,
42606
42880
  children
@@ -42628,6 +42902,7 @@ function EventDetailsClient({
42628
42902
  showAcceptedMemberships,
42629
42903
  applicablePasses,
42630
42904
  applicableMemberships,
42905
+ autoApplyDiscount: autoApplyDiscount ?? null,
42631
42906
  renderVenueMap: ({ venueName, location: location2, className: className2, height }) => /* @__PURE__ */ jsx110("div", { className: "event-details-map-wrap rb-w-full rb-ml-auto", children: /* @__PURE__ */ jsx110(
42632
42907
  LeafletStaticMap,
42633
42908
  {
@@ -42949,7 +43224,7 @@ function shopPassesMembershipsReducer(state, action) {
42949
43224
  returnNotice: null
42950
43225
  };
42951
43226
  default:
42952
- return assertNever5(action);
43227
+ return assertNever4(action);
42953
43228
  }
42954
43229
  }
42955
43230
  function getOpenCheckout(state) {
@@ -45586,7 +45861,7 @@ function shopCheckoutReducer(state, action) {
45586
45861
  notice: action.notice
45587
45862
  };
45588
45863
  default:
45589
- return assertNever5(action);
45864
+ return assertNever4(action);
45590
45865
  }
45591
45866
  }
45592
45867
  var initialShopCheckoutState;
@@ -49301,7 +49576,7 @@ function formSubmissionReducer(_state, action) {
49301
49576
  case "submission-failed":
49302
49577
  return { tag: "failed", message: action.message };
49303
49578
  default:
49304
- return assertNever5(action);
49579
+ return assertNever4(action);
49305
49580
  }
49306
49581
  }
49307
49582
  var initialFormSubmissionState;
@@ -49705,140 +49980,6 @@ var init_newsletter_form_client = __esm({
49705
49980
  }
49706
49981
  });
49707
49982
 
49708
- // ../theme-core/src/palette/generateShades.ts
49709
- function generateShades(hexColor, name) {
49710
- const shadeSteps = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
49711
- const base = featuresFromHex(hexColor);
49712
- const hue = base.okH;
49713
- const baseChroma = base.okC;
49714
- const toneMap = {
49715
- 50: 0.975,
49716
- 100: 0.945,
49717
- 200: 0.89,
49718
- 300: 0.82,
49719
- 400: 0.74,
49720
- 500: 0.66,
49721
- 600: 0.58,
49722
- 700: 0.49,
49723
- 800: 0.4,
49724
- 900: 0.28,
49725
- 950: 0.16
49726
- };
49727
- const shadeDefs = shadeSteps.map((step, idx) => {
49728
- const t = idx / (shadeSteps.length - 1);
49729
- const L2 = toneMap[step];
49730
- const chromaFactor = 0.06 + 0.94 * Math.sin(Math.PI * t);
49731
- const C = baseChroma * chromaFactor;
49732
- return {
49733
- name: `${name}-${step}`,
49734
- hex: oklchToHexGamut(L2, C, hue)
49735
- };
49736
- });
49737
- shadeDefs.push({ name, hex: hexColor });
49738
- return shadeDefs;
49739
- }
49740
- var init_generateShades = __esm({
49741
- "../theme-core/src/palette/generateShades.ts"() {
49742
- "use strict";
49743
- init_colorConversion();
49744
- }
49745
- });
49746
-
49747
- // ../theme-core/src/palette/neutralScale.ts
49748
- function generateNeutralScale({
49749
- background,
49750
- steps = 11,
49751
- warm = false
49752
- }) {
49753
- const isDark = background === "#000000" || background.startsWith("#0") || background.startsWith("#1");
49754
- const shadeNames = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
49755
- const count = Math.min(steps, shadeNames.length);
49756
- const scale = [];
49757
- for (let i = 0; i < count; i++) {
49758
- const t = i / (count - 1);
49759
- const tone = isDark ? mix(0.06, 0.92, t) : mix(0.98, 0.1, t);
49760
- const hex = oklchToHexGamut(tone, 0.02, warm ? 85 : 250);
49761
- const name = `neutral-${shadeNames[i]}`;
49762
- scale.push({ name, hex });
49763
- }
49764
- return scale;
49765
- }
49766
- function mix(a, b2, t) {
49767
- return a + (b2 - a) * Math.max(0, Math.min(1, t));
49768
- }
49769
- var init_neutralScale = __esm({
49770
- "../theme-core/src/palette/neutralScale.ts"() {
49771
- "use strict";
49772
- init_colorConversion();
49773
- }
49774
- });
49775
-
49776
- // ../theme-core/src/palette/expandPalette.ts
49777
- function colorsToMap(palette) {
49778
- const map = {};
49779
- for (const c2 of palette.colors) {
49780
- map[c2.name] = c2.hex;
49781
- }
49782
- return map;
49783
- }
49784
- function isBackgroundDark(hex) {
49785
- try {
49786
- return featuresFromHex(hex).Y < 0.5;
49787
- } catch {
49788
- return false;
49789
- }
49790
- }
49791
- function expandPalette(palette) {
49792
- const base = colorsToMap(palette);
49793
- const expanded = { ...base };
49794
- const background = base.background || base.surface || "#ffffff";
49795
- const neutral2 = generateNeutralScale({ background, steps: 11, warm: false });
49796
- neutral2.forEach((n) => {
49797
- expanded[n.name] = n.hex;
49798
- });
49799
- for (const [name, hex] of Object.entries(base)) {
49800
- if (hex) {
49801
- const shades = generateShades(hex, name);
49802
- shades.forEach((shade) => {
49803
- expanded[shade.name] = shade.hex;
49804
- });
49805
- }
49806
- }
49807
- if (base.text) expanded.body = base.text;
49808
- if (base.danger && !base.destructive) {
49809
- expanded.destructive = base.danger;
49810
- }
49811
- const isDark = base.background ? isBackgroundDark(base.background) : false;
49812
- const isDarkMode = palette.meta?.mode === "dark" || isDark;
49813
- expanded.mutedText = isDarkMode ? expanded["neutral-600"] ?? "#666" : expanded["neutral-500"] ?? "#888";
49814
- const onRoles = [
49815
- { role: "primary", on: "onPrimary" },
49816
- { role: "secondary", on: "onSecondary" },
49817
- { role: "accent", on: "onAccent" },
49818
- { role: "success", on: "onSuccess" },
49819
- { role: "warning", on: "onWarning" },
49820
- { role: "destructive", on: "onDestructive" },
49821
- { role: "info", on: "onInfo" },
49822
- { role: "surface", on: "onSurface" }
49823
- ];
49824
- for (const { role, on: on2 } of onRoles) {
49825
- const bg = base[role];
49826
- if (!bg) continue;
49827
- if (expanded[on2]) continue;
49828
- expanded[on2] = getTextColorForBackground(bg);
49829
- }
49830
- return expanded;
49831
- }
49832
- var init_expandPalette = __esm({
49833
- "../theme-core/src/palette/expandPalette.ts"() {
49834
- "use strict";
49835
- init_generateShades();
49836
- init_neutralScale();
49837
- init_colorConversion();
49838
- init_textColor();
49839
- }
49840
- });
49841
-
49842
49983
  // ../theme-core/src/runtime/fontFamily.ts
49843
49984
  function isGenericFamily(font) {
49844
49985
  return GENERIC_CSS_FAMILIES.includes(font.toLowerCase());
@@ -63666,71 +63807,268 @@ import { useEffect as useEffect28 } from "react";
63666
63807
  init_runtime();
63667
63808
  init_shop_shared();
63668
63809
  init_schemas2();
63810
+ import { z as z52 } from "zod";
63811
+
63812
+ // ../blocks/src/system/blocks/event-details.ts
63813
+ init_builder();
63814
+ init_builder();
63815
+ init_styledSection();
63816
+ init_fragments();
63817
+ init_shared4();
63818
+ init_shop_shared();
63819
+ init_defineBlock();
63669
63820
  import { z as z51 } from "zod";
63670
- var accordionIslandSchema = z51.object({
63671
- type: z51.enum(["single", "multiple"]).optional(),
63672
- defaultValue: z51.union([z51.string(), z51.array(z51.string())]).optional(),
63673
- collapsible: z51.boolean().optional()
63674
- });
63675
- var headerSectionIslandSchema = z51.object({
63676
- enabled: z51.boolean().optional(),
63677
- scrollEnabled: z51.boolean().optional()
63678
- });
63679
- var responsiveSlidesToShowSchema = z51.object({
63680
- mobile: z51.union([z51.number(), z51.string()]).optional(),
63681
- tablet: z51.union([z51.number(), z51.string()]).optional(),
63682
- desktop: z51.union([z51.number(), z51.string()]).optional()
63683
- });
63684
- var carouselIslandSchema = z51.object({
63685
- slidesToShow: z51.union([z51.number(), z51.string(), responsiveSlidesToShowSchema]).optional(),
63686
- transition: z51.enum(["slide", "fade"]).optional(),
63687
- showControls: z51.union([z51.boolean(), z51.string()]).optional(),
63688
- showDots: z51.union([z51.boolean(), z51.string()]).optional(),
63689
- arrowVisibility: z51.enum(["always", "hover", "never"]).optional(),
63690
- autoplay: z51.union([z51.boolean(), z51.string()]).optional(),
63691
- autoplayDelay: z51.union([z51.number(), z51.string()]).optional(),
63692
- loop: z51.union([z51.boolean(), z51.string()]).optional()
63693
- });
63694
- var eventDetailsOccurrenceContextSchema = z51.object({
63821
+ var eventDetailsManifest = createBlockManifest({
63822
+ id: "block.event-details",
63823
+ version: "1.0.0",
63824
+ title: "Event Details",
63825
+ titleSource: "heading",
63826
+ description: "Date/time, venue, map, and other dates for an event",
63827
+ category: "content",
63828
+ tags: ["events", "venue", "map", "schedule", "dates"],
63829
+ icon: "MapPin",
63830
+ styleTokens: { background: "surface", typography: "body", spacing: "md" },
63831
+ behaviours: {
63832
+ supportsThemeSwitching: true,
63833
+ inlineEditing: false,
63834
+ animation: false,
63835
+ paletteHidden: false
63836
+ },
63837
+ additionalFields: [
63838
+ {
63839
+ id: "heading",
63840
+ type: "text",
63841
+ label: "Heading",
63842
+ description: "Optional heading shown above event details",
63843
+ required: false,
63844
+ multiline: false,
63845
+ defaultValue: "Event details"
63846
+ },
63847
+ {
63848
+ id: "showVenue",
63849
+ type: "boolean",
63850
+ label: "Show venue",
63851
+ required: false,
63852
+ defaultValue: true,
63853
+ ui: { intent: "display" }
63854
+ },
63855
+ {
63856
+ id: "showMap",
63857
+ type: "boolean",
63858
+ label: "Show map",
63859
+ description: "Embed a map when the venue has coordinates",
63860
+ required: false,
63861
+ defaultValue: true,
63862
+ ui: { intent: "display" }
63863
+ },
63864
+ {
63865
+ id: "showOtherDates",
63866
+ type: "boolean",
63867
+ label: "Show other dates",
63868
+ required: false,
63869
+ defaultValue: true,
63870
+ ui: { intent: "display" }
63871
+ },
63872
+ {
63873
+ id: "otherDatesLimit",
63874
+ type: "select",
63875
+ label: "Other dates limit",
63876
+ required: false,
63877
+ multiple: false,
63878
+ defaultValue: "5",
63879
+ options: [
63880
+ { value: "3", label: "3 dates" },
63881
+ { value: "5", label: "5 dates" },
63882
+ { value: "10", label: "10 dates" }
63883
+ ],
63884
+ ui: { intent: "display" }
63885
+ },
63886
+ {
63887
+ id: "showCost",
63888
+ type: "boolean",
63889
+ label: "Show cost",
63890
+ description: "Display ticket price for paid events",
63891
+ required: false,
63892
+ defaultValue: true,
63893
+ ui: { intent: "display" }
63894
+ },
63895
+ {
63896
+ id: "showAcceptedPasses",
63897
+ type: "boolean",
63898
+ label: "Show accepted passes",
63899
+ description: "Display passes that can be used for this event",
63900
+ required: false,
63901
+ defaultValue: true,
63902
+ ui: { intent: "display" }
63903
+ },
63904
+ {
63905
+ id: "showAcceptedMemberships",
63906
+ type: "boolean",
63907
+ label: "Show accepted memberships",
63908
+ description: "Display memberships that grant access to this event",
63909
+ required: false,
63910
+ defaultValue: true,
63911
+ ui: { intent: "display" }
63912
+ }
63913
+ ],
63914
+ layout: [
63915
+ styledSection({
63916
+ baseClass: "",
63917
+ spacing: "spacious",
63918
+ children: sectionContainer(
63919
+ [
63920
+ text({ as: "h2" }, bind("content.heading"), when("content.heading")),
63921
+ el("event-details", {
63922
+ occurrenceContext: {
63923
+ $bind: { from: "$root.occurrenceContext", fallback: null }
63924
+ },
63925
+ contentEntry: { $bind: { from: "$root.contentEntry", fallback: null } },
63926
+ events: { $bind: { from: "data.eventDetailsData.events" } },
63927
+ showVenue: { $bind: { from: "content.showVenue" } },
63928
+ showMap: { $bind: { from: "content.showMap" } },
63929
+ showOtherDates: { $bind: { from: "content.showOtherDates" } },
63930
+ otherDatesLimit: {
63931
+ $bind: { from: "content.otherDatesLimit", fallback: "5" }
63932
+ },
63933
+ showCost: { $bind: { from: "content.showCost", fallback: true } },
63934
+ showAcceptedPasses: {
63935
+ $bind: { from: "content.showAcceptedPasses", fallback: true }
63936
+ },
63937
+ showAcceptedMemberships: {
63938
+ $bind: { from: "content.showAcceptedMemberships", fallback: true }
63939
+ },
63940
+ sitePasses: { $bind: { from: "data.eventDetailsData.sitePasses" } },
63941
+ siteMemberships: { $bind: { from: "data.eventDetailsData.siteMemberships" } },
63942
+ autoApplyDiscount: {
63943
+ $bind: { from: "data.eventDetailsData.autoApplyDiscount", fallback: null }
63944
+ }
63945
+ })
63946
+ ],
63947
+ { gap: "lg" }
63948
+ )
63949
+ })
63950
+ ]
63951
+ });
63952
+ var occurrenceContextSchema2 = z51.object({
63695
63953
  id: z51.string(),
63696
63954
  seriesId: z51.string(),
63697
63955
  startsAt: z51.string(),
63698
63956
  endsAt: z51.string(),
63699
- timeZone: z51.string()
63700
- });
63701
- var eventDetailsContentEntrySchema = z51.object({
63957
+ timeZone: z51.string(),
63958
+ capacityOverride: z51.number().nullable().optional(),
63959
+ overrides: z51.record(z51.string(), z51.unknown()).nullable().optional()
63960
+ }).nullable();
63961
+ var eventAutoApplyDiscountPreviewBaseSchema = z51.object({
63702
63962
  id: z51.string(),
63703
- slug: z51.string(),
63704
- contentTypeSlug: z51.string()
63705
- });
63706
- var eventDetailsIslandSchema = z51.object({
63963
+ publicLabel: z51.string(),
63964
+ description: z51.string().nullable(),
63965
+ minTicketsRequired: z51.number().nullable()
63966
+ });
63967
+ var eventAutoApplyDiscountPreviewSchema = z51.discriminatedUnion("discountType", [
63968
+ eventAutoApplyDiscountPreviewBaseSchema.extend({
63969
+ discountType: z51.literal("percent"),
63970
+ discountPercent: z51.number(),
63971
+ discountAmountCents: z51.null()
63972
+ }),
63973
+ eventAutoApplyDiscountPreviewBaseSchema.extend({
63974
+ discountType: z51.literal("fixed"),
63975
+ discountPercent: z51.null(),
63976
+ discountAmountCents: z51.number()
63977
+ })
63978
+ ]);
63979
+ var eventDetailsBlockDefinition = {
63980
+ manifest: eventDetailsManifest,
63981
+ dataSchemas: {
63982
+ eventDetailsData: z51.object({
63983
+ events: publicEventsArraySchema,
63984
+ sitePasses: z51.object({ passes: z51.array(publicPassProductSchema) }),
63985
+ siteMemberships: z51.object({ memberships: z51.array(publicMembershipProductSchema) }),
63986
+ autoApplyDiscount: eventAutoApplyDiscountPreviewSchema.nullable().optional().default(null)
63987
+ }).optional(),
63988
+ occurrenceContext: occurrenceContextSchema2.optional()
63989
+ },
63990
+ dataLoaders: {
63991
+ eventDetailsData: {
63992
+ endpoint: "getPublicEventDetails",
63993
+ params: {
63994
+ siteId: { $bind: { from: "$root.siteId" } },
63995
+ stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
63996
+ limit: "25",
63997
+ entryId: { $bind: { from: "$root.contentEntry._entryId" } },
63998
+ seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
63999
+ includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
64000
+ },
64001
+ mode: "server"
64002
+ }
64003
+ }
64004
+ };
64005
+
64006
+ // ../blocks/src/contracts/non-block-islands.ts
64007
+ var accordionIslandSchema = z52.object({
64008
+ type: z52.enum(["single", "multiple"]).optional(),
64009
+ defaultValue: z52.union([z52.string(), z52.array(z52.string())]).optional(),
64010
+ collapsible: z52.boolean().optional()
64011
+ });
64012
+ var headerSectionIslandSchema = z52.object({
64013
+ enabled: z52.boolean().optional(),
64014
+ scrollEnabled: z52.boolean().optional()
64015
+ });
64016
+ var responsiveSlidesToShowSchema = z52.object({
64017
+ mobile: z52.union([z52.number(), z52.string()]).optional(),
64018
+ tablet: z52.union([z52.number(), z52.string()]).optional(),
64019
+ desktop: z52.union([z52.number(), z52.string()]).optional()
64020
+ });
64021
+ var carouselIslandSchema = z52.object({
64022
+ slidesToShow: z52.union([z52.number(), z52.string(), responsiveSlidesToShowSchema]).optional(),
64023
+ transition: z52.enum(["slide", "fade"]).optional(),
64024
+ showControls: z52.union([z52.boolean(), z52.string()]).optional(),
64025
+ showDots: z52.union([z52.boolean(), z52.string()]).optional(),
64026
+ arrowVisibility: z52.enum(["always", "hover", "never"]).optional(),
64027
+ autoplay: z52.union([z52.boolean(), z52.string()]).optional(),
64028
+ autoplayDelay: z52.union([z52.number(), z52.string()]).optional(),
64029
+ loop: z52.union([z52.boolean(), z52.string()]).optional()
64030
+ });
64031
+ var eventDetailsOccurrenceContextSchema = z52.object({
64032
+ id: z52.string(),
64033
+ seriesId: z52.string(),
64034
+ startsAt: z52.string(),
64035
+ endsAt: z52.string(),
64036
+ timeZone: z52.string()
64037
+ });
64038
+ var eventDetailsContentEntrySchema = z52.object({
64039
+ id: z52.string(),
64040
+ slug: z52.string(),
64041
+ contentTypeSlug: z52.string()
64042
+ });
64043
+ var eventDetailsIslandSchema = z52.object({
63707
64044
  occurrenceContext: eventDetailsOccurrenceContextSchema.nullable().optional(),
63708
64045
  contentEntry: eventDetailsContentEntrySchema.nullable().optional(),
63709
- events: z51.array(publicEventSchema).nullable().optional(),
63710
- showVenue: z51.boolean().optional(),
63711
- showMap: z51.boolean().optional(),
63712
- showOtherDates: z51.boolean().optional(),
63713
- otherDatesLimit: z51.string().optional(),
63714
- showCost: z51.boolean().optional(),
63715
- showAcceptedPasses: z51.boolean().optional(),
63716
- showAcceptedMemberships: z51.boolean().optional(),
63717
- sitePasses: z51.object({ passes: z51.array(publicPassProductSchema) }).nullable().optional(),
63718
- siteMemberships: z51.object({ memberships: z51.array(publicMembershipProductSchema) }).nullable().optional(),
63719
- className: z51.string().nullable().optional(),
63720
- nowIso: z51.string().optional()
63721
- });
63722
- var locationMapIslandSchema = z51.object({
63723
- location: z51.object({
63724
- addressText: z51.string().nullable(),
63725
- lat: z51.number().nullable(),
63726
- lng: z51.number().nullable()
64046
+ events: z52.array(publicEventSchema).nullable().optional(),
64047
+ showVenue: z52.boolean().optional(),
64048
+ showMap: z52.boolean().optional(),
64049
+ showOtherDates: z52.boolean().optional(),
64050
+ otherDatesLimit: z52.string().optional(),
64051
+ showCost: z52.boolean().optional(),
64052
+ showAcceptedPasses: z52.boolean().optional(),
64053
+ showAcceptedMemberships: z52.boolean().optional(),
64054
+ sitePasses: z52.object({ passes: z52.array(publicPassProductSchema) }).nullable().optional(),
64055
+ siteMemberships: z52.object({ memberships: z52.array(publicMembershipProductSchema) }).nullable().optional(),
64056
+ autoApplyDiscount: eventAutoApplyDiscountPreviewSchema.nullable().optional(),
64057
+ className: z52.string().nullable().optional(),
64058
+ nowIso: z52.string().optional()
64059
+ });
64060
+ var locationMapIslandSchema = z52.object({
64061
+ location: z52.object({
64062
+ addressText: z52.string().nullable(),
64063
+ lat: z52.number().nullable(),
64064
+ lng: z52.number().nullable()
63727
64065
  }).nullable().optional(),
63728
- zoom: z51.number().nullable().optional(),
63729
- heightPx: z51.number().nullable().optional(),
63730
- showAddressText: z51.boolean().optional(),
63731
- showDirections: z51.boolean().optional(),
63732
- directionsLabel: z51.string().nullable().optional(),
63733
- className: z51.string().nullable().optional()
64066
+ zoom: z52.number().nullable().optional(),
64067
+ heightPx: z52.number().nullable().optional(),
64068
+ showAddressText: z52.boolean().optional(),
64069
+ showDirections: z52.boolean().optional(),
64070
+ directionsLabel: z52.string().nullable().optional(),
64071
+ className: z52.string().nullable().optional()
63734
64072
  });
63735
64073
  var accordionIslandPropsCodec = createZodCodec(accordionIslandSchema);
63736
64074
  var headerSectionIslandPropsCodec = createZodCodec(headerSectionIslandSchema);
@@ -63983,15 +64321,15 @@ function hydrateBlocksIslands(options = {}) {
63983
64321
  import * as React38 from "react";
63984
64322
 
63985
64323
  // ../blocks/src/system/manifest/fieldValidation/index.ts
63986
- import { z as z53 } from "zod";
64324
+ import { z as z54 } from "zod";
63987
64325
 
63988
64326
  // ../blocks/src/system/types/link.ts
63989
- import { z as z52 } from "zod";
63990
- var nullableString = z52.union([z52.string().min(1), z52.null()]);
64327
+ import { z as z53 } from "zod";
64328
+ var nullableString = z53.union([z53.string().min(1), z53.null()]);
63991
64329
  var resolvedInternalLinkKeys = ["entityId", "entityType", "href", "title", "typeLabel"];
63992
- var internalRouteOnlyLinkSchema = z52.object({
63993
- kind: z52.literal("internal"),
63994
- routeId: z52.string().min(1)
64330
+ var internalRouteOnlyLinkSchema = z53.object({
64331
+ kind: z53.literal("internal"),
64332
+ routeId: z53.string().min(1)
63995
64333
  }).passthrough().superRefine((value, ctx) => {
63996
64334
  const hasResolvedMetadata = resolvedInternalLinkKeys.some((key) => value[key] != null);
63997
64335
  if (!hasResolvedMetadata) return;
@@ -64000,40 +64338,40 @@ var internalRouteOnlyLinkSchema = z52.object({
64000
64338
  message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
64001
64339
  });
64002
64340
  });
64003
- var internalResolvedLinkSchema = z52.object({
64004
- kind: z52.literal("internal"),
64005
- routeId: z52.string().min(1),
64006
- entityId: z52.string().min(1),
64007
- entityType: z52.enum(["page", "content"]),
64008
- href: z52.string().min(1),
64009
- title: z52.string().min(1),
64010
- typeLabel: z52.string().min(1),
64341
+ var internalResolvedLinkSchema = z53.object({
64342
+ kind: z53.literal("internal"),
64343
+ routeId: z53.string().min(1),
64344
+ entityId: z53.string().min(1),
64345
+ entityType: z53.enum(["page", "content"]),
64346
+ href: z53.string().min(1),
64347
+ title: z53.string().min(1),
64348
+ typeLabel: z53.string().min(1),
64011
64349
  contentTypeKey: nullableString.optional(),
64012
64350
  contentTypeName: nullableString.optional(),
64013
64351
  updatedAt: nullableString.optional()
64014
64352
  }).passthrough();
64015
- var internalLinkSchema = z52.union([
64353
+ var internalLinkSchema = z53.union([
64016
64354
  internalResolvedLinkSchema,
64017
64355
  internalRouteOnlyLinkSchema
64018
64356
  ]);
64019
- var externalLinkSchema = z52.object({
64020
- kind: z52.literal("external"),
64021
- href: z52.string().min(1)
64357
+ var externalLinkSchema = z53.object({
64358
+ kind: z53.literal("external"),
64359
+ href: z53.string().min(1)
64022
64360
  }).passthrough();
64023
- var customLinkSchema = z52.object({
64024
- kind: z52.literal("url"),
64025
- href: z52.string().min(1)
64361
+ var customLinkSchema = z53.object({
64362
+ kind: z53.literal("url"),
64363
+ href: z53.string().min(1)
64026
64364
  }).passthrough();
64027
- var pageLinkSchema = z52.object({
64028
- kind: z52.literal("page"),
64029
- identifier: z52.string().min(1)
64365
+ var pageLinkSchema = z53.object({
64366
+ kind: z53.literal("page"),
64367
+ identifier: z53.string().min(1)
64030
64368
  }).passthrough();
64031
- var entryLinkSchema = z52.object({
64032
- kind: z52.literal("entry"),
64033
- contentType: z52.string().min(1),
64034
- identifier: z52.string().min(1)
64369
+ var entryLinkSchema = z53.object({
64370
+ kind: z53.literal("entry"),
64371
+ contentType: z53.string().min(1),
64372
+ identifier: z53.string().min(1)
64035
64373
  }).passthrough();
64036
- var linkSchema = z52.union([
64374
+ var linkSchema = z53.union([
64037
64375
  internalLinkSchema,
64038
64376
  externalLinkSchema,
64039
64377
  customLinkSchema,
@@ -64046,7 +64384,7 @@ init_schema3();
64046
64384
  var TEL_RE = /^[+()0-9\s-]{3,}$/;
64047
64385
  var SLUG_PATTERN = /^(?:[a-z0-9]+(?:-[a-z0-9]+)*)(?:\/(?:[a-z0-9]+(?:-[a-z0-9]+)*))*$/;
64048
64386
  var ALLOWED_URL_PROTOCOLS = ["http:", "https:"];
64049
- function assertNever7(value) {
64387
+ function assertNever6(value) {
64050
64388
  throw new Error(`Unhandled field validation variant: ${JSON.stringify(value)}`);
64051
64389
  }
64052
64390
  function validationContext(options = {}) {
@@ -64098,7 +64436,7 @@ function fieldIssueToMessage(issue2) {
64098
64436
  case "invalidReference":
64099
64437
  return `${issue2.label} must reference a valid item`;
64100
64438
  default:
64101
- return assertNever7(issue2);
64439
+ return assertNever6(issue2);
64102
64440
  }
64103
64441
  }
64104
64442
  function pluralize(label, count) {
@@ -64183,7 +64521,7 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
64183
64521
  case "entryPicker":
64184
64522
  return makePlan("passthrough", "unknown", field, path, false, []);
64185
64523
  default:
64186
- return assertNever7(field);
64524
+ return assertNever6(field);
64187
64525
  }
64188
64526
  }
64189
64527
  function commonConstraints(required, ...specific) {
@@ -64240,7 +64578,7 @@ function resolveSelectConstraintSource(field) {
64240
64578
  case "sdk":
64241
64579
  return { kind: "runtime", source: source.kind };
64242
64580
  default:
64243
- return assertNever7(source);
64581
+ return assertNever6(source);
64244
64582
  }
64245
64583
  }
64246
64584
  function normalizeFieldValue(plan, value, ctx) {
@@ -64261,7 +64599,7 @@ function normalizeFieldValue(plan, value, ctx) {
64261
64599
  case "passthrough":
64262
64600
  return value;
64263
64601
  default:
64264
- return assertNever7(plan);
64602
+ return assertNever6(plan);
64265
64603
  }
64266
64604
  }
64267
64605
  function normalizeObjectChildren(children, value, ctx) {
@@ -64320,7 +64658,7 @@ function validateNormalizedFieldValue(plan, value, ctx) {
64320
64658
  case "passthrough":
64321
64659
  return [];
64322
64660
  default:
64323
- return assertNever7(plan);
64661
+ return assertNever6(plan);
64324
64662
  }
64325
64663
  }
64326
64664
  function shouldRequireValue(plan, value, ctx) {
@@ -64351,7 +64689,7 @@ function validateStringConstraint(plan, constraint, value) {
64351
64689
  case "maxLength":
64352
64690
  return value.length > constraint.maximum ? [issue(plan, "tooLong", { maximum: constraint.maximum })] : [];
64353
64691
  case "emailFormat":
64354
- return z53.email().safeParse(value).success ? [] : [issue(plan, "invalidEmail")];
64692
+ return z54.email().safeParse(value).success ? [] : [issue(plan, "invalidEmail")];
64355
64693
  case "phoneFormat":
64356
64694
  return TEL_RE.test(value) ? [] : [issue(plan, "invalidPhone")];
64357
64695
  case "patternFormat": {
@@ -64363,7 +64701,7 @@ function validateStringConstraint(plan, constraint, value) {
64363
64701
  case "slugFormat":
64364
64702
  return SLUG_PATTERN.test(value) ? [] : [issue(plan, "invalidSlug")];
64365
64703
  default:
64366
- return assertNever7(constraint);
64704
+ return assertNever6(constraint);
64367
64705
  }
64368
64706
  }
64369
64707
  function validateNumberPlan(plan, value) {
@@ -64380,7 +64718,7 @@ function validateNumberConstraint(plan, constraint, value) {
64380
64718
  case "numberMax":
64381
64719
  return value > constraint.maximum ? [issue(plan, "tooLarge", { maximum: constraint.maximum })] : [];
64382
64720
  default:
64383
- return assertNever7(constraint);
64721
+ return assertNever6(constraint);
64384
64722
  }
64385
64723
  }
64386
64724
  function validateSelectPlan(plan, value) {
@@ -64400,7 +64738,7 @@ function validateRepeaterPlan(plan, value, ctx) {
64400
64738
  case "maxItems":
64401
64739
  return value.length > constraint.maximum ? [issue(plan, "tooManyItems", { maximum: constraint.maximum, itemLabel: "item" })] : [];
64402
64740
  default:
64403
- return assertNever7(constraint);
64741
+ return assertNever6(constraint);
64404
64742
  }
64405
64743
  });
64406
64744
  return [
@@ -64467,7 +64805,7 @@ function rebaseFieldPlanPath(plan, fromPrefix, toPrefix) {
64467
64805
  path
64468
64806
  };
64469
64807
  default:
64470
- return assertNever7(plan);
64808
+ return assertNever6(plan);
64471
64809
  }
64472
64810
  }
64473
64811
  function rebaseFieldPath(path, fromPrefix, toPrefix) {
@@ -64495,7 +64833,7 @@ function requiredIssue(plan, value) {
64495
64833
  }
64496
64834
  function fieldPlanToZod(plan, options = {}) {
64497
64835
  const ctx = validationContext(options);
64498
- return z53.any().transform((value) => normalizeFieldValue(plan, value, ctx)).superRefine((value, zodCtx) => {
64836
+ return z54.any().transform((value) => normalizeFieldValue(plan, value, ctx)).superRefine((value, zodCtx) => {
64499
64837
  for (const validationIssue of validateNormalizedFieldValue(plan, value, ctx)) {
64500
64838
  addFieldIssueToZodContext(zodCtx, validationIssue);
64501
64839
  }
@@ -64547,7 +64885,7 @@ function addFieldIssueToZodContext(zodCtx, validationIssue) {
64547
64885
  zodCtx.addIssue({ code: "custom", message });
64548
64886
  return;
64549
64887
  default:
64550
- assertNever7(validationIssue);
64888
+ assertNever6(validationIssue);
64551
64889
  }
64552
64890
  }
64553
64891
  function compilePattern(pattern) {
@@ -64616,7 +64954,7 @@ function registerManifest(manifest) {
64616
64954
  }
64617
64955
 
64618
64956
  // ../blocks/src/system/manifest/validation.ts
64619
- import { z as z54 } from "zod";
64957
+ import { z as z55 } from "zod";
64620
64958
  function preprocessEmptyValues(content) {
64621
64959
  if (!content || typeof content !== "object" || Array.isArray(content)) {
64622
64960
  return {};
@@ -64633,13 +64971,13 @@ function deriveContentZodFromManifest(manifestOrFields, options = {}) {
64633
64971
  for (const field of fields3) {
64634
64972
  shape[field.id] = buildFieldSchema(field, options);
64635
64973
  }
64636
- return z54.object(shape).catchall(z54.unknown()).passthrough();
64974
+ return z55.object(shape).catchall(z55.unknown()).passthrough();
64637
64975
  }
64638
64976
  function createManifestValidator(manifestOrFields, options = {}) {
64639
64977
  const isDraft = options.mode === "draft";
64640
64978
  const baseSchema = deriveContentZodFromManifest(manifestOrFields, options);
64641
64979
  if (isDraft) {
64642
- return z54.preprocess(preprocessEmptyValues, baseSchema);
64980
+ return z55.preprocess(preprocessEmptyValues, baseSchema);
64643
64981
  }
64644
64982
  return baseSchema;
64645
64983
  }
@@ -64939,7 +65277,7 @@ var bodyTextBlockDefinition = {
64939
65277
  init_builder();
64940
65278
  init_fragments2();
64941
65279
  init_defineBlock();
64942
- import { z as z55 } from "zod";
65280
+ import { z as z56 } from "zod";
64943
65281
  var composition = composeFragments([{ fragment: blogFeaturedPostFragment }]);
64944
65282
  var blogPostLayout = section(
64945
65283
  { background: "background", className: "rb-px-6 rb-py-12" },
@@ -64968,17 +65306,17 @@ var blogPostManifest = createBlockManifest({
64968
65306
  additionalFields: composition.fields,
64969
65307
  layout: blogPostLayout
64970
65308
  });
64971
- var blogPostDataSchema = z55.object({
64972
- id: z55.string(),
64973
- title: z55.string(),
64974
- slug: z55.string(),
64975
- path: z55.string(),
64976
- excerpt: z55.string().nullable().optional(),
64977
- image: z55.object({
64978
- url: z55.string().optional().nullable(),
64979
- alt: z55.string().optional().nullable()
65309
+ var blogPostDataSchema = z56.object({
65310
+ id: z56.string(),
65311
+ title: z56.string(),
65312
+ slug: z56.string(),
65313
+ path: z56.string(),
65314
+ excerpt: z56.string().nullable().optional(),
65315
+ image: z56.object({
65316
+ url: z56.string().optional().nullable(),
65317
+ alt: z56.string().optional().nullable()
64980
65318
  }).nullable().optional(),
64981
- publishedAt: z55.string().nullable().optional()
65319
+ publishedAt: z56.string().nullable().optional()
64982
65320
  });
64983
65321
  var blogPostBlockDefinition = {
64984
65322
  manifest: blogPostManifest,
@@ -64993,7 +65331,7 @@ init_schema3();
64993
65331
  init_builder();
64994
65332
  init_fragments();
64995
65333
  init_colorStyles();
64996
- import { z as z56 } from "zod";
65334
+ import { z as z57 } from "zod";
64997
65335
  var blogListingDataLoader = {
64998
65336
  endpoint: "listPublishedEntries",
64999
65337
  params: {
@@ -65311,24 +65649,24 @@ var blogListingManifest = createBlockManifest({
65311
65649
  spacing: "lg"
65312
65650
  }
65313
65651
  });
65314
- var blogPostListEntrySchema = z56.object({
65315
- id: z56.string(),
65316
- slug: z56.string(),
65317
- path: z56.string(),
65318
- title: z56.string(),
65319
- excerpt: z56.string().nullable().optional(),
65320
- publishedAt: z56.string().nullable().optional(),
65321
- updatedAt: z56.string(),
65322
- status: z56.string(),
65323
- image: z56.object({
65324
- url: z56.string(),
65325
- alt: z56.string().nullable().optional()
65652
+ var blogPostListEntrySchema = z57.object({
65653
+ id: z57.string(),
65654
+ slug: z57.string(),
65655
+ path: z57.string(),
65656
+ title: z57.string(),
65657
+ excerpt: z57.string().nullable().optional(),
65658
+ publishedAt: z57.string().nullable().optional(),
65659
+ updatedAt: z57.string(),
65660
+ status: z57.string(),
65661
+ image: z57.object({
65662
+ url: z57.string(),
65663
+ alt: z57.string().nullable().optional()
65326
65664
  }).nullable().optional()
65327
65665
  });
65328
65666
  var blogListingBlockDefinition = {
65329
65667
  manifest: blogListingManifest,
65330
65668
  dataSchemas: {
65331
- posts: z56.array(blogPostListEntrySchema).optional()
65669
+ posts: z57.array(blogPostListEntrySchema).optional()
65332
65670
  },
65333
65671
  dataLoaders: {
65334
65672
  posts: blogListingDataLoader
@@ -65450,7 +65788,7 @@ init_builder();
65450
65788
  init_fragments();
65451
65789
 
65452
65790
  // ../blocks/src/system/transforms/registry/formatting.ts
65453
- import { z as z57 } from "zod";
65791
+ import { z as z58 } from "zod";
65454
65792
  var uppercaseTransform = {
65455
65793
  id: "string.uppercase",
65456
65794
  kind: "string",
@@ -65461,7 +65799,7 @@ var fallbackTransform = {
65461
65799
  id: "value.fallback",
65462
65800
  kind: "formatter",
65463
65801
  summary: "Provide fallback when value is null or undefined",
65464
- schema: z57.object({ fallback: z57.unknown() }),
65802
+ schema: z58.object({ fallback: z58.unknown() }),
65465
65803
  run: (value, options) => value === null || value === void 0 || value === "" ? options.fallback : value
65466
65804
  };
65467
65805
  var dateFormatShort = {
@@ -65508,8 +65846,18 @@ var jsonArrayTransform = {
65508
65846
  return "";
65509
65847
  }
65510
65848
  };
65511
- var marqueeLoopOptionsSchema = z57.object({
65512
- minItems: z57.number().int().min(1).default(10)
65849
+ var csvTransform = {
65850
+ id: "value.csv",
65851
+ kind: "formatter",
65852
+ summary: "Normalize a string or array of strings into a comma-separated list",
65853
+ run: (value) => {
65854
+ const rawValues = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [];
65855
+ const normalized = rawValues.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
65856
+ return normalized.length > 0 ? Array.from(new Set(normalized)).join(",") : "";
65857
+ }
65858
+ };
65859
+ var marqueeLoopOptionsSchema = z58.object({
65860
+ minItems: z58.number().int().min(1).default(10)
65513
65861
  });
65514
65862
  var marqueeLoopTransform = {
65515
65863
  id: "array.marqueeLoop",
@@ -65533,6 +65881,7 @@ var formattingTransforms = [
65533
65881
  dateFormatShort,
65534
65882
  arrayLengthTransform,
65535
65883
  jsonArrayTransform,
65884
+ csvTransform,
65536
65885
  marqueeLoopTransform
65537
65886
  ];
65538
65887
 
@@ -65542,7 +65891,7 @@ init_site_styles();
65542
65891
  init_colorStyles();
65543
65892
  init_blockColorTokens();
65544
65893
  init_sectionState_shared();
65545
- import { z as z58 } from "zod";
65894
+ import { z as z59 } from "zod";
65546
65895
  var joinClasses6 = (parts) => parts.filter(
65547
65896
  (part) => typeof part === "string" && part.trim().length > 0
65548
65897
  ).join(" ").replace(/\s+/g, " ").trim();
@@ -65613,8 +65962,8 @@ function getNavStyleClasses(navStyle) {
65613
65962
  return baseClasses;
65614
65963
  }
65615
65964
  }
65616
- var headerNavClassOptionsSchema = z58.object({
65617
- base: z58.string().optional()
65965
+ var headerNavClassOptionsSchema = z59.object({
65966
+ base: z59.string().optional()
65618
65967
  });
65619
65968
  var headerNavLinkClassTransform = {
65620
65969
  id: "ui.headerNavLinkClass",
@@ -65697,8 +66046,8 @@ function resolveHeroContentMaxWidth(content) {
65697
66046
  return raw;
65698
66047
  return "default";
65699
66048
  }
65700
- var heroContentWrapperClassSchema = z58.object({
65701
- base: z58.string().optional()
66049
+ var heroContentWrapperClassSchema = z59.object({
66050
+ base: z59.string().optional()
65702
66051
  });
65703
66052
  var heroContentWrapperClassTransform = {
65704
66053
  id: "ui.heroContentWrapperClass",
@@ -65740,8 +66089,8 @@ var heroStackJustifyFromVerticalAlignmentTransform = {
65740
66089
  return vertical === "top" ? "start" : vertical === "bottom" ? "end" : "center";
65741
66090
  }
65742
66091
  };
65743
- var heroGridClassFromVerticalAlignmentSchema = z58.object({
65744
- base: z58.string()
66092
+ var heroGridClassFromVerticalAlignmentSchema = z59.object({
66093
+ base: z59.string()
65745
66094
  });
65746
66095
  var heroGridClassFromVerticalAlignmentTransform = {
65747
66096
  id: "ui.heroGridClassFromVerticalAlignment",
@@ -65755,10 +66104,10 @@ var heroGridClassFromVerticalAlignmentTransform = {
65755
66104
  return joinClasses6([options.base, itemsClass]);
65756
66105
  }
65757
66106
  };
65758
- var imageFragmentClassOptionsSchema = z58.object({
65759
- base: z58.string(),
65760
- whenAuto: z58.string(),
65761
- whenFixed: z58.string()
66107
+ var imageFragmentClassOptionsSchema = z59.object({
66108
+ base: z59.string(),
66109
+ whenAuto: z59.string(),
66110
+ whenFixed: z59.string()
65762
66111
  });
65763
66112
  var imageFragmentClassTransform = {
65764
66113
  id: "ui.imageFragmentClass",
@@ -65774,9 +66123,9 @@ var imageFragmentClassTransform = {
65774
66123
  ]);
65775
66124
  }
65776
66125
  };
65777
- var imageFragmentSizeOptionsSchema = z58.object({
65778
- max: z58.number().int().positive().default(1920),
65779
- quality: z58.number().int().min(1).max(100).default(85)
66126
+ var imageFragmentSizeOptionsSchema = z59.object({
66127
+ max: z59.number().int().positive().default(1920),
66128
+ quality: z59.number().int().min(1).max(100).default(85)
65780
66129
  });
65781
66130
  var imageFragmentSizeTransform = {
65782
66131
  id: "ui.imageFragmentSize",
@@ -65796,9 +66145,9 @@ var imageFragmentSizeTransform = {
65796
66145
  return { width, height, quality, resize: "cover" };
65797
66146
  }
65798
66147
  };
65799
- var conditionalClassOptionsSchema = z58.object({
65800
- whenTrue: z58.string(),
65801
- whenFalse: z58.string()
66148
+ var conditionalClassOptionsSchema = z59.object({
66149
+ whenTrue: z59.string(),
66150
+ whenFalse: z59.string()
65802
66151
  });
65803
66152
  var conditionalClassTransform = {
65804
66153
  id: "ui.conditionalClass",
@@ -65810,9 +66159,9 @@ var conditionalClassTransform = {
65810
66159
  return isTrue ? options.whenTrue : options.whenFalse;
65811
66160
  }
65812
66161
  };
65813
- var twoColumnContainerClassOptionsSchema = z58.object({
65814
- base: z58.string(),
65815
- reverseClass: z58.string()
66162
+ var twoColumnContainerClassOptionsSchema = z59.object({
66163
+ base: z59.string(),
66164
+ reverseClass: z59.string()
65816
66165
  });
65817
66166
  var twoColumnContainerClassTransform = {
65818
66167
  id: "ui.twoColumnContainerClass",
@@ -65827,8 +66176,8 @@ var twoColumnContainerClassTransform = {
65827
66176
  ]);
65828
66177
  }
65829
66178
  };
65830
- var twoColumnFlexBasisOptionsSchema = z58.object({
65831
- side: z58.enum(["image", "text"])
66179
+ var twoColumnFlexBasisOptionsSchema = z59.object({
66180
+ side: z59.enum(["image", "text"])
65832
66181
  });
65833
66182
  var twoColumnFlexBasisTransform = {
65834
66183
  id: "ui.twoColumnFlexBasis",
@@ -65842,8 +66191,8 @@ var twoColumnFlexBasisTransform = {
65842
66191
  return `${percent}%`;
65843
66192
  }
65844
66193
  };
65845
- var columnsDesktopSpanClassOptionsSchema = z58.object({
65846
- base: z58.string().optional()
66194
+ var columnsDesktopSpanClassOptionsSchema = z59.object({
66195
+ base: z59.string().optional()
65847
66196
  });
65848
66197
  var columnsDesktopSpanClassTransform = {
65849
66198
  id: "ui.columnsDesktopSpanClass",
@@ -65885,8 +66234,8 @@ var columnsColsAtTransform = {
65885
66234
  id: "ui.columnsColsAt",
65886
66235
  kind: "formatter",
65887
66236
  summary: "Resolve columns count for a specific breakpoint",
65888
- schema: z58.object({
65889
- breakpoint: z58.enum(["mobile", "md", "lg", "xl"])
66237
+ schema: z59.object({
66238
+ breakpoint: z59.enum(["mobile", "md", "lg", "xl"])
65890
66239
  }),
65891
66240
  run: (value, options) => {
65892
66241
  const content = asPartialObject(value) ?? {};
@@ -66023,14 +66372,14 @@ var uiTransforms = [
66023
66372
  init_colorConversion();
66024
66373
  init_core2();
66025
66374
  init_colorStyles();
66026
- import { z as z59 } from "zod";
66375
+ import { z as z60 } from "zod";
66027
66376
  var joinClasses7 = (parts) => parts.filter(
66028
66377
  (part) => typeof part === "string" && part.trim().length > 0
66029
66378
  ).join(" ").replace(/\s+/g, " ").trim();
66030
- var maxWidthClassSchema = z59.object({
66031
- base: z59.string().optional(),
66032
- container: z59.string().optional(),
66033
- full: z59.string().optional()
66379
+ var maxWidthClassSchema = z60.object({
66380
+ base: z60.string().optional(),
66381
+ container: z60.string().optional(),
66382
+ full: z60.string().optional()
66034
66383
  });
66035
66384
  var maxWidthClassTransform = {
66036
66385
  id: "layout.maxWidthClass",
@@ -66046,11 +66395,11 @@ var maxWidthClassTransform = {
66046
66395
  return joinClasses7([base, chosen]);
66047
66396
  }
66048
66397
  };
66049
- var headerRootClassSchema = z59.object({
66050
- base: z59.string().optional(),
66051
- sticky: z59.string().optional(),
66052
- stickyTransparent: z59.string().optional(),
66053
- invert: z59.string().optional()
66398
+ var headerRootClassSchema = z60.object({
66399
+ base: z60.string().optional(),
66400
+ sticky: z60.string().optional(),
66401
+ stickyTransparent: z60.string().optional(),
66402
+ invert: z60.string().optional()
66054
66403
  });
66055
66404
  function resolveBackgroundVisualStyles(backgroundColor, tokens, defaultToken = "surface") {
66056
66405
  const backgroundToken = typeof backgroundColor === "string" && backgroundColor.trim().length > 0 ? backgroundColor : defaultToken;
@@ -66171,11 +66520,11 @@ var headerRootClassTransform = {
66171
66520
  return joinClasses7(classes);
66172
66521
  }
66173
66522
  };
66174
- var footerRootClassSchema = z59.object({
66175
- base: z59.string().optional(),
66176
- surface: z59.string().optional(),
66177
- tokenPrefix: z59.string().optional(),
66178
- transparent: z59.string().optional()
66523
+ var footerRootClassSchema = z60.object({
66524
+ base: z60.string().optional(),
66525
+ surface: z60.string().optional(),
66526
+ tokenPrefix: z60.string().optional(),
66527
+ transparent: z60.string().optional()
66179
66528
  });
66180
66529
  var footerRootClassTransform = {
66181
66530
  id: "layout.footerRootClass",
@@ -66279,8 +66628,8 @@ var footerAlignClassMap = {
66279
66628
  end: "rb-justify-end",
66280
66629
  "space-between": "rb-justify-between"
66281
66630
  };
66282
- var footerBottomBarClassSchema = z59.object({
66283
- base: z59.string().optional()
66631
+ var footerBottomBarClassSchema = z60.object({
66632
+ base: z60.string().optional()
66284
66633
  });
66285
66634
  var footerBottomBarClassTransform = {
66286
66635
  id: "layout.footerBottomBarClass",
@@ -66302,10 +66651,10 @@ var footerBottomBarClassTransform = {
66302
66651
  ]);
66303
66652
  }
66304
66653
  };
66305
- var footerBottomBarContainerClassSchema = z59.object({
66306
- base: z59.string().optional(),
66307
- fullBleed: z59.string().optional(),
66308
- contained: z59.string().optional()
66654
+ var footerBottomBarContainerClassSchema = z60.object({
66655
+ base: z60.string().optional(),
66656
+ fullBleed: z60.string().optional(),
66657
+ contained: z60.string().optional()
66309
66658
  });
66310
66659
  var footerBottomBarContainerClassTransform = {
66311
66660
  id: "layout.footerBottomBarContainerClass",
@@ -66390,9 +66739,9 @@ var footerSplitNavSingleClassTransform = {
66390
66739
  ]);
66391
66740
  }
66392
66741
  };
66393
- var footerSplitMainClassSchema = z59.object({
66394
- base: z59.string().optional(),
66395
- reverseClass: z59.string().optional()
66742
+ var footerSplitMainClassSchema = z60.object({
66743
+ base: z60.string().optional(),
66744
+ reverseClass: z60.string().optional()
66396
66745
  });
66397
66746
  var footerSplitMainClassTransform = {
66398
66747
  id: "layout.footerSplitMainClass",
@@ -66410,8 +66759,8 @@ var footerSplitMainClassTransform = {
66410
66759
  ]);
66411
66760
  }
66412
66761
  };
66413
- var footerLogoClassSchema = z59.object({
66414
- base: z59.string().optional()
66762
+ var footerLogoClassSchema = z60.object({
66763
+ base: z60.string().optional()
66415
66764
  });
66416
66765
  var footerLogoClassTransform = {
66417
66766
  id: "layout.footerLogoClass",
@@ -66430,8 +66779,8 @@ var footerLogoClassTransform = {
66430
66779
  ]);
66431
66780
  }
66432
66781
  };
66433
- var footerLogoMediaClassSchema = z59.object({
66434
- base: z59.string().optional()
66782
+ var footerLogoMediaClassSchema = z60.object({
66783
+ base: z60.string().optional()
66435
66784
  });
66436
66785
  var footerLogoMediaClassTransform = {
66437
66786
  id: "layout.footerLogoMediaClass",
@@ -66486,12 +66835,12 @@ var layoutTransforms = [
66486
66835
  ];
66487
66836
 
66488
66837
  // ../blocks/src/system/transforms/registry/media.ts
66489
- import { z as z60 } from "zod";
66490
- var mediaFromUrlOptionsSchema = z60.object({
66491
- width: z60.number().int().positive().optional(),
66492
- height: z60.number().int().positive().optional(),
66493
- quality: z60.number().int().min(1).max(100).optional(),
66494
- resize: z60.enum(["cover", "contain", "fill"]).optional()
66838
+ import { z as z61 } from "zod";
66839
+ var mediaFromUrlOptionsSchema = z61.object({
66840
+ width: z61.number().int().positive().optional(),
66841
+ height: z61.number().int().positive().optional(),
66842
+ quality: z61.number().int().min(1).max(100).optional(),
66843
+ resize: z61.enum(["cover", "contain", "fill"]).optional()
66495
66844
  });
66496
66845
  function maybeBuildSupabaseTransformUrl(inputUrl, options) {
66497
66846
  const width = options.width;
@@ -66540,10 +66889,10 @@ var mediaTransforms = [mediaFromUrl];
66540
66889
 
66541
66890
  // ../blocks/src/system/transforms/registry/content.ts
66542
66891
  init_typeGuards2();
66543
- import { z as z61 } from "zod";
66544
- var supportedRichTextTokenSchema = z61.enum(["year", "site_name"]);
66545
- var interpolateRichTextTokensOptionsSchema = z61.object({
66546
- tokens: z61.array(supportedRichTextTokenSchema).default(["year", "site_name"])
66892
+ import { z as z62 } from "zod";
66893
+ var supportedRichTextTokenSchema = z62.enum(["year", "site_name"]);
66894
+ var interpolateRichTextTokensOptionsSchema = z62.object({
66895
+ tokens: z62.array(supportedRichTextTokenSchema).default(["year", "site_name"])
66547
66896
  });
66548
66897
  var richTextTokenPattern = /\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g;
66549
66898
  function getSiteName(context) {
@@ -68389,7 +68738,7 @@ init_fragments();
68389
68738
  init_boxStyles2();
68390
68739
  init_defineBlock();
68391
68740
  init_api_bindings();
68392
- import { z as z62 } from "zod";
68741
+ import { z as z63 } from "zod";
68393
68742
  var appointmentBookingManifest = createBlockManifest({
68394
68743
  id: "block.appointment-booking",
68395
68744
  version: "2.0.0",
@@ -68465,11 +68814,11 @@ var appointmentBookingManifest = createBlockManifest({
68465
68814
  })
68466
68815
  ]
68467
68816
  });
68468
- var availabilityDataSchema = z62.object({
68469
- slots: z62.array(z62.object({
68470
- startAt: z62.string(),
68471
- endAt: z62.string(),
68472
- resourceId: z62.string()
68817
+ var availabilityDataSchema = z63.object({
68818
+ slots: z63.array(z63.object({
68819
+ startAt: z63.string(),
68820
+ endAt: z63.string(),
68821
+ resourceId: z63.string()
68473
68822
  }))
68474
68823
  });
68475
68824
  var appointmentBookingBlockDefinition = {
@@ -68497,178 +68846,6 @@ var appointmentBookingBlockDefinition = {
68497
68846
  init_event_registration();
68498
68847
  init_course_registration();
68499
68848
 
68500
- // ../blocks/src/system/blocks/event-details.ts
68501
- init_builder();
68502
- init_builder();
68503
- init_styledSection();
68504
- init_fragments();
68505
- init_shared4();
68506
- init_shop_shared();
68507
- init_defineBlock();
68508
- import { z as z63 } from "zod";
68509
- var eventDetailsManifest = createBlockManifest({
68510
- id: "block.event-details",
68511
- version: "1.0.0",
68512
- title: "Event Details",
68513
- titleSource: "heading",
68514
- description: "Date/time, venue, map, and other dates for an event",
68515
- category: "content",
68516
- tags: ["events", "venue", "map", "schedule", "dates"],
68517
- icon: "MapPin",
68518
- styleTokens: { background: "surface", typography: "body", spacing: "md" },
68519
- behaviours: {
68520
- supportsThemeSwitching: true,
68521
- inlineEditing: false,
68522
- animation: false,
68523
- paletteHidden: false
68524
- },
68525
- additionalFields: [
68526
- {
68527
- id: "heading",
68528
- type: "text",
68529
- label: "Heading",
68530
- description: "Optional heading shown above event details",
68531
- required: false,
68532
- multiline: false,
68533
- defaultValue: "Event details"
68534
- },
68535
- {
68536
- id: "showVenue",
68537
- type: "boolean",
68538
- label: "Show venue",
68539
- required: false,
68540
- defaultValue: true,
68541
- ui: { intent: "display" }
68542
- },
68543
- {
68544
- id: "showMap",
68545
- type: "boolean",
68546
- label: "Show map",
68547
- description: "Embed a map when the venue has coordinates",
68548
- required: false,
68549
- defaultValue: true,
68550
- ui: { intent: "display" }
68551
- },
68552
- {
68553
- id: "showOtherDates",
68554
- type: "boolean",
68555
- label: "Show other dates",
68556
- required: false,
68557
- defaultValue: true,
68558
- ui: { intent: "display" }
68559
- },
68560
- {
68561
- id: "otherDatesLimit",
68562
- type: "select",
68563
- label: "Other dates limit",
68564
- required: false,
68565
- multiple: false,
68566
- defaultValue: "5",
68567
- options: [
68568
- { value: "3", label: "3 dates" },
68569
- { value: "5", label: "5 dates" },
68570
- { value: "10", label: "10 dates" }
68571
- ],
68572
- ui: { intent: "display" }
68573
- },
68574
- {
68575
- id: "showCost",
68576
- type: "boolean",
68577
- label: "Show cost",
68578
- description: "Display ticket price for paid events",
68579
- required: false,
68580
- defaultValue: true,
68581
- ui: { intent: "display" }
68582
- },
68583
- {
68584
- id: "showAcceptedPasses",
68585
- type: "boolean",
68586
- label: "Show accepted passes",
68587
- description: "Display passes that can be used for this event",
68588
- required: false,
68589
- defaultValue: true,
68590
- ui: { intent: "display" }
68591
- },
68592
- {
68593
- id: "showAcceptedMemberships",
68594
- type: "boolean",
68595
- label: "Show accepted memberships",
68596
- description: "Display memberships that grant access to this event",
68597
- required: false,
68598
- defaultValue: true,
68599
- ui: { intent: "display" }
68600
- }
68601
- ],
68602
- layout: [
68603
- styledSection({
68604
- baseClass: "",
68605
- spacing: "spacious",
68606
- children: sectionContainer(
68607
- [
68608
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
68609
- el("event-details", {
68610
- occurrenceContext: {
68611
- $bind: { from: "$root.occurrenceContext", fallback: null }
68612
- },
68613
- contentEntry: { $bind: { from: "$root.contentEntry", fallback: null } },
68614
- events: { $bind: { from: "data.eventDetailsData.events" } },
68615
- showVenue: { $bind: { from: "content.showVenue" } },
68616
- showMap: { $bind: { from: "content.showMap" } },
68617
- showOtherDates: { $bind: { from: "content.showOtherDates" } },
68618
- otherDatesLimit: {
68619
- $bind: { from: "content.otherDatesLimit", fallback: "5" }
68620
- },
68621
- showCost: { $bind: { from: "content.showCost", fallback: true } },
68622
- showAcceptedPasses: {
68623
- $bind: { from: "content.showAcceptedPasses", fallback: true }
68624
- },
68625
- showAcceptedMemberships: {
68626
- $bind: { from: "content.showAcceptedMemberships", fallback: true }
68627
- },
68628
- sitePasses: { $bind: { from: "data.eventDetailsData.sitePasses" } },
68629
- siteMemberships: { $bind: { from: "data.eventDetailsData.siteMemberships" } }
68630
- })
68631
- ],
68632
- { gap: "lg" }
68633
- )
68634
- })
68635
- ]
68636
- });
68637
- var occurrenceContextSchema2 = z63.object({
68638
- id: z63.string(),
68639
- seriesId: z63.string(),
68640
- startsAt: z63.string(),
68641
- endsAt: z63.string(),
68642
- timeZone: z63.string(),
68643
- capacityOverride: z63.number().nullable().optional(),
68644
- overrides: z63.record(z63.string(), z63.unknown()).nullable().optional()
68645
- }).nullable();
68646
- var eventDetailsBlockDefinition = {
68647
- manifest: eventDetailsManifest,
68648
- dataSchemas: {
68649
- eventDetailsData: z63.object({
68650
- events: publicEventsArraySchema,
68651
- sitePasses: z63.object({ passes: z63.array(publicPassProductSchema) }),
68652
- siteMemberships: z63.object({ memberships: z63.array(publicMembershipProductSchema) })
68653
- }).optional(),
68654
- occurrenceContext: occurrenceContextSchema2.optional()
68655
- },
68656
- dataLoaders: {
68657
- eventDetailsData: {
68658
- endpoint: "getPublicEventDetails",
68659
- params: {
68660
- siteId: { $bind: { from: "$root.siteId" } },
68661
- stage: { $bind: { from: "$root.previewStage", fallback: "published" } },
68662
- limit: "25",
68663
- entryId: { $bind: { from: "$root.contentEntry._entryId" } },
68664
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
68665
- includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
68666
- },
68667
- mode: "server"
68668
- }
68669
- }
68670
- };
68671
-
68672
68849
  // ../blocks/src/system/blocks/course-details.ts
68673
68850
  init_builder();
68674
68851
  init_styledSection();
@@ -73344,6 +73521,9 @@ init_textColor();
73344
73521
  // ../theme-core/src/palette/utils/legibility.ts
73345
73522
  init_contrast2();
73346
73523
 
73524
+ // ../theme-core/src/palette/utils/index.ts
73525
+ init_onColor();
73526
+
73347
73527
  // ../theme-core/src/mock-themes/components/PaletteCard.tsx
73348
73528
  init_expandPalette();
73349
73529
 
@@ -75840,6 +76020,17 @@ async function Layout({
75840
76020
  return useThemeScope ? /* @__PURE__ */ jsx162(ThemeScope2, { theme, children: content }) : content;
75841
76021
  }
75842
76022
 
76023
+ // ../api/src/apiEndpointTypes.ts
76024
+ function blockedDemoMutationPolicy(classification, publicMessage) {
76025
+ if (publicMessage.trim() === "") {
76026
+ throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
76027
+ }
76028
+ return {
76029
+ classification,
76030
+ publicMessage
76031
+ };
76032
+ }
76033
+
75843
76034
  // ../api/src/cache-tags.ts
75844
76035
  var TAG_TEMPLATES = {
75845
76036
  siteCollection: "riverbank:site",
@@ -75870,6 +76061,18 @@ var TAG_TEMPLATES = {
75870
76061
  };
75871
76062
 
75872
76063
  // ../api/src/endpoints.ts
76064
+ var DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy(
76065
+ "blocked-hidden",
76066
+ "This action is not available in demo sites."
76067
+ );
76068
+ var DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy(
76069
+ "blocked-disabled",
76070
+ "This setting is disabled in demo sites."
76071
+ );
76072
+ var DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy(
76073
+ "internal-only",
76074
+ "This internal operation is not available in demo sites."
76075
+ );
75873
76076
  var ENDPOINT_DEFINITIONS = {
75874
76077
  // AI endpoints - no cache due to dynamic nature
75875
76078
  aiContentUpdateChat: {
@@ -75986,7 +76189,8 @@ var ENDPOINT_DEFINITIONS = {
75986
76189
  path: "/sites/{siteId}/ai/generate",
75987
76190
  method: "POST",
75988
76191
  auth: "user",
75989
- responseKind: "json"
76192
+ responseKind: "json",
76193
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
75990
76194
  },
75991
76195
  getOnboardingPreviewStatus: {
75992
76196
  path: "/public/sites/{siteId}/onboarding/preview-status",
@@ -76007,7 +76211,8 @@ var ENDPOINT_DEFINITIONS = {
76007
76211
  method: "POST",
76008
76212
  auth: "user",
76009
76213
  errors: [],
76010
- responseKind: "json"
76214
+ responseKind: "json",
76215
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
76011
76216
  },
76012
76217
  goLiveSite: {
76013
76218
  path: "/sites/{siteId}/launch/go-live",
@@ -76076,20 +76281,23 @@ var ENDPOINT_DEFINITIONS = {
76076
76281
  path: "/sites/{siteId}/ai/site-wizard/goals",
76077
76282
  method: "POST",
76078
76283
  auth: "user",
76079
- responseKind: "json"
76284
+ responseKind: "json",
76285
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76080
76286
  },
76081
76287
  aiSiteWizardIntakeTriage: {
76082
76288
  path: "/sites/{siteId}/ai/site-wizard/intake-triage",
76083
76289
  method: "POST",
76084
76290
  auth: "user",
76085
- responseKind: "json"
76291
+ responseKind: "json",
76292
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76086
76293
  },
76087
76294
  aiSiteWizardTelemetry: {
76088
76295
  path: "/sites/{siteId}/ai/site-wizard/telemetry",
76089
76296
  method: "POST",
76090
76297
  auth: "user",
76091
76298
  errors: [],
76092
- responseKind: "json"
76299
+ responseKind: "json",
76300
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76093
76301
  },
76094
76302
  // Admin SEO
76095
76303
  listGscPropertiesAdmin: {
@@ -76296,7 +76504,7 @@ var ENDPOINT_DEFINITIONS = {
76296
76504
  responseKind: "json",
76297
76505
  errors: ["resource:not_found", "server:internal_error"]
76298
76506
  },
76299
- // Ops (event hosts/admins)
76507
+ // Ops (staff event operators/admins)
76300
76508
  opsListUpcomingEventOccurrences: {
76301
76509
  path: "/ops/sites/{siteId}/events",
76302
76510
  method: "GET",
@@ -76314,6 +76522,7 @@ var ENDPOINT_DEFINITIONS = {
76314
76522
  method: "POST",
76315
76523
  auth: "user",
76316
76524
  responseKind: "json",
76525
+ demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
76317
76526
  errors: [
76318
76527
  "validation:invalid_input",
76319
76528
  "auth:forbidden",
@@ -76326,6 +76535,7 @@ var ENDPOINT_DEFINITIONS = {
76326
76535
  method: "POST",
76327
76536
  auth: "user",
76328
76537
  responseKind: "json",
76538
+ demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
76329
76539
  errors: [
76330
76540
  "validation:invalid_input",
76331
76541
  "auth:forbidden",
@@ -76344,6 +76554,7 @@ var ENDPOINT_DEFINITIONS = {
76344
76554
  method: "POST",
76345
76555
  auth: "user",
76346
76556
  responseKind: "json",
76557
+ demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
76347
76558
  errors: [
76348
76559
  "validation:invalid_input",
76349
76560
  "auth:forbidden",
@@ -76377,6 +76588,7 @@ var ENDPOINT_DEFINITIONS = {
76377
76588
  method: "POST",
76378
76589
  auth: "user",
76379
76590
  responseKind: "json",
76591
+ demoMutation: DEMO_MUTATION_INTERNAL_ONLY,
76380
76592
  errors: [
76381
76593
  "validation:invalid_input",
76382
76594
  "auth:forbidden",
@@ -76405,7 +76617,8 @@ var ENDPOINT_DEFINITIONS = {
76405
76617
  method: "POST",
76406
76618
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings],
76407
76619
  auth: "user",
76408
- responseKind: "json"
76620
+ responseKind: "json",
76621
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76409
76622
  },
76410
76623
  previewEmailTemplate: {
76411
76624
  path: "/sites/{siteId}/settings/emails/preview",
@@ -76456,14 +76669,16 @@ var ENDPOINT_DEFINITIONS = {
76456
76669
  method: "POST",
76457
76670
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
76458
76671
  auth: "user",
76459
- responseKind: "json"
76672
+ responseKind: "json",
76673
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76460
76674
  },
76461
76675
  createNewsletterSubscribersImportUploadUrl: {
76462
76676
  path: "/sites/{siteId}/newsletter/subscribers/import-url",
76463
76677
  method: "POST",
76464
76678
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
76465
76679
  auth: "user",
76466
- responseKind: "json"
76680
+ responseKind: "json",
76681
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76467
76682
  },
76468
76683
  exportNewsletterSubscribersCsv: {
76469
76684
  path: "/sites/{siteId}/newsletter/subscribers/export.csv",
@@ -76660,14 +76875,16 @@ var ENDPOINT_DEFINITIONS = {
76660
76875
  method: "POST",
76661
76876
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
76662
76877
  auth: "user",
76663
- responseKind: "json"
76878
+ responseKind: "json",
76879
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76664
76880
  },
76665
76881
  testSendNewsletterCampaign: {
76666
76882
  path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
76667
76883
  method: "POST",
76668
76884
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
76669
76885
  auth: "user",
76670
- responseKind: "json"
76886
+ responseKind: "json",
76887
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
76671
76888
  },
76672
76889
  listNewsletterSendJobs: {
76673
76890
  path: "/sites/{siteId}/newsletter/jobs",
@@ -77355,7 +77572,8 @@ var ENDPOINT_DEFINITIONS = {
77355
77572
  method: "DELETE",
77356
77573
  tags: ["site", "site-{siteId}"],
77357
77574
  auth: "user",
77358
- responseKind: "json"
77575
+ responseKind: "json",
77576
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
77359
77577
  },
77360
77578
  listSiteMembers: {
77361
77579
  path: "/sites/{siteId}/members",
@@ -77811,7 +78029,8 @@ var ENDPOINT_DEFINITIONS = {
77811
78029
  method: "POST",
77812
78030
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
77813
78031
  auth: "user",
77814
- responseKind: "json"
78032
+ responseKind: "json",
78033
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
77815
78034
  },
77816
78035
  updateSiteGeneralSettings: {
77817
78036
  path: "/sites/{siteId}/settings/general",
@@ -78619,6 +78838,14 @@ var ENDPOINT_DEFINITIONS = {
78619
78838
  auth: "user",
78620
78839
  responseKind: "json"
78621
78840
  },
78841
+ saveSiteChromeLookSelection: {
78842
+ path: "/sites/{siteId}/theme/site-chrome-look",
78843
+ method: "POST",
78844
+ tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme],
78845
+ auth: "user",
78846
+ errors: [],
78847
+ responseKind: "json"
78848
+ },
78622
78849
  uploadSiteLogo: {
78623
78850
  path: "/storage/upload-site-logo",
78624
78851
  method: "POST",
@@ -80042,6 +80269,7 @@ var ENDPOINT_DEFINITIONS = {
80042
80269
  method: "POST",
80043
80270
  tags: ["site-{siteId}"],
80044
80271
  auth: "user",
80272
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
80045
80273
  errors: [
80046
80274
  "validation:invalid_input",
80047
80275
  "auth:forbidden",
@@ -80056,6 +80284,7 @@ var ENDPOINT_DEFINITIONS = {
80056
80284
  method: "POST",
80057
80285
  tags: ["site-{siteId}"],
80058
80286
  auth: "user",
80287
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
80059
80288
  errors: [
80060
80289
  "validation:invalid_input",
80061
80290
  "auth:forbidden",
@@ -80365,6 +80594,7 @@ var ENDPOINT_DEFINITIONS = {
80365
80594
  tags: ["site-{siteId}", "passes-{siteId}"],
80366
80595
  auth: "user",
80367
80596
  responseKind: "json",
80597
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
80368
80598
  errors: ["validation:invalid_input", "server:internal_error"]
80369
80599
  },
80370
80600
  getBookingPass: {
@@ -80380,6 +80610,7 @@ var ENDPOINT_DEFINITIONS = {
80380
80610
  tags: ["site-{siteId}", "passes-{siteId}"],
80381
80611
  auth: "user",
80382
80612
  responseKind: "json",
80613
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
80383
80614
  errors: [
80384
80615
  "validation:invalid_input",
80385
80616
  "resource:not_found",
@@ -80392,6 +80623,7 @@ var ENDPOINT_DEFINITIONS = {
80392
80623
  tags: ["site-{siteId}", "passes-{siteId}"],
80393
80624
  auth: "user",
80394
80625
  responseKind: "json",
80626
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
80395
80627
  errors: [
80396
80628
  "validation:invalid_input",
80397
80629
  "resource:not_found",
@@ -80447,6 +80679,7 @@ var ENDPOINT_DEFINITIONS = {
80447
80679
  tags: ["site-{siteId}", "memberships-{siteId}"],
80448
80680
  auth: "user",
80449
80681
  responseKind: "json",
80682
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
80450
80683
  errors: ["validation:invalid_input", "server:internal_error"]
80451
80684
  },
80452
80685
  getBookingMembership: {
@@ -80462,6 +80695,7 @@ var ENDPOINT_DEFINITIONS = {
80462
80695
  tags: ["site-{siteId}", "memberships-{siteId}"],
80463
80696
  auth: "user",
80464
80697
  responseKind: "json",
80698
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
80465
80699
  errors: [
80466
80700
  "validation:invalid_input",
80467
80701
  "resource:not_found",
@@ -80474,6 +80708,7 @@ var ENDPOINT_DEFINITIONS = {
80474
80708
  tags: ["site-{siteId}", "memberships-{siteId}"],
80475
80709
  auth: "user",
80476
80710
  responseKind: "json",
80711
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
80477
80712
  errors: [
80478
80713
  "validation:invalid_input",
80479
80714
  "resource:not_found",
@@ -80690,6 +80925,7 @@ var ENDPOINT_DEFINITIONS = {
80690
80925
  tags: ["site-{siteId}", "customers-{siteId}"],
80691
80926
  auth: "user",
80692
80927
  responseKind: "json",
80928
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
80693
80929
  errors: [
80694
80930
  "validation:invalid_input",
80695
80931
  "auth:forbidden",
@@ -81063,6 +81299,14 @@ var ENDPOINT_DEFINITIONS = {
81063
81299
  auth: "admin",
81064
81300
  responseKind: "json"
81065
81301
  },
81302
+ adminScheduleBillingComponentEnd: {
81303
+ path: "/admin/sites/{siteId}/billing/components/{componentId}/end",
81304
+ method: "POST",
81305
+ tags: ["admin", "site-{siteId}", "billing"],
81306
+ auth: "admin",
81307
+ responseKind: "json",
81308
+ errors: []
81309
+ },
81066
81310
  // Admin GSC/SEO endpoints
81067
81311
  adminGscVerifyStart: {
81068
81312
  path: "/admin/seo/gsc/properties/verify/start",
@@ -81787,6 +82031,13 @@ var ENDPOINT_DEFINITIONS = {
81787
82031
  auth: "public",
81788
82032
  responseKind: "json"
81789
82033
  },
82034
+ demoClaimMagicLink: {
82035
+ path: "/demo/auth/send-magic-link",
82036
+ method: "POST",
82037
+ auth: "public",
82038
+ responseKind: "json",
82039
+ errors: []
82040
+ },
81790
82041
  previewExchangeCode: {
81791
82042
  path: "/preview/auth/exchange",
81792
82043
  method: "POST",
@@ -81945,61 +82196,74 @@ var ENDPOINT_DEFINITIONS = {
81945
82196
  }
81946
82197
  };
81947
82198
 
81948
- // ../api/src/navigation/contracts.ts
82199
+ // ../api/src/accessAdmin.ts
81949
82200
  import { z as z66 } from "zod";
81950
- var portalLinkPayloadSchema = z66.object({
81951
- kind: z66.literal("portal"),
81952
- path: z66.string().trim().startsWith("/").optional(),
81953
- labels: z66.object({
81954
- loggedOut: z66.string().trim().min(1).optional(),
81955
- loggedIn: z66.string().trim().min(1).optional()
82201
+ var managedDomainAddOnPricingSnapshotSchema = z66.object({
82202
+ formulaVersion: z66.literal("managed-domain-overage-v1"),
82203
+ conversionRule: z66.literal("usd-to-gbp-1-to-1-v1"),
82204
+ registrarAnnualCost: z66.number().nonnegative(),
82205
+ registrarCurrency: z66.literal("USD"),
82206
+ includedAnnualAllowance: z66.number().nonnegative(),
82207
+ includedAnnualAllowanceCurrency: z66.literal("USD"),
82208
+ monthlyAmountCents: z66.number().int().nonnegative(),
82209
+ monthlyCurrency: z66.literal("gbp")
82210
+ });
82211
+
82212
+ // ../api/src/navigation/contracts.ts
82213
+ import { z as z67 } from "zod";
82214
+ var portalLinkPayloadSchema = z67.object({
82215
+ kind: z67.literal("portal"),
82216
+ path: z67.string().trim().startsWith("/").optional(),
82217
+ labels: z67.object({
82218
+ loggedOut: z67.string().trim().min(1).optional(),
82219
+ loggedIn: z67.string().trim().min(1).optional()
81956
82220
  }).optional()
81957
82221
  });
81958
- var cartLinkLabelConfigSchema = z66.discriminatedUnion("kind", [
81959
- z66.object({
81960
- kind: z66.literal("icon-only")
82222
+ var cartLinkLabelConfigSchema = z67.discriminatedUnion("kind", [
82223
+ z67.object({
82224
+ kind: z67.literal("icon-only")
81961
82225
  }),
81962
- z66.object({
81963
- kind: z66.literal("icon-with-label"),
81964
- label: z66.string().trim().min(1)
82226
+ z67.object({
82227
+ kind: z67.literal("icon-with-label"),
82228
+ label: z67.string().trim().min(1)
81965
82229
  })
81966
82230
  ]);
81967
- var cartLinkPayloadSchema = z66.object({
81968
- kind: z66.literal("cart"),
81969
- badge: z66.enum(["show-count", "hidden"]),
82231
+ var cartLinkPayloadSchema = z67.object({
82232
+ kind: z67.literal("cart"),
82233
+ badge: z67.enum(["show-count", "hidden"]),
81970
82234
  label: cartLinkLabelConfigSchema
81971
82235
  });
81972
- var internalLinkPayloadSchema = z66.object({
81973
- kind: z66.literal("internal"),
81974
- routeId: z66.string().uuid(),
81975
- entityId: z66.string().uuid(),
81976
- entityType: z66.enum(["page", "content"]),
81977
- href: z66.string().min(1),
81978
- title: z66.string().min(1),
81979
- typeLabel: z66.string().min(1),
81980
- contentTypeKey: z66.string().nullable().optional(),
81981
- contentTypeName: z66.string().nullable().optional(),
81982
- updatedAt: z66.string().nullable().optional()
82236
+ var internalLinkPayloadSchema = z67.object({
82237
+ kind: z67.literal("internal"),
82238
+ routeId: z67.string().uuid(),
82239
+ entityId: z67.string().uuid(),
82240
+ entityType: z67.enum(["page", "content"]),
82241
+ href: z67.string().min(1),
82242
+ title: z67.string().min(1),
82243
+ typeLabel: z67.string().min(1),
82244
+ contentTypeKey: z67.string().nullable().optional(),
82245
+ contentTypeName: z67.string().nullable().optional(),
82246
+ updatedAt: z67.string().nullable().optional()
81983
82247
  }).passthrough();
81984
- var externalLinkSchema2 = z66.object({
81985
- kind: z66.literal("external"),
82248
+ var externalLinkSchema2 = z67.object({
82249
+ kind: z67.literal("external"),
81986
82250
  // Navigation external links are expected to be absolute URLs.
81987
- href: z66.string().url()
82251
+ href: z67.string().url()
81988
82252
  });
81989
- var customLinkSchema2 = z66.object({
81990
- kind: z66.literal("url"),
81991
- href: z66.string().min(1)
82253
+ var customLinkSchema2 = z67.object({
82254
+ kind: z67.literal("url"),
82255
+ href: z67.string().min(1)
81992
82256
  });
81993
- var pageLinkSchema2 = z66.object({
81994
- kind: z66.literal("page"),
81995
- identifier: z66.string().min(1)
82257
+ var pageLinkSchema2 = z67.object({
82258
+ kind: z67.literal("page"),
82259
+ identifier: z67.string().min(1)
81996
82260
  });
81997
- var entryLinkSchema2 = z66.object({
81998
- kind: z66.literal("entry"),
81999
- contentType: z66.string().min(1),
82000
- identifier: z66.string().min(1)
82261
+ var entryLinkSchema2 = z67.object({
82262
+ kind: z67.literal("entry"),
82263
+ contentType: z67.string().min(1),
82264
+ identifier: z67.string().min(1)
82001
82265
  });
82002
- var linkPayloadSchema = z66.discriminatedUnion("kind", [
82266
+ var linkPayloadSchema = z67.discriminatedUnion("kind", [
82003
82267
  internalLinkPayloadSchema,
82004
82268
  pageLinkSchema2,
82005
82269
  entryLinkSchema2,
@@ -82016,7 +82280,7 @@ var navigationLinkInputSchemaOptions = [
82016
82280
  portalLinkPayloadSchema,
82017
82281
  cartLinkPayloadSchema
82018
82282
  ];
82019
- var navigationLinkInputSchema = z66.discriminatedUnion(
82283
+ var navigationLinkInputSchema = z67.discriminatedUnion(
82020
82284
  "kind",
82021
82285
  navigationLinkInputSchemaOptions
82022
82286
  );
@@ -82024,80 +82288,79 @@ var navigationLinkInputSchema = z66.discriminatedUnion(
82024
82288
  // ../api/src/sdkConfig/contracts.ts
82025
82289
  init_schema3();
82026
82290
  init_schema();
82027
- import { z as z67 } from "zod";
82291
+ import { z as z68 } from "zod";
82028
82292
  function unsafeRetypeZodSchema(schema) {
82029
82293
  return schema;
82030
82294
  }
82031
- var navIdListSchema = z67.preprocess((value) => {
82295
+ var navIdListSchema = z68.preprocess((value) => {
82032
82296
  if (!Array.isArray(value)) return void 0;
82033
82297
  const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
82034
82298
  return filtered.length > 0 ? filtered : void 0;
82035
- }, z67.array(z67.string()).max(200).optional());
82036
- var dashboardNavVisibilityBaseSchema = z67.object({
82037
- mode: z67.enum(["augment", "restrict"]).optional(),
82299
+ }, z68.array(z68.string()).max(200).optional());
82300
+ var dashboardNavVisibilityBaseSchema = z68.object({
82301
+ mode: z68.enum(["augment", "restrict"]).optional(),
82038
82302
  allowIds: navIdListSchema,
82039
82303
  denyIds: navIdListSchema
82040
82304
  }).strip();
82041
- var dashboardNavVisibilityRolesSchema = z67.object({
82305
+ var dashboardNavVisibilityRolesSchema = z68.object({
82042
82306
  administrator: dashboardNavVisibilityBaseSchema.optional(),
82043
82307
  editor: dashboardNavVisibilityBaseSchema.optional(),
82044
- team_member: dashboardNavVisibilityBaseSchema.optional(),
82045
- event_host: dashboardNavVisibilityBaseSchema.optional()
82308
+ team_member: dashboardNavVisibilityBaseSchema.optional()
82046
82309
  }).strip().optional();
82047
82310
  var dashboardNavVisibilitySchema = dashboardNavVisibilityBaseSchema.extend({
82048
82311
  roles: dashboardNavVisibilityRolesSchema
82049
82312
  }).strip();
82050
- var dashboardNavigationConfigSchema = z67.object({
82313
+ var dashboardNavigationConfigSchema = z68.object({
82051
82314
  siteNav: dashboardNavVisibilitySchema.optional(),
82052
82315
  settingsNav: dashboardNavVisibilitySchema.optional()
82053
82316
  }).strip();
82054
- var dashboardConfigSchema = z67.object({
82055
- previewEditingEnabled: z67.boolean().optional(),
82317
+ var dashboardConfigSchema = z68.object({
82318
+ previewEditingEnabled: z68.boolean().optional(),
82056
82319
  navigation: dashboardNavigationConfigSchema.optional()
82057
82320
  }).strip();
82058
82321
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
82059
82322
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
82060
- var sdkLoaderEndpointSchema = z67.enum(SUPPORTED_LOADER_ENDPOINTS);
82061
- var loaderParamBindingSchema = z67.object({
82062
- $bind: z67.object({
82063
- from: z67.string().min(1, "Binding path is required"),
82064
- fallback: z67.string().optional()
82323
+ var sdkLoaderEndpointSchema = z68.enum(SUPPORTED_LOADER_ENDPOINTS);
82324
+ var loaderParamBindingSchema = z68.object({
82325
+ $bind: z68.object({
82326
+ from: z68.string().min(1, "Binding path is required"),
82327
+ fallback: z68.string().optional()
82065
82328
  })
82066
82329
  });
82067
- var loaderParamValueSchema = z67.union([
82068
- z67.string(),
82069
- z67.number(),
82070
- z67.boolean(),
82330
+ var loaderParamValueSchema = z68.union([
82331
+ z68.string(),
82332
+ z68.number(),
82333
+ z68.boolean(),
82071
82334
  loaderParamBindingSchema
82072
82335
  ]);
82073
- var sdkConfigLoaderSchema = z67.object({
82336
+ var sdkConfigLoaderSchema = z68.object({
82074
82337
  endpoint: sdkLoaderEndpointSchema,
82075
- params: z67.record(z67.string(), loaderParamValueSchema),
82076
- mode: z67.enum(["server", "client"]).default("server")
82338
+ params: z68.record(z68.string(), loaderParamValueSchema),
82339
+ mode: z68.enum(["server", "client"]).default("server")
82077
82340
  });
82078
- var sdkDataLoadersSchema = z67.record(z67.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
82079
- var sdkCustomBlockIdSchema = z67.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
82341
+ var sdkDataLoadersSchema = z68.record(z68.string(), sdkConfigLoaderSchema).refine((loaders) => Object.keys(loaders).length <= 5, { message: "Maximum 5 data loaders per block" }).optional();
82342
+ var sdkCustomBlockIdSchema = z68.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
82080
82343
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
82081
82344
  }).transform((value) => value);
82082
- var sdkCustomBlockInputSchema = z67.object({
82345
+ var sdkCustomBlockInputSchema = z68.object({
82083
82346
  id: sdkCustomBlockIdSchema,
82084
- title: z67.string().min(1),
82085
- titleSource: z67.union([z67.string().min(1), z67.array(z67.string().min(1)).min(1)]).optional(),
82086
- description: z67.string().optional(),
82347
+ title: z68.string().min(1),
82348
+ titleSource: z68.union([z68.string().min(1), z68.array(z68.string().min(1)).min(1)]).optional(),
82349
+ description: z68.string().optional(),
82087
82350
  category: blockCategoryEnum,
82088
- icon: z67.string().optional(),
82089
- tags: z67.array(z67.string()).optional(),
82351
+ icon: z68.string().optional(),
82352
+ tags: z68.array(z68.string()).optional(),
82090
82353
  fields: fieldDefinitionInputSchema.array().min(1),
82091
82354
  dataLoaders: sdkDataLoadersSchema,
82092
82355
  layout: NodeSchema.optional(),
82093
- variants: z67.record(z67.string().min(1), NodeSchema).optional(),
82094
- defaultVariant: z67.string().min(1).optional(),
82095
- variantOptions: z67.record(
82096
- z67.string().min(1),
82097
- z67.object({
82098
- label: z67.string().min(1).optional(),
82099
- description: z67.string().min(1).optional(),
82100
- icon: z67.string().min(1).optional()
82356
+ variants: z68.record(z68.string().min(1), NodeSchema).optional(),
82357
+ defaultVariant: z68.string().min(1).optional(),
82358
+ variantOptions: z68.record(
82359
+ z68.string().min(1),
82360
+ z68.object({
82361
+ label: z68.string().min(1).optional(),
82362
+ description: z68.string().min(1).optional(),
82363
+ icon: z68.string().min(1).optional()
82101
82364
  })
82102
82365
  ).optional()
82103
82366
  }).superRefine((data, ctx) => {
@@ -82107,7 +82370,7 @@ var sdkCustomBlockInputSchema = z67.object({
82107
82370
  const exists = data.fields.some((field) => field.id === source);
82108
82371
  if (!exists) {
82109
82372
  ctx.addIssue({
82110
- code: z67.ZodIssueCode.custom,
82373
+ code: z68.ZodIssueCode.custom,
82111
82374
  message: `titleSource must reference a valid field ID (got "${source}")`,
82112
82375
  path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
82113
82376
  });
@@ -82116,7 +82379,7 @@ var sdkCustomBlockInputSchema = z67.object({
82116
82379
  }
82117
82380
  if (data.layout && data.variants) {
82118
82381
  ctx.addIssue({
82119
- code: z67.ZodIssueCode.custom,
82382
+ code: z68.ZodIssueCode.custom,
82120
82383
  message: "Custom block must define either `layout` or `variants`, not both",
82121
82384
  path: ["variants"]
82122
82385
  });
@@ -82125,14 +82388,14 @@ var sdkCustomBlockInputSchema = z67.object({
82125
82388
  const keys = Object.keys(data.variants);
82126
82389
  if (keys.length === 0) {
82127
82390
  ctx.addIssue({
82128
- code: z67.ZodIssueCode.custom,
82391
+ code: z68.ZodIssueCode.custom,
82129
82392
  message: "`variants` must contain at least one variant key",
82130
82393
  path: ["variants"]
82131
82394
  });
82132
82395
  }
82133
82396
  if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
82134
82397
  ctx.addIssue({
82135
- code: z67.ZodIssueCode.custom,
82398
+ code: z68.ZodIssueCode.custom,
82136
82399
  message: "`defaultVariant` must be a key present in `variants`",
82137
82400
  path: ["defaultVariant"]
82138
82401
  });
@@ -82141,7 +82404,7 @@ var sdkCustomBlockInputSchema = z67.object({
82141
82404
  for (const key of Object.keys(data.variantOptions)) {
82142
82405
  if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
82143
82406
  ctx.addIssue({
82144
- code: z67.ZodIssueCode.custom,
82407
+ code: z68.ZodIssueCode.custom,
82145
82408
  message: "`variantOptions` key must exist in `variants`",
82146
82409
  path: ["variantOptions", key]
82147
82410
  });
@@ -82150,74 +82413,74 @@ var sdkCustomBlockInputSchema = z67.object({
82150
82413
  }
82151
82414
  }
82152
82415
  });
82153
- var sdkBlockFieldExtensionInputSchema = z67.object({
82416
+ var sdkBlockFieldExtensionInputSchema = z68.object({
82154
82417
  fields: fieldDefinitionInputSchema.array().min(1)
82155
82418
  });
82156
- var sdkBlockFieldExtensionsInputSchema = z67.record(
82157
- z67.string().min(1),
82419
+ var sdkBlockFieldExtensionsInputSchema = z68.record(
82420
+ z68.string().min(1),
82158
82421
  sdkBlockFieldExtensionInputSchema
82159
82422
  );
82160
- var sdkThemePaletteSchema = z67.record(z67.string(), z67.string());
82161
- var sdkThemeConfigSchema = z67.object({
82423
+ var sdkThemePaletteSchema = z68.record(z68.string(), z68.string());
82424
+ var sdkThemeConfigSchema = z68.object({
82162
82425
  palette: sdkThemePaletteSchema
82163
82426
  });
82164
- var sdkSectionBackgroundSchema = z67.object({
82165
- id: z67.string().min(1),
82166
- label: z67.string().min(1),
82167
- token: z67.string().min(1)
82427
+ var sdkSectionBackgroundSchema = z68.object({
82428
+ id: z68.string().min(1),
82429
+ label: z68.string().min(1),
82430
+ token: z68.string().min(1)
82168
82431
  });
82169
- var sdkSectionOptionsConfigSchema = z67.object({
82170
- backgroundColor: z67.boolean().optional(),
82171
- backgroundImage: z67.boolean().optional(),
82172
- backgroundGradient: z67.boolean().optional(),
82173
- spacing: z67.union([z67.array(z67.enum(["compact", "default", "spacious"])), z67.boolean()]).optional(),
82174
- textColor: z67.boolean().optional()
82432
+ var sdkSectionOptionsConfigSchema = z68.object({
82433
+ backgroundColor: z68.boolean().optional(),
82434
+ backgroundImage: z68.boolean().optional(),
82435
+ backgroundGradient: z68.boolean().optional(),
82436
+ spacing: z68.union([z68.array(z68.enum(["compact", "default", "spacious"])), z68.boolean()]).optional(),
82437
+ textColor: z68.boolean().optional()
82175
82438
  });
82176
- var sdkContainerOptionsConfigSchema = z67.object({
82177
- maxWidth: z67.union([z67.array(z67.enum(["narrow", "default", "wide", "full"])), z67.boolean()]).optional(),
82178
- alignment: z67.union([z67.array(z67.enum(["left", "center", "right"])), z67.boolean()]).optional()
82439
+ var sdkContainerOptionsConfigSchema = z68.object({
82440
+ maxWidth: z68.union([z68.array(z68.enum(["narrow", "default", "wide", "full"])), z68.boolean()]).optional(),
82441
+ alignment: z68.union([z68.array(z68.enum(["left", "center", "right"])), z68.boolean()]).optional()
82179
82442
  });
82180
- var sdkSiteStyleConfigSchema = z67.object({
82181
- sectionBackgrounds: z67.array(sdkSectionBackgroundSchema).optional(),
82443
+ var sdkSiteStyleConfigSchema = z68.object({
82444
+ sectionBackgrounds: z68.array(sdkSectionBackgroundSchema).optional(),
82182
82445
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
82183
82446
  containerOptions: sdkContainerOptionsConfigSchema.optional()
82184
82447
  });
82185
- var sdkSiteLayoutConfigSchema = z67.object({
82186
- footerBlocks: z67.array(
82187
- z67.object({
82188
- id: z67.string().min(1).optional(),
82189
- kind: z67.string().min(1),
82190
- content: z67.record(z67.string(), z67.unknown()).optional()
82448
+ var sdkSiteLayoutConfigSchema = z68.object({
82449
+ footerBlocks: z68.array(
82450
+ z68.object({
82451
+ id: z68.string().min(1).optional(),
82452
+ kind: z68.string().min(1),
82453
+ content: z68.record(z68.string(), z68.unknown()).optional()
82191
82454
  })
82192
82455
  ).optional()
82193
82456
  });
82194
- var sdkFieldSelectOptionSchema = z67.object({
82195
- value: z67.string(),
82196
- label: z67.string()
82457
+ var sdkFieldSelectOptionSchema = z68.object({
82458
+ value: z68.string(),
82459
+ label: z68.string()
82197
82460
  });
82198
- var sdkBlockFieldConfigSchema = z67.object({
82199
- options: z67.array(sdkFieldSelectOptionSchema).optional()
82461
+ var sdkBlockFieldConfigSchema = z68.object({
82462
+ options: z68.array(sdkFieldSelectOptionSchema).optional()
82200
82463
  });
82201
- var sdkBlockFieldOptionsMapSchema = z67.record(
82202
- z67.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
82464
+ var sdkBlockFieldOptionsMapSchema = z68.record(
82465
+ z68.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
82203
82466
  message: "Block ID must be 'block.*' or 'custom.*' format"
82204
82467
  }),
82205
- z67.record(z67.string().min(1), sdkBlockFieldConfigSchema)
82468
+ z68.record(z68.string().min(1), sdkBlockFieldConfigSchema)
82206
82469
  ).optional();
82207
- var sdkContentTypeTemplateConfigSchema = z67.object({
82208
- blocks: z67.array(z67.unknown())
82470
+ var sdkContentTypeTemplateConfigSchema = z68.object({
82471
+ blocks: z68.array(z68.unknown())
82209
82472
  }).passthrough();
82210
- var sdkContentTypeConfigSchema = z67.object({
82211
- key: z67.string().min(1),
82212
- fields: z67.array(z67.unknown()),
82473
+ var sdkContentTypeConfigSchema = z68.object({
82474
+ key: z68.string().min(1),
82475
+ fields: z68.array(z68.unknown()),
82213
82476
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
82214
82477
  }).passthrough();
82215
- var sdkContentConfigSchema = z67.object({
82216
- contentTypes: z67.array(sdkContentTypeConfigSchema).optional(),
82217
- pages: z67.array(z67.unknown()).optional(),
82218
- entries: z67.array(z67.unknown()).optional(),
82219
- navigationMenus: z67.array(z67.unknown()).optional(),
82220
- settings: z67.unknown().optional()
82478
+ var sdkContentConfigSchema = z68.object({
82479
+ contentTypes: z68.array(sdkContentTypeConfigSchema).optional(),
82480
+ pages: z68.array(z68.unknown()).optional(),
82481
+ entries: z68.array(z68.unknown()).optional(),
82482
+ navigationMenus: z68.array(z68.unknown()).optional(),
82483
+ settings: z68.unknown().optional()
82221
82484
  }).passthrough();
82222
82485
  var SDK_WORKFLOW_ID_MAX_LENGTH = 120;
82223
82486
  var SDK_WORKFLOW_TITLE_MAX_LENGTH = 120;
@@ -82225,46 +82488,69 @@ var SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH = 500;
82225
82488
  var SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH = 120;
82226
82489
  var SDK_WORKFLOW_ENDPOINT_MAX_LENGTH = 500;
82227
82490
  var SDK_WORKFLOW_TRIGGER_MAX_COUNT = 5;
82491
+ var SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH = 120;
82492
+ var SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT = 10;
82228
82493
  var SDK_WORKFLOW_MAX_COUNT = 50;
82229
82494
  var SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH = 120;
82230
82495
  var SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH = 500;
82231
82496
  var SDK_WORKFLOW_ID_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
82232
82497
  var SDK_WORKFLOW_ENDPOINT_PATTERN = /^\//;
82233
- var sdkWorkflowIdSchema = z67.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
82498
+ var sdkWorkflowIdSchema = z68.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
82234
82499
  message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
82235
82500
  });
82236
- var sdkWorkflowEndpointSchema = z67.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
82237
- var sdkWorkflowManualTriggerSchema = z67.object({
82238
- type: z67.literal("manual")
82501
+ var sdkWorkflowEndpointSchema = z68.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
82502
+ var sdkWorkflowManualTriggerSchema = z68.object({
82503
+ type: z68.literal("manual")
82504
+ }).strict();
82505
+ var sdkWorkflowTriggerFieldSchema = z68.string().trim().min(1).max(SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH).refine((field) => !field.includes("."), {
82506
+ message: "Workflow trigger fields must be top-level content field IDs, not paths"
82507
+ });
82508
+ var sdkWorkflowFieldChangedConditionSchema = z68.object({
82509
+ field: sdkWorkflowTriggerFieldSchema,
82510
+ changed: z68.literal(true)
82511
+ }).strict();
82512
+ var sdkWorkflowFieldEmptyConditionSchema = z68.object({
82513
+ field: sdkWorkflowTriggerFieldSchema,
82514
+ isEmpty: z68.boolean()
82515
+ }).strict();
82516
+ var sdkWorkflowEntryDraftUpdatedTriggerSchema = z68.object({
82517
+ type: z68.literal("entry.draft.updated"),
82518
+ when: z68.array(
82519
+ z68.union([
82520
+ sdkWorkflowFieldChangedConditionSchema,
82521
+ sdkWorkflowFieldEmptyConditionSchema
82522
+ ])
82523
+ ).min(1).max(SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT)
82239
82524
  }).strict();
82240
- var sdkWorkflowTriggerSchema = z67.discriminatedUnion("type", [
82241
- sdkWorkflowManualTriggerSchema
82525
+ var sdkWorkflowTriggerSchema = z68.discriminatedUnion("type", [
82526
+ sdkWorkflowManualTriggerSchema,
82527
+ sdkWorkflowEntryDraftUpdatedTriggerSchema
82242
82528
  ]);
82243
- var sdkWorkflowConfirmationSchema = z67.object({
82244
- title: z67.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
82245
- body: z67.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
82529
+ var sdkWorkflowConfirmationSchema = z68.object({
82530
+ title: z68.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
82531
+ body: z68.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
82246
82532
  }).strict();
82247
- var sdkWorkflowConfigSchema = z67.object({
82533
+ var sdkWorkflowConfigSchema = z68.object({
82248
82534
  id: sdkWorkflowIdSchema,
82249
- title: z67.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
82250
- description: z67.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
82251
- contentType: z67.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
82535
+ title: z68.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
82536
+ description: z68.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
82537
+ contentType: z68.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
82252
82538
  endpoint: sdkWorkflowEndpointSchema,
82253
- triggers: z67.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
82539
+ triggers: z68.array(sdkWorkflowTriggerSchema).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
82254
82540
  confirmation: sdkWorkflowConfirmationSchema.optional()
82255
82541
  }).strict();
82256
- var sdkWorkflowsSchema = z67.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
82542
+ var sdkWorkflowsSchema = z68.array(sdkWorkflowConfigSchema).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
82257
82543
  const ids = workflows.map((workflow) => workflow.id);
82258
82544
  return ids.length === new Set(ids).size;
82259
82545
  }, { message: "Workflow IDs must be unique" }).optional();
82260
- var riverbankSiteConfigInputSchema = z67.object({
82261
- siteId: z67.string().uuid(),
82262
- previewUrl: z67.string().url().optional(),
82263
- liveUrl: z67.string().url().optional(),
82546
+ var riverbankSiteConfigInputSchema = z68.object({
82547
+ siteId: z68.string().uuid(),
82548
+ previewUrl: z68.string().url().optional(),
82549
+ liveUrl: z68.string().url().optional(),
82264
82550
  theme: sdkThemeConfigSchema.optional(),
82265
82551
  styles: sdkSiteStyleConfigSchema.optional(),
82266
82552
  layout: sdkSiteLayoutConfigSchema.optional(),
82267
- customBlocks: z67.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
82553
+ customBlocks: z68.array(sdkCustomBlockInputSchema).max(100, "Maximum 100 custom blocks per site").refine((blocks) => {
82268
82554
  const ids = blocks.map((b2) => b2.id);
82269
82555
  return ids.length === new Set(ids).size;
82270
82556
  }, { message: "Block IDs must be unique" }).optional(),
@@ -82272,48 +82558,51 @@ var riverbankSiteConfigInputSchema = z67.object({
82272
82558
  blockFieldExtensions: sdkBlockFieldExtensionsInputSchema.optional(),
82273
82559
  workflows: sdkWorkflowsSchema,
82274
82560
  content: sdkContentConfigSchema.optional(),
82275
- contentDir: z67.string().optional(),
82276
- sync: z67.object({
82277
- existingEntries: z67.enum(["skip", "update"]).optional()
82561
+ contentDir: z68.string().optional(),
82562
+ sync: z68.object({
82563
+ existingEntries: z68.enum(["skip", "update"]).optional()
82278
82564
  }).optional(),
82279
- deploy: z67.object({
82280
- verifyCommand: z67.string().optional(),
82281
- prebuildOutput: z67.string().optional()
82565
+ deploy: z68.object({
82566
+ verifyCommand: z68.string().optional(),
82567
+ prebuildOutput: z68.string().optional()
82282
82568
  }).optional(),
82283
- themeSource: z67.enum(["local", "cms"]).optional(),
82284
- activeTheme: z67.string().optional(),
82285
- enablePortal: z67.boolean().optional(),
82569
+ themeSource: z68.enum(["local", "cms"]).optional(),
82570
+ activeTheme: z68.string().optional(),
82571
+ enablePortal: z68.boolean().optional(),
82286
82572
  dashboard: dashboardConfigSchema.optional()
82287
82573
  }).strict();
82288
- var pushSdkConfigBodySchema = z67.object({
82574
+ var pushSdkConfigBodySchema = z68.object({
82289
82575
  config: riverbankSiteConfigInputSchema,
82290
- forceContentTypes: z67.boolean().optional()
82576
+ forceContentTypes: z68.boolean().optional()
82291
82577
  }).strict();
82292
82578
 
82293
82579
  // ../api/src/siteOnboarding.ts
82294
- import { z as z68 } from "zod";
82580
+ import { z as z69 } from "zod";
82295
82581
  var LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS = {
82296
82582
  configure_appointments: {
82297
82583
  requirementId: "configure_appointments",
82298
82584
  reason: "launch_anyway"
82299
82585
  }
82300
82586
  };
82301
- var acknowledgeLaunchRequirementRequestSchema = z68.discriminatedUnion(
82587
+ var acknowledgeLaunchRequirementRequestSchema = z69.discriminatedUnion(
82302
82588
  "requirementId",
82303
82589
  [
82304
- z68.object({
82305
- requirementId: z68.literal("review_generated_site")
82590
+ z69.object({
82591
+ requirementId: z69.literal("review_generated_site")
82306
82592
  }),
82307
- z68.object({
82308
- requirementId: z68.literal(
82593
+ z69.object({
82594
+ requirementId: z69.literal(
82309
82595
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.requirementId
82310
82596
  ),
82311
- overrideReason: z68.literal(
82597
+ overrideReason: z69.literal(
82312
82598
  LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS.configure_appointments.reason
82313
82599
  )
82314
82600
  })
82315
82601
  ]
82316
82602
  );
82603
+ var goLiveSiteRequestSchema = z69.object({
82604
+ acceptExtraSiteCharge: z69.boolean().optional()
82605
+ });
82317
82606
 
82318
82607
  // ../surfaces/src/index.ts
82319
82608
  var SURFACE_IDS = ["core", "macadamia"];
@@ -82493,79 +82782,94 @@ function isRecord6(value) {
82493
82782
  }
82494
82783
 
82495
82784
  // ../api/src/appointmentSetup.ts
82496
- import { z as z69 } from "zod";
82497
- var appointmentSetupRefSchema = z69.discriminatedUnion("kind", [
82498
- z69.object({ kind: z69.literal("existing"), id: z69.string().min(1) }),
82499
- z69.object({ kind: z69.literal("new"), draftId: z69.string().min(1) })
82785
+ import { z as z70 } from "zod";
82786
+ var appointmentSetupRefSchema = z70.discriminatedUnion("kind", [
82787
+ z70.object({ kind: z70.literal("existing"), id: z70.string().min(1) }),
82788
+ z70.object({ kind: z70.literal("new"), draftId: z70.string().min(1) })
82500
82789
  ]);
82501
- var appointmentSetupVenueChoiceSchema = z69.discriminatedUnion("kind", [
82502
- z69.object({ kind: z69.literal("none") }),
82503
- z69.object({ kind: z69.literal("existing"), venueId: z69.string().min(1) }),
82504
- z69.object({
82505
- kind: z69.literal("create"),
82506
- draftId: z69.string().min(1),
82507
- title: z69.string().trim().min(1),
82508
- description: z69.string().nullable(),
82509
- timezone: z69.string().trim().min(1).nullable(),
82510
- addressJson: z69.record(z69.string(), z69.unknown()),
82511
- locationJson: z69.object({ lat: z69.number(), lng: z69.number() }).nullable()
82790
+ var appointmentSetupVenueChoiceSchema = z70.discriminatedUnion("kind", [
82791
+ z70.object({ kind: z70.literal("none") }),
82792
+ z70.object({ kind: z70.literal("existing"), venueId: z70.string().min(1) }),
82793
+ z70.object({
82794
+ kind: z70.literal("create"),
82795
+ draftId: z70.string().min(1),
82796
+ title: z70.string().trim().min(1),
82797
+ description: z70.string().nullable(),
82798
+ timezone: z70.string().trim().min(1).nullable(),
82799
+ addressJson: z70.record(z70.string(), z70.unknown()),
82800
+ locationJson: z70.object({ lat: z70.number(), lng: z70.number() }).nullable()
82512
82801
  })
82513
82802
  ]);
82514
- var appointmentSetupPaymentDraftSchema = z69.object({
82515
- priceType: z69.union([z69.literal("free"), z69.literal("paid")])
82516
- });
82517
- var appointmentSetupServiceAssignmentDraftSchema = z69.discriminatedUnion("kind", [
82518
- z69.object({ kind: z69.literal("all_practitioners") }),
82519
- z69.object({
82520
- kind: z69.literal("selected_practitioners"),
82521
- resourceRefs: z69.array(appointmentSetupRefSchema)
82803
+ var appointmentSetupPaymentDraftSchema = z70.object({
82804
+ priceType: z70.union([z70.literal("free"), z70.literal("paid")])
82805
+ });
82806
+ var appointmentSetupServiceAssignmentDraftSchema = z70.discriminatedUnion("kind", [
82807
+ z70.object({ kind: z70.literal("all_practitioners") }),
82808
+ z70.object({
82809
+ kind: z70.literal("selected_practitioners"),
82810
+ resourceRefs: z70.array(appointmentSetupRefSchema)
82522
82811
  })
82523
82812
  ]);
82524
- var appointmentSetupServiceDraftSchema = z69.object({
82813
+ var appointmentSetupServiceDraftSchema = z70.object({
82525
82814
  ref: appointmentSetupRefSchema,
82526
- title: z69.string().trim().min(1),
82527
- description: z69.string().nullable(),
82528
- durationMinutes: z69.number().int().positive(),
82529
- priceAmount: z69.number().int().nonnegative().nullable(),
82530
- isActive: z69.boolean(),
82531
- locationType: z69.union([
82532
- z69.literal("virtual"),
82533
- z69.literal("in_person"),
82534
- z69.literal("hybrid")
82815
+ title: z70.string().trim().min(1),
82816
+ description: z70.string().nullable(),
82817
+ durationMinutes: z70.number().int().positive(),
82818
+ priceAmount: z70.number().int().nonnegative().nullable(),
82819
+ isActive: z70.boolean(),
82820
+ locationType: z70.union([
82821
+ z70.literal("virtual"),
82822
+ z70.literal("in_person"),
82823
+ z70.literal("hybrid")
82535
82824
  ]),
82536
82825
  venue: appointmentSetupVenueChoiceSchema,
82537
- timezone: z69.string().trim().min(1).nullable(),
82826
+ timezone: z70.string().trim().min(1).nullable(),
82538
82827
  payment: appointmentSetupPaymentDraftSchema,
82539
82828
  assignment: appointmentSetupServiceAssignmentDraftSchema
82829
+ }).superRefine((service, ctx) => {
82830
+ if (service.payment.priceType === "paid" && (service.priceAmount === null || service.priceAmount <= 0)) {
82831
+ ctx.addIssue({
82832
+ code: "custom",
82833
+ path: ["priceAmount"],
82834
+ message: "Paid appointment services need a positive price."
82835
+ });
82836
+ }
82837
+ if (service.payment.priceType === "free" && service.priceAmount !== null && service.priceAmount > 0) {
82838
+ ctx.addIssue({
82839
+ code: "custom",
82840
+ path: ["priceAmount"],
82841
+ message: "Free appointment services cannot carry a positive price."
82842
+ });
82843
+ }
82540
82844
  });
82541
- var appointmentSetupPractitionerDraftSchema = z69.object({
82845
+ var appointmentSetupPractitionerDraftSchema = z70.object({
82542
82846
  ref: appointmentSetupRefSchema,
82543
- displayName: z69.string().trim().min(1),
82544
- bio: z69.string().nullable(),
82545
- timezone: z69.string().trim().min(1),
82546
- colorHex: z69.string().nullable()
82547
- });
82548
- var appointmentSetupWeeklyWindowDraftSchema = z69.object({
82549
- weekday: z69.number().int().min(0).max(6),
82550
- startTime: z69.string(),
82551
- endTime: z69.string()
82552
- });
82553
- var appointmentSetupAvailabilityDraftSchema = z69.object({
82554
- kind: z69.literal("weekly_windows"),
82847
+ displayName: z70.string().trim().min(1),
82848
+ bio: z70.string().nullable(),
82849
+ timezone: z70.string().trim().min(1),
82850
+ colorHex: z70.string().nullable()
82851
+ });
82852
+ var appointmentSetupWeeklyWindowDraftSchema = z70.object({
82853
+ weekday: z70.number().int().min(0).max(6),
82854
+ startTime: z70.string(),
82855
+ endTime: z70.string()
82856
+ });
82857
+ var appointmentSetupAvailabilityDraftSchema = z70.object({
82858
+ kind: z70.literal("weekly_windows"),
82555
82859
  resourceRef: appointmentSetupRefSchema,
82556
82860
  serviceRef: appointmentSetupRefSchema.nullable(),
82557
- windows: z69.array(appointmentSetupWeeklyWindowDraftSchema)
82861
+ windows: z70.array(appointmentSetupWeeklyWindowDraftSchema)
82558
82862
  });
82559
82863
  var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
82560
82864
  var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
82561
- var appointmentSetupBookingNoticeSchema = z69.object({
82562
- minLeadMinutes: z69.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
82563
- maxBookingNoticeMinutes: z69.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
82564
- });
82565
- var applyAppointmentSetupRequestSchema = z69.object({
82566
- services: z69.array(appointmentSetupServiceDraftSchema),
82567
- practitioners: z69.array(appointmentSetupPractitionerDraftSchema),
82568
- availability: z69.array(appointmentSetupAvailabilityDraftSchema),
82865
+ var appointmentSetupBookingNoticeSchema = z70.object({
82866
+ minLeadMinutes: z70.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
82867
+ maxBookingNoticeMinutes: z70.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
82868
+ });
82869
+ var applyAppointmentSetupRequestSchema = z70.object({
82870
+ services: z70.array(appointmentSetupServiceDraftSchema),
82871
+ practitioners: z70.array(appointmentSetupPractitionerDraftSchema),
82872
+ availability: z70.array(appointmentSetupAvailabilityDraftSchema),
82569
82873
  bookingNotice: appointmentSetupBookingNoticeSchema
82570
82874
  });
82571
82875
 
@@ -82598,24 +82902,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
82598
82902
  ];
82599
82903
 
82600
82904
  // ../api/src/siteBanner.ts
82601
- import { z as z70 } from "zod";
82905
+ import { z as z71 } from "zod";
82602
82906
  var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
82603
82907
  var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
82604
82908
  var SITE_BANNER_MAX_TEXT_LENGTH = 320;
82605
82909
  var SITE_BANNER_MAX_PARAGRAPHS = 2;
82606
- var siteBannerScopeSchema = z70.enum(SITE_BANNER_SCOPE_VALUES);
82607
- var siteBannerToneSchema = z70.enum(SITE_BANNER_TONE_VALUES);
82608
- var siteBannerBodySchema = z70.unknown().transform(unwrapRichTextValue);
82609
- var siteBannerCtaSchema = z70.object({
82610
- label: z70.string().trim().min(1),
82910
+ var siteBannerScopeSchema = z71.enum(SITE_BANNER_SCOPE_VALUES);
82911
+ var siteBannerToneSchema = z71.enum(SITE_BANNER_TONE_VALUES);
82912
+ var siteBannerBodySchema = z71.unknown().transform(unwrapRichTextValue);
82913
+ var siteBannerCtaSchema = z71.object({
82914
+ label: z71.string().trim().min(1),
82611
82915
  link: linkPayloadSchema
82612
82916
  });
82613
- var siteBannerSettingsSchema = z70.discriminatedUnion("enabled", [
82614
- z70.object({
82615
- enabled: z70.literal(false)
82917
+ var siteBannerSettingsSchema = z71.discriminatedUnion("enabled", [
82918
+ z71.object({
82919
+ enabled: z71.literal(false)
82616
82920
  }),
82617
- z70.object({
82618
- enabled: z70.literal(true),
82921
+ z71.object({
82922
+ enabled: z71.literal(true),
82619
82923
  scope: siteBannerScopeSchema,
82620
82924
  tone: siteBannerToneSchema,
82621
82925
  body: siteBannerBodySchema,
@@ -82629,7 +82933,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
82629
82933
  const analysis = analyzeSiteBannerBody(value.body);
82630
82934
  for (const issue2 of analysis.issues) {
82631
82935
  ctx.addIssue({
82632
- code: z70.ZodIssueCode.custom,
82936
+ code: z71.ZodIssueCode.custom,
82633
82937
  path: ["body"],
82634
82938
  message: siteBannerBodyIssueMessage(issue2)
82635
82939
  });
@@ -82852,75 +83156,72 @@ function parsePublicProductCategorySelector(value) {
82852
83156
  return void 0;
82853
83157
  }
82854
83158
 
82855
- // ../api/src/navigation/linkValue.ts
82856
- init_src();
82857
-
82858
83159
  // ../api/src/aiPlayground.ts
82859
- import { z as z71 } from "zod";
82860
- var Rfc6902PatchOp = z71.discriminatedUnion("op", [
83160
+ import { z as z72 } from "zod";
83161
+ var Rfc6902PatchOp = z72.discriminatedUnion("op", [
82861
83162
  // Standard RFC-6902 operations
82862
- z71.object({
82863
- op: z71.literal("add"),
82864
- path: z71.string(),
82865
- value: z71.unknown()
83163
+ z72.object({
83164
+ op: z72.literal("add"),
83165
+ path: z72.string(),
83166
+ value: z72.unknown()
82866
83167
  }),
82867
- z71.object({
82868
- op: z71.literal("remove"),
82869
- path: z71.string()
83168
+ z72.object({
83169
+ op: z72.literal("remove"),
83170
+ path: z72.string()
82870
83171
  }),
82871
- z71.object({
82872
- op: z71.literal("replace"),
82873
- path: z71.string(),
82874
- value: z71.unknown()
83172
+ z72.object({
83173
+ op: z72.literal("replace"),
83174
+ path: z72.string(),
83175
+ value: z72.unknown()
82875
83176
  }),
82876
- z71.object({
82877
- op: z71.literal("move"),
82878
- from: z71.string(),
82879
- path: z71.string()
83177
+ z72.object({
83178
+ op: z72.literal("move"),
83179
+ from: z72.string(),
83180
+ path: z72.string()
82880
83181
  }),
82881
- z71.object({
82882
- op: z71.literal("copy"),
82883
- from: z71.string(),
82884
- path: z71.string()
83182
+ z72.object({
83183
+ op: z72.literal("copy"),
83184
+ from: z72.string(),
83185
+ path: z72.string()
82885
83186
  }),
82886
83187
  // Block-level operations (Phase 2)
82887
- z71.object({
82888
- op: z71.literal("add_block"),
82889
- blockKind: z71.string(),
82890
- afterBlockId: z71.string().nullable(),
82891
- content: z71.record(z71.string(), z71.unknown()),
82892
- rationale: z71.string()
83188
+ z72.object({
83189
+ op: z72.literal("add_block"),
83190
+ blockKind: z72.string(),
83191
+ afterBlockId: z72.string().nullable(),
83192
+ content: z72.record(z72.string(), z72.unknown()),
83193
+ rationale: z72.string()
82893
83194
  }),
82894
- z71.object({
82895
- op: z71.literal("delete_block"),
82896
- blockId: z71.string(),
82897
- rationale: z71.string()
83195
+ z72.object({
83196
+ op: z72.literal("delete_block"),
83197
+ blockId: z72.string(),
83198
+ rationale: z72.string()
82898
83199
  }),
82899
- z71.object({
82900
- op: z71.literal("reorder_block"),
82901
- blockId: z71.string(),
82902
- afterBlockId: z71.string().nullable(),
82903
- rationale: z71.string()
83200
+ z72.object({
83201
+ op: z72.literal("reorder_block"),
83202
+ blockId: z72.string(),
83203
+ afterBlockId: z72.string().nullable(),
83204
+ rationale: z72.string()
82904
83205
  })
82905
83206
  ]);
82906
- var PlaygroundProposeRequest = z71.object({
82907
- request: z71.string().min(1).max(2e3)
83207
+ var PlaygroundProposeRequest = z72.object({
83208
+ request: z72.string().min(1).max(2e3)
82908
83209
  });
82909
- var MultiPagePatchEnvelope = z71.object({
82910
- pageId: z71.string(),
82911
- blockId: z71.string().optional(),
83210
+ var MultiPagePatchEnvelope = z72.object({
83211
+ pageId: z72.string(),
83212
+ blockId: z72.string().optional(),
82912
83213
  // Not present for page-level ops
82913
- blockKind: z71.string().optional(),
82914
- blockPurpose: z71.string().optional().nullable(),
82915
- ops: z71.array(Rfc6902PatchOp),
82916
- rationale: z71.string(),
82917
- currentContent: z71.record(z71.string(), z71.unknown()).optional()
82918
- });
82919
- var MultiPageUpdateResponse = z71.object({
82920
- patches: z71.array(MultiPagePatchEnvelope),
82921
- assistantMessage: z71.string(),
82922
- pagesModified: z71.number(),
82923
- toolCallsUsed: z71.number()
83214
+ blockKind: z72.string().optional(),
83215
+ blockPurpose: z72.string().optional().nullable(),
83216
+ ops: z72.array(Rfc6902PatchOp),
83217
+ rationale: z72.string(),
83218
+ currentContent: z72.record(z72.string(), z72.unknown()).optional()
83219
+ });
83220
+ var MultiPageUpdateResponse = z72.object({
83221
+ patches: z72.array(MultiPagePatchEnvelope),
83222
+ assistantMessage: z72.string(),
83223
+ pagesModified: z72.number(),
83224
+ toolCallsUsed: z72.number()
82924
83225
  });
82925
83226
 
82926
83227
  // src/data/prefetchBlockData.ts