@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
@@ -0,0 +1,13 @@
1
+ import { mountShopBlockIsland } from './chunk-RKCFVIMS.mjs';
2
+ import './chunk-N7PBWBWQ.mjs';
3
+ import { ShopClient } from './chunk-5IYGMTUE.mjs';
4
+ import { defineIslandPropsDecoder } from './chunk-6VGXRE34.mjs';
5
+ import './chunk-PMAIXMAB.mjs';
6
+
7
+ // src/rendering/islands/enhancers/shop.tsx
8
+ var decode = defineIslandPropsDecoder("shop");
9
+ var enhance = (root, props) => {
10
+ return mountShopBlockIsland(root, props, ShopClient, "shop");
11
+ };
12
+
13
+ export { decode, enhance };
@@ -6,19 +6,19 @@ import React from 'react';
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
 
8
8
  var LazySdkPreviewMode = React.lazy(async () => {
9
- const mod = await import('../../SdkPreviewModeRuntime-FO6V7YVY.mjs');
9
+ const mod = await import('../../SdkPreviewModeRuntime-CRYNDSPL.mjs');
10
10
  return {
11
11
  default: mod.SdkPreviewModeRuntime
12
12
  };
13
13
  });
14
14
  var LazyPreviewShell = React.lazy(async () => {
15
- const mod = await import('../../sdk-runtime-NGDWSWOS.mjs');
15
+ const mod = await import('../../sdk-runtime-OHNONZ5U.mjs');
16
16
  return {
17
17
  default: mod.PreviewShell
18
18
  };
19
19
  });
20
20
  var LazyPreviewShellLayout = React.lazy(async () => {
21
- const mod = await import('../../sdk-runtime-NGDWSWOS.mjs');
21
+ const mod = await import('../../sdk-runtime-OHNONZ5U.mjs');
22
22
  return {
23
23
  default: mod.PreviewShellLayout
24
24
  };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- export { PreviewShell, PreviewShellLayout, SdkPreviewModeRuntime as SdkPreviewMode } from './chunk-G4NLITC2.mjs';
2
+ export { PreviewShell, PreviewShellLayout, SdkPreviewModeRuntime as SdkPreviewMode } from './chunk-YY7K3QD2.mjs';
3
3
  export { PreviewLayoutProvider, PreviewQueryProvider, createPreviewQueryClient, useOptionalPreviewLayout, usePreviewLayout } from './chunk-YRJKZEQ3.mjs';
4
- import './chunk-HV745JYE.mjs';
5
- import './chunk-KWQPAJYS.mjs';
6
- import './chunk-3YNCQG5N.mjs';
4
+ import './chunk-CEQBBLMJ.mjs';
5
+ import './chunk-CBD47MTM.mjs';
6
+ import './chunk-2MIWNFJM.mjs';
7
7
  import './chunk-7RX72SK2.mjs';
8
8
  import './chunk-XGB3TDIC.mjs';
@@ -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 {
@@ -12857,7 +12857,9 @@ function backgroundLayer(path, options = {}) {
12857
12857
  imageClassName,
12858
12858
  overlayClassName = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
12859
12859
  fallbackToken,
12860
- omitImageLayer = false
12860
+ omitImageLayer = false,
12861
+ imageLoading,
12862
+ imageFetchPriority
12861
12863
  } = options;
12862
12864
  const styleLayer = el("div", {
12863
12865
  className: styleClassName,
@@ -12873,11 +12875,14 @@ function backgroundLayer(path, options = {}) {
12873
12875
  }
12874
12876
  }
12875
12877
  });
12876
- const imageLayer = createBackgroundImageNode(path, imageClassName);
12878
+ const imageLayer = createBackgroundImageNode(path, imageClassName, {
12879
+ loading: imageLoading,
12880
+ fetchPriority: imageFetchPriority
12881
+ });
12877
12882
  const overlayLayer = createBackgroundOverlayNode(path, overlayClassName);
12878
12883
  return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
12879
12884
  }
12880
- function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10") {
12885
+ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
12881
12886
  const imagePath = `${path}.image`;
12882
12887
  return media(
12883
12888
  {
@@ -12898,7 +12903,9 @@ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-1
12898
12903
  transforms: [{ id: "background.resolveImageStyle" }]
12899
12904
  }
12900
12905
  },
12901
- videoPlayback: "background"
12906
+ videoPlayback: "background",
12907
+ ...options.loading ? { loading: options.loading } : {},
12908
+ ...options.fetchPriority ? { fetchPriority: options.fetchPriority } : {}
12902
12909
  },
12903
12910
  when(imagePath),
12904
12911
  bind(imagePath)
@@ -13095,12 +13102,16 @@ function styledSection(config) {
13095
13102
  bindFrom = "_sectionStyles",
13096
13103
  imageClassName = "rb-absolute rb-z-neg-10",
13097
13104
  renderBackgroundImage = true,
13105
+ backgroundImageLoading,
13106
+ backgroundImageFetchPriority,
13098
13107
  fullWidthPath
13099
13108
  } = config;
13100
13109
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
13101
13110
  imageClassName,
13102
13111
  fallbackToken: background,
13103
- omitImageLayer: !renderBackgroundImage
13112
+ omitImageLayer: !renderBackgroundImage,
13113
+ imageLoading: backgroundImageLoading,
13114
+ imageFetchPriority: backgroundImageFetchPriority
13104
13115
  });
13105
13116
  const childrenArray = Array.isArray(children) ? children : [children];
13106
13117
  return section(
@@ -13315,7 +13326,7 @@ function navRow(opts) {
13315
13326
  el(
13316
13327
  "div",
13317
13328
  {
13318
- className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-min-w-12rem rb-overflow-hidden",
13329
+ className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-overflow-hidden",
13319
13330
  id: dropdownMenuId
13320
13331
  },
13321
13332
  [dropdownLinks]
@@ -16787,6 +16798,10 @@ var heroCopyAndCta = composeFragments([
16787
16798
  { fragment: heroCopyFragment },
16788
16799
  { fragment: heroCtaRowFragment }
16789
16800
  ]);
16801
+ var heroPriorityMediaProps = {
16802
+ loading: "eager",
16803
+ fetchPriority: "high"
16804
+ };
16790
16805
  var heroContentNodes = heroCopyAndCta.layout;
16791
16806
  function heroContentCard(children, gap) {
16792
16807
  return styledContainer({
@@ -16849,7 +16864,8 @@ function heroSplitImagePane() {
16849
16864
  [
16850
16865
  media(
16851
16866
  {
16852
- className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover"
16867
+ className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover",
16868
+ ...heroPriorityMediaProps
16853
16869
  },
16854
16870
  when("_sectionStyles.background.image"),
16855
16871
  bind("_sectionStyles.background.image")
@@ -16860,13 +16876,17 @@ function heroSplitImagePane() {
16860
16876
  var classicLayout = styledSection({
16861
16877
  children: heroContainerStack(heroContentNodes, "md"),
16862
16878
  // styledContainer (rb-container) already provides horizontal padding
16863
- baseClass: ""
16879
+ baseClass: "",
16880
+ backgroundImageLoading: heroPriorityMediaProps.loading,
16881
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
16864
16882
  });
16865
16883
  var microLayout = styledSection({
16866
16884
  children: heroContainerStack(heroContentNodes, "sm"),
16867
16885
  // styledContainer (rb-container) already provides horizontal padding
16868
16886
  baseClass: "",
16869
- spacing: "compact"
16887
+ spacing: "compact",
16888
+ backgroundImageLoading: heroPriorityMediaProps.loading,
16889
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
16870
16890
  });
16871
16891
  function splitLayoutWith(children) {
16872
16892
  return styledSection({
@@ -28962,6 +28982,19 @@ var NAV_LINK_PRESETS = {
28962
28982
  };
28963
28983
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
28964
28984
 
28985
+ // ../theme-core/src/header/navDropdownSizing.ts
28986
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
28987
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
28988
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
28989
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
28990
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
28991
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
28992
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
28993
+ `width: max-content;`,
28994
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
28995
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
28996
+ ];
28997
+
28965
28998
  // ../theme-core/src/layout/generateLayoutCss.ts
28966
28999
  var waveTransitionMask = svgDataUrl(
28967
29000
  "<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>"
@@ -12902,7 +12902,9 @@ function backgroundLayer(path, options = {}) {
12902
12902
  imageClassName,
12903
12903
  overlayClassName = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
12904
12904
  fallbackToken,
12905
- omitImageLayer = false
12905
+ omitImageLayer = false,
12906
+ imageLoading,
12907
+ imageFetchPriority
12906
12908
  } = options;
12907
12909
  const styleLayer = el("div", {
12908
12910
  className: styleClassName,
@@ -12918,11 +12920,14 @@ function backgroundLayer(path, options = {}) {
12918
12920
  }
12919
12921
  }
12920
12922
  });
12921
- const imageLayer = createBackgroundImageNode(path, imageClassName);
12923
+ const imageLayer = createBackgroundImageNode(path, imageClassName, {
12924
+ loading: imageLoading,
12925
+ fetchPriority: imageFetchPriority
12926
+ });
12922
12927
  const overlayLayer = createBackgroundOverlayNode(path, overlayClassName);
12923
12928
  return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
12924
12929
  }
12925
- function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10") {
12930
+ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
12926
12931
  const imagePath = `${path}.image`;
12927
12932
  return media(
12928
12933
  {
@@ -12943,7 +12948,9 @@ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-1
12943
12948
  transforms: [{ id: "background.resolveImageStyle" }]
12944
12949
  }
12945
12950
  },
12946
- videoPlayback: "background"
12951
+ videoPlayback: "background",
12952
+ ...options.loading ? { loading: options.loading } : {},
12953
+ ...options.fetchPriority ? { fetchPriority: options.fetchPriority } : {}
12947
12954
  },
12948
12955
  when(imagePath),
12949
12956
  bind(imagePath)
@@ -13140,12 +13147,16 @@ function styledSection(config) {
13140
13147
  bindFrom = "_sectionStyles",
13141
13148
  imageClassName = "rb-absolute rb-z-neg-10",
13142
13149
  renderBackgroundImage = true,
13150
+ backgroundImageLoading,
13151
+ backgroundImageFetchPriority,
13143
13152
  fullWidthPath
13144
13153
  } = config;
13145
13154
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
13146
13155
  imageClassName,
13147
13156
  fallbackToken: background,
13148
- omitImageLayer: !renderBackgroundImage
13157
+ omitImageLayer: !renderBackgroundImage,
13158
+ imageLoading: backgroundImageLoading,
13159
+ imageFetchPriority: backgroundImageFetchPriority
13149
13160
  });
13150
13161
  const childrenArray = Array.isArray(children) ? children : [children];
13151
13162
  return section(
@@ -13360,7 +13371,7 @@ function navRow(opts) {
13360
13371
  el(
13361
13372
  "div",
13362
13373
  {
13363
- className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-min-w-12rem rb-overflow-hidden",
13374
+ className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-overflow-hidden",
13364
13375
  id: dropdownMenuId
13365
13376
  },
13366
13377
  [dropdownLinks]
@@ -16832,6 +16843,10 @@ var heroCopyAndCta = composeFragments([
16832
16843
  { fragment: heroCopyFragment },
16833
16844
  { fragment: heroCtaRowFragment }
16834
16845
  ]);
16846
+ var heroPriorityMediaProps = {
16847
+ loading: "eager",
16848
+ fetchPriority: "high"
16849
+ };
16835
16850
  var heroContentNodes = heroCopyAndCta.layout;
16836
16851
  function heroContentCard(children, gap) {
16837
16852
  return styledContainer({
@@ -16894,7 +16909,8 @@ function heroSplitImagePane() {
16894
16909
  [
16895
16910
  media(
16896
16911
  {
16897
- className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover"
16912
+ className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover",
16913
+ ...heroPriorityMediaProps
16898
16914
  },
16899
16915
  when("_sectionStyles.background.image"),
16900
16916
  bind("_sectionStyles.background.image")
@@ -16905,13 +16921,17 @@ function heroSplitImagePane() {
16905
16921
  var classicLayout = styledSection({
16906
16922
  children: heroContainerStack(heroContentNodes, "md"),
16907
16923
  // styledContainer (rb-container) already provides horizontal padding
16908
- baseClass: ""
16924
+ baseClass: "",
16925
+ backgroundImageLoading: heroPriorityMediaProps.loading,
16926
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
16909
16927
  });
16910
16928
  var microLayout = styledSection({
16911
16929
  children: heroContainerStack(heroContentNodes, "sm"),
16912
16930
  // styledContainer (rb-container) already provides horizontal padding
16913
16931
  baseClass: "",
16914
- spacing: "compact"
16932
+ spacing: "compact",
16933
+ backgroundImageLoading: heroPriorityMediaProps.loading,
16934
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
16915
16935
  });
16916
16936
  function splitLayoutWith(children) {
16917
16937
  return styledSection({
@@ -29007,6 +29027,19 @@ var NAV_LINK_PRESETS = {
29007
29027
  };
29008
29028
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
29009
29029
 
29030
+ // ../theme-core/src/header/navDropdownSizing.ts
29031
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
29032
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
29033
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
29034
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
29035
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
29036
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
29037
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
29038
+ `width: max-content;`,
29039
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
29040
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
29041
+ ];
29042
+
29010
29043
  // ../theme-core/src/layout/generateLayoutCss.ts
29011
29044
  var waveTransitionMask = svgDataUrl(
29012
29045
  "<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>"
@@ -12755,7 +12755,9 @@ function backgroundLayer(path, options = {}) {
12755
12755
  imageClassName,
12756
12756
  overlayClassName = "background-overlay rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-pointer-events-none",
12757
12757
  fallbackToken,
12758
- omitImageLayer = false
12758
+ omitImageLayer = false,
12759
+ imageLoading,
12760
+ imageFetchPriority
12759
12761
  } = options;
12760
12762
  const styleLayer = el("div", {
12761
12763
  className: styleClassName,
@@ -12771,11 +12773,14 @@ function backgroundLayer(path, options = {}) {
12771
12773
  }
12772
12774
  }
12773
12775
  });
12774
- const imageLayer = createBackgroundImageNode(path, imageClassName);
12776
+ const imageLayer = createBackgroundImageNode(path, imageClassName, {
12777
+ loading: imageLoading,
12778
+ fetchPriority: imageFetchPriority
12779
+ });
12775
12780
  const overlayLayer = createBackgroundOverlayNode(path, overlayClassName);
12776
12781
  return omitImageLayer ? [styleLayer, overlayLayer] : [styleLayer, imageLayer, overlayLayer];
12777
12782
  }
12778
- function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10") {
12783
+ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-10", options = {}) {
12779
12784
  const imagePath = `${path}.image`;
12780
12785
  return media(
12781
12786
  {
@@ -12796,7 +12801,9 @@ function createBackgroundImageNode(path, baseClassName = "rb-absolute rb-z-neg-1
12796
12801
  transforms: [{ id: "background.resolveImageStyle" }]
12797
12802
  }
12798
12803
  },
12799
- videoPlayback: "background"
12804
+ videoPlayback: "background",
12805
+ ...options.loading ? { loading: options.loading } : {},
12806
+ ...options.fetchPriority ? { fetchPriority: options.fetchPriority } : {}
12800
12807
  },
12801
12808
  when(imagePath),
12802
12809
  bind(imagePath)
@@ -12993,12 +13000,16 @@ function styledSection(config) {
12993
13000
  bindFrom = "_sectionStyles",
12994
13001
  imageClassName = "rb-absolute rb-z-neg-10",
12995
13002
  renderBackgroundImage = true,
13003
+ backgroundImageLoading,
13004
+ backgroundImageFetchPriority,
12996
13005
  fullWidthPath
12997
13006
  } = config;
12998
13007
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
12999
13008
  imageClassName,
13000
13009
  fallbackToken: background,
13001
- omitImageLayer: !renderBackgroundImage
13010
+ omitImageLayer: !renderBackgroundImage,
13011
+ imageLoading: backgroundImageLoading,
13012
+ imageFetchPriority: backgroundImageFetchPriority
13002
13013
  });
13003
13014
  const childrenArray = Array.isArray(children) ? children : [children];
13004
13015
  return section(
@@ -13213,7 +13224,7 @@ function navRow(opts) {
13213
13224
  el(
13214
13225
  "div",
13215
13226
  {
13216
- className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-min-w-12rem rb-overflow-hidden",
13227
+ className: "nav-dropdown-menu rb-absolute rb-left-0 rb-top-full rb-z-50 rb-hidden rb-overflow-hidden",
13217
13228
  id: dropdownMenuId
13218
13229
  },
13219
13230
  [dropdownLinks]
@@ -16696,6 +16707,10 @@ var heroCopyAndCta = composeFragments([
16696
16707
  { fragment: heroCopyFragment },
16697
16708
  { fragment: heroCtaRowFragment }
16698
16709
  ]);
16710
+ var heroPriorityMediaProps = {
16711
+ loading: "eager",
16712
+ fetchPriority: "high"
16713
+ };
16699
16714
  var heroContentNodes = heroCopyAndCta.layout;
16700
16715
  function heroContentCard(children, gap) {
16701
16716
  return styledContainer({
@@ -16758,7 +16773,8 @@ function heroSplitImagePane() {
16758
16773
  [
16759
16774
  media(
16760
16775
  {
16761
- className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover"
16776
+ className: "rb-absolute rb-inset-0 rb-h-full rb-w-full rb-object-cover",
16777
+ ...heroPriorityMediaProps
16762
16778
  },
16763
16779
  when("_sectionStyles.background.image"),
16764
16780
  bind("_sectionStyles.background.image")
@@ -16769,13 +16785,17 @@ function heroSplitImagePane() {
16769
16785
  var classicLayout = styledSection({
16770
16786
  children: heroContainerStack(heroContentNodes, "md"),
16771
16787
  // styledContainer (rb-container) already provides horizontal padding
16772
- baseClass: ""
16788
+ baseClass: "",
16789
+ backgroundImageLoading: heroPriorityMediaProps.loading,
16790
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
16773
16791
  });
16774
16792
  var microLayout = styledSection({
16775
16793
  children: heroContainerStack(heroContentNodes, "sm"),
16776
16794
  // styledContainer (rb-container) already provides horizontal padding
16777
16795
  baseClass: "",
16778
- spacing: "compact"
16796
+ spacing: "compact",
16797
+ backgroundImageLoading: heroPriorityMediaProps.loading,
16798
+ backgroundImageFetchPriority: heroPriorityMediaProps.fetchPriority
16779
16799
  });
16780
16800
  function splitLayoutWith(children) {
16781
16801
  return styledSection({
@@ -28899,6 +28919,19 @@ var NAV_LINK_PRESETS = {
28899
28919
  };
28900
28920
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
28901
28921
 
28922
+ // ../theme-core/src/header/navDropdownSizing.ts
28923
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
28924
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
28925
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
28926
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
28927
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
28928
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
28929
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
28930
+ `width: max-content;`,
28931
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
28932
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
28933
+ ];
28934
+
28902
28935
  // ../theme-core/src/layout/generateLayoutCss.ts
28903
28936
  var waveTransitionMask = svgDataUrl(
28904
28937
  "<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>"
@@ -6797,7 +6797,7 @@ var SimpleCache = class {
6797
6797
  };
6798
6798
 
6799
6799
  // src/version.ts
6800
- var SDK_VERSION = "0.72.0";
6800
+ var SDK_VERSION = "0.74.0";
6801
6801
 
6802
6802
  // src/client/error.ts
6803
6803
  var RiverbankApiError = class _RiverbankApiError extends Error {