@riverbankcms/sdk 0.107.0 → 0.108.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 (159) hide show
  1. package/dist/{PreviewEditorSidebar-DpAbAl08.mjs → PreviewEditorSidebar-BBT-kZAM.mjs} +46 -11
  2. package/dist/{PreviewEditorUI-O7cn6Xxv.mjs → PreviewEditorUI-D69xNKT2.mjs} +10 -9
  3. package/dist/{PreviewQueryProvider-D0tnKl0t.mjs → PreviewQueryProvider-RRu7wyQ5.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-CVB7urtl.mjs → SdkPreviewModeRuntime-CuDjXH6o.mjs} +426 -72
  5. package/dist/{SiteChromeCustomizeContext-C_sizso-.mjs → SiteChromeCustomizeContext-BQUY2dEk.mjs} +3865 -544
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +3712 -220
  7. package/dist/_dts/api/src/blocks.d.ts +41 -7
  8. package/dist/_dts/api/src/bookingRecords.d.ts +180 -115
  9. package/dist/_dts/api/src/cache-tags.d.ts +3 -0
  10. package/dist/_dts/api/src/contentRuntime.d.ts +19 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +99 -0
  12. package/dist/_dts/api/src/footer-settings.d.ts +1 -0
  13. package/dist/_dts/api/src/footerSettings.d.ts +8 -0
  14. package/dist/_dts/api/src/index.d.ts +5 -2
  15. package/dist/_dts/api/src/navigation/contracts.d.ts +3 -3
  16. package/dist/_dts/api/src/previewContentContract.d.ts +4 -0
  17. package/dist/_dts/api/src/sdkContracts.d.ts +62 -0
  18. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  19. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +143 -55
  20. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -1
  21. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +41 -1
  22. package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +0 -1
  23. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -0
  24. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +50 -0
  25. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +9 -48
  26. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/icons/social.d.ts +5 -0
  29. package/dist/_dts/blocks/src/system/icons/svg.d.ts +1 -0
  30. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +2 -2
  31. package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +13 -0
  32. package/dist/_dts/blocks/src/system/node/fragments/footerNav.d.ts +2 -0
  33. package/dist/_dts/blocks/src/system/node/fragments/styledContainer.d.ts +4 -4
  34. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +3 -12
  35. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -1
  37. package/dist/_dts/blocks/src/system/types/link.d.ts +3 -3
  38. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +14 -0
  39. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +27 -8
  40. package/dist/_dts/content-editor/src/footerComposer.d.ts +56 -0
  41. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +1 -1
  42. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +5 -5
  43. package/dist/_dts/content-editor/src/index.d.ts +2 -0
  44. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +3 -1
  45. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +20 -36
  46. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +5 -1
  47. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +11 -0
  48. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  49. package/dist/_dts/content-model/src/definitions/shared.d.ts +3 -0
  50. package/dist/_dts/core/src/branded.d.ts +3 -0
  51. package/dist/_dts/core/src/editor-state.d.ts +4 -0
  52. package/dist/_dts/core/src/footer-composition.d.ts +143 -0
  53. package/dist/_dts/core/src/index.d.ts +2 -0
  54. package/dist/_dts/core/src/public-profile.d.ts +73 -0
  55. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3043 -2941
  56. package/dist/_dts/db/src/schemas/forms.d.ts +10 -10
  57. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +5 -0
  58. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -0
  59. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -1
  60. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +2 -1
  61. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +2 -1
  62. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +10 -0
  63. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  64. package/dist/_dts/path-utils/src/index.d.ts +5 -0
  65. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +5 -0
  66. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  67. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
  68. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
  69. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
  70. package/dist/_dts/preview-next/src/client/preview/previewErrorMessages.d.ts +4 -0
  71. package/dist/_dts/sdk/src/cli/content/reader.d.ts +1 -0
  72. package/dist/_dts/sdk/src/client/management/blocks.d.ts +14 -1
  73. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -0
  74. package/dist/_dts/sdk/src/client/management/types.d.ts +15 -1
  75. package/dist/_dts/sdk/src/config/content-types.d.ts +2 -0
  76. package/dist/_dts/sdk/src/config/content-validation.d.ts +4 -0
  77. package/dist/_dts/sdk/src/navigation/index.d.ts +2 -0
  78. package/dist/_dts/sdk/src/public-api/contracts.d.ts +3 -2
  79. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -1
  80. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
  81. package/dist/_dts/sdk/src/version.d.ts +1 -1
  82. package/dist/_dts/site-commands/src/commands.d.ts +13 -10
  83. package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
  84. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  85. package/dist/_dts/theme-core/src/buttons/personalities/two-tone-pill.d.ts +17 -0
  86. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
  87. package/dist/_dts/theme-core/src/buttons/types.d.ts +3 -3
  88. package/dist/_dts/theme-core/src/cards/types.d.ts +3 -3
  89. package/dist/_dts/theme-core/src/footer/mode.d.ts +15 -0
  90. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  92. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -30
  93. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/schema.d.ts +1186 -34
  95. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +12 -1
  96. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +15 -0
  97. package/dist/cli/index.mjs +760 -374
  98. package/dist/client/{DiscountCodeDisclosure-BwGkvmVH.mjs → DiscountCodeDisclosure-D6TOf6Hi.mjs} +1 -1
  99. package/dist/client/{EventCombined.client-JnWE6Hzc.mjs → EventCombined.client-Dao3zxRk.mjs} +3 -3
  100. package/dist/client/{EventListing.client-DQewc_kg.mjs → EventListing.client-B2NNt4y1.mjs} +2 -2
  101. package/dist/client/{LeafletStaticMap-DPAU3SFt.mjs → LeafletStaticMap-BhwFo16w.mjs} +1 -1
  102. package/dist/client/{MagicLinkForm-D4kpWCbW.mjs → MagicLinkForm-BWnB7cMR.mjs} +2 -2
  103. package/dist/client/{StepIndicator-CBlkb4rA.mjs → StepIndicator-TzRiQ0BY.mjs} +2 -2
  104. package/dist/client/{accordion-DAIBVpTS.mjs → accordion-BPy-AJ4_.mjs} +1 -1
  105. package/dist/client/{bookingForm-DZ-4l5_1.mjs → bookingForm-BL4PGZds.mjs} +6 -6
  106. package/dist/client/bookings.mjs +143 -94
  107. package/dist/client/{buttons-DJgynGHQ.mjs → buttons-EBjyslaX.mjs} +144 -95
  108. package/dist/client/{carousel-D-SLfX8r.mjs → carousel-C2b7Cn9-.mjs} +1 -1
  109. package/dist/client/{cart-CEgbgJhX.mjs → cart-BQcbXIVD.mjs} +3 -3
  110. package/dist/client/{checkout-CXWrCRAA.mjs → checkout-DEmpGRJu.mjs} +3 -3
  111. package/dist/client/client.mjs +827 -434
  112. package/dist/client/{courseRegistration-DVmLrRVz.mjs → courseRegistration-BqRZPmsq.mjs} +7 -7
  113. package/dist/client/{eventCalendar-DCuyPY_c.mjs → eventCalendar-B8N_tSl5.mjs} +5 -5
  114. package/dist/client/{eventCombined-kP2CA2D4.mjs → eventCombined-Gjn6gtq7.mjs} +2 -2
  115. package/dist/client/{eventDetails-DU0LeF5e.mjs → eventDetails-M-VCxA-r.mjs} +3 -3
  116. package/dist/client/{eventListing-CcHF87BI.mjs → eventListing-DR19hqYi.mjs} +2 -2
  117. package/dist/client/{eventRegistration-DJnR0yFH.mjs → eventRegistration-BR02a0k3.mjs} +7 -7
  118. package/dist/client/{form-CH1lCusH.mjs → form-LY2xIbwg.mjs} +2 -2
  119. package/dist/client/{headerSection-CBPFZoku.mjs → headerSection-CYwwXJfh.mjs} +3 -3
  120. package/dist/client/hooks.mjs +377 -362
  121. package/dist/client/{locationMap-Cx1hBg5n.mjs → locationMap-DWnBXrFq.mjs} +2 -2
  122. package/dist/client/{newsletterForm-1ZL_ti9u.mjs → newsletterForm-D9s-fQ2P.mjs} +2 -2
  123. package/dist/client/{pricing-BIbzmV0G.mjs → pricing-DDq80oYc.mjs} +1 -1
  124. package/dist/client/{productDetail-BTh5gHBV.mjs → productDetail-B0SbWd45.mjs} +3 -3
  125. package/dist/client/{productList-Cc7OMrqN.mjs → productList-PwYlZn0y.mjs} +3 -3
  126. package/dist/client/{propsDecoder-oR-M-ISN.mjs → propsDecoder-BRWBiH7i.mjs} +33 -9
  127. package/dist/client/rendering/client.mjs +247 -40
  128. package/dist/client/rendering/islands.mjs +18 -18
  129. package/dist/client/rendering.mjs +478 -270
  130. package/dist/client/{shop-CQ_YbCnn.mjs → shop-CMwZPYME.mjs} +6 -6
  131. package/dist/client/{shop-commerce-BM-AoD3M.mjs → shop-commerce-BuxsFate.mjs} +5 -5
  132. package/dist/client/{shop-commerce-store-DFMQhU5p.mjs → shop-commerce-store-boYlEJ91.mjs} +1 -1
  133. package/dist/client/{shopShared-D0SKO2Cu.mjs → shopShared-D2naaOes.mjs} +2 -2
  134. package/dist/client/{useDiscountCodeUi-CrG4_ARt.mjs → useDiscountCodeUi-D9RHpVoj.mjs} +1 -1
  135. package/dist/client/{useEventFilters-CxK8Fekl.mjs → useEventFilters-igGiK1re.mjs} +3 -3
  136. package/dist/client/{usePolling-jcVryNgZ.mjs → usePolling-CI7MbsFB.mjs} +2 -2
  137. package/dist/preview-next/before-render.mjs +178 -0
  138. package/dist/preview-next/client/runtime.mjs +4 -4
  139. package/dist/preview-next/middleware.mjs +178 -0
  140. package/dist/{previewAuthStore-BPcJPzdz.mjs → previewAuthStore-a_cBD28m.mjs} +178 -0
  141. package/dist/{sdk-runtime-C39Rsk-x.mjs → sdk-runtime-MBzD-GmP.mjs} +2 -2
  142. package/dist/{separator-BoMSQnsP.mjs → separator-5ahRBC85.mjs} +1 -1
  143. package/dist/server/components.mjs +556 -366
  144. package/dist/server/config-validation.mjs +384 -363
  145. package/dist/server/config.mjs +384 -364
  146. package/dist/server/data.mjs +377 -362
  147. package/dist/server/index.mjs +179 -1
  148. package/dist/server/navigation.mjs +9 -3
  149. package/dist/server/next.mjs +1384 -995
  150. package/dist/server/page-converter.mjs +368 -355
  151. package/dist/server/prebuild.mjs +1 -1
  152. package/dist/server/rendering/server.mjs +539 -360
  153. package/dist/server/rendering.mjs +556 -366
  154. package/dist/server/routing.mjs +613 -543
  155. package/dist/server/server.mjs +554 -361
  156. package/dist/server/theme-bridge.mjs +189 -98
  157. package/dist/server/theme.mjs +161 -95
  158. package/dist/styles/index.css +7 -1
  159. package/package.json +1 -1
@@ -509,7 +509,7 @@ function encodePublicProductCategorySelector(selector) {
509
509
  };
510
510
  }
511
511
  }
512
- function isRecord$20(value) {
512
+ function isRecord$22(value) {
513
513
  return typeof value === "object" && value !== null;
514
514
  }
515
515
  function isJsonResponseContentType(contentType) {
@@ -533,8 +533,8 @@ async function parseJsonBody(response) {
533
533
  }
534
534
  }
535
535
  function getBlockApiErrorDetails(data) {
536
- if (!isRecord$20(data)) return {};
537
- const nestedError = isRecord$20(data.error) ? data.error : void 0;
536
+ if (!isRecord$22(data)) return {};
537
+ const nestedError = isRecord$22(data.error) ? data.error : void 0;
538
538
  return {
539
539
  message: typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0,
540
540
  code: typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0
@@ -1496,10 +1496,10 @@ var init_colorStyles = __esmMin((() => {
1496
1496
  init_api();
1497
1497
  init_clsx();
1498
1498
  init_colorStyles();
1499
- const Section$1 = forwardRef(function Section({ as: Comp = "section", children, background, className = "", allowOverflow = false, style, "data-slot": dataSlot }, ref) {
1499
+ const Section$1 = forwardRef(function Section({ as: Comp = "section", children, background, className = "", style, "data-slot": dataSlot }, ref) {
1500
1500
  return /* @__PURE__ */ jsx(Comp, {
1501
1501
  ref,
1502
- className: clsx("rb-relative rb-isolate", allowOverflow ? "rb-overflow-visible" : "rb-overflow-hidden", className),
1502
+ className: clsx("rb-relative rb-isolate rb-overflow-visible", className),
1503
1503
  style: mergeStyles(typeof background === "string" && background.trim().length > 0 ? backgroundColorStyle(background.trim()) : void 0, style),
1504
1504
  "data-slot": dataSlot ?? "section",
1505
1505
  children
@@ -1623,10 +1623,7 @@ function Grid({ as: Comp = "div", cols = {
1623
1623
  }
1624
1624
  //#endregion
1625
1625
  //#region ../blocks/src/system/runtime/nodes/layout.tsx
1626
- const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section$1, {
1627
- ...props,
1628
- allowOverflow
1629
- });
1626
+ const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Section$1, { ...props });
1630
1627
  const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
1631
1628
  const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
1632
1629
  const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
@@ -3566,6 +3563,53 @@ var init_soft_pill = __esmMin((() => {
3566
3563
  ]
3567
3564
  }
3568
3565
  });
3566
+ }));
3567
+ //#endregion
3568
+ //#region ../theme-core/src/buttons/personalities/two-tone-pill.ts
3569
+ var solidSecondary, twoTonePill;
3570
+ var init_two_tone_pill = __esmMin((() => {
3571
+ init_soft_pill();
3572
+ init_types$16();
3573
+ solidSecondary = {
3574
+ id: "secondary",
3575
+ name: "Secondary",
3576
+ enabled: true,
3577
+ priority: 2,
3578
+ background: {
3579
+ type: "solid",
3580
+ colorToken: "secondary"
3581
+ },
3582
+ textColorToken: "onSecondary",
3583
+ borderRadius: "rounded-full",
3584
+ shadow: {
3585
+ elevation: "none",
3586
+ softness: null,
3587
+ position: "bottom"
3588
+ },
3589
+ effects: {
3590
+ hover: [{
3591
+ effectId: "background-on-hover-alpha",
3592
+ options: {
3593
+ colorToken: "secondary",
3594
+ opacity: 88
3595
+ }
3596
+ }],
3597
+ active: [{
3598
+ effectId: "scale-down",
3599
+ options: { scale: "0.98" }
3600
+ }]
3601
+ }
3602
+ };
3603
+ twoTonePill = defineButtonPersonality({
3604
+ id: "two-tone-pill",
3605
+ name: "Two-tone Pill",
3606
+ description: "Rounded pills with distinct solid primary and secondary brand colours.",
3607
+ tags: softPill.tags,
3608
+ buttonSystem: {
3609
+ ...softPill.buttonSystem,
3610
+ variants: softPill.buttonSystem.variants.map((variant) => variant.id === "secondary" ? solidSecondary : variant)
3611
+ }
3612
+ });
3569
3613
  })), buttonPersonalities;
3570
3614
  var init_personalities = __esmMin((() => {
3571
3615
  init_brushed_wash();
@@ -3580,9 +3624,11 @@ var init_personalities = __esmMin((() => {
3580
3624
  init_quiet_arrow();
3581
3625
  init_showtime_pill();
3582
3626
  init_soft_pill();
3627
+ init_two_tone_pill();
3583
3628
  init_types$16();
3584
3629
  buttonPersonalities = [
3585
3630
  softPill,
3631
+ twoTonePill,
3586
3632
  earthPill,
3587
3633
  confidentChip,
3588
3634
  editorialLink,
@@ -3624,18 +3670,43 @@ init_buttons();
3624
3670
  //#region ../path-utils/src/index.ts
3625
3671
  const PATH_SEPARATOR_REGEX = /\./g;
3626
3672
  const BRACKET_ACCESS_REGEX = /\[([^\]]+)\]/g;
3627
- function isRecord$19(value) {
3673
+ /**
3674
+ * Segments that would traverse or mutate the prototype chain.
3675
+ *
3676
+ * `setAtPath` creates nested objects along the path, so allowing these
3677
+ * segments is a prototype-pollution vector. They are rejected everywhere a
3678
+ * path is parsed (string or pre-parsed array form) — fail closed.
3679
+ */
3680
+ const UNSAFE_PATH_SEGMENTS = /* @__PURE__ */ new Set([
3681
+ "__proto__",
3682
+ "constructor",
3683
+ "prototype"
3684
+ ]);
3685
+ var UnsafePathSegmentError = class extends Error {
3686
+ constructor(segment) {
3687
+ super(`Unsafe path segment: "${segment}"`);
3688
+ this.name = "UnsafePathSegmentError";
3689
+ this.segment = segment;
3690
+ }
3691
+ };
3692
+ function assertSafePathSegments(segments) {
3693
+ for (const segment of segments) if (typeof segment === "string" && UNSAFE_PATH_SEGMENTS.has(segment)) throw new UnsafePathSegmentError(segment);
3694
+ }
3695
+ function isRecord$21(value) {
3628
3696
  return typeof value === "object" && value !== null && !Array.isArray(value);
3629
3697
  }
3630
3698
  function isPathContainer(value) {
3631
- return Array.isArray(value) || isRecord$19(value);
3699
+ return Array.isArray(value) || isRecord$21(value);
3632
3700
  }
3633
3701
  function getContainerValue(container, segment) {
3634
3702
  if (typeof segment === "number") return Array.isArray(container) ? container[segment] : void 0;
3635
3703
  if (segment in container) return Reflect.get(container, segment);
3636
3704
  }
3637
3705
  function parsePath(path) {
3638
- if (Array.isArray(path)) return path;
3706
+ if (Array.isArray(path)) {
3707
+ assertSafePathSegments(path);
3708
+ return path;
3709
+ }
3639
3710
  const segments = [];
3640
3711
  const parts = path.split(PATH_SEPARATOR_REGEX);
3641
3712
  for (const raw of parts) {
@@ -3655,6 +3726,7 @@ function parsePath(path) {
3655
3726
  }
3656
3727
  if (baseMatch === null && !raw.includes("[")) segments.push(raw);
3657
3728
  }
3729
+ assertSafePathSegments(segments);
3658
3730
  return segments;
3659
3731
  }
3660
3732
  function getAtPath(source, path) {
@@ -3930,7 +4002,7 @@ var init_event_pricing = __esmMin((() => {
3930
4002
  //#endregion
3931
4003
  //#region ../core/src/event-page-surface-subject.ts
3932
4004
  function parseEventPageSurfaceSubject(value) {
3933
- if (!isRecord$18(value)) return err$2({ kind: "notObject" });
4005
+ if (!isRecord$20(value)) return err$2({ kind: "notObject" });
3934
4006
  switch (value.kind) {
3935
4007
  case "eventSeries": {
3936
4008
  const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
@@ -3973,7 +4045,7 @@ function parseEventPageSurfaceSubject(value) {
3973
4045
  });
3974
4046
  }
3975
4047
  }
3976
- function isRecord$18(value) {
4048
+ function isRecord$20(value) {
3977
4049
  return typeof value === "object" && value !== null && !Array.isArray(value);
3978
4050
  }
3979
4051
  var init_event_page_surface_subject = __esmMin((() => {
@@ -4367,6 +4439,26 @@ var init_participant_identity = __esmMin((() => {
4367
4439
  init_assertNever();
4368
4440
  }));
4369
4441
  var init_public_url_validation = __esmMin((() => {}));
4442
+ var init_public_profile = __esmMin((() => {
4443
+ init_public_url_validation();
4444
+ init_result();
4445
+ }));
4446
+ var sectionKinds;
4447
+ var init_footer_composition = __esmMin((() => {
4448
+ init_result();
4449
+ sectionKinds = [
4450
+ "brand",
4451
+ "supporting-text",
4452
+ "social-links",
4453
+ "navigation",
4454
+ "business-address",
4455
+ "contact",
4456
+ "opening-hours",
4457
+ "legal-navigation",
4458
+ "legal"
4459
+ ];
4460
+ new Map(sectionKinds.map((kind, index) => [kind, index]));
4461
+ }));
4370
4462
  var init_number_input = __esmMin((() => {}));
4371
4463
  var init_field_errors = __esmMin((() => {})), init_form_submission_preview = __esmMin((() => {
4372
4464
  init_string();
@@ -4401,7 +4493,7 @@ function sortStableJsonValue(value) {
4401
4493
  if (typeof value === "object") {
4402
4494
  const prototype = Object.getPrototypeOf(value);
4403
4495
  if (prototype !== Object.prototype && prototype !== null) throw new TypeError("Stable JSON only supports plain objects");
4404
- return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, child]) => [key, sortStableJsonValue(child)]));
4496
+ return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([key, child]) => [key, sortStableJsonValue(child)]));
4405
4497
  }
4406
4498
  throw new TypeError(`Stable JSON does not support ${typeof value}`);
4407
4499
  }
@@ -4464,6 +4556,8 @@ var init_src$3 = __esmMin((() => {
4464
4556
  init_participants();
4465
4557
  init_participant_identity();
4466
4558
  init_public_url_validation();
4559
+ init_public_profile();
4560
+ init_footer_composition();
4467
4561
  init_number_input();
4468
4562
  init_field_errors();
4469
4563
  init_form_submission_preview();
@@ -7380,8 +7474,61 @@ var init_presets = __esmMin((() => {
7380
7474
  ICON_PICKER_PRESETS = ["cta", "feature"];
7381
7475
  }));
7382
7476
  //#endregion
7383
- //#region ../blocks/src/system/icons/registry.ts
7477
+ //#region ../blocks/src/system/icons/social.tsx
7384
7478
  init_presets();
7479
+ init_svg();
7480
+ const SOCIAL_ICON_NAMES = [
7481
+ "SocialFacebook",
7482
+ "SocialInstagram",
7483
+ "SocialLinkedIn",
7484
+ "SocialTikTok",
7485
+ "SocialX",
7486
+ "SocialYouTube"
7487
+ ];
7488
+ const socialIcons = {
7489
+ SocialFacebook: createIcon("SocialFacebookIcon", /* @__PURE__ */ jsx("path", { d: "M14 8h3V4h-3c-3 0-5 2-5 5v3H6v4h3v6h4v-6h3l1-4h-4V9c0-.7.3-1 1-1Z" })),
7490
+ SocialInstagram: createIcon("SocialInstagramIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
7491
+ /* @__PURE__ */ jsx("rect", {
7492
+ x: "3",
7493
+ y: "3",
7494
+ width: "18",
7495
+ height: "18",
7496
+ rx: "5"
7497
+ }),
7498
+ /* @__PURE__ */ jsx("circle", {
7499
+ cx: "12",
7500
+ cy: "12",
7501
+ r: "4"
7502
+ }),
7503
+ /* @__PURE__ */ jsx("circle", {
7504
+ cx: "17.5",
7505
+ cy: "6.5",
7506
+ r: ".75",
7507
+ fill: "currentColor",
7508
+ stroke: "none"
7509
+ })
7510
+ ] })),
7511
+ SocialLinkedIn: createIcon("SocialLinkedInIcon", /* @__PURE__ */ jsxs(Fragment, { children: [
7512
+ /* @__PURE__ */ jsx("path", { d: "M6 9v10" }),
7513
+ /* @__PURE__ */ jsx("path", {
7514
+ d: "M6 5.5v.01",
7515
+ strokeWidth: "3"
7516
+ }),
7517
+ /* @__PURE__ */ jsx("path", { d: "M10.5 19v-6a4 4 0 0 1 8 0v6" }),
7518
+ /* @__PURE__ */ jsx("path", { d: "M10.5 9v10" })
7519
+ ] })),
7520
+ SocialTikTok: createIcon("SocialTikTokIcon", /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("path", { d: "M14 4v11.5a4.5 4.5 0 1 1-4-4.47" }), /* @__PURE__ */ jsx("path", { d: "M14 4c.7 3 2.4 4.5 5 4.5" })] })),
7521
+ SocialX: createIcon("SocialXIcon", /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("path", { d: "m5 4 14 16" }), /* @__PURE__ */ jsx("path", { d: "M19 4 5 20" })] })),
7522
+ SocialYouTube: createIcon("SocialYouTubeIcon", /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("path", { d: "M21 12c0 3.5-.5 5.5-1.3 6.3S16.5 19.5 12 19.5s-6.9-.4-7.7-1.2S3 15.5 3 12s.5-5.5 1.3-6.3S7.5 4.5 12 4.5s6.9.4 7.7 1.2S21 8.5 21 12Z" }), /* @__PURE__ */ jsx("path", { d: "m10 9 5 3-5 3Z" })] }))
7523
+ };
7524
+ function isSocialIconName(value) {
7525
+ return typeof value === "string" && SOCIAL_ICON_NAMES.includes(value);
7526
+ }
7527
+ function getSocialIconComponent(value) {
7528
+ return isSocialIconName(value) ? socialIcons[value] : null;
7529
+ }
7530
+ //#endregion
7531
+ //#region ../blocks/src/system/icons/registry.ts
7385
7532
  function buildSearchText(parts) {
7386
7533
  return parts.map((part) => part.trim()).filter(Boolean).join(" ");
7387
7534
  }
@@ -7410,7 +7557,7 @@ function semanticOptionsForPreset(preset) {
7410
7557
  }
7411
7558
  semanticOptionsForPreset("feature");
7412
7559
  function getIconComponent(name) {
7413
- return getCtaIconComponent(name) ?? getSemanticIconComponent(name);
7560
+ return getCtaIconComponent(name) ?? getSemanticIconComponent(name) ?? getSocialIconComponent(name);
7414
7561
  }
7415
7562
  //#endregion
7416
7563
  //#region ../blocks/src/system/runtime/nodes/buttonAffordance.ts
@@ -9155,7 +9302,6 @@ const HeaderSectionNode$1 = ({ blockId, children, className, "data-preview-site-
9155
9302
  const asProp = rest.as;
9156
9303
  const styleProp = rest.style;
9157
9304
  const backgroundProp = typeof rest.background === "string" ? rest.background : void 0;
9158
- const allowOverflowProp = typeof rest.allowOverflow === "boolean" ? rest.allowOverflow : void 0;
9159
9305
  const dataSlotProp = typeof rest["data-slot"] === "string" ? rest["data-slot"] : void 0;
9160
9306
  return /* @__PURE__ */ jsxs("nav", {
9161
9307
  ...getIslandRootProps("headerSection", blockId),
@@ -9170,7 +9316,6 @@ const HeaderSectionNode$1 = ({ blockId, children, className, "data-preview-site-
9170
9316
  as: asProp,
9171
9317
  style: styleProp,
9172
9318
  background: backgroundProp ?? "background",
9173
- allowOverflow: allowOverflowProp,
9174
9319
  "data-slot": dataSlotProp,
9175
9320
  className: sectionClasses || void 0,
9176
9321
  children
@@ -15746,7 +15891,7 @@ function resolveGroupFrame(cardStyles) {
15746
15891
  contentClassName: "offerings-preview-card-content rb-flex rb-h-full rb-min-h-full rb-flex-col rb-gap-5"
15747
15892
  };
15748
15893
  return {
15749
- containerClassName: ["offerings-preview-card offerings-preview-card--framed rb-relative rb-isolate rb-h-full rb-min-h-full rb-overflow-hidden rb-bg-surface rb-border rb-border-border", resolveGroupFrameClasses(cardStyles)].filter(Boolean).join(" "),
15894
+ containerClassName: ["offerings-preview-card offerings-preview-card--framed rb-relative rb-isolate rb-h-full rb-min-h-full rb-overflow-visible rb-bg-surface rb-border rb-border-border", resolveGroupFrameClasses(cardStyles)].filter(Boolean).join(" "),
15750
15895
  containerStyle: resolveGroupFrameStyle(cardStyles),
15751
15896
  contentClassName: "card-content offerings-preview-card-content rb-flex rb-h-full rb-min-h-full rb-flex-col rb-gap-5"
15752
15897
  };
@@ -16060,6 +16205,34 @@ function backgroundLayer(path, options = {}) {
16060
16205
  ];
16061
16206
  }
16062
16207
  /**
16208
+ * Wrap decorative background layers in their own clipping frame.
16209
+ *
16210
+ * Foreground content remains outside this frame, so editor outlines, focus
16211
+ * rings, and floating controls are never clipped by a visual background.
16212
+ * Backgrounds that explicitly opt into overflow keep that behavior within
16213
+ * the decorative layer rather than changing the content root.
16214
+ */
16215
+ function backgroundFrame(path, options = {}) {
16216
+ const { leadingNodes = [], ...layerOptions } = options;
16217
+ const framedLayerOptions = {
16218
+ ...layerOptions,
16219
+ styleClassName: layerOptions.styleClassName ?? "background-style rb-absolute rb-inset-0 rb-z-0 rb-h-full rb-w-full rb-pointer-events-none",
16220
+ imageClassName: layerOptions.imageClassName ?? "rb-absolute rb-z-0",
16221
+ overlayClassName: layerOptions.overlayClassName ?? "background-overlay rb-absolute rb-inset-0 rb-z-0 rb-h-full rb-w-full rb-pointer-events-none"
16222
+ };
16223
+ return el("div", {
16224
+ className: { $bind: {
16225
+ from: path,
16226
+ transforms: [{
16227
+ id: "background.resolveFrameClassName",
16228
+ options: { baseClass: BACKGROUND_FRAME_BASE_CLASS }
16229
+ }],
16230
+ fallback: `${BACKGROUND_FRAME_BASE_CLASS} rb-overflow-hidden`
16231
+ } },
16232
+ style: { borderRadius: "inherit" }
16233
+ }, [...leadingNodes, ...backgroundLayer(path, framedLayerOptions)]);
16234
+ }
16235
+ /**
16063
16236
  * Creates a media node for rendering background image/video media with conditional rendering.
16064
16237
  *
16065
16238
  * This helper creates a media element that:
@@ -16134,8 +16307,10 @@ function createBackgroundOverlayNode(path, className = "background-overlay rb-ab
16134
16307
  } }
16135
16308
  });
16136
16309
  }
16310
+ var BACKGROUND_FRAME_BASE_CLASS;
16137
16311
  var init_backgroundLayer = __esmMin((() => {
16138
16312
  init_builder$2();
16313
+ BACKGROUND_FRAME_BASE_CLASS = "rb-background-frame rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-isolate rb-pointer-events-none";
16139
16314
  }));
16140
16315
  //#endregion
16141
16316
  //#region ../blocks/src/system/node/fragments/styledSection.ts
@@ -16146,7 +16321,7 @@ var init_backgroundLayer = __esmMin((() => {
16146
16321
  * - Creating a section wrapper with background theme
16147
16322
  * - Adding background color/gradient/image layers
16148
16323
  * - Binding className to section styles with transform
16149
- * - Binding allowOverflow for background positioning
16324
+ * - Keeping foreground overflow visible while decorative backgrounds clip independently
16150
16325
  * - Wrapping content children
16151
16326
  *
16152
16327
  * Use this helper to eliminate 25+ lines of boilerplate section setup code.
@@ -16182,8 +16357,8 @@ var init_backgroundLayer = __esmMin((() => {
16182
16357
  * });
16183
16358
  */
16184
16359
  function styledSection(config) {
16185
- const { children, baseClass = "rb-px-6", spacing = DEFAULT_SECTION_SPACING, background = "background", bindFrom = "_sectionStyles", imageClassName = "rb-absolute rb-z-neg-10", renderBackgroundImage = true, backgroundImageLoading, backgroundImageFetchPriority, allowOverflow = false, fullWidthPath } = config;
16186
- const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
16360
+ const { children, baseClass = "rb-px-6", spacing = DEFAULT_SECTION_SPACING, background = "background", bindFrom = "_sectionStyles", imageClassName = "rb-absolute rb-z-0", renderBackgroundImage = true, backgroundImageLoading, backgroundImageFetchPriority, fullWidthPath } = config;
16361
+ const renderedBackgroundNode = backgroundFrame(`${bindFrom}.background`, {
16187
16362
  imageClassName,
16188
16363
  fallbackToken: background,
16189
16364
  omitImageLayer: !renderBackgroundImage,
@@ -16206,13 +16381,8 @@ function styledSection(config) {
16206
16381
  fullWidthPath
16207
16382
  }
16208
16383
  }]
16209
- } },
16210
- allowOverflow: allowOverflow ? true : { $bind: {
16211
- from: `${bindFrom}.background`,
16212
- transforms: [{ id: "background.resolveAllowOverflow" }],
16213
- fallback: false
16214
16384
  } }
16215
- }, [...renderedBackgroundNodes, ...childrenArray]);
16385
+ }, [renderedBackgroundNode, ...childrenArray]);
16216
16386
  }
16217
16387
  var init_styledSection = __esmMin((() => {
16218
16388
  init_builder$2();
@@ -16318,8 +16488,8 @@ var init_sectionContainer = __esmMin((() => {
16318
16488
  * - content
16319
16489
  */
16320
16490
  function styledContainer(config) {
16321
- const { children, rootType = "div", rootProps, bindFrom = "_containerStyles", baseClassName = "rb-relative rb-isolate rb-overflow-hidden", imageClassName = "rb-absolute rb-z-neg-10", constrainWidth = true } = config;
16322
- const backgroundNodes = backgroundLayer(`${bindFrom}.background`, { imageClassName });
16491
+ const { children, rootType = "div", rootProps, bindFrom = "_containerStyles", baseClassName = "rb-relative rb-isolate rb-overflow-visible", imageClassName = "rb-absolute rb-z-0", constrainWidth = true } = config;
16492
+ const backgroundNode = backgroundFrame(`${bindFrom}.background`, { imageClassName });
16323
16493
  const childrenArray = Array.isArray(children) ? children : [children];
16324
16494
  const { className: _ignoredClassName, style: _ignoredStyle, ...safeRootProps } = rootProps ?? {};
16325
16495
  return el(rootType, {
@@ -16342,7 +16512,7 @@ function styledContainer(config) {
16342
16512
  }],
16343
16513
  fallback: constrainWidth ? `${baseClassName} rb-container` : baseClassName
16344
16514
  } }
16345
- }, [...backgroundNodes, ...childrenArray]);
16515
+ }, [backgroundNode, ...childrenArray]);
16346
16516
  }
16347
16517
  var init_styledContainer = __esmMin((() => {
16348
16518
  init_builder$2();
@@ -20782,7 +20952,7 @@ function asHeaderStyleId(value) {
20782
20952
  * optional nested styling fields that would otherwise leak from another Look.
20783
20953
  */
20784
20954
  function baseHeader(theme) {
20785
- 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;
20955
+ const { navLinkStyle: _navLinkStyle, navFontRole: _navFontRole, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
20786
20956
  return {
20787
20957
  ...header,
20788
20958
  navContainer: {
@@ -21404,6 +21574,17 @@ var init_headerLooks = __esmMin((() => {
21404
21574
  navTypography: "brand-caps",
21405
21575
  moods: ["expressive"]
21406
21576
  },
21577
+ {
21578
+ id: asHeaderStyleId("brand-capsule"),
21579
+ label: "Brand Capsule",
21580
+ description: "Solid brand chrome designed as a floating capsule, with quiet-caps nav, a soft pill active state, and an inverted CTA pill.",
21581
+ supportedLayoutIds: supportedLayouts(["classic"]),
21582
+ navInteraction: "pill-background",
21583
+ surface: "brand-solid",
21584
+ defaultDepth: "shadow",
21585
+ navTypography: "quiet-caps",
21586
+ moods: ["expressive", "professional"]
21587
+ },
21407
21588
  {
21408
21589
  id: asHeaderStyleId("serif-line"),
21409
21590
  label: "Serif Line",
@@ -21497,6 +21678,7 @@ var init_headerLooks = __esmMin((() => {
21497
21678
  "brand-bar",
21498
21679
  "brand-underline",
21499
21680
  "brand-pill",
21681
+ "brand-capsule",
21500
21682
  "serif-line",
21501
21683
  "flat-tabs"
21502
21684
  ])],
@@ -21531,6 +21713,11 @@ var init_headerLooks = __esmMin((() => {
21531
21713
  "brand-pill",
21532
21714
  "brand-bar",
21533
21715
  "minimal"
21716
+ ]), headerStyleRepairChain([
21717
+ "brand-capsule",
21718
+ "brand-pill",
21719
+ "brand-bar",
21720
+ "minimal"
21534
21721
  ]), headerStyleRepairChain([
21535
21722
  "pill-nav",
21536
21723
  "soft-bar",
@@ -23162,7 +23349,24 @@ var init_rawStyleFields = __esmMin((() => {
23162
23349
  [...themeV2RuntimeStyleFieldNames, ...themeV2BlockSpecificRawStyleFieldNames];
23163
23350
  pageDesignEditorBackgroundOverrideOwner = "page-design-editor";
23164
23351
  siteChromeBackgroundOverrideOwner = "site-chrome-editor";
23165
- })), axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle$1, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
23352
+ }));
23353
+ //#endregion
23354
+ //#region ../theme-core/src/schema.ts
23355
+ /**
23356
+ * Normalises the legacy `navTypography` font-role alias into the canonical
23357
+ * `navFontRole` field so persisted themes migrate at the parse boundary without
23358
+ * a data migration. `navFontRole` always wins when both are present; the legacy
23359
+ * field is dropped so we never carry a dual write forward.
23360
+ */
23361
+ function normaliseHeaderNavFontRole(header) {
23362
+ if (header.navTypography === void 0) return header;
23363
+ const { navTypography, ...rest } = header;
23364
+ return header.navFontRole === void 0 ? {
23365
+ ...rest,
23366
+ navFontRole: navTypography
23367
+ } : rest;
23368
+ }
23369
+ var axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle$1, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBarFrame, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
23166
23370
  var init_schema$1 = __esmMin((() => {
23167
23371
  init_media();
23168
23372
  init_buttons();
@@ -23595,6 +23799,7 @@ var init_schema$1 = __esmMin((() => {
23595
23799
  "bold"
23596
23800
  ]);
23597
23801
  headerMaxWidth = z$1.enum(["container", "full"]);
23802
+ headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
23598
23803
  headerContainerSchema = z$1.object({
23599
23804
  rounded: z$1.enum([
23600
23805
  "none",
@@ -23735,6 +23940,7 @@ var init_schema$1 = __esmMin((() => {
23735
23940
  positioning: headerPositioning,
23736
23941
  shrinkOnScroll: z$1.boolean(),
23737
23942
  maxWidth: headerMaxWidth,
23943
+ barFrame: headerBarFrame.optional(),
23738
23944
  logoOverride: mediaSchema.nullable().optional(),
23739
23945
  background: headerBackgroundSchema.default({
23740
23946
  type: "color",
@@ -23744,6 +23950,7 @@ var init_schema$1 = __esmMin((() => {
23744
23950
  navStyle: headerNavStyle,
23745
23951
  navColor: themeColorTokenSchema.nullable().optional(),
23746
23952
  navWeight: navFontWeight.default("medium"),
23953
+ navFontRole: z$1.enum(["body", "heading"]).optional(),
23747
23954
  navTypography: z$1.enum(["body", "heading"]).optional(),
23748
23955
  navTextSize: navLinkStyleSchema.shape.textSize,
23749
23956
  navPlacement: z$1.enum(["end", "center"]).optional(),
@@ -23759,7 +23966,7 @@ var init_schema$1 = __esmMin((() => {
23759
23966
  ctaTreatment: headerCtaTreatmentSchema.optional(),
23760
23967
  ctaVariant: z$1.string().min(1).optional(),
23761
23968
  dropdownStyle: dropdownStyleSchema
23762
- });
23969
+ }).transform(normaliseHeaderNavFontRole);
23763
23970
  footerVariant = z$1.enum([
23764
23971
  "simple",
23765
23972
  "columns",
@@ -24808,6 +25015,7 @@ var init_curatedSiteStyles = __esmMin((() => {
24808
25015
  ],
24809
25016
  buttonPersonalityChoices: [
24810
25017
  buttonChoice("soft-pill"),
25018
+ buttonChoice("two-tone-pill"),
24811
25019
  buttonChoice("pebble"),
24812
25020
  buttonChoice("editorial-link"),
24813
25021
  buttonChoice("brushed-wash")
@@ -25987,6 +26195,7 @@ var init_curatedSiteStyles = __esmMin((() => {
25987
26195
  ],
25988
26196
  buttonPersonalityChoices: [
25989
26197
  buttonChoice("quiet-arrow"),
26198
+ buttonChoice("two-tone-pill"),
25990
26199
  buttonChoice("flat-ink"),
25991
26200
  buttonChoice("editorial-link")
25992
26201
  ],
@@ -27433,7 +27642,7 @@ var init_validation_constants = __esmMin((() => {
27433
27642
  "media.fromUrl",
27434
27643
  "background.resolveStyle",
27435
27644
  "background.resolveColorsStyle",
27436
- "background.resolveAllowOverflow",
27645
+ "background.resolveFrameClassName",
27437
27646
  "background.resolveImageStyle",
27438
27647
  "background.resolveImageClassName",
27439
27648
  "background.resolveOverlayStyle",
@@ -29320,7 +29529,7 @@ function createFaqAccordionLayout(options = {}) {
29320
29529
  options: {
29321
29530
  axis: "all",
29322
29531
  includeSpacing: false,
29323
- baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
29532
+ baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-visible"
29324
29533
  }
29325
29534
  }]
29326
29535
  },
@@ -33462,7 +33671,7 @@ const copyLayout = fragmentLayoutNode(formCopyFragment.layout);
33462
33671
  const formSurface = styledContainer({
33463
33672
  bindFrom: "_containerStyles",
33464
33673
  constrainWidth: false,
33465
- baseClassName: "rb-form-surface rb-relative rb-isolate rb-overflow-hidden",
33674
+ baseClassName: "rb-form-surface rb-relative rb-isolate rb-overflow-visible",
33466
33675
  children: fragmentLayoutNode(formEmbedFragment.layout)
33467
33676
  });
33468
33677
  function createFormLayout(variant) {
@@ -111684,7 +111893,6 @@ const HeaderSectionNode = ({ blockId, blockKind, blockContent, fragmentRegistry,
111684
111893
  const asProp = restProps.as;
111685
111894
  const styleProp = restProps.style;
111686
111895
  const backgroundProp = typeof restProps.background === "string" ? restProps.background : void 0;
111687
- const allowOverflowProp = typeof restProps.allowOverflow === "boolean" ? restProps.allowOverflow : void 0;
111688
111896
  const dataSlotProp = typeof restProps["data-slot"] === "string" ? restProps["data-slot"] : void 0;
111689
111897
  return /* @__PURE__ */ jsx("nav", {
111690
111898
  ref: (el) => {
@@ -111706,7 +111914,6 @@ const HeaderSectionNode = ({ blockId, blockKind, blockContent, fragmentRegistry,
111706
111914
  as: asProp,
111707
111915
  style: styleProp,
111708
111916
  background: backgroundProp ?? "background",
111709
- allowOverflow: allowOverflowProp,
111710
111917
  "data-slot": dataSlotProp,
111711
111918
  className: sectionClasses || void 0,
111712
111919
  children
@@ -75,24 +75,24 @@ function isSafeHttpsUrl(value) {
75
75
  //#endregion
76
76
  //#region src/rendering/islands/hydrateBlocksIslands.ts
77
77
  const defaultEnhancerLoaders = {
78
- accordion: () => import("../accordion-DAIBVpTS.mjs"),
79
- headerSection: () => import("../headerSection-CBPFZoku.mjs"),
80
- carousel: () => import("../carousel-D-SLfX8r.mjs"),
81
- form: () => import("../form-CH1lCusH.mjs"),
82
- "booking-form": () => import("../bookingForm-DZ-4l5_1.mjs"),
83
- "event-registration": () => import("../eventRegistration-DJnR0yFH.mjs"),
84
- "event-details": () => import("../eventDetails-DU0LeF5e.mjs"),
85
- "location-map": () => import("../locationMap-Cx1hBg5n.mjs"),
86
- "course-registration": () => import("../courseRegistration-DVmLrRVz.mjs"),
87
- "event-listing": () => import("../eventListing-CcHF87BI.mjs"),
88
- "event-calendar": () => import("../eventCalendar-DCuyPY_c.mjs"),
89
- "event-combined": () => import("../eventCombined-kP2CA2D4.mjs"),
90
- "product-list": () => import("../productList-Cc7OMrqN.mjs"),
91
- "product-detail": () => import("../productDetail-BTh5gHBV.mjs"),
92
- "cart": () => import("../cart-CEgbgJhX.mjs"),
93
- "checkout": () => import("../checkout-CXWrCRAA.mjs"),
94
- shop: () => import("../shop-CQ_YbCnn.mjs"),
95
- "newsletter-form": () => import("../newsletterForm-1ZL_ti9u.mjs")
78
+ accordion: () => import("../accordion-BPy-AJ4_.mjs"),
79
+ headerSection: () => import("../headerSection-CYwwXJfh.mjs"),
80
+ carousel: () => import("../carousel-C2b7Cn9-.mjs"),
81
+ form: () => import("../form-LY2xIbwg.mjs"),
82
+ "booking-form": () => import("../bookingForm-BL4PGZds.mjs"),
83
+ "event-registration": () => import("../eventRegistration-BR02a0k3.mjs"),
84
+ "event-details": () => import("../eventDetails-M-VCxA-r.mjs"),
85
+ "location-map": () => import("../locationMap-DWnBXrFq.mjs"),
86
+ "course-registration": () => import("../courseRegistration-BqRZPmsq.mjs"),
87
+ "event-listing": () => import("../eventListing-DR19hqYi.mjs"),
88
+ "event-calendar": () => import("../eventCalendar-B8N_tSl5.mjs"),
89
+ "event-combined": () => import("../eventCombined-Gjn6gtq7.mjs"),
90
+ "product-list": () => import("../productList-PwYlZn0y.mjs"),
91
+ "product-detail": () => import("../productDetail-B0SbWd45.mjs"),
92
+ "cart": () => import("../cart-BQcbXIVD.mjs"),
93
+ "checkout": () => import("../checkout-DEmpGRJu.mjs"),
94
+ shop: () => import("../shop-CMwZPYME.mjs"),
95
+ "newsletter-form": () => import("../newsletterForm-D9s-fQ2P.mjs")
96
96
  };
97
97
  const DEFAULT_MAX_RETRIES = 2;
98
98
  const RETRY_DELAYS_MS = [250, 1e3];