@riverbankcms/sdk 0.101.0 → 0.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +10 -2
  2. package/dist/{PreviewEditorSidebar-DBpy0KTh.mjs → PreviewEditorSidebar-DkNpCPja.mjs} +430 -74
  3. package/dist/{PreviewEditorUI-Fg6I2R2T.mjs → PreviewEditorUI-DeNKtqk3.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BICQLAUF.mjs → PreviewQueryProvider-ZF6TXq5Q.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DFQP-Q53.mjs → SdkPreviewModeRuntime-5bCsXK2y.mjs} +694 -329
  6. package/dist/{SiteChromeCustomizeContext-GwZc89KN.mjs → SiteChromeCustomizeContext-CO1sTK_W.mjs} +538 -69
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +298 -298
  8. package/dist/_dts/ai/src/designer/rfc6902.d.ts +57 -1
  9. package/dist/_dts/ai/src/designer/themePatch.d.ts +16 -6
  10. package/dist/_dts/api/src/bookingVerticals.d.ts +53 -1
  11. package/dist/_dts/api/src/index.d.ts +1 -1
  12. package/dist/_dts/api/src/navigation/contracts.d.ts +6 -6
  13. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -0
  15. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -1
  16. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  17. package/dist/_dts/blocks/src/index.d.ts +1 -1
  18. package/dist/_dts/blocks/src/server.d.ts +1 -1
  19. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +7 -7
  20. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
  21. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +14 -14
  22. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +5 -5
  23. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +227 -227
  24. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  27. package/dist/_dts/blocks/src/system/inlineText.d.ts +2 -2
  28. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +177 -177
  29. package/dist/_dts/blocks/src/system/node/schema.d.ts +1 -1
  30. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/runtime/nodes/layout.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -7
  33. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  34. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  35. package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
  36. package/dist/_dts/core/src/branded.d.ts +4 -0
  37. package/dist/_dts/core/src/person-records.d.ts +6 -1
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +154 -18
  39. package/dist/_dts/db/src/schemas/forms.d.ts +15 -15
  40. package/dist/_dts/media-core/src/identifiers.d.ts +14 -1
  41. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  42. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +3 -1
  43. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  44. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -1
  45. package/dist/_dts/preview-next/src/client/preview/CustomizeColorTokenPicker.d.ts +27 -0
  46. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  47. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +2 -1
  48. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +10 -2
  49. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +43 -7
  50. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +1 -1
  51. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +16 -1
  52. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +3 -2
  53. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -4
  54. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
  55. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +4 -2
  56. package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
  57. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  58. package/dist/_dts/sdk/src/contracts/page.d.ts +2 -0
  59. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +10 -10
  60. package/dist/_dts/sdk/src/next/revalidate.d.ts +14 -1
  61. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -4
  62. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -1
  63. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  64. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -4
  65. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +1 -0
  66. package/dist/_dts/sdk/src/version.d.ts +1 -1
  67. package/dist/_dts/site-commands/src/commands.d.ts +19 -19
  68. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  69. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +3 -3
  70. package/dist/_dts/theme-core/src/buttons/types.d.ts +7 -7
  71. package/dist/_dts/theme-core/src/cards/types.d.ts +6 -6
  72. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  73. package/dist/_dts/theme-core/src/inputs/types.d.ts +4 -4
  74. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +150 -144
  75. package/dist/_dts/theme-core/src/navigation/types.d.ts +6 -6
  76. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +5 -5
  77. package/dist/_dts/theme-core/src/schema.d.ts +199 -169
  78. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  79. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  80. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +28 -26
  81. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  82. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +4 -4
  83. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  84. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +9 -2
  85. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +3 -3
  86. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +50 -2
  87. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +77 -0
  88. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +44 -0
  89. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  90. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
  92. package/dist/_dts/ui/src/badge.d.ts +1 -1
  93. package/dist/_dts/ui/src/button.d.ts +1 -1
  94. package/dist/_dts/ui/src/card.d.ts +1 -1
  95. package/dist/_dts/ui/src/toggle.d.ts +2 -2
  96. package/dist/cli/index.mjs +58 -21
  97. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +9 -1
  98. package/dist/client/client.mjs +379 -83
  99. package/dist/client/hooks.mjs +27 -6
  100. package/dist/client/rendering/client.mjs +46 -17
  101. package/dist/client/rendering.mjs +378 -82
  102. package/dist/preview-next/before-render.mjs +1 -1
  103. package/dist/preview-next/client/runtime.mjs +4 -4
  104. package/dist/{previewAuthStore-Da74OL0X.mjs → previewAuthStore-ByPPZqmp.mjs} +1 -0
  105. package/dist/{sdk-runtime-CP6Kwalv.mjs → sdk-runtime-C8whifOy.mjs} +2 -2
  106. package/dist/{separator-BVk7GvGN.mjs → separator-CM2C5Axs.mjs} +1 -1
  107. package/dist/server/components.mjs +357 -77
  108. package/dist/server/config-validation.mjs +26 -6
  109. package/dist/server/config.mjs +26 -6
  110. package/dist/server/data.mjs +26 -6
  111. package/dist/server/index.mjs +2 -2
  112. package/dist/server/next/revalidate.mjs +31 -1
  113. package/dist/server/next.mjs +361 -78
  114. package/dist/server/page-converter.mjs +19 -5
  115. package/dist/server/prebuild.mjs +1 -1
  116. package/dist/server/rendering/server.mjs +359 -77
  117. package/dist/server/rendering.mjs +359 -77
  118. package/dist/server/routing.mjs +40 -9
  119. package/dist/server/server.mjs +29 -7
  120. package/dist/server/theme-bridge.mjs +158 -36
  121. package/dist/server/theme.mjs +3 -0
  122. package/dist/styles/index.css +123 -30
  123. package/package.json +1 -1
@@ -713,7 +713,9 @@ var DEFAULT_LOCALE, FALLBACK_TIMEZONE, DEFAULT_BOOKING_DATE_TIME_FORMAT, LOCAL_D
713
713
  };
714
714
  LOCAL_DATE_PATTERN = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
715
715
  }));
716
- var init_person_records = __esmMin((() => {}));
716
+ var init_person_records = __esmMin((() => {
717
+ init_result();
718
+ }));
717
719
  var init_rectification = __esmMin((() => {}));
718
720
  //#endregion
719
721
  //#region ../core/src/location.ts
@@ -1128,7 +1130,9 @@ var init_videoSlotPolicy = __esmMin((() => {
1128
1130
  init_fileDomain();
1129
1131
  init_videoPrep();
1130
1132
  }));
1131
- var init_identifiers = __esmMin((() => {}));
1133
+ var init_identifiers = __esmMin((() => {
1134
+ init_src$3();
1135
+ }));
1132
1136
  //#endregion
1133
1137
  //#region ../media-core/src/url.ts
1134
1138
  function isRelativeDirectImageStoragePath(storagePath) {
@@ -11104,6 +11108,7 @@ var init_rawStyleFields = __esmMin((() => {
11104
11108
  "_sectionStyles",
11105
11109
  "_containerStyles",
11106
11110
  "_cardStyles",
11111
+ "_transitionStyles",
11107
11112
  "styleGroup"
11108
11113
  ];
11109
11114
  themeV2BlockSpecificRawStyleFieldNames = [
@@ -11778,6 +11783,8 @@ var init_schema$1 = __esmMin((() => {
11778
11783
  navStyle: headerNavStyle,
11779
11784
  navColor: themeColorTokenSchema.nullable().optional(),
11780
11785
  navWeight: navFontWeight.default("medium"),
11786
+ navTypography: z$1.enum(["body", "heading"]).optional(),
11787
+ navTextSize: navLinkStyleSchema.shape.textSize,
11781
11788
  container: headerContainerSchema,
11782
11789
  border: headerBorderSchema,
11783
11790
  shadow: componentShadowSchema.optional(),
@@ -13436,9 +13443,38 @@ var init_backgroundAppearance = __esmMin((() => {
13436
13443
  }));
13437
13444
  var init_compositionBudget = __esmMin((() => {
13438
13445
  init_types$16();
13439
- })), init_schemaVersionedJson = __esmMin((() => {})), noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
13446
+ }));
13447
+ var init_schemaVersionedJson = __esmMin((() => {}));
13448
+ //#endregion
13449
+ //#region ../theme-core/src/site-styles/sectionTransitions.ts
13450
+ function boundaryRuntimeMetrics(family, size, heightExpression) {
13451
+ return {
13452
+ family,
13453
+ size,
13454
+ heightCss: heightExpression.includes(" ") ? `calc(${heightExpression})` : heightExpression,
13455
+ reserveCss: `calc((${heightExpression}) / 2)`
13456
+ };
13457
+ }
13458
+ function boundaryRuntimeMetricsForTransition(transition) {
13459
+ return sectionBoundaryRuntimeMetricsByTransition[transition];
13460
+ }
13461
+ var sectionBoundaryRuntimeMetricsByTransition, noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
13440
13462
  var init_sectionTransitions = __esmMin((() => {
13441
13463
  init_types$16();
13464
+ sectionBoundaryRuntimeMetricsByTransition = {
13465
+ none: null,
13466
+ "soft-fade-short": boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"),
13467
+ "soft-fade-long": boundaryRuntimeMetrics("gradient", "spacious", "10rem"),
13468
+ "soft-fade-expansive": boundaryRuntimeMetrics("gradient", "expansive", "14rem"),
13469
+ "wave-edge": boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"),
13470
+ "wave-edge-balanced": boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"),
13471
+ "wave-edge-gentle": boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"),
13472
+ "wave-edge-bold": boundaryRuntimeMetrics("wave", "large", "7rem + 2px"),
13473
+ "wave-edge-drift": boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"),
13474
+ "angle-edge": boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"),
13475
+ "angle-edge-subtle": boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"),
13476
+ "angle-edge-steep": boundaryRuntimeMetrics("angle", "large", "7rem + 2px")
13477
+ };
13442
13478
  noneBoundaryOption = {
13443
13479
  id: asBoundaryOptionId("break:none"),
13444
13480
  label: "None",
@@ -13503,12 +13539,12 @@ function validateUniquePageDesignPins(intent, ctx) {
13503
13539
  label: "block Look pin"
13504
13540
  });
13505
13541
  addDuplicateStringIssues(ctx, {
13506
- values: intent.boundaryPins.map((pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)),
13542
+ values: intent.boundaryPins.map((pin) => boundaryKey$1(pin.previousBlockId, pin.nextBlockId)),
13507
13543
  path: ["boundaryPins"],
13508
13544
  label: "boundary pin"
13509
13545
  });
13510
13546
  }
13511
- function boundaryKey(previousBlockId, nextBlockId) {
13547
+ function boundaryKey$1(previousBlockId, nextBlockId) {
13512
13548
  return makeBoundaryId(previousBlockId, nextBlockId);
13513
13549
  }
13514
13550
  var pageDesignUserPinnedAppearanceChoiceSchema, pageDesignUserPinnedBoundaryChoiceSchema, pageDesignBoundaryTreatmentSchema, pageDesignUserPinnedBoundaryTreatmentChoiceSchema, pageDesignBlockLookPinSchema, pageDesignBoundaryPinSchema, legacyPageDesignBoundaryPinSchema;
@@ -13956,7 +13992,7 @@ function asHeaderStyleId(value) {
13956
13992
  * optional nested styling fields that would otherwise leak from another Look.
13957
13993
  */
13958
13994
  function baseHeader(theme) {
13959
- const { navLinkStyle: _navLinkStyle, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
13995
+ const { navLinkStyle: _navLinkStyle, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
13960
13996
  return {
13961
13997
  ...header,
13962
13998
  navContainer: {
@@ -14426,12 +14462,12 @@ var init_headerLooks = __esmMin((() => {
14426
14462
  },
14427
14463
  {
14428
14464
  id: asHeaderStyleId("fine-line"),
14429
- label: "Fine Line",
14430
- description: "Light surface with a crisp lower rule and underline hover.",
14465
+ label: "Seamless",
14466
+ description: "Borderless surface with underline hover for a quieter page transition.",
14431
14467
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
14432
14468
  navInteraction: "underline-grow",
14433
- surface: "bordered",
14434
- defaultDepth: "line",
14469
+ surface: "neutral",
14470
+ defaultDepth: "none",
14435
14471
  navTypography: "plain",
14436
14472
  moods: [
14437
14473
  "calm",
@@ -16093,6 +16129,7 @@ var init_runtimeCompiler = __esmMin((() => {
16093
16129
  init_designState();
16094
16130
  init_types$16();
16095
16131
  init_accessibleSurfaces();
16132
+ init_sectionTransitions();
16096
16133
  defaultDesignRuntimeRules = defineDesignRuntimeRules({
16097
16134
  sectionSurfaces: {
16098
16135
  base: {},
@@ -17890,13 +17927,22 @@ function toSiteChromeBackgroundColorTokens(tokenNames) {
17890
17927
  return token ? [token] : [];
17891
17928
  });
17892
17929
  }
17893
- var siteChromeBackgroundColorTokens, quickSiteChromeBackgroundColorTokens, init_siteChromeBackgrounds = __esmMin((() => {
17930
+ var siteChromeBackgroundColorTokens, quickSiteChromeBackgroundColorTokens;
17931
+ var init_siteChromeBackgrounds = __esmMin((() => {
17894
17932
  init_backgroundAppearance();
17895
17933
  init_rawStyleFields();
17896
17934
  siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
17897
17935
  quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
17898
17936
  siteChromeBackgroundColorTokens.filter((token) => !quickSiteChromeBackgroundColorTokens.includes(token));
17899
- })), themeTokenRecipeOptions;
17937
+ }));
17938
+ function mergeHeaderNavTypographyPreference(style, preferences) {
17939
+ return preferences.typography === "inherit" && preferences.fontSize === "inherit" ? style : {
17940
+ ...style,
17941
+ ...preferences.typography === "inherit" ? {} : { typography: preferences.typography },
17942
+ ...preferences.fontSize === "inherit" ? {} : { textSize: preferences.fontSize }
17943
+ };
17944
+ }
17945
+ var init_siteChromeNavPreferences = __esmMin((() => {})), themeTokenRecipeOptions;
17900
17946
  var init_tokenRecipes = __esmMin((() => {
17901
17947
  themeTokenRecipeOptions = {
17902
17948
  palette: [
@@ -17981,6 +18027,7 @@ var init_site_styles = __esmMin((() => {
17981
18027
  init_runtimeCompiler();
17982
18028
  init_sectionTransitions();
17983
18029
  init_siteChromeBackgrounds();
18030
+ init_siteChromeNavPreferences();
17984
18031
  init_siteStyleThemeCompiler();
17985
18032
  init_siteStyleBlockPolicies();
17986
18033
  init_sourceCatalogs();
@@ -117031,6 +117078,7 @@ const eventListingBlockDefinition = {
117031
117078
  } },
117032
117079
  seeAllUrl: { $bind: {
117033
117080
  from: "content.seeAllUrl",
117081
+ fallback: "",
117034
117082
  transforms: [{ id: "links.resolve" }]
117035
117083
  } },
117036
117084
  loadMoreText: { $bind: {
@@ -117198,6 +117246,7 @@ const eventCalendarLayout = [styledSection({
117198
117246
  } },
117199
117247
  seeAllUrl: { $bind: {
117200
117248
  from: "content.seeAllUrl",
117249
+ fallback: "",
117201
117250
  transforms: [{ id: "links.resolve" }]
117202
117251
  } },
117203
117252
  loadMoreText: { $bind: {
@@ -123544,15 +123593,15 @@ function Grid({ as: Comp = "div", cols = {
123544
123593
  }
123545
123594
  //#endregion
123546
123595
  //#region ../blocks/src/system/runtime/nodes/layout.tsx
123547
- const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section, {
123596
+ const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section, {
123548
123597
  ...props,
123549
123598
  allowOverflow
123550
123599
  });
123551
- const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
123552
- const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
123553
- const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
123554
- const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
123555
- const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
123600
+ const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
123601
+ const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
123602
+ const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
123603
+ const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
123604
+ const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
123556
123605
  //#endregion
123557
123606
  //#region ../path-utils/src/index.ts
123558
123607
  const PATH_SEPARATOR_REGEX$1 = /\./g;
@@ -127166,6 +127215,7 @@ function applyTransformsAndFallback(value, binding, context) {
127166
127215
  viewModel: context.viewModel
127167
127216
  }, transforms);
127168
127217
  if (binding.transforms && binding.transforms.length > 0 && transformed === null) {
127218
+ if (binding.fallback !== void 0) return binding.fallback;
127169
127219
  console.warn("[block-system] Transform returned null for binding", {
127170
127220
  bindingFrom: binding.from,
127171
127221
  transforms: binding.transforms?.map((t) => t.id)
@@ -129101,6 +129151,7 @@ Object.keys(NAV_LINK_PRESETS);
129101
129151
  //#endregion
129102
129152
  //#region ../theme-core/src/header/generateHeaderCss.ts
129103
129153
  init_resolver$1();
129154
+ init_siteChromeNavPreferences();
129104
129155
  init_shared$5();
129105
129156
  init_breakpoints();
129106
129157
  init_navDropdownSizing();
@@ -129199,7 +129250,7 @@ function generateHeaderRootStyles(header, themeId, tokens, _theme) {
129199
129250
  }
129200
129251
  }
129201
129252
  if (header.positioning === "sticky" || header.positioning === "fixed") {
129202
- const shadowVar = getComponentShadowVar(header.shadow?.elevation ?? "sm");
129253
+ const shadowVar = getComponentShadowVar(header.shadow?.elevation ?? "none");
129203
129254
  if (shadowVar) rules.push(`box-shadow: ${shadowVar};`);
129204
129255
  }
129205
129256
  const baseBlock = `\n${selector} {\n ${rules.join("\n ")}\n}\n`;
@@ -129282,15 +129333,19 @@ function generateLogoTextBehaviorStyles(logoText, themeId) {
129282
129333
  * legacy navStyle, navWeight, navColor, and navEffects settings.
129283
129334
  */
129284
129335
  function generateNavLinkStyles(header, themeId, tokens, theme, contrastTreatment, navTextSize) {
129336
+ const navPreferences = {
129337
+ typography: header.navTypography ?? "inherit",
129338
+ fontSize: header.navTextSize ?? "inherit"
129339
+ };
129285
129340
  if (header.navLinkStyle) return generateNavLinkCSS({
129286
129341
  themeId,
129287
129342
  tokens,
129288
129343
  theme,
129289
- style: contrastTreatment || navTextSize ? {
129344
+ style: mergeHeaderNavTypographyPreference(contrastTreatment || navTextSize ? {
129290
129345
  ...header.navLinkStyle,
129291
129346
  ...contrastTreatment ? { contrastTreatment } : {},
129292
129347
  ...navTextSize ? { textSize: navTextSize } : {}
129293
- } : header.navLinkStyle,
129348
+ } : header.navLinkStyle, navPreferences),
129294
129349
  className: "header-nav-link"
129295
129350
  });
129296
129351
  const navStyle = header.navStyle ?? "minimal";
@@ -129362,7 +129417,7 @@ function generateNavLinkStyles(header, themeId, tokens, theme, contrastTreatment
129362
129417
  themeId,
129363
129418
  tokens,
129364
129419
  theme,
129365
- style: mergedStyle,
129420
+ style: mergeHeaderNavTypographyPreference(mergedStyle, navPreferences),
129366
129421
  className: "header-nav-link"
129367
129422
  });
129368
129423
  }
@@ -129714,6 +129769,7 @@ function generateFooterBottomTextLinkStyles(footer, themeId, tokens) {
129714
129769
  //#endregion
129715
129770
  //#region ../theme-core/src/layout/generateLayoutCss.ts
129716
129771
  init_breakpoints();
129772
+ init_sectionTransitions();
129717
129773
  /**
129718
129774
  * Generate layout CSS for theme scope (background, text color)
129719
129775
  *
@@ -129755,6 +129811,9 @@ const boldWaveTransitionMask = svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='htt
129755
129811
  const driftWaveTransitionMask = svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V39C115 31 205 54 340 48C505 41 610 16 760 33C920 51 1015 64 1160 44C1280 27 1375 35 1440 50V72H0Z' fill='white'/></svg>");
129756
129812
  function generateSiteStyleTransitionCss(themeId) {
129757
129813
  const selector = `:where([data-theme-scope="${themeId}"])`;
129814
+ const compactBoundaryHeight = requiredBoundaryHeightCss("wave-edge-gentle");
129815
+ const mediumBoundaryHeight = requiredBoundaryHeightCss("wave-edge");
129816
+ const largeBoundaryHeight = requiredBoundaryHeightCss("wave-edge-bold");
129758
129817
  return `${selector} [data-style-group^='site-style-transition-'] {
129759
129818
  position: relative;
129760
129819
  z-index: 2;
@@ -129762,23 +129821,48 @@ function generateSiteStyleTransitionCss(themeId) {
129762
129821
  --site-style-transition-to: rgb(var(--tb-background));
129763
129822
  }
129764
129823
 
129765
- ${selector} [data-block-transition][data-style-group^='site-style-transition-'] {
129824
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-'] {
129766
129825
  position: relative;
129767
129826
  z-index: 3;
129768
129827
  height: 0;
129769
129828
  pointer-events: none;
129829
+ --site-style-boundary-height: ${mediumBoundaryHeight};
129830
+ }
129831
+
129832
+ ${selector} [data-block][data-site-style-boundary-before] > :where([data-slot='section']) {
129833
+ padding-top: calc(var(--rb-section-pad-y, 0rem) + var(--site-style-boundary-before-reserve, 0rem));
129834
+ }
129835
+
129836
+ ${selector} [data-block][data-site-style-boundary-after] > :where([data-slot='section']) {
129837
+ padding-bottom: calc(var(--rb-section-pad-y, 0rem) + var(--site-style-boundary-after-reserve, 0rem));
129770
129838
  }
129771
129839
 
129772
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-']::after,
129773
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-']::after,
129774
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade']::after {
129840
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-']::before,
129841
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-']::before,
129842
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade']::before {
129775
129843
  content: '';
129776
129844
  position: absolute;
129777
129845
  left: 0;
129778
129846
  right: 0;
129779
- bottom: -2px;
129847
+ top: 0;
129848
+ transform: translateY(-50%);
129849
+ z-index: 0;
129850
+ height: var(--site-style-boundary-height);
129851
+ background: var(--site-style-transition-from);
129852
+ pointer-events: none;
129853
+ }
129854
+
129855
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-']::after,
129856
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-']::after,
129857
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade']::after {
129858
+ content: '';
129859
+ position: absolute;
129860
+ left: 0;
129861
+ right: 0;
129862
+ top: 0;
129863
+ transform: translateY(-50%);
129780
129864
  z-index: 1;
129781
- height: calc(6rem + 2px);
129865
+ height: var(--site-style-boundary-height);
129782
129866
  pointer-events: none;
129783
129867
  }
129784
129868
 
@@ -129816,7 +129900,7 @@ ${selector} [data-style-group$='-to-brand-depth-band'] {
129816
129900
  --site-style-transition-to: rgb(var(--tb-primary-800));
129817
129901
  }
129818
129902
 
129819
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade']::after {
129903
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade']::after {
129820
129904
  /* Fallback for browsers without color-mix(). */
129821
129905
  background: linear-gradient(
129822
129906
  to bottom,
@@ -129832,30 +129916,37 @@ ${selector} [data-block-transition][data-style-group^='site-style-transition-sof
129832
129916
  );
129833
129917
  }
129834
129918
 
129835
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade-long-']::after {
129836
- height: 10rem;
129919
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade-long-'] {
129920
+ --site-style-boundary-height: ${requiredBoundaryHeightCss("soft-fade-long")};
129837
129921
  }
129838
129922
 
129839
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade-expansive-']::after {
129840
- height: 14rem;
129923
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade-expansive-'] {
129924
+ --site-style-boundary-height: ${requiredBoundaryHeightCss("soft-fade-expansive")};
129841
129925
  }
129842
129926
 
129843
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-']::after {
129927
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-']::after {
129928
+ height: calc(var(--site-style-boundary-height) + 2px);
129844
129929
  background: var(--site-style-transition-to);
129845
129930
  clip-path: polygon(0 42%, 100% 8%, 100% 100%, 0 100%);
129846
129931
  }
129847
129932
 
129848
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-subtle-']::after {
129849
- height: calc(4.5rem + 2px);
129933
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-subtle-'] {
129934
+ --site-style-boundary-height: ${compactBoundaryHeight};
129935
+ }
129936
+
129937
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-subtle-']::after {
129850
129938
  clip-path: polygon(0 34%, 100% 18%, 100% 100%, 0 100%);
129851
129939
  }
129852
129940
 
129853
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-steep-']::after {
129854
- height: calc(7rem + 2px);
129941
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-steep-'] {
129942
+ --site-style-boundary-height: ${largeBoundaryHeight};
129943
+ }
129944
+
129945
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-steep-']::after {
129855
129946
  clip-path: polygon(0 54%, 100% 0%, 100% 100%, 0 100%);
129856
129947
  }
129857
129948
 
129858
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-']::after {
129949
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-']::after {
129859
129950
  background: var(--site-style-transition-to);
129860
129951
  mask-image: url("${classicWaveTransitionMask}");
129861
129952
  mask-repeat: no-repeat;
@@ -129865,28 +129956,39 @@ ${selector} [data-block-transition][data-style-group^='site-style-transition-wav
129865
129956
  -webkit-mask-size: 100% 100%;
129866
129957
  }
129867
129958
 
129868
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-balanced-']::after {
129959
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-balanced-']::after {
129869
129960
  mask-image: url("${balancedWaveTransitionMask}");
129870
129961
  -webkit-mask-image: url("${balancedWaveTransitionMask}");
129871
129962
  }
129872
129963
 
129873
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-gentle-']::after {
129874
- height: calc(4.5rem + 2px);
129964
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-gentle-'] {
129965
+ --site-style-boundary-height: ${compactBoundaryHeight};
129966
+ }
129967
+
129968
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-gentle-']::after {
129875
129969
  mask-image: url("${gentleWaveTransitionMask}");
129876
129970
  -webkit-mask-image: url("${gentleWaveTransitionMask}");
129877
129971
  }
129878
129972
 
129879
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-bold-']::after {
129880
- height: calc(7rem + 2px);
129973
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-bold-'] {
129974
+ --site-style-boundary-height: ${largeBoundaryHeight};
129975
+ }
129976
+
129977
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-bold-']::after {
129881
129978
  mask-image: url("${boldWaveTransitionMask}");
129882
129979
  -webkit-mask-image: url("${boldWaveTransitionMask}");
129883
129980
  }
129884
129981
 
129885
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-drift-']::after {
129982
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-drift-']::after {
129886
129983
  mask-image: url("${driftWaveTransitionMask}");
129887
129984
  -webkit-mask-image: url("${driftWaveTransitionMask}");
129888
129985
  }`;
129889
129986
  }
129987
+ function requiredBoundaryHeightCss(transition) {
129988
+ const metrics = boundaryRuntimeMetricsForTransition(transition);
129989
+ if (!metrics) throw new Error(`Missing boundary runtime metrics for ${transition}`);
129990
+ return metrics.heightCss;
129991
+ }
129890
129992
  function svgDataUrl(svg) {
129891
129993
  return `data:image/svg+xml,${encodeURIComponent(svg)}`;
129892
129994
  }
@@ -132031,13 +132133,15 @@ init_fragments();
132031
132133
  init_colorStyles();
132032
132134
  init_typeGuards();
132033
132135
  init_media();
132034
- function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wrapBlock, registry, themeTokens: providedThemeTokens, routeMap, blockOverrides, sdkConfig, customBlocks, previewAuthoring }) {
132136
+ function PageRenderer$1({ theme, page, runtimeBoundaries, usePlaceholders = false, dataContext, wrapBlock, wrapBoundary, registry, themeTokens: providedThemeTokens, routeMap, blockOverrides, sdkConfig, customBlocks, previewAuthoring }) {
132035
132137
  const imageResolveContext = React$1.useMemo(() => resolvePageRendererImageResolveContext(dataContext), [
132036
132138
  dataContext?.imageResolveContext,
132037
132139
  dataContext?.mediaAssets,
132038
132140
  dataContext?.siteId,
132039
132141
  dataContext?.supabaseUrl
132040
132142
  ]);
132143
+ const boundaryByAdjacentBlockIds = React$1.useMemo(() => boundaryMapForAdjacentBlockIds(runtimeBoundaries ?? []), [runtimeBoundaries]);
132144
+ const usesRuntimeBoundaries = runtimeBoundaries !== void 0;
132041
132145
  if (!page || page.blocks.length === 0) return /* @__PURE__ */ jsx("div", {
132042
132146
  className: "rb-p-6 rb-caption",
132043
132147
  style: textColorStyle("mutedText"),
@@ -132049,6 +132153,17 @@ function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wra
132049
132153
  return /* @__PURE__ */ jsx("div", { children: page.blocks.map((block, index) => {
132050
132154
  const blockPosition = pageBlockPosition(index, page.blocks.length);
132051
132155
  const blockKey = block.id ?? `${block.kind}-${index}`;
132156
+ const previousBlock = page.blocks[index - 1] ?? null;
132157
+ const nextBlock = page.blocks[index + 1] ?? null;
132158
+ const boundaryBefore = boundaryBetweenBlocks(previousBlock, block, boundaryByAdjacentBlockIds);
132159
+ const boundaryAfter = boundaryBetweenBlocks(block, nextBlock, boundaryByAdjacentBlockIds);
132160
+ const boundaryElement = renderBoundaryAfterBlock({
132161
+ block,
132162
+ nextBlock,
132163
+ blockKey,
132164
+ boundaryByAdjacentBlockIds,
132165
+ wrapBoundary
132166
+ });
132052
132167
  const cleanKind = block.kind.replace(/^block\./, "");
132053
132168
  const definition = getBlockDefinition(block.kind);
132054
132169
  const managesOwnWrapper = definition?.manifest.behaviours?.managesOwnWrapper;
@@ -132071,10 +132186,18 @@ function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wra
132071
132186
  imageResolveContext,
132072
132187
  previewAuthoring
132073
132188
  };
132074
- if (!shouldUseWrapper) return /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps }, blockKey);
132189
+ if (!shouldUseWrapper) {
132190
+ const rendered = /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps }, `${blockKey}:block`);
132191
+ return boundaryElement ? /* @__PURE__ */ jsxs(React$1.Fragment, { children: [rendered, boundaryElement] }, blockKey) : rendered;
132192
+ }
132075
132193
  const wrapperClassName = [`block-${cleanKind}`, wrapBlock ? "group relative" : null].filter(Boolean).join(" ");
132076
132194
  const styleGroup = typeof renderableContent.styleGroup === "string" ? renderableContent.styleGroup : void 0;
132077
132195
  const blockLook = typeof renderableContent.blockLook === "string" ? renderableContent.blockLook : void 0;
132196
+ const transitionStyle = transitionCssVarsStyle(renderableContent);
132197
+ const blockStyle = mergeStyleObjects(transitionStyle, boundaryReserveCssVarsStyle({
132198
+ before: boundaryBefore,
132199
+ after: boundaryAfter
132200
+ }));
132078
132201
  const blockElement = /* @__PURE__ */ jsx("div", {
132079
132202
  className: wrapperClassName,
132080
132203
  "data-block": cleanKind,
@@ -132084,21 +132207,92 @@ function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wra
132084
132207
  "data-block-variant": variantKey ?? void 0,
132085
132208
  "data-block-look": blockLook,
132086
132209
  "data-page-block-position": blockPosition,
132210
+ "data-site-style-boundary-before": boundaryBefore?.metrics.size,
132211
+ "data-site-style-boundary-after": boundaryAfter?.metrics.size,
132087
132212
  "data-style-group": styleGroup,
132213
+ style: blockStyle,
132088
132214
  children: /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps })
132089
132215
  }, blockKey);
132090
- if (!isSiteStyleTransitionStyleGroup(styleGroup)) return blockElement;
132216
+ if (boundaryElement) return /* @__PURE__ */ jsxs(React$1.Fragment, { children: [blockElement, boundaryElement] }, blockKey);
132217
+ if (usesRuntimeBoundaries || !isSiteStyleTransitionStyleGroup(styleGroup)) return blockElement;
132091
132218
  return /* @__PURE__ */ jsxs(React$1.Fragment, { children: [blockElement, /* @__PURE__ */ jsx("div", {
132092
132219
  "aria-hidden": "true",
132093
132220
  "data-block-transition": "",
132094
132221
  "data-block-transition-for": block.id ?? blockKey,
132095
- "data-style-group": styleGroup
132222
+ "data-style-group": styleGroup,
132223
+ style: transitionStyle
132096
132224
  })] }, blockKey);
132097
132225
  }) });
132098
132226
  }
132099
132227
  function isSiteStyleTransitionStyleGroup(value) {
132100
132228
  return value?.startsWith("site-style-transition-") === true;
132101
132229
  }
132230
+ function boundaryMapForAdjacentBlockIds(boundaries) {
132231
+ return new Map(boundaries.map((boundary) => [boundaryKey(boundary.previousBlockId, boundary.nextBlockId), boundary]));
132232
+ }
132233
+ function boundaryKey(previousBlockId, nextBlockId) {
132234
+ return `${previousBlockId}\u0000${nextBlockId}`;
132235
+ }
132236
+ function boundaryBetweenBlocks(previousBlock, nextBlock, boundaryByAdjacentBlockIds) {
132237
+ const previousBlockId = previousBlock?.id ?? null;
132238
+ const nextBlockId = nextBlock?.id ?? null;
132239
+ if (!previousBlockId || !nextBlockId) return null;
132240
+ return boundaryByAdjacentBlockIds.get(boundaryKey(previousBlockId, nextBlockId)) ?? null;
132241
+ }
132242
+ function renderBoundaryAfterBlock(input) {
132243
+ const previousBlockId = input.block.id;
132244
+ const nextBlockId = input.nextBlock?.id ?? null;
132245
+ if (!previousBlockId || !nextBlockId) return null;
132246
+ const boundary = input.boundaryByAdjacentBlockIds.get(boundaryKey(previousBlockId, nextBlockId));
132247
+ if (!boundary) return null;
132248
+ const rendered = /* @__PURE__ */ jsx("div", {
132249
+ "aria-hidden": "true",
132250
+ "data-block-boundary": "",
132251
+ "data-boundary-id": boundary.boundaryId,
132252
+ "data-boundary-previous-block-id": boundary.previousBlockId,
132253
+ "data-boundary-next-block-id": boundary.nextBlockId,
132254
+ "data-style-group": boundary.styleGroup,
132255
+ style: boundaryCssVarsStyle(boundary)
132256
+ }, `${input.blockKey}:boundary`);
132257
+ return input.wrapBoundary ? input.wrapBoundary(boundary, rendered) : rendered;
132258
+ }
132259
+ function boundaryCssVarsStyle(boundary) {
132260
+ return {
132261
+ "--site-style-transition-from": boundary.cssVars.from,
132262
+ "--site-style-transition-to": boundary.cssVars.to
132263
+ };
132264
+ }
132265
+ function boundaryReserveCssVarsStyle(input) {
132266
+ const before = input.before ? boundaryReserveValueForTreatment(input.before) : null;
132267
+ const after = input.after ? boundaryReserveValueForTreatment(input.after) : null;
132268
+ if (!before && !after) return void 0;
132269
+ return {
132270
+ ...before ? { "--site-style-boundary-before-reserve": before } : {},
132271
+ ...after ? { "--site-style-boundary-after-reserve": after } : {}
132272
+ };
132273
+ }
132274
+ function boundaryReserveValueForTreatment(boundary) {
132275
+ return boundary.metrics.reserveCss;
132276
+ }
132277
+ function transitionCssVarsStyle(content) {
132278
+ const transitionStyles = isObjectRecord$1(content._transitionStyles) ? content._transitionStyles : null;
132279
+ const cssVars = isObjectRecord$1(transitionStyles?.cssVars) ? transitionStyles.cssVars : null;
132280
+ const from = typeof cssVars?.from === "string" ? cssVars.from : null;
132281
+ const to = typeof cssVars?.to === "string" ? cssVars.to : null;
132282
+ if (!from && !to) return void 0;
132283
+ return {
132284
+ ...from ? { "--site-style-transition-from": from } : {},
132285
+ ...to ? { "--site-style-transition-to": to } : {}
132286
+ };
132287
+ }
132288
+ function mergeStyleObjects(left, right) {
132289
+ if (!left) return right;
132290
+ if (!right) return left;
132291
+ return {
132292
+ ...left,
132293
+ ...right
132294
+ };
132295
+ }
132102
132296
  function pageBlockPosition(index, blockCount) {
132103
132297
  if (blockCount <= 1) return "only";
132104
132298
  if (index === 0) return "first";
@@ -134013,52 +134207,53 @@ const containerResponsiveThemeCss = `/*
134013
134207
 
134014
134208
  /* Semantic spacing tokens (replaces Tailwind maps in src/system/spacing.ts) */
134015
134209
  .rb-section-pad-none {
134016
- padding-top: 0;
134017
- padding-bottom: 0;
134210
+ --rb-section-pad-y: 0rem;
134211
+ padding-top: var(--rb-section-pad-y);
134212
+ padding-bottom: var(--rb-section-pad-y);
134018
134213
  }
134019
134214
  .rb-section-pad-compact {
134020
- padding-top: 1.5rem;
134021
- padding-bottom: 1.5rem;
134215
+ --rb-section-pad-y: 1.5rem;
134216
+ padding-top: var(--rb-section-pad-y);
134217
+ padding-bottom: var(--rb-section-pad-y);
134022
134218
  }
134023
134219
  .rb-section-pad-cozy {
134024
- padding-top: 2.5rem;
134025
- padding-bottom: 2.5rem;
134220
+ --rb-section-pad-y: 2.5rem;
134221
+ padding-top: var(--rb-section-pad-y);
134222
+ padding-bottom: var(--rb-section-pad-y);
134026
134223
  }
134027
134224
  .rb-section-pad-medium {
134028
- padding-top: 3rem;
134029
- padding-bottom: 3rem;
134225
+ --rb-section-pad-y: 3rem;
134226
+ padding-top: var(--rb-section-pad-y);
134227
+ padding-bottom: var(--rb-section-pad-y);
134030
134228
  }
134031
134229
  .rb-section-pad-comfortable {
134032
- padding-top: 4rem;
134033
- padding-bottom: 4rem;
134230
+ --rb-section-pad-y: 4rem;
134231
+ padding-top: var(--rb-section-pad-y);
134232
+ padding-bottom: var(--rb-section-pad-y);
134034
134233
  }
134035
134234
  .rb-section-pad-spacious {
134036
- padding-top: 5rem;
134037
- padding-bottom: 5rem;
134235
+ --rb-section-pad-y: 5rem;
134236
+ padding-top: var(--rb-section-pad-y);
134237
+ padding-bottom: var(--rb-section-pad-y);
134038
134238
  }
134039
134239
 
134040
134240
  @container rb-site (min-width: 640px) {
134041
134241
 
134042
134242
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
134043
134243
  .rb-section-pad-compact {
134044
- padding-top: 2rem;
134045
- padding-bottom: 2rem;
134244
+ --rb-section-pad-y: 2rem;
134046
134245
  }
134047
134246
  .rb-section-pad-cozy {
134048
- padding-top: 3.5rem;
134049
- padding-bottom: 3.5rem;
134247
+ --rb-section-pad-y: 3.5rem;
134050
134248
  }
134051
134249
  .rb-section-pad-medium {
134052
- padding-top: 4rem;
134053
- padding-bottom: 4rem;
134250
+ --rb-section-pad-y: 4rem;
134054
134251
  }
134055
134252
  .rb-section-pad-comfortable {
134056
- padding-top: 5rem;
134057
- padding-bottom: 5rem;
134253
+ --rb-section-pad-y: 5rem;
134058
134254
  }
134059
134255
  .rb-section-pad-spacious {
134060
- padding-top: 7rem;
134061
- padding-bottom: 7rem;
134256
+ --rb-section-pad-y: 7rem;
134062
134257
  }
134063
134258
  }
134064
134259
 
@@ -135448,30 +135643,122 @@ const containerResponsiveThemeCss = `/*
135448
135643
  :where(.theme-scope) .header-logo-text {
135449
135644
  font-size: 1.125rem; /* matches rb-text-lg */
135450
135645
  line-height: 1.75rem;
135646
+ margin-inline: -0.18em;
135647
+ padding-inline: 0.18em;
135451
135648
  transition: font-size 300ms var(--motion-ease, ease);
135452
135649
  }
135453
135650
 
135454
- /* Mobile: reduce site title size (~30%) to keep header compact */
135651
+ /* Centered variant uses larger title */
135652
+ :where(.theme-scope) .header-variant-centered .header-logo-text {
135653
+ font-size: 1.25rem; /* matches rb-text-xl */
135654
+ line-height: 1.75rem;
135655
+ }
135656
+
135657
+ :where(.theme-scope) .header-logo-size-compact .header-logo-text {
135658
+ font-size: 0.95rem;
135659
+ line-height: 1.5rem;
135660
+ }
135661
+ :where(.theme-scope) .header-logo-size-standard .header-logo-text {
135662
+ font-size: 1.125rem;
135663
+ line-height: 1.75rem;
135664
+ }
135665
+ :where(.theme-scope) .header-logo-size-generous .header-logo-text {
135666
+ font-size: 1.35rem;
135667
+ line-height: 1.9rem;
135668
+ }
135669
+ :where(.theme-scope) .header-logo-size-display .header-logo-text {
135670
+ font-size: 1.75rem;
135671
+ line-height: 2.25rem;
135672
+ }
135673
+
135674
+ :where(.theme-scope)
135675
+ .header-variant-centered
135676
+ .header-logo-size-compact
135677
+ .header-logo-text {
135678
+ font-size: 1.125rem;
135679
+ line-height: 1.75rem;
135680
+ }
135681
+ :where(.theme-scope)
135682
+ .header-variant-centered
135683
+ .header-logo-size-standard
135684
+ .header-logo-text {
135685
+ font-size: 1.25rem;
135686
+ line-height: 1.75rem;
135687
+ }
135688
+ :where(.theme-scope)
135689
+ .header-variant-centered
135690
+ .header-logo-size-generous
135691
+ .header-logo-text {
135692
+ font-size: 1.6rem;
135693
+ line-height: 2rem;
135694
+ }
135695
+ :where(.theme-scope)
135696
+ .header-variant-centered
135697
+ .header-logo-size-display
135698
+ .header-logo-text {
135699
+ font-size: 2.1rem;
135700
+ line-height: 2.5rem;
135701
+ }
135702
+
135703
+ /* Mobile: reduce site title size to keep header compact */
135455
135704
  @container rb-site (max-width: 767px) {
135456
135705
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
135457
- :where(.theme-scope) .header-logo-text {
135706
+ :where(.theme-scope) .header-logo-text,
135707
+ :where(.theme-scope) .header-logo-size-standard .header-logo-text {
135458
135708
  font-size: 0.8rem;
135459
135709
  line-height: 1.25rem;
135460
135710
  }
135461
135711
 
135462
- :where(.theme-scope) .header-variant-centered .header-logo-text {
135712
+ :where(.theme-scope) .header-logo-size-compact .header-logo-text {
135713
+ font-size: 0.75rem;
135714
+ line-height: 1.15rem;
135715
+ }
135716
+
135717
+ :where(.theme-scope) .header-logo-size-generous .header-logo-text {
135718
+ font-size: 1rem;
135719
+ line-height: 1.4rem;
135720
+ }
135721
+
135722
+ :where(.theme-scope) .header-logo-size-display .header-logo-text {
135723
+ font-size: 1.25rem;
135724
+ line-height: 1.65rem;
135725
+ }
135726
+
135727
+ :where(.theme-scope) .header-variant-centered .header-logo-text,
135728
+ :where(.theme-scope)
135729
+ .header-variant-centered
135730
+ .header-logo-size-standard
135731
+ .header-logo-text {
135463
135732
  font-size: 0.875rem;
135464
135733
  line-height: 1.25rem;
135465
135734
  }
135735
+
135736
+ :where(.theme-scope)
135737
+ .header-variant-centered
135738
+ .header-logo-size-compact
135739
+ .header-logo-text {
135740
+ font-size: 0.8rem;
135741
+ line-height: 1.2rem;
135742
+ }
135743
+
135744
+ :where(.theme-scope)
135745
+ .header-variant-centered
135746
+ .header-logo-size-generous
135747
+ .header-logo-text {
135748
+ font-size: 1.125rem;
135749
+ line-height: 1.5rem;
135750
+ }
135751
+
135752
+ :where(.theme-scope)
135753
+ .header-variant-centered
135754
+ .header-logo-size-display
135755
+ .header-logo-text {
135756
+ font-size: 1.35rem;
135757
+ line-height: 1.75rem;
135758
+ }
135466
135759
  }
135467
135760
  }
135468
135761
 
135469
- /* Centered variant uses larger title */
135470
- :where(.theme-scope) .header-variant-centered .header-logo-text {
135471
- font-size: 1.25rem; /* matches rb-text-xl */
135472
- line-height: 1.75rem;
135473
- }
135474
-
135475
135762
  /* =================================================================
135476
135763
  Shrink on Scroll - Logo & Title
135477
135764
  ================================================================= */
@@ -143823,7 +144110,7 @@ function toPageHydrationBootstrapConfig(props) {
143823
144110
  mediaAssets: props.mediaAssets
143824
144111
  };
143825
144112
  }
143826
- function PageContent({ page, theme, themeTokens: providedTokens, siteId, resolvedData, bookingOfferingPresets, routeMap, pagesByIdentifier, entriesByIdentifier, wrapBlock, registry, usePlaceholders = false, blockOverrides, sdkConfig, customBlocks, supabaseUrl, mediaAssets, apiBaseUrl, portalToken, previewToken, dataContext, themeRuntime = defaultPageThemeRuntime }) {
144113
+ function PageContent({ page, runtimeBoundaries, theme, themeTokens: providedTokens, siteId, resolvedData, bookingOfferingPresets, routeMap, pagesByIdentifier, entriesByIdentifier, wrapBlock, registry, usePlaceholders = false, blockOverrides, sdkConfig, customBlocks, supabaseUrl, mediaAssets, apiBaseUrl, portalToken, previewToken, dataContext, themeRuntime = defaultPageThemeRuntime }) {
143827
144114
  const baseTokens = providedTokens ?? buildThemeRuntime(theme).tokens;
143828
144115
  return renderWithSdkThemeRuntime({
143829
144116
  themeRuntime,
@@ -143831,6 +144118,7 @@ function PageContent({ page, theme, themeTokens: providedTokens, siteId, resolve
143831
144118
  children: /* @__PURE__ */ jsx(PageRenderer, {
143832
144119
  theme,
143833
144120
  page,
144121
+ runtimeBoundaries,
143834
144122
  themeTokens: sdkConfig?.theme?.palette ? {
143835
144123
  ...baseTokens,
143836
144124
  palette: {
@@ -145618,7 +145906,7 @@ z$1.object({ acceptExtraSiteCharge: z$1.boolean().optional() });
145618
145906
  //#region ../surfaces/src/index.ts
145619
145907
  const SURFACE_IDS = ["core", "macadamia"];
145620
145908
  const DEFAULT_SURFACE_ID = "core";
145621
- SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
145909
+ [...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
145622
145910
  const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
145623
145911
  ...[
145624
145912
  "already_refunded",
@@ -145665,6 +145953,7 @@ const VERTICAL_IDS = [
145665
145953
  "training_provider",
145666
145954
  "retreat_centre",
145667
145955
  "music_school",
145956
+ "voice_singing",
145668
145957
  "performing_arts_school",
145669
145958
  "community_wellbeing",
145670
145959
  "venue_event_space"
@@ -145717,6 +146006,11 @@ const VERTICAL_BOOKING_PRESETS = [
145717
146006
  preset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
145718
146007
  preset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
145719
146008
  preset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
146009
+ preset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
146010
+ preset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
146011
+ preset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
146012
+ preset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
146013
+ preset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
145720
146014
  preset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
145721
146015
  preset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
145722
146016
  preset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
@@ -147092,6 +147386,7 @@ async function loadPageWithDeps(deps, params) {
147092
147386
  }
147093
147387
  return {
147094
147388
  page: pageOutline,
147389
+ runtimeBoundaries: pageData.runtimeBoundaries,
147095
147390
  theme: support.theme,
147096
147391
  sdkConfig: support.sdkConfig,
147097
147392
  siteId,
@@ -149819,6 +150114,7 @@ async function loadContentFromContentResponseWithDeps(deps, params) {
149819
150114
  ogImageId: pageRecord.ogImageId ?? null
149820
150115
  },
149821
150116
  page: pageOutline,
150117
+ runtimeBoundaries: pageData.runtimeBoundaries,
149822
150118
  theme: support.theme,
149823
150119
  siteId,
149824
150120
  ...support.customBlocks ? { customBlocks: support.customBlocks } : {},