@riverbankcms/sdk 0.107.0 → 0.108.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 (159) hide show
  1. package/dist/{PreviewEditorSidebar-DpAbAl08.mjs → PreviewEditorSidebar-BBT-kZAM.mjs} +46 -11
  2. package/dist/{PreviewEditorUI-O7cn6Xxv.mjs → PreviewEditorUI-D69xNKT2.mjs} +10 -9
  3. package/dist/{PreviewQueryProvider-D0tnKl0t.mjs → PreviewQueryProvider-RRu7wyQ5.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-CVB7urtl.mjs → SdkPreviewModeRuntime-CuDjXH6o.mjs} +426 -72
  5. package/dist/{SiteChromeCustomizeContext-C_sizso-.mjs → SiteChromeCustomizeContext-BQUY2dEk.mjs} +3865 -544
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +3712 -220
  7. package/dist/_dts/api/src/blocks.d.ts +41 -7
  8. package/dist/_dts/api/src/bookingRecords.d.ts +180 -115
  9. package/dist/_dts/api/src/cache-tags.d.ts +3 -0
  10. package/dist/_dts/api/src/contentRuntime.d.ts +19 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +99 -0
  12. package/dist/_dts/api/src/footer-settings.d.ts +1 -0
  13. package/dist/_dts/api/src/footerSettings.d.ts +8 -0
  14. package/dist/_dts/api/src/index.d.ts +5 -2
  15. package/dist/_dts/api/src/navigation/contracts.d.ts +3 -3
  16. package/dist/_dts/api/src/previewContentContract.d.ts +4 -0
  17. package/dist/_dts/api/src/sdkContracts.d.ts +62 -0
  18. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  19. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +143 -55
  20. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -1
  21. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +41 -1
  22. package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +0 -1
  23. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -0
  24. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +50 -0
  25. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +9 -48
  26. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/icons/social.d.ts +5 -0
  29. package/dist/_dts/blocks/src/system/icons/svg.d.ts +1 -0
  30. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +2 -2
  31. package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +13 -0
  32. package/dist/_dts/blocks/src/system/node/fragments/footerNav.d.ts +2 -0
  33. package/dist/_dts/blocks/src/system/node/fragments/styledContainer.d.ts +4 -4
  34. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +3 -12
  35. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -1
  37. package/dist/_dts/blocks/src/system/types/link.d.ts +3 -3
  38. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +14 -0
  39. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +27 -8
  40. package/dist/_dts/content-editor/src/footerComposer.d.ts +56 -0
  41. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +1 -1
  42. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +5 -5
  43. package/dist/_dts/content-editor/src/index.d.ts +2 -0
  44. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +3 -1
  45. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +20 -36
  46. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +5 -1
  47. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +11 -0
  48. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  49. package/dist/_dts/content-model/src/definitions/shared.d.ts +3 -0
  50. package/dist/_dts/core/src/branded.d.ts +3 -0
  51. package/dist/_dts/core/src/editor-state.d.ts +4 -0
  52. package/dist/_dts/core/src/footer-composition.d.ts +143 -0
  53. package/dist/_dts/core/src/index.d.ts +2 -0
  54. package/dist/_dts/core/src/public-profile.d.ts +73 -0
  55. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3043 -2941
  56. package/dist/_dts/db/src/schemas/forms.d.ts +10 -10
  57. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +5 -0
  58. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -0
  59. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -1
  60. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +2 -1
  61. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +2 -1
  62. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +10 -0
  63. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  64. package/dist/_dts/path-utils/src/index.d.ts +5 -0
  65. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +5 -0
  66. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  67. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
  68. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
  69. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
  70. package/dist/_dts/preview-next/src/client/preview/previewErrorMessages.d.ts +4 -0
  71. package/dist/_dts/sdk/src/cli/content/reader.d.ts +1 -0
  72. package/dist/_dts/sdk/src/client/management/blocks.d.ts +14 -1
  73. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -0
  74. package/dist/_dts/sdk/src/client/management/types.d.ts +15 -1
  75. package/dist/_dts/sdk/src/config/content-types.d.ts +2 -0
  76. package/dist/_dts/sdk/src/config/content-validation.d.ts +4 -0
  77. package/dist/_dts/sdk/src/navigation/index.d.ts +2 -0
  78. package/dist/_dts/sdk/src/public-api/contracts.d.ts +3 -2
  79. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -1
  80. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
  81. package/dist/_dts/sdk/src/version.d.ts +1 -1
  82. package/dist/_dts/site-commands/src/commands.d.ts +13 -10
  83. package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
  84. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  85. package/dist/_dts/theme-core/src/buttons/personalities/two-tone-pill.d.ts +17 -0
  86. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
  87. package/dist/_dts/theme-core/src/buttons/types.d.ts +3 -3
  88. package/dist/_dts/theme-core/src/cards/types.d.ts +3 -3
  89. package/dist/_dts/theme-core/src/footer/mode.d.ts +15 -0
  90. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  92. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -30
  93. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/schema.d.ts +1186 -34
  95. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +12 -1
  96. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +15 -0
  97. package/dist/cli/index.mjs +760 -374
  98. package/dist/client/{DiscountCodeDisclosure-BwGkvmVH.mjs → DiscountCodeDisclosure-D6TOf6Hi.mjs} +1 -1
  99. package/dist/client/{EventCombined.client-JnWE6Hzc.mjs → EventCombined.client-Dao3zxRk.mjs} +3 -3
  100. package/dist/client/{EventListing.client-DQewc_kg.mjs → EventListing.client-B2NNt4y1.mjs} +2 -2
  101. package/dist/client/{LeafletStaticMap-DPAU3SFt.mjs → LeafletStaticMap-BhwFo16w.mjs} +1 -1
  102. package/dist/client/{MagicLinkForm-D4kpWCbW.mjs → MagicLinkForm-BWnB7cMR.mjs} +2 -2
  103. package/dist/client/{StepIndicator-CBlkb4rA.mjs → StepIndicator-TzRiQ0BY.mjs} +2 -2
  104. package/dist/client/{accordion-DAIBVpTS.mjs → accordion-BPy-AJ4_.mjs} +1 -1
  105. package/dist/client/{bookingForm-DZ-4l5_1.mjs → bookingForm-BL4PGZds.mjs} +6 -6
  106. package/dist/client/bookings.mjs +143 -94
  107. package/dist/client/{buttons-DJgynGHQ.mjs → buttons-EBjyslaX.mjs} +144 -95
  108. package/dist/client/{carousel-D-SLfX8r.mjs → carousel-C2b7Cn9-.mjs} +1 -1
  109. package/dist/client/{cart-CEgbgJhX.mjs → cart-BQcbXIVD.mjs} +3 -3
  110. package/dist/client/{checkout-CXWrCRAA.mjs → checkout-DEmpGRJu.mjs} +3 -3
  111. package/dist/client/client.mjs +827 -434
  112. package/dist/client/{courseRegistration-DVmLrRVz.mjs → courseRegistration-BqRZPmsq.mjs} +7 -7
  113. package/dist/client/{eventCalendar-DCuyPY_c.mjs → eventCalendar-B8N_tSl5.mjs} +5 -5
  114. package/dist/client/{eventCombined-kP2CA2D4.mjs → eventCombined-Gjn6gtq7.mjs} +2 -2
  115. package/dist/client/{eventDetails-DU0LeF5e.mjs → eventDetails-M-VCxA-r.mjs} +3 -3
  116. package/dist/client/{eventListing-CcHF87BI.mjs → eventListing-DR19hqYi.mjs} +2 -2
  117. package/dist/client/{eventRegistration-DJnR0yFH.mjs → eventRegistration-BR02a0k3.mjs} +7 -7
  118. package/dist/client/{form-CH1lCusH.mjs → form-LY2xIbwg.mjs} +2 -2
  119. package/dist/client/{headerSection-CBPFZoku.mjs → headerSection-CYwwXJfh.mjs} +3 -3
  120. package/dist/client/hooks.mjs +377 -362
  121. package/dist/client/{locationMap-Cx1hBg5n.mjs → locationMap-DWnBXrFq.mjs} +2 -2
  122. package/dist/client/{newsletterForm-1ZL_ti9u.mjs → newsletterForm-D9s-fQ2P.mjs} +2 -2
  123. package/dist/client/{pricing-BIbzmV0G.mjs → pricing-DDq80oYc.mjs} +1 -1
  124. package/dist/client/{productDetail-BTh5gHBV.mjs → productDetail-B0SbWd45.mjs} +3 -3
  125. package/dist/client/{productList-Cc7OMrqN.mjs → productList-PwYlZn0y.mjs} +3 -3
  126. package/dist/client/{propsDecoder-oR-M-ISN.mjs → propsDecoder-BRWBiH7i.mjs} +33 -9
  127. package/dist/client/rendering/client.mjs +247 -40
  128. package/dist/client/rendering/islands.mjs +18 -18
  129. package/dist/client/rendering.mjs +478 -270
  130. package/dist/client/{shop-CQ_YbCnn.mjs → shop-CMwZPYME.mjs} +6 -6
  131. package/dist/client/{shop-commerce-BM-AoD3M.mjs → shop-commerce-BuxsFate.mjs} +5 -5
  132. package/dist/client/{shop-commerce-store-DFMQhU5p.mjs → shop-commerce-store-boYlEJ91.mjs} +1 -1
  133. package/dist/client/{shopShared-D0SKO2Cu.mjs → shopShared-D2naaOes.mjs} +2 -2
  134. package/dist/client/{useDiscountCodeUi-CrG4_ARt.mjs → useDiscountCodeUi-D9RHpVoj.mjs} +1 -1
  135. package/dist/client/{useEventFilters-CxK8Fekl.mjs → useEventFilters-igGiK1re.mjs} +3 -3
  136. package/dist/client/{usePolling-jcVryNgZ.mjs → usePolling-CI7MbsFB.mjs} +2 -2
  137. package/dist/preview-next/before-render.mjs +178 -0
  138. package/dist/preview-next/client/runtime.mjs +4 -4
  139. package/dist/preview-next/middleware.mjs +178 -0
  140. package/dist/{previewAuthStore-BPcJPzdz.mjs → previewAuthStore-a_cBD28m.mjs} +178 -0
  141. package/dist/{sdk-runtime-C39Rsk-x.mjs → sdk-runtime-MBzD-GmP.mjs} +2 -2
  142. package/dist/{separator-BoMSQnsP.mjs → separator-5ahRBC85.mjs} +1 -1
  143. package/dist/server/components.mjs +556 -366
  144. package/dist/server/config-validation.mjs +384 -363
  145. package/dist/server/config.mjs +384 -364
  146. package/dist/server/data.mjs +377 -362
  147. package/dist/server/index.mjs +179 -1
  148. package/dist/server/navigation.mjs +9 -3
  149. package/dist/server/next.mjs +1384 -995
  150. package/dist/server/page-converter.mjs +368 -355
  151. package/dist/server/prebuild.mjs +1 -1
  152. package/dist/server/rendering/server.mjs +539 -360
  153. package/dist/server/rendering.mjs +556 -366
  154. package/dist/server/routing.mjs +613 -543
  155. package/dist/server/server.mjs +554 -361
  156. package/dist/server/theme-bridge.mjs +189 -98
  157. package/dist/server/theme.mjs +161 -95
  158. package/dist/styles/index.css +7 -1
  159. package/package.json +1 -1
@@ -32,6 +32,7 @@ export declare const TAG_TEMPLATES: {
32
32
  readonly siteRouteOutcomes: "riverbank:site:{siteId}:route-outcomes";
33
33
  readonly routeById: "riverbank:route:{routeId}";
34
34
  readonly pageById: "riverbank:page:{pageId}";
35
+ readonly pageSurfaceById: "riverbank:page-surface:{pageSurfaceId}";
35
36
  readonly workflowRunById: "riverbank:workflow-run:{runId}";
36
37
  readonly siteForms: "riverbank:site:{siteId}:forms";
37
38
  readonly formById: "riverbank:form:{formId}";
@@ -74,6 +75,8 @@ export declare const tags: {
74
75
  readonly siteRouteOutcomes: (siteId: string) => string;
75
76
  readonly route: (routeId: string) => string;
76
77
  readonly page: (pageId: string) => string;
78
+ readonly pageSurface: (pageSurfaceId: string) => string;
79
+ readonly surfaceSlot: (surfaceSlotId: string) => string;
77
80
  readonly workflowRun: (runId: string) => string;
78
81
  readonly siteForms: (siteId: string) => string;
79
82
  readonly form: (formId: string) => string;
@@ -115,6 +115,16 @@ export type ContentEntryDetail<TContent> = {
115
115
  draftContent: TContent;
116
116
  publishedContent: TContent | null;
117
117
  };
118
+ export type PageSurfaceEditorDocument<TContent = Record<string, unknown>> = {
119
+ owner: {
120
+ kind: 'pageSurface';
121
+ pageSurfaceId: string;
122
+ };
123
+ route: ContentRouteRecord;
124
+ draftContent: TContent;
125
+ publishedContent: TContent | null;
126
+ optimisticHash: string;
127
+ };
118
128
  export type ContentEntryDetailResponse<TContent = Record<string, unknown>> = {
119
129
  entry: ContentEntryDetail<TContent>;
120
130
  optimisticHash?: string | null;
@@ -420,6 +430,7 @@ export type BlockListItem = {
420
430
  content?: Record<string, unknown> | null;
421
431
  draftContent?: Record<string, unknown> | null;
422
432
  publishedContent?: Record<string, unknown> | null;
433
+ optimisticHash?: string | null;
423
434
  };
424
435
  export type EntryPageContentSlotAllowedBlocks = Readonly<{
425
436
  kind: 'default';
@@ -437,6 +448,9 @@ export type EntryPageContentSlot = Readonly<{
437
448
  allowedBlocks: EntryPageContentSlotAllowedBlocks;
438
449
  blocks: readonly BlockListItem[];
439
450
  }>;
451
+ export type PageSurfaceContentSlot = EntryPageContentSlot & Readonly<{
452
+ compositionHash: string;
453
+ }>;
440
454
  export type EntryPageContentSlotWarning = Readonly<{
441
455
  kind: 'orphaned-slot-hidden';
442
456
  slotKey: string;
@@ -446,6 +460,10 @@ export type EntryPageContentSlotsResponse = Readonly<{
446
460
  slots: readonly EntryPageContentSlot[];
447
461
  warnings: readonly EntryPageContentSlotWarning[];
448
462
  }>;
463
+ export type PageSurfaceContentSlotsResponse = Readonly<{
464
+ slots: readonly PageSurfaceContentSlot[];
465
+ warnings: readonly EntryPageContentSlotWarning[];
466
+ }>;
449
467
  export type PublishedBlockBaseline = {
450
468
  id: string;
451
469
  kind: string;
@@ -676,7 +694,7 @@ export type SdkRuntimePageSurfaceContentSource = Readonly<{
676
694
  export type SdkRuntimePageSurface = {
677
695
  id: string;
678
696
  routeId: string;
679
- readinessState: 'shippable';
697
+ readinessState: 'internal_pilot' | 'shippable';
680
698
  subject: SdkRuntimePageSurfaceSubject;
681
699
  title: string;
682
700
  slug: string | null;
@@ -1711,6 +1711,30 @@ export declare const API_ENDPOINTS: {
1711
1711
  readonly auth: "user";
1712
1712
  readonly responseKind: "json";
1713
1713
  };
1714
+ readonly updatePageSurfaceDraftContent: {
1715
+ readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content";
1716
+ readonly method: "PUT";
1717
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
1718
+ readonly tags: ["riverbank:site", "riverbank:page-surface:{pageSurfaceId}"];
1719
+ readonly auth: "user";
1720
+ readonly responseKind: "json";
1721
+ };
1722
+ readonly discardPageSurfaceDraftContent: {
1723
+ readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft";
1724
+ readonly method: "DELETE";
1725
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
1726
+ readonly tags: ["riverbank:site", "riverbank:page-surface:{pageSurfaceId}"];
1727
+ readonly auth: "user";
1728
+ readonly responseKind: "json";
1729
+ };
1730
+ readonly updatePageSurfaceRouteMetadata: {
1731
+ readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata";
1732
+ readonly method: "PATCH";
1733
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
1734
+ readonly tags: ["riverbank:site", "riverbank:site:{siteId}:routable-content", "riverbank:page-surface:{pageSurfaceId}"];
1735
+ readonly auth: "user";
1736
+ readonly responseKind: "json";
1737
+ };
1714
1738
  readonly runSdkWorkflow: {
1715
1739
  readonly path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run";
1716
1740
  readonly method: "POST";
@@ -2011,6 +2035,42 @@ export declare const API_ENDPOINTS: {
2011
2035
  readonly errors: readonly [];
2012
2036
  readonly responseKind: "json";
2013
2037
  };
2038
+ readonly getFooterComposition: {
2039
+ readonly path: "/sites/{siteId}/settings/footer-composition";
2040
+ readonly method: "GET";
2041
+ readonly revalidate: 120;
2042
+ readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:settings"];
2043
+ readonly auth: "user";
2044
+ readonly errors: readonly ["resource:not_found", "server:internal_error"];
2045
+ readonly responseKind: "json";
2046
+ };
2047
+ readonly updateFooterComposition: {
2048
+ readonly path: "/sites/{siteId}/settings/footer-composition";
2049
+ readonly method: "POST";
2050
+ readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:settings"];
2051
+ readonly auth: "user";
2052
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
2053
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "server:internal_error"];
2054
+ readonly responseKind: "json";
2055
+ };
2056
+ readonly getPublicProfile: {
2057
+ readonly path: "/sites/{siteId}/settings/public-profile";
2058
+ readonly method: "GET";
2059
+ readonly revalidate: 120;
2060
+ readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:settings"];
2061
+ readonly auth: "user";
2062
+ readonly errors: readonly ["resource:not_found", "server:internal_error"];
2063
+ readonly responseKind: "json";
2064
+ };
2065
+ readonly updatePublicProfile: {
2066
+ readonly path: "/sites/{siteId}/settings/public-profile";
2067
+ readonly method: "POST";
2068
+ readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:settings"];
2069
+ readonly auth: "user";
2070
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
2071
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "server:internal_error"];
2072
+ readonly responseKind: "json";
2073
+ };
2014
2074
  readonly updateSiteLayoutSettings: {
2015
2075
  readonly path: "/sites/{siteId}/settings/layout";
2016
2076
  readonly method: "POST";
@@ -2907,6 +2967,38 @@ export declare const API_ENDPOINTS: {
2907
2967
  readonly responseKind: "json";
2908
2968
  readonly errors: readonly ["resource:not_found"];
2909
2969
  };
2970
+ readonly listPageSurfaceContentSlots: {
2971
+ readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots";
2972
+ readonly method: "GET";
2973
+ readonly tags: ["riverbank:site", "riverbank:page-surface:{pageSurfaceId}", "surface-slots", "blocks"];
2974
+ readonly auth: "user";
2975
+ readonly responseKind: "json";
2976
+ readonly errors: readonly ["resource:not_found", "resource:conflict", "server:internal_error"];
2977
+ };
2978
+ readonly createPageSurfaceSlotBlock: {
2979
+ readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks";
2980
+ readonly method: "POST";
2981
+ readonly tags: ["riverbank:site", "riverbank:page-surface:{pageSurfaceId}", "surface-slot-{slotKey}", "blocks"];
2982
+ readonly auth: "user";
2983
+ readonly responseKind: "json";
2984
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
2985
+ };
2986
+ readonly reorderPageSurfaceSlotBlocks: {
2987
+ readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/reorder";
2988
+ readonly method: "POST";
2989
+ readonly tags: ["riverbank:site", "riverbank:page-surface:{pageSurfaceId}", "surface-slot-{slotKey}", "blocks"];
2990
+ readonly auth: "user";
2991
+ readonly responseKind: "json";
2992
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
2993
+ };
2994
+ readonly deletePageSurfaceSlotBlock: {
2995
+ readonly path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/{blockId}";
2996
+ readonly method: "DELETE";
2997
+ readonly tags: ["riverbank:site", "riverbank:page-surface:{pageSurfaceId}", "surface-slot-{slotKey}", "blocks"];
2998
+ readonly auth: "user";
2999
+ readonly responseKind: "json";
3000
+ readonly errors: readonly ["resource:not_found", "resource:conflict", "server:internal_error"];
3001
+ };
2910
3002
  readonly createBlock: {
2911
3003
  readonly path: "/sites/{siteId}/pages/{pageId}/blocks";
2912
3004
  readonly method: "POST";
@@ -5043,6 +5135,13 @@ export declare const API_ENDPOINTS: {
5043
5135
  readonly auth: "service";
5044
5136
  readonly responseKind: "json";
5045
5137
  };
5138
+ readonly sdkPatchPageBlock: {
5139
+ readonly path: "/sdk/{siteId}/pages/{identifier}/blocks/{blockIdentifier}";
5140
+ readonly method: "PATCH";
5141
+ readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "billing:plan_limit_exceeded", "server:internal_error"];
5142
+ readonly auth: "service";
5143
+ readonly responseKind: "json";
5144
+ };
5046
5145
  readonly sdkReorderPageBlocks: {
5047
5146
  readonly path: "/sdk/{siteId}/pages/{identifier}/blocks/reorder";
5048
5147
  readonly method: "POST";
@@ -0,0 +1 @@
1
+ export * from './footerSettings';
@@ -0,0 +1,8 @@
1
+ import type { SiteId } from "../../core/src/index";
2
+ import type { FooterCompositionSnapshot, FooterCompositionUpdateRequest, FooterCompositionUpdateResponse, PublicProfileSnapshot, PublicProfileUpdateRequest, PublicProfileUpdateResponse } from "./siteManagementEndpoints";
3
+ import type { ApiClient } from "./request";
4
+ export type { FooterCompositionSnapshot, FooterCompositionUpdateRequest, FooterCompositionUpdateResponse, PublicProfileSnapshot, PublicProfileUpdateRequest, PublicProfileUpdateResponse, } from "./siteManagementEndpoints";
5
+ export declare function getFooterComposition(apiClient: ApiClient, siteId: SiteId): Promise<FooterCompositionSnapshot>;
6
+ export declare function updateFooterComposition(apiClient: ApiClient, siteId: SiteId, body: FooterCompositionUpdateRequest): Promise<FooterCompositionUpdateResponse>;
7
+ export declare function getPublicProfile(apiClient: ApiClient, siteId: SiteId): Promise<PublicProfileSnapshot>;
8
+ export declare function updatePublicProfile(apiClient: ApiClient, siteId: SiteId, body: PublicProfileUpdateRequest): Promise<PublicProfileUpdateResponse>;
@@ -1,4 +1,7 @@
1
1
  export { API_ENDPOINTS, buildEndpointURL } from './endpoints';
2
+ export { PREVIEW_CONTENT_CONTRACT_HEADER, PREVIEW_CONTENT_CONTRACT_PARAM, parsePreviewContentContract, type PreviewContentContract, } from './previewContentContract';
3
+ export { getFooterComposition, getPublicProfile, updateFooterComposition, updatePublicProfile, } from './footerSettings';
4
+ export type { FooterCompositionSnapshot, FooterCompositionUpdateRequest, FooterCompositionUpdateResponse, PublicProfileSnapshot, PublicProfileUpdateRequest, PublicProfileUpdateResponse, } from './siteManagementEndpoints';
2
5
  export { classifyDemoDashboardMutationDescriptor, classifyDemoDashboardMutationEndpoint, summarizeDemoDashboardMutationSurfaces, } from './demoDashboardMutationSurfaces';
3
6
  export type { DemoDashboardMutationEndpointDescriptor, DemoDashboardMutationSurface, DemoDashboardMutationSurfaceSummary, } from './demoDashboardMutationSurfaces';
4
7
  export { managedDomainAddOnPricingSnapshotSchema } from './accessAdmin';
@@ -53,7 +56,7 @@ export type { PublicProductCategorySelector, PublicProductCategorySelectorQuery,
53
56
  export { publishContentEntry, discardContentDraft, deleteContentEntry, createContentEntry, updateContentEntryContent, mutateContentEntryUnified, listPublishedEntries, } from './contentEntries';
54
57
  export { getContentEntryVersion, getPageVersion, listContentEntryVersions, listPageVersions, restoreContentEntryVersion, restorePageVersion, } from './contentVersionHistoryClient';
55
58
  export type { DraftVersionPrecondition, GetVersionHistoryResponse, ListVersionHistoryResponse, RestoreVersionHistoryRequest, RestoreVersionHistoryResponse, VersionHistoryDetail, VersionHistoryItem, VersionHistoryListQuery, VersionHistoryOwnerKind, VersionHistoryWarning, } from './contentVersionHistory';
56
- export { mutateBlockContent, createBlock, createEntrySlotBlock, reorderBlocks, reorderEntrySlotBlocks, deleteBlock, deleteEntrySlotBlock, listBlocks, listEntryPageContentSlots, listEntrySlotBlocks, } from './blocks';
59
+ export { mutateBlockContent, createBlock, createEntrySlotBlock, createPageSurfaceSlotBlock, reorderBlocks, reorderEntrySlotBlocks, reorderPageSurfaceSlotBlocks, deleteBlock, deleteEntrySlotBlock, deletePageSurfaceSlotBlock, listBlocks, listEntryPageContentSlots, listPageSurfaceContentSlots, listEntrySlotBlocks, } from './blocks';
57
60
  export { blocksKeys } from './blocksKeys';
58
61
  export { contentKeys } from './contentKeys';
59
62
  export { createPage, deletePage, publishPageDraft, discardPageDraft, getPageDesignEditorState, savePageDesignState, applyPageDesignEditorAction, } from './pages';
@@ -121,4 +124,4 @@ export type { AIChatMessage, AiBriefTurn, AiDesignerThemePatchOp, AiPatchApplyRe
121
124
  export type { CancelFlexibleBalanceBookingDueToNonPaymentRequest, FlexibleBalanceAdminActionPlan, FlexibleBalanceAdminActionResponse, FlexibleBalanceAdminActionSource, FlexibleBalanceAdminActionView, ReopenFlexibleBalanceBookingAfterNonPaymentCancellationRequest, } from './types';
122
125
  export type { CancelShopOrderItemRequest, CancelShopOrderItemResponse, CancelShopOrderRequest, CancelShopOrderResponse, StaffCancellationContextCategory, StaffCancellationContextInput, StaffCancellationContextUiCategory, } from './siteOperations';
123
126
  export type { ContentTypeKey } from './contentEntries';
124
- export type { BlockListItem, EntryPageContentSlot, EntryPageContentSlotAllowedBlocks, EntryPageContentSlotWarning, EntryPageContentSlotsResponse, SdkEntrySlotContent, SdkRuntimePageSurfaceSubject, SiteBookingOfferingPresetSummary, WorkflowContentEntryTargetSnapshot, WorkflowPageDraftContent, WorkflowPagePublishedContent, WorkflowPageStatus, WorkflowPageTargetSnapshot, WorkflowRunStatusResponse, WorkflowTargetEntrySnapshot, } from './contentRuntime';
127
+ export type { BlockListItem, EntryPageContentSlot, EntryPageContentSlotAllowedBlocks, EntryPageContentSlotWarning, EntryPageContentSlotsResponse, PageSurfaceContentSlot, PageSurfaceContentSlotsResponse, PageSurfaceEditorDocument, SdkEntrySlotContent, SdkRuntimeContentByPathResponse, SdkRuntimePageSurface, SdkRuntimePageSurfaceResponse, SdkRuntimePageSurfaceSubject, SdkSurfaceSlotContent, SiteBookingOfferingPresetSummary, WorkflowContentEntryTargetSnapshot, WorkflowPageDraftContent, WorkflowPagePublishedContent, WorkflowPageStatus, WorkflowPageTargetSnapshot, WorkflowRunStatusResponse, WorkflowTargetEntrySnapshot, } from './contentRuntime';
@@ -39,8 +39,8 @@ export declare const internalLinkPayloadSchema: z.ZodObject<{
39
39
  routeId: z.ZodString;
40
40
  entityId: z.ZodString;
41
41
  entityType: z.ZodEnum<{
42
- page: "page";
43
42
  content: "content";
43
+ page: "page";
44
44
  }>;
45
45
  href: z.ZodString;
46
46
  title: z.ZodString;
@@ -71,8 +71,8 @@ export declare const linkPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
71
71
  routeId: z.ZodString;
72
72
  entityId: z.ZodString;
73
73
  entityType: z.ZodEnum<{
74
- page: "page";
75
74
  content: "content";
75
+ page: "page";
76
76
  }>;
77
77
  href: z.ZodString;
78
78
  title: z.ZodString;
@@ -184,8 +184,8 @@ export declare const dashboardNavigationLinkSchema: z.ZodDiscriminatedUnion<[z.Z
184
184
  routeId: z.ZodString;
185
185
  entityId: z.ZodString;
186
186
  entityType: z.ZodEnum<{
187
- page: "page";
188
187
  content: "content";
188
+ page: "page";
189
189
  }>;
190
190
  href: z.ZodString;
191
191
  title: z.ZodString;
@@ -0,0 +1,4 @@
1
+ export declare const PREVIEW_CONTENT_CONTRACT_PARAM: "__riverbank_content_contract";
2
+ export declare const PREVIEW_CONTENT_CONTRACT_HEADER: "x-riverbank-preview-content-contract";
3
+ export type PreviewContentContract = 'compat' | 'native';
4
+ export declare function parsePreviewContentContract(value: unknown): PreviewContentContract | null;
@@ -1,5 +1,6 @@
1
1
  import type { FieldDefinition, FieldDefinitionInput, SdkCustomBlock, SdkCustomBlockInput, SiteFooterContent, Theme } from '../../blocks/src/index';
2
2
  import type { LinkPayload } from './navigation/types';
3
+ import type { JsonValue } from './shared-contracts';
3
4
  import type { SdkEventPricing, SdkEventPricingInput } from './sdk-event-pricing';
4
5
  import type { SdkEventPaymentTerms, SdkEventPaymentTermsInput } from './sdk-event-payment-terms';
5
6
  /**
@@ -368,6 +369,65 @@ export interface SdkGetPageBlock {
368
369
  export interface SdkGetPageBlockResponse {
369
370
  block: SdkGetPageBlock;
370
371
  }
372
+ /**
373
+ * A single PATCH operation against a block's draft content.
374
+ *
375
+ * Discriminated on `op`. Only `set` exists today; additional operations
376
+ * (e.g. `unset`) extend this union without breaking existing callers.
377
+ *
378
+ * `path` must resolve to a manifest-defined field of the block (dot/bracket
379
+ * syntax, e.g. `title`, `items[0].label`, `cta.label`). Paths that do not
380
+ * resolve to a manifest field — including prototype-chain segments such as
381
+ * `__proto__` — are rejected with a 400 naming the offending operation index.
382
+ *
383
+ * Numeric repeater indices must address an EXISTING item (strictly below the
384
+ * current array length). To append or resize, `set` the whole repeater field.
385
+ */
386
+ export type SdkPatchPageBlockOperation = Readonly<{
387
+ op: 'set';
388
+ path: string;
389
+ value: JsonValue;
390
+ }>;
391
+ /**
392
+ * Body for `PATCH pages/{identifier}/blocks/{blockIdentifier}`.
393
+ *
394
+ * Operations apply atomically to an in-memory copy of the block's draft
395
+ * data; the result is validated once against the block manifest, then
396
+ * persisted in a single guarded draft write (published rows are untouched —
397
+ * publish remains page-boundary). Any invalid operation aborts the whole
398
+ * request.
399
+ *
400
+ * `baseContentHash` is required and must equal the `contentHash` returned by
401
+ * the block GET. On mismatch (including a concurrent write landing between
402
+ * read and write) the endpoint returns 409 carrying
403
+ * `SdkPatchPageBlockStaleContentFieldError` in `fieldErrors`.
404
+ */
405
+ export interface SdkPatchPageBlockBody {
406
+ operations: readonly SdkPatchPageBlockOperation[];
407
+ baseContentHash: string;
408
+ }
409
+ export declare const SDK_PATCH_STALE_CONTENT_FIELD = "baseContentHash";
410
+ export declare const SDK_PATCH_STALE_CONTENT_CODE = "STALE_CONTENT";
411
+ /**
412
+ * Typed stale-conflict detail for block PATCH 409 responses, transported in
413
+ * the standard envelope's `fieldErrors`. `message` is EXACTLY the current
414
+ * draft content hash (no prose) — echo it back as `baseContentHash` to
415
+ * retry. The SDK client surfaces this as a discriminated
416
+ * `BlockPatchStaleContentError` so callers never string-sniff.
417
+ */
418
+ export interface SdkPatchPageBlockStaleContentFieldError {
419
+ field: typeof SDK_PATCH_STALE_CONTENT_FIELD;
420
+ code: typeof SDK_PATCH_STALE_CONTENT_CODE;
421
+ /** Exactly the current draft content hash. */
422
+ message: string;
423
+ }
424
+ /**
425
+ * Success response mirrors the block GET shape; `block.contentHash` is the
426
+ * NEW draft content hash (use it as `baseContentHash` for the next patch).
427
+ */
428
+ export interface SdkPatchPageBlockResponse {
429
+ block: SdkGetPageBlock;
430
+ }
371
431
  export interface SdkPullNavigationItem {
372
432
  id: string;
373
433
  menuId: string;
@@ -387,6 +447,7 @@ export interface SdkPullNavigationMenu {
387
447
  name: string;
388
448
  isPrimary: boolean;
389
449
  isFooter: boolean;
450
+ footerRole: 'main' | 'legal-policy' | null;
390
451
  items: SdkPullNavigationItem[];
391
452
  createdAt: string;
392
453
  updatedAt: string;
@@ -882,6 +943,7 @@ export interface SdkUpsertNavigationMenuResponse {
882
943
  name: string;
883
944
  isPrimary: boolean;
884
945
  isFooter: boolean;
946
+ footerRole: 'main' | 'legal-policy' | null;
885
947
  items: SdkPullNavigationItem[];
886
948
  createdAt: string;
887
949
  updatedAt: string;
@@ -89,8 +89,8 @@ export declare const siteBannerSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObj
89
89
  routeId: z.ZodString;
90
90
  entityId: z.ZodString;
91
91
  entityType: z.ZodEnum<{
92
- page: "page";
93
92
  content: "content";
93
+ page: "page";
94
94
  }>;
95
95
  href: z.ZodString;
96
96
  title: z.ZodString;
@@ -155,8 +155,8 @@ export declare const siteBannerSettingsInputSchema: z.ZodDiscriminatedUnion<[z.Z
155
155
  routeId: z.ZodString;
156
156
  entityId: z.ZodString;
157
157
  entityType: z.ZodEnum<{
158
- page: "page";
159
158
  content: "content";
159
+ page: "page";
160
160
  }>;
161
161
  href: z.ZodString;
162
162
  title: z.ZodString;