@riverbankcms/sdk 0.79.0 → 0.80.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 (160) hide show
  1. package/dist/PreviewEditorSidebar-QZG37QIF.mjs +2655 -0
  2. package/dist/{PreviewEditorUI-27KJVEET.mjs → PreviewEditorUI-AXIKSMZA.mjs} +27 -4
  3. package/dist/SdkPreviewModeRuntime-XE5M4UKM.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +20 -0
  5. package/dist/_dts/api/src/endpoints.d.ts +24 -0
  6. package/dist/_dts/api/src/index.d.ts +1 -1
  7. package/dist/_dts/api/src/siteInfrastructure.d.ts +124 -0
  8. package/dist/_dts/api/src/siteOnboarding.d.ts +13 -0
  9. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +10 -1
  10. package/dist/_dts/block-form/src/client/index.d.ts +2 -0
  11. package/dist/_dts/block-form/src/index.d.ts +2 -0
  12. package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +2 -1
  13. package/dist/_dts/blocks/src/client/header.d.ts +1 -1
  14. package/dist/_dts/blocks/src/client.d.ts +12 -12
  15. package/dist/_dts/blocks/src/index.d.ts +1 -1
  16. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +2 -2
  17. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -1
  18. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -1
  19. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  20. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +21 -12
  21. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +4 -2
  22. package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +1 -0
  23. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
  24. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +1 -4
  25. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -7
  27. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  28. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +10 -2
  29. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -5
  30. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +2 -2
  31. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +2 -2
  32. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -2
  34. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -2
  35. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -2
  36. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +9 -0
  38. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +14 -1
  39. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +9 -3
  40. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -6
  41. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -6
  42. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -6
  43. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +2 -6
  44. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +6 -4
  45. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -6
  46. package/dist/_dts/editor-blocks/src/index.d.ts +2 -0
  47. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +5 -1
  48. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +24 -0
  49. package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +34 -0
  50. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  51. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -1
  52. package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +20 -0
  53. package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +2 -0
  54. package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +13 -0
  55. package/dist/_dts/preview-next/src/client/preview/previewCustomizeEditorDraftPatch.d.ts +13 -0
  56. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +2 -0
  57. package/dist/_dts/preview-next/src/client/preview/storeTypes.d.ts +4 -0
  58. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +3 -1
  59. package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +44 -0
  60. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  61. package/dist/_dts/sdk/src/client/management/types.d.ts +56 -0
  62. package/dist/_dts/sdk/src/client/management/webhooks.d.ts +3 -0
  63. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +6 -3
  64. package/dist/_dts/sdk/src/version.d.ts +1 -1
  65. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +220 -0
  66. package/dist/_dts/theme-core/src/accordions/types.d.ts +45 -2
  67. package/dist/_dts/theme-core/src/blockOverrides.d.ts +8 -0
  68. package/dist/_dts/theme-core/src/blocks/types.d.ts +1 -1
  69. package/dist/_dts/theme-core/src/blocks/vars/testimonials.d.ts +4 -1
  70. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
  71. package/dist/_dts/theme-core/src/cards/core.d.ts +20 -0
  72. package/dist/_dts/theme-core/src/cards/generateDefaultCardSystem.d.ts +6 -3
  73. package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +105 -0
  74. package/dist/_dts/theme-core/src/cards/types.d.ts +177 -0
  75. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  76. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -18
  77. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  78. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +16 -0
  79. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/schema.d.ts +446 -52
  81. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +86 -17
  82. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +2 -3
  83. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +86 -17
  84. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +110 -1
  85. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +20 -1
  86. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -0
  87. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +286 -6
  88. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  89. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +193 -0
  90. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +2 -8
  91. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
  92. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -7
  93. package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +11 -0
  94. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +2 -2
  95. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  96. package/dist/_dts/theme-core/src/site-styles/testimonialQuotePresets.d.ts +15 -0
  97. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  98. package/dist/_dts/theme-core/src/site-styles/types.d.ts +7 -29
  99. package/dist/{PreviewEditorSidebar-56NMJMIK.mjs → chunk-5NZGBSJF.mjs} +1423 -2451
  100. package/dist/{chunk-4HCW7FHJ.mjs → chunk-7PCYG6YV.mjs} +215 -137
  101. package/dist/{chunk-K2IIF34C.mjs → chunk-BBLZSQEY.mjs} +24 -0
  102. package/dist/{chunk-V47ZU33I.mjs → chunk-GYXKAUFV.mjs} +2785 -785
  103. package/dist/{chunk-GP555I66.mjs → chunk-HTB4BMKD.mjs} +94 -46
  104. package/dist/{chunk-A3HHFKVT.mjs → chunk-MPBNEVPB.mjs} +1 -1
  105. package/dist/cli/index.mjs +2100 -545
  106. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +16 -4
  107. package/dist/client/{accordion-QLA7KBYO.mjs → accordion-QFZMNB7O.mjs} +1 -1
  108. package/dist/client/{bookingForm-PYZIPA5G.mjs → bookingForm-NCIXFWIG.mjs} +3 -3
  109. package/dist/client/bookings.mjs +1144 -329
  110. package/dist/client/{carousel-5EIULWBI.mjs → carousel-EO4BJMWD.mjs} +2 -2
  111. package/dist/client/{cart-DOP3FNI4.mjs → cart-FTYCLYUW.mjs} +5 -5
  112. package/dist/client/{checkout-BVMF6FBV.mjs → checkout-NFGLVCOX.mjs} +5 -5
  113. package/dist/client/{chunk-TYONZMST.mjs → chunk-4W66ALYT.mjs} +1 -1
  114. package/dist/client/{chunk-44K2U3QI.mjs → chunk-6GVVWSPU.mjs} +4 -4
  115. package/dist/client/{chunk-UDS3NTWA.mjs → chunk-IWFZSQNZ.mjs} +1 -1
  116. package/dist/client/{chunk-R5ESWNKX.mjs → chunk-PUOELU4O.mjs} +89 -5
  117. package/dist/client/{chunk-YLDYVRZL.mjs → chunk-PYRBIURC.mjs} +4 -4
  118. package/dist/client/{chunk-GG4M2NP6.mjs → chunk-T6UIP6UZ.mjs} +1 -1
  119. package/dist/client/{chunk-V6M5FCR5.mjs → chunk-VDS5YFLX.mjs} +1 -1
  120. package/dist/client/{chunk-CCNTDRCF.mjs → chunk-Y37KDO7P.mjs} +1 -1
  121. package/dist/client/client.mjs +4205 -2324
  122. package/dist/client/{courseRegistration-E6EAA6NL.mjs → courseRegistration-2EORROPS.mjs} +3 -3
  123. package/dist/client/{eventCalendar-HBG3HAK6.mjs → eventCalendar-WZI4VL6N.mjs} +5 -5
  124. package/dist/client/{eventCombined-6K5ZZWAK.mjs → eventCombined-QCB2TCNL.mjs} +5 -5
  125. package/dist/client/{eventDetails-Q75ICXLT.mjs → eventDetails-TFTATAPH.mjs} +5 -5
  126. package/dist/client/{eventListing-27P5F7DZ.mjs → eventListing-A2CQEHEQ.mjs} +5 -5
  127. package/dist/client/{eventRegistration-IQ7AMASR.mjs → eventRegistration-OELPVLUY.mjs} +5 -5
  128. package/dist/client/{form-JRTD65FN.mjs → form-NTIFD6WQ.mjs} +1 -1
  129. package/dist/client/{headerSection-7FPSSZHS.mjs → headerSection-7TBNKCLA.mjs} +65 -24
  130. package/dist/client/hooks.mjs +3354 -2006
  131. package/dist/client/{locationMap-7NGFNYBH.mjs → locationMap-LRLB5A3H.mjs} +1 -1
  132. package/dist/client/{newsletterForm-F3BADCI2.mjs → newsletterForm-XI52RZSN.mjs} +1 -1
  133. package/dist/client/{productDetail-V3HP7ITJ.mjs → productDetail-GSNKBFLY.mjs} +5 -5
  134. package/dist/client/{productList-L3EGJUF2.mjs → productList-BGCGT4KZ.mjs} +5 -5
  135. package/dist/client/rendering/client.mjs +2570 -1657
  136. package/dist/client/rendering/islands.mjs +18 -18
  137. package/dist/client/rendering.mjs +4275 -2394
  138. package/dist/client/{shop-DQUB5E2C.mjs → shop-RQHUCLNY.mjs} +5 -5
  139. package/dist/preview-next/before-render.mjs +24 -0
  140. package/dist/preview-next/client/runtime.mjs +5 -5
  141. package/dist/preview-next/middleware.mjs +24 -0
  142. package/dist/{sdk-runtime-AF6KXJU4.mjs → sdk-runtime-A4LHT2RS.mjs} +6 -6
  143. package/dist/server/components.mjs +4063 -2293
  144. package/dist/server/config-validation.mjs +3525 -2176
  145. package/dist/server/config.mjs +3525 -2176
  146. package/dist/server/data.mjs +3354 -2006
  147. package/dist/server/index.mjs +25 -1
  148. package/dist/server/next.mjs +4006 -2236
  149. package/dist/server/page-converter.mjs +2747 -1816
  150. package/dist/server/prebuild.mjs +1 -1
  151. package/dist/server/rendering/server.mjs +4063 -2293
  152. package/dist/server/rendering.mjs +4063 -2293
  153. package/dist/server/routing.mjs +3508 -2111
  154. package/dist/server/server.mjs +3372 -2024
  155. package/dist/server/theme-bridge.mjs +1436 -310
  156. package/dist/server/theme.mjs +409 -219
  157. package/dist/styles/index.css +300 -33
  158. package/package.json +1 -1
  159. package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +0 -8
  160. package/dist/chunk-LCY32PXF.mjs +0 -1175
@@ -20,6 +20,11 @@ export type GeneratedIconSetGenerateResult = Readonly<{
20
20
  kind: 'failed';
21
21
  message: string;
22
22
  }>;
23
+ export type GeneratedIconSetGenerateInput = Readonly<{
24
+ userStyleNote: string | null;
25
+ cards: readonly FeatureCardIconDialogCard[];
26
+ signal?: AbortSignal;
27
+ }>;
23
28
  export type GeneratedIconSetApplyResult = Readonly<{
24
29
  kind: 'applied';
25
30
  }> | Readonly<{
@@ -32,9 +37,6 @@ export declare function GeneratedIconSetDialog({ open, onOpenChange, cards, styl
32
37
  cards: readonly FeatureCardIconDialogCard[];
33
38
  styleGuideSummary?: string | null;
34
39
  styleGuideEditHref?: string | null;
35
- onGenerate?: (input: Readonly<{
36
- userStyleNote: string | null;
37
- cards: readonly FeatureCardIconDialogCard[];
38
- }>) => Promise<GeneratedIconSetGenerateResult>;
40
+ onGenerate?: (input: GeneratedIconSetGenerateInput) => Promise<GeneratedIconSetGenerateResult>;
39
41
  onApply?: (preview: GeneratedIconSetPreview) => GeneratedIconSetApplyResult | void | Promise<GeneratedIconSetApplyResult | void>;
40
42
  }): import("react/jsx-runtime").JSX.Element;
@@ -7,8 +7,7 @@ import { BlockCard } from './BlockCard';
7
7
  import type { FieldWidgetComponent } from '../../../block-form/src/client/index';
8
8
  import { type BlockActionControlMode } from './actionControlMode';
9
9
  import { type ReorderControlMode } from './reorderControlMode';
10
- import type { GeneratedIconSetGenerateResult, GeneratedIconSetPreview } from './GeneratedIconSetDialog';
11
- import type { getFeatureCardIconDialogCards } from './featureCardIconActions';
10
+ import type { GeneratedIconSetGenerateInput, GeneratedIconSetGenerateResult, GeneratedIconSetPreview } from './GeneratedIconSetDialog';
12
11
  export declare const SortableBlockItem: import("react").NamedExoticComponent<{
13
12
  siteId: string;
14
13
  block: BlockItem;
@@ -38,9 +37,6 @@ export declare const SortableBlockItem: import("react").NamedExoticComponent<{
38
37
  currentStyleGuideVersionId?: SiteIconStyleGuideVersionId | null;
39
38
  iconStyleGuideSummary?: string | null;
40
39
  iconStyleGuideEditHref?: string | null;
41
- onGenerateIconSet?: (input: Readonly<{
42
- userStyleNote: string | null;
43
- cards: ReturnType<typeof getFeatureCardIconDialogCards>;
44
- }>) => Promise<GeneratedIconSetGenerateResult>;
40
+ onGenerateIconSet?: (input: GeneratedIconSetGenerateInput) => Promise<GeneratedIconSetGenerateResult>;
45
41
  onApplyGeneratedIconSet?: (preview: GeneratedIconSetPreview) => GeneratedIconSetPreview | void | Promise<GeneratedIconSetPreview | void>;
46
42
  }>;
@@ -18,6 +18,8 @@ export type { BlockDraftSaveability, BlockDraftValidationIssue } from '../../blo
18
18
  export { applyManifestIssuesToForm } from './manifestIssues';
19
19
  export { BlockPickerDialog } from './block-editor/BlockPickerDialog';
20
20
  export { FileField, MediaField } from './media/MediaField';
21
+ export { hideThemeV2RawStyleFields, prepareBlockEditorManifest, } from './block-editor/preparedManifest';
22
+ export { stripTopLevelRoutingUi, } from './block-editor/settingsIntent';
21
23
  export * from './widgets/index';
22
24
  export { createBlockFormLogger, setBlockFormLoggerFactory, setBlockFormAppLogger } from './block-form/debug';
23
25
  export type { BlockFormLogger } from './block-form/debug';
@@ -1,6 +1,10 @@
1
- export declare function BlockToolbar({ blockId, blockKind, content, headerClearancePx, }: {
1
+ import { type Theme } from '../../../../blocks/src/index';
2
+ import { type BackgroundColorPalette } from '../../../../blocks/src/system/customize/backgrounds';
3
+ export declare function BlockToolbar({ blockId, blockKind, content, theme, headerClearancePx, }: {
2
4
  blockId: string;
3
5
  blockKind: string;
4
6
  content: Record<string, unknown>;
7
+ theme?: Theme | null;
5
8
  headerClearancePx?: number;
6
9
  }): import("react/jsx-runtime").JSX.Element;
10
+ export declare function readBackgroundColorPaletteSnapshot(): BackgroundColorPalette | null;
@@ -0,0 +1,24 @@
1
+ import type { FieldConfig, FieldIntent } from '../../../../block-form/src/index';
2
+ export type PreviewCustomizeControl = Readonly<{
3
+ kind: 'manifest-field';
4
+ field: FieldConfig;
5
+ placement: 'quick' | 'panel';
6
+ intent: Extract<FieldIntent, 'display' | 'behavior'>;
7
+ }>;
8
+ export type PreviewCustomizeControlPlan = Readonly<{
9
+ quickControls: readonly PreviewCustomizeControl[];
10
+ panelControls: readonly PreviewCustomizeControl[];
11
+ hiddenControls: readonly PreviewCustomizeHiddenControl[];
12
+ }>;
13
+ export type PreviewCustomizeHiddenControl = Readonly<{
14
+ fieldId: string;
15
+ reason: 'theme-v2-raw-style-field' | 'unsupported-intent' | 'header-field' | 'not-visible';
16
+ }>;
17
+ export type CreatePreviewCustomizeControlPlanInput = Readonly<{
18
+ blockKind: string;
19
+ fields: readonly FieldConfig[];
20
+ content: Readonly<Record<string, unknown>>;
21
+ maxQuickFields?: number;
22
+ }>;
23
+ export declare function createPreviewCustomizeControlPlan({ blockKind, fields, content, maxQuickFields, }: CreatePreviewCustomizeControlPlanInput): PreviewCustomizeControlPlan;
24
+ export declare function isRawThemeV2CustomizeFieldPath(fieldPath: string): boolean;
@@ -0,0 +1,34 @@
1
+ import { type BlockManifest, type Theme } from '../../../../blocks/src/index';
2
+ import { type FieldConfig, type FormBackend } from '../../../../block-form/src/client/index';
3
+ import { type SdkConfigForBlockPicker } from '../../../../editor-blocks/src/index';
4
+ import type { EditorUiState } from '../../../../content-editor/src/index';
5
+ import type { PreviewZustandStoreApi } from '../preview/storeTypes';
6
+ import { type PreviewCustomizeControlPlan } from './previewCustomizeControlPlan';
7
+ export declare const MAX_CUSTOMIZE_POPOVER_ROWS = 6;
8
+ export declare const MAX_QUICK_MANIFEST_FIELDS = 3;
9
+ export type BlockCustomizeControls = Readonly<{
10
+ manifest: BlockManifest | null;
11
+ controlPlan: PreviewCustomizeControlPlan;
12
+ quickFields: FieldConfig[];
13
+ panelFields: FieldConfig[];
14
+ backend: FormBackend | null;
15
+ hasControls: boolean;
16
+ hasOverflowControls: boolean;
17
+ }>;
18
+ export declare function useBlockCustomizeControls({ blockId, blockKind, content, uiStore, theme, sdkConfig, maxQuickFields, maxPopoverRows, builtInPopoverRows, }: {
19
+ blockId: string;
20
+ blockKind: string;
21
+ content: Readonly<Record<string, unknown>>;
22
+ uiStore: PreviewZustandStoreApi<EditorUiState>;
23
+ theme?: Theme | null;
24
+ sdkConfig?: SdkConfigForBlockPicker | null;
25
+ maxQuickFields?: number;
26
+ maxPopoverRows?: number;
27
+ builtInPopoverRows?: number;
28
+ }): BlockCustomizeControls;
29
+ export declare function resolveQuickFieldBudget({ requestedMaxQuickFields, maxPopoverRows, builtInPopoverRows, hasOverflowControls, }: {
30
+ requestedMaxQuickFields: number;
31
+ maxPopoverRows?: number;
32
+ builtInPopoverRows: number;
33
+ hasOverflowControls: boolean;
34
+ }): number;
@@ -5,10 +5,7 @@ import type { BlockEditorHandle, BlockItem } from '../../../../editor-blocks/src
5
5
  import type { MediaAssetIndexItem, Theme } from '../../../../blocks/src/index';
6
6
  import type { EditorUiState, ZoomLevel } from '../../../../content-editor/src/index';
7
7
  import { type ViewportMode, type ViewportWidth } from './PreviewViewportControls';
8
- type StoreApi<T> = {
9
- getState: () => T;
10
- subscribe: (listener: () => void) => () => void;
11
- };
8
+ import type { PreviewZustandStoreApi } from './storeTypes';
12
9
  type PageBlockEditorPanelProps = {
13
10
  siteId: string;
14
11
  pageId: string;
@@ -17,7 +14,7 @@ type PageBlockEditorPanelProps = {
17
14
  bearerToken?: string | null;
18
15
  supabaseUrl?: string;
19
16
  blockItems: BlockItem[];
20
- uiStoreForBlockEditor: StoreApi<EditorUiState>;
17
+ uiStoreForBlockEditor: PreviewZustandStoreApi<EditorUiState>;
21
18
  blockEditorRef: MutableRefObject<BlockEditorHandle | null>;
22
19
  onBlocksChange: (nextItems: BlockItem[]) => void;
23
20
  metadataPanel: ReactNode;
@@ -3,6 +3,7 @@ import type { BackgroundImagePoolItem } from '../../../../blocks/src/system/cust
3
3
  import { type ApiClient } from '../../../../api/src/request';
4
4
  import type { PreviewCustomizeAction } from '../blocks/previewCustomizeActions';
5
5
  import { type PreviewPageDesignEditorApplyOutcome, type PreviewPageDesignEditorState } from './previewCustomizeWorkflowState';
6
+ import { type PreviewEditorRuntimeContent } from './previewCustomizeRuntimePatch';
6
7
  export type { PreviewPageDesignEditorApplyOutcome, PreviewPageDesignEditorState, } from './previewCustomizeWorkflowState';
7
8
  type PageDesignEditorStateContextValue = Readonly<{
8
9
  state: PreviewPageDesignEditorState;
@@ -10,7 +11,9 @@ type PageDesignEditorStateContextValue = Readonly<{
10
11
  backgroundImagePool: readonly BackgroundImagePoolItem[];
11
12
  backgroundImagePoolStatus: 'idle' | 'loading' | 'loaded' | 'failed';
12
13
  loadBackgroundImagePool: () => Promise<readonly BackgroundImagePoolItem[]>;
13
- applyAction: (action: PreviewCustomizeAction) => Promise<PreviewPageDesignEditorApplyOutcome>;
14
+ applyAction: (action: PreviewCustomizeAction, options?: Readonly<{
15
+ runtimeContent?: PreviewEditorRuntimeContent | null;
16
+ }>) => Promise<PreviewPageDesignEditorApplyOutcome>;
14
17
  undo: () => Promise<PreviewPageDesignEditorApplyOutcome>;
15
18
  redo: () => Promise<PreviewPageDesignEditorApplyOutcome>;
16
19
  canUndo: boolean;
@@ -0,0 +1,20 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { EditorBlockId } from '../../../../core/src/index';
3
+ export type PreviewBlockCustomizeSelection = Readonly<{
4
+ kind: 'none';
5
+ }> | Readonly<{
6
+ kind: 'selected';
7
+ blockId: EditorBlockId;
8
+ requestId: number;
9
+ }>;
10
+ type PreviewBlockCustomizeSelectionContextValue = Readonly<{
11
+ selection: PreviewBlockCustomizeSelection;
12
+ inspectBlock: (blockId: EditorBlockId) => void;
13
+ clearInspection: () => void;
14
+ }>;
15
+ export declare function PreviewBlockCustomizeSelectionProvider({ children, }: {
16
+ children: ReactNode;
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ export declare function usePreviewBlockCustomizeSelection(): PreviewBlockCustomizeSelectionContextValue;
19
+ export declare function usePreviewBlockCustomizeSelectionOptional(): PreviewBlockCustomizeSelectionContextValue | null;
20
+ export {};
@@ -1 +1,3 @@
1
+ import type { StatusBarMenuItem } from '@riverbankcms/editor';
2
+ export declare function usePreviewOpenEditorMobileMenuItems(): StatusBarMenuItem[];
1
3
  export declare function PreviewOpenEditorButton(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import type { Theme } from '../../../../blocks/src/index';
2
+ import type { EditorBlockId } from '../../../../core/src/index';
3
+ import type { SdkConfigForBlockPicker } from '../../../../editor-blocks/src/index';
4
+ import type { BlockItem } from '../../../../editor-blocks/src/block-editor/types';
5
+ import type { EditorUiState } from '../../../../content-editor/src/index';
6
+ import type { PreviewZustandStoreApi } from './storeTypes';
7
+ export declare function SelectedBlockCustomizePanel({ blockItems, uiStoreForBlockEditor, theme, sdkConfig, }: {
8
+ blockItems: readonly BlockItem[];
9
+ uiStoreForBlockEditor: PreviewZustandStoreApi<EditorUiState>;
10
+ theme?: Theme | null;
11
+ sdkConfig?: SdkConfigForBlockPicker | null;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function readBlockCurrentValues(store: PreviewZustandStoreApi<EditorUiState>, blockId: EditorBlockId, fallback: Record<string, unknown>): Record<string, unknown>;
@@ -0,0 +1,13 @@
1
+ import { type EditorUiStoreInstance } from '../../../../content-editor/src/index';
2
+ import type { DesignBlockId, PageDesignEditorReadModel } from '../../../../theme-core/src/site-styles/index';
3
+ import type { PreviewCustomizeRuntimePatch, PreviewEditorRuntimeContent } from './previewCustomizeRuntimePatch';
4
+ export type PreviewCustomizeDraftPatchResult = Readonly<{
5
+ kind: 'applied';
6
+ }> | Readonly<{
7
+ kind: 'missing-block-model';
8
+ }> | Readonly<{
9
+ kind: 'missing-current-content';
10
+ }>;
11
+ export declare function applyPreviewCustomizeDraftPatch(uiStore: EditorUiStoreInstance, patch: PreviewCustomizeRuntimePatch, editorModel: PageDesignEditorReadModel): PreviewCustomizeDraftPatchResult;
12
+ export declare function rollbackPreviewCustomizeDraftPatch(uiStore: EditorUiStoreInstance, patch: PreviewCustomizeRuntimePatch | null): PreviewCustomizeDraftPatchResult;
13
+ export declare function currentLocalBlockContent(uiStore: EditorUiStoreInstance, targetBlockId: DesignBlockId): PreviewEditorRuntimeContent | null;
@@ -2,8 +2,10 @@ import type { PageDesignEditorReadModel } from '../../../../theme-core/src/site-
2
2
  import type { DesignBlockId } from '../../../../theme-core/src/site-styles/index';
3
3
  import type { PreviewCustomizeAction } from '../blocks/previewCustomizeActions';
4
4
  export type PreviewEditorRuntimeContent = Record<string, unknown>;
5
+ export type PreviewCustomizeRuntimeFieldPath = '_sectionStyles.background';
5
6
  export type PreviewCustomizeRuntimePatch = Readonly<{
6
7
  blockId: DesignBlockId;
8
+ ownedRuntimeFieldPaths: readonly PreviewCustomizeRuntimeFieldPath[];
7
9
  previousContent: PreviewEditorRuntimeContent;
8
10
  nextContent: PreviewEditorRuntimeContent;
9
11
  rollback: (currentContent: PreviewEditorRuntimeContent) => PreviewEditorRuntimeContent;
@@ -0,0 +1,4 @@
1
+ export type PreviewZustandStoreApi<T> = {
2
+ getState: () => T;
3
+ subscribe: (listener: () => void) => () => void;
4
+ };
@@ -2,14 +2,16 @@ import { type ReactNode } from 'react';
2
2
  import type { ApiClient } from '../../../../api/src/request';
3
3
  import { type MediaAssetIndexItem, type Theme } from '../../../../blocks/src/index';
4
4
  import type { FieldWidgetComponent } from '../../../../block-form/src/client/index';
5
+ import type { SdkConfigForBlockPicker } from '../../../../editor-blocks/src/index';
5
6
  import { __testUtils, createPreviewEntryPickerAdapter, createPreviewLinkAdapters, createPreviewReferenceAdapters } from './widgetAdapters';
6
- export declare function PreviewFormProvider({ siteId: rawSiteId, theme, previewClient, bearerToken, supabaseUrl, mediaAssets, children, }: {
7
+ export declare function PreviewFormProvider({ siteId: rawSiteId, theme, previewClient, bearerToken, supabaseUrl, mediaAssets, sdkConfig, children, }: {
7
8
  siteId: string;
8
9
  theme?: Theme | null;
9
10
  previewClient: ApiClient;
10
11
  bearerToken?: string | null;
11
12
  supabaseUrl?: string;
12
13
  mediaAssets?: MediaAssetIndexItem[];
14
+ sdkConfig?: SdkConfigForBlockPicker | null;
13
15
  children: ReactNode;
14
16
  }): import("react/jsx-runtime").JSX.Element;
15
17
  export declare const previewWidgetOverrides: {
@@ -0,0 +1,44 @@
1
+ import { Command } from 'commander';
2
+ import type { SetupRevalidationWebhookResult } from '../../client/management';
3
+ export declare const RIVERBANK_WEBHOOK_SECRET_ENV = "RIVERBANK_WEBHOOK_SECRET";
4
+ export type EnvPatchPlan = Readonly<{
5
+ tag: 'create-file';
6
+ nextContent: string;
7
+ }> | Readonly<{
8
+ tag: 'append-key';
9
+ nextContent: string;
10
+ }> | Readonly<{
11
+ tag: 'replace-key';
12
+ nextContent: string;
13
+ }> | Readonly<{
14
+ tag: 'unchanged';
15
+ nextContent: string;
16
+ }>;
17
+ export interface WebhookSetupOptions {
18
+ url: string;
19
+ name?: string;
20
+ rotateSecret?: boolean;
21
+ dryRun?: boolean;
22
+ writeEnv?: boolean;
23
+ vercel?: boolean;
24
+ yes?: boolean;
25
+ }
26
+ export declare function planEnvSecretPatch(existingContent: string | null, secret: string): EnvPatchPlan;
27
+ export declare function writeEnvSecret(filePath: string, secret: string): Promise<Readonly<{
28
+ path: string;
29
+ plan: EnvPatchPlan;
30
+ written: boolean;
31
+ }>>;
32
+ export declare function planHumanResultOutput(input: Readonly<{
33
+ result: SetupRevalidationWebhookResult;
34
+ envWrite: Readonly<{
35
+ path: string;
36
+ plan: EnvPatchPlan;
37
+ written: boolean;
38
+ }> | null;
39
+ writeEnv: boolean;
40
+ }>): Readonly<{
41
+ summary: string;
42
+ details: string[];
43
+ }>;
44
+ export declare const webhooksCommand: Command;
@@ -36,7 +36,7 @@ import { CourseSessionConflictError } from './courses';
36
36
  * @returns ManagementClient instance
37
37
  */
38
38
  export declare function createManagementClient(config: ManagementClientConfig): ManagementClient;
39
- export type { ManagementClient, ManagementClientConfig, ManagementEntry, ManagementPage, ManagementBlock, ManagementNavigationMenu, ManagementNavigationItem, ManagementSettings, ManagementForm, ManagementFormField, ManagementFormSchema, ManagementFormSettings, ManagementVenue, VenueAddress, VenueLocation, VenueUpsertInput, ManagementEventCategory, EventCategoryUpsertInput, ManagementEventSeries, EventSchedule, EventPricing, EventContent, EventSeriesUpsertInput, ManagementCourseRun, CourseRunUpsertInput, CourseSession, CourseProgramContent, CourseSessionConflict, EntryUpsertInput, PageUpsertInput, BlockUpsertInput, NavigationMenuUpsertInput, NavigationItemInput, FormUpsertInput, SiteStyleSelectionApplyCommand, SiteStyleSelectionApplyCommandInput, ThemeUpsertInput, ThemeUpsertResult, ThemeStyleSelectionApplyInput, ThemeStyleSelectionApplyResult, FooterContent, ManagementFooterContent, FooterContentUpsertInput, FooterOperations, PulledFooter, PulledEntries, PulledPages, PulledNavigation, PulledSettings, PulledForms, PulledTheme, PulledVenues, PulledEventCategories, PulledEvents, PulledCourses, PulledSiteInfo, PulledContentType, PulledContentTypes, PulledContent, PaginationOptions, PaginatedResult, EntryOperations, PageOperations, BlockOperations, NavigationOperations, SettingsOperations, SettingsUpdateInput, FormOperations, ThemeOperations, VenueOperations, EventCategoryOperations, EventOperations, CourseOperations, PullOperations, IdentifiersOperations, BackfillResult, BackfillPageResult, BackfillBlockResult, BackfillEntryResult, MediaOperations, MediaUploadResult, } from './types';
39
+ export type { ManagementClient, ManagementClientConfig, ManagementEntry, ManagementPage, ManagementBlock, ManagementNavigationMenu, ManagementNavigationItem, ManagementSettings, ManagementForm, ManagementFormField, ManagementFormSchema, ManagementFormSettings, ManagementVenue, VenueAddress, VenueLocation, VenueUpsertInput, ManagementEventCategory, EventCategoryUpsertInput, ManagementEventSeries, EventSchedule, EventPricing, EventContent, EventSeriesUpsertInput, ManagementCourseRun, CourseRunUpsertInput, CourseSession, CourseProgramContent, CourseSessionConflict, EntryUpsertInput, PageUpsertInput, BlockUpsertInput, NavigationMenuUpsertInput, NavigationItemInput, FormUpsertInput, SiteStyleSelectionApplyCommand, SiteStyleSelectionApplyCommandInput, ThemeUpsertInput, ThemeUpsertResult, ThemeStyleSelectionApplyInput, ThemeStyleSelectionApplyResult, FooterContent, ManagementFooterContent, FooterContentUpsertInput, FooterOperations, PulledFooter, PulledEntries, PulledPages, PulledNavigation, PulledSettings, PulledForms, PulledTheme, PulledVenues, PulledEventCategories, PulledEvents, PulledCourses, PulledSiteInfo, PulledContentType, PulledContentTypes, PulledContent, PaginationOptions, PaginatedResult, EntryOperations, PageOperations, BlockOperations, NavigationOperations, SettingsOperations, SettingsUpdateInput, WebhookOperations, SetupRevalidationWebhookInput, SetupRevalidationWebhookResult, ManagementWebhookEndpoint, RevalidationWebhookPlannedEndpoint, FormOperations, ThemeOperations, VenueOperations, EventCategoryOperations, EventOperations, CourseOperations, PullOperations, IdentifiersOperations, BackfillResult, BackfillPageResult, BackfillBlockResult, BackfillEntryResult, MediaOperations, MediaUploadResult, } from './types';
40
40
  export { ManagementApiError, type ManagementApiErrorRequest } from './http';
41
41
  export { applySiteStyleSelectionBodyFromCommand, buildApplySiteStyleSelectionCommand, } from './theme';
42
42
  export { CourseSessionConflictError };
@@ -167,6 +167,58 @@ export interface SettingsUpdateInput {
167
167
  logoIdentifier?: string | null;
168
168
  faviconIdentifier?: string | null;
169
169
  }
170
+ export interface ManagementWebhookEndpoint {
171
+ id: string;
172
+ name: string;
173
+ url: string;
174
+ events: string[];
175
+ enabled: boolean;
176
+ hasSecret: boolean;
177
+ createdAt: string;
178
+ updatedAt: string;
179
+ siteId: string;
180
+ failureCount: number;
181
+ lastFailureAt: string | null;
182
+ lastSuccessAt: string | null;
183
+ lastTriggeredAt: string | null;
184
+ }
185
+ export interface SetupRevalidationWebhookInput {
186
+ url: string;
187
+ name?: string;
188
+ rotateSecret?: boolean;
189
+ dryRun?: boolean;
190
+ vercel?: boolean;
191
+ }
192
+ export interface RevalidationWebhookPlannedEndpoint {
193
+ name: string;
194
+ url: string;
195
+ events: string[];
196
+ enabled: boolean;
197
+ rotateSecret: boolean;
198
+ }
199
+ export type SetupRevalidationWebhookResult = {
200
+ dryRun: true;
201
+ action: 'would_create' | 'would_update' | 'would_rotate' | 'would_leave_unchanged';
202
+ endpoint: ManagementWebhookEndpoint | null;
203
+ plannedEndpoint: RevalidationWebhookPlannedEndpoint;
204
+ message: string;
205
+ checklist: string[];
206
+ } | {
207
+ dryRun: false;
208
+ action: 'created' | 'rotated';
209
+ endpoint: ManagementWebhookEndpoint;
210
+ plannedEndpoint: RevalidationWebhookPlannedEndpoint;
211
+ secret: string;
212
+ message: string;
213
+ checklist: string[];
214
+ } | {
215
+ dryRun: false;
216
+ action: 'updated' | 'unchanged';
217
+ endpoint: ManagementWebhookEndpoint;
218
+ plannedEndpoint: RevalidationWebhookPlannedEndpoint;
219
+ message: string;
220
+ checklist: string[];
221
+ };
170
222
  /**
171
223
  * Form field definition.
172
224
  */
@@ -815,6 +867,9 @@ export interface SettingsOperations {
815
867
  get(): Promise<ManagementSettings>;
816
868
  update(input: SettingsUpdateInput): Promise<ManagementSettings>;
817
869
  }
870
+ export interface WebhookOperations {
871
+ setupRevalidation(input: SetupRevalidationWebhookInput): Promise<SetupRevalidationWebhookResult>;
872
+ }
818
873
  export interface FormOperations {
819
874
  list(): Promise<ManagementForm[]>;
820
875
  get(slug: string): Promise<ManagementForm | null>;
@@ -957,6 +1012,7 @@ export interface ManagementClient {
957
1012
  blocks: BlockOperations;
958
1013
  navigation: NavigationOperations;
959
1014
  settings: SettingsOperations;
1015
+ webhooks: WebhookOperations;
960
1016
  forms: FormOperations;
961
1017
  theme: ThemeOperations;
962
1018
  footer: FooterOperations;
@@ -0,0 +1,3 @@
1
+ import type { HttpClient } from './http';
2
+ import type { WebhookOperations } from './types';
3
+ export declare function createWebhookOperations(http: HttpClient): WebhookOperations;
@@ -217,6 +217,9 @@ export type DisplayMode = 'combined' | 'month' | 'week' | 'list' | 'timetable';
217
217
  export type FilterAutoShow = 'auto' | 'always' | 'never';
218
218
  export type CalendarTabViews = 'both' | 'month' | 'week';
219
219
  export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'link';
220
+ export type CardVariantRole = 'default' | 'alternative';
221
+ export type LegacyCardVariantRoleAlias = 'variant1' | 'variant2';
222
+ export type EventCardVariantInput = CardVariantRole | LegacyCardVariantRoleAlias;
220
223
  export type EventBlockKind = 'all' | 'courses' | 'events';
221
224
  export type EventSurfacePreset = 'class' | 'workshop' | 'retreat' | 'performance';
222
225
  export type EventSurfaceScope = 'all' | 'regularClassSchedule' | 'specialDatedEvents' | 'custom';
@@ -270,7 +273,7 @@ export type EventListingContent = {
270
273
  paginationMode?: 'loadMore' | 'seeAllLink' | null;
271
274
  seeAllUrl?: string | null;
272
275
  loadMoreText?: string | null;
273
- cardVariant?: 'default' | 'variant1' | 'variant2' | null;
276
+ cardVariant?: EventCardVariantInput | null;
274
277
  buttonVariant?: ButtonVariant | null;
275
278
  buttonText?: string | null;
276
279
  showVenue?: boolean | null;
@@ -306,7 +309,7 @@ export type EventSpotlightContent = {
306
309
  ctaUrl?: LinkValue | string | null;
307
310
  layout?: 'grid' | 'stack' | null;
308
311
  columns?: '2' | '3' | null;
309
- cardVariant?: 'default' | 'variant1' | 'variant2' | null;
312
+ cardVariant?: EventCardVariantInput | null;
310
313
  buttonVariant?: ButtonVariant | null;
311
314
  buttonText?: string | null;
312
315
  showVenue?: boolean | null;
@@ -519,7 +522,7 @@ export type TeamMembersContent = (TeamMembersCommonContent & {
519
522
  members?: ManualTeamMemberItem[];
520
523
  });
521
524
  export type TestimonialsBlockContent = {
522
- variant?: 'carousel' | 'grid' | 'split-grid' | null;
525
+ variant?: 'carousel' | 'grid' | 'split-grid' | 'highlight' | null;
523
526
  heading?: string | null;
524
527
  subheading?: string | null;
525
528
  avatarLayout?: 'above-centered' | 'inline-left' | 'hidden' | null;
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.79.0";
11
+ export declare const SDK_VERSION = "0.80.0";