@riverbankcms/sdk 0.72.0 → 0.74.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 (102) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-44T64SAR.mjs → PreviewEditorSidebar-5XL7M3OM.mjs} +2 -2
  3. package/dist/{PreviewEditorUI-4WKHZTXW.mjs → PreviewEditorUI-ZDFRDJID.mjs} +2 -2
  4. package/dist/SdkPreviewModeRuntime-CRYNDSPL.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +10 -10
  6. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +6 -6
  7. package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +15 -1
  8. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +11 -0
  9. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +13 -0
  10. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +6 -0
  11. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  12. package/dist/_dts/sdk/src/rendering/islands/enhancers/accordion.d.ts +1 -0
  13. package/dist/_dts/sdk/src/rendering/islands/enhancers/bookingForm.d.ts +1 -0
  14. package/dist/_dts/sdk/src/rendering/islands/enhancers/carousel.d.ts +1 -0
  15. package/dist/_dts/sdk/src/rendering/islands/enhancers/cart.d.ts +1 -0
  16. package/dist/_dts/sdk/src/rendering/islands/enhancers/checkout.d.ts +1 -0
  17. package/dist/_dts/sdk/src/rendering/islands/enhancers/courseRegistration.d.ts +1 -0
  18. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventCalendar.d.ts +1 -0
  19. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventCombined.d.ts +1 -0
  20. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventDetails.d.ts +1 -0
  21. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventListing.d.ts +1 -0
  22. package/dist/_dts/sdk/src/rendering/islands/enhancers/eventRegistration.d.ts +1 -0
  23. package/dist/_dts/sdk/src/rendering/islands/enhancers/form.d.ts +1 -0
  24. package/dist/_dts/sdk/src/rendering/islands/enhancers/headerSection.d.ts +1 -0
  25. package/dist/_dts/sdk/src/rendering/islands/enhancers/locationMap.d.ts +1 -0
  26. package/dist/_dts/sdk/src/rendering/islands/enhancers/newsletterForm.d.ts +1 -0
  27. package/dist/_dts/sdk/src/rendering/islands/enhancers/productDetail.d.ts +1 -0
  28. package/dist/_dts/sdk/src/rendering/islands/enhancers/productList.d.ts +1 -0
  29. package/dist/_dts/sdk/src/rendering/islands/enhancers/shop.d.ts +1 -0
  30. package/dist/_dts/sdk/src/rendering/islands/hydrateBlocksIslands.d.ts +2 -2
  31. package/dist/_dts/sdk/src/rendering/islands/propsDecoder.d.ts +7 -0
  32. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +9 -0
  33. package/dist/_dts/sdk/src/version.d.ts +1 -1
  34. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  35. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +7 -7
  36. package/dist/_dts/theme-core/src/buttons/types.d.ts +20 -20
  37. package/dist/_dts/theme-core/src/cards/types.d.ts +2 -2
  38. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  39. package/dist/_dts/theme-core/src/header/navDropdownSizing.d.ts +7 -0
  40. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  41. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  42. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -156
  43. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  44. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +4 -4
  45. package/dist/_dts/theme-core/src/schema.d.ts +178 -178
  46. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +2 -2
  47. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +8 -8
  48. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +5 -5
  49. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  50. package/dist/{chunk-3YNCQG5N.mjs → chunk-2MIWNFJM.mjs} +149 -15
  51. package/dist/{chunk-KWQPAJYS.mjs → chunk-CBD47MTM.mjs} +1 -1
  52. package/dist/{chunk-HV745JYE.mjs → chunk-CEQBBLMJ.mjs} +1 -1
  53. package/dist/{chunk-G4NLITC2.mjs → chunk-YY7K3QD2.mjs} +5 -5
  54. package/dist/cli/index.mjs +233 -203
  55. package/dist/client/accordion-ZZVXWV3N.mjs +120 -0
  56. package/dist/client/altcha-LIGLPZS5.mjs +2755 -0
  57. package/dist/client/bookingForm-4X77HKDS.mjs +34 -0
  58. package/dist/client/bookings.mjs +13 -0
  59. package/dist/client/carousel-25WK2H7G.mjs +46 -0
  60. package/dist/client/cart-JWD2VRFU.mjs +11 -0
  61. package/dist/client/checkout-V7KYGWL7.mjs +11 -0
  62. package/dist/client/chunk-5IYGMTUE.mjs +18614 -0
  63. package/dist/client/chunk-6VGXRE34.mjs +7617 -0
  64. package/dist/client/chunk-N7PBWBWQ.mjs +26 -0
  65. package/dist/client/chunk-PMAIXMAB.mjs +1960 -0
  66. package/dist/client/chunk-RKCFVIMS.mjs +26 -0
  67. package/dist/client/client.mjs +621 -379
  68. package/dist/client/courseRegistration-O6ZPK4YT.mjs +29 -0
  69. package/dist/client/eventCalendar-X6GIPYFM.mjs +29 -0
  70. package/dist/client/eventCombined-EZUOPM3G.mjs +26 -0
  71. package/dist/client/eventDetails-3WODIXET.mjs +14 -0
  72. package/dist/client/eventListing-HEFGAETC.mjs +29 -0
  73. package/dist/client/eventRegistration-3LCP2V3P.mjs +29 -0
  74. package/dist/client/form-AKXQMY6Z.mjs +85 -0
  75. package/dist/client/headerSection-5KHCMU6B.mjs +12 -0
  76. package/dist/client/hooks.mjs +42 -9
  77. package/dist/client/locationMap-7HIADW76.mjs +14 -0
  78. package/dist/client/newsletterForm-5N4YTMU3.mjs +60 -0
  79. package/dist/client/productDetail-IZUA7ZP3.mjs +11 -0
  80. package/dist/client/productList-KWIIJE6I.mjs +11 -0
  81. package/dist/client/rendering/client.mjs +1655 -6472
  82. package/dist/client/rendering/islands.mjs +40 -44031
  83. package/dist/client/rendering.mjs +2909 -2663
  84. package/dist/client/shop-XZQFRQWZ.mjs +13 -0
  85. package/dist/preview-next/client/runtime.mjs +3 -3
  86. package/dist/{sdk-runtime-NGDWSWOS.mjs → sdk-runtime-OHNONZ5U.mjs} +4 -4
  87. package/dist/server/components.mjs +64 -11
  88. package/dist/server/config-validation.mjs +42 -9
  89. package/dist/server/config.mjs +42 -9
  90. package/dist/server/data.mjs +42 -9
  91. package/dist/server/index.mjs +1 -1
  92. package/dist/server/next.mjs +65 -12
  93. package/dist/server/page-converter.mjs +29 -9
  94. package/dist/server/prebuild.mjs +1 -1
  95. package/dist/server/rendering/server.mjs +64 -11
  96. package/dist/server/rendering.mjs +64 -11
  97. package/dist/server/routing.mjs +50 -10
  98. package/dist/server/server.mjs +43 -10
  99. package/dist/server/theme-bridge.mjs +24 -0
  100. package/dist/styles/index.css +11 -0
  101. package/package.json +1 -1
  102. package/dist/SdkPreviewModeRuntime-FO6V7YVY.mjs +0 -8
@@ -9938,7 +9938,9 @@ function backgroundLayer(path, options = {}) {
9938
9938
  imageClassName,
9939
9939
  overlayClassName = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
9940
9940
  fallbackToken,
9941
- omitImageLayer = false
9941
+ omitImageLayer = false,
9942
+ imageLoading,
9943
+ imageFetchPriority
9942
9944
  } = options;
9943
9945
  const styleLayer = el("div", {
9944
9946
  className: styleClassName,
@@ -9954,11 +9956,14 @@ function backgroundLayer(path, options = {}) {
9954
9956
  }
9955
9957
  }
9956
9958
  });
9957
- const imageLayer = createBackgroundImageNode(path, imageClassName);
9959
+ const imageLayer = createBackgroundImageNode(path, imageClassName, {
9960
+ loading: imageLoading,
9961
+ fetchPriority: imageFetchPriority
9962
+ });
9958
9963
  const overlayLayer = createBackgroundOverlayNode(path, overlayClassName);
9959
9964
  return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
9960
9965
  }
9961
- function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10") {
9966
+ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
9962
9967
  const imagePath = `${path}.image`;
9963
9968
  return media(
9964
9969
  {
@@ -9979,7 +9984,9 @@ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-1
9979
9984
  transforms: [{ id: "background.resolveImageStyle" }]
9980
9985
  }
9981
9986
  },
9982
- videoPlayback: "background"
9987
+ videoPlayback: "background",
9988
+ ...options.loading ? { loading: options.loading } : {},
9989
+ ...options.fetchPriority ? { fetchPriority: options.fetchPriority } : {}
9983
9990
  },
9984
9991
  when(imagePath),
9985
9992
  bind(imagePath)
@@ -10176,12 +10183,16 @@ function styledSection(config) {
10176
10183
  bindFrom = "_sectionStyles",
10177
10184
  imageClassName = "rb-absolute rb-z-neg-10",
10178
10185
  renderBackgroundImage = true,
10186
+ backgroundImageLoading,
10187
+ backgroundImageFetchPriority,
10179
10188
  fullWidthPath
10180
10189
  } = config;
10181
10190
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
10182
10191
  imageClassName,
10183
10192
  fallbackToken: background,
10184
- omitImageLayer: !renderBackgroundImage
10193
+ omitImageLayer: !renderBackgroundImage,
10194
+ imageLoading: backgroundImageLoading,
10195
+ imageFetchPriority: backgroundImageFetchPriority
10185
10196
  });
10186
10197
  const childrenArray = Array.isArray(children) ? children : [children];
10187
10198
  return section(
@@ -10396,7 +10407,7 @@ function navRow(opts) {
10396
10407
  el(
10397
10408
  "div",
10398
10409
  {
10399
- className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-min-w-12rem rb-overflow-hidden",
10410
+ className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-overflow-hidden",
10400
10411
  id: dropdownMenuId
10401
10412
  },
10402
10413
  [dropdownLinks]
@@ -13971,6 +13982,10 @@ var heroCopyAndCta = composeFragments([
13971
13982
  { fragment: heroCopyFragment },
13972
13983
  { fragment: heroCtaRowFragment }
13973
13984
  ]);
13985
+ var heroPriorityMediaProps = {
13986
+ loading: "eager",
13987
+ fetchPriority: "high"
13988
+ };
13974
13989
  var heroContentNodes = heroCopyAndCta.layout;
13975
13990
  function heroContentCard(children, gap) {
13976
13991
  return styledContainer({
@@ -14033,7 +14048,8 @@ function heroSplitImagePane() {
14033
14048
  [
14034
14049
  media(
14035
14050
  {
14036
- className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover"
14051
+ className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover",
14052
+ ...heroPriorityMediaProps
14037
14053
  },
14038
14054
  when("_sectionStyles.background.image"),
14039
14055
  bind("_sectionStyles.background.image")
@@ -14044,13 +14060,17 @@ function heroSplitImagePane() {
14044
14060
  var classicLayout = styledSection({
14045
14061
  children: heroContainerStack(heroContentNodes, "md"),
14046
14062
  // styledContainer (rb-container) already provides horizontal padding
14047
- baseClass: ""
14063
+ baseClass: "",
14064
+ backgroundImageLoading: heroPriorityMediaProps.loading,
14065
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
14048
14066
  });
14049
14067
  var microLayout = styledSection({
14050
14068
  children: heroContainerStack(heroContentNodes, "sm"),
14051
14069
  // styledContainer (rb-container) already provides horizontal padding
14052
14070
  baseClass: "",
14053
- spacing: "compact"
14071
+ spacing: "compact",
14072
+ backgroundImageLoading: heroPriorityMediaProps.loading,
14073
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
14054
14074
  });
14055
14075
  function splitLayoutWith(children) {
14056
14076
  return styledSection({
@@ -21752,6 +21772,8 @@ var MediaNodeServer = ({
21752
21772
  className,
21753
21773
  style,
21754
21774
  videoPlayback = "inline",
21775
+ loading = "lazy",
21776
+ fetchPriority,
21755
21777
  size = ImagePresets.full,
21756
21778
  fieldPath,
21757
21779
  blockKind,
@@ -21788,7 +21810,8 @@ var MediaNodeServer = ({
21788
21810
  alt: value.alt ?? "",
21789
21811
  className,
21790
21812
  style: computedStyle,
21791
- loading: "lazy",
21813
+ loading,
21814
+ fetchPriority,
21792
21815
  decoding: "async"
21793
21816
  }
21794
21817
  );
@@ -29702,6 +29725,7 @@ var VideoEmbedNode = ({
29702
29725
  height: "100%",
29703
29726
  border: "none"
29704
29727
  },
29728
+ loading: "lazy",
29705
29729
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
29706
29730
  referrerPolicy: "no-referrer-when-downgrade",
29707
29731
  allowFullScreen: true
@@ -33124,6 +33148,10 @@ function getAbsoluteSegments(fromPath, context) {
33124
33148
  if (scoped?.basePathSegments && scoped.basePathSegments.length > 0) {
33125
33149
  return [...scoped.basePathSegments, ...rest];
33126
33150
  }
33151
+ const hasContentScope = context.scopes.some((entry) => entry.name === "content");
33152
+ if (hasContentScope && !(first in context.viewModel)) {
33153
+ return ["content", ...segments];
33154
+ }
33127
33155
  return void 0;
33128
33156
  }
33129
33157
  function readFromSource(source, segments) {
@@ -33772,7 +33800,7 @@ function makeDefaultBlockComponent(args) {
33772
33800
  pathBase,
33773
33801
  blockId,
33774
33802
  blockKind,
33775
- blockContent: content,
33803
+ blockContent: mergedContent,
33776
33804
  blockBindings,
33777
33805
  editableRouteMetadataFieldIds,
33778
33806
  fragmentRegistry: fragmentRegistry2
@@ -34808,6 +34836,19 @@ function getNavLinkPreset(presetId) {
34808
34836
  }
34809
34837
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
34810
34838
 
34839
+ // ../theme-core/src/header/navDropdownSizing.ts
34840
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
34841
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
34842
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
34843
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
34844
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
34845
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
34846
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
34847
+ `width: max-content;`,
34848
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
34849
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
34850
+ ];
34851
+
34811
34852
  // ../theme-core/src/header/generateHeaderCss.ts
34812
34853
  var HEADER_BLUR = "blur(12px)";
34813
34854
  var FLOATING_BLUR = "blur(16px)";
@@ -35082,6 +35123,7 @@ function generateDropdownContainerStyles(header, themeId, tokens) {
35082
35123
  const selector = `:where([data-theme-scope="${themeId}"]) .nav-dropdown-menu`;
35083
35124
  const rules = [];
35084
35125
  const dropdownStyle = header.dropdownStyle;
35126
+ rules.push(...NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES);
35085
35127
  const bgToken = dropdownStyle?.background ?? "surface";
35086
35128
  rules.push(`background-color: ${tokens.getColor(bgToken)};`);
35087
35129
  const textToken = dropdownStyle?.textColor ?? "text";
@@ -45149,6 +45191,17 @@ var containerResponsiveThemeCss = `/*
45149
45191
  * =============================================================================
45150
45192
  */
45151
45193
 
45194
+ :where(.theme-scope) .nav-dropdown-menu {
45195
+ /*
45196
+ * Keep these rails in sync with header/navDropdownSizing.ts.
45197
+ * The JS placement gutter is 16px, matching the 1rem per-side gutter in calc(100vw - 2rem).
45198
+ */
45199
+ min-width: 12rem;
45200
+ width: max-content;
45201
+ max-width: min(22rem, calc(100vw - 2rem));
45202
+ transform: translateX(var(--nav-dropdown-shift-x, 0px));
45203
+ }
45204
+
45152
45205
  :where(.theme-scope) .nav-dropdown:hover > .nav-dropdown-menu,
45153
45206
  :where(.theme-scope) .nav-dropdown:focus-within > .nav-dropdown-menu,
45154
45207
  :where(.theme-scope) .nav-dropdown .nav-dropdown-trigger[aria-expanded="true"] + .nav-dropdown-menu {
@@ -14472,7 +14472,9 @@ function backgroundLayer(path, options = {}) {
14472
14472
  imageClassName,
14473
14473
  overlayClassName = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
14474
14474
  fallbackToken,
14475
- omitImageLayer = false
14475
+ omitImageLayer = false,
14476
+ imageLoading,
14477
+ imageFetchPriority
14476
14478
  } = options;
14477
14479
  const styleLayer = el("div", {
14478
14480
  className: styleClassName,
@@ -14488,11 +14490,14 @@ function backgroundLayer(path, options = {}) {
14488
14490
  }
14489
14491
  }
14490
14492
  });
14491
- const imageLayer = createBackgroundImageNode(path, imageClassName);
14493
+ const imageLayer = createBackgroundImageNode(path, imageClassName, {
14494
+ loading: imageLoading,
14495
+ fetchPriority: imageFetchPriority
14496
+ });
14492
14497
  const overlayLayer = createBackgroundOverlayNode(path, overlayClassName);
14493
14498
  return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
14494
14499
  }
14495
- function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10") {
14500
+ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
14496
14501
  const imagePath = `${path}.image`;
14497
14502
  return media(
14498
14503
  {
@@ -14513,7 +14518,9 @@ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-1
14513
14518
  transforms: [{ id: "background.resolveImageStyle" }]
14514
14519
  }
14515
14520
  },
14516
- videoPlayback: "background"
14521
+ videoPlayback: "background",
14522
+ ...options.loading ? { loading: options.loading } : {},
14523
+ ...options.fetchPriority ? { fetchPriority: options.fetchPriority } : {}
14517
14524
  },
14518
14525
  when(imagePath),
14519
14526
  bind(imagePath)
@@ -14754,12 +14761,16 @@ function styledSection(config) {
14754
14761
  bindFrom = "_sectionStyles",
14755
14762
  imageClassName = "rb-absolute rb-z-neg-10",
14756
14763
  renderBackgroundImage = true,
14764
+ backgroundImageLoading,
14765
+ backgroundImageFetchPriority,
14757
14766
  fullWidthPath
14758
14767
  } = config;
14759
14768
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
14760
14769
  imageClassName,
14761
14770
  fallbackToken: background,
14762
- omitImageLayer: !renderBackgroundImage
14771
+ omitImageLayer: !renderBackgroundImage,
14772
+ imageLoading: backgroundImageLoading,
14773
+ imageFetchPriority: backgroundImageFetchPriority
14763
14774
  });
14764
14775
  const childrenArray = Array.isArray(children) ? children : [children];
14765
14776
  return section(
@@ -15008,7 +15019,7 @@ function navRow(opts) {
15008
15019
  el(
15009
15020
  "div",
15010
15021
  {
15011
- className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-min-w-12rem rb-overflow-hidden",
15022
+ className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-overflow-hidden",
15012
15023
  id: dropdownMenuId
15013
15024
  },
15014
15025
  [dropdownLinks]
@@ -19255,7 +19266,8 @@ function heroSplitImagePane() {
19255
19266
  [
19256
19267
  media(
19257
19268
  {
19258
- className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover"
19269
+ className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover",
19270
+ ...heroPriorityMediaProps
19259
19271
  },
19260
19272
  when("_sectionStyles.background.image"),
19261
19273
  bind("_sectionStyles.background.image")
@@ -19293,7 +19305,7 @@ function splitLayoutWith(children) {
19293
19305
  baseClass: ""
19294
19306
  });
19295
19307
  }
19296
- var heroCopyAndCta, heroContentNodes, classicLayout, microLayout, splitContentColumn, splitImageColumn, splitLayout, splitReverseLayout, heroConfig, heroManifest, heroBlockDefinition;
19308
+ var heroCopyAndCta, heroPriorityMediaProps, heroContentNodes, classicLayout, microLayout, splitContentColumn, splitImageColumn, splitLayout, splitReverseLayout, heroConfig, heroManifest, heroBlockDefinition;
19297
19309
  var init_hero = __esm({
19298
19310
  "../blocks/src/system/blocks/hero.ts"() {
19299
19311
  "use strict";
@@ -19307,17 +19319,25 @@ var init_hero = __esm({
19307
19319
  { fragment: heroCopyFragment },
19308
19320
  { fragment: heroCtaRowFragment }
19309
19321
  ]);
19322
+ heroPriorityMediaProps = {
19323
+ loading: "eager",
19324
+ fetchPriority: "high"
19325
+ };
19310
19326
  heroContentNodes = heroCopyAndCta.layout;
19311
19327
  classicLayout = styledSection({
19312
19328
  children: heroContainerStack(heroContentNodes, "md"),
19313
19329
  // styledContainer (rb-container) already provides horizontal padding
19314
- baseClass: ""
19330
+ baseClass: "",
19331
+ backgroundImageLoading: heroPriorityMediaProps.loading,
19332
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
19315
19333
  });
19316
19334
  microLayout = styledSection({
19317
19335
  children: heroContainerStack(heroContentNodes, "sm"),
19318
19336
  // styledContainer (rb-container) already provides horizontal padding
19319
19337
  baseClass: "",
19320
- spacing: "compact"
19338
+ spacing: "compact",
19339
+ backgroundImageLoading: heroPriorityMediaProps.loading,
19340
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
19321
19341
  });
19322
19342
  splitContentColumn = heroContentWrapper(heroContentNodes, "md", "rb-w-full rb-text-left");
19323
19343
  splitImageColumn = heroSplitImagePane();
@@ -32582,6 +32602,25 @@ var init_presets2 = __esm({
32582
32602
  }
32583
32603
  });
32584
32604
 
32605
+ // ../theme-core/src/header/navDropdownSizing.ts
32606
+ var NAV_DROPDOWN_MIN_WIDTH_REM, NAV_DROPDOWN_MAX_WIDTH_REM, NAV_DROPDOWN_VIEWPORT_GUTTER_REM, NAV_DROPDOWN_SHIFT_PROPERTY, NAV_DROPDOWN_MAX_WIDTH_CSS, NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES;
32607
+ var init_navDropdownSizing = __esm({
32608
+ "../theme-core/src/header/navDropdownSizing.ts"() {
32609
+ "use strict";
32610
+ NAV_DROPDOWN_MIN_WIDTH_REM = 12;
32611
+ NAV_DROPDOWN_MAX_WIDTH_REM = 22;
32612
+ NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
32613
+ NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
32614
+ NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
32615
+ NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
32616
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
32617
+ `width: max-content;`,
32618
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
32619
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
32620
+ ];
32621
+ }
32622
+ });
32623
+
32585
32624
  // ../theme-core/src/header/generateHeaderCss.ts
32586
32625
  var init_generateHeaderCss = __esm({
32587
32626
  "../theme-core/src/header/generateHeaderCss.ts"() {
@@ -32591,6 +32630,7 @@ var init_generateHeaderCss = __esm({
32591
32630
  init_presets2();
32592
32631
  init_shared();
32593
32632
  init_breakpoints();
32633
+ init_navDropdownSizing();
32594
32634
  }
32595
32635
  });
32596
32636
 
@@ -6830,7 +6830,7 @@ var SimpleCache = class {
6830
6830
  };
6831
6831
 
6832
6832
  // src/version.ts
6833
- var SDK_VERSION = "0.72.0";
6833
+ var SDK_VERSION = "0.74.0";
6834
6834
 
6835
6835
  // src/client/error.ts
6836
6836
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -14546,7 +14546,9 @@ function backgroundLayer(path, options = {}) {
14546
14546
  imageClassName,
14547
14547
  overlayClassName = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
14548
14548
  fallbackToken,
14549
- omitImageLayer = false
14549
+ omitImageLayer = false,
14550
+ imageLoading,
14551
+ imageFetchPriority
14550
14552
  } = options;
14551
14553
  const styleLayer = el("div", {
14552
14554
  className: styleClassName,
@@ -14562,11 +14564,14 @@ function backgroundLayer(path, options = {}) {
14562
14564
  }
14563
14565
  }
14564
14566
  });
14565
- const imageLayer = createBackgroundImageNode(path, imageClassName);
14567
+ const imageLayer = createBackgroundImageNode(path, imageClassName, {
14568
+ loading: imageLoading,
14569
+ fetchPriority: imageFetchPriority
14570
+ });
14566
14571
  const overlayLayer = createBackgroundOverlayNode(path, overlayClassName);
14567
14572
  return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
14568
14573
  }
14569
- function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10") {
14574
+ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
14570
14575
  const imagePath = `${path}.image`;
14571
14576
  return media(
14572
14577
  {
@@ -14587,7 +14592,9 @@ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-1
14587
14592
  transforms: [{ id: "background.resolveImageStyle" }]
14588
14593
  }
14589
14594
  },
14590
- videoPlayback: "background"
14595
+ videoPlayback: "background",
14596
+ ...options.loading ? { loading: options.loading } : {},
14597
+ ...options.fetchPriority ? { fetchPriority: options.fetchPriority } : {}
14591
14598
  },
14592
14599
  when(imagePath),
14593
14600
  bind(imagePath)
@@ -14784,12 +14791,16 @@ function styledSection(config) {
14784
14791
  bindFrom = "_sectionStyles",
14785
14792
  imageClassName = "rb-absolute rb-z-neg-10",
14786
14793
  renderBackgroundImage = true,
14794
+ backgroundImageLoading,
14795
+ backgroundImageFetchPriority,
14787
14796
  fullWidthPath
14788
14797
  } = config;
14789
14798
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
14790
14799
  imageClassName,
14791
14800
  fallbackToken: background,
14792
- omitImageLayer: !renderBackgroundImage
14801
+ omitImageLayer: !renderBackgroundImage,
14802
+ imageLoading: backgroundImageLoading,
14803
+ imageFetchPriority: backgroundImageFetchPriority
14793
14804
  });
14794
14805
  const childrenArray = Array.isArray(children) ? children : [children];
14795
14806
  return section(
@@ -15004,7 +15015,7 @@ function navRow(opts) {
15004
15015
  el(
15005
15016
  "div",
15006
15017
  {
15007
- className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-min-w-12rem rb-overflow-hidden",
15018
+ className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-overflow-hidden",
15008
15019
  id: dropdownMenuId
15009
15020
  },
15010
15021
  [dropdownLinks]
@@ -18487,6 +18498,10 @@ var heroCopyAndCta = composeFragments([
18487
18498
  { fragment: heroCopyFragment },
18488
18499
  { fragment: heroCtaRowFragment }
18489
18500
  ]);
18501
+ var heroPriorityMediaProps = {
18502
+ loading: "eager",
18503
+ fetchPriority: "high"
18504
+ };
18490
18505
  var heroContentNodes = heroCopyAndCta.layout;
18491
18506
  function heroContentCard(children, gap) {
18492
18507
  return styledContainer({
@@ -18549,7 +18564,8 @@ function heroSplitImagePane() {
18549
18564
  [
18550
18565
  media(
18551
18566
  {
18552
- className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover"
18567
+ className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover",
18568
+ ...heroPriorityMediaProps
18553
18569
  },
18554
18570
  when("_sectionStyles.background.image"),
18555
18571
  bind("_sectionStyles.background.image")
@@ -18560,13 +18576,17 @@ function heroSplitImagePane() {
18560
18576
  var classicLayout = styledSection({
18561
18577
  children: heroContainerStack(heroContentNodes, "md"),
18562
18578
  // styledContainer (rb-container) already provides horizontal padding
18563
- baseClass: ""
18579
+ baseClass: "",
18580
+ backgroundImageLoading: heroPriorityMediaProps.loading,
18581
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
18564
18582
  });
18565
18583
  var microLayout = styledSection({
18566
18584
  children: heroContainerStack(heroContentNodes, "sm"),
18567
18585
  // styledContainer (rb-container) already provides horizontal padding
18568
18586
  baseClass: "",
18569
- spacing: "compact"
18587
+ spacing: "compact",
18588
+ backgroundImageLoading: heroPriorityMediaProps.loading,
18589
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
18570
18590
  });
18571
18591
  function splitLayoutWith(children) {
18572
18592
  return styledSection({
@@ -30725,6 +30745,19 @@ var NAV_LINK_PRESETS = {
30725
30745
  };
30726
30746
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
30727
30747
 
30748
+ // ../theme-core/src/header/navDropdownSizing.ts
30749
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
30750
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
30751
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
30752
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
30753
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
30754
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
30755
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
30756
+ `width: max-content;`,
30757
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
30758
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
30759
+ ];
30760
+
30728
30761
  // ../theme-core/src/layout/generateLayoutCss.ts
30729
30762
  var waveTransitionMask = svgDataUrl(
30730
30763
  "<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>"
@@ -2423,6 +2423,19 @@ var MQ_TABLET_ONLY = mqBetween(BREAKPOINT_SM, BREAKPOINT_LG_DOWN);
2423
2423
  var MQ_MAX_640 = mqDown(BREAKPOINT_SM);
2424
2424
  var MQ_MAX_768 = mqDown(BREAKPOINT_MD);
2425
2425
 
2426
+ // ../theme-core/src/header/navDropdownSizing.ts
2427
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
2428
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
2429
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
2430
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
2431
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
2432
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
2433
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
2434
+ `width: max-content;`,
2435
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
2436
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
2437
+ ];
2438
+
2426
2439
  // ../theme-core/src/layout/generateLayoutCss.ts
2427
2440
  var waveTransitionMask = svgDataUrl(
2428
2441
  "<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>"
@@ -10485,6 +10498,17 @@ var containerResponsiveThemeCss = `/*
10485
10498
  * =============================================================================
10486
10499
  */
10487
10500
 
10501
+ :where(.theme-scope) .nav-dropdown-menu {
10502
+ /*
10503
+ * Keep these rails in sync with header/navDropdownSizing.ts.
10504
+ * The JS placement gutter is 16px, matching the 1rem per-side gutter in calc(100vw - 2rem).
10505
+ */
10506
+ min-width: 12rem;
10507
+ width: max-content;
10508
+ max-width: min(22rem, calc(100vw - 2rem));
10509
+ transform: translateX(var(--nav-dropdown-shift-x, 0px));
10510
+ }
10511
+
10488
10512
  :where(.theme-scope) .nav-dropdown:hover > .nav-dropdown-menu,
10489
10513
  :where(.theme-scope) .nav-dropdown:focus-within > .nav-dropdown-menu,
10490
10514
  :where(.theme-scope) .nav-dropdown .nav-dropdown-trigger[aria-expanded="true"] + .nav-dropdown-menu {
@@ -7329,6 +7329,17 @@
7329
7329
  * =============================================================================
7330
7330
  */
7331
7331
 
7332
+ :where(.theme-scope) .nav-dropdown-menu {
7333
+ /*
7334
+ * Keep these rails in sync with header/navDropdownSizing.ts.
7335
+ * The JS placement gutter is 16px, matching the 1rem per-side gutter in calc(100vw - 2rem).
7336
+ */
7337
+ min-width: 12rem;
7338
+ width: max-content;
7339
+ max-width: min(22rem, calc(100vw - 2rem));
7340
+ transform: translateX(var(--nav-dropdown-shift-x, 0px));
7341
+ }
7342
+
7332
7343
  :where(.theme-scope) .nav-dropdown:hover > .nav-dropdown-menu,
7333
7344
  :where(.theme-scope) .nav-dropdown:focus-within > .nav-dropdown-menu,
7334
7345
  :where(.theme-scope) .nav-dropdown .nav-dropdown-trigger[aria-expanded="true"] + .nav-dropdown-menu {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.72.0",
3
+ "version": "0.74.0",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -1,8 +0,0 @@
1
- "use client";
2
- export { SdkPreviewModeRuntime } from './chunk-G4NLITC2.mjs';
3
- import './chunk-YRJKZEQ3.mjs';
4
- import './chunk-HV745JYE.mjs';
5
- import './chunk-KWQPAJYS.mjs';
6
- import './chunk-3YNCQG5N.mjs';
7
- import './chunk-7RX72SK2.mjs';
8
- import './chunk-XGB3TDIC.mjs';