@riverbankcms/sdk 0.138.0 → 0.139.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 (208) hide show
  1. package/README.md +11 -15
  2. package/dist/{PreviewEditorSidebar-BVPur_CU.mjs → PreviewEditorSidebar-BDeenhi3.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DLhWX8oh.mjs → PreviewEditorUI-DSRhgjF5.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BguJY1SW.mjs → PreviewQueryProvider-D2K8GLUG.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Tda6qw4z.mjs → SdkPreviewModeRuntime-CL7wSnYu.mjs} +47 -27
  6. package/dist/{SiteChromeCustomizeContext-BHFgMjde.mjs → SiteChromeCustomizeContext-BhDn-5ir.mjs} +7771 -5863
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +99 -330
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +9 -30
  9. package/dist/_dts/api/src/billing.d.ts +10 -3
  10. package/dist/_dts/api/src/contentRuntime.d.ts +8 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +182 -103
  12. package/dist/_dts/api/src/footerSettings.d.ts +2 -5
  13. package/dist/_dts/api/src/index.d.ts +11 -9
  14. package/dist/_dts/api/src/mailchimpIntegration.d.ts +2 -59
  15. package/dist/_dts/api/src/mailingListIntegration.d.ts +117 -0
  16. package/dist/_dts/api/src/navigation/locations.d.ts +1 -0
  17. package/dist/_dts/api/src/navigation.d.ts +1 -26
  18. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +109 -2
  19. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +185 -0
  20. package/dist/_dts/api/src/privacyPolicy.d.ts +74 -2
  21. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +6 -6
  22. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +1 -1
  23. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +2 -4
  24. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +10 -24
  25. package/dist/_dts/api/src/publicReadEndpointDefinitions.d.ts +73 -0
  26. package/dist/_dts/api/src/schemas/site-api-keys.d.ts +1 -1
  27. package/dist/_dts/api/src/sdkContracts.d.ts +2 -10
  28. package/dist/_dts/api/src/sdkThemeWire.d.ts +2 -2
  29. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +0 -29
  30. package/dist/_dts/api/src/siteOnboarding.d.ts +91 -228
  31. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -9
  32. package/dist/_dts/api/src/siteSettings.d.ts +20 -1
  33. package/dist/_dts/api/src/types.d.ts +5 -4
  34. package/dist/_dts/billing/src/membership/index.d.ts +14 -7
  35. package/dist/_dts/billing/src/plans/display.d.ts +15 -0
  36. package/dist/_dts/billing/src/plans/registry.d.ts +2 -0
  37. package/dist/_dts/billing/src/plans/standing.d.ts +19 -0
  38. package/dist/_dts/billing/src/plans/types.d.ts +1 -7
  39. package/dist/_dts/billing/src/subscriptions/evidence.d.ts +12 -0
  40. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +31 -0
  41. package/dist/_dts/billing/src/subscriptions/store.d.ts +23 -5
  42. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -15
  43. package/dist/_dts/blocks/src/client.d.ts +1 -1
  44. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +32 -16
  45. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +4 -0
  46. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +12 -6
  47. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +11 -0
  48. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +39 -66
  49. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +39 -114
  50. package/dist/_dts/blocks/src/system/blocks/offerings-preview/catalogue.d.ts +18 -0
  51. package/dist/_dts/blocks/src/system/blocks/offerings-preview/fields.d.ts +2 -0
  52. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +4 -0
  53. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +7 -13
  54. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  56. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  57. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +2 -74
  58. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +33 -100
  59. package/dist/_dts/blocks/src/system/runtime/api/types/newsletter.d.ts +5 -15
  60. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -24
  61. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -12
  62. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -0
  63. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarToday.d.ts +22 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +51 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -0
  67. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +0 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +28 -0
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/bookability.d.ts +9 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +14 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/duration.d.ts +2 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +4 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/location.d.ts +2 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/quickDates.d.ts +16 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/AgendaEventCard.d.ts +9 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +2 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayHeaders.d.ts +4 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  79. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +5 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventQuickDates.d.ts +15 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +7 -3
  83. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +1 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +2 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/useHydrationReady.d.ts +6 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +56 -33
  89. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -3
  90. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +13 -31
  91. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-catalogue.d.ts +14 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-content.d.ts +23 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +4 -2
  94. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +5 -0
  95. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  96. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +5 -12
  97. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +34 -0
  98. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +6 -24
  99. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +1 -2
  100. package/dist/_dts/core/src/footer-engagement.d.ts +2 -6
  101. package/dist/_dts/core/src/index.d.ts +9 -1
  102. package/dist/_dts/core/src/mailing-list-identifiers.d.ts +21 -0
  103. package/dist/_dts/core/src/mailing-list-runtime.d.ts +42 -0
  104. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +14 -0
  105. package/dist/_dts/core/src/mailing-list-setup.d.ts +129 -0
  106. package/dist/_dts/core/src/mailing-list-submission.d.ts +244 -0
  107. package/dist/_dts/core/src/mailing-list-targeting-parser.d.ts +12 -0
  108. package/dist/_dts/core/src/mailing-list-targeting.d.ts +93 -0
  109. package/dist/_dts/core/src/navigation-locations.d.ts +28 -0
  110. package/dist/_dts/core/src/public-profile.d.ts +9 -1
  111. package/dist/_dts/core/src/public-read-cache-contract.d.ts +45 -0
  112. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +529 -373
  113. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  114. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +11 -0
  115. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +13 -0
  116. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/index.d.ts +3 -0
  117. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +6 -0
  118. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  119. package/dist/_dts/sdk/src/client/publicAppointmentReadOperations.d.ts +12 -0
  120. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +2 -1
  121. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +11 -4
  122. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -13
  123. package/dist/_dts/sdk/src/config/content-validation.d.ts +5 -8
  124. package/dist/_dts/sdk/src/constants.d.ts +3 -3
  125. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  126. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -31
  127. package/dist/_dts/sdk/src/navigation/index.d.ts +11 -29
  128. package/dist/_dts/sdk/src/next/index.d.ts +4 -4
  129. package/dist/_dts/sdk/src/prebuild/types.d.ts +1 -5
  130. package/dist/_dts/sdk/src/public-api/contracts.d.ts +33 -16
  131. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -0
  132. package/dist/_dts/sdk/src/rendering/client.d.ts +3 -20
  133. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -0
  134. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +4 -0
  135. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +1 -0
  136. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  137. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  138. package/dist/_dts/sdk/src/version.d.ts +1 -1
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +41 -0
  141. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  142. package/dist/_dts/theme-core/src/runtime/buildThemeRuntime.d.ts +0 -1
  143. package/dist/_dts/theme-core/src/tokens/tokens.d.ts +7 -0
  144. package/dist/_dts/ui/src/badge.d.ts +1 -1
  145. package/dist/_dts/ui/src/callout.d.ts +1 -1
  146. package/dist/client/{BookingConsentAgreement-DQUik1Mx.mjs → BookingConsentAgreement-CZvTDtsK.mjs} +2 -2
  147. package/dist/client/{DiscountCodeDisclosure-CU67Q4vH.mjs → DiscountCodeDisclosure-D-DsLCMU.mjs} +1 -1
  148. package/dist/client/{EventCombined.client-a02TXUgg.mjs → EventCombined.client-dWqgd5ZO.mjs} +443 -199
  149. package/dist/client/{EventListing.client-99qx7jFl.mjs → EventListing.client-BMRa9IYp.mjs} +2 -2
  150. package/dist/client/{LeafletStaticMap-CWzcq73L.mjs → LeafletStaticMap-D21W9kBZ.mjs} +1 -1
  151. package/dist/client/{accordion-D1nb3-Oj.mjs → accordion-FxF_ta47.mjs} +1 -1
  152. package/dist/client/{bookingForm-BGrmLhaO.mjs → bookingForm-YnwW4TGw.mjs} +5 -5
  153. package/dist/client/bookings.mjs +43 -2
  154. package/dist/client/{carousel-DSmOx3ad.mjs → carousel-vng7fFT5.mjs} +1 -1
  155. package/dist/client/{cart-COWeOIUk.mjs → cart-DEPDsjNk.mjs} +3 -3
  156. package/dist/client/{checkout-CeysaIJK.mjs → checkout-CZRWu9rW.mjs} +3 -3
  157. package/dist/client/client.mjs +3331 -1407
  158. package/dist/client/{context-DBzX85Xc.mjs → context-DvU_WUmd.mjs} +4 -3
  159. package/dist/client/{dates-DCYhZBlW.mjs → dates-wnPMiRl5.mjs} +21 -3
  160. package/dist/client/{eventCalendar-BgsN73Ul.mjs → eventCalendar-BA3Q5L15.mjs} +80 -78
  161. package/dist/client/{eventCombined-DcZQAMQP.mjs → eventCombined-51wgR-1R.mjs} +3 -3
  162. package/dist/client/{eventDetails-BWwGJ54l.mjs → eventDetails-modaetpm.mjs} +4 -4
  163. package/dist/client/{eventListing-DqYqV8vp.mjs → eventListing-D8t2J3Kv.mjs} +3 -3
  164. package/dist/client/{eventRegistration-DQGDgu_e.mjs → eventRegistration-CYqtkCE_.mjs} +49 -9
  165. package/dist/client/{form-ClfpasVT.mjs → form-CBKXN5In.mjs} +2 -2
  166. package/dist/client/{headerSection-BuOMe98N.mjs → headerSection-DylDqNrs.mjs} +2 -2
  167. package/dist/client/hooks.mjs +1259 -555
  168. package/dist/client/{locationMap-CEqu_sfa.mjs → locationMap-CvWrG0vZ.mjs} +2 -2
  169. package/dist/client/{newsletterForm-IbrHjMxy.mjs → newsletterForm-Btwk70zw.mjs} +117 -38
  170. package/dist/client/{pricing-xj7MPZlK.mjs → pricing-Uzw-GQ6Y.mjs} +1 -1
  171. package/dist/client/{productDetail-vxqTt5Xj.mjs → productDetail-JLcUYKnd.mjs} +3 -3
  172. package/dist/client/{productList-OTdZu8sb.mjs → productList-FM0cbUzj.mjs} +3 -3
  173. package/dist/client/{propsDecoder-CY9gGEF7.mjs → propsDecoder-DYzafZb2.mjs} +592 -152
  174. package/dist/client/rendering/client.mjs +2259 -835
  175. package/dist/client/rendering/islands.mjs +17 -17
  176. package/dist/client/rendering.mjs +3308 -1236
  177. package/dist/client/{scrollToBlock--BFV6kl-.mjs → scrollToBlock-CvXszexS.mjs} +1 -1
  178. package/dist/client/{shop-CP4YbDL9.mjs → shop-BIcjvy5a.mjs} +6 -6
  179. package/dist/client/{shop-commerce-APs4XBXE.mjs → shop-commerce-BZQsy7xw.mjs} +5 -5
  180. package/dist/client/{shop-commerce-store-CAVLxLFr.mjs → shop-commerce-store-D5V7XAb5.mjs} +1 -1
  181. package/dist/client/{shopShared-BnSRrwXI.mjs → shopShared-DowkXevB.mjs} +3 -3
  182. package/dist/client/{useEventFilters-1a1by4c8.mjs → useEventFilters-oMoTw_JE.mjs} +56 -9
  183. package/dist/preview-next/before-render.mjs +238 -111
  184. package/dist/preview-next/client/runtime.mjs +4 -4
  185. package/dist/preview-next/keepAlive.mjs +238 -111
  186. package/dist/preview-next/middleware.mjs +238 -111
  187. package/dist/{previewAuthStore-BkEgnYPP.mjs → previewAuthStore-COUyAKaX.mjs} +238 -111
  188. package/dist/{sdk-runtime-DwGfsT0S.mjs → sdk-runtime-D4k2LSGF.mjs} +2 -2
  189. package/dist/{separator-BeqDLneQ.mjs → separator-UGtpag4Z.mjs} +1 -1
  190. package/dist/server/components.mjs +2697 -1023
  191. package/dist/server/config-validation.mjs +2424 -1720
  192. package/dist/server/config.mjs +2429 -1724
  193. package/dist/server/data.mjs +1164 -454
  194. package/dist/server/index.mjs +364 -280
  195. package/dist/server/navigation.mjs +16 -47
  196. package/dist/server/next.mjs +2915 -1380
  197. package/dist/server/page-converter.mjs +969 -522
  198. package/dist/server/prebuild.mjs +2 -3
  199. package/dist/server/rendering/server.mjs +2704 -1030
  200. package/dist/server/rendering.mjs +2742 -1063
  201. package/dist/server/routing.mjs +1386 -595
  202. package/dist/server/server.mjs +2878 -2324
  203. package/dist/server/theme-bridge.mjs +292 -24
  204. package/dist/styles/index.css +289 -25
  205. package/package.json +1 -1
  206. package/dist/_dts/api/src/navigation/identity.d.ts +0 -59
  207. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +0 -291
  208. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +0 -38
@@ -783,18 +783,22 @@ export declare const runtimeBackedBlockClientEntries: {
783
783
  buildRender: (source: import("../nodes/newsletter-form.types").NewsletterFormProps) => Readonly<{
784
784
  display: Readonly<{
785
785
  kind: "newsletter-form";
786
+ availability: "ready" | "unavailable";
786
787
  className: string | null;
787
788
  buttonLabel: string;
788
789
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
789
- successMessage: string | null;
790
790
  privacyNote: string | null;
791
791
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
792
+ choices: readonly Readonly<{
793
+ id: string;
794
+ label: string;
795
+ }>[];
792
796
  }>;
793
797
  hydration: Readonly<{
794
798
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
795
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
796
- includePhone: boolean;
797
- tags?: string | null;
799
+ setupRevision: number | null;
800
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
801
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
798
802
  spamProtectionEnabled?: boolean;
799
803
  }>;
800
804
  }>;
@@ -807,36 +811,44 @@ export declare const runtimeBackedBlockClientEntries: {
807
811
  encode: (value: Readonly<{
808
812
  display: Readonly<{
809
813
  kind: "newsletter-form";
814
+ availability: "ready" | "unavailable";
810
815
  className: string | null;
811
816
  buttonLabel: string;
812
817
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
813
- successMessage: string | null;
814
818
  privacyNote: string | null;
815
819
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
820
+ choices: readonly Readonly<{
821
+ id: string;
822
+ label: string;
823
+ }>[];
816
824
  }>;
817
825
  hydration: Readonly<{
818
826
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
819
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
820
- includePhone: boolean;
821
- tags?: string | null;
827
+ setupRevision: number | null;
828
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
829
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
822
830
  spamProtectionEnabled?: boolean;
823
831
  }>;
824
832
  }>) => unknown;
825
833
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
826
834
  display: Readonly<{
827
835
  kind: "newsletter-form";
836
+ availability: "ready" | "unavailable";
828
837
  className: string | null;
829
838
  buttonLabel: string;
830
839
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
831
- successMessage: string | null;
832
840
  privacyNote: string | null;
833
841
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
842
+ choices: readonly Readonly<{
843
+ id: string;
844
+ label: string;
845
+ }>[];
834
846
  }>;
835
847
  hydration: Readonly<{
836
848
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
837
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
838
- includePhone: boolean;
839
- tags?: string | null;
849
+ setupRevision: number | null;
850
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
851
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
840
852
  spamProtectionEnabled?: boolean;
841
853
  }>;
842
854
  }>>;
@@ -851,18 +863,22 @@ export declare const runtimeBackedBlockClientEntries: {
851
863
  buildRender: (source: import("../nodes/newsletter-form.types").NewsletterFormProps) => Readonly<{
852
864
  display: Readonly<{
853
865
  kind: "newsletter-form";
866
+ availability: "ready" | "unavailable";
854
867
  className: string | null;
855
868
  buttonLabel: string;
856
869
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
857
- successMessage: string | null;
858
870
  privacyNote: string | null;
859
871
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
872
+ choices: readonly Readonly<{
873
+ id: string;
874
+ label: string;
875
+ }>[];
860
876
  }>;
861
877
  hydration: Readonly<{
862
878
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
863
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
864
- includePhone: boolean;
865
- tags?: string | null;
879
+ setupRevision: number | null;
880
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
881
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
866
882
  spamProtectionEnabled?: boolean;
867
883
  }>;
868
884
  }>;
@@ -875,36 +891,44 @@ export declare const runtimeBackedBlockClientEntries: {
875
891
  encode: (value: Readonly<{
876
892
  display: Readonly<{
877
893
  kind: "newsletter-form";
894
+ availability: "ready" | "unavailable";
878
895
  className: string | null;
879
896
  buttonLabel: string;
880
897
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
881
- successMessage: string | null;
882
898
  privacyNote: string | null;
883
899
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
900
+ choices: readonly Readonly<{
901
+ id: string;
902
+ label: string;
903
+ }>[];
884
904
  }>;
885
905
  hydration: Readonly<{
886
906
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
887
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
888
- includePhone: boolean;
889
- tags?: string | null;
907
+ setupRevision: number | null;
908
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
909
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
890
910
  spamProtectionEnabled?: boolean;
891
911
  }>;
892
912
  }>) => unknown;
893
913
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
894
914
  display: Readonly<{
895
915
  kind: "newsletter-form";
916
+ availability: "ready" | "unavailable";
896
917
  className: string | null;
897
918
  buttonLabel: string;
898
919
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
899
- successMessage: string | null;
900
920
  privacyNote: string | null;
901
921
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
922
+ choices: readonly Readonly<{
923
+ id: string;
924
+ label: string;
925
+ }>[];
902
926
  }>;
903
927
  hydration: Readonly<{
904
928
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
905
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
906
- includePhone: boolean;
907
- tags?: string | null;
929
+ setupRevision: number | null;
930
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
931
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
908
932
  spamProtectionEnabled?: boolean;
909
933
  }>;
910
934
  }>>;
@@ -396,18 +396,22 @@ export declare const runtimeBackedBlockServerEntries: {
396
396
  buildRender: (source: import("../nodes/newsletter-form.types").NewsletterFormProps) => Readonly<{
397
397
  display: Readonly<{
398
398
  kind: "newsletter-form";
399
+ availability: "ready" | "unavailable";
399
400
  className: string | null;
400
401
  buttonLabel: string;
401
402
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
402
- successMessage: string | null;
403
403
  privacyNote: string | null;
404
404
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
405
+ choices: readonly Readonly<{
406
+ id: string;
407
+ label: string;
408
+ }>[];
405
409
  }>;
406
410
  hydration: Readonly<{
407
411
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
408
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
409
- includePhone: boolean;
410
- tags?: string | null;
412
+ setupRevision: number | null;
413
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
414
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
411
415
  spamProtectionEnabled?: boolean;
412
416
  }>;
413
417
  }>;
@@ -420,36 +424,44 @@ export declare const runtimeBackedBlockServerEntries: {
420
424
  encode: (value: Readonly<{
421
425
  display: Readonly<{
422
426
  kind: "newsletter-form";
427
+ availability: "ready" | "unavailable";
423
428
  className: string | null;
424
429
  buttonLabel: string;
425
430
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
426
- successMessage: string | null;
427
431
  privacyNote: string | null;
428
432
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
433
+ choices: readonly Readonly<{
434
+ id: string;
435
+ label: string;
436
+ }>[];
429
437
  }>;
430
438
  hydration: Readonly<{
431
439
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
432
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
433
- includePhone: boolean;
434
- tags?: string | null;
440
+ setupRevision: number | null;
441
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
442
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
435
443
  spamProtectionEnabled?: boolean;
436
444
  }>;
437
445
  }>) => unknown;
438
446
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
439
447
  display: Readonly<{
440
448
  kind: "newsletter-form";
449
+ availability: "ready" | "unavailable";
441
450
  className: string | null;
442
451
  buttonLabel: string;
443
452
  buttonVariant: import("../nodes/newsletter-form.types").NewsletterButtonVariant;
444
- successMessage: string | null;
445
453
  privacyNote: string | null;
446
454
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
455
+ choices: readonly Readonly<{
456
+ id: string;
457
+ label: string;
458
+ }>[];
447
459
  }>;
448
460
  hydration: Readonly<{
449
461
  target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
450
- preset: import("../nodes/newsletter-form.types").NewsletterPreset;
451
- includePhone: boolean;
452
- tags?: string | null;
462
+ setupRevision: number | null;
463
+ choiceProvider: "native" | "brevo" | "mailchimp" | null;
464
+ choicePresentation: "hidden" | "automatic" | "visitor_choice";
453
465
  spamProtectionEnabled?: boolean;
454
466
  }>;
455
467
  }>>;
@@ -35,6 +35,8 @@ export type CalendarEventsState<Kind extends CalendarViewportKind> = {
35
35
  events: PublicEvent[];
36
36
  /** Current view date (anchor of the calendar viewport) */
37
37
  viewDate: CalendarDate;
38
+ /** Current civil day in the site timezone. */
39
+ today: CalendarDate;
38
40
  /** Derived calendar viewport for the current view date */
39
41
  viewport: CalendarViewportFor<Kind>;
40
42
  /** Whether events are being loaded */
@@ -54,6 +56,7 @@ type UseCalendarViewportOptions = Readonly<{
54
56
  view?: CalendarViewportKind;
55
57
  startOfWeek?: WeekStart;
56
58
  initialDate: CalendarDate;
59
+ today: CalendarDate;
57
60
  }>;
58
61
  /**
59
62
  * Owns calendar viewport state only: selected anchor date, derived visible
@@ -1,4 +1,4 @@
1
- import type { CalendarDate } from '../../../../../calendar/src/index';
1
+ import { type CalendarDate } from '../../../../../calendar/src/index';
2
2
  import type { PublicEvent } from '../../blocks/events/shared/types';
3
3
  import { type CalendarWindowPage, type CalendarMonthWindow, type CalendarSourceCursor } from '../../blocks/events/shared/calendarWindow';
4
4
  type MonthState = Readonly<{
@@ -0,0 +1,22 @@
1
+ import { type BookingTimeZone } from '../../../../../core/src/index';
2
+ import { type CalendarDate } from '../../../../../calendar/src/index';
3
+ export type CalendarTodayContext = Readonly<{
4
+ timeZone: BookingTimeZone;
5
+ initialToday: CalendarDate;
6
+ }>;
7
+ type CalendarTodayClock = Readonly<{
8
+ now: () => Date;
9
+ resolveDate?: CalendarDateResolver;
10
+ }>;
11
+ type CalendarDateBoundary = Readonly<{
12
+ kind: 'found';
13
+ instant: Date;
14
+ }> | Readonly<{
15
+ kind: 'retry';
16
+ delayMs: number;
17
+ }>;
18
+ type CalendarDateResolver = (instant: Date, timeZone: BookingTimeZone) => CalendarDate;
19
+ /** Find the first instant after `now` whose site-local civil date differs. */
20
+ export declare function findNextCalendarDateBoundary(now: Date, timeZone: BookingTimeZone, resolveDate?: CalendarDateResolver): CalendarDateBoundary;
21
+ export declare function useCalendarToday(context: CalendarTodayContext, clock?: CalendarTodayClock): CalendarDate;
22
+ export {};
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import { z } from 'zod';
3
+ declare const publicLocationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4
+ mode: z.ZodLiteral<"online">;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ mode: z.ZodLiteral<"in_person">;
7
+ venue: z.ZodNullable<z.ZodObject<{
8
+ name: z.ZodString;
9
+ area: z.ZodNullable<z.ZodString>;
10
+ }, z.core.$strip>>;
11
+ }, z.core.$strip>, z.ZodObject<{
12
+ mode: z.ZodLiteral<"either">;
13
+ venue: z.ZodNullable<z.ZodObject<{
14
+ name: z.ZodString;
15
+ area: z.ZodNullable<z.ZodString>;
16
+ }, z.core.$strip>>;
17
+ }, z.core.$strip>], "mode">;
18
+ type PublicAppointmentLocation = z.infer<typeof publicLocationSchema>;
19
+ export type AppointmentServiceRow = Readonly<{
20
+ id: string;
21
+ title: string;
22
+ description: string | null;
23
+ durationLabel: string;
24
+ locationLabel: string | null;
25
+ priceLabel: string | null;
26
+ href: string;
27
+ }>;
28
+ export type AppointmentServicesView = Readonly<{
29
+ kind: 'items';
30
+ rows: readonly AppointmentServiceRow[];
31
+ }> | Readonly<{
32
+ kind: 'empty';
33
+ message: string;
34
+ }> | Readonly<{
35
+ kind: 'error';
36
+ message: string;
37
+ }>;
38
+ export type AppointmentServicesNodeProps = Readonly<{
39
+ sectionHeading?: unknown;
40
+ services?: unknown;
41
+ pathname?: unknown;
42
+ className?: string | null;
43
+ }>;
44
+ export declare function formatAppointmentDuration(durationMinutes: number): string;
45
+ export declare function formatAppointmentLocation(location: PublicAppointmentLocation): string | null;
46
+ export declare function buildAppointmentServicesView(input: Readonly<{
47
+ services: unknown;
48
+ pathname: string | undefined;
49
+ }>): AppointmentServicesView;
50
+ export declare function AppointmentServicesNode({ sectionHeading, services, pathname, className, }: AppointmentServicesNodeProps): React.ReactElement;
51
+ export default AppointmentServicesNode;
@@ -117,6 +117,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
117
117
  isMembershipFastTrack: boolean;
118
118
  waitlistClaim: import("../../shared/useWaitlistClaim").UseWaitlistClaimResult;
119
119
  eligibility: EligibilityData | null;
120
+ registrationOptionsState: import("./hooks.state").EligibilityLookupState;
120
121
  eligibilityLoading: boolean;
121
122
  eligibilityError: string | null;
122
123
  existingRegistration: import("../../api").CustomerEventRegistration | null;
@@ -238,6 +239,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
238
239
  isMembershipFastTrack: boolean;
239
240
  waitlistClaim: import("../../shared/useWaitlistClaim").UseWaitlistClaimResult;
240
241
  eligibility: EligibilityData | null;
242
+ registrationOptionsState: import("./hooks.state").EligibilityLookupState;
241
243
  eligibilityLoading: boolean;
242
244
  eligibilityError: string | null;
243
245
  existingRegistration: import("../../api").CustomerEventRegistration | null;
@@ -56,7 +56,6 @@ type EventRegistrationIslandMeta = Readonly<{
56
56
  previewToken?: string | null;
57
57
  stage?: 'preview' | 'published';
58
58
  }>;
59
- export declare function buildEventRegistrationDisplay(source: EventRegistrationSourceProps): EventRegistrationDisplay;
60
59
  export type EventRegistrationInteractiveIslandProps = InteractiveIslandProps<EventRegistrationIslandMeta, 'event-registration', typeof eventRegistrationBlockRuntime>;
61
60
  export declare const eventRegistrationBlockRuntime: Readonly<{
62
61
  kind: "client-owned";
@@ -1,9 +1,12 @@
1
1
  import React from "react";
2
2
  import type { PublicEvent, ButtonVariant, EventLayout, ColumnOption, WeekStart, CalendarTabViews, FilterAutoShow, CalendarView, EventScheduleScope, EventSurfaceScope } from "../../../blocks/events/shared/types";
3
3
  import type { CardRole } from "../../../../../../theme-core/src/cards/index";
4
+ import { type CalendarViewLoadState } from "../../hooks/useCalendarEvents";
4
5
  import type { EventCombinedInteractiveIslandProps } from "./EventCombined.interactive";
5
6
  import type { EventCollectionHydration } from './shared/eventCollectionContract';
7
+ import { type CalendarDate, type CalendarViewport } from "./shared";
6
8
  import { type EventListPaginationAction, type EventPageSize } from "./shared/listOptions";
9
+ import { type CalendarViewToggleOption } from "./shared/calendarViewOptions";
7
10
  export type EventCombinedClientProps = Readonly<{
8
11
  events?: PublicEvent[] | null;
9
12
  siteId: string;
@@ -37,6 +40,31 @@ export type EventCombinedClientProps = Readonly<{
37
40
  calendarWindow?: EventCollectionHydration['calendarWindow'];
38
41
  }>;
39
42
  export type EventCombinedIslandClientProps = EventCombinedInteractiveIslandProps;
43
+ type EventCombinedCalendarTabProps = Readonly<{
44
+ calendarTabViews: CalendarTabViews;
45
+ calendarView: CalendarView;
46
+ calendarViewOptions: readonly CalendarViewToggleOption[];
47
+ onCalendarViewChange: (view: CalendarView) => void;
48
+ calendarEvents: PublicEvent[];
49
+ eventsByDate: Map<string, PublicEvent[]>;
50
+ viewDate: CalendarDate;
51
+ viewport: CalendarViewport;
52
+ calendarLoadState: CalendarViewLoadState;
53
+ dayNames: readonly string[];
54
+ calendarContext: EventCollectionHydration["calendarContext"];
55
+ today: CalendarDate;
56
+ goToPrevious: () => void;
57
+ goToNext: () => void;
58
+ goToToday: () => void;
59
+ emptyMessage: string;
60
+ showCapacity: boolean;
61
+ showVenue: boolean;
62
+ cardRole: CardRole;
63
+ buttonVariant: ButtonVariant;
64
+ buttonText: string;
65
+ showEmptyState: boolean;
66
+ }>;
67
+ export declare const EventCombinedCalendarTab: React.FC<EventCombinedCalendarTabProps>;
40
68
  /**
41
69
  * EventCombined Component
42
70
  *
@@ -0,0 +1,9 @@
1
+ import type { PublicEvent } from '../../../../blocks/events/shared/types';
2
+ /**
3
+ * Whether a public event has a registration path a visitor can take.
4
+ *
5
+ * Lifecycle admission comes from the public booking-availability contract;
6
+ * capacity comes from the shared event-domain helpers so uncapped, fallback,
7
+ * and hybrid attendance-mode cases agree with the registration runtime.
8
+ */
9
+ export declare function isBookableEvent(event: PublicEvent): boolean;
@@ -11,6 +11,8 @@ type DateTimeFormatOptions = {
11
11
  timeZone?: string | null;
12
12
  locale?: string;
13
13
  };
14
+ /** Use the event timezone when present, otherwise the calendar/site timezone. */
15
+ export declare function resolveEventTimeZone(event: Pick<PublicEvent, 'timeZone'>, calendarTimeZone: string): string;
14
16
  /**
15
17
  * Format date for display.
16
18
  * Returns: "Monday, January 15, 2025"
@@ -36,7 +38,19 @@ export type EventCompactDateRail = Readonly<{
36
38
  month: string;
37
39
  label: string;
38
40
  }>;
41
+ export type EventNextDateFact = Readonly<{
42
+ dateTime: string;
43
+ value: string;
44
+ label: string;
45
+ }>;
39
46
  export declare function formatEventCompactDateRail(isoTimestamp: string, options?: DateTimeFormatOptions): EventCompactDateRail;
47
+ /**
48
+ * Format the next occurrence for the image-free catalogue card treatment.
49
+ *
50
+ * The compact rail already owns this short, booking-local date vocabulary;
51
+ * keep the fact panel on the same date and timezone rules as event rows.
52
+ */
53
+ export declare function formatEventNextDateFact(event: Pick<PublicEvent, 'startsAt' | 'timeZone'>): EventNextDateFact;
40
54
  export { addDays, addMonths, buildCalendarViewport, formatCalendarTitle, formatDateKey, getEndOfMonth, getMonthCalendarDays, getOrderedDayNames, getStartOfMonth, getWeekCalendarDays, getWeekCalendarDayTuple, isToday, MAX_EVENTS_PER_DAY, shiftCalendarAnchorDate, } from '../../../../../../../calendar/src/index';
41
55
  export type { CalendarDate, CalendarViewport, CalendarViewportKind, MonthCalendarViewport, WeekCalendarDays, WeekCalendarViewport, } from '../../../../../../../calendar/src/index';
42
56
  /**
@@ -0,0 +1,2 @@
1
+ import type { PublicEvent } from '../../../../blocks/events/shared/types';
2
+ export declare function formatEventDuration(event: Pick<PublicEvent, 'startsAt' | 'endsAt'>): string;
@@ -7,8 +7,12 @@
7
7
  * Components in ../shared and the registration wizard import from this barrel.
8
8
  */
9
9
  export * from './capacity';
10
+ export * from './bookability';
10
11
  export * from './cta';
11
12
  export * from './dates';
12
13
  export * from './destination';
14
+ export * from './duration';
15
+ export * from './location';
13
16
  export * from './people';
14
17
  export * from './pricing';
18
+ export * from './quickDates';
@@ -0,0 +1,2 @@
1
+ import type { PublicEvent } from '../../../../blocks/events/shared/types';
2
+ export declare function formatEventLocation(event: Pick<PublicEvent, 'deliveryMode' | 'venue'>): string;
@@ -0,0 +1,16 @@
1
+ import type { PublicEvent } from '../../../../blocks/events/shared/types';
2
+ export declare const QUICK_EVENT_DATE_LIMIT = 4;
3
+ export type EventQuickDateFact = Readonly<{
4
+ dateTime: string;
5
+ label: string;
6
+ }>;
7
+ /**
8
+ * Select the next occurrence-targeted events for a quick-book rail.
9
+ *
10
+ * The API normally returns valid timestamps, but malformed values sort after
11
+ * valid events so one bad record cannot displace an otherwise useful rail.
12
+ * Sorting before deduplication means a duplicate occurrence keeps its earliest
13
+ * deterministic representation.
14
+ */
15
+ export declare function selectQuickDateEvents(events: readonly PublicEvent[]): readonly PublicEvent[];
16
+ export declare function formatEventQuickDate(event: Pick<PublicEvent, 'startsAt' | 'timeZone'>): EventQuickDateFact;
@@ -1,9 +1,17 @@
1
1
  import React from 'react';
2
- import type { PublicEvent } from '../../../../blocks/events/shared/types';
2
+ import type { ButtonVariant, PublicEvent } from '../../../../blocks/events/shared/types';
3
3
  type AgendaEventCardProps = {
4
4
  event: PublicEvent;
5
5
  /** Whether to render the capacity indicator. */
6
6
  showCapacity: boolean;
7
+ /** Whether the published agenda row should include its public location. */
8
+ showVenue?: boolean;
9
+ /** Theme button role used by the agenda booking action. */
10
+ buttonVariant?: ButtonVariant;
11
+ /** Optional override for the canonical booking action label. */
12
+ buttonText?: string;
13
+ /** Calendar/site timezone used when legacy events omit their own timezone. */
14
+ calendarTimeZone: string;
7
15
  /** When provided, renders as button and calls onClick instead of navigating */
8
16
  onClick?: (event: PublicEvent) => void;
9
17
  };
@@ -8,6 +8,8 @@ export type CalendarDayCellProps = {
8
8
  events: PublicEvent[];
9
9
  /** Whether this date is in the currently viewed month */
10
10
  isCurrentMonth: boolean;
11
+ /** Calendar/site timezone used when an event omits its own timezone. */
12
+ calendarTimeZone: string;
11
13
  today: CalendarDate;
12
14
  };
13
15
  /**
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare function CalendarDayHeaders({ dayNames, }: Readonly<{
3
+ dayNames: readonly string[];
4
+ }>): React.ReactElement;
@@ -5,6 +5,7 @@ type DayEventsModalProps = {
5
5
  date: CalendarDate;
6
6
  events: PublicEvent[];
7
7
  showCapacity: boolean;
8
+ calendarTimeZone: string;
8
9
  onClose: () => void;
9
10
  onSelectEvent: (event: PublicEvent) => void;
10
11
  portalRoot?: HTMLElement | null;
@@ -15,5 +16,5 @@ type DayEventsModalProps = {
15
16
  * Uses AgendaEventCard with onClick prop to display events.
16
17
  * Clicking an event triggers onSelectEvent (typically opens EventDetailModal).
17
18
  */
18
- export declare function DayEventsModal({ date, events, showCapacity, onClose, onSelectEvent, portalRoot, }: DayEventsModalProps): React.ReactElement;
19
+ export declare function DayEventsModal({ date, events, showCapacity, calendarTimeZone, onClose, onSelectEvent, portalRoot, }: DayEventsModalProps): React.ReactElement;
19
20
  export default DayEventsModal;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { CardRole } from '../../../../../../../theme-core/src/cards/index';
3
3
  import type { ButtonVariant, CardOrientation, PublicEvent } from '../../../../blocks/events/shared/types';
4
+ type EventCardPresentation = 'default' | 'catalogue';
4
5
  type EventCardProps = {
5
6
  event: PublicEvent;
6
7
  cardRole?: CardRole;
@@ -18,6 +19,10 @@ type EventCardProps = {
18
19
  showSummary?: boolean;
19
20
  /** Card orientation - 'vertical' for grid, 'horizontal' for stack */
20
21
  orientation?: CardOrientation;
22
+ /** Catalogue cards add the date media fallback and canonical price footer. */
23
+ presentation?: EventCardPresentation;
24
+ /** Heading level used by the containing page's document outline. */
25
+ headingLevel?: 3 | 4;
21
26
  };
22
27
  /**
23
28
  * EventCard Component
@@ -6,6 +6,7 @@ type EventModalsProps = {
6
6
  cardRole?: CardRole;
7
7
  buttonVariant?: ButtonVariant;
8
8
  buttonText?: string;
9
+ calendarTimeZone: string;
9
10
  };
10
11
  /**
11
12
  * EventModals - Renders the appropriate modal based on context state
@@ -15,5 +16,5 @@ type EventModalsProps = {
15
16
  * - EventDetailModal for single event view
16
17
  * - DayEventsModal for day events list (clicking an event switches to event modal)
17
18
  */
18
- export declare function EventModals({ showCapacity, cardRole, buttonVariant, buttonText, }: EventModalsProps): React.ReactElement | null;
19
+ export declare function EventModals({ showCapacity, cardRole, buttonVariant, buttonText, calendarTimeZone, }: EventModalsProps): React.ReactElement | null;
19
20
  export default EventModals;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { ButtonVariant, PublicEvent } from '../../../../blocks/events/shared/types';
3
+ export type EventQuickDatesProps = Readonly<{
4
+ events: readonly PublicEvent[];
5
+ pathname: string;
6
+ buttonVariant?: ButtonVariant;
7
+ }>;
8
+ /**
9
+ * Render a bounded rail of direct occurrence booking choices.
10
+ *
11
+ * The heading belongs to this runtime component so it stays with the
12
+ * bounded rail. Native events target the occurrence booking route while
13
+ * external events retain their canonical destination and target behaviour.
14
+ */
15
+ export declare function EventQuickDates({ events, pathname, buttonVariant, }: EventQuickDatesProps): React.ReactElement | null;
@@ -1,20 +1,24 @@
1
1
  import React from 'react';
2
2
  import { type CalendarDate } from '../../../../../../../calendar/src/index';
3
- import type { PublicEvent } from '../../../../blocks/events/shared/types';
3
+ import type { ButtonVariant, PublicEvent } from '../../../../blocks/events/shared/types';
4
4
  import { type WeekCalendarDays } from '../domain';
5
5
  type WeekAgendaViewProps = {
6
6
  days: WeekCalendarDays;
7
7
  events: PublicEvent[];
8
8
  showCapacity: boolean;
9
+ showVenue?: boolean;
9
10
  emptyMessage?: string;
11
+ showEmptyState: boolean;
10
12
  calendarTimeZone: string;
11
13
  today: CalendarDate;
14
+ buttonVariant?: ButtonVariant;
15
+ buttonText?: string;
12
16
  };
13
17
  /**
14
18
  * WeekAgendaView Component
15
19
  *
16
- * Displays a week of events in an agenda/list style with rich event details.
17
- * Shows all 7 days with date headers, empty days show "No events scheduled".
20
+ * Displays populated days in a week as an agenda/list with rich event details.
21
+ * A week without events has one empty state instead of seven repeated messages.
18
22
  */
19
23
  export declare const WeekAgendaView: React.FC<WeekAgendaViewProps>;
20
24
  export default WeekAgendaView;
@@ -7,6 +7,7 @@ type WeekTimetableViewProps = {
7
7
  events: PublicEvent[];
8
8
  startOfWeek: WeekStart;
9
9
  showCapacity: boolean;
10
+ calendarTimeZone: string;
10
11
  emptyMessage?: string;
11
12
  };
12
13
  export declare const WeekTimetableView: React.FC<WeekTimetableViewProps>;