@riverbankcms/sdk 0.127.0 → 0.128.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 (152) hide show
  1. package/dist/{PreviewEditorSidebar-BXtfF7tp.mjs → PreviewEditorSidebar-Dbvb7GIr.mjs} +9 -33
  2. package/dist/{PreviewEditorUI-Dou73Q0K.mjs → PreviewEditorUI-e9O9l20X.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
  4. package/dist/SdkPreviewModeRuntime-BZHt6e9w.mjs +11006 -0
  5. package/dist/{SiteChromeCustomizeContext-DZiDBAYu.mjs → SiteChromeCustomizeContext-CvuGbHJX.mjs} +31619 -1483
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +288 -36
  7. package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
  8. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
  9. package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
  10. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  11. package/dist/_dts/api/src/communications.d.ts +2 -1
  12. package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
  13. package/dist/_dts/api/src/contentRuntime.d.ts +2 -5
  14. package/dist/_dts/api/src/endpoints.d.ts +1 -1
  15. package/dist/_dts/api/src/footerSettings.d.ts +11 -0
  16. package/dist/_dts/api/src/index.d.ts +2 -1
  17. package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
  18. package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
  19. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
  20. package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
  21. package/dist/_dts/api/src/siteOperations.d.ts +12 -3
  22. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
  23. package/dist/_dts/blocks/src/client/form.d.ts +1 -0
  24. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
  25. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
  27. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  28. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  29. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  30. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  32. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  34. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  35. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  39. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  40. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  42. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  43. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  44. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  45. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  46. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  47. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  48. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  49. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  50. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  51. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  52. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  53. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  54. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  55. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  56. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  57. package/dist/_dts/core/src/index.d.ts +4 -0
  58. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  59. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +59 -6
  60. package/dist/_dts/db/src/index.d.ts +1 -0
  61. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  62. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  63. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  64. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  65. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  66. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  67. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  68. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -1
  69. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -4
  70. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  71. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  72. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  73. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  74. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  75. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  76. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  77. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  78. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  79. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  80. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  81. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  82. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  83. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  84. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  85. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  86. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +7 -0
  87. package/dist/_dts/sdk/src/rendering/index.d.ts +5 -3
  88. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  89. package/dist/_dts/sdk/src/version.d.ts +1 -1
  90. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  91. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  92. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +10 -4
  93. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +2 -3
  94. package/dist/cli/index.mjs +5302 -4628
  95. package/dist/client/{courseRegistration-DTEYWL6Z.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  96. package/dist/client/{DiscountCodeDisclosure-BDFRp8Y7.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  97. package/dist/client/{EventCombined.client-DJgF1_lf.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  98. package/dist/client/{EventListing.client-CnWGNjOr.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  99. package/dist/client/{LeafletStaticMap-BISs9Bl7.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  100. package/dist/client/{StepIndicator-D8gVYkK-.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  101. package/dist/client/{accordion-DFDajgDz.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  102. package/dist/client/{bookingForm-Bdqj9-52.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  103. package/dist/client/{carousel-Cvqf-kN8.mjs → carousel-DPNmiH0f.mjs} +1 -1
  104. package/dist/client/{cart-CuH2TJXP.mjs → cart--egVXlrR.mjs} +3 -3
  105. package/dist/client/{checkout-CMNPpejZ.mjs → checkout-DywWtMcq.mjs} +3 -3
  106. package/dist/client/client.mjs +4912 -4613
  107. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  108. package/dist/client/{eventCalendar-BW-XoxZ0.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  109. package/dist/client/{eventCombined-Bpn7s0y9.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  110. package/dist/client/{eventDetails-D2uUSTMH.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  111. package/dist/client/{eventListing-CVr1c094.mjs → eventListing-D0vm-zST.mjs} +2 -2
  112. package/dist/client/{eventRegistration-Dv4AvkMw.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  113. package/dist/client/{form-DxdKf9fs.mjs → form-C2Zf1n3K.mjs} +1 -1
  114. package/dist/client/{headerSection-BaXI5Sro.mjs → headerSection-CP05gzdc.mjs} +2 -2
  115. package/dist/client/hooks.mjs +212 -61
  116. package/dist/client/{locationMap-BEtW2fKz.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  117. package/dist/client/{newsletterForm-BKKs0S4R.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  118. package/dist/client/{pricing-ClkqcElA.mjs → pricing-DGuNR1W4.mjs} +1 -1
  119. package/dist/client/{productDetail-H-ru8dyy.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  120. package/dist/client/{productList-Buyi5c0C.mjs → productList-DbB3jwqd.mjs} +3 -3
  121. package/dist/client/{propsDecoder-BF7i6Ijg.mjs → propsDecoder-CiTuhUwY.mjs} +130 -87
  122. package/dist/client/rendering/client.mjs +416 -208
  123. package/dist/client/rendering/islands.mjs +18 -18
  124. package/dist/client/rendering.mjs +5522 -5237
  125. package/dist/client/{scrollToBlock-D_7t8yWb.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  126. package/dist/client/{shop-CF7SZQNX.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  127. package/dist/client/{shop-commerce-DA7_Rq5p.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  128. package/dist/client/{shop-commerce-store-BmLqW7Gh.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  129. package/dist/client/{shopShared-WL-E1znM.mjs → shopShared-cF0c20vB.mjs} +2 -2
  130. package/dist/client/{useEventFilters-rc8VLeLV.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  131. package/dist/client/{usePolling-1ncrfd4S.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  132. package/dist/preview-next/before-render.mjs +1 -1
  133. package/dist/preview-next/client/runtime.mjs +4 -4
  134. package/dist/preview-next/middleware.mjs +1 -1
  135. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  136. package/dist/{sdk-runtime-BnrCCFJq.mjs → sdk-runtime-Cn_QSCOg.mjs} +2 -2
  137. package/dist/{separator-CFvBx2yl.mjs → separator-CEoGABRc.mjs} +1 -1
  138. package/dist/server/components.mjs +473 -289
  139. package/dist/server/config-validation.mjs +209 -61
  140. package/dist/server/config.mjs +209 -61
  141. package/dist/server/data.mjs +212 -61
  142. package/dist/server/index.mjs +40 -16
  143. package/dist/server/next.mjs +513 -307
  144. package/dist/server/page-converter.mjs +211 -64
  145. package/dist/server/prebuild.mjs +1 -1
  146. package/dist/server/rendering/server.mjs +475 -282
  147. package/dist/server/rendering.mjs +482 -290
  148. package/dist/server/routing.mjs +254 -80
  149. package/dist/server/server.mjs +252 -77
  150. package/package.json +1 -1
  151. package/dist/SdkPreviewModeRuntime-B0HPXr-l.mjs +0 -39546
  152. package/dist/client/MagicLinkForm-b5E_HoG9.mjs +0 -327
@@ -366,22 +366,7 @@ export declare const runtimeBackedBlockServerEntries: {
366
366
  readonly 'newsletter-form': Readonly<{
367
367
  definition: RuntimeBackedBlockDefinition<Readonly<{
368
368
  kind: "progressive";
369
- buildRender: (source: Readonly<{
370
- blockId?: string | null;
371
- siteId?: string;
372
- apiBaseUrl?: string;
373
- listId?: string | null;
374
- destinationProvider?: import("../../blocks/newsletter-signup-destination").NewsletterSignupDestinationProvider | null;
375
- preset?: import("../nodes/newsletter-form.types").NewsletterPreset;
376
- includePhone?: boolean;
377
- buttonLabel?: string | null;
378
- buttonVariant?: import("../nodes/newsletter-form.types").NewsletterButtonVariant | null;
379
- successMessage?: string | null;
380
- privacyNote?: string | null;
381
- tags?: string | null;
382
- spamProtectionEnabled?: boolean;
383
- className?: string | null;
384
- }>) => Readonly<{
369
+ buildRender: (source: import("../nodes/newsletter-form.types").NewsletterFormProps) => Readonly<{
385
370
  display: Readonly<{
386
371
  kind: "newsletter-form";
387
372
  className: string | null;
@@ -392,8 +377,7 @@ export declare const runtimeBackedBlockServerEntries: {
392
377
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
393
378
  }>;
394
379
  hydration: Readonly<{
395
- destinationRef?: import("../..").NewsletterSignupPublicDestinationRef | null;
396
- listId?: string | null;
380
+ target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
397
381
  preset: import("../nodes/newsletter-form.types").NewsletterPreset;
398
382
  includePhone: boolean;
399
383
  tags?: string | null;
@@ -402,38 +386,8 @@ export declare const runtimeBackedBlockServerEntries: {
402
386
  }>;
403
387
  contracts: Readonly<{
404
388
  source: Readonly<{
405
- encode: (value: Readonly<{
406
- blockId?: string | null;
407
- siteId?: string;
408
- apiBaseUrl?: string;
409
- listId?: string | null;
410
- destinationProvider?: import("../../blocks/newsletter-signup-destination").NewsletterSignupDestinationProvider | null;
411
- preset?: import("../nodes/newsletter-form.types").NewsletterPreset;
412
- includePhone?: boolean;
413
- buttonLabel?: string | null;
414
- buttonVariant?: import("../nodes/newsletter-form.types").NewsletterButtonVariant | null;
415
- successMessage?: string | null;
416
- privacyNote?: string | null;
417
- tags?: string | null;
418
- spamProtectionEnabled?: boolean;
419
- className?: string | null;
420
- }>) => unknown;
421
- decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
422
- blockId?: string | null;
423
- siteId?: string;
424
- apiBaseUrl?: string;
425
- listId?: string | null;
426
- destinationProvider?: import("../../blocks/newsletter-signup-destination").NewsletterSignupDestinationProvider | null;
427
- preset?: import("../nodes/newsletter-form.types").NewsletterPreset;
428
- includePhone?: boolean;
429
- buttonLabel?: string | null;
430
- buttonVariant?: import("../nodes/newsletter-form.types").NewsletterButtonVariant | null;
431
- successMessage?: string | null;
432
- privacyNote?: string | null;
433
- tags?: string | null;
434
- spamProtectionEnabled?: boolean;
435
- className?: string | null;
436
- }>>;
389
+ encode: (value: import("../nodes/newsletter-form.types").NewsletterFormProps) => unknown;
390
+ decode: (input: unknown) => import("../../../contracts").DecodeResult<import("../nodes/newsletter-form.types").NewsletterFormProps>;
437
391
  }>;
438
392
  render: Readonly<{
439
393
  encode: (value: Readonly<{
@@ -447,8 +401,7 @@ export declare const runtimeBackedBlockServerEntries: {
447
401
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
448
402
  }>;
449
403
  hydration: Readonly<{
450
- destinationRef?: import("../..").NewsletterSignupPublicDestinationRef | null;
451
- listId?: string | null;
404
+ target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
452
405
  preset: import("../nodes/newsletter-form.types").NewsletterPreset;
453
406
  includePhone: boolean;
454
407
  tags?: string | null;
@@ -466,8 +419,7 @@ export declare const runtimeBackedBlockServerEntries: {
466
419
  fields: readonly import("../nodes/newsletter-form.types").NewsletterFieldDef[];
467
420
  }>;
468
421
  hydration: Readonly<{
469
- destinationRef?: import("../..").NewsletterSignupPublicDestinationRef | null;
470
- listId?: string | null;
422
+ target: import("../nodes/newsletter-form.interactive").NewsletterFormHydrationTarget;
471
423
  preset: import("../nodes/newsletter-form.types").NewsletterPreset;
472
424
  includePhone: boolean;
473
425
  tags?: string | null;
@@ -968,13 +920,18 @@ export declare const runtimeBackedBlockServerEntries: {
968
920
  occurrenceContext?: import("../..").OccurrenceContext | null;
969
921
  subject?: import("../nodes/event-registration/eventScope").EventRegistrationPageSurfaceSubject | null;
970
922
  events?: import("../..").PublicEvent[] | null;
923
+ wholeSeriesOfferings?: import("../..").PublicCourse[] | null;
924
+ wholeSeriesOffering?: import("../..").PublicCourse | null;
971
925
  className?: string | null;
972
926
  buttonText?: string | null;
973
927
  maxTickets?: string | null;
974
928
  showVenue?: boolean;
975
929
  showCapacity?: boolean;
930
+ showSessions?: boolean;
931
+ showPrice?: boolean;
976
932
  successMessage?: string;
977
933
  waitlistMessage?: string;
934
+ membershipMessage?: string;
978
935
  buttonVariant?: import("../../..").BlockButtonRole;
979
936
  overlayEnabled?: boolean;
980
937
  spamProtectionEnabled?: boolean;
@@ -1008,13 +965,18 @@ export declare const runtimeBackedBlockServerEntries: {
1008
965
  occurrenceContext?: import("../..").OccurrenceContext | null;
1009
966
  subject?: import("../nodes/event-registration/eventScope").EventRegistrationPageSurfaceSubject | null;
1010
967
  events?: import("../..").PublicEvent[] | null;
968
+ wholeSeriesOfferings?: import("../..").PublicCourse[] | null;
969
+ wholeSeriesOffering?: import("../..").PublicCourse | null;
1011
970
  className?: string | null;
1012
971
  buttonText?: string | null;
1013
972
  maxTickets?: string | null;
1014
973
  showVenue?: boolean;
1015
974
  showCapacity?: boolean;
975
+ showSessions?: boolean;
976
+ showPrice?: boolean;
1016
977
  successMessage?: string;
1017
978
  waitlistMessage?: string;
979
+ membershipMessage?: string;
1018
980
  buttonVariant?: import("../../..").BlockButtonRole;
1019
981
  overlayEnabled?: boolean;
1020
982
  spamProtectionEnabled?: boolean;
@@ -1035,13 +997,18 @@ export declare const runtimeBackedBlockServerEntries: {
1035
997
  occurrenceContext?: import("../..").OccurrenceContext | null;
1036
998
  subject?: import("../nodes/event-registration/eventScope").EventRegistrationPageSurfaceSubject | null;
1037
999
  events?: import("../..").PublicEvent[] | null;
1000
+ wholeSeriesOfferings?: import("../..").PublicCourse[] | null;
1001
+ wholeSeriesOffering?: import("../..").PublicCourse | null;
1038
1002
  className?: string | null;
1039
1003
  buttonText?: string | null;
1040
1004
  maxTickets?: string | null;
1041
1005
  showVenue?: boolean;
1042
1006
  showCapacity?: boolean;
1007
+ showSessions?: boolean;
1008
+ showPrice?: boolean;
1043
1009
  successMessage?: string;
1044
1010
  waitlistMessage?: string;
1011
+ membershipMessage?: string;
1045
1012
  buttonVariant?: import("../../..").BlockButtonRole;
1046
1013
  overlayEnabled?: boolean;
1047
1014
  spamProtectionEnabled?: boolean;
@@ -9,7 +9,7 @@ export type OccurrenceContextLike = {
9
9
  timeZone: string;
10
10
  } | null;
11
11
  export type EventDetailsSelection = {
12
- mode: 'selected' | 'next';
12
+ mode: 'selected' | 'next' | 'completed';
13
13
  selected: PublicEvent | null;
14
14
  otherDates: PublicEvent[];
15
15
  timeZone: string;
@@ -0,0 +1,26 @@
1
+ import type { PublicCourse } from '../../../blocks/courses/shared/types';
2
+ import type { PublicEvent } from '../../../blocks/events/shared/types';
3
+ import { type EventRegistrationPageSurfaceSubject } from './eventScope';
4
+ export type EventRegistrationSurfacePlan = Readonly<{
5
+ kind: 'occurrence';
6
+ events: readonly PublicEvent[];
7
+ }> | Readonly<{
8
+ kind: 'wholeSeries';
9
+ offerings: readonly PublicCourse[];
10
+ }> | Readonly<{
11
+ kind: 'unavailableWholeSeries';
12
+ }> | Readonly<{
13
+ kind: 'mixedBookingScopes';
14
+ }>;
15
+ export declare function planEventRegistrationSurface(input: Readonly<{
16
+ events: readonly PublicEvent[];
17
+ wholeSeriesOfferings: readonly PublicCourse[];
18
+ occurrenceContext?: Readonly<{
19
+ id: string;
20
+ seriesId: string;
21
+ startsAt: string;
22
+ endsAt: string;
23
+ timeZone: string;
24
+ }> | null;
25
+ subject?: EventRegistrationPageSurfaceSubject | null;
26
+ }>): EventRegistrationSurfacePlan;
@@ -1,6 +1,7 @@
1
1
  import type { PublicEvent, PublicEventTicketType, PublicEventTicketTypeAvailability } from '../../../blocks/events/shared/types';
2
2
  import type { OccurrenceContext } from '../../../blocks/event-registration.shared';
3
3
  import type { PublicMembershipProductCollection, PublicPassProductCollection } from '../../../blocks/shop.shared';
4
+ import type { PublicCourse } from '../../../blocks/courses/shared/types';
4
5
  import type { AvailablePass, AvailableMembership, DirectCheckoutCollectionOptionKind, EventTicketLineSummary, EligibilityEventTicketType } from '../../api/types';
5
6
  import type { EventRegistrationPageSurfaceSubject } from './eventScope';
6
7
  import type { BlockButtonRole } from '../../../constants/buttonRoles';
@@ -145,11 +146,18 @@ export type EventRegistrationClientProps = {
145
146
  occurrenceContext?: OccurrenceContext | null;
146
147
  subject?: EventRegistrationPageSurfaceSubject | null;
147
148
  events?: PublicEvent[] | null;
149
+ /** Canonical whole-series runs used when the scoped Event books the full series. */
150
+ wholeSeriesOfferings?: PublicCourse[] | null;
151
+ /** Targeted whole-series offering loaded for a native Event page surface. */
152
+ wholeSeriesOffering?: PublicCourse | null;
148
153
  maxTickets?: string;
149
154
  showVenue?: boolean;
150
155
  showCapacity?: boolean;
156
+ showSessions?: boolean;
157
+ showPrice?: boolean;
151
158
  successMessage?: string;
152
159
  waitlistMessage?: string;
160
+ membershipMessage?: string;
153
161
  buttonText?: string;
154
162
  buttonVariant?: BlockButtonRole;
155
163
  overlayEnabled?: boolean;
@@ -1,5 +1,6 @@
1
1
  import type { BlockButtonRole } from '../../constants/buttonRoles';
2
2
  import type { PublicEvent } from '../../blocks/events/shared/types';
3
+ import type { PublicCourse } from '../../blocks/courses/shared/types';
3
4
  import { type PublicMembershipProductCollection, type PublicPassProductCollection } from '../../blocks/shop.shared';
4
5
  import type { OccurrenceContext } from '../../blocks/event-registration.shared';
5
6
  import type { EventRegistrationClientProps as InternalEventRegistrationClientProps } from './event-registration/types';
@@ -17,13 +18,18 @@ export type EventRegistrationSourceProps = Readonly<{
17
18
  occurrenceContext?: OccurrenceContext | null;
18
19
  subject?: EventRegistrationPageSurfaceSubject | null;
19
20
  events?: PublicEvent[] | null;
21
+ wholeSeriesOfferings?: PublicCourse[] | null;
22
+ wholeSeriesOffering?: PublicCourse | null;
20
23
  className?: string | null;
21
24
  buttonText?: string | null;
22
25
  maxTickets?: string | null;
23
26
  showVenue?: boolean;
24
27
  showCapacity?: boolean;
28
+ showSessions?: boolean;
29
+ showPrice?: boolean;
25
30
  successMessage?: string;
26
31
  waitlistMessage?: string;
32
+ membershipMessage?: string;
27
33
  buttonVariant?: BlockButtonRole;
28
34
  overlayEnabled?: boolean;
29
35
  spamProtectionEnabled?: boolean;
@@ -61,13 +67,18 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
61
67
  occurrenceContext?: OccurrenceContext | null;
62
68
  subject?: EventRegistrationPageSurfaceSubject | null;
63
69
  events?: PublicEvent[] | null;
70
+ wholeSeriesOfferings?: PublicCourse[] | null;
71
+ wholeSeriesOffering?: PublicCourse | null;
64
72
  className?: string | null;
65
73
  buttonText?: string | null;
66
74
  maxTickets?: string | null;
67
75
  showVenue?: boolean;
68
76
  showCapacity?: boolean;
77
+ showSessions?: boolean;
78
+ showPrice?: boolean;
69
79
  successMessage?: string;
70
80
  waitlistMessage?: string;
81
+ membershipMessage?: string;
71
82
  buttonVariant?: BlockButtonRole;
72
83
  overlayEnabled?: boolean;
73
84
  spamProtectionEnabled?: boolean;
@@ -101,13 +112,18 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
101
112
  occurrenceContext?: OccurrenceContext | null;
102
113
  subject?: EventRegistrationPageSurfaceSubject | null;
103
114
  events?: PublicEvent[] | null;
115
+ wholeSeriesOfferings?: PublicCourse[] | null;
116
+ wholeSeriesOffering?: PublicCourse | null;
104
117
  className?: string | null;
105
118
  buttonText?: string | null;
106
119
  maxTickets?: string | null;
107
120
  showVenue?: boolean;
108
121
  showCapacity?: boolean;
122
+ showSessions?: boolean;
123
+ showPrice?: boolean;
109
124
  successMessage?: string;
110
125
  waitlistMessage?: string;
126
+ membershipMessage?: string;
111
127
  buttonVariant?: BlockButtonRole;
112
128
  overlayEnabled?: boolean;
113
129
  spamProtectionEnabled?: boolean;
@@ -128,13 +144,18 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
128
144
  occurrenceContext?: OccurrenceContext | null;
129
145
  subject?: EventRegistrationPageSurfaceSubject | null;
130
146
  events?: PublicEvent[] | null;
147
+ wholeSeriesOfferings?: PublicCourse[] | null;
148
+ wholeSeriesOffering?: PublicCourse | null;
131
149
  className?: string | null;
132
150
  buttonText?: string | null;
133
151
  maxTickets?: string | null;
134
152
  showVenue?: boolean;
135
153
  showCapacity?: boolean;
154
+ showSessions?: boolean;
155
+ showPrice?: boolean;
136
156
  successMessage?: string;
137
157
  waitlistMessage?: string;
158
+ membershipMessage?: string;
138
159
  buttonVariant?: BlockButtonRole;
139
160
  overlayEnabled?: boolean;
140
161
  spamProtectionEnabled?: boolean;
@@ -1,22 +1,7 @@
1
1
  import { type InteractiveIslandProps } from '../../../contracts/islands';
2
- import { type NewsletterSignupDestinationProvider, type NewsletterSignupPublicDestinationRef } from '../../blocks/newsletter-signup-destination';
3
- import { type NewsletterButtonVariant, type NewsletterFieldDef, type NewsletterPreset } from './newsletter-form.types';
4
- export type NewsletterFormSourceProps = Readonly<{
5
- blockId?: string | null;
6
- siteId?: string;
7
- apiBaseUrl?: string;
8
- listId?: string | null;
9
- destinationProvider?: NewsletterSignupDestinationProvider | null;
10
- preset?: NewsletterPreset;
11
- includePhone?: boolean;
12
- buttonLabel?: string | null;
13
- buttonVariant?: NewsletterButtonVariant | null;
14
- successMessage?: string | null;
15
- privacyNote?: string | null;
16
- tags?: string | null;
17
- spamProtectionEnabled?: boolean;
18
- className?: string | null;
19
- }>;
2
+ import { type NewsletterSignupPublicDestinationRef } from '../../blocks/newsletter-signup-destination';
3
+ import { type NewsletterButtonVariant, type NewsletterFieldDef, type NewsletterFormProps, type NewsletterPreset } from './newsletter-form.types';
4
+ export type NewsletterFormSourceProps = NewsletterFormProps;
20
5
  export type NewsletterFormDisplay = Readonly<{
21
6
  kind: 'newsletter-form';
22
7
  className: string | null;
@@ -27,13 +12,28 @@ export type NewsletterFormDisplay = Readonly<{
27
12
  fields: readonly NewsletterFieldDef[];
28
13
  }>;
29
14
  export type NewsletterFormHydration = Readonly<{
30
- destinationRef?: NewsletterSignupPublicDestinationRef | null;
31
- listId?: string | null;
15
+ target: NewsletterFormHydrationTarget;
32
16
  preset: NewsletterPreset;
33
17
  includePhone: boolean;
34
18
  tags?: string | null;
35
19
  spamProtectionEnabled?: boolean;
36
20
  }>;
21
+ export type NewsletterFormHydrationTarget = Readonly<{
22
+ tag: 'block-source';
23
+ destinationRef: NewsletterSignupBlockDestinationRef | null;
24
+ }> | Readonly<{
25
+ tag: 'signed-footer-source';
26
+ destinationRef: NewsletterSignupSignedDestinationRef;
27
+ }> | Readonly<{
28
+ tag: 'legacy-direct-list';
29
+ listId: string | null;
30
+ }>;
31
+ type NewsletterSignupBlockDestinationRef = Extract<NewsletterSignupPublicDestinationRef, {
32
+ tag: 'block_ref';
33
+ }>;
34
+ type NewsletterSignupSignedDestinationRef = Extract<NewsletterSignupPublicDestinationRef, {
35
+ tag: 'signed_destination_ref';
36
+ }>;
37
37
  type NewsletterIslandMeta = Readonly<{
38
38
  siteId?: string;
39
39
  apiBaseUrl?: string;
@@ -42,22 +42,7 @@ export declare function buildNewsletterDisplay(source: NewsletterFormSourceProps
42
42
  export type NewsletterFormInteractiveIslandProps = InteractiveIslandProps<NewsletterIslandMeta, 'newsletter-form', typeof newsletterFormBlockRuntime>;
43
43
  export declare const newsletterFormBlockRuntime: Readonly<{
44
44
  kind: "progressive";
45
- buildRender: (source: Readonly<{
46
- blockId?: string | null;
47
- siteId?: string;
48
- apiBaseUrl?: string;
49
- listId?: string | null;
50
- destinationProvider?: NewsletterSignupDestinationProvider | null;
51
- preset?: NewsletterPreset;
52
- includePhone?: boolean;
53
- buttonLabel?: string | null;
54
- buttonVariant?: NewsletterButtonVariant | null;
55
- successMessage?: string | null;
56
- privacyNote?: string | null;
57
- tags?: string | null;
58
- spamProtectionEnabled?: boolean;
59
- className?: string | null;
60
- }>) => Readonly<{
45
+ buildRender: (source: NewsletterFormProps) => Readonly<{
61
46
  display: Readonly<{
62
47
  kind: "newsletter-form";
63
48
  className: string | null;
@@ -68,8 +53,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
68
53
  fields: readonly NewsletterFieldDef[];
69
54
  }>;
70
55
  hydration: Readonly<{
71
- destinationRef?: NewsletterSignupPublicDestinationRef | null;
72
- listId?: string | null;
56
+ target: NewsletterFormHydrationTarget;
73
57
  preset: NewsletterPreset;
74
58
  includePhone: boolean;
75
59
  tags?: string | null;
@@ -78,38 +62,8 @@ export declare const newsletterFormBlockRuntime: Readonly<{
78
62
  }>;
79
63
  contracts: Readonly<{
80
64
  source: Readonly<{
81
- encode: (value: Readonly<{
82
- blockId?: string | null;
83
- siteId?: string;
84
- apiBaseUrl?: string;
85
- listId?: string | null;
86
- destinationProvider?: NewsletterSignupDestinationProvider | null;
87
- preset?: NewsletterPreset;
88
- includePhone?: boolean;
89
- buttonLabel?: string | null;
90
- buttonVariant?: NewsletterButtonVariant | null;
91
- successMessage?: string | null;
92
- privacyNote?: string | null;
93
- tags?: string | null;
94
- spamProtectionEnabled?: boolean;
95
- className?: string | null;
96
- }>) => unknown;
97
- decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
98
- blockId?: string | null;
99
- siteId?: string;
100
- apiBaseUrl?: string;
101
- listId?: string | null;
102
- destinationProvider?: NewsletterSignupDestinationProvider | null;
103
- preset?: NewsletterPreset;
104
- includePhone?: boolean;
105
- buttonLabel?: string | null;
106
- buttonVariant?: NewsletterButtonVariant | null;
107
- successMessage?: string | null;
108
- privacyNote?: string | null;
109
- tags?: string | null;
110
- spamProtectionEnabled?: boolean;
111
- className?: string | null;
112
- }>>;
65
+ encode: (value: NewsletterFormProps) => unknown;
66
+ decode: (input: unknown) => import("../../../contracts").DecodeResult<NewsletterFormProps>;
113
67
  }>;
114
68
  render: Readonly<{
115
69
  encode: (value: Readonly<{
@@ -123,8 +77,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
123
77
  fields: readonly NewsletterFieldDef[];
124
78
  }>;
125
79
  hydration: Readonly<{
126
- destinationRef?: NewsletterSignupPublicDestinationRef | null;
127
- listId?: string | null;
80
+ target: NewsletterFormHydrationTarget;
128
81
  preset: NewsletterPreset;
129
82
  includePhone: boolean;
130
83
  tags?: string | null;
@@ -142,8 +95,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
142
95
  fields: readonly NewsletterFieldDef[];
143
96
  }>;
144
97
  hydration: Readonly<{
145
- destinationRef?: NewsletterSignupPublicDestinationRef | null;
146
- listId?: string | null;
98
+ target: NewsletterFormHydrationTarget;
147
99
  preset: NewsletterPreset;
148
100
  includePhone: boolean;
149
101
  tags?: string | null;
@@ -153,6 +105,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
153
105
  }>;
154
106
  }>;
155
107
  }>;
108
+ export declare function projectNewsletterFormHydrationTarget(source: NewsletterFormSourceProps): NewsletterFormHydrationTarget;
156
109
  export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
157
110
  encode: (value: Readonly<Readonly<{
158
111
  siteId?: string;
@@ -172,8 +125,7 @@ export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
172
125
  fields: readonly NewsletterFieldDef[];
173
126
  }>;
174
127
  hydration: Readonly<{
175
- destinationRef?: NewsletterSignupPublicDestinationRef | null;
176
- listId?: string | null;
128
+ target: NewsletterFormHydrationTarget;
177
129
  preset: NewsletterPreset;
178
130
  includePhone: boolean;
179
131
  tags?: string | null;
@@ -199,8 +151,7 @@ export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
199
151
  fields: readonly NewsletterFieldDef[];
200
152
  }>;
201
153
  hydration: Readonly<{
202
- destinationRef?: NewsletterSignupPublicDestinationRef | null;
203
- listId?: string | null;
154
+ target: NewsletterFormHydrationTarget;
204
155
  preset: NewsletterPreset;
205
156
  includePhone: boolean;
206
157
  tags?: string | null;
@@ -6,5 +6,5 @@ import type { NewsletterFormProps } from './newsletter-form.types';
6
6
  * Renders the newsletter signup form for SSR with hydration support.
7
7
  * Uses the islands architecture pattern to hydrate on the client.
8
8
  */
9
- export declare function NewsletterFormSSR({ blockId, siteId, apiBaseUrl, listId, destinationProvider, preset, includePhone, buttonLabel, buttonVariant, successMessage, privacyNote, tags, spamProtectionEnabled, className, }: NewsletterFormProps): React.JSX.Element;
9
+ export declare function NewsletterFormSSR(props: NewsletterFormProps): React.JSX.Element;
10
10
  export default NewsletterFormSSR;
@@ -1,5 +1,5 @@
1
1
  import type { NewsletterSubscribeTarget } from '../api/types';
2
- import type { NewsletterSignupPublicDestinationRef } from '../../blocks/newsletter-signup-destination';
2
+ import type { NewsletterFormHydrationTarget } from './newsletter-form.interactive';
3
3
  export type NewsletterFormRawSubmissionFields = Readonly<{
4
4
  email: FormDataEntryValue | null;
5
5
  firstName: FormDataEntryValue | null;
@@ -23,10 +23,7 @@ export type NewsletterSubmitTargetResolution = Readonly<{
23
23
  target: NewsletterSubscribeTarget;
24
24
  }> | Readonly<{
25
25
  tag: 'unavailable';
26
- reason: 'missing_legacy_list';
26
+ reason: 'missing_block_source' | 'missing_legacy_list';
27
27
  }>;
28
28
  export declare function mapNewsletterFormFieldsToSubscriberInput(fields: NewsletterFormRawSubmissionFields): NewsletterFormSubmissionFields;
29
- export declare function resolveNewsletterSubmitTarget(input: Readonly<{
30
- listId?: string | null;
31
- destinationRef?: NewsletterSignupPublicDestinationRef | null;
32
- }>): NewsletterSubmitTargetResolution;
29
+ export declare function resolveNewsletterSubmitTarget(input: NewsletterFormHydrationTarget): NewsletterSubmitTargetResolution;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Shared types for the newsletter form server and client components.
5
5
  */
6
- import type { NewsletterSignupFieldPreset } from '../../blocks/newsletter-signup-destination';
6
+ import type { NewsletterSignupDestinationProvider, NewsletterSignupFieldPreset, NewsletterSignupPublicDestinationRef } from '../../blocks/newsletter-signup-destination';
7
7
  import type { BlockButtonRole } from '../../constants/buttonRoles';
8
8
  export type NewsletterPreset = NewsletterSignupFieldPreset;
9
9
  export type NewsletterFieldDef = {
@@ -15,17 +15,11 @@ export type NewsletterFieldDef = {
15
15
  };
16
16
  export type NewsletterDestinationProvider = 'riverbank' | 'mailchimp';
17
17
  export type NewsletterButtonVariant = BlockButtonRole;
18
- export type NewsletterFormProps = {
19
- /** Block ID for island hydration */
20
- blockId?: string | null;
18
+ type NewsletterFormCommonProps = {
21
19
  /** Site ID for API calls */
22
20
  siteId?: string;
23
21
  /** API base URL for client-side fetching */
24
22
  apiBaseUrl?: string;
25
- /** Newsletter list ID to subscribe users to */
26
- listId?: string | null;
27
- /** Active signup destination provider */
28
- destinationProvider?: NewsletterDestinationProvider | null;
29
23
  /** Field preset configuration */
30
24
  preset?: NewsletterPreset;
31
25
  /** Adds an optional phone field to the selected preset */
@@ -45,9 +39,34 @@ export type NewsletterFormProps = {
45
39
  /** Additional CSS class */
46
40
  className?: string | null;
47
41
  };
42
+ type BlockNewsletterFormSource = Readonly<{
43
+ source: 'block';
44
+ blockId?: string | null;
45
+ destinationProvider?: NewsletterSignupDestinationProvider | null;
46
+ /** Authoring state only; public submission authority is always blockId. */
47
+ listId?: string | null;
48
+ }>;
49
+ type SignedFooterNewsletterFormSource = Readonly<{
50
+ source: 'signed-footer';
51
+ destinationRef: Extract<NewsletterSignupPublicDestinationRef, {
52
+ tag: 'signed_destination_ref';
53
+ }>;
54
+ blockId?: never;
55
+ destinationProvider?: never;
56
+ listId?: never;
57
+ }>;
58
+ type LegacyDirectListNewsletterFormSource = Readonly<{
59
+ source: 'legacy-direct-list';
60
+ listId: string | null;
61
+ blockId?: never;
62
+ destinationRef?: never;
63
+ destinationProvider?: never;
64
+ }>;
65
+ export type NewsletterFormProps = NewsletterFormCommonProps & (BlockNewsletterFormSource | SignedFooterNewsletterFormSource | LegacyDirectListNewsletterFormSource);
48
66
  /**
49
67
  * Get form fields based on preset configuration.
50
68
  */
51
69
  export declare function getPresetFields(preset: NewsletterPreset, options?: {
52
70
  includePhone?: boolean;
53
71
  }): NewsletterFieldDef[];
72
+ export {};
@@ -0,0 +1,21 @@
1
+ import { type FooterCompositionV1 } from '../../core/src/index';
2
+ import type { FooterRuntimeViewModel } from '../../blocks/src/client/site-chrome';
3
+ import { type FooterEditorTarget, type planFooterEditorView } from './footerComposer';
4
+ import type { SaveState } from './useFooterComposerState';
5
+ type FooterPlan = ReturnType<typeof planFooterEditorView>;
6
+ export declare function SaveBadge({ state }: {
7
+ state: SaveState;
8
+ }): import("react").JSX.Element | null;
9
+ export declare function FooterPreview({ runtime, }: {
10
+ runtime: FooterRuntimeViewModel;
11
+ }): import("react").JSX.Element;
12
+ export declare function FooterOverview({ plan, composition, onTarget, onChange, manageLinksHref, manageSettingsHref, onEngagement, }: {
13
+ plan: FooterPlan;
14
+ composition: FooterCompositionV1;
15
+ onTarget: (target: FooterEditorTarget) => void;
16
+ onChange: (composition: FooterCompositionV1) => void;
17
+ manageLinksHref: string;
18
+ manageSettingsHref: string;
19
+ onEngagement: () => void;
20
+ }): import("react").JSX.Element;
21
+ export {};
@@ -1,11 +1,13 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { ApiClient } from '../../api/src/request';
3
3
  import { type FooterEditorTarget } from './footerComposer';
4
- export declare function FooterComposerPanel({ apiClient, siteId: rawSiteId, customFooterMode, manageLinksHref, manageSettingsHref, legalRegion, initialTarget, variant, canEdit, onSaved, loadingFallback, }: {
4
+ export declare function FooterComposerPanel({ apiClient, siteId: rawSiteId, customFooterMode, manageLinksHref, manageFormsHref, manageNewsletterHref, manageSettingsHref, legalRegion, initialTarget, variant, canEdit, onSaved, loadingFallback, }: {
5
5
  apiClient: ApiClient;
6
6
  siteId: string;
7
7
  customFooterMode: 'default' | 'blocks' | 'default+blocks' | 'none';
8
8
  manageLinksHref: string;
9
+ manageFormsHref?: string;
10
+ manageNewsletterHref?: string;
9
11
  manageSettingsHref: string;
10
12
  legalRegion?: 'integrated' | 'separate';
11
13
  initialTarget?: FooterEditorTarget;
@@ -0,0 +1,31 @@
1
+ import type { FooterEngagementAuthoringOptions } from '../../api/src/footer-settings';
2
+ import type { FooterEngagementDraft, FooterEngagementDraftEvent } from './footerEngagementDraft';
3
+ type DispatchDraft = (event: FooterEngagementDraftEvent) => void;
4
+ export declare function EngagementKindChoice({ dispatch, kind, }: Readonly<{
5
+ dispatch: DispatchDraft;
6
+ kind: FooterEngagementDraft['kind'];
7
+ }>): import("react").JSX.Element;
8
+ export declare function EngagementCopyFields({ dispatch, draft, error, }: Readonly<{
9
+ dispatch: DispatchDraft;
10
+ draft: FooterEngagementDraft;
11
+ error: string | null;
12
+ }>): import("react").JSX.Element;
13
+ export declare function EngagementPlacementChoice({ dispatch, treatment, }: Readonly<{
14
+ dispatch: DispatchDraft;
15
+ treatment: FooterEngagementDraft['treatment'];
16
+ }>): import("react").JSX.Element;
17
+ export declare function StandardContactChoice({ dispatch, formId, manageFormsHref, options, }: Readonly<{
18
+ dispatch: DispatchDraft;
19
+ formId: string;
20
+ manageFormsHref: string;
21
+ options: FooterEngagementAuthoringOptions;
22
+ }>): import("react").JSX.Element;
23
+ export declare function MailingListChoice({ dispatch, draft, manageNewsletterHref, options, }: Readonly<{
24
+ dispatch: DispatchDraft;
25
+ draft: Extract<FooterEngagementDraft, {
26
+ kind: 'mailing-list';
27
+ }>;
28
+ manageNewsletterHref: string;
29
+ options: FooterEngagementAuthoringOptions;
30
+ }>): import("react").JSX.Element;
31
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { FooterEngagementSection } from '../../core/src/index';
2
+ import type { FooterEngagementAuthoringOptions } from '../../api/src/footer-settings';
3
+ import type { FooterEngagementReadiness } from './footerEngagementEditor';
4
+ type FooterEngagementEditorPanelProps = Readonly<{
5
+ candidate: FooterEngagementSection | null;
6
+ current: FooterEngagementSection | null;
7
+ manageFormsHref: string;
8
+ manageNewsletterHref: string;
9
+ onApply: () => void;
10
+ onCancel: () => void;
11
+ onPreview: (candidate: FooterEngagementSection) => void;
12
+ onRemove: () => void;
13
+ options: FooterEngagementAuthoringOptions;
14
+ readiness: FooterEngagementReadiness;
15
+ }>;
16
+ export declare function FooterEngagementEditorPanel(props: FooterEngagementEditorPanelProps): import("react").JSX.Element;
17
+ export {};