@riverbankcms/sdk 0.136.0 → 0.138.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 (343) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/README.md +7 -4
  3. package/dist/{PreviewEditorSidebar-BU5ZlhQR.mjs → PreviewEditorSidebar-BVPur_CU.mjs} +12 -18
  4. package/dist/{PreviewEditorUI-9XkHL-bC.mjs → PreviewEditorUI-DLhWX8oh.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-wbEpXryy.mjs → PreviewQueryProvider-BguJY1SW.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-CnWmj-2B.mjs → SdkPreviewModeRuntime-Tda6qw4z.mjs} +1375 -495
  7. package/dist/{SiteChromeCustomizeContext-B6d5zkog.mjs → SiteChromeCustomizeContext-BHFgMjde.mjs} +35665 -33602
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +7226 -3057
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +1223 -811
  10. package/dist/_dts/ai/src/designer/themePatch.d.ts +5 -10
  11. package/dist/_dts/api/src/accessAdmin.d.ts +16 -18
  12. package/dist/_dts/api/src/accountApi.d.ts +49 -2
  13. package/dist/_dts/api/src/appointmentServiceContracts.d.ts +83 -0
  14. package/dist/_dts/api/src/appointmentServiceLocation.d.ts +12 -0
  15. package/dist/_dts/api/src/appointmentServiceVisibility.d.ts +14 -0
  16. package/dist/_dts/api/src/appointmentSetup.d.ts +8 -0
  17. package/dist/_dts/api/src/bookingConfig.d.ts +35 -87
  18. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +1 -1
  19. package/dist/_dts/api/src/bookingOperations.d.ts +2 -69
  20. package/dist/_dts/api/src/bookingRecords.d.ts +2 -2
  21. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +2 -2
  22. package/dist/_dts/api/src/bookingServicePricing.d.ts +47 -0
  23. package/dist/_dts/api/src/bookings.d.ts +2 -2
  24. package/dist/_dts/api/src/cache-tags.d.ts +7 -2
  25. package/dist/_dts/api/src/common/index.d.ts +1 -0
  26. package/dist/_dts/api/src/common/zodFieldErrors.d.ts +34 -0
  27. package/dist/_dts/api/src/communications.d.ts +14 -8
  28. package/dist/_dts/api/src/contentRuntime.d.ts +3 -6
  29. package/dist/_dts/api/src/domainConnection.d.ts +41 -0
  30. package/dist/_dts/api/src/endpoints.d.ts +1636 -1637
  31. package/dist/_dts/api/src/eventAttendanceLabels.d.ts +2 -2
  32. package/dist/_dts/api/src/eventManagementContracts.d.ts +10 -14
  33. package/dist/_dts/api/src/index.d.ts +11 -9
  34. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  35. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  36. package/dist/_dts/api/src/media.d.ts +19 -2
  37. package/dist/_dts/api/src/occurrenceScheduling.d.ts +1 -1
  38. package/dist/_dts/api/src/participantMessaging.d.ts +3 -3
  39. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  40. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +62 -0
  41. package/dist/_dts/api/src/publicBookingService.d.ts +109 -2
  42. package/dist/_dts/api/src/publicEventCheckoutEndpointDefinitions.d.ts +27 -0
  43. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +7 -0
  44. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +2 -1
  45. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +30 -148
  46. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +8 -26
  47. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +5 -13
  48. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +2 -3
  49. package/dist/_dts/api/src/schemas/admin-allowed-domains.d.ts +76 -0
  50. package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +61 -0
  51. package/dist/_dts/api/src/schemas/admin-users.d.ts +80 -0
  52. package/dist/_dts/api/src/schemas/newsletter-memberships.d.ts +98 -0
  53. package/dist/_dts/api/src/schemas/sdk-entries.d.ts +128 -0
  54. package/dist/_dts/api/src/schemas/site-api-keys.d.ts +112 -0
  55. package/dist/_dts/api/src/schemas/support.d.ts +35 -0
  56. package/dist/_dts/api/src/sdk-event-booking-offer.d.ts +14 -0
  57. package/dist/_dts/api/src/sdk-event-payment-terms.d.ts +4 -16
  58. package/dist/_dts/api/src/sdk-event-upsert.d.ts +11 -21
  59. package/dist/_dts/api/src/sdkContracts.d.ts +8 -23
  60. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +37 -0
  61. package/dist/_dts/api/src/sdkMediaContracts.d.ts +40 -0
  62. package/dist/_dts/api/src/sdkMediaEndpointDefinitions.d.ts +66 -0
  63. package/dist/_dts/api/src/sdkThemeWire.d.ts +157 -146
  64. package/dist/_dts/api/src/siteInfrastructure.d.ts +37 -37
  65. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +35 -54
  66. package/dist/_dts/api/src/siteOnboarding.d.ts +3 -3
  67. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +38 -16
  68. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +37 -17
  69. package/dist/_dts/api/src/types.d.ts +2 -2
  70. package/dist/_dts/api/src/{wholeSeriesOfferings.d.ts → wholeSeriesRuns.d.ts} +11 -67
  71. package/dist/_dts/block-form/src/FormRenderer.d.ts +3 -1
  72. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  73. package/dist/_dts/block-form/src/backend/types.d.ts +2 -0
  74. package/dist/_dts/block-form/src/context/FormFocusContext.d.ts +7 -0
  75. package/dist/_dts/block-form/src/index.d.ts +2 -0
  76. package/dist/_dts/block-form/src/manifest/ManifestForm.d.ts +2 -1
  77. package/dist/_dts/block-form/src/utils/promotedFieldBackend.d.ts +8 -0
  78. package/dist/_dts/block-form/src/utils/promotedFieldPlan.d.ts +18 -0
  79. package/dist/_dts/block-form/src/utils/resolvePromotedFields.d.ts +8 -1
  80. package/dist/_dts/blocks/src/BlockErrorBoundary.d.ts +46 -0
  81. package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -141
  82. package/dist/_dts/blocks/src/contracts/index.d.ts +2 -0
  83. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +12 -6
  84. package/dist/_dts/blocks/src/index.d.ts +1 -0
  85. package/dist/_dts/blocks/src/pageRenderAudience.d.ts +54 -0
  86. package/dist/_dts/blocks/src/pageRenderDiagnostics.d.ts +26 -0
  87. package/dist/_dts/blocks/src/pageRenderPlan.d.ts +116 -0
  88. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +109 -0
  89. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +1 -0
  90. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +154 -0
  91. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  92. package/dist/_dts/blocks/src/server.d.ts +1 -0
  93. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +12 -20
  94. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
  95. package/dist/_dts/blocks/src/system/blocks/events/eventCalendarDataLoaders.d.ts +3 -0
  96. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +95 -0
  97. package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +1 -0
  98. package/dist/_dts/blocks/src/system/blocks/events/shared/runGrouping.d.ts +37 -0
  99. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +1046 -773
  100. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +59 -46
  101. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -3
  102. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +161 -161
  103. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +13 -6
  104. package/dist/_dts/blocks/src/system/blocks/offerings-preview/scheduleSummary.d.ts +10 -4
  105. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +2 -2
  106. package/dist/_dts/blocks/src/system/constants/events.d.ts +4 -0
  107. package/dist/_dts/blocks/src/system/customize/facets.d.ts +4 -4
  108. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  109. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +5 -9
  110. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +83 -83
  111. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +12 -3
  112. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -8
  113. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  114. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +13 -0
  115. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -20
  116. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +32 -37
  117. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +15 -18
  118. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +11 -8
  119. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +38 -22
  120. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +7 -0
  121. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/WholeSeriesPricingDisplay.d.ts +2 -2
  122. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +16 -4
  123. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ErrorStep.d.ts +3 -5
  124. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +4 -2
  125. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +1 -1
  126. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +5 -3
  127. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +1 -1
  128. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +1 -1
  129. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +2 -0
  130. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +15 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +2 -2
  132. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorPresentation.d.ts +5 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +25 -0
  134. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.d.ts +14 -3
  135. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +3 -21
  136. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.d.ts +4 -0
  137. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/siteCreditPreview.d.ts +0 -3
  138. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ticketSelectionLines.d.ts +14 -16
  139. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +13 -15
  140. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -3
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +9 -3
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +25 -23
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +2 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +11 -4
  145. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +8 -13
  146. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +5 -0
  147. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +1 -0
  148. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +11 -3
  149. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/capacity.d.ts +164 -0
  150. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/cta.d.ts +29 -0
  151. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +47 -0
  152. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +14 -0
  153. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/people.d.ts +6 -0
  154. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/pricing.d.ts +24 -0
  155. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/OfferingTitle.d.ts +11 -0
  156. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +1 -1
  157. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +1 -1
  158. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +1080 -560
  159. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.d.ts +2 -2
  160. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +3 -1
  161. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listingLayout.d.ts +23 -0
  162. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +2 -2
  163. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -7
  164. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +11 -0
  165. package/dist/_dts/commerce/src/moneyReport.d.ts +1 -1
  166. package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
  167. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +57 -0
  168. package/dist/_dts/commerce/src/purchase/eventOrderOptionSnapshot.d.ts +3 -0
  169. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  170. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +6 -3
  171. package/dist/_dts/commerce/src/purchase/types.d.ts +3 -2
  172. package/dist/_dts/commerce/src/waitlists.d.ts +1 -1
  173. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +4 -0
  174. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +11 -0
  175. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +1 -1
  176. package/dist/_dts/content-editor/src/hooks/blockedPublishPlan.d.ts +13 -5
  177. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +5 -1
  178. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +34 -2
  179. package/dist/_dts/content-editor/src/index.d.ts +2 -1
  180. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +2 -0
  181. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -2
  182. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +27 -5
  183. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  184. package/dist/_dts/content-model/src/templates/defaults.d.ts +11 -0
  185. package/dist/_dts/core/src/branded.d.ts +28 -9
  186. package/dist/_dts/core/src/event-booking-offer-parser.d.ts +82 -0
  187. package/dist/_dts/core/src/event-booking-offer.d.ts +89 -0
  188. package/dist/_dts/core/src/event-page-surface-subject.d.ts +81 -4
  189. package/dist/_dts/core/src/event-pricing.d.ts +81 -89
  190. package/dist/_dts/core/src/index.d.ts +3 -0
  191. package/dist/_dts/core/src/non-empty-array.d.ts +3 -0
  192. package/dist/_dts/core/src/whole-series-run-schedule.d.ts +92 -0
  193. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +495 -279
  194. package/dist/_dts/db/src/index.d.ts +1 -0
  195. package/dist/_dts/db/src/utils/postgrestFilter.d.ts +2 -0
  196. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -6
  197. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  198. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -2
  199. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +4 -2
  200. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +1 -0
  201. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +22 -7
  202. package/dist/_dts/editor-blocks/src/block-editor/useSettingsFieldFocus.d.ts +18 -0
  203. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +4 -0
  204. package/dist/_dts/media-core/src/fileDomain.d.ts +3 -0
  205. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +2 -0
  206. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -0
  207. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  208. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -2
  209. package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +1 -1
  210. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +2 -0
  211. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlSaveRequest.d.ts +51 -0
  212. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +24 -2
  213. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +23 -1
  214. package/dist/_dts/preview-next/src/client/preview/usePersistedHeaderPreferences.d.ts +8 -0
  215. package/dist/_dts/sdk/src/client/{eventSubrouteReadOperations.d.ts → publicEventReadOperations.d.ts} +4 -3
  216. package/dist/_dts/sdk/src/client/types.d.ts +6 -10
  217. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  218. package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
  219. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
  220. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +2 -3
  221. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +8 -8
  222. package/dist/_dts/sdk/src/next/tags.d.ts +5 -8
  223. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -26
  224. package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +9 -1
  225. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  226. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +6 -53
  227. package/dist/_dts/sdk/src/rendering/server.d.ts +1 -0
  228. package/dist/_dts/sdk/src/version.d.ts +1 -1
  229. package/dist/_dts/theme-core/src/accordions/types.d.ts +5 -5
  230. package/dist/_dts/theme-core/src/buttons/styles/recipes/flatInk.d.ts +25 -25
  231. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +25 -25
  232. package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +7 -7
  233. package/dist/_dts/theme-core/src/buttons/types.d.ts +22 -22
  234. package/dist/_dts/theme-core/src/cards/types.d.ts +49 -49
  235. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  236. package/dist/_dts/theme-core/src/gradients/types.d.ts +5 -0
  237. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +26 -3
  238. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  239. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  240. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +195 -195
  241. package/dist/_dts/theme-core/src/navigation/types.d.ts +3 -3
  242. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  243. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +2 -2
  244. package/dist/_dts/theme-core/src/schema.d.ts +258 -257
  245. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  246. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  247. package/dist/_dts/theme-core/src/site-styles/cardRoleVocabulary.d.ts +1 -1
  248. package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +43 -3
  249. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +10 -0
  250. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -4
  251. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  252. package/dist/_dts/theme-core/src/site-styles/headerBrandPresentation.d.ts +63 -0
  253. package/dist/_dts/theme-core/src/site-styles/headerBytesComparison.d.ts +30 -0
  254. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +50 -1
  255. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +48 -9
  256. package/dist/_dts/theme-core/src/site-styles/headerPreferences.d.ts +162 -0
  257. package/dist/_dts/theme-core/src/site-styles/headerPreferencesPersistence.d.ts +73 -0
  258. package/dist/_dts/theme-core/src/site-styles/headerRecompile.d.ts +118 -0
  259. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +10 -1
  260. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +1 -1
  261. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +7 -0
  262. package/dist/_dts/theme-core/src/site-styles/index.d.ts +5 -0
  263. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  264. package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +20 -1
  265. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +43 -2
  266. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  267. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
  268. package/dist/_dts/ui/src/badge.d.ts +1 -1
  269. package/dist/_dts/ui/src/button.d.ts +2 -2
  270. package/dist/client/{BookingConsentAgreement-DCch21a6.mjs → BookingConsentAgreement-DQUik1Mx.mjs} +2 -2
  271. package/dist/client/{DiscountCodeDisclosure-DIj1T59K.mjs → DiscountCodeDisclosure-CU67Q4vH.mjs} +1 -1
  272. package/dist/client/{EventCombined.client-BWVNlXTx.mjs → EventCombined.client-a02TXUgg.mjs} +233 -348
  273. package/dist/client/{EventListing.client-DVFCDe3i.mjs → EventListing.client-99qx7jFl.mjs} +2 -2
  274. package/dist/client/{LeafletStaticMap-BY5mIHw9.mjs → LeafletStaticMap-CWzcq73L.mjs} +1 -1
  275. package/dist/client/{accordion-CK29E8rG.mjs → accordion-D1nb3-Oj.mjs} +1 -1
  276. package/dist/client/{bookingForm-DFvnet-N.mjs → bookingForm-BGrmLhaO.mjs} +5 -5
  277. package/dist/client/bookings.mjs +10555 -10475
  278. package/dist/client/{carousel-BVU5NQlb.mjs → carousel-DSmOx3ad.mjs} +1 -1
  279. package/dist/client/{cart-BNItcZVa.mjs → cart-COWeOIUk.mjs} +3 -3
  280. package/dist/client/{checkout-Bu6iCdkP.mjs → checkout-CeysaIJK.mjs} +3 -3
  281. package/dist/client/client.mjs +58968 -57441
  282. package/dist/client/{context-BImarOAq.mjs → context-DBzX85Xc.mjs} +46 -18
  283. package/dist/client/dates-DCYhZBlW.mjs +264 -0
  284. package/dist/client/{eventCalendar-DS2h-UXD.mjs → eventCalendar-BgsN73Ul.mjs} +21 -44
  285. package/dist/client/{eventCombined-Drt4Oq9p.mjs → eventCombined-DcZQAMQP.mjs} +3 -3
  286. package/dist/client/{eventDetails-Bl2vWgTX.mjs → eventDetails-BWwGJ54l.mjs} +131 -51
  287. package/dist/client/{eventListing-CS7PHY7v.mjs → eventListing-DqYqV8vp.mjs} +3 -3
  288. package/dist/client/{eventRegistration-D-j8eNy2.mjs → eventRegistration-DQGDgu_e.mjs} +1122 -803
  289. package/dist/client/{form-RMpoLTyr.mjs → form-ClfpasVT.mjs} +2 -2
  290. package/dist/client/{headerSection-BYE3Lb3k.mjs → headerSection-BuOMe98N.mjs} +2 -2
  291. package/dist/client/hooks.mjs +9630 -9526
  292. package/dist/client/{locationMap-BxSr7Kkh.mjs → locationMap-CEqu_sfa.mjs} +2 -2
  293. package/dist/client/{newsletterForm-DerbXwFC.mjs → newsletterForm-IbrHjMxy.mjs} +2 -2
  294. package/dist/client/pricing-xj7MPZlK.mjs +314 -0
  295. package/dist/client/{productDetail-4SZCLhAf.mjs → productDetail-vxqTt5Xj.mjs} +3 -3
  296. package/dist/client/{productList-D7AP4GNq.mjs → productList-OTdZu8sb.mjs} +3 -3
  297. package/dist/client/{propsDecoder-pzBeCh14.mjs → propsDecoder-CY9gGEF7.mjs} +786 -1194
  298. package/dist/client/rendering/client.mjs +11481 -10469
  299. package/dist/client/rendering/islands.mjs +17 -17
  300. package/dist/client/rendering.mjs +26871 -25232
  301. package/dist/client/{scrollToBlock-CduAKf8T.mjs → scrollToBlock--BFV6kl-.mjs} +1 -1
  302. package/dist/client/{shop-Cp5p_kGe.mjs → shop-CP4YbDL9.mjs} +6 -6
  303. package/dist/client/{shop-commerce-DicXYaYX.mjs → shop-commerce-APs4XBXE.mjs} +5 -5
  304. package/dist/client/{shop-commerce-store-CGWnpY4K.mjs → shop-commerce-store-CAVLxLFr.mjs} +1 -1
  305. package/dist/client/{shopShared-BDf9ljkm.mjs → shopShared-BnSRrwXI.mjs} +3 -3
  306. package/dist/client/{useEventFilters-DeeyGYuk.mjs → useEventFilters-1a1by4c8.mjs} +33 -18
  307. package/dist/preview-next/before-render.mjs +186 -148
  308. package/dist/preview-next/client/runtime.mjs +4 -4
  309. package/dist/preview-next/keepAlive.mjs +186 -148
  310. package/dist/preview-next/middleware.mjs +186 -148
  311. package/dist/{previewAuthStore-DbqBol0V.mjs → previewAuthStore-BkEgnYPP.mjs} +186 -148
  312. package/dist/{sdk-runtime-19MO27F0.mjs → sdk-runtime-DwGfsT0S.mjs} +2 -2
  313. package/dist/{separator-DaPLtJ1f.mjs → separator-BeqDLneQ.mjs} +1 -1
  314. package/dist/server/components.mjs +53243 -51879
  315. package/dist/server/config-validation.mjs +1015 -906
  316. package/dist/server/config.mjs +1019 -910
  317. package/dist/server/data.mjs +10304 -10200
  318. package/dist/server/index.mjs +217 -198
  319. package/dist/server/next/tags.mjs +18 -4
  320. package/dist/server/next.mjs +62787 -61617
  321. package/dist/server/page-converter.mjs +797 -917
  322. package/dist/server/prebuild.mjs +1 -1
  323. package/dist/server/rendering/server.mjs +52557 -51365
  324. package/dist/server/rendering.mjs +54373 -53054
  325. package/dist/server/routing.mjs +13274 -13142
  326. package/dist/server/server.mjs +1076 -1154
  327. package/dist/server/theme-bridge.mjs +69 -9
  328. package/dist/server/theme.mjs +27 -8
  329. package/dist/styles/index.css +32 -1
  330. package/package.json +1 -1
  331. package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +0 -65
  332. package/dist/_dts/api/src/publicWholeSeriesEndpointDefinitions.d.ts +0 -20
  333. package/dist/_dts/api/src/sdk-event-pricing.d.ts +0 -61
  334. package/dist/_dts/blocks/src/system/blocks/events/whole-series/index.d.ts +0 -3
  335. package/dist/_dts/blocks/src/system/blocks/events/whole-series/pricing.d.ts +0 -50
  336. package/dist/_dts/blocks/src/system/blocks/events/whole-series/schemas.d.ts +0 -135
  337. package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +0 -87
  338. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +0 -48
  339. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +0 -17
  340. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +0 -100
  341. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +0 -11
  342. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +0 -2
  343. /package/dist/_dts/blocks/src/system/runtime/nodes/events/{shared → domain}/destination.d.ts +0 -0
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { L as calendarWindowPageSchema } from "./propsDecoder-CY9gGEF7.mjs";
2
3
  import { createContext, useContext, useMemo } from "react";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  //#region ../blocks/src/system/runtime/api/deduplication.ts
@@ -157,6 +158,10 @@ const BOOKINGS = {
157
158
  }
158
159
  };
159
160
  const EVENTS = {
161
+ calendarWindow: {
162
+ path: "/public/sites/{siteId}/events/calendar-window",
163
+ method: "GET"
164
+ },
160
165
  list: {
161
166
  path: "/public/sites/{siteId}/events",
162
167
  method: "GET"
@@ -189,17 +194,11 @@ const EVENTS = {
189
194
  method: "POST"
190
195
  }
191
196
  };
192
- const WHOLE_SERIES = {
193
- list: {
194
- path: "/public/sites/{siteId}/dated-offerings/whole-series",
195
- method: "GET"
196
- },
197
- waitlistClaimResolve: {
198
- path: "/public/sites/{siteId}/waitlists/claim/resolve",
199
- method: "POST",
200
- authScope: "portal"
201
- }
202
- };
197
+ const WHOLE_SERIES = { waitlistClaimResolve: {
198
+ path: "/public/sites/{siteId}/waitlists/claim/resolve",
199
+ method: "POST",
200
+ authScope: "portal"
201
+ } };
203
202
  const SHOP = {
204
203
  listProducts: {
205
204
  path: "/public/sites/{siteId}/products",
@@ -453,13 +452,20 @@ function encodePublicProductCategorySelector(selector) {
453
452
  }
454
453
  }
455
454
  /**
456
- * Error thrown when an API request fails
455
+ * Error thrown when an API request fails.
456
+ *
457
+ * `fieldErrors` mirrors the envelope's `error.fieldErrors` when the response
458
+ * carried one, so callers can render per-field detail instead of only the
459
+ * top-level message. It is always an array — empty when the response had no
460
+ * field detail, or when what it carried was not a well-formed field error list.
457
461
  */
458
462
  var BlockApiError = class extends Error {
459
- constructor(message, status, code) {
463
+ constructor(message, status, code, tag, fieldErrors = []) {
460
464
  super(message);
461
465
  this.status = status;
462
466
  this.code = code;
467
+ this.tag = tag;
468
+ this.fieldErrors = fieldErrors;
463
469
  this.name = "BlockApiError";
464
470
  }
465
471
  };
@@ -486,12 +492,24 @@ async function parseJsonBody(response) {
486
492
  return { kind: "invalid-json" };
487
493
  }
488
494
  }
495
+ function isFieldError(value) {
496
+ return isRecord(value) && !Array.isArray(value) && typeof value.field === "string" && typeof value.code === "string" && typeof value.message === "string";
497
+ }
498
+ function fieldErrorsFromUnknown(value) {
499
+ if (!Array.isArray(value)) return void 0;
500
+ return value.every(isFieldError) ? value : void 0;
501
+ }
489
502
  function getBlockApiErrorDetails(data) {
490
503
  if (!isRecord(data)) return {};
491
504
  const nestedError = isRecord(data.error) ? data.error : void 0;
505
+ const message = typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0;
506
+ const code = typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0;
507
+ const fieldErrors = fieldErrorsFromUnknown(nestedError?.fieldErrors) ?? fieldErrorsFromUnknown(data.fieldErrors);
492
508
  return {
493
- message: typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0,
494
- code: typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0
509
+ message,
510
+ code,
511
+ tag: typeof nestedError?.tag === "string" ? nestedError.tag : void 0,
512
+ fieldErrors
495
513
  };
496
514
  }
497
515
  function buildUnexpectedJsonResponseMessage(parseResult) {
@@ -510,7 +528,9 @@ async function extractErrorDetails(response) {
510
528
  const details = getBlockApiErrorDetails(parseResult.value);
511
529
  return {
512
530
  message: details.message ?? fallbackMessage,
513
- code: details.code
531
+ code: details.code,
532
+ tag: details.tag,
533
+ fieldErrors: details.fieldErrors
514
534
  };
515
535
  }
516
536
  case "invalid-json": return { message: `${fallbackMessage} (received invalid JSON)` };
@@ -607,7 +627,7 @@ function createBlockApi(config) {
607
627
  const response = await fetch(url, fetchOptions);
608
628
  if (!response.ok) {
609
629
  const details = await extractErrorDetails(response);
610
- throw new BlockApiError(details.message, response.status, details.code);
630
+ throw new BlockApiError(details.message, response.status, details.code, details.tag, details.fieldErrors);
611
631
  }
612
632
  const json = await parseJsonApiResponse(response);
613
633
  if (isApiSuccessResponse(json)) return json.data;
@@ -711,6 +731,14 @@ function createBlockApi(config) {
711
731
  serviceId: params.serviceId
712
732
  } });
713
733
  },
734
+ async getPublicEventCalendarWindow(params = {}) {
735
+ const path = buildPath(EVENTS.calendarWindow.path, { siteId: requireSiteId() });
736
+ const result = await request(EVENTS.calendarWindow, {
737
+ path,
738
+ query: params
739
+ });
740
+ return calendarWindowPageSchema.parse(result);
741
+ },
714
742
  async getPublicEvents(params) {
715
743
  const sid = requireSiteId();
716
744
  const path = buildPath(EVENTS.list.path, { siteId: sid });
@@ -1114,4 +1142,4 @@ function useBlockApi() {
1114
1142
  return client;
1115
1143
  }
1116
1144
  //#endregion
1117
- export { useBlockApi as n, BlockApiProvider as t };
1145
+ export { useBlockApi as n, BlockApiError as r, BlockApiProvider as t };
@@ -0,0 +1,264 @@
1
+ import { $t as toBookingTimeZone, Ut as formatBookingDate, Wt as formatBookingDateParts, dn as assertNever, en as toScheduledBookingDateRange, it as resolveRuntimeEventDestination, qt as formatBookingTime, tn as toScheduledBookingDateTime } from "./propsDecoder-CY9gGEF7.mjs";
2
+ import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-xj7MPZlK.mjs";
3
+ //#region ../blocks/src/system/runtime/nodes/events/domain/cta.ts
4
+ /**
5
+ * Booking call-to-action resolution for events: where an event links to and
6
+ * what the button says. Sold-out and waitlist decisions come from capacity.ts
7
+ * so cards, rows and the wizard never disagree.
8
+ */
9
+ function closedEventBookingLabel(reason) {
10
+ switch (reason) {
11
+ case "occurrence_cancelled":
12
+ case "series_cancelled": return "Cancelled";
13
+ case "occurrence_completed":
14
+ case "series_completed": return "Completed";
15
+ case "series_draft":
16
+ case "series_archived":
17
+ case "parent_archived":
18
+ case "parent_inconsistent":
19
+ case "not_public":
20
+ case "already_started":
21
+ case "enrollment_closed": return "Registration closed";
22
+ default: return assertNever(reason);
23
+ }
24
+ }
25
+ function resolveEventHref(event) {
26
+ const destination = resolveRuntimeEventDestination(event);
27
+ return destination.kind === "external" ? destination.url : destination.path;
28
+ }
29
+ function resolveEventLinkProps(event) {
30
+ const href = resolveEventHref(event);
31
+ return resolveRuntimeEventDestination(event).kind === "external" ? {
32
+ href,
33
+ target: "_blank",
34
+ rel: "noopener noreferrer"
35
+ } : { href };
36
+ }
37
+ /**
38
+ * Resolve the CTA state for an event.
39
+ * Shared by EventCard and EventCompactRow to keep sold-out, registration-closed,
40
+ * and course-specific defaults consistent.
41
+ */
42
+ function resolveEventCta(event, buttonText) {
43
+ const isSoldOut = isEventFull(event);
44
+ const destination = resolveRuntimeEventDestination(event);
45
+ const isExternal = destination.kind === "external";
46
+ const defaultButtonText = isExternal ? destination.label : event.bookingScope === "whole_series" ? "Book now" : "Book";
47
+ const effectiveButtonText = buttonText ?? defaultButtonText;
48
+ const href = resolveEventHref(event);
49
+ if (event.bookingAvailability.kind === "closed") {
50
+ const linksToClosedWholeSeriesDetails = event.bookingAvailability.reason === "enrollment_closed" && !isExternal;
51
+ return {
52
+ label: closedEventBookingLabel(event.bookingAvailability.reason),
53
+ href,
54
+ external: isExternal,
55
+ hidden: !linksToClosedWholeSeriesDetails
56
+ };
57
+ }
58
+ if (!isExternal && isSoldOut) {
59
+ if (canJoinEventWaitlistOnAnyMode(event)) return {
60
+ label: "Join waitlist",
61
+ href,
62
+ external: false,
63
+ hidden: false
64
+ };
65
+ return {
66
+ label: "Sold out",
67
+ href,
68
+ external: false,
69
+ hidden: true
70
+ };
71
+ }
72
+ return {
73
+ label: effectiveButtonText,
74
+ href,
75
+ external: isExternal,
76
+ hidden: false
77
+ };
78
+ }
79
+ //#endregion
80
+ //#region ../calendar/src/timezone.ts
81
+ /**
82
+ * Timezone boundary helpers — internal.
83
+ *
84
+ * Both functions read an ISO instant in a given IANA timezone and project it
85
+ * onto the wall clock of that zone. They use Intl.DateTimeFormat with
86
+ * hourCycle: 'h23' to avoid 12/24-hour ambiguity. Used internally by the
87
+ * timetable model and `groupItemsByDate`; not exported from the package's
88
+ * public surface.
89
+ */
90
+ const MINUTES_PER_HOUR = 60;
91
+ /**
92
+ * Local minute-of-day [0, 24*60) for an ISO instant in the given zone.
93
+ * Returns NaN if the inputs cannot be parsed (caller should drop the item).
94
+ */
95
+ function getLocalMinuteOfDay(isoTimestamp, timeZone) {
96
+ const date = new Date(isoTimestamp);
97
+ if (Number.isNaN(date.getTime())) return NaN;
98
+ if (!isValidTimeZone(timeZone)) return NaN;
99
+ const parts = new Intl.DateTimeFormat("en-GB", {
100
+ timeZone,
101
+ hour: "2-digit",
102
+ minute: "2-digit",
103
+ hourCycle: "h23"
104
+ }).formatToParts(date);
105
+ const hourPart = Number(parts.find((part) => part.type === "hour")?.value);
106
+ const minute = Number(parts.find((part) => part.type === "minute")?.value);
107
+ const hour = hourPart === 24 ? 0 : hourPart;
108
+ if (Number.isNaN(hour) || Number.isNaN(minute)) return NaN;
109
+ return hour * MINUTES_PER_HOUR + minute;
110
+ }
111
+ /**
112
+ * Local YYYY-MM-DD for an ISO instant in the given zone.
113
+ * Returns null if the inputs cannot be parsed.
114
+ */
115
+ function getLocalDateKey(isoTimestamp, timeZone) {
116
+ const date = new Date(isoTimestamp);
117
+ if (Number.isNaN(date.getTime())) return null;
118
+ if (!isValidTimeZone(timeZone)) return null;
119
+ const parts = new Intl.DateTimeFormat("en-CA", {
120
+ timeZone,
121
+ year: "numeric",
122
+ month: "2-digit",
123
+ day: "2-digit"
124
+ }).formatToParts(date);
125
+ const year = parts.find((part) => part.type === "year")?.value;
126
+ const month = parts.find((part) => part.type === "month")?.value;
127
+ const day = parts.find((part) => part.type === "day")?.value;
128
+ if (year === void 0 || year.length === 0) return null;
129
+ if (month === void 0 || month.length === 0) return null;
130
+ if (day === void 0 || day.length === 0) return null;
131
+ return `${year}-${month}-${day}`;
132
+ }
133
+ const validTimeZoneCache = /* @__PURE__ */ new Map();
134
+ function isValidTimeZone(timeZone) {
135
+ if (typeof timeZone !== "string" || timeZone.length === 0) return false;
136
+ const cached = validTimeZoneCache.get(timeZone);
137
+ if (cached !== void 0) return cached;
138
+ try {
139
+ new Intl.DateTimeFormat("en-US", { timeZone });
140
+ validTimeZoneCache.set(timeZone, true);
141
+ return true;
142
+ } catch {
143
+ validTimeZoneCache.set(timeZone, false);
144
+ return false;
145
+ }
146
+ }
147
+ //#endregion
148
+ //#region ../calendar/src/group.ts
149
+ /**
150
+ * Group items by their local date (YYYY-MM-DD in the item's own timezone).
151
+ *
152
+ * Generic over `T`. Items with un-parseable startsAt or invalid timezone are
153
+ * silently dropped — call sites that need diagnostics should validate upstream.
154
+ *
155
+ * The output map preserves insertion order of dates (ES2015 spec) and the
156
+ * relative order of items within each date matches input order.
157
+ */
158
+ function groupItemsByDate(items, accessors) {
159
+ const grouped = /* @__PURE__ */ new Map();
160
+ for (const item of items) {
161
+ const dateKey = getLocalDateKey(accessors.getStartsAt(item), accessors.getTimeZone(item));
162
+ if (dateKey == null) continue;
163
+ const existing = grouped.get(dateKey);
164
+ if (existing !== void 0) existing.push(item);
165
+ else grouped.set(dateKey, [item]);
166
+ }
167
+ return grouped;
168
+ }
169
+ //#endregion
170
+ //#region ../blocks/src/system/runtime/nodes/events/domain/dates.ts
171
+ /**
172
+ * Date and time presentation for events: the single place an event's
173
+ * timestamps become strings or date buckets. Calendar-grid primitives are
174
+ * re-exported from @riverbankcms/calendar so block code has one import.
175
+ */
176
+ /**
177
+ * Format date for display.
178
+ * Returns: "Monday, January 15, 2025"
179
+ */
180
+ function formatDate(isoTimestamp, options) {
181
+ return formatBookingDate(toScheduledBookingDateTime({
182
+ startsAt: isoTimestamp,
183
+ timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
184
+ locale: options?.locale ?? "en-US"
185
+ }), {
186
+ weekday: "long",
187
+ year: "numeric",
188
+ month: "long",
189
+ day: "numeric"
190
+ });
191
+ }
192
+ /**
193
+ * Format time for display.
194
+ * Returns: "10:00 AM"
195
+ */
196
+ function formatTime(isoTimestamp, options) {
197
+ return formatBookingTime(toScheduledBookingDateTime({
198
+ startsAt: isoTimestamp,
199
+ timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
200
+ locale: options?.locale ?? "en-US"
201
+ }), {
202
+ hour: "numeric",
203
+ minute: "2-digit",
204
+ hour12: true
205
+ });
206
+ }
207
+ function formatEventDateParts(args) {
208
+ const scheduledRange = toScheduledBookingDateRange({
209
+ startsAt: args.startsAt,
210
+ endsAt: args.endsAt,
211
+ timeZone: toBookingTimeZone(args.timeZone ?? "UTC"),
212
+ locale: args.locale ?? "en-US"
213
+ });
214
+ const { date, time: start } = formatBookingDateParts(scheduledRange, { dateFormat: {
215
+ weekday: "long",
216
+ year: "numeric",
217
+ month: "long",
218
+ day: "numeric"
219
+ } });
220
+ return {
221
+ date,
222
+ timeRange: `${start} – ${formatBookingTime(toScheduledBookingDateTime({
223
+ startsAt: args.endsAt,
224
+ timeZone: scheduledRange.timeZone,
225
+ locale: args.locale ?? "en-US"
226
+ }))}`
227
+ };
228
+ }
229
+ function formatEventCompactDateRail(isoTimestamp, options) {
230
+ const dateTime = toScheduledBookingDateTime({
231
+ startsAt: isoTimestamp,
232
+ timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
233
+ locale: options?.locale ?? "en-US"
234
+ });
235
+ const weekday = formatBookingDate(dateTime, { weekday: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
236
+ const month = formatBookingDate(dateTime, { month: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
237
+ return {
238
+ weekday,
239
+ day: formatBookingDate(dateTime, { day: "numeric" }),
240
+ month,
241
+ label: formatBookingDate(dateTime, {
242
+ weekday: "long",
243
+ year: "numeric",
244
+ month: "long",
245
+ day: "numeric"
246
+ })
247
+ };
248
+ }
249
+ /**
250
+ * Group events by their local date (YYYY-MM-DD key in each event's own
251
+ * timezone). Thin domain wrapper over `groupItemsByDate` from the calendar
252
+ * package; preserves the historical `Map<string, PublicEvent[]>` shape.
253
+ */
254
+ function groupEventsByDate(events, calendarTimeZone) {
255
+ const grouped = groupItemsByDate(events, {
256
+ getStartsAt: (event) => event.startsAt,
257
+ getTimeZone: () => calendarTimeZone
258
+ });
259
+ const map = /* @__PURE__ */ new Map();
260
+ for (const [dateKey, bucket] of grouped) map.set(dateKey, [...bucket]);
261
+ return map;
262
+ }
263
+ //#endregion
264
+ export { groupEventsByDate as a, resolveEventCta as c, formatTime as i, resolveEventLinkProps as l, formatEventCompactDateRail as n, getLocalDateKey as o, formatEventDateParts as r, getLocalMinuteOfDay as s, formatDate as t };
@@ -1,12 +1,14 @@
1
1
  "use client";
2
2
  import { D as clsx } from "./colorStyles-CrxJrPjJ.mjs";
3
- import { $ as getLocalMinuteOfDay, E as buildEventCalendarListingRender, H as formatEventTeacherLine, J as resolveEventLinkProps, K as groupEventsByDate, M as buildEventRuntimeFilters, N as getEventRuntimeFiltersKey, Q as getLocalDateKey, U as formatTime, X as getEventAvailability, Z as getEventAvailabilityStatus, st as themeButtonClassName, t as defineIslandPropsDecoder } from "./propsDecoder-pzBeCh14.mjs";
4
- import { o as EventFilters, t as useEventFilters } from "./useEventFilters-DeeyGYuk.mjs";
5
- import { a as CalendarDayCell, c as useCalendarEvents, d as formatDateKey, f as getDayOfWeek, g as isToday, h as isSameCalendarDay, i as WeekAgendaView, l as MONTH_NAMES, m as getWeekCalendarDays, o as EventModalProvider, p as getOrderedDayNames, r as EventModals, s as useEventModal, t as EventCombinedClient, u as addDays } from "./EventCombined.client-BWVNlXTx.mjs";
6
- import { t as BlockApiProvider } from "./context-BImarOAq.mjs";
3
+ import { $ as getOrderedDayNames, B as buildEventRuntimeFilters, E as buildEventCalendarListingRender, J as addDays, Q as getDayOfWeek, Z as formatDateKey, et as getWeekCalendarDays, nt as isToday, q as MONTH_NAMES, t as defineIslandPropsDecoder, tt as isSameCalendarDay, ut as themeButtonClassName, z as resolveCalendarReadProfile } from "./propsDecoder-CY9gGEF7.mjs";
4
+ import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-1a1by4c8.mjs";
5
+ import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-xj7MPZlK.mjs";
6
+ import { a as groupEventsByDate, i as formatTime, l as resolveEventLinkProps, o as getLocalDateKey, s as getLocalMinuteOfDay } from "./dates-DCYhZBlW.mjs";
7
+ import { t as BlockApiProvider } from "./context-DBzX85Xc.mjs";
7
8
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
8
9
  import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-UNsfPcYq.mjs";
9
- import { n as EventListingController } from "./EventListing.client-DVFCDe3i.mjs";
10
+ import { n as EventListingController } from "./EventListing.client-99qx7jFl.mjs";
11
+ import { a as CalendarDayCell, c as useCalendarEvents, i as WeekAgendaView, o as EventModalProvider, r as EventModals, s as useEventModal, t as EventCombinedClient } from "./EventCombined.client-a02TXUgg.mjs";
10
12
  import { useEffect, useId, useMemo, useState } from "react";
11
13
  import { jsx, jsxs } from "react/jsx-runtime";
12
14
  //#region ../calendar/src/lane-packing.ts
@@ -630,7 +632,7 @@ function buildTimetableModel(input) {
630
632
  getEndsAt: (event) => event.endsAt,
631
633
  getTimeZone: (event) => event.timeZone ?? "UTC",
632
634
  getColor: (event) => event.eventCategory?.color ?? null,
633
- getOrderKey: (event) => `${event.title}${event.id}`
635
+ getOrderKey: (event) => `${event.title}\u0000${event.id}`
634
636
  });
635
637
  return {
636
638
  hourTicks: [...generic.hourTicks],
@@ -667,18 +669,9 @@ function toEventCell(cell) {
667
669
  };
668
670
  }
669
671
  function formatTimetableCapacity(event) {
670
- const { available, isFull } = getEventAvailability(event);
671
- if (available == null) return {
672
- label: null,
673
- isFull: false
674
- };
675
- if (isFull) return {
676
- label: "Full",
677
- isFull: true
678
- };
679
672
  return {
680
- label: `${available} spots left`,
681
- isFull: false
673
+ label: formatEventRemainingPlaces(event, { compact: true }),
674
+ isFull: isEventFull(event)
682
675
  };
683
676
  }
684
677
  function formatEventTimeRange(event) {
@@ -863,7 +856,8 @@ const EventCalendarClient = ({ render }) => {
863
856
  buttonText: display.buttonText,
864
857
  emptyMessage: display.emptyMessage,
865
858
  className: display.className ?? void 0,
866
- calendarContext: hydration.calendarContext
859
+ calendarContext: hydration.calendarContext,
860
+ calendarWindow: hydration.calendarWindow
867
861
  });
868
862
  if (display.displayMode === "list") return /* @__PURE__ */ jsx(EventListingController, { render: buildEventCalendarListingRender(render) });
869
863
  if (display.displayMode === "timetable") return /* @__PURE__ */ jsx(EventCalendarTimetableClient, { render });
@@ -880,16 +874,16 @@ const EventCalendarWeekBoardClient = ({ render }) => {
880
874
  display.filterVenueId,
881
875
  display.scheduleScope
882
876
  ]);
883
- const initialEvents = usePrefetchedCalendarEvents(display, filters);
884
877
  const { events, viewport, loadState, goToPrevious, goToNext, goToToday, retryCurrentView } = useCalendarEvents({
878
+ readProfile: resolveCalendarReadProfile({ variant: display.displayMode }),
885
879
  siteId: hydration.siteId,
886
- initialEvents,
887
880
  view: "week",
888
881
  startOfWeek: display.startOfWeek,
889
882
  preloadMonths: 1,
890
883
  filters,
891
884
  stage: hydration.stage,
892
- calendarContext: hydration.calendarContext
885
+ calendarContext: hydration.calendarContext,
886
+ calendarWindow: hydration.calendarWindow
893
887
  });
894
888
  const weekBoardLoadState = loadState.kind === "error" ? {
895
889
  kind: "error",
@@ -912,16 +906,16 @@ const EventCalendarWeekBoardClient = ({ render }) => {
912
906
  const EventCalendarTimetableClient = ({ render }) => {
913
907
  const { display, hydration } = render;
914
908
  const { filtersNode, listFilters } = useEventCalendarFilterState(display);
915
- const calendarInitialEvents = usePrefetchedCalendarEvents(display, listFilters);
916
909
  const { events, viewDate, viewport, loadState, retryCurrentView, goToPrevious, goToNext, goToToday } = useCalendarEvents({
910
+ readProfile: resolveCalendarReadProfile({ variant: display.displayMode }),
917
911
  siteId: hydration.siteId,
918
- initialEvents: calendarInitialEvents,
919
912
  view: "week",
920
913
  startOfWeek: display.startOfWeek,
921
914
  preloadMonths: 1,
922
915
  filters: listFilters,
923
916
  stage: hydration.stage,
924
- calendarContext: hydration.calendarContext
917
+ calendarContext: hydration.calendarContext,
918
+ calendarWindow: hydration.calendarWindow
925
919
  });
926
920
  return /* @__PURE__ */ jsxs(EventModalProvider, { children: [/* @__PURE__ */ jsx(EventCalendarChrome, {
927
921
  display,
@@ -953,16 +947,16 @@ const EventCalendarGridClient = ({ render }) => {
953
947
  const { display, hydration } = render;
954
948
  const calendarView = display.defaultCalendarView;
955
949
  const { filtersNode, listFilters } = useEventCalendarFilterState(display);
956
- const calendarInitialEvents = usePrefetchedCalendarEvents(display, listFilters);
957
950
  const { events, viewDate, viewport, loadState, retryCurrentView, goToPrevious, goToNext, goToToday } = useCalendarEvents({
951
+ readProfile: resolveCalendarReadProfile({ variant: display.displayMode }),
958
952
  siteId: hydration.siteId,
959
- initialEvents: calendarInitialEvents,
960
953
  view: calendarView,
961
954
  startOfWeek: display.startOfWeek,
962
955
  preloadMonths: 1,
963
956
  filters: listFilters,
964
957
  stage: hydration.stage,
965
- calendarContext: hydration.calendarContext
958
+ calendarContext: hydration.calendarContext,
959
+ calendarWindow: hydration.calendarWindow
966
960
  });
967
961
  const eventsByDate = useMemo(() => groupEventsByDate(events, hydration.calendarContext.timeZone), [events, hydration.calendarContext.timeZone]);
968
962
  const dayNames = useMemo(() => getOrderedDayNames(display.startOfWeek), [display.startOfWeek]);
@@ -1048,23 +1042,6 @@ function useEventCalendarFilterState(display) {
1048
1042
  }) : null
1049
1043
  };
1050
1044
  }
1051
- function usePrefetchedCalendarEvents(display, listFilters) {
1052
- const initialFilters = useMemo(() => buildDisplayFilterParams(display), [
1053
- display.eventSurface,
1054
- display.filterCategoryIds,
1055
- display.filterEventPresets,
1056
- display.filterStaffMemberId,
1057
- display.filterVenueId,
1058
- display.scheduleScope
1059
- ]);
1060
- return useMemo(() => {
1061
- return getEventRuntimeFiltersKey(initialFilters) === getEventRuntimeFiltersKey(listFilters) ? [...display.events] : [];
1062
- }, [
1063
- display.events,
1064
- initialFilters,
1065
- listFilters
1066
- ]);
1067
- }
1068
1045
  function buildDisplayFilterParams(display) {
1069
1046
  return buildEventRuntimeFilters({
1070
1047
  eventSurface: display.eventSurface,
@@ -1,8 +1,8 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-pzBeCh14.mjs";
2
- import { n as EventCombinedIslandClient } from "./EventCombined.client-BWVNlXTx.mjs";
3
- import { t as BlockApiProvider } from "./context-BImarOAq.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CY9gGEF7.mjs";
2
+ import { t as BlockApiProvider } from "./context-DBzX85Xc.mjs";
4
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
4
  import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-UNsfPcYq.mjs";
5
+ import { n as EventCombinedIslandClient } from "./EventCombined.client-a02TXUgg.mjs";
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/rendering/islands/enhancers/eventCombined.tsx