@riverbankcms/sdk 0.101.0 → 0.103.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 (123) hide show
  1. package/README.md +10 -2
  2. package/dist/{PreviewEditorSidebar-DBpy0KTh.mjs → PreviewEditorSidebar-DkNpCPja.mjs} +430 -74
  3. package/dist/{PreviewEditorUI-Fg6I2R2T.mjs → PreviewEditorUI-DeNKtqk3.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BICQLAUF.mjs → PreviewQueryProvider-ZF6TXq5Q.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DFQP-Q53.mjs → SdkPreviewModeRuntime-5bCsXK2y.mjs} +694 -329
  6. package/dist/{SiteChromeCustomizeContext-GwZc89KN.mjs → SiteChromeCustomizeContext-CO1sTK_W.mjs} +538 -69
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +298 -298
  8. package/dist/_dts/ai/src/designer/rfc6902.d.ts +57 -1
  9. package/dist/_dts/ai/src/designer/themePatch.d.ts +16 -6
  10. package/dist/_dts/api/src/bookingVerticals.d.ts +53 -1
  11. package/dist/_dts/api/src/index.d.ts +1 -1
  12. package/dist/_dts/api/src/navigation/contracts.d.ts +6 -6
  13. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -0
  15. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -1
  16. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  17. package/dist/_dts/blocks/src/index.d.ts +1 -1
  18. package/dist/_dts/blocks/src/server.d.ts +1 -1
  19. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +7 -7
  20. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
  21. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +14 -14
  22. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +5 -5
  23. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +227 -227
  24. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  27. package/dist/_dts/blocks/src/system/inlineText.d.ts +2 -2
  28. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +177 -177
  29. package/dist/_dts/blocks/src/system/node/schema.d.ts +1 -1
  30. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/runtime/nodes/layout.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -7
  33. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  34. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  35. package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
  36. package/dist/_dts/core/src/branded.d.ts +4 -0
  37. package/dist/_dts/core/src/person-records.d.ts +6 -1
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +154 -18
  39. package/dist/_dts/db/src/schemas/forms.d.ts +15 -15
  40. package/dist/_dts/media-core/src/identifiers.d.ts +14 -1
  41. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  42. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +3 -1
  43. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  44. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -1
  45. package/dist/_dts/preview-next/src/client/preview/CustomizeColorTokenPicker.d.ts +27 -0
  46. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  47. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +2 -1
  48. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +10 -2
  49. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +43 -7
  50. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +1 -1
  51. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +16 -1
  52. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +3 -2
  53. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -4
  54. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
  55. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +4 -2
  56. package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
  57. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  58. package/dist/_dts/sdk/src/contracts/page.d.ts +2 -0
  59. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +10 -10
  60. package/dist/_dts/sdk/src/next/revalidate.d.ts +14 -1
  61. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -4
  62. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -1
  63. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  64. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -4
  65. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +1 -0
  66. package/dist/_dts/sdk/src/version.d.ts +1 -1
  67. package/dist/_dts/site-commands/src/commands.d.ts +19 -19
  68. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  69. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +3 -3
  70. package/dist/_dts/theme-core/src/buttons/types.d.ts +7 -7
  71. package/dist/_dts/theme-core/src/cards/types.d.ts +6 -6
  72. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  73. package/dist/_dts/theme-core/src/inputs/types.d.ts +4 -4
  74. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +150 -144
  75. package/dist/_dts/theme-core/src/navigation/types.d.ts +6 -6
  76. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +5 -5
  77. package/dist/_dts/theme-core/src/schema.d.ts +199 -169
  78. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  79. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  80. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +28 -26
  81. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  82. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +4 -4
  83. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  84. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +9 -2
  85. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +3 -3
  86. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +50 -2
  87. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +77 -0
  88. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +44 -0
  89. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  90. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
  92. package/dist/_dts/ui/src/badge.d.ts +1 -1
  93. package/dist/_dts/ui/src/button.d.ts +1 -1
  94. package/dist/_dts/ui/src/card.d.ts +1 -1
  95. package/dist/_dts/ui/src/toggle.d.ts +2 -2
  96. package/dist/cli/index.mjs +58 -21
  97. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +9 -1
  98. package/dist/client/client.mjs +379 -83
  99. package/dist/client/hooks.mjs +27 -6
  100. package/dist/client/rendering/client.mjs +46 -17
  101. package/dist/client/rendering.mjs +378 -82
  102. package/dist/preview-next/before-render.mjs +1 -1
  103. package/dist/preview-next/client/runtime.mjs +4 -4
  104. package/dist/{previewAuthStore-Da74OL0X.mjs → previewAuthStore-ByPPZqmp.mjs} +1 -0
  105. package/dist/{sdk-runtime-CP6Kwalv.mjs → sdk-runtime-C8whifOy.mjs} +2 -2
  106. package/dist/{separator-BVk7GvGN.mjs → separator-CM2C5Axs.mjs} +1 -1
  107. package/dist/server/components.mjs +357 -77
  108. package/dist/server/config-validation.mjs +26 -6
  109. package/dist/server/config.mjs +26 -6
  110. package/dist/server/data.mjs +26 -6
  111. package/dist/server/index.mjs +2 -2
  112. package/dist/server/next/revalidate.mjs +31 -1
  113. package/dist/server/next.mjs +361 -78
  114. package/dist/server/page-converter.mjs +19 -5
  115. package/dist/server/prebuild.mjs +1 -1
  116. package/dist/server/rendering/server.mjs +359 -77
  117. package/dist/server/rendering.mjs +359 -77
  118. package/dist/server/routing.mjs +40 -9
  119. package/dist/server/server.mjs +29 -7
  120. package/dist/server/theme-bridge.mjs +158 -36
  121. package/dist/server/theme.mjs +3 -0
  122. package/dist/styles/index.css +123 -30
  123. package/package.json +1 -1
@@ -4,7 +4,7 @@ import { surfaceVariants } from './surface';
4
4
  export type CardVariant = VariantProps<typeof surfaceVariants>['variant'];
5
5
  export type CardRadius = VariantProps<typeof surfaceVariants>['radius'];
6
6
  declare const cardLayoutVariants: (props?: ({
7
- size?: "none" | "compact" | "default" | "responsive" | null | undefined;
7
+ size?: "default" | "none" | "compact" | "responsive" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export type CardSize = VariantProps<typeof cardLayoutVariants>['size'];
10
10
  export type CardProps = React.ComponentProps<'div'> & {
@@ -2,11 +2,11 @@ import * as React from "react";
2
2
  import * as TogglePrimitive from "@radix-ui/react-toggle";
3
3
  import { type VariantProps } from "class-variance-authority";
4
4
  declare const toggleVariants: (props?: ({
5
- variant?: "outline" | "default" | null | undefined;
5
+ variant?: "default" | "outline" | null | undefined;
6
6
  size?: "default" | "sm" | "lg" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  declare const Toggle: React.ForwardRefExoticComponent<Omit<TogglePrimitive.ToggleProps & React.RefAttributes<HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
9
- variant?: "outline" | "default" | null | undefined;
9
+ variant?: "default" | "outline" | null | undefined;
10
10
  size?: "default" | "sm" | "lg" | null | undefined;
11
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLButtonElement>>;
12
12
  export { Toggle, toggleVariants };
@@ -7459,7 +7459,9 @@ var DEFAULT_LOCALE, FALLBACK_TIMEZONE, DEFAULT_BOOKING_DATE_TIME_FORMAT, LOCAL_D
7459
7459
  };
7460
7460
  LOCAL_DATE_PATTERN = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
7461
7461
  }));
7462
- var init_person_records = __esmMin((() => {}));
7462
+ var init_person_records = __esmMin((() => {
7463
+ init_result();
7464
+ }));
7463
7465
  var init_rectification = __esmMin((() => {}));
7464
7466
  //#endregion
7465
7467
  //#region ../core/src/location.ts
@@ -8178,15 +8180,19 @@ function slugifyMediaIdentifier(value) {
8178
8180
  function buildMediaIdentifierFromFilename(filename) {
8179
8181
  return slugifyMediaIdentifier(stripFileExtension(filename));
8180
8182
  }
8183
+ function unsafeAsMediaIdentifier(value) {
8184
+ return value;
8185
+ }
8181
8186
  function resolveMediaIdentifier(base, existing) {
8182
8187
  const seed = slugifyMediaIdentifier(base) || FALLBACK_IDENTIFIER;
8183
- if (!existing.has(seed)) return seed;
8188
+ if (!existing.has(seed)) return unsafeAsMediaIdentifier(seed);
8184
8189
  let index = 1;
8185
8190
  while (existing.has(`${seed}-${index}`)) index += 1;
8186
- return `${seed}-${index}`;
8191
+ return unsafeAsMediaIdentifier(`${seed}-${index}`);
8187
8192
  }
8188
8193
  var FALLBACK_IDENTIFIER, extensionPattern;
8189
8194
  var init_identifiers = __esmMin((() => {
8195
+ init_src$4();
8190
8196
  FALLBACK_IDENTIFIER = "media";
8191
8197
  extensionPattern = /\.[^/.]+$/;
8192
8198
  }));
@@ -18192,6 +18198,7 @@ var init_rawStyleFields = __esmMin((() => {
18192
18198
  "_sectionStyles",
18193
18199
  "_containerStyles",
18194
18200
  "_cardStyles",
18201
+ "_transitionStyles",
18195
18202
  "styleGroup"
18196
18203
  ];
18197
18204
  themeV2BlockSpecificRawStyleFieldNames = [
@@ -18956,6 +18963,8 @@ var init_schema = __esmMin((() => {
18956
18963
  navStyle: headerNavStyle,
18957
18964
  navColor: themeColorTokenSchema.nullable().optional(),
18958
18965
  navWeight: navFontWeight.default("medium"),
18966
+ navTypography: z$1.enum(["body", "heading"]).optional(),
18967
+ navTextSize: navLinkStyleSchema.shape.textSize,
18959
18968
  container: headerContainerSchema,
18960
18969
  border: headerBorderSchema,
18961
18970
  shadow: componentShadowSchema.optional(),
@@ -20620,9 +20629,22 @@ var init_backgroundAppearance = __esmMin((() => {
20620
20629
  }));
20621
20630
  var init_compositionBudget = __esmMin((() => {
20622
20631
  init_types$17();
20623
- })), init_schemaVersionedJson = __esmMin((() => {})), noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
20632
+ }));
20633
+ var init_schemaVersionedJson = __esmMin((() => {}));
20634
+ //#endregion
20635
+ //#region ../theme-core/src/site-styles/sectionTransitions.ts
20636
+ function boundaryRuntimeMetrics(family, size, heightExpression) {
20637
+ return {
20638
+ family,
20639
+ size,
20640
+ heightCss: heightExpression.includes(" ") ? `calc(${heightExpression})` : heightExpression,
20641
+ reserveCss: `calc((${heightExpression}) / 2)`
20642
+ };
20643
+ }
20644
+ var noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
20624
20645
  var init_sectionTransitions = __esmMin((() => {
20625
20646
  init_types$17();
20647
+ boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
20626
20648
  noneBoundaryOption = {
20627
20649
  id: asBoundaryOptionId("break:none"),
20628
20650
  label: "None",
@@ -20687,12 +20709,12 @@ function validateUniquePageDesignPins(intent, ctx) {
20687
20709
  label: "block Look pin"
20688
20710
  });
20689
20711
  addDuplicateStringIssues(ctx, {
20690
- values: intent.boundaryPins.map((pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)),
20712
+ values: intent.boundaryPins.map((pin) => boundaryKey$1(pin.previousBlockId, pin.nextBlockId)),
20691
20713
  path: ["boundaryPins"],
20692
20714
  label: "boundary pin"
20693
20715
  });
20694
20716
  }
20695
- function boundaryKey(previousBlockId, nextBlockId) {
20717
+ function boundaryKey$1(previousBlockId, nextBlockId) {
20696
20718
  return makeBoundaryId(previousBlockId, nextBlockId);
20697
20719
  }
20698
20720
  var pageDesignUserPinnedAppearanceChoiceSchema, pageDesignUserPinnedBoundaryChoiceSchema, pageDesignBoundaryTreatmentSchema, pageDesignUserPinnedBoundaryTreatmentChoiceSchema, pageDesignBlockLookPinSchema, pageDesignBoundaryPinSchema, legacyPageDesignBoundaryPinSchema;
@@ -21140,7 +21162,7 @@ function asHeaderStyleId(value) {
21140
21162
  * optional nested styling fields that would otherwise leak from another Look.
21141
21163
  */
21142
21164
  function baseHeader(theme) {
21143
- const { navLinkStyle: _navLinkStyle, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
21165
+ const { navLinkStyle: _navLinkStyle, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
21144
21166
  return {
21145
21167
  ...header,
21146
21168
  navContainer: {
@@ -21616,12 +21638,12 @@ var init_headerLooks = __esmMin((() => {
21616
21638
  },
21617
21639
  {
21618
21640
  id: asHeaderStyleId("fine-line"),
21619
- label: "Fine Line",
21620
- description: "Light surface with a crisp lower rule and underline hover.",
21641
+ label: "Seamless",
21642
+ description: "Borderless surface with underline hover for a quieter page transition.",
21621
21643
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
21622
21644
  navInteraction: "underline-grow",
21623
- surface: "bordered",
21624
- defaultDepth: "line",
21645
+ surface: "neutral",
21646
+ defaultDepth: "none",
21625
21647
  navTypography: "plain",
21626
21648
  moods: [
21627
21649
  "calm",
@@ -23291,6 +23313,7 @@ var init_runtimeCompiler = __esmMin((() => {
23291
23313
  init_designState();
23292
23314
  init_types$17();
23293
23315
  init_accessibleSurfaces();
23316
+ init_sectionTransitions();
23294
23317
  defaultDesignRuntimeRules = defineDesignRuntimeRules({
23295
23318
  sectionSurfaces: {
23296
23319
  base: {},
@@ -25088,13 +25111,15 @@ function toSiteChromeBackgroundColorTokens(tokenNames) {
25088
25111
  return token ? [token] : [];
25089
25112
  });
25090
25113
  }
25091
- var siteChromeBackgroundColorTokens, quickSiteChromeBackgroundColorTokens, init_siteChromeBackgrounds = __esmMin((() => {
25114
+ var siteChromeBackgroundColorTokens, quickSiteChromeBackgroundColorTokens;
25115
+ var init_siteChromeBackgrounds = __esmMin((() => {
25092
25116
  init_backgroundAppearance();
25093
25117
  init_rawStyleFields();
25094
25118
  siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
25095
25119
  quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
25096
25120
  siteChromeBackgroundColorTokens.filter((token) => !quickSiteChromeBackgroundColorTokens.includes(token));
25097
- })), themeTokenRecipeOptions;
25121
+ }));
25122
+ var init_siteChromeNavPreferences = __esmMin((() => {})), themeTokenRecipeOptions;
25098
25123
  var init_tokenRecipes = __esmMin((() => {
25099
25124
  themeTokenRecipeOptions = {
25100
25125
  palette: [
@@ -25179,6 +25204,7 @@ var init_site_styles = __esmMin((() => {
25179
25204
  init_runtimeCompiler();
25180
25205
  init_sectionTransitions();
25181
25206
  init_siteChromeBackgrounds();
25207
+ init_siteChromeNavPreferences();
25182
25208
  init_siteStyleThemeCompiler();
25183
25209
  init_siteStyleBlockPolicies();
25184
25210
  init_sourceCatalogs();
@@ -41917,6 +41943,7 @@ const eventListingBlockDefinition = {
41917
41943
  } },
41918
41944
  seeAllUrl: { $bind: {
41919
41945
  from: "content.seeAllUrl",
41946
+ fallback: "",
41920
41947
  transforms: [{ id: "links.resolve" }]
41921
41948
  } },
41922
41949
  loadMoreText: { $bind: {
@@ -42310,6 +42337,7 @@ const eventCalendarLayout = [styledSection({
42310
42337
  } },
42311
42338
  seeAllUrl: { $bind: {
42312
42339
  from: "content.seeAllUrl",
42340
+ fallback: "",
42313
42341
  transforms: [{ id: "links.resolve" }]
42314
42342
  } },
42315
42343
  loadMoreText: { $bind: {
@@ -50005,15 +50033,15 @@ function Grid({ as: Comp = "div", cols = {
50005
50033
  }
50006
50034
  //#endregion
50007
50035
  //#region ../blocks/src/system/runtime/nodes/layout.tsx
50008
- const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section, {
50036
+ const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section, {
50009
50037
  ...props,
50010
50038
  allowOverflow
50011
50039
  });
50012
- const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
50013
- const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
50014
- const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
50015
- const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
50016
- const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
50040
+ const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
50041
+ const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
50042
+ const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
50043
+ const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
50044
+ const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
50017
50045
  //#endregion
50018
50046
  //#region ../path-utils/src/index.ts
50019
50047
  const PATH_SEPARATOR_REGEX$1 = /\./g;
@@ -58359,6 +58387,7 @@ function applyTransformsAndFallback(value, binding, context) {
58359
58387
  viewModel: context.viewModel
58360
58388
  }, transforms);
58361
58389
  if (binding.transforms && binding.transforms.length > 0 && transformed === null) {
58390
+ if (binding.fallback !== void 0) return binding.fallback;
58362
58391
  if (process.env.NODE_ENV === "development") console.warn("[block-system] Transform returned null for binding", {
58363
58392
  bindingFrom: binding.from,
58364
58393
  transforms: binding.transforms?.map((t) => t.id)
@@ -59449,6 +59478,7 @@ var init_navDropdownSizing = __esmMin((() => {
59449
59478
  //#endregion
59450
59479
  //#region ../theme-core/src/header/generateHeaderCss.ts
59451
59480
  init_resolver$1();
59481
+ init_siteChromeNavPreferences();
59452
59482
  init_shared$5();
59453
59483
  init_breakpoints();
59454
59484
  init_navDropdownSizing();
@@ -59458,6 +59488,7 @@ init_resolver$1();
59458
59488
  //#endregion
59459
59489
  //#region ../theme-core/src/layout/generateLayoutCss.ts
59460
59490
  init_breakpoints();
59491
+ init_sectionTransitions();
59461
59492
  svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V46C130 55 260 24 420 30C590 36 690 62 860 42C1035 21 1160 47 1305 36C1365 31 1415 33 1440 38V72H0Z' fill='white'/></svg>");
59462
59493
  svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V42C120 24 240 24 360 42C480 60 600 60 720 42C840 24 960 24 1080 42C1200 60 1320 60 1440 42V72H0Z' fill='white'/></svg>");
59463
59494
  svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V43C180 32 300 32 480 43C660 54 780 54 960 43C1140 32 1260 32 1440 43V72H0Z' fill='white'/></svg>");
@@ -61350,7 +61381,7 @@ z$1.object({ acceptExtraSiteCharge: z$1.boolean().optional() });
61350
61381
  //#region ../surfaces/src/index.ts
61351
61382
  const SURFACE_IDS = ["core", "macadamia"];
61352
61383
  const DEFAULT_SURFACE_ID = "core";
61353
- SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
61384
+ [...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
61354
61385
  //#endregion
61355
61386
  //#region ../api/src/url.ts
61356
61387
  /**
@@ -61899,6 +61930,7 @@ const VERTICAL_IDS = [
61899
61930
  "training_provider",
61900
61931
  "retreat_centre",
61901
61932
  "music_school",
61933
+ "voice_singing",
61902
61934
  "performing_arts_school",
61903
61935
  "community_wellbeing",
61904
61936
  "venue_event_space"
@@ -61951,6 +61983,11 @@ const VERTICAL_BOOKING_PRESETS = [
61951
61983
  preset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
61952
61984
  preset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
61953
61985
  preset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
61986
+ preset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
61987
+ preset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
61988
+ preset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
61989
+ preset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
61990
+ preset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
61954
61991
  preset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
61955
61992
  preset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
61956
61993
  preset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
@@ -151442,7 +151479,7 @@ var SimpleCache = class {
151442
151479
  * 1. This constant
151443
151480
  * 2. The "version" field in package.json
151444
151481
  */
151445
- const SDK_VERSION = "0.101.0";
151482
+ const SDK_VERSION = "0.103.0";
151446
151483
  //#endregion
151447
151484
  //#region src/client/error.ts
151448
151485
  /**
@@ -80,8 +80,11 @@ Create `src/app/api/revalidate/route.ts`:
80
80
 
81
81
  ```ts
82
82
  import { createRevalidateHandler } from '@riverbankcms/sdk/next/revalidate'
83
+ import { getRiverbankClient } from '@/lib/riverbank-client'
83
84
 
84
- export const POST = createRevalidateHandler()
85
+ export const POST = createRevalidateHandler({
86
+ getClient: getRiverbankClient,
87
+ })
85
88
  ```
86
89
 
87
90
  The deployed site must have the CMS-generated webhook secret:
@@ -98,10 +101,13 @@ X-Riverbank-Signature: sha256=<hex HMAC-SHA256 digest>
98
101
 
99
102
  The digest is computed over the raw JSON body. The SDK handler rejects unsigned requests, plain hex signatures without the `sha256=` prefix, malformed digests, bad signatures, and invalid payloads. Malformed path entries are skipped and reported in the response metadata while valid tags and paths still revalidate.
100
103
 
104
+ Passing `getClient: getRiverbankClient` also clears the current process's SDK client response cache after valid webhooks. This is useful in single-process deployments, `next dev`, `next start`, and runtimes where the revalidation route and render path share the same module instance. On serverless platforms such as Vercel, `/api/revalidate` and page rendering can run in separate functions and many warm containers, so this process-local cache clear is best-effort only. Use Next tag/path revalidation as the cross-instance freshness layer, and disable or shorten SDK response caching for force-dynamic deployments that need immediate freshness across serverless instances.
105
+
101
106
  Riverbank includes a `dispatchId` in signed payloads and sends matching `X-Riverbank-Dispatch-Id` / `X-Riverbank-Correlation-Id` headers. To join CMS delivery logs with this site's deployment logs, use the optional callback metadata:
102
107
 
103
108
  ```ts
104
109
  export const POST = createRevalidateHandler({
110
+ getClient: getRiverbankClient,
105
111
  onRevalidate: (_payload, _items, metadata) => {
106
112
  console.info('Riverbank ISR revalidated', metadata)
107
113
  },
@@ -122,6 +128,8 @@ riverbankcms webhooks setup \
122
128
 
123
129
  The command keeps the CMS as the source of truth for the webhook secret. It creates or updates the endpoint, ensures the full SDK revalidation event list is subscribed, writes a newly generated one-time secret to `.env.local` when one is returned, and prints hosted-environment and deploy/test steps. Existing endpoint secrets are not returned or changed unless you pass `--rotate-secret`.
124
130
 
131
+ The deployed SDK site uses the returned one-time `RIVERBANK_WEBHOOK_SECRET`. The dashboard/CMS uses a separate `WEBHOOK_SIGNING_SECRET_KEYRING_JSON` environment variable to encrypt stored endpoint secrets; keep that keyring only in the dashboard environment.
132
+
125
133
  The same destination URL can also be configured from the Riverbank dashboard:
126
134
 
127
135
  ```text