@riverbankcms/sdk 0.143.0 → 0.145.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 (254) hide show
  1. package/dist/{PreviewEditorSidebar-DROGfMKi.mjs → PreviewEditorSidebar-O-V6Pl5a.mjs} +20 -26
  2. package/dist/{PreviewEditorUI-BaRjhFu-.mjs → PreviewEditorUI-1UlX_9cw.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-BxGwdOCV.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-OIABYLES.mjs → SdkPreviewModeRuntime-DYbA_4iv.mjs} +431 -351
  5. package/dist/{SiteChromeCustomizeContext-ohjTvZbc.mjs → SiteChromeCustomizeContext-CNTKQ9nx.mjs} +3989 -2769
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +4719 -66
  7. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +429 -6
  8. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
  9. package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
  10. package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
  11. package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
  12. package/dist/_dts/api/src/billing.d.ts +1 -1
  13. package/dist/_dts/api/src/billingEndpointTypes.d.ts +8 -2
  14. package/dist/_dts/api/src/bookingConfig.d.ts +3 -1
  15. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -12
  16. package/dist/_dts/api/src/communications.d.ts +14 -22
  17. package/dist/_dts/api/src/contentRuntime.d.ts +2 -0
  18. package/dist/_dts/api/src/endpoints.d.ts +105 -58
  19. package/dist/_dts/api/src/index.d.ts +1 -1
  20. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  21. package/dist/_dts/api/src/launchReadiness.d.ts +2 -0
  22. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +4 -4
  23. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +0 -23
  24. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -0
  25. package/dist/_dts/api/src/publicBookingService.d.ts +35 -1
  26. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +1 -0
  27. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
  28. package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
  29. package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
  30. package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
  31. package/dist/_dts/api/src/sdkSettingsContracts.d.ts +8 -0
  32. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -6
  33. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -8
  34. package/dist/_dts/api/src/siteSettings.d.ts +17 -7
  35. package/dist/_dts/api/src/types.d.ts +2 -1
  36. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  37. package/dist/_dts/block-form/src/backend/types.d.ts +14 -0
  38. package/dist/_dts/block-form/src/client/index.d.ts +1 -0
  39. package/dist/_dts/block-form/src/context/RepeaterHostActionsContext.d.ts +30 -0
  40. package/dist/_dts/block-form/src/context/index.d.ts +1 -0
  41. package/dist/_dts/block-form/src/index.d.ts +1 -0
  42. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +4 -1
  43. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +5 -2
  44. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +11 -1
  45. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -0
  46. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useEmptyStateFocusAfterRemoval.d.ts +8 -0
  47. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +15 -1
  48. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +5 -2
  49. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
  50. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  51. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +58 -10
  52. package/dist/_dts/blocks/src/index.d.ts +1 -1
  53. package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
  54. package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
  55. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
  56. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
  57. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -0
  58. package/dist/_dts/blocks/src/server.d.ts +1 -1
  59. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
  60. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
  61. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -1
  62. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  63. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  64. package/dist/_dts/blocks/src/system/constants/events.d.ts +10 -0
  65. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
  66. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +5 -0
  67. package/dist/_dts/blocks/src/system/runtime/api/context.d.ts +3 -3
  68. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +10 -0
  69. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +3 -2
  70. package/dist/_dts/blocks/src/system/runtime/api/readAuthority.d.ts +11 -0
  71. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +9 -0
  72. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -13
  73. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -6
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +9 -4
  75. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +0 -1
  76. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +1 -3
  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/basic.d.ts +7 -24
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
  85. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
  86. package/dist/_dts/blocks/src/system/runtime/nodes/cart.server.d.ts +1 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +1 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.d.ts +2 -1
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +2 -1
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.override.d.ts +2 -1
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -1
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +8 -0
  96. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +4 -5
  97. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +7 -2
  98. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +7 -5
  99. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -6
  100. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +6 -4
  101. package/dist/_dts/blocks/src/system/runtime/nodes/header-control.d.ts +10 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/layout.d.ts +6 -21
  103. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +20 -1
  104. package/dist/_dts/blocks/src/system/runtime/nodes/product-detail.server.d.ts +1 -0
  105. package/dist/_dts/blocks/src/system/runtime/nodes/product-list.server.d.ts +1 -0
  106. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/shop.server.d.ts +1 -0
  108. package/dist/_dts/blocks/src/system/runtime/shared/components/ThemedButton.d.ts +58 -0
  109. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  110. package/dist/_dts/blocks/src/system/transforms/registry/chromeLogo.d.ts +23 -0
  111. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +2 -1
  112. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +3 -1
  113. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +4 -1
  114. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -0
  115. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  116. package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
  117. package/dist/_dts/core/src/editor-state.d.ts +6 -0
  118. package/dist/_dts/core/src/event-catalogue.d.ts +27 -0
  119. package/dist/_dts/core/src/event-preset-vocabulary.d.ts +7 -0
  120. package/dist/_dts/core/src/index.d.ts +3 -0
  121. package/dist/_dts/core/src/public-profile.d.ts +9 -0
  122. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +676 -241
  123. package/dist/_dts/db/src/schemas/forms.d.ts +286 -2
  124. package/dist/_dts/editor-blocks/src/block-editor/{BlockCardHeader.d.ts → BlockCardFrame.d.ts} +11 -3
  125. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +6 -0
  126. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
  127. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
  128. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
  129. package/dist/_dts/logger/src/console.d.ts +3 -0
  130. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
  131. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  132. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +1 -0
  133. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
  134. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  135. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
  136. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
  137. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +1 -0
  138. package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
  139. package/dist/_dts/sdk/src/client/types.d.ts +4 -1
  140. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  141. package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
  142. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
  143. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
  144. package/dist/_dts/sdk/src/navigation/index.d.ts +27 -0
  145. package/dist/_dts/sdk/src/public-api/contracts.d.ts +21 -15
  146. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
  147. package/dist/_dts/sdk/src/rendering/client.d.ts +1 -0
  148. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +1 -0
  149. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +7 -1
  150. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -2
  151. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
  152. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +1 -1
  153. package/dist/_dts/sdk/src/rendering/islands/enhancers/routeIslandApiConfig.d.ts +3 -2
  154. package/dist/_dts/sdk/src/rendering/islands/enhancers/shopShared.d.ts +2 -0
  155. package/dist/_dts/sdk/src/rendering/overrides.d.ts +1 -0
  156. package/dist/_dts/sdk/src/version.d.ts +1 -1
  157. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  158. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +1 -1
  159. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +3 -13
  160. package/dist/_dts/theme-core/src/customCss/index.d.ts +1 -1
  161. package/dist/_dts/theme-core/src/customCss/patch.d.ts +0 -5
  162. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  163. package/dist/_dts/theme-core/src/layout/boundaryCss.d.ts +3 -0
  164. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
  165. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
  166. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
  167. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
  168. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  169. package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
  170. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
  171. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
  172. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  173. package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
  174. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
  175. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
  176. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
  177. package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
  178. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
  179. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
  180. package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
  181. package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
  182. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  183. package/dist/_dts/theme-core/src/surfaces/logoVariant.d.ts +26 -0
  184. package/dist/_dts/theme-core/src/utils/colorStyles.d.ts +10 -0
  185. package/dist/_dts/ui/src/editor-item-card.d.ts +116 -0
  186. package/dist/_dts/ui/src/index.d.ts +1 -0
  187. package/dist/client/{BookingConsentAgreement-BoCtvzzu.mjs → BookingConsentAgreement-DlVOmpW4.mjs} +4 -55
  188. package/dist/client/{DiscountCodeDisclosure-B5S30nZk.mjs → DiscountCodeDisclosure-T9q623PQ.mjs} +27 -17
  189. package/dist/client/{EventCombined.client-CeZ2-zSt.mjs → EventCombined.client-DnsUeONl.mjs} +54 -46
  190. package/dist/client/{EventListing.client-DJN3j8B3.mjs → EventListing.client-CNBFqJS4.mjs} +3 -4
  191. package/dist/client/{LeafletStaticMap-RjtGzDQT.mjs → LeafletStaticMap-C7higg52.mjs} +1 -1
  192. package/dist/client/ThemedButton-LAJTNrS8.mjs +412 -0
  193. package/dist/client/{accordion-DOmnDoyg.mjs → accordion-BcNF9TjX.mjs} +1 -1
  194. package/dist/client/{bookingForm-C0vk7pgS.mjs → bookingForm-BUaQ3S03.mjs} +161 -75
  195. package/dist/client/bookings.mjs +392 -182
  196. package/dist/client/{carousel-BZJ7pno3.mjs → carousel-CTdF6e0V.mjs} +2 -2
  197. package/dist/client/{carousel.client-DQTjCVQT.mjs → carousel.client-jahpU9Vz.mjs} +1 -1
  198. package/dist/client/{cart-CaeVAHJl.mjs → cart-pGtyf_XU.mjs} +3 -3
  199. package/dist/client/{checkout-7wmoNDtG.mjs → checkout-Da9WSn7Y.mjs} +3 -3
  200. package/dist/client/{checkoutUrls-FL6lRkrt.mjs → checkoutUrls-CW3-78uu.mjs} +1 -1
  201. package/dist/client/client.mjs +3819 -2717
  202. package/dist/client/{colorStyles-3013aRAY.mjs → colorStyles-CuJBiS-1.mjs} +16 -4
  203. package/dist/client/{context-BOimxE3U.mjs → context-BFeY_Wbm.mjs} +24 -8
  204. package/dist/client/{dates-BnzVksi4.mjs → dates-BhwVSxDg.mjs} +2 -2
  205. package/dist/client/{eventCalendar-l-fpaslC.mjs → eventCalendar-BAtdnR4s.mjs} +39 -50
  206. package/dist/client/{eventCombined-DGGvssK6.mjs → eventCombined-RksA3tRC.mjs} +5 -4
  207. package/dist/client/{eventDetails-DRiCm_hL.mjs → eventDetails-BB9hB4wR.mjs} +4 -4
  208. package/dist/client/{eventListing-dph8loYX.mjs → eventListing-BpJBkviM.mjs} +5 -4
  209. package/dist/client/{eventRegistration-ClBohmbY.mjs → eventRegistration-B18jFq_o.mjs} +83 -68
  210. package/dist/client/{form-BLVVAnd3.mjs → form-Dodt8Y8t.mjs} +9 -10
  211. package/dist/client/{headerSection-DHy4C8Ix.mjs → headerSection-B0qj9ttg.mjs} +23 -30
  212. package/dist/client/hooks.mjs +807 -162
  213. package/dist/client/{locationMap-6HuS28ck.mjs → locationMap-gn-iMk7a.mjs} +9 -10
  214. package/dist/client/{media-DHpfFwd3.mjs → media-BtJ37tzS.mjs} +1 -1
  215. package/dist/client/{newsletterForm-xOdcOhZP.mjs → newsletterForm-oByLdFkr.mjs} +31 -11
  216. package/dist/client/{pricing-ChinRYFt.mjs → pricing-BOU0_Hai.mjs} +1 -1
  217. package/dist/client/{productDetail-0chA5gbK.mjs → productDetail-D9v1zH2j.mjs} +3 -3
  218. package/dist/client/{productList-OoINA0h1.mjs → productList-D-mItx1n.mjs} +3 -3
  219. package/dist/client/{propsDecoder-CIZ-hbIG.mjs → propsDecoder-C3TP_z4x.mjs} +158 -61
  220. package/dist/client/rendering/client.mjs +2785 -2000
  221. package/dist/client/rendering/islands.mjs +19 -19
  222. package/dist/client/rendering.mjs +3855 -2694
  223. package/dist/client/{routeIslandApiConfig-UNsfPcYq.mjs → routeIslandApiConfig-DzN1W0sq.mjs} +8 -1
  224. package/dist/client/{scrollToBlock-BPZl0gPZ.mjs → scrollToBlock-CWs8EIdo.mjs} +1 -1
  225. package/dist/client/{shop-CLJFqNIq.mjs → shop-Dufw7N7o.mjs} +45 -58
  226. package/dist/client/{shop-commerce-PpANg5wB.mjs → shop-commerce-gklw_hLF.mjs} +42 -55
  227. package/dist/client/{shop-commerce-store-TA_Kz2ku.mjs → shop-commerce-store-Sf1eyTaZ.mjs} +1 -1
  228. package/dist/client/{shopShared-DzcFcA5g.mjs → shopShared-B5nyA41S.mjs} +6 -5
  229. package/dist/client/{useEventFilters-CFU21QZo.mjs → useEventFilters-CLL829vy.mjs} +66 -355
  230. package/dist/preview-next/before-render.mjs +147 -77
  231. package/dist/preview-next/client/runtime.mjs +4 -4
  232. package/dist/preview-next/editor-chrome.css +8 -0
  233. package/dist/preview-next/keepAlive.mjs +147 -77
  234. package/dist/preview-next/middleware.mjs +147 -77
  235. package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-BxAFlu-j.mjs} +147 -77
  236. package/dist/{sdk-runtime-CDKl0Fr7.mjs → sdk-runtime-D0uZFev7.mjs} +2 -2
  237. package/dist/{separator-BTp96X32.mjs → separator-EvdCAn4V.mjs} +1 -1
  238. package/dist/server/components.mjs +2548 -1607
  239. package/dist/server/config-validation.mjs +794 -160
  240. package/dist/server/config.mjs +794 -160
  241. package/dist/server/data.mjs +806 -161
  242. package/dist/server/index.mjs +167 -85
  243. package/dist/server/navigation.mjs +28 -1
  244. package/dist/server/next.mjs +14930 -14036
  245. package/dist/server/page-converter.mjs +494 -113
  246. package/dist/server/prebuild.mjs +1 -1
  247. package/dist/server/rendering/server.mjs +2537 -1590
  248. package/dist/server/rendering.mjs +2571 -1618
  249. package/dist/server/routing.mjs +918 -200
  250. package/dist/server/server.mjs +819 -205
  251. package/dist/server/theme-bridge.mjs +1232 -28
  252. package/dist/server/theme.mjs +6 -4
  253. package/dist/styles/index.css +6 -0
  254. package/package.json +2 -1
@@ -1095,6 +1095,9 @@ var init_booking_date_time = __esmMin((() => {
1095
1095
  //#region ../core/src/booking-consent.ts
1096
1096
  var init_booking_consent = __esmMin((() => {}));
1097
1097
  //#endregion
1098
+ //#region ../core/src/appointment-service-categories.ts
1099
+ var init_appointment_service_categories = __esmMin((() => {}));
1100
+ //#endregion
1098
1101
  //#region ../core/src/dated-offering-settlement.ts
1099
1102
  var init_dated_offering_settlement = __esmMin((() => {}));
1100
1103
  //#endregion
@@ -2097,6 +2100,12 @@ var init_booking_verticals = __esmMin((() => {
2097
2100
  //#region ../core/src/navigation-locations.ts
2098
2101
  var init_navigation_locations = __esmMin((() => {}));
2099
2102
  //#endregion
2103
+ //#region ../core/src/event-preset-vocabulary.ts
2104
+ var init_event_preset_vocabulary = __esmMin((() => {}));
2105
+ //#endregion
2106
+ //#region ../core/src/event-catalogue.ts
2107
+ var init_event_catalogue = __esmMin((() => {}));
2108
+ //#endregion
2100
2109
  //#region ../core/src/index.ts
2101
2110
  var init_src$4 = __esmMin((() => {
2102
2111
  init_branded();
@@ -2119,6 +2128,7 @@ var init_src$4 = __esmMin((() => {
2119
2128
  init_booking_instalments();
2120
2129
  init_booking_date_time();
2121
2130
  init_booking_consent();
2131
+ init_appointment_service_categories();
2122
2132
  init_dated_offering_settlement();
2123
2133
  init_person_records();
2124
2134
  init_rectification();
@@ -2171,6 +2181,8 @@ var init_src$4 = __esmMin((() => {
2171
2181
  init_booking_verticals();
2172
2182
  init_event_series_behaviour();
2173
2183
  init_navigation_locations();
2184
+ init_event_preset_vocabulary();
2185
+ init_event_catalogue();
2174
2186
  }));
2175
2187
  //#endregion
2176
2188
  //#region ../media-core/src/types.ts
@@ -3352,6 +3364,45 @@ function srgbToLinear(u) {
3352
3364
  function linearToSrgb(x) {
3353
3365
  return clamp01(x <= .0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - .055) * 255;
3354
3366
  }
3367
+ function rgbToHsl$1(r, g, b) {
3368
+ const R = r / 255, G = g / 255, B = b / 255;
3369
+ const max = Math.max(R, G, B), min = Math.min(R, G, B);
3370
+ const d = max - min;
3371
+ let h = 0;
3372
+ if (d !== 0) {
3373
+ switch (max) {
3374
+ case R:
3375
+ h = (G - B) / d + (G < B ? 6 : 0);
3376
+ break;
3377
+ case G:
3378
+ h = (B - R) / d + 2;
3379
+ break;
3380
+ case B:
3381
+ h = (R - G) / d + 4;
3382
+ break;
3383
+ }
3384
+ h *= 60;
3385
+ }
3386
+ const l = (max + min) / 2;
3387
+ const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
3388
+ return {
3389
+ h,
3390
+ s,
3391
+ l
3392
+ };
3393
+ }
3394
+ function srgbToOklab(r, g, b) {
3395
+ const R = srgbToLinear(r), G = srgbToLinear(g), B = srgbToLinear(b);
3396
+ const l = .4122214708 * R + .5363325363 * G + .0514459929 * B;
3397
+ const m = .2119034982 * R + .6806995451 * G + .1073969566 * B;
3398
+ const s = .0883024619 * R + .2817188376 * G + .6299787005 * B;
3399
+ const l_ = Math.cbrt(l), m_ = Math.cbrt(m), s_ = Math.cbrt(s);
3400
+ return {
3401
+ L: .2104542553 * l_ + .793617785 * m_ - .0040720468 * s_,
3402
+ a: 1.9779984951 * l_ - 2.428592205 * m_ + .4505937099 * s_,
3403
+ b: .0259040371 * l_ + .7827717662 * m_ - .808675766 * s_
3404
+ };
3405
+ }
3355
3406
  function oklabToSrgb(L, a, b) {
3356
3407
  const l_ = Math.pow(L + .3963377774 * a + .2158037573 * b, 3);
3357
3408
  const m_ = Math.pow(L - .1055613458 * a - .0638541728 * b, 3);
@@ -3365,6 +3416,14 @@ function oklabToSrgb(L, a, b) {
3365
3416
  b: linearToSrgb(B)
3366
3417
  };
3367
3418
  }
3419
+ function oklabToOklch(L, a, b) {
3420
+ const C = Math.sqrt(a * a + b * b);
3421
+ return {
3422
+ L,
3423
+ C,
3424
+ h: C < 1e-7 ? 0 : deg(Math.atan2(b, a) * 180 / Math.PI)
3425
+ };
3426
+ }
3368
3427
  function oklchToOklab(L, C, h) {
3369
3428
  const hr = h * Math.PI / 180;
3370
3429
  return {
@@ -3373,9 +3432,32 @@ function oklchToOklab(L, C, h) {
3373
3432
  b: C * Math.sin(hr)
3374
3433
  };
3375
3434
  }
3376
- var clamp01;
3435
+ function featuresFromHex(hex) {
3436
+ const { r, g, b } = hexToRgb(hex);
3437
+ const { h, s, l } = rgbToHsl$1(r, g, b);
3438
+ const { L, a, b: b2 } = srgbToOklab(r, g, b);
3439
+ const { L: okL, C: okC, h: okH } = oklabToOklch(L, a, b2);
3440
+ return {
3441
+ r,
3442
+ g,
3443
+ b,
3444
+ h,
3445
+ s,
3446
+ l,
3447
+ v: Math.max(r, g, b) / 255,
3448
+ Y: .2126 * srgbToLinear(r) + .7152 * srgbToLinear(g) + .0722 * srgbToLinear(b),
3449
+ chroma: s,
3450
+ okL,
3451
+ okC,
3452
+ okH,
3453
+ hex
3454
+ };
3455
+ }
3456
+ var clamp01, mod, deg;
3377
3457
  var init_colorConversion = __esmMin((() => {
3378
3458
  clamp01 = (x) => Math.max(0, Math.min(1, x));
3459
+ mod = (a, n) => (a % n + n) % n;
3460
+ deg = (x) => mod(x, 360);
3379
3461
  }));
3380
3462
  //#endregion
3381
3463
  //#region ../theme-core/src/palette/generateShades.ts
@@ -4506,12 +4588,47 @@ var init_resolveSurfaceForeground = __esmMin((() => {
4506
4588
  ];
4507
4589
  }));
4508
4590
  //#endregion
4591
+ //#region ../theme-core/src/surfaces/logoVariant.ts
4592
+ /** Concrete hex behind a plain, opaque palette token, or null otherwise. */
4593
+ function opaquePaletteHexForToken(expandedPalette, token) {
4594
+ if (!token) return null;
4595
+ const parts = parseColorTokenParts(token);
4596
+ if (parts.kind !== "token" || parts.opacityPercent !== null) return null;
4597
+ return expandedPalette[parts.token] ?? null;
4598
+ }
4599
+ /**
4600
+ * Tone of the surface a foreground token was resolved for.
4601
+ *
4602
+ * A token with opacity has no known underlay to composite against, and a raw
4603
+ * or unrecognised token has no palette hex, so both are `unknown` rather than
4604
+ * a guess.
4605
+ */
4606
+ function surfaceToneFromForegroundToken(expandedPalette, foregroundToken) {
4607
+ const hex = opaquePaletteHexForToken(expandedPalette, foregroundToken);
4608
+ if (!hex) return "unknown";
4609
+ return featuresFromHex(hex).Y >= .5 ? "dark" : "light";
4610
+ }
4611
+ /**
4612
+ * The logo to draw on a surface of the given tone. A missing variant falls
4613
+ * back to the other one, and an unknown tone uses the light-backgrounds logo,
4614
+ * which is what every site rendered before variants existed.
4615
+ */
4616
+ function selectLogoVariant(tone, variants) {
4617
+ const { forLightBackgrounds, forDarkBackgrounds } = variants;
4618
+ return tone === "dark" ? forDarkBackgrounds ?? forLightBackgrounds : forLightBackgrounds ?? forDarkBackgrounds;
4619
+ }
4620
+ var init_logoVariant = __esmMin((() => {
4621
+ init_colorConversion();
4622
+ init_colorTokenParts();
4623
+ }));
4624
+ //#endregion
4509
4625
  //#region ../theme-core/src/surfaces/index.ts
4510
4626
  var init_surfaces = __esmMin((() => {
4511
4627
  init_foregroundContract();
4512
4628
  init_foregroundInteraction();
4513
4629
  init_foregroundRoles();
4514
4630
  init_resolveSurfaceForeground();
4631
+ init_logoVariant();
4515
4632
  }));
4516
4633
  //#endregion
4517
4634
  //#region ../theme-core/src/utils/colorStyles.ts
@@ -4559,16 +4676,28 @@ function backgroundColorStyle(token) {
4559
4676
  return { backgroundColor: rgbColorValue(token) };
4560
4677
  }
4561
4678
  /**
4679
+ * Converts a text color token to a CSS color value that follows the enclosing
4680
+ * surface. The semantic text tokens (`text`, `heading`, `mutedText`) resolve
4681
+ * to the surface foreground variables, so text adapts when a section's
4682
+ * background changes; any other token is a fixed theme color.
4683
+ *
4684
+ * @param token - Theme color token
4685
+ * @returns CSS color value
4686
+ */
4687
+ function textColorValue(token) {
4688
+ const parsed = parseToken(token);
4689
+ const surfaceRole = parsed.raw ? null : surfaceRoleForTextToken(parsed.token);
4690
+ if (!surfaceRole) return rgbColorValue(token);
4691
+ return parsed.opacityPercent === void 0 ? surfaceForegroundValue(surfaceRole) : surfaceForegroundValueWithOpacity(surfaceRole, parsed.opacityPercent);
4692
+ }
4693
+ /**
4562
4694
  * Creates a text color style object from a theme token.
4563
4695
  *
4564
4696
  * @param token - Theme color token
4565
4697
  * @returns CSSProperties with color
4566
4698
  */
4567
4699
  function textColorStyle(token) {
4568
- const parsed = parseToken(token);
4569
- const surfaceRole = parsed.raw ? null : surfaceRoleForTextToken(parsed.token);
4570
- if (surfaceRole) return { color: parsed.opacityPercent === void 0 ? surfaceForegroundValue(surfaceRole) : surfaceForegroundValueWithOpacity(surfaceRole, parsed.opacityPercent) };
4571
- return { color: rgbColorValue(token) };
4700
+ return { color: textColorValue(token) };
4572
4701
  }
4573
4702
  /**
4574
4703
  * Creates a border color style object from a theme token.
@@ -7189,7 +7318,7 @@ var init_generateCardCss = __esmMin((() => {
7189
7318
  }));
7190
7319
  //#endregion
7191
7320
  //#region ../theme-core/src/cards/core.ts
7192
- var init_core$2 = __esmMin((() => {
7321
+ var init_core$3 = __esmMin((() => {
7193
7322
  init_surfaces();
7194
7323
  }));
7195
7324
  //#endregion
@@ -7202,7 +7331,7 @@ var init_cards = __esmMin((() => {
7202
7331
  init_openCardVariant();
7203
7332
  init_generateCardCss();
7204
7333
  init_generateDefaultCardSystem();
7205
- init_core$2();
7334
+ init_core$3();
7206
7335
  }));
7207
7336
  //#endregion
7208
7337
  //#region ../theme-core/src/accordions/types.ts
@@ -7797,6 +7926,15 @@ function asSiteStyleId(value) {
7797
7926
  function asDesignSystemTemplateId(value) {
7798
7927
  return brandNonEmptyString(value, "DesignSystemTemplateId");
7799
7928
  }
7929
+ function toNonEmptyReadonlyArray(values) {
7930
+ const [first, ...rest] = values;
7931
+ return first === void 0 ? null : [first, ...rest];
7932
+ }
7933
+ function requireNonEmptyReadonlyArray(values, message = "Expected a non-empty array.") {
7934
+ const result = toNonEmptyReadonlyArray(values);
7935
+ if (!result) throw new Error(message);
7936
+ return result;
7937
+ }
7800
7938
  function makeBoundaryId(previousBlockId, nextBlockId) {
7801
7939
  return asDesignBoundaryId(`boundary:${encodeURIComponent(previousBlockId)}:${encodeURIComponent(nextBlockId)}`);
7802
7940
  }
@@ -7997,16 +8135,18 @@ var init_rawStyleFields = __esmMin((() => {
7997
8135
  "_frameStyles",
7998
8136
  "_sectionStyles",
7999
8137
  "_containerStyles",
8000
- "_cardStyles",
8001
- "_transitionStyles",
8002
- "styleGroup"
8138
+ "_cardStyles"
8003
8139
  ];
8004
8140
  themeV2BlockSpecificRawStyleFieldNames = [
8005
8141
  "_contentCardStyles",
8006
8142
  "_heroLayoutStyles",
8007
8143
  "_textCardStyles"
8008
8144
  ];
8009
- themeV2NormalEditorRawStyleFieldNames = [...themeV2RuntimeStyleFieldNames, ...themeV2BlockSpecificRawStyleFieldNames];
8145
+ themeV2NormalEditorRawStyleFieldNames = [
8146
+ ...themeV2RuntimeStyleFieldNames,
8147
+ ...themeV2BlockSpecificRawStyleFieldNames,
8148
+ "styleGroup"
8149
+ ];
8010
8150
  new Set(themeV2NormalEditorRawStyleFieldNames);
8011
8151
  [...themeV2RuntimeStyleFieldNames, ...themeV2BlockSpecificRawStyleFieldNames];
8012
8152
  pageDesignEditorBackgroundOverrideOwner = "page-design-editor";
@@ -9443,6 +9583,33 @@ function normalizeEventCalendarDisplayMode$1(input) {
9443
9583
  if (isEventCalendarDisplayMode(input.variant)) return input.variant;
9444
9584
  return isEventCalendarDisplayMode(input.displayMode) ? input.displayMode : void 0;
9445
9585
  }
9586
+ /** One closed authority for the projections required by each rendered mode. */
9587
+ function resolveEventCalendarReadPlan(input) {
9588
+ const mode = normalizeEventCalendarDisplayMode$1(input) ?? "combined";
9589
+ switch (mode) {
9590
+ case "combined": return {
9591
+ mode,
9592
+ jobs: "both",
9593
+ readProfile: "listing-card"
9594
+ };
9595
+ case "list": return {
9596
+ mode,
9597
+ jobs: "list",
9598
+ readProfile: "listing-card"
9599
+ };
9600
+ case "calendar": return {
9601
+ mode,
9602
+ jobs: "calendar",
9603
+ readProfile: "listing-card"
9604
+ };
9605
+ case "timetable":
9606
+ case "week-board": return {
9607
+ mode,
9608
+ jobs: "calendar",
9609
+ readProfile: "timetable"
9610
+ };
9611
+ }
9612
+ }
9446
9613
  function isEventCalendarDefaultView(value) {
9447
9614
  return typeof value === "string" && eventCalendarDefaultViewValues.includes(value);
9448
9615
  }
@@ -9482,8 +9649,7 @@ var init_events$1 = __esmMin((() => {
9482
9649
  //#endregion
9483
9650
  //#region ../blocks/src/system/blocks/events/shared/calendarWindow.ts
9484
9651
  function resolveCalendarReadProfile(content) {
9485
- const mode = normalizeEventCalendarDisplayMode$1(content);
9486
- return mode === "timetable" || mode === "week-board" ? "timetable" : "listing-card";
9652
+ return resolveEventCalendarReadPlan(content).readProfile;
9487
9653
  }
9488
9654
  /** Runtime picker sentinels and bound loader IDs must describe the same query. */
9489
9655
  function normalizeCalendarFilterId(value) {
@@ -9584,6 +9750,80 @@ var init_contracts$2 = __esmMin((() => {
9584
9750
  init_calendarWindow();
9585
9751
  }));
9586
9752
  //#endregion
9753
+ //#region ../api/src/defineEndpointDefinitions.ts
9754
+ /**
9755
+ * Validates extracted endpoint descriptors while preserving each literal path,
9756
+ * method, and parameter contract for the typed URL builders.
9757
+ */
9758
+ function defineEndpointDefinitions(definitions) {
9759
+ return definitions;
9760
+ }
9761
+ var init_defineEndpointDefinitions = __esmMin((() => {}));
9762
+ //#endregion
9763
+ //#region ../api/src/publicNewsletterEndpointDefinitions.ts
9764
+ var PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS;
9765
+ var init_publicNewsletterEndpointDefinitions = __esmMin((() => {
9766
+ init_defineEndpointDefinitions();
9767
+ PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
9768
+ subscribeNewsletter: {
9769
+ path: "/public/sites/{siteId}/newsletter/subscribe",
9770
+ method: "POST",
9771
+ tags: ["public-newsletter-{siteId}"],
9772
+ auth: "public",
9773
+ responseKind: "json"
9774
+ },
9775
+ confirmNewsletter: {
9776
+ path: "/public/sites/{siteId}/newsletter/confirm/{token}",
9777
+ method: "GET",
9778
+ tags: ["public-newsletter-{siteId}"],
9779
+ auth: "public",
9780
+ responseKind: "text"
9781
+ },
9782
+ unsubscribeNewsletter: {
9783
+ path: "/public/sites/{siteId}/newsletter/unsubscribe/{token}",
9784
+ method: "GET",
9785
+ tags: ["public-newsletter-{siteId}"],
9786
+ auth: "public",
9787
+ responseKind: "text"
9788
+ },
9789
+ unsubscribeNewsletterPost: {
9790
+ path: "/public/sites/{siteId}/newsletter/unsubscribe/{token}",
9791
+ method: "POST",
9792
+ tags: ["public-newsletter-{siteId}"],
9793
+ auth: "public",
9794
+ responseKind: "text"
9795
+ },
9796
+ confirmNewsletterPost: {
9797
+ path: "/public/sites/{siteId}/newsletter/confirm/{token}",
9798
+ method: "POST",
9799
+ tags: ["public-newsletter-{siteId}"],
9800
+ auth: "public",
9801
+ responseKind: "text"
9802
+ },
9803
+ getNewsletterPreferences: {
9804
+ path: "/public/sites/{siteId}/newsletter/preferences/{token}",
9805
+ method: "GET",
9806
+ tags: ["public-newsletter-{siteId}"],
9807
+ auth: "public",
9808
+ responseKind: "text"
9809
+ },
9810
+ saveNewsletterPreferences: {
9811
+ path: "/public/sites/{siteId}/newsletter/preferences/{token}",
9812
+ method: "POST",
9813
+ tags: ["public-newsletter-{siteId}"],
9814
+ auth: "public",
9815
+ responseKind: "text"
9816
+ },
9817
+ getNewsletterArchive: {
9818
+ path: "/public/sites/{siteId}/newsletter/archive/{token}",
9819
+ method: "GET",
9820
+ tags: ["public-newsletter-{siteId}"],
9821
+ auth: "public",
9822
+ responseKind: "text"
9823
+ }
9824
+ });
9825
+ }));
9826
+ //#endregion
9587
9827
  //#region ../api/src/apiEndpointTypes.ts
9588
9828
  function allowedDemoMutationPolicy() {
9589
9829
  return {
@@ -9680,22 +9920,97 @@ var init_sdkEntryReadEndpoints = __esmMin((() => {
9680
9920
  };
9681
9921
  }));
9682
9922
  //#endregion
9683
- //#region ../api/src/defineEndpointDefinitions.ts
9684
- /**
9685
- * Validates extracted endpoint descriptors while preserving each literal path,
9686
- * method, and parameter contract for the typed URL builders.
9687
- */
9688
- function defineEndpointDefinitions(definitions) {
9689
- return definitions;
9690
- }
9691
- var init_defineEndpointDefinitions = __esmMin((() => {}));
9923
+ //#region ../api/src/appointmentServiceCategoryEndpoints.ts
9924
+ var APPOINTMENT_SERVICE_CATEGORY_ENDPOINT_DEFINITIONS;
9925
+ var init_appointmentServiceCategoryEndpoints = __esmMin((() => {
9926
+ init_defineEndpointDefinitions();
9927
+ APPOINTMENT_SERVICE_CATEGORY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
9928
+ listGroupedAppointmentServices: {
9929
+ path: "/sites/{siteId}/bookings/services/grouped",
9930
+ method: "GET",
9931
+ auth: "user",
9932
+ responseKind: "json",
9933
+ errors: ["server:internal_error"]
9934
+ },
9935
+ reorderAppointmentServices: {
9936
+ path: "/sites/{siteId}/bookings/services/order",
9937
+ method: "PUT",
9938
+ auth: "user",
9939
+ responseKind: "json",
9940
+ errors: [
9941
+ "validation:invalid_input",
9942
+ "auth:forbidden",
9943
+ "resource:not_found",
9944
+ "resource:conflict",
9945
+ "server:internal_error"
9946
+ ]
9947
+ },
9948
+ listAppointmentServiceCategories: {
9949
+ path: "/sites/{siteId}/bookings/service-categories",
9950
+ method: "GET",
9951
+ auth: "user",
9952
+ responseKind: "json",
9953
+ errors: ["server:internal_error"]
9954
+ },
9955
+ createAppointmentServiceCategory: {
9956
+ path: "/sites/{siteId}/bookings/service-categories",
9957
+ method: "POST",
9958
+ auth: "user",
9959
+ responseKind: "json",
9960
+ errors: [
9961
+ "validation:invalid_input",
9962
+ "auth:forbidden",
9963
+ "resource:conflict",
9964
+ "server:internal_error"
9965
+ ]
9966
+ },
9967
+ updateAppointmentServiceCategory: {
9968
+ path: "/sites/{siteId}/bookings/service-categories/{categoryId}",
9969
+ method: "PUT",
9970
+ auth: "user",
9971
+ responseKind: "json",
9972
+ errors: [
9973
+ "validation:invalid_input",
9974
+ "auth:forbidden",
9975
+ "resource:not_found",
9976
+ "resource:conflict",
9977
+ "server:internal_error"
9978
+ ]
9979
+ },
9980
+ deleteAppointmentServiceCategory: {
9981
+ path: "/sites/{siteId}/bookings/service-categories/{categoryId}",
9982
+ method: "DELETE",
9983
+ auth: "user",
9984
+ responseKind: "json",
9985
+ errors: [
9986
+ "auth:forbidden",
9987
+ "resource:not_found",
9988
+ "server:internal_error"
9989
+ ]
9990
+ },
9991
+ reorderAppointmentServiceCategories: {
9992
+ path: "/sites/{siteId}/bookings/service-categories/order",
9993
+ method: "PUT",
9994
+ auth: "user",
9995
+ responseKind: "json",
9996
+ errors: [
9997
+ "validation:invalid_input",
9998
+ "auth:forbidden",
9999
+ "resource:conflict",
10000
+ "server:internal_error"
10001
+ ]
10002
+ }
10003
+ });
10004
+ }));
9692
10005
  //#endregion
9693
10006
  //#region ../api/src/appointmentEndpointDefinitions.ts
9694
10007
  var APPOINTMENT_ENDPOINT_DEFINITIONS;
9695
10008
  var init_appointmentEndpointDefinitions = __esmMin((() => {
9696
10009
  init_cache_tags();
9697
10010
  init_defineEndpointDefinitions();
10011
+ init_appointmentServiceCategoryEndpoints();
9698
10012
  APPOINTMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
10013
+ ...APPOINTMENT_SERVICE_CATEGORY_ENDPOINT_DEFINITIONS,
9699
10014
  listAppointmentResources: {
9700
10015
  path: "/sites/{siteId}/bookings/resources",
9701
10016
  method: "GET",
@@ -10857,39 +11172,6 @@ var init_newsletterEndpointDefinitions = __esmMin((() => {
10857
11172
  auth: "user",
10858
11173
  responseKind: "json",
10859
11174
  demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
10860
- },
10861
- listNewsletterSendJobs: {
10862
- path: "/sites/{siteId}/newsletter/jobs",
10863
- method: "GET",
10864
- tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
10865
- auth: "user",
10866
- responseKind: "json"
10867
- },
10868
- retryNewsletterSendJob: {
10869
- path: "/sites/{siteId}/newsletter/jobs/{jobId}/retry",
10870
- method: "POST",
10871
- errors: [
10872
- "validation:invalid_input",
10873
- "resource:not_found",
10874
- "auth:forbidden",
10875
- "server:internal_error"
10876
- ],
10877
- tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
10878
- auth: "user",
10879
- responseKind: "json"
10880
- },
10881
- cancelNewsletterSendJob: {
10882
- path: "/sites/{siteId}/newsletter/jobs/{jobId}/cancel",
10883
- method: "POST",
10884
- errors: [
10885
- "validation:invalid_input",
10886
- "resource:not_found",
10887
- "auth:forbidden",
10888
- "server:internal_error"
10889
- ],
10890
- tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
10891
- auth: "user",
10892
- responseKind: "json"
10893
11175
  }
10894
11176
  });
10895
11177
  }));
@@ -11669,6 +11951,7 @@ var init_billingEndpointDefinitions = __esmMin((() => {
11669
11951
  });
11670
11952
  }));
11671
11953
  var init_endpoints = __esmMin((() => {
11954
+ init_publicNewsletterEndpointDefinitions();
11672
11955
  init_demoMutationPolicies();
11673
11956
  init_cache_tags();
11674
11957
  init_sdkEntryReadEndpoints();
@@ -11688,6 +11971,7 @@ var init_endpoints = __esmMin((() => {
11688
11971
  init_publicOnboardingAttemptEndpointDefinitions();
11689
11972
  init_billingEndpointDefinitions();
11690
11973
  ({
11974
+ ...PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS,
11691
11975
  ...ACCOUNT_ENDPOINT_DEFINITIONS,
11692
11976
  ...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
11693
11977
  ...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
@@ -15412,16 +15696,258 @@ var init_cardRoleVocabulary = __esmMin((() => {
15412
15696
  cardRoleWithLegacyAliasSchema = z.preprocess((value) => cardRoleFromLegacyVocabulary(value) ?? value, cardRoleSchema);
15413
15697
  }));
15414
15698
  //#endregion
15415
- //#region ../theme-core/src/site-styles/compositionBudget.ts
15416
- var init_compositionBudget = __esmMin((() => {}));
15699
+ //#region ../theme-core/src/site-styles/runtimeBackgroundResolution.ts
15700
+ var init_runtimeBackgroundResolution = __esmMin((() => {
15701
+ init_boxBackgroundSchema();
15702
+ init_surfaces();
15703
+ init_rawStyleFields();
15704
+ }));
15417
15705
  //#endregion
15418
- //#region ../theme-core/src/site-styles/compilationPlan.ts
15419
- var defaultHeaderBrandPreferences;
15420
- var init_compilationPlan = __esmMin((() => {
15421
- defaultHeaderBrandPreferences = {
15422
- brandDisplay: "auto",
15423
- logoSize: "auto"
15424
- };
15706
+ //#region ../theme-core/src/site-styles/transitionCatalogue.ts
15707
+ var transitionCatalogueFamilies, mediumHeight, compactHeight, largeHeight, transitionCatalogueEntries;
15708
+ var init_transitionCatalogue = __esmMin((() => {
15709
+ init_types$7();
15710
+ transitionCatalogueFamilies = [
15711
+ {
15712
+ id: "gradient",
15713
+ label: "Gradient"
15714
+ },
15715
+ {
15716
+ id: "wave",
15717
+ label: "Wave"
15718
+ },
15719
+ {
15720
+ id: "angle",
15721
+ label: "Angle"
15722
+ }
15723
+ ];
15724
+ mediumHeight = "6rem + 2px";
15725
+ compactHeight = "4.5rem + 2px";
15726
+ largeHeight = "7rem + 2px";
15727
+ transitionCatalogueEntries = defineExactCatalog()([
15728
+ {
15729
+ intent: "soft-fade-short",
15730
+ optionId: asBoundaryOptionId("break:soft"),
15731
+ family: "gradient",
15732
+ variantId: "soft",
15733
+ label: "Soft",
15734
+ variantLabel: "Soft",
15735
+ treatment: {
15736
+ kind: "soft-fade",
15737
+ height: "medium",
15738
+ curve: "soft"
15739
+ },
15740
+ size: "medium",
15741
+ heightExpression: mediumHeight,
15742
+ shape: { kind: "fade" }
15743
+ },
15744
+ {
15745
+ intent: "soft-fade-long",
15746
+ optionId: asBoundaryOptionId("break:spacious"),
15747
+ family: "gradient",
15748
+ variantId: "spacious",
15749
+ label: "Spacious",
15750
+ variantLabel: "Spacious",
15751
+ treatment: {
15752
+ kind: "soft-fade",
15753
+ height: "large",
15754
+ curve: "spacious"
15755
+ },
15756
+ size: "spacious",
15757
+ heightExpression: "10rem",
15758
+ shape: { kind: "fade" }
15759
+ },
15760
+ {
15761
+ intent: "soft-fade-expansive",
15762
+ optionId: asBoundaryOptionId("break:expansive"),
15763
+ family: "gradient",
15764
+ variantId: "expansive",
15765
+ label: "Expansive",
15766
+ variantLabel: "Expansive",
15767
+ treatment: {
15768
+ kind: "soft-fade",
15769
+ height: "expansive",
15770
+ curve: "expansive"
15771
+ },
15772
+ size: "expansive",
15773
+ heightExpression: "14rem",
15774
+ shape: { kind: "fade" }
15775
+ },
15776
+ {
15777
+ intent: "wave-edge-balanced",
15778
+ optionId: asBoundaryOptionId("break:wave-balanced"),
15779
+ family: "wave",
15780
+ variantId: "balanced",
15781
+ label: "Balanced wave",
15782
+ variantLabel: "Balanced",
15783
+ treatment: {
15784
+ kind: "wave-edge",
15785
+ height: "medium",
15786
+ amplitude: "balanced",
15787
+ rhythm: "double",
15788
+ symmetry: "symmetrical"
15789
+ },
15790
+ size: "medium",
15791
+ heightExpression: mediumHeight,
15792
+ shape: {
15793
+ kind: "wave",
15794
+ mask: "balanced"
15795
+ }
15796
+ },
15797
+ {
15798
+ intent: "wave-edge",
15799
+ optionId: asBoundaryOptionId("break:wave"),
15800
+ family: "wave",
15801
+ variantId: "classic",
15802
+ label: "Classic wave",
15803
+ variantLabel: "Classic",
15804
+ treatment: {
15805
+ kind: "wave-edge",
15806
+ height: "medium",
15807
+ amplitude: "balanced",
15808
+ rhythm: "double",
15809
+ symmetry: "asymmetrical"
15810
+ },
15811
+ size: "medium",
15812
+ heightExpression: mediumHeight,
15813
+ shape: {
15814
+ kind: "wave",
15815
+ mask: "classic"
15816
+ }
15817
+ },
15818
+ {
15819
+ intent: "wave-edge-gentle",
15820
+ optionId: asBoundaryOptionId("break:wave-gentle"),
15821
+ family: "wave",
15822
+ variantId: "gentle",
15823
+ label: "Gentle wave",
15824
+ variantLabel: "Gentle",
15825
+ treatment: {
15826
+ kind: "wave-edge",
15827
+ height: "compact",
15828
+ amplitude: "subtle",
15829
+ rhythm: "single",
15830
+ symmetry: "symmetrical"
15831
+ },
15832
+ size: "compact",
15833
+ heightExpression: compactHeight,
15834
+ shape: {
15835
+ kind: "wave",
15836
+ mask: "gentle"
15837
+ }
15838
+ },
15839
+ {
15840
+ intent: "wave-edge-bold",
15841
+ optionId: asBoundaryOptionId("break:wave-bold"),
15842
+ family: "wave",
15843
+ variantId: "bold",
15844
+ label: "Bold wave",
15845
+ variantLabel: "Bold",
15846
+ treatment: {
15847
+ kind: "wave-edge",
15848
+ height: "large",
15849
+ amplitude: "bold",
15850
+ rhythm: "double",
15851
+ symmetry: "symmetrical"
15852
+ },
15853
+ size: "large",
15854
+ heightExpression: largeHeight,
15855
+ shape: {
15856
+ kind: "wave",
15857
+ mask: "bold"
15858
+ }
15859
+ },
15860
+ {
15861
+ intent: "wave-edge-drift",
15862
+ optionId: asBoundaryOptionId("break:wave-drift"),
15863
+ family: "wave",
15864
+ variantId: "drift",
15865
+ label: "Drift wave",
15866
+ variantLabel: "Drift",
15867
+ treatment: {
15868
+ kind: "wave-edge",
15869
+ height: "medium",
15870
+ amplitude: "balanced",
15871
+ rhythm: "double",
15872
+ symmetry: "drift"
15873
+ },
15874
+ size: "medium",
15875
+ heightExpression: mediumHeight,
15876
+ shape: {
15877
+ kind: "wave",
15878
+ mask: "drift"
15879
+ }
15880
+ },
15881
+ {
15882
+ intent: "angle-edge-subtle",
15883
+ optionId: asBoundaryOptionId("break:angle-subtle"),
15884
+ family: "angle",
15885
+ variantId: "subtle",
15886
+ label: "Subtle angle",
15887
+ variantLabel: "Subtle",
15888
+ treatment: {
15889
+ kind: "angle-edge",
15890
+ height: "compact",
15891
+ slope: "subtle",
15892
+ direction: "forward"
15893
+ },
15894
+ size: "compact",
15895
+ heightExpression: compactHeight,
15896
+ shape: {
15897
+ kind: "angle",
15898
+ polygon: {
15899
+ startTopPercent: 34,
15900
+ endTopPercent: 18
15901
+ }
15902
+ }
15903
+ },
15904
+ {
15905
+ intent: "angle-edge",
15906
+ optionId: asBoundaryOptionId("break:angle-balanced"),
15907
+ family: "angle",
15908
+ variantId: "balanced",
15909
+ label: "Balanced angle",
15910
+ variantLabel: "Balanced",
15911
+ treatment: {
15912
+ kind: "angle-edge",
15913
+ height: "medium",
15914
+ slope: "balanced",
15915
+ direction: "forward"
15916
+ },
15917
+ size: "medium",
15918
+ heightExpression: mediumHeight,
15919
+ shape: {
15920
+ kind: "angle",
15921
+ polygon: {
15922
+ startTopPercent: 42,
15923
+ endTopPercent: 8
15924
+ }
15925
+ }
15926
+ },
15927
+ {
15928
+ intent: "angle-edge-steep",
15929
+ optionId: asBoundaryOptionId("break:angle-steep"),
15930
+ family: "angle",
15931
+ variantId: "steep",
15932
+ label: "Steep angle",
15933
+ variantLabel: "Steep",
15934
+ treatment: {
15935
+ kind: "angle-edge",
15936
+ height: "large",
15937
+ slope: "steep",
15938
+ direction: "forward"
15939
+ },
15940
+ size: "large",
15941
+ heightExpression: largeHeight,
15942
+ shape: {
15943
+ kind: "angle",
15944
+ polygon: {
15945
+ startTopPercent: 54,
15946
+ endTopPercent: 0
15947
+ }
15948
+ }
15949
+ }
15950
+ ]);
15425
15951
  }));
15426
15952
  //#endregion
15427
15953
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
@@ -15433,45 +15959,122 @@ function boundaryRuntimeMetrics(family, size, heightExpression) {
15433
15959
  reserveCss: `calc((${heightExpression}) / 2)`
15434
15960
  };
15435
15961
  }
15436
- var noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
15962
+ /**
15963
+ * The catalogue's compile-time coverage check guarantees an entry per
15964
+ * decorative intent, so a miss here is a broken invariant, not bad input.
15965
+ */
15966
+ function requireCatalogueValue(values, intent) {
15967
+ const value = values.get(intent);
15968
+ if (value === void 0) throw new Error(`Transition catalogue has no entry for ${intent}`);
15969
+ return value;
15970
+ }
15971
+ function boundaryOptionForTransitionIntent(intent) {
15972
+ return requireCatalogueValue(boundaryOptionByIntent, intent);
15973
+ }
15974
+ function transitionVariantForEntry(entry) {
15975
+ return {
15976
+ familyId: entry.family,
15977
+ variantId: entry.variantId,
15978
+ label: entry.variantLabel,
15979
+ boundaryOption: boundaryOptionForTransitionIntent(entry.intent)
15980
+ };
15981
+ }
15982
+ function stableTreatmentKey(treatment) {
15983
+ switch (treatment.kind) {
15984
+ case "none": return "none";
15985
+ case "soft-fade": return `${treatment.kind}:${treatment.height}:${treatment.curve}`;
15986
+ case "wave-edge": return [
15987
+ treatment.kind,
15988
+ treatment.height,
15989
+ treatment.amplitude,
15990
+ treatment.rhythm,
15991
+ treatment.symmetry
15992
+ ].join(":");
15993
+ case "angle-edge": return [
15994
+ treatment.kind,
15995
+ treatment.height,
15996
+ treatment.slope,
15997
+ treatment.direction
15998
+ ].join(":");
15999
+ case "legacy-unsupported": return `${treatment.kind}:${treatment.boundaryOptionId}`;
16000
+ }
16001
+ }
16002
+ var noneBoundaryOption, boundaryOptionByIntent, softBoundaryOption, spaciousBoundaryOption, boundaryOptions, noneTransitionVariant, sectionTransitionFamilies;
15437
16003
  var init_sectionTransitions = __esmMin((() => {
15438
16004
  init_types$7();
15439
- 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");
16005
+ init_transitionCatalogue();
16006
+ new Map(transitionCatalogueEntries.map((entry) => [entry.intent, entry]));
16007
+ new Map(transitionCatalogueEntries.map((entry) => [entry.intent, boundaryRuntimeMetrics(entry.family, entry.size, entry.heightExpression)]));
15440
16008
  noneBoundaryOption = {
15441
16009
  id: asBoundaryOptionId("break:none"),
15442
16010
  label: "None",
15443
16011
  transitionAfter: "none",
15444
16012
  treatment: { kind: "none" }
15445
16013
  };
15446
- softBoundaryOption = {
15447
- id: asBoundaryOptionId("break:soft"),
15448
- label: "Soft",
15449
- transitionAfter: "soft-fade-short",
15450
- treatment: {
15451
- kind: "soft-fade",
15452
- height: "medium",
15453
- curve: "soft"
15454
- }
16014
+ boundaryOptionByIntent = new Map(transitionCatalogueEntries.map((entry) => [entry.intent, {
16015
+ id: entry.optionId,
16016
+ label: entry.label,
16017
+ transitionAfter: entry.intent,
16018
+ treatment: entry.treatment
16019
+ }]));
16020
+ softBoundaryOption = boundaryOptionForTransitionIntent("soft-fade-short");
16021
+ spaciousBoundaryOption = boundaryOptionForTransitionIntent("soft-fade-long");
16022
+ boundaryOptionForTransitionIntent("soft-fade-expansive");
16023
+ boundaryOptionForTransitionIntent("wave-edge");
16024
+ boundaryOptionForTransitionIntent("wave-edge-balanced");
16025
+ boundaryOptionForTransitionIntent("wave-edge-gentle");
16026
+ boundaryOptionForTransitionIntent("wave-edge-bold");
16027
+ boundaryOptionForTransitionIntent("wave-edge-drift");
16028
+ boundaryOptionForTransitionIntent("angle-edge-subtle");
16029
+ boundaryOptionForTransitionIntent("angle-edge");
16030
+ boundaryOptionForTransitionIntent("angle-edge-steep");
16031
+ boundaryOptions = [noneBoundaryOption, ...transitionCatalogueEntries.map((entry) => boundaryOptionForTransitionIntent(entry.intent))];
16032
+ noneTransitionVariant = {
16033
+ familyId: "none",
16034
+ variantId: "none",
16035
+ label: "None",
16036
+ boundaryOption: noneBoundaryOption
15455
16037
  };
15456
- spaciousBoundaryOption = {
15457
- id: asBoundaryOptionId("break:spacious"),
15458
- label: "Spacious",
15459
- transitionAfter: "soft-fade-long",
15460
- treatment: {
15461
- kind: "soft-fade",
15462
- height: "large",
15463
- curve: "spacious"
15464
- }
16038
+ sectionTransitionFamilies = [{
16039
+ id: "none",
16040
+ label: "None",
16041
+ variants: [noneTransitionVariant]
16042
+ }, ...transitionCatalogueFamilies.map((family) => ({
16043
+ id: family.id,
16044
+ label: family.label,
16045
+ variants: requireNonEmptyReadonlyArray(transitionCatalogueEntries.filter((entry) => entry.family === family.id).map(transitionVariantForEntry), `Transition family ${family.id} has no catalogue entries.`)
16046
+ }))];
16047
+ new Map(boundaryOptions.map((option) => [option.id, option]));
16048
+ new Map(boundaryOptions.map((option) => [stableTreatmentKey(option.treatment), option]));
16049
+ new Map(sectionTransitionFamilies.flatMap((family) => family.variants.map((variant) => [variant.boundaryOption.id, variant])));
16050
+ new Map(sectionTransitionFamilies.map((family) => [family.id, family]));
16051
+ }));
16052
+ //#endregion
16053
+ //#region ../theme-core/src/site-styles/sectionBoundaryComposition.ts
16054
+ function requireThemeColorToken$1(value) {
16055
+ const token = parseThemeColorToken(value);
16056
+ if (!token) throw new Error(`Expected a theme color token. Received: ${value}`);
16057
+ return token;
16058
+ }
16059
+ var init_sectionBoundaryComposition = __esmMin((() => {
16060
+ init_themeColorTokens();
16061
+ init_runtimeBackgroundResolution();
16062
+ init_sectionTransitions();
16063
+ requireThemeColorToken$1("background");
16064
+ }));
16065
+ //#endregion
16066
+ //#region ../theme-core/src/site-styles/compositionBudget.ts
16067
+ var init_compositionBudget = __esmMin((() => {
16068
+ init_sectionBoundaryComposition();
16069
+ }));
16070
+ //#endregion
16071
+ //#region ../theme-core/src/site-styles/compilationPlan.ts
16072
+ var defaultHeaderBrandPreferences;
16073
+ var init_compilationPlan = __esmMin((() => {
16074
+ defaultHeaderBrandPreferences = {
16075
+ brandDisplay: "auto",
16076
+ logoSize: "auto"
15465
16077
  };
15466
- asBoundaryOptionId("break:expansive");
15467
- asBoundaryOptionId("break:wave");
15468
- asBoundaryOptionId("break:wave-balanced");
15469
- asBoundaryOptionId("break:wave-gentle");
15470
- asBoundaryOptionId("break:wave-bold");
15471
- asBoundaryOptionId("break:wave-drift");
15472
- asBoundaryOptionId("break:angle-subtle");
15473
- asBoundaryOptionId("break:angle-balanced");
15474
- asBoundaryOptionId("break:angle-steep");
15475
16078
  }));
15476
16079
  //#endregion
15477
16080
  //#region ../theme-core/src/site-styles/pageDesignIntent.ts
@@ -15503,14 +16106,11 @@ function validateUniquePageDesignPins(intent, ctx) {
15503
16106
  label: "block Look pin"
15504
16107
  });
15505
16108
  addDuplicateStringIssues(ctx, {
15506
- values: intent.boundaryPins.map((pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)),
16109
+ values: intent.boundaryPins.map((pin) => makeBoundaryId(pin.previousBlockId, pin.nextBlockId)),
15507
16110
  path: ["boundaryPins"],
15508
16111
  label: "boundary pin"
15509
16112
  });
15510
16113
  }
15511
- function boundaryKey(previousBlockId, nextBlockId) {
15512
- return makeBoundaryId(previousBlockId, nextBlockId);
15513
- }
15514
16114
  var pageDesignUserPinnedAppearanceChoiceSchema, pageDesignUserPinnedBoundaryChoiceSchema, pageDesignBoundaryTreatmentSchema, pageDesignUserPinnedBoundaryTreatmentChoiceSchema, pageDesignBlockLookPinSchema, pageDesignBoundaryPinSchema, legacyPageDesignBoundaryPinSchema;
15515
16115
  var init_pageDesignIntent = __esmMin((() => {
15516
16116
  init_types$7();
@@ -17203,6 +17803,36 @@ var init_designState = __esmMin((() => {
17203
17803
  authority: styleAuthoritySchema
17204
17804
  }).strict();
17205
17805
  }));
17806
+ var init_pageFlowPresets = __esmMin((() => {
17807
+ init_sectionTransitions();
17808
+ init_types$7();
17809
+ asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
17810
+ }));
17811
+ //#endregion
17812
+ //#region ../theme-core/src/site-styles/lookResolution.ts
17813
+ var init_lookResolution = __esmMin((() => {
17814
+ init_appearancePresets();
17815
+ }));
17816
+ var init_siteStyleBlockPolicies = __esmMin((() => {
17817
+ init_lookResolution();
17818
+ init_appearancePresets();
17819
+ init_pageDesignIntent();
17820
+ init_types$7();
17821
+ asPageFlowPresetId("generated-default");
17822
+ asSiteStyleId("site-style:south-west-twerk-school");
17823
+ asAppearancePresetId("hero-brand-scrim-fixed-frame");
17824
+ asLayoutVariantKey("classic");
17825
+ asLayoutVariantKey("micro");
17826
+ asBoundaryOptionId("break:wave");
17827
+ }));
17828
+ //#endregion
17829
+ //#region ../theme-core/src/site-styles/joinTreatment.ts
17830
+ var init_joinTreatment = __esmMin((() => {
17831
+ init_pageFlowPresets();
17832
+ init_pageDesignIntent();
17833
+ init_sectionTransitions();
17834
+ init_siteStyleBlockPolicies();
17835
+ }));
17206
17836
  //#endregion
17207
17837
  //#region ../theme-core/src/site-styles/runtimeCompiler.ts
17208
17838
  function defineSectionForegroundRuntimeTokens(input) {
@@ -17237,7 +17867,8 @@ var init_runtimeCompiler = __esmMin((() => {
17237
17867
  init_schema$3();
17238
17868
  init_styles();
17239
17869
  init_designState();
17240
- init_sectionTransitions();
17870
+ init_joinTreatment();
17871
+ init_rawStyleFields();
17241
17872
  init_tokens();
17242
17873
  init_gradients();
17243
17874
  defaultDesignRuntimeRules = defineDesignRuntimeRules({
@@ -17273,8 +17904,7 @@ var init_runtimeCompiler = __esmMin((() => {
17273
17904
  color: "surface",
17274
17905
  opacity: .88
17275
17906
  }
17276
- },
17277
- transitionClassName: (transition, fromSurface, toSurface) => transition === "none" ? null : `site-style-transition-${transition}-from-${fromSurface}-to-${toSurface}`
17907
+ }
17278
17908
  });
17279
17909
  defaultComponentRuntimeRules = defineComponentRuntimeRules({
17280
17910
  panelFrames: {
@@ -19013,38 +19643,28 @@ var init_curatedSiteStyles = __esmMin((() => {
19013
19643
  //#region ../theme-core/src/site-styles/pageDesignEditorCapabilities.ts
19014
19644
  var init_pageDesignEditorCapabilities = __esmMin((() => {}));
19015
19645
  //#endregion
19016
- //#region ../theme-core/src/site-styles/lookResolution.ts
19017
- var init_lookResolution = __esmMin((() => {
19018
- init_appearancePresets();
19019
- }));
19020
- var init_siteStyleBlockPolicies = __esmMin((() => {
19021
- init_lookResolution();
19022
- init_appearancePresets();
19646
+ //#region ../theme-core/src/site-styles/pageDesignEditorBoundaries.ts
19647
+ var init_pageDesignEditorBoundaries = __esmMin((() => {
19023
19648
  init_pageDesignIntent();
19024
- init_types$7();
19649
+ init_joinTreatment();
19025
19650
  init_sectionTransitions();
19026
- asPageFlowPresetId("generated-default");
19027
- asSiteStyleId("site-style:south-west-twerk-school");
19028
- asAppearancePresetId("hero-brand-scrim-fixed-frame");
19029
- asLayoutVariantKey("classic");
19030
- asLayoutVariantKey("micro");
19031
- asBoundaryOptionId("break:wave");
19032
19651
  }));
19652
+ //#endregion
19653
+ //#region ../theme-core/src/site-styles/pageDesignEditorModel.ts
19033
19654
  var init_pageDesignEditorModel = __esmMin((() => {
19034
19655
  init_curatedSiteStyles();
19035
19656
  init_lookResolution();
19036
19657
  init_siteStyleBlockPolicies();
19037
19658
  init_pageDesignIntent();
19038
- init_types$7();
19659
+ init_pageFlowPresets();
19660
+ init_pageDesignEditorBoundaries();
19039
19661
  init_sectionTransitions();
19040
- asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
19041
19662
  })), blockDesignFallback;
19042
19663
  var init_resolver$1 = __esmMin((() => {
19043
19664
  init_types$7();
19044
19665
  blockDesignFallback = {
19045
19666
  sectionSurface: "base",
19046
19667
  contentFrame: plainFrame,
19047
- transitionAfter: "none",
19048
19668
  sectionHeight: "default",
19049
19669
  heroLegibility: "none",
19050
19670
  imageSurfaceTreatment: { kind: "none" },
@@ -19055,7 +19675,7 @@ var init_resolver$1 = __esmMin((() => {
19055
19675
  accordionIconTreatment: null,
19056
19676
  composition: null
19057
19677
  };
19058
- blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.transitionAfter, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
19678
+ blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
19059
19679
  }));
19060
19680
  //#endregion
19061
19681
  //#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
@@ -19124,13 +19744,6 @@ var init_headerRecompile = __esmMin((() => {
19124
19744
  init_siteChromeNavPreferences();
19125
19745
  }));
19126
19746
  //#endregion
19127
- //#region ../theme-core/src/site-styles/runtimeBackgroundResolution.ts
19128
- var init_runtimeBackgroundResolution = __esmMin((() => {
19129
- init_boxBackgroundSchema();
19130
- init_surfaces();
19131
- init_rawStyleFields();
19132
- }));
19133
- //#endregion
19134
19747
  //#region ../theme-core/src/site-styles/siteStyleThemeCompiler.ts
19135
19748
  var init_siteStyleThemeCompiler = __esmMin((() => {
19136
19749
  init_schema$3();
@@ -19152,8 +19765,8 @@ var init_previewCustomization = __esmMin((() => {}));
19152
19765
  //#endregion
19153
19766
  //#region ../theme-core/src/site-styles/previewCompiler.ts
19154
19767
  var init_previewCompiler = __esmMin((() => {
19768
+ init_sectionTransitions();
19155
19769
  init_schema$3();
19156
- init_tokens();
19157
19770
  init_curated();
19158
19771
  init_concretePalette();
19159
19772
  init_curatedSiteStyles();
@@ -19162,7 +19775,6 @@ var init_previewCompiler = __esmMin((() => {
19162
19775
  init_headerRecompile();
19163
19776
  init_siteChromeNavPreferences();
19164
19777
  init_runtimeCompiler();
19165
- init_rawStyleFields();
19166
19778
  init_runtimeBackgroundResolution();
19167
19779
  init_siteStyleThemeCompiler();
19168
19780
  init_buttonSelectionCompiler();
@@ -19170,6 +19782,7 @@ var init_previewCompiler = __esmMin((() => {
19170
19782
  init_pageDesignEditorModel();
19171
19783
  init_pageDesignIntent();
19172
19784
  init_previewCustomization();
19785
+ init_joinTreatment();
19173
19786
  init_types$7();
19174
19787
  }));
19175
19788
  //#endregion
@@ -19273,11 +19886,13 @@ var init_generatedDesignPipelineHelpers = __esmMin((() => {
19273
19886
  //#endregion
19274
19887
  //#region ../theme-core/src/site-styles/generatedDesignPipeline.ts
19275
19888
  var init_generatedDesignPipeline = __esmMin((() => {
19889
+ init_compositionBudget();
19276
19890
  init_generatedSchemas();
19277
19891
  init_siteStyleBlockPolicies();
19278
19892
  init_curatedSiteStyles();
19279
19893
  init_lookResolution();
19280
19894
  init_headerOpeningSection();
19895
+ init_joinTreatment();
19281
19896
  init_resolver$1();
19282
19897
  init_runtimeCompiler();
19283
19898
  init_generatedDesignPipelineHelpers();
@@ -19551,6 +20166,7 @@ var init_site_styles = __esmMin((() => {
19551
20166
  init_headerRecompile();
19552
20167
  init_headerOpeningForeground();
19553
20168
  init_headerOpeningSection();
20169
+ init_joinTreatment();
19554
20170
  init_lookResolution();
19555
20171
  init_lookOptionGroups();
19556
20172
  init_logoBranding();
@@ -19570,6 +20186,7 @@ var init_site_styles = __esmMin((() => {
19570
20186
  init_runtimeCompiler();
19571
20187
  init_runtimeBackgroundResolution();
19572
20188
  init_sectionTransitions();
20189
+ init_sectionBoundaryComposition();
19573
20190
  init_siteChromeBackgrounds();
19574
20191
  init_siteChromeNavPreferences();
19575
20192
  init_siteStyleThemeCompiler();
@@ -19577,6 +20194,7 @@ var init_site_styles = __esmMin((() => {
19577
20194
  init_sourceCatalogs();
19578
20195
  init_styleTags();
19579
20196
  init_tokenRecipes();
20197
+ init_transitionCatalogue();
19580
20198
  init_siteStyleTypography();
19581
20199
  init_themeParity();
19582
20200
  init_types$7();
@@ -19808,18 +20426,16 @@ var init_footer = __esmMin((() => {
19808
20426
  init_generateFooterCss();
19809
20427
  }));
19810
20428
  //#endregion
20429
+ //#region ../theme-core/src/layout/boundaryCss.ts
20430
+ var init_boundaryCss = __esmMin((() => {
20431
+ init_sectionTransitions();
20432
+ init_transitionCatalogue();
20433
+ }));
20434
+ //#endregion
19811
20435
  //#region ../theme-core/src/layout/generateLayoutCss.ts
19812
- function svgDataUrl(svg) {
19813
- return `data:image/svg+xml,${encodeURIComponent(svg)}`;
19814
- }
19815
20436
  var init_generateLayoutCss = __esmMin((() => {
19816
20437
  init_breakpoints();
19817
- init_sectionTransitions();
19818
- svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V46C130 55 260 24 420 30C590 36 690 62 860 42C1035 21 1160 47 1305 36C1365 31 1415 33 1440 38V72H0Z' fill='white'/></svg>");
19819
- svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V42C120 24 240 24 360 42C480 60 600 60 720 42C840 24 960 24 1080 42C1200 60 1320 60 1440 42V72H0Z' fill='white'/></svg>");
19820
- svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V43C180 32 300 32 480 43C660 54 780 54 960 43C1140 32 1260 32 1440 43V72H0Z' fill='white'/></svg>");
19821
- svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V44C90 14 270 14 360 44C450 74 630 74 720 44C810 14 990 14 1080 44C1170 74 1350 74 1440 44V72H0Z' fill='white'/></svg>");
19822
- svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V39C115 31 205 54 340 48C505 41 610 16 760 33C920 51 1015 64 1160 44C1280 27 1375 35 1440 50V72H0Z' fill='white'/></svg>");
20438
+ init_boundaryCss();
19823
20439
  }));
19824
20440
  //#endregion
19825
20441
  //#region ../theme-core/src/layout/index.ts
@@ -20511,16 +21127,22 @@ var init_ResponsiveScope = __esmMin((() => {
20511
21127
  var init_fonts = __esmMin((() => {}));
20512
21128
  //#endregion
20513
21129
  //#region ../theme-core/src/buttons/core.ts
20514
- var init_core$1 = __esmMin((() => {
21130
+ var init_core$2 = __esmMin((() => {
20515
21131
  init_resolveButtonColourStates();
20516
21132
  init_resolvedButtonCss();
20517
21133
  init_types$13();
20518
21134
  }));
21135
+ //#endregion
21136
+ //#region ../theme-core/src/inputs/core.ts
21137
+ var init_core$1 = __esmMin((() => {
21138
+ init_colorStyles();
21139
+ }));
20519
21140
  var init_buildThemeRuntimeFromBridge = __esmMin((() => {
20520
21141
  init_shadow();
20521
21142
  init_customCss();
20522
- init_core$1();
20523
21143
  init_core$2();
21144
+ init_core$3();
21145
+ init_core$1();
20524
21146
  init_status();
20525
21147
  init_typography$1();
20526
21148
  init_blocks$2();
@@ -21054,7 +21676,8 @@ var init_schema = __esmMin((() => {
21054
21676
  "eventCategories",
21055
21677
  "eventSeries",
21056
21678
  "venues",
21057
- "staffMembers"
21679
+ "staffMembers",
21680
+ "appointmentServiceCategories"
21058
21681
  ];
21059
21682
  mediaDeliverySchema = z.object({
21060
21683
  sizes: z.string().optional(),
@@ -25397,9 +26020,7 @@ function navRow(opts) {
25397
26020
  rel: { $bind: { from: `${childItemName}.rel` } },
25398
26021
  "data-active": { $bind: { from: `${childItemName}.active` } }
25399
26022
  }, [text({ as: "span" }, bind$1(`${childItemName}.label`))], repeat(`${itemName}.children`, childItemName));
25400
- const dropdown = el$1("div", { className: "nav-dropdown rb-relative" }, [button({
25401
- type: "button",
25402
- variantId: "",
26023
+ const dropdown = el$1("div", { className: "nav-dropdown rb-relative" }, [el$1("headerControl", {
25403
26024
  className: prependClassName("nav-dropdown-trigger", linkClassName),
25404
26025
  "aria-haspopup": "menu",
25405
26026
  "aria-expanded": "false",
@@ -25467,9 +26088,7 @@ function navColumn(opts) {
25467
26088
  const dropdown = el$1("div", {
25468
26089
  className: "nav-mobile-dropdown",
25469
26090
  "data-nav-mobile-dropdown": "true"
25470
- }, [button({
25471
- type: "button",
25472
- variantId: "",
26091
+ }, [el$1("headerControl", {
25473
26092
  className: triggerClassName,
25474
26093
  "aria-expanded": "false",
25475
26094
  "aria-controls": childrenId,
@@ -32180,6 +32799,57 @@ var init_layout$2 = __esmMin((() => {
32180
32799
  ];
32181
32800
  }));
32182
32801
  //#endregion
32802
+ //#region ../blocks/src/system/transforms/registry/chromeLogo.ts
32803
+ /** The brand foreground shares the logo's surface; navigation may own a separate capsule. */
32804
+ function chromeSurfaceTextToken(surface, theme, palette) {
32805
+ switch (surface) {
32806
+ case "header-root": {
32807
+ const header = theme.header;
32808
+ const foreground = resolveHeaderRootForeground(header, palette, resolveHeaderVisualStyles(header).isTransparent);
32809
+ return foreground.kind === "known" ? foreground.roles.text : resolveHeaderLeafTextColor(header);
32810
+ }
32811
+ case "header-mobile-panel": return theme.header?.dropdownStyle?.textColor ?? "text";
32812
+ case "footer-root": {
32813
+ const foreground = resolveFooterRootForeground(theme.footer, palette);
32814
+ return foreground.kind === "known" ? foreground.roles.text : void 0;
32815
+ }
32816
+ }
32817
+ }
32818
+ function readChromeTheme(viewModel) {
32819
+ return asPartialObject(asPartialObject(viewModel?.["$root"])?.theme) ?? {};
32820
+ }
32821
+ function resolveChromeSurfaceTone(surface, context) {
32822
+ return surfaceToneFromForegroundToken(context.theme.palette, chromeSurfaceTextToken(surface, readChromeTheme(context.viewModel), context.theme.palette));
32823
+ }
32824
+ var chromeLogoSchema, chromeLogoTransform, chromeLogoTransforms;
32825
+ var init_chromeLogo = __esmMin((() => {
32826
+ init_surfaces();
32827
+ init_core();
32828
+ init_layout$2();
32829
+ init_surfaceForegroundStyles();
32830
+ chromeLogoSchema = z.object({ surface: z.enum([
32831
+ "header-root",
32832
+ "header-mobile-panel",
32833
+ "footer-root"
32834
+ ]) });
32835
+ chromeLogoTransform = {
32836
+ id: "layout.chromeLogo",
32837
+ kind: "formatter",
32838
+ summary: "Select the light- or dark-background site logo for a header or footer surface",
32839
+ schema: chromeLogoSchema,
32840
+ run: (value, options, context) => {
32841
+ const content = asPartialObject(value);
32842
+ const variants = asPartialObject(content?.logoVariants);
32843
+ if (!variants) return content?.logo ?? null;
32844
+ return selectLogoVariant(resolveChromeSurfaceTone(options.surface, context), {
32845
+ forLightBackgrounds: variants.forLightBackgrounds ?? null,
32846
+ forDarkBackgrounds: variants.forDarkBackgrounds ?? null
32847
+ });
32848
+ }
32849
+ };
32850
+ chromeLogoTransforms = [chromeLogoTransform];
32851
+ }));
32852
+ //#endregion
32183
32853
  //#region ../blocks/src/system/transforms/registry/headerRuntime.ts
32184
32854
  var headerRuntimeContractTransform, headerRuntimeTransforms;
32185
32855
  var init_headerRuntime = __esmMin((() => {
@@ -32393,7 +33063,7 @@ var init_shared$3 = __esmMin((() => {
32393
33063
  }));
32394
33064
  //#endregion
32395
33065
  //#region ../blocks/src/system/blocks/site-header.ts
32396
- var whenTransformed, logoRow, centeredLogoRow, createNavRow, headerCta, mobileCta, mobileToggleIcon, mobileToggleButton, mobileOverlayToggleButton, mobileNavList, mobileOverlayHeader, mobileOverlayBody, mobileOverlay, mobileHeaderBar, classicLayout, centeredLayout, floatingLayout, headerLayout, siteHeaderManifest, siteHeaderBlockDefinition;
33066
+ var whenTransformed, bindChromeLogo, createLogoRow, logoRow, centeredLogoRow, createNavRow, headerCta, mobileCta, mobileToggleIcon, mobileToggleButton, mobileOverlayToggleButton, mobileNavList, mobileOverlayHeader, mobileOverlayBody, mobileOverlay, mobileHeaderBar, classicLayout, centeredLayout, floatingLayout, headerLayout, siteHeaderManifest, siteHeaderBlockDefinition;
32397
33067
  var init_site_header = __esmMin((() => {
32398
33068
  init_builder$1();
32399
33069
  init_fragments$1();
@@ -32412,46 +33082,37 @@ var init_site_header = __esmMin((() => {
32412
33082
  equals
32413
33083
  }
32414
33084
  });
32415
- logoRow = link({
33085
+ bindChromeLogo = (surface) => bind$1("content", { transforms: [{
33086
+ id: "layout.chromeLogo",
33087
+ options: { surface }
33088
+ }] });
33089
+ createLogoRow = (surface) => link({
32416
33090
  href: "/",
32417
33091
  className: bindProp("$root.theme.header.logo", {
32418
33092
  transforms: pipe(tx("layout.headerLogoClass")),
32419
33093
  fallback: "header-logo rb-flex rb-min-w-0 rb-items-center rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80"
32420
33094
  })
32421
- }, [
32422
- media({ className: bindProp("$root.theme.header.logo", {
32423
- transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300" })),
32424
- fallback: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
32425
- }) }, when("content.logo"), bind$1("content.logo")),
32426
- stack({ className: "rb-contents" }, [media({ className: bindProp("$root.theme.header.logo", {
32427
- transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300" })),
32428
- fallback: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
32429
- }) }, when("site.logo"), bind$1("site.logo"))], when("content.logo", { not: true })),
32430
- text({
32431
- as: "strong",
32432
- className: "header-logo-text rb-truncate"
32433
- }, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind$1("site.title", { fallback: "Your Site" }))
32434
- ]);
33095
+ }, [media({ className: bindProp("$root.theme.header.logo", {
33096
+ transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300" })),
33097
+ fallback: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
33098
+ }) }, when("content.logo"), bindChromeLogo(surface)), text({
33099
+ as: "strong",
33100
+ className: "header-logo-text rb-truncate"
33101
+ }, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind$1("site.title", { fallback: "Your Site" }))]);
33102
+ logoRow = createLogoRow("header-root");
32435
33103
  centeredLogoRow = link({
32436
33104
  href: "/",
32437
33105
  className: bindProp("$root.theme.header.logo", {
32438
33106
  transforms: pipe(tx("layout.headerLogoClass", { base: "header-logo rb-flex rb-items-center rb-justify-center rb-gap-3 rb-text-center rb-no-underline rb-transition-opacity rb-hover-opacity-80" })),
32439
33107
  fallback: "header-logo rb-flex rb-items-center rb-justify-center rb-gap-3 rb-text-center rb-no-underline rb-transition-opacity rb-hover-opacity-80"
32440
33108
  })
32441
- }, [
32442
- media({ className: bindProp("$root.theme.header.logo", {
32443
- transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300" })),
32444
- fallback: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
32445
- }) }, when("content.logo"), bind$1("content.logo")),
32446
- stack({ className: "rb-contents" }, [media({ className: bindProp("$root.theme.header.logo", {
32447
- transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300" })),
32448
- fallback: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
32449
- }) }, when("site.logo"), bind$1("site.logo"))], when("content.logo", { not: true })),
32450
- text({
32451
- as: "strong",
32452
- className: "header-logo-text"
32453
- }, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind$1("site.title", { fallback: "Your Site" }))
32454
- ]);
33109
+ }, [media({ className: bindProp("$root.theme.header.logo", {
33110
+ transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300" })),
33111
+ fallback: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
33112
+ }) }, when("content.logo"), bindChromeLogo("header-root")), text({
33113
+ as: "strong",
33114
+ className: "header-logo-text"
33115
+ }, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind$1("site.title", { fallback: "Your Site" }))]);
32455
33116
  createNavRow = (className, align = "end") => navRow({
32456
33117
  className: `${className} header-nav-row`,
32457
33118
  align,
@@ -32491,10 +33152,8 @@ var init_site_header = __esmMin((() => {
32491
33152
  }
32492
33153
  ]);
32493
33154
  mobileToggleButton = {
32494
- type: "button",
33155
+ type: "headerControl",
32495
33156
  props: {
32496
- type: "button",
32497
- variantId: "",
32498
33157
  className: `nav-mobile-toggle ${mobileOnlyDisplay("inline-flex")} rb-h-10 rb-w-10 rb-items-center rb-justify-center rb-rounded-md transition-theme-standard`,
32499
33158
  "aria-label": "Open menu",
32500
33159
  "aria-expanded": "false",
@@ -32504,10 +33163,8 @@ var init_site_header = __esmMin((() => {
32504
33163
  children: [mobileToggleIcon]
32505
33164
  };
32506
33165
  mobileOverlayToggleButton = {
32507
- type: "button",
33166
+ type: "headerControl",
32508
33167
  props: {
32509
- type: "button",
32510
- variantId: "",
32511
33168
  className: "nav-mobile-toggle rb-inline-flex rb-h-10 rb-w-10 rb-items-center rb-justify-center rb-rounded-md transition-theme-standard",
32512
33169
  "aria-label": "Open menu",
32513
33170
  "aria-expanded": "false",
@@ -32531,7 +33188,7 @@ var init_site_header = __esmMin((() => {
32531
33188
  align: "center",
32532
33189
  justify: "between",
32533
33190
  style: borderColorStyle("border")
32534
- }, [logoRow, mobileOverlayToggleButton]);
33191
+ }, [createLogoRow("header-mobile-panel"), mobileOverlayToggleButton]);
32535
33192
  mobileOverlayBody = stack({
32536
33193
  className: "rb-flex-1 rb-px-6 rb-py-6",
32537
33194
  gap: "md",
@@ -32736,7 +33393,10 @@ var init_site_footer = __esmMin((() => {
32736
33393
  options: { base: "rb-h-10 rb-w-auto" }
32737
33394
  }],
32738
33395
  fallback: "rb-h-10 rb-w-auto"
32739
- } } }, when("module.showLogo", { equals: true }), when("content.logo"), bind$1("content.logo")), text({
33396
+ } } }, when("module.showLogo", { equals: true }), when("content.logo"), bind$1("content", { transforms: [{
33397
+ id: "layout.chromeLogo",
33398
+ options: { surface: "footer-root" }
33399
+ }] })), text({
32740
33400
  as: "strong",
32741
33401
  className: "footer-logo-text rb-nav-text"
32742
33402
  }, when("module.showTitle", { equals: true }), bind$1("site.title", { fallback: "Your Site" }))], when("module.kind", { equals: "brand" }));
@@ -34478,6 +35138,7 @@ var init_appointment_services = __esmMin((() => {
34478
35138
  init_fragments$1();
34479
35139
  init_boxStyles$1();
34480
35140
  init_defineBlock();
35141
+ init_schema();
34481
35142
  appointmentServicesManifest = createBlockManifest({
34482
35143
  id: "block.appointment-services",
34483
35144
  version: "1.0.0",
@@ -34502,6 +35163,15 @@ var init_appointment_services = __esmMin((() => {
34502
35163
  required: false,
34503
35164
  ui: { intent: "content" }
34504
35165
  },
35166
+ createSiteOptionSelectField({
35167
+ id: "categoryId",
35168
+ label: "Category",
35169
+ description: "Show one category (with its heading and intro), or leave it on All categories to show everything grouped.",
35170
+ required: false,
35171
+ multiple: false,
35172
+ optionSource: "appointmentServiceCategories",
35173
+ ui: { intent: "content" }
35174
+ }),
34505
35175
  sectionStylesField({
34506
35176
  id: "_sectionStyles",
34507
35177
  label: "Section styles",
@@ -34536,6 +35206,7 @@ var init_appointment_services = __esmMin((() => {
34536
35206
  richText({ className: "rb-prose rb-max-w-none" }, bind$1("content.description"), when("content.description")),
34537
35207
  el$1("appointment-services", {
34538
35208
  sectionHeading: { $bind: { from: "content.heading" } },
35209
+ categoryId: { $bind: { from: "content.categoryId" } },
34539
35210
  services: { $bind: { from: "data.services" } },
34540
35211
  pathname: { $bind: { from: "$root.pathname" } },
34541
35212
  servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
@@ -35024,6 +35695,15 @@ var init_event_registration_shared = __esmMin((() => {
35024
35695
  }).nullable();
35025
35696
  }));
35026
35697
  //#endregion
35698
+ //#region ../blocks/src/system/runtime/api/readAuthority.ts
35699
+ var browserReadAuthoritySchema;
35700
+ var init_readAuthority = __esmMin((() => {
35701
+ browserReadAuthoritySchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("published") }).strict(), z.object({
35702
+ kind: z.literal("preview"),
35703
+ token: z.string().min(1)
35704
+ }).strict()]);
35705
+ }));
35706
+ //#endregion
35027
35707
  //#region ../blocks/src/system/runtime/nodes/event-registration/eventScope.ts
35028
35708
  function resolveEventRegistrationScope(context) {
35029
35709
  const occurrenceSeriesId = context.occurrenceContext?.seriesId;
@@ -35411,6 +36091,7 @@ function isRecord$6(value) {
35411
36091
  }
35412
36092
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, EVENT_REGISTRATION_SHELL_STEP_LABELS, eventRegistrationPublicEventSchema, eventRegistrationHydrationSchemaShape, eventRegistrationEventSourceSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationBlockRuntime;
35413
36093
  var init_event_registration_interactive = __esmMin((() => {
36094
+ init_readAuthority();
35414
36095
  init_schemas();
35415
36096
  init_runGrouping();
35416
36097
  init_shop_shared();
@@ -35463,6 +36144,7 @@ var init_event_registration_interactive = __esmMin((() => {
35463
36144
  apiBaseUrl: z.string().optional(),
35464
36145
  portalToken: z.string().nullable().optional(),
35465
36146
  previewToken: z.string().nullable().optional(),
36147
+ readAuthority: browserReadAuthoritySchema.optional(),
35466
36148
  ...eventRegistrationHydrationSchemaShape,
35467
36149
  events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
35468
36150
  wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
@@ -35500,6 +36182,7 @@ var init_event_registration_interactive = __esmMin((() => {
35500
36182
  apiBaseUrl: z.string().optional(),
35501
36183
  portalToken: z.string().nullable().optional(),
35502
36184
  previewToken: z.string().nullable().optional(),
36185
+ readAuthority: browserReadAuthoritySchema.optional(),
35503
36186
  stage: previewStageSchema.optional()
35504
36187
  });
35505
36188
  eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
@@ -35676,6 +36359,7 @@ var init_event_registration = __esmMin((() => {
35676
36359
  text({ as: "h2" }, bind$1("content.heading"), when("content.heading")),
35677
36360
  richText({ className: "rb-prose rb-max-w-none" }, bind$1("content.description"), when("content.description")),
35678
36361
  eventRegistration(withApiBindings$1({
36362
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
35679
36363
  occurrenceContext: { $bind: { from: "$root.occurrenceContext" } },
35680
36364
  subject: { $bind: { from: "$root.subject" } },
35681
36365
  portalToken: { $bind: {
@@ -36392,7 +37076,6 @@ function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date())
36392
37076
  return {
36393
37077
  calendarWindow: source.calendarWindow ?? void 0,
36394
37078
  siteId: source.siteId,
36395
- stage: source.stage,
36396
37079
  prefetchedEvents: source.events != null,
36397
37080
  eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
36398
37081
  filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
@@ -36405,6 +37088,7 @@ function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date())
36405
37088
  }
36406
37089
  var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilterSourceSchemaShape, eventCollectionSourceSchemaShape, eventCollectionDisplaySchemaShape, eventCollectionHydrationSchema, init_eventCollectionContract = __esmMin((() => {
36407
37090
  init_eventSelection();
37091
+ init_readAuthority();
36408
37092
  init_calendarWindow();
36409
37093
  init_cards();
36410
37094
  init_src$4();
@@ -36432,6 +37116,7 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
36432
37116
  events: z.array(publicEventSchema).nullable().optional(),
36433
37117
  siteId: z.string(),
36434
37118
  apiBaseUrl: z.string().optional(),
37119
+ readAuthority: browserReadAuthoritySchema.optional(),
36435
37120
  stage: previewStageSchema.optional(),
36436
37121
  listLayout: eventLayoutSchema.optional(),
36437
37122
  listColumns: columnOptionSchema.optional(),
@@ -36484,7 +37169,6 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
36484
37169
  eventCollectionHydrationSchema = z.object({
36485
37170
  siteId: z.string(),
36486
37171
  calendarWindow: calendarWindowPageSchema.optional(),
36487
- stage: previewStageSchema.optional(),
36488
37172
  prefetchedEvents: z.boolean(),
36489
37173
  eventSurface: eventSurfaceScopeSchema$1,
36490
37174
  filterEventPresets: z.string().nullable(),
@@ -36510,6 +37194,7 @@ var init_EventListing_interactive = __esmMin((() => {
36510
37194
  init_contract_schemas();
36511
37195
  init_listOptions();
36512
37196
  init_eventCollectionContract();
37197
+ init_readAuthority();
36513
37198
  cardOrientationSchema = z.enum(["vertical", "horizontal"]);
36514
37199
  eventSurfaceScopeSchema = z.enum(eventSurfaceScopeValues);
36515
37200
  eventScheduleScopeSchema = z.enum(eventScheduleScopeValues);
@@ -36517,6 +37202,7 @@ var init_EventListing_interactive = __esmMin((() => {
36517
37202
  events: z.array(publicEventSchema).nullable().optional(),
36518
37203
  siteId: z.string(),
36519
37204
  apiBaseUrl: z.string().optional(),
37205
+ readAuthority: browserReadAuthoritySchema.optional(),
36520
37206
  stage: previewStageSchema.optional(),
36521
37207
  layout: eventLayoutSchema.optional(),
36522
37208
  columns: columnOptionSchema.optional(),
@@ -36557,7 +37243,6 @@ var init_EventListing_interactive = __esmMin((() => {
36557
37243
  });
36558
37244
  eventListingHydrationSchema = z.object({
36559
37245
  siteId: z.string(),
36560
- stage: previewStageSchema.optional(),
36561
37246
  eventsPerPage: eventPageSizeSchema,
36562
37247
  paginationAction: eventListPaginationActionSchema,
36563
37248
  showFilters: z.boolean(),
@@ -36580,6 +37265,7 @@ var init_EventListing_interactive = __esmMin((() => {
36580
37265
  z.object({
36581
37266
  siteId: z.string(),
36582
37267
  apiBaseUrl: z.string().optional(),
37268
+ readAuthority: browserReadAuthoritySchema.optional(),
36583
37269
  stage: previewStageSchema.optional()
36584
37270
  });
36585
37271
  eventListingBlockRuntime = defineProgressiveBlockRuntime({
@@ -36614,7 +37300,6 @@ var init_EventListing_interactive = __esmMin((() => {
36614
37300
  },
36615
37301
  hydration: {
36616
37302
  siteId: source.siteId,
36617
- stage: source.stage,
36618
37303
  eventsPerPage: pageSize,
36619
37304
  paginationAction: resolveEventListPaginationAction({
36620
37305
  paginationMode: source.paginationMode,
@@ -36874,6 +37559,7 @@ var init_event_listing = __esmMin((() => {
36874
37559
  rootType: "stack",
36875
37560
  rootProps: { gap: "lg" },
36876
37561
  children: [...eventSectionHeaderLayoutNodes(), el$1("event-listing", withApiBindings$1({
37562
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
36877
37563
  events: { $bind: { from: "data.events" } },
36878
37564
  stage: { $bind: {
36879
37565
  from: "$root.previewStage",
@@ -37104,7 +37790,7 @@ function buildEventCalendarDisplay(source) {
37104
37790
  listColumns: source.listColumns ?? source.columns
37105
37791
  }),
37106
37792
  kind: "event-calendar",
37107
- displayMode: normalizeEventCalendarDisplayMode$1(source) ?? "combined",
37793
+ displayMode: resolveEventCalendarReadPlan(source).mode,
37108
37794
  className: source.className ?? null,
37109
37795
  events: (source.events ?? []).slice().sort((left, right) => new Date(left.startsAt).getTime() - new Date(right.startsAt).getTime()),
37110
37796
  boardTitle: normalizeOptionalText(source.boardTitle),
@@ -37117,6 +37803,7 @@ function buildEventCalendarDisplay(source) {
37117
37803
  }
37118
37804
  var eventCalendarSourceSchema, eventCalendarDisplaySchema, eventCalendarHydrationSchema, eventCalendarRenderSchema, eventCalendarBlockRuntime;
37119
37805
  var init_EventCalendar_interactive = __esmMin((() => {
37806
+ init_readAuthority();
37120
37807
  init_events$1();
37121
37808
  init_islands();
37122
37809
  init_runtime$1();
@@ -37153,6 +37840,7 @@ var init_EventCalendar_interactive = __esmMin((() => {
37153
37840
  z.object({
37154
37841
  siteId: z.string(),
37155
37842
  apiBaseUrl: z.string().optional(),
37843
+ readAuthority: browserReadAuthoritySchema.optional(),
37156
37844
  stage: previewStageSchema.optional()
37157
37845
  });
37158
37846
  eventCalendarBlockRuntime = defineProgressiveBlockRuntime({
@@ -37161,13 +37849,16 @@ var init_EventCalendar_interactive = __esmMin((() => {
37161
37849
  source: createZodCodec(eventCalendarSourceSchema),
37162
37850
  render: createZodCodec(eventCalendarRenderSchema)
37163
37851
  },
37164
- buildRender: (source) => ({
37165
- display: buildEventCalendarDisplay(source.calendarWindow && (source.variant ?? source.displayMode ?? "combined") !== "combined" && (source.variant ?? source.displayMode) !== "list" ? {
37166
- ...source,
37167
- events: source.calendarWindow.events
37168
- } : source),
37169
- hydration: buildEventCollectionHydration(source)
37170
- })
37852
+ buildRender: (source) => {
37853
+ const plan = resolveEventCalendarReadPlan(source);
37854
+ return {
37855
+ display: buildEventCalendarDisplay(source.calendarWindow && plan.jobs === "calendar" ? {
37856
+ ...source,
37857
+ events: source.calendarWindow.events
37858
+ } : source),
37859
+ hydration: buildEventCollectionHydration(source)
37860
+ };
37861
+ }
37171
37862
  });
37172
37863
  }));
37173
37864
  //#endregion
@@ -37318,6 +38009,7 @@ var init_event_calendar = __esmMin((() => {
37318
38009
  rootType: "stack",
37319
38010
  rootProps: { gap: "lg" },
37320
38011
  children: [...eventSectionHeaderLayoutNodes({ splitClassName: "event-section-head event-section-head--split" }), el$1("event-calendar", withApiBindings$1({
38012
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
37321
38013
  events: { $bind: { from: "data.events" } },
37322
38014
  calendarWindow: { $bind: { from: "data.calendarWindow" } },
37323
38015
  stage: { $bind: {
@@ -41194,6 +41886,7 @@ var init_shop_interactive = __esmMin((() => {
41194
41886
  init_islands();
41195
41887
  init_runtime$1();
41196
41888
  init_contract_schemas();
41889
+ init_readAuthority();
41197
41890
  shopModeSchema = z.enum([
41198
41891
  "passes-memberships",
41199
41892
  "product-list",
@@ -41241,6 +41934,7 @@ var init_shop_interactive = __esmMin((() => {
41241
41934
  products: z.array(publicProductSchema).nullable().optional(),
41242
41935
  siteId: z.string().optional(),
41243
41936
  apiBaseUrl: z.string().optional(),
41937
+ readAuthority: browserReadAuthoritySchema.optional(),
41244
41938
  stage: previewStageSchema.optional()
41245
41939
  });
41246
41940
  productVariantOptionDisplaySchema = z.object({
@@ -41405,6 +42099,7 @@ var init_shop_interactive = __esmMin((() => {
41405
42099
  z.object({
41406
42100
  siteId: z.string().optional(),
41407
42101
  apiBaseUrl: z.string().optional(),
42102
+ readAuthority: browserReadAuthoritySchema.optional(),
41408
42103
  stage: previewStageSchema.optional()
41409
42104
  });
41410
42105
  shopBlockRuntime = defineProgressiveBlockRuntime({
@@ -41754,6 +42449,7 @@ var init_shop = __esmMin((() => {
41754
42449
  baseClass: "",
41755
42450
  spacing: "spacious",
41756
42451
  children: sectionContainer([shop(withApiBindings$1({
42452
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
41757
42453
  mode: "passes-memberships",
41758
42454
  showPasses: { $bind: {
41759
42455
  from: "content.showPasses",
@@ -41963,6 +42659,7 @@ var init_product_list = __esmMin((() => {
41963
42659
  baseClass: "",
41964
42660
  spacing: "spacious",
41965
42661
  children: sectionContainer([productList(withApiBindings$1({
42662
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
41966
42663
  mode: "product-list",
41967
42664
  heading: { $bind: {
41968
42665
  from: "content.heading",
@@ -42119,6 +42816,7 @@ var init_product_detail = __esmMin((() => {
42119
42816
  baseClass: "",
42120
42817
  spacing: "spacious",
42121
42818
  children: sectionContainer([productDetail(withApiBindings$1({
42819
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
42122
42820
  mode: "product-detail",
42123
42821
  heading: { $bind: {
42124
42822
  from: "content.heading",
@@ -42248,6 +42946,7 @@ var init_cart = __esmMin((() => {
42248
42946
  baseClass: "",
42249
42947
  spacing: "spacious",
42250
42948
  children: sectionContainer([cart(withApiBindings$1({
42949
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
42251
42950
  mode: "cart",
42252
42951
  heading: { $bind: {
42253
42952
  from: "content.heading",
@@ -42344,6 +43043,7 @@ var init_checkout = __esmMin((() => {
42344
43043
  baseClass: "",
42345
43044
  spacing: "spacious",
42346
43045
  children: sectionContainer([checkout(withApiBindings$1({
43046
+ readAuthority: { $bind: { from: "$root.readAuthority" } },
42347
43047
  mode: "checkout",
42348
43048
  heading: { $bind: {
42349
43049
  from: "content.heading",
@@ -45217,8 +45917,8 @@ var init_eventCalendar = __esmMin((() => {
45217
45917
  summary: "Choose the read projection required by the calendar display mode",
45218
45918
  schema: readJobSchema,
45219
45919
  run(value, options) {
45220
- const mode = normalizeEventCalendarDisplayMode$1(asPartialObject(value) ?? {}) ?? "combined";
45221
- return options.job === "calendar" ? mode !== "list" : mode === "list" || mode === "combined";
45920
+ const plan = resolveEventCalendarReadPlan(asPartialObject(value) ?? {});
45921
+ return plan.jobs === "both" || plan.jobs === options.job;
45222
45922
  }
45223
45923
  };
45224
45924
  }));
@@ -45229,6 +45929,7 @@ var init_registry$2 = __esmMin((() => {
45229
45929
  init_core();
45230
45930
  init_formatting();
45231
45931
  init_layout$2();
45932
+ init_chromeLogo();
45232
45933
  init_ui();
45233
45934
  init_media$1();
45234
45935
  init_background();
@@ -45244,6 +45945,7 @@ var init_registry$2 = __esmMin((() => {
45244
45945
  eventCalendarReadProfile,
45245
45946
  ...formattingTransforms,
45246
45947
  ...layoutTransforms,
45948
+ ...chromeLogoTransforms,
45247
45949
  ...uiTransforms,
45248
45950
  ...mediaTransforms,
45249
45951
  ...backgroundTransforms,
@@ -45736,6 +46438,17 @@ function coerceToString(value) {
45736
46438
  return "";
45737
46439
  }
45738
46440
  /**
46441
+ * The appointment-services catalogue (issue 1403) pairs the services with the
46442
+ * site's ordered categories. Both are needed to group them, so that response
46443
+ * is passed through whole; any other `{ services }` wrapper is unwrapped.
46444
+ */
46445
+ function coerceServicesPayload(record) {
46446
+ return Array.isArray(record.services) && Array.isArray(record.categories) ? {
46447
+ services: record.services,
46448
+ categories: record.categories
46449
+ } : record.services;
46450
+ }
46451
+ /**
45739
46452
  * Extract data from API response.
45740
46453
  * Unwraps common response wrappers: { data }, { form }, { entries }, { services }, { teamMembers }
45741
46454
  *
@@ -45750,7 +46463,7 @@ function coercePayload(payload) {
45750
46463
  if ("data" in record && typeof record.data !== "function") return record.data;
45751
46464
  if ("form" in record && typeof record.form !== "function") return record.form;
45752
46465
  if ("entries" in record && typeof record.entries !== "function") return record.entries;
45753
- if ("services" in record && typeof record.services !== "function") return record.services;
46466
+ if ("services" in record && typeof record.services !== "function") return coerceServicesPayload(record);
45754
46467
  if ("teamMembers" in record && typeof record.teamMembers !== "function") return record.teamMembers;
45755
46468
  }
45756
46469
  return payload;
@@ -46759,7 +47472,12 @@ var init_appointmentSetup = __esmMin((() => {
46759
47472
  venue: appointmentSetupVenueChoiceSchema,
46760
47473
  timezone: z.string().trim().min(1).nullable(),
46761
47474
  payment: appointmentSetupPaymentDraftSchema,
46762
- assignment: appointmentSetupServiceAssignmentDraftSchema
47475
+ assignment: appointmentSetupServiceAssignmentDraftSchema,
47476
+ /**
47477
+ * The service's category, or null for "Other" (issue 1403). Omitted leaves
47478
+ * an existing service's category alone and puts a new one in "Other".
47479
+ */
47480
+ categoryId: z.string().uuid().nullable().optional()
46763
47481
  }).superRefine((service, ctx) => {
46764
47482
  if (service.payment.kind !== "free" && (service.priceAmount === null || service.priceAmount <= 0)) ctx.addIssue({
46765
47483
  code: "custom",
@@ -48147,7 +48865,7 @@ async function loadPageWithDeps(deps, params) {
48147
48865
  });
48148
48866
  return {
48149
48867
  page: pageOutline,
48150
- runtimeBoundaries: pageData.runtimeBoundaries,
48868
+ runtimeJoins: pageData.runtimeJoins,
48151
48869
  theme: requireSdkTheme(support.theme, siteId),
48152
48870
  sdkConfig: support.sdkConfig,
48153
48871
  siteId,