@riverbankcms/sdk 0.80.0 → 0.82.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 (574) hide show
  1. package/README.md +65 -3
  2. package/dist/{PreviewEditorSidebar-O4NDX5TP.css → PreviewEditorSidebar-JA4VIPSZ.css} +1 -1
  3. package/dist/{PreviewEditorSidebar-QZG37QIF.mjs → PreviewEditorSidebar-LHGK6RIO.mjs} +760 -711
  4. package/dist/{SdkPreviewModeRuntime-PBGALTMK.css → PreviewEditorUI-36T7QYV4.css} +1 -1
  5. package/dist/{PreviewEditorUI-AXIKSMZA.mjs → PreviewEditorUI-AXZG2SDC.mjs} +167 -28
  6. package/dist/{PreviewEditorUI-4JVDBZBS.css → SdkPreviewModeRuntime-FXKI6XNL.css} +1 -1
  7. package/dist/SdkPreviewModeRuntime-RNVRHFFR.mjs +8 -0
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +838 -262
  9. package/dist/_dts/altcha/src/AltchaWidget.d.ts +1 -1
  10. package/dist/_dts/api/src/analytics.d.ts +1 -1
  11. package/dist/_dts/api/src/bookingConfig.d.ts +4 -0
  12. package/dist/_dts/api/src/contentRuntime.d.ts +15 -3
  13. package/dist/_dts/api/src/contentTypes.d.ts +6 -0
  14. package/dist/_dts/api/src/courses.d.ts +1 -1
  15. package/dist/_dts/api/src/event-destination-policy.d.ts +17 -0
  16. package/dist/_dts/api/src/index.d.ts +6 -2
  17. package/dist/_dts/api/src/navigation/boundaries.d.ts +64 -0
  18. package/dist/_dts/api/src/navigation.d.ts +2 -0
  19. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +17 -12
  20. package/dist/_dts/api/src/siteGeneration.d.ts +1 -1
  21. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -6
  22. package/dist/_dts/api/src/types.d.ts +1 -1
  23. package/dist/_dts/block-form/src/backend/store-backend.d.ts +3 -1
  24. package/dist/_dts/block-form/src/backend/types.d.ts +3 -3
  25. package/dist/_dts/block-form/src/context/BlockContext.d.ts +1 -1
  26. package/dist/_dts/block-form/src/context/DisplayLabelResolverContext.d.ts +1 -1
  27. package/dist/_dts/block-form/src/context/FieldPreviewResolverContext.d.ts +2 -2
  28. package/dist/_dts/block-form/src/manifest/ManifestForm.d.ts +1 -1
  29. package/dist/_dts/block-form/src/palette/PaletteContext.d.ts +1 -1
  30. package/dist/_dts/block-form/src/sdk-config/SdkConfigContext.d.ts +1 -1
  31. package/dist/_dts/block-form/src/widgets/BackgroundColorWidget/BackgroundColorWidget.d.ts +2 -1
  32. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +1 -1
  33. package/dist/_dts/block-form/src/widgets/BooleanField/BooleanField.d.ts +1 -1
  34. package/dist/_dts/block-form/src/widgets/DateField/datePickerPopover.d.ts +1 -1
  35. package/dist/_dts/block-form/src/widgets/Field.d.ts +2 -2
  36. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -3
  37. package/dist/_dts/block-form/src/widgets/NumberField/NumberField.d.ts +1 -1
  38. package/dist/_dts/block-form/src/widgets/PresetOrCustomField/PresetOrCustomField.d.ts +1 -1
  39. package/dist/_dts/block-form/src/widgets/SdkSelectField/SdkSelectField.d.ts +1 -1
  40. package/dist/_dts/block-form/src/widgets/SelectField/SelectField.d.ts +1 -1
  41. package/dist/_dts/block-form/src/widgets/SelectWidget.d.ts +1 -1
  42. package/dist/_dts/block-form/src/widgets/SliderField/SliderField.d.ts +1 -1
  43. package/dist/_dts/block-form/src/widgets/TextField/TextField.d.ts +1 -1
  44. package/dist/_dts/block-form/src/widgets/TextInputWidget.d.ts +1 -1
  45. package/dist/_dts/block-form/src/widgets/ToggleWidget.d.ts +1 -1
  46. package/dist/_dts/block-form/src/widgets/stringDefaultValue.d.ts +1 -0
  47. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -1
  48. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +28 -44
  49. package/dist/_dts/blocks/src/index.d.ts +6 -4
  50. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  51. package/dist/_dts/blocks/src/primitives/content/components/Button.d.ts +7 -7
  52. package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +2 -1
  53. package/dist/_dts/blocks/src/primitives/content/components/Text.d.ts +2 -1
  54. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -0
  55. package/dist/_dts/blocks/src/primitives/layout/Grid.d.ts +2 -1
  56. package/dist/_dts/blocks/src/primitives/layout/Inline.d.ts +2 -1
  57. package/dist/_dts/blocks/src/primitives/layout/Stack.d.ts +2 -1
  58. package/dist/_dts/blocks/src/server.d.ts +1 -1
  59. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +592 -592
  60. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +592 -592
  61. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +592 -592
  62. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +592 -592
  63. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +592 -592
  64. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +1 -1
  65. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +3 -2
  66. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +397 -111
  67. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +6 -15
  68. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +592 -592
  69. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +2 -0
  71. package/dist/_dts/blocks/src/system/blocks/form.d.ts +20 -1
  72. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +592 -592
  73. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +2 -0
  74. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +3 -0
  75. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -3
  76. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +54 -54
  77. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +21 -0
  78. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +162 -0
  79. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +592 -602
  80. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +592 -604
  81. package/dist/_dts/blocks/src/system/blocks/products/shared.d.ts +0 -4
  82. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +592 -592
  83. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
  84. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +3 -0
  85. package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  87. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  88. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +19 -5
  89. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  90. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  91. package/dist/_dts/blocks/src/system/data/linkedContentEntries.d.ts +102 -0
  92. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  93. package/dist/_dts/blocks/src/system/defineBlock.d.ts +3 -1
  94. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +2 -2
  95. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +6 -1
  96. package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +0 -1
  97. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +71 -56
  98. package/dist/_dts/blocks/src/system/media/slotContracts.d.ts +2 -0
  99. package/dist/_dts/blocks/src/system/node/types.d.ts +8 -1
  100. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  101. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  102. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +1 -1
  103. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +56 -74
  104. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +27 -36
  105. package/dist/_dts/blocks/src/system/runtime/headingDecoration.d.ts +21 -0
  106. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +45 -14
  107. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -9
  108. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +1 -10
  109. package/dist/_dts/blocks/src/system/runtime/nodes/ImageResolveContext.d.ts +2 -2
  110. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +4 -0
  111. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  112. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -1
  113. package/dist/_dts/blocks/src/system/runtime/nodes/carousel.shared.d.ts +2 -1
  114. package/dist/_dts/blocks/src/system/runtime/nodes/cart.client.d.ts +2 -1
  115. package/dist/_dts/blocks/src/system/runtime/nodes/cart.server.d.ts +1 -1
  116. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.client.d.ts +2 -1
  117. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +1 -1
  118. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +1 -5
  119. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/view.d.ts +10 -13
  120. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/view.d.ts +3 -2
  121. package/dist/_dts/blocks/src/system/runtime/nodes/course-details.server.d.ts +2 -2
  122. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/BookingModeStep.d.ts +1 -1
  123. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/CourseRegistrationWizard.d.ts +2 -1
  124. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/ErrorStep.d.ts +1 -1
  125. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/MembershipHero.d.ts +1 -1
  126. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/PaymentFailedStep.d.ts +1 -1
  127. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/PortalAuthSidebar.d.ts +1 -1
  128. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/StepIndicator.d.ts +1 -1
  129. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/SuccessStep.d.ts +1 -1
  130. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/VerifyingTimeoutStep.d.ts +1 -1
  131. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/WaitlistStep.d.ts +1 -1
  132. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/components.d.ts +5 -4
  133. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.client.d.ts +3 -2
  134. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.server.d.ts +1 -1
  135. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/CoursePricingDisplay.d.ts +2 -1
  136. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/view.d.ts +1 -1
  137. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +2 -2
  138. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +1 -1
  139. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSummaryBar.d.ts +2 -1
  140. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +2 -1
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +2 -1
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardContent.d.ts +2 -1
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventSelectionStep.d.ts +2 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/OrderSummary.d.ts +1 -1
  145. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PastOccurrenceNotice.d.ts +2 -1
  146. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SelectableOptionCard.d.ts +1 -1
  147. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/StepIndicator.d.ts +1 -1
  148. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +1 -1
  149. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +1 -2
  150. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +2 -1
  151. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +12 -5
  152. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  153. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +21 -16
  154. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +3 -2
  155. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +21 -16
  156. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +17 -28
  157. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.view.d.ts +1 -1
  158. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DateTimeTile.d.ts +2 -1
  159. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  160. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -1
  161. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.d.ts +2 -3
  162. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +3 -3
  163. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +50 -0
  164. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +2 -1
  165. package/dist/_dts/blocks/src/system/runtime/nodes/gifting.client.d.ts +2 -1
  166. package/dist/_dts/blocks/src/system/runtime/nodes/gifting.server.d.ts +2 -1
  167. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.client.d.ts +2 -2
  168. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +1 -1
  169. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +4 -4
  170. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +1 -1
  171. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +29 -14
  172. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +2 -1
  173. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +23 -0
  174. package/dist/_dts/blocks/src/system/runtime/nodes/product-detail.client.d.ts +2 -1
  175. package/dist/_dts/blocks/src/system/runtime/nodes/product-detail.server.d.ts +1 -1
  176. package/dist/_dts/blocks/src/system/runtime/nodes/product-list.client.d.ts +2 -1
  177. package/dist/_dts/blocks/src/system/runtime/nodes/product-list.server.d.ts +1 -1
  178. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +2 -1
  179. package/dist/_dts/blocks/src/system/runtime/nodes/shop-add-feedback.d.ts +1 -1
  180. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.d.ts +5 -4
  181. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.server.d.ts +5 -4
  182. package/dist/_dts/blocks/src/system/runtime/nodes/shop.client.d.ts +2 -1
  183. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +0 -17
  184. package/dist/_dts/blocks/src/system/runtime/nodes/shop.server.d.ts +1 -1
  185. package/dist/_dts/blocks/src/system/runtime/nodes/shop.types.d.ts +0 -1
  186. package/dist/_dts/blocks/src/system/runtime/nodes/spinner.d.ts +1 -1
  187. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +13 -0
  188. package/dist/_dts/blocks/src/system/runtime/shared/components/ActionRow.d.ts +1 -1
  189. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckIcon.d.ts +1 -1
  190. package/dist/_dts/blocks/src/system/runtime/shared/components/ClockIcon.d.ts +1 -1
  191. package/dist/_dts/blocks/src/system/runtime/shared/components/CrossIcon.d.ts +1 -1
  192. package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +1 -1
  193. package/dist/_dts/blocks/src/system/runtime/shared/components/FieldValidationMessage.d.ts +1 -1
  194. package/dist/_dts/blocks/src/system/runtime/shared/components/MembershipHero.d.ts +1 -1
  195. package/dist/_dts/blocks/src/system/runtime/shared/components/StateIcon.d.ts +1 -1
  196. package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +1 -1
  197. package/dist/_dts/blocks/src/system/runtime/shared/components/TerminalPanel.d.ts +1 -1
  198. package/dist/_dts/blocks/src/system/transforms/registry/_utils/sectionForegroundStyles.d.ts +2 -0
  199. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +4 -2
  200. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  201. package/dist/_dts/calendar/src/grid.d.ts +27 -0
  202. package/dist/_dts/calendar/src/index.d.ts +2 -2
  203. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +1 -1
  204. package/dist/_dts/content-editor/src/components/EditableBlockProvider.d.ts +1 -1
  205. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +1 -1
  206. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +3 -1
  207. package/dist/_dts/content-editor/src/editorTransactionState.d.ts +1 -0
  208. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +26 -0
  209. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +1 -0
  210. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +23 -0
  211. package/dist/_dts/content-editor/src/hooks/useReactiveToolbar.d.ts +1 -1
  212. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +2 -2
  213. package/dist/_dts/content-editor/src/index.d.ts +3 -1
  214. package/dist/_dts/content-editor/src/lib/json.d.ts +2 -0
  215. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +8 -0
  216. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +6 -1
  217. package/dist/_dts/content-editor/src/primitives/PreviewTextEditor.d.ts +6 -1
  218. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +2 -0
  219. package/dist/_dts/content-editor/src/primitives/shared/index.d.ts +1 -1
  220. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +3 -1
  221. package/dist/_dts/content-editor/src/primitives/shared/types.d.ts +5 -0
  222. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +58 -0
  223. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +93 -0
  224. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +67 -5
  225. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +2 -0
  226. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -1
  227. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +0 -40
  228. package/dist/_dts/content-model/src/content-types/builtins.d.ts +43 -40
  229. package/dist/_dts/content-model/src/metadataConfig.d.ts +87 -47
  230. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  231. package/dist/_dts/core/src/branded.d.ts +5 -0
  232. package/dist/_dts/core/src/event-pricing.d.ts +72 -0
  233. package/dist/_dts/core/src/index.d.ts +1 -0
  234. package/dist/_dts/core/src/stable-json.d.ts +1 -0
  235. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +27 -2
  236. package/dist/_dts/db/src/schemas/forms.d.ts +4 -4
  237. package/dist/_dts/editor/src/EditorProvider.d.ts +26 -0
  238. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +26 -0
  239. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +45 -0
  240. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +25 -0
  241. package/dist/_dts/editor/src/components/EditingToggle.d.ts +9 -0
  242. package/dist/_dts/editor/src/hooks/useEditableElement.d.ts +18 -0
  243. package/dist/_dts/editor/src/index.d.ts +29 -0
  244. package/dist/_dts/editor/src/inline/InlineTextEditor.d.ts +1 -0
  245. package/dist/_dts/editor/src/lib/utils.d.ts +1 -0
  246. package/dist/_dts/editor/src/primitives/EditorPrimitivesProvider.d.ts +20 -0
  247. package/dist/_dts/editor/src/primitives/InlineFieldContext.d.ts +11 -0
  248. package/dist/_dts/editor/src/primitives/SaveContext.d.ts +12 -0
  249. package/dist/_dts/editor/src/primitives/helpers.d.ts +1 -0
  250. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +26 -0
  251. package/dist/_dts/editor/src/primitives/rich-text/RichTextToolbar.d.ts +16 -0
  252. package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +23 -0
  253. package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextImage.d.ts +2 -0
  254. package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextLink.d.ts +1 -0
  255. package/dist/_dts/editor/src/primitives/rich-text/imageActions.d.ts +22 -0
  256. package/dist/_dts/editor/src/primitives/rich-text/sanitize.d.ts +23 -0
  257. package/dist/_dts/editor/src/primitives/rich-text/toolbar/BlockTypeDropdown.d.ts +6 -0
  258. package/dist/_dts/editor/src/primitives/rich-text/toolbar/LinkPopover.d.ts +10 -0
  259. package/dist/_dts/editor/src/primitives/rich-text/toolbar/ToolbarIconButton.d.ts +11 -0
  260. package/dist/_dts/editor/src/primitives/rich-text/toolbar/linkPopoverUtils.d.ts +58 -0
  261. package/dist/_dts/editor/src/primitives/rich-text/useRichTextEditor.d.ts +19 -0
  262. package/dist/_dts/editor/src/primitives/rich-text/utils.d.ts +20 -0
  263. package/dist/_dts/editor/src/utils/optimisticTokens.d.ts +27 -0
  264. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +2 -2
  265. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -1
  266. package/dist/_dts/editor-blocks/src/FormProvider.d.ts +1 -1
  267. package/dist/_dts/editor-blocks/src/block-editor/AddBlockDivider.d.ts +1 -1
  268. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +4 -4
  269. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +1 -1
  270. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +5 -5
  271. package/dist/_dts/editor-blocks/src/block-editor/BlockListContext.d.ts +1 -1
  272. package/dist/_dts/editor-blocks/src/block-editor/BlockPickerDialog.d.ts +1 -1
  273. package/dist/_dts/editor-blocks/src/block-editor/BlockThumbnail.d.ts +1 -1
  274. package/dist/_dts/editor-blocks/src/block-editor/BlockTile.d.ts +2 -2
  275. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +1 -1
  276. package/dist/_dts/editor-blocks/src/block-editor/EnhancedBlockPickerDialog.d.ts +1 -1
  277. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +1 -1
  278. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +1 -1
  279. package/dist/_dts/editor-blocks/src/block-editor/HeaderActions.d.ts +1 -1
  280. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +4 -4
  281. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +15 -0
  282. package/dist/_dts/editor-blocks/src/block-editor/blockHeaderActionPlan.d.ts +49 -0
  283. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  284. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
  285. package/dist/_dts/editor-blocks/src/widgets/button/ButtonField.d.ts +1 -1
  286. package/dist/_dts/editor-blocks/src/widgets/button/ButtonVariantField.d.ts +1 -1
  287. package/dist/_dts/editor-blocks/src/widgets/button/context.d.ts +1 -1
  288. package/dist/_dts/editor-blocks/src/widgets/content-type-select/ContentTypeSelectField.d.ts +1 -1
  289. package/dist/_dts/editor-blocks/src/widgets/content-type-select/ContentTypeWidgetProvider.d.ts +1 -1
  290. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerField.d.ts +1 -1
  291. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerWidgetProvider.d.ts +1 -1
  292. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  293. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +2 -0
  294. package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +1 -1
  295. package/dist/_dts/editor-blocks/src/widgets/link/LinkPickerDialog.d.ts +1 -1
  296. package/dist/_dts/editor-blocks/src/widgets/link/LinkSummary.d.ts +1 -1
  297. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +1 -1
  298. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +1 -1
  299. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/OfferingsPreviewGroupOrderField.d.ts +2 -0
  300. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/OfferingsPreviewWidgetProvider.d.ts +10 -0
  301. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/index.d.ts +3 -0
  302. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/orderDomain.d.ts +29 -0
  303. package/dist/_dts/editor-blocks/src/widgets/reference/ReferenceField.d.ts +1 -1
  304. package/dist/_dts/editor-blocks/src/widgets/reference/ReferenceWidgetProvider.d.ts +1 -1
  305. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextField.d.ts +1 -1
  306. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextWidgetProvider.d.ts +2 -2
  307. package/dist/_dts/editor-blocks/src/widgets/rich-text/useImagePicker.d.ts +2 -2
  308. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/SiteOptionPickerField.d.ts +3 -0
  309. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/SiteOptionWidgetProvider.d.ts +14 -0
  310. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/index.d.ts +6 -0
  311. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +51 -0
  312. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +20 -0
  313. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +5 -0
  314. package/dist/_dts/media-core/src/index.d.ts +1 -0
  315. package/dist/_dts/media-core/src/renderableMediaAsset.d.ts +18 -0
  316. package/dist/_dts/media-editor/src/CropDialog.d.ts +1 -1
  317. package/dist/_dts/media-editor/src/CropDialogShell.d.ts +1 -1
  318. package/dist/_dts/media-editor/src/FileAssetPreview.d.ts +1 -1
  319. package/dist/_dts/media-editor/src/MediaEditor.d.ts +4 -1
  320. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +2 -1
  321. package/dist/_dts/media-editor/src/MediaPreview.d.ts +1 -1
  322. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  323. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -1
  324. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  325. package/dist/_dts/media-editor/src/provider.d.ts +1 -1
  326. package/dist/_dts/media-react/src/components/AuthenticatedImage.d.ts +1 -1
  327. package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +1 -1
  328. package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +1 -1
  329. package/dist/_dts/preview-next/src/client/PreviewShellSmoke.d.ts +2 -1
  330. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +7 -4
  331. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +2 -1
  332. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -3
  333. package/dist/_dts/preview-next/src/client/blocks/blockCustomizePopoverRows.d.ts +25 -0
  334. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +2 -1
  335. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +4 -30
  336. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +11 -0
  337. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +3 -9
  338. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +2 -2
  339. package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +2 -1
  340. package/dist/_dts/preview-next/src/client/index.d.ts +0 -1
  341. package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +1 -1
  342. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +4 -2
  343. package/dist/_dts/preview-next/src/client/preview/LinkedEntryEditEventBridge.d.ts +1 -0
  344. package/dist/_dts/preview-next/src/client/preview/MaintenanceModeBadge.d.ts +1 -1
  345. package/dist/_dts/preview-next/src/client/preview/OnboardingThemeSwitcher.d.ts +2 -1
  346. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +6 -3
  347. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +2 -2
  348. package/dist/_dts/preview-next/src/client/preview/PreviewAuthBanner.d.ts +2 -1
  349. package/dist/_dts/preview-next/src/client/preview/PreviewAuthInit.d.ts +1 -1
  350. package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +2 -2
  351. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +20 -0
  352. package/dist/_dts/preview-next/src/client/preview/PreviewConfirmationDialog.d.ts +2 -1
  353. package/dist/_dts/preview-next/src/client/preview/PreviewDesignCoordinatorContext.d.ts +2 -2
  354. package/dist/_dts/preview-next/src/client/preview/PreviewDesignHistoryOrderContext.d.ts +13 -0
  355. package/dist/_dts/preview-next/src/client/preview/PreviewEditorGuidanceCard.d.ts +2 -1
  356. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +4 -3
  357. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +2 -2
  358. package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +3 -2
  359. package/dist/_dts/preview-next/src/client/preview/PreviewQueryProvider.d.ts +2 -2
  360. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +21 -20
  361. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +4 -3
  362. package/dist/_dts/preview-next/src/client/preview/PreviewSidebarSection.d.ts +13 -0
  363. package/dist/_dts/preview-next/src/client/preview/PreviewViewportControls.d.ts +1 -1
  364. package/dist/_dts/preview-next/src/client/preview/PreviewZoomControls.d.ts +1 -1
  365. package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +2 -1
  366. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  367. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +60 -6
  368. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +2 -1
  369. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +14 -1
  370. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +2 -1
  371. package/dist/_dts/preview-next/src/client/preview/linkedEntryEditEvents.d.ts +9 -0
  372. package/dist/_dts/preview-next/src/client/preview/previewChromePlacement.d.ts +51 -0
  373. package/dist/_dts/preview-next/src/client/preview/previewCustomizeControls.d.ts +68 -0
  374. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +8 -1
  375. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +11 -9
  376. package/dist/_dts/preview-next/src/client/preview/previewDesignHistoryOrder.d.ts +18 -0
  377. package/dist/_dts/preview-next/src/client/preview/previewUndoDomains.d.ts +1 -1
  378. package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +41 -0
  379. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +120 -0
  380. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +30 -0
  381. package/dist/_dts/preview-next/src/client/preview/siteStyleHistoryState.d.ts +55 -0
  382. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -0
  383. package/dist/_dts/preview-next/src/client/preview/themeOverlay.d.ts +2 -2
  384. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewModeRuntime.d.ts +2 -1
  385. package/dist/_dts/preview-next/src/client/widgets/widgetAdapters.d.ts +2 -1
  386. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +8 -5
  387. package/dist/_dts/preview-next/src/constants.d.ts +0 -1
  388. package/dist/_dts/sdk/src/__mocks__/next-cache.d.ts +4 -3
  389. package/dist/_dts/sdk/src/cli/commands/pull-dry-run.d.ts +1 -1
  390. package/dist/_dts/sdk/src/cli/config-loader.d.ts +3 -1
  391. package/dist/_dts/sdk/src/cli/content/reader.d.ts +6 -12
  392. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +1 -0
  393. package/dist/_dts/sdk/src/cli/site-commands/localBlockManifestResolver.d.ts +31 -0
  394. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +3 -1
  395. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +1 -0
  396. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +7 -7
  397. package/dist/_dts/sdk/src/client/types.d.ts +36 -4
  398. package/dist/_dts/sdk/src/client.d.ts +1 -1
  399. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -14
  400. package/dist/_dts/sdk/src/config/content-validation.d.ts +9 -214
  401. package/dist/_dts/sdk/src/config/types.d.ts +10 -1
  402. package/dist/_dts/sdk/src/config/validation.d.ts +24 -24
  403. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +30 -4
  404. package/dist/_dts/sdk/src/index.d.ts +1 -1
  405. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +6 -6
  406. package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +4 -3
  407. package/dist/_dts/sdk/src/public-api/contracts.d.ts +39 -37
  408. package/dist/_dts/sdk/src/rendering/components/Block.d.ts +1 -1
  409. package/dist/_dts/sdk/src/rendering/components/Block.server.d.ts +1 -1
  410. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +1 -1
  411. package/dist/_dts/sdk/src/rendering/components/Page.d.ts +1 -1
  412. package/dist/_dts/sdk/src/rendering/components/Page.server.d.ts +1 -1
  413. package/dist/_dts/sdk/src/rendering/components/PageHydrationBootstrap.d.ts +1 -1
  414. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +10 -9
  415. package/dist/_dts/sdk/src/rendering/islands/enhancers/routeIslandApiConfig.d.ts +9 -0
  416. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +6 -15
  417. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +4 -0
  418. package/dist/_dts/sdk/src/rendering/primitives/RichText.d.ts +2 -1
  419. package/dist/_dts/sdk/src/server.d.ts +1 -1
  420. package/dist/_dts/sdk/src/theme-bridge/ThemeBridgeProvider.d.ts +1 -1
  421. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  422. package/dist/_dts/sdk/src/version.d.ts +1 -1
  423. package/dist/_dts/site-commands/src/commands.d.ts +69 -21
  424. package/dist/_dts/theme-core/src/ClientThemeScope.d.ts +1 -1
  425. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +3 -2
  426. package/dist/_dts/theme-core/src/ThemeScope.d.ts +1 -1
  427. package/dist/_dts/theme-core/src/ThemeScopeCore.d.ts +1 -1
  428. package/dist/_dts/theme-core/src/accordions/types.d.ts +5 -5
  429. package/dist/_dts/theme-core/src/buttons/constants.d.ts +26 -1
  430. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  431. package/dist/_dts/theme-core/src/buttons/personalities/joy-stamp.d.ts +22 -0
  432. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +8 -7
  433. package/dist/_dts/theme-core/src/buttons/types.d.ts +26 -17
  434. package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +44 -0
  435. package/dist/_dts/theme-core/src/cards/types.d.ts +5 -5
  436. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  437. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  438. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  439. package/dist/_dts/theme-core/src/interactive/types.d.ts +10 -0
  440. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +228 -198
  441. package/dist/_dts/theme-core/src/mock-themes/components/PaletteCard.d.ts +1 -1
  442. package/dist/_dts/theme-core/src/mock-themes/components/swatch.d.ts +1 -1
  443. package/dist/_dts/theme-core/src/navigation/presets.d.ts +1 -1
  444. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  445. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  446. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +6 -6
  447. package/dist/_dts/theme-core/src/palette/variants/warm-dark.d.ts +27 -0
  448. package/dist/_dts/theme-core/src/schema.d.ts +273 -226
  449. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +2 -2
  450. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +4 -1
  451. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +87 -31
  452. package/dist/_dts/theme-core/src/site-styles/appearancePresetResolution.d.ts +6 -2
  453. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +27 -0
  454. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +87 -31
  455. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +30 -1
  456. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +32 -16
  457. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +13 -9
  458. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +5 -0
  459. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  460. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  461. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +3 -23
  462. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +276 -4
  463. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
  464. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +33 -3
  465. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +508 -0
  466. package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +30 -0
  467. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +10 -10
  468. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  469. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  470. package/dist/_dts/theme-core/src/site-styles/types.d.ts +26 -6
  471. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
  472. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
  473. package/dist/_dts/ui/src/async-boundary.d.ts +1 -1
  474. package/dist/_dts/ui/src/badge.d.ts +1 -1
  475. package/dist/_dts/ui/src/button-group.d.ts +3 -3
  476. package/dist/_dts/ui/src/calendar.d.ts +2 -2
  477. package/dist/_dts/ui/src/card.d.ts +6 -6
  478. package/dist/_dts/ui/src/combobox.d.ts +1 -1
  479. package/dist/_dts/ui/src/command-multi-select.d.ts +1 -1
  480. package/dist/_dts/ui/src/content-spinner.d.ts +1 -1
  481. package/dist/_dts/ui/src/delayed-spinner.d.ts +1 -1
  482. package/dist/_dts/ui/src/dev-toolbar.d.ts +1 -1
  483. package/dist/_dts/ui/src/dialog.d.ts +10 -10
  484. package/dist/_dts/ui/src/dropdown-menu.d.ts +1 -1
  485. package/dist/_dts/ui/src/editor-drawer.d.ts +1 -1
  486. package/dist/_dts/ui/src/empty-state.d.ts +1 -1
  487. package/dist/_dts/ui/src/filter-button-group.d.ts +1 -1
  488. package/dist/_dts/ui/src/fixed-bottom-surface.d.ts +1 -1
  489. package/dist/_dts/ui/src/form.d.ts +7 -7
  490. package/dist/_dts/ui/src/label.d.ts +1 -1
  491. package/dist/_dts/ui/src/menubar.d.ts +16 -16
  492. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -2
  493. package/dist/_dts/ui/src/number-input.d.ts +1 -1
  494. package/dist/_dts/ui/src/palette/ColorChooserDialog.d.ts +1 -1
  495. package/dist/_dts/ui/src/palette/ColorSlotButton.d.ts +1 -1
  496. package/dist/_dts/ui/src/palette/ColorSwatchButton.d.ts +1 -1
  497. package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +1 -1
  498. package/dist/_dts/ui/src/resizable-split-pane.d.ts +1 -1
  499. package/dist/_dts/ui/src/select.d.ts +10 -10
  500. package/dist/_dts/ui/src/separator.d.ts +1 -1
  501. package/dist/_dts/ui/src/sheet.d.ts +9 -9
  502. package/dist/_dts/ui/src/spinner.d.ts +1 -1
  503. package/dist/_dts/ui/src/tooltip.d.ts +4 -4
  504. package/dist/{chunk-MPBNEVPB.mjs → chunk-2BUMISSH.mjs} +1 -1
  505. package/dist/{chunk-7PCYG6YV.mjs → chunk-6FWNF3DJ.mjs} +2086 -1128
  506. package/dist/{chunk-BBLZSQEY.mjs → chunk-FIREV57T.mjs} +14 -9
  507. package/dist/{chunk-5NZGBSJF.mjs → chunk-G35HOQEN.mjs} +2608 -2397
  508. package/dist/{chunk-HTB4BMKD.mjs → chunk-HKB6XVIP.mjs} +321 -113
  509. package/dist/{chunk-GYXKAUFV.mjs → chunk-XQR6THQJ.mjs} +27831 -17740
  510. package/dist/cli/index.mjs +4581 -2802
  511. package/dist/cli/init-docs/content/workflow-custom-block.md +5 -0
  512. package/dist/client/{accordion-QFZMNB7O.mjs → accordion-G34C45TW.mjs} +2 -2
  513. package/dist/client/{bookingForm-NCIXFWIG.mjs → bookingForm-BLBVKSAQ.mjs} +12 -12
  514. package/dist/client/bookings.mjs +321 -60
  515. package/dist/client/{carousel-EO4BJMWD.mjs → carousel-7ZVTBRMD.mjs} +3 -3
  516. package/dist/client/{cart-FTYCLYUW.mjs → cart-Q6S6LZUO.mjs} +8 -7
  517. package/dist/client/{checkout-NFGLVCOX.mjs → checkout-5QJLDE4I.mjs} +8 -7
  518. package/dist/client/{chunk-IWFZSQNZ.mjs → chunk-5PQH4Y75.mjs} +3 -3
  519. package/dist/client/{chunk-Y37KDO7P.mjs → chunk-CHAB5ACD.mjs} +5 -4
  520. package/dist/client/{chunk-VDS5YFLX.mjs → chunk-CSZGLBYR.mjs} +1 -1
  521. package/dist/client/{chunk-3PEDD5KJ.mjs → chunk-DVNUDUVT.mjs} +1 -1
  522. package/dist/client/{chunk-6GVVWSPU.mjs → chunk-EQKYMX4N.mjs} +348 -301
  523. package/dist/client/{chunk-YLMKMCSJ.mjs → chunk-GFSQNTRW.mjs} +1 -3
  524. package/dist/client/chunk-L4J5Y62O.mjs +18 -0
  525. package/dist/client/{chunk-PUOELU4O.mjs → chunk-RJHTCTCZ.mjs} +550 -262
  526. package/dist/client/{chunk-AUJ5DBZJ.mjs → chunk-S3MKFGOG.mjs} +170 -28
  527. package/dist/client/{chunk-CE7IBGVW.mjs → chunk-SBBSMFFG.mjs} +1 -1
  528. package/dist/client/{chunk-4W66ALYT.mjs → chunk-U2EW7RSR.mjs} +1 -1
  529. package/dist/client/{chunk-PYRBIURC.mjs → chunk-WJFHDTYF.mjs} +17 -34
  530. package/dist/client/{chunk-T6UIP6UZ.mjs → chunk-ZF4XEWDM.mjs} +1 -1
  531. package/dist/client/client.mjs +13449 -9393
  532. package/dist/client/{courseRegistration-2EORROPS.mjs → courseRegistration-VUG2JJDB.mjs} +13 -12
  533. package/dist/client/{eventCalendar-WZI4VL6N.mjs → eventCalendar-E7D2LD4N.mjs} +14 -14
  534. package/dist/client/{eventCombined-QCB2TCNL.mjs → eventCombined-FUZ2Z3CS.mjs} +14 -14
  535. package/dist/client/{eventDetails-TFTATAPH.mjs → eventDetails-QRITJAOW.mjs} +9 -9
  536. package/dist/client/{eventListing-A2CQEHEQ.mjs → eventListing-INMQMJZ5.mjs} +14 -14
  537. package/dist/client/{eventRegistration-OELPVLUY.mjs → eventRegistration-TOOJD4WU.mjs} +17 -15
  538. package/dist/client/{form-NTIFD6WQ.mjs → form-BOWN7ZNQ.mjs} +3 -3
  539. package/dist/client/{headerSection-7TBNKCLA.mjs → headerSection-HFQNZOUU.mjs} +55 -14
  540. package/dist/client/hooks.mjs +26989 -25527
  541. package/dist/client/{locationMap-LRLB5A3H.mjs → locationMap-VUZGC7Y5.mjs} +2 -2
  542. package/dist/client/{newsletterForm-XI52RZSN.mjs → newsletterForm-X2XQTPCB.mjs} +3 -3
  543. package/dist/client/{productDetail-GSNKBFLY.mjs → productDetail-TA7D2G2B.mjs} +8 -7
  544. package/dist/client/{productList-BGCGT4KZ.mjs → productList-AZOLOZKM.mjs} +8 -7
  545. package/dist/client/rendering/client.mjs +5518 -3869
  546. package/dist/client/rendering/islands.mjs +32 -20
  547. package/dist/client/rendering.mjs +14494 -10485
  548. package/dist/client/{shop-RQHUCLNY.mjs → shop-ZDLO7IIG.mjs} +8 -7
  549. package/dist/client/spam-protection.mjs +3 -5
  550. package/dist/preview-next/client/runtime.css +1 -1
  551. package/dist/preview-next/client/runtime.mjs +5 -5
  552. package/dist/preview-next/constants.mjs +0 -2
  553. package/dist/preview-next/index.mjs +0 -2
  554. package/dist/{sdk-runtime-A4LHT2RS.mjs → sdk-runtime-CTWKNBDQ.mjs} +6 -6
  555. package/dist/{sdk-runtime-EEMNSB7J.css → sdk-runtime-JD4A6SU6.css} +1 -1
  556. package/dist/server/components.mjs +10475 -7369
  557. package/dist/server/config-validation.mjs +26616 -25360
  558. package/dist/server/config.mjs +26616 -25360
  559. package/dist/server/data.mjs +27048 -25586
  560. package/dist/server/index.mjs +109 -56
  561. package/dist/server/next.mjs +15424 -12076
  562. package/dist/server/page-converter.mjs +5570 -3107
  563. package/dist/server/prebuild.mjs +2 -1
  564. package/dist/server/rendering/server.mjs +10850 -7549
  565. package/dist/server/rendering.mjs +10855 -7554
  566. package/dist/server/routing.mjs +30134 -28531
  567. package/dist/server/server.mjs +27369 -25856
  568. package/dist/server/theme-bridge.mjs +902 -167
  569. package/dist/server/theme.mjs +197 -133
  570. package/dist/styles/index.css +606 -133
  571. package/package.json +16 -16
  572. package/dist/SdkPreviewModeRuntime-XE5M4UKM.mjs +0 -8
  573. package/dist/_dts/editor-blocks/src/block-editor/actionControlMode.d.ts +0 -2
  574. package/dist/_dts/preview-next/src/client/preview/previewSurface.d.ts +0 -3
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import { LeafletStaticMap } from './chunk-XSV6KW4D.mjs';
3
- import { MagicLinkForm, useWaitlistClaim } from './chunk-T6UIP6UZ.mjs';
4
- import { usePolling } from './chunk-VDS5YFLX.mjs';
5
- import { SpinnerNode } from './chunk-CE7IBGVW.mjs';
3
+ import { MagicLinkForm, useWaitlistClaim } from './chunk-ZF4XEWDM.mjs';
4
+ import { usePolling } from './chunk-CSZGLBYR.mjs';
5
+ import { SpinnerNode } from './chunk-SBBSMFFG.mjs';
6
6
  import { useDiscountCodeUi } from './chunk-ZFHRN6W2.mjs';
7
- import { TabBarFragment, logoutPortal, StepIndicator, DiscountCodeDisclosure, TerminalPanel, StateIcon, formatPrice, CrossIcon, ClockIcon, consumeSearchParam, LoggedInAsUser, CheckIcon } from './chunk-Y37KDO7P.mjs';
7
+ import { createBodyThemePortalRoot, TabBarFragment, logoutPortal, StepIndicator, DiscountCodeDisclosure, TerminalPanel, StateIcon, formatPrice, CrossIcon, ClockIcon, consumeSearchParam, LoggedInAsUser, CheckIcon } from './chunk-CHAB5ACD.mjs';
8
8
  import { getFieldValidationControlProps, FieldValidationMessage } from './chunk-3DCJ45Z2.mjs';
9
- import { ModalShell } from './chunk-3PEDD5KJ.mjs';
10
- import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-YLMKMCSJ.mjs';
9
+ import { ModalShell } from './chunk-DVNUDUVT.mjs';
10
+ import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-GFSQNTRW.mjs';
11
11
  import { useBlockApi, FeedbackMessage } from './chunk-UDNSI5PY.mjs';
12
- import { buildEventCalendarListingRender, getWeekCalendarDays, formatCalendarTitle, groupEventsByDate, getOrderedDayNames, getMonthCalendarDays, formatDateKey, themeButtonClassName, normalizeEventBlockKind, EventCompactRow, EmptyState, getContainerClass, getCardOrientation, addMonths, getThreeMonthRange, isToday, MAX_EVENTS_PER_DAY, formatTime, resolveCoursePricingState, formatEventDateParts, formatCoursePriceAmount, DateTimeTile, normalizeIdList, EventCard, buildTimetableModel, formatDate, isEventContentType, formatCoursePriceDisplay, MONTH_NAMES, formatEventPrice, getEventAvailability, formatEventTeacherLine, CreditCard, Ticket, Star, Sparkles, assertNever11 } from './chunk-PUOELU4O.mjs';
13
- import { getBookingLocalDateKey, toScheduledBookingDateTime, toBookingTimeZone, formatBookingDateTime, formatBookingDate, formatBookingTime } from './chunk-AUJ5DBZJ.mjs';
14
- import { createContext, useId, useMemo, useState, useRef, useEffect, useCallback, useContext, useReducer } from 'react';
12
+ import { buildEventRuntimeFilters, buildEventCalendarListingRender, groupEventsByDate, getOrderedDayNames, formatDateKey, getEventRuntimeFiltersKey, themeButtonClassName, normalizeCsvIds, normalizeOptionalId, normalizeEventBlockKind, normalizeCsvString, EventCompactRow, EmptyState, getContainerClass, getCardOrientation, isToday, MAX_EVENTS_PER_DAY, formatTime, resolveCoursePricingState, formatEventPrice, formatEventDateParts, DateTimeTile, EventCard, buildCalendarViewport, shiftCalendarAnchorDate, addMonths, getThreeMonthRange, buildTimetableModel, formatDate, isEventContentType, formatCoursePriceAmount, formatCoursePriceDisplay, MONTH_NAMES, getEventAvailability, formatEventTeacherLine, CreditCard, Ticket, Star, Sparkles, assertNever11 } from './chunk-RJHTCTCZ.mjs';
13
+ import { publicEventPricingType, getBookingLocalDateKey, toScheduledBookingDateTime, toBookingTimeZone, publicEventPricingCurrency, formatBookingDateTime, publicEventPricingMode, publicEventScalarPrice, publicEventTicketTypes, formatBookingDate, formatBookingTime } from './chunk-S3MKFGOG.mjs';
14
+ import React9, { createContext, useId, useMemo, useState, useRef, useEffect, useCallback, useContext, useReducer } from 'react';
15
15
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
16
16
 
17
17
  function StepIndicator2(props) {
@@ -281,12 +281,15 @@ function getTicketTypeAvailabilityLabel(ticketType) {
281
281
  }
282
282
  function getVisibleTicketTypes(input) {
283
283
  const eligibilityTicketTypes = input.eligibility?.ticketTypes;
284
- const eventTicketTypes = input.event?.ticketTypes;
285
- const source = eligibilityTicketTypes && eligibilityTicketTypes.length > 0 ? eligibilityTicketTypes : eventTicketTypes ?? [];
284
+ const eventTicketTypes = input.event ? publicEventTicketTypes(input.event.pricing) : [];
285
+ const source = eligibilityTicketTypes && eligibilityTicketTypes.length > 0 ? eligibilityTicketTypes : eventTicketTypes;
286
286
  return source.filter(
287
287
  (ticketType) => ticketType.isActive && (!input.selectedAttendanceMode || (ticketType.attendanceScope ?? "both") === "both" || (ticketType.attendanceScope ?? "both") === input.selectedAttendanceMode)
288
288
  );
289
289
  }
290
+ function getImplicitSingleAvailableTicketType(ticketTypes) {
291
+ return ticketTypes.length === 1 && ticketTypes[0]?.availability.kind === "available" ? ticketTypes[0] : null;
292
+ }
290
293
  function findSelectedTicketType(input) {
291
294
  if (!input.selectedTicketTypeId) {
292
295
  return null;
@@ -668,6 +671,13 @@ function cleanupStaleRegistrations() {
668
671
  console.warn("[sessionStorage] Cleanup failed:", error);
669
672
  }
670
673
  }
674
+ function getEventSelectionMode(events) {
675
+ const firstSeriesId = events[0]?.seriesId;
676
+ if (events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)) {
677
+ return "date";
678
+ }
679
+ return "event";
680
+ }
671
681
  var EventSelectionStep = ({
672
682
  events,
673
683
  selectedEvent,
@@ -675,8 +685,10 @@ var EventSelectionStep = ({
675
685
  showVenue,
676
686
  showCapacity
677
687
  }) => {
688
+ const selectionMode = getEventSelectionMode(events);
689
+ const isDateSelection = selectionMode === "date";
678
690
  return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
679
- /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Select an Event" }),
691
+ /* @__PURE__ */ jsx("h3", { className: "er-title", children: isDateSelection ? "Choose a date" : "Select an event" }),
680
692
  /* @__PURE__ */ jsx("div", { className: "er-event-grid", children: events.map((event) => {
681
693
  const isSelected = selectedEvent?.publicEventId === event.publicEventId;
682
694
  const isSoldOut = event.capacity !== null && event.availableSpots === 0;
@@ -702,19 +714,18 @@ var EventSelectionStep = ({
702
714
  onClick: () => !isUnavailable && onSelect(event),
703
715
  disabled: isUnavailable,
704
716
  className: cardClasses,
705
- children: /* @__PURE__ */ jsxs("div", { className: "er-row er-row--between", children: [
706
- /* @__PURE__ */ jsxs("div", { children: [
707
- /* @__PURE__ */ jsx("h4", { className: "er-event-title", children: event.title }),
717
+ children: /* @__PURE__ */ jsxs("div", { className: "er-event-option", children: [
718
+ /* @__PURE__ */ jsxs("div", { className: "er-event-option-main", children: [
719
+ /* @__PURE__ */ jsx("h4", { className: "er-event-title", children: isDateSelection ? formatDate2(event.startsAt, { timeZone }) : event.title }),
708
720
  /* @__PURE__ */ jsxs("p", { className: "er-text er-text--muted", children: [
709
- formatDate2(event.startsAt, { timeZone }),
710
- " ",
711
- "at",
712
- " ",
713
- formatTime2(event.startsAt, { timeZone })
714
- ] }),
715
- showVenue && event.venue && /* @__PURE__ */ jsx("p", { className: "er-text er-text--faint", children: event.venue.name })
721
+ isDateSelection ? formatTime2(event.startsAt, { timeZone }) : `${formatDate2(event.startsAt, { timeZone })} at ${formatTime2(event.startsAt, { timeZone })}`,
722
+ showVenue && event.venue && /* @__PURE__ */ jsxs(Fragment, { children: [
723
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }),
724
+ event.venue.name
725
+ ] })
726
+ ] })
716
727
  ] }),
717
- showCapacity && event.capacity !== null && /* @__PURE__ */ jsx("span", { className: badgeClasses, children: canJoinWaitlist ? "Waitlist" : isUnavailable ? "Sold Out" : `${event.availableSpots} spots left` })
728
+ showCapacity && event.capacity !== null && /* @__PURE__ */ jsx("span", { className: badgeClasses, children: canJoinWaitlist ? "Waitlist" : isUnavailable ? "Sold Out" : `${event.availableSpots ?? 0} spots left` })
718
729
  ] })
719
730
  },
720
731
  event.publicEventId
@@ -732,7 +743,7 @@ function getEventAttendanceModeLabel(mode) {
732
743
  }
733
744
  function TicketCounter(props) {
734
745
  const { ticketsCount, maxAllowed, onTicketsChange } = props;
735
- return /* @__PURE__ */ jsxs("div", { className: "er-row", children: [
746
+ return /* @__PURE__ */ jsxs("div", { className: "er-row er-counter", children: [
736
747
  /* @__PURE__ */ jsx(
737
748
  "button",
738
749
  {
@@ -756,6 +767,24 @@ function TicketCounter(props) {
756
767
  )
757
768
  ] });
758
769
  }
770
+ function TicketCounterLimit(props) {
771
+ return /* @__PURE__ */ jsxs("p", { className: "er-ticket-counter-limit", children: [
772
+ /* @__PURE__ */ jsx("span", { children: props.maximumLabel }),
773
+ props.availabilityLabel ? /* @__PURE__ */ jsxs(Fragment, { children: [
774
+ /* @__PURE__ */ jsx("br", {}),
775
+ /* @__PURE__ */ jsx("span", { children: props.availabilityLabel })
776
+ ] }) : null
777
+ ] });
778
+ }
779
+ function getTicketTypeCounterAvailabilityLabel(input) {
780
+ if (input.selectedRemainingCapacity !== null) {
781
+ return `${input.selectedRemainingCapacity} remaining for this ticket type`;
782
+ }
783
+ if (input.eventAvailableSpots != null) {
784
+ return `${input.eventAvailableSpots} spots available`;
785
+ }
786
+ return null;
787
+ }
759
788
  function getAttendanceModeDetail(attendanceMode) {
760
789
  if (attendanceMode.availableSpots === null) {
761
790
  return "Unlimited spots";
@@ -819,14 +848,19 @@ var TicketSelectionStep = ({
819
848
  const waitlistEnabled = selectedModeAvailability?.waitlistEnabled ?? event?.waitlistEnabled ?? false;
820
849
  const isSoldOut = availableSpots === 0;
821
850
  const canJoinWaitlist = isSoldOut && waitlistEnabled === true;
822
- const usesTicketTypes = event?.pricingMode === "ticket_types" && !canJoinWaitlist;
851
+ const eventPricingMode = event ? publicEventPricingMode(event.pricing) : void 0;
852
+ const eventPricingCurrency = event ? publicEventPricingCurrency(event.pricing) : null;
853
+ const usesTicketTypes = eventPricingMode === "ticket_types" && !canJoinWaitlist;
823
854
  const visibleTicketTypes = usesTicketTypes ? getVisibleTicketTypes({
824
855
  event,
825
856
  eligibility: null,
826
857
  selectedAttendanceMode
827
858
  }) : [];
828
859
  const selectedTicketType = usesTicketTypes ? visibleTicketTypes.find((ticketType) => ticketType.id === selectedTicketTypeId) ?? null : null;
829
- const selectedRemainingCapacity = selectedTicketType?.availability.remainingCapacity ?? null;
860
+ const implicitTicketType = usesTicketTypes ? getImplicitSingleAvailableTicketType(visibleTicketTypes) : null;
861
+ const effectiveSelectedTicketType = selectedTicketType ?? implicitTicketType;
862
+ const shouldShowTicketTypeTiles = usesTicketTypes && implicitTicketType === null;
863
+ const selectedRemainingCapacity = effectiveSelectedTicketType?.availability.remainingCapacity ?? null;
830
864
  const noSellableTicketTypes = usesTicketTypes && (visibleTicketTypes.length === 0 || visibleTicketTypes.every((ticketType) => ticketType.availability.kind === "unavailable"));
831
865
  const maxAllowed = getMaxAllowedTicketCount({
832
866
  canJoinWaitlist,
@@ -834,8 +868,13 @@ var TicketSelectionStep = ({
834
868
  maxTickets,
835
869
  availableSpots,
836
870
  selectedTicketTypeRemainingCapacity: selectedRemainingCapacity,
837
- hasSelectedTicketType: selectedTicketType !== null
871
+ hasSelectedTicketType: effectiveSelectedTicketType !== null
838
872
  });
873
+ const selectedTicketTypeAvailabilityLabel = getTicketTypeCounterAvailabilityLabel({
874
+ selectedRemainingCapacity,
875
+ eventAvailableSpots: event?.availableSpots
876
+ });
877
+ const eventAvailabilityLabel = !canJoinWaitlist && event?.availableSpots != null ? `${event.availableSpots} spots available` : null;
839
878
  if (deliveryMode === "hybrid" && !selectedAttendanceMode) {
840
879
  return /* @__PURE__ */ jsxs("div", { className: "er-stack", children: [
841
880
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "How will you attend?" }),
@@ -869,30 +908,53 @@ var TicketSelectionStep = ({
869
908
  )
870
909
  ] }) : null,
871
910
  usesTicketTypes ? /* @__PURE__ */ jsxs(Fragment, { children: [
872
- /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Choose a ticket type" }),
873
- /* @__PURE__ */ jsx("div", { className: "er-payment-tiles", role: "list", "aria-label": "Ticket types", children: visibleTicketTypes.map((ticketType) => {
874
- const availabilityLabel = getTicketTypeAvailabilityLabel(ticketType);
875
- const disabled = ticketType.availability.kind === "unavailable";
876
- const isSelected = selectedTicketTypeId === ticketType.id;
877
- const priceLabel = ticketType.priceAmount > 0 ? formatPrice(ticketType.priceAmount, event?.currency ?? DEFAULT_EVENT_CURRENCY) : "Free";
878
- return /* @__PURE__ */ jsx("div", { role: "listitem", children: /* @__PURE__ */ jsxs(
879
- "button",
880
- {
881
- type: "button",
882
- className: `er-payment-tile${isSelected && !disabled ? " er-payment-tile--selected" : ""}${disabled ? " er-payment-tile--disabled" : ""}`,
883
- disabled,
884
- onClick: () => onTicketTypeChange?.(ticketType.id),
885
- children: [
886
- /* @__PURE__ */ jsx("div", { className: "er-payment-tile-label", children: ticketType.name }),
887
- /* @__PURE__ */ jsx("div", { className: "er-payment-tile-detail", children: priceLabel }),
888
- ticketType.description ? /* @__PURE__ */ jsx("div", { className: "er-payment-tile-detail", children: ticketType.description }) : null,
889
- availabilityLabel ? /* @__PURE__ */ jsx("div", { className: "er-payment-tile-detail", children: availabilityLabel }) : null
890
- ]
891
- }
892
- ) }, ticketType.id);
893
- }) }),
894
- noSellableTicketTypes ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." }) : !selectedTicketType ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "Select one ticket type to continue." }) : selectedTicketType.availability.kind === "unavailable" ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: getTicketTypeAvailabilityLabel(selectedTicketType) ?? "This ticket type is unavailable." }) : /* @__PURE__ */ jsxs(Fragment, { children: [
911
+ shouldShowTicketTypeTiles ? /* @__PURE__ */ jsxs(Fragment, { children: [
912
+ /* @__PURE__ */ jsx("h3", { className: "er-title", children: "Choose a ticket type" }),
913
+ /* @__PURE__ */ jsx("div", { className: "er-payment-tiles", role: "list", "aria-label": "Ticket types", children: visibleTicketTypes.map((ticketType) => {
914
+ const availabilityLabel = getTicketTypeAvailabilityLabel(ticketType);
915
+ const disabled = ticketType.availability.kind === "unavailable";
916
+ const isSelected = selectedTicketTypeId === ticketType.id;
917
+ const priceLabel = ticketType.priceAmount > 0 ? formatPrice(ticketType.priceAmount, eventPricingCurrency ?? DEFAULT_EVENT_CURRENCY) : "Free";
918
+ return /* @__PURE__ */ jsx("div", { role: "listitem", children: /* @__PURE__ */ jsxs(
919
+ "button",
920
+ {
921
+ type: "button",
922
+ className: `er-payment-tile${isSelected && !disabled ? " er-payment-tile--selected" : ""}${disabled ? " er-payment-tile--disabled" : ""}`,
923
+ disabled,
924
+ onClick: () => onTicketTypeChange?.(ticketType.id),
925
+ children: [
926
+ /* @__PURE__ */ jsx("div", { className: "er-payment-tile-label", children: ticketType.name }),
927
+ /* @__PURE__ */ jsx("div", { className: "er-payment-tile-detail", children: priceLabel }),
928
+ ticketType.description ? /* @__PURE__ */ jsx("div", { className: "er-payment-tile-detail", children: ticketType.description }) : null,
929
+ availabilityLabel ? /* @__PURE__ */ jsx("div", { className: "er-payment-tile-detail", children: availabilityLabel }) : null
930
+ ]
931
+ }
932
+ ) }, ticketType.id);
933
+ }) })
934
+ ] }) : null,
935
+ noSellableTicketTypes ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "No ticket types are currently available." }) : !effectiveSelectedTicketType ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "Select one ticket type to continue." }) : effectiveSelectedTicketType.availability.kind === "unavailable" ? /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: getTicketTypeAvailabilityLabel(effectiveSelectedTicketType) ?? "This ticket type is unavailable." }) : /* @__PURE__ */ jsxs(Fragment, { children: [
895
936
  /* @__PURE__ */ jsx("h3", { className: "er-title", children: "How many tickets?" }),
937
+ /* @__PURE__ */ jsxs("div", { className: "er-ticket-counter-group", children: [
938
+ /* @__PURE__ */ jsx(
939
+ TicketCounter,
940
+ {
941
+ ticketsCount,
942
+ maxAllowed,
943
+ onTicketsChange
944
+ }
945
+ ),
946
+ /* @__PURE__ */ jsx(
947
+ TicketCounterLimit,
948
+ {
949
+ maximumLabel: `${maxAllowed} tickets maximum`,
950
+ availabilityLabel: selectedTicketTypeAvailabilityLabel
951
+ }
952
+ )
953
+ ] })
954
+ ] })
955
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
956
+ /* @__PURE__ */ jsx("h3", { className: "er-title", children: canJoinWaitlist ? "How many waitlist spots?" : "How many tickets?" }),
957
+ /* @__PURE__ */ jsxs("div", { className: "er-ticket-counter-group", children: [
896
958
  /* @__PURE__ */ jsx(
897
959
  TicketCounter,
898
960
  {
@@ -901,29 +963,13 @@ var TicketSelectionStep = ({
901
963
  onTicketsChange
902
964
  }
903
965
  ),
904
- /* @__PURE__ */ jsxs("p", { className: "er-text er-text--muted", children: [
905
- maxAllowed,
906
- " tickets maximum",
907
- selectedRemainingCapacity !== null ? ` (${selectedRemainingCapacity} remaining for this ticket type)` : "",
908
- selectedRemainingCapacity === null && event?.availableSpots != null ? ` (${event.availableSpots} spots available)` : ""
909
- ] })
910
- ] })
911
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
912
- /* @__PURE__ */ jsx("h3", { className: "er-title", children: canJoinWaitlist ? "How many waitlist spots?" : "How many tickets?" }),
913
- /* @__PURE__ */ jsx(
914
- TicketCounter,
915
- {
916
- ticketsCount,
917
- maxAllowed,
918
- onTicketsChange
919
- }
920
- ),
921
- /* @__PURE__ */ jsxs("p", { className: "er-text er-text--muted", children: [
922
- maxAllowed,
923
- " ",
924
- canJoinWaitlist ? "waitlist spots" : "tickets",
925
- " maximum",
926
- !canJoinWaitlist && event?.availableSpots != null && ` (${event.availableSpots} spots available)`
966
+ /* @__PURE__ */ jsx(
967
+ TicketCounterLimit,
968
+ {
969
+ maximumLabel: `${maxAllowed} ${canJoinWaitlist ? "waitlist spots" : "tickets"} maximum`,
970
+ availabilityLabel: eventAvailabilityLabel
971
+ }
972
+ )
927
973
  ] })
928
974
  ] }),
929
975
  canJoinWaitlist && /* @__PURE__ */ jsx("p", { className: "er-text er-text--muted", children: "This event is currently full. Continue to join the waitlist if a spot opens up." })
@@ -1791,8 +1837,8 @@ function EventRegistrationSummaryBar(props) {
1791
1837
  const summaryTimeZone = wizard.occurrenceContext?.timeZone ?? summaryEvent?.timeZone ?? null;
1792
1838
  const occurrenceOverrideTitle = wizard.occurrenceContext?.overrides?.title;
1793
1839
  const summaryTitle = occurrenceOverrideTitle ?? summaryEvent?.title ?? "";
1794
- const summaryPrice = wizard.selectedTicketType?.priceAmount ?? wizard.eligibility?.price ?? summaryEvent?.price ?? 0;
1795
- const summaryCurrency = summaryEvent?.currency ?? DEFAULT_EVENT_CURRENCY;
1840
+ const summaryPrice = wizard.selectedTicketType?.priceAmount ?? wizard.eligibility?.price ?? (summaryEvent ? publicEventScalarPrice(summaryEvent.pricing) : null) ?? 0;
1841
+ const summaryCurrency = (summaryEvent ? publicEventPricingCurrency(summaryEvent.pricing) : null) ?? DEFAULT_EVENT_CURRENCY;
1796
1842
  const teamMemberNames = (summaryEvent?.teamMembers ?? []).map((teamMember) => teamMember.name).filter(Boolean);
1797
1843
  const subtotalCents = Math.max(0, summaryPrice * wizard.ticketsCount);
1798
1844
  const autoAppliedDiscount = wizard.discountCode.trim().length > 0 ? null : wizard.autoAppliedDiscount;
@@ -2139,7 +2185,7 @@ function resolveEventRequiresPayment(input) {
2139
2185
  if (!input.event) {
2140
2186
  return false;
2141
2187
  }
2142
- return input.event.pricingType !== "free";
2188
+ return publicEventPricingType(input.event.pricing) !== "free";
2143
2189
  }
2144
2190
  function resolveDiscountContext(input) {
2145
2191
  const selection = input.paymentSelection.method ? input.paymentSelection : null;
@@ -2171,8 +2217,7 @@ function toRegistrationEvent(event) {
2171
2217
  return {
2172
2218
  ...event,
2173
2219
  publicEventId: event.id,
2174
- registrationOccurrenceId: event.occurrenceId,
2175
- ticketTypes: event.ticketTypes ?? []
2220
+ registrationOccurrenceId: event.occurrenceId
2176
2221
  };
2177
2222
  }
2178
2223
  function toRegistrationEvents(events) {
@@ -2397,7 +2442,7 @@ function useEventRegistrationWizard(options) {
2397
2442
  );
2398
2443
  const ticketTypeSelectionRequired = useMemo(() => {
2399
2444
  const event = selectedEvent ?? preSelectedEvent;
2400
- if (!event || event.pricingMode !== "ticket_types") {
2445
+ if (!event || publicEventPricingMode(event.pricing) !== "ticket_types") {
2401
2446
  return false;
2402
2447
  }
2403
2448
  if ((event.deliveryMode ?? "in_person") === "hybrid" && !selectedAttendanceMode) {
@@ -2412,12 +2457,17 @@ function useEventRegistrationWizard(options) {
2412
2457
  );
2413
2458
  useEffect(() => {
2414
2459
  const event = selectedEvent ?? preSelectedEvent;
2415
- if (!event || event.pricingMode !== "ticket_types") {
2460
+ if (!event || publicEventPricingMode(event.pricing) !== "ticket_types") {
2416
2461
  if (selectedTicketTypeId !== null) {
2417
2462
  setSelectedTicketTypeId(null);
2418
2463
  }
2419
2464
  return;
2420
2465
  }
2466
+ const implicitTicketType = getImplicitSingleAvailableTicketType(visibleTicketTypes);
2467
+ if (implicitTicketType && selectedTicketTypeId !== implicitTicketType.id) {
2468
+ setSelectedTicketTypeId(implicitTicketType.id);
2469
+ return;
2470
+ }
2421
2471
  if (selectedTicketTypeId && !visibleTicketTypes.some((ticketType) => ticketType.id === selectedTicketTypeId)) {
2422
2472
  setSelectedTicketTypeId(null);
2423
2473
  }
@@ -2527,7 +2577,7 @@ function useEventRegistrationWizard(options) {
2527
2577
  const discountSubtotalCents = useMemo(() => {
2528
2578
  if (discountContext?.type !== "event") return void 0;
2529
2579
  const event = selectedEvent ?? preSelectedEvent;
2530
- const eventPriceCents = selectedTicketType?.priceAmount ?? eligibility?.price ?? event?.price ?? 0;
2580
+ const eventPriceCents = selectedTicketType?.priceAmount ?? eligibility?.price ?? (event ? publicEventScalarPrice(event.pricing) : null) ?? 0;
2531
2581
  return Math.max(0, eventPriceCents * ticketsCount);
2532
2582
  }, [discountContext, selectedTicketType, eligibility, selectedEvent, preSelectedEvent, ticketsCount]);
2533
2583
  const discountUi = useDiscountCodeUi({ api, discountContext, subtotalCents: discountSubtotalCents });
@@ -2664,6 +2714,13 @@ var EVENT_PORTAL_AUTH_COPY = {
2664
2714
  buttonText: "Email me a login link to continue \u2192"
2665
2715
  }
2666
2716
  };
2717
+ function EventPortalAuthPrompt(props) {
2718
+ return /* @__PURE__ */ jsxs("div", { className: "er-portal-auth", children: [
2719
+ /* @__PURE__ */ jsx("p", { className: "er-portal-auth-title", children: props.copy.title }),
2720
+ /* @__PURE__ */ jsx("p", { className: "er-portal-auth-text", children: props.copy.description }),
2721
+ /* @__PURE__ */ jsx("button", { type: "button", className: "er-portal-auth-link", onClick: props.onRequestLogin, children: props.copy.buttonText })
2722
+ ] });
2723
+ }
2667
2724
  function EventRegistrationWizard(props) {
2668
2725
  const {
2669
2726
  occurrenceContext,
@@ -2714,10 +2771,11 @@ function EventRegistrationWizard(props) {
2714
2771
  ]
2715
2772
  );
2716
2773
  const totalSteps = activeWizardSteps.length;
2774
+ const eventSelectionStepLabel = getEventSelectionMode(wizard.scopedEvents) === "date" ? "Date" : "Event";
2717
2775
  const stepLabels = activeWizardSteps.map((s) => {
2718
2776
  switch (s) {
2719
2777
  case "select-event":
2720
- return "Event";
2778
+ return eventSelectionStepLabel;
2721
2779
  case "select-tickets":
2722
2780
  return "Tickets";
2723
2781
  case "enter-details":
@@ -2736,16 +2794,24 @@ function EventRegistrationWizard(props) {
2736
2794
  });
2737
2795
  const currentStepNumber = getStepNumber(wizard.step, activeWizardSteps);
2738
2796
  const summaryEvent = wizard.selectedEvent ?? wizard.preSelectedEvent;
2797
+ const summaryEventPricingType = summaryEvent ? publicEventPricingType(summaryEvent.pricing) : "free";
2739
2798
  const waitlistClaimRequiresPortalLogin = wizard.waitlistClaim.requiresPortalLogin && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking";
2740
2799
  const portalAuthCopy = waitlistClaimRequiresPortalLogin ? {
2741
2800
  ...EVENT_PORTAL_AUTH_COPY["waitlist-claim"],
2742
2801
  description: wizard.waitlistClaim.loginMessage ?? "Log in to continue with your waitlist claim."
2743
2802
  } : EVENT_PORTAL_AUTH_COPY.membership;
2744
- const showPortalAuthSidebar = waitlistClaimRequiresPortalLogin || wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && summaryEvent?.pricingType !== "free" && wizard.step !== "select-event";
2803
+ const showPortalAuthPrompt = waitlistClaimRequiresPortalLogin || wizard.step === "select-tickets" && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && summaryEventPricingType !== "free";
2745
2804
  return /* @__PURE__ */ jsx("div", { id: EVENT_REGISTRATION_ANCHOR_ID, className: `event-registration ${className || ""}`, "data-block": "event-registration", children: /* @__PURE__ */ jsxs("div", { className: "er-container", children: [
2746
- isWizardStep && /* @__PURE__ */ jsxs("div", { className: `er-payment-layout ${!showPortalAuthSidebar ? "er-payment-layout--no-sidebar" : ""}`, children: [
2805
+ isWizardStep && /* @__PURE__ */ jsxs("div", { className: "er-payment-layout er-payment-layout--no-sidebar", children: [
2747
2806
  /* @__PURE__ */ jsxs("div", { className: "er-payment-layout-main", children: [
2748
2807
  totalSteps > 1 && /* @__PURE__ */ jsx(StepIndicator2, { currentStep: currentStepNumber, totalSteps, stepLabels }),
2808
+ showPortalAuthPrompt && /* @__PURE__ */ jsx(
2809
+ EventPortalAuthPrompt,
2810
+ {
2811
+ copy: portalAuthCopy,
2812
+ onRequestLogin: () => wizard.setShowMagicLinkModal(true)
2813
+ }
2814
+ ),
2749
2815
  /* @__PURE__ */ jsx(
2750
2816
  EventRegistrationWizardContent,
2751
2817
  {
@@ -2756,11 +2822,6 @@ function EventRegistrationWizard(props) {
2756
2822
  }
2757
2823
  )
2758
2824
  ] }),
2759
- showPortalAuthSidebar && /* @__PURE__ */ jsx("div", { className: "er-payment-layout-sidebar", children: /* @__PURE__ */ jsxs("div", { className: "er-portal-auth", children: [
2760
- /* @__PURE__ */ jsx("p", { className: "er-portal-auth-title", children: portalAuthCopy.title }),
2761
- /* @__PURE__ */ jsx("p", { className: "er-portal-auth-text", children: portalAuthCopy.description }),
2762
- /* @__PURE__ */ jsx("button", { type: "button", className: "er-portal-auth-link", onClick: () => wizard.setShowMagicLinkModal(true), children: portalAuthCopy.buttonText })
2763
- ] }) }),
2764
2825
  wizard.showMagicLinkModal && /* @__PURE__ */ jsx("div", { className: "er-modal-overlay", onClick: () => wizard.setShowMagicLinkModal(false), children: /* @__PURE__ */ jsxs("div", { className: "er-modal", onClick: (e) => e.stopPropagation(), children: [
2765
2826
  /* @__PURE__ */ jsx(
2766
2827
  "button",
@@ -3024,10 +3085,12 @@ function EventDetailsView({
3024
3085
  priceCents: selected.course.priceCents,
3025
3086
  currency: selected.course.currency
3026
3087
  }) : null;
3027
- const isPaid = selected.pricingType === "paid";
3028
- const eventPrice = selected.price ?? null;
3088
+ const eventPricingType = publicEventPricingType(selected.pricing);
3089
+ const eventPricingCurrency = publicEventPricingCurrency(selected.pricing) ?? "USD";
3090
+ const isPaid = eventPricingType === "paid";
3029
3091
  const shouldShowCoursePricing = showCost && !isDropIn && coursePricing !== null;
3030
3092
  const shouldShowEventCost = showCost && isPaid && !isDropIn && coursePricing === null;
3093
+ const eventCostLabel = shouldShowEventCost ? formatEventPrice(selected) : null;
3031
3094
  const acceptedItems = [];
3032
3095
  if (showAcceptedPasses) {
3033
3096
  acceptedItems.push(...applicablePasses.map((p) => p.name));
@@ -3082,8 +3145,8 @@ function EventDetailsView({
3082
3145
  }
3083
3146
  ) : shouldShowEventCost ? /* @__PURE__ */ jsxs("div", { className: "rb-mt-6", children: [
3084
3147
  /* @__PURE__ */ jsx("div", { className: "rb-label rb-mb-2", children: "Cost" }),
3085
- eventPrice !== null ? /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("strong", { children: formatCoursePriceAmount(eventPrice, selected.currency ?? "USD") }) }) : /* @__PURE__ */ jsx("p", { className: "rb-caption status-muted", children: "See checkout for details" }),
3086
- autoApplyDiscount ? /* @__PURE__ */ jsx("p", { className: "rb-caption rb-mt-1", children: formatAutoApplyDiscountLine(autoApplyDiscount, selected.currency ?? "USD") }) : null,
3148
+ /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("strong", { children: eventCostLabel }) }),
3149
+ autoApplyDiscount ? /* @__PURE__ */ jsx("p", { className: "rb-caption rb-mt-1", children: formatAutoApplyDiscountLine(autoApplyDiscount, eventPricingCurrency) }) : null,
3087
3150
  hasAcceptedItems ? /* @__PURE__ */ jsxs("p", { className: "rb-caption rb-mt-1", children: [
3088
3151
  "You can also attend with: ",
3089
3152
  acceptedItems.join(", ")
@@ -3355,9 +3418,7 @@ var EventPaginatedListView = ({
3355
3418
  error,
3356
3419
  hasMore,
3357
3420
  loadMore,
3358
- paginationMode = "loadMore",
3359
- seeAllUrl,
3360
- loadMoreText,
3421
+ paginationAction,
3361
3422
  hasActiveFilters,
3362
3423
  onResetFilters,
3363
3424
  resetFiltersText
@@ -3397,7 +3458,7 @@ var EventPaginatedListView = ({
3397
3458
  }
3398
3459
  )
3399
3460
  ] }) : null,
3400
- paginationMode === "loadMore" && hasMore && !error ? /* @__PURE__ */ jsx("div", { className: "rb-mt-8 rb-text-center", children: /* @__PURE__ */ jsx(
3461
+ paginationAction.kind === "loadMore" && hasMore && !error ? /* @__PURE__ */ jsx("div", { className: "rb-mt-8 rb-text-center", children: /* @__PURE__ */ jsx(
3401
3462
  "button",
3402
3463
  {
3403
3464
  type: "button",
@@ -3408,18 +3469,18 @@ var EventPaginatedListView = ({
3408
3469
  size: "md",
3409
3470
  extraClassName: loading ? "rb-opacity-50 rb-cursor-wait" : null
3410
3471
  }),
3411
- children: loading ? "Loading..." : loadMoreText
3472
+ children: loading ? "Loading..." : paginationAction.label
3412
3473
  }
3413
3474
  ) }) : null,
3414
- paginationMode === "seeAllLink" && seeAllUrl && hasMore ? /* @__PURE__ */ jsx("div", { className: "rb-mt-8 rb-text-center", children: /* @__PURE__ */ jsx(
3475
+ paginationAction.kind === "seeAllLink" && hasMore ? /* @__PURE__ */ jsx("div", { className: "rb-mt-8 rb-text-center", children: /* @__PURE__ */ jsx(
3415
3476
  "a",
3416
3477
  {
3417
- href: seeAllUrl,
3478
+ href: paginationAction.href,
3418
3479
  className: themeButtonClassName({
3419
3480
  variant: display.buttonVariant,
3420
3481
  size: "md"
3421
3482
  }),
3422
- children: loadMoreText
3483
+ children: paginationAction.label
3423
3484
  }
3424
3485
  ) }) : null
3425
3486
  ] }),
@@ -3449,41 +3510,9 @@ var EventPaginatedListView = ({
3449
3510
  }
3450
3511
  );
3451
3512
  };
3452
-
3453
- // ../blocks/src/system/runtime/hooks/utils/normalize.ts
3454
- function normalizeOptionalId(value) {
3455
- const trimmed = typeof value === "string" ? value.trim() : void 0;
3456
- return trimmed ? trimmed : void 0;
3457
- }
3458
- function normalizeCsvIds(value) {
3459
- if (!value) return [];
3460
- const parts = Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : typeof value === "string" ? value.split(",") : [];
3461
- return normalizeIdList(parts);
3462
- }
3463
- function normalizeCsvString(value) {
3464
- const ids = normalizeCsvIds(value);
3465
- return ids.length > 0 ? ids.join(",") : void 0;
3466
- }
3467
-
3468
- // ../blocks/src/system/runtime/hooks/useEventPagination.ts
3469
3513
  function getEventIdentity(event) {
3470
3514
  return event.occurrenceId || event.id;
3471
3515
  }
3472
- function getFiltersKey(filters) {
3473
- const categoryIds = normalizeCsvString(filters?.categoryIds);
3474
- const staffMemberId = normalizeOptionalId(filters?.staffMemberId);
3475
- const venueId = normalizeOptionalId(filters?.venueId);
3476
- const eventPresets = normalizeCsvString(filters?.eventPresets);
3477
- return JSON.stringify({
3478
- categoryIds,
3479
- staffMemberId,
3480
- venueId,
3481
- kind: filters?.kind ?? null,
3482
- eventSurface: filters?.eventSurface ?? null,
3483
- eventPresets,
3484
- scheduleScope: filters?.scheduleScope ?? null
3485
- });
3486
- }
3487
3516
  function getEventsKey(events) {
3488
3517
  return events.map((e) => `${getEventIdentity(e)}:${e.startsAt}`).join("|");
3489
3518
  }
@@ -3498,8 +3527,8 @@ function useEventPagination({
3498
3527
  stage
3499
3528
  }) {
3500
3529
  const { getPublicEvents } = useBlockApi();
3501
- const initialFiltersKey = getFiltersKey(initialFilters);
3502
- const filtersKey = getFiltersKey(filters);
3530
+ const initialFiltersKey = getEventRuntimeFiltersKey(initialFilters);
3531
+ const filtersKey = getEventRuntimeFiltersKey(filters);
3503
3532
  const filtersMatchInitial = filtersKey === initialFiltersKey;
3504
3533
  const initialEventsKey = useMemo(() => getEventsKey(initialEvents), [initialEvents]);
3505
3534
  const initialEventsRef = useRef(initialEvents);
@@ -3935,14 +3964,14 @@ var EventListingController = ({
3935
3964
  [display.events]
3936
3965
  );
3937
3966
  const initialListFilters = useMemo(
3938
- () => ({
3939
- kind: hydration.eventKind === "all" ? void 0 : hydration.eventKind,
3940
- eventSurface: hydration.eventSurface === "all" ? void 0 : hydration.eventSurface,
3941
- eventPresets: hydration.filterEventPresets ?? void 0,
3942
- scheduleScope: hydration.scheduleScope === "any" ? void 0 : hydration.scheduleScope,
3943
- categoryIds: hydration.filterCategoryIds ?? void 0,
3944
- staffMemberId: hydration.filterStaffMemberId ?? void 0,
3945
- venueId: hydration.filterVenueId ?? void 0
3967
+ () => buildEventRuntimeFilters({
3968
+ eventKind: hydration.eventKind,
3969
+ eventSurface: hydration.eventSurface,
3970
+ filterEventPresets: hydration.filterEventPresets,
3971
+ scheduleScope: hydration.scheduleScope,
3972
+ filterCategoryIds: hydration.filterCategoryIds,
3973
+ filterStaffMemberId: hydration.filterStaffMemberId,
3974
+ filterVenueId: hydration.filterVenueId
3946
3975
  }),
3947
3976
  [
3948
3977
  hydration.eventKind,
@@ -3994,7 +4023,7 @@ var EventListingController = ({
3994
4023
  fetchInitialOnMount: hydration.fetchInitialEventsOnMount,
3995
4024
  initialFilters: initialListFilters,
3996
4025
  filters: listFilters,
3997
- pageSize: parseInt(hydration.eventsPerPage, 10) || 12,
4026
+ pageSize: hydration.eventsPerPage,
3998
4027
  stage: hydration.stage
3999
4028
  });
4000
4029
  return /* @__PURE__ */ jsx(
@@ -4029,9 +4058,7 @@ var EventListingController = ({
4029
4058
  error,
4030
4059
  hasMore,
4031
4060
  loadMore,
4032
- paginationMode: hydration.paginationMode,
4033
- seeAllUrl: hydration.seeAllUrl,
4034
- loadMoreText: hydration.loadMoreText,
4061
+ paginationAction: hydration.paginationAction,
4035
4062
  hasActiveFilters,
4036
4063
  onResetFilters: resetFilters
4037
4064
  }
@@ -4059,36 +4086,50 @@ var CALENDAR_FETCH_LIMIT = 200;
4059
4086
  function getMonthKey(date) {
4060
4087
  return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}`;
4061
4088
  }
4062
- function getFiltersKey2(filters) {
4063
- const categoryIds = normalizeCsvString(filters?.categoryIds);
4064
- const staffMemberId = normalizeOptionalId(filters?.staffMemberId);
4065
- const venueId = normalizeOptionalId(filters?.venueId);
4066
- const eventPresets = normalizeCsvString(filters?.eventPresets);
4067
- return JSON.stringify({
4068
- categoryIds,
4069
- staffMemberId,
4070
- venueId,
4071
- kind: filters?.kind ?? null,
4072
- eventSurface: filters?.eventSurface ?? null,
4073
- eventPresets,
4074
- scheduleScope: filters?.scheduleScope ?? null
4075
- });
4089
+ function useCalendarViewport({
4090
+ view = "month",
4091
+ startOfWeek = "monday",
4092
+ initialDate
4093
+ } = {}) {
4094
+ const [viewDate, setViewDate] = useState(() => initialDate ?? /* @__PURE__ */ new Date());
4095
+ const viewport = useMemo(
4096
+ () => buildCalendarViewport({ view, anchorDate: viewDate, startOfWeek }),
4097
+ [startOfWeek, view, viewDate]
4098
+ );
4099
+ const goToPrevious = useCallback(() => {
4100
+ setViewDate((current) => shiftCalendarAnchorDate(current, view, -1));
4101
+ }, [view]);
4102
+ const goToNext = useCallback(() => {
4103
+ setViewDate((current) => shiftCalendarAnchorDate(current, view, 1));
4104
+ }, [view]);
4105
+ const goToDate = useCallback((date) => {
4106
+ setViewDate(date);
4107
+ }, []);
4108
+ const goToToday = useCallback(() => {
4109
+ setViewDate(/* @__PURE__ */ new Date());
4110
+ }, []);
4111
+ return {
4112
+ viewDate,
4113
+ viewport,
4114
+ goToDate,
4115
+ goToPrevious,
4116
+ goToNext,
4117
+ goToToday
4118
+ };
4076
4119
  }
4077
- function useCalendarEvents({
4078
- siteId: _siteId,
4079
- // Deprecated: siteId now comes from BlockApiProvider context
4120
+ function useCalendarEventCache({
4121
+ viewDate,
4080
4122
  initialEvents = [],
4081
4123
  preloadMonths = 1,
4082
4124
  filters,
4083
4125
  stage
4084
4126
  }) {
4085
4127
  const { getPublicEvents } = useBlockApi();
4086
- const [viewDate, setViewDate] = useState(() => /* @__PURE__ */ new Date());
4087
4128
  const [loading, setLoading] = useState(false);
4088
4129
  const [error, setError] = useState(null);
4089
4130
  const [cacheVersion, setCacheVersion] = useState(0);
4090
4131
  const filtersKey = useMemo(
4091
- () => getFiltersKey2(filters),
4132
+ () => getEventRuntimeFiltersKey(filters),
4092
4133
  [
4093
4134
  filters?.categoryIds,
4094
4135
  filters?.eventPresets,
@@ -4147,9 +4188,8 @@ function useCalendarEvents({
4147
4188
  staffMemberId: filters?.staffMemberId,
4148
4189
  venueId: filters?.venueId
4149
4190
  });
4150
- const events2 = result;
4151
4191
  if (currentRequestId === requestIdRef.current) {
4152
- for (const event of events2) {
4192
+ for (const event of result) {
4153
4193
  const eventDate = new Date(event.startsAt);
4154
4194
  const monthKey = getMonthKey(eventDate);
4155
4195
  const existing = cacheRef.current.get(monthKey) || [];
@@ -4221,18 +4261,44 @@ function useCalendarEvents({
4221
4261
  (a, b) => new Date(a.startsAt).getTime() - new Date(b.startsAt).getTime()
4222
4262
  );
4223
4263
  }, [viewDate, cacheVersion]);
4224
- const goToPrevious = useCallback(() => {
4225
- setViewDate((current) => addMonths(current, -1));
4226
- }, []);
4227
- const goToNext = useCallback(() => {
4228
- setViewDate((current) => addMonths(current, 1));
4229
- }, []);
4230
- const goToToday = useCallback(() => {
4231
- setViewDate(/* @__PURE__ */ new Date());
4232
- }, []);
4264
+ return {
4265
+ events,
4266
+ loading,
4267
+ error
4268
+ };
4269
+ }
4270
+ function useCalendarEvents({
4271
+ siteId: _siteId,
4272
+ // Deprecated: siteId now comes from BlockApiProvider context
4273
+ initialEvents = [],
4274
+ view = "month",
4275
+ startOfWeek = "monday",
4276
+ preloadMonths = 1,
4277
+ filters,
4278
+ stage
4279
+ }) {
4280
+ const {
4281
+ viewDate,
4282
+ viewport,
4283
+ goToDate,
4284
+ goToPrevious,
4285
+ goToNext,
4286
+ goToToday
4287
+ } = useCalendarViewport({ view, startOfWeek });
4288
+ const { events, loading, error } = useCalendarEventCache({
4289
+ viewDate,
4290
+ initialEvents,
4291
+ preloadMonths,
4292
+ filters,
4293
+ stage
4294
+ });
4295
+ const setViewDate = useCallback((date) => {
4296
+ goToDate(date);
4297
+ }, [goToDate]);
4233
4298
  return {
4234
4299
  events,
4235
4300
  viewDate,
4301
+ viewport,
4236
4302
  loading,
4237
4303
  error,
4238
4304
  setViewDate,
@@ -4389,18 +4455,16 @@ var FULL_DAY_NAMES = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "F
4389
4455
  function formatAgendaDayHeader(date) {
4390
4456
  const dayName = FULL_DAY_NAMES[date.getDay()];
4391
4457
  const monthName = MONTH_NAMES[date.getMonth()];
4392
- return `${dayName}, ${monthName} ${date.getDate()}`;
4458
+ return `${dayName ?? "Day"}, ${monthName ?? "Month"} ${date.getDate()}`;
4393
4459
  }
4394
4460
  var WeekAgendaView = ({
4395
- viewDate,
4461
+ days,
4396
4462
  events,
4397
- startOfWeek,
4398
4463
  showCapacity,
4399
4464
  emptyMessage = "No events scheduled"
4400
4465
  }) => {
4401
- const weekDays = getWeekCalendarDays(viewDate, startOfWeek);
4402
4466
  const eventsByDate = groupEventsByDate(events);
4403
- return /* @__PURE__ */ jsx("div", { className: "event-agenda-week", children: weekDays.map((date) => {
4467
+ return /* @__PURE__ */ jsx("div", { className: "event-agenda-week", children: days.map((date) => {
4404
4468
  const dateKey = formatDateKey(date);
4405
4469
  const dayEvents = eventsByDate.get(dateKey) || [];
4406
4470
  const today = isToday(date);
@@ -4431,6 +4495,7 @@ function EventDetailModal({
4431
4495
  event,
4432
4496
  showCapacity,
4433
4497
  onClose,
4498
+ portalRoot,
4434
4499
  cardVariant = "default",
4435
4500
  buttonVariant = "primary",
4436
4501
  buttonText,
@@ -4443,6 +4508,8 @@ function EventDetailModal({
4443
4508
  title,
4444
4509
  titleId: "ec-event-modal-title",
4445
4510
  onClose,
4511
+ portal: portalRoot != null,
4512
+ portalRoot,
4446
4513
  overlayClassName: "ec-modal-overlay",
4447
4514
  modalClassName: "ec-modal ec-modal--event",
4448
4515
  renderSrOnlyTitle: true,
@@ -4481,7 +4548,8 @@ function DayEventsModal({
4481
4548
  events,
4482
4549
  showCapacity,
4483
4550
  onClose,
4484
- onSelectEvent
4551
+ onSelectEvent,
4552
+ portalRoot
4485
4553
  }) {
4486
4554
  const formattedDate = formatDate(date.toISOString());
4487
4555
  return /* @__PURE__ */ jsxs(
@@ -4490,6 +4558,8 @@ function DayEventsModal({
4490
4558
  title: formattedDate,
4491
4559
  titleId: "ec-day-modal-title",
4492
4560
  onClose,
4561
+ portal: portalRoot != null,
4562
+ portalRoot,
4493
4563
  overlayClassName: "ec-modal-overlay",
4494
4564
  modalClassName: "ec-modal ec-modal--day",
4495
4565
  renderHeader: ({ closeButtonRef, onClose: onClose2 }) => /* @__PURE__ */ jsx(
@@ -4531,38 +4601,63 @@ function EventModals({
4531
4601
  buttonVariant,
4532
4602
  buttonText
4533
4603
  }) {
4604
+ const markerRef = React9.useRef(null);
4605
+ const [portalRoot, setPortalRoot] = React9.useState(null);
4534
4606
  const { modalState, openEventModal, closeModal } = useEventModal();
4607
+ React9.useEffect(() => {
4608
+ const sourceEl = markerRef.current;
4609
+ if (!sourceEl) return;
4610
+ const portal = createBodyThemePortalRoot(sourceEl);
4611
+ if (!portal) return;
4612
+ const blockRoot = document.createElement("div");
4613
+ blockRoot.setAttribute("data-block", "event-calendar");
4614
+ portal.root.appendChild(blockRoot);
4615
+ setPortalRoot(blockRoot);
4616
+ return () => {
4617
+ setPortalRoot(null);
4618
+ portal.cleanup();
4619
+ };
4620
+ }, []);
4621
+ const marker = /* @__PURE__ */ jsx("span", { ref: markerRef, hidden: true, "aria-hidden": "true" });
4535
4622
  if (modalState.type === "closed") {
4536
- return null;
4623
+ return marker;
4537
4624
  }
4538
4625
  if (modalState.type === "event") {
4539
- return /* @__PURE__ */ jsx(
4540
- EventDetailModal,
4541
- {
4542
- event: modalState.event,
4543
- onClose: closeModal,
4544
- cardVariant,
4545
- buttonVariant,
4546
- buttonText,
4547
- showCapacity
4548
- }
4549
- );
4626
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
4627
+ marker,
4628
+ /* @__PURE__ */ jsx(
4629
+ EventDetailModal,
4630
+ {
4631
+ event: modalState.event,
4632
+ onClose: closeModal,
4633
+ portalRoot,
4634
+ cardVariant,
4635
+ buttonVariant,
4636
+ buttonText,
4637
+ showCapacity
4638
+ }
4639
+ )
4640
+ ] });
4550
4641
  }
4551
4642
  if (modalState.type === "day") {
4552
- return /* @__PURE__ */ jsx(
4553
- DayEventsModal,
4554
- {
4555
- date: modalState.date,
4556
- events: modalState.events,
4557
- onClose: closeModal,
4558
- onSelectEvent: (event) => {
4559
- openEventModal(event);
4560
- },
4561
- showCapacity
4562
- }
4563
- );
4643
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
4644
+ marker,
4645
+ /* @__PURE__ */ jsx(
4646
+ DayEventsModal,
4647
+ {
4648
+ date: modalState.date,
4649
+ events: modalState.events,
4650
+ onClose: closeModal,
4651
+ onSelectEvent: (event) => {
4652
+ openEventModal(event);
4653
+ },
4654
+ portalRoot,
4655
+ showCapacity
4656
+ }
4657
+ )
4658
+ ] });
4564
4659
  }
4565
- return null;
4660
+ return marker;
4566
4661
  }
4567
4662
  function toEventCombinedControllerProps(props) {
4568
4663
  return {
@@ -4572,7 +4667,7 @@ function toEventCombinedControllerProps(props) {
4572
4667
  listLayout: props.render.display.listLayout,
4573
4668
  listColumns: props.render.display.listColumns,
4574
4669
  eventsPerPage: props.render.display.eventsPerPage,
4575
- loadMoreText: props.render.display.loadMoreText,
4670
+ paginationAction: props.render.display.paginationAction,
4576
4671
  startOfWeek: props.render.display.startOfWeek,
4577
4672
  calendarTabViews: props.render.display.calendarTabViews,
4578
4673
  showFilters: props.render.display.showFilters,
@@ -4602,8 +4697,8 @@ var EventCombinedClient = ({
4602
4697
  // List options
4603
4698
  listLayout = "stack",
4604
4699
  listColumns = "3",
4605
- eventsPerPage = "12",
4606
- loadMoreText,
4700
+ eventsPerPage = 12,
4701
+ paginationAction = { kind: "loadMore", label: "Load more events" },
4607
4702
  // Calendar options
4608
4703
  startOfWeek = "monday",
4609
4704
  calendarTabViews = "both",
@@ -4625,7 +4720,7 @@ var EventCombinedClient = ({
4625
4720
  showCapacity,
4626
4721
  // Styling
4627
4722
  buttonVariant = "primary",
4628
- buttonText = "Book now",
4723
+ buttonText = "Book",
4629
4724
  emptyMessage = "No upcoming events scheduled.",
4630
4725
  className
4631
4726
  }) => {
@@ -4677,14 +4772,14 @@ var EventCombinedClient = ({
4677
4772
  preFilterScheduleScope: resolvedScheduleScope
4678
4773
  });
4679
4774
  const initialListFilters = useMemo(
4680
- () => ({
4681
- kind: eventKind === "courses" || eventKind === "events" ? eventKind : void 0,
4682
- eventSurface: resolvedEventSurface === "all" ? void 0 : resolvedEventSurface,
4683
- eventPresets: filterEventPresets ?? void 0,
4684
- scheduleScope: resolvedScheduleScope === "any" ? void 0 : resolvedScheduleScope,
4685
- categoryIds: filterCategoryIds ?? void 0,
4686
- staffMemberId: filterStaffMemberId ?? void 0,
4687
- venueId: filterVenueId ?? void 0
4775
+ () => buildEventRuntimeFilters({
4776
+ eventKind,
4777
+ eventSurface: resolvedEventSurface,
4778
+ filterEventPresets,
4779
+ scheduleScope: resolvedScheduleScope,
4780
+ filterCategoryIds,
4781
+ filterStaffMemberId,
4782
+ filterVenueId
4688
4783
  }),
4689
4784
  [
4690
4785
  eventKind,
@@ -4697,7 +4792,7 @@ var EventCombinedClient = ({
4697
4792
  ]
4698
4793
  );
4699
4794
  const listFilters = useMemo(() => getFilterParams(), [getFilterParams]);
4700
- const pageSize = parseInt(eventsPerPage, 10) || 12;
4795
+ const pageSize = eventsPerPage;
4701
4796
  const initialListEvents = useMemo(
4702
4797
  () => (initialEvents ?? []).slice(0, pageSize),
4703
4798
  [initialEvents, pageSize]
@@ -4718,13 +4813,14 @@ var EventCombinedClient = ({
4718
4813
  stage
4719
4814
  });
4720
4815
  const calendarInitialEvents = useMemo(() => {
4721
- const initialKey = JSON.stringify(initialListFilters);
4722
- const currentKey = JSON.stringify(listFilters);
4816
+ const initialKey = getEventRuntimeFiltersKey(initialListFilters);
4817
+ const currentKey = getEventRuntimeFiltersKey(listFilters);
4723
4818
  return initialKey === currentKey ? initialEvents ?? [] : [];
4724
4819
  }, [initialEvents, initialListFilters, listFilters]);
4725
4820
  const {
4726
4821
  events: calendarEventsRaw,
4727
4822
  viewDate,
4823
+ viewport,
4728
4824
  loading: calendarLoading,
4729
4825
  goToPrevious,
4730
4826
  goToNext,
@@ -4732,6 +4828,8 @@ var EventCombinedClient = ({
4732
4828
  } = useCalendarEvents({
4733
4829
  siteId,
4734
4830
  initialEvents: calendarInitialEvents,
4831
+ view: calendarView,
4832
+ startOfWeek,
4735
4833
  preloadMonths: 1,
4736
4834
  filters: listFilters,
4737
4835
  stage
@@ -4744,22 +4842,10 @@ var EventCombinedClient = ({
4744
4842
  () => getOrderedDayNames(startOfWeek),
4745
4843
  [startOfWeek]
4746
4844
  );
4747
- const calendarDays = useMemo(() => {
4748
- return getMonthCalendarDays(
4749
- viewDate.getFullYear(),
4750
- viewDate.getMonth(),
4751
- startOfWeek
4752
- );
4753
- }, [viewDate, startOfWeek]);
4754
- const headerTitle = useMemo(
4755
- () => formatCalendarTitle(viewDate, calendarView, calendarDays),
4756
- [viewDate, calendarView, calendarDays]
4757
- );
4758
4845
  const tabs = [
4759
4846
  { id: "list", label: "List" },
4760
4847
  { id: "calendar", label: "Calendar" }
4761
4848
  ];
4762
- const loadMoreButtonText = loadMoreText || "Load more";
4763
4849
  const containerClass = getContainerClass(listLayout, listColumns);
4764
4850
  const cardOrientation = getCardOrientation(listLayout);
4765
4851
  const listDisplay = {
@@ -4825,7 +4911,7 @@ var EventCombinedClient = ({
4825
4911
  error: eventsError,
4826
4912
  hasMore,
4827
4913
  loadMore,
4828
- loadMoreText: loadMoreButtonText,
4914
+ paginationAction,
4829
4915
  hasActiveFilters,
4830
4916
  onResetFilters: resetFilters
4831
4917
  }
@@ -4883,7 +4969,7 @@ var EventCombinedClient = ({
4883
4969
  }
4884
4970
  ),
4885
4971
  /* @__PURE__ */ jsxs("h3", { className: "event-calendar-title", children: [
4886
- headerTitle,
4972
+ viewport.title,
4887
4973
  calendarLoading && /* @__PURE__ */ jsx("span", { className: "rb-ml-2 rb-caption status-muted", children: "(loading...)" })
4888
4974
  ] }),
4889
4975
  /* @__PURE__ */ jsx(
@@ -4925,18 +5011,17 @@ var EventCombinedClient = ({
4925
5011
  }
4926
5012
  )
4927
5013
  ] }),
4928
- calendarView === "week" ? /* @__PURE__ */ jsx(
5014
+ viewport.kind === "week" ? /* @__PURE__ */ jsx(
4929
5015
  WeekAgendaView,
4930
5016
  {
4931
- viewDate,
5017
+ days: viewport.days,
4932
5018
  events: calendarEventsRaw,
4933
- startOfWeek,
4934
5019
  emptyMessage: "No events scheduled",
4935
5020
  showCapacity: resolvedShowCapacity
4936
5021
  }
4937
5022
  ) : /* @__PURE__ */ jsxs("div", { className: "event-calendar-container", children: [
4938
5023
  /* @__PURE__ */ jsx("div", { className: "event-calendar-day-headers", children: dayNames.map((day) => /* @__PURE__ */ jsx("div", { className: "event-calendar-day-header", children: day }, day)) }),
4939
- /* @__PURE__ */ jsx("div", { className: "event-calendar-grid", children: calendarDays.map((date) => {
5024
+ /* @__PURE__ */ jsx("div", { className: "event-calendar-grid", children: viewport.days.map((date) => {
4940
5025
  const dateKey = formatDateKey(date);
4941
5026
  const dayEvents = eventsByDate.get(dateKey) || [];
4942
5027
  return /* @__PURE__ */ jsx(
@@ -5171,7 +5256,7 @@ function formatHourLabel(hour) {
5171
5256
  }
5172
5257
  function hourToTickPercent(hour, hours) {
5173
5258
  const startHour = hours[0] ?? 0;
5174
- const endHour = hours.at(-1) ?? startHour + 1;
5259
+ const endHour = hours[hours.length - 1] ?? startHour + 1;
5175
5260
  const range = Math.max(1, endHour - startHour);
5176
5261
  return (hour - startHour) / range * 100;
5177
5262
  }
@@ -5189,7 +5274,7 @@ var EventCalendarClient = ({
5189
5274
  listLayout: display.listLayout,
5190
5275
  listColumns: display.listColumns,
5191
5276
  eventsPerPage: display.eventsPerPage,
5192
- loadMoreText: display.loadMoreText,
5277
+ paginationAction: display.paginationAction,
5193
5278
  startOfWeek: display.startOfWeek,
5194
5279
  calendarTabViews: display.calendarTabViews,
5195
5280
  showFilters: display.showFilters,
@@ -5233,6 +5318,7 @@ var EventCalendarTimetableClient = ({ render }) => {
5233
5318
  const {
5234
5319
  events,
5235
5320
  viewDate,
5321
+ viewport,
5236
5322
  loading,
5237
5323
  error,
5238
5324
  goToPrevious,
@@ -5241,18 +5327,12 @@ var EventCalendarTimetableClient = ({ render }) => {
5241
5327
  } = useCalendarEvents({
5242
5328
  siteId: hydration.siteId,
5243
5329
  initialEvents: calendarInitialEvents,
5330
+ view: "week",
5331
+ startOfWeek: display.startOfWeek,
5244
5332
  preloadMonths: 1,
5245
5333
  filters: listFilters,
5246
5334
  stage: hydration.stage
5247
5335
  });
5248
- const calendarDays = useMemo(
5249
- () => getWeekCalendarDays(viewDate, display.startOfWeek),
5250
- [display.startOfWeek, viewDate]
5251
- );
5252
- const headerTitle = useMemo(
5253
- () => formatCalendarTitle(viewDate, "week", calendarDays),
5254
- [calendarDays, viewDate]
5255
- );
5256
5336
  return /* @__PURE__ */ jsxs(EventModalProvider, { children: [
5257
5337
  /* @__PURE__ */ jsx(
5258
5338
  EventCalendarChrome,
@@ -5262,7 +5342,7 @@ var EventCalendarTimetableClient = ({ render }) => {
5262
5342
  className: "event-calendar--timetable",
5263
5343
  error,
5264
5344
  filters: filtersNode,
5265
- headerTitle,
5345
+ headerTitle: viewport.title,
5266
5346
  loading,
5267
5347
  onNext: goToNext,
5268
5348
  onPrevious: goToPrevious,
@@ -5297,6 +5377,7 @@ var EventCalendarGridClient = ({ render }) => {
5297
5377
  const {
5298
5378
  events,
5299
5379
  viewDate,
5380
+ viewport,
5300
5381
  loading,
5301
5382
  error,
5302
5383
  goToPrevious,
@@ -5305,6 +5386,8 @@ var EventCalendarGridClient = ({ render }) => {
5305
5386
  } = useCalendarEvents({
5306
5387
  siteId: hydration.siteId,
5307
5388
  initialEvents: calendarInitialEvents,
5389
+ view: calendarView,
5390
+ startOfWeek: display.startOfWeek,
5308
5391
  preloadMonths: 1,
5309
5392
  filters: listFilters,
5310
5393
  stage: hydration.stage
@@ -5314,20 +5397,6 @@ var EventCalendarGridClient = ({ render }) => {
5314
5397
  () => getOrderedDayNames(display.startOfWeek),
5315
5398
  [display.startOfWeek]
5316
5399
  );
5317
- const calendarDays = useMemo(() => {
5318
- if (calendarView === "week") {
5319
- return getWeekCalendarDays(viewDate, display.startOfWeek);
5320
- }
5321
- return getMonthCalendarDays(
5322
- viewDate.getFullYear(),
5323
- viewDate.getMonth(),
5324
- display.startOfWeek
5325
- );
5326
- }, [calendarView, display.startOfWeek, viewDate]);
5327
- const headerTitle = useMemo(
5328
- () => formatCalendarTitle(viewDate, calendarView, calendarDays),
5329
- [viewDate, calendarView, calendarDays]
5330
- );
5331
5400
  return /* @__PURE__ */ jsxs(EventModalProvider, { children: [
5332
5401
  /* @__PURE__ */ jsxs(
5333
5402
  EventCalendarChrome,
@@ -5336,7 +5405,7 @@ var EventCalendarGridClient = ({ render }) => {
5336
5405
  calendarView,
5337
5406
  error,
5338
5407
  filters: filtersNode,
5339
- headerTitle,
5408
+ headerTitle: viewport.title,
5340
5409
  loading,
5341
5410
  onNext: goToNext,
5342
5411
  onPrevious: goToPrevious,
@@ -5344,7 +5413,7 @@ var EventCalendarGridClient = ({ render }) => {
5344
5413
  children: [
5345
5414
  /* @__PURE__ */ jsxs("div", { className: "event-calendar-container", children: [
5346
5415
  /* @__PURE__ */ jsx("div", { className: "event-calendar-day-headers", children: dayNames.map((day) => /* @__PURE__ */ jsx("div", { className: "event-calendar-day-header", children: day }, day)) }),
5347
- /* @__PURE__ */ jsx("div", { className: "event-calendar-grid", children: calendarDays.map((date) => {
5416
+ /* @__PURE__ */ jsx("div", { className: "event-calendar-grid", children: viewport.days.map((date) => {
5348
5417
  const dateKey = formatDateKey(date);
5349
5418
  const dayEvents = eventsByDate.get(dateKey) || [];
5350
5419
  return /* @__PURE__ */ jsx(
@@ -5432,43 +5501,21 @@ function usePrefetchedCalendarEvents(display, listFilters) {
5432
5501
  ]
5433
5502
  );
5434
5503
  return useMemo(() => {
5435
- const initialKey = JSON.stringify(initialFilters);
5436
- const currentKey = JSON.stringify(listFilters);
5504
+ const initialKey = getEventRuntimeFiltersKey(initialFilters);
5505
+ const currentKey = getEventRuntimeFiltersKey(listFilters);
5437
5506
  return initialKey === currentKey ? [...display.events] : [];
5438
5507
  }, [display.events, initialFilters, listFilters]);
5439
5508
  }
5440
5509
  function buildDisplayFilterParams(display) {
5441
- const params = {};
5442
- if (display.eventSurface !== "all") {
5443
- params.eventSurface = display.eventSurface;
5444
- }
5445
- if (display.filterEventPresets) {
5446
- params.eventPresets = display.filterEventPresets;
5447
- }
5448
- if (display.scheduleScope !== "any") {
5449
- params.scheduleScope = display.scheduleScope;
5450
- }
5451
- if (display.eventKind === "courses") {
5452
- params.kind = "courses";
5453
- if (display.filterVenueId) params.venueId = display.filterVenueId;
5454
- if (display.filterStaffMemberId) {
5455
- params.staffMemberId = display.filterStaffMemberId;
5456
- }
5457
- return params;
5458
- }
5459
- if (display.filterCategoryIds) {
5460
- params.categoryIds = display.filterCategoryIds;
5461
- }
5462
- if (display.eventKind === "events") {
5463
- params.kind = "events";
5464
- }
5465
- if (display.filterVenueId) {
5466
- params.venueId = display.filterVenueId;
5467
- }
5468
- if (display.filterStaffMemberId) {
5469
- params.staffMemberId = display.filterStaffMemberId;
5470
- }
5471
- return params;
5510
+ return buildEventRuntimeFilters({
5511
+ eventKind: display.eventKind,
5512
+ eventSurface: display.eventSurface,
5513
+ filterEventPresets: display.filterEventPresets,
5514
+ scheduleScope: display.scheduleScope,
5515
+ filterCategoryIds: display.filterCategoryIds,
5516
+ filterStaffMemberId: display.filterStaffMemberId,
5517
+ filterVenueId: display.filterVenueId
5518
+ });
5472
5519
  }
5473
5520
  var EventCalendarChrome = ({
5474
5521
  children,