@riverbankcms/sdk 0.144.0 → 0.146.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 (228) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{PreviewEditorSidebar-CQZNnFiM.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DCNxnmI0.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-BJolUbr1.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +688 -519
  6. package/dist/{SiteChromeCustomizeContext-CKgEpoxi.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +3381 -2017
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +5643 -66
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +513 -6
  9. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
  10. package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
  11. package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
  12. package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
  13. package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
  14. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +10 -26
  15. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  16. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  17. package/dist/_dts/api/src/communications.d.ts +32 -24
  18. package/dist/_dts/api/src/contentRuntime.d.ts +3 -5
  19. package/dist/_dts/api/src/endpoints.d.ts +316 -134
  20. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  21. package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
  22. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  23. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  24. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  25. package/dist/_dts/api/src/index.d.ts +7 -1
  26. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  27. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  28. package/dist/_dts/api/src/launchReadiness.d.ts +22 -2
  29. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  30. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  31. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +30 -11
  32. package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -0
  34. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  35. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  36. package/dist/_dts/api/src/publicBookingService.d.ts +35 -1
  37. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
  38. package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
  39. package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
  40. package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -1
  41. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  42. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  43. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  44. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  45. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  46. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  47. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  48. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  49. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  50. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  51. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +4 -38
  52. package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
  53. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  54. package/dist/_dts/api/src/types.d.ts +8 -1
  55. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  56. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
  57. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  58. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -0
  59. package/dist/_dts/blocks/src/index.d.ts +3 -1
  60. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
  61. package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
  62. package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
  63. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
  64. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
  65. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
  66. package/dist/_dts/blocks/src/server.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
  68. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
  69. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  71. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  72. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  73. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  74. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
  76. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
  78. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +22 -2
  79. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +2 -1
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +23 -7
  87. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +36 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  91. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +20 -1
  93. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  94. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -1
  95. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  96. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  97. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  98. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  99. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  100. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -3
  101. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  102. package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
  103. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  104. package/dist/_dts/core/src/editor-state.d.ts +2 -1
  105. package/dist/_dts/core/src/index.d.ts +2 -0
  106. package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
  107. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  108. package/dist/_dts/core/src/public-profile.d.ts +12 -1
  109. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +711 -242
  110. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  111. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  112. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -2
  113. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  114. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
  115. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
  116. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
  117. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
  118. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  119. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -3
  120. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
  121. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  122. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
  123. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -1
  124. package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
  125. package/dist/_dts/sdk/src/client/types.d.ts +1 -1
  126. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  127. package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
  128. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
  129. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
  130. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  131. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -8
  132. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +4 -4
  133. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  134. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -2
  135. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  136. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  137. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  138. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +6 -2
  139. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  140. package/dist/_dts/sdk/src/version.d.ts +1 -1
  141. package/dist/_dts/surfaces/src/index.d.ts +10 -0
  142. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  143. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  144. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  145. package/dist/_dts/theme-core/src/layout/boundaryCss.d.ts +3 -0
  146. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
  147. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
  148. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
  149. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
  150. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  151. package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
  152. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
  153. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
  154. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  155. package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
  156. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
  157. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
  158. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
  159. package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
  160. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
  161. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
  162. package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
  164. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  165. package/dist/client/{BookingConsentAgreement-DoAILrkN.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
  166. package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
  167. package/dist/client/{DiscountCodeDisclosure-X528hUTf.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
  168. package/dist/client/{EventCombined.client-DSBVwq5m.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
  169. package/dist/client/{EventListing.client-DmFAX7Vb.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
  170. package/dist/client/{LeafletStaticMap-BAqXdfhq.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
  171. package/dist/client/{ThemedButton-BwNFVwi4.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
  172. package/dist/client/{accordion-DRhMdkbd.mjs → accordion-BEQNSptH.mjs} +1 -1
  173. package/dist/client/{bookingForm-iJ_nCsNF.mjs → bookingForm-AMr-s5vw.mjs} +168 -95
  174. package/dist/client/bookings.mjs +239 -110
  175. package/dist/client/{carousel-D8zuffZr.mjs → carousel-Bbt_QgJy.mjs} +1 -1
  176. package/dist/client/{cart-DeMGJViN.mjs → cart-CnWi30zJ.mjs} +3 -3
  177. package/dist/client/{checkout-DXc06Km2.mjs → checkout-f3nkWgd4.mjs} +3 -3
  178. package/dist/client/client.mjs +3222 -1612
  179. package/dist/client/{context-CDLCfDep.mjs → context-Bc8T6pCe.mjs} +1 -1
  180. package/dist/client/{dates-ClFx7Epy.mjs → dates-DUsCEzLb.mjs} +2 -3
  181. package/dist/client/{eventCalendar-BaGpnOGN.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
  182. package/dist/client/{eventCombined-ywONOx2m.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
  183. package/dist/client/{eventDetails-B2LlOTYY.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
  184. package/dist/client/{eventListing-CMgxWpqP.mjs → eventListing-CA3frIH5.mjs} +4 -4
  185. package/dist/client/{eventRegistration-BarLDNHR.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
  186. package/dist/client/{form-BjqKaBJ7.mjs → form-C2h3YAcg.mjs} +135 -104
  187. package/dist/client/{headerSection-CP4XDwz1.mjs → headerSection-lwMuMTH9.mjs} +3 -3
  188. package/dist/client/hooks.mjs +1023 -148
  189. package/dist/client/{locationMap-C5gW-d-w.mjs → locationMap-DJ2bLODV.mjs} +3 -3
  190. package/dist/client/{newsletterForm-afXlVSA0.mjs → newsletterForm-8Pu5K32g.mjs} +225 -102
  191. package/dist/client/{pricing-Bl1CAl28.mjs → pricing-HHx3IgBz.mjs} +1 -1
  192. package/dist/client/{productDetail-CvQ3jWQe.mjs → productDetail-C_1odnAf.mjs} +3 -3
  193. package/dist/client/{productList-U874PGO7.mjs → productList-CtCv-Nmx.mjs} +3 -3
  194. package/dist/client/{propsDecoder-DPXtCZWP.mjs → propsDecoder-Dcgsncxb.mjs} +111 -55
  195. package/dist/client/rendering/client.mjs +1389 -722
  196. package/dist/client/rendering/islands.mjs +17 -17
  197. package/dist/client/rendering.mjs +3136 -1400
  198. package/dist/client/{routeIslandApiConfig-NGYiUWXu.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
  199. package/dist/client/{scrollToBlock-0-C3DVhK.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
  200. package/dist/client/{shop-BXjXhM9P.mjs → shop-DQXrQ8kJ.mjs} +7 -7
  201. package/dist/client/{shop-commerce-BZ6UlWJ7.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
  202. package/dist/client/{shop-commerce-store-DlSBXb3D.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
  203. package/dist/client/{shopShared-kkEOiLPA.mjs → shopShared-cuaONpkJ.mjs} +4 -4
  204. package/dist/client/{useEventFilters-zvnnE1ro.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
  205. package/dist/preview-next/before-render.mjs +500 -165
  206. package/dist/preview-next/client/runtime.mjs +4 -4
  207. package/dist/preview-next/editor-base.css +11 -0
  208. package/dist/preview-next/keepAlive.mjs +460 -165
  209. package/dist/preview-next/middleware.mjs +461 -165
  210. package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-h5IgbSp4.mjs} +485 -165
  211. package/dist/{sdk-runtime-DFJlQt3q.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
  212. package/dist/{separator-o8GHb1xh.mjs → separator-BpHS1KZK.mjs} +1 -1
  213. package/dist/server/components.mjs +3088 -1307
  214. package/dist/server/config-validation.mjs +927 -109
  215. package/dist/server/config.mjs +927 -109
  216. package/dist/server/data.mjs +939 -110
  217. package/dist/server/index.mjs +513 -169
  218. package/dist/server/next.mjs +2874 -1195
  219. package/dist/server/page-converter.mjs +420 -79
  220. package/dist/server/prebuild.mjs +1 -1
  221. package/dist/server/rendering/server.mjs +3071 -1289
  222. package/dist/server/rendering.mjs +3169 -1350
  223. package/dist/server/routing.mjs +1085 -159
  224. package/dist/server/server.mjs +1042 -291
  225. package/dist/server/theme-bridge.mjs +1658 -137
  226. package/dist/server/theme.mjs +6 -4
  227. package/dist/styles/index.css +186 -65
  228. package/package.json +2 -1
@@ -5033,6 +5033,15 @@ function asSiteStyleId(value) {
5033
5033
  function asDesignSystemTemplateId(value) {
5034
5034
  return brandNonEmptyString(value, "DesignSystemTemplateId");
5035
5035
  }
5036
+ function toNonEmptyReadonlyArray(values) {
5037
+ const [first, ...rest] = values;
5038
+ return first === void 0 ? null : [first, ...rest];
5039
+ }
5040
+ function requireNonEmptyReadonlyArray(values, message = "Expected a non-empty array.") {
5041
+ const result = toNonEmptyReadonlyArray(values);
5042
+ if (!result) throw new Error(message);
5043
+ return result;
5044
+ }
5036
5045
  function makeBoundaryId(previousBlockId, nextBlockId) {
5037
5046
  return asDesignBoundaryId(`boundary:${encodeURIComponent(previousBlockId)}:${encodeURIComponent(nextBlockId)}`);
5038
5047
  }
@@ -5232,16 +5241,18 @@ const themeV2RuntimeStyleFieldNames = [
5232
5241
  "_frameStyles",
5233
5242
  "_sectionStyles",
5234
5243
  "_containerStyles",
5235
- "_cardStyles",
5236
- "_transitionStyles",
5237
- "styleGroup"
5244
+ "_cardStyles"
5238
5245
  ];
5239
5246
  const themeV2BlockSpecificRawStyleFieldNames = [
5240
5247
  "_contentCardStyles",
5241
5248
  "_heroLayoutStyles",
5242
5249
  "_textCardStyles"
5243
5250
  ];
5244
- const themeV2NormalEditorRawStyleFieldNames = [...themeV2RuntimeStyleFieldNames, ...themeV2BlockSpecificRawStyleFieldNames];
5251
+ const themeV2NormalEditorRawStyleFieldNames = [
5252
+ ...themeV2RuntimeStyleFieldNames,
5253
+ ...themeV2BlockSpecificRawStyleFieldNames,
5254
+ "styleGroup"
5255
+ ];
5245
5256
  new Set(themeV2NormalEditorRawStyleFieldNames);
5246
5257
  [...themeV2RuntimeStyleFieldNames, ...themeV2BlockSpecificRawStyleFieldNames];
5247
5258
  const pageDesignEditorBackgroundOverrideOwner = "page-design-editor";
@@ -6967,11 +6978,260 @@ function cardRoleFromLegacyVocabulary(value) {
6967
6978
  */
6968
6979
  const cardRoleWithLegacyAliasSchema = z.preprocess((value) => cardRoleFromLegacyVocabulary(value) ?? value, cardRoleSchema);
6969
6980
  //#endregion
6970
- //#region ../theme-core/src/site-styles/compilationPlan.ts
6971
- const defaultHeaderBrandPreferences = {
6972
- brandDisplay: "auto",
6973
- logoSize: "auto"
6974
- };
6981
+ //#region ../theme-core/src/site-styles/transitionCatalogue.ts
6982
+ /**
6983
+ * Family order for pickers. Entries below are listed family by family in this
6984
+ * same order, so the flat option list and the grouped families agree.
6985
+ */
6986
+ const transitionCatalogueFamilies = [
6987
+ {
6988
+ id: "gradient",
6989
+ label: "Gradient"
6990
+ },
6991
+ {
6992
+ id: "wave",
6993
+ label: "Wave"
6994
+ },
6995
+ {
6996
+ id: "angle",
6997
+ label: "Angle"
6998
+ }
6999
+ ];
7000
+ const mediumHeight = "6rem + 2px";
7001
+ const compactHeight = "4.5rem + 2px";
7002
+ const largeHeight = "7rem + 2px";
7003
+ /**
7004
+ * The single source of transition vocabulary. Order is significant: it is the
7005
+ * order of `boundaryOptions` (after `none`) and of each family's variants,
7006
+ * which persisted pins, page-flow presets and the editor picker all rely on.
7007
+ *
7008
+ * Shapes match what `generateLayoutCss` draws today. Structured
7009
+ * amplitude/frequency treatments (issue 826) extend this list later.
7010
+ */
7011
+ const transitionCatalogueEntries = defineExactCatalog()([
7012
+ {
7013
+ intent: "soft-fade-short",
7014
+ optionId: asBoundaryOptionId("break:soft"),
7015
+ family: "gradient",
7016
+ variantId: "soft",
7017
+ label: "Soft",
7018
+ variantLabel: "Soft",
7019
+ treatment: {
7020
+ kind: "soft-fade",
7021
+ height: "medium",
7022
+ curve: "soft"
7023
+ },
7024
+ size: "medium",
7025
+ heightExpression: mediumHeight,
7026
+ shape: { kind: "fade" }
7027
+ },
7028
+ {
7029
+ intent: "soft-fade-long",
7030
+ optionId: asBoundaryOptionId("break:spacious"),
7031
+ family: "gradient",
7032
+ variantId: "spacious",
7033
+ label: "Spacious",
7034
+ variantLabel: "Spacious",
7035
+ treatment: {
7036
+ kind: "soft-fade",
7037
+ height: "large",
7038
+ curve: "spacious"
7039
+ },
7040
+ size: "spacious",
7041
+ heightExpression: "10rem",
7042
+ shape: { kind: "fade" }
7043
+ },
7044
+ {
7045
+ intent: "soft-fade-expansive",
7046
+ optionId: asBoundaryOptionId("break:expansive"),
7047
+ family: "gradient",
7048
+ variantId: "expansive",
7049
+ label: "Expansive",
7050
+ variantLabel: "Expansive",
7051
+ treatment: {
7052
+ kind: "soft-fade",
7053
+ height: "expansive",
7054
+ curve: "expansive"
7055
+ },
7056
+ size: "expansive",
7057
+ heightExpression: "14rem",
7058
+ shape: { kind: "fade" }
7059
+ },
7060
+ {
7061
+ intent: "wave-edge-balanced",
7062
+ optionId: asBoundaryOptionId("break:wave-balanced"),
7063
+ family: "wave",
7064
+ variantId: "balanced",
7065
+ label: "Balanced wave",
7066
+ variantLabel: "Balanced",
7067
+ treatment: {
7068
+ kind: "wave-edge",
7069
+ height: "medium",
7070
+ amplitude: "balanced",
7071
+ rhythm: "double",
7072
+ symmetry: "symmetrical"
7073
+ },
7074
+ size: "medium",
7075
+ heightExpression: mediumHeight,
7076
+ shape: {
7077
+ kind: "wave",
7078
+ mask: "balanced"
7079
+ }
7080
+ },
7081
+ {
7082
+ intent: "wave-edge",
7083
+ optionId: asBoundaryOptionId("break:wave"),
7084
+ family: "wave",
7085
+ variantId: "classic",
7086
+ label: "Classic wave",
7087
+ variantLabel: "Classic",
7088
+ treatment: {
7089
+ kind: "wave-edge",
7090
+ height: "medium",
7091
+ amplitude: "balanced",
7092
+ rhythm: "double",
7093
+ symmetry: "asymmetrical"
7094
+ },
7095
+ size: "medium",
7096
+ heightExpression: mediumHeight,
7097
+ shape: {
7098
+ kind: "wave",
7099
+ mask: "classic"
7100
+ }
7101
+ },
7102
+ {
7103
+ intent: "wave-edge-gentle",
7104
+ optionId: asBoundaryOptionId("break:wave-gentle"),
7105
+ family: "wave",
7106
+ variantId: "gentle",
7107
+ label: "Gentle wave",
7108
+ variantLabel: "Gentle",
7109
+ treatment: {
7110
+ kind: "wave-edge",
7111
+ height: "compact",
7112
+ amplitude: "subtle",
7113
+ rhythm: "single",
7114
+ symmetry: "symmetrical"
7115
+ },
7116
+ size: "compact",
7117
+ heightExpression: compactHeight,
7118
+ shape: {
7119
+ kind: "wave",
7120
+ mask: "gentle"
7121
+ }
7122
+ },
7123
+ {
7124
+ intent: "wave-edge-bold",
7125
+ optionId: asBoundaryOptionId("break:wave-bold"),
7126
+ family: "wave",
7127
+ variantId: "bold",
7128
+ label: "Bold wave",
7129
+ variantLabel: "Bold",
7130
+ treatment: {
7131
+ kind: "wave-edge",
7132
+ height: "large",
7133
+ amplitude: "bold",
7134
+ rhythm: "double",
7135
+ symmetry: "symmetrical"
7136
+ },
7137
+ size: "large",
7138
+ heightExpression: largeHeight,
7139
+ shape: {
7140
+ kind: "wave",
7141
+ mask: "bold"
7142
+ }
7143
+ },
7144
+ {
7145
+ intent: "wave-edge-drift",
7146
+ optionId: asBoundaryOptionId("break:wave-drift"),
7147
+ family: "wave",
7148
+ variantId: "drift",
7149
+ label: "Drift wave",
7150
+ variantLabel: "Drift",
7151
+ treatment: {
7152
+ kind: "wave-edge",
7153
+ height: "medium",
7154
+ amplitude: "balanced",
7155
+ rhythm: "double",
7156
+ symmetry: "drift"
7157
+ },
7158
+ size: "medium",
7159
+ heightExpression: mediumHeight,
7160
+ shape: {
7161
+ kind: "wave",
7162
+ mask: "drift"
7163
+ }
7164
+ },
7165
+ {
7166
+ intent: "angle-edge-subtle",
7167
+ optionId: asBoundaryOptionId("break:angle-subtle"),
7168
+ family: "angle",
7169
+ variantId: "subtle",
7170
+ label: "Subtle angle",
7171
+ variantLabel: "Subtle",
7172
+ treatment: {
7173
+ kind: "angle-edge",
7174
+ height: "compact",
7175
+ slope: "subtle",
7176
+ direction: "forward"
7177
+ },
7178
+ size: "compact",
7179
+ heightExpression: compactHeight,
7180
+ shape: {
7181
+ kind: "angle",
7182
+ polygon: {
7183
+ startTopPercent: 34,
7184
+ endTopPercent: 18
7185
+ }
7186
+ }
7187
+ },
7188
+ {
7189
+ intent: "angle-edge",
7190
+ optionId: asBoundaryOptionId("break:angle-balanced"),
7191
+ family: "angle",
7192
+ variantId: "balanced",
7193
+ label: "Balanced angle",
7194
+ variantLabel: "Balanced",
7195
+ treatment: {
7196
+ kind: "angle-edge",
7197
+ height: "medium",
7198
+ slope: "balanced",
7199
+ direction: "forward"
7200
+ },
7201
+ size: "medium",
7202
+ heightExpression: mediumHeight,
7203
+ shape: {
7204
+ kind: "angle",
7205
+ polygon: {
7206
+ startTopPercent: 42,
7207
+ endTopPercent: 8
7208
+ }
7209
+ }
7210
+ },
7211
+ {
7212
+ intent: "angle-edge-steep",
7213
+ optionId: asBoundaryOptionId("break:angle-steep"),
7214
+ family: "angle",
7215
+ variantId: "steep",
7216
+ label: "Steep angle",
7217
+ variantLabel: "Steep",
7218
+ treatment: {
7219
+ kind: "angle-edge",
7220
+ height: "large",
7221
+ slope: "steep",
7222
+ direction: "forward"
7223
+ },
7224
+ size: "large",
7225
+ heightExpression: largeHeight,
7226
+ shape: {
7227
+ kind: "angle",
7228
+ polygon: {
7229
+ startTopPercent: 54,
7230
+ endTopPercent: 0
7231
+ }
7232
+ }
7233
+ }
7234
+ ]);
6975
7235
  //#endregion
6976
7236
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
6977
7237
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -6982,42 +7242,106 @@ function boundaryRuntimeMetrics(family, size, heightExpression) {
6982
7242
  reserveCss: `calc((${heightExpression}) / 2)`
6983
7243
  };
6984
7244
  }
6985
- boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
7245
+ new Map(transitionCatalogueEntries.map((entry) => [entry.intent, entry]));
7246
+ new Map(transitionCatalogueEntries.map((entry) => [entry.intent, boundaryRuntimeMetrics(entry.family, entry.size, entry.heightExpression)]));
7247
+ /**
7248
+ * The catalogue's compile-time coverage check guarantees an entry per
7249
+ * decorative intent, so a miss here is a broken invariant, not bad input.
7250
+ */
7251
+ function requireCatalogueValue(values, intent) {
7252
+ const value = values.get(intent);
7253
+ if (value === void 0) throw new Error(`Transition catalogue has no entry for ${intent}`);
7254
+ return value;
7255
+ }
6986
7256
  const noneBoundaryOption = {
6987
7257
  id: asBoundaryOptionId("break:none"),
6988
7258
  label: "None",
6989
7259
  transitionAfter: "none",
6990
7260
  treatment: { kind: "none" }
6991
7261
  };
6992
- const softBoundaryOption = {
6993
- id: asBoundaryOptionId("break:soft"),
6994
- label: "Soft",
6995
- transitionAfter: "soft-fade-short",
6996
- treatment: {
6997
- kind: "soft-fade",
6998
- height: "medium",
6999
- curve: "soft"
7000
- }
7262
+ const boundaryOptionByIntent = new Map(transitionCatalogueEntries.map((entry) => [entry.intent, {
7263
+ id: entry.optionId,
7264
+ label: entry.label,
7265
+ transitionAfter: entry.intent,
7266
+ treatment: entry.treatment
7267
+ }]));
7268
+ function boundaryOptionForTransitionIntent(intent) {
7269
+ return requireCatalogueValue(boundaryOptionByIntent, intent);
7270
+ }
7271
+ const softBoundaryOption = boundaryOptionForTransitionIntent("soft-fade-short");
7272
+ const spaciousBoundaryOption = boundaryOptionForTransitionIntent("soft-fade-long");
7273
+ boundaryOptionForTransitionIntent("soft-fade-expansive");
7274
+ boundaryOptionForTransitionIntent("wave-edge");
7275
+ boundaryOptionForTransitionIntent("wave-edge-balanced");
7276
+ boundaryOptionForTransitionIntent("wave-edge-gentle");
7277
+ boundaryOptionForTransitionIntent("wave-edge-bold");
7278
+ boundaryOptionForTransitionIntent("wave-edge-drift");
7279
+ boundaryOptionForTransitionIntent("angle-edge-subtle");
7280
+ boundaryOptionForTransitionIntent("angle-edge");
7281
+ boundaryOptionForTransitionIntent("angle-edge-steep");
7282
+ /**
7283
+ * Must remain non-empty; downstream code indexes `[0]` as the documented default.
7284
+ */
7285
+ const boundaryOptions = [noneBoundaryOption, ...transitionCatalogueEntries.map((entry) => boundaryOptionForTransitionIntent(entry.intent))];
7286
+ const noneTransitionVariant = {
7287
+ familyId: "none",
7288
+ variantId: "none",
7289
+ label: "None",
7290
+ boundaryOption: noneBoundaryOption
7001
7291
  };
7002
- const spaciousBoundaryOption = {
7003
- id: asBoundaryOptionId("break:spacious"),
7004
- label: "Spacious",
7005
- transitionAfter: "soft-fade-long",
7006
- treatment: {
7007
- kind: "soft-fade",
7008
- height: "large",
7009
- curve: "spacious"
7010
- }
7292
+ function transitionVariantForEntry(entry) {
7293
+ return {
7294
+ familyId: entry.family,
7295
+ variantId: entry.variantId,
7296
+ label: entry.variantLabel,
7297
+ boundaryOption: boundaryOptionForTransitionIntent(entry.intent)
7298
+ };
7299
+ }
7300
+ const sectionTransitionFamilies = [{
7301
+ id: "none",
7302
+ label: "None",
7303
+ variants: [noneTransitionVariant]
7304
+ }, ...transitionCatalogueFamilies.map((family) => ({
7305
+ id: family.id,
7306
+ label: family.label,
7307
+ variants: requireNonEmptyReadonlyArray(transitionCatalogueEntries.filter((entry) => entry.family === family.id).map(transitionVariantForEntry), `Transition family ${family.id} has no catalogue entries.`)
7308
+ }))];
7309
+ new Map(boundaryOptions.map((option) => [option.id, option]));
7310
+ new Map(boundaryOptions.map((option) => [stableTreatmentKey(option.treatment), option]));
7311
+ new Map(sectionTransitionFamilies.flatMap((family) => family.variants.map((variant) => [variant.boundaryOption.id, variant])));
7312
+ new Map(sectionTransitionFamilies.map((family) => [family.id, family]));
7313
+ function stableTreatmentKey(treatment) {
7314
+ switch (treatment.kind) {
7315
+ case "none": return "none";
7316
+ case "soft-fade": return `${treatment.kind}:${treatment.height}:${treatment.curve}`;
7317
+ case "wave-edge": return [
7318
+ treatment.kind,
7319
+ treatment.height,
7320
+ treatment.amplitude,
7321
+ treatment.rhythm,
7322
+ treatment.symmetry
7323
+ ].join(":");
7324
+ case "angle-edge": return [
7325
+ treatment.kind,
7326
+ treatment.height,
7327
+ treatment.slope,
7328
+ treatment.direction
7329
+ ].join(":");
7330
+ case "legacy-unsupported": return `${treatment.kind}:${treatment.boundaryOptionId}`;
7331
+ }
7332
+ }
7333
+ requireThemeColorToken$1("background");
7334
+ function requireThemeColorToken$1(value) {
7335
+ const token = parseThemeColorToken(value);
7336
+ if (!token) throw new Error(`Expected a theme color token. Received: ${value}`);
7337
+ return token;
7338
+ }
7339
+ //#endregion
7340
+ //#region ../theme-core/src/site-styles/compilationPlan.ts
7341
+ const defaultHeaderBrandPreferences = {
7342
+ brandDisplay: "auto",
7343
+ logoSize: "auto"
7011
7344
  };
7012
- asBoundaryOptionId("break:expansive");
7013
- asBoundaryOptionId("break:wave");
7014
- asBoundaryOptionId("break:wave-balanced");
7015
- asBoundaryOptionId("break:wave-gentle");
7016
- asBoundaryOptionId("break:wave-bold");
7017
- asBoundaryOptionId("break:wave-drift");
7018
- asBoundaryOptionId("break:angle-subtle");
7019
- asBoundaryOptionId("break:angle-balanced");
7020
- asBoundaryOptionId("break:angle-steep");
7021
7345
  asBoundaryOptionId("break:unknown");
7022
7346
  const pageDesignUserPinnedAppearanceChoiceSchema = z.object({
7023
7347
  kind: z.literal("user-pinned"),
@@ -7144,14 +7468,11 @@ function validateUniquePageDesignPins(intent, ctx) {
7144
7468
  label: "block Look pin"
7145
7469
  });
7146
7470
  addDuplicateStringIssues(ctx, {
7147
- values: intent.boundaryPins.map((pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)),
7471
+ values: intent.boundaryPins.map((pin) => makeBoundaryId(pin.previousBlockId, pin.nextBlockId)),
7148
7472
  path: ["boundaryPins"],
7149
7473
  label: "boundary pin"
7150
7474
  });
7151
7475
  }
7152
- function boundaryKey(previousBlockId, nextBlockId) {
7153
- return makeBoundaryId(previousBlockId, nextBlockId);
7154
- }
7155
7476
  //#endregion
7156
7477
  //#region ../theme-core/src/accordions/siteStyleDefaults.ts
7157
7478
  /**
@@ -8752,6 +9073,13 @@ z.object({
8752
9073
  fields: nonEmptyRuntimeStyleFieldNamesSchema,
8753
9074
  authority: styleAuthoritySchema
8754
9075
  }).strict();
9076
+ asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
9077
+ asPageFlowPresetId("generated-default");
9078
+ asSiteStyleId("site-style:south-west-twerk-school");
9079
+ asAppearancePresetId("hero-brand-scrim-fixed-frame");
9080
+ asLayoutVariantKey("classic");
9081
+ asLayoutVariantKey("micro");
9082
+ asBoundaryOptionId("break:wave");
8755
9083
  //#endregion
8756
9084
  //#region ../theme-core/src/site-styles/runtimeCompiler.ts
8757
9085
  function defineSectionForegroundRuntimeTokens(input) {
@@ -8775,7 +9103,7 @@ function defineComponentRuntimeRules(rules) {
8775
9103
  }
8776
9104
  /**
8777
9105
  * Default design rules translate semantic page-level choices into the current
8778
- * runtime's section background and transition style-group vocabulary.
9106
+ * runtime's section background vocabulary.
8779
9107
  */
8780
9108
  const defaultDesignRuntimeRules = defineDesignRuntimeRules({
8781
9109
  sectionSurfaces: {
@@ -8810,8 +9138,7 @@ const defaultDesignRuntimeRules = defineDesignRuntimeRules({
8810
9138
  color: "surface",
8811
9139
  opacity: .88
8812
9140
  }
8813
- },
8814
- transitionClassName: (transition, fromSurface, toSurface) => transition === "none" ? null : `site-style-transition-${transition}-from-${fromSurface}-to-${toSurface}`
9141
+ }
8815
9142
  });
8816
9143
  /**
8817
9144
  * Default component rules translate frame and item-surface semantics into the
@@ -10546,19 +10873,11 @@ const curatedSiteStyles = [
10546
10873
  })
10547
10874
  ];
10548
10875
  new Map(curatedSiteStyles.map((style) => [style.id, style]));
10549
- asPageFlowPresetId("generated-default");
10550
- asSiteStyleId("site-style:south-west-twerk-school");
10551
- asAppearancePresetId("hero-brand-scrim-fixed-frame");
10552
- asLayoutVariantKey("classic");
10553
- asLayoutVariantKey("micro");
10554
- asBoundaryOptionId("break:wave");
10555
- asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
10556
10876
  //#endregion
10557
10877
  //#region ../theme-core/src/site-styles/resolver.ts
10558
10878
  const blockDesignFallback = {
10559
10879
  sectionSurface: "base",
10560
10880
  contentFrame: plainFrame,
10561
- transitionAfter: "none",
10562
10881
  sectionHeight: "default",
10563
10882
  heroLegibility: "none",
10564
10883
  imageSurfaceTreatment: { kind: "none" },
@@ -10569,7 +10888,7 @@ const blockDesignFallback = {
10569
10888
  accordionIconTreatment: null,
10570
10889
  composition: null
10571
10890
  };
10572
- blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.transitionAfter, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
10891
+ blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
10573
10892
  //#endregion
10574
10893
  //#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
10575
10894
  const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
@@ -11841,15 +12160,6 @@ function parseMailingListContentVersionId(value) {
11841
12160
  const parsed = parseContentVersionId(value);
11842
12161
  return parsed.ok ? parsed.value : null;
11843
12162
  }
11844
- function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
11845
- const parsedBlockId = parseMailingListBlockId(blockId);
11846
- const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
11847
- return parsedBlockId !== null && parsedContentVersionId !== null ? {
11848
- tag: "block_ref",
11849
- blockId: parsedBlockId,
11850
- contentVersionId: parsedContentVersionId
11851
- } : null;
11852
- }
11853
12163
  function sessionStartMs(session) {
11854
12164
  return Date.parse(session.startsAt);
11855
12165
  }
@@ -12167,7 +12477,8 @@ const siteOptionSources = [
12167
12477
  "eventCategories",
12168
12478
  "eventSeries",
12169
12479
  "venues",
12170
- "staffMembers"
12480
+ "staffMembers",
12481
+ "appointmentServiceCategories"
12171
12482
  ];
12172
12483
  const mediaDeliverySchema = z.object({
12173
12484
  sizes: z.string().optional(),
@@ -19576,13 +19887,13 @@ const hours = stack({
19576
19887
  as: "p",
19577
19888
  className: "rb-caption rb-opacity-70"
19578
19889
  }, bind("module.timeZone"), when("module.timeZone"))], when("module.kind", { equals: "opening-hours" }));
19579
- const socials = inline({ className: "rb-flex rb-flex-wrap rb-gap-x-5 rb-gap-y-3" }, [link({
19890
+ const socials = inline({ className: "rb-footer-socials" }, [link({
19580
19891
  href: { $bind: { from: "social.href" } },
19581
19892
  target: "_blank",
19582
19893
  rel: "noreferrer noopener",
19583
19894
  "aria-label": { $bind: { from: "social.label" } },
19584
- className: "rb-nav-text transition-theme-standard"
19585
- }, [icon({ className: "rb-h-5 rb-w-5" }, bind("social.icon"), when("social.icon")), text({ as: "span" }, bind("social.label"), when("social.icon", { equals: null }))], repeat("module.socialLinks", "social"))], when("module.kind", { equals: "social-links" }));
19895
+ className: "rb-footer-social-link rb-nav-text transition-theme-standard"
19896
+ }, [icon({ className: "rb-footer-social-icon" }, bind("social.icon"), when("social.icon")), text({ as: "span" }, bind("social.label"), when("social.icon", { equals: null }))], repeat("module.socialLinks", "social"))], when("module.kind", { equals: "social-links" }));
19586
19897
  const authoredCopy = richText({
19587
19898
  className: "rb-prose rb-prose-sm rb-max-w-none",
19588
19899
  style: textColorStyle("text/80")
@@ -21223,6 +21534,15 @@ const appointmentServicesBlockDefinition = {
21223
21534
  required: false,
21224
21535
  ui: { intent: "content" }
21225
21536
  },
21537
+ createSiteOptionSelectField({
21538
+ id: "categoryId",
21539
+ label: "Category",
21540
+ description: "Show one category (with its heading and intro), or leave it on All categories to show everything grouped.",
21541
+ required: false,
21542
+ multiple: false,
21543
+ optionSource: "appointmentServiceCategories",
21544
+ ui: { intent: "content" }
21545
+ }),
21226
21546
  sectionStylesField({
21227
21547
  id: "_sectionStyles",
21228
21548
  label: "Section styles",
@@ -21257,6 +21577,7 @@ const appointmentServicesBlockDefinition = {
21257
21577
  richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
21258
21578
  el("appointment-services", {
21259
21579
  sectionHeading: { $bind: { from: "content.heading" } },
21580
+ categoryId: { $bind: { from: "content.categoryId" } },
21260
21581
  services: { $bind: { from: "data.services" } },
21261
21582
  pathname: { $bind: { from: "$root.pathname" } },
21262
21583
  servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
@@ -21727,6 +22048,7 @@ const publicEventLoaderQuerySchemaShape = {
21727
22048
  seriesSlug: z.string().optional(),
21728
22049
  includeOccurrenceId: z.string().optional(),
21729
22050
  readIntent: z.string().optional(),
22051
+ detailAdmission: z.string().optional(),
21730
22052
  detailLevel: z.string().optional(),
21731
22053
  readProfile: z.string().optional()
21732
22054
  };
@@ -21893,11 +22215,11 @@ const publicEventBookingAvailabilitySchema = z.discriminatedUnion("kind", [z.obj
21893
22215
  "series_archived",
21894
22216
  "parent_archived",
21895
22217
  "parent_inconsistent",
21896
- "not_public",
21897
22218
  "already_started",
21898
22219
  "enrollment_closed"
21899
22220
  ])
21900
22221
  })]);
22222
+ const publicEventBookingClosedDetailSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("opensSoon") }), z.object({ kind: z.literal("paused") })]);
21901
22223
  const publicRunSessionSchema = z.object({
21902
22224
  occurrenceId: z.string(),
21903
22225
  startsAt: z.string(),
@@ -21942,6 +22264,7 @@ const publicEventBaseSchema = z.object({
21942
22264
  destination: publicEventDestinationSchema,
21943
22265
  requiresRegistration: z.boolean(),
21944
22266
  bookingAvailability: publicEventBookingAvailabilitySchema,
22267
+ bookingClosedDetail: publicEventBookingClosedDetailSchema.optional(),
21945
22268
  deliveryMode: z.enum([
21946
22269
  "in_person",
21947
22270
  "online",
@@ -29642,6 +29965,11 @@ const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
29642
29965
  });
29643
29966
  return z.NEVER;
29644
29967
  });
29968
+ const mailingListSignupBlockSourceRefSchema = z.object({
29969
+ tag: z.literal("block_ref"),
29970
+ blockId: mailingListSignupBlockIdSchema,
29971
+ contentVersionId: mailingListContentVersionIdSchema
29972
+ });
29645
29973
  const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
29646
29974
  const newsletterSourceCommonSchema = z.object({
29647
29975
  siteId: z.string().optional(),
@@ -29656,7 +29984,15 @@ const newsletterSourceSchema = z.discriminatedUnion("source", [
29656
29984
  newsletterSourceCommonSchema.extend({
29657
29985
  source: z.literal("block"),
29658
29986
  blockId: z.string().nullable().optional(),
29659
- contentVersionId: z.string().nullable().optional()
29987
+ newsletterBlockSubmission: z.discriminatedUnion("tag", [
29988
+ z.object({
29989
+ tag: z.literal("ready"),
29990
+ sourceRef: mailingListSignupBlockSourceRefSchema
29991
+ }),
29992
+ z.object({ tag: z.literal("unpublished-form") }),
29993
+ z.object({ tag: z.literal("unpublished-settings") }),
29994
+ z.object({ tag: z.literal("unavailable") })
29995
+ ])
29660
29996
  }),
29661
29997
  newsletterSourceCommonSchema.extend({
29662
29998
  source: z.literal("signed-footer"),
@@ -29685,11 +30021,7 @@ const newsletterHydrationSchema = z.object({
29685
30021
  target: z.discriminatedUnion("tag", [
29686
30022
  z.object({
29687
30023
  tag: z.literal("block-source"),
29688
- sourceRef: z.object({
29689
- tag: z.literal("block_ref"),
29690
- blockId: mailingListSignupBlockIdSchema,
29691
- contentVersionId: mailingListContentVersionIdSchema
29692
- }).nullable()
30024
+ sourceRef: mailingListSignupBlockSourceRefSchema.nullable()
29693
30025
  }),
29694
30026
  z.object({
29695
30027
  tag: z.literal("signed-footer-source"),
@@ -29698,7 +30030,11 @@ const newsletterHydrationSchema = z.object({
29698
30030
  token: signedMailingListSourceTokenSchema
29699
30031
  })
29700
30032
  }),
29701
- z.object({ tag: z.literal("preview") })
30033
+ z.object({ tag: z.literal("preview") }),
30034
+ z.object({
30035
+ tag: z.literal("unpublished-preview"),
30036
+ reason: z.enum(["unpublished-form", "unpublished-settings"])
30037
+ })
29702
30038
  ]),
29703
30039
  setupRevision: z.number().int().positive().nullable(),
29704
30040
  choiceProvider: z.enum([
@@ -29767,16 +30103,21 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
29767
30103
  });
29768
30104
  function projectNewsletterFormHydrationTarget(source) {
29769
30105
  switch (source.source) {
29770
- case "block": {
29771
- const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
29772
- if (sourceRef?.tag === "block_ref") return {
30106
+ case "block": switch (source.newsletterBlockSubmission.tag) {
30107
+ case "unpublished-form":
30108
+ case "unpublished-settings": return {
30109
+ tag: "unpublished-preview",
30110
+ reason: source.newsletterBlockSubmission.tag
30111
+ };
30112
+ case "ready": return {
29773
30113
  tag: "block-source",
29774
- sourceRef
30114
+ sourceRef: source.newsletterBlockSubmission.sourceRef
29775
30115
  };
29776
- return {
30116
+ case "unavailable": return {
29777
30117
  tag: "block-source",
29778
30118
  sourceRef: null
29779
30119
  };
30120
+ default: return assertNever$1(source.newsletterBlockSubmission);
29780
30121
  }
29781
30122
  case "signed-footer": return {
29782
30123
  tag: "signed-footer-source",