@riverbankcms/sdk 0.72.0 → 0.75.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 (146) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-44T64SAR.mjs → PreviewEditorSidebar-U2IHCBYN.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-4WKHZTXW.mjs → PreviewEditorUI-ZGH2RQNP.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-MTUGBTLQ.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +10 -10
  6. package/dist/_dts/api/src/cache-tags.d.ts +22 -0
  7. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  8. package/dist/_dts/api/src/endpoints.d.ts +24 -24
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +2 -1
  10. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +4 -1
  11. package/dist/_dts/blocks/src/client/booking-form.d.ts +2 -0
  12. package/dist/_dts/blocks/src/client/carousel.d.ts +1 -0
  13. package/dist/_dts/blocks/src/client/course-registration.d.ts +2 -0
  14. package/dist/_dts/blocks/src/client/events.d.ts +4 -0
  15. package/dist/_dts/blocks/src/client/form.d.ts +2 -0
  16. package/dist/_dts/blocks/src/client/header.d.ts +1 -0
  17. package/dist/_dts/blocks/src/client/location-map.d.ts +1 -0
  18. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +2 -0
  19. package/dist/_dts/blocks/src/client/shop.d.ts +6 -0
  20. package/dist/_dts/blocks/src/lib/video.d.ts +2 -0
  21. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +21 -1
  22. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +6 -6
  23. package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +15 -1
  24. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +11 -0
  25. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +13 -0
  27. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -2
  28. package/dist/_dts/blocks/src/system/runtime/nodes/events/index.d.ts +3 -0
  29. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +1 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +6 -0
  32. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +5 -0
  33. package/dist/_dts/preview-next/src/client/preview/SiteChromeEditableSurface.d.ts +12 -2
  34. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  35. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  36. package/dist/_dts/sdk/src/rendering/islands/deferredVideoEmbeds.d.ts +2 -0
  37. package/dist/_dts/sdk/src/rendering/islands/enhancers/accordion.d.ts +1 -0
  38. package/dist/_dts/sdk/src/rendering/islands/enhancers/bookingForm.d.ts +1 -0
  39. package/dist/_dts/sdk/src/rendering/islands/enhancers/carousel.d.ts +1 -0
  40. package/dist/_dts/sdk/src/rendering/islands/enhancers/cart.d.ts +1 -0
  41. package/dist/_dts/sdk/src/rendering/islands/enhancers/checkout.d.ts +1 -0
  42. package/dist/_dts/sdk/src/rendering/islands/enhancers/courseRegistration.d.ts +1 -0
  43. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventCalendar.d.ts +1 -0
  44. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventCombined.d.ts +1 -0
  45. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventDetails.d.ts +1 -0
  46. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventListing.d.ts +1 -0
  47. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventRegistration.d.ts +1 -0
  48. package/dist/_dts/sdk/src/rendering/islands/enhancers/form.d.ts +1 -0
  49. package/dist/_dts/sdk/src/rendering/islands/enhancers/headerSection.d.ts +1 -0
  50. package/dist/_dts/sdk/src/rendering/islands/enhancers/locationMap.d.ts +1 -0
  51. package/dist/_dts/sdk/src/rendering/islands/enhancers/newsletterForm.d.ts +1 -0
  52. package/dist/_dts/sdk/src/rendering/islands/enhancers/productDetail.d.ts +1 -0
  53. package/dist/_dts/sdk/src/rendering/islands/enhancers/productList.d.ts +1 -0
  54. package/dist/_dts/sdk/src/rendering/islands/enhancers/shop.d.ts +1 -0
  55. package/dist/_dts/sdk/src/rendering/islands/hydrateBlocksIslands.d.ts +2 -2
  56. package/dist/_dts/sdk/src/rendering/islands/propsDecoder.d.ts +7 -0
  57. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +9 -0
  58. package/dist/_dts/sdk/src/rendering/server.d.ts +3 -0
  59. package/dist/_dts/sdk/src/version.d.ts +1 -1
  60. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  61. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +7 -7
  62. package/dist/_dts/theme-core/src/buttons/types.d.ts +20 -20
  63. package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
  64. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  65. package/dist/_dts/theme-core/src/header/navDropdownSizing.d.ts +7 -0
  66. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  67. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -156
  69. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  70. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +4 -4
  71. package/dist/_dts/theme-core/src/schema.d.ts +178 -178
  72. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +2 -2
  73. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +8 -8
  74. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +5 -5
  75. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  76. package/dist/{chunk-G4NLITC2.mjs → chunk-BGMNDF6T.mjs} +7 -7
  77. package/dist/{chunk-3YNCQG5N.mjs → chunk-GFE74WRD.mjs} +457 -98
  78. package/dist/{chunk-HV745JYE.mjs → chunk-RWXQBRQZ.mjs} +1 -1
  79. package/dist/{chunk-7RX72SK2.mjs → chunk-VX7B5VAC.mjs} +36 -25
  80. package/dist/{chunk-YRJKZEQ3.mjs → chunk-Z7JLNTJR.mjs} +1 -1
  81. package/dist/{chunk-KWQPAJYS.mjs → chunk-ZSHFGFUG.mjs} +2 -2
  82. package/dist/cli/index.mjs +3498 -3826
  83. package/dist/client/accordion-T2UD2ZTH.mjs +120 -0
  84. package/dist/client/altcha-LIGLPZS5.mjs +2755 -0
  85. package/dist/client/bookingForm-GUP75FKN.mjs +3022 -0
  86. package/dist/client/bookings.mjs +32 -10
  87. package/dist/client/carousel-2NQA6V57.mjs +47 -0
  88. package/dist/client/cart-5TFIAFDS.mjs +18 -0
  89. package/dist/client/checkout-TP4WAHZE.mjs +18 -0
  90. package/dist/client/chunk-2PHQZ666.mjs +383 -0
  91. package/dist/client/chunk-3DCJ45Z2.mjs +36 -0
  92. package/dist/client/chunk-3PEDD5KJ.mjs +146 -0
  93. package/dist/client/chunk-CY2ZTSE5.mjs +204 -0
  94. package/dist/client/chunk-F7LHOKEH.mjs +146 -0
  95. package/dist/client/chunk-FU2QRZMX.mjs +7617 -0
  96. package/dist/client/chunk-I2MMZO53.mjs +6 -0
  97. package/dist/client/chunk-II7O4XN3.mjs +2206 -0
  98. package/dist/client/chunk-M3L3KYYR.mjs +1181 -0
  99. package/dist/client/chunk-N7PBWBWQ.mjs +26 -0
  100. package/dist/client/chunk-NWOUL6JY.mjs +1378 -0
  101. package/dist/client/chunk-OJPZEZU2.mjs +31 -0
  102. package/dist/client/chunk-PMAIXMAB.mjs +1960 -0
  103. package/dist/client/chunk-RTZ3JKKX.mjs +178 -0
  104. package/dist/client/chunk-TQ5MSPDX.mjs +74 -0
  105. package/dist/client/chunk-VUAOE3AG.mjs +5592 -0
  106. package/dist/client/chunk-WJXXNDSE.mjs +245 -0
  107. package/dist/client/chunk-YLMKMCSJ.mjs +86 -0
  108. package/dist/client/chunk-ZLMS67RR.mjs +106 -0
  109. package/dist/client/client.mjs +51865 -52071
  110. package/dist/client/courseRegistration-5DPU6PDY.mjs +1737 -0
  111. package/dist/client/eventCalendar-F3GZGTEF.mjs +40 -0
  112. package/dist/client/eventCombined-BQOB6QMY.mjs +37 -0
  113. package/dist/client/eventDetails-PEM2EJWE.mjs +25 -0
  114. package/dist/client/eventListing-YMIQPVME.mjs +40 -0
  115. package/dist/client/eventRegistration-4I6ZNDUF.mjs +40 -0
  116. package/dist/client/form-ZJVAYZ6G.mjs +300 -0
  117. package/dist/client/headerSection-TOT5MGTF.mjs +729 -0
  118. package/dist/client/hooks.mjs +91 -42
  119. package/dist/client/locationMap-J66NZREU.mjs +227 -0
  120. package/dist/client/newsletterForm-ET2XUMRO.mjs +208 -0
  121. package/dist/client/productDetail-C2XIH7C5.mjs +18 -0
  122. package/dist/client/productList-T2AZLFTP.mjs +18 -0
  123. package/dist/client/rendering/client.mjs +12796 -18295
  124. package/dist/client/rendering/islands.mjs +108 -44022
  125. package/dist/client/rendering.mjs +45141 -45346
  126. package/dist/client/shop-UZ6IUZXD.mjs +20 -0
  127. package/dist/preview-next/before-render.mjs +37 -25
  128. package/dist/preview-next/client/runtime.mjs +5 -5
  129. package/dist/preview-next/middleware.mjs +37 -25
  130. package/dist/{sdk-runtime-NGDWSWOS.mjs → sdk-runtime-JCUQM63Y.mjs} +6 -6
  131. package/dist/server/components.mjs +472 -276
  132. package/dist/server/config-validation.mjs +91 -42
  133. package/dist/server/config.mjs +91 -42
  134. package/dist/server/data.mjs +91 -42
  135. package/dist/server/index.mjs +45 -33
  136. package/dist/server/next.mjs +468 -272
  137. package/dist/server/page-converter.mjs +41 -17
  138. package/dist/server/prebuild.mjs +1 -1
  139. package/dist/server/rendering/server.mjs +556 -275
  140. package/dist/server/rendering.mjs +474 -278
  141. package/dist/server/routing.mjs +99 -43
  142. package/dist/server/server.mjs +92 -43
  143. package/dist/server/theme-bridge.mjs +29 -0
  144. package/dist/styles/index.css +16 -0
  145. package/package.json +2 -1
  146. package/dist/SdkPreviewModeRuntime-FO6V7YVY.mjs +0 -8
@@ -4297,24 +4297,24 @@ export type SlotDefinition = z.infer<typeof slotSchema>;
4297
4297
  export declare const styleTokenSchema: z.ZodObject<{
4298
4298
  background: z.ZodOptional<z.ZodEnum<{
4299
4299
  background: "background";
4300
+ muted: "muted";
4300
4301
  surface: "surface";
4301
4302
  foreground: "foreground";
4302
4303
  accent: "accent";
4303
- muted: "muted";
4304
4304
  }>>;
4305
4305
  foreground: z.ZodOptional<z.ZodEnum<{
4306
4306
  background: "background";
4307
+ muted: "muted";
4307
4308
  surface: "surface";
4308
4309
  foreground: "foreground";
4309
4310
  accent: "accent";
4310
- muted: "muted";
4311
4311
  }>>;
4312
4312
  border: z.ZodOptional<z.ZodEnum<{
4313
4313
  background: "background";
4314
+ muted: "muted";
4314
4315
  surface: "surface";
4315
4316
  foreground: "foreground";
4316
4317
  accent: "accent";
4317
- muted: "muted";
4318
4318
  }>>;
4319
4319
  typography: z.ZodOptional<z.ZodEnum<{
4320
4320
  body: "body";
@@ -4381,24 +4381,24 @@ export declare const manifestSchema: z.ZodObject<{
4381
4381
  styleTokens: z.ZodOptional<z.ZodObject<{
4382
4382
  background: z.ZodOptional<z.ZodEnum<{
4383
4383
  background: "background";
4384
+ muted: "muted";
4384
4385
  surface: "surface";
4385
4386
  foreground: "foreground";
4386
4387
  accent: "accent";
4387
- muted: "muted";
4388
4388
  }>>;
4389
4389
  foreground: z.ZodOptional<z.ZodEnum<{
4390
4390
  background: "background";
4391
+ muted: "muted";
4391
4392
  surface: "surface";
4392
4393
  foreground: "foreground";
4393
4394
  accent: "accent";
4394
- muted: "muted";
4395
4395
  }>>;
4396
4396
  border: z.ZodOptional<z.ZodEnum<{
4397
4397
  background: "background";
4398
+ muted: "muted";
4398
4399
  surface: "surface";
4399
4400
  foreground: "foreground";
4400
4401
  accent: "accent";
4401
- muted: "muted";
4402
4402
  }>>;
4403
4403
  typography: z.ZodOptional<z.ZodEnum<{
4404
4404
  body: "body";
@@ -1,4 +1,5 @@
1
1
  import type { NodeDefinition } from "../schema";
2
+ import type { MediaImageFetchPriority, MediaImageLoading } from "../../runtime/nodes/media";
2
3
  /**
3
4
  * Options for customizing the appearance of background layers.
4
5
  */
@@ -43,6 +44,16 @@ export type BackgroundLayerOptions = {
43
44
  * @default false
44
45
  */
45
46
  omitImageLayer?: boolean;
47
+ /**
48
+ * Browser loading hint for the background image layer.
49
+ *
50
+ * @default 'lazy'
51
+ */
52
+ imageLoading?: MediaImageLoading;
53
+ /**
54
+ * Browser fetch priority hint for the background image layer.
55
+ */
56
+ imageFetchPriority?: MediaImageFetchPriority;
46
57
  };
47
58
  /**
48
59
  * Creates background layer nodes for rendering backgrounds from field data.
@@ -112,7 +123,10 @@ export declare function backgroundLayer(path: string, options?: BackgroundLayerO
112
123
  * 'rb-absolute rb-inset-0 rb-h-full rb-w-full'
113
124
  * )
114
125
  */
115
- export declare function createBackgroundImageNode(path: string, baseClassName?: string): NodeDefinition;
126
+ export declare function createBackgroundImageNode(path: string, baseClassName?: string, options?: {
127
+ loading?: MediaImageLoading;
128
+ fetchPriority?: MediaImageFetchPriority;
129
+ }): NodeDefinition;
116
130
  /**
117
131
  * Creates a div node for rendering color/gradient overlays on background images.
118
132
  *
@@ -1,5 +1,6 @@
1
1
  import type { NodeDefinition } from '../schema';
2
2
  import type { SemanticSpacing } from '../../spacing';
3
+ import type { MediaImageFetchPriority, MediaImageLoading } from '../../runtime/nodes/media';
3
4
  /**
4
5
  * Configuration for creating a styled section with background support.
5
6
  */
@@ -52,6 +53,16 @@ export type StyledSectionConfig = {
52
53
  * @default true
53
54
  */
54
55
  renderBackgroundImage?: boolean;
56
+ /**
57
+ * Browser loading hint for the automatic background image layer.
58
+ *
59
+ * @default 'lazy'
60
+ */
61
+ backgroundImageLoading?: MediaImageLoading;
62
+ /**
63
+ * Browser fetch priority hint for the automatic background image layer.
64
+ */
65
+ backgroundImageFetchPriority?: MediaImageFetchPriority;
55
66
  /**
56
67
  * Optional path to a boolean flag in block content that should trigger
57
68
  * full-width section behavior (removing horizontal `rb-px-*` classes).
@@ -2823,6 +2823,7 @@ export declare const clientComponentRegistryEntries: {
2823
2823
  blockContent?: unknown;
2824
2824
  fragmentRegistry?: unknown;
2825
2825
  pathBase?: string;
2826
+ "data-preview-site-chrome-surface"?: string;
2826
2827
  } & {
2827
2828
  children?: React.ReactNode | undefined;
2828
2829
  }>;
@@ -10,6 +10,19 @@ type HeaderSectionEnhanceOptions = {
10
10
  */
11
11
  scrollTarget?: HTMLElement | null;
12
12
  };
13
+ type DropdownPlacementInput = Readonly<{
14
+ left: number;
15
+ right: number;
16
+ viewportWidth: number;
17
+ gutter: number;
18
+ }>;
19
+ export type DropdownPlacementPlan = Readonly<{
20
+ kind: 'unchanged';
21
+ } | {
22
+ kind: 'shift';
23
+ x: number;
24
+ }>;
25
+ export declare function planDropdownViewportShift(input: DropdownPlacementInput): DropdownPlacementPlan;
13
26
  /**
14
27
  * Enhances a rendered site header section with:
15
28
  * - Desktop dropdown ARIA state
@@ -66,6 +66,7 @@ export type BookingFlowFeedback = Readonly<{
66
66
  scope: "verification" | "payment";
67
67
  message: string;
68
68
  }>;
69
+ export type BookingFlowPhase = "editing" | "submitting" | "completed";
69
70
  export type AvailabilitySelectionInvalidation = Readonly<{
70
71
  kind: "preserve";
71
72
  }> | Readonly<{
@@ -157,6 +158,7 @@ export type BookingFieldView = Readonly<{
157
158
  ariaInvalid: boolean;
158
159
  }>;
159
160
  export type BookingFlowReducerState = Readonly<{
161
+ phase: BookingFlowPhase;
160
162
  currentStepId: BookingFlowStepId;
161
163
  selectedServiceId?: AppointmentServiceId;
162
164
  selectedResourceId?: AppointmentResourceId;
@@ -170,7 +172,6 @@ export type BookingFlowReducerState = Readonly<{
170
172
  altchaSolution: string | null;
171
173
  validationErrors: BookingValidationErrors;
172
174
  feedback: BookingFlowFeedback;
173
- isSubmitting: boolean;
174
175
  }>;
175
176
  export type BookingFlowEvent = Readonly<{
176
177
  type: "service-selected";
@@ -491,7 +492,7 @@ export declare function resolveAppointmentPackagesModel(input: Readonly<{
491
492
  }>): BookingAppointmentPackagesModel;
492
493
  export declare function resolveHeadlessBookingStatus(input: Readonly<{
493
494
  feedback: BookingFlowFeedback;
494
- isSubmitting: boolean;
495
+ phase: BookingFlowPhase;
495
496
  }>): BookingFlowStatus;
496
497
  export declare function resolveHeadlessBookingView(input: Readonly<{
497
498
  form: BookingFormConfig | null;
@@ -7,5 +7,8 @@ export { EventListingSSR } from './EventListing.server';
7
7
  export { EventCalendarSSR } from './EventCalendar.server';
8
8
  export { EventCombinedSSR } from './EventCombined.server';
9
9
  export { EventListingClient } from './EventListing.client';
10
+ export type { EventListingClientProps } from './EventListing.client';
10
11
  export { EventCalendarClient } from './EventCalendar.client';
12
+ export type { EventCalendarClientProps } from './EventCalendar.client';
11
13
  export { EventCombinedClient, EventCombinedIslandClient } from './EventCombined.client';
14
+ export type { EventCombinedClientProps, EventCombinedIslandClientProps, } from './EventCombined.client';
@@ -6,6 +6,7 @@ type HeaderSectionNodeProps = React.PropsWithChildren<{
6
6
  blockContent?: unknown;
7
7
  fragmentRegistry?: unknown;
8
8
  pathBase?: string;
9
+ "data-preview-site-chrome-surface"?: string;
9
10
  [key: string]: unknown;
10
11
  }>;
11
12
  /**
@@ -2,6 +2,7 @@ import React from "react";
2
2
  type HeaderSectionNodeProps = React.PropsWithChildren<{
3
3
  blockId?: string | null;
4
4
  className?: string;
5
+ "data-preview-site-chrome-surface"?: string;
5
6
  [key: string]: unknown;
6
7
  }>;
7
8
  /**
@@ -153,6 +153,8 @@ export declare function getSupabaseUrl(): string;
153
153
  export declare function getSiteId(): string | undefined;
154
154
  export declare function resolveVideoPosterUrl(value: Media, context?: ResolveImageUrlContext | null): string | undefined;
155
155
  export declare function resolveMediaWithContext<TMedia extends Media>(value: TMedia, context?: ResolveImageUrlContext | null): TMedia;
156
+ export type MediaImageLoading = NonNullable<React.ImgHTMLAttributes<HTMLImageElement>['loading']>;
157
+ export type MediaImageFetchPriority = NonNullable<React.ImgHTMLAttributes<HTMLImageElement>['fetchPriority']>;
156
158
  export type MediaNodeProps = {
157
159
  value?: Media | null;
158
160
  className?: string;
@@ -160,6 +162,10 @@ export type MediaNodeProps = {
160
162
  children?: React.ReactNode;
161
163
  /** Video playback mode. Background video is decorative, muted, looping, and control-free. */
162
164
  videoPlayback?: VideoPlaybackMode;
165
+ /** Browser image loading hint. Defaults to lazy for non-priority media. */
166
+ loading?: MediaImageLoading;
167
+ /** Browser image fetch priority hint for LCP-critical media. */
168
+ fetchPriority?: MediaImageFetchPriority;
163
169
  /** Image size options. Defaults to ImagePresets.full (1920px) */
164
170
  size?: ImageOptions;
165
171
  /**
@@ -5,6 +5,7 @@
5
5
  * This catches empty required fields and other validation errors that were allowed
6
6
  * during editing (draft mode) but must be fixed before publishing.
7
7
  */
8
+ import type { FieldValidationDescriptor } from '../../../blocks/src/index';
8
9
  import type { EditorBlockId } from '../../../core/src/index';
9
10
  import type { EditorUiStoreInstance } from '../ui/editorUiStore';
10
11
  /**
@@ -17,6 +18,10 @@ export type BlockValidationError = {
17
18
  blockKind: string;
18
19
  /** The path to the invalid field (e.g., "title", "items.0.label") */
19
20
  fieldPath: string;
21
+ /** Manifest-derived metadata for the invalid field, when the path resolves to one */
22
+ fieldDescriptor: FieldValidationDescriptor | null;
23
+ /** Whether the field can be directly focused in the editor sidebar */
24
+ isFieldVisibleInSidebar: boolean;
20
25
  /** Human-readable label for the field */
21
26
  fieldLabel: string;
22
27
  /** The validation error message */
@@ -1,6 +1,16 @@
1
1
  import { default as React, type ReactNode } from 'react';
2
2
  export type SiteChromeEditableSurfaceKind = 'header' | 'footer';
3
- export declare function SiteChromeEditableSurface({ surface, children, }: {
3
+ type SiteChromeEditableSurfaceProps = Readonly<{
4
4
  surface: SiteChromeEditableSurfaceKind;
5
5
  children: ReactNode;
6
- }): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
6
+ /**
7
+ * Decorate a single custom React component root instead of wrapping it.
8
+ *
9
+ * Only use this when the component is known to forward className,
10
+ * data attributes, and children to its actual chrome root; otherwise the
11
+ * customize button and preview metadata can be swallowed by the component.
12
+ */
13
+ preserveSingleComponentRoot?: boolean;
14
+ }>;
15
+ export declare function SiteChromeEditableSurface({ surface, children, preserveSingleComponentRoot, }: SiteChromeEditableSurfaceProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
16
+ export {};
@@ -456,6 +456,7 @@ export type EntriesResponse<TContent = Record<string, unknown>> = {
456
456
  entries: ContentEntryListItem<TContent>[];
457
457
  meta?: ListPublishedEntriesMeta;
458
458
  contentType?: PublicContentTypeMeta | null;
459
+ mediaAssets?: SdkRuntimeMediaAsset[];
459
460
  };
460
461
  export interface FormRecord {
461
462
  id: string;
@@ -58,7 +58,7 @@ export type LayoutProps = {
58
58
  * the strict `@riverbankcms/sdk/rendering/server` surface stays bootstrap-free.
59
59
  * If a custom host renders hydratable CMS islands through the strict server
60
60
  * surface, mount `BlocksIslandsHydrator` from
61
- * `@riverbankcms/sdk/rendering/client` explicitly.
61
+ * `@riverbankcms/sdk/rendering/islands` explicitly.
62
62
  *
63
63
  * @example With pre-fetched site data (recommended)
64
64
  * ```tsx
@@ -75,7 +75,7 @@ export type LayoutProps = {
75
75
  * @example With strict server rendering
76
76
  * ```tsx
77
77
  * import { Layout, Page } from '@riverbankcms/sdk/rendering/server';
78
- * import { BlocksIslandsHydrator } from '@riverbankcms/sdk/rendering/client';
78
+ * import { BlocksIslandsHydrator } from '@riverbankcms/sdk/rendering/islands';
79
79
  *
80
80
  * const site = await client.getSite({ slug: 'my-site' });
81
81
  *
@@ -0,0 +1,2 @@
1
+ export declare function enhanceDeferredVideoEmbeds(root?: ParentNode): void;
2
+ export declare function resetDeferredVideoEmbedEnhancementForTests(): void;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"accordion">;
2
3
  export declare const enhance: IslandEnhancer<'accordion'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"booking-form">;
2
3
  export declare const enhance: IslandEnhancer<'booking-form'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"carousel">;
2
3
  export declare const enhance: IslandEnhancer<'carousel'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"cart">;
2
3
  export declare const enhance: IslandEnhancer<'cart'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"checkout">;
2
3
  export declare const enhance: IslandEnhancer<'checkout'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"course-registration">;
2
3
  export declare const enhance: IslandEnhancer<'course-registration'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"event-calendar">;
2
3
  export declare const enhance: IslandEnhancer<'event-calendar'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"event-combined">;
2
3
  export declare const enhance: IslandEnhancer<'event-combined'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"event-details">;
2
3
  export declare const enhance: IslandEnhancer<'event-details'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"event-listing">;
2
3
  export declare const enhance: IslandEnhancer<'event-listing'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"event-registration">;
2
3
  export declare const enhance: IslandEnhancer<'event-registration'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"form">;
2
3
  export declare const enhance: IslandEnhancer<'form'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"headerSection">;
2
3
  export declare const enhance: IslandEnhancer<'headerSection'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"location-map">;
2
3
  export declare const enhance: IslandEnhancer<'location-map'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"newsletter-form">;
2
3
  export declare const enhance: IslandEnhancer<'newsletter-form'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"product-detail">;
2
3
  export declare const enhance: IslandEnhancer<'product-detail'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"product-list">;
2
3
  export declare const enhance: IslandEnhancer<'product-list'>;
@@ -1,2 +1,3 @@
1
1
  import type { IslandEnhancer } from '../types';
2
+ export declare const decode: import("../types").IslandPropsDecoder<"shop">;
2
3
  export declare const enhance: IslandEnhancer<'shop'>;
@@ -1,8 +1,8 @@
1
- import type { IslandEnhancerLoaders } from './types';
1
+ import type { IslandEnhancerOverrideLoaders } from './types';
2
2
  type HydrateOptions = {
3
3
  root?: ParentNode;
4
4
  onError?: (error: unknown) => void;
5
- loaders?: Partial<IslandEnhancerLoaders>;
5
+ loaders?: Partial<IslandEnhancerOverrideLoaders>;
6
6
  maxRetries?: number;
7
7
  };
8
8
  export declare function hydrateBlocksIslands(options?: HydrateOptions): void;
@@ -0,0 +1,7 @@
1
+ import { type DecodeIssue } from '../../../../blocks/src/contracts/index';
2
+ import type { IslandKind, IslandPropsDecoder } from './types';
3
+ export declare class IslandPropsDecodeError extends Error {
4
+ readonly issues: readonly DecodeIssue[];
5
+ constructor(kind: IslandKind, issues: readonly DecodeIssue[]);
6
+ }
7
+ export declare function defineIslandPropsDecoder<K extends IslandKind>(kind: K): IslandPropsDecoder<K>;
@@ -380,9 +380,18 @@ export type IslandPropsMap = {
380
380
  export type IslandEnhancer<K extends IslandKind = IslandKind> = {
381
381
  bivarianceHack(root: HTMLElement, props: IslandPropsMap[K]): void | (() => void) | Promise<void | (() => void)>;
382
382
  }['bivarianceHack'];
383
+ export type IslandPropsDecoder<K extends IslandKind = IslandKind> = (input: unknown) => IslandPropsMap[K];
384
+ export type IslandRuntimeModule<K extends IslandKind = IslandKind> = {
385
+ decode: IslandPropsDecoder<K>;
386
+ enhance: IslandEnhancer<K>;
387
+ };
383
388
  export type IslandEnhancerModule<K extends IslandKind = IslandKind> = {
389
+ decode?: IslandPropsDecoder<K>;
384
390
  enhance: IslandEnhancer<K>;
385
391
  };
386
392
  export type IslandEnhancerLoaders = {
393
+ [K in IslandKind]: () => Promise<IslandRuntimeModule<K>>;
394
+ };
395
+ export type IslandEnhancerOverrideLoaders = {
387
396
  [K in IslandKind]: () => Promise<IslandEnhancerModule<K>>;
388
397
  };
@@ -8,3 +8,6 @@ export { Layout } from './components/Layout';
8
8
  export type { LayoutProps, HeaderData, FooterData } from './components/Layout';
9
9
  export { Block } from './components/Block.server';
10
10
  export type { BlockProps } from './components/Block.server';
11
+ export { defineLazyBlockOverride } from './overrides';
12
+ export { resolveBlockOverridesForPage } from './overrideResolution';
13
+ export type { BlockOverrideComponent, BlockOverrideProps, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, } from './overrides';
@@ -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.72.0";
11
+ export declare const SDK_VERSION = "0.75.0";
@@ -3,9 +3,9 @@ import { z } from 'zod';
3
3
  * Accordion icon styles for expand/collapse indicators
4
4
  */
5
5
  export declare const accordionIconSchema: z.ZodEnum<{
6
+ caret: "caret";
6
7
  "plus-minus": "plus-minus";
7
8
  chevron: "chevron";
8
- caret: "caret";
9
9
  arrow: "arrow";
10
10
  "circle-plus-minus": "circle-plus-minus";
11
11
  }>;
@@ -46,8 +46,8 @@ export declare const accordionSystemSchema: z.ZodObject<{
46
46
  elevation: z.ZodEnum<{
47
47
  medium: "medium";
48
48
  none: "none";
49
- low: "low";
50
49
  high: "high";
50
+ low: "low";
51
51
  }>;
52
52
  softness: z.ZodNullable<z.ZodEnum<{
53
53
  soft: "soft";
@@ -61,9 +61,9 @@ export declare const accordionSystemSchema: z.ZodObject<{
61
61
  }, z.core.$strip>>;
62
62
  icon: z.ZodObject<{
63
63
  style: z.ZodEnum<{
64
+ caret: "caret";
64
65
  "plus-minus": "plus-minus";
65
66
  chevron: "chevron";
66
- caret: "caret";
67
67
  arrow: "arrow";
68
68
  "circle-plus-minus": "circle-plus-minus";
69
69
  }>;
@@ -62,14 +62,14 @@ export declare const buttonPersonalitySchema: z.ZodObject<{
62
62
  shadow: z.ZodEnum<{
63
63
  medium: "medium";
64
64
  none: "none";
65
- low: "low";
66
65
  high: "high";
66
+ low: "low";
67
67
  }>;
68
68
  textTransform: z.ZodEnum<{
69
69
  none: "none";
70
- uppercase: "uppercase";
71
- lowercase: "lowercase";
72
70
  capitalize: "capitalize";
71
+ lowercase: "lowercase";
72
+ uppercase: "uppercase";
73
73
  }>;
74
74
  fontWeight: z.ZodUnion<readonly [z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>]>;
75
75
  borderWidth: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
@@ -79,9 +79,9 @@ export declare const buttonPersonalitySchema: z.ZodObject<{
79
79
  }>>;
80
80
  fontSize: z.ZodOptional<z.ZodString>;
81
81
  letterSpacing: z.ZodOptional<z.ZodEnum<{
82
- tight: "tight";
83
82
  normal: "normal";
84
83
  loose: "loose";
84
+ tight: "tight";
85
85
  }>>;
86
86
  italic: z.ZodOptional<z.ZodBoolean>;
87
87
  paddingPreset: z.ZodOptional<z.ZodEnum<{
@@ -98,8 +98,8 @@ export declare const buttonPersonalitySchema: z.ZodObject<{
98
98
  hoverColor: z.ZodEnum<{
99
99
  none: "none";
100
100
  token: "token";
101
- brighten: "brighten";
102
101
  darken: "darken";
102
+ brighten: "brighten";
103
103
  saturate: "saturate";
104
104
  }>;
105
105
  hoverColorToken: z.ZodOptional<z.ZodString>;
@@ -111,8 +111,8 @@ export declare const buttonPersonalitySchema: z.ZodObject<{
111
111
  gradientAngle: z.ZodOptional<z.ZodNumber>;
112
112
  gradientSharpness: z.ZodOptional<z.ZodEnum<{
113
113
  medium: "medium";
114
- hard: "hard";
115
114
  smooth: "smooth";
115
+ hard: "hard";
116
116
  }>>;
117
117
  }, z.core.$strip>;
118
118
  variants: z.ZodArray<z.ZodObject<{
@@ -145,8 +145,8 @@ export declare const buttonPersonalitySchema: z.ZodObject<{
145
145
  elevation: z.ZodEnum<{
146
146
  medium: "medium";
147
147
  none: "none";
148
- low: "low";
149
148
  high: "high";
149
+ low: "low";
150
150
  }>;
151
151
  softness: z.ZodNullable<z.ZodEnum<{
152
152
  soft: "soft";