@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
@@ -7436,7 +7436,9 @@ var DEFAULT_LOCALE, FALLBACK_TIMEZONE, DEFAULT_BOOKING_DATE_TIME_FORMAT, LOCAL_D
7436
7436
  };
7437
7437
  LOCAL_DATE_PATTERN = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
7438
7438
  }));
7439
- var init_person_records = __esmMin((() => {}));
7439
+ var init_person_records = __esmMin((() => {
7440
+ init_result();
7441
+ }));
7440
7442
  var init_rectification = __esmMin((() => {}));
7441
7443
  //#endregion
7442
7444
  //#region ../core/src/location.ts
@@ -8132,7 +8134,9 @@ var init_videoSlotPolicy = __esmMin((() => {
8132
8134
  init_fileDomain();
8133
8135
  init_videoPrep();
8134
8136
  }));
8135
- var init_identifiers = __esmMin((() => {}));
8137
+ var init_identifiers = __esmMin((() => {
8138
+ init_src$3();
8139
+ }));
8136
8140
  //#endregion
8137
8141
  //#region ../media-core/src/url.ts
8138
8142
  function isRelativeDirectImageStoragePath(storagePath) {
@@ -19361,6 +19365,7 @@ var init_rawStyleFields = __esmMin((() => {
19361
19365
  "_sectionStyles",
19362
19366
  "_containerStyles",
19363
19367
  "_cardStyles",
19368
+ "_transitionStyles",
19364
19369
  "styleGroup"
19365
19370
  ];
19366
19371
  themeV2BlockSpecificRawStyleFieldNames = [
@@ -20124,6 +20129,8 @@ var init_schema = __esmMin((() => {
20124
20129
  navStyle: headerNavStyle,
20125
20130
  navColor: themeColorTokenSchema.nullable().optional(),
20126
20131
  navWeight: navFontWeight.default("medium"),
20132
+ navTypography: z$1.enum(["body", "heading"]).optional(),
20133
+ navTextSize: navLinkStyleSchema.shape.textSize,
20127
20134
  container: headerContainerSchema,
20128
20135
  border: headerBorderSchema,
20129
20136
  shadow: componentShadowSchema.optional(),
@@ -21782,9 +21789,38 @@ var init_backgroundAppearance = __esmMin((() => {
21782
21789
  }));
21783
21790
  var init_compositionBudget = __esmMin((() => {
21784
21791
  init_types$17();
21785
- })), init_schemaVersionedJson = __esmMin((() => {})), noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
21792
+ }));
21793
+ var init_schemaVersionedJson = __esmMin((() => {}));
21794
+ //#endregion
21795
+ //#region ../theme-core/src/site-styles/sectionTransitions.ts
21796
+ function boundaryRuntimeMetrics(family, size, heightExpression) {
21797
+ return {
21798
+ family,
21799
+ size,
21800
+ heightCss: heightExpression.includes(" ") ? `calc(${heightExpression})` : heightExpression,
21801
+ reserveCss: `calc((${heightExpression}) / 2)`
21802
+ };
21803
+ }
21804
+ function boundaryRuntimeMetricsForTransition(transition) {
21805
+ return sectionBoundaryRuntimeMetricsByTransition[transition];
21806
+ }
21807
+ var sectionBoundaryRuntimeMetricsByTransition, noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
21786
21808
  var init_sectionTransitions = __esmMin((() => {
21787
21809
  init_types$17();
21810
+ sectionBoundaryRuntimeMetricsByTransition = {
21811
+ none: null,
21812
+ "soft-fade-short": boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"),
21813
+ "soft-fade-long": boundaryRuntimeMetrics("gradient", "spacious", "10rem"),
21814
+ "soft-fade-expansive": boundaryRuntimeMetrics("gradient", "expansive", "14rem"),
21815
+ "wave-edge": boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"),
21816
+ "wave-edge-balanced": boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"),
21817
+ "wave-edge-gentle": boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"),
21818
+ "wave-edge-bold": boundaryRuntimeMetrics("wave", "large", "7rem + 2px"),
21819
+ "wave-edge-drift": boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"),
21820
+ "angle-edge": boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"),
21821
+ "angle-edge-subtle": boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"),
21822
+ "angle-edge-steep": boundaryRuntimeMetrics("angle", "large", "7rem + 2px")
21823
+ };
21788
21824
  noneBoundaryOption = {
21789
21825
  id: asBoundaryOptionId("break:none"),
21790
21826
  label: "None",
@@ -21849,12 +21885,12 @@ function validateUniquePageDesignPins(intent, ctx) {
21849
21885
  label: "block Look pin"
21850
21886
  });
21851
21887
  addDuplicateStringIssues(ctx, {
21852
- values: intent.boundaryPins.map((pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)),
21888
+ values: intent.boundaryPins.map((pin) => boundaryKey$1(pin.previousBlockId, pin.nextBlockId)),
21853
21889
  path: ["boundaryPins"],
21854
21890
  label: "boundary pin"
21855
21891
  });
21856
21892
  }
21857
- function boundaryKey(previousBlockId, nextBlockId) {
21893
+ function boundaryKey$1(previousBlockId, nextBlockId) {
21858
21894
  return makeBoundaryId(previousBlockId, nextBlockId);
21859
21895
  }
21860
21896
  var pageDesignUserPinnedAppearanceChoiceSchema, pageDesignUserPinnedBoundaryChoiceSchema, pageDesignBoundaryTreatmentSchema, pageDesignUserPinnedBoundaryTreatmentChoiceSchema, pageDesignBlockLookPinSchema, pageDesignBoundaryPinSchema, legacyPageDesignBoundaryPinSchema;
@@ -22302,7 +22338,7 @@ function asHeaderStyleId(value) {
22302
22338
  * optional nested styling fields that would otherwise leak from another Look.
22303
22339
  */
22304
22340
  function baseHeader(theme) {
22305
- const { navLinkStyle: _navLinkStyle, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
22341
+ 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;
22306
22342
  return {
22307
22343
  ...header,
22308
22344
  navContainer: {
@@ -22772,12 +22808,12 @@ var init_headerLooks = __esmMin((() => {
22772
22808
  },
22773
22809
  {
22774
22810
  id: asHeaderStyleId("fine-line"),
22775
- label: "Fine Line",
22776
- description: "Light surface with a crisp lower rule and underline hover.",
22811
+ label: "Seamless",
22812
+ description: "Borderless surface with underline hover for a quieter page transition.",
22777
22813
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
22778
22814
  navInteraction: "underline-grow",
22779
- surface: "bordered",
22780
- defaultDepth: "line",
22815
+ surface: "neutral",
22816
+ defaultDepth: "none",
22781
22817
  navTypography: "plain",
22782
22818
  moods: [
22783
22819
  "calm",
@@ -24439,6 +24475,7 @@ var init_runtimeCompiler = __esmMin((() => {
24439
24475
  init_designState();
24440
24476
  init_types$17();
24441
24477
  init_accessibleSurfaces();
24478
+ init_sectionTransitions();
24442
24479
  defaultDesignRuntimeRules = defineDesignRuntimeRules({
24443
24480
  sectionSurfaces: {
24444
24481
  base: {},
@@ -26236,13 +26273,22 @@ function toSiteChromeBackgroundColorTokens(tokenNames) {
26236
26273
  return token ? [token] : [];
26237
26274
  });
26238
26275
  }
26239
- var siteChromeBackgroundColorTokens, quickSiteChromeBackgroundColorTokens, init_siteChromeBackgrounds = __esmMin((() => {
26276
+ var siteChromeBackgroundColorTokens, quickSiteChromeBackgroundColorTokens;
26277
+ var init_siteChromeBackgrounds = __esmMin((() => {
26240
26278
  init_backgroundAppearance();
26241
26279
  init_rawStyleFields();
26242
26280
  siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
26243
26281
  quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
26244
26282
  siteChromeBackgroundColorTokens.filter((token) => !quickSiteChromeBackgroundColorTokens.includes(token));
26245
- })), themeTokenRecipeOptions;
26283
+ }));
26284
+ function mergeHeaderNavTypographyPreference(style, preferences) {
26285
+ return preferences.typography === "inherit" && preferences.fontSize === "inherit" ? style : {
26286
+ ...style,
26287
+ ...preferences.typography === "inherit" ? {} : { typography: preferences.typography },
26288
+ ...preferences.fontSize === "inherit" ? {} : { textSize: preferences.fontSize }
26289
+ };
26290
+ }
26291
+ var init_siteChromeNavPreferences = __esmMin((() => {})), themeTokenRecipeOptions;
26246
26292
  var init_tokenRecipes = __esmMin((() => {
26247
26293
  themeTokenRecipeOptions = {
26248
26294
  palette: [
@@ -26327,6 +26373,7 @@ var init_site_styles = __esmMin((() => {
26327
26373
  init_runtimeCompiler();
26328
26374
  init_sectionTransitions();
26329
26375
  init_siteChromeBackgrounds();
26376
+ init_siteChromeNavPreferences();
26330
26377
  init_siteStyleThemeCompiler();
26331
26378
  init_siteStyleBlockPolicies();
26332
26379
  init_sourceCatalogs();
@@ -43123,6 +43170,7 @@ const eventListingBlockDefinition = {
43123
43170
  } },
43124
43171
  seeAllUrl: { $bind: {
43125
43172
  from: "content.seeAllUrl",
43173
+ fallback: "",
43126
43174
  transforms: [{ id: "links.resolve" }]
43127
43175
  } },
43128
43176
  loadMoreText: { $bind: {
@@ -43516,6 +43564,7 @@ const eventCalendarLayout = [styledSection({
43516
43564
  } },
43517
43565
  seeAllUrl: { $bind: {
43518
43566
  from: "content.seeAllUrl",
43567
+ fallback: "",
43519
43568
  transforms: [{ id: "links.resolve" }]
43520
43569
  } },
43521
43570
  loadMoreText: { $bind: {
@@ -51343,15 +51392,15 @@ function Grid({ as: Comp = "div", cols = {
51343
51392
  }
51344
51393
  //#endregion
51345
51394
  //#region ../blocks/src/system/runtime/nodes/layout.tsx
51346
- const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section$1, {
51395
+ const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section$1, {
51347
51396
  ...props,
51348
51397
  allowOverflow
51349
51398
  });
51350
- const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
51351
- const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
51352
- const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
51353
- const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
51354
- const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
51399
+ const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
51400
+ const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
51401
+ const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
51402
+ const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
51403
+ const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
51355
51404
  //#endregion
51356
51405
  //#region ../path-utils/src/index.ts
51357
51406
  const PATH_SEPARATOR_REGEX$1 = /\./g;
@@ -57180,6 +57229,7 @@ function applyTransformsAndFallback(value, binding, context) {
57180
57229
  viewModel: context.viewModel
57181
57230
  }, transforms);
57182
57231
  if (binding.transforms && binding.transforms.length > 0 && transformed === null) {
57232
+ if (binding.fallback !== void 0) return binding.fallback;
57183
57233
  console.warn("[block-system] Transform returned null for binding", {
57184
57234
  bindingFrom: binding.from,
57185
57235
  transforms: binding.transforms?.map((t) => t.id)
@@ -59094,6 +59144,7 @@ var init_navDropdownSizing = __esmMin((() => {
59094
59144
  //#endregion
59095
59145
  //#region ../theme-core/src/header/generateHeaderCss.ts
59096
59146
  init_resolver$1();
59147
+ init_siteChromeNavPreferences();
59097
59148
  init_shared$5();
59098
59149
  init_breakpoints();
59099
59150
  init_navDropdownSizing();
@@ -59192,7 +59243,7 @@ function generateHeaderRootStyles(header, themeId, tokens, _theme) {
59192
59243
  }
59193
59244
  }
59194
59245
  if (header.positioning === "sticky" || header.positioning === "fixed") {
59195
- const shadowVar = getComponentShadowVar(header.shadow?.elevation ?? "sm");
59246
+ const shadowVar = getComponentShadowVar(header.shadow?.elevation ?? "none");
59196
59247
  if (shadowVar) rules.push(`box-shadow: ${shadowVar};`);
59197
59248
  }
59198
59249
  const baseBlock = `\n${selector} {\n ${rules.join("\n ")}\n}\n`;
@@ -59275,15 +59326,19 @@ function generateLogoTextBehaviorStyles(logoText, themeId) {
59275
59326
  * legacy navStyle, navWeight, navColor, and navEffects settings.
59276
59327
  */
59277
59328
  function generateNavLinkStyles(header, themeId, tokens, theme, contrastTreatment, navTextSize) {
59329
+ const navPreferences = {
59330
+ typography: header.navTypography ?? "inherit",
59331
+ fontSize: header.navTextSize ?? "inherit"
59332
+ };
59278
59333
  if (header.navLinkStyle) return generateNavLinkCSS({
59279
59334
  themeId,
59280
59335
  tokens,
59281
59336
  theme,
59282
- style: contrastTreatment || navTextSize ? {
59337
+ style: mergeHeaderNavTypographyPreference(contrastTreatment || navTextSize ? {
59283
59338
  ...header.navLinkStyle,
59284
59339
  ...contrastTreatment ? { contrastTreatment } : {},
59285
59340
  ...navTextSize ? { textSize: navTextSize } : {}
59286
- } : header.navLinkStyle,
59341
+ } : header.navLinkStyle, navPreferences),
59287
59342
  className: "header-nav-link"
59288
59343
  });
59289
59344
  const navStyle = header.navStyle ?? "minimal";
@@ -59355,7 +59410,7 @@ function generateNavLinkStyles(header, themeId, tokens, theme, contrastTreatment
59355
59410
  themeId,
59356
59411
  tokens,
59357
59412
  theme,
59358
- style: mergedStyle,
59413
+ style: mergeHeaderNavTypographyPreference(mergedStyle, navPreferences),
59359
59414
  className: "header-nav-link"
59360
59415
  });
59361
59416
  }
@@ -59707,6 +59762,7 @@ function generateFooterBottomTextLinkStyles(footer, themeId, tokens) {
59707
59762
  //#endregion
59708
59763
  //#region ../theme-core/src/layout/generateLayoutCss.ts
59709
59764
  init_breakpoints();
59765
+ init_sectionTransitions();
59710
59766
  /**
59711
59767
  * Generate layout CSS for theme scope (background, text color)
59712
59768
  *
@@ -59748,6 +59804,9 @@ const boldWaveTransitionMask = svgDataUrl("<svg viewBox='0 0 1440 72' xmlns='htt
59748
59804
  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>");
59749
59805
  function generateSiteStyleTransitionCss(themeId) {
59750
59806
  const selector = `:where([data-theme-scope="${themeId}"])`;
59807
+ const compactBoundaryHeight = requiredBoundaryHeightCss("wave-edge-gentle");
59808
+ const mediumBoundaryHeight = requiredBoundaryHeightCss("wave-edge");
59809
+ const largeBoundaryHeight = requiredBoundaryHeightCss("wave-edge-bold");
59751
59810
  return `${selector} [data-style-group^='site-style-transition-'] {
59752
59811
  position: relative;
59753
59812
  z-index: 2;
@@ -59755,23 +59814,48 @@ function generateSiteStyleTransitionCss(themeId) {
59755
59814
  --site-style-transition-to: rgb(var(--tb-background));
59756
59815
  }
59757
59816
 
59758
- ${selector} [data-block-transition][data-style-group^='site-style-transition-'] {
59817
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-'] {
59759
59818
  position: relative;
59760
59819
  z-index: 3;
59761
59820
  height: 0;
59762
59821
  pointer-events: none;
59822
+ --site-style-boundary-height: ${mediumBoundaryHeight};
59823
+ }
59824
+
59825
+ ${selector} [data-block][data-site-style-boundary-before] > :where([data-slot='section']) {
59826
+ padding-top: calc(var(--rb-section-pad-y, 0rem) + var(--site-style-boundary-before-reserve, 0rem));
59827
+ }
59828
+
59829
+ ${selector} [data-block][data-site-style-boundary-after] > :where([data-slot='section']) {
59830
+ padding-bottom: calc(var(--rb-section-pad-y, 0rem) + var(--site-style-boundary-after-reserve, 0rem));
59763
59831
  }
59764
59832
 
59765
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-']::after,
59766
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-']::after,
59767
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade']::after {
59833
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-']::before,
59834
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-']::before,
59835
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade']::before {
59768
59836
  content: '';
59769
59837
  position: absolute;
59770
59838
  left: 0;
59771
59839
  right: 0;
59772
- bottom: -2px;
59840
+ top: 0;
59841
+ transform: translateY(-50%);
59842
+ z-index: 0;
59843
+ height: var(--site-style-boundary-height);
59844
+ background: var(--site-style-transition-from);
59845
+ pointer-events: none;
59846
+ }
59847
+
59848
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-']::after,
59849
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-']::after,
59850
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade']::after {
59851
+ content: '';
59852
+ position: absolute;
59853
+ left: 0;
59854
+ right: 0;
59855
+ top: 0;
59856
+ transform: translateY(-50%);
59773
59857
  z-index: 1;
59774
- height: calc(6rem + 2px);
59858
+ height: var(--site-style-boundary-height);
59775
59859
  pointer-events: none;
59776
59860
  }
59777
59861
 
@@ -59809,7 +59893,7 @@ ${selector} [data-style-group$='-to-brand-depth-band'] {
59809
59893
  --site-style-transition-to: rgb(var(--tb-primary-800));
59810
59894
  }
59811
59895
 
59812
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade']::after {
59896
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade']::after {
59813
59897
  /* Fallback for browsers without color-mix(). */
59814
59898
  background: linear-gradient(
59815
59899
  to bottom,
@@ -59825,30 +59909,37 @@ ${selector} [data-block-transition][data-style-group^='site-style-transition-sof
59825
59909
  );
59826
59910
  }
59827
59911
 
59828
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade-long-']::after {
59829
- height: 10rem;
59912
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade-long-'] {
59913
+ --site-style-boundary-height: ${requiredBoundaryHeightCss("soft-fade-long")};
59830
59914
  }
59831
59915
 
59832
- ${selector} [data-block-transition][data-style-group^='site-style-transition-soft-fade-expansive-']::after {
59833
- height: 14rem;
59916
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-soft-fade-expansive-'] {
59917
+ --site-style-boundary-height: ${requiredBoundaryHeightCss("soft-fade-expansive")};
59834
59918
  }
59835
59919
 
59836
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-']::after {
59920
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-']::after {
59921
+ height: calc(var(--site-style-boundary-height) + 2px);
59837
59922
  background: var(--site-style-transition-to);
59838
59923
  clip-path: polygon(0 42%, 100% 8%, 100% 100%, 0 100%);
59839
59924
  }
59840
59925
 
59841
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-subtle-']::after {
59842
- height: calc(4.5rem + 2px);
59926
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-subtle-'] {
59927
+ --site-style-boundary-height: ${compactBoundaryHeight};
59928
+ }
59929
+
59930
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-subtle-']::after {
59843
59931
  clip-path: polygon(0 34%, 100% 18%, 100% 100%, 0 100%);
59844
59932
  }
59845
59933
 
59846
- ${selector} [data-block-transition][data-style-group^='site-style-transition-angle-edge-steep-']::after {
59847
- height: calc(7rem + 2px);
59934
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-steep-'] {
59935
+ --site-style-boundary-height: ${largeBoundaryHeight};
59936
+ }
59937
+
59938
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-angle-edge-steep-']::after {
59848
59939
  clip-path: polygon(0 54%, 100% 0%, 100% 100%, 0 100%);
59849
59940
  }
59850
59941
 
59851
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-']::after {
59942
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-']::after {
59852
59943
  background: var(--site-style-transition-to);
59853
59944
  mask-image: url("${classicWaveTransitionMask}");
59854
59945
  mask-repeat: no-repeat;
@@ -59858,28 +59949,39 @@ ${selector} [data-block-transition][data-style-group^='site-style-transition-wav
59858
59949
  -webkit-mask-size: 100% 100%;
59859
59950
  }
59860
59951
 
59861
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-balanced-']::after {
59952
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-balanced-']::after {
59862
59953
  mask-image: url("${balancedWaveTransitionMask}");
59863
59954
  -webkit-mask-image: url("${balancedWaveTransitionMask}");
59864
59955
  }
59865
59956
 
59866
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-gentle-']::after {
59867
- height: calc(4.5rem + 2px);
59957
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-gentle-'] {
59958
+ --site-style-boundary-height: ${compactBoundaryHeight};
59959
+ }
59960
+
59961
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-gentle-']::after {
59868
59962
  mask-image: url("${gentleWaveTransitionMask}");
59869
59963
  -webkit-mask-image: url("${gentleWaveTransitionMask}");
59870
59964
  }
59871
59965
 
59872
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-bold-']::after {
59873
- height: calc(7rem + 2px);
59966
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-bold-'] {
59967
+ --site-style-boundary-height: ${largeBoundaryHeight};
59968
+ }
59969
+
59970
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-bold-']::after {
59874
59971
  mask-image: url("${boldWaveTransitionMask}");
59875
59972
  -webkit-mask-image: url("${boldWaveTransitionMask}");
59876
59973
  }
59877
59974
 
59878
- ${selector} [data-block-transition][data-style-group^='site-style-transition-wave-edge-drift-']::after {
59975
+ ${selector} [data-block-boundary][data-style-group^='site-style-transition-wave-edge-drift-']::after {
59879
59976
  mask-image: url("${driftWaveTransitionMask}");
59880
59977
  -webkit-mask-image: url("${driftWaveTransitionMask}");
59881
59978
  }`;
59882
59979
  }
59980
+ function requiredBoundaryHeightCss(transition) {
59981
+ const metrics = boundaryRuntimeMetricsForTransition(transition);
59982
+ if (!metrics) throw new Error(`Missing boundary runtime metrics for ${transition}`);
59983
+ return metrics.heightCss;
59984
+ }
59883
59985
  function svgDataUrl(svg) {
59884
59986
  return `data:image/svg+xml,${encodeURIComponent(svg)}`;
59885
59987
  }
@@ -62024,13 +62126,15 @@ init_fragments();
62024
62126
  init_colorStyles();
62025
62127
  init_typeGuards();
62026
62128
  init_media();
62027
- function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wrapBlock, registry, themeTokens: providedThemeTokens, routeMap, blockOverrides, sdkConfig, customBlocks, previewAuthoring }) {
62129
+ function PageRenderer$1({ theme, page, runtimeBoundaries, usePlaceholders = false, dataContext, wrapBlock, wrapBoundary, registry, themeTokens: providedThemeTokens, routeMap, blockOverrides, sdkConfig, customBlocks, previewAuthoring }) {
62028
62130
  const imageResolveContext = React$1.useMemo(() => resolvePageRendererImageResolveContext(dataContext), [
62029
62131
  dataContext?.imageResolveContext,
62030
62132
  dataContext?.mediaAssets,
62031
62133
  dataContext?.siteId,
62032
62134
  dataContext?.supabaseUrl
62033
62135
  ]);
62136
+ const boundaryByAdjacentBlockIds = React$1.useMemo(() => boundaryMapForAdjacentBlockIds(runtimeBoundaries ?? []), [runtimeBoundaries]);
62137
+ const usesRuntimeBoundaries = runtimeBoundaries !== void 0;
62034
62138
  if (!page || page.blocks.length === 0) return /* @__PURE__ */ jsx("div", {
62035
62139
  className: "rb-p-6 rb-caption",
62036
62140
  style: textColorStyle("mutedText"),
@@ -62042,6 +62146,17 @@ function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wra
62042
62146
  return /* @__PURE__ */ jsx("div", { children: page.blocks.map((block, index) => {
62043
62147
  const blockPosition = pageBlockPosition(index, page.blocks.length);
62044
62148
  const blockKey = block.id ?? `${block.kind}-${index}`;
62149
+ const previousBlock = page.blocks[index - 1] ?? null;
62150
+ const nextBlock = page.blocks[index + 1] ?? null;
62151
+ const boundaryBefore = boundaryBetweenBlocks(previousBlock, block, boundaryByAdjacentBlockIds);
62152
+ const boundaryAfter = boundaryBetweenBlocks(block, nextBlock, boundaryByAdjacentBlockIds);
62153
+ const boundaryElement = renderBoundaryAfterBlock({
62154
+ block,
62155
+ nextBlock,
62156
+ blockKey,
62157
+ boundaryByAdjacentBlockIds,
62158
+ wrapBoundary
62159
+ });
62045
62160
  const cleanKind = block.kind.replace(/^block\./, "");
62046
62161
  const definition = getBlockDefinition(block.kind);
62047
62162
  const managesOwnWrapper = definition?.manifest.behaviours?.managesOwnWrapper;
@@ -62064,10 +62179,18 @@ function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wra
62064
62179
  imageResolveContext,
62065
62180
  previewAuthoring
62066
62181
  };
62067
- if (!shouldUseWrapper) return /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps }, blockKey);
62182
+ if (!shouldUseWrapper) {
62183
+ const rendered = /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps }, `${blockKey}:block`);
62184
+ return boundaryElement ? /* @__PURE__ */ jsxs(React$1.Fragment, { children: [rendered, boundaryElement] }, blockKey) : rendered;
62185
+ }
62068
62186
  const wrapperClassName = [`block-${cleanKind}`, wrapBlock ? "group relative" : null].filter(Boolean).join(" ");
62069
62187
  const styleGroup = typeof renderableContent.styleGroup === "string" ? renderableContent.styleGroup : void 0;
62070
62188
  const blockLook = typeof renderableContent.blockLook === "string" ? renderableContent.blockLook : void 0;
62189
+ const transitionStyle = transitionCssVarsStyle(renderableContent);
62190
+ const blockStyle = mergeStyleObjects(transitionStyle, boundaryReserveCssVarsStyle({
62191
+ before: boundaryBefore,
62192
+ after: boundaryAfter
62193
+ }));
62071
62194
  const blockElement = /* @__PURE__ */ jsx("div", {
62072
62195
  className: wrapperClassName,
62073
62196
  "data-block": cleanKind,
@@ -62077,21 +62200,92 @@ function PageRenderer$1({ theme, page, usePlaceholders = false, dataContext, wra
62077
62200
  "data-block-variant": variantKey ?? void 0,
62078
62201
  "data-block-look": blockLook,
62079
62202
  "data-page-block-position": blockPosition,
62203
+ "data-site-style-boundary-before": boundaryBefore?.metrics.size,
62204
+ "data-site-style-boundary-after": boundaryAfter?.metrics.size,
62080
62205
  "data-style-group": styleGroup,
62206
+ style: blockStyle,
62081
62207
  children: /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps })
62082
62208
  }, blockKey);
62083
- if (!isSiteStyleTransitionStyleGroup(styleGroup)) return blockElement;
62209
+ if (boundaryElement) return /* @__PURE__ */ jsxs(React$1.Fragment, { children: [blockElement, boundaryElement] }, blockKey);
62210
+ if (usesRuntimeBoundaries || !isSiteStyleTransitionStyleGroup(styleGroup)) return blockElement;
62084
62211
  return /* @__PURE__ */ jsxs(React$1.Fragment, { children: [blockElement, /* @__PURE__ */ jsx("div", {
62085
62212
  "aria-hidden": "true",
62086
62213
  "data-block-transition": "",
62087
62214
  "data-block-transition-for": block.id ?? blockKey,
62088
- "data-style-group": styleGroup
62215
+ "data-style-group": styleGroup,
62216
+ style: transitionStyle
62089
62217
  })] }, blockKey);
62090
62218
  }) });
62091
62219
  }
62092
62220
  function isSiteStyleTransitionStyleGroup(value) {
62093
62221
  return value?.startsWith("site-style-transition-") === true;
62094
62222
  }
62223
+ function boundaryMapForAdjacentBlockIds(boundaries) {
62224
+ return new Map(boundaries.map((boundary) => [boundaryKey(boundary.previousBlockId, boundary.nextBlockId), boundary]));
62225
+ }
62226
+ function boundaryKey(previousBlockId, nextBlockId) {
62227
+ return `${previousBlockId}\u0000${nextBlockId}`;
62228
+ }
62229
+ function boundaryBetweenBlocks(previousBlock, nextBlock, boundaryByAdjacentBlockIds) {
62230
+ const previousBlockId = previousBlock?.id ?? null;
62231
+ const nextBlockId = nextBlock?.id ?? null;
62232
+ if (!previousBlockId || !nextBlockId) return null;
62233
+ return boundaryByAdjacentBlockIds.get(boundaryKey(previousBlockId, nextBlockId)) ?? null;
62234
+ }
62235
+ function renderBoundaryAfterBlock(input) {
62236
+ const previousBlockId = input.block.id;
62237
+ const nextBlockId = input.nextBlock?.id ?? null;
62238
+ if (!previousBlockId || !nextBlockId) return null;
62239
+ const boundary = input.boundaryByAdjacentBlockIds.get(boundaryKey(previousBlockId, nextBlockId));
62240
+ if (!boundary) return null;
62241
+ const rendered = /* @__PURE__ */ jsx("div", {
62242
+ "aria-hidden": "true",
62243
+ "data-block-boundary": "",
62244
+ "data-boundary-id": boundary.boundaryId,
62245
+ "data-boundary-previous-block-id": boundary.previousBlockId,
62246
+ "data-boundary-next-block-id": boundary.nextBlockId,
62247
+ "data-style-group": boundary.styleGroup,
62248
+ style: boundaryCssVarsStyle(boundary)
62249
+ }, `${input.blockKey}:boundary`);
62250
+ return input.wrapBoundary ? input.wrapBoundary(boundary, rendered) : rendered;
62251
+ }
62252
+ function boundaryCssVarsStyle(boundary) {
62253
+ return {
62254
+ "--site-style-transition-from": boundary.cssVars.from,
62255
+ "--site-style-transition-to": boundary.cssVars.to
62256
+ };
62257
+ }
62258
+ function boundaryReserveCssVarsStyle(input) {
62259
+ const before = input.before ? boundaryReserveValueForTreatment(input.before) : null;
62260
+ const after = input.after ? boundaryReserveValueForTreatment(input.after) : null;
62261
+ if (!before && !after) return void 0;
62262
+ return {
62263
+ ...before ? { "--site-style-boundary-before-reserve": before } : {},
62264
+ ...after ? { "--site-style-boundary-after-reserve": after } : {}
62265
+ };
62266
+ }
62267
+ function boundaryReserveValueForTreatment(boundary) {
62268
+ return boundary.metrics.reserveCss;
62269
+ }
62270
+ function transitionCssVarsStyle(content) {
62271
+ const transitionStyles = isObjectRecord(content._transitionStyles) ? content._transitionStyles : null;
62272
+ const cssVars = isObjectRecord(transitionStyles?.cssVars) ? transitionStyles.cssVars : null;
62273
+ const from = typeof cssVars?.from === "string" ? cssVars.from : null;
62274
+ const to = typeof cssVars?.to === "string" ? cssVars.to : null;
62275
+ if (!from && !to) return void 0;
62276
+ return {
62277
+ ...from ? { "--site-style-transition-from": from } : {},
62278
+ ...to ? { "--site-style-transition-to": to } : {}
62279
+ };
62280
+ }
62281
+ function mergeStyleObjects(left, right) {
62282
+ if (!left) return right;
62283
+ if (!right) return left;
62284
+ return {
62285
+ ...left,
62286
+ ...right
62287
+ };
62288
+ }
62095
62289
  function pageBlockPosition(index, blockCount) {
62096
62290
  if (blockCount <= 1) return "only";
62097
62291
  if (index === 0) return "first";
@@ -64037,52 +64231,53 @@ const containerResponsiveThemeCss = `/*
64037
64231
 
64038
64232
  /* Semantic spacing tokens (replaces Tailwind maps in src/system/spacing.ts) */
64039
64233
  .rb-section-pad-none {
64040
- padding-top: 0;
64041
- padding-bottom: 0;
64234
+ --rb-section-pad-y: 0rem;
64235
+ padding-top: var(--rb-section-pad-y);
64236
+ padding-bottom: var(--rb-section-pad-y);
64042
64237
  }
64043
64238
  .rb-section-pad-compact {
64044
- padding-top: 1.5rem;
64045
- padding-bottom: 1.5rem;
64239
+ --rb-section-pad-y: 1.5rem;
64240
+ padding-top: var(--rb-section-pad-y);
64241
+ padding-bottom: var(--rb-section-pad-y);
64046
64242
  }
64047
64243
  .rb-section-pad-cozy {
64048
- padding-top: 2.5rem;
64049
- padding-bottom: 2.5rem;
64244
+ --rb-section-pad-y: 2.5rem;
64245
+ padding-top: var(--rb-section-pad-y);
64246
+ padding-bottom: var(--rb-section-pad-y);
64050
64247
  }
64051
64248
  .rb-section-pad-medium {
64052
- padding-top: 3rem;
64053
- padding-bottom: 3rem;
64249
+ --rb-section-pad-y: 3rem;
64250
+ padding-top: var(--rb-section-pad-y);
64251
+ padding-bottom: var(--rb-section-pad-y);
64054
64252
  }
64055
64253
  .rb-section-pad-comfortable {
64056
- padding-top: 4rem;
64057
- padding-bottom: 4rem;
64254
+ --rb-section-pad-y: 4rem;
64255
+ padding-top: var(--rb-section-pad-y);
64256
+ padding-bottom: var(--rb-section-pad-y);
64058
64257
  }
64059
64258
  .rb-section-pad-spacious {
64060
- padding-top: 5rem;
64061
- padding-bottom: 5rem;
64259
+ --rb-section-pad-y: 5rem;
64260
+ padding-top: var(--rb-section-pad-y);
64261
+ padding-bottom: var(--rb-section-pad-y);
64062
64262
  }
64063
64263
 
64064
64264
  @container rb-site (min-width: 640px) {
64065
64265
 
64066
64266
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
64067
64267
  .rb-section-pad-compact {
64068
- padding-top: 2rem;
64069
- padding-bottom: 2rem;
64268
+ --rb-section-pad-y: 2rem;
64070
64269
  }
64071
64270
  .rb-section-pad-cozy {
64072
- padding-top: 3.5rem;
64073
- padding-bottom: 3.5rem;
64271
+ --rb-section-pad-y: 3.5rem;
64074
64272
  }
64075
64273
  .rb-section-pad-medium {
64076
- padding-top: 4rem;
64077
- padding-bottom: 4rem;
64274
+ --rb-section-pad-y: 4rem;
64078
64275
  }
64079
64276
  .rb-section-pad-comfortable {
64080
- padding-top: 5rem;
64081
- padding-bottom: 5rem;
64277
+ --rb-section-pad-y: 5rem;
64082
64278
  }
64083
64279
  .rb-section-pad-spacious {
64084
- padding-top: 7rem;
64085
- padding-bottom: 7rem;
64280
+ --rb-section-pad-y: 7rem;
64086
64281
  }
64087
64282
  }
64088
64283
 
@@ -65472,30 +65667,122 @@ const containerResponsiveThemeCss = `/*
65472
65667
  :where(.theme-scope) .header-logo-text {
65473
65668
  font-size: 1.125rem; /* matches rb-text-lg */
65474
65669
  line-height: 1.75rem;
65670
+ margin-inline: -0.18em;
65671
+ padding-inline: 0.18em;
65475
65672
  transition: font-size 300ms var(--motion-ease, ease);
65476
65673
  }
65477
65674
 
65478
- /* Mobile: reduce site title size (~30%) to keep header compact */
65675
+ /* Centered variant uses larger title */
65676
+ :where(.theme-scope) .header-variant-centered .header-logo-text {
65677
+ font-size: 1.25rem; /* matches rb-text-xl */
65678
+ line-height: 1.75rem;
65679
+ }
65680
+
65681
+ :where(.theme-scope) .header-logo-size-compact .header-logo-text {
65682
+ font-size: 0.95rem;
65683
+ line-height: 1.5rem;
65684
+ }
65685
+ :where(.theme-scope) .header-logo-size-standard .header-logo-text {
65686
+ font-size: 1.125rem;
65687
+ line-height: 1.75rem;
65688
+ }
65689
+ :where(.theme-scope) .header-logo-size-generous .header-logo-text {
65690
+ font-size: 1.35rem;
65691
+ line-height: 1.9rem;
65692
+ }
65693
+ :where(.theme-scope) .header-logo-size-display .header-logo-text {
65694
+ font-size: 1.75rem;
65695
+ line-height: 2.25rem;
65696
+ }
65697
+
65698
+ :where(.theme-scope)
65699
+ .header-variant-centered
65700
+ .header-logo-size-compact
65701
+ .header-logo-text {
65702
+ font-size: 1.125rem;
65703
+ line-height: 1.75rem;
65704
+ }
65705
+ :where(.theme-scope)
65706
+ .header-variant-centered
65707
+ .header-logo-size-standard
65708
+ .header-logo-text {
65709
+ font-size: 1.25rem;
65710
+ line-height: 1.75rem;
65711
+ }
65712
+ :where(.theme-scope)
65713
+ .header-variant-centered
65714
+ .header-logo-size-generous
65715
+ .header-logo-text {
65716
+ font-size: 1.6rem;
65717
+ line-height: 2rem;
65718
+ }
65719
+ :where(.theme-scope)
65720
+ .header-variant-centered
65721
+ .header-logo-size-display
65722
+ .header-logo-text {
65723
+ font-size: 2.1rem;
65724
+ line-height: 2.5rem;
65725
+ }
65726
+
65727
+ /* Mobile: reduce site title size to keep header compact */
65479
65728
  @container rb-site (max-width: 767px) {
65480
65729
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
65481
- :where(.theme-scope) .header-logo-text {
65730
+ :where(.theme-scope) .header-logo-text,
65731
+ :where(.theme-scope) .header-logo-size-standard .header-logo-text {
65482
65732
  font-size: 0.8rem;
65483
65733
  line-height: 1.25rem;
65484
65734
  }
65485
65735
 
65486
- :where(.theme-scope) .header-variant-centered .header-logo-text {
65736
+ :where(.theme-scope) .header-logo-size-compact .header-logo-text {
65737
+ font-size: 0.75rem;
65738
+ line-height: 1.15rem;
65739
+ }
65740
+
65741
+ :where(.theme-scope) .header-logo-size-generous .header-logo-text {
65742
+ font-size: 1rem;
65743
+ line-height: 1.4rem;
65744
+ }
65745
+
65746
+ :where(.theme-scope) .header-logo-size-display .header-logo-text {
65747
+ font-size: 1.25rem;
65748
+ line-height: 1.65rem;
65749
+ }
65750
+
65751
+ :where(.theme-scope) .header-variant-centered .header-logo-text,
65752
+ :where(.theme-scope)
65753
+ .header-variant-centered
65754
+ .header-logo-size-standard
65755
+ .header-logo-text {
65487
65756
  font-size: 0.875rem;
65488
65757
  line-height: 1.25rem;
65489
65758
  }
65759
+
65760
+ :where(.theme-scope)
65761
+ .header-variant-centered
65762
+ .header-logo-size-compact
65763
+ .header-logo-text {
65764
+ font-size: 0.8rem;
65765
+ line-height: 1.2rem;
65766
+ }
65767
+
65768
+ :where(.theme-scope)
65769
+ .header-variant-centered
65770
+ .header-logo-size-generous
65771
+ .header-logo-text {
65772
+ font-size: 1.125rem;
65773
+ line-height: 1.5rem;
65774
+ }
65775
+
65776
+ :where(.theme-scope)
65777
+ .header-variant-centered
65778
+ .header-logo-size-display
65779
+ .header-logo-text {
65780
+ font-size: 1.35rem;
65781
+ line-height: 1.75rem;
65782
+ }
65490
65783
  }
65491
65784
  }
65492
65785
 
65493
- /* Centered variant uses larger title */
65494
- :where(.theme-scope) .header-variant-centered .header-logo-text {
65495
- font-size: 1.25rem; /* matches rb-text-xl */
65496
- line-height: 1.75rem;
65497
- }
65498
-
65499
65786
  /* =================================================================
65500
65787
  Shrink on Scroll - Logo & Title
65501
65788
  ================================================================= */
@@ -74418,7 +74705,7 @@ z$1.object({ acceptExtraSiteCharge: z$1.boolean().optional() });
74418
74705
  //#region ../surfaces/src/index.ts
74419
74706
  const SURFACE_IDS = ["core", "macadamia"];
74420
74707
  const DEFAULT_SURFACE_ID = "core";
74421
- SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID);
74708
+ [...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
74422
74709
  //#endregion
74423
74710
  //#region ../api/src/url.ts
74424
74711
  /**
@@ -74967,6 +75254,7 @@ const VERTICAL_IDS = [
74967
75254
  "training_provider",
74968
75255
  "retreat_centre",
74969
75256
  "music_school",
75257
+ "voice_singing",
74970
75258
  "performing_arts_school",
74971
75259
  "community_wellbeing",
74972
75260
  "venue_event_space"
@@ -75019,6 +75307,11 @@ const VERTICAL_BOOKING_PRESETS = [
75019
75307
  preset("music_school.terms", "music_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date group courses."),
75020
75308
  preset("music_school.workshops", "music_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
75021
75309
  preset("music_school.performances", "music_school", "performance", "Performance", "Performances", "Concerts, recitals, showcases, or ticketed performances."),
75310
+ preset("voice_singing.lessons", "voice_singing", "appointment", "Voice session", "Voice sessions", "One-to-one singing lessons, voice coaching, or private practice sessions."),
75311
+ preset("voice_singing.classes", "voice_singing", "class", "Ongoing weekly session", "Ongoing weekly sessions", "Regular choirs, voice circles, community singing, or group practice."),
75312
+ preset("voice_singing.terms", "voice_singing", "course", "Singing term", "Singing terms", "Multi-week choir terms, voice courses, or fixed-date group programmes."),
75313
+ preset("voice_singing.workshops", "voice_singing", "workshop", "Workshop", "Workshops", "One-off singing workshops, voice journeys, or devotional singing sessions."),
75314
+ preset("voice_singing.performances", "voice_singing", "performance", "Performance", "Performances", "Choir concerts, sharing events, recitals, or community performances."),
75022
75315
  preset("performing_arts_school.classes", "performing_arts_school", "class", "Class", "Classes", "Regular group classes, rehearsals, or weekly sessions."),
75023
75316
  preset("performing_arts_school.terms", "performing_arts_school", "course", "Term", "Terms", "Multi-week term blocks or fixed-date course groups."),
75024
75317
  preset("performing_arts_school.workshops", "performing_arts_school", "workshop", "Workshop", "Workshops", "One-off workshops, masterclasses, or intensives."),
@@ -76137,6 +76430,7 @@ function usePage(params) {
76137
76430
  loading: false,
76138
76431
  error: null,
76139
76432
  page: pageOutline,
76433
+ runtimeBoundaries: pageData.runtimeBoundaries,
76140
76434
  theme: site.theme,
76141
76435
  siteId,
76142
76436
  resolvedData,
@@ -76340,6 +76634,7 @@ function useContent(params) {
76340
76634
  error: null,
76341
76635
  type: "page",
76342
76636
  page: pageOutline,
76637
+ runtimeBoundaries: pageData.runtimeBoundaries,
76343
76638
  entry: null,
76344
76639
  theme: site.theme,
76345
76640
  siteId,
@@ -153526,7 +153821,7 @@ function toPageHydrationBootstrapConfig(props) {
153526
153821
  mediaAssets: props.mediaAssets
153527
153822
  };
153528
153823
  }
153529
- 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 }) {
153824
+ 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 }) {
153530
153825
  const baseTokens = providedTokens ?? buildThemeRuntime(theme).tokens;
153531
153826
  return renderWithSdkThemeRuntime({
153532
153827
  themeRuntime,
@@ -153534,6 +153829,7 @@ function PageContent({ page, theme, themeTokens: providedTokens, siteId, resolve
153534
153829
  children: /* @__PURE__ */ jsx(PageRenderer, {
153535
153830
  theme,
153536
153831
  page,
153832
+ runtimeBoundaries,
153537
153833
  themeTokens: sdkConfig?.theme?.palette ? {
153538
153834
  ...baseTokens,
153539
153835
  palette: {
@@ -153739,7 +154035,7 @@ var SimpleCache = class {
153739
154035
  * 1. This constant
153740
154036
  * 2. The "version" field in package.json
153741
154037
  */
153742
- const SDK_VERSION = "0.101.0";
154038
+ const SDK_VERSION = "0.103.0";
153743
154039
  //#endregion
153744
154040
  //#region src/client/error.ts
153745
154041
  let _Symbol$for;