@riverbankcms/sdk 0.130.2 → 0.132.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 (339) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/dist/{PreviewEditorSidebar-BY-1QdE2.mjs → PreviewEditorSidebar-DKQ5eFK9.mjs} +351 -95
  3. package/dist/{PreviewEditorUI-BS34jI9_.mjs → PreviewEditorUI-CNTcOjCC.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BD0kOjtI.mjs → PreviewQueryProvider-D51gQaG3.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-B1pWnhu-.mjs → SdkPreviewModeRuntime-DJu3qu33.mjs} +48 -9
  6. package/dist/{SiteChromeCustomizeContext-BhUG_72i.mjs → SiteChromeCustomizeContext-2TzT3vbj.mjs} +6417 -4184
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +723 -151
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +151 -64
  9. package/dist/_dts/api/src/bookingConfig.d.ts +13 -9
  10. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +8 -19
  11. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +31 -2
  12. package/dist/_dts/api/src/bookingVerticals.d.ts +1 -140
  13. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +45 -12
  14. package/dist/_dts/api/src/contentRuntime.d.ts +2 -1
  15. package/dist/_dts/api/src/courses.d.ts +1 -19
  16. package/dist/_dts/api/src/endpoints.d.ts +466 -346
  17. package/dist/_dts/api/src/event-destination-policy.d.ts +1 -1
  18. package/dist/_dts/api/src/eventManagementContracts.d.ts +91 -1
  19. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +32 -0
  20. package/dist/_dts/api/src/giftingDashboard.d.ts +117 -0
  21. package/dist/_dts/api/src/giftingEndpointDefinitions.d.ts +124 -0
  22. package/dist/_dts/api/src/index.d.ts +4 -4
  23. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  24. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  25. package/dist/_dts/api/src/media.d.ts +1 -0
  26. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +3 -4
  27. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +11 -0
  28. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +25 -12
  29. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +2 -0
  30. package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +1 -0
  31. package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
  32. package/dist/_dts/api/src/sdkBookingVerticalContracts.d.ts +29 -0
  33. package/dist/_dts/api/src/sdkContracts.d.ts +9 -32
  34. package/dist/_dts/api/src/sdkEndpointDefinitions.d.ts +23 -0
  35. package/dist/_dts/api/src/sdkSettingsContracts.d.ts +25 -0
  36. package/dist/_dts/api/src/sdkThemeCatalogContracts.d.ts +20 -0
  37. package/dist/_dts/api/src/sdkThemeWire.d.ts +16 -6
  38. package/dist/_dts/api/src/siteOnboarding.d.ts +3 -3
  39. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +4 -10
  40. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +0 -3
  41. package/dist/_dts/api/src/types.d.ts +1 -2
  42. package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -13
  43. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +9 -0
  44. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +26 -44
  45. package/dist/_dts/blocks/src/index.d.ts +1 -1
  46. package/dist/_dts/blocks/src/subroutes/fold.d.ts +2 -1
  47. package/dist/_dts/blocks/src/system/blocks/courses/shared/index.d.ts +0 -3
  48. package/dist/_dts/blocks/src/system/blocks/courses/shared/pricing.d.ts +2 -50
  49. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +1 -929
  50. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +1 -97
  51. package/dist/_dts/blocks/src/system/blocks/event-details.d.ts +39 -6
  52. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -1
  53. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +3 -3
  54. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -3
  55. package/dist/_dts/blocks/src/system/blocks/events/shared/filtering.d.ts +2 -2
  56. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +6 -6
  57. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +2 -9
  58. package/dist/_dts/blocks/src/system/blocks/events/whole-series/index.d.ts +3 -0
  59. package/dist/_dts/blocks/src/system/blocks/events/whole-series/pricing.d.ts +50 -0
  60. package/dist/_dts/blocks/src/system/blocks/events/whole-series/schemas.d.ts +135 -0
  61. package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +81 -0
  62. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -9
  63. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +7 -8
  65. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  66. package/dist/_dts/blocks/src/system/runtime/blockComposition.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +45 -72
  68. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -36
  69. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessWholeSeriesRegistrationFlow.d.ts +6 -6
  70. package/dist/_dts/blocks/src/system/runtime/nodes/course-page-surface-scope.d.ts +2 -5
  71. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.client.d.ts +4 -2
  72. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +19 -7
  73. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +25 -4
  74. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +75 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/view.d.ts +4 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +5 -2
  77. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +5 -2
  78. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +4 -0
  79. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/RegistrationClosedState.d.ts +5 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SiteCreditPreviewPanel.d.ts +6 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +2 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +17 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +3 -3
  84. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/siteCreditPreview.d.ts +51 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +3 -3
  86. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/BookingModeStep.d.ts +1 -1
  88. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/CheckIcon.d.ts +1 -1
  89. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/ErrorStep.d.ts +1 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/MembershipHero.d.ts +3 -3
  91. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/PaymentFailedStep.d.ts +1 -1
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/StepIndicator.d.ts +6 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/VerifyingTimeoutStep.d.ts +1 -1
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationActiveSteps.d.ts +9 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/CourseRegistrationErrorBoundary.d.ts → event-registration/whole-series/WholeSeriesRegistrationErrorBoundary.d.ts} +5 -2
  96. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationTerminalContent.d.ts +8 -0
  97. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationWizard.d.ts +8 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/components.d.ts +45 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/index.d.ts +4 -4
  100. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/presentation.d.ts +7 -0
  101. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/pricing.d.ts +14 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/types.d.ts +18 -16
  103. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/useCourseEligibility.d.ts → event-registration/whole-series/useWholeSeriesEligibility.d.ts} +6 -6
  104. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesPaymentVerification.d.ts +10 -0
  105. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationActions.d.ts +35 -0
  106. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/useCourseRegistrationPortal.d.ts → event-registration/whole-series/useWholeSeriesRegistrationPortal.d.ts} +2 -2
  107. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationSelection.d.ts +35 -0
  108. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationWizard.d.ts +185 -0
  109. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/useCourseWaitlistSelection.d.ts → event-registration/whole-series/useWholeSeriesWaitlistSelection.d.ts} +5 -5
  110. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/utils.d.ts +4 -4
  111. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/whole-series-registration.headless.contract.d.ts +5 -7
  112. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/whole-series-registration.headless.planning.d.ts +2 -2
  113. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wholeSeriesPageSurfaceScope.d.ts +17 -0
  114. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/courseRegistrationViewState.d.ts → event-registration/whole-series/wholeSeriesRegistrationViewState.d.ts} +7 -7
  115. package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/wizardSteps.d.ts +4 -4
  116. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -54
  117. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
  118. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  119. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +12 -11
  120. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +3 -2
  121. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +3 -2
  122. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +3 -2
  123. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +4 -3
  124. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModalCloseButton.d.ts +7 -0
  125. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +4 -3
  126. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +14 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +19 -4
  128. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -1
  129. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +12 -12
  130. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +1 -0
  131. package/dist/_dts/blocks/src/system/transforms/registry/_utils/boxStyleClassNames.d.ts +30 -11
  132. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +15 -4
  133. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +1 -0
  134. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -4
  135. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +13 -0
  136. package/dist/_dts/commerce/src/purchase/cancellationPolicy.d.ts +7 -0
  137. package/dist/_dts/commerce/src/purchase/canonicalRefundPlanner.d.ts +48 -0
  138. package/dist/_dts/commerce/src/purchase/checkoutCollectionPlan.d.ts +39 -0
  139. package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +40 -0
  140. package/dist/_dts/commerce/src/purchase/checkoutDiscountContextPlanning.d.ts +80 -0
  141. package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -0
  142. package/dist/_dts/commerce/src/purchase/checkoutOrderItemProjection.d.ts +22 -0
  143. package/dist/_dts/commerce/src/purchase/checkoutPaymentFlow.d.ts +50 -0
  144. package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +30 -0
  145. package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +10 -0
  146. package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +53 -0
  147. package/dist/_dts/commerce/src/purchase/checkoutQuantity.d.ts +8 -0
  148. package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +76 -0
  149. package/dist/_dts/commerce/src/purchase/checkoutSettlement.d.ts +46 -0
  150. package/dist/_dts/commerce/src/purchase/checkoutStripeFinalizationPlanning.d.ts +12 -0
  151. package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +125 -0
  152. package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +55 -0
  153. package/dist/_dts/commerce/src/purchase/confirmationEmailPayment.d.ts +91 -0
  154. package/dist/_dts/commerce/src/purchase/discountApplication.d.ts +74 -0
  155. package/dist/_dts/commerce/src/purchase/index.d.ts +55 -0
  156. package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +86 -0
  157. package/dist/_dts/commerce/src/purchase/order-number.d.ts +33 -0
  158. package/dist/_dts/commerce/src/purchase/orderCancellationPlan.d.ts +19 -0
  159. package/dist/_dts/commerce/src/purchase/orderCompletionEmailPlan.d.ts +71 -0
  160. package/dist/_dts/commerce/src/purchase/orderConfirmationPlanning.d.ts +120 -0
  161. package/dist/_dts/commerce/src/purchase/orderFulfillmentPlan.d.ts +81 -0
  162. package/dist/_dts/commerce/src/purchase/orderFulfillmentResult.d.ts +8 -0
  163. package/dist/_dts/commerce/src/purchase/orderHistoryLedgerFilters.d.ts +1 -0
  164. package/dist/_dts/commerce/src/purchase/orderHistorySource.d.ts +11 -0
  165. package/dist/_dts/commerce/src/purchase/orderInstalmentAdminSettlement.d.ts +43 -0
  166. package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +29 -0
  167. package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +44 -0
  168. package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +24 -0
  169. package/dist/_dts/commerce/src/purchase/orderInstalmentPlan.d.ts +40 -0
  170. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +151 -0
  171. package/dist/_dts/commerce/src/purchase/orderItemSupport.d.ts +14 -0
  172. package/dist/_dts/commerce/src/purchase/orderListFilters.d.ts +3 -0
  173. package/dist/_dts/commerce/src/purchase/orderPaymentLinkPlanning.d.ts +60 -0
  174. package/dist/_dts/commerce/src/purchase/orderPaymentReceipt.d.ts +184 -0
  175. package/dist/_dts/commerce/src/purchase/orderPaymentState.d.ts +135 -0
  176. package/dist/_dts/commerce/src/purchase/orderPlanningTypes.d.ts +102 -0
  177. package/dist/_dts/commerce/src/purchase/orderRefundPlanning.d.ts +50 -0
  178. package/dist/_dts/commerce/src/purchase/orderRefundPolicy.d.ts +36 -0
  179. package/dist/_dts/commerce/src/purchase/orderTotals.d.ts +23 -0
  180. package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +39 -0
  181. package/dist/_dts/commerce/src/purchase/pendingCheckoutSessionClaim.d.ts +1 -0
  182. package/dist/_dts/commerce/src/purchase/persistedCheckoutLines.d.ts +27 -0
  183. package/dist/_dts/commerce/src/purchase/protectedDepositRefundPolicy.d.ts +86 -0
  184. package/dist/_dts/commerce/src/purchase/refundPolicy.d.ts +8 -0
  185. package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +40 -0
  186. package/dist/_dts/commerce/src/purchase/result.d.ts +2 -0
  187. package/dist/_dts/commerce/src/purchase/settlement.d.ts +97 -0
  188. package/dist/_dts/commerce/src/purchase/shopRefundPlanning.d.ts +43 -0
  189. package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +31 -0
  190. package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +10 -0
  191. package/dist/_dts/commerce/src/purchase/types.d.ts +168 -0
  192. package/dist/_dts/commerce/src/shop/shipmentEligibility.d.ts +14 -0
  193. package/dist/_dts/commerce/src/utils/assertNever.d.ts +1 -0
  194. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -0
  195. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -0
  196. package/dist/_dts/core/src/booking-vertical-catalog.d.ts +741 -0
  197. package/dist/_dts/core/src/booking-vertical-config.d.ts +66 -0
  198. package/dist/_dts/core/src/booking-vertical-definitions.d.ts +68 -0
  199. package/dist/_dts/{api/src/bookingVerticalPreset.d.ts → core/src/booking-vertical-preset.d.ts} +1 -1
  200. package/dist/_dts/core/src/booking-verticals.d.ts +98 -0
  201. package/dist/_dts/core/src/event-page-selection.d.ts +22 -0
  202. package/dist/_dts/core/src/event-pricing.d.ts +5 -0
  203. package/dist/_dts/core/src/event-series-behaviour.d.ts +16 -0
  204. package/dist/_dts/core/src/index.d.ts +3 -0
  205. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +72 -0
  206. package/dist/_dts/db/src/schemas/forms.d.ts +4 -4
  207. package/dist/_dts/media-core/src/fileUploadCompletion.d.ts +3 -0
  208. package/dist/_dts/media-core/src/fileUploadDurableFinalization.d.ts +2 -0
  209. package/dist/_dts/media-core/src/identifiers.d.ts +10 -0
  210. package/dist/_dts/media-core/src/mediaWriteNormalizer.d.ts +2 -6
  211. package/dist/_dts/media-core/src/types.d.ts +2 -1
  212. package/dist/_dts/media-editor/src/index.d.ts +2 -2
  213. package/dist/_dts/media-editor/src/mediaSelection.d.ts +1 -22
  214. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +0 -9
  215. package/dist/_dts/preview-next/src/client/preview/ButtonHoverRoleControls.d.ts +10 -0
  216. package/dist/_dts/preview-next/src/client/preview/ButtonStylePicker.d.ts +3 -2
  217. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -1
  218. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
  219. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
  220. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -1
  221. package/dist/_dts/preview-next/src/client/preview/StyleConfiguratorWarningNotice.d.ts +7 -0
  222. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -1
  223. package/dist/_dts/sdk/src/client/eventSubrouteReadOperations.d.ts +11 -0
  224. package/dist/_dts/sdk/src/client/types.d.ts +12 -5
  225. package/dist/_dts/sdk/src/components.d.ts +1 -1
  226. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  227. package/dist/_dts/sdk/src/contracts/page.d.ts +2 -13
  228. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -16
  229. package/dist/_dts/sdk/src/next/pageMetadataProjection.d.ts +7 -0
  230. package/dist/_dts/sdk/src/next/resolveEventPageSubroute.d.ts +12 -0
  231. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -19
  232. package/dist/_dts/sdk/src/public-api/eventSubrouteContracts.d.ts +12 -0
  233. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  234. package/dist/_dts/sdk/src/rendering/client.d.ts +44 -0
  235. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  236. package/dist/_dts/sdk/src/routing/entrySubroutes.d.ts +1 -1
  237. package/dist/_dts/sdk/src/routing/resolveOccurrence.d.ts +4 -3
  238. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +7 -3
  239. package/dist/_dts/sdk/src/version.d.ts +1 -1
  240. package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +1 -1
  241. package/dist/_dts/theme-core/src/buttons/contextualHover.d.ts +41 -0
  242. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  243. package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +3 -0
  244. package/dist/_dts/theme-core/src/buttons/resolveButtonHoverTreatment.d.ts +14 -0
  245. package/dist/_dts/theme-core/src/buttons/styles/domain.d.ts +21 -4
  246. package/dist/_dts/theme-core/src/buttons/styles/recipes/flatInk.d.ts +92 -0
  247. package/dist/_dts/theme-core/src/buttons/styles/recipes/staticRecipes.d.ts +10 -150
  248. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +57 -102
  249. package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +50 -2
  250. package/dist/_dts/theme-core/src/buttons/types.d.ts +29 -0
  251. package/dist/_dts/theme-core/src/cards/types.d.ts +3 -25
  252. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  253. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +21 -6
  254. package/dist/_dts/theme-core/src/schema.d.ts +21 -33
  255. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +27 -0
  256. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +27 -0
  257. package/dist/_dts/theme-core/src/site-styles/buttonSelectionCompiler.d.ts +18 -0
  258. package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +21 -0
  259. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +2 -11
  260. package/dist/_dts/theme-core/src/site-styles/selectionFallbackWarning.d.ts +15 -0
  261. package/dist/_dts/theme-core/src/site-styles/types.d.ts +13 -1
  262. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -0
  263. package/dist/client/{DiscountCodeDisclosure-BPZ-yfGI.mjs → DiscountCodeDisclosure-DO7llLxm.mjs} +12 -12
  264. package/dist/client/{EventCombined.client-Cjt3kKYR.mjs → EventCombined.client-xID7zN__.mjs} +36 -48
  265. package/dist/client/{EventListing.client-DY9dn6Fh.mjs → EventListing.client-CriBslp0.mjs} +2 -2
  266. package/dist/client/{LeafletStaticMap--2c61XYn.mjs → LeafletStaticMap-DYmHnM8g.mjs} +1 -1
  267. package/dist/client/{StepIndicator-CLjQhkDb.mjs → StepIndicator-CGixP_LW.mjs} +2 -2
  268. package/dist/client/{CourseRegistrationWizard-DGW9F0SQ.mjs → WholeSeriesRegistrationWizard-BEjzSiOA.mjs} +1408 -1245
  269. package/dist/client/{accordion-_boYwHHi.mjs → accordion-CgFbnnnQ.mjs} +1 -1
  270. package/dist/client/{bookingForm--AqEfyBX.mjs → bookingForm-dUyGpbxc.mjs} +5 -5
  271. package/dist/client/bookings.mjs +635 -471
  272. package/dist/client/{carousel-CVI2dqZr.mjs → carousel-BvBwkUzx.mjs} +1 -1
  273. package/dist/client/{cart-DR6IiPz9.mjs → cart-DiZENT2E.mjs} +3 -3
  274. package/dist/client/{checkout-CsrGAfQt.mjs → checkout-Dq13KIgR.mjs} +3 -3
  275. package/dist/client/client.mjs +6291 -3452
  276. package/dist/client/{courseRegistration-aNJVaLa3.mjs → courseRegistration-CKC5NmyH.mjs} +10 -4
  277. package/dist/client/{eventCalendar-OZ7h59VN.mjs → eventCalendar-BF0Jatfw.mjs} +40 -43
  278. package/dist/client/{eventCombined-BbJ6bFKz.mjs → eventCombined-BuoCF8je.mjs} +2 -2
  279. package/dist/client/{eventDetails-BLyUBiCT.mjs → eventDetails-CKwh0S9s.mjs} +276 -94
  280. package/dist/client/{eventListing-DuP1yhBS.mjs → eventListing-eUxaWFaB.mjs} +2 -2
  281. package/dist/client/{eventRegistration-BXyECPa-.mjs → eventRegistration-CfkNOkPb.mjs} +625 -132
  282. package/dist/client/{form-BA4t3kKU.mjs → form-C17H1c_H.mjs} +1 -1
  283. package/dist/client/{headerSection-CpNaJxhW.mjs → headerSection-DEwUmrtt.mjs} +2 -2
  284. package/dist/client/hooks.mjs +1312 -481
  285. package/dist/client/{locationMap-3HGMCL7_.mjs → locationMap-Pf2QwuvW.mjs} +2 -2
  286. package/dist/client/{newsletterForm-C2s6Mw67.mjs → newsletterForm-BWQAH5Sv.mjs} +1 -1
  287. package/dist/client/pricing-CVdvbopJ.mjs +195 -0
  288. package/dist/client/{productDetail-C9joWhdE.mjs → productDetail-BZi1Fa_G.mjs} +3 -3
  289. package/dist/client/{productList-CjzdU3pB.mjs → productList-qq-55DNk.mjs} +3 -3
  290. package/dist/client/{propsDecoder-CBPGXEYX.mjs → propsDecoder-BxmqPKdP.mjs} +412 -196
  291. package/dist/client/rendering/client.mjs +5685 -4037
  292. package/dist/client/rendering/islands.mjs +18 -18
  293. package/dist/client/rendering.mjs +7006 -4124
  294. package/dist/client/{scrollToBlock-DZ73aEX6.mjs → scrollToBlock-B3CcKdtG.mjs} +1 -1
  295. package/dist/client/{shop-CQRai7hj.mjs → shop-DNWJPut5.mjs} +5 -5
  296. package/dist/client/{shop-commerce-hP9UboOx.mjs → shop-commerce-BhvQCosS.mjs} +4 -4
  297. package/dist/client/{shop-commerce-store-DiD5a32e.mjs → shop-commerce-store-B04sCNnW.mjs} +1 -1
  298. package/dist/client/{shopShared-DP8DXTkF.mjs → shopShared-DNNgZlmW.mjs} +2 -2
  299. package/dist/client/{useEventFilters-pF_OJNQP.mjs → useEventFilters-CUmhE24_.mjs} +195 -6
  300. package/dist/client/{usePolling-Cls91SD2.mjs → usePolling-M5jG675x.mjs} +3 -3
  301. package/dist/preview-next/before-render.mjs +247 -60
  302. package/dist/preview-next/client/runtime.mjs +4 -4
  303. package/dist/preview-next/keepAlive.mjs +247 -60
  304. package/dist/preview-next/middleware.mjs +247 -60
  305. package/dist/{previewAuthStore-CX1C_KJ4.mjs → previewAuthStore-BFKd4LrN.mjs} +247 -60
  306. package/dist/{sdk-runtime-5CcPAI14.mjs → sdk-runtime-BEXb1wqo.mjs} +2 -2
  307. package/dist/{separator-BXlYN_gr.mjs → separator-DGMuip1D.mjs} +1 -1
  308. package/dist/server/components.mjs +3461 -1577
  309. package/dist/server/config-validation.mjs +1312 -482
  310. package/dist/server/config.mjs +1312 -482
  311. package/dist/server/data.mjs +1312 -481
  312. package/dist/server/index.mjs +289 -81
  313. package/dist/server/manifest.mjs +0 -1
  314. package/dist/server/next.mjs +3576 -1689
  315. package/dist/server/page-converter.mjs +797 -250
  316. package/dist/server/prebuild.mjs +1 -1
  317. package/dist/server/rendering/server.mjs +3461 -1576
  318. package/dist/server/rendering.mjs +3461 -1577
  319. package/dist/server/routing.mjs +1555 -616
  320. package/dist/server/server.mjs +1352 -560
  321. package/dist/server/theme-bridge.mjs +1992 -931
  322. package/dist/server/theme.mjs +346 -133
  323. package/dist/styles/index.css +1602 -796
  324. package/package.json +1 -1
  325. package/dist/_dts/api/src/bookingVerticalCatalog.d.ts +0 -746
  326. package/dist/_dts/api/src/eventSeriesPresentationPreset.d.ts +0 -12
  327. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/CourseRegistrationWizard.d.ts +0 -3
  328. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/StepIndicator.d.ts +0 -6
  329. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/components.d.ts +0 -45
  330. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/pricing.d.ts +0 -14
  331. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCoursePaymentVerification.d.ts +0 -9
  332. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationActions.d.ts +0 -35
  333. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationSelection.d.ts +0 -31
  334. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +0 -102
  335. package/dist/client/eventProductEligibility-AVxyCB1u.mjs +0 -50
  336. package/dist/client/pricing-BiqIMgZk.mjs +0 -174
  337. /package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/PortalAuthSidebar.d.ts +0 -0
  338. /package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/SuccessStep.d.ts +0 -0
  339. /package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/WaitlistStep.d.ts +0 -0
@@ -187,7 +187,7 @@ var init_block_kinds = __esmMin((() => {
187
187
  }));
188
188
  //#endregion
189
189
  //#region src/types/index.ts
190
- var init_types$16 = __esmMin((() => {
190
+ var init_types$17 = __esmMin((() => {
191
191
  init_block_kinds();
192
192
  }));
193
193
  //#endregion
@@ -533,7 +533,7 @@ function mergeLoaderResults(configResults, codeResults) {
533
533
  }
534
534
  var systemBlockKindSet;
535
535
  var init_executeCodeLoaders = __esmMin((() => {
536
- init_types$16();
536
+ init_types$17();
537
537
  init_dataLoaderContext();
538
538
  init_dataLoaderValue();
539
539
  init_defineOwnDataProperty();
@@ -1901,6 +1901,22 @@ var init_publicWholeSeriesEndpointDefinitions = __esmMin((() => {
1901
1901
  });
1902
1902
  }));
1903
1903
  //#endregion
1904
+ //#region ../api/src/publicEventEndpointDefinitions.ts
1905
+ var PUBLIC_EVENT_ENDPOINT_DEFINITIONS;
1906
+ var init_publicEventEndpointDefinitions = __esmMin((() => {
1907
+ init_cache_tags();
1908
+ init_defineEndpointDefinitions();
1909
+ PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ resolveEventSubroute: {
1910
+ path: "/public/sites/{siteId}/events/subroutes/resolve",
1911
+ method: "GET",
1912
+ revalidate: 60,
1913
+ tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1914
+ auth: "public",
1915
+ responseKind: "json",
1916
+ errors: []
1917
+ } });
1918
+ }));
1919
+ //#endregion
1904
1920
  //#region ../api/src/siteApiKeyEndpointDefinitions.ts
1905
1921
  var SITE_API_KEY_ENDPOINT_DEFINITIONS;
1906
1922
  var init_siteApiKeyEndpointDefinitions = __esmMin((() => {
@@ -2034,6 +2050,243 @@ var init_eventManagementEndpointDefinitions = __esmMin((() => {
2034
2050
  "resource:conflict",
2035
2051
  "server:internal_error"
2036
2052
  ]
2053
+ },
2054
+ updateEventIdentity: {
2055
+ path: "/sites/{siteId}/bookings/events/{eventId}",
2056
+ method: "PATCH",
2057
+ tags: ["site-{siteId}", "event-series-{siteId}"],
2058
+ auth: "user",
2059
+ responseKind: "json",
2060
+ errors: [
2061
+ "validation:invalid_input",
2062
+ "resource:not_found",
2063
+ "server:internal_error"
2064
+ ]
2065
+ },
2066
+ createWholeSeriesRun: {
2067
+ path: "/sites/{siteId}/bookings/events/{eventId}/runs",
2068
+ method: "POST",
2069
+ tags: ["site-{siteId}", "event-series-{siteId}"],
2070
+ auth: "user",
2071
+ responseKind: "json",
2072
+ errors: [
2073
+ "validation:invalid_input",
2074
+ "resource:not_found",
2075
+ "resource:already_exists",
2076
+ "server:internal_error"
2077
+ ]
2078
+ },
2079
+ updateWholeSeriesRun: {
2080
+ path: "/sites/{siteId}/bookings/events/{eventId}/runs/{runId}",
2081
+ method: "PATCH",
2082
+ tags: ["site-{siteId}", "event-series-{siteId}"],
2083
+ auth: "user",
2084
+ responseKind: "json",
2085
+ errors: [
2086
+ "validation:invalid_input",
2087
+ "resource:not_found",
2088
+ "resource:conflict",
2089
+ "server:internal_error"
2090
+ ]
2091
+ },
2092
+ cancelWholeSeriesRun: {
2093
+ path: "/sites/{siteId}/bookings/events/{eventId}/runs/{runId}/cancellation",
2094
+ method: "POST",
2095
+ tags: ["site-{siteId}", "event-series-{siteId}"],
2096
+ auth: "user",
2097
+ responseKind: "json",
2098
+ errors: [
2099
+ "validation:invalid_input",
2100
+ "resource:not_found",
2101
+ "resource:conflict",
2102
+ "server:internal_error"
2103
+ ]
2104
+ }
2105
+ });
2106
+ }));
2107
+ //#endregion
2108
+ //#region ../api/src/giftingEndpointDefinitions.ts
2109
+ var GIFTING_ENDPOINT_DEFINITIONS;
2110
+ var init_giftingEndpointDefinitions = __esmMin((() => {
2111
+ init_cache_tags();
2112
+ init_defineEndpointDefinitions();
2113
+ init_demoMutationPolicies();
2114
+ GIFTING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
2115
+ createGiftingOffer: {
2116
+ path: "/sites/{siteId}/gifting/offers",
2117
+ method: "POST",
2118
+ tags: ["site-{siteId}", "gifting-offers-{siteId}"],
2119
+ auth: "user",
2120
+ responseKind: "json",
2121
+ errors: [
2122
+ "validation:invalid_input",
2123
+ "auth:forbidden",
2124
+ "server:internal_error"
2125
+ ]
2126
+ },
2127
+ updateGiftingOffer: {
2128
+ path: "/sites/{siteId}/gifting/offers/{offerId}",
2129
+ method: "PATCH",
2130
+ tags: ["site-{siteId}", "gifting-offers-{siteId}"],
2131
+ auth: "user",
2132
+ responseKind: "json",
2133
+ errors: [
2134
+ "validation:invalid_input",
2135
+ "auth:forbidden",
2136
+ "resource:not_found",
2137
+ "resource:conflict",
2138
+ "server:internal_error"
2139
+ ]
2140
+ },
2141
+ deleteGiftingOffer: {
2142
+ path: "/sites/{siteId}/gifting/offers/{offerId}",
2143
+ method: "DELETE",
2144
+ tags: ["site-{siteId}", "gifting-offers-{siteId}"],
2145
+ auth: "user",
2146
+ responseKind: "json",
2147
+ errors: [
2148
+ "auth:forbidden",
2149
+ "resource:not_found",
2150
+ "resource:conflict",
2151
+ "server:internal_error"
2152
+ ]
2153
+ },
2154
+ duplicateGiftingOffer: {
2155
+ path: "/sites/{siteId}/gifting/offers/{offerId}/duplicate",
2156
+ method: "POST",
2157
+ tags: ["site-{siteId}", "gifting-offers-{siteId}"],
2158
+ auth: "user",
2159
+ responseKind: "json",
2160
+ errors: [
2161
+ "auth:forbidden",
2162
+ "resource:not_found",
2163
+ "server:internal_error"
2164
+ ]
2165
+ },
2166
+ reorderGiftingOffers: {
2167
+ path: "/sites/{siteId}/gifting/offers/order",
2168
+ method: "PUT",
2169
+ tags: ["site-{siteId}", "gifting-offers-{siteId}"],
2170
+ auth: "user",
2171
+ responseKind: "json",
2172
+ errors: [
2173
+ "validation:invalid_input",
2174
+ "auth:forbidden",
2175
+ "resource:not_found",
2176
+ "server:internal_error"
2177
+ ]
2178
+ },
2179
+ sendGift: {
2180
+ path: "/sites/{siteId}/gifting/gifts",
2181
+ method: "POST",
2182
+ tags: ["site-{siteId}", "gifting-gifts-{siteId}"],
2183
+ auth: "user",
2184
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
2185
+ responseKind: "json",
2186
+ errors: [
2187
+ "validation:invalid_input",
2188
+ "auth:forbidden",
2189
+ "resource:not_found",
2190
+ "server:internal_error"
2191
+ ]
2192
+ },
2193
+ resendGift: {
2194
+ path: "/sites/{siteId}/gifting/gifts/{giftId}/resend",
2195
+ method: "POST",
2196
+ tags: ["site-{siteId}", "gifting-gifts-{siteId}"],
2197
+ auth: "user",
2198
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
2199
+ responseKind: "json",
2200
+ errors: [
2201
+ "auth:forbidden",
2202
+ "resource:not_found",
2203
+ "resource:conflict",
2204
+ "server:internal_error"
2205
+ ]
2206
+ },
2207
+ correctGiftEmailAndResend: {
2208
+ path: "/sites/{siteId}/gifting/gifts/{giftId}/correct-email-and-resend",
2209
+ method: "POST",
2210
+ tags: ["site-{siteId}", "gifting-gifts-{siteId}"],
2211
+ auth: "user",
2212
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN,
2213
+ responseKind: "json",
2214
+ errors: [
2215
+ "validation:invalid_input",
2216
+ "auth:forbidden",
2217
+ "resource:not_found",
2218
+ "resource:conflict",
2219
+ "server:internal_error"
2220
+ ]
2221
+ },
2222
+ updateGiftingSettings: {
2223
+ path: "/sites/{siteId}/gifting/settings",
2224
+ method: "PATCH",
2225
+ tags: [
2226
+ "site-{siteId}",
2227
+ "gifting-offers-{siteId}",
2228
+ "gifting-gifts-{siteId}"
2229
+ ],
2230
+ auth: "user",
2231
+ responseKind: "json",
2232
+ errors: [
2233
+ "validation:invalid_input",
2234
+ "auth:forbidden",
2235
+ "server:internal_error"
2236
+ ]
2237
+ },
2238
+ listPublicGiftingOffers: {
2239
+ path: "/public/sites/{siteId}/gifting/offers",
2240
+ method: "GET",
2241
+ revalidate: 300,
2242
+ tags: [TAG_TEMPLATES.publicGifting],
2243
+ errors: [],
2244
+ auth: "public",
2245
+ responseKind: "json"
2246
+ },
2247
+ createPublicGiftingCheckout: {
2248
+ path: "/public/sites/{siteId}/gifting/checkout",
2249
+ method: "POST",
2250
+ tags: [TAG_TEMPLATES.publicGifting],
2251
+ errors: [],
2252
+ auth: "public",
2253
+ responseKind: "json"
2254
+ },
2255
+ claimGiftCardPublic: {
2256
+ path: "/public/sites/{siteId}/gifting/claim",
2257
+ method: "POST",
2258
+ tags: [TAG_TEMPLATES.publicGifting],
2259
+ errors: [],
2260
+ auth: "public",
2261
+ responseKind: "json"
2262
+ }
2263
+ });
2264
+ }));
2265
+ //#endregion
2266
+ //#region ../api/src/sdkEndpointDefinitions.ts
2267
+ var SDK_ENDPOINT_DEFINITIONS;
2268
+ var init_sdkEndpointDefinitions = __esmMin((() => {
2269
+ init_defineEndpointDefinitions();
2270
+ SDK_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
2271
+ sdkUpdateSettings: {
2272
+ path: "/sdk/{siteId}/settings",
2273
+ method: "PATCH",
2274
+ auth: "service",
2275
+ responseKind: "json",
2276
+ errors: ["validation:invalid_input", "server:internal_error"]
2277
+ },
2278
+ sdkConfigureBookingVertical: {
2279
+ path: "/sdk/{siteId}/settings/booking/vertical",
2280
+ method: "POST",
2281
+ auth: "service",
2282
+ responseKind: "json"
2283
+ },
2284
+ sdkSetupRevalidationWebhook: {
2285
+ path: "/sdk/{siteId}/webhooks/revalidation/setup",
2286
+ method: "POST",
2287
+ auth: "service",
2288
+ responseKind: "json",
2289
+ errors: ["validation:invalid_input", "server:internal_error"]
2037
2290
  }
2038
2291
  });
2039
2292
  }));
@@ -2046,13 +2299,20 @@ var init_endpoints = __esmMin((() => {
2046
2299
  init_courseEndpointDefinitions();
2047
2300
  init_newsletterEndpointDefinitions();
2048
2301
  init_publicWholeSeriesEndpointDefinitions();
2302
+ init_publicEventEndpointDefinitions();
2049
2303
  init_siteApiKeyEndpointDefinitions();
2050
2304
  init_eventManagementEndpointDefinitions();
2051
- ({ ...ACCOUNT_ENDPOINT_DEFINITIONS }), 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, {
2305
+ init_giftingEndpointDefinitions();
2306
+ init_sdkEndpointDefinitions();
2307
+ ({
2308
+ ...ACCOUNT_ENDPOINT_DEFINITIONS,
2309
+ ...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
2310
+ ...GIFTING_ENDPOINT_DEFINITIONS
2311
+ }), 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, {
2052
2312
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
2053
2313
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
2054
2314
  ...COURSE_ENDPOINT_DEFINITIONS
2055
- }, 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.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.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.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.formById, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEventFilters, { ...PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicTeamMembers, TAG_TEMPLATES.publicWholeSeriesOfferings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicPasses, TAG_TEMPLATES.publicMemberships, TAG_TEMPLATES.publicProducts, TAG_TEMPLATES.publicGifting, TAG_TEMPLATES.publicGifting, TAG_TEMPLATES.publicGifting, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
2315
+ }, 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.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.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.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.formById, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEventFilters, { ...PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicTeamMembers, TAG_TEMPLATES.publicWholeSeriesOfferings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicPasses, TAG_TEMPLATES.publicMemberships, TAG_TEMPLATES.publicProducts, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
2056
2316
  }));
2057
2317
  var init_preview_auth = __esmMin((() => {
2058
2318
  z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
@@ -2390,6 +2650,9 @@ var init_event_page_surface_subject = __esmMin((() => {
2390
2650
  init_result();
2391
2651
  }));
2392
2652
  //#endregion
2653
+ //#region ../core/src/event-page-selection.ts
2654
+ var init_event_page_selection = __esmMin((() => {}));
2655
+ //#endregion
2393
2656
  //#region ../core/src/public-event-booking-availability.ts
2394
2657
  var init_public_event_booking_availability = __esmMin((() => {}));
2395
2658
  //#endregion
@@ -2742,6 +3005,319 @@ var init_secret = __esmMin((() => {
2742
3005
  //#region ../core/src/site-route-target.ts
2743
3006
  var init_site_route_target = __esmMin((() => {}));
2744
3007
  //#endregion
3008
+ //#region ../core/src/event-series-behaviour.ts
3009
+ var SURFACE_EVENT_PRESET_VALUES;
3010
+ var init_event_series_behaviour = __esmMin((() => {
3011
+ SURFACE_EVENT_PRESET_VALUES = [
3012
+ "class",
3013
+ "course",
3014
+ "term",
3015
+ "workshop",
3016
+ "retreat",
3017
+ "performance"
3018
+ ];
3019
+ }));
3020
+ //#endregion
3021
+ //#region ../core/src/booking-vertical-preset.ts
3022
+ function verticalBookingPreset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
3023
+ return {
3024
+ id,
3025
+ verticalId,
3026
+ canonicalBehaviour,
3027
+ engine: BOOKING_ENGINE_BY_BEHAVIOUR[canonicalBehaviour],
3028
+ availability,
3029
+ label,
3030
+ pluralLabel,
3031
+ description
3032
+ };
3033
+ }
3034
+ var BOOKING_ENGINE_BY_BEHAVIOUR;
3035
+ var init_booking_vertical_preset = __esmMin((() => {
3036
+ BOOKING_ENGINE_BY_BEHAVIOUR = {
3037
+ class: "event_series",
3038
+ workshop: "event_series",
3039
+ course: "event_series",
3040
+ retreat: "event_series",
3041
+ performance: "event_series",
3042
+ appointment: "appointment_service"
3043
+ };
3044
+ })), VERTICAL_DEFINITIONS;
3045
+ var init_booking_vertical_definitions = __esmMin((() => {
3046
+ VERTICAL_DEFINITIONS = [
3047
+ {
3048
+ id: "yoga_wellness",
3049
+ label: "Yoga, meditation or mindfulness",
3050
+ description: "Yoga studios, wellness teachers, and movement practitioners."
3051
+ },
3052
+ {
3053
+ id: "fitness_pt",
3054
+ label: "Fitness and personal training",
3055
+ description: "Personal trainers, group training, and fitness programmes."
3056
+ },
3057
+ {
3058
+ id: "dance_school",
3059
+ label: "Dance school",
3060
+ description: "Dance classes, courses or terms, workshops, private lessons, and shows."
3061
+ },
3062
+ {
3063
+ id: "physiotherapy_physical_health",
3064
+ label: "Physiotherapy & physical health",
3065
+ description: "Physiotherapists, chiropractors, osteopaths, sports therapists, and rehabilitation practitioners."
3066
+ },
3067
+ {
3068
+ id: "massage_bodywork",
3069
+ label: "Massage & bodywork",
3070
+ description: "Massage therapists, bodyworkers, and somatic practitioners."
3071
+ },
3072
+ {
3073
+ id: "therapist_practitioner",
3074
+ label: "Therapist or practitioner",
3075
+ description: "Appointments, sessions, consultations, and occasional group work."
3076
+ },
3077
+ {
3078
+ id: "beauty_spa",
3079
+ label: "Beauty or spa",
3080
+ description: "Treatment-led businesses with optional workshops."
3081
+ },
3082
+ {
3083
+ id: "consultant_coach",
3084
+ label: "Consultant or coach",
3085
+ description: "One-to-one calls, workshops, courses, and retreats."
3086
+ },
3087
+ {
3088
+ id: "training_provider",
3089
+ label: "Training provider",
3090
+ description: "Courses, workshops, classes, appointments, and residential training."
3091
+ },
3092
+ {
3093
+ id: "retreat_centre",
3094
+ label: "Retreat centre",
3095
+ description: "Residential retreats, workshops, classes, courses, and private sessions."
3096
+ },
3097
+ {
3098
+ id: "music_school",
3099
+ label: "Music teacher or school",
3100
+ description: "Lessons, classes, terms, workshops, and performances."
3101
+ },
3102
+ {
3103
+ id: "voice_singing",
3104
+ label: "Voice & Singing",
3105
+ description: "Singing lessons, choirs, voice circles, workshops, and performances."
3106
+ },
3107
+ {
3108
+ id: "performing_arts_school",
3109
+ label: "Theatre or performing arts school",
3110
+ description: "Classes, terms, workshops, performances, and lessons."
3111
+ },
3112
+ {
3113
+ id: "community_wellbeing",
3114
+ label: "Community or wellbeing centre",
3115
+ description: "Groups, workshops, courses, appointments, and retreats."
3116
+ },
3117
+ {
3118
+ id: "venue_event_space",
3119
+ label: "Venue or event space",
3120
+ description: "Room, resource, or access bookings. Depends on the future capacity-booking domain."
3121
+ }
3122
+ ];
3123
+ VERTICAL_DEFINITIONS.map(({ id }) => id);
3124
+ }));
3125
+ //#endregion
3126
+ //#region ../core/src/booking-vertical-catalog.ts
3127
+ var VERTICAL_BOOKING_PRESETS;
3128
+ var init_booking_vertical_catalog = __esmMin((() => {
3129
+ init_booking_vertical_preset();
3130
+ init_booking_vertical_definitions();
3131
+ VERTICAL_BOOKING_PRESETS = [
3132
+ verticalBookingPreset("yoga_wellness.classes", "yoga_wellness", "class", "Class", "Classes", "Regular scheduled classes and group sessions."),
3133
+ verticalBookingPreset("yoga_wellness.workshops", "yoga_wellness", "workshop", "Workshop", "Workshops", "One-off workshops, day retreats, or special sessions."),
3134
+ verticalBookingPreset("yoga_wellness.courses", "yoga_wellness", "course", "Course", "Courses", "Fixed-schedule courses or multi-session groups."),
3135
+ verticalBookingPreset("yoga_wellness.retreats", "yoga_wellness", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats and immersive experiences."),
3136
+ verticalBookingPreset("yoga_wellness.appointments", "yoga_wellness", "appointment", "Appointment", "Appointments", "Private sessions, consultations, or one-to-one support."),
3137
+ verticalBookingPreset("fitness_pt.group_training", "fitness_pt", "class", "Group training", "Group training", "Regular scheduled classes and group sessions."),
3138
+ verticalBookingPreset("fitness_pt.personal_training", "fitness_pt", "appointment", "Personal training", "Personal training", "One-to-one sessions booked from your availability."),
3139
+ verticalBookingPreset("fitness_pt.programmes", "fitness_pt", "course", "Programme", "Programmes", "Multi-session programmes like bootcamps or courses."),
3140
+ verticalBookingPreset("fitness_pt.workshops", "fitness_pt", "workshop", "Workshop", "Workshops", "One-off workshops, events, or special sessions."),
3141
+ verticalBookingPreset("fitness_pt.retreats", "fitness_pt", "retreat", "Retreat", "Retreats", "Multi-day or residential fitness experiences."),
3142
+ verticalBookingPreset("dance_school.classes", "dance_school", "class", "Class", "Classes", "Regular group classes and weekly sessions."),
3143
+ {
3144
+ ...verticalBookingPreset("dance_school.terms", "dance_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
3145
+ eventPresetOverride: "term"
3146
+ },
3147
+ verticalBookingPreset("dance_school.courses", "dance_school", "course", "Course", "Courses", "Fixed-schedule courses or multi-session groups.", "settings"),
3148
+ verticalBookingPreset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
3149
+ verticalBookingPreset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
3150
+ verticalBookingPreset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
3151
+ verticalBookingPreset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
3152
+ verticalBookingPreset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
3153
+ verticalBookingPreset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
3154
+ verticalBookingPreset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
3155
+ verticalBookingPreset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
3156
+ verticalBookingPreset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
3157
+ verticalBookingPreset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
3158
+ verticalBookingPreset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
3159
+ verticalBookingPreset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
3160
+ verticalBookingPreset("beauty_spa.appointments", "beauty_spa", "appointment", "Appointment", "Appointments", "Treatments, consultations, services, and sessions."),
3161
+ verticalBookingPreset("beauty_spa.workshops", "beauty_spa", "workshop", "Workshop", "Workshops", "Skincare workshops, makeup lessons, demos, or group events."),
3162
+ verticalBookingPreset("consultant_coach.appointments", "consultant_coach", "appointment", "Appointment", "Appointments", "One-to-one calls, consultations, reviews, or coaching sessions."),
3163
+ verticalBookingPreset("consultant_coach.workshops", "consultant_coach", "workshop", "Workshop", "Workshops", "One-off group sessions, webinars, or strategy days."),
3164
+ verticalBookingPreset("consultant_coach.courses", "consultant_coach", "course", "Course", "Courses", "Fixed-schedule cohorts or multi-session group programmes."),
3165
+ verticalBookingPreset("consultant_coach.retreats", "consultant_coach", "retreat", "Retreat", "Retreats", "Multi-day coaching retreats or immersive experiences."),
3166
+ verticalBookingPreset("training_provider.courses", "training_provider", "course", "Course", "Courses", "Fixed-schedule courses, cohorts, and multi-session training."),
3167
+ verticalBookingPreset("training_provider.workshops", "training_provider", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, and short training sessions."),
3168
+ verticalBookingPreset("training_provider.appointments", "training_provider", "appointment", "Appointment", "Appointments", "Consultations, assessments, mentoring, or office hours."),
3169
+ verticalBookingPreset("training_provider.classes", "training_provider", "class", "Class", "Classes", "Regular classes, sessions, or groups.", "settings"),
3170
+ verticalBookingPreset("training_provider.residentials", "training_provider", "retreat", "Residential", "Residentials", "Residential courses or multi-day training experiences.", "settings"),
3171
+ verticalBookingPreset("retreat_centre.retreats", "retreat_centre", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats with richer booking needs."),
3172
+ verticalBookingPreset("retreat_centre.workshops", "retreat_centre", "workshop", "Workshop", "Workshops", "One-day retreats, ceremonies, workshops, or special events."),
3173
+ verticalBookingPreset("retreat_centre.classes", "retreat_centre", "class", "Class", "Classes", "Regular sessions like guided meditations or group practices."),
3174
+ verticalBookingPreset("retreat_centre.courses", "retreat_centre", "course", "Course", "Courses", "Fixed-schedule programmes or multi-session experiences."),
3175
+ verticalBookingPreset("retreat_centre.appointments", "retreat_centre", "appointment", "Appointment", "Appointments", "Private sessions, therapies, consultations, or add-ons."),
3176
+ verticalBookingPreset("music_school.lessons", "music_school", "appointment", "Lesson", "Lessons", "One-to-one lessons, consultations, or coaching sessions."),
3177
+ verticalBookingPreset("music_school.classes", "music_school", "class", "Class", "Classes", "Regular group classes, ensembles, or recurring sessions."),
3178
+ {
3179
+ ...verticalBookingPreset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
3180
+ eventPresetOverride: "term"
3181
+ },
3182
+ verticalBookingPreset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
3183
+ verticalBookingPreset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
3184
+ verticalBookingPreset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
3185
+ verticalBookingPreset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
3186
+ {
3187
+ ...verticalBookingPreset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
3188
+ eventPresetOverride: "term"
3189
+ },
3190
+ verticalBookingPreset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
3191
+ verticalBookingPreset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
3192
+ verticalBookingPreset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
3193
+ {
3194
+ ...verticalBookingPreset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
3195
+ eventPresetOverride: "term"
3196
+ },
3197
+ verticalBookingPreset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
3198
+ verticalBookingPreset("performing_arts_school.performances", "performing_arts_school", "performance", "Performance", "Performances", "Shows, showcases, productions, or ticketed performances."),
3199
+ verticalBookingPreset("performing_arts_school.lessons", "performing_arts_school", "appointment", "Lesson", "Lessons", "One-to-one lessons, coaching, or audition prep."),
3200
+ verticalBookingPreset("community_wellbeing.classes", "community_wellbeing", "class", "Class", "Classes", "Regular groups, sessions, practices, or weekly activities."),
3201
+ verticalBookingPreset("community_wellbeing.workshops", "community_wellbeing", "workshop", "Workshop", "Workshops", "One-off workshops, talks, events, or gatherings."),
3202
+ verticalBookingPreset("community_wellbeing.courses", "community_wellbeing", "course", "Course", "Courses", "Fixed-schedule courses, study groups, or multi-session programmes."),
3203
+ verticalBookingPreset("community_wellbeing.appointments", "community_wellbeing", "appointment", "Appointment", "Appointments", "One-to-one appointments, consultations, or support sessions."),
3204
+ verticalBookingPreset("community_wellbeing.retreats", "community_wellbeing", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats."),
3205
+ verticalBookingPreset("venue_event_space.resource_hire", "venue_event_space", "appointment", "Hire slot", "Hire slots", "Future room, venue, and resource hire bookings.", "future")
3206
+ ];
3207
+ }));
3208
+ //#endregion
3209
+ //#region ../core/src/booking-vertical-config.ts
3210
+ function parseVerticalId(value) {
3211
+ return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
3212
+ }
3213
+ function parseVerticalPresetId(value) {
3214
+ return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
3215
+ }
3216
+ function getVerticalPresetDefinition(presetId) {
3217
+ const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
3218
+ if (definition === void 0) throw new Error(`Unhandled vertical preset id: ${presetId}`);
3219
+ return definition;
3220
+ }
3221
+ function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
3222
+ return {
3223
+ verticalId,
3224
+ selectedPresetIds
3225
+ };
3226
+ }
3227
+ function toNonEmptyVerticalPresetIds(presetIds) {
3228
+ const firstPresetId = presetIds[0];
3229
+ return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
3230
+ }
3231
+ function appendUniqueIssue(issues, issue) {
3232
+ return issues.some((existing) => existing.code === issue.code) ? issues : [...issues, issue];
3233
+ }
3234
+ function collectRawConfigIssues(rawConfig, config) {
3235
+ const rawPresetValue = rawConfig.selectedPresetIds;
3236
+ const rawPresetIds = Array.isArray(rawPresetValue) ? rawPresetValue : [];
3237
+ let issues = [];
3238
+ if (rawConfig.verticalId != null && config.verticalId === null) issues = appendUniqueIssue(issues, {
3239
+ code: "unknown_vertical",
3240
+ rawValue: rawConfig.verticalId
3241
+ });
3242
+ if (config.verticalId === null && config.selectedPresetIds.length > 0) issues = appendUniqueIssue(issues, { code: "missing_vertical" });
3243
+ if (rawPresetValue !== void 0 && !Array.isArray(rawPresetValue) || rawPresetIds.some((presetId) => parseVerticalPresetId(presetId) === null)) issues = appendUniqueIssue(issues, {
3244
+ code: "unknown_preset",
3245
+ rawValue: rawPresetValue
3246
+ });
3247
+ if (rawConfig.verticalId != null && config.selectedPresetIds.length === 0) issues = appendUniqueIssue(issues, { code: "empty_selected_presets" });
3248
+ return issues;
3249
+ }
3250
+ function collectPresetConfigIssues(config) {
3251
+ const seenPresetIds = /* @__PURE__ */ new Set();
3252
+ const seenBehaviours = /* @__PURE__ */ new Set();
3253
+ let issues = [];
3254
+ for (const presetId of config.selectedPresetIds) {
3255
+ const presetDefinition = getVerticalPresetDefinition(presetId);
3256
+ if (seenPresetIds.has(presetId)) issues = appendUniqueIssue(issues, { code: "duplicate_preset_id" });
3257
+ seenPresetIds.add(presetId);
3258
+ if (config.verticalId !== null && presetDefinition.verticalId !== config.verticalId) issues = appendUniqueIssue(issues, { code: "preset_vertical_mismatch" });
3259
+ if (presetDefinition.availability === "future") issues = appendUniqueIssue(issues, { code: "future_preset_selected" });
3260
+ if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) issues = appendUniqueIssue(issues, { code: "duplicate_canonical_behaviour" });
3261
+ seenBehaviours.add(presetDefinition.canonicalBehaviour);
3262
+ }
3263
+ return issues;
3264
+ }
3265
+ function getSiteVerticalConfigIssues(rawConfig, config) {
3266
+ let issues = collectRawConfigIssues(rawConfig, config);
3267
+ for (const issue of collectPresetConfigIssues(config)) issues = appendUniqueIssue(issues, issue);
3268
+ return issues;
3269
+ }
3270
+ function resolveSiteVerticalBookingConfig(rawConfig) {
3271
+ if (rawConfig == null) return {
3272
+ kind: "unconfigured",
3273
+ config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG
3274
+ };
3275
+ const verticalId = parseVerticalId(rawConfig.verticalId);
3276
+ const selectedPresetIds = (Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : []).map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
3277
+ const config = {
3278
+ verticalId,
3279
+ selectedPresetIds
3280
+ };
3281
+ if (rawConfig.verticalId == null && selectedPresetIds.length === 0) return {
3282
+ kind: "unconfigured",
3283
+ config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG
3284
+ };
3285
+ const issues = getSiteVerticalConfigIssues(rawConfig, config);
3286
+ if (issues.length > 0) return {
3287
+ kind: "invalid",
3288
+ config,
3289
+ issues
3290
+ };
3291
+ const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
3292
+ const configuredConfig = verticalId !== null && nonEmptyPresetIds !== null ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
3293
+ if (configuredConfig === null) return {
3294
+ kind: "invalid",
3295
+ config,
3296
+ issues: [{ code: "empty_selected_presets" }]
3297
+ };
3298
+ return {
3299
+ kind: "configured",
3300
+ config: configuredConfig,
3301
+ selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
3302
+ };
3303
+ }
3304
+ var VERTICAL_ID_SET, VERTICAL_PRESET_ID_SET, DEFAULT_SITE_VERTICAL_BOOKING_CONFIG;
3305
+ var init_booking_vertical_config = __esmMin((() => {
3306
+ init_booking_vertical_catalog();
3307
+ init_booking_vertical_definitions();
3308
+ VERTICAL_ID_SET = new Set(VERTICAL_DEFINITIONS.map(({ id }) => id));
3309
+ VERTICAL_PRESET_ID_SET = new Set(VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id));
3310
+ DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
3311
+ verticalId: null,
3312
+ selectedPresetIds: []
3313
+ };
3314
+ }));
3315
+ //#endregion
3316
+ //#region ../core/src/booking-verticals.ts
3317
+ var init_booking_verticals = __esmMin((() => {
3318
+ init_booking_vertical_config();
3319
+ }));
3320
+ //#endregion
2745
3321
  //#region ../core/src/index.ts
2746
3322
  var init_src$4 = __esmMin((() => {
2747
3323
  init_branded();
@@ -2754,6 +3330,7 @@ var init_src$4 = __esmMin((() => {
2754
3330
  init_collections();
2755
3331
  init_event_pricing();
2756
3332
  init_event_page_surface_subject();
3333
+ init_event_page_selection();
2757
3334
  init_public_event_booking_availability();
2758
3335
  init_money_input();
2759
3336
  init_booking_flexible_balance();
@@ -2800,6 +3377,8 @@ var init_src$4 = __esmMin((() => {
2800
3377
  init_stable_json();
2801
3378
  init_secret();
2802
3379
  init_site_route_target();
3380
+ init_booking_verticals();
3381
+ init_event_series_behaviour();
2803
3382
  }));
2804
3383
  //#endregion
2805
3384
  //#region ../api/src/demoDashboardMutationSurfaces.ts
@@ -3113,7 +3692,7 @@ var init_all = __esmMin((() => {
3113
3692
  }));
3114
3693
  //#endregion
3115
3694
  //#region ../theme-core/src/palette/types.ts
3116
- var init_types$15 = __esmMin((() => {}));
3695
+ var init_types$16 = __esmMin((() => {}));
3117
3696
  //#endregion
3118
3697
  //#region ../../node_modules/.pnpm/@vibrant+image@4.0.4/node_modules/@vibrant/image/dist/esm/histogram.js
3119
3698
  var Histogram;
@@ -4585,7 +5164,7 @@ function defineCuratedPalette(input) {
4585
5164
  };
4586
5165
  }
4587
5166
  var curatedPaletteAuthoringKeySchema;
4588
- var init_types$14 = __esmMin((() => {
5167
+ var init_types$15 = __esmMin((() => {
4589
5168
  init_styleTags();
4590
5169
  init_themeColorTokens();
4591
5170
  init_colors();
@@ -4626,7 +5205,7 @@ var init_types$14 = __esmMin((() => {
4626
5205
  //#region ../theme-core/src/palette/curated/brand-led.ts
4627
5206
  var brandLedCool, brandLedWarm, brandLedJewel, brandLedSpruce, brandLedBurgundyGold;
4628
5207
  var init_brand_led = __esmMin((() => {
4629
- init_types$14();
5208
+ init_types$15();
4630
5209
  brandLedCool = defineCuratedPalette({
4631
5210
  authoringKey: "brand-led-cool",
4632
5211
  name: "Brand-led — Cool",
@@ -4957,7 +5536,7 @@ var init_brand_led = __esmMin((() => {
4957
5536
  //#region ../theme-core/src/palette/curated/high-contrast.ts
4958
5537
  var highContrastInk, highContrastCharcoal, highContrastMonochrome;
4959
5538
  var init_high_contrast = __esmMin((() => {
4960
- init_types$14();
5539
+ init_types$15();
4961
5540
  highContrastInk = defineCuratedPalette({
4962
5541
  authoringKey: "high-contrast-ink",
4963
5542
  name: "High Contrast — Ink",
@@ -5158,7 +5737,7 @@ var init_high_contrast = __esmMin((() => {
5158
5737
  //#region ../theme-core/src/palette/curated/soft-natural.ts
5159
5738
  var softNaturalSage, softNaturalStone, softNaturalWatercolor, softNaturalLilac;
5160
5739
  var init_soft_natural = __esmMin((() => {
5161
- init_types$14();
5740
+ init_types$15();
5162
5741
  softNaturalSage = defineCuratedPalette({
5163
5742
  authoringKey: "soft-natural-sage",
5164
5743
  name: "Soft Natural — Sage",
@@ -5424,7 +6003,7 @@ var init_soft_natural = __esmMin((() => {
5424
6003
  //#region ../theme-core/src/palette/curated/warm-neutral.ts
5425
6004
  var warmNeutralClay, warmNeutralCream, warmNeutralSoftEarth, warmNeutralForest;
5426
6005
  var init_warm_neutral = __esmMin((() => {
5427
- init_types$14();
6006
+ init_types$15();
5428
6007
  warmNeutralClay = defineCuratedPalette({
5429
6008
  authoringKey: "warm-neutral-clay",
5430
6009
  name: "Warm Neutral — Clay",
@@ -5690,7 +6269,7 @@ var init_warm_neutral = __esmMin((() => {
5690
6269
  //#region ../theme-core/src/palette/curated/warm-dark.ts
5691
6270
  var warmDarkEmber, warmDarkKirtanGold;
5692
6271
  var init_warm_dark = __esmMin((() => {
5693
- init_types$14();
6272
+ init_types$15();
5694
6273
  warmDarkEmber = defineCuratedPalette({
5695
6274
  authoringKey: "warm-dark-ember",
5696
6275
  name: "Warm Dark — Ember",
@@ -5845,7 +6424,7 @@ var init_curated = __esmMin((() => {
5845
6424
  init_soft_natural();
5846
6425
  init_warm_neutral();
5847
6426
  init_warm_dark();
5848
- init_types$14();
6427
+ init_types$15();
5849
6428
  curatedPalettes = [
5850
6429
  admitCuratedPaletteDefinition(brandLedCool),
5851
6430
  admitCuratedPaletteDefinition(brandLedWarm),
@@ -5878,7 +6457,7 @@ var init_palette = __esmMin((() => {
5878
6457
  init_generateCssVars();
5879
6458
  init_generateShades();
5880
6459
  init_neutralScale();
5881
- init_types$15();
6460
+ init_types$16();
5882
6461
  init_utils$4();
5883
6462
  init_paletteAccess();
5884
6463
  init_extractPalette();
@@ -6029,8 +6608,8 @@ function unsafeAsOpaqueButtonColourToken(value) {
6029
6608
  function createStandardButtonSurfacePolicy() {
6030
6609
  return Object.fromEntries(VARIANT_ROLES.map((role) => [role, [...STANDARD_BUTTON_SURFACE_POLICY[role]]]));
6031
6610
  }
6032
- var VARIANT_ROLES, buttonVariantIdSchema, opaqueButtonColourTokenSchema, buttonShadeAmountSchema, buttonShadowIntensitySchema, buttonEffectApplicationSchema, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, variantRoleSchema, buttonSurfaceFallbackSchema, standardButtonSurfacePolicy, STANDARD_BUTTON_SURFACE_POLICY, buttonSurfacePolicyShape, buttonSurfacePolicySchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, buttonGlobalSettingsBaseSchema, buttonGlobalSettingsSchema, gradientDirectionSchema$1, buttonColourTreatmentSchema, buttonBackgroundSchema, buttonBorderSchema, buttonVariantAffordanceSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, buttonVariantSchema, buttonSystemSchema;
6033
- var init_types$13 = __esmMin((() => {
6611
+ var VARIANT_ROLES, buttonVariantIdSchema, opaqueButtonColourTokenSchema, contextualButtonHoverSchema, buttonShadeAmountSchema, buttonShadowIntensitySchema, buttonEffectApplicationSchema, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, variantRoleSchema, buttonSurfaceFallbackSchema, standardButtonSurfacePolicy, STANDARD_BUTTON_SURFACE_POLICY, buttonSurfacePolicyShape, buttonSurfacePolicySchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, buttonGlobalSettingsBaseSchema, buttonGlobalSettingsSchema, gradientDirectionSchema$1, buttonColourTreatmentSchema, buttonBackgroundSchema, buttonBorderSchema, buttonVariantAffordanceSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, buttonVariantSchema, buttonSystemSchema;
6612
+ var init_types$14 = __esmMin((() => {
6034
6613
  init_themeColorTokens();
6035
6614
  init_colorTokenParts();
6036
6615
  VARIANT_ROLES = [
@@ -6046,6 +6625,12 @@ var init_types$13 = __esmMin((() => {
6046
6625
  if (token === null) throw new Error("Invariant: opaque button token passed its schema");
6047
6626
  return token;
6048
6627
  });
6628
+ contextualButtonHoverSchema = z.strictObject({
6629
+ kind: z.literal("shade-shift"),
6630
+ seedToken: opaqueButtonColourTokenSchema,
6631
+ fallbackDirection: z.enum(["lighter", "darker"]),
6632
+ preferredToken: opaqueButtonColourTokenSchema.optional()
6633
+ });
6049
6634
  buttonShadeAmountSchema = z.number().finite().min(0).max(900).multipleOf(100);
6050
6635
  buttonShadowIntensitySchema = z.enum([
6051
6636
  "subtle",
@@ -6349,6 +6934,7 @@ var init_types$13 = __esmMin((() => {
6349
6934
  shadow: variantShadowSchema.optional(),
6350
6935
  border: buttonBorderSchema.optional(),
6351
6936
  hoverBackgroundToken: opaqueButtonColourTokenSchema.optional(),
6937
+ contextualHover: contextualButtonHoverSchema.optional(),
6352
6938
  effects: variantEffectsSchema.optional(),
6353
6939
  sizes: variantSizeOverridesSchema.optional(),
6354
6940
  affordance: buttonVariantAffordanceSchema.optional()
@@ -6470,7 +7056,7 @@ function getButtonEffectPolicy(effectId) {
6470
7056
  }
6471
7057
  var BUTTON_EFFECT_POLICIES;
6472
7058
  var init_effectClassification = __esmMin((() => {
6473
- init_types$13();
7059
+ init_types$14();
6474
7060
  BUTTON_EFFECT_POLICIES = {
6475
7061
  "darken-background": {
6476
7062
  classification: "colour-transition",
@@ -6623,6 +7209,148 @@ var init_buttonColourContract = __esmMin((() => {
6623
7209
  };
6624
7210
  }));
6625
7211
  //#endregion
7212
+ //#region ../theme-core/src/buttons/contextualHover.ts
7213
+ function resolveContextualHoverPreference(input) {
7214
+ const preferred = input.instruction.preferredToken;
7215
+ if (preferred && isSafeCandidate(preferred, input.palette, input.surface)) return {
7216
+ kind: "resolved",
7217
+ token: preferred,
7218
+ repair: null
7219
+ };
7220
+ const contextual = resolveContextualHover(input);
7221
+ return contextual.kind === "resolved" ? {
7222
+ kind: "resolved",
7223
+ token: contextual.token,
7224
+ repair: preferred ? {
7225
+ kind: "preferred-token-replaced",
7226
+ preferredToken: preferred,
7227
+ contextualToken: contextual.token
7228
+ } : null
7229
+ } : contextual;
7230
+ }
7231
+ /**
7232
+ * Resolves semantic shade movement from real palette steps. The persisted
7233
+ * instruction owns the colour family and deterministic unknown-surface
7234
+ * fallback; a proven surface may select the opposite direction when it gives
7235
+ * the button stronger separation while retaining the shared contrast contract.
7236
+ */
7237
+ function resolveContextualHover(input) {
7238
+ const candidates = shadeCandidates(input.instruction.seedToken, input.palette);
7239
+ if (candidates.length === 0) return {
7240
+ kind: "unavailable",
7241
+ reason: "no-distinct-shade"
7242
+ };
7243
+ const textSafe = candidates.filter((candidate) => hasSafeTextContrast(candidate.token, input.palette));
7244
+ if (textSafe.length === 0) return {
7245
+ kind: "unavailable",
7246
+ reason: "no-text-safe-candidate"
7247
+ };
7248
+ if (!input.surface) {
7249
+ const selected = textSafe.find((candidate) => candidate.direction === input.instruction.fallbackDirection) ?? textSafe[0];
7250
+ return selected ? {
7251
+ kind: "resolved",
7252
+ token: selected.token,
7253
+ direction: selected.direction,
7254
+ evidence: "fallback-direction"
7255
+ } : {
7256
+ kind: "unavailable",
7257
+ reason: "no-text-safe-candidate"
7258
+ };
7259
+ }
7260
+ const selected = textSafe.map((candidate) => ({
7261
+ ...candidate,
7262
+ surfaceContrast: contrastRatio(input.palette[candidate.token] ?? "", input.surface?.backgroundHex ?? "")
7263
+ })).filter((candidate) => candidate.surfaceContrast !== null && candidate.surfaceContrast >= BUTTON_CONTRAST_POLICY.nonTextMinimumRatio).sort((left, right) => {
7264
+ const distanceDifference = left.distance - right.distance;
7265
+ if (distanceDifference !== 0) return distanceDifference;
7266
+ const contrastDifference = (right.surfaceContrast ?? 0) - (left.surfaceContrast ?? 0);
7267
+ if (contrastDifference !== 0) return contrastDifference;
7268
+ if (left.direction === right.direction) return left.token.localeCompare(right.token);
7269
+ return left.direction === input.instruction.fallbackDirection ? -1 : 1;
7270
+ })[0];
7271
+ return selected ? {
7272
+ kind: "resolved",
7273
+ token: selected.token,
7274
+ direction: selected.direction,
7275
+ evidence: "known-surface"
7276
+ } : {
7277
+ kind: "unavailable",
7278
+ reason: "no-surface-safe-candidate"
7279
+ };
7280
+ }
7281
+ function shadeCandidates(seedToken, palette) {
7282
+ const match = String(seedToken).match(/^(.*?)(?:-(\d{2,3}))?$/);
7283
+ const family = match?.[1] ?? String(seedToken);
7284
+ const currentShade = match?.[2] ? Number(match[2]) : 500;
7285
+ const seedHex = palette[seedToken];
7286
+ const shades = Object.keys(palette).flatMap((token) => {
7287
+ const shade = token.match(new RegExp(`^${escapeRegExp$1(family)}-(\\d{2,3})$`));
7288
+ return shade?.[1] ? [Number(shade[1])] : [];
7289
+ }).filter((shade) => Number.isFinite(shade)).sort((left, right) => left - right);
7290
+ const lower = [...shades].filter((shade) => shade < currentShade).sort((left, right) => right - left);
7291
+ const higher = shades.filter((shade) => shade > currentShade);
7292
+ return [...lower.map((shade) => candidate(family, shade, currentShade, "lighter", seedHex, palette)), ...higher.map((shade) => candidate(family, shade, currentShade, "darker", seedHex, palette))].filter((value) => value !== null);
7293
+ }
7294
+ function candidate(family, shade, currentShade, direction, seedHex, palette) {
7295
+ const token = parseOpaqueButtonColourToken(`${family}-${shade}`);
7296
+ if (token === null) return null;
7297
+ const candidateHex = palette[token];
7298
+ if (!candidateHex || candidateHex === seedHex) return null;
7299
+ return {
7300
+ token,
7301
+ direction,
7302
+ distance: Math.abs(shade - currentShade),
7303
+ surfaceContrast: null
7304
+ };
7305
+ }
7306
+ function hasSafeTextContrast(token, palette) {
7307
+ const background = palette[token];
7308
+ const foreground = palette[onColorTokenName(token)];
7309
+ return typeof background === "string" && typeof foreground === "string" && contrastRatio(background, foreground) >= BUTTON_CONTRAST_POLICY.textMinimumRatio;
7310
+ }
7311
+ function isSafeCandidate(token, palette, surface) {
7312
+ if (!hasSafeTextContrast(token, palette)) return false;
7313
+ return surface ? contrastRatio(palette[token] ?? "", surface.backgroundHex) >= BUTTON_CONTRAST_POLICY.nonTextMinimumRatio : true;
7314
+ }
7315
+ function escapeRegExp$1(value) {
7316
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
7317
+ }
7318
+ var init_contextualHover = __esmMin((() => {
7319
+ init_contrast();
7320
+ init_onColor();
7321
+ init_buttonColourContract();
7322
+ init_types$14();
7323
+ }));
7324
+ //#endregion
7325
+ //#region ../theme-core/src/buttons/resolveButtonHoverTreatment.ts
7326
+ function resolveButtonHoverTreatment(input) {
7327
+ if (input.variant.contextualHover) {
7328
+ const contextual = resolveContextualHoverPreference({
7329
+ instruction: input.variant.contextualHover,
7330
+ palette: input.palette,
7331
+ surface: input.surface
7332
+ });
7333
+ if (contextual.kind === "resolved") return {
7334
+ treatment: {
7335
+ type: "solid",
7336
+ colorToken: contextual.token
7337
+ },
7338
+ repair: contextual.repair
7339
+ };
7340
+ }
7341
+ const token = input.variant.hoverBackgroundToken ?? (input.global.hoverColor === "token" ? input.global.hoverColorToken : void 0);
7342
+ return {
7343
+ treatment: token === void 0 ? input.fallback : {
7344
+ type: "solid",
7345
+ colorToken: token
7346
+ },
7347
+ repair: null
7348
+ };
7349
+ }
7350
+ var init_resolveButtonHoverTreatment = __esmMin((() => {
7351
+ init_contextualHover();
7352
+ }));
7353
+ //#endregion
6626
7354
  //#region ../theme-core/src/buttons/resolveButtonColourStates.ts
6627
7355
  function compileButtonColourStates(input) {
6628
7356
  const baseTransition = applyColourEffects({
@@ -6633,9 +7361,16 @@ function compileButtonColourStates(input) {
6633
7361
  palette: input.palette
6634
7362
  });
6635
7363
  if (!baseTransition.ok) return baseTransition;
7364
+ const hover = resolveButtonHoverTreatment({
7365
+ variant: input.variant,
7366
+ global: input.global,
7367
+ fallback: baseTransition.treatment,
7368
+ palette: input.palette,
7369
+ surface: input.surface
7370
+ });
6636
7371
  const stateTreatments = {
6637
7372
  base: baseTransition.treatment,
6638
- hover: hoverTreatment(input.variant, input.global, baseTransition.treatment),
7373
+ hover: hover.treatment,
6639
7374
  focus: baseTransition.treatment,
6640
7375
  active: baseTransition.treatment,
6641
7376
  disabled: baseTransition.treatment
@@ -6674,14 +7409,8 @@ function compileButtonColourStates(input) {
6674
7409
  ok: true,
6675
7410
  states: resolved,
6676
7411
  focusIndicator: resolveFocusIndicator(resolved.focus),
6677
- nonColourEffects
6678
- };
6679
- }
6680
- function hoverTreatment(variant, global, fallback) {
6681
- const token = variant.hoverBackgroundToken ?? (global.hoverColor === "token" ? global.hoverColorToken : void 0);
6682
- return token === void 0 ? fallback : {
6683
- type: "solid",
6684
- colorToken: token
7412
+ nonColourEffects,
7413
+ contextualHoverRepair: hover.repair
6685
7414
  };
6686
7415
  }
6687
7416
  function applyColourEffects(input) {
@@ -6986,9 +7715,10 @@ var init_resolveButtonColourStates = __esmMin((() => {
6986
7715
  init_colorConversion();
6987
7716
  init_onColor();
6988
7717
  init_foregroundContract();
6989
- init_types$13();
7718
+ init_types$14();
6990
7719
  init_constants$1();
6991
7720
  init_effectClassification();
7721
+ init_resolveButtonHoverTreatment();
6992
7722
  init_buttonColourContract();
6993
7723
  }));
6994
7724
  //#endregion
@@ -6996,12 +7726,12 @@ var init_resolveButtonColourStates = __esmMin((() => {
6996
7726
  var init_parseThemeForPersistence = __esmMin((() => {
6997
7727
  init_schema$2();
6998
7728
  init_resolveButtonColourStates();
6999
- init_types$13();
7729
+ init_types$14();
7000
7730
  }));
7001
7731
  //#endregion
7002
7732
  //#region ../theme-core/src/buttons/classNames.ts
7003
7733
  var init_classNames = __esmMin((() => {
7004
- init_types$13();
7734
+ init_types$14();
7005
7735
  }));
7006
7736
  //#endregion
7007
7737
  //#region ../theme-core/src/buttons/effects/presets/background.ts
@@ -7074,7 +7804,7 @@ var init_generateEffectsCSS = __esmMin((() => {
7074
7804
  //#endregion
7075
7805
  //#region ../theme-core/src/buttons/generateDefaultButtonSystem.ts
7076
7806
  var init_generateDefaultButtonSystem = __esmMin((() => {
7077
- init_types$13();
7807
+ init_types$14();
7078
7808
  }));
7079
7809
  //#endregion
7080
7810
  //#region ../theme-core/src/buttons/affordanceIcons.ts
@@ -7562,13 +8292,24 @@ function resolveContextualButtonRole(input) {
7562
8292
  };
7563
8293
  const rejected = [];
7564
8294
  const preferred = compileCandidate(requested, input.buttonSystem, input.palette, input.surface);
7565
- if (preferred.ok) return {
7566
- kind: "preferred",
7567
- requestedRole: input.role,
7568
- states: preferred.states,
7569
- focusIndicator: preferred.focusIndicator,
7570
- boundary: boundaryForVariant(requested)
7571
- };
8295
+ if (preferred.ok) {
8296
+ if (preferred.contextualHoverRepair) return {
8297
+ kind: "repaired",
8298
+ requestedRole: input.role,
8299
+ candidate: "contextual-hover",
8300
+ states: preferred.states,
8301
+ focusIndicator: preferred.focusIndicator,
8302
+ boundary: boundaryForVariant(requested),
8303
+ rejectedCandidates: []
8304
+ };
8305
+ return {
8306
+ kind: "preferred",
8307
+ requestedRole: input.role,
8308
+ states: preferred.states,
8309
+ focusIndicator: preferred.focusIndicator,
8310
+ boundary: boundaryForVariant(requested)
8311
+ };
8312
+ }
7572
8313
  rejected.push({
7573
8314
  candidate: "preferred",
7574
8315
  error: preferred.error
@@ -7688,6 +8429,7 @@ function candidateVariant(fallback, requested, system) {
7688
8429
  },
7689
8430
  border: { widthClass: "border" },
7690
8431
  hoverBackgroundToken: void 0,
8432
+ contextualHover: void 0,
7691
8433
  effects: void 0
7692
8434
  },
7693
8435
  boundary: {
@@ -7791,7 +8533,7 @@ var init_buttonSurfaceContext = __esmMin((() => {
7791
8533
  init_tokenOrColor();
7792
8534
  init_constants$1();
7793
8535
  init_resolveButtonColourStates();
7794
- init_types$13();
8536
+ init_types$14();
7795
8537
  NAMED_OPAQUE_COLOURS = {
7796
8538
  black: "#000000",
7797
8539
  white: "#ffffff",
@@ -7812,7 +8554,7 @@ var init_resolvedButtonCss = __esmMin((() => {
7812
8554
  init_buttonSurfaceContext();
7813
8555
  }));
7814
8556
  var init_generateButtonCss = __esmMin((() => {
7815
- init_types$13();
8557
+ init_types$14();
7816
8558
  init_classNames();
7817
8559
  init_generateEffectsCSS();
7818
8560
  init_generateDefaultButtonSystem();
@@ -7903,14 +8645,8 @@ function rolePriority(role) {
7903
8645
  }
7904
8646
  var PUBLIC_BUTTON_ROLES;
7905
8647
  var init_domain = __esmMin((() => {
7906
- init_types$13();
7907
- PUBLIC_BUTTON_ROLES = [
7908
- "primary",
7909
- "secondary",
7910
- "outline",
7911
- "ghost",
7912
- "accent"
7913
- ];
8648
+ init_types$14();
8649
+ PUBLIC_BUTTON_ROLES = VARIANT_ROLES;
7914
8650
  }));
7915
8651
  //#endregion
7916
8652
  //#region ../theme-core/src/buttons/styles/selection.ts
@@ -7920,8 +8656,9 @@ function selectionBranch(styleId, parameters) {
7920
8656
  parameters
7921
8657
  }).strict();
7922
8658
  }
7923
- var BUTTON_STYLE_IDS, quietArrowParametersSchema, emptyParametersSchema$1, buttonStyleSelectionWireSchema, buttonStyleSelectionSchema;
8659
+ var BUTTON_STYLE_IDS, quietArrowParametersSchema, FLAT_INK_HOVER_TREATMENT_VALUES, flatInkHoverTreatmentSchema, flatInkHoverPreferencesShape, flatInkHoverPreferencesSchema, flatInkParametersSchema, emptyParametersSchema$1, buttonStyleSelectionWireSchema, buttonStyleSelectionSchema;
7924
8660
  var init_selection = __esmMin((() => {
8661
+ init_types$14();
7925
8662
  BUTTON_STYLE_IDS = [
7926
8663
  "soft-pill",
7927
8664
  "earth-pill",
@@ -7937,6 +8674,15 @@ var init_selection = __esmMin((() => {
7937
8674
  "quiet-arrow"
7938
8675
  ];
7939
8676
  quietArrowParametersSchema = z.object({ secondaryTreatment: z.enum(["outlined", "solid-accent"]) }).strict();
8677
+ FLAT_INK_HOVER_TREATMENT_VALUES = [
8678
+ "contextual",
8679
+ "secondary",
8680
+ "accent"
8681
+ ];
8682
+ flatInkHoverTreatmentSchema = z.enum(FLAT_INK_HOVER_TREATMENT_VALUES);
8683
+ flatInkHoverPreferencesShape = Object.fromEntries(VARIANT_ROLES.map((role) => [role, flatInkHoverTreatmentSchema.optional()]));
8684
+ flatInkHoverPreferencesSchema = z.strictObject(flatInkHoverPreferencesShape);
8685
+ flatInkParametersSchema = z.strictObject({ hoverPreferences: flatInkHoverPreferencesSchema.optional() });
7940
8686
  emptyParametersSchema$1 = z.object({}).strict();
7941
8687
  buttonStyleSelectionWireSchema = z.discriminatedUnion("styleId", [
7942
8688
  selectionBranch("soft-pill", emptyParametersSchema$1),
@@ -7945,7 +8691,7 @@ var init_selection = __esmMin((() => {
7945
8691
  selectionBranch("editorial-link", emptyParametersSchema$1),
7946
8692
  selectionBranch("pebble", emptyParametersSchema$1),
7947
8693
  selectionBranch("ink-stamp", emptyParametersSchema$1),
7948
- selectionBranch("flat-ink", emptyParametersSchema$1),
8694
+ selectionBranch("flat-ink", flatInkParametersSchema),
7949
8695
  selectionBranch("brushed-wash", emptyParametersSchema$1),
7950
8696
  selectionBranch("showtime-pill", emptyParametersSchema$1),
7951
8697
  selectionBranch("joy-stamp", emptyParametersSchema$1),
@@ -7959,7 +8705,7 @@ var init_selection = __esmMin((() => {
7959
8705
  var quietArrowRecipe;
7960
8706
  var init_quietArrow = __esmMin((() => {
7961
8707
  init_domain();
7962
- init_types$13();
8708
+ init_types$14();
7963
8709
  init_selection();
7964
8710
  quietArrowRecipe = defineButtonStyleRecipe({
7965
8711
  id: "quiet-arrow",
@@ -8090,6 +8836,195 @@ var init_quietArrow = __esmMin((() => {
8090
8836
  });
8091
8837
  }));
8092
8838
  //#endregion
8839
+ //#region ../theme-core/src/buttons/styles/recipes/flatInk.ts
8840
+ function hoverAppearance(role, parameters, recommended) {
8841
+ const preference = parameters.hoverPreferences?.[role];
8842
+ if (preference === void 0) return { effects: { hover: [...recommended] } };
8843
+ if (preference === "contextual") {
8844
+ const config = contextualRoleConfig[role];
8845
+ return {
8846
+ effects: { hover: [lift] },
8847
+ contextualHover: {
8848
+ kind: "shade-shift",
8849
+ seedToken: config.contextualSeedToken,
8850
+ fallbackDirection: config.fallbackDirection
8851
+ }
8852
+ };
8853
+ }
8854
+ const config = contextualRoleConfig[role];
8855
+ return {
8856
+ effects: { hover: [lift] },
8857
+ contextualHover: {
8858
+ kind: "shade-shift",
8859
+ seedToken: config.contextualSeedToken,
8860
+ fallbackDirection: config.fallbackDirection,
8861
+ preferredToken: unsafeAsOpaqueButtonColourToken(paletteRole(preference))
8862
+ }
8863
+ };
8864
+ }
8865
+ function paletteRole(preference) {
8866
+ return preference;
8867
+ }
8868
+ var contextualRoleConfig, hoverControl, lift, flatInkRecipe;
8869
+ var init_flatInk = __esmMin((() => {
8870
+ init_types$14();
8871
+ init_domain();
8872
+ init_selection();
8873
+ contextualRoleConfig = {
8874
+ primary: {
8875
+ contextualSeedToken: unsafeAsOpaqueButtonColourToken("primary"),
8876
+ fallbackDirection: "darker"
8877
+ },
8878
+ secondary: {
8879
+ contextualSeedToken: unsafeAsOpaqueButtonColourToken("surfaceAlt"),
8880
+ fallbackDirection: "darker"
8881
+ },
8882
+ outline: {
8883
+ contextualSeedToken: unsafeAsOpaqueButtonColourToken("surfaceAlt"),
8884
+ fallbackDirection: "darker"
8885
+ },
8886
+ ghost: {
8887
+ contextualSeedToken: unsafeAsOpaqueButtonColourToken("surfaceAlt"),
8888
+ fallbackDirection: "darker"
8889
+ },
8890
+ accent: {
8891
+ contextualSeedToken: unsafeAsOpaqueButtonColourToken("accent"),
8892
+ fallbackDirection: "darker"
8893
+ }
8894
+ };
8895
+ hoverControl = {
8896
+ kind: "button-hover-by-role",
8897
+ parameter: "hoverPreferences",
8898
+ label: "Button hover",
8899
+ roles: contextualRoleConfig,
8900
+ options: [
8901
+ {
8902
+ value: "contextual",
8903
+ label: "Contextual shade shift"
8904
+ },
8905
+ {
8906
+ value: "secondary",
8907
+ label: "Secondary button colour"
8908
+ },
8909
+ {
8910
+ value: "accent",
8911
+ label: "Accent button colour"
8912
+ }
8913
+ ]
8914
+ };
8915
+ lift = { effectId: "lift" };
8916
+ flatInkRecipe = defineButtonStyleRecipe({
8917
+ id: "flat-ink",
8918
+ accessibilityLabel: "Flat rounded buttons with arrow affordances",
8919
+ tags: {
8920
+ tone: "classic",
8921
+ energy: "calm",
8922
+ motion: "subtle",
8923
+ era: "editorial"
8924
+ },
8925
+ parameterSchema: flatInkParametersSchema,
8926
+ defaultParameters: {},
8927
+ controls: [hoverControl],
8928
+ defineSystem: (parameters) => ({
8929
+ global: {
8930
+ cornerStyle: "rounded",
8931
+ textTransform: "none",
8932
+ fontWeight: 600,
8933
+ typography: "body",
8934
+ letterSpacing: "tight",
8935
+ paddingPreset: "default",
8936
+ hoverTransform: "lift",
8937
+ hoverColor: "none"
8938
+ },
8939
+ sizes: {
8940
+ sm: {
8941
+ padding: "0.625rem 1.125rem",
8942
+ fontSize: "text-sm"
8943
+ },
8944
+ md: { padding: "0.8125rem 1.375rem" },
8945
+ lg: {
8946
+ padding: "0.9375rem 1.625rem",
8947
+ fontSize: "text-lg"
8948
+ },
8949
+ xl: {
8950
+ padding: "1.0625rem 2rem",
8951
+ fontSize: "text-xl"
8952
+ }
8953
+ },
8954
+ roles: {
8955
+ primary: {
8956
+ kind: "complete",
8957
+ appearance: {
8958
+ background: {
8959
+ type: "solid",
8960
+ colorToken: unsafeAsOpaqueButtonColourToken("primary")
8961
+ },
8962
+ borderRadius: "rounded-lg",
8963
+ affordance: { iconId: "ArrowRight" },
8964
+ ...hoverAppearance("primary", parameters, [lift, {
8965
+ effectId: "background-on-hover",
8966
+ options: { colorToken: unsafeAsOpaqueButtonColourToken("secondary") }
8967
+ }])
8968
+ }
8969
+ },
8970
+ secondary: {
8971
+ kind: "complete",
8972
+ appearance: {
8973
+ background: {
8974
+ type: "surface",
8975
+ role: "link"
8976
+ },
8977
+ borderRadius: "rounded-lg",
8978
+ border: { widthClass: "border" },
8979
+ ...hoverAppearance("secondary", parameters, [lift, {
8980
+ effectId: "background-on-hover",
8981
+ options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
8982
+ }])
8983
+ }
8984
+ },
8985
+ outline: {
8986
+ kind: "complete",
8987
+ appearance: {
8988
+ background: {
8989
+ type: "surface",
8990
+ role: "link"
8991
+ },
8992
+ borderRadius: "rounded-lg",
8993
+ border: { widthClass: "border" },
8994
+ ...hoverAppearance("outline", parameters, [lift, {
8995
+ effectId: "background-on-hover",
8996
+ options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
8997
+ }])
8998
+ }
8999
+ },
9000
+ ghost: {
9001
+ kind: "complete",
9002
+ appearance: {
9003
+ background: {
9004
+ type: "surface",
9005
+ role: "link"
9006
+ },
9007
+ borderRadius: "rounded-lg",
9008
+ ...hoverAppearance("ghost", parameters, [lift])
9009
+ }
9010
+ },
9011
+ accent: {
9012
+ kind: "complete",
9013
+ appearance: {
9014
+ background: {
9015
+ type: "solid",
9016
+ colorToken: unsafeAsOpaqueButtonColourToken("accent")
9017
+ },
9018
+ borderRadius: "rounded-lg",
9019
+ affordance: { iconId: "ArrowRight" },
9020
+ ...hoverAppearance("accent", parameters, [lift])
9021
+ }
9022
+ }
9023
+ }
9024
+ })
9025
+ });
9026
+ }));
9027
+ //#endregion
8093
9028
  //#region ../theme-core/src/buttons/styles/recipes/defineStaticButtonStyleRecipe.ts
8094
9029
  function defineStaticButtonStyleRecipe(input) {
8095
9030
  const system = normalizeSystem(input.system);
@@ -8148,16 +9083,16 @@ function normalizeAppearanceOverrides(overrides) {
8148
9083
  }
8149
9084
  var emptyParametersSchema;
8150
9085
  var init_defineStaticButtonStyleRecipe = __esmMin((() => {
8151
- init_types$13();
9086
+ init_types$14();
8152
9087
  init_domain();
8153
9088
  emptyParametersSchema = z.object({}).strict();
8154
9089
  }));
8155
9090
  //#endregion
8156
9091
  //#region ../theme-core/src/buttons/styles/recipes/staticRecipes.ts
8157
- var softPillRecipe, earthPillRecipe, confidentChipRecipe, editorialSizes, editorialLinkRecipe, pebbleRecipe, brushedWashRecipe, inkStampRecipe, flatInkRecipe, showtimePillRecipe, joyStampRecipe, ornateGhostSizes, ornateRitualRecipe;
9092
+ var softPillRecipe, earthPillRecipe, confidentChipRecipe, editorialSizes, editorialLinkRecipe, pebbleRecipe, brushedWashRecipe, inkStampRecipe, showtimePillRecipe, joyStampRecipe, ornateGhostSizes, ornateRitualRecipe;
8158
9093
  var init_staticRecipes = __esmMin((() => {
8159
9094
  init_defineStaticButtonStyleRecipe();
8160
- init_types$13();
9095
+ init_types$14();
8161
9096
  softPillRecipe = defineStaticButtonStyleRecipe({
8162
9097
  id: "soft-pill",
8163
9098
  accessibilityLabel: "Rounded pill buttons with a gentle hover lift",
@@ -8945,113 +9880,6 @@ var init_staticRecipes = __esmMin((() => {
8945
9880
  }
8946
9881
  }
8947
9882
  });
8948
- flatInkRecipe = defineStaticButtonStyleRecipe({
8949
- id: "flat-ink",
8950
- accessibilityLabel: "Flat rounded buttons with arrow affordances",
8951
- tags: {
8952
- tone: "classic",
8953
- energy: "calm",
8954
- motion: "subtle",
8955
- era: "editorial"
8956
- },
8957
- system: {
8958
- global: {
8959
- cornerStyle: "rounded",
8960
- textTransform: "none",
8961
- fontWeight: 600,
8962
- typography: "body",
8963
- letterSpacing: "tight",
8964
- paddingPreset: "default",
8965
- hoverTransform: "lift",
8966
- hoverColor: "none"
8967
- },
8968
- sizes: {
8969
- sm: {
8970
- padding: "0.625rem 1.125rem",
8971
- fontSize: "text-sm"
8972
- },
8973
- md: { padding: "0.8125rem 1.375rem" },
8974
- lg: {
8975
- padding: "0.9375rem 1.625rem",
8976
- fontSize: "text-lg"
8977
- },
8978
- xl: {
8979
- padding: "1.0625rem 2rem",
8980
- fontSize: "text-xl"
8981
- }
8982
- },
8983
- roles: {
8984
- primary: {
8985
- kind: "complete",
8986
- appearance: {
8987
- background: {
8988
- type: "solid",
8989
- colorToken: "primary"
8990
- },
8991
- borderRadius: "rounded-lg",
8992
- affordance: { iconId: "ArrowRight" },
8993
- effects: { hover: [{ effectId: "lift" }, {
8994
- effectId: "background-on-hover",
8995
- options: { colorToken: unsafeAsOpaqueButtonColourToken("secondary") }
8996
- }] }
8997
- }
8998
- },
8999
- secondary: {
9000
- kind: "complete",
9001
- appearance: {
9002
- background: {
9003
- type: "surface",
9004
- role: "link"
9005
- },
9006
- borderRadius: "rounded-lg",
9007
- border: { widthClass: "border" },
9008
- effects: { hover: [{ effectId: "lift" }, {
9009
- effectId: "background-on-hover",
9010
- options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
9011
- }] }
9012
- }
9013
- },
9014
- outline: {
9015
- kind: "complete",
9016
- appearance: {
9017
- background: {
9018
- type: "surface",
9019
- role: "link"
9020
- },
9021
- borderRadius: "rounded-lg",
9022
- border: { widthClass: "border" },
9023
- effects: { hover: [{ effectId: "lift" }, {
9024
- effectId: "background-on-hover",
9025
- options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
9026
- }] }
9027
- }
9028
- },
9029
- ghost: {
9030
- kind: "complete",
9031
- appearance: {
9032
- background: {
9033
- type: "surface",
9034
- role: "link"
9035
- },
9036
- borderRadius: "rounded-lg",
9037
- effects: { hover: [{ effectId: "lift" }] }
9038
- }
9039
- },
9040
- accent: {
9041
- kind: "complete",
9042
- appearance: {
9043
- background: {
9044
- type: "solid",
9045
- colorToken: "accent"
9046
- },
9047
- borderRadius: "rounded-lg",
9048
- affordance: { iconId: "ArrowRight" },
9049
- effects: { hover: [{ effectId: "lift" }] }
9050
- }
9051
- }
9052
- }
9053
- }
9054
- });
9055
9883
  showtimePillRecipe = defineStaticButtonStyleRecipe({
9056
9884
  id: "showtime-pill",
9057
9885
  accessibilityLabel: "Bold uppercase pill buttons with playful movement",
@@ -9428,6 +10256,7 @@ var init_registry$7 = __esmMin((() => {
9428
10256
  init_domain();
9429
10257
  init_selection();
9430
10258
  init_quietArrow();
10259
+ init_flatInk();
9431
10260
  init_staticRecipes();
9432
10261
  buttonStyleRecipes = [
9433
10262
  softPillRecipe,
@@ -9486,12 +10315,13 @@ var init_presets$3 = __esmMin((() => {
9486
10315
  //#endregion
9487
10316
  //#region ../theme-core/src/buttons/index.ts
9488
10317
  var init_buttons = __esmMin((() => {
9489
- init_types$13();
10318
+ init_types$14();
9490
10319
  init_parseThemeForPersistence();
9491
10320
  init_classNames();
9492
10321
  init_generateButtonCss();
9493
10322
  init_resolveButtonColourStates();
9494
10323
  init_buttonSurfaceContext();
10324
+ init_contextualHover();
9495
10325
  init_affordanceIcons();
9496
10326
  init_generateDefaultButtonSystem();
9497
10327
  init_constants$1();
@@ -9505,14 +10335,9 @@ function isCardVariantRole(value) {
9505
10335
  return typeof value === "string" && cardVariantRoleValues.includes(value);
9506
10336
  }
9507
10337
  function normalizeCardVariantRole(value) {
9508
- if (isCardVariantRole(value)) return value;
9509
- if (typeof value !== "string") return null;
9510
- return legacyCardVariantRoleAliases[value] ?? null;
10338
+ return isCardVariantRole(value) ? value : null;
9511
10339
  }
9512
- /**
9513
- * The one untrusted-input boundary for the role vocabulary. Legacy alias values
9514
- * (`variant1`, `variant2`, `statement`) normalize here and nowhere else.
9515
- */
10340
+ /** The one untrusted-input boundary for the closed role vocabulary. */
9516
10341
  function normalizeCardRole(value) {
9517
10342
  if (value === "none") return boxlessCardVariantValue;
9518
10343
  if (value === "open") return openCardRoleValue;
@@ -9607,19 +10432,14 @@ function validateUniqueDeclaredCardVariantRoles(system, ctx) {
9607
10432
  declared.add(role);
9608
10433
  });
9609
10434
  }
9610
- var cardVariantRoleValues, boxlessCardVariantValue, openCardRoleValue, surfaceCardRoleValues, cardRoleValues, legacyCardVariantRoleAliases, cardSpacingSchema, cardSpacingAxesSchema, cardSpacingValueSchema, gradientDirectionSchema, cardVariantRoleSchema, surfaceCardRoleSchema, cardRoleSchema, boxStylesCardVariantSchema, normalizeBoxStylesCardVariant, PRIORITY_ROLE_INFERENCE, cardBackgroundSchema, cardBorderSchema, cardCornerValueSchema, cardEdgeSchema, cardAccentEdgeSchema, cardEdgeRuleWidthSchema, cardEdgeRuleLengthSchema, cardEdgeRuleAlignSchema, cardEdgeRuleSchema, cardDecorationSchema, cardDecorationsSchema, cardCornerRadiiSchema, cardVariantInputSchema, cardVariantSchema, cardSystemSchema;
9611
- var init_types$12 = __esmMin((() => {
10435
+ var cardVariantRoleValues, boxlessCardVariantValue, openCardRoleValue, surfaceCardRoleValues, cardRoleValues, cardSpacingSchema, cardSpacingAxesSchema, cardSpacingValueSchema, gradientDirectionSchema, surfaceCardRoleSchema, cardRoleSchema, PRIORITY_ROLE_INFERENCE, cardBackgroundSchema, cardBorderSchema, cardCornerValueSchema, cardEdgeSchema, cardAccentEdgeSchema, cardEdgeRuleWidthSchema, cardEdgeRuleLengthSchema, cardEdgeRuleAlignSchema, cardEdgeRuleSchema, cardDecorationSchema, cardDecorationsSchema, cardCornerRadiiSchema, cardVariantInputSchema, cardVariantSchema, cardSystemSchema;
10436
+ var init_types$13 = __esmMin((() => {
9612
10437
  init_themeColorTokens();
9613
10438
  cardVariantRoleValues = ["default", "alternative"];
9614
10439
  boxlessCardVariantValue = "none";
9615
10440
  openCardRoleValue = "open";
9616
10441
  surfaceCardRoleValues = [...cardVariantRoleValues, openCardRoleValue];
9617
10442
  cardRoleValues = [...surfaceCardRoleValues, boxlessCardVariantValue];
9618
- legacyCardVariantRoleAliases = {
9619
- variant1: "alternative",
9620
- variant2: "alternative",
9621
- statement: "alternative"
9622
- };
9623
10443
  cardSpacingSchema = z.enum([
9624
10444
  "none",
9625
10445
  "compact",
@@ -9643,11 +10463,9 @@ var init_types$12 = __esmMin((() => {
9643
10463
  "to-br",
9644
10464
  "to-bl"
9645
10465
  ]);
9646
- cardVariantRoleSchema = z.enum(cardVariantRoleValues);
10466
+ z.enum(cardVariantRoleValues);
9647
10467
  surfaceCardRoleSchema = z.enum(surfaceCardRoleValues);
9648
10468
  cardRoleSchema = z.enum(cardRoleValues);
9649
- boxStylesCardVariantSchema = cardRoleSchema;
9650
- normalizeBoxStylesCardVariant = normalizeCardRole;
9651
10469
  PRIORITY_ROLE_INFERENCE = {
9652
10470
  1: "default",
9653
10471
  2: "alternative"
@@ -9781,13 +10599,13 @@ var init_generateDefaultCardSystem = __esmMin((() => {}));
9781
10599
  //#endregion
9782
10600
  //#region ../theme-core/src/cards/roles.ts
9783
10601
  var init_roles = __esmMin((() => {
9784
- init_types$12();
10602
+ init_types$13();
9785
10603
  }));
9786
10604
  //#endregion
9787
10605
  //#region ../theme-core/src/cards/generateCardCss.ts
9788
10606
  var init_generateCardCss = __esmMin((() => {
9789
10607
  init_roles();
9790
- init_types$12();
10608
+ init_types$13();
9791
10609
  init_surfaces();
9792
10610
  }));
9793
10611
  //#endregion
@@ -9798,7 +10616,7 @@ var init_core$2 = __esmMin((() => {
9798
10616
  //#endregion
9799
10617
  //#region ../theme-core/src/cards/index.ts
9800
10618
  var init_cards = __esmMin((() => {
9801
- init_types$12();
10619
+ init_types$13();
9802
10620
  init_constants();
9803
10621
  init_decorations();
9804
10622
  init_roles();
@@ -9810,7 +10628,7 @@ var init_cards = __esmMin((() => {
9810
10628
  //#endregion
9811
10629
  //#region ../theme-core/src/accordions/types.ts
9812
10630
  var accordionIconSchema, accordionSystemSchema;
9813
- var init_types$11 = __esmMin((() => {
10631
+ var init_types$12 = __esmMin((() => {
9814
10632
  init_themeColorTokens();
9815
10633
  accordionIconSchema = z.enum([
9816
10634
  "plus-minus",
@@ -9915,7 +10733,7 @@ var init_types$11 = __esmMin((() => {
9915
10733
  //#endregion
9916
10734
  //#region ../theme-core/src/inputs/types.ts
9917
10735
  var inputSystemSchema;
9918
- var init_types$10 = __esmMin((() => {
10736
+ var init_types$11 = __esmMin((() => {
9919
10737
  init_themeColorTokens();
9920
10738
  inputSystemSchema = z.object({
9921
10739
  base: z.object({
@@ -10015,7 +10833,7 @@ var init_types$10 = __esmMin((() => {
10015
10833
  * Gradient configuration types and schemas
10016
10834
  */
10017
10835
  var gradientStopSchema, radialGradientShapeSchema, gradientConfigSchema;
10018
- var init_types$9 = __esmMin((() => {
10836
+ var init_types$10 = __esmMin((() => {
10019
10837
  init_themeColorTokens();
10020
10838
  gradientStopSchema = z.object({
10021
10839
  color: themeColorTokenSchema,
@@ -10087,7 +10905,7 @@ var init_baseSchema = __esmMin((() => {
10087
10905
  * Schema and types for composable nav link styling used by header and footer.
10088
10906
  */
10089
10907
  var navLinkPaddingSchema, navLinkPaddingXSchema, navLinkBorderRadiusSchema, navLinkTextSizeSchema, navLinkLetterSpacingSchema, navLinkContrastTreatmentSchema, navLinkStyleSchema;
10090
- var init_types$8 = __esmMin((() => {
10908
+ var init_types$9 = __esmMin((() => {
10091
10909
  init_baseSchema();
10092
10910
  init_themeColorTokens();
10093
10911
  navLinkPaddingSchema = z.enum([
@@ -10435,8 +11253,8 @@ function defineBlockDesignCapability(capability) {
10435
11253
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
10436
11254
  };
10437
11255
  }
10438
- var plainFrame, tileTreatmentValues, eventListTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, noHeadingDecoration, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
10439
- var init_types$7 = __esmMin((() => {
11256
+ var plainFrame, tileTreatmentValues, eventListTreatmentValues, testimonialsCompositionTreatmentValues, offeringsPreviewCompositionTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, noHeadingDecoration, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
11257
+ var init_types$8 = __esmMin((() => {
10440
11258
  plainFrame = { kind: "plain" };
10441
11259
  tileTreatmentValues = [
10442
11260
  "default",
@@ -10450,6 +11268,17 @@ var init_types$7 = __esmMin((() => {
10450
11268
  "editorial-register",
10451
11269
  "dense-index"
10452
11270
  ];
11271
+ testimonialsCompositionTreatmentValues = [
11272
+ "open-editorial",
11273
+ "evergreen-lead",
11274
+ "room-and-response",
11275
+ "open-floor"
11276
+ ];
11277
+ offeringsPreviewCompositionTreatmentValues = [
11278
+ "paired-feature-cards",
11279
+ "open-editorial-columns",
11280
+ "joined-programme-panel"
11281
+ ];
10453
11282
  eyebrowTreatmentValues = [
10454
11283
  "plain",
10455
11284
  "accent",
@@ -10767,14 +11596,14 @@ var init_schema$2 = __esmMin((() => {
10767
11596
  init_schema$3();
10768
11597
  init_buttons();
10769
11598
  init_cards();
11599
+ init_types$12();
10770
11600
  init_types$11();
10771
11601
  init_types$10();
10772
11602
  init_types$9();
10773
- init_types$8();
10774
11603
  init_validation$1();
10775
11604
  init_atRuleValidation();
10776
11605
  init_shared$5();
10777
- init_types$7();
11606
+ init_types$8();
10778
11607
  init_logoBranding();
10779
11608
  init_rawStyleFields();
10780
11609
  init_themeColorTokens();
@@ -10975,8 +11804,7 @@ var init_schema$2 = __esmMin((() => {
10975
11804
  spacing: semanticSpacingSchema.nullable().optional(),
10976
11805
  raised: z.boolean().nullable().optional(),
10977
11806
  rounded: boxRoundedSchema.nullable().optional(),
10978
- role: cardRoleSchema.nullable().optional(),
10979
- cardVariant: boxStylesCardVariantSchema.nullable().optional()
11807
+ role: cardRoleSchema.nullable().optional()
10980
11808
  });
10981
11809
  blockStyleOverridesSchema = z.object({
10982
11810
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -11566,7 +12394,7 @@ var init_appearancePresetResolution = __esmMin((() => {
11566
12394
  })), brandScrimOptionGroups, microBannerLayoutPatches;
11567
12395
  var init_blockAppearancePresets = __esmMin((() => {
11568
12396
  init_appearancePresetResolution();
11569
- init_types$7();
12397
+ init_types$8();
11570
12398
  brandScrimOptionGroups = [{
11571
12399
  id: "image-surface-treatment",
11572
12400
  label: "Treatment",
@@ -11854,7 +12682,12 @@ var init_blockAppearancePresets = __esmMin((() => {
11854
12682
  constraints: { layoutVariantKeys: ["cards"] },
11855
12683
  design: {
11856
12684
  sectionSurface: "base",
11857
- contentFrame: plainFrame
12685
+ contentFrame: plainFrame,
12686
+ cardRole: "alternative",
12687
+ composition: {
12688
+ kind: "offerings-preview",
12689
+ treatment: "paired-feature-cards"
12690
+ }
11858
12691
  }
11859
12692
  }), defineBlockAppearancePreset({
11860
12693
  id: "offerings-preview-open-editorial-columns",
@@ -11864,7 +12697,12 @@ var init_blockAppearancePresets = __esmMin((() => {
11864
12697
  constraints: { layoutVariantKeys: ["cards"] },
11865
12698
  design: {
11866
12699
  sectionSurface: "base",
11867
- contentFrame: plainFrame
12700
+ contentFrame: plainFrame,
12701
+ cardRole: "open",
12702
+ composition: {
12703
+ kind: "offerings-preview",
12704
+ treatment: "open-editorial-columns"
12705
+ }
11868
12706
  }
11869
12707
  }), defineBlockAppearancePreset({
11870
12708
  id: "offerings-preview-joined-programme-panel",
@@ -11874,7 +12712,12 @@ var init_blockAppearancePresets = __esmMin((() => {
11874
12712
  constraints: { layoutVariantKeys: ["cards"] },
11875
12713
  design: {
11876
12714
  sectionSurface: "base",
11877
- contentFrame: plainFrame
12715
+ contentFrame: plainFrame,
12716
+ cardRole: "default",
12717
+ composition: {
12718
+ kind: "offerings-preview",
12719
+ treatment: "joined-programme-panel"
12720
+ }
11878
12721
  }
11879
12722
  }), defineBlockAppearancePreset({
11880
12723
  id: "feature-cards-raised-rule",
@@ -12116,7 +12959,11 @@ var init_blockAppearancePresets = __esmMin((() => {
12116
12959
  constraints: { layoutVariantKeys: ["featured-editorial"] },
12117
12960
  design: {
12118
12961
  sectionSurface: "base",
12119
- contentFrame: plainFrame
12962
+ contentFrame: plainFrame,
12963
+ composition: {
12964
+ kind: "testimonials",
12965
+ treatment: "evergreen-lead"
12966
+ }
12120
12967
  }
12121
12968
  }), defineBlockAppearancePreset({
12122
12969
  id: "testimonials-room-and-response",
@@ -12126,7 +12973,11 @@ var init_blockAppearancePresets = __esmMin((() => {
12126
12973
  constraints: { layoutVariantKeys: ["featured-editorial"] },
12127
12974
  design: {
12128
12975
  sectionSurface: "base",
12129
- contentFrame: plainFrame
12976
+ contentFrame: plainFrame,
12977
+ composition: {
12978
+ kind: "testimonials",
12979
+ treatment: "room-and-response"
12980
+ }
12130
12981
  }
12131
12982
  }), defineBlockAppearancePreset({
12132
12983
  id: "testimonials-open-floor",
@@ -12136,7 +12987,11 @@ var init_blockAppearancePresets = __esmMin((() => {
12136
12987
  constraints: { layoutVariantKeys: ["featured-editorial"] },
12137
12988
  design: {
12138
12989
  sectionSurface: "base",
12139
- contentFrame: plainFrame
12990
+ contentFrame: plainFrame,
12991
+ composition: {
12992
+ kind: "testimonials",
12993
+ treatment: "open-floor"
12994
+ }
12140
12995
  }
12141
12996
  }), defineBlockAppearancePreset({
12142
12997
  id: "faq-base-accordion",
@@ -12231,7 +13086,7 @@ function assertUniqueLayoutProfileKeys(profiles) {
12231
13086
  if (duplicates.length > 0) throw new Error(`Duplicate block layout design profiles: ${duplicates.join(", ")}`);
12232
13087
  }
12233
13088
  var init_blockFlow = __esmMin((() => {
12234
- init_types$7();
13089
+ init_types$8();
12235
13090
  }));
12236
13091
  //#endregion
12237
13092
  //#region ../theme-core/src/tokens/tokens.ts
@@ -12434,7 +13289,7 @@ function boundaryRuntimeMetrics(family, size, heightExpression) {
12434
13289
  }
12435
13290
  var noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
12436
13291
  var init_sectionTransitions = __esmMin((() => {
12437
- init_types$7();
13292
+ init_types$8();
12438
13293
  boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
12439
13294
  noneBoundaryOption = {
12440
13295
  id: asBoundaryOptionId("break:none"),
@@ -12512,7 +13367,7 @@ function boundaryKey(previousBlockId, nextBlockId) {
12512
13367
  }
12513
13368
  var pageDesignUserPinnedAppearanceChoiceSchema, pageDesignUserPinnedBoundaryChoiceSchema, pageDesignBoundaryTreatmentSchema, pageDesignUserPinnedBoundaryTreatmentChoiceSchema, pageDesignBlockLookPinSchema, pageDesignBoundaryPinSchema, legacyPageDesignBoundaryPinSchema;
12514
13369
  var init_pageDesignIntent = __esmMin((() => {
12515
- init_types$7();
13370
+ init_types$8();
12516
13371
  init_sectionTransitions();
12517
13372
  asBoundaryOptionId("break:unknown");
12518
13373
  pageDesignUserPinnedAppearanceChoiceSchema = z.object({
@@ -13260,7 +14115,7 @@ var init_utils$2 = __esmMin((() => {}));
13260
14115
  //#endregion
13261
14116
  //#region ../theme-core/src/gradients/index.ts
13262
14117
  var init_gradients = __esmMin((() => {
13263
- init_types$9();
14118
+ init_types$10();
13264
14119
  init_presets$2();
13265
14120
  init_utils$2();
13266
14121
  }));
@@ -13307,7 +14162,7 @@ function supportedLayouts(ids) {
13307
14162
  var titleOnlyLogoAccommodation, inlineWordmarkLogoAccommodation, inlineMarkWithTitleLogoAccommodation, logoPlateAccommodation, centeredBadgeAccommodation, popoutBadgeAccommodation, centeredMastheadAccommodation, unbackedOverlayLogoAccommodation, inlineClassicLogoAccommodations, centeredLogoAccommodations, overlayLogoAccommodations, headerLayoutCatalog, headerStyleCatalog;
13308
14163
  var init_headerLayoutCatalog = __esmMin((() => {
13309
14164
  init_logoBranding();
13310
- init_types$7();
14165
+ init_types$8();
13311
14166
  init_headerInteractionPalette();
13312
14167
  init_headerLayoutTypes();
13313
14168
  titleOnlyLogoAccommodation = {
@@ -13640,7 +14495,7 @@ function emphasizedFooterLinks(theme) {
13640
14495
  }
13641
14496
  var footerLookCatalog;
13642
14497
  var init_footerLooks = __esmMin((() => {
13643
- init_types$7();
14498
+ init_types$8();
13644
14499
  footerLookCatalog = defineExactCatalog()([{
13645
14500
  id: asFooterLookId("footer-links-quiet"),
13646
14501
  label: "Quiet links",
@@ -13659,7 +14514,7 @@ var init_footerLooks = __esmMin((() => {
13659
14514
  var init_curatedChoices = __esmMin((() => {})), generatedContentFrames, userContentFrames, generatedDesignOptionCatalog, userDesignOptionCatalog;
13660
14515
  var init_sourceCatalogs = __esmMin((() => {
13661
14516
  init_cards();
13662
- init_types$7();
14517
+ init_types$8();
13663
14518
  generatedContentFrames = [
13664
14519
  plainFrame,
13665
14520
  panelFrame("inset"),
@@ -14175,7 +15030,7 @@ var init_siteStyleTypography = __esmMin((() => {
14175
15030
  };
14176
15031
  })), designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, styleAuthoritySchema;
14177
15032
  var init_designState = __esmMin((() => {
14178
- init_types$7();
15033
+ init_types$8();
14179
15034
  init_rawStyleFields();
14180
15035
  designResolutionPolicySchema = z.enum([
14181
15036
  "generated",
@@ -14430,7 +15285,7 @@ var init_curatedSiteStyles = __esmMin((() => {
14430
15285
  init_headerLayoutStyles();
14431
15286
  init_footerLooks();
14432
15287
  init_sourceCatalogs();
14433
- init_types$7();
15288
+ init_types$8();
14434
15289
  init_siteStyleTypography();
14435
15290
  init_runtimeCompiler();
14436
15291
  SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
@@ -15172,7 +16027,8 @@ var init_curatedSiteStyles = __esmMin((() => {
15172
16027
  buttonStyleChoices: [
15173
16028
  buttonChoice("soft-pill"),
15174
16029
  buttonChoice("pebble"),
15175
- buttonChoice("confident-chip")
16030
+ buttonChoice("confident-chip"),
16031
+ buttonChoice("flat-ink")
15176
16032
  ],
15177
16033
  paletteRecommendations: [
15178
16034
  paletteRecommendation("soft-natural-sage"),
@@ -16026,7 +16882,7 @@ var init_siteStyleBlockPolicies = __esmMin((() => {
16026
16882
  init_lookResolution();
16027
16883
  init_appearancePresets();
16028
16884
  init_pageDesignIntent();
16029
- init_types$7();
16885
+ init_types$8();
16030
16886
  init_sectionTransitions();
16031
16887
  asPageFlowPresetId("generated-default");
16032
16888
  asSiteStyleId("site-style:south-west-twerk-school");
@@ -16040,12 +16896,12 @@ var init_pageDesignEditorModel = __esmMin((() => {
16040
16896
  init_lookResolution();
16041
16897
  init_siteStyleBlockPolicies();
16042
16898
  init_pageDesignIntent();
16043
- init_types$7();
16899
+ init_types$8();
16044
16900
  init_sectionTransitions();
16045
16901
  asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
16046
16902
  })), blockDesignFallback;
16047
16903
  var init_resolver$1 = __esmMin((() => {
16048
- init_types$7();
16904
+ init_types$8();
16049
16905
  blockDesignFallback = {
16050
16906
  sectionSurface: "base",
16051
16907
  contentFrame: plainFrame,
@@ -16079,6 +16935,13 @@ var init_siteStyleThemeCompiler = __esmMin((() => {
16079
16935
  init_concretePalette();
16080
16936
  }));
16081
16937
  //#endregion
16938
+ //#region ../theme-core/src/site-styles/buttonSelectionCompiler.ts
16939
+ var init_buttonSelectionCompiler = __esmMin((() => {
16940
+ init_runtimeCompiler();
16941
+ init_curatedSiteStyles();
16942
+ init_siteStyleThemeCompiler();
16943
+ }));
16944
+ //#endregion
16082
16945
  //#region ../theme-core/src/site-styles/previewCustomization.ts
16083
16946
  var init_previewCustomization = __esmMin((() => {}));
16084
16947
  //#endregion
@@ -16096,11 +16959,12 @@ var init_previewCompiler = __esmMin((() => {
16096
16959
  init_rawStyleFields();
16097
16960
  init_runtimeBackgroundResolution();
16098
16961
  init_siteStyleThemeCompiler();
16962
+ init_buttonSelectionCompiler();
16099
16963
  init_blockFlow();
16100
16964
  init_pageDesignEditorModel();
16101
16965
  init_pageDesignIntent();
16102
16966
  init_previewCustomization();
16103
- init_types$7();
16967
+ init_types$8();
16104
16968
  }));
16105
16969
  //#endregion
16106
16970
  //#region ../theme-core/src/site-styles/contentTemplateRuntimeCompiler.ts
@@ -16135,7 +16999,7 @@ var init_generatedSchemas = __esmMin((() => {
16135
16999
  init_cardRoleVocabulary();
16136
17000
  init_curatedSiteStyles();
16137
17001
  init_sourceCatalogs();
16138
- init_types$7();
17002
+ init_types$8();
16139
17003
  generatedPanelTreatments = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment));
16140
17004
  generatedFlushTreatments = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment));
16141
17005
  generatedFlushBleeds = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed));
@@ -16252,7 +17116,7 @@ function collectBlockSequenceIssues(snapshots) {
16252
17116
  }
16253
17117
  var nonEmptyStringSchema, blockContentVersionIdSchema, designBlockIdSchema, designPageIdSchema, designEntryIdSchema, blockOrderIndexSchema, publishedPageBlockSnapshotSchema, draftPageBlockSnapshotSchema, missingPageBlockSnapshotSchema, pageBlockSnapshotSchema, publishedPageBlockSequenceSchema, draftPageBlockSequenceSchema, publishedPageDesignVersionDataV1Schema, draftPageDesignVersionDataV1Schema;
16254
17118
  var init_pageDesignAuthority = __esmMin((() => {
16255
- init_types$7();
17119
+ init_types$8();
16256
17120
  init_pageDesignIntent();
16257
17121
  nonEmptyStringSchema = z.string().min(1);
16258
17122
  blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
@@ -16465,7 +17329,7 @@ var init_site_styles = __esmMin((() => {
16465
17329
  init_tokenRecipes();
16466
17330
  init_siteStyleTypography();
16467
17331
  init_themeParity();
16468
- init_types$7();
17332
+ init_types$8();
16469
17333
  }));
16470
17334
  //#endregion
16471
17335
  //#region ../theme-core/src/footer/mode.ts
@@ -16478,7 +17342,7 @@ var init_shadow = __esmMin((() => {
16478
17342
  //#endregion
16479
17343
  //#region ../theme-core/src/accordions/generateAccordionCss.ts
16480
17344
  var init_generateAccordionCss = __esmMin((() => {
16481
- init_types$11();
17345
+ init_types$12();
16482
17346
  init_colorStyles();
16483
17347
  init_surfaces();
16484
17348
  }));
@@ -16490,13 +17354,13 @@ var init_defaults = __esmMin((() => {
16490
17354
  //#endregion
16491
17355
  //#region ../theme-core/src/inputs/generateInputCss.ts
16492
17356
  var init_generateInputCss = __esmMin((() => {
16493
- init_types$10();
17357
+ init_types$11();
16494
17358
  init_colorStyles();
16495
17359
  }));
16496
17360
  //#endregion
16497
17361
  //#region ../theme-core/src/navigation/generateNavLinkCSS.ts
16498
17362
  var init_generateNavLinkCSS = __esmMin((() => {
16499
- init_types$8();
17363
+ init_types$9();
16500
17364
  init_generateEffectsCSS();
16501
17365
  })), NAV_DROPDOWN_SHIFT_PROPERTY, NAV_DROPDOWN_MAX_WIDTH_CSS;
16502
17366
  var init_navDropdownSizing = __esmMin((() => {
@@ -17370,6 +18234,8 @@ ${`:where([data-theme-scope="${themeId}"]) :where([data-block="course-registrati
17370
18234
  --cr-summary-bg: rgba(var(--tb-primary), 0.1);
17371
18235
  --cr-summary-border: rgb(var(--tb-border));
17372
18236
 
18237
+ ${EVENT_WHOLE_SERIES_VARIABLE_BRIDGE}
18238
+
17373
18239
  /* Shared registration-surface mappings (issue 1174).
17374
18240
  Route the shared --rb-reg-* contract through this block's Tier 3 vars
17375
18241
  (palette tokens where no --cr-* var exists) so existing --cr-* overrides
@@ -17382,7 +18248,7 @@ ${`:where([data-theme-scope="${themeId}"]) :where([data-block="course-registrati
17382
18248
  --rb-reg-option-bg: rgb(var(--tb-background));
17383
18249
  --rb-reg-option-hover-shadow: 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08);
17384
18250
  --rb-reg-surface-bg: rgb(var(--tb-surface));
17385
- --rb-reg-on-surface: var(--cr-on-surface);
18251
+ --rb-reg-on-surface: rgb(var(--tb-onSurface, var(--tb-text)));
17386
18252
  --rb-reg-on-surface-muted: rgba(var(--tb-onSurface, var(--tb-text)), 0.7);
17387
18253
  --rb-reg-on-surface-subtle: rgba(var(--tb-onSurface, var(--tb-text)), 0.6);
17388
18254
  --rb-reg-on-surface-faint: rgba(var(--tb-onSurface, var(--tb-text)), 0.5);
@@ -17401,7 +18267,48 @@ ${`:where([data-theme-scope="${themeId}"]) :where([data-block="course-registrati
17401
18267
  }
17402
18268
  `;
17403
18269
  }
17404
- var init_course_registration$1 = __esmMin((() => {}));
18270
+ var EVENT_WHOLE_SERIES_VARIABLE_BRIDGE;
18271
+ var init_course_registration$1 = __esmMin((() => {
18272
+ EVENT_WHOLE_SERIES_VARIABLE_BRIDGE = `
18273
+ /* Temporary bridge while persisted Course blocks render the Event-owned
18274
+ whole-series registration runtime. Removed with the Course block. */
18275
+ --er-step-active: var(--cr-step-active);
18276
+ --er-step-inactive: var(--cr-step-inactive);
18277
+ --er-step-completed: var(--cr-step-completed);
18278
+ --er-step-text: var(--cr-step-text);
18279
+ --er-step-text-active: var(--cr-step-text-active);
18280
+ --er-step-connector: var(--cr-step-connector);
18281
+ --er-step-title-size: var(--cr-step-title-size);
18282
+ --er-success-bg: var(--cr-success-bg);
18283
+ --er-success-text: var(--cr-success-text);
18284
+ --er-error-bg: var(--cr-error-bg);
18285
+ --er-error-text: var(--cr-error-text);
18286
+ --er-waitlist-bg: var(--cr-waitlist-bg);
18287
+ --er-waitlist-text: var(--cr-waitlist-text);
18288
+ --er-capacity-available-bg: var(--cr-capacity-available-bg);
18289
+ --er-capacity-available-text: var(--cr-capacity-available-text);
18290
+ --er-capacity-low-bg: var(--cr-capacity-low-bg);
18291
+ --er-capacity-low-text: var(--cr-capacity-low-text);
18292
+ --er-capacity-soldout-bg: var(--cr-capacity-soldout-bg);
18293
+ --er-capacity-soldout-text: var(--cr-capacity-soldout-text);
18294
+ --er-border: var(--cr-border);
18295
+ --er-border-hover: var(--cr-border-hover);
18296
+ --er-border-selected: var(--cr-border-selected);
18297
+ --er-border-error: var(--cr-border-error);
18298
+ --er-focus-ring: var(--cr-focus-ring);
18299
+ --er-required: var(--cr-required);
18300
+ --er-payment-border: var(--cr-payment-border);
18301
+ --er-payment-border-hover: var(--cr-payment-border-hover);
18302
+ --er-payment-border-selected: var(--cr-payment-border-selected);
18303
+ --er-payment-bg-selected: var(--cr-payment-bg-selected);
18304
+ --er-check-bg: var(--cr-check-bg);
18305
+ --er-check-text: var(--cr-check-text);
18306
+ --er-summary-bg: var(--cr-summary-bg);
18307
+ --er-summary-border: var(--cr-summary-border);
18308
+ --er-on-surface: rgb(var(--tb-onSurface, var(--tb-text)));
18309
+ --er-on-surface-hover-bg: rgba(var(--tb-onSurface, var(--tb-text)), 0.05);
18310
+ `;
18311
+ }));
17405
18312
  //#endregion
17406
18313
  //#region ../theme-core/src/blocks/registry.ts
17407
18314
  var blockVarRegistry;
@@ -17435,6 +18342,7 @@ var init_vars = __esmMin((() => {
17435
18342
  init_event_cards();
17436
18343
  init_customer_portal();
17437
18344
  init_testimonials$1();
18345
+ init_course_registration$1();
17438
18346
  }));
17439
18347
  //#endregion
17440
18348
  //#region ../theme-core/src/blocks/index.ts
@@ -17535,7 +18443,7 @@ var init_fonts = __esmMin((() => {}));
17535
18443
  var init_core$1 = __esmMin((() => {
17536
18444
  init_resolveButtonColourStates();
17537
18445
  init_resolvedButtonCss();
17538
- init_types$13();
18446
+ init_types$14();
17539
18447
  }));
17540
18448
  var init_buildThemeRuntimeFromBridge = __esmMin((() => {
17541
18449
  init_shadow();
@@ -17622,7 +18530,7 @@ function planSiteChromePlacement(positioning) {
17622
18530
  }
17623
18531
  var HEADER_POSITIONINGS;
17624
18532
  var init_siteChromePlacement = __esmMin((() => {
17625
- init_types$7();
18533
+ init_types$8();
17626
18534
  HEADER_POSITIONINGS = [
17627
18535
  "static",
17628
18536
  "sticky",
@@ -17725,7 +18633,7 @@ var init_registry$5 = __esmMin((() => {
17725
18633
  }));
17726
18634
  //#endregion
17727
18635
  //#region ../media-core/src/types.ts
17728
- var init_types$6 = __esmMin((() => {}));
18636
+ var init_types$7 = __esmMin((() => {}));
17729
18637
  //#endregion
17730
18638
  //#region ../media-core/src/fileSafety.ts
17731
18639
  var init_fileSafety = __esmMin((() => {})), AMBIENT_BACKGROUND_ROLES;
@@ -18001,7 +18909,7 @@ var init_contentMediaSnapshotAudit = __esmMin((() => {}));
18001
18909
  //#endregion
18002
18910
  //#region ../media-core/src/index.ts
18003
18911
  var init_src$3 = __esmMin((() => {
18004
- init_types$6();
18912
+ init_types$7();
18005
18913
  init_fileDomain();
18006
18914
  init_fileStorage();
18007
18915
  init_storagePathDomain();
@@ -18241,7 +19149,6 @@ var init_validation_constants = __esmMin((() => {
18241
19149
  "boxStyles.resolveRootStyle",
18242
19150
  "boxStyles.semanticGap",
18243
19151
  "boxStyles.semanticGapValue",
18244
- "boxStyles.cardVariantClass",
18245
19152
  "containerStyles.resolveBoxClassName"
18246
19153
  ];
18247
19154
  new Set(ALLOWED_NODE_TYPES);
@@ -19704,9 +20611,43 @@ function containerStylesField(options = {}) {
19704
20611
  return createBoxStylesFieldWithDepth("container", options);
19705
20612
  }
19706
20613
  function cardStylesField(options = {}) {
20614
+ if (options.controls === "role-only") return createRoleOnlyCardStylesField(options);
19707
20615
  return createBoxStylesFieldWithDepth("card", options);
19708
20616
  }
20617
+ function createRoleOnlyCardStylesField(options) {
20618
+ const { id = "_cardStyles", label = "Card styles", renderInHeader, intent } = options;
20619
+ return {
20620
+ id,
20621
+ type: "modal",
20622
+ label,
20623
+ required: false,
20624
+ schema: { fields: [{
20625
+ id: "role",
20626
+ type: "select",
20627
+ label: "Card style",
20628
+ description: "Choose a semantic card style from the active site style.",
20629
+ required: false,
20630
+ multiple: false,
20631
+ defaultValue: "default",
20632
+ options: cardVariantRoleValues.map((value) => ({
20633
+ value,
20634
+ label: value === "default" ? "Default" : "Alternative"
20635
+ }))
20636
+ }] },
20637
+ ui: {
20638
+ ...typeof renderInHeader === "boolean" ? { renderInHeader } : {},
20639
+ ...intent ? { intent } : {},
20640
+ modalConfig: {
20641
+ buttonLabel: label,
20642
+ description: "Choose the site-style card role.",
20643
+ buttonVariant: "outline",
20644
+ showCustomizedIndicator: true
20645
+ }
20646
+ }
20647
+ };
20648
+ }
19709
20649
  var init_boxStyles$1 = __esmMin((() => {
20650
+ init_cards();
19710
20651
  init_background$1();
19711
20652
  }));
19712
20653
  //#endregion
@@ -19804,7 +20745,7 @@ function validateProps(props, context = "node builder") {
19804
20745
  else console.error(message);
19805
20746
  }
19806
20747
  var RESERVED_KEYS;
19807
- var init_types$5 = __esmMin((() => {
20748
+ var init_types$6 = __esmMin((() => {
19808
20749
  init_env();
19809
20750
  RESERVED_KEYS = [
19810
20751
  "children",
@@ -19909,7 +20850,7 @@ function devValidate(node) {
19909
20850
  var section, headerSection, stack, inline, accordion, accordionItem, carousel, text, richText, icon, media, fileDownload, videoEmbed, button, link, form, bookingForm, eventRegistration, shop, productList, productDetail, cart, checkout, gifting, courseRegistration;
19910
20851
  var init_builder$1 = __esmMin((() => {
19911
20852
  init_schema$1();
19912
- init_types$5();
20853
+ init_types$6();
19913
20854
  init_env();
19914
20855
  section = (props, children, ...mods) => el$1("section", props, children, ...mods);
19915
20856
  headerSection = (props, children, ...mods) => el$1("headerSection", props, children, ...mods);
@@ -20913,21 +21854,29 @@ function cardRoleClass(role) {
20913
21854
  return `card-role-${role}`;
20914
21855
  }
20915
21856
  /**
21857
+ * The role class for a card slot the *block* owns structurally, where a Look
21858
+ * may still name the surface.
21859
+ *
21860
+ * Some layouts have more than one card slot and decide themselves which one is
21861
+ * the statement — the featured-editorial testimonials field is a lead voice
21862
+ * beside its supporting voices, and that is structure, not composition. Those
21863
+ * slots still have to honour a Look that picks a surface, or a role-picking
21864
+ * Look would silently no-op under the layout. So the slot carries a default
21865
+ * role and the Look's compiled role wins over it when there is one.
21866
+ *
21867
+ * An explicit `none` is honoured as boxlessness and emits no class, matching
21868
+ * how the composite emitter reads it.
21869
+ */
21870
+ /**
20916
21871
  * The role a card renders with, and the one place a set of card styles becomes
20917
21872
  * a role.
20918
21873
  *
20919
- * Precedence: a per-item override, then the `role` a Look compiled onto the
20920
- * block's card styles, then the legacy `cardVariant` field. `cardVariant` only
20921
- * ever held role names, so it reads *as* a role rather than as a second
20922
- * vocabulary — an explicit `role` wins when a record carries both.
20923
- *
20924
- * Compiled and freshly authored card styles carry only `role`. `cardVariant`
20925
- * survives on content persisted before the role contract, and normalizes here
20926
- * rather than in `cardStylesOverrideSchema` because that content reaches the
20927
- * renderer as a raw record without ever passing through the schema.
21874
+ * Precedence: a per-item override, then the `role` a Look or semantic field
21875
+ * compiled onto the block's card styles. Persisted inputs are normalized at
21876
+ * this boundary because raw block records do not pass through the theme schema.
20928
21877
  */
20929
21878
  function resolveCardRoleForBoxStyles(input, override) {
20930
- return override ?? normalizeCardRole(input.role) ?? normalizeCardRole(input.cardVariant);
21879
+ return override ?? normalizeCardRole(input.role);
20931
21880
  }
20932
21881
  /**
20933
21882
  * Parse a block's own per-item surface vocabulary into a card role. The alias
@@ -20944,8 +21893,8 @@ function resolveItemCardRole(value, aliases) {
20944
21893
  * The card surface for a set of box styles: one role, one class vocabulary, so
20945
21894
  * a site-style swap re-skins the card whichever field named it.
20946
21895
  */
20947
- function cardSurface(input, override) {
20948
- const role = resolveCardRoleForBoxStyles(input, override);
21896
+ function cardSurface(input, override, fallback) {
21897
+ const role = resolveCardRoleForBoxStyles(input, override) ?? fallback ?? null;
20949
21898
  if (!role) return {
20950
21899
  role: null,
20951
21900
  classes: []
@@ -21036,10 +21985,9 @@ function raisedClassFor(options) {
21036
21985
  * of keeping a copy that drifts.
21037
21986
  */
21038
21987
  function boxStyleClassNames(value, options) {
21039
- if (!value || typeof value !== "object") return options.baseClass?.trim() || "";
21040
- const input = value;
21988
+ const input = value && typeof value === "object" ? value : {};
21041
21989
  const borderOverride = borderOverrideClass(input);
21042
- const surface = cardSurface(input, options.cardRoleOverride);
21990
+ const surface = cardSurface(input, options.cardRoleOverride, options.cardRoleFallback);
21043
21991
  const cardOwnsBorder = surface.role !== null && surface.role !== "none";
21044
21992
  return [
21045
21993
  borderOverride || cardOwnsBorder ? withoutBorderClasses(options.baseClass ?? "") : options.baseClass ?? "",
@@ -21076,6 +22024,14 @@ var init_boxStyleClassNames = __esmMin((() => {
21076
22024
  }));
21077
22025
  //#endregion
21078
22026
  //#region ../blocks/src/system/transforms/registry/boxStyles.ts
22027
+ function resolveBorderColorState(value, options, viewModel) {
22028
+ const input = asPartialObject(options?.stylesPath ? readPath(viewModel, options.stylesPath) : value);
22029
+ if (!input) return null;
22030
+ return {
22031
+ input,
22032
+ role: resolveCardRoleForBoxStyles(input, options?.stylesPath ? resolveItemCardRole(value, options.itemRoleAliases) : void 0)
22033
+ };
22034
+ }
21079
22035
  function readPath(source, path) {
21080
22036
  if (!source || !path) return void 0;
21081
22037
  if (!path.includes(".")) return source[path];
@@ -21100,13 +22056,12 @@ function isTileTreatment(value) {
21100
22056
  function isEventListTreatment(value) {
21101
22057
  return typeof value === "string" && eventListTreatmentSet.has(value);
21102
22058
  }
21103
- var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, CARD_ROLE_CHILD_HOOKS, cardRoleClassTransform, cardVariantClassTransform, boxStylesBorderColorTransform, tileTreatmentClassMap, tileTreatmentSet, eventListTreatmentClassMap, eventListTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName, sectionColorsStyleTransform, GAP_CLASS_MAP, GAP_VALUE_MAP, semanticGapTransform, semanticGapValueTransform, boxStylesTransforms;
22059
+ var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, CARD_ROLE_CHILD_HOOKS, cardRoleClassTransform, cardSlotRoleTransform, boxStylesBorderColorTransform, tileTreatmentClassMap, tileTreatmentSet, eventListTreatmentClassMap, eventListTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName, sectionColorsStyleTransform, GAP_CLASS_MAP, GAP_VALUE_MAP, semanticGapTransform, semanticGapValueTransform, boxStylesTransforms;
21104
22060
  var init_boxStyles = __esmMin((() => {
21105
22061
  init_core();
21106
22062
  init_spacing();
21107
22063
  init_site_styles();
21108
22064
  init_colorStyles();
21109
- init_cards();
21110
22065
  init_blockColorTokens();
21111
22066
  init_surfaceForegroundStyles();
21112
22067
  init_boxStyleClassNames();
@@ -21190,29 +22145,28 @@ var init_boxStyles = __esmMin((() => {
21190
22145
  return baseClass ? `${baseClass.trim()} ${hook}` : hook;
21191
22146
  }
21192
22147
  };
21193
- cardVariantClassTransform = {
21194
- id: "boxStyles.cardVariantClass",
22148
+ cardSlotRoleTransform = {
22149
+ id: "boxStyles.cardSlotRole",
21195
22150
  kind: "string",
21196
- summary: "Map a site-style card variant role to its card-role-{role} CSS class",
21197
- run: (value, options) => {
21198
- const baseClass = options?.baseClass?.trim() ?? "";
21199
- const cardVariant = normalizeBoxStylesCardVariant(value);
21200
- if (!cardVariant || cardVariant === "none") return baseClass;
21201
- const roleClass = `card-role-${cardVariant}`;
21202
- return baseClass ? `${baseClass} ${roleClass}` : roleClass;
21203
- }
22151
+ summary: "Resolve a layout card slot's role class, defaulting to the slot's own role",
22152
+ run: (value, options) => boxStyleClassNames(value, {
22153
+ baseClass: options?.baseClass,
22154
+ cardRoleFallback: options.slotDefault,
22155
+ includeSpacing: false
22156
+ })
21204
22157
  };
21205
22158
  boxStylesBorderColorTransform = {
21206
22159
  id: "boxStyles.borderColor",
21207
22160
  kind: "string",
21208
22161
  summary: "Resolve border color from box styles border.colorToken",
21209
- run: (value, options, _context) => {
22162
+ run: (value, options, context) => {
21210
22163
  const fallbackToken = options?.fallbackToken ?? "border";
21211
22164
  const returnEmptyForDefault = options?.returnEmptyForDefault ?? false;
21212
22165
  let explicitToken = null;
21213
- const input = asPartialObject(value);
21214
- if (input) {
21215
- const border = normalizeBoxStylesBorder(input.border);
22166
+ const state = resolveBorderColorState(value, options, context.viewModel);
22167
+ if (state) {
22168
+ if (state.role && state.role !== "none") return "";
22169
+ const border = normalizeBoxStylesBorder(state.input.border);
21216
22170
  if (border && border.enabled === true && border.colorToken) explicitToken = border.colorToken;
21217
22171
  }
21218
22172
  if (explicitToken) {
@@ -21372,7 +22326,7 @@ var init_boxStyles = __esmMin((() => {
21372
22326
  roundedTransform,
21373
22327
  boxStylesCompositeTransform,
21374
22328
  cardRoleClassTransform,
21375
- cardVariantClassTransform,
22329
+ cardSlotRoleTransform,
21376
22330
  boxStylesBorderColorTransform,
21377
22331
  sectionClassNameTransform,
21378
22332
  containerStylesResolveClassName,
@@ -21468,10 +22422,16 @@ function styledCard(children, opts, ...mods) {
21468
22422
  const style = {
21469
22423
  ...opts.style ?? {},
21470
22424
  borderColor: { $bind: {
21471
- from: opts.stylesFrom,
22425
+ from: opts.itemRole?.from ?? opts.stylesFrom,
21472
22426
  transforms: [{
21473
22427
  id: "boxStyles.borderColor",
21474
- options: { returnEmptyForDefault: true }
22428
+ options: {
22429
+ returnEmptyForDefault: true,
22430
+ ...opts.itemRole ? {
22431
+ stylesPath: opts.stylesFrom,
22432
+ ...opts.itemRole.aliases ? { itemRoleAliases: opts.itemRole.aliases } : {}
22433
+ } : {}
22434
+ }
21475
22435
  }]
21476
22436
  } }
21477
22437
  };
@@ -21790,7 +22750,7 @@ function scopeContentPath(path, scope) {
21790
22750
  return `content.${scope}.${path}`;
21791
22751
  }
21792
22752
  var FRAGMENT_ID_PATTERN, FIELD_ID_PATTERN, dataLoaderSchema, fragmentDataSchema, fragmentConfigSchema, FragmentConfigError;
21793
- var init_types$4 = __esmMin((() => {
22753
+ var init_types$5 = __esmMin((() => {
21794
22754
  init_schema();
21795
22755
  init_node();
21796
22756
  FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
@@ -21909,7 +22869,7 @@ function buildFragmentDataLoaders(composition) {
21909
22869
  }
21910
22870
  var FragmentCompositionError, DOT_SCOPE_REGEX;
21911
22871
  var init_builder = __esmMin((() => {
21912
- init_types$4();
22872
+ init_types$5();
21913
22873
  FragmentCompositionError = class extends Error {
21914
22874
  constructor(message) {
21915
22875
  super(message);
@@ -21967,7 +22927,7 @@ var init_toRepeaterSchema = __esmMin((() => {}));
21967
22927
  //#region ../blocks/src/system/fragments/library/bodyCopy.ts
21968
22928
  var bodyCopyFragment;
21969
22929
  var init_bodyCopy = __esmMin((() => {
21970
- init_types$4();
22930
+ init_types$5();
21971
22931
  init_builder$1();
21972
22932
  bodyCopyFragment = defineFragment$2({
21973
22933
  id: "bodyCopy",
@@ -22034,7 +22994,7 @@ var init_bodyCopy = __esmMin((() => {
22034
22994
  //#region ../blocks/src/system/fragments/library/heroCopy.ts
22035
22995
  var heroCopyFragment;
22036
22996
  var init_heroCopy = __esmMin((() => {
22037
- init_types$4();
22997
+ init_types$5();
22038
22998
  init_builder$1();
22039
22999
  init_fragments$1();
22040
23000
  heroCopyFragment = defineFragment$2({
@@ -22094,7 +23054,7 @@ var init_heroCopy = __esmMin((() => {
22094
23054
  //#region ../blocks/src/system/fragments/library/heroLayoutControls.ts
22095
23055
  var heroLayoutControlsFragment;
22096
23056
  var init_heroLayoutControls = __esmMin((() => {
22097
- init_types$4();
23057
+ init_types$5();
22098
23058
  heroLayoutControlsFragment = defineFragment$2({
22099
23059
  id: "heroLayoutControls",
22100
23060
  title: "Hero Layout",
@@ -22384,7 +23344,7 @@ var init_ctas = __esmMin((() => {
22384
23344
  //#region ../blocks/src/system/fragments/library/ctaRow.ts
22385
23345
  var ctaRowFragment;
22386
23346
  var init_ctaRow = __esmMin((() => {
22387
- init_types$4();
23347
+ init_types$5();
22388
23348
  init_fragments$1();
22389
23349
  init_ctas();
22390
23350
  ctaRowFragment = defineFragment$2({
@@ -22407,7 +23367,7 @@ var init_ctaRow = __esmMin((() => {
22407
23367
  //#region ../blocks/src/system/fragments/library/heroCtaRow.ts
22408
23368
  var heroCtaFields, heroCtaRowFragment;
22409
23369
  var init_heroCtaRow = __esmMin((() => {
22410
- init_types$4();
23370
+ init_types$5();
22411
23371
  init_fragments$1();
22412
23372
  init_ctas();
22413
23373
  heroCtaFields = [createCtasRepeater({
@@ -22464,7 +23424,7 @@ var init_heroCtaRow = __esmMin((() => {
22464
23424
  //#region ../blocks/src/system/fragments/library/ctaCopy.ts
22465
23425
  var ctaCopyFragment;
22466
23426
  var init_ctaCopy = __esmMin((() => {
22467
- init_types$4();
23427
+ init_types$5();
22468
23428
  init_fragments$1();
22469
23429
  init_builder$1();
22470
23430
  ctaCopyFragment = defineFragment$2({
@@ -22504,7 +23464,7 @@ var init_ctaCopy = __esmMin((() => {
22504
23464
  //#region ../blocks/src/system/fragments/library/testimonialsHeading.ts
22505
23465
  var testimonialsHeadingFragment;
22506
23466
  var init_testimonialsHeading = __esmMin((() => {
22507
- init_types$4();
23467
+ init_types$5();
22508
23468
  init_builder$1();
22509
23469
  init_colorStyles();
22510
23470
  testimonialsHeadingFragment = defineFragment$2({
@@ -22701,18 +23661,48 @@ function buildGridCardsLayout(className) {
22701
23661
  return el$1("div", { className }, buildResponsiveGridCards());
22702
23662
  }
22703
23663
  /**
23664
+ * The class list for one featured-editorial card slot.
23665
+ *
23666
+ * A slot that follows the Look has to resolve at render time, so it binds
23667
+ * through the shared card-class emitter rather than naming a role class here;
23668
+ * a slot that does not is a plain string built by the same composite emitter.
23669
+ */
23670
+ function featuredEditorialCardClassName(slot) {
23671
+ const { variantClass, slotDefault, followsLook } = FEATURED_EDITORIAL_SLOTS[slot];
23672
+ const baseClass = ["rb-testimonials-fe-card", variantClass].filter(Boolean).join(" ");
23673
+ if (!followsLook) return boxStyleClassNames({}, {
23674
+ baseClass,
23675
+ cardRoleFallback: slotDefault,
23676
+ includeSpacing: false
23677
+ });
23678
+ return { $bind: {
23679
+ from: TESTIMONIALS_CARD_STYLES_PATH,
23680
+ transforms: [{
23681
+ id: "boxStyles.cardSlotRole",
23682
+ options: {
23683
+ baseClass,
23684
+ slotDefault
23685
+ }
23686
+ }],
23687
+ fallback: boxStyleClassNames({}, {
23688
+ baseClass,
23689
+ cardRoleFallback: slotDefault,
23690
+ includeSpacing: false
23691
+ })
23692
+ } };
23693
+ }
23694
+ /**
22704
23695
  * Build a single "featured editorial" testimonial card.
22705
23696
  *
22706
- * This card type deliberately renders NO avatar/headshot: an amber quote mark,
22707
- * the quote body, then the author name and a context line. Colour + surface
22708
- * treatment is driven entirely by `variantClass` (see testimonials.css):
22709
- * - `rb-testimonials-fe-card--feature` → spruce-ink card (dark primary bg)
22710
- * - `rb-testimonials-fe-card--plain` → white surface card
23697
+ * This card type deliberately renders NO avatar/headshot: a quote mark, the
23698
+ * quote body, then the author name and a context line. The card surface comes
23699
+ * from the slot's card role — the site style owns the fill, border, corners and
23700
+ * padding.
22711
23701
  *
22712
23702
  * Extra modifiers (`repeat`, `when`) are forwarded to the card node so the
22713
23703
  * caller can drive first-vs-rest branching.
22714
23704
  */
22715
- function buildFeaturedEditorialCard(variantClass, ...mods) {
23705
+ function buildFeaturedEditorialCard(slot, ...mods) {
22716
23706
  const quoteMark = text({
22717
23707
  as: "span",
22718
23708
  className: "rb-testimonials-fe-qmark",
@@ -22726,11 +23716,11 @@ function buildFeaturedEditorialCard(variantClass, ...mods) {
22726
23716
  as: "span",
22727
23717
  className: "rb-testimonials-fe-context"
22728
23718
  }, when("testimonial.content.jobTitle"), bind$1("testimonial.content.jobTitle"))]);
22729
- return el$1("div", { className: `rb-testimonials-fe-card ${variantClass}` }, [
23719
+ return el$1("div", { className: featuredEditorialCardClassName(slot) }, [el$1("div", { className: "card-content rb-testimonials-fe-card-body" }, [
22730
23720
  quoteMark,
22731
23721
  quote,
22732
23722
  meta
22733
- ], ...mods);
23723
+ ])], ...mods);
22734
23724
  }
22735
23725
  /**
22736
23726
  * Build the "featured editorial" layout: an asymmetric two-column arrangement
@@ -22744,17 +23734,32 @@ function buildFeaturedEditorialCard(variantClass, ...mods) {
22744
23734
  * index scope in context, so entry 0 produces no node in the rest column.
22745
23735
  */
22746
23736
  function buildFeaturedEditorialLayout() {
22747
- return el$1("div", { className: "rb-testimonials-fe-grid" }, [buildFeaturedEditorialCard("rb-testimonials-fe-card--feature", repeat("data.entries", "testimonial", { limit: 1 })), el$1("div", { className: "rb-testimonials-fe-col" }, [buildFeaturedEditorialCard("rb-testimonials-fe-card--plain", repeat("data.entries", "testimonial", { indexName: "tIndex" }), when("tIndex", {
23737
+ return el$1("div", { className: "rb-testimonials-fe-grid" }, [buildFeaturedEditorialCard("lead", repeat("data.entries", "testimonial", { limit: 1 })), el$1("div", { className: "rb-testimonials-fe-col" }, [buildFeaturedEditorialCard("support", repeat("data.entries", "testimonial", { indexName: "tIndex" }), when("tIndex", {
22748
23738
  equals: 0,
22749
23739
  not: true
22750
23740
  }))])]);
22751
23741
  }
22752
- var grid$4, testimonialsCarouselFragment;
23742
+ var grid$4, FEATURED_EDITORIAL_SLOTS, TESTIMONIALS_CARD_STYLES_PATH, testimonialsCarouselFragment;
22753
23743
  var init_testimonialsCarousel = __esmMin((() => {
22754
- init_types$4();
23744
+ init_types$5();
22755
23745
  init_builder$1();
22756
23746
  init_fragments$1();
23747
+ init_boxStyleClassNames();
22757
23748
  grid$4 = (props, children, ...mods) => el$1("grid", props ?? void 0, children ?? void 0, ...mods);
23749
+ FEATURED_EDITORIAL_SLOTS = {
23750
+ lead: {
23751
+ /** Composition CSS addresses the lead card's geometry through this. */
23752
+ variantClass: "rb-testimonials-fe-card--feature",
23753
+ slotDefault: "alternative",
23754
+ followsLook: true
23755
+ },
23756
+ support: {
23757
+ variantClass: null,
23758
+ slotDefault: "default",
23759
+ followsLook: false
23760
+ }
23761
+ };
23762
+ TESTIMONIALS_CARD_STYLES_PATH = "content._cardStyles";
22758
23763
  testimonialsCarouselFragment = defineFragment$2({
22759
23764
  id: "testimonialsCarousel",
22760
23765
  title: "Testimonials",
@@ -22995,7 +24000,7 @@ var init_testimonialsCarousel = __esmMin((() => {
22995
24000
  //#region ../blocks/src/system/fragments/library/formCopy.ts
22996
24001
  var formCopyFragment;
22997
24002
  var init_formCopy = __esmMin((() => {
22998
- init_types$4();
24003
+ init_types$5();
22999
24004
  init_builder$1();
23000
24005
  formCopyFragment = defineFragment$2({
23001
24006
  id: "formCopy",
@@ -23036,7 +24041,7 @@ var init_api_bindings = __esmMin((() => {
23036
24041
  //#region ../blocks/src/system/fragments/library/formEmbed.ts
23037
24042
  var formEmbedFragment;
23038
24043
  var init_formEmbed = __esmMin((() => {
23039
- init_types$4();
24044
+ init_types$5();
23040
24045
  init_builder$1();
23041
24046
  init_api_bindings();
23042
24047
  formEmbedFragment = defineFragment$2({
@@ -23186,7 +24191,7 @@ var init_headerCta = __esmMin((() => {
23186
24191
  //#region ../blocks/src/system/fragments/library/singleButton.ts
23187
24192
  var singleButtonFragment;
23188
24193
  var init_singleButton = __esmMin((() => {
23189
- init_types$4();
24194
+ init_types$5();
23190
24195
  init_fragments$1();
23191
24196
  init_button();
23192
24197
  singleButtonFragment = defineFragment$2({
@@ -23212,7 +24217,7 @@ var init_singleButton = __esmMin((() => {
23212
24217
  //#region ../blocks/src/system/fragments/library/blogFeaturedPost.ts
23213
24218
  var blogFeaturedPostFragment;
23214
24219
  var init_blogFeaturedPost = __esmMin((() => {
23215
- init_types$4();
24220
+ init_types$5();
23216
24221
  init_fragments$1();
23217
24222
  init_builder$1();
23218
24223
  init_colorStyles();
@@ -23321,7 +24326,7 @@ function faqHeadingLayout() {
23321
24326
  }
23322
24327
  var faqHeadingFragment;
23323
24328
  var init_faqHeading = __esmMin((() => {
23324
- init_types$4();
24329
+ init_types$5();
23325
24330
  init_builder$1();
23326
24331
  init_fragments$1();
23327
24332
  init_colorStyles();
@@ -23393,7 +24398,7 @@ function createFaqAccordionLayout(options = {}) {
23393
24398
  var faqAccordionFragment;
23394
24399
  var init_faqAccordion = __esmMin((() => {
23395
24400
  init_builder$1();
23396
- init_types$4();
24401
+ init_types$5();
23397
24402
  faqAccordionFragment = defineFragment$2({
23398
24403
  id: "faqAccordion",
23399
24404
  title: "FAQ Accordion",
@@ -23427,7 +24432,7 @@ var init_faqAccordion = __esmMin((() => {
23427
24432
  //#region ../blocks/src/system/fragments/library/newsletterCopy.ts
23428
24433
  var newsletterCopyFragment;
23429
24434
  var init_newsletterCopy = __esmMin((() => {
23430
- init_types$4();
24435
+ init_types$5();
23431
24436
  init_builder$1();
23432
24437
  newsletterCopyFragment = defineFragment$2({
23433
24438
  id: "newsletterCopy",
@@ -23454,7 +24459,7 @@ var init_newsletterCopy = __esmMin((() => {
23454
24459
  //#region ../blocks/src/system/fragments/library/newsletterForm.ts
23455
24460
  var newsletterFormFragment;
23456
24461
  var init_newsletterForm = __esmMin((() => {
23457
- init_types$4();
24462
+ init_types$5();
23458
24463
  init_builder$1();
23459
24464
  init_api_bindings();
23460
24465
  init_button();
@@ -23613,15 +24618,15 @@ var init_newsletterForm = __esmMin((() => {
23613
24618
  }));
23614
24619
  //#endregion
23615
24620
  //#region ../blocks/src/system/fragments/library/card.ts
23616
- var cardVariantOptions$1, cardFragment;
24621
+ var cardVariantOptions, cardFragment;
23617
24622
  var init_card = __esmMin((() => {
23618
- init_types$4();
24623
+ init_types$5();
23619
24624
  init_builder$1();
23620
24625
  init_ctas();
23621
24626
  init_ctaRow$1();
23622
24627
  init_colorStyles();
23623
24628
  init_cards();
23624
- cardVariantOptions$1 = cardVariantRoleValues.map((value) => ({
24629
+ cardVariantOptions = cardVariantRoleValues.map((value) => ({
23625
24630
  value,
23626
24631
  label: value === "default" ? "Default" : "Alternative"
23627
24632
  }));
@@ -23702,7 +24707,7 @@ var init_card = __esmMin((() => {
23702
24707
  description: "Choose a card style from your theme",
23703
24708
  required: false,
23704
24709
  defaultValue: "default",
23705
- options: cardVariantOptions$1,
24710
+ options: cardVariantOptions,
23706
24711
  ui: { intent: "style" }
23707
24712
  }
23708
24713
  ],
@@ -23711,7 +24716,10 @@ var init_card = __esmMin((() => {
23711
24716
  className: { $bind: {
23712
24717
  from: "variant",
23713
24718
  fallback: "default",
23714
- transforms: [{ id: "boxStyles.cardVariantClass" }]
24719
+ transforms: [{
24720
+ id: "boxStyles.cardRoleClass",
24721
+ options: { baseClass: "" }
24722
+ }]
23715
24723
  } }
23716
24724
  }, [media({
23717
24725
  className: "card-media rb-w-full rb-h-auto rb-object-cover",
@@ -23742,7 +24750,7 @@ var init_card = __esmMin((() => {
23742
24750
  //#region ../blocks/src/system/fragments/library/heading.ts
23743
24751
  var headingFragment;
23744
24752
  var init_heading = __esmMin((() => {
23745
- init_types$4();
24753
+ init_types$5();
23746
24754
  init_builder$1();
23747
24755
  headingFragment = defineFragment$2({
23748
24756
  id: "heading",
@@ -23787,7 +24795,7 @@ var init_heading = __esmMin((() => {
23787
24795
  //#region ../blocks/src/system/fragments/library/richText.ts
23788
24796
  var richTextFragment;
23789
24797
  var init_richText = __esmMin((() => {
23790
- init_types$4();
24798
+ init_types$5();
23791
24799
  init_builder$1();
23792
24800
  richTextFragment = defineFragment$2({
23793
24801
  id: "richText",
@@ -23808,7 +24816,7 @@ var init_richText = __esmMin((() => {
23808
24816
  //#region ../blocks/src/system/fragments/library/image.ts
23809
24817
  var imageFragment;
23810
24818
  var init_image = __esmMin((() => {
23811
- init_types$4();
24819
+ init_types$5();
23812
24820
  init_builder$1();
23813
24821
  init_colorStyles();
23814
24822
  imageFragment = defineFragment$2({
@@ -23912,7 +24920,7 @@ var init_image = __esmMin((() => {
23912
24920
  //#region ../blocks/src/system/fragments/library/videoEmbed.ts
23913
24921
  var videoEmbedFragment;
23914
24922
  var init_videoEmbed = __esmMin((() => {
23915
- init_types$4();
24923
+ init_types$5();
23916
24924
  init_builder$1();
23917
24925
  init_colorStyles();
23918
24926
  videoEmbedFragment = defineFragment$2({
@@ -23976,7 +24984,7 @@ var init_videoEmbed = __esmMin((() => {
23976
24984
  //#region ../blocks/src/system/fragments/library/quote.ts
23977
24985
  var quoteFragment;
23978
24986
  var init_quote = __esmMin((() => {
23979
- init_types$4();
24987
+ init_types$5();
23980
24988
  init_builder$1();
23981
24989
  quoteFragment = defineFragment$2({
23982
24990
  id: "quote",
@@ -24025,7 +25033,7 @@ var init_quote = __esmMin((() => {
24025
25033
  //#region ../blocks/src/system/fragments/library/feedbackCallout.ts
24026
25034
  var feedbackCalloutFragment;
24027
25035
  var init_feedbackCallout = __esmMin((() => {
24028
- init_types$4();
25036
+ init_types$5();
24029
25037
  init_ctas();
24030
25038
  init_fragments$1();
24031
25039
  feedbackCalloutFragment = defineFragment$2({
@@ -24120,7 +25128,7 @@ var init_feedbackCallout = __esmMin((() => {
24120
25128
  //#region ../blocks/src/system/fragments/library/sectionState.ts
24121
25129
  var SECTION_STATE_KIND_LABELS, sectionStateFragment;
24122
25130
  var init_sectionState = __esmMin((() => {
24123
- init_types$4();
25131
+ init_types$5();
24124
25132
  init_ctas();
24125
25133
  init_fragments$1();
24126
25134
  SECTION_STATE_KIND_LABELS = {
@@ -24207,7 +25215,7 @@ var init_sectionState = __esmMin((() => {
24207
25215
  //#region ../blocks/src/system/fragments/library/columnContent.ts
24208
25216
  var columnContentFragment;
24209
25217
  var init_columnContent = __esmMin((() => {
24210
- init_types$4();
25218
+ init_types$5();
24211
25219
  init_builder$1();
24212
25220
  init_toRepeaterSchema();
24213
25221
  init_image();
@@ -24259,7 +25267,7 @@ var init_columnContent = __esmMin((() => {
24259
25267
  //#region ../blocks/src/system/fragments/library/teamMember.ts
24260
25268
  var teamMemberFragment;
24261
25269
  var init_teamMember = __esmMin((() => {
24262
- init_types$4();
25270
+ init_types$5();
24263
25271
  init_builder$1();
24264
25272
  init_fragments$1();
24265
25273
  teamMemberFragment = defineFragment$2({
@@ -24332,7 +25340,7 @@ var init_teamMember = __esmMin((() => {
24332
25340
  //#endregion
24333
25341
  //#region ../blocks/src/system/fragments/index.ts
24334
25342
  var init_fragments = __esmMin((() => {
24335
- init_types$4();
25343
+ init_types$5();
24336
25344
  init_builder();
24337
25345
  init_registry$4();
24338
25346
  init_toRepeaterSchema();
@@ -30786,7 +31794,7 @@ var init_weekly_slot_availability = __esmMin((() => {
30786
31794
  }));
30787
31795
  //#endregion
30788
31796
  //#region ../blocks/src/system/blocks/events/shared/types.ts
30789
- var init_types$3 = __esmMin((() => {}));
31797
+ var init_types$4 = __esmMin((() => {}));
30790
31798
  //#endregion
30791
31799
  //#region ../blocks/src/lib/media.ts
30792
31800
  var PUBLIC_DOWNLOAD_MEDIA_TYPES;
@@ -30910,16 +31918,19 @@ var init_bookingPaymentTerms = __esmMin((() => {
30910
31918
  blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
30911
31919
  }));
30912
31920
  //#endregion
30913
- //#region ../blocks/src/system/blocks/courses/shared/schemas.ts
30914
- var courseVenueSchema, courseSessionSchema, courseTeamMemberSummarySchema, coursePricingOptionSchema, coursePricingSchema, publicWholeSeriesOfferingSchema, publicCourseSchema, publicWholeSeriesOfferingsArraySchema, publicCoursesArraySchema;
30915
- var init_schemas$1 = __esmMin((() => {
31921
+ //#region ../blocks/src/system/blocks/events/whole-series/pricing.ts
31922
+ var init_pricing$2 = __esmMin((() => {}));
31923
+ //#endregion
31924
+ //#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
31925
+ var wholeSeriesVenueSchema, wholeSeriesSessionSchema, wholeSeriesTeamMemberSummarySchema, wholeSeriesPricingOptionSchema, wholeSeriesPricingSchema, publicWholeSeriesOfferingSchema, publicWholeSeriesOfferingsArraySchema;
31926
+ var init_schemas$2 = __esmMin((() => {
30916
31927
  init_bookingPaymentTerms();
30917
- courseVenueSchema = z.object({
31928
+ wholeSeriesVenueSchema = z.object({
30918
31929
  id: z.string(),
30919
31930
  name: z.string(),
30920
31931
  address: z.string().nullable()
30921
31932
  });
30922
- courseSessionSchema = z.object({
31933
+ wholeSeriesSessionSchema = z.object({
30923
31934
  id: z.string(),
30924
31935
  startsAt: z.string(),
30925
31936
  endsAt: z.string(),
@@ -30927,14 +31938,14 @@ var init_schemas$1 = __esmMin((() => {
30927
31938
  capacityOverride: z.number().nullable().optional(),
30928
31939
  overrides: z.record(z.string(), z.unknown()).nullable().optional()
30929
31940
  });
30930
- courseTeamMemberSummarySchema = z.object({
31941
+ wholeSeriesTeamMemberSummarySchema = z.object({
30931
31942
  id: z.string(),
30932
31943
  name: z.string(),
30933
31944
  roleLabel: z.string().nullable(),
30934
31945
  summary: z.string().nullable(),
30935
31946
  profilePath: z.string().nullable()
30936
31947
  });
30937
- coursePricingOptionSchema = z.object({
31948
+ wholeSeriesPricingOptionSchema = z.object({
30938
31949
  id: z.string(),
30939
31950
  name: z.string(),
30940
31951
  description: z.string().nullable(),
@@ -30950,7 +31961,7 @@ var init_schemas$1 = __esmMin((() => {
30950
31961
  "both"
30951
31962
  ]).nullable().optional()
30952
31963
  });
30953
- coursePricingSchema = z.object({
31964
+ wholeSeriesPricingSchema = z.object({
30954
31965
  bookingRequirement: z.enum(["none", "required"]),
30955
31966
  pricingStrategy: z.enum([
30956
31967
  "free",
@@ -30964,7 +31975,7 @@ var init_schemas$1 = __esmMin((() => {
30964
31975
  slidingMaxAmount: z.number().nullable().optional(),
30965
31976
  slidingSuggestedAmount: z.number().nullable().optional(),
30966
31977
  paymentTerms: blockBookingPaymentTermsSchema,
30967
- options: z.array(coursePricingOptionSchema)
31978
+ options: z.array(wholeSeriesPricingOptionSchema)
30968
31979
  });
30969
31980
  publicWholeSeriesOfferingSchema = z.object({
30970
31981
  eventSeriesId: z.string(),
@@ -30972,9 +31983,9 @@ var init_schemas$1 = __esmMin((() => {
30972
31983
  title: z.string(),
30973
31984
  slug: z.string(),
30974
31985
  description: z.unknown().nullable(),
30975
- teamMembers: z.array(courseTeamMemberSummarySchema).optional(),
31986
+ teamMembers: z.array(wholeSeriesTeamMemberSummarySchema).optional(),
30976
31987
  enrollmentOpen: z.boolean(),
30977
- pricing: coursePricingSchema,
31988
+ pricing: wholeSeriesPricingSchema,
30978
31989
  currency: z.string(),
30979
31990
  paymentTerms: blockBookingPaymentTermsSchema,
30980
31991
  enrollmentCapacity: z.number().nullable(),
@@ -30987,18 +31998,26 @@ var init_schemas$1 = __esmMin((() => {
30987
31998
  sessionsCount: z.number(),
30988
31999
  enrolledCount: z.number(),
30989
32000
  availableSpots: z.number().nullable(),
30990
- sessions: z.array(courseSessionSchema),
30991
- venue: courseVenueSchema.nullable()
32001
+ sessions: z.array(wholeSeriesSessionSchema),
32002
+ venue: wholeSeriesVenueSchema.nullable()
30992
32003
  });
30993
- publicCourseSchema = publicWholeSeriesOfferingSchema;
30994
32004
  publicWholeSeriesOfferingsArraySchema = z.array(publicWholeSeriesOfferingSchema);
30995
- publicCoursesArraySchema = publicWholeSeriesOfferingsArraySchema;
32005
+ }));
32006
+ //#endregion
32007
+ //#region ../blocks/src/system/blocks/events/whole-series/types.ts
32008
+ var init_types$3 = __esmMin((() => {}));
32009
+ //#endregion
32010
+ //#region ../blocks/src/system/blocks/events/whole-series/index.ts
32011
+ var init_whole_series = __esmMin((() => {
32012
+ init_pricing$2();
32013
+ init_schemas$2();
32014
+ init_types$3();
30996
32015
  })), eventPresetSchema, eventScheduleScopeSchema$2, publicEventRecurrenceSchema, eventDestinationModeSchema, publicEventDestinationSchema, eventVenueSchema, eventCategorySchema, accessRestrictionSchema, freePriceDisplaySchema, exactPriceDisplaySchema, fromPriceDisplaySchema, unavailablePriceDisplaySchema, rangePriceDisplaySchema, mixedPriceDisplaySchema, publicCoursePriceDisplaySchema, publicEventTicketTypePriceDisplaySchema, publicEventAttendanceModeSchema, publicEventAttendanceModeAvailabilitySchema, publicEventTicketTypeAvailabilitySchema, publicEventTicketTypeSchema, publicEventPricingSchema, publicTeamMemberSummarySchema, publicEventBookingAvailabilitySchema, publicEventSchema, publicEventsArraySchema;
30997
- var init_schemas = __esmMin((() => {
32016
+ var init_schemas$1 = __esmMin((() => {
30998
32017
  init_media$1();
30999
32018
  init_richTextSchema();
31000
32019
  init_bookingPaymentTerms();
31001
- init_schemas$1();
32020
+ init_whole_series();
31002
32021
  eventPresetSchema = z.enum([
31003
32022
  "event",
31004
32023
  "class",
@@ -31295,7 +32314,7 @@ var init_schemas = __esmMin((() => {
31295
32314
  acceptsMemberships: z.boolean().optional(),
31296
32315
  wholeSeries: z.object({
31297
32316
  eventSeriesId: z.string(),
31298
- pricing: coursePricingSchema,
32317
+ pricing: wholeSeriesPricingSchema,
31299
32318
  currency: z.string(),
31300
32319
  enrollmentOpen: z.boolean()
31301
32320
  }).nullable().optional()
@@ -31304,26 +32323,18 @@ var init_schemas = __esmMin((() => {
31304
32323
  }));
31305
32324
  //#endregion
31306
32325
  //#region ../blocks/src/system/blocks/events/shared/fields.ts
31307
- var cardVariantOptions, cardStylingFields, eventDisplayFields, emptyStateField, sectionHeaderFields, layoutField, columnsField;
32326
+ var cardStylingFields, eventDisplayFields, emptyStateField, sectionHeaderFields, layoutField, columnsField;
31308
32327
  var init_fields = __esmMin((() => {
31309
32328
  init_button();
31310
- init_cards();
31311
- cardVariantOptions = cardVariantRoleValues.map((value) => ({
31312
- value,
31313
- label: value === "default" ? "Default" : "Alternative"
31314
- }));
32329
+ init_boxStyles$1();
31315
32330
  cardStylingFields = [
31316
- {
31317
- id: "cardVariant",
31318
- type: "select",
32331
+ cardStylesField({
32332
+ id: "_cardStyles",
31319
32333
  label: "Card style",
31320
- description: "Choose a card style from your theme",
31321
- required: false,
31322
- multiple: false,
31323
- defaultValue: "default",
31324
- options: cardVariantOptions,
31325
- ui: { intent: "style" }
31326
- },
32334
+ controls: "role-only",
32335
+ renderInHeader: false,
32336
+ intent: "style"
32337
+ }),
31327
32338
  createButtonVariantField({ description: "Choose a button style from your theme" }),
31328
32339
  {
31329
32340
  id: "buttonText",
@@ -31487,15 +32498,9 @@ function normalizeEventStaffMemberId(value) {
31487
32498
  }
31488
32499
  var eventSurfacePresetValues, eventSurfaceScopeValues, eventScheduleScopeValues, unsafeAsEventCategoryId, unsafeAsVenueId;
31489
32500
  var init_filtering = __esmMin((() => {
32501
+ init_src$4();
31490
32502
  init_normalizeIds();
31491
- eventSurfacePresetValues = [
31492
- "course",
31493
- "term",
31494
- "class",
31495
- "workshop",
31496
- "retreat",
31497
- "performance"
31498
- ];
32503
+ eventSurfacePresetValues = SURFACE_EVENT_PRESET_VALUES;
31499
32504
  eventSurfaceScopeValues = [
31500
32505
  "all",
31501
32506
  "regularClassSchedule",
@@ -31533,8 +32538,8 @@ var init_layout$1 = __esmMin((() => {
31533
32538
  //#endregion
31534
32539
  //#region ../blocks/src/system/blocks/events/shared/index.ts
31535
32540
  var init_shared$3 = __esmMin((() => {
31536
- init_types$3();
31537
- init_schemas();
32541
+ init_types$4();
32542
+ init_schemas$1();
31538
32543
  init_fields();
31539
32544
  init_filtering();
31540
32545
  init_layout$1();
@@ -31981,6 +32986,13 @@ var init_registrationEventAdapter = __esmMin((() => {
31981
32986
  //#endregion
31982
32987
  //#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
31983
32988
  function buildEventRegistrationDisplay(source) {
32989
+ if (resolveWholeSeriesOffering(source)?.enrollmentOpen === false) return {
32990
+ kind: "event-registration",
32991
+ state: "registration-closed",
32992
+ className: source.className ?? null,
32993
+ titleText: "Registration closed",
32994
+ bodyText: "This run is no longer open for bookings."
32995
+ };
31984
32996
  const stepLabels = buildEventRegistrationShellStepLabels(source);
31985
32997
  return {
31986
32998
  kind: "event-registration",
@@ -31992,6 +33004,9 @@ function buildEventRegistrationDisplay(source) {
31992
33004
  summaryButtonText: source.buttonText?.trim() || "Register"
31993
33005
  };
31994
33006
  }
33007
+ function resolveWholeSeriesOffering(source) {
33008
+ return source.wholeSeriesOffering ?? source.subjectWholeSeriesOffering ?? null;
33009
+ }
31995
33010
  function buildEventRegistrationShellStepLabels(source) {
31996
33011
  const scopedEvents = scopeEventRegistrationEvents(source);
31997
33012
  if (scopedEvents.length === 0) return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
@@ -32049,8 +33064,8 @@ function isRecord$7(value) {
32049
33064
  }
32050
33065
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, EVENT_REGISTRATION_SHELL_STEP_LABELS, eventRegistrationPublicEventSchema, eventRegistrationHydrationSchemaShape, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationBlockRuntime;
32051
33066
  var init_event_registration_interactive = __esmMin((() => {
32052
- init_schemas();
32053
33067
  init_schemas$1();
33068
+ init_whole_series();
32054
33069
  init_shop_shared();
32055
33070
  init_event_registration_shared();
32056
33071
  init_eventScope();
@@ -32079,8 +33094,8 @@ var init_event_registration_interactive = __esmMin((() => {
32079
33094
  occurrenceContext: occurrenceContextSchema.optional(),
32080
33095
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
32081
33096
  events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
32082
- wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
32083
- wholeSeriesOffering: publicCourseSchema.nullable().optional(),
33097
+ wholeSeriesOfferings: publicWholeSeriesOfferingsArraySchema.nullable().optional(),
33098
+ wholeSeriesOffering: publicWholeSeriesOfferingSchema.nullable().optional(),
32084
33099
  maxTickets: z.string().optional(),
32085
33100
  showVenue: z.boolean().optional(),
32086
33101
  showCapacity: z.boolean().optional(),
@@ -32102,12 +33117,13 @@ var init_event_registration_interactive = __esmMin((() => {
32102
33117
  portalToken: z.string().nullable().optional(),
32103
33118
  previewToken: z.string().nullable().optional(),
32104
33119
  ...eventRegistrationHydrationSchemaShape,
33120
+ subjectWholeSeriesOffering: publicWholeSeriesOfferingSchema.nullable().optional(),
32105
33121
  className: z.string().nullable().optional(),
32106
33122
  buttonText: z.string().nullable().optional(),
32107
33123
  maxTickets: z.string().nullable().optional(),
32108
33124
  stage: previewStageSchema.optional()
32109
33125
  });
32110
- eventRegistrationDisplaySchema = z.object({
33126
+ eventRegistrationDisplaySchema = z.discriminatedUnion("state", [z.object({
32111
33127
  kind: z.literal("event-registration"),
32112
33128
  state: z.literal("generic-shell"),
32113
33129
  className: z.string().nullable(),
@@ -32115,7 +33131,13 @@ var init_event_registration_interactive = __esmMin((() => {
32115
33131
  bodyText: z.string(),
32116
33132
  stepLabels: z.array(z.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
32117
33133
  summaryButtonText: z.string()
32118
- });
33134
+ }), z.object({
33135
+ kind: z.literal("event-registration"),
33136
+ state: z.literal("registration-closed"),
33137
+ className: z.string().nullable(),
33138
+ titleText: z.string(),
33139
+ bodyText: z.string()
33140
+ })]);
32119
33141
  eventRegistrationHydrationSchema = z.object(eventRegistrationHydrationSchemaShape);
32120
33142
  eventRegistrationRenderSchema = z.object({
32121
33143
  display: eventRegistrationDisplaySchema,
@@ -32141,7 +33163,7 @@ var init_event_registration_interactive = __esmMin((() => {
32141
33163
  subject: source.subject ?? null,
32142
33164
  events: source.events ?? null,
32143
33165
  wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
32144
- wholeSeriesOffering: source.wholeSeriesOffering ?? null,
33166
+ wholeSeriesOffering: resolveWholeSeriesOffering(source),
32145
33167
  maxTickets: source.maxTickets ?? void 0,
32146
33168
  showVenue: source.showVenue,
32147
33169
  showCapacity: source.showCapacity,
@@ -32161,19 +33183,6 @@ var init_event_registration_interactive = __esmMin((() => {
32161
33183
  });
32162
33184
  }));
32163
33185
  //#endregion
32164
- //#region ../blocks/src/system/blocks/courses/shared/types.ts
32165
- var init_types$2 = __esmMin((() => {}));
32166
- //#endregion
32167
- //#region ../blocks/src/system/blocks/courses/shared/pricing.ts
32168
- var init_pricing = __esmMin((() => {}));
32169
- //#endregion
32170
- //#region ../blocks/src/system/blocks/courses/shared/index.ts
32171
- var init_shared$2 = __esmMin((() => {
32172
- init_types$2();
32173
- init_schemas$1();
32174
- init_pricing();
32175
- }));
32176
- //#endregion
32177
33186
  //#region ../blocks/src/system/blocks/event-registration.ts
32178
33187
  var eventRegistrationManifest, eventRegistrationBlockDefinition;
32179
33188
  var init_event_registration = __esmMin((() => {
@@ -32187,7 +33196,7 @@ var init_event_registration = __esmMin((() => {
32187
33196
  init_defineBlock();
32188
33197
  init_event_registration_shared();
32189
33198
  init_event_registration_interactive();
32190
- init_shared$2();
33199
+ init_whole_series();
32191
33200
  eventRegistrationManifest = createBlockManifest({
32192
33201
  id: "block.event-registration",
32193
33202
  version: "1.0.0",
@@ -32379,7 +33388,9 @@ var init_event_registration = __esmMin((() => {
32379
33388
  fallback: false
32380
33389
  } },
32381
33390
  events: { $bind: { from: "data.events" } },
32382
- wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
33391
+ wholeSeriesOffering: { $bind: { from: "data.selectedRunOffering.offering" } },
33392
+ subjectWholeSeriesOffering: { $bind: { from: "data.subjectWholeSeriesOffering.offering" } },
33393
+ wholeSeriesOfferings: { $bind: { from: "data.wholeSeriesOfferings" } },
32383
33394
  sitePasses: { $bind: { from: "data.sitePasses" } },
32384
33395
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
32385
33396
  stage: { $bind: {
@@ -32395,7 +33406,9 @@ var init_event_registration = __esmMin((() => {
32395
33406
  runtime: eventRegistrationBlockRuntime,
32396
33407
  dataSchemas: {
32397
33408
  events: publicEventsArraySchema.optional(),
32398
- wholeSeriesOffering: z.object({ offering: publicCourseSchema }).optional(),
33409
+ selectedRunOffering: z.object({ offering: publicWholeSeriesOfferingSchema }).optional(),
33410
+ subjectWholeSeriesOffering: z.object({ offering: publicWholeSeriesOfferingSchema }).optional(),
33411
+ wholeSeriesOfferings: z.array(publicWholeSeriesOfferingSchema).optional(),
32399
33412
  sitePasses: publicPassProductCollectionSchema.optional(),
32400
33413
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
32401
33414
  occurrenceContext: occurrenceContextSchema.optional()
@@ -32412,11 +33425,29 @@ var init_event_registration = __esmMin((() => {
32412
33425
  } },
32413
33426
  readProfile: "registration",
32414
33427
  seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
33428
+ seriesIds: { $bind: {
33429
+ from: "$root.subject.availableEventSeriesIds",
33430
+ transforms: [{ id: "value.csv" }]
33431
+ } },
33432
+ runSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
32415
33433
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
32416
33434
  },
32417
33435
  mode: "server"
32418
33436
  },
32419
- wholeSeriesOffering: {
33437
+ selectedRunOffering: {
33438
+ endpoint: "getPublicWholeSeriesOffering",
33439
+ params: {
33440
+ siteId: { $bind: { from: "$root.siteId" } },
33441
+ eventSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
33442
+ stage: { $bind: {
33443
+ from: "$root.previewStage",
33444
+ fallback: "published"
33445
+ } }
33446
+ },
33447
+ requiredParams: ["eventSeriesId"],
33448
+ mode: "server"
33449
+ },
33450
+ subjectWholeSeriesOffering: {
32420
33451
  endpoint: "getPublicWholeSeriesOffering",
32421
33452
  when: { $bind: {
32422
33453
  from: "$root.subject.isWholeSeriesBooking",
@@ -32433,6 +33464,22 @@ var init_event_registration = __esmMin((() => {
32433
33464
  requiredParams: ["eventSeriesId"],
32434
33465
  mode: "server"
32435
33466
  },
33467
+ wholeSeriesOfferings: {
33468
+ endpoint: "listPublicWholeSeriesOfferings",
33469
+ params: {
33470
+ siteId: { $bind: { from: "$root.siteId" } },
33471
+ eventSeriesIds: { $bind: {
33472
+ from: "$root.subject.availableEventSeriesIds",
33473
+ transforms: [{ id: "value.csv" }]
33474
+ } },
33475
+ stage: { $bind: {
33476
+ from: "$root.previewStage",
33477
+ fallback: "published"
33478
+ } }
33479
+ },
33480
+ requiredParams: ["eventSeriesIds"],
33481
+ mode: "server"
33482
+ },
32436
33483
  sitePasses: {
32437
33484
  endpoint: "listPublicPasses",
32438
33485
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -32447,6 +33494,24 @@ var init_event_registration = __esmMin((() => {
32447
33494
  };
32448
33495
  }));
32449
33496
  //#endregion
33497
+ //#region ../blocks/src/system/blocks/courses/shared/types.ts
33498
+ var init_types$2 = __esmMin((() => {}));
33499
+ //#endregion
33500
+ //#region ../blocks/src/system/blocks/courses/shared/schemas.ts
33501
+ var init_schemas = __esmMin((() => {
33502
+ init_schemas$2();
33503
+ }));
33504
+ //#endregion
33505
+ //#region ../blocks/src/system/blocks/courses/shared/pricing.ts
33506
+ var init_pricing = __esmMin((() => {}));
33507
+ //#endregion
33508
+ //#region ../blocks/src/system/blocks/courses/shared/index.ts
33509
+ var init_shared$2 = __esmMin((() => {
33510
+ init_types$2();
33511
+ init_schemas();
33512
+ init_pricing();
33513
+ }));
33514
+ //#endregion
32450
33515
  //#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
32451
33516
  function buildCourseRegistrationDisplay(source) {
32452
33517
  return {
@@ -32456,20 +33521,16 @@ function buildCourseRegistrationDisplay(source) {
32456
33521
  summaryButtonText: source.buttonText?.trim() || "Sign up"
32457
33522
  };
32458
33523
  }
32459
- var courseRegistrationSourceSchema, courseRegistrationDisplaySchema, courseRegistrationHydrationSchema, courseRegistrationRenderSchema, courseRegistrationBlockRuntime;
33524
+ var courseRegistrationHydrationSchemaShape, courseRegistrationSourceSchema, courseRegistrationDisplaySchema, courseRegistrationHydrationSchema, courseRegistrationRenderSchema, courseRegistrationBlockRuntime;
32460
33525
  var init_course_registration_interactive = __esmMin((() => {
32461
- init_schemas$1();
33526
+ init_schemas();
32462
33527
  init_islands();
32463
33528
  init_runtime$1();
32464
33529
  init_contract_schemas();
32465
33530
  init_eventScope();
32466
- courseRegistrationSourceSchema = z.object({
32467
- siteId: z.string().optional(),
32468
- apiBaseUrl: z.string().optional(),
32469
- portalToken: z.string().nullable().optional(),
33531
+ courseRegistrationHydrationSchemaShape = {
32470
33532
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
32471
- courses: z.array(publicCourseSchema).nullable().optional(),
32472
- className: z.string().nullable().optional(),
33533
+ courses: z.array(publicWholeSeriesOfferingSchema).nullable().optional(),
32473
33534
  showSessions: z.boolean().optional(),
32474
33535
  showPrice: z.boolean().optional(),
32475
33536
  showCapacity: z.boolean().optional(),
@@ -32477,8 +33538,15 @@ var init_course_registration_interactive = __esmMin((() => {
32477
33538
  successMessage: z.string().optional(),
32478
33539
  waitlistMessage: z.string().optional(),
32479
33540
  membershipMessage: z.string().optional(),
33541
+ buttonVariant: registrationButtonVariantSchema.optional()
33542
+ };
33543
+ courseRegistrationSourceSchema = z.object({
33544
+ siteId: z.string().optional(),
33545
+ apiBaseUrl: z.string().optional(),
33546
+ portalToken: z.string().nullable().optional(),
33547
+ ...courseRegistrationHydrationSchemaShape,
33548
+ className: z.string().nullable().optional(),
32480
33549
  buttonText: z.string().nullable().optional(),
32481
- buttonVariant: registrationButtonVariantSchema.optional(),
32482
33550
  stage: previewStageSchema.optional()
32483
33551
  });
32484
33552
  courseRegistrationDisplaySchema = z.object({
@@ -32487,18 +33555,7 @@ var init_course_registration_interactive = __esmMin((() => {
32487
33555
  className: z.string().nullable(),
32488
33556
  summaryButtonText: z.string()
32489
33557
  });
32490
- courseRegistrationHydrationSchema = z.object({
32491
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
32492
- courses: z.array(publicCourseSchema).nullable().optional(),
32493
- showSessions: z.boolean().optional(),
32494
- showPrice: z.boolean().optional(),
32495
- showCapacity: z.boolean().optional(),
32496
- showVenue: z.boolean().optional(),
32497
- successMessage: z.string().optional(),
32498
- waitlistMessage: z.string().optional(),
32499
- membershipMessage: z.string().optional(),
32500
- buttonVariant: registrationButtonVariantSchema.optional()
32501
- });
33558
+ courseRegistrationHydrationSchema = z.object(courseRegistrationHydrationSchemaShape);
32502
33559
  courseRegistrationRenderSchema = z.object({
32503
33560
  display: courseRegistrationDisplaySchema,
32504
33561
  hydration: courseRegistrationHydrationSchema
@@ -32709,7 +33766,7 @@ var init_course_registration = __esmMin((() => {
32709
33766
  courseRegistrationBlockDefinition = {
32710
33767
  manifest: courseRegistrationManifest,
32711
33768
  runtime: courseRegistrationBlockRuntime,
32712
- dataSchemas: { courses: publicCoursesArraySchema.optional() },
33769
+ dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
32713
33770
  dataLoaders: { courses: {
32714
33771
  endpoint: "listPublicWholeSeriesOfferings",
32715
33772
  params: {
@@ -32780,6 +33837,22 @@ var init_event_details = __esmMin((() => {
32780
33837
  defaultValue: true,
32781
33838
  ui: { intent: "display" }
32782
33839
  },
33840
+ {
33841
+ id: "showTitle",
33842
+ type: "boolean",
33843
+ label: "Show event title",
33844
+ required: false,
33845
+ defaultValue: false,
33846
+ ui: { intent: "display" }
33847
+ },
33848
+ {
33849
+ id: "showDescription",
33850
+ type: "boolean",
33851
+ label: "Show event description",
33852
+ required: false,
33853
+ defaultValue: false,
33854
+ ui: { intent: "display" }
33855
+ },
32783
33856
  {
32784
33857
  id: "showMap",
32785
33858
  type: "boolean",
@@ -32816,10 +33889,22 @@ var init_event_details = __esmMin((() => {
32816
33889
  {
32817
33890
  value: "10",
32818
33891
  label: "10 dates"
33892
+ },
33893
+ {
33894
+ value: "all",
33895
+ label: "All dates"
32819
33896
  }
32820
33897
  ],
32821
33898
  ui: { intent: "display" }
32822
33899
  },
33900
+ {
33901
+ id: "showCapacity",
33902
+ type: "boolean",
33903
+ label: "Show capacity",
33904
+ required: false,
33905
+ defaultValue: false,
33906
+ ui: { intent: "display" }
33907
+ },
32823
33908
  {
32824
33909
  id: "showCost",
32825
33910
  type: "boolean",
@@ -32862,6 +33947,8 @@ var init_event_details = __esmMin((() => {
32862
33947
  } },
32863
33948
  events: { $bind: { from: "data.eventDetailsData.events" } },
32864
33949
  showVenue: { $bind: { from: "content.showVenue" } },
33950
+ showTitle: { $bind: { from: "content.showTitle" } },
33951
+ showDescription: { $bind: { from: "content.showDescription" } },
32865
33952
  showMap: { $bind: { from: "content.showMap" } },
32866
33953
  showOtherDates: { $bind: { from: "content.showOtherDates" } },
32867
33954
  otherDatesLimit: { $bind: {
@@ -32872,6 +33959,10 @@ var init_event_details = __esmMin((() => {
32872
33959
  from: "content.showCost",
32873
33960
  fallback: true
32874
33961
  } },
33962
+ showCapacity: { $bind: {
33963
+ from: "content.showCapacity",
33964
+ fallback: false
33965
+ } },
32875
33966
  showAcceptedPasses: { $bind: {
32876
33967
  from: "content.showAcceptedPasses",
32877
33968
  fallback: true
@@ -32926,6 +34017,11 @@ var init_event_details = __esmMin((() => {
32926
34017
  limit: "100",
32927
34018
  readProfile: "details",
32928
34019
  seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
34020
+ seriesIds: { $bind: {
34021
+ from: "$root.subject.availableEventSeriesIds",
34022
+ transforms: [{ id: "value.csv" }]
34023
+ } },
34024
+ runSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
32929
34025
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
32930
34026
  },
32931
34027
  mode: "server"
@@ -33122,7 +34218,7 @@ var init_course_details = __esmMin((() => {
33122
34218
  });
33123
34219
  courseDetailsBlockDefinition = {
33124
34220
  manifest: courseDetailsManifest,
33125
- dataSchemas: { courses: publicCoursesArraySchema.optional() },
34221
+ dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
33126
34222
  dataLoaders: { courses: {
33127
34223
  endpoint: "listPublicWholeSeriesOfferings",
33128
34224
  params: {
@@ -33251,8 +34347,8 @@ var init_event_spotlight = __esmMin((() => {
33251
34347
  from: "content.columns",
33252
34348
  fallback: "3"
33253
34349
  } },
33254
- cardVariant: { $bind: {
33255
- from: "content.cardVariant",
34350
+ cardRole: { $bind: {
34351
+ from: "content._cardStyles.role",
33256
34352
  fallback: "default"
33257
34353
  } },
33258
34354
  buttonVariant: { $bind: {
@@ -33431,6 +34527,7 @@ function buildEventCollectionPresentationDisplay(source) {
33431
34527
  showVenue: source.showVenue ?? true,
33432
34528
  showMap: source.showMap ?? true,
33433
34529
  showCapacity: source.showCapacity ?? true,
34530
+ cardRole: source.cardRole ?? "default",
33434
34531
  buttonVariant: source.buttonVariant ?? "primary",
33435
34532
  buttonText: source.buttonText ?? "Book",
33436
34533
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
@@ -33447,7 +34544,8 @@ function buildEventCollectionHydration(source) {
33447
34544
  };
33448
34545
  }
33449
34546
  var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilterSourceSchemaShape, eventCollectionSourceSchemaShape, eventCollectionDisplaySchemaShape, eventCollectionHydrationSchema, init_eventCollectionContract = __esmMin((() => {
33450
- init_schemas();
34547
+ init_cards();
34548
+ init_schemas$1();
33451
34549
  init_shared$3();
33452
34550
  init_contract_schemas();
33453
34551
  init_listOptions();
@@ -33483,6 +34581,7 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
33483
34581
  showVenue: z.boolean().nullable().optional(),
33484
34582
  showMap: z.boolean().nullable().optional(),
33485
34583
  showCapacity: z.boolean().nullable().optional(),
34584
+ cardRole: cardRoleSchema.optional(),
33486
34585
  buttonVariant: eventButtonVariantSchema.optional(),
33487
34586
  buttonText: z.string().optional(),
33488
34587
  emptyMessage: z.string().optional(),
@@ -33510,6 +34609,7 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
33510
34609
  showVenue: z.boolean(),
33511
34610
  showMap: z.boolean(),
33512
34611
  showCapacity: z.boolean(),
34612
+ cardRole: cardRoleSchema,
33513
34613
  buttonVariant: eventButtonVariantSchema,
33514
34614
  buttonText: z.string(),
33515
34615
  emptyMessage: z.string()
@@ -33522,10 +34622,10 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
33522
34622
  filterEventPresets: z.string().nullable(),
33523
34623
  scheduleScope: eventScheduleScopeSchema$1
33524
34624
  });
33525
- })), legacyEventCardVariantSchema, eventCardVariantInputSchema, cardOrientationSchema, eventSurfaceScopeSchema, eventScheduleScopeSchema, eventListingSourceSchema, eventListingDisplaySchema, eventListingHydrationSchema, eventListingRenderSchema, eventListingBlockRuntime;
34625
+ })), cardOrientationSchema, eventSurfaceScopeSchema, eventScheduleScopeSchema, eventListingSourceSchema, eventListingDisplaySchema, eventListingHydrationSchema, eventListingRenderSchema, eventListingBlockRuntime;
33526
34626
  var init_EventListing_interactive = __esmMin((() => {
33527
34627
  init_cards();
33528
- init_schemas();
34628
+ init_schemas$1();
33529
34629
  init_shared$3();
33530
34630
  init_islands();
33531
34631
  init_runtime$1();
@@ -33533,8 +34633,6 @@ var init_EventListing_interactive = __esmMin((() => {
33533
34633
  init_contract_schemas();
33534
34634
  init_listOptions();
33535
34635
  init_eventCollectionContract();
33536
- legacyEventCardVariantSchema = z.enum(["variant1", "variant2"]);
33537
- eventCardVariantInputSchema = z.union([cardVariantRoleSchema, legacyEventCardVariantSchema]);
33538
34636
  cardOrientationSchema = z.enum(["vertical", "horizontal"]);
33539
34637
  eventSurfaceScopeSchema = z.enum(eventSurfaceScopeValues);
33540
34638
  eventScheduleScopeSchema = z.enum(eventScheduleScopeValues);
@@ -33549,7 +34647,7 @@ var init_EventListing_interactive = __esmMin((() => {
33549
34647
  paginationMode: z.enum(["loadMore", "seeAllLink"]).optional(),
33550
34648
  seeAllUrl: z.string().optional(),
33551
34649
  loadMoreText: z.string().optional(),
33552
- cardVariant: eventCardVariantInputSchema.optional(),
34650
+ cardRole: cardRoleSchema.optional(),
33553
34651
  buttonVariant: eventButtonVariantSchema.optional(),
33554
34652
  buttonText: z.string().optional(),
33555
34653
  showVenue: z.boolean().optional(),
@@ -33571,7 +34669,7 @@ var init_EventListing_interactive = __esmMin((() => {
33571
34669
  emptyMessage: z.string(),
33572
34670
  loadingMessage: z.string(),
33573
34671
  containerClass: z.string(),
33574
- cardVariant: cardVariantRoleSchema,
34672
+ cardRole: cardRoleSchema,
33575
34673
  buttonVariant: eventButtonVariantSchema,
33576
34674
  buttonText: z.string(),
33577
34675
  showVenue: z.boolean(),
@@ -33627,7 +34725,7 @@ var init_EventListing_interactive = __esmMin((() => {
33627
34725
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled.",
33628
34726
  loadingMessage: "Loading events…",
33629
34727
  containerClass: getContainerClass(layout, source.columns ?? "3"),
33630
- cardVariant: normalizeCardVariantRole(source.cardVariant) ?? "default",
34728
+ cardRole: source.cardRole ?? "default",
33631
34729
  buttonVariant: source.buttonVariant ?? "primary",
33632
34730
  buttonText: source.buttonText ?? "Book",
33633
34731
  showVenue: source.showVenue ?? true,
@@ -33927,8 +35025,8 @@ var init_event_listing = __esmMin((() => {
33927
35025
  from: "content.loadMoreText",
33928
35026
  fallback: "Load more events"
33929
35027
  } },
33930
- cardVariant: { $bind: {
33931
- from: "content.cardVariant",
35028
+ cardRole: { $bind: {
35029
+ from: "content._cardStyles.role",
33932
35030
  fallback: "default"
33933
35031
  } },
33934
35032
  buttonVariant: { $bind: {
@@ -34240,6 +35338,10 @@ var init_event_calendar = __esmMin((() => {
34240
35338
  filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
34241
35339
  filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
34242
35340
  filterVenueId: { $bind: { from: "content.filterVenueId" } },
35341
+ cardRole: { $bind: {
35342
+ from: "content._cardStyles.role",
35343
+ fallback: "default"
35344
+ } },
34243
35345
  buttonVariant: { $bind: {
34244
35346
  from: "content.buttonVariant",
34245
35347
  fallback: "primary"
@@ -34872,11 +35974,11 @@ var init_event_calendar = __esmMin((() => {
34872
35974
  searchThreshold: 8
34873
35975
  }
34874
35976
  }),
34875
- ...cardStylingFields.filter((f) => f.id === "buttonVariant" || f.id === "buttonText").map((field) => ({
35977
+ ...cardStylingFields.map((field) => ({
34876
35978
  ...field,
34877
35979
  ui: {
34878
35980
  ...field.ui ?? {},
34879
- intent: field.id === "buttonVariant" ? "style" : "content"
35981
+ intent: field.id === "_cardStyles" || field.id === "buttonVariant" ? "style" : "content"
34880
35982
  }
34881
35983
  })),
34882
35984
  {
@@ -35245,7 +36347,7 @@ function projectRecurringSchedule(events) {
35245
36347
  var weekdayOrder, weekdayCodeOrder, recurringScheduleWeekdaySchema, recurringScheduleSeriesIdSchema, recurringScheduleProjectionSchema, weekdayFormatterCache, timeFormatterCache, dateFormatterCache;
35246
36348
  var init_recurring_schedule_projection = __esmMin((() => {
35247
36349
  init_src$4();
35248
- init_schemas();
36350
+ init_schemas$1();
35249
36351
  weekdayOrder = [
35250
36352
  "Monday",
35251
36353
  "Tuesday",
@@ -35994,7 +37096,7 @@ var init_offerings_preview = __esmMin((() => {
35994
37096
  dataSchemas: {
35995
37097
  ...offeringsPreviewEventDataSchemas,
35996
37098
  routeCandidates: publicRouteCandidatesSchema.optional(),
35997
- courses: publicCoursesArraySchema.optional()
37099
+ courses: publicWholeSeriesOfferingsArraySchema.optional()
35998
37100
  },
35999
37101
  dataLoaders: {
36000
37102
  ...offeringsPreviewEventDataLoaders,
@@ -37372,8 +38474,9 @@ var init_audio_player = __esmMin((() => {
37372
38474
  init_builder$1();
37373
38475
  init_fragments$1();
37374
38476
  init_colorStyles();
38477
+ init_boxStyleClassNames();
37375
38478
  audioPlayerLayout = styledSection({
37376
- children: stack({ className: "rb-container rb-mx-auto rb-max-w-3xl" }, [el$1("div", { className: "card-role-default" }, [media({
38479
+ children: stack({ className: "rb-container rb-mx-auto rb-max-w-3xl" }, [el$1("div", { className: boxStyleClassNames({ role: "default" }, {}) }, [media({
37377
38480
  className: "card-media rb-aspect-video rb-w-full rb-object-cover",
37378
38481
  size: {
37379
38482
  width: 960,
@@ -40614,16 +41717,27 @@ function eventListCapable() {
40614
41717
  looks: "supported",
40615
41718
  sectionSurfaces: "supported",
40616
41719
  contentFrames: ["plain", "panel"],
40617
- cardRoles: "unsupported",
41720
+ cardRoles: "supported",
40618
41721
  eventListTreatments
40619
41722
  });
40620
41723
  }
41724
+ function eventSpotlightCapable() {
41725
+ return declareBlockDesignCapability({
41726
+ sectionSurfaces: "supported",
41727
+ contentFrames: ["plain"],
41728
+ cardRoles: "supported"
41729
+ });
41730
+ }
40621
41731
  function offeringsPreviewCapable() {
40622
41732
  return declareBlockDesignCapability({
40623
41733
  looks: "supported",
40624
41734
  sectionSurfaces: "supported",
40625
41735
  contentFrames: ["plain"],
40626
- cardRoles: "supported"
41736
+ cardRoles: "supported",
41737
+ compositions: {
41738
+ kind: "offerings-preview",
41739
+ treatments: offeringsPreviewCompositionTreatmentValues
41740
+ }
40627
41741
  });
40628
41742
  }
40629
41743
  function defaultBoundaryBias(visualWeight) {
@@ -41060,7 +42174,7 @@ var init_blocks$1 = __esmMin((() => {
41060
42174
  cardRoles: "supported",
41061
42175
  compositions: {
41062
42176
  kind: "testimonials",
41063
- treatments: ["open-editorial"]
42177
+ treatments: testimonialsCompositionTreatmentValues
41064
42178
  },
41065
42179
  headingDecorationCapability: {
41066
42180
  kind: "supported",
@@ -41215,7 +42329,7 @@ var init_blocks$1 = __esmMin((() => {
41215
42329
  weight: "standard"
41216
42330
  })]
41217
42331
  })),
41218
- withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
42332
+ withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, eventSpotlightCapable(), defineBlockDesignMetadata({
41219
42333
  flow: offeringsFlow,
41220
42334
  layoutProfiles: [layoutProfile({
41221
42335
  variantKey: "default",
@@ -41912,6 +43026,7 @@ var init_registry$2 = __esmMin((() => {
41912
43026
  init_boxStyles();
41913
43027
  init_content();
41914
43028
  init_headerRuntime();
43029
+ init_boxStyleClassNames();
41915
43030
  builtinTransformDefinitions = [
41916
43031
  ...formattingTransforms,
41917
43032
  ...layoutTransforms,
@@ -43268,202 +44383,33 @@ var init_bookingRefundOutcomes = __esmMin((() => {
43268
44383
  [...STANDARD_LINE_ITEM_REFUND_INVALID_CODES, ...CANONICAL_ADMIN_REFUND_FAILURE_CODES];
43269
44384
  }));
43270
44385
  //#endregion
43271
- //#region ../api/src/eventSeriesPresentationPreset.ts
43272
- var init_eventSeriesPresentationPreset = __esmMin((() => {}));
43273
- //#endregion
43274
- //#region ../api/src/bookingVerticalPreset.ts
43275
- function verticalBookingPreset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
43276
- return {
43277
- id,
43278
- verticalId,
43279
- canonicalBehaviour,
43280
- engine: BOOKING_ENGINE_BY_BEHAVIOUR[canonicalBehaviour],
43281
- availability,
43282
- label,
43283
- pluralLabel,
43284
- description
43285
- };
43286
- }
43287
- var BOOKING_ENGINE_BY_BEHAVIOUR;
43288
- var init_bookingVerticalPreset = __esmMin((() => {
43289
- BOOKING_ENGINE_BY_BEHAVIOUR = {
43290
- class: "event_series",
43291
- workshop: "event_series",
43292
- course: "event_series",
43293
- retreat: "event_series",
43294
- performance: "event_series",
43295
- appointment: "appointment_service"
43296
- };
43297
- }));
43298
- //#endregion
43299
- //#region ../api/src/bookingVerticalCatalog.ts
43300
- var VERTICAL_BOOKING_PRESETS;
43301
- var init_bookingVerticalCatalog = __esmMin((() => {
43302
- init_bookingVerticalPreset();
43303
- VERTICAL_BOOKING_PRESETS = [
43304
- verticalBookingPreset("yoga_wellness.classes", "yoga_wellness", "class", "Class", "Classes", "Regular scheduled classes and group sessions."),
43305
- verticalBookingPreset("yoga_wellness.workshops", "yoga_wellness", "workshop", "Workshop", "Workshops", "One-off workshops, day retreats, or special sessions."),
43306
- verticalBookingPreset("yoga_wellness.courses", "yoga_wellness", "course", "Course", "Courses", "Fixed-schedule courses or multi-session groups."),
43307
- verticalBookingPreset("yoga_wellness.retreats", "yoga_wellness", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats and immersive experiences."),
43308
- verticalBookingPreset("yoga_wellness.appointments", "yoga_wellness", "appointment", "Appointment", "Appointments", "Private sessions, consultations, or one-to-one support."),
43309
- verticalBookingPreset("fitness_pt.group_training", "fitness_pt", "class", "Group training", "Group training", "Regular scheduled classes and group sessions."),
43310
- verticalBookingPreset("fitness_pt.personal_training", "fitness_pt", "appointment", "Personal training", "Personal training", "One-to-one sessions booked from your availability."),
43311
- verticalBookingPreset("fitness_pt.programmes", "fitness_pt", "course", "Programme", "Programmes", "Multi-session programmes like bootcamps or courses."),
43312
- verticalBookingPreset("fitness_pt.workshops", "fitness_pt", "workshop", "Workshop", "Workshops", "One-off workshops, events, or special sessions."),
43313
- verticalBookingPreset("fitness_pt.retreats", "fitness_pt", "retreat", "Retreat", "Retreats", "Multi-day or residential fitness experiences."),
43314
- verticalBookingPreset("dance_school.classes", "dance_school", "class", "Class", "Classes", "Regular group classes and weekly sessions."),
43315
- verticalBookingPreset("dance_school.terms", "dance_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
43316
- verticalBookingPreset("dance_school.courses", "dance_school", "course", "Course", "Courses", "Fixed-schedule courses or multi-session groups.", "settings"),
43317
- verticalBookingPreset("dance_school.workshops", "dance_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
43318
- verticalBookingPreset("dance_school.private_lessons", "dance_school", "appointment", "Private lesson", "Private lessons", "One-to-one lessons or coaching sessions."),
43319
- verticalBookingPreset("dance_school.shows", "dance_school", "performance", "Show", "Shows", "Ticketed performances, showcases, and recitals."),
43320
- verticalBookingPreset("physiotherapy_physical_health.appointments", "physiotherapy_physical_health", "appointment", "Appointment", "Appointments", "Assessments, treatments, follow-ups, and rehabilitation sessions."),
43321
- verticalBookingPreset("physiotherapy_physical_health.rehab_classes", "physiotherapy_physical_health", "class", "Rehab class", "Rehab classes", "Regular rehabilitation, mobility, strength, or recovery classes."),
43322
- verticalBookingPreset("physiotherapy_physical_health.workshops", "physiotherapy_physical_health", "workshop", "Workshop", "Workshops", "One-off workshops, talks, or practical group sessions."),
43323
- verticalBookingPreset("massage_bodywork.treatments", "massage_bodywork", "appointment", "Treatment", "Treatments", "Massage treatments, bodywork sessions, and one-to-one appointments."),
43324
- verticalBookingPreset("massage_bodywork.group_sessions", "massage_bodywork", "class", "Group session", "Group sessions", "Regular bodywork, somatic movement, or self-massage sessions."),
43325
- verticalBookingPreset("massage_bodywork.workshops", "massage_bodywork", "workshop", "Workshop", "Workshops", "One-off bodywork, self-massage, or somatic practice workshops."),
43326
- verticalBookingPreset("therapist_practitioner.appointments", "therapist_practitioner", "appointment", "Appointment", "Appointments", "Sessions, consultations, treatments, or assessments."),
43327
- verticalBookingPreset("therapist_practitioner.workshops", "therapist_practitioner", "workshop", "Workshop", "Workshops", "One-off group workshops, talks, or wellbeing sessions."),
43328
- verticalBookingPreset("therapist_practitioner.retreats", "therapist_practitioner", "retreat", "Retreat", "Retreats", "Multi-day retreats or immersive group experiences."),
43329
- verticalBookingPreset("beauty_spa.appointments", "beauty_spa", "appointment", "Appointment", "Appointments", "Treatments, consultations, services, and sessions."),
43330
- verticalBookingPreset("beauty_spa.workshops", "beauty_spa", "workshop", "Workshop", "Workshops", "Skincare workshops, makeup lessons, demos, or group events."),
43331
- verticalBookingPreset("consultant_coach.appointments", "consultant_coach", "appointment", "Appointment", "Appointments", "One-to-one calls, consultations, reviews, or coaching sessions."),
43332
- verticalBookingPreset("consultant_coach.workshops", "consultant_coach", "workshop", "Workshop", "Workshops", "One-off group sessions, webinars, or strategy days."),
43333
- verticalBookingPreset("consultant_coach.courses", "consultant_coach", "course", "Course", "Courses", "Fixed-schedule cohorts or multi-session group programmes."),
43334
- verticalBookingPreset("consultant_coach.retreats", "consultant_coach", "retreat", "Retreat", "Retreats", "Multi-day coaching retreats or immersive experiences."),
43335
- verticalBookingPreset("training_provider.courses", "training_provider", "course", "Course", "Courses", "Fixed-schedule courses, cohorts, and multi-session training."),
43336
- verticalBookingPreset("training_provider.workshops", "training_provider", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, and short training sessions."),
43337
- verticalBookingPreset("training_provider.appointments", "training_provider", "appointment", "Appointment", "Appointments", "Consultations, assessments, mentoring, or office hours."),
43338
- verticalBookingPreset("training_provider.classes", "training_provider", "class", "Class", "Classes", "Regular classes, sessions, or groups.", "settings"),
43339
- verticalBookingPreset("training_provider.residentials", "training_provider", "retreat", "Residential", "Residentials", "Residential courses or multi-day training experiences.", "settings"),
43340
- verticalBookingPreset("retreat_centre.retreats", "retreat_centre", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats with richer booking needs."),
43341
- verticalBookingPreset("retreat_centre.workshops", "retreat_centre", "workshop", "Workshop", "Workshops", "One-day retreats, ceremonies, workshops, or special events."),
43342
- verticalBookingPreset("retreat_centre.classes", "retreat_centre", "class", "Class", "Classes", "Regular sessions like guided meditations or group practices."),
43343
- verticalBookingPreset("retreat_centre.courses", "retreat_centre", "course", "Course", "Courses", "Fixed-schedule programmes or multi-session experiences."),
43344
- verticalBookingPreset("retreat_centre.appointments", "retreat_centre", "appointment", "Appointment", "Appointments", "Private sessions, therapies, consultations, or add-ons."),
43345
- verticalBookingPreset("music_school.lessons", "music_school", "appointment", "Lesson", "Lessons", "One-to-one lessons, consultations, or coaching sessions."),
43346
- verticalBookingPreset("music_school.classes", "music_school", "class", "Class", "Classes", "Regular group classes, ensembles, or recurring sessions."),
43347
- verticalBookingPreset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
43348
- verticalBookingPreset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
43349
- verticalBookingPreset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
43350
- verticalBookingPreset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
43351
- verticalBookingPreset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
43352
- verticalBookingPreset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
43353
- verticalBookingPreset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
43354
- verticalBookingPreset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
43355
- verticalBookingPreset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
43356
- verticalBookingPreset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
43357
- verticalBookingPreset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
43358
- verticalBookingPreset("performing_arts_school.performances", "performing_arts_school", "performance", "Performance", "Performances", "Shows, showcases, productions, or ticketed performances."),
43359
- verticalBookingPreset("performing_arts_school.lessons", "performing_arts_school", "appointment", "Lesson", "Lessons", "One-to-one lessons, coaching, or audition prep."),
43360
- verticalBookingPreset("community_wellbeing.classes", "community_wellbeing", "class", "Class", "Classes", "Regular groups, sessions, practices, or weekly activities."),
43361
- verticalBookingPreset("community_wellbeing.workshops", "community_wellbeing", "workshop", "Workshop", "Workshops", "One-off workshops, talks, events, or gatherings."),
43362
- verticalBookingPreset("community_wellbeing.courses", "community_wellbeing", "course", "Course", "Courses", "Fixed-schedule courses, study groups, or multi-session programmes."),
43363
- verticalBookingPreset("community_wellbeing.appointments", "community_wellbeing", "appointment", "Appointment", "Appointments", "One-to-one appointments, consultations, or support sessions."),
43364
- verticalBookingPreset("community_wellbeing.retreats", "community_wellbeing", "retreat", "Retreat", "Retreats", "Multi-day or residential retreats."),
43365
- verticalBookingPreset("venue_event_space.resource_hire", "venue_event_space", "appointment", "Hire slot", "Hire slots", "Future room, venue, and resource hire bookings.", "future")
43366
- ];
43367
- }));
43368
- //#endregion
43369
44386
  //#region ../api/src/bookingVerticals.ts
43370
- function parseVerticalId(value) {
43371
- return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
43372
- }
43373
- function parseVerticalPresetId(value) {
43374
- return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
43375
- }
43376
- function getVerticalPresetDefinition(presetId) {
43377
- const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
43378
- if (!definition) throw new Error(`Unhandled vertical preset id: ${presetId}`);
43379
- return definition;
43380
- }
43381
- function toNonEmptyVerticalPresetIds(presetIds) {
43382
- const firstPresetId = presetIds[0];
43383
- return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
43384
- }
43385
- function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
43386
- return {
43387
- verticalId,
43388
- selectedPresetIds
43389
- };
43390
- }
43391
- function createSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
43392
- const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
43393
- return nonEmptyPresetIds ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
43394
- }
43395
- function resolveSiteVerticalBookingConfig(rawConfig) {
43396
- if (!rawConfig) return {
43397
- kind: "unconfigured",
43398
- config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG
43399
- };
43400
- const verticalId = parseVerticalId(rawConfig.verticalId);
43401
- const selectedPresetIds = (Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : []).map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
43402
- const config = {
43403
- verticalId,
43404
- selectedPresetIds
43405
- };
43406
- if (!verticalId && selectedPresetIds.length === 0) return {
43407
- kind: "unconfigured",
43408
- config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG
43409
- };
43410
- const issues = getSiteVerticalConfigIssues(rawConfig, config);
43411
- if (issues.length > 0) return {
43412
- kind: "invalid",
43413
- config,
43414
- issues
43415
- };
43416
- const configuredConfig = verticalId ? createSiteVerticalBookingConfig(verticalId, selectedPresetIds) : null;
43417
- if (!configuredConfig) return {
43418
- kind: "invalid",
43419
- config,
43420
- issues: ["empty_selected_presets"]
43421
- };
43422
- return {
43423
- kind: "configured",
43424
- config: configuredConfig,
43425
- selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
43426
- };
43427
- }
43428
- function getSiteVerticalConfigIssues(rawConfig, config) {
43429
- const issues = /* @__PURE__ */ new Set();
43430
- if (rawConfig.verticalId != null && !config.verticalId) issues.add("unknown_vertical");
43431
- if (!config.verticalId && config.selectedPresetIds.length > 0) issues.add("missing_vertical");
43432
- if ((Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : []).some((presetId) => parseVerticalPresetId(presetId) === null)) issues.add("unknown_preset");
43433
- if (config.verticalId && config.selectedPresetIds.length === 0) issues.add("empty_selected_presets");
43434
- const seenBehaviours = /* @__PURE__ */ new Set();
43435
- for (const presetId of config.selectedPresetIds) {
43436
- const presetDefinition = getVerticalPresetDefinition(presetId);
43437
- if (config.verticalId && presetDefinition.verticalId !== config.verticalId) issues.add("preset_vertical_mismatch");
43438
- if (presetDefinition.availability === "future") issues.add("future_preset_selected");
43439
- if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) issues.add("duplicate_canonical_behaviour");
43440
- seenBehaviours.add(presetDefinition.canonicalBehaviour);
44387
+ /**
44388
+ * Transport adapters for the booking-vertical domain.
44389
+ *
44390
+ * The domain catalog and all pure resolution/selection rules live in core;
44391
+ * this module owns only the Zod boundary used by API payloads.
44392
+ */
44393
+ function formatRawDiagnosticValue(value) {
44394
+ const serialized = JSON.stringify(value);
44395
+ return serialized === void 0 ? String(value) : serialized;
44396
+ }
44397
+ function describeSiteVerticalConfigIssue(issue) {
44398
+ switch (issue.code) {
44399
+ case "unknown_vertical": return `${issue.code}: ${formatRawDiagnosticValue(issue.rawValue)}`;
44400
+ case "unknown_preset": return `${issue.code}: ${formatRawDiagnosticValue(issue.rawValue)}`;
44401
+ case "missing_vertical":
44402
+ case "empty_selected_presets":
44403
+ case "preset_vertical_mismatch":
44404
+ case "duplicate_preset_id":
44405
+ case "duplicate_canonical_behaviour":
44406
+ case "future_preset_selected": return issue.code;
44407
+ default: return assertNever$3(issue);
43441
44408
  }
43442
- return [...issues];
43443
44409
  }
43444
- var VERTICAL_IDS, VERTICAL_ID_SET, VERTICAL_PRESET_ID_SET, VerticalIdSchema, VerticalPresetIdSchema, DEFAULT_SITE_VERTICAL_BOOKING_CONFIG;
44410
+ var VerticalIdSchema, VerticalPresetIdSchema;
43445
44411
  var init_bookingVerticals = __esmMin((() => {
43446
- init_eventSeriesPresentationPreset();
43447
- init_bookingVerticalCatalog();
43448
- VERTICAL_IDS = [
43449
- "yoga_wellness",
43450
- "fitness_pt",
43451
- "dance_school",
43452
- "physiotherapy_physical_health",
43453
- "massage_bodywork",
43454
- "therapist_practitioner",
43455
- "beauty_spa",
43456
- "consultant_coach",
43457
- "training_provider",
43458
- "retreat_centre",
43459
- "music_school",
43460
- "voice_singing",
43461
- "performing_arts_school",
43462
- "community_wellbeing",
43463
- "venue_event_space"
43464
- ];
43465
- VERTICAL_ID_SET = new Set(VERTICAL_IDS);
43466
- VERTICAL_PRESET_ID_SET = new Set(VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id));
44412
+ init_src$4();
43467
44413
  VerticalIdSchema = z.string().trim().transform((value, ctx) => {
43468
44414
  const parsed = parseVerticalId(value);
43469
44415
  if (!parsed) {
@@ -43494,16 +44440,12 @@ var init_bookingVerticals = __esmMin((() => {
43494
44440
  if (resolved.kind === "invalid") {
43495
44441
  ctx.addIssue({
43496
44442
  code: z.ZodIssueCode.custom,
43497
- message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
44443
+ message: `Invalid booking vertical config: ${resolved.issues.map(describeSiteVerticalConfigIssue).join(", ")}`
43498
44444
  });
43499
44445
  return z.NEVER;
43500
44446
  }
43501
44447
  return resolved.config;
43502
44448
  });
43503
- DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
43504
- verticalId: null,
43505
- selectedPresetIds: []
43506
- };
43507
44449
  }));
43508
44450
  //#endregion
43509
44451
  //#region ../api/src/utils/isRecord.ts
@@ -43969,7 +44911,6 @@ var init_dashboardTeamMemberNav = __esmMin((() => {
43969
44911
  //#endregion
43970
44912
  //#region ../api/src/navigation/dashboardBookingsNav.ts
43971
44913
  var init_dashboardBookingsNav = __esmMin((() => {
43972
- init_bookingVerticals();
43973
44914
  init_staffAccess();
43974
44915
  }));
43975
44916
  var init_identity = __esmMin((() => {}));
@@ -44130,7 +45071,6 @@ var init_src = __esmMin((() => {
44130
45071
  init_bookingRefundOutcomes();
44131
45072
  init_customerMembershipOutcomes();
44132
45073
  init_bookingVerticals();
44133
- init_eventSeriesPresentationPreset();
44134
45074
  init_appointmentSetup();
44135
45075
  init_bookings();
44136
45076
  init_cache_tags();
@@ -44144,7 +45084,6 @@ var init_src = __esmMin((() => {
44144
45084
  init_blocks();
44145
45085
  init_pages();
44146
45086
  init_routes();
44147
- init_eventSeriesPresentationPreset();
44148
45087
  init_bookingRecords();
44149
45088
  init_emailSettings();
44150
45089
  init_eventEmailTemplates();
@@ -45243,7 +46182,7 @@ function isSubrouteSlugSegment(segment) {
45243
46182
  * - others: not subroute-eligible
45244
46183
  */
45245
46184
  function defaultShouldAttemptEntrySubroute(args) {
45246
- if (args.entryTypeKey === "event") return isValidSegment(args.segment);
46185
+ if (args.entryTypeKey === "event") return isValidSegment(args.segment) || isSubrouteSlugSegment(args.segment);
45247
46186
  if (args.entryTypeKey === null) return isValidSegment(args.segment);
45248
46187
  return false;
45249
46188
  }