@riverbankcms/sdk 0.145.0 → 0.147.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/CHANGELOG.md +29 -0
  2. package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
  3. package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +311 -186
  6. package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +3808 -2395
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1122 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +102 -0
  9. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  10. package/dist/_dts/api/src/bookingConfig.d.ts +24 -1
  11. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +11 -26
  12. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  13. package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
  14. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  15. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
  17. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  18. package/dist/_dts/api/src/bookings.d.ts +1 -0
  19. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  20. package/dist/_dts/api/src/communications.d.ts +20 -4
  21. package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
  22. package/dist/_dts/api/src/endpoints.d.ts +816 -655
  23. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  24. package/dist/_dts/api/src/eventManagementContracts.d.ts +72 -4
  25. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  26. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  27. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  28. package/dist/_dts/api/src/index.d.ts +9 -2
  29. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  30. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  31. package/dist/_dts/api/src/launchReadiness.d.ts +19 -6
  32. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  33. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  34. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  35. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  36. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +57 -0
  37. package/dist/_dts/api/src/occurrenceScheduling.d.ts +29 -0
  38. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  39. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  40. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
  41. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  42. package/dist/_dts/api/src/sdk-event-upsert.d.ts +55 -1
  43. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  44. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  45. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  46. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  47. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  48. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  49. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  50. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  51. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  52. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  53. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  54. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +6 -49
  55. package/dist/_dts/api/src/siteOnboarding.d.ts +72 -18
  56. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  57. package/dist/_dts/api/src/types.d.ts +7 -1
  58. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  59. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  60. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
  61. package/dist/_dts/blocks/src/index.d.ts +2 -0
  62. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +29 -1
  63. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -1
  64. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  65. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  66. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  67. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
  70. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
  71. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
  72. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
  73. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
  76. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  79. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
  96. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
  97. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +34 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  101. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  103. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +4 -1
  104. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  105. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  106. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  107. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  108. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  109. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  110. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  111. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  112. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  113. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  114. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  115. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
  116. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  117. package/dist/_dts/core/src/editor-state.d.ts +2 -7
  118. package/dist/_dts/core/src/index.d.ts +2 -1
  119. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  120. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  121. package/dist/_dts/core/src/mailing-list-submission.d.ts +9 -1
  122. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  123. package/dist/_dts/core/src/participants.d.ts +0 -38
  124. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  125. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  126. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +151 -24
  127. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  128. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  129. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  130. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
  131. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  132. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  133. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +5 -5
  134. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
  135. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  136. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
  137. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  138. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
  139. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  140. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  141. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  142. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
  143. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  144. package/dist/_dts/sdk/src/version.d.ts +1 -1
  145. package/dist/_dts/surfaces/src/index.d.ts +9 -0
  146. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  147. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  148. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  149. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  150. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  151. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  152. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  153. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  154. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  156. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  157. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  158. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  159. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  160. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  161. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  162. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  163. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  164. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  165. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  166. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  167. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  168. package/dist/_dts/ui/src/badge.d.ts +2 -1
  169. package/dist/_dts/ui/src/button.d.ts +1 -1
  170. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  171. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  172. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  173. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  174. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  175. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  176. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  177. package/dist/_dts/ui/src/index.d.ts +4 -1
  178. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  179. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  180. package/dist/_dts/ui/src/popover.d.ts +7 -1
  181. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  182. package/dist/_dts/ui/src/surface.d.ts +1 -1
  183. package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
  184. package/dist/client/CheckboxChoice-B33MqoUo.mjs +24 -0
  185. package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
  186. package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
  187. package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
  188. package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
  189. package/dist/client/{scrollToBlock-CWs8EIdo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
  190. package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
  191. package/dist/client/{accordion-BcNF9TjX.mjs → accordion-CoT5g7zo.mjs} +1 -1
  192. package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-BWxB46xD.mjs} +251 -150
  193. package/dist/client/bookings.mjs +415 -234
  194. package/dist/client/{carousel-CTdF6e0V.mjs → carousel-DtNYWFd3.mjs} +2 -2
  195. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  196. package/dist/client/{cart-pGtyf_XU.mjs → cart-z4qZih1Y.mjs} +3 -3
  197. package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-DpL7euFH.mjs} +3 -3
  198. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
  199. package/dist/client/client.mjs +3721 -2220
  200. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  201. package/dist/client/{context-BFeY_Wbm.mjs → context-C8TinPJc.mjs} +1 -1
  202. package/dist/client/{dates-BhwVSxDg.mjs → dates-vwwxTeB0.mjs} +2 -3
  203. package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
  204. package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
  205. package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
  206. package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-DajjWgOv.mjs} +4 -4
  207. package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-DMq9gMA-.mjs} +121 -54
  208. package/dist/client/{form-Dodt8Y8t.mjs → form-Qf6qTbos.mjs} +136 -105
  209. package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-D7qJrqFX.mjs} +3 -3
  210. package/dist/client/hooks.mjs +1148 -179
  211. package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-CCF9-t_0.mjs} +4 -4
  212. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  213. package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
  214. package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-DzCLSP4S.mjs} +206 -104
  215. package/dist/client/{pricing-BOU0_Hai.mjs → pricing-Cgxv2KLC.mjs} +1 -1
  216. package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-ru9w5GHx.mjs} +3 -3
  217. package/dist/client/{productList-D-mItx1n.mjs → productList-zaapKSl-.mjs} +3 -3
  218. package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-CwvvNOHx.mjs} +91 -28
  219. package/dist/client/rendering/client.mjs +1441 -826
  220. package/dist/client/rendering/islands.mjs +19 -19
  221. package/dist/client/rendering.mjs +3652 -2005
  222. package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
  223. package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
  224. package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
  225. package/dist/client/{shop-Dufw7N7o.mjs → shop-mktkXvbV.mjs} +7 -7
  226. package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-TqExh235.mjs} +5 -5
  227. package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
  228. package/dist/preview-next/before-render.mjs +490 -153
  229. package/dist/preview-next/client/runtime.mjs +4 -4
  230. package/dist/preview-next/editor-base.css +64 -2
  231. package/dist/preview-next/editor-chrome.css +7 -4
  232. package/dist/preview-next/keepAlive.mjs +450 -153
  233. package/dist/preview-next/middleware.mjs +451 -153
  234. package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-C_EHQ5XA.mjs} +475 -153
  235. package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
  236. package/dist/{separator-EvdCAn4V.mjs → separator-C9qDP95Z.mjs} +1 -1
  237. package/dist/server/components.mjs +4957 -3509
  238. package/dist/server/config-validation.mjs +1115 -189
  239. package/dist/server/config.mjs +1115 -189
  240. package/dist/server/data.mjs +1113 -188
  241. package/dist/server/index.mjs +492 -154
  242. package/dist/server/navigation.mjs +13 -2
  243. package/dist/server/next.mjs +4798 -3462
  244. package/dist/server/page-converter.mjs +143 -89
  245. package/dist/server/prebuild.mjs +1 -1
  246. package/dist/server/rendering/server.mjs +3862 -2414
  247. package/dist/server/rendering.mjs +5648 -4154
  248. package/dist/server/routing.mjs +1223 -329
  249. package/dist/server/server.mjs +1172 -314
  250. package/dist/server/theme-bridge.mjs +533 -128
  251. package/dist/server/theme.mjs +5 -1
  252. package/dist/styles/index.css +218 -69
  253. package/package.json +1 -1
  254. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
@@ -1137,6 +1137,9 @@ var init_non_empty_array = __esmMin((() => {}));
1137
1137
  //#region ../core/src/editor-state.ts
1138
1138
  var init_editor_state = __esmMin((() => {}));
1139
1139
  //#endregion
1140
+ //#region ../core/src/block-content-identity.ts
1141
+ var init_block_content_identity = __esmMin((() => {}));
1142
+ //#endregion
1140
1143
  //#region ../core/src/sensitive-collection.ts
1141
1144
  var init_sensitive_collection = __esmMin((() => {}));
1142
1145
  //#endregion
@@ -1146,9 +1149,6 @@ var init_assertNever = __esmMin((() => {}));
1146
1149
  //#region ../core/src/participants.ts
1147
1150
  var init_participants = __esmMin((() => {}));
1148
1151
  //#endregion
1149
- //#region ../core/src/participant-identity.ts
1150
- var init_participant_identity = __esmMin((() => {}));
1151
- //#endregion
1152
1152
  //#region ../core/src/public-url-validation.ts
1153
1153
  var init_public_url_validation = __esmMin((() => {}));
1154
1154
  //#endregion
@@ -1367,17 +1367,35 @@ function parseMailingListRuntimeContext(value) {
1367
1367
  if (!isRecord$13(value)) return invalidRuntimeContext();
1368
1368
  if (value.tag === "not_configured") return ok$1({ tag: "not_configured" });
1369
1369
  if (value.tag !== "configured") return invalidRuntimeContext();
1370
+ return parseConfiguredRuntimeContext(value);
1371
+ }
1372
+ function parseConfiguredRuntimeContext(value) {
1370
1373
  const revision = parseMailingListSetupRevision(value.revision);
1371
1374
  const form = parseMailingListGlobalForm(value.form);
1372
1375
  const provider = parseRuntimeProvider(value.provider);
1373
- if (revision === null || !form.ok || provider === null) return invalidRuntimeContext();
1376
+ const bookingSignup = parseBookingSignupOffer(value.bookingSignup);
1377
+ if (revision === null || !form.ok || provider === null || bookingSignup === null) return invalidRuntimeContext();
1374
1378
  return ok$1({
1375
1379
  tag: "configured",
1376
1380
  revision,
1381
+ bookingSignup,
1377
1382
  form: form.value,
1378
1383
  provider
1379
1384
  });
1380
1385
  }
1386
+ function parseBookingSignupOffer(value) {
1387
+ if (value === void 0) return {
1388
+ tag: "unavailable",
1389
+ reason: "disabled"
1390
+ };
1391
+ if (!isRecord$13(value)) return null;
1392
+ if (value.tag === "offered") return { tag: "offered" };
1393
+ if (value.tag === "unavailable" && (value.reason === "disabled" || value.reason === "fields" || value.reason === "destination")) return {
1394
+ tag: "unavailable",
1395
+ reason: value.reason
1396
+ };
1397
+ return null;
1398
+ }
1381
1399
  function parseRuntimeProvider(value) {
1382
1400
  if (!isRecord$13(value)) return null;
1383
1401
  switch (value.provider) {
@@ -1613,15 +1631,6 @@ function parseMailingListContentVersionId(value) {
1613
1631
  const parsed = parseContentVersionId(value);
1614
1632
  return parsed.ok ? parsed.value : null;
1615
1633
  }
1616
- function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
1617
- const parsedBlockId = parseMailingListBlockId(blockId);
1618
- const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
1619
- return parsedBlockId !== null && parsedContentVersionId !== null ? {
1620
- tag: "block_ref",
1621
- blockId: parsedBlockId,
1622
- contentVersionId: parsedContentVersionId
1623
- } : null;
1624
- }
1625
1634
  var init_mailing_list_submission = __esmMin((() => {
1626
1635
  init_branded();
1627
1636
  }));
@@ -2100,6 +2109,9 @@ var init_booking_verticals = __esmMin((() => {
2100
2109
  //#region ../core/src/navigation-locations.ts
2101
2110
  var init_navigation_locations = __esmMin((() => {}));
2102
2111
  //#endregion
2112
+ //#region ../core/src/navigation-portal-labels.ts
2113
+ var init_navigation_portal_labels = __esmMin((() => {}));
2114
+ //#endregion
2103
2115
  //#region ../core/src/event-preset-vocabulary.ts
2104
2116
  var init_event_preset_vocabulary = __esmMin((() => {}));
2105
2117
  //#endregion
@@ -2139,10 +2151,10 @@ var init_src$4 = __esmMin((() => {
2139
2151
  init_narrow_result();
2140
2152
  init_non_empty_array();
2141
2153
  init_editor_state();
2154
+ init_block_content_identity();
2142
2155
  init_sensitive_collection();
2143
2156
  init_assertNever();
2144
2157
  init_participants();
2145
- init_participant_identity();
2146
2158
  init_public_url_validation();
2147
2159
  init_public_profile();
2148
2160
  init_public_experience();
@@ -2181,6 +2193,7 @@ var init_src$4 = __esmMin((() => {
2181
2193
  init_booking_verticals();
2182
2194
  init_event_series_behaviour();
2183
2195
  init_navigation_locations();
2196
+ init_navigation_portal_labels();
2184
2197
  init_event_preset_vocabulary();
2185
2198
  init_event_catalogue();
2186
2199
  }));
@@ -3495,9 +3508,6 @@ var init_onColor = __esmMin((() => {}));
3495
3508
  //#region ../theme-core/src/palette/expandPalette.ts
3496
3509
  var init_expandPalette = __esmMin((() => {}));
3497
3510
  //#endregion
3498
- //#region ../theme-core/src/surfaces/foregroundRoles.ts
3499
- var init_foregroundRoles = __esmMin((() => {}));
3500
- //#endregion
3501
3511
  //#region ../theme-core/src/surfaces/foregroundContract.ts
3502
3512
  function requireSurfaceColorValue(role, value) {
3503
3513
  const normalized = value.trim();
@@ -3506,10 +3516,12 @@ function requireSurfaceColorValue(role, value) {
3506
3516
  }
3507
3517
  function completeSurfaceForegrounds(input) {
3508
3518
  const text = requireSurfaceColorValue("text", input.text);
3519
+ const link = input.link === void 0 ? text : requireSurfaceColorValue("link", input.link);
3509
3520
  return {
3510
3521
  text,
3511
3522
  heading: input.heading === void 0 ? text : requireSurfaceColorValue("heading", input.heading),
3512
- link: input.link === void 0 ? text : requireSurfaceColorValue("link", input.link),
3523
+ link,
3524
+ linkHover: input.linkHover === void 0 ? link : requireSurfaceColorValue("linkHover", input.linkHover),
3513
3525
  supporting: input.supporting === void 0 ? text : requireSurfaceColorValue("supporting", input.supporting)
3514
3526
  };
3515
3527
  }
@@ -3517,6 +3529,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
3517
3529
  const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
3518
3530
  const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
3519
3531
  if (role === "text") return `var(${roleVariable}, ${fallback})`;
3532
+ if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
3520
3533
  return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
3521
3534
  }
3522
3535
  function surfaceForegroundValueWithOpacity(role, opacityPercent) {
@@ -3530,15 +3543,32 @@ function surfaceForegroundStyle(input) {
3530
3543
  [SURFACE_FOREGROUND_CSS_VARS.text]: foregrounds.text,
3531
3544
  [SURFACE_FOREGROUND_CSS_VARS.heading]: foregrounds.heading,
3532
3545
  [SURFACE_FOREGROUND_CSS_VARS.link]: foregrounds.link,
3533
- [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
3546
+ [SURFACE_FOREGROUND_CSS_VARS.linkHover]: foregrounds.linkHover,
3547
+ [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting,
3548
+ "--rb-surface-link-hover-decoration": hoverDecoration(input)
3549
+ };
3550
+ }
3551
+ function surfaceForegroundInputFromResolved(foreground, color) {
3552
+ const { roles } = foreground;
3553
+ return {
3554
+ text: color(roles.text),
3555
+ heading: color(roles.heading),
3556
+ link: color(roles.link),
3557
+ linkHover: color(roles.linkHover),
3558
+ supporting: color(roles.supporting),
3559
+ hoverDecoration: foreground.hoverDecoration
3534
3560
  };
3535
3561
  }
3562
+ function hoverDecoration(input) {
3563
+ return input.hoverDecoration ?? "underline";
3564
+ }
3536
3565
  var SURFACE_FOREGROUND_CSS_VARS, DEFAULT_SURFACE_TEXT_COLOR, DEFAULT_SURFACE_LINK_COLOR, DEFAULT_SURFACE_SUPPORTING_COLOR, DEFAULT_ROLE_FALLBACKS;
3537
3566
  var init_foregroundContract = __esmMin((() => {
3538
3567
  SURFACE_FOREGROUND_CSS_VARS = {
3539
3568
  text: "--rb-surface-text-color",
3540
3569
  heading: "--rb-surface-heading-color",
3541
3570
  link: "--rb-surface-link-color",
3571
+ linkHover: "--rb-surface-link-hover-color",
3542
3572
  supporting: "--rb-surface-supporting-color"
3543
3573
  };
3544
3574
  DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
@@ -3548,6 +3578,7 @@ var init_foregroundContract = __esmMin((() => {
3548
3578
  text: DEFAULT_SURFACE_TEXT_COLOR,
3549
3579
  heading: DEFAULT_SURFACE_TEXT_COLOR,
3550
3580
  link: DEFAULT_SURFACE_LINK_COLOR,
3581
+ linkHover: DEFAULT_SURFACE_LINK_COLOR,
3551
3582
  supporting: DEFAULT_SURFACE_SUPPORTING_COLOR
3552
3583
  };
3553
3584
  }));
@@ -4382,11 +4413,6 @@ var init_tokens = __esmMin((() => {
4382
4413
  init_resolver$2();
4383
4414
  }));
4384
4415
  //#endregion
4385
- //#region ../theme-core/src/surfaces/foregroundInteraction.ts
4386
- var init_foregroundInteraction = __esmMin((() => {
4387
- init_tokens();
4388
- }));
4389
- //#endregion
4390
4416
  //#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
4391
4417
  /** Resolve an opaque colour, compositing alpha against an explicit underlay. */
4392
4418
  function resolveOpaqueSurfaceHex(reference, palette, underlayReference) {
@@ -4454,6 +4480,75 @@ var init_opaqueSurfaceColor = __esmMin((() => {
4454
4480
  init_colorConversion();
4455
4481
  }));
4456
4482
  //#endregion
4483
+ //#region ../theme-core/src/surfaces/foregroundInteraction.ts
4484
+ /**
4485
+ * Derive the hover foreground that belongs with a resolved resting foreground.
4486
+ *
4487
+ * A resting foreground is chosen to be legible against a known surface. A hover
4488
+ * state derived from it stays within a bounded distance of that colour, so it
4489
+ * inherits most of the resting colour's contrast margin instead of asserting
4490
+ * an unrelated brand colour that no one checked against the surface.
4491
+ *
4492
+ * That bounded-distance property is what lets this be used on a transparent
4493
+ * overlay header, where the backdrop is only partly knowable: the scrolled
4494
+ * state composites a 60% glass tint over arbitrary page content, so no
4495
+ * compile-time contrast proof is available there. Staying near a colour that
4496
+ * is already trusted in both states is a weaker claim than a contrast proof,
4497
+ * and it is one this function can actually keep.
4498
+ *
4499
+ * Returns `null` when the resting token is not a plain palette token — an
4500
+ * already-faded or raw value has no well-defined softening, and the caller
4501
+ * should leave hover alone rather than guess.
4502
+ */
4503
+ function deriveForegroundHoverToken(restingToken) {
4504
+ const parts = parseColorTokenParts(restingToken);
4505
+ if (parts.kind !== "token") return null;
4506
+ if (parts.opacityPercent !== null) return null;
4507
+ return parseThemeColorToken(`${parts.token}/85`);
4508
+ }
4509
+ /**
4510
+ * Prefer an authored hover that survives every measured backdrop, then a
4511
+ * checked softening of the resting colour. A null backdrop set represents a
4512
+ * trusted treatment: only an explicit authored hover may change the colour.
4513
+ * When neither option works, retain the resting colour and underline it.
4514
+ */
4515
+ function planForegroundHover(input) {
4516
+ const { restingToken, candidate, palette, backdrops } = input;
4517
+ if (candidate && candidate !== restingToken) {
4518
+ if (backdrops === null || survivesEveryBackdrop(candidate, palette, backdrops)) return {
4519
+ kind: "candidate",
4520
+ token: candidate,
4521
+ decoration: "initial"
4522
+ };
4523
+ }
4524
+ const softened = deriveForegroundHoverToken(restingToken);
4525
+ if (softened && backdrops && survivesEveryBackdrop(softened, palette, backdrops)) return {
4526
+ kind: "softened",
4527
+ token: softened,
4528
+ decoration: "initial"
4529
+ };
4530
+ return {
4531
+ kind: "resting",
4532
+ token: restingToken,
4533
+ decoration: "underline"
4534
+ };
4535
+ }
4536
+ function survivesEveryBackdrop(token, palette, backdrops) {
4537
+ return backdrops.length > 0 && backdrops.every((backdrop) => {
4538
+ const foreground = resolveOpaqueSurfaceHex(token, palette, backdrop);
4539
+ return foreground !== null && contrastRatio(foreground, backdrop) >= 4.5;
4540
+ });
4541
+ }
4542
+ var init_foregroundInteraction = __esmMin((() => {
4543
+ init_contrast();
4544
+ init_colorTokenParts();
4545
+ init_tokens();
4546
+ init_opaqueSurfaceColor();
4547
+ }));
4548
+ //#endregion
4549
+ //#region ../theme-core/src/surfaces/foregroundRoles.ts
4550
+ var init_foregroundRoles = __esmMin((() => {}));
4551
+ //#endregion
4457
4552
  //#region ../theme-core/src/surfaces/resolveSurfaceForeground.ts
4458
4553
  /**
4459
4554
  * Resolve the complete foreground contract for an effective page/section or
@@ -4479,12 +4574,16 @@ function resolveSurfaceForeground(background, palette, candidates = {}, options
4479
4574
  }
4480
4575
  function foregroundCandidates(background, overrides) {
4481
4576
  return {
4482
- text: overrides.text ?? background?.textColor ?? null,
4483
- heading: overrides.heading ?? background?.headingColor ?? null,
4484
- link: overrides.link ?? background?.linkColor ?? null,
4485
- supporting: overrides.supporting ?? background?.supportingColor ?? null
4577
+ text: candidateOrBackground(overrides.text, background?.textColor),
4578
+ heading: candidateOrBackground(overrides.heading, background?.headingColor),
4579
+ link: candidateOrBackground(overrides.link, background?.linkColor),
4580
+ linkHover: candidateOrBackground(overrides.linkHover),
4581
+ supporting: candidateOrBackground(overrides.supporting, background?.supportingColor)
4486
4582
  };
4487
4583
  }
4584
+ function candidateOrBackground(candidate, backgroundValue) {
4585
+ return candidate ?? backgroundValue ?? null;
4586
+ }
4488
4587
  function resolveDeterministicForeground(backgroundReference, candidates, palette, compositeBase) {
4489
4588
  const backgroundHex = resolveOpaqueSurfaceHex(backgroundReference, palette, compositeBase);
4490
4589
  if (!backgroundHex) return resolveTrustedTreatmentForeground(candidates, palette);
@@ -4496,29 +4595,51 @@ function resolveDeterministicForeground(backgroundReference, candidates, palette
4496
4595
  ...FALLBACK_TEXT_TOKENS
4497
4596
  ], backgroundHex, palette, derivedOnToken ? [derivedOnToken] : []);
4498
4597
  if (!text) return { kind: "unknown" };
4499
- return {
4500
- kind: "known",
4501
- roles: {
4502
- text,
4503
- heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
4504
- link: safeTokenOr(candidates.link, text, backgroundHex, palette),
4505
- supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
4506
- }
4507
- };
4598
+ return knownForeground({
4599
+ text,
4600
+ heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
4601
+ link: safeTokenOr(candidates.link, text, backgroundHex, palette),
4602
+ supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
4603
+ }, {
4604
+ kind: "measured",
4605
+ backdropHex: backgroundHex
4606
+ }, candidates.linkHover, palette);
4508
4607
  }
4509
4608
  function resolveTrustedTreatmentForeground(candidates, palette) {
4510
4609
  const text = canonicalToken(candidates.text, palette);
4511
4610
  if (!text) return { kind: "unknown" };
4611
+ return knownForeground({
4612
+ text,
4613
+ heading: canonicalToken(candidates.heading, palette) ?? text,
4614
+ link: canonicalToken(candidates.link, palette) ?? text,
4615
+ supporting: canonicalToken(candidates.supporting, palette) ?? text
4616
+ }, { kind: "trusted-treatment" }, candidates.linkHover, palette);
4617
+ }
4618
+ function knownForeground(roles, provenance, hoverCandidate, palette) {
4619
+ const hover = planForegroundHover({
4620
+ restingToken: roles.link,
4621
+ candidate: canonicalHoverToken(hoverCandidate, palette),
4622
+ palette,
4623
+ backdrops: provenance.kind === "measured" ? [provenance.backdropHex] : null
4624
+ });
4512
4625
  return {
4513
4626
  kind: "known",
4627
+ provenance,
4514
4628
  roles: {
4515
- text,
4516
- heading: canonicalToken(candidates.heading, palette) ?? text,
4517
- link: canonicalToken(candidates.link, palette) ?? text,
4518
- supporting: canonicalToken(candidates.supporting, palette) ?? text
4519
- }
4629
+ ...roles,
4630
+ linkHover: hover.token
4631
+ },
4632
+ hoverDecoration: hover.decoration
4520
4633
  };
4521
4634
  }
4635
+ function canonicalHoverToken(reference, palette) {
4636
+ const token = parseThemeColorToken(reference);
4637
+ if (token) {
4638
+ const parts = parseColorTokenParts(token);
4639
+ if (parts.kind === "token" && resolveConcreteColorHex(parts.token, palette)) return token;
4640
+ }
4641
+ return canonicalToken(reference, palette);
4642
+ }
4522
4643
  function safeTokenOr(candidate, fallback, backgroundHex, palette) {
4523
4644
  return firstSafeToken([candidate], backgroundHex, palette) ?? fallback;
4524
4645
  }
@@ -4566,6 +4687,7 @@ var init_resolveSurfaceForeground = __esmMin((() => {
4566
4687
  init_opaqueSurfaceColor();
4567
4688
  init_colorTokenParts();
4568
4689
  init_themeColorTokens();
4690
+ init_foregroundInteraction();
4569
4691
  FALLBACK_TEXT_TOKENS = [
4570
4692
  "text",
4571
4693
  "primaryForeground",
@@ -7611,16 +7733,70 @@ var init_baseSchema = __esmMin((() => {
7611
7733
  });
7612
7734
  }));
7613
7735
  //#endregion
7736
+ //#region ../theme-core/src/navigation/effectPolicy.ts
7737
+ function navEffectPolicy(effectId) {
7738
+ return policiesById[effectId] ?? null;
7739
+ }
7740
+ var NAV_EFFECT_POLICIES, policiesById;
7741
+ var init_effectPolicy = __esmMin((() => {
7742
+ NAV_EFFECT_POLICIES = {
7743
+ "darken-background": "other",
7744
+ "lighten-background": "other",
7745
+ "fade-background": "other",
7746
+ "opacity-reduce": "other",
7747
+ "animated-gradient": "other",
7748
+ "background-on-hover": "paired-hover",
7749
+ "background-on-hover-alpha": "paired-hover",
7750
+ "border-glow": "other",
7751
+ "drop-shadow": "other",
7752
+ "inner-shadow": "other",
7753
+ "neumorphic-shadow": "other",
7754
+ "outer-glow": "other",
7755
+ "retro-3d-shadow": "other",
7756
+ "scale-up": "other",
7757
+ "scale-down": "other",
7758
+ lift: "other",
7759
+ "press-down": "other",
7760
+ pop: "other",
7761
+ "aurora-glow": "other",
7762
+ "cosmic-stardust": "other",
7763
+ "gradient-border-fill": "other",
7764
+ "animated-gradient-border-fill": "other",
7765
+ "border-bottom-grow": "other",
7766
+ "gradient-text": "other",
7767
+ "text-color-change": "text-colour",
7768
+ "border-color-change": "other",
7769
+ "sketchy-border": "other",
7770
+ "pulse-animation": "other",
7771
+ "nav-underline": "underline",
7772
+ "nav-frosted-base": "other",
7773
+ "nav-frosted-hover": "other",
7774
+ "nav-frosted-active": "other"
7775
+ };
7776
+ policiesById = NAV_EFFECT_POLICIES;
7777
+ }));
7778
+ //#endregion
7614
7779
  //#region ../theme-core/src/navigation/types.ts
7615
7780
  /**
7616
7781
  * Navigation Link Style Types
7617
7782
  *
7618
7783
  * Schema and types for composable nav link styling used by header and footer.
7619
7784
  */
7785
+ function navLinkHoverColorCandidate(style) {
7786
+ const effect = style?.effects?.hover?.find((item) => navEffectPolicy(item.effectId) === "text-colour");
7787
+ return parseThemeColorToken(effect?.options?.hoverColorToken ?? style?.hoverColorToken);
7788
+ }
7789
+ function navLinkOwnsHoverForeground(style) {
7790
+ return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "paired-hover") ?? false;
7791
+ }
7792
+ function navLinkOwnsUnderline(style) {
7793
+ return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "underline") ?? false;
7794
+ }
7620
7795
  var navLinkPaddingSchema, navLinkPaddingXSchema, navLinkBorderRadiusSchema, navLinkTextSizeSchema, navLinkLetterSpacingSchema, navLinkContrastTreatmentSchema, navLinkStyleSchema;
7621
7796
  var init_types$8 = __esmMin((() => {
7622
7797
  init_baseSchema();
7623
7798
  init_themeColorTokens();
7799
+ init_effectPolicy();
7624
7800
  navLinkPaddingSchema = z.enum([
7625
7801
  "none",
7626
7802
  "compact",
@@ -9226,7 +9402,7 @@ var init_bookingConsent = __esmMin((() => {
9226
9402
  checkboxLabel: z.string().min(1)
9227
9403
  });
9228
9404
  z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
9229
- })), publicEventLoaderQuerySchemaShape, eventPresetSchema, eventScheduleScopeSchema$2, publicEventRecurrenceSchema, eventDestinationModeSchema, publicEventDestinationSchema, eventVenueSchema, eventCategorySchema, accessRestrictionSchema, publicCurrencySchema, publicCentsSchema, publicPositiveCentsSchema, publicIsoDateTimeSchema, publicEventAttendanceModeSchema, publicEventAttendanceModeAvailabilitySchema, publicEventPricingOptionAvailabilitySchema, publicEventPricingOptionSchema, publicEventPricingSchema, publicTeamMemberSummarySchema, publicEventBookingAvailabilitySchema, publicRunSessionSchema, publicWholeSeriesRunSchema, publicEventBaseSchema, publicEventSchema, publicEventsArraySchema;
9405
+ })), publicEventLoaderQuerySchemaShape, eventPresetSchema, eventScheduleScopeSchema$2, publicEventRecurrenceSchema, eventDestinationModeSchema, publicEventDestinationSchema, eventVenueSchema, eventCategorySchema, accessRestrictionSchema, publicCurrencySchema, publicCentsSchema, publicPositiveCentsSchema, publicIsoDateTimeSchema, publicEventAttendanceModeSchema, publicEventAttendanceModeAvailabilitySchema, publicEventPricingOptionAvailabilitySchema, publicEventPricingOptionSchema, publicEventPricingSchema, publicTeamMemberSummarySchema, publicEventBookingAvailabilitySchema, publicEventBookingClosedDetailSchema, publicRunSessionSchema, publicWholeSeriesRunSchema, publicEventBaseSchema, publicEventSchema, publicEventsArraySchema;
9230
9406
  var init_schemas = __esmMin((() => {
9231
9407
  init_media$3();
9232
9408
  init_richTextSchema();
@@ -9250,6 +9426,7 @@ var init_schemas = __esmMin((() => {
9250
9426
  seriesSlug: z.string().optional(),
9251
9427
  includeOccurrenceId: z.string().optional(),
9252
9428
  readIntent: z.string().optional(),
9429
+ detailAdmission: z.string().optional(),
9253
9430
  detailLevel: z.string().optional(),
9254
9431
  readProfile: z.string().optional()
9255
9432
  };
@@ -9407,11 +9584,11 @@ var init_schemas = __esmMin((() => {
9407
9584
  "series_archived",
9408
9585
  "parent_archived",
9409
9586
  "parent_inconsistent",
9410
- "not_public",
9411
9587
  "already_started",
9412
9588
  "enrollment_closed"
9413
9589
  ])
9414
9590
  })]);
9591
+ publicEventBookingClosedDetailSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("opensSoon") }), z.object({ kind: z.literal("paused") })]);
9415
9592
  publicRunSessionSchema = z.object({
9416
9593
  occurrenceId: z.string(),
9417
9594
  startsAt: z.string(),
@@ -9453,6 +9630,7 @@ var init_schemas = __esmMin((() => {
9453
9630
  destination: publicEventDestinationSchema,
9454
9631
  requiresRegistration: z.boolean(),
9455
9632
  bookingAvailability: publicEventBookingAvailabilitySchema,
9633
+ bookingClosedDetail: publicEventBookingClosedDetailSchema.optional(),
9456
9634
  deliveryMode: z.enum([
9457
9635
  "in_person",
9458
9636
  "online",
@@ -9760,6 +9938,71 @@ function defineEndpointDefinitions(definitions) {
9760
9938
  }
9761
9939
  var init_defineEndpointDefinitions = __esmMin((() => {}));
9762
9940
  //#endregion
9941
+ //#region ../api/src/apiEndpointTypes.ts
9942
+ function allowedDemoMutationPolicy() {
9943
+ return {
9944
+ classification: "allowed",
9945
+ publicMessage: ""
9946
+ };
9947
+ }
9948
+ function blockedDemoMutationPolicy(classification, publicMessage) {
9949
+ if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
9950
+ return {
9951
+ classification,
9952
+ publicMessage
9953
+ };
9954
+ }
9955
+ var init_apiEndpointTypes = __esmMin((() => {})), DEMO_MUTATION_BLOCKED_HIDDEN, DEMO_MUTATION_BLOCKED_DISABLED, DEMO_MUTATION_ALLOWED;
9956
+ var init_demoMutationPolicies = __esmMin((() => {
9957
+ init_apiEndpointTypes();
9958
+ DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
9959
+ DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
9960
+ blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
9961
+ DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
9962
+ }));
9963
+ //#endregion
9964
+ //#region ../api/src/siteLifecycleEndpoints.ts
9965
+ var SITE_LIFECYCLE_ENDPOINT_DEFINITIONS;
9966
+ var init_siteLifecycleEndpoints = __esmMin((() => {
9967
+ init_defineEndpointDefinitions();
9968
+ init_demoMutationPolicies();
9969
+ SITE_LIFECYCLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
9970
+ createSite: {
9971
+ path: "/sites/manage",
9972
+ method: "POST",
9973
+ tags: ["site"],
9974
+ auth: "user",
9975
+ responseKind: "json",
9976
+ errors: []
9977
+ },
9978
+ createSiteManual: {
9979
+ path: "/sites/manual",
9980
+ method: "POST",
9981
+ tags: ["site"],
9982
+ auth: "user",
9983
+ responseKind: "json",
9984
+ errors: []
9985
+ },
9986
+ updateSite: {
9987
+ path: "/sites/manage",
9988
+ method: "PUT",
9989
+ tags: ["site"],
9990
+ auth: "user",
9991
+ responseKind: "json",
9992
+ errors: []
9993
+ },
9994
+ deleteSite: {
9995
+ path: "/sites/{siteId}",
9996
+ method: "DELETE",
9997
+ tags: ["site", "site-{siteId}"],
9998
+ auth: "user",
9999
+ responseKind: "json",
10000
+ errors: [],
10001
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
10002
+ }
10003
+ });
10004
+ }));
10005
+ //#endregion
9763
10006
  //#region ../api/src/publicNewsletterEndpointDefinitions.ts
9764
10007
  var PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS;
9765
10008
  var init_publicNewsletterEndpointDefinitions = __esmMin((() => {
@@ -9824,29 +10067,6 @@ var init_publicNewsletterEndpointDefinitions = __esmMin((() => {
9824
10067
  });
9825
10068
  }));
9826
10069
  //#endregion
9827
- //#region ../api/src/apiEndpointTypes.ts
9828
- function allowedDemoMutationPolicy() {
9829
- return {
9830
- classification: "allowed",
9831
- publicMessage: ""
9832
- };
9833
- }
9834
- function blockedDemoMutationPolicy(classification, publicMessage) {
9835
- if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
9836
- return {
9837
- classification,
9838
- publicMessage
9839
- };
9840
- }
9841
- var init_apiEndpointTypes = __esmMin((() => {})), DEMO_MUTATION_BLOCKED_HIDDEN, DEMO_MUTATION_BLOCKED_DISABLED, DEMO_MUTATION_ALLOWED;
9842
- var init_demoMutationPolicies = __esmMin((() => {
9843
- init_apiEndpointTypes();
9844
- DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
9845
- DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
9846
- blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
9847
- DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
9848
- }));
9849
- //#endregion
9850
10070
  //#region ../api/src/cache-tags.ts
9851
10071
  var TAG_TEMPLATES;
9852
10072
  var init_cache_tags = __esmMin((() => {
@@ -10729,6 +10949,13 @@ var init_eventSeriesRegistrationEndpointDefinitions = __esmMin((() => {
10729
10949
  errors: [],
10730
10950
  responseKind: "blob"
10731
10951
  },
10952
+ exportEventOfferingRegistrationsCsv: {
10953
+ path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}/registrations/export.csv",
10954
+ method: "GET",
10955
+ auth: "user",
10956
+ errors: [],
10957
+ responseKind: "blob"
10958
+ },
10732
10959
  updateEventSeriesRegistration: {
10733
10960
  path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
10734
10961
  method: "PATCH",
@@ -10739,6 +10966,19 @@ var init_eventSeriesRegistrationEndpointDefinitions = __esmMin((() => {
10739
10966
  "resource:not_found",
10740
10967
  "server:internal_error"
10741
10968
  ]
10969
+ },
10970
+ saveEventSeriesRegistrationAnswers: {
10971
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}/answers",
10972
+ method: "PUT",
10973
+ auth: "user",
10974
+ responseKind: "json",
10975
+ errors: [
10976
+ "validation:invalid_input",
10977
+ "auth:forbidden",
10978
+ "resource:not_found",
10979
+ "resource:conflict",
10980
+ "server:internal_error"
10981
+ ]
10742
10982
  }
10743
10983
  });
10744
10984
  }));
@@ -10882,6 +11122,20 @@ var init_newsletterEndpointDefinitions = __esmMin((() => {
10882
11122
  responseKind: "json",
10883
11123
  errors: ["auth:forbidden", "server:internal_error"]
10884
11124
  },
11125
+ setMailingListBookingOptIn: {
11126
+ path: "/sites/{siteId}/mailing-list/setup/booking-opt-in",
11127
+ method: "PUT",
11128
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
11129
+ auth: "user",
11130
+ responseKind: "json",
11131
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
11132
+ errors: [
11133
+ "auth:forbidden",
11134
+ "validation:invalid_input",
11135
+ "resource:conflict",
11136
+ "server:internal_error"
11137
+ ]
11138
+ },
10885
11139
  getMailingListAuthoringContext: {
10886
11140
  path: "/sites/{siteId}/mailing-list/authoring-context",
10887
11141
  method: "GET",
@@ -11165,6 +11419,30 @@ var init_newsletterEndpointDefinitions = __esmMin((() => {
11165
11419
  responseKind: "json",
11166
11420
  demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
11167
11421
  },
11422
+ scheduleNewsletterCampaign: {
11423
+ path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/schedule",
11424
+ method: "POST",
11425
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
11426
+ auth: "user",
11427
+ responseKind: "json",
11428
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
11429
+ },
11430
+ unscheduleNewsletterCampaign: {
11431
+ path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/unschedule",
11432
+ method: "POST",
11433
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
11434
+ auth: "user",
11435
+ responseKind: "json",
11436
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
11437
+ },
11438
+ stopNewsletterCampaign: {
11439
+ path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/stop",
11440
+ method: "POST",
11441
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
11442
+ auth: "user",
11443
+ responseKind: "json",
11444
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
11445
+ },
11168
11446
  testSendNewsletterCampaign: {
11169
11447
  path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
11170
11448
  method: "POST",
@@ -11176,6 +11454,150 @@ var init_newsletterEndpointDefinitions = __esmMin((() => {
11176
11454
  });
11177
11455
  }));
11178
11456
  //#endregion
11457
+ //#region ../api/src/sdkEventEndpointDefinitions.ts
11458
+ var SDK_EVENT_ENDPOINT_DEFINITIONS;
11459
+ var init_sdkEventEndpointDefinitions = __esmMin((() => {
11460
+ init_defineEndpointDefinitions();
11461
+ SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
11462
+ sdkListEvents: {
11463
+ path: "/sdk/{siteId}/events",
11464
+ method: "GET",
11465
+ auth: "service",
11466
+ responseKind: "json"
11467
+ },
11468
+ sdkUpsertEvent: {
11469
+ path: "/sdk/{siteId}/events",
11470
+ method: "POST",
11471
+ auth: "service",
11472
+ responseKind: "json",
11473
+ errors: [
11474
+ "validation:invalid_input",
11475
+ "resource:not_found",
11476
+ "resource:conflict",
11477
+ "billing:plan_limit_exceeded",
11478
+ "server:internal_error"
11479
+ ]
11480
+ },
11481
+ sdkGetEvent: {
11482
+ path: "/sdk/{siteId}/events/{identifier}",
11483
+ method: "GET",
11484
+ auth: "service",
11485
+ responseKind: "json"
11486
+ },
11487
+ sdkDeleteEvent: {
11488
+ path: "/sdk/{siteId}/events/{identifier}",
11489
+ method: "DELETE",
11490
+ auth: "service",
11491
+ responseKind: "json",
11492
+ errors: [
11493
+ "resource:not_found",
11494
+ "resource:conflict",
11495
+ "server:internal_error"
11496
+ ]
11497
+ },
11498
+ sdkTakeEventOffline: {
11499
+ path: "/sdk/{siteId}/events/{identifier}/lifecycle",
11500
+ method: "POST",
11501
+ auth: "service",
11502
+ responseKind: "json",
11503
+ errors: [
11504
+ "resource:not_found",
11505
+ "validation:invalid_input",
11506
+ "resource:conflict",
11507
+ "server:internal_error"
11508
+ ]
11509
+ },
11510
+ sdkListEventOccurrences: {
11511
+ path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
11512
+ method: "GET",
11513
+ auth: "service",
11514
+ responseKind: "json",
11515
+ errors: [
11516
+ "resource:not_found",
11517
+ "validation:invalid_input",
11518
+ "server:internal_error"
11519
+ ]
11520
+ },
11521
+ sdkAddEventOccurrence: {
11522
+ path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
11523
+ method: "POST",
11524
+ auth: "service",
11525
+ responseKind: "json",
11526
+ errors: [
11527
+ "resource:not_found",
11528
+ "validation:invalid_input",
11529
+ "resource:conflict",
11530
+ "server:internal_error"
11531
+ ]
11532
+ },
11533
+ sdkUpdateEventOccurrence: {
11534
+ path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
11535
+ method: "PATCH",
11536
+ auth: "service",
11537
+ responseKind: "json",
11538
+ errors: [
11539
+ "resource:not_found",
11540
+ "validation:invalid_input",
11541
+ "resource:conflict",
11542
+ "server:internal_error"
11543
+ ]
11544
+ },
11545
+ sdkCancelEventOccurrence: {
11546
+ path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}/cancel",
11547
+ method: "POST",
11548
+ auth: "service",
11549
+ responseKind: "json",
11550
+ errors: [
11551
+ "resource:not_found",
11552
+ "resource:conflict",
11553
+ "server:internal_error"
11554
+ ]
11555
+ },
11556
+ sdkDeleteEventOccurrence: {
11557
+ path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
11558
+ method: "DELETE",
11559
+ auth: "service",
11560
+ responseKind: "json",
11561
+ errors: [
11562
+ "resource:not_found",
11563
+ "resource:conflict",
11564
+ "server:internal_error"
11565
+ ]
11566
+ }
11567
+ });
11568
+ }));
11569
+ //#endregion
11570
+ //#region ../api/src/sdkPageDesignEndpointDefinitions.ts
11571
+ var SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS;
11572
+ var init_sdkPageDesignEndpointDefinitions = __esmMin((() => {
11573
+ init_defineEndpointDefinitions();
11574
+ SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
11575
+ sdkGetPageDesign: {
11576
+ path: "/sdk/{siteId}/pages/{identifier}/design",
11577
+ method: "GET",
11578
+ auth: "service",
11579
+ responseKind: "json",
11580
+ errors: [
11581
+ "resource:not_found",
11582
+ "validation:invalid_input",
11583
+ "server:internal_error"
11584
+ ]
11585
+ },
11586
+ sdkSavePageDesign: {
11587
+ path: "/sdk/{siteId}/pages/{identifier}/design",
11588
+ method: "POST",
11589
+ auth: "service",
11590
+ responseKind: "json",
11591
+ errors: [
11592
+ "resource:not_found",
11593
+ "validation:invalid_input",
11594
+ "resource:conflict",
11595
+ "server:internal_error"
11596
+ ]
11597
+ }
11598
+ });
11599
+ }));
11600
+ //#endregion
11179
11601
  //#region ../api/src/publicEventEndpointDefinitions.ts
11180
11602
  var PUBLIC_EVENT_ENDPOINT_DEFINITIONS;
11181
11603
  var init_publicEventEndpointDefinitions = __esmMin((() => {
@@ -11419,9 +11841,54 @@ var init_siteApiKeyEndpointDefinitions = __esmMin((() => {
11419
11841
  });
11420
11842
  }));
11421
11843
  //#endregion
11844
+ //#region ../api/src/siteManagementEndpointDefinitions.ts
11845
+ var SITE_MANAGEMENT_ENDPOINT_DEFINITIONS;
11846
+ var init_siteManagementEndpointDefinitions = __esmMin((() => {
11847
+ init_demoMutationPolicies();
11848
+ init_defineEndpointDefinitions();
11849
+ SITE_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
11850
+ createSite: {
11851
+ path: "/sites/manage",
11852
+ method: "POST",
11853
+ tags: ["site"],
11854
+ auth: "user",
11855
+ responseKind: "json"
11856
+ },
11857
+ updateSite: {
11858
+ path: "/sites/manage",
11859
+ method: "PUT",
11860
+ tags: ["site"],
11861
+ auth: "user",
11862
+ responseKind: "json"
11863
+ },
11864
+ changeSiteAddress: {
11865
+ path: "/sites/{siteId}/address",
11866
+ method: "PUT",
11867
+ auth: "user",
11868
+ responseKind: "json",
11869
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
11870
+ },
11871
+ getSiteAddressAvailability: {
11872
+ path: "/sites/{siteId}/address/availability",
11873
+ method: "GET",
11874
+ auth: "user",
11875
+ responseKind: "json"
11876
+ },
11877
+ deleteSite: {
11878
+ path: "/sites/{siteId}",
11879
+ method: "DELETE",
11880
+ tags: ["site", "site-{siteId}"],
11881
+ auth: "user",
11882
+ responseKind: "json",
11883
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
11884
+ }
11885
+ });
11886
+ }));
11887
+ //#endregion
11422
11888
  //#region ../api/src/eventManagementEndpointDefinitions.ts
11423
11889
  var EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS;
11424
11890
  var init_eventManagementEndpointDefinitions = __esmMin((() => {
11891
+ init_cache_tags();
11425
11892
  init_defineEndpointDefinitions();
11426
11893
  EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
11427
11894
  listEvents: {
@@ -11469,6 +11936,28 @@ var init_eventManagementEndpointDefinitions = __esmMin((() => {
11469
11936
  "server:internal_error"
11470
11937
  ]
11471
11938
  },
11939
+ /**
11940
+ * The web address of an event's own page. A course page belongs to the
11941
+ * event itself, so its address is written here rather than through a run.
11942
+ */
11943
+ updateEventAddress: {
11944
+ path: "/sites/{siteId}/bookings/events/{eventId}/address",
11945
+ method: "PATCH",
11946
+ tags: [
11947
+ "site-{siteId}",
11948
+ "event-series-{siteId}",
11949
+ TAG_TEMPLATES.siteRoutableContent,
11950
+ TAG_TEMPLATES.siteRedirects
11951
+ ],
11952
+ auth: "user",
11953
+ responseKind: "json",
11954
+ errors: [
11955
+ "validation:invalid_input",
11956
+ "resource:not_found",
11957
+ "resource:conflict",
11958
+ "server:internal_error"
11959
+ ]
11960
+ },
11472
11961
  createWholeSeriesRun: {
11473
11962
  path: "/sites/{siteId}/bookings/events/{eventId}/runs",
11474
11963
  method: "POST",
@@ -11495,6 +11984,20 @@ var init_eventManagementEndpointDefinitions = __esmMin((() => {
11495
11984
  "server:internal_error"
11496
11985
  ]
11497
11986
  },
11987
+ updateCourseBookingSettings: {
11988
+ path: "/sites/{siteId}/bookings/events/{eventId}/booking-settings",
11989
+ method: "PATCH",
11990
+ tags: ["site-{siteId}", "event-series-{siteId}"],
11991
+ auth: "user",
11992
+ responseKind: "json",
11993
+ errors: [
11994
+ "validation:invalid_input",
11995
+ "auth:forbidden",
11996
+ "resource:not_found",
11997
+ "resource:conflict",
11998
+ "server:internal_error"
11999
+ ]
12000
+ },
11498
12001
  cancelWholeSeriesRun: {
11499
12002
  path: "/sites/{siteId}/bookings/events/{eventId}/runs/{runId}/cancellation",
11500
12003
  method: "POST",
@@ -11507,6 +12010,28 @@ var init_eventManagementEndpointDefinitions = __esmMin((() => {
11507
12010
  "resource:conflict",
11508
12011
  "server:internal_error"
11509
12012
  ]
12013
+ },
12014
+ /**
12015
+ * The Content tab's one write: the short introduction, image and
12016
+ * description of an event's page, published without its layout.
12017
+ */
12018
+ saveEventPageWords: {
12019
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/words",
12020
+ method: "PUT",
12021
+ tags: [
12022
+ TAG_TEMPLATES.siteCollection,
12023
+ TAG_TEMPLATES.siteRoutableContent,
12024
+ TAG_TEMPLATES.pageSurfaceById
12025
+ ],
12026
+ auth: "user",
12027
+ responseKind: "json",
12028
+ errors: [
12029
+ "auth:forbidden",
12030
+ "validation:invalid_input",
12031
+ "resource:not_found",
12032
+ "resource:conflict",
12033
+ "server:internal_error"
12034
+ ]
11510
12035
  }
11511
12036
  });
11512
12037
  }));
@@ -11950,7 +12475,92 @@ var init_billingEndpointDefinitions = __esmMin((() => {
11950
12475
  }
11951
12476
  });
11952
12477
  }));
12478
+ //#endregion
12479
+ //#region ../api/src/bookingPeopleEndpointDefinitions.ts
12480
+ var BOOKING_PEOPLE_ENDPOINT_DEFINITIONS;
12481
+ var init_bookingPeopleEndpointDefinitions = __esmMin((() => {
12482
+ init_defineEndpointDefinitions();
12483
+ BOOKING_PEOPLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
12484
+ listPeople: {
12485
+ path: "/sites/{siteId}/bookings/people",
12486
+ method: "GET",
12487
+ tags: ["site-{siteId}", "customers-{siteId}"],
12488
+ auth: "user",
12489
+ responseKind: "json",
12490
+ errors: ["server:internal_error"]
12491
+ },
12492
+ exportPeopleCsv: {
12493
+ path: "/sites/{siteId}/bookings/people/export.csv",
12494
+ method: "GET",
12495
+ tags: ["site-{siteId}", "customers-{siteId}"],
12496
+ auth: "user",
12497
+ errors: [],
12498
+ responseKind: "blob"
12499
+ },
12500
+ checkPersonDeletion: {
12501
+ path: "/sites/{siteId}/bookings/people/{personId}/deletion-check",
12502
+ method: "GET",
12503
+ tags: ["site-{siteId}", "customers-{siteId}"],
12504
+ auth: "user",
12505
+ responseKind: "json",
12506
+ errors: [
12507
+ "auth:forbidden",
12508
+ "resource:not_found",
12509
+ "server:internal_error"
12510
+ ]
12511
+ },
12512
+ deletePerson: {
12513
+ path: "/sites/{siteId}/bookings/people/{personId}",
12514
+ method: "DELETE",
12515
+ tags: ["site-{siteId}", "customers-{siteId}"],
12516
+ auth: "user",
12517
+ responseKind: "json",
12518
+ errors: [
12519
+ "auth:forbidden",
12520
+ "resource:not_found",
12521
+ "server:internal_error"
12522
+ ]
12523
+ }
12524
+ });
12525
+ })), CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS, CLIENT_ERROR_REPORT_LIMITS, clientErrorEventSchema;
12526
+ var init_clientErrorReporting = __esmMin((() => {
12527
+ init_defineEndpointDefinitions();
12528
+ CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ reportClientError: {
12529
+ path: "/client/error-report",
12530
+ method: "POST",
12531
+ auth: "user",
12532
+ errors: [],
12533
+ responseKind: "json"
12534
+ } });
12535
+ CLIENT_ERROR_REPORT_LIMITS = {
12536
+ pathname: 1024,
12537
+ name: 120,
12538
+ message: 2e3,
12539
+ stack: 8e3,
12540
+ digest: 128,
12541
+ componentStack: 8e3,
12542
+ sourceLocation: 1024
12543
+ };
12544
+ clientErrorEventSchema = z.enum([
12545
+ "dashboard:route-error",
12546
+ "dashboard:app-error",
12547
+ "client:error-boundary",
12548
+ "client:window-error",
12549
+ "client:unhandled-rejection"
12550
+ ]);
12551
+ z.object({
12552
+ event: clientErrorEventSchema,
12553
+ pathname: z.string().startsWith("/").max(CLIENT_ERROR_REPORT_LIMITS.pathname),
12554
+ name: z.string().max(CLIENT_ERROR_REPORT_LIMITS.name),
12555
+ message: z.string().max(CLIENT_ERROR_REPORT_LIMITS.message),
12556
+ stack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
12557
+ digest: z.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
12558
+ componentStack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
12559
+ sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
12560
+ }).strict();
12561
+ }));
11953
12562
  var init_endpoints = __esmMin((() => {
12563
+ init_siteLifecycleEndpoints();
11954
12564
  init_publicNewsletterEndpointDefinitions();
11955
12565
  init_demoMutationPolicies();
11956
12566
  init_cache_tags();
@@ -11959,10 +12569,13 @@ var init_endpoints = __esmMin((() => {
11959
12569
  init_accountEndpointDefinitions();
11960
12570
  init_eventSeriesRegistrationEndpointDefinitions();
11961
12571
  init_newsletterEndpointDefinitions();
12572
+ init_sdkEventEndpointDefinitions();
12573
+ init_sdkPageDesignEndpointDefinitions();
11962
12574
  init_publicEventEndpointDefinitions();
11963
12575
  init_publicEventCheckoutEndpointDefinitions();
11964
12576
  init_publicBookingAvailabilityEndpointDefinitions();
11965
12577
  init_siteApiKeyEndpointDefinitions();
12578
+ init_siteManagementEndpointDefinitions();
11966
12579
  init_eventManagementEndpointDefinitions();
11967
12580
  init_giftingEndpointDefinitions();
11968
12581
  init_sdkEndpointDefinitions();
@@ -11970,19 +12583,24 @@ var init_endpoints = __esmMin((() => {
11970
12583
  init_publicReadEndpointDefinitions();
11971
12584
  init_publicOnboardingAttemptEndpointDefinitions();
11972
12585
  init_billingEndpointDefinitions();
12586
+ init_bookingPeopleEndpointDefinitions();
12587
+ init_clientErrorReporting();
11973
12588
  ({
12589
+ ...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
12590
+ ...CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS,
11974
12591
  ...PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS,
11975
12592
  ...ACCOUNT_ENDPOINT_DEFINITIONS,
11976
12593
  ...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
11977
12594
  ...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
11978
12595
  ...GIFTING_ENDPOINT_DEFINITIONS,
11979
12596
  ...PUBLIC_READ_ENDPOINT_DEFINITIONS,
11980
- ...BILLING_ENDPOINT_DEFINITIONS
12597
+ ...BILLING_ENDPOINT_DEFINITIONS,
12598
+ ...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS
11981
12599
  }), TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, { ...SITE_API_KEY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, {
11982
12600
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
11983
12601
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
11984
12602
  ...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
11985
- }, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicBookingServices, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
12603
+ }, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicBookingServices, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...BOOKING_PEOPLE_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS }, { ...SDK_EVENT_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
11986
12604
  }));
11987
12605
  var init_preview_auth = __esmMin((() => {
11988
12606
  z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
@@ -12269,6 +12887,22 @@ var init_contracts$1 = __esmMin((() => {
12269
12887
  z.discriminatedUnion("kind", navigationLinkInputSchemaOptions);
12270
12888
  }));
12271
12889
  //#endregion
12890
+ //#region ../blocks/src/pageRenderAdmission.ts
12891
+ /** Pair a published version with the content it authorises at the render boundary. */
12892
+ function readPublishedBlockPlacement(id, content) {
12893
+ if (id == null && content == null) return null;
12894
+ if (id == null || content == null) return {
12895
+ kind: "incomplete",
12896
+ id: id ?? null,
12897
+ content: content ?? null
12898
+ };
12899
+ return {
12900
+ id,
12901
+ content
12902
+ };
12903
+ }
12904
+ var init_pageRenderAdmission = __esmMin((() => {}));
12905
+ //#endregion
12272
12906
  //#region ../blocks/src/subroutes/index.ts
12273
12907
  var init_subroutes = __esmMin((() => {})), BlockKind, blockSchema, pagePath;
12274
12908
  var init_schema$2 = __esmMin((() => {
@@ -19678,6 +20312,15 @@ var init_resolver$1 = __esmMin((() => {
19678
20312
  blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
19679
20313
  }));
19680
20314
  //#endregion
20315
+ //#region ../theme-core/src/header/rootPaint.ts
20316
+ /** The nav container takes precedence when a floating header also has one. */
20317
+ function headerRootPaint(header) {
20318
+ const navContainerType = header?.navContainer?.type ?? "none";
20319
+ if (navContainerType === "glass" || navContainerType === "pill") return "contained-nav";
20320
+ return header?.variant === "floating" ? "overlay" : "own-surface";
20321
+ }
20322
+ var init_rootPaint = __esmMin((() => {}));
20323
+ //#endregion
19681
20324
  //#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
19682
20325
  function parseSiteChromeBackgroundColorToken(value) {
19683
20326
  const token = parseBackgroundAppearanceColorToken(value);
@@ -19954,10 +20597,276 @@ var init_headerPreferencesPersistence = __esmMin((() => {
19954
20597
  }).strict();
19955
20598
  }));
19956
20599
  //#endregion
20600
+ //#region ../theme-core/src/navigation/presets.ts
20601
+ /**
20602
+ * Get a nav link style preset by ID
20603
+ */
20604
+ function getNavLinkPreset(presetId) {
20605
+ return NAV_LINK_PRESETS[presetId];
20606
+ }
20607
+ var NAV_LINK_PRESETS;
20608
+ var init_presets$1 = __esmMin((() => {
20609
+ NAV_LINK_PRESETS = {
20610
+ /**
20611
+ * Minimal - subtle color change on hover
20612
+ */
20613
+ minimal: {
20614
+ name: "Minimal",
20615
+ typography: "body",
20616
+ fontWeight: "medium",
20617
+ textTransform: "none",
20618
+ italic: false,
20619
+ colorToken: "text",
20620
+ hoverColorToken: "primary",
20621
+ padding: "none",
20622
+ borderRadius: "none",
20623
+ effects: { hover: [{
20624
+ effectId: "text-color-change",
20625
+ options: { hoverColorToken: "primary" }
20626
+ }] }
20627
+ },
20628
+ /**
20629
+ * Underline - static underline appears on hover
20630
+ */
20631
+ underline: {
20632
+ name: "Underline",
20633
+ typography: "body",
20634
+ fontWeight: "medium",
20635
+ textTransform: "none",
20636
+ italic: false,
20637
+ colorToken: "text",
20638
+ padding: "none",
20639
+ borderRadius: "none",
20640
+ effects: { hover: [{
20641
+ effectId: "nav-underline",
20642
+ options: { style: "static" }
20643
+ }] }
20644
+ },
20645
+ /**
20646
+ * Underline Grow - animated underline grows from center on hover
20647
+ */
20648
+ "underline-grow": {
20649
+ name: "Underline Grow",
20650
+ typography: "body",
20651
+ fontWeight: "medium",
20652
+ textTransform: "none",
20653
+ italic: false,
20654
+ colorToken: "text",
20655
+ padding: "none",
20656
+ borderRadius: "none",
20657
+ effects: { hover: [{
20658
+ effectId: "nav-underline",
20659
+ options: { style: "grow" }
20660
+ }] }
20661
+ },
20662
+ /**
20663
+ * Capsule - pill-shaped background on hover
20664
+ */
20665
+ capsule: {
20666
+ name: "Capsule",
20667
+ typography: "body",
20668
+ fontWeight: "medium",
20669
+ textTransform: "none",
20670
+ italic: false,
20671
+ colorToken: "text",
20672
+ padding: "compact",
20673
+ borderRadius: "full",
20674
+ effects: {
20675
+ hover: [{
20676
+ effectId: "background-on-hover-alpha",
20677
+ options: {
20678
+ colorToken: "primary",
20679
+ opacity: 10
20680
+ }
20681
+ }],
20682
+ active: [{
20683
+ effectId: "background-on-hover-alpha",
20684
+ options: {
20685
+ colorToken: "primary",
20686
+ opacity: 15
20687
+ }
20688
+ }]
20689
+ }
20690
+ },
20691
+ /**
20692
+ * Solid - solid background color on hover
20693
+ */
20694
+ solid: {
20695
+ name: "Solid",
20696
+ typography: "body",
20697
+ fontWeight: "medium",
20698
+ textTransform: "none",
20699
+ italic: false,
20700
+ colorToken: "text",
20701
+ padding: "compact",
20702
+ borderRadius: "none",
20703
+ effects: {
20704
+ hover: [{
20705
+ effectId: "background-on-hover",
20706
+ options: {
20707
+ colorToken: "primary",
20708
+ textColorToken: "primaryForeground"
20709
+ }
20710
+ }],
20711
+ active: [{
20712
+ effectId: "background-on-hover",
20713
+ options: {
20714
+ colorToken: "primary",
20715
+ textColorToken: "primaryForeground"
20716
+ }
20717
+ }]
20718
+ }
20719
+ },
20720
+ /**
20721
+ * Scale - gentle scale-up on hover
20722
+ */
20723
+ scale: {
20724
+ name: "Scale",
20725
+ typography: "body",
20726
+ fontWeight: "medium",
20727
+ textTransform: "none",
20728
+ italic: false,
20729
+ colorToken: "text",
20730
+ padding: "none",
20731
+ borderRadius: "none",
20732
+ effects: { hover: [{
20733
+ effectId: "scale-up",
20734
+ options: { scale: 1.05 }
20735
+ }] }
20736
+ },
20737
+ /**
20738
+ * Frosted - semi-transparent glass-like background
20739
+ */
20740
+ frosted: {
20741
+ name: "Frosted",
20742
+ typography: "body",
20743
+ fontWeight: "medium",
20744
+ textTransform: "none",
20745
+ italic: false,
20746
+ colorToken: "text",
20747
+ padding: "compact",
20748
+ borderRadius: "md",
20749
+ effects: {
20750
+ base: [{ effectId: "nav-frosted-base" }],
20751
+ hover: [{ effectId: "nav-frosted-hover" }],
20752
+ active: [{ effectId: "nav-frosted-active" }]
20753
+ }
20754
+ }
20755
+ };
20756
+ Object.keys(NAV_LINK_PRESETS);
20757
+ }));
20758
+ //#endregion
20759
+ //#region ../theme-core/src/header/legacyNavLinkStyle.ts
20760
+ function buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize) {
20761
+ const navStyle = header.navStyle ?? "minimal";
20762
+ const basePreset = getNavLinkPreset(navStyle);
20763
+ if (!basePreset) return null;
20764
+ const style = {
20765
+ ...basePreset,
20766
+ fontWeight: header.navWeight ?? basePreset.fontWeight,
20767
+ colorToken: (header.navColor ?? header.textColor)?.trim() || basePreset.colorToken,
20768
+ ...contrastTreatment ? { contrastTreatment } : {},
20769
+ ...navTextSize ? { textSize: navTextSize } : {}
20770
+ };
20771
+ if (header.navWeight === "bold" && navStyle === "solid") style.textTransform = "uppercase";
20772
+ applyLegacyGlassTreatment(style, header, navStyle);
20773
+ return style;
20774
+ }
20775
+ function applyLegacyGlassTreatment(style, header, navStyle) {
20776
+ if (header.navContainer?.type !== "glass" || navStyle !== "minimal") return;
20777
+ style.borderRadius = "full";
20778
+ style.effects = {
20779
+ ...style.effects,
20780
+ hover: glassStateEffects(10),
20781
+ active: glassStateEffects(18)
20782
+ };
20783
+ }
20784
+ function glassStateEffects(opacity) {
20785
+ return [{
20786
+ effectId: "background-on-hover-alpha",
20787
+ options: {
20788
+ colorToken: "neutral-50",
20789
+ opacity
20790
+ }
20791
+ }, {
20792
+ effectId: "text-color-change",
20793
+ options: { hoverColorToken: "neutral-50" }
20794
+ }];
20795
+ }
20796
+ var init_legacyNavLinkStyle = __esmMin((() => {
20797
+ init_presets$1();
20798
+ }));
20799
+ //#endregion
20800
+ //#region ../theme-core/src/header/openingForegroundProjection.ts
20801
+ function readOpeningForegroundProjection(header) {
20802
+ return header?.__runtimeOpeningForeground ?? null;
20803
+ }
20804
+ var init_openingForegroundProjection = __esmMin((() => {}));
20805
+ //#endregion
20806
+ //#region ../theme-core/src/header/effectiveNavLinkStyle.ts
20807
+ function effectiveHeaderNavLinkStyle(header, contrastTreatment = null, navTextSize = null) {
20808
+ if (!header) return null;
20809
+ if (!header.navLinkStyle) return buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize);
20810
+ return {
20811
+ ...header.navLinkStyle,
20812
+ ...contrastTreatment ? { contrastTreatment } : {},
20813
+ ...navTextSize ? { textSize: navTextSize } : {}
20814
+ };
20815
+ }
20816
+ function headerForegroundCandidates(header) {
20817
+ if (!header) return {};
20818
+ const style = effectiveHeaderNavLinkStyle(header);
20819
+ return {
20820
+ text: header.textColor ?? header.background?.textColor,
20821
+ link: style?.colorToken ?? header.navColor ?? header.textColor,
20822
+ linkHover: navLinkHoverColorCandidate(style)
20823
+ };
20824
+ }
20825
+ function headerLeafTextColor(header) {
20826
+ if (!header) return "text";
20827
+ return header.textColor ?? header.navColor ?? header.background?.textColor ?? header.navLinkStyle?.colorToken ?? "text";
20828
+ }
20829
+ /** Transparent chrome must reset the whole contract on its own root. */
20830
+ function transparentHeaderForegroundInput(header, palette) {
20831
+ const projection = readOpeningForegroundProjection(header);
20832
+ if (projection?.kind === "known") return surfaceForegroundInputFromResolved(projection, rgbColorValue);
20833
+ return authoredTransparentHeaderForegroundInput(header, palette);
20834
+ }
20835
+ function authoredTransparentHeaderForegroundInput(header, palette) {
20836
+ const text = headerLeafTextColor(header);
20837
+ const style = effectiveHeaderNavLinkStyle(header);
20838
+ const link = style?.colorToken ?? text;
20839
+ const restingToken = parseThemeColorToken(link) ?? parseThemeColorToken("text");
20840
+ if (!restingToken) throw new Error("Built-in text colour token is invalid");
20841
+ const hover = planForegroundHover({
20842
+ restingToken,
20843
+ candidate: navLinkOwnsHoverForeground(style) ? null : navLinkHoverColorCandidate(style),
20844
+ palette,
20845
+ backdrops: null
20846
+ });
20847
+ return {
20848
+ text: rgbColorValue(text),
20849
+ link: rgbColorValue(link),
20850
+ linkHover: rgbColorValue(hover.token),
20851
+ hoverDecoration: navLinkOwnsUnderline(style) ? "initial" : hover.decoration
20852
+ };
20853
+ }
20854
+ var init_effectiveNavLinkStyle$1 = __esmMin((() => {
20855
+ init_types$8();
20856
+ init_legacyNavLinkStyle();
20857
+ init_openingForegroundProjection();
20858
+ init_surfaces();
20859
+ init_foregroundInteraction();
20860
+ init_tokens();
20861
+ init_colorStyles();
20862
+ }));
20863
+ //#endregion
19957
20864
  //#region ../theme-core/src/site-styles/headerOpeningForeground.ts
19958
20865
  var init_headerOpeningForeground = __esmMin((() => {
19959
20866
  init_foregroundInteraction();
19960
20867
  init_tokens();
20868
+ init_types$8();
20869
+ init_effectiveNavLinkStyle$1();
19961
20870
  }));
19962
20871
  //#endregion
19963
20872
  //#region ../theme-core/src/site-styles/effectivePageDesign.ts
@@ -20217,10 +21126,16 @@ var init_defaults = __esmMin((() => {
20217
21126
  init_curatedSiteStyles();
20218
21127
  }));
20219
21128
  //#endregion
21129
+ //#region ../theme-core/src/inputs/checkable.ts
21130
+ var init_checkable = __esmMin((() => {
21131
+ init_colorStyles();
21132
+ }));
21133
+ //#endregion
20220
21134
  //#region ../theme-core/src/inputs/generateInputCss.ts
20221
21135
  var init_generateInputCss = __esmMin((() => {
20222
21136
  init_types$10();
20223
21137
  init_colorStyles();
21138
+ init_checkable();
20224
21139
  }));
20225
21140
  //#endregion
20226
21141
  //#region ../theme-core/src/navigation/generateNavLinkCSS.ts
@@ -20238,192 +21153,84 @@ var init_navDropdownSizing = __esmMin((() => {
20238
21153
  var init_surfaceRules = __esmMin((() => {
20239
21154
  init_shared$4();
20240
21155
  init_colorStyles();
20241
- })), NAV_LINK_PRESETS;
20242
- var init_presets$1 = __esmMin((() => {
20243
- NAV_LINK_PRESETS = {
20244
- /**
20245
- * Minimal - subtle color change on hover
20246
- */
20247
- minimal: {
20248
- name: "Minimal",
20249
- typography: "body",
20250
- fontWeight: "medium",
20251
- textTransform: "none",
20252
- italic: false,
20253
- colorToken: "text",
20254
- hoverColorToken: "primary",
20255
- padding: "none",
20256
- borderRadius: "none",
20257
- effects: { hover: [{
20258
- effectId: "text-color-change",
20259
- options: { hoverColorToken: "primary" }
20260
- }] }
20261
- },
20262
- /**
20263
- * Underline - static underline appears on hover
20264
- */
20265
- underline: {
20266
- name: "Underline",
20267
- typography: "body",
20268
- fontWeight: "medium",
20269
- textTransform: "none",
20270
- italic: false,
20271
- colorToken: "text",
20272
- padding: "none",
20273
- borderRadius: "none",
20274
- effects: { hover: [{
20275
- effectId: "nav-underline",
20276
- options: { style: "static" }
20277
- }] }
20278
- },
20279
- /**
20280
- * Underline Grow - animated underline grows from center on hover
20281
- */
20282
- "underline-grow": {
20283
- name: "Underline Grow",
20284
- typography: "body",
20285
- fontWeight: "medium",
20286
- textTransform: "none",
20287
- italic: false,
20288
- colorToken: "text",
20289
- padding: "none",
20290
- borderRadius: "none",
20291
- effects: { hover: [{
20292
- effectId: "nav-underline",
20293
- options: { style: "grow" }
20294
- }] }
20295
- },
20296
- /**
20297
- * Capsule - pill-shaped background on hover
20298
- */
20299
- capsule: {
20300
- name: "Capsule",
20301
- typography: "body",
20302
- fontWeight: "medium",
20303
- textTransform: "none",
20304
- italic: false,
20305
- colorToken: "text",
20306
- padding: "compact",
20307
- borderRadius: "full",
20308
- effects: {
20309
- hover: [{
20310
- effectId: "background-on-hover-alpha",
20311
- options: {
20312
- colorToken: "primary",
20313
- opacity: 10
20314
- }
20315
- }],
20316
- active: [{
20317
- effectId: "background-on-hover-alpha",
20318
- options: {
20319
- colorToken: "primary",
20320
- opacity: 15
20321
- }
20322
- }]
20323
- }
20324
- },
20325
- /**
20326
- * Solid - solid background color on hover
20327
- */
20328
- solid: {
20329
- name: "Solid",
20330
- typography: "body",
20331
- fontWeight: "medium",
20332
- textTransform: "none",
20333
- italic: false,
20334
- colorToken: "text",
20335
- padding: "compact",
20336
- borderRadius: "none",
20337
- effects: {
20338
- hover: [{
20339
- effectId: "background-on-hover",
20340
- options: {
20341
- colorToken: "primary",
20342
- textColorToken: "primaryForeground"
20343
- }
20344
- }],
20345
- active: [{
20346
- effectId: "background-on-hover",
20347
- options: {
20348
- colorToken: "primary",
20349
- textColorToken: "primaryForeground"
20350
- }
20351
- }]
20352
- }
20353
- },
20354
- /**
20355
- * Scale - gentle scale-up on hover
20356
- */
20357
- scale: {
20358
- name: "Scale",
20359
- typography: "body",
20360
- fontWeight: "medium",
20361
- textTransform: "none",
20362
- italic: false,
20363
- colorToken: "text",
20364
- padding: "none",
20365
- borderRadius: "none",
20366
- effects: { hover: [{
20367
- effectId: "scale-up",
20368
- options: { scale: 1.05 }
20369
- }] }
20370
- },
20371
- /**
20372
- * Frosted - semi-transparent glass-like background
20373
- */
20374
- frosted: {
20375
- name: "Frosted",
20376
- typography: "body",
20377
- fontWeight: "medium",
20378
- textTransform: "none",
20379
- italic: false,
20380
- colorToken: "text",
20381
- padding: "compact",
20382
- borderRadius: "md",
20383
- effects: {
20384
- base: [{ effectId: "nav-frosted-base" }],
20385
- hover: [{ effectId: "nav-frosted-hover" }],
20386
- active: [{ effectId: "nav-frosted-active" }]
20387
- }
20388
- }
20389
- };
20390
- Object.keys(NAV_LINK_PRESETS);
20391
21156
  }));
20392
21157
  //#endregion
20393
- //#region ../theme-core/src/header/legacyNavLinkStyle.ts
20394
- var init_legacyNavLinkStyle = __esmMin((() => {
20395
- init_presets$1();
21158
+ //#region ../theme-core/src/header/generateHeaderNavLinkStyles.ts
21159
+ var init_generateHeaderNavLinkStyles = __esmMin((() => {
21160
+ init_generateNavLinkCSS();
21161
+ init_siteChromeNavPreferences();
21162
+ init_effectiveNavLinkStyle$1();
21163
+ init_rawStyleFields();
21164
+ }));
21165
+ //#endregion
21166
+ //#region ../theme-core/src/header/generateHeaderLogoStyles.ts
21167
+ var init_generateHeaderLogoStyles = __esmMin((() => {
21168
+ init_generateNavLinkCSS();
21169
+ init_surfaces();
20396
21170
  }));
20397
21171
  //#endregion
20398
21172
  //#region ../theme-core/src/header/generateHeaderCss.ts
20399
21173
  var init_generateHeaderCss = __esmMin((() => {
20400
21174
  init_resolver$2();
20401
21175
  init_generateNavLinkCSS();
20402
- init_siteChromeNavPreferences();
20403
21176
  init_shared$4();
20404
21177
  init_breakpoints();
20405
21178
  init_navDropdownSizing();
20406
21179
  init_scrollTreatment();
20407
21180
  init_paintTargets();
20408
21181
  init_surfaceRules();
20409
- init_legacyNavLinkStyle();
21182
+ init_generateHeaderNavLinkStyles();
21183
+ init_rawStyleFields();
21184
+ init_generateHeaderLogoStyles();
21185
+ init_surfaces();
20410
21186
  }));
20411
21187
  //#endregion
20412
21188
  //#region ../theme-core/src/header/index.ts
20413
21189
  var init_header = __esmMin((() => {
20414
21190
  init_generateHeaderCss();
21191
+ init_rootPaint();
21192
+ init_effectiveNavLinkStyle$1();
21193
+ init_openingForegroundProjection();
21194
+ }));
21195
+ //#endregion
21196
+ //#region ../theme-core/src/footer/effectiveNavLinkStyle.ts
21197
+ function effectiveFooterNavLinkStyle(footer) {
21198
+ if (!footer) return null;
21199
+ if (footer.navLinkStyle) return footer.navLinkStyle;
21200
+ const basePreset = getNavLinkPreset(footer.navStyle ?? "minimal");
21201
+ if (!basePreset) return null;
21202
+ return {
21203
+ ...basePreset,
21204
+ fontWeight: footer.navWeight ?? basePreset.fontWeight,
21205
+ colorToken: footer.navColor?.trim() || basePreset.colorToken
21206
+ };
21207
+ }
21208
+ function footerForegroundCandidates(footer, proseHoverCandidate) {
21209
+ if (!footer) return {};
21210
+ const style = effectiveFooterNavLinkStyle(footer);
21211
+ return {
21212
+ text: footer.background?.textColor,
21213
+ link: style?.colorToken ?? footer.navColor ?? footer.background?.textColor,
21214
+ linkHover: navLinkOwnsHoverForeground(style) ? proseHoverCandidate : navLinkHoverColorCandidate(style)
21215
+ };
21216
+ }
21217
+ var init_effectiveNavLinkStyle = __esmMin((() => {
21218
+ init_presets$1();
21219
+ init_types$8();
20415
21220
  }));
20416
21221
  //#endregion
20417
21222
  //#region ../theme-core/src/footer/generateFooterCss.ts
20418
21223
  var init_generateFooterCss = __esmMin((() => {
20419
21224
  init_resolver$2();
20420
21225
  init_generateNavLinkCSS();
20421
- init_presets$1();
21226
+ init_effectiveNavLinkStyle();
21227
+ init_rawStyleFields();
20422
21228
  }));
20423
21229
  //#endregion
20424
21230
  //#region ../theme-core/src/footer/index.ts
20425
21231
  var init_footer = __esmMin((() => {
20426
21232
  init_generateFooterCss();
21233
+ init_effectiveNavLinkStyle();
20427
21234
  }));
20428
21235
  //#endregion
20429
21236
  //#region ../theme-core/src/layout/boundaryCss.ts
@@ -21136,6 +21943,7 @@ var init_core$2 = __esmMin((() => {
21136
21943
  //#region ../theme-core/src/inputs/core.ts
21137
21944
  var init_core$1 = __esmMin((() => {
21138
21945
  init_colorStyles();
21946
+ init_checkable();
21139
21947
  }));
21140
21948
  var init_buildThemeRuntimeFromBridge = __esmMin((() => {
21141
21949
  init_shadow();
@@ -26287,33 +27095,28 @@ var init_themeColorResolution = __esmMin((() => {
26287
27095
  }));
26288
27096
  //#endregion
26289
27097
  //#region ../blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.ts
26290
- function resolveHeaderLeafTextColor(header) {
26291
- return header?.textColor ?? header?.navColor ?? header?.background?.textColor ?? header?.navLinkStyle?.colorToken ?? "text";
26292
- }
26293
27098
  function resolveHeaderRootForeground(header, palette, isTransparent) {
26294
- if (isTransparent) return { kind: "unknown" };
27099
+ if (isTransparent) return readOpeningForegroundProjection(header) ?? { kind: "unknown" };
26295
27100
  const background = header?.background;
26296
27101
  return resolveSurfaceForeground(background ?? {
26297
27102
  type: "color",
26298
27103
  color: "surface"
26299
- }, palette, {
26300
- text: header?.textColor ?? background?.textColor,
26301
- link: header?.navLinkStyle?.colorToken ?? header?.navColor ?? header?.textColor
26302
- });
27104
+ }, palette, headerForegroundCandidates(header));
27105
+ }
27106
+ function resolveFooterRootForeground(footer, palette, proseHoverCandidate) {
27107
+ return resolveSurfaceForeground(footer?.background ?? {
27108
+ type: "color",
27109
+ color: "surface"
27110
+ }, palette, footerForegroundCandidates(footer, proseHoverCandidate), { compositeBase: "background" });
26303
27111
  }
26304
27112
  function resolveSurfaceForegroundStyles(value, context, options) {
26305
27113
  const input = parseBackgroundContent(value);
26306
- const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, {}, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
27114
+ const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, { linkHover: context.proseHoverCandidate }, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
26307
27115
  const buttonStyles = resolveContextualButtonStyles(input, foreground, context, options);
26308
27116
  if (foreground.kind === "unknown") return buttonStyles;
26309
27117
  return {
26310
27118
  ...buttonStyles,
26311
- ...surfaceForegroundStyle({
26312
- text: resolveBackgroundColorValue(foreground.roles.text, context),
26313
- heading: resolveBackgroundColorValue(foreground.roles.heading, context),
26314
- link: resolveBackgroundColorValue(foreground.roles.link, context),
26315
- supporting: resolveBackgroundColorValue(foreground.roles.supporting, context)
26316
- })
27119
+ ...surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, (token) => resolveBackgroundColorValue(token, context)))
26317
27120
  };
26318
27121
  }
26319
27122
  function resolveContextualButtonStyles(background, foreground, context, options) {
@@ -26363,6 +27166,8 @@ function deriveButtonSurfaceInput(background, foreground) {
26363
27166
  var contextualButtonStylesCache;
26364
27167
  var init_surfaceForegroundStyles = __esmMin((() => {
26365
27168
  init_surfaces();
27169
+ init_header();
27170
+ init_footer();
26366
27171
  init_buttons();
26367
27172
  init_backgroundContent();
26368
27173
  init_themeColorResolution();
@@ -32429,10 +33234,7 @@ function resolveBackgroundVisualStyles(backgroundColor, defaultToken = "surface"
32429
33234
  };
32430
33235
  }
32431
33236
  function resolveHeaderVisualStyles(header) {
32432
- const navContainerType = header?.navContainer?.type ?? "none";
32433
- const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
32434
- const hasOverlayVariant = header?.variant === "floating";
32435
- if (hasContainedNav || hasOverlayVariant) return {
33237
+ if (headerRootPaint(header) !== "own-surface") return {
32436
33238
  backgroundToken: "transparent",
32437
33239
  isTransparent: true
32438
33240
  };
@@ -32443,29 +33245,32 @@ function resolveHeaderVisualStyles(header) {
32443
33245
  }
32444
33246
  function resolvedForegroundStyle(foreground) {
32445
33247
  if (foreground.kind === "unknown") return void 0;
32446
- const { roles } = foreground;
32447
- return surfaceForegroundStyle({
32448
- text: rgbColorValue(roles.text),
32449
- heading: rgbColorValue(roles.heading),
32450
- link: rgbColorValue(roles.link),
32451
- supporting: rgbColorValue(roles.supporting)
32452
- });
32453
- }
32454
- function resolveFooterRootForeground(footer, palette) {
32455
- const background = footer?.background;
32456
- return resolveSurfaceForeground(background ?? {
32457
- type: "color",
32458
- color: "surface"
32459
- }, palette, {
32460
- text: background?.textColor,
32461
- link: footer?.navLinkStyle?.colorToken ?? footer?.navColor ?? background?.textColor
32462
- });
33248
+ return surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, rgbColorValue));
32463
33249
  }
32464
33250
  function footerBottomBarBorderWidthStyle(width) {
32465
33251
  if (!width) return void 0;
32466
33252
  if (width === "none") return { borderTopWidth: "0px" };
32467
33253
  return { borderTopWidth: width === "thin" ? "1px" : width === "medium" ? "2px" : "3px" };
32468
33254
  }
33255
+ function footerBottomBarForegroundStyle(footer, palette) {
33256
+ if (!footer?.bottomBar) return void 0;
33257
+ const bar = footer.bottomBar;
33258
+ if (bar.background?.type !== "color") return backgroundlessBottomBarForegroundStyle(footer);
33259
+ return resolvedForegroundStyle(resolveSurfaceForeground(bar.background, palette, {
33260
+ text: bar.textColor,
33261
+ link: footer.bottomTextLinkStyle?.colorToken ?? bar.textColor,
33262
+ linkHover: footer.bottomTextLinkStyle?.hoverColorToken
33263
+ }, { compositeBase: measuredFooterBackdrop(footer, palette) }));
33264
+ }
33265
+ function backgroundlessBottomBarForegroundStyle(footer) {
33266
+ if (footer.background?.contentOwner === "site-chrome-editor") return;
33267
+ const textColor = footer.bottomBar?.textColor;
33268
+ return textColor ? textColorStyle(textColor) : void 0;
33269
+ }
33270
+ function measuredFooterBackdrop(footer, palette) {
33271
+ const foreground = resolveFooterRootForeground(footer, palette);
33272
+ return foreground.kind === "known" && foreground.provenance.kind === "measured" ? foreground.provenance.backdropHex : null;
33273
+ }
32469
33274
  function shouldShowFooterLogoText(footer) {
32470
33275
  if (!footer) return false;
32471
33276
  const explicit = footer.logo?.showLogoText;
@@ -32486,6 +33291,8 @@ var init_layout$2 = __esmMin((() => {
32486
33291
  init_surfaces();
32487
33292
  init_siteChromePlacement();
32488
33293
  init_runtimeContract();
33294
+ init_header();
33295
+ init_site_styles();
32489
33296
  init_surfaceForegroundStyles();
32490
33297
  joinClasses = (parts) => parts.filter((part) => typeof part === "string" && part.trim().length > 0).join(" ").replace(/\s+/g, " ").trim();
32491
33298
  headerLogoClassSchema = z.object({ base: z.string().optional() });
@@ -32571,8 +33378,7 @@ var init_layout$2 = __esmMin((() => {
32571
33378
  const placement = planSiteChromePlacement(parseHeaderPositioning(content.positioning));
32572
33379
  const header = asPartialObject(value);
32573
33380
  const visuals = resolveHeaderVisualStyles(header);
32574
- const navContainerType = header?.navContainer?.type ?? "none";
32575
- const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
33381
+ const hasContainedNav = headerRootPaint(header) === "contained-nav";
32576
33382
  const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
32577
33383
  const classes = [config.base, backgroundClass];
32578
33384
  if (!hasContainedNav) {
@@ -32616,7 +33422,7 @@ var init_layout$2 = __esmMin((() => {
32616
33422
  run: (value, _options, context) => {
32617
33423
  const header = asPartialObject(value);
32618
33424
  const visuals = resolveHeaderVisualStyles(header);
32619
- return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? { color: rgbColorValue(resolveHeaderLeafTextColor(header)) }, borderColorStyle(header?.border?.colorToken ?? "border"));
33425
+ return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? (visuals.isTransparent ? surfaceForegroundStyle(transparentHeaderForegroundInput(header, context.theme.palette)) : { color: rgbColorValue(headerLeafTextColor(header)) }), borderColorStyle(header?.border?.colorToken ?? "border"));
32620
33426
  }
32621
33427
  };
32622
33428
  headerSectionBackgroundTransform = {
@@ -32624,9 +33430,7 @@ var init_layout$2 = __esmMin((() => {
32624
33430
  kind: "string",
32625
33431
  summary: "Resolve the inner site-header section background token",
32626
33432
  run: (value) => {
32627
- const header = asPartialObject(value);
32628
- const navContainerType = header?.navContainer?.type ?? "none";
32629
- return header?.variant === "floating" || navContainerType === "glass" || navContainerType === "pill" ? "raw:transparent" : "background";
33433
+ return headerRootPaint(asPartialObject(value)) !== "own-surface" ? "raw:transparent" : "background";
32630
33434
  }
32631
33435
  };
32632
33436
  footerRootStyleTransform = {
@@ -32644,7 +33448,7 @@ var init_layout$2 = __esmMin((() => {
32644
33448
  styleParts.push(backgroundColorStyle(token));
32645
33449
  }
32646
33450
  }
32647
- styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette)));
33451
+ styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette, context.proseHoverCandidate)));
32648
33452
  styleParts.push(borderColorStyle("border"));
32649
33453
  return mergeStyles(...styleParts);
32650
33454
  }
@@ -32708,20 +33512,7 @@ var init_layout$2 = __esmMin((() => {
32708
33512
  run: (value, _options, context) => {
32709
33513
  const footer = asPartialObject(value);
32710
33514
  const bottomBar = footer?.bottomBar;
32711
- const styleParts = [];
32712
- const background = bottomBar?.background;
32713
- if (background?.type === "color") styleParts.push(backgroundColorStyle(background.color ?? "surface"));
32714
- styleParts.push(borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width));
32715
- const foreground = resolveSurfaceForeground(background?.type === "color" ? background : {
32716
- type: "color",
32717
- color: "transparent"
32718
- }, context.theme.palette, {
32719
- text: bottomBar?.textColor,
32720
- link: footer?.bottomTextLinkStyle?.colorToken ?? bottomBar?.textColor
32721
- });
32722
- if (background?.type === "color") styleParts.push(resolvedForegroundStyle(foreground));
32723
- else if (bottomBar?.textColor) styleParts.push(textColorStyle(bottomBar.textColor));
32724
- return mergeStyles(...styleParts);
33515
+ return mergeStyles(bottomBar?.background?.type === "color" ? backgroundColorStyle(bottomBar.background.color ?? "surface") : void 0, borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width), footerBottomBarForegroundStyle(footer, context.theme.palette));
32725
33516
  }
32726
33517
  };
32727
33518
  footerSplitMainClassSchema = z.object({
@@ -32806,7 +33597,7 @@ function chromeSurfaceTextToken(surface, theme, palette) {
32806
33597
  case "header-root": {
32807
33598
  const header = theme.header;
32808
33599
  const foreground = resolveHeaderRootForeground(header, palette, resolveHeaderVisualStyles(header).isTransparent);
32809
- return foreground.kind === "known" ? foreground.roles.text : resolveHeaderLeafTextColor(header);
33600
+ return foreground.kind === "known" ? foreground.roles.text : headerLeafTextColor(header);
32810
33601
  }
32811
33602
  case "header-mobile-panel": return theme.header?.dropdownStyle?.textColor ?? "text";
32812
33603
  case "footer-root": {
@@ -32827,6 +33618,7 @@ var init_chromeLogo = __esmMin((() => {
32827
33618
  init_core();
32828
33619
  init_layout$2();
32829
33620
  init_surfaceForegroundStyles();
33621
+ init_header();
32830
33622
  chromeLogoSchema = z.object({ surface: z.enum([
32831
33623
  "header-root",
32832
33624
  "header-mobile-panel",
@@ -33442,13 +34234,13 @@ var init_site_footer = __esmMin((() => {
33442
34234
  as: "p",
33443
34235
  className: "rb-caption rb-opacity-70"
33444
34236
  }, bind$1("module.timeZone"), when("module.timeZone"))], when("module.kind", { equals: "opening-hours" }));
33445
- socials = inline({ className: "rb-flex rb-flex-wrap rb-gap-x-5 rb-gap-y-3" }, [link({
34237
+ socials = inline({ className: "rb-footer-socials" }, [link({
33446
34238
  href: { $bind: { from: "social.href" } },
33447
34239
  target: "_blank",
33448
34240
  rel: "noreferrer noopener",
33449
34241
  "aria-label": { $bind: { from: "social.label" } },
33450
- className: "rb-nav-text transition-theme-standard"
33451
- }, [icon({ className: "rb-h-5 rb-w-5" }, bind$1("social.icon"), when("social.icon")), text({ as: "span" }, bind$1("social.label"), when("social.icon", { equals: null }))], repeat("module.socialLinks", "social"))], when("module.kind", { equals: "social-links" }));
34242
+ className: "rb-footer-social-link rb-nav-text transition-theme-standard"
34243
+ }, [icon({ className: "rb-footer-social-icon" }, bind$1("social.icon"), when("social.icon")), text({ as: "span" }, bind$1("social.label"), when("social.icon", { equals: null }))], repeat("module.socialLinks", "social"))], when("module.kind", { equals: "social-links" }));
33452
34244
  authoredCopy = richText({
33453
34245
  className: "rb-prose rb-prose-sm rb-max-w-none",
33454
34246
  style: textColorStyle("text/80")
@@ -35020,7 +35812,9 @@ var init_appointment_booking = __esmMin((() => {
35020
35812
  } },
35021
35813
  formId: { $bind: { from: "content.formId" } },
35022
35814
  form: { $bind: { from: "data.form" } },
35023
- services: { $bind: { from: "data.services" } }
35815
+ services: { $bind: { from: "data.services" } },
35816
+ mailingList: { $bind: { from: "$root.mailingList" } },
35817
+ siteName: { $bind: { from: "$root.siteName" } }
35024
35818
  }));
35025
35819
  stackedLayout$1 = bookingSection([
35026
35820
  bookingHeading,
@@ -36091,6 +36885,7 @@ function isRecord$6(value) {
36091
36885
  }
36092
36886
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, EVENT_REGISTRATION_SHELL_STEP_LABELS, eventRegistrationPublicEventSchema, eventRegistrationHydrationSchemaShape, eventRegistrationEventSourceSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationBlockRuntime;
36093
36887
  var init_event_registration_interactive = __esmMin((() => {
36888
+ init_src$4();
36094
36889
  init_readAuthority();
36095
36890
  init_schemas();
36096
36891
  init_runGrouping();
@@ -36130,7 +36925,13 @@ var init_event_registration_interactive = __esmMin((() => {
36130
36925
  spamProtectionEnabled: z.boolean().optional(),
36131
36926
  supportEmail: z.string().optional(),
36132
36927
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
36133
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
36928
+ siteMemberships: publicMembershipProductCollectionSchema.nullable().optional(),
36929
+ mailingList: z.unknown().transform((value) => {
36930
+ if (value === void 0) return void 0;
36931
+ const parsed = parseMailingListRuntimeContext(value);
36932
+ return parsed.ok ? parsed.value : void 0;
36933
+ }),
36934
+ siteName: z.string().optional()
36134
36935
  };
36135
36936
  eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
36136
36937
  kind: z.literal("loaded"),
@@ -36216,7 +37017,9 @@ var init_event_registration_interactive = __esmMin((() => {
36216
37017
  spamProtectionEnabled: source.spamProtectionEnabled,
36217
37018
  supportEmail: source.supportEmail,
36218
37019
  sitePasses: source.sitePasses ?? null,
36219
- siteMemberships: source.siteMemberships ?? null
37020
+ siteMemberships: source.siteMemberships ?? null,
37021
+ mailingList: source.mailingList,
37022
+ siteName: source.siteName
36220
37023
  }
36221
37024
  };
36222
37025
  }
@@ -36388,6 +37191,8 @@ var init_event_registration = __esmMin((() => {
36388
37191
  events: { $bind: { from: "data.events" } },
36389
37192
  wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
36390
37193
  loaderFailures: { $bind: { from: "$root.loaderFailures" } },
37194
+ mailingList: { $bind: { from: "$root.mailingList" } },
37195
+ siteName: { $bind: { from: "$root.siteName" } },
36391
37196
  sitePasses: { $bind: { from: "data.sitePasses" } },
36392
37197
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
36393
37198
  stage: { $bind: {
@@ -43425,16 +44230,21 @@ function buildNewsletterDisplay(source) {
43425
44230
  }
43426
44231
  function projectNewsletterFormHydrationTarget(source) {
43427
44232
  switch (source.source) {
43428
- case "block": {
43429
- const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
43430
- if (sourceRef?.tag === "block_ref") return {
44233
+ case "block": switch (source.newsletterBlockSubmission.tag) {
44234
+ case "unpublished-form":
44235
+ case "unpublished-settings": return {
44236
+ tag: "unpublished-preview",
44237
+ reason: source.newsletterBlockSubmission.tag
44238
+ };
44239
+ case "ready": return {
43431
44240
  tag: "block-source",
43432
- sourceRef
44241
+ sourceRef: source.newsletterBlockSubmission.sourceRef
43433
44242
  };
43434
- return {
44243
+ case "unavailable": return {
43435
44244
  tag: "block-source",
43436
44245
  sourceRef: null
43437
44246
  };
44247
+ default: return assertNever$4(source.newsletterBlockSubmission);
43438
44248
  }
43439
44249
  case "signed-footer": return {
43440
44250
  tag: "signed-footer-source",
@@ -43509,7 +44319,7 @@ function parseRequiredMailingListSignedSourceToken(value) {
43509
44319
  if (!parsed) throw new Error("Mailing-list signup signed source ref requires token");
43510
44320
  return parsed;
43511
44321
  }
43512
- var newsletterButtonVariantSchema, mailingListContextSchema, mailingListTargetingSchema, newsletterFieldSchema, mailingListSignupBlockIdSchema, mailingListContentVersionIdSchema, signedMailingListSourceTokenSchema, newsletterSourceCommonSchema, newsletterSourceSchema, newsletterDisplaySchema, newsletterHydrationSchema, newsletterRenderSchema, newsletterFormBlockRuntime;
44322
+ var newsletterButtonVariantSchema, mailingListContextSchema, mailingListTargetingSchema, newsletterFieldSchema, mailingListSignupBlockIdSchema, mailingListContentVersionIdSchema, mailingListSignupBlockSourceRefSchema, signedMailingListSourceTokenSchema, newsletterSourceCommonSchema, newsletterSourceSchema, newsletterDisplaySchema, newsletterHydrationSchema, newsletterRenderSchema, newsletterFormBlockRuntime;
43513
44323
  var init_newsletter_form_interactive = __esmMin((() => {
43514
44324
  init_src$4();
43515
44325
  init_islands();
@@ -43556,6 +44366,11 @@ var init_newsletter_form_interactive = __esmMin((() => {
43556
44366
  });
43557
44367
  return z.NEVER;
43558
44368
  });
44369
+ mailingListSignupBlockSourceRefSchema = z.object({
44370
+ tag: z.literal("block_ref"),
44371
+ blockId: mailingListSignupBlockIdSchema,
44372
+ contentVersionId: mailingListContentVersionIdSchema
44373
+ });
43559
44374
  signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
43560
44375
  newsletterSourceCommonSchema = z.object({
43561
44376
  siteId: z.string().optional(),
@@ -43570,7 +44385,15 @@ var init_newsletter_form_interactive = __esmMin((() => {
43570
44385
  newsletterSourceCommonSchema.extend({
43571
44386
  source: z.literal("block"),
43572
44387
  blockId: z.string().nullable().optional(),
43573
- contentVersionId: z.string().nullable().optional()
44388
+ newsletterBlockSubmission: z.discriminatedUnion("tag", [
44389
+ z.object({
44390
+ tag: z.literal("ready"),
44391
+ sourceRef: mailingListSignupBlockSourceRefSchema
44392
+ }),
44393
+ z.object({ tag: z.literal("unpublished-form") }),
44394
+ z.object({ tag: z.literal("unpublished-settings") }),
44395
+ z.object({ tag: z.literal("unavailable") })
44396
+ ])
43574
44397
  }),
43575
44398
  newsletterSourceCommonSchema.extend({
43576
44399
  source: z.literal("signed-footer"),
@@ -43599,11 +44422,7 @@ var init_newsletter_form_interactive = __esmMin((() => {
43599
44422
  target: z.discriminatedUnion("tag", [
43600
44423
  z.object({
43601
44424
  tag: z.literal("block-source"),
43602
- sourceRef: z.object({
43603
- tag: z.literal("block_ref"),
43604
- blockId: mailingListSignupBlockIdSchema,
43605
- contentVersionId: mailingListContentVersionIdSchema
43606
- }).nullable()
44425
+ sourceRef: mailingListSignupBlockSourceRefSchema.nullable()
43607
44426
  }),
43608
44427
  z.object({
43609
44428
  tag: z.literal("signed-footer-source"),
@@ -43612,7 +44431,11 @@ var init_newsletter_form_interactive = __esmMin((() => {
43612
44431
  token: signedMailingListSourceTokenSchema
43613
44432
  })
43614
44433
  }),
43615
- z.object({ tag: z.literal("preview") })
44434
+ z.object({ tag: z.literal("preview") }),
44435
+ z.object({
44436
+ tag: z.literal("unpublished-preview"),
44437
+ reason: z.enum(["unpublished-form", "unpublished-settings"])
44438
+ })
43616
44439
  ]),
43617
44440
  setupRevision: z.number().int().positive().nullable(),
43618
44441
  choiceProvider: z.enum([
@@ -43662,17 +44485,9 @@ var init_newsletter_form_interactive = __esmMin((() => {
43662
44485
  function sanitizeNewsletterSignupPublicContent(content) {
43663
44486
  if (typeof content !== "object" || content === null || Array.isArray(content)) return content;
43664
44487
  const value = content;
43665
- return {
43666
- title: value.title,
43667
- subtitle: value.subtitle,
43668
- targeting: value.targeting,
43669
- buttonVariant: value.buttonVariant,
43670
- mailingListSource: value.mailingListSource,
43671
- mailingListSourceToken: value.mailingListSourceToken,
43672
- _sectionStyles: value._sectionStyles
43673
- };
44488
+ return Object.fromEntries(newsletterPublicFieldIds.map((id) => [id, value[id]]));
43674
44489
  }
43675
- var stackedComposition, stackedLayout, inlineLayout, editorialSplitLayout, newsletterSignupManifest, newsletterSignupBlockDefinition;
44490
+ var stackedComposition, stackedLayout, inlineLayout, editorialSplitLayout, newsletterSignupManifest, newsletterPublicFieldIds, newsletterSignupBlockDefinition;
43676
44491
  var init_newsletter_signup = __esmMin((() => {
43677
44492
  init_fragments$1();
43678
44493
  init_builder$1();
@@ -43766,6 +44581,7 @@ var init_newsletter_signup = __esmMin((() => {
43766
44581
  ],
43767
44582
  icon: "Mail"
43768
44583
  });
44584
+ newsletterPublicFieldIds = [...(newsletterSignupManifest.fields ?? []).map((field) => field.id), "_containerStyles"];
43769
44585
  newsletterSignupBlockDefinition = {
43770
44586
  manifest: newsletterSignupManifest,
43771
44587
  runtime: newsletterFormBlockRuntime
@@ -46685,6 +47501,7 @@ var init_data = __esmMin((() => {
46685
47501
  //#endregion
46686
47502
  //#region ../blocks/src/index.ts
46687
47503
  var init_src$2 = __esmMin((() => {
47504
+ init_pageRenderAdmission();
46688
47505
  init_subroutes();
46689
47506
  init_schema$2();
46690
47507
  init_palette();
@@ -47036,10 +47853,47 @@ var init_siteOnboarding = __esmMin((() => {
47036
47853
  //#region ../api/src/launchReadiness.ts
47037
47854
  var init_launchReadiness = __esmMin((() => {
47038
47855
  init_siteOnboarding();
47039
- })), SURFACE_IDS, DEFAULT_SURFACE_ID, NAMED_SURFACE_IDS;
47856
+ }));
47857
+ //#endregion
47858
+ //#region ../surfaces/src/index.ts
47859
+ function surfaceHostTableValues(table) {
47860
+ return Object.values(table).flatMap((byTier) => Object.values(byTier).flat());
47861
+ }
47862
+ function siteSlugLabelUnderRoot(host, siteRootHost) {
47863
+ if (!host.endsWith(`.${siteRootHost}`)) return [];
47864
+ return host.slice(0, host.length - siteRootHost.length - 1).split(".").slice(-1);
47865
+ }
47866
+ function deriveSurfaceOwnedSiteSlugs() {
47867
+ const siteRootHosts = [...surfaceHostTableValues(SURFACE_SITE_ROOT_HOSTS), ...surfaceHostTableValues(SURFACE_SITE_ROOT_HOST_ALIASES)];
47868
+ const labels = [...surfaceHostTableValues(SURFACE_ROOT_HOSTS), ...siteRootHosts].flatMap((host) => siteRootHosts.flatMap((root) => siteSlugLabelUnderRoot(host, root)));
47869
+ return [...new Set(labels)].sort();
47870
+ }
47871
+ var SURFACE_IDS, DEFAULT_SURFACE_ID, SURFACE_ROOT_HOSTS, SURFACE_SITE_ROOT_HOSTS, SURFACE_SITE_ROOT_HOST_ALIASES, NAMED_SURFACE_IDS;
47040
47872
  var init_src$1 = __esmMin((() => {
47041
47873
  SURFACE_IDS = ["core", "macadamia"];
47042
47874
  DEFAULT_SURFACE_ID = "core";
47875
+ SURFACE_ROOT_HOSTS = {
47876
+ core: {
47877
+ local: "localhost",
47878
+ prod: "riverbankcms.com"
47879
+ },
47880
+ macadamia: {
47881
+ local: "macadamia.localhost",
47882
+ prod: "macadamia.studio"
47883
+ }
47884
+ };
47885
+ SURFACE_SITE_ROOT_HOSTS = {
47886
+ core: {
47887
+ local: "localhost",
47888
+ prod: "riverbanksites.com"
47889
+ },
47890
+ macadamia: {
47891
+ local: "macadamia.localhost",
47892
+ prod: "macadamia.studio"
47893
+ }
47894
+ };
47895
+ SURFACE_SITE_ROOT_HOST_ALIASES = { core: { prod: ["preview.riverbanksites.com"] } };
47896
+ deriveSurfaceOwnedSiteSlugs();
47043
47897
  NAMED_SURFACE_IDS = SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
47044
47898
  [...NAMED_SURFACE_IDS];
47045
47899
  }));
@@ -47556,11 +48410,15 @@ var init_bookingRecords = __esmMin((() => {
47556
48410
  BOOKING_QUESTION_ANSWER_EXPORT_SCOPES.site, BOOKING_QUESTION_ANSWER_EXPORT_SCOPES.appointments, BOOKING_QUESTION_ANSWER_EXPORT_SCOPES.eventSeries;
47557
48411
  }));
47558
48412
  //#endregion
48413
+ //#region ../api/src/bookingPeople.ts
48414
+ var init_bookingPeople = __esmMin((() => {}));
48415
+ //#endregion
47559
48416
  //#region ../api/src/bookings.ts
47560
48417
  var init_bookings = __esmMin((() => {
47561
48418
  init_envelope();
47562
48419
  init_error_propagation();
47563
48420
  init_bookingRecords();
48421
+ init_bookingPeople();
47564
48422
  }));
47565
48423
  //#endregion
47566
48424
  //#region ../api/src/siteMembers.ts
@@ -47854,6 +48712,11 @@ var init_pages = __esmMin((() => {
47854
48712
  var init_routes = __esmMin((() => {
47855
48713
  init_envelope();
47856
48714
  init_error_propagation();
48715
+ })), EVENT_VISIBILITY_VALUES, EVENT_VISIBILITY_ERROR_MESSAGE;
48716
+ var init_event_visibility = __esmMin((() => {
48717
+ EVENT_VISIBILITY_VALUES = ["public", "unlisted"];
48718
+ EVENT_VISIBILITY_ERROR_MESSAGE = "visibility must be 'public' or 'unlisted'";
48719
+ z.enum(EVENT_VISIBILITY_VALUES, { error: EVENT_VISIBILITY_ERROR_MESSAGE });
47857
48720
  })), bookingDepositRefundPolicySchema, bookingInstalmentPlanSchema, bookingFlexibleBalanceDueDateRuleSchema, bookingFlexibleBalanceConfigSchema;
47858
48721
  var init_bookingPaymentTermSchemas = __esmMin((() => {
47859
48722
  bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
@@ -48122,6 +48985,7 @@ var init_auth = __esmMin((() => {
48122
48985
  //#region ../api/src/index.ts
48123
48986
  var init_src = __esmMin((() => {
48124
48987
  init_endpoints();
48988
+ init_clientErrorReporting();
48125
48989
  init_preview_auth();
48126
48990
  init_footerSettings();
48127
48991
  init_accountEndpoints();
@@ -48157,8 +49021,10 @@ var init_src = __esmMin((() => {
48157
49021
  init_pages();
48158
49022
  init_routes();
48159
49023
  init_appointmentServiceContracts();
49024
+ init_event_visibility();
48160
49025
  init_bookingPaymentTermSchemas();
48161
49026
  init_bookingRecords();
49027
+ init_bookingPeople();
48162
49028
  init_emailSettings();
48163
49029
  init_eventEmailTemplates();
48164
49030
  init_resources();
@@ -48627,21 +49493,39 @@ function buildSiteRenderSupport(site, mediaAssets) {
48627
49493
  function collectMediaAssetSidecar(mediaAssets) {
48628
49494
  return Array.isArray(mediaAssets) && mediaAssets.length > 0 ? mediaAssets : void 0;
48629
49495
  }
48630
- function convertPageResponseBlock(block) {
49496
+ function readBlockContentId(value, name) {
49497
+ if (value === null || value === void 0) return null;
49498
+ if (typeof value === "string") return value;
49499
+ throw new Error(`Invalid ${name} in page: expected string or null`);
49500
+ }
49501
+ function readTransportedBlockIdentity(block, kind, stage) {
49502
+ return {
49503
+ draftContentId: readBlockContentId(block.draftContentId, "draft content id"),
49504
+ publishedPlacement: stage === "preview" ? readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readNestedContentRecord(block.publishedContent))) : null
49505
+ };
49506
+ }
49507
+ function convertPageResponseBlock(block, stage) {
48631
49508
  if (!isRecord(block)) throw new Error("Invalid block format in page API response");
49509
+ const header = readTransportedBlockHeader(block);
49510
+ const admission = readInvalidBlockAdmission(block.admission);
49511
+ return {
49512
+ ...header,
49513
+ ...readTransportedBlockIdentity(block, header.kind, stage),
49514
+ content: sanitizeSdkRuntimeBlockContent(header.kind, readContentRecord(block.content) ?? {}),
49515
+ draftContent: sanitizeNullableSdkRuntimeBlockContent(header.kind, readNestedContentRecord(block.draftContent)),
49516
+ ...admission ? { admission } : {}
49517
+ };
49518
+ }
49519
+ function readTransportedBlockHeader(block) {
48632
49520
  if (typeof block.id !== "string" && block.id !== null) throw new Error(`Invalid block id in page: expected string or null, got ${typeof block.id}`);
48633
49521
  if (typeof block.kind !== "string") throw new Error(`Invalid block kind in page: expected string, got ${typeof block.kind}`);
48634
49522
  if (typeof block.purpose !== "string") throw new Error(`Invalid block purpose in page: expected string, got ${typeof block.purpose}`);
48635
49523
  if (block.contentVersionId !== void 0 && block.contentVersionId !== null && typeof block.contentVersionId !== "string") throw new Error(`Invalid content version id in page: expected string or null, got ${typeof block.contentVersionId}`);
48636
- const admission = readInvalidBlockAdmission(block.admission);
48637
49524
  return {
48638
49525
  id: block.id,
48639
49526
  ...block.contentVersionId !== void 0 ? { contentVersionId: block.contentVersionId } : {},
48640
49527
  kind: block.kind,
48641
- purpose: block.purpose,
48642
- content: sanitizeSdkRuntimeBlockContent(block.kind, readContentRecord(block.content) ?? {}),
48643
- draftContent: sanitizeNullableSdkRuntimeBlockContent(block.kind, readNestedContentRecord(block.draftContent)),
48644
- ...admission ? { admission } : {}
49528
+ purpose: block.purpose
48645
49529
  };
48646
49530
  }
48647
49531
  function readInvalidBlockAdmission(value) {
@@ -48654,7 +49538,7 @@ function buildPageOutline(input) {
48654
49538
  name: input.name,
48655
49539
  path: input.path ?? input.fallbackPath,
48656
49540
  purpose: input.purpose,
48657
- blocks: input.blocks.map(convertPageResponseBlock)
49541
+ blocks: input.blocks.map((block) => convertPageResponseBlock(block, input.previewStage))
48658
49542
  };
48659
49543
  }
48660
49544
  function buildRenderablePageOutline(input) {
@@ -48680,6 +49564,8 @@ function projectRenderablePageOutline(page) {
48680
49564
  function admitSdkRuntimePageBlock(block, customBlocks) {
48681
49565
  const base = {
48682
49566
  id: block.id,
49567
+ draftContentId: block.draftContentId,
49568
+ publishedPlacement: block.publishedPlacement,
48683
49569
  ...block.contentVersionId !== void 0 ? { contentVersionId: block.contentVersionId } : {},
48684
49570
  kind: block.kind,
48685
49571
  purpose: block.purpose,
@@ -48831,33 +49717,32 @@ async function loadPageWithDeps(deps, params) {
48831
49717
  const { client, siteId, path, pageId, preview = false, dataLoaderOverrides, searchParams, forceSite } = params;
48832
49718
  const [site, pageResponse] = await Promise.all([client.getSite({
48833
49719
  id: siteId,
49720
+ currentPath: path,
48834
49721
  ...forceSite ? { force: true } : {}
48835
49722
  }), client.getPage({
48836
49723
  siteId,
48837
49724
  path,
48838
49725
  preview
48839
49726
  })]);
48840
- if ("entry" in pageResponse) throw new Error("This path resolves to a content entry, not a page. Use loadContent() instead, which handles both pages and entries. For entries, loadContent() returns the raw entry data for custom rendering.");
48841
- if ("pageSurface" in pageResponse) throw new Error("This path resolves to a page surface, not a page. Use loadContent() instead, which handles pages, entries, and page surfaces.");
48842
- const { page: pageData } = pageResponse;
49727
+ const pageData = requirePageRecord(pageResponse);
48843
49728
  const support = buildSiteRenderSupport(site, collectMediaAssetSidecar(pageResponse.mediaAssets));
49729
+ const previewStage = preview ? "preview" : "published";
48844
49730
  const pageOutline = buildRenderablePageOutline({
48845
49731
  name: pageData.name,
48846
49732
  path: pageData.path,
48847
49733
  fallbackPath: path,
48848
49734
  purpose: pageData.purpose,
48849
49735
  blocks: pageData.blocks,
49736
+ previewStage,
48850
49737
  customBlocks: support.customBlocks
48851
49738
  });
48852
- const previewStage = preview ? "preview" : "published";
48853
- const renderTarget = {
48854
- kind: "page",
48855
- pageId: pageId ?? pageData.id
48856
- };
48857
49739
  const resolvedData = await resolveBlockDataWithDeps(deps, {
48858
49740
  page: projectRenderablePageOutline(pageOutline),
48859
49741
  siteId,
48860
- renderTarget,
49742
+ renderTarget: {
49743
+ kind: "page",
49744
+ pageId: pageId ?? pageData.id
49745
+ },
48861
49746
  previewStage,
48862
49747
  policy: createBlockDataLoadPolicy(dataLoaderOverrides, normalizeDataLoaderSearchParams(searchParams)),
48863
49748
  client,
@@ -48869,6 +49754,10 @@ async function loadPageWithDeps(deps, params) {
48869
49754
  theme: requireSdkTheme(support.theme, siteId),
48870
49755
  sdkConfig: support.sdkConfig,
48871
49756
  siteId,
49757
+ dataContext: {
49758
+ siteName: support.site.title,
49759
+ previewStage
49760
+ },
48872
49761
  resolvedData,
48873
49762
  bookingOfferingPresets: support.bookingOfferingPresets,
48874
49763
  mailingList: support.mailingList,
@@ -48881,6 +49770,11 @@ async function loadPageWithDeps(deps, params) {
48881
49770
  entriesByIdentifier: support.entriesByIdentifier
48882
49771
  };
48883
49772
  }
49773
+ function requirePageRecord(response) {
49774
+ if ("entry" in response) throw new Error("This path resolves to a content entry, not a page. Use loadContent() instead, which handles both pages and entries. For entries, loadContent() returns the raw entry data for custom rendering.");
49775
+ if ("pageSurface" in response) throw new Error("This path resolves to a page surface, not a page. Use loadContent() instead, which handles pages, entries, and page surfaces.");
49776
+ return response.page;
49777
+ }
48884
49778
  var init_loadPage = __esmMin((() => {
48885
49779
  init_dataLoaderContext();
48886
49780
  init_resolveBlockData();