@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
@@ -1,13 +1,13 @@
1
- import type { Brand } from '../../core/src/index';
1
+ import type { Brand, MailchimpAccountId } from '../../core/src/index';
2
2
  import type { APIEndpoint } from './apiEndpointTypes';
3
3
  export type MailchimpConnectionId = Brand<string, 'MailchimpConnectionId'>;
4
4
  export type MailchimpAudienceId = Brand<string, 'MailchimpAudienceId'>;
5
- export type MailchimpSignupSourceBlockId = Brand<string, 'NewsletterSignupBlockId'>;
6
5
  export type MailchimpIntegrationConnectionStatus = Readonly<{
7
6
  tag: 'not_connected';
8
7
  }> | Readonly<{
9
8
  tag: 'connected';
10
9
  connectionId: MailchimpConnectionId;
10
+ accountId: MailchimpAccountId;
11
11
  accountName: string | null;
12
12
  datacenter: string;
13
13
  connectedAt: string | null;
@@ -35,7 +35,6 @@ export type MailchimpConnectionLifecycleStatus = MailchimpIntegrationConnectionS
35
35
  export type MailchimpConnectionLifecycleTransitionKind = 'stable_not_connected' | 'stable_connected' | 'stable_needs_reauth' | 'connect' | 'reauth_required' | 'reauth_resolved' | 'disconnect';
36
36
  export type MailchimpConnectionConfiguredBlockPolicy = 'editable' | 'editable_with_warning' | 'unavailable_until_reconfigured';
37
37
  export type MailchimpConnectionAudienceCacheAction = 'none' | 'refresh' | 'mark_stale_unavailable';
38
- export type MailchimpConnectionSyncQueueAction = 'none' | 'pause_retryable_until_reconnect' | 'resume_retryable' | 'defer_to_disconnect_sync_policy';
39
38
  export type MailchimpConnectionTokenAction = 'none' | 'revoke_and_delete_if_present';
40
39
  export type MailchimpConnectionPublicSubmissionPolicy = 'available' | 'unavailable_until_reconfigured';
41
40
  type MailchimpConnectionLifecyclePlanBase<TKind extends MailchimpConnectionLifecycleTransitionKind, TFrom extends MailchimpConnectionLifecycleStatus, TTo extends MailchimpConnectionLifecycleStatus> = Readonly<{
@@ -46,43 +45,36 @@ type MailchimpConnectionLifecyclePlanBase<TKind extends MailchimpConnectionLifec
46
45
  export type MailchimpConnectionLifecycleTransitionPlan = MailchimpConnectionLifecyclePlanBase<'stable_not_connected', 'not_connected', 'not_connected'> & Readonly<{
47
46
  configuredBlockPolicy: 'unavailable_until_reconfigured';
48
47
  audienceCacheAction: 'none';
49
- syncQueueAction: 'none';
50
48
  tokenAction: 'none';
51
49
  publicSubmissionPolicy: 'unavailable_until_reconfigured';
52
50
  }> | MailchimpConnectionLifecyclePlanBase<'stable_connected', 'connected', 'connected'> & Readonly<{
53
51
  configuredBlockPolicy: 'editable';
54
52
  audienceCacheAction: 'none';
55
- syncQueueAction: 'none';
56
53
  tokenAction: 'none';
57
54
  publicSubmissionPolicy: 'available';
58
55
  }> | MailchimpConnectionLifecyclePlanBase<'stable_needs_reauth', 'needs_reauth', 'needs_reauth'> & Readonly<{
59
56
  configuredBlockPolicy: 'editable_with_warning';
60
57
  audienceCacheAction: 'none';
61
- syncQueueAction: 'none';
62
58
  tokenAction: 'none';
63
59
  publicSubmissionPolicy: 'unavailable_until_reconfigured';
64
60
  }> | MailchimpConnectionLifecyclePlanBase<'connect', 'not_connected', 'connected'> & Readonly<{
65
61
  configuredBlockPolicy: 'editable';
66
62
  audienceCacheAction: 'refresh';
67
- syncQueueAction: 'none';
68
63
  tokenAction: 'none';
69
64
  publicSubmissionPolicy: 'available';
70
65
  }> | MailchimpConnectionLifecyclePlanBase<'reauth_required', 'connected', 'needs_reauth'> & Readonly<{
71
66
  configuredBlockPolicy: 'editable_with_warning';
72
67
  audienceCacheAction: 'none';
73
- syncQueueAction: 'pause_retryable_until_reconnect';
74
68
  tokenAction: 'none';
75
69
  publicSubmissionPolicy: 'unavailable_until_reconfigured';
76
70
  }> | MailchimpConnectionLifecyclePlanBase<'reauth_resolved', 'needs_reauth', 'connected'> & Readonly<{
77
71
  configuredBlockPolicy: 'editable';
78
72
  audienceCacheAction: 'refresh';
79
- syncQueueAction: 'resume_retryable';
80
73
  tokenAction: 'none';
81
74
  publicSubmissionPolicy: 'available';
82
75
  }> | MailchimpConnectionLifecyclePlanBase<'disconnect', 'connected' | 'needs_reauth', 'not_connected'> & Readonly<{
83
76
  configuredBlockPolicy: 'unavailable_until_reconfigured';
84
77
  audienceCacheAction: 'mark_stale_unavailable';
85
- syncQueueAction: 'defer_to_disconnect_sync_policy';
86
78
  tokenAction: 'revoke_and_delete_if_present';
87
79
  publicSubmissionPolicy: 'unavailable_until_reconfigured';
88
80
  }>;
@@ -139,59 +131,10 @@ export type ListMailchimpAudiencesResponse = Readonly<{
139
131
  }>;
140
132
  audiences: readonly [];
141
133
  }>;
142
- export type MailchimpSignupSyncHealthState = 'healthy' | 'work_pending' | 'needs_attention' | 'unknown';
143
- export type MailchimpSignupSyncHealthErrorCategory = 'rate_limited' | 'temporarily_unavailable' | 'network' | 'auth' | 'audience_unavailable' | 'validation' | 'policy' | 'anonymized' | 'unknown';
144
- export type MailchimpSignupSyncHealthCounts = Readonly<{
145
- total: number;
146
- queued: number;
147
- processing: number;
148
- synced: number;
149
- pendingExternalConfirmation: number;
150
- failedRetryable: number;
151
- failedTerminal: number;
152
- retryDue: number;
153
- retryScheduled: number;
154
- staleProcessing: number;
155
- authBlocked: number;
156
- audienceBlocked: number;
157
- invalidIdentity: number;
158
- unrecognizedErrorCategory: number;
159
- }>;
160
- export type MailchimpSignupSyncHealthGroup = Readonly<{
161
- connectionId: MailchimpConnectionId;
162
- audienceId: MailchimpAudienceId;
163
- sourceBlockIds: readonly MailchimpSignupSourceBlockId[];
164
- state: MailchimpSignupSyncHealthState;
165
- counts: MailchimpSignupSyncHealthCounts;
166
- lastSyncAttemptAt: string | null;
167
- nextRetryAt: string | null;
168
- lastErrorCategory: MailchimpSignupSyncHealthErrorCategory | null;
169
- }>;
170
- export type MailchimpSignupSyncHealthCoverage = Readonly<{
171
- tag: 'complete';
172
- totalMirrors: number;
173
- }> | Readonly<{
174
- tag: 'sampled';
175
- sampleSize: number;
176
- sampleLimit: number;
177
- }>;
178
- export type MailchimpSignupSyncHealthResponse = Readonly<{
179
- tag: 'not_configured';
180
- }> | Readonly<{
181
- tag: 'available';
182
- generatedAt: string;
183
- coverage: MailchimpSignupSyncHealthCoverage;
184
- state: MailchimpSignupSyncHealthState;
185
- counts: MailchimpSignupSyncHealthCounts;
186
- groups: readonly MailchimpSignupSyncHealthGroup[];
187
- }>;
188
134
  export type MailchimpIntegrationAPIEndpoints = {
189
135
  listMailchimpAudiences: APIEndpoint<never, {
190
136
  siteId: string;
191
137
  }, ListMailchimpAudiencesResponse>;
192
- getMailchimpSignupSyncHealth: APIEndpoint<never, {
193
- siteId: string;
194
- }, MailchimpSignupSyncHealthResponse>;
195
138
  getMailchimpConnection: APIEndpoint<never, {
196
139
  siteId: string;
197
140
  }, MailchimpIntegrationConnectionStatus>;
@@ -0,0 +1,117 @@
1
+ import type { BrevoConfirmationTemplateId, BrevoAccountId, BrevoConnectionId, BrevoListId, ConfiguredMailingListProvider, MailingListFieldCompatibilityPlan, MailingListGlobalForm, MailingListProvider, MailingListRuntimeContext, MailingListSetupSwitchPlan, MailingListSiteSetup, MailchimpAudienceId, MailchimpInterestId } from '../../core/src/index';
2
+ import type { APIEndpoint } from './apiEndpointTypes';
3
+ import type { MailchimpAudienceCompatibilityIssue } from './mailchimpIntegration';
4
+ export type MailingListSetupChangeRequest = Readonly<{
5
+ expectedRevision: number | null;
6
+ form: MailingListGlobalForm;
7
+ provider: ConfiguredMailingListProvider;
8
+ }>;
9
+ export type MailingListSetupPreviewResponse = Readonly<{
10
+ switchPlan: MailingListSetupSwitchPlan;
11
+ fieldCompatibility: MailingListFieldCompatibilityPlan;
12
+ }>;
13
+ export type MailingListSetupApplyResponse = Readonly<{
14
+ setup: Extract<MailingListSiteSetup, {
15
+ tag: 'configured';
16
+ }>;
17
+ resetPlacementCount: number;
18
+ }>;
19
+ export type BrevoConnectionStatus = Readonly<{
20
+ tag: 'not_connected';
21
+ }> | Readonly<{
22
+ tag: 'connected';
23
+ connectionId: BrevoConnectionId;
24
+ accountId: BrevoAccountId;
25
+ accountEmail: string;
26
+ accountName: string | null;
27
+ connectedAt: string;
28
+ refreshedAt: string | null;
29
+ }> | Readonly<{
30
+ tag: 'needs_reauth';
31
+ connectionId: BrevoConnectionId;
32
+ accountId: BrevoAccountId | null;
33
+ accountEmail: string | null;
34
+ accountName: string | null;
35
+ failureCode: string | null;
36
+ }>;
37
+ export type MailingListProviderCatalog = Readonly<{
38
+ provider: 'native';
39
+ topics: readonly Readonly<{
40
+ id: string;
41
+ name: string;
42
+ }>[];
43
+ }> | Readonly<{
44
+ provider: 'mailchimp';
45
+ audiences: readonly Readonly<{
46
+ id: MailchimpAudienceId;
47
+ name: string;
48
+ memberCount: number | null;
49
+ interests: readonly Readonly<{
50
+ id: MailchimpInterestId;
51
+ name: string;
52
+ categoryId: string;
53
+ categoryName: string;
54
+ }>[];
55
+ compatibilityIssues: readonly MailchimpAudienceCompatibilityIssue[];
56
+ }>[];
57
+ }> | Readonly<{
58
+ provider: 'brevo';
59
+ lists: readonly Readonly<{
60
+ id: BrevoListId;
61
+ name: string;
62
+ totalSubscribers: number | null;
63
+ }>[];
64
+ confirmationTemplates: readonly Readonly<{
65
+ id: BrevoConfirmationTemplateId;
66
+ name: string;
67
+ }>[];
68
+ }>;
69
+ export type MailingListProviderHealth = Readonly<{
70
+ tag: 'not_configured';
71
+ }> | Readonly<{
72
+ tag: 'ready';
73
+ provider: MailingListProvider;
74
+ lastAcknowledgedSignupAt: string | null;
75
+ }> | Readonly<{
76
+ tag: 'needs_attention';
77
+ provider: MailingListProvider;
78
+ reason: 'connection_unavailable' | 'authentication_failed' | 'target_unavailable' | 'recent_signup_failed';
79
+ lastFailureAt: string | null;
80
+ }>;
81
+ export type ConnectBrevoRequest = Readonly<{
82
+ apiKey: string;
83
+ }>;
84
+ export type MailingListIntegrationAPIEndpoints = {
85
+ getMailingListAuthoringContext: APIEndpoint<never, {
86
+ siteId: string;
87
+ }, MailingListRuntimeContext>;
88
+ getMailingListSetup: APIEndpoint<never, {
89
+ siteId: string;
90
+ }, MailingListSiteSetup>;
91
+ previewMailingListSetupChange: APIEndpoint<MailingListSetupChangeRequest, {
92
+ siteId: string;
93
+ }, MailingListSetupPreviewResponse>;
94
+ applyMailingListSetupChange: APIEndpoint<MailingListSetupChangeRequest, {
95
+ siteId: string;
96
+ }, MailingListSetupApplyResponse>;
97
+ getMailingListProviderCatalog: APIEndpoint<never, {
98
+ siteId: string;
99
+ provider: MailingListProvider;
100
+ }, MailingListProviderCatalog>;
101
+ refreshMailingListProviderCatalog: APIEndpoint<never, {
102
+ siteId: string;
103
+ provider: Exclude<MailingListProvider, 'native'>;
104
+ }, MailingListProviderCatalog>;
105
+ getMailingListProviderHealth: APIEndpoint<never, {
106
+ siteId: string;
107
+ }, MailingListProviderHealth>;
108
+ getBrevoConnection: APIEndpoint<never, {
109
+ siteId: string;
110
+ }, BrevoConnectionStatus>;
111
+ connectBrevo: APIEndpoint<ConnectBrevoRequest, {
112
+ siteId: string;
113
+ }, BrevoConnectionStatus>;
114
+ disconnectBrevo: APIEndpoint<never, {
115
+ siteId: string;
116
+ }, BrevoConnectionStatus>;
117
+ };
@@ -0,0 +1 @@
1
+ export { NAVIGATION_LOCATIONS, NAVIGATION_LOCATION_DESCRIPTORS, parseSiteNavigationLocations, type NavigationLocation, type NavigationLocationDescriptor, type SiteNavigationLocationRow, type SiteNavigationLocations, type SiteNavigationLocationsError, } from '../../../core/src/index';
@@ -12,7 +12,7 @@ export { DASHBOARD_SETTINGS_NAV_GROUPS, buildDashboardSettingsNavPlan, isDemoSet
12
12
  export { SETTINGS_ACTION_POLICIES, SETTINGS_SURFACE_POLICIES, getRolePolicyMinimumRole, getSettingsActionPolicy, getSettingsSurfaceNavPolicy, getSettingsSurfacePagePolicy, getSettingsSurfacePolicy, isSettingsRolePolicyAllowed, } from './settings/permissions';
13
13
  export { buildDashboardTeamMemberNavPlan, isTeamMemberAccessiblePath, } from './navigation/dashboardTeamMemberNav';
14
14
  export { buildDashboardBookingsNavPlan, resolveDashboardBookingsNavPolicy, } from './navigation/dashboardBookingsNav';
15
- export { MAIN_NAVIGATION_MENU_IDENTIFIER, actionableNavigationMenuMatchPlan, isMainNavigationMenuIdentifier, navigationMenuIdentity, normalizeNavigationMenuIdentifier, parseNavigationMenuIdentifier, planNavigationMenuMatch, unsafeAsNavigationMenuIdentifier, unsafeAsNavigationMenuIdentity, } from './navigation/identity';
15
+ export { NAVIGATION_LOCATIONS, NAVIGATION_LOCATION_DESCRIPTORS, parseSiteNavigationLocations, type NavigationLocation, type NavigationLocationDescriptor, type SiteNavigationLocationRow, type SiteNavigationLocations, type SiteNavigationLocationsError, } from './navigation/locations';
16
16
  export { isDemoMoneyNavSurfaceVisible, isDemoShopNavSurfaceVisible, } from './navigation/dashboardDemoNav';
17
17
  export type { DashboardDemoUiMode, DashboardSiteNavDescriptor, DashboardSiteNavGroupId, DashboardSiteNavGroupPlan, DashboardSiteNavItemPlan, DashboardSiteNavLinkPlan, DashboardSiteNavPlanContext, DashboardSiteNavSurfaceId, SiteNavFeatureFlag, } from './navigation/dashboardSiteNav';
18
18
  export type { DashboardSettingsDangerItemId, DashboardSettingsDangerItemPlan, DashboardSettingsNavDescriptor, DashboardSettingsNavGroupDescriptor, DashboardSettingsNavGroupPlan, DashboardSettingsNavItemPlan, DashboardSettingsNavPlan, DashboardSettingsNavPlanContext, DashboardSettingsNavSurfaceId, SettingsNavFeatureFlag, } from './navigation/dashboardSettingsNav';
@@ -20,7 +20,6 @@ export type { SettingsActionId, SettingsPermissionPolicy, SettingsRolePermission
20
20
  export type { DashboardTeamMemberNavContext, DashboardTeamMemberNavDestination, DashboardTeamMemberNavItemId, DashboardTeamMemberNavItemPlan, } from './navigation/dashboardTeamMemberNav';
21
21
  export type { DashboardAppointmentResourceLabel, DashboardBookingModules, DashboardBookingsNavContext, DashboardBookingsNavDestination, DashboardBookingsNavGroupPlan, DashboardBookingsNavItemPlan, DashboardBookingsNavPolicy, DashboardBookingsTeamMemberContext, FullAppointmentsNavPolicy, StaffScopedAppointmentsNavPolicy, } from './navigation/dashboardBookingsNav';
22
22
  export type { DashboardMoneyNavSurfaceId, DashboardShopNavSurfaceId, } from './navigation/dashboardDemoNav';
23
- export type { ActionableNavigationMenuMatchPlan, NavigationMenuIdentifier, NavigationMenuIdentifierParseError, NavigationMenuIdentity, NavigationMenuIdentityInput, NavigationMenuMatchCandidate, NavigationMenuMatchFailure, NavigationMenuMatchInput, NavigationMenuMatchPlan, } from './navigation/identity';
24
23
  export { linkPayloadToValue, linkValueToPayload, toInternalLinkValue, toPersistableNavigationLinkValue, } from './navigation/linkValue';
25
24
  export type { PersistableNavigationLinkError, PersistableNavigationLinkResult, PersistableNavigationLinkValue, } from './navigation/linkValue';
26
25
  export type { CartLinkLabelConfig, CartLinkPayload, EntryLinkPayload, InternalLinkRoutablePayload, PageRoutableContentItem, EntryRoutableContentItem, PageSurfaceRoutableContentItem, LinkResolutionOptions, LinkPayload, NavigationLinkInput, NavigationUrlType, PageLinkPayload, PortalLinkPayload, ResolvedNavigationLink, RoutableContentItem, SitemapRouteItem, } from './navigation/types';
@@ -28,8 +27,6 @@ export { matchNavigationItems } from './navigation/matcher';
28
27
  export type { ItemMatch, MatchResult } from './navigation/matcher';
29
28
  export type { EntryNavLinkInfo, NavigationItemForMatching, NavigationItemInput, NavigationReferenceMaps, PageNavLinkInfo, } from './navigation/types';
30
29
  type GetMenusResponse = NonNullable<APIEndpoints['getNavigationMenus']['response']>;
31
- type CreateMenuBody = NonNullable<APIEndpoints['createNavigationMenu']['body']>;
32
- type UpdateMenuBody = NonNullable<APIEndpoints['updateNavigationMenu']['body']>;
33
30
  type CreateItemBody = NonNullable<APIEndpoints['createNavigationItem']['body']>;
34
31
  type UpdateItemBody = NonNullable<APIEndpoints['updateNavigationItem']['body']>;
35
32
  type ReorderItemsBody = NonNullable<APIEndpoints['reorderNavigationItems']['body']>;
@@ -37,28 +34,6 @@ export declare function getNavigationMenus(apiClient: ApiClient, { siteId, optio
37
34
  siteId: string;
38
35
  options?: RequestInit;
39
36
  }): Promise<GetMenusResponse>;
40
- export declare function createNavigationMenu(apiClient: ApiClient, { siteId, name, isPrimary, position, options, }: {
41
- siteId: string;
42
- } & CreateMenuBody & {
43
- options?: RequestInit;
44
- }): Promise<{
45
- menus: NavigationMenuWithItems[];
46
- }>;
47
- export declare function updateNavigationMenu(apiClient: ApiClient, { siteId, menuId, name, isPrimary, position, options, }: {
48
- siteId: string;
49
- menuId: string;
50
- } & UpdateMenuBody & {
51
- options?: RequestInit;
52
- }): Promise<{
53
- menus: NavigationMenuWithItems[];
54
- }>;
55
- export declare function deleteNavigationMenu(apiClient: ApiClient, { siteId, menuId, options }: {
56
- siteId: string;
57
- menuId: string;
58
- options?: RequestInit;
59
- }): Promise<{
60
- menus: NavigationMenuWithItems[];
61
- }>;
62
37
  export declare function createNavigationItem(apiClient: ApiClient, { siteId, menuId, label, type, link, parentId, orderIndex, isCta, options, }: {
63
38
  siteId: string;
64
39
  menuId: string;
@@ -128,14 +128,121 @@ export declare const NEWSLETTER_ENDPOINT_DEFINITIONS: {
128
128
  responseKind: "json";
129
129
  errors: ("auth:forbidden" | "server:internal_error")[];
130
130
  };
131
- getMailchimpSignupSyncHealth: {
132
- path: "/sites/{siteId}/integrations/mailchimp/signup-sync-health";
131
+ getMailingListSetup: {
132
+ path: "/sites/{siteId}/mailing-list/setup";
133
+ method: "GET";
134
+ tags: ("riverbank:site:{siteId}" | "riverbank:site:{siteId}:newsletter")[];
135
+ auth: "user";
136
+ responseKind: "json";
137
+ errors: ("auth:forbidden" | "server:internal_error")[];
138
+ };
139
+ getMailingListAuthoringContext: {
140
+ path: "/sites/{siteId}/mailing-list/authoring-context";
141
+ method: "GET";
142
+ tags: ("riverbank:site:{siteId}" | "riverbank:site:{siteId}:newsletter")[];
143
+ auth: "user";
144
+ responseKind: "json";
145
+ errors: ("auth:forbidden" | "server:internal_error")[];
146
+ };
147
+ previewMailingListSetupChange: {
148
+ path: "/sites/{siteId}/mailing-list/setup/preview";
149
+ method: "POST";
150
+ tags: ("riverbank:site:{siteId}" | "riverbank:site:{siteId}:newsletter")[];
151
+ auth: "user";
152
+ responseKind: "json";
153
+ demoMutation: {
154
+ classification: "allowed";
155
+ publicMessage: "";
156
+ } | {
157
+ classification: import("./apiEndpointTypes").ApiDemoMutationBlockingClassification;
158
+ publicMessage: string;
159
+ };
160
+ errors: ("auth:forbidden" | "validation:invalid_input" | "server:internal_error")[];
161
+ };
162
+ applyMailingListSetupChange: {
163
+ path: "/sites/{siteId}/mailing-list/setup";
164
+ method: "PUT";
165
+ tags: ("riverbank:site:{siteId}" | "riverbank:site:{siteId}:newsletter")[];
166
+ auth: "user";
167
+ responseKind: "json";
168
+ demoMutation: {
169
+ classification: "allowed";
170
+ publicMessage: "";
171
+ } | {
172
+ classification: import("./apiEndpointTypes").ApiDemoMutationBlockingClassification;
173
+ publicMessage: string;
174
+ };
175
+ errors: ("auth:forbidden" | "validation:invalid_input" | "resource:conflict" | "server:internal_error")[];
176
+ };
177
+ getMailingListProviderCatalog: {
178
+ path: "/sites/{siteId}/mailing-list/providers/{provider}/catalog";
179
+ method: "GET";
180
+ tags: ("riverbank:site:{siteId}" | "riverbank:site:{siteId}:newsletter")[];
181
+ auth: "user";
182
+ responseKind: "json";
183
+ errors: ("auth:forbidden" | "validation:invalid_input" | "server:internal_error")[];
184
+ };
185
+ refreshMailingListProviderCatalog: {
186
+ path: "/sites/{siteId}/mailing-list/providers/{provider}/catalog/refresh";
187
+ method: "POST";
188
+ tags: ("riverbank:site:{siteId}" | "riverbank:site:{siteId}:newsletter")[];
189
+ auth: "user";
190
+ responseKind: "json";
191
+ demoMutation: {
192
+ classification: "allowed";
193
+ publicMessage: "";
194
+ } | {
195
+ classification: import("./apiEndpointTypes").ApiDemoMutationBlockingClassification;
196
+ publicMessage: string;
197
+ };
198
+ errors: ("auth:forbidden" | "validation:invalid_input" | "server:internal_error")[];
199
+ };
200
+ getMailingListProviderHealth: {
201
+ path: "/sites/{siteId}/mailing-list/health";
202
+ method: "GET";
203
+ tags: ("riverbank:site:{siteId}" | "riverbank:site:{siteId}:newsletter")[];
204
+ auth: "user";
205
+ responseKind: "json";
206
+ errors: ("auth:forbidden" | "server:internal_error")[];
207
+ };
208
+ getBrevoConnection: {
209
+ path: "/sites/{siteId}/integrations/brevo/connection";
133
210
  method: "GET";
134
211
  tags: "riverbank:site:{siteId}"[];
135
212
  auth: "user";
136
213
  responseKind: "json";
137
214
  errors: ("auth:forbidden" | "server:internal_error")[];
138
215
  };
216
+ connectBrevo: {
217
+ path: "/sites/{siteId}/integrations/brevo/connection";
218
+ method: "PUT";
219
+ tags: "riverbank:site:{siteId}"[];
220
+ auth: "user";
221
+ responseKind: "json";
222
+ demoMutation: {
223
+ classification: "allowed";
224
+ publicMessage: "";
225
+ } | {
226
+ classification: import("./apiEndpointTypes").ApiDemoMutationBlockingClassification;
227
+ publicMessage: string;
228
+ };
229
+ errors: ("auth:forbidden" | "validation:invalid_input" | "resource:conflict" | "server:internal_error")[];
230
+ };
231
+ disconnectBrevo: {
232
+ path: "/sites/{siteId}/integrations/brevo/disconnect";
233
+ method: "POST";
234
+ tags: "riverbank:site:{siteId}"[];
235
+ auth: "user";
236
+ responseKind: "json";
237
+ demoMutation: {
238
+ classification: "allowed";
239
+ publicMessage: "";
240
+ } | {
241
+ classification: import("./apiEndpointTypes").ApiDemoMutationBlockingClassification;
242
+ publicMessage: string;
243
+ };
244
+ errors: ("auth:forbidden" | "resource:conflict" | "server:internal_error")[];
245
+ };
139
246
  getMailchimpConnection: {
140
247
  path: "/sites/{siteId}/integrations/mailchimp/connection";
141
248
  method: "GET";
@@ -0,0 +1,185 @@
1
+ import type { LogoFacts } from "../../../theme-core/src/site-styles/index";
2
+ import type { BillingPlanId } from "../../../billing/src/plans/types";
3
+ import type { SiteVerticalBookingConfig } from "../../../core/src/index";
4
+ /**
5
+ * Macadamia public-onboarding surface data.
6
+ *
7
+ * The wire shapes the onboarding wizard reads and writes: what the person is
8
+ * setting up, how they want it to look, and the one offering they may scaffold
9
+ * on the way through. `siteOnboarding` re-exports all of it, so importers keep
10
+ * reaching for these types through `@riverbankcms/api` as they always have.
11
+ *
12
+ * Note: Do NOT use these API types as validation schemas. They document wire
13
+ * contracts while the owning services validate and normalize inputs.
14
+ */
15
+ export type MacadamiaOnboardingSiteMode = "single_page" | "fuller_starter";
16
+ export type MacadamiaOnboardingMappedPalette = {
17
+ palette: Record<"primary" | "secondary" | "accent" | "background" | "surface" | "text", string>;
18
+ mode: "light" | "dark";
19
+ };
20
+ export type MacadamiaOnboardingLogoPaletteRecommendation = {
21
+ title: string;
22
+ palette: MacadamiaOnboardingMappedPalette["palette"];
23
+ };
24
+ export type MacadamiaOnboardingLogoAnalysis = {
25
+ logoFacts: LogoFacts;
26
+ recommendedPalettes: MacadamiaOnboardingLogoPaletteRecommendation[];
27
+ ignoredColors: string[];
28
+ };
29
+ export type MacadamiaOnboardingVisualIdentity = {
30
+ logoPath: string | null;
31
+ logoUrl: string | null;
32
+ logoPalette: string[] | null;
33
+ logoMappedPalette: MacadamiaOnboardingMappedPalette | null;
34
+ logoAnalysis: MacadamiaOnboardingLogoAnalysis | null;
35
+ primaryColor: string | null;
36
+ secondaryColors: string[];
37
+ selectedPaletteKey: string | null;
38
+ inspirationUrls: string[];
39
+ };
40
+ export type PublicOnboardingSurfaceId = "macadamia";
41
+ export type MacadamiaOnboardingTeamMode = "solo" | "team";
42
+ export type MacadamiaOnboardingOfferingKind = "classes" | "courses" | "workshops" | "retreats" | "performances" | "private_sessions";
43
+ export type MacadamiaOnboardingStyleMood = "calm_grounding" | "warm_welcoming" | "modern_polished" | "natural_earthy" | "bright_uplifting" | "luxury_retreat";
44
+ export type MacadamiaOnboardingFirstOfferingKind = "class" | "course" | "workshop" | "retreat" | "performance" | "private_session";
45
+ export type MacadamiaOnboardingFirstOfferingDeliveryMode = "in_person" | "online" | "both";
46
+ export type MacadamiaOnboardingFirstOfferingScheduleMode = "weekly" | "one_off";
47
+ export type MacadamiaOnboardingWeekday = "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
48
+ export type MacadamiaOnboardingEventSession = {
49
+ clientId: string;
50
+ startDate: string;
51
+ startTime: string;
52
+ endDate: string;
53
+ endTime: string;
54
+ isMultiDay: boolean;
55
+ };
56
+ export type MacadamiaOnboardingFirstOffering = {
57
+ kind: "class";
58
+ title: string;
59
+ description: string | null;
60
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode;
61
+ location: string | null;
62
+ startDate: string;
63
+ recurrenceRule: string;
64
+ startTime: string;
65
+ durationMinutes: number;
66
+ priceType: "free" | "paid";
67
+ priceAmount: number | null;
68
+ capacity: number | null;
69
+ } | {
70
+ kind: "course";
71
+ title: string;
72
+ description: string | null;
73
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode;
74
+ location: string | null;
75
+ priceType: "free" | "paid";
76
+ priceAmount: number | null;
77
+ capacity: number | null;
78
+ sessions: MacadamiaOnboardingEventSession[];
79
+ } | {
80
+ kind: "workshop" | "retreat" | "performance";
81
+ title: string;
82
+ description: string | null;
83
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode;
84
+ location: string | null;
85
+ scheduleMode: MacadamiaOnboardingFirstOfferingScheduleMode;
86
+ startDate: string;
87
+ startTime: string;
88
+ durationMinutes: number;
89
+ priceType: "free" | "paid";
90
+ priceAmount: number | null;
91
+ capacity: number | null;
92
+ } | {
93
+ kind: "private_session";
94
+ title: string;
95
+ description: string | null;
96
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode;
97
+ location: string | null;
98
+ durationMinutes: number;
99
+ priceType: "free" | "paid";
100
+ priceAmount: number | null;
101
+ };
102
+ export type MacadamiaOnboardingDraftFirstOffering = {
103
+ kind: "class";
104
+ title: string;
105
+ description: string | null;
106
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode | null;
107
+ location: string | null;
108
+ startDate: string | null;
109
+ recurrenceRule: string | null;
110
+ startTime: string | null;
111
+ durationMinutes: number | null;
112
+ priceType: "free" | "paid" | null;
113
+ priceAmount: number | null;
114
+ capacity: number | null;
115
+ } | {
116
+ kind: "course";
117
+ title: string;
118
+ description: string | null;
119
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode | null;
120
+ location: string | null;
121
+ priceType: "free" | "paid" | null;
122
+ priceAmount: number | null;
123
+ capacity: number | null;
124
+ sessions: MacadamiaOnboardingEventSession[];
125
+ } | {
126
+ kind: "workshop" | "retreat" | "performance";
127
+ title: string;
128
+ description: string | null;
129
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode | null;
130
+ location: string | null;
131
+ scheduleMode: MacadamiaOnboardingFirstOfferingScheduleMode;
132
+ startDate: string | null;
133
+ startTime: string | null;
134
+ durationMinutes: number | null;
135
+ priceType: "free" | "paid" | null;
136
+ priceAmount: number | null;
137
+ capacity: number | null;
138
+ } | {
139
+ kind: "private_session";
140
+ title: string;
141
+ description: string | null;
142
+ deliveryMode: MacadamiaOnboardingFirstOfferingDeliveryMode | null;
143
+ location: string | null;
144
+ durationMinutes: number | null;
145
+ priceType: "free" | "paid" | null;
146
+ priceAmount: number | null;
147
+ };
148
+ /**
149
+ * Which public experience the Macadamia onboarding attempt is setting up.
150
+ *
151
+ * Customer copy says "booking page"; the wire value is `hosted_booking`. This
152
+ * is the wizard's own preference, not a site authority: provisioning reads it
153
+ * into the site-level field once that exists.
154
+ *
155
+ * Tri-state on the wire: absent means an attempt written before the two-mode
156
+ * wizard (read as `website`), explicit `null` means the person has not chosen
157
+ * yet, and a value is the chosen mode.
158
+ */
159
+ export type MacadamiaOnboardingPublicExperience = "website" | "hosted_booking";
160
+ /** Plan the person arrived with from pricing. Stored only; no billing action. */
161
+ export type MacadamiaOnboardingPlanPreference = BillingPlanId;
162
+ export type MacadamiaOnboardingSurfaceData = {
163
+ teamMode: MacadamiaOnboardingTeamMode;
164
+ ownerName: string | null;
165
+ offeringKinds: MacadamiaOnboardingOfferingKind[];
166
+ bookingVerticalConfig?: SiteVerticalBookingConfig | null;
167
+ /**
168
+ * Resolved by the payload schema before any reader sees it: an attempt
169
+ * written before the two-mode wizard parses as `website`, and an explicit
170
+ * null is someone who has not chosen a mode yet.
171
+ */
172
+ publicExperience: MacadamiaOnboardingPublicExperience | null;
173
+ planPreference?: MacadamiaOnboardingPlanPreference | null;
174
+ tagline?: string | null;
175
+ contactEmail?: string | null;
176
+ contactPhone?: string | null;
177
+ siteMode: MacadamiaOnboardingSiteMode;
178
+ styleMoods: MacadamiaOnboardingStyleMood[];
179
+ countryCode: string | null;
180
+ locationText: string | null;
181
+ timezone: string;
182
+ currency: string;
183
+ visualIdentity: MacadamiaOnboardingVisualIdentity;
184
+ firstOffering: MacadamiaOnboardingDraftFirstOffering | null;
185
+ };