@riverbankcms/sdk 0.127.0 → 0.129.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 (178) hide show
  1. package/README.md +33 -0
  2. package/dist/{PreviewEditorSidebar-BXtfF7tp.mjs → PreviewEditorSidebar-B43CJ0g_.mjs} +9 -33
  3. package/dist/{PreviewEditorUI-Dou73Q0K.mjs → PreviewEditorUI-DHirVkeM.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
  5. package/dist/SdkPreviewModeRuntime-BJumZy1B.mjs +11209 -0
  6. package/dist/{SiteChromeCustomizeContext-DZiDBAYu.mjs → SiteChromeCustomizeContext-D9SlpwEj.mjs} +31757 -1621
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +288 -36
  8. package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
  9. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
  10. package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
  11. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  12. package/dist/_dts/api/src/communications.d.ts +2 -1
  13. package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
  14. package/dist/_dts/api/src/contentRuntime.d.ts +2 -5
  15. package/dist/_dts/api/src/endpoints.d.ts +1 -1
  16. package/dist/_dts/api/src/footerSettings.d.ts +11 -0
  17. package/dist/_dts/api/src/index.d.ts +2 -1
  18. package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
  19. package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
  20. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
  21. package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
  22. package/dist/_dts/api/src/siteOperations.d.ts +12 -3
  23. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
  24. package/dist/_dts/blocks/src/PageRenderer.d.ts +20 -10
  25. package/dist/_dts/blocks/src/client/form.d.ts +1 -0
  26. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
  27. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
  29. package/dist/_dts/blocks/src/index.d.ts +2 -1
  30. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +30 -0
  31. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +37 -0
  32. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  33. package/dist/_dts/blocks/src/server.d.ts +1 -1
  34. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  35. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  36. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  37. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  38. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  40. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  46. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  48. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  49. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  50. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  51. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  52. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  53. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  54. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  55. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  56. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  57. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  58. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  59. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  60. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  61. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  62. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  63. package/dist/_dts/core/src/index.d.ts +4 -0
  64. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  65. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +73 -6
  66. package/dist/_dts/db/src/index.d.ts +1 -0
  67. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  68. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  69. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -0
  70. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  71. package/dist/_dts/preview-next/src/client/index.d.ts +47 -47
  72. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  73. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  74. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  75. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  76. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +19 -7
  77. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +30 -23
  78. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -5
  79. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +9 -0
  80. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +21 -6
  81. package/dist/_dts/preview-next/src/client/sdk-runtime.d.ts +8 -8
  82. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  83. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  84. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  85. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  86. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  87. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  88. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  89. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  90. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  91. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  92. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  93. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  94. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  95. package/dist/_dts/sdk/src/next/catch-all.d.ts +6 -0
  96. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  97. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +33 -0
  98. package/dist/_dts/sdk/src/next/types.d.ts +23 -9
  99. package/dist/_dts/sdk/src/preview-next/before-render.d.ts +4 -6
  100. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +3 -3
  101. package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
  102. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  103. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  104. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  105. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +32 -3
  106. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +13 -2
  107. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +31 -18
  108. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +20 -9
  109. package/dist/_dts/sdk/src/rendering/index.d.ts +8 -4
  110. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  111. package/dist/_dts/sdk/src/rendering/renderingMode.d.ts +23 -0
  112. package/dist/_dts/sdk/src/rendering/server.d.ts +5 -3
  113. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +6 -0
  114. package/dist/_dts/sdk/src/version.d.ts +1 -1
  115. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  116. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  117. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +10 -4
  118. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +2 -3
  119. package/dist/cli/index.mjs +5535 -4835
  120. package/dist/cli/init-docs/content/workflow-preview-mode.md +24 -11
  121. package/dist/client/{courseRegistration-DTEYWL6Z.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  122. package/dist/client/{DiscountCodeDisclosure-BDFRp8Y7.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  123. package/dist/client/{EventCombined.client-DJgF1_lf.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  124. package/dist/client/{EventListing.client-CnWGNjOr.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  125. package/dist/client/{LeafletStaticMap-BISs9Bl7.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  126. package/dist/client/{StepIndicator-D8gVYkK-.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  127. package/dist/client/{accordion-DFDajgDz.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  128. package/dist/client/{bookingForm-Bdqj9-52.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  129. package/dist/client/{carousel-Cvqf-kN8.mjs → carousel-DPNmiH0f.mjs} +1 -1
  130. package/dist/client/{cart-CuH2TJXP.mjs → cart--egVXlrR.mjs} +3 -3
  131. package/dist/client/{checkout-CMNPpejZ.mjs → checkout-DywWtMcq.mjs} +3 -3
  132. package/dist/client/client.mjs +5324 -4942
  133. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  134. package/dist/client/{eventCalendar-BW-XoxZ0.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  135. package/dist/client/{eventCombined-Bpn7s0y9.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  136. package/dist/client/{eventDetails-D2uUSTMH.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  137. package/dist/client/{eventListing-CVr1c094.mjs → eventListing-D0vm-zST.mjs} +2 -2
  138. package/dist/client/{eventRegistration-Dv4AvkMw.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  139. package/dist/client/{form-DxdKf9fs.mjs → form-C2Zf1n3K.mjs} +1 -1
  140. package/dist/client/{headerSection-BaXI5Sro.mjs → headerSection-CP05gzdc.mjs} +2 -2
  141. package/dist/client/hooks.mjs +212 -61
  142. package/dist/client/{locationMap-BEtW2fKz.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  143. package/dist/client/{newsletterForm-BKKs0S4R.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  144. package/dist/client/{pricing-ClkqcElA.mjs → pricing-DGuNR1W4.mjs} +1 -1
  145. package/dist/client/{productDetail-H-ru8dyy.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  146. package/dist/client/{productList-Buyi5c0C.mjs → productList-DbB3jwqd.mjs} +3 -3
  147. package/dist/client/{propsDecoder-BF7i6Ijg.mjs → propsDecoder-CiTuhUwY.mjs} +130 -87
  148. package/dist/client/rendering/client.mjs +416 -208
  149. package/dist/client/rendering/islands.mjs +18 -18
  150. package/dist/client/rendering.mjs +6026 -5596
  151. package/dist/client/{scrollToBlock-D_7t8yWb.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  152. package/dist/client/{shop-CF7SZQNX.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  153. package/dist/client/{shop-commerce-DA7_Rq5p.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  154. package/dist/client/{shop-commerce-store-BmLqW7Gh.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  155. package/dist/client/{shopShared-WL-E1znM.mjs → shopShared-cF0c20vB.mjs} +2 -2
  156. package/dist/client/{useEventFilters-rc8VLeLV.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  157. package/dist/client/{usePolling-1ncrfd4S.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  158. package/dist/preview-next/before-render.mjs +11 -4
  159. package/dist/preview-next/client/runtime.mjs +4 -4
  160. package/dist/preview-next/middleware.mjs +1 -1
  161. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  162. package/dist/{sdk-runtime-BnrCCFJq.mjs → sdk-runtime-CfZd5pAm.mjs} +2 -2
  163. package/dist/{separator-CFvBx2yl.mjs → separator-DkTe68HE.mjs} +1 -1
  164. package/dist/server/components.mjs +950 -639
  165. package/dist/server/config-validation.mjs +209 -61
  166. package/dist/server/config.mjs +209 -61
  167. package/dist/server/data.mjs +212 -61
  168. package/dist/server/index.mjs +40 -16
  169. package/dist/server/next.mjs +1181 -835
  170. package/dist/server/page-converter.mjs +211 -64
  171. package/dist/server/prebuild.mjs +1 -1
  172. package/dist/server/rendering/server.mjs +974 -637
  173. package/dist/server/rendering.mjs +980 -644
  174. package/dist/server/routing.mjs +254 -80
  175. package/dist/server/server.mjs +252 -77
  176. package/package.json +1 -1
  177. package/dist/SdkPreviewModeRuntime-B0HPXr-l.mjs +0 -39546
  178. package/dist/client/MagicLinkForm-b5E_HoG9.mjs +0 -327
@@ -1,118 +1,8 @@
1
- import type { Brand } from './branded';
2
- import { type RichTextDoc } from './rich-text';
1
+ import type { FooterCompositionError, FooterCompositionV1, FooterModuleId, FooterSection, FooterSourceAvailability, ResolvedFooterSection } from './footer-composition-types';
2
+ import { type FooterEngagementSection } from './footer-engagement';
3
3
  import { type Result } from './result';
4
- export type FooterModuleId = Brand<string, 'FooterModuleId'>;
5
- export type FooterMembershipKey = Brand<string, 'FooterMembershipKey'>;
6
- export type FooterRichText = RichTextDoc;
7
- export type FooterNavigationRole = 'main' | 'legal-policy';
8
- type FooterSectionBase<TKind extends string> = Readonly<{
9
- id: FooterModuleId;
10
- kind: TKind;
11
- heading: string | null;
12
- selected: boolean;
13
- }>;
14
- export type FooterSection = (FooterSectionBase<'brand'> & Readonly<{
15
- showLogo: boolean;
16
- showTitle: boolean;
17
- }>) | (FooterSectionBase<'navigation'> & Readonly<{
18
- source: Readonly<{
19
- kind: 'menu-role';
20
- role: 'main';
21
- }>;
22
- }>) | (FooterSectionBase<'legal-navigation'> & Readonly<{
23
- source: Readonly<{
24
- kind: 'menu-role';
25
- role: 'legal-policy';
26
- }>;
27
- }>) | (FooterSectionBase<'business-address'> & Readonly<{
28
- source: Readonly<{
29
- kind: 'business-address';
30
- }>;
31
- }>) | (FooterSectionBase<'contact'> & Readonly<{
32
- source: Readonly<{
33
- kind: 'public-profile';
34
- }>;
35
- }>) | (FooterSectionBase<'opening-hours'> & Readonly<{
36
- source: Readonly<{
37
- kind: 'public-profile';
38
- }>;
39
- }>) | (FooterSectionBase<'social-links'> & Readonly<{
40
- source: Readonly<{
41
- kind: 'public-profile';
42
- }>;
43
- }>) | (FooterSectionBase<'supporting-text'> & Readonly<{
44
- content: FooterRichText | null;
45
- }>) | (FooterSectionBase<'legal'> & Readonly<{
46
- content: FooterRichText | null;
47
- }>);
48
- /** Retained as a source-compatible name while callers move from modules to sections. */
49
- export type FooterModule = FooterSection;
50
- export type FooterModuleKind = FooterSection['kind'];
51
- export type FooterCompositionV1 = Readonly<{
52
- schemaVersion: 1;
53
- sections: readonly FooterSection[];
54
- }>;
55
- export type FooterCompositionError = Readonly<{
56
- code: 'invalid_shape' | 'unsupported_schema_version' | 'invalid_section' | 'duplicate_section_id' | 'duplicate_section_kind' | 'unknown_section';
57
- path: string;
58
- message: string;
59
- }>;
60
- export type FooterLookPolicy = Readonly<{
61
- kind: 'integrated-legal';
62
- }> | Readonly<{
63
- kind: 'separate-legal-region';
64
- }>;
65
- export type FooterVisualGroupKind = 'identity' | 'main-navigation' | 'visit' | 'legal-ending';
66
- export type FooterColumnCount = 1 | 2 | 3 | 4;
67
- export type FooterVisualGroup = Readonly<{
68
- kind: FooterVisualGroupKind;
69
- sections: readonly FooterSection[];
70
- span: 1;
71
- }>;
72
- export type FooterRenderRegion = Readonly<{
73
- kind: 'main' | 'bottom';
74
- columns: FooterColumnCount;
75
- groups: readonly FooterVisualGroup[];
76
- }>;
77
- export type FooterArrangementPlan = Readonly<{
78
- membershipKey: FooterMembershipKey;
79
- regions: readonly FooterRenderRegion[];
80
- mobileGroups: readonly FooterVisualGroup[];
81
- }>;
82
- export type FooterRepairTarget = Readonly<{
83
- kind: 'site-identity';
84
- }> | Readonly<{
85
- kind: 'navigation';
86
- role: FooterNavigationRole;
87
- }> | Readonly<{
88
- kind: 'business-address';
89
- }> | Readonly<{
90
- kind: 'public-profile';
91
- section: 'contact' | 'opening-hours' | 'social-links';
92
- }> | Readonly<{
93
- kind: 'footer-section';
94
- sectionId: FooterModuleId;
95
- }>;
96
- export type ResolvedFooterSection = Readonly<{
97
- kind: 'renderable';
98
- section: FooterSection;
99
- }> | Readonly<{
100
- kind: 'missing-source';
101
- section: FooterSection;
102
- repairTarget: FooterRepairTarget;
103
- }>;
104
- export type RenderableFooterSection = Extract<ResolvedFooterSection, {
105
- kind: 'renderable';
106
- }>;
107
- export type FooterSourceAvailability = Readonly<{
108
- hasLogo: boolean;
109
- hasMainNavigation: boolean;
110
- hasLegalPolicyNavigation: boolean;
111
- hasBusinessAddress: boolean;
112
- hasContact: boolean;
113
- hasOpeningHours: boolean;
114
- hasSocialLinks: boolean;
115
- }>;
4
+ export { planFooterArrangement } from './footer-arrangement';
5
+ export type * from './footer-composition-types';
116
6
  export declare function unsafeAsFooterModuleId(value: string): FooterModuleId;
117
7
  export declare function parseFooterModuleId(value: unknown): Result<FooterModuleId, FooterCompositionError>;
118
8
  export declare function validateFooterComposition(composition: FooterCompositionV1): Result<FooterCompositionV1, FooterCompositionError>;
@@ -123,8 +13,10 @@ export declare function parseFooterCompositionV1(value: unknown): Result<FooterC
123
13
  */
124
14
  export declare function upgradePlacementFooterCompositionV1(value: unknown): Result<FooterCompositionV1, FooterCompositionError>;
125
15
  export declare function setFooterSectionSelected(composition: FooterCompositionV1, sectionId: FooterModuleId, selected: boolean): Result<FooterCompositionV1, FooterCompositionError>;
16
+ export declare function parseFooterEngagementSection(value: unknown): Result<FooterEngagementSection, FooterCompositionError>;
17
+ export declare function upsertFooterEngagementSection(composition: FooterCompositionV1, section: FooterEngagementSection): Result<FooterCompositionV1, FooterCompositionError>;
18
+ export declare function removeFooterEngagementSection(composition: FooterCompositionV1): FooterCompositionV1;
126
19
  export declare function resolveFooterSections(composition: FooterCompositionV1, availability: FooterSourceAvailability): readonly ResolvedFooterSection[];
127
- export declare function planFooterArrangement(renderableSections: readonly RenderableFooterSection[], policy: FooterLookPolicy): FooterArrangementPlan;
128
20
  export type FooterEditorOverviewItem = Readonly<{
129
21
  section: FooterSection;
130
22
  status: 'selected' | 'available';
@@ -141,4 +33,3 @@ type LegacyFooterNormalizationOptions = Readonly<{
141
33
  footerVisible?: boolean;
142
34
  }>;
143
35
  export declare function normalizeLegacyFooterContentToV1(value: unknown, options?: LegacyFooterNormalizationOptions): Result<FooterCompositionV1, FooterCompositionError>;
144
- export {};
@@ -0,0 +1,30 @@
1
+ import { type FormId } from './branded';
2
+ import { type NewsletterSignupAuthoringDestination } from './newsletter-signup-destination';
3
+ import { type Result } from './result';
4
+ import type { FooterCompositionError, FooterModuleId } from './footer-composition-types';
5
+ export type FooterEngagementTreatment = 'integrated' | 'separate-row';
6
+ export type FooterEngagementSource = Readonly<{
7
+ kind: 'standard-contact';
8
+ formId: FormId;
9
+ intro: string | null;
10
+ }> | Readonly<{
11
+ kind: 'mailing-list';
12
+ destination: NewsletterSignupAuthoringDestination;
13
+ intro: string | null;
14
+ buttonLabel: string;
15
+ successMessage: string;
16
+ privacyNote: string | null;
17
+ fieldPreset: 'emailOnly';
18
+ }>;
19
+ export type FooterEngagementSection = Readonly<{
20
+ id: FooterModuleId;
21
+ kind: 'engagement';
22
+ heading: string;
23
+ selected: boolean;
24
+ treatment: FooterEngagementTreatment;
25
+ source: FooterEngagementSource;
26
+ }>;
27
+ export declare function parseFooterEngagementSectionValue(value: Readonly<Record<string, unknown>>, sectionBase: Readonly<{
28
+ id: FooterModuleId;
29
+ selected: boolean;
30
+ }>, path: string): Result<FooterEngagementSection, FooterCompositionError>;
@@ -32,6 +32,10 @@ export * from './public-url-validation';
32
32
  export * from './public-profile';
33
33
  export * from './rich-text';
34
34
  export * from './footer-composition';
35
+ export * from './footer-arrangement';
36
+ export * from './footer-composition-types';
37
+ export * from './footer-engagement';
38
+ export * from './newsletter-signup-destination';
35
39
  export * from './number-input';
36
40
  export * from './field-errors';
37
41
  export * from './form-submission-preview';
@@ -0,0 +1,38 @@
1
+ import type { Brand } from './branded';
2
+ import { type Result } from './result';
3
+ export type NewsletterListId = Brand<string, 'NewsletterListId'>;
4
+ export type MailchimpConnectionId = Brand<string, 'MailchimpConnectionId'>;
5
+ export type MailchimpAudienceId = Brand<string, 'MailchimpAudienceId'>;
6
+ export type MailchimpTagName = Brand<string, 'MailchimpTagName'>;
7
+ export type NewsletterSignupDestinationProvider = 'riverbank' | 'mailchimp';
8
+ export type RiverbankNewsletterDestination = Readonly<{
9
+ tag: 'riverbank_list';
10
+ listId: NewsletterListId;
11
+ }>;
12
+ export type MailchimpNewsletterDestination = Readonly<{
13
+ tag: 'mailchimp_audience';
14
+ connectionId: MailchimpConnectionId;
15
+ audienceId: MailchimpAudienceId;
16
+ tags: readonly MailchimpTagName[];
17
+ }>;
18
+ export type NewsletterSignupAuthoringDestination = RiverbankNewsletterDestination | MailchimpNewsletterDestination;
19
+ export type NewsletterSignupDestinationValueError = Readonly<{
20
+ kind: 'invalid-destination-shape';
21
+ }> | Readonly<{
22
+ kind: 'invalid-destination-tag';
23
+ value: unknown;
24
+ }> | Readonly<{
25
+ kind: 'invalid-newsletter-list-id';
26
+ }> | Readonly<{
27
+ kind: 'invalid-mailchimp-connection-id';
28
+ }> | Readonly<{
29
+ kind: 'invalid-mailchimp-audience-id';
30
+ }> | Readonly<{
31
+ kind: 'invalid-mailchimp-tags';
32
+ }>;
33
+ export declare function parseNewsletterListId(value: unknown): NewsletterListId | null;
34
+ export declare function parseMailchimpConnectionId(value: unknown): MailchimpConnectionId | null;
35
+ export declare function parseMailchimpAudienceId(value: unknown): MailchimpAudienceId | null;
36
+ export declare function parseMailchimpTagName(value: unknown): MailchimpTagName | null;
37
+ export declare function parseNewsletterSignupDestinationProvider(value: unknown): NewsletterSignupDestinationProvider | null;
38
+ export declare function parseNewsletterSignupAuthoringDestinationValue(value: unknown): Result<NewsletterSignupAuthoringDestination, NewsletterSignupDestinationValueError>;
@@ -1688,27 +1688,36 @@ export type Database = {
1688
1688
  };
1689
1689
  billing_notifications: {
1690
1690
  Row: {
1691
+ claimed_at: string;
1691
1692
  id: string;
1692
1693
  metadata: Json | null;
1693
1694
  notification_type: string;
1695
+ recipient_email: string | null;
1694
1696
  recipients: Json;
1695
- sent_at: string;
1697
+ sent_at: string | null;
1698
+ status: string;
1696
1699
  subscription_id: string;
1697
1700
  };
1698
1701
  Insert: {
1702
+ claimed_at?: string;
1699
1703
  id?: string;
1700
1704
  metadata?: Json | null;
1701
1705
  notification_type: string;
1706
+ recipient_email?: string | null;
1702
1707
  recipients: Json;
1703
- sent_at?: string;
1708
+ sent_at?: string | null;
1709
+ status?: string;
1704
1710
  subscription_id: string;
1705
1711
  };
1706
1712
  Update: {
1713
+ claimed_at?: string;
1707
1714
  id?: string;
1708
1715
  metadata?: Json | null;
1709
1716
  notification_type?: string;
1717
+ recipient_email?: string | null;
1710
1718
  recipients?: Json;
1711
- sent_at?: string;
1719
+ sent_at?: string | null;
1720
+ status?: string;
1712
1721
  subscription_id?: string;
1713
1722
  };
1714
1723
  Relationships: [];
@@ -4349,10 +4358,11 @@ export type Database = {
4349
4358
  booking_requirement_reminder_deliveries: {
4350
4359
  Row: {
4351
4360
  appointment_id: string | null;
4361
+ claimed_at: string;
4352
4362
  course_enrollment_id: string | null;
4353
4363
  created_at: string;
4354
4364
  customer_email: string;
4355
- delivered_at: string;
4365
+ delivered_at: string | null;
4356
4366
  entity_type: string;
4357
4367
  event_attendee_id: string | null;
4358
4368
  id: string;
@@ -4360,13 +4370,15 @@ export type Database = {
4360
4370
  participant_participation_id: string;
4361
4371
  requirement_id: string;
4362
4372
  site_id: string;
4373
+ status: string;
4363
4374
  };
4364
4375
  Insert: {
4365
4376
  appointment_id?: string | null;
4377
+ claimed_at?: string;
4366
4378
  course_enrollment_id?: string | null;
4367
4379
  created_at?: string;
4368
4380
  customer_email: string;
4369
- delivered_at?: string;
4381
+ delivered_at?: string | null;
4370
4382
  entity_type: string;
4371
4383
  event_attendee_id?: string | null;
4372
4384
  id?: string;
@@ -4374,13 +4386,15 @@ export type Database = {
4374
4386
  participant_participation_id: string;
4375
4387
  requirement_id: string;
4376
4388
  site_id: string;
4389
+ status?: string;
4377
4390
  };
4378
4391
  Update: {
4379
4392
  appointment_id?: string | null;
4393
+ claimed_at?: string;
4380
4394
  course_enrollment_id?: string | null;
4381
4395
  created_at?: string;
4382
4396
  customer_email?: string;
4383
- delivered_at?: string;
4397
+ delivered_at?: string | null;
4384
4398
  entity_type?: string;
4385
4399
  event_attendee_id?: string | null;
4386
4400
  id?: string;
@@ -4388,6 +4402,7 @@ export type Database = {
4388
4402
  participant_participation_id?: string;
4389
4403
  requirement_id?: string;
4390
4404
  site_id?: string;
4405
+ status?: string;
4391
4406
  };
4392
4407
  Relationships: [
4393
4408
  {
@@ -8319,6 +8334,7 @@ export type Database = {
8319
8334
  payment_id: string | null;
8320
8335
  payment_method: string | null;
8321
8336
  payment_status: string | null;
8337
+ reminder_revision: number;
8322
8338
  reminder_scheduled_at: string | null;
8323
8339
  reminder_sent_at: string | null;
8324
8340
  site_id: string;
@@ -8343,6 +8359,7 @@ export type Database = {
8343
8359
  payment_id?: string | null;
8344
8360
  payment_method?: string | null;
8345
8361
  payment_status?: string | null;
8362
+ reminder_revision?: number;
8346
8363
  reminder_scheduled_at?: string | null;
8347
8364
  reminder_sent_at?: string | null;
8348
8365
  site_id: string;
@@ -8367,6 +8384,7 @@ export type Database = {
8367
8384
  payment_id?: string | null;
8368
8385
  payment_method?: string | null;
8369
8386
  payment_status?: string | null;
8387
+ reminder_revision?: number;
8370
8388
  reminder_scheduled_at?: string | null;
8371
8389
  reminder_sent_at?: string | null;
8372
8390
  site_id?: string;
@@ -12043,13 +12061,17 @@ export type Database = {
12043
12061
  last_paid_at: string | null;
12044
12062
  order_id: string;
12045
12063
  order_item_id: string;
12064
+ overdue_admin_notification_scheduled_at: string | null;
12046
12065
  overdue_detected_at: string | null;
12047
12066
  paid_amount_cents: number;
12048
12067
  payment_pending_started_at: string | null;
12049
12068
  payment_pending_token: string | null;
12050
12069
  remaining_balance_cents: number;
12070
+ reminder_due_1_day_scheduled_at: string | null;
12051
12071
  reminder_due_1_day_sent_at: string | null;
12072
+ reminder_due_7_days_scheduled_at: string | null;
12052
12073
  reminder_due_7_days_sent_at: string | null;
12074
+ reminder_overdue_1_day_scheduled_at: string | null;
12053
12075
  reminder_overdue_1_day_sent_at: string | null;
12054
12076
  site_id: string;
12055
12077
  status: string;
@@ -12073,13 +12095,17 @@ export type Database = {
12073
12095
  last_paid_at?: string | null;
12074
12096
  order_id: string;
12075
12097
  order_item_id: string;
12098
+ overdue_admin_notification_scheduled_at?: string | null;
12076
12099
  overdue_detected_at?: string | null;
12077
12100
  paid_amount_cents: number;
12078
12101
  payment_pending_started_at?: string | null;
12079
12102
  payment_pending_token?: string | null;
12080
12103
  remaining_balance_cents: number;
12104
+ reminder_due_1_day_scheduled_at?: string | null;
12081
12105
  reminder_due_1_day_sent_at?: string | null;
12106
+ reminder_due_7_days_scheduled_at?: string | null;
12082
12107
  reminder_due_7_days_sent_at?: string | null;
12108
+ reminder_overdue_1_day_scheduled_at?: string | null;
12083
12109
  reminder_overdue_1_day_sent_at?: string | null;
12084
12110
  site_id: string;
12085
12111
  status: string;
@@ -12103,13 +12129,17 @@ export type Database = {
12103
12129
  last_paid_at?: string | null;
12104
12130
  order_id?: string;
12105
12131
  order_item_id?: string;
12132
+ overdue_admin_notification_scheduled_at?: string | null;
12106
12133
  overdue_detected_at?: string | null;
12107
12134
  paid_amount_cents?: number;
12108
12135
  payment_pending_started_at?: string | null;
12109
12136
  payment_pending_token?: string | null;
12110
12137
  remaining_balance_cents?: number;
12138
+ reminder_due_1_day_scheduled_at?: string | null;
12111
12139
  reminder_due_1_day_sent_at?: string | null;
12140
+ reminder_due_7_days_scheduled_at?: string | null;
12112
12141
  reminder_due_7_days_sent_at?: string | null;
12142
+ reminder_overdue_1_day_scheduled_at?: string | null;
12113
12143
  reminder_overdue_1_day_sent_at?: string | null;
12114
12144
  site_id?: string;
12115
12145
  status?: string;
@@ -19088,6 +19118,20 @@ export type Database = {
19088
19118
  enrollment_status: string;
19089
19119
  }[];
19090
19120
  };
19121
+ claim_billing_notification_delivery: {
19122
+ Args: {
19123
+ p_claimed_at: string;
19124
+ p_metadata?: Json;
19125
+ p_notification_type: string;
19126
+ p_recipient: Json;
19127
+ p_recipient_email: string;
19128
+ p_subscription_id: string;
19129
+ };
19130
+ Returns: {
19131
+ claim_kind: string;
19132
+ notification_id: string;
19133
+ }[];
19134
+ };
19091
19135
  claim_dated_offering_non_cash_projections_v1_atomic: {
19092
19136
  Args: {
19093
19137
  p_claim_ttl?: unknown;
@@ -20817,6 +20861,27 @@ export type Database = {
20817
20861
  preparation_outcome: string;
20818
20862
  }[];
20819
20863
  };
20864
+ project_event_reminder_marker_if_current: {
20865
+ Args: {
20866
+ p_attendee_id: string;
20867
+ p_expected_schedule_revision: number;
20868
+ p_expected_starts_at: string;
20869
+ p_marker_at: string;
20870
+ p_marker_kind: Database["public"]["Enums"]["event_reminder_marker_kind"];
20871
+ };
20872
+ Returns: boolean;
20873
+ };
20874
+ project_event_reminder_marker_if_current_lifecycle: {
20875
+ Args: {
20876
+ p_attendee_id: string;
20877
+ p_expected_reminder_revision: number;
20878
+ p_expected_schedule_revision: number;
20879
+ p_expected_starts_at: string;
20880
+ p_marker_at: string;
20881
+ p_marker_kind: Database["public"]["Enums"]["event_reminder_marker_kind"];
20882
+ };
20883
+ Returns: boolean;
20884
+ };
20820
20885
  provision_initial_site_theme_atomic: {
20821
20886
  Args: {
20822
20887
  p_button_style_id: string;
@@ -22220,6 +22285,7 @@ export type Database = {
22220
22285
  content_entry_status: "draft" | "scheduled" | "published" | "archived";
22221
22286
  content_owner_kind: "block" | "entry" | "page" | "entry_slot" | "surface_slot" | "page_surface";
22222
22287
  content_stage: "draft" | "published";
22288
+ event_reminder_marker_kind: "scheduled" | "sent";
22223
22289
  footer_navigation_role: "main" | "legal-policy";
22224
22290
  gsc_property_type: "domain" | "url_prefix";
22225
22291
  impersonation_scope: "read" | "write";
@@ -22964,6 +23030,7 @@ export declare const Constants: {
22964
23030
  readonly content_entry_status: readonly ["draft", "scheduled", "published", "archived"];
22965
23031
  readonly content_owner_kind: readonly ["block", "entry", "page", "entry_slot", "surface_slot", "page_surface"];
22966
23032
  readonly content_stage: readonly ["draft", "published"];
23033
+ readonly event_reminder_marker_kind: readonly ["scheduled", "sent"];
22967
23034
  readonly footer_navigation_role: readonly ["main", "legal-policy"];
22968
23035
  readonly gsc_property_type: readonly ["domain", "url_prefix"];
22969
23036
  readonly impersonation_scope: readonly ["read", "write"];
@@ -5,3 +5,4 @@ export { camelToSnake, fromDbCase, snakeToCamel, toDbCase } from './utils/case';
5
5
  export type { CamelizeKeys, CamelToSnake, DecamelizeKeys, DeepCamelizeKeys, DeepDecamelizeKeys, SnakeToCamel } from './utils/case';
6
6
  export { createPatchApplier } from './utils/patch';
7
7
  export * from './schemas/forms';
8
+ export * from './schemas/standard-contact';
@@ -10,6 +10,19 @@ export declare const formPresentationSettingsSchema: z.ZodObject<{
10
10
  submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11
11
  templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
12
  }, z.core.$strict>;
13
+ export declare const contactFormDefinitionSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
14
+ kind: z.ZodLiteral<"custom-contact">;
15
+ }, z.core.$strict>, z.ZodObject<{
16
+ kind: z.ZodLiteral<"standard-contact">;
17
+ optionalFields: z.ZodObject<{
18
+ name: z.ZodObject<{
19
+ visible: z.ZodBoolean;
20
+ }, z.core.$strict>;
21
+ phone: z.ZodObject<{
22
+ visible: z.ZodBoolean;
23
+ }, z.core.$strict>;
24
+ }, z.core.$strict>;
25
+ }, z.core.$strict>], "kind">;
13
26
  /**
14
27
  * Contact form settings
15
28
  * Used for general inquiry forms that send notifications to site owners
@@ -45,6 +58,19 @@ export declare const contactFormSettingsSchema: z.ZodObject<{
45
58
  }, z.core.$strict>>;
46
59
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
47
60
  }, z.core.$strict>>;
61
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
62
+ kind: z.ZodLiteral<"custom-contact">;
63
+ }, z.core.$strict>, z.ZodObject<{
64
+ kind: z.ZodLiteral<"standard-contact">;
65
+ optionalFields: z.ZodObject<{
66
+ name: z.ZodObject<{
67
+ visible: z.ZodBoolean;
68
+ }, z.core.$strict>;
69
+ phone: z.ZodObject<{
70
+ visible: z.ZodBoolean;
71
+ }, z.core.$strict>;
72
+ }, z.core.$strict>;
73
+ }, z.core.$strict>], "kind">>;
48
74
  }, z.core.$strict>;
49
75
  /**
50
76
  * Booking form settings
@@ -168,6 +194,19 @@ export declare const formSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
168
194
  }, z.core.$strict>>;
169
195
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
170
196
  }, z.core.$strict>>;
197
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
198
+ kind: z.ZodLiteral<"custom-contact">;
199
+ }, z.core.$strict>, z.ZodObject<{
200
+ kind: z.ZodLiteral<"standard-contact">;
201
+ optionalFields: z.ZodObject<{
202
+ name: z.ZodObject<{
203
+ visible: z.ZodBoolean;
204
+ }, z.core.$strict>;
205
+ phone: z.ZodObject<{
206
+ visible: z.ZodBoolean;
207
+ }, z.core.$strict>;
208
+ }, z.core.$strict>;
209
+ }, z.core.$strict>], "kind">>;
171
210
  }, z.core.$strict>, z.ZodObject<{
172
211
  type: z.ZodLiteral<"booking">;
173
212
  serviceId: z.ZodOptional<z.ZodString>;
@@ -265,6 +304,19 @@ export declare const formSettingsInputSchema: z.ZodDiscriminatedUnion<[z.ZodObje
265
304
  }, z.core.$strict>>;
266
305
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
267
306
  }, z.core.$strict>>;
307
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
308
+ kind: z.ZodLiteral<"custom-contact">;
309
+ }, z.core.$strict>, z.ZodObject<{
310
+ kind: z.ZodLiteral<"standard-contact">;
311
+ optionalFields: z.ZodObject<{
312
+ name: z.ZodObject<{
313
+ visible: z.ZodBoolean;
314
+ }, z.core.$strict>;
315
+ phone: z.ZodObject<{
316
+ visible: z.ZodBoolean;
317
+ }, z.core.$strict>;
318
+ }, z.core.$strict>;
319
+ }, z.core.$strict>], "kind">>;
268
320
  readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
269
321
  readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
270
322
  }, z.core.$strict>, z.ZodObject<{
@@ -344,6 +396,7 @@ export type BookingQuestionsFormSettings = z.infer<typeof bookingQuestionsFormSe
344
396
  export type FormSettings = z.infer<typeof formSettingsSchema>;
345
397
  export type FormPresentationSettings = z.infer<typeof formPresentationSettingsSchema>;
346
398
  export type FormSettingsInput = z.infer<typeof formSettingsInputSchema>;
399
+ export type ContactFormDefinitionSettings = z.infer<typeof contactFormDefinitionSettingsSchema>;
347
400
  type JsonRecord = Record<string, unknown>;
348
401
  export declare function stripPresentationKeysFromBehaviorSettings(value: unknown): JsonRecord;
349
402
  export declare function extractFormPresentationSettings(input: Readonly<{
@@ -886,10 +939,14 @@ export declare function parseBookingQuestionsContent(shape: BookingQuestionsForm
886
939
  * Form creation payload schema
887
940
  * Validates the request body when creating a new form via API
888
941
  */
889
- export declare const formSlugSchema: z.ZodString;
942
+ declare const formSlugBrand: unique symbol;
943
+ export type FormSlug = string & {
944
+ readonly [formSlugBrand]: 'FormSlug';
945
+ };
946
+ export declare const formSlugSchema: z.ZodPipe<z.ZodString, z.ZodTransform<FormSlug, string>>;
890
947
  export declare const createFormPayloadSchema: z.ZodObject<{
891
948
  name: z.ZodString;
892
- slug: z.ZodString;
949
+ slug: z.ZodPipe<z.ZodString, z.ZodTransform<FormSlug, string>>;
893
950
  schema: z.ZodObject<{
894
951
  version: z.ZodDefault<z.ZodString>;
895
952
  fields: z.ZodArray<z.ZodObject<{
@@ -961,6 +1018,19 @@ export declare const createFormPayloadSchema: z.ZodObject<{
961
1018
  }, z.core.$strict>>;
962
1019
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
963
1020
  }, z.core.$strict>>;
1021
+ definition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
1022
+ kind: z.ZodLiteral<"custom-contact">;
1023
+ }, z.core.$strict>, z.ZodObject<{
1024
+ kind: z.ZodLiteral<"standard-contact">;
1025
+ optionalFields: z.ZodObject<{
1026
+ name: z.ZodObject<{
1027
+ visible: z.ZodBoolean;
1028
+ }, z.core.$strict>;
1029
+ phone: z.ZodObject<{
1030
+ visible: z.ZodBoolean;
1031
+ }, z.core.$strict>;
1032
+ }, z.core.$strict>;
1033
+ }, z.core.$strict>], "kind">>;
964
1034
  readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
965
1035
  readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
966
1036
  }, z.core.$strict>, z.ZodObject<{