@riverbankcms/sdk 0.140.0 → 0.142.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 (145) hide show
  1. package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Dk6Dt11f.mjs} +24 -15
  2. package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-D6EQTsCA.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-CN0ewic5.mjs → PreviewQueryProvider-CC-EPkyQ.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-DH1n4ytY.mjs} +85 -54
  5. package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-DunIzY0K.mjs} +797 -216
  6. package/dist/_dts/api/src/billing.d.ts +6 -1
  7. package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
  8. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  9. package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
  10. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +0 -27
  12. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  13. package/dist/_dts/api/src/index.d.ts +2 -2
  14. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  15. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  16. package/dist/_dts/api/src/publicBookingService.d.ts +1 -0
  17. package/dist/_dts/api/src/sdkConfig/layout.d.ts +13 -0
  18. package/dist/_dts/api/src/sdkContracts.d.ts +3 -8
  19. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
  20. package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
  21. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -31
  22. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  23. package/dist/_dts/billing/src/site-arrangements.d.ts +18 -5
  24. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  25. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  27. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  28. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  30. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +56 -0
  31. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +8 -0
  32. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  34. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
  35. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  37. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
  38. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
  47. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +63 -2
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  53. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  54. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  55. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +1 -2
  56. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3102 -3122
  57. package/dist/_dts/editor-blocks/src/block-editor/ColourFieldOptionsProvider.d.ts +7 -0
  58. package/dist/_dts/editor-blocks/src/block-editor/colourFieldVisibility.d.ts +7 -0
  59. package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +2 -0
  60. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  61. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  62. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -2
  63. package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +3 -6
  64. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -2
  65. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -2
  66. package/dist/_dts/preview-next/src/client/preview/footerInspection.d.ts +16 -0
  67. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +6 -0
  68. package/dist/_dts/sdk/src/config/types.d.ts +2 -18
  69. package/dist/_dts/sdk/src/config/validation.d.ts +6 -0
  70. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -1
  71. package/dist/_dts/sdk/src/version.d.ts +1 -1
  72. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  73. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  74. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  75. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  76. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  77. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  78. package/dist/_dts/theme-core/src/footer/mode.d.ts +10 -1
  79. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  81. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  82. package/dist/_dts/theme-core/src/schema.d.ts +1 -7
  83. package/dist/_dts/theme-core/src/site-styles/effectivePageDesign.d.ts +32 -0
  84. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  85. package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-CnJeq3_r.mjs} +2 -2
  86. package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-BINEO6J9.mjs} +1 -1
  87. package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-srxNQ6sZ.mjs} +11 -15
  88. package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-DbyVyGkX.mjs} +4 -17
  89. package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-B-wpijzL.mjs} +1 -1
  90. package/dist/client/{accordion-6HiIFxNL.mjs → accordion-B-iUXU7n.mjs} +1 -1
  91. package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-BXYPke5q.mjs} +5 -5
  92. package/dist/client/bookings.mjs +194 -102
  93. package/dist/client/{carousel-DmkZRRq_.mjs → carousel-Cr4aj63H.mjs} +1 -1
  94. package/dist/client/{cart-CIC24330.mjs → cart-DibP9WWa.mjs} +3 -3
  95. package/dist/client/{checkout-D1Zw9imo.mjs → checkout-CrSBVnL8.mjs} +3 -3
  96. package/dist/client/client.mjs +643 -192
  97. package/dist/client/{context-Cy1OayHx.mjs → context-Ces-AgdR.mjs} +1 -1
  98. package/dist/client/{dates-aDcfoLHr.mjs → dates-BXyNeNhB.mjs} +2 -2
  99. package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-HwpPeqrH.mjs} +11 -7
  100. package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-BpFUkuEI.mjs} +3 -3
  101. package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-DK_agiWy.mjs} +4 -4
  102. package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-DhzHqP1c.mjs} +3 -3
  103. package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-BdQ_Dn2d.mjs} +124 -32
  104. package/dist/client/{form-BbWckVWY.mjs → form-B1frcuzy.mjs} +2 -2
  105. package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-CT5z460s.mjs} +2 -2
  106. package/dist/client/hooks.mjs +274 -45
  107. package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-CIQXB9i2.mjs} +2 -2
  108. package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-BYNYZSes.mjs} +23 -10
  109. package/dist/client/{pricing-Copadu-2.mjs → pricing-CbTlAsmt.mjs} +1 -1
  110. package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-CR7Z3yjS.mjs} +3 -3
  111. package/dist/client/{productList-BRiIRUcd.mjs → productList-DXj00vzR.mjs} +3 -3
  112. package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-DiLiBdek.mjs} +57 -16
  113. package/dist/client/rendering/client.mjs +476 -132
  114. package/dist/client/rendering/islands.mjs +17 -17
  115. package/dist/client/rendering.mjs +686 -195
  116. package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-CrcbBf0h.mjs} +28 -11
  117. package/dist/client/{shop-Vn6yNFED.mjs → shop-DgqiB_1b.mjs} +6 -6
  118. package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D_J781in.mjs} +5 -5
  119. package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-PGUbDwqe.mjs} +1 -1
  120. package/dist/client/{shopShared-COIeK77T.mjs → shopShared-C_Bb2zwG.mjs} +3 -3
  121. package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-CM17Xpr1.mjs} +17 -11
  122. package/dist/preview-next/before-render.mjs +0 -37
  123. package/dist/preview-next/client/runtime.mjs +4 -4
  124. package/dist/preview-next/editor-chrome.css +4 -8
  125. package/dist/preview-next/keepAlive.mjs +0 -37
  126. package/dist/preview-next/middleware.mjs +0 -37
  127. package/dist/{previewAuthStore-Gjb6r6vz.mjs → previewAuthStore-oVttoRDO.mjs} +0 -37
  128. package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-DhmuRhIX.mjs} +2 -2
  129. package/dist/{separator-DKDRJ1oH.mjs → separator-C3hlg9LH.mjs} +1 -1
  130. package/dist/server/components.mjs +452 -111
  131. package/dist/server/config-validation.mjs +263 -40
  132. package/dist/server/config.mjs +263 -40
  133. package/dist/server/data.mjs +274 -45
  134. package/dist/server/index.mjs +1 -38
  135. package/dist/server/next.mjs +427 -119
  136. package/dist/server/page-converter.mjs +208 -33
  137. package/dist/server/prebuild.mjs +1 -1
  138. package/dist/server/rendering/server.mjs +467 -119
  139. package/dist/server/rendering.mjs +467 -117
  140. package/dist/server/routing.mjs +301 -50
  141. package/dist/server/server.mjs +275 -83
  142. package/dist/server/theme-bridge.mjs +57 -23
  143. package/dist/server/theme.mjs +11 -9
  144. package/dist/styles/index.css +28 -2
  145. package/package.json +1 -1
@@ -1,6 +1,14 @@
1
1
  import * as React from "react";
2
2
  import { z } from "zod";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region ../theme-core/src/footer/mode.ts
5
+ const footerModeSchema = z.enum([
6
+ "default",
7
+ "blocks",
8
+ "default+blocks",
9
+ "none"
10
+ ]);
11
+ //#endregion
4
12
  //#region ../theme-core/src/lib/media.ts
5
13
  const hotspotSchema = z.object({
6
14
  x: z.number().min(0).max(1),
@@ -1096,7 +1104,7 @@ const BUTTON_CONTRAST_POLICY = {
1096
1104
  nonTextMinimumRatio: 3,
1097
1105
  gradientSamplesPerSegment: 20,
1098
1106
  alphaBackgrounds: "reject-without-known-surface",
1099
- disabled: "retain-full-colour-contract"
1107
+ disabled: "validated-colour-pair-with-muted-control-opacity"
1100
1108
  };
1101
1109
  function formatButtonColourContractError(error) {
1102
1110
  switch (error.tag) {
@@ -1789,17 +1797,16 @@ function resolvedButtonFocusDeclarations(indicator, role) {
1789
1797
  ] : [["outline", value("outline", `3px solid ${indicator.colorCss}`)], ["outline-offset", value("outline-offset", "3px")]];
1790
1798
  }
1791
1799
  /**
1792
- * Disabled buttons retain their validated colour pair and add a non-layout
1793
- * visual affordance. `currentColor` keeps the cue inside the same contrast
1794
- * relationship, while retaining pointer events lets the not-allowed cursor
1795
- * remain observable.
1800
+ * Disabled buttons are deliberately muted as unavailable controls. Native
1801
+ * disabled controls are exempt from active-control contrast requirements;
1802
+ * opacity distinguishes the state without introducing a focus-like outline.
1803
+ * Retaining pointer events lets the not-allowed cursor remain observable.
1796
1804
  */
1797
1805
  const RESOLVED_BUTTON_DISABLED_DECLARATIONS = [
1798
1806
  ["cursor", "not-allowed"],
1799
1807
  ["transform", "none"],
1800
1808
  ["box-shadow", "none"],
1801
- ["outline", "2px dashed currentColor"],
1802
- ["outline-offset", "-4px"]
1809
+ ["opacity", "0.55"]
1803
1810
  ];
1804
1811
  buttonSizeNameSchema.options;
1805
1812
  //#endregion
@@ -5645,12 +5652,6 @@ const footerVariant = z.enum([
5645
5652
  "split"
5646
5653
  ]);
5647
5654
  const footerMaxWidth = z.enum(["container", "full"]);
5648
- const footerMode = z.enum([
5649
- "default",
5650
- "blocks",
5651
- "default+blocks",
5652
- "none"
5653
- ]);
5654
5655
  const footerNavLayoutMode = z.enum([
5655
5656
  "stack",
5656
5657
  "inline",
@@ -5739,9 +5740,9 @@ const footerSchema = z.object({
5739
5740
  /**
5740
5741
  * SDK-only footer rendering mode.
5741
5742
  *
5742
- * Backwards compatible: missing/undefined behaves as 'default'.
5743
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
5743
5744
  */
5744
- mode: footerMode.optional(),
5745
+ mode: footerModeSchema.optional(),
5745
5746
  variant: footerVariant,
5746
5747
  maxWidth: footerMaxWidth,
5747
5748
  showLogoText: z.boolean().optional(),
@@ -12509,10 +12510,19 @@ const containerResponsiveThemeCss = `/*
12509
12510
  padding-top: 2.5rem;
12510
12511
  padding-bottom: 2.5rem;
12511
12512
  }
12513
+ /* Clearance for a surface that is not an authored block page.
12514
+ An authored page gets this through its opening block's container (see the
12515
+ overlay-clearance rule in styles.css). A reserved surface or a system
12516
+ destination page has no such block, so it consumes the same variable here.
12517
+ Marked with one class rather than per-surface selectors, because the last
12518
+ two additions to this family were both missed and shipped overlapping. */
12512
12519
  :where(.theme-scope)
12513
12520
  [data-site-document-layout-mode="header-overlay"]
12514
- [data-rb-reserved-surface].rb-reserved-surface-main {
12515
- padding-top: calc(var(--rb-reserved-surface-header-offset, 5.5rem) + 2.5rem);
12521
+ .rb-overlay-clearance-surface {
12522
+ padding-top: calc(
12523
+ var(--site-overlay-header-clearance, 5.5rem) +
12524
+ var(--site-overlay-opening-content-extra-pad, clamp(1rem, 2vw, 1.75rem))
12525
+ );
12516
12526
  }
12517
12527
  .rb-preview-editor-offset {
12518
12528
  padding-bottom: calc(
@@ -22869,6 +22879,23 @@ const containerResponsiveThemeCss = `/*
22869
22879
  gap: 0.5rem;
22870
22880
  }
22871
22881
 
22882
+ /* Error panel and field notes. The form block scopes these to its own
22883
+ data-block, so the newsletter form (which also renders in the footer)
22884
+ needs its own copy of the treatment. */
22885
+ :where(.theme-scope) .newsletter-form .fb-error:not([data-field-validation-message]) {
22886
+ background-color: var(--fb-error-bg);
22887
+ color: var(--fb-error-text);
22888
+ border: 1px solid var(--fb-error-border);
22889
+ border-radius: var(--rb-block-radius);
22890
+ padding: 1rem;
22891
+ font-size: 0.875rem;
22892
+ }
22893
+
22894
+ :where(.theme-scope) .newsletter-form [data-field-validation-message] {
22895
+ font-size: 0.875rem;
22896
+ color: var(--fb-error-text);
22897
+ }
22898
+
22872
22899
  /* Required indicator */
22873
22900
  :where(.theme-scope) .newsletter-required {
22874
22901
  color: rgb(var(--tb-primary));
@@ -25528,14 +25555,11 @@ function normalizeTokenValue(value) {
25528
25555
  if (trimmedValue.startsWith("#")) return hexToRgbChannels(trimmedValue);
25529
25556
  return trimmedValue;
25530
25557
  }
25531
- function buildThemeRuntimeFromBridge(config) {
25532
- validateThemeBridgeConfig(config);
25533
- return buildBridgeCssVars(config);
25534
- }
25535
25558
  function buildThemeBridgeRuntime(config) {
25536
- const cssVars = buildThemeRuntimeFromBridge(config);
25559
+ const validatedConfig = validateThemeBridgeConfig(config);
25560
+ const cssVars = buildBridgeCssVars(validatedConfig);
25537
25561
  const themeId = "sdk";
25538
- const corners = config.corners ?? "rounded";
25562
+ const corners = validatedConfig.corners ?? "rounded";
25539
25563
  const generatorTheme = buildBridgeGeneratorTheme(corners);
25540
25564
  return {
25541
25565
  themeId,
@@ -25694,6 +25718,7 @@ function validateThemeBridgeConfig(config) {
25694
25718
  }
25695
25719
  validateBridgeTokens(config.tokens);
25696
25720
  if (config.overrides !== void 0) parseBridgeOverrideRules(config.overrides);
25721
+ return config;
25697
25722
  }
25698
25723
  function resolveBridgeTokens(tokens) {
25699
25724
  const resolved = {};
@@ -25872,6 +25897,15 @@ function buildBridgeGeneratorTheme(corners) {
25872
25897
  }
25873
25898
  };
25874
25899
  }
25900
+ z.object({
25901
+ palette: paletteColorsSchema,
25902
+ paletteMode: paletteModeSchema,
25903
+ typography: z.object({
25904
+ headingFamily: z.string().trim().min(1),
25905
+ bodyFamily: z.string().trim().min(1)
25906
+ }).strict(),
25907
+ corners
25908
+ }).strict();
25875
25909
  //#endregion
25876
25910
  //#region src/theme-bridge/generateCssVars.ts
25877
25911
  /**
@@ -636,6 +636,14 @@ z.string().transform((value, ctx) => {
636
636
  return z.NEVER;
637
637
  });
638
638
  //#endregion
639
+ //#region ../theme-core/src/footer/mode.ts
640
+ const footerModeSchema = z.enum([
641
+ "default",
642
+ "blocks",
643
+ "default+blocks",
644
+ "none"
645
+ ]);
646
+ //#endregion
639
647
  //#region ../theme-core/src/lib/media.ts
640
648
  const hotspotSchema = z.object({
641
649
  x: z.number().min(0).max(1),
@@ -1335,7 +1343,7 @@ const BUTTON_CONTRAST_POLICY = {
1335
1343
  nonTextMinimumRatio: 3,
1336
1344
  gradientSamplesPerSegment: 20,
1337
1345
  alphaBackgrounds: "reject-without-known-surface",
1338
- disabled: "retain-full-colour-contract"
1346
+ disabled: "validated-colour-pair-with-muted-control-opacity"
1339
1347
  };
1340
1348
  function validateButtonSurfaceContrast(input) {
1341
1349
  const ratio = contrastRatio(input.buttonPaint, input.surfaceHex);
@@ -5435,12 +5443,6 @@ const footerVariant = z.enum([
5435
5443
  "split"
5436
5444
  ]);
5437
5445
  const footerMaxWidth = z.enum(["container", "full"]);
5438
- const footerMode = z.enum([
5439
- "default",
5440
- "blocks",
5441
- "default+blocks",
5442
- "none"
5443
- ]);
5444
5446
  const footerNavLayoutMode = z.enum([
5445
5447
  "stack",
5446
5448
  "inline",
@@ -5529,9 +5531,9 @@ const footerSchema = z.object({
5529
5531
  /**
5530
5532
  * SDK-only footer rendering mode.
5531
5533
  *
5532
- * Backwards compatible: missing/undefined behaves as 'default'.
5534
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
5533
5535
  */
5534
- mode: footerMode.optional(),
5536
+ mode: footerModeSchema.optional(),
5535
5537
  variant: footerVariant,
5536
5538
  maxWidth: footerMaxWidth,
5537
5539
  showLogoText: z.boolean().optional(),
@@ -792,10 +792,19 @@
792
792
  padding-top: 2.5rem;
793
793
  padding-bottom: 2.5rem;
794
794
  }
795
+ /* Clearance for a surface that is not an authored block page.
796
+ An authored page gets this through its opening block's container (see the
797
+ overlay-clearance rule in styles.css). A reserved surface or a system
798
+ destination page has no such block, so it consumes the same variable here.
799
+ Marked with one class rather than per-surface selectors, because the last
800
+ two additions to this family were both missed and shipped overlapping. */
795
801
  :where(.theme-scope)
796
802
  [data-site-document-layout-mode="header-overlay"]
797
- [data-rb-reserved-surface].rb-reserved-surface-main {
798
- padding-top: calc(var(--rb-reserved-surface-header-offset, 5.5rem) + 2.5rem);
803
+ .rb-overlay-clearance-surface {
804
+ padding-top: calc(
805
+ var(--site-overlay-header-clearance, 5.5rem) +
806
+ var(--site-overlay-opening-content-extra-pad, clamp(1rem, 2vw, 1.75rem))
807
+ );
799
808
  }
800
809
  .rb-preview-editor-offset {
801
810
  padding-bottom: calc(
@@ -11094,6 +11103,23 @@
11094
11103
  gap: 0.5rem;
11095
11104
  }
11096
11105
 
11106
+ /* Error panel and field notes. The form block scopes these to its own
11107
+ data-block, so the newsletter form (which also renders in the footer)
11108
+ needs its own copy of the treatment. */
11109
+ :where(.theme-scope) .newsletter-form .fb-error:not([data-field-validation-message]) {
11110
+ background-color: var(--fb-error-bg);
11111
+ color: var(--fb-error-text);
11112
+ border: 1px solid var(--fb-error-border);
11113
+ border-radius: var(--rb-block-radius);
11114
+ padding: 1rem;
11115
+ font-size: 0.875rem;
11116
+ }
11117
+
11118
+ :where(.theme-scope) .newsletter-form [data-field-validation-message] {
11119
+ font-size: 0.875rem;
11120
+ color: var(--fb-error-text);
11121
+ }
11122
+
11097
11123
  /* Required indicator */
11098
11124
  :where(.theme-scope) .newsletter-required {
11099
11125
  color: rgb(var(--tb-primary));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.140.0",
3
+ "version": "0.142.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",