@riverbankcms/sdk 0.135.1 → 0.136.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 (152) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -8
  3. package/dist/{PreviewEditorSidebar-D4p_5TdY.mjs → PreviewEditorSidebar-BU5ZlhQR.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-D0cRoTX1.mjs → PreviewEditorUI-9XkHL-bC.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-DcgaESkm.mjs → PreviewQueryProvider-wbEpXryy.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-BKLtM3Nz.mjs → SdkPreviewModeRuntime-CnWmj-2B.mjs} +50 -99
  7. package/dist/{SiteChromeCustomizeContext-61X2m7QV.mjs → SiteChromeCustomizeContext-B6d5zkog.mjs} +2299 -1149
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +8 -554
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +401 -2312
  10. package/dist/_dts/api/src/contentRuntime.d.ts +6 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +7 -0
  12. package/dist/_dts/api/src/index.d.ts +1 -0
  13. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +7 -0
  14. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +26 -0
  15. package/dist/_dts/api/src/sdkBlockContentAdmission.d.ts +5 -0
  16. package/dist/_dts/api/src/sdkThemeWire.d.ts +6 -432
  17. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +2 -3
  18. package/dist/_dts/block-form/src/utils/slug.d.ts +6 -0
  19. package/dist/_dts/blocks/src/PageRenderer.d.ts +12 -6
  20. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +48 -0
  21. package/dist/_dts/blocks/src/definitions.d.ts +14 -0
  22. package/dist/_dts/blocks/src/index.d.ts +4 -3
  23. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +40 -0
  24. package/dist/_dts/blocks/src/server.d.ts +2 -2
  25. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +78 -0
  27. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +2 -18
  28. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +103 -16
  29. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  30. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  31. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  32. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +19 -0
  34. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +52 -0
  35. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  36. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +44 -18
  37. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -3
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +3 -1
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +1 -0
  40. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.client.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +40 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +43 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +3 -1
  45. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarNavigationChevron.d.ts +4 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModalContext.d.ts +3 -2
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +3 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +31 -3
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +3 -1
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +9 -1
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +4 -3
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +3 -3
  54. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -1
  55. package/dist/_dts/calendar/src/grid.d.ts +24 -66
  56. package/dist/_dts/calendar/src/index.d.ts +2 -2
  57. package/dist/_dts/calendar/src/timetable.d.ts +5 -9
  58. package/dist/_dts/commerce/src/purchase/allocation.d.ts +11 -0
  59. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  60. package/dist/_dts/commerce/src/purchase/settlement.d.ts +33 -0
  61. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +8 -0
  62. package/dist/_dts/content-model/src/templates/defaults.d.ts +6 -0
  63. package/dist/_dts/core/src/slug.d.ts +20 -5
  64. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +1 -1
  65. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +2 -1
  66. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +6 -0
  67. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  68. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +10 -6
  69. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +0 -1
  70. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  71. package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +3 -0
  72. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -0
  73. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  74. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +17 -0
  75. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +9 -3
  76. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +1 -1
  77. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  78. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +7 -4
  79. package/dist/_dts/sdk/src/version.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/cards/types.d.ts +8 -8
  81. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  82. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  83. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -6
  84. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +6 -807
  85. package/dist/_dts/theme-core/src/schema.d.ts +452 -1278
  86. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +213 -1
  87. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +0 -29
  88. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +10 -0
  89. package/dist/_dts/theme-core/src/site-styles/headerLayoutTypes.d.ts +8 -5
  90. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +4 -4
  91. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +16 -2
  92. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +465 -0
  93. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +161 -0
  94. package/dist/client/{BookingConsentAgreement-Bz9znbpn.mjs → BookingConsentAgreement-DCch21a6.mjs} +2 -2
  95. package/dist/client/{DiscountCodeDisclosure-35Ru8yB9.mjs → DiscountCodeDisclosure-DIj1T59K.mjs} +1 -1
  96. package/dist/client/{EventCombined.client-BKB0ZxRR.mjs → EventCombined.client-BWVNlXTx.mjs} +226 -206
  97. package/dist/client/{EventListing.client-Dx8I21ok.mjs → EventListing.client-DVFCDe3i.mjs} +2 -2
  98. package/dist/client/{LeafletStaticMap-CEWx-Bhe.mjs → LeafletStaticMap-BY5mIHw9.mjs} +1 -1
  99. package/dist/client/{accordion-KIDsKTwS.mjs → accordion-CK29E8rG.mjs} +1 -1
  100. package/dist/client/{bookingForm-D96Rmp-5.mjs → bookingForm-DFvnet-N.mjs} +5 -5
  101. package/dist/client/bookings.mjs +86 -47
  102. package/dist/client/{carousel-YwUgyL66.mjs → carousel-BVU5NQlb.mjs} +1 -1
  103. package/dist/client/{cart-BbwuNrUT.mjs → cart-BNItcZVa.mjs} +3 -3
  104. package/dist/client/{checkout-hp1ucmEY.mjs → checkout-Bu6iCdkP.mjs} +3 -3
  105. package/dist/client/client.mjs +1950 -1031
  106. package/dist/client/{context-DljQn8L5.mjs → context-BImarOAq.mjs} +12 -0
  107. package/dist/client/{eventCalendar-DU4iNLpo.mjs → eventCalendar-DS2h-UXD.mjs} +256 -114
  108. package/dist/client/{eventCombined-CZuupW8m.mjs → eventCombined-Drt4Oq9p.mjs} +3 -3
  109. package/dist/client/{eventDetails-DPQWwCIi.mjs → eventDetails-Bl2vWgTX.mjs} +4 -3
  110. package/dist/client/{eventListing-C7oMidwS.mjs → eventListing-CS7PHY7v.mjs} +3 -3
  111. package/dist/client/{eventRegistration-zEiunlUs.mjs → eventRegistration-D-j8eNy2.mjs} +85 -41
  112. package/dist/client/{form-D2KIyCVJ.mjs → form-RMpoLTyr.mjs} +2 -2
  113. package/dist/client/{headerSection-CK5uChUK.mjs → headerSection-BYE3Lb3k.mjs} +2 -2
  114. package/dist/client/hooks.mjs +2225 -276
  115. package/dist/client/{locationMap-DLQNH1ln.mjs → locationMap-BxSr7Kkh.mjs} +2 -2
  116. package/dist/client/{newsletterForm-ZuhIG7fZ.mjs → newsletterForm-DerbXwFC.mjs} +2 -2
  117. package/dist/client/{productDetail-7hIcGeae.mjs → productDetail-4SZCLhAf.mjs} +3 -3
  118. package/dist/client/{productList-T4Cii1ot.mjs → productList-D7AP4GNq.mjs} +3 -3
  119. package/dist/client/{propsDecoder-mB0aC_Fi.mjs → propsDecoder-pzBeCh14.mjs} +94 -24
  120. package/dist/client/rendering/client.mjs +758 -464
  121. package/dist/client/rendering/islands.mjs +17 -17
  122. package/dist/client/rendering.mjs +2126 -1244
  123. package/dist/client/{scrollToBlock-Du5mHgvL.mjs → scrollToBlock-CduAKf8T.mjs} +1 -1
  124. package/dist/client/{shop-B5zAcKZn.mjs → shop-Cp5p_kGe.mjs} +6 -6
  125. package/dist/client/{shop-commerce-BKBZB6l5.mjs → shop-commerce-DicXYaYX.mjs} +5 -5
  126. package/dist/client/{shop-commerce-store-Cq4qlNtQ.mjs → shop-commerce-store-CGWnpY4K.mjs} +1 -1
  127. package/dist/client/{shopShared-DYGzEs9D.mjs → shopShared-BDf9ljkm.mjs} +3 -3
  128. package/dist/client/{useEventFilters-Bphkda8m.mjs → useEventFilters-DeeyGYuk.mjs} +3 -3
  129. package/dist/preview-next/before-render.mjs +7 -0
  130. package/dist/preview-next/client/runtime.mjs +4 -4
  131. package/dist/preview-next/keepAlive.mjs +7 -0
  132. package/dist/preview-next/middleware.mjs +7 -0
  133. package/dist/{previewAuthStore-C7ksxt5b.mjs → previewAuthStore-DbqBol0V.mjs} +7 -0
  134. package/dist/{sdk-runtime-BbIC8G4J.mjs → sdk-runtime-19MO27F0.mjs} +2 -2
  135. package/dist/{separator-CadhAtI7.mjs → separator-DaPLtJ1f.mjs} +1 -1
  136. package/dist/server/components.mjs +1527 -893
  137. package/dist/server/config-validation.mjs +65 -113
  138. package/dist/server/config.mjs +65 -113
  139. package/dist/server/data.mjs +65 -112
  140. package/dist/server/index.mjs +122 -4
  141. package/dist/server/manifest.mjs +0 -1
  142. package/dist/server/next.mjs +1432 -708
  143. package/dist/server/page-converter.mjs +58 -91
  144. package/dist/server/prebuild.mjs +1 -1
  145. package/dist/server/rendering/server.mjs +1682 -915
  146. package/dist/server/rendering.mjs +1694 -1020
  147. package/dist/server/routing.mjs +3230 -1843
  148. package/dist/server/server.mjs +21710 -19779
  149. package/dist/server/theme-bridge.mjs +656 -264
  150. package/dist/server/theme.mjs +2 -17
  151. package/dist/styles/index.css +609 -181
  152. package/package.json +1 -1
@@ -1199,6 +1199,13 @@ const PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1199
1199
  //#endregion
1200
1200
  //#region ../api/src/publicEventEndpointDefinitions.ts
1201
1201
  const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1202
+ resolvePublicEventCheckoutReturn: {
1203
+ path: "/public/sites/{siteId}/events/checkout-return",
1204
+ method: "POST",
1205
+ tags: [TAG_TEMPLATES.publicEvents, "event-checkout"],
1206
+ auth: "public",
1207
+ responseKind: "json"
1208
+ },
1202
1209
  getPublicEventRegistrationOptions: {
1203
1210
  path: "/public/sites/{siteId}/events/registration-options",
1204
1211
  method: "POST",
@@ -1930,6 +1937,9 @@ function getZonedDateTimeParts(date, timeZone) {
1930
1937
  function formatDateKey(date) {
1931
1938
  return `${String(date.year).padStart(4, "0")}-${String(date.month).padStart(2, "0")}-${String(date.day).padStart(2, "0")}`;
1932
1939
  }
1940
+ function toBookingTimeZone(timeZone) {
1941
+ return getSafeTimeZone(timeZone);
1942
+ }
1933
1943
  function parseUtcIsoDateTimeString(value) {
1934
1944
  const normalized = value.trim();
1935
1945
  const hasUtcSuffix = normalized.endsWith("Z");
@@ -9146,12 +9156,8 @@ const legacyHeaderVariantValues = Object.keys(legacyHeaderVariants);
9146
9156
  * `@riverbankcms/api` is `z.input<typeof themeSchema>`, so a widened input here
9147
9157
  * would leak straight into a public type.
9148
9158
  *
9149
- * Not every read of a persisted theme goes through the schema:
9150
- * `resolveRuntimeTheme` in
9151
- * `apps/dashboard/src/server/services/sites/runtimeSiteResponse.ts` returns the
9152
- * raw database JSON asserted as `Theme` with no parse, so a theme still
9153
- * carrying a legacy spelling reaches the theme editor un-aliased. That gap
9154
- * predates this alias and is harmless while persisted usage is zero.
9159
+ * Persisted runtime themes are admitted through `parseThemeForPersistence`
9160
+ * before reaching consumers, so legacy spellings normalize at that boundary.
9155
9161
  */
9156
9162
  const headerVariantWithLegacyAliasSchema = z.enum([...headerVariantValues, ...legacyHeaderVariantValues]).transform((value) => value in legacyHeaderVariants ? legacyHeaderVariants[value] : value);
9157
9163
  const BREAKPOINT_LG = 1024;
@@ -9610,7 +9616,6 @@ const navFontWeight = z.enum([
9610
9616
  "bold"
9611
9617
  ]);
9612
9618
  const headerMaxWidth = z.enum(["container", "full"]);
9613
- const headerBarFrame = z.enum(["full-bleed", "inset-shell"]);
9614
9619
  const headerBorderSchema = componentBorderSchema.extend({ position: z.enum([
9615
9620
  "bottom",
9616
9621
  "top",
@@ -9639,12 +9644,6 @@ const headerLogoTextSchema = z.object({
9639
9644
  ]).optional(),
9640
9645
  hideOnShrink: z.boolean().optional()
9641
9646
  }).optional();
9642
- const navEffectsSchema = z.object({
9643
- underlineGradient: z.boolean().default(false),
9644
- glow: z.boolean().default(false),
9645
- glowColor: z.string().optional(),
9646
- neumorphic: z.boolean().default(false)
9647
- }).optional();
9648
9647
  const dropdownStyleSchema = z.object({
9649
9648
  background: themeColorTokenSchema.default("surface"),
9650
9649
  textColor: themeColorTokenSchema.default("text"),
@@ -9736,9 +9735,7 @@ const headerSchema = z.object({
9736
9735
  positioning: headerPositioning,
9737
9736
  shrinkOnScroll: z.boolean(),
9738
9737
  maxWidth: headerMaxWidth,
9739
- barFrame: headerBarFrame.optional(),
9740
9738
  scrollTreatment: headerScrollTreatmentSchema,
9741
- logoOverride: mediaSchema.nullable().optional(),
9742
9739
  background: headerBackgroundSchema.default({
9743
9740
  type: "color",
9744
9741
  color: "surface"
@@ -9750,13 +9747,11 @@ const headerSchema = z.object({
9750
9747
  navFontRole: z.enum(["body", "heading"]).optional(),
9751
9748
  navTextSize: navLinkStyleSchema.shape.textSize,
9752
9749
  interactionPalette: headerInteractionPaletteSchema.optional(),
9753
- navPlacement: z.enum(["end", "center"]).optional(),
9754
9750
  container: headerContainerSchema,
9755
9751
  border: headerBorderSchema,
9756
9752
  shadow: componentShadowSchema.optional(),
9757
9753
  logo: logoStyleSchema,
9758
9754
  logoText: headerLogoTextSchema,
9759
- navEffects: navEffectsSchema,
9760
9755
  navContainer: navContainerSchema,
9761
9756
  navLinkStyle: navLinkStyleSchema.optional(),
9762
9757
  ctaGap: headerCtaGapSchema.optional(),
@@ -11749,27 +11744,6 @@ function asHeaderStyleId(value) {
11749
11744
  return value;
11750
11745
  }
11751
11746
  //#endregion
11752
- //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
11753
- const clearSplitInteractionPalette = defineLookOptionGroup({
11754
- id: "interaction-palette",
11755
- label: "Hover colour",
11756
- defaultOptionId: "accent",
11757
- options: [
11758
- {
11759
- id: "accent",
11760
- label: "Accent"
11761
- },
11762
- {
11763
- id: "primary",
11764
- label: "Primary"
11765
- },
11766
- {
11767
- id: "secondary",
11768
- label: "Secondary"
11769
- }
11770
- ]
11771
- });
11772
- //#endregion
11773
11747
  //#region ../theme-core/src/site-styles/headerLayoutCatalog.ts
11774
11748
  const titleOnlyLogoAccommodation = {
11775
11749
  pattern: "title-only",
@@ -11929,43 +11903,37 @@ const headerStyleCatalog = defineExactCatalog()([
11929
11903
  id: asHeaderStyleId("minimal"),
11930
11904
  label: "Minimal",
11931
11905
  description: "Quiet surface with simple color-change navigation.",
11932
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
11933
- navTypography: "plain"
11906
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
11934
11907
  },
11935
11908
  {
11936
11909
  id: asHeaderStyleId("fine-line"),
11937
11910
  label: "Seamless",
11938
11911
  description: "Borderless surface with underline hover for a quieter page transition.",
11939
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
11940
- navTypography: "plain"
11912
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
11941
11913
  },
11942
11914
  {
11943
11915
  id: asHeaderStyleId("soft-bar"),
11944
11916
  label: "Soft Bar",
11945
11917
  description: "Soft tinted surface with gentle pill hover states.",
11946
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
11947
- navTypography: "plain"
11918
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
11948
11919
  },
11949
11920
  {
11950
11921
  id: asHeaderStyleId("pill-nav"),
11951
11922
  label: "Pill Nav",
11952
11923
  description: "A calm pill navigation rail over a neutral header.",
11953
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
11954
- navTypography: "plain"
11924
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
11955
11925
  },
11956
11926
  {
11957
11927
  id: asHeaderStyleId("brand-bar"),
11958
11928
  label: "Brand Bar",
11959
11929
  description: "Solid brand surface with high-contrast navigation.",
11960
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
11961
- navTypography: "brand-caps"
11930
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
11962
11931
  },
11963
11932
  {
11964
11933
  id: asHeaderStyleId("brand-underline"),
11965
11934
  label: "Brand Underline",
11966
11935
  description: "Brand surface with underline-grow navigation.",
11967
- supportedLayoutIds: supportedLayouts(["classic"]),
11968
- navTypography: "brand-caps"
11936
+ supportedLayoutIds: supportedLayouts(["classic"])
11969
11937
  },
11970
11938
  {
11971
11939
  id: asHeaderStyleId("brand-pill"),
@@ -11975,73 +11943,78 @@ const headerStyleCatalog = defineExactCatalog()([
11975
11943
  "classic",
11976
11944
  "centered",
11977
11945
  "floating"
11978
- ]),
11979
- navTypography: "brand-caps"
11946
+ ])
11980
11947
  },
11981
11948
  {
11982
11949
  id: asHeaderStyleId("brand-capsule"),
11983
11950
  label: "Brand Capsule",
11984
11951
  description: "Solid brand chrome designed as a floating capsule, with quiet-caps nav, a soft pill active state, and an inverted CTA pill.",
11985
- supportedLayoutIds: supportedLayouts(["classic"]),
11986
- navTypography: "quiet-caps"
11952
+ supportedLayoutIds: supportedLayouts(["classic"])
11987
11953
  },
11988
11954
  {
11989
11955
  id: asHeaderStyleId("serif-line"),
11990
11956
  label: "Serif Line",
11991
11957
  description: "Typographic logo treatment with understated underline navigation.",
11992
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
11993
- navTypography: "heading"
11958
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
11994
11959
  },
11995
11960
  {
11996
11961
  id: asHeaderStyleId("flat-tabs"),
11997
11962
  label: "Flat Tabs",
11998
11963
  description: "Flat block hover and active states with a Swiss utility feel.",
11999
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12000
- navTypography: "quiet-caps"
11964
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12001
11965
  },
12002
11966
  {
12003
11967
  id: asHeaderStyleId("glass"),
12004
11968
  label: "Glass",
12005
11969
  description: "Translucent chrome with frosted navigation backing.",
12006
- supportedLayoutIds: supportedLayouts(["floating"]),
12007
- navTypography: "plain"
11970
+ supportedLayoutIds: supportedLayouts(["floating"])
12008
11971
  },
12009
11972
  {
12010
11973
  id: asHeaderStyleId("minimal-surface"),
12011
11974
  label: "Clear Split",
12012
11975
  description: "Floating logo with transparent navigation and no shared shell.",
12013
- supportedLayoutIds: supportedLayouts(["floating"]),
12014
- navTypography: "plain",
12015
- openingForegroundTarget: "all",
12016
- scrollTreatment: "contrast-glass",
12017
- interactionPalette: clearSplitInteractionPalette
11976
+ supportedLayoutIds: supportedLayouts(["floating"])
12018
11977
  },
12019
11978
  {
12020
11979
  id: asHeaderStyleId("soft-shell"),
12021
11980
  label: "Soft Shell",
12022
11981
  description: "Floating rounded shell with soft pill navigation states.",
12023
- supportedLayoutIds: supportedLayouts(["floating"]),
12024
- navTypography: "plain"
11982
+ supportedLayoutIds: supportedLayouts(["floating"])
12025
11983
  },
12026
11984
  {
12027
11985
  id: asHeaderStyleId("split-glass"),
12028
11986
  label: "Split Glass",
12029
11987
  description: "Logo floats independently while the navigation sits in a glass rail.",
12030
- supportedLayoutIds: supportedLayouts(["floating"]),
12031
- navTypography: "quiet-caps",
12032
- openingForegroundTarget: "brand-only"
11988
+ supportedLayoutIds: supportedLayouts(["floating"])
12033
11989
  },
12034
11990
  {
12035
11991
  id: asHeaderStyleId("split-pill"),
12036
11992
  label: "Split Pill",
12037
11993
  description: "Logo floats independently with a soft pill-backed navigation rail.",
12038
- supportedLayoutIds: supportedLayouts(["floating"]),
12039
- navTypography: "heading",
12040
- openingForegroundTarget: "brand-only"
11994
+ supportedLayoutIds: supportedLayouts(["floating"])
12041
11995
  }
12042
11996
  ]);
12043
11997
  new Map(headerLayoutCatalog.map((layout) => [layout.id, layout]));
12044
11998
  new Map(headerStyleCatalog.map((style) => [style.id, style]));
11999
+ defineLookOptionGroup({
12000
+ id: "interaction-palette",
12001
+ label: "Hover colour",
12002
+ defaultOptionId: "accent",
12003
+ options: [
12004
+ {
12005
+ id: "accent",
12006
+ label: "Accent"
12007
+ },
12008
+ {
12009
+ id: "primary",
12010
+ label: "Primary"
12011
+ },
12012
+ {
12013
+ id: "secondary",
12014
+ label: "Secondary"
12015
+ }
12016
+ ]
12017
+ });
12045
12018
  //#endregion
12046
12019
  //#region ../theme-core/src/site-styles/footerLooks.ts
12047
12020
  function asFooterLookId(value) {
@@ -15072,7 +15045,6 @@ const ALLOWED_TRANSFORM_IDS = [
15072
15045
  "layout.footerRootClass",
15073
15046
  "layout.headerRootStyle",
15074
15047
  "layout.headerSectionBackground",
15075
- "layout.classicNavMode",
15076
15048
  "layout.footerRootStyle",
15077
15049
  "ui.headerNavLinkClass",
15078
15050
  "ui.headingClassFromAlignment",
@@ -23548,26 +23520,6 @@ const headerLogoTextVisibleTransform = {
23548
23520
  return resolveHeaderBrandDisplay(asPartialObject(value)) !== "logo-only";
23549
23521
  }
23550
23522
  };
23551
- /**
23552
- * Selects which classic-layout nav row should render.
23553
- *
23554
- * - `'inline'` → classic variant with the historical logo-left / nav-right row
23555
- * - `'centered'`→ classic variant with a centred (flex-1) nav and a right CTA
23556
- * - `'other'` → not a classic variant (centered/floating handle it)
23557
- *
23558
- * Consumed by the site-header block's `$when` gates so the two classic rows are
23559
- * mutually exclusive without introducing a new top-level header variant.
23560
- */
23561
- const classicNavModeTransform = {
23562
- id: "layout.classicNavMode",
23563
- kind: "formatter",
23564
- summary: "Resolve which classic-layout nav row to render",
23565
- run: (value) => {
23566
- const header = asPartialObject(value);
23567
- if (header?.variant !== "classic") return "other";
23568
- return header?.navPlacement === "center" ? "centered" : "inline";
23569
- }
23570
- };
23571
23523
  const maxWidthClassTransform = {
23572
23524
  id: "layout.maxWidthClass",
23573
23525
  kind: "string",
@@ -23673,7 +23625,6 @@ const headerRootClassTransform = {
23673
23625
  if (isHeaderScrollRuntimeEnabled(content)) classes.push(config.shrink);
23674
23626
  const variant = header?.variant;
23675
23627
  if (variant && headerVariantValues.includes(variant)) classes.push(`header-variant-${variant}`);
23676
- if (header?.barFrame === "inset-shell" && variant === "classic") classes.push("header-bar-frame-inset-shell");
23677
23628
  return joinClasses(classes);
23678
23629
  }
23679
23630
  };
@@ -23881,7 +23832,6 @@ const layoutTransforms = [
23881
23832
  headerLogoClassTransform,
23882
23833
  headerLogoMediaClassTransform,
23883
23834
  headerLogoTextVisibleTransform,
23884
- classicNavModeTransform,
23885
23835
  footerRootClassTransform,
23886
23836
  headerRootStyleTransform,
23887
23837
  headerSectionBackgroundTransform,
@@ -24271,18 +24221,7 @@ const classicLayout = inline({
24271
24221
  logoRow,
24272
24222
  createNavRow(`rb-ml-auto ${desktopOnlyDisplay("flex")} rb-gap-6`),
24273
24223
  headerCta
24274
- ], whenTransformed("$root.theme.header", "layout.classicNavMode", "inline"));
24275
- const classicCenteredNavLayout = inline({
24276
- className: bindProp("$root.theme.header.maxWidth", {
24277
- transforms: pipe(tx("layout.maxWidthClass", { base: `rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-items-center rb-gap-6` })),
24278
- fallback: `rb-container rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-items-center rb-gap-6`
24279
- }),
24280
- align: "center"
24281
- }, [
24282
- logoRow,
24283
- createNavRow(`rb-flex-1 rb-justify-center ${desktopOnlyDisplay("flex")} rb-gap-6`, "center"),
24284
- headerCta
24285
- ], whenTransformed("$root.theme.header", "layout.classicNavMode", "centered"));
24224
+ ], when("$root.theme.header.variant", { equals: "classic" }));
24286
24225
  const centeredLayout = stack({
24287
24226
  gap: "md",
24288
24227
  align: "center",
@@ -24347,7 +24286,6 @@ const siteHeaderBlockDefinition = { manifest: createBlockManifest({
24347
24286
  }, [
24348
24287
  mobileHeaderBar,
24349
24288
  classicLayout,
24350
- classicCenteredNavLayout,
24351
24289
  centeredLayout,
24352
24290
  floatingLayout,
24353
24291
  mobileOverlay
@@ -28752,7 +28690,8 @@ const eventCollectionSourceSchemaShape = {
28752
28690
  buttonVariant: eventButtonVariantSchema.optional(),
28753
28691
  buttonText: z.string().optional(),
28754
28692
  emptyMessage: z.string().optional(),
28755
- className: z.string().optional()
28693
+ className: z.string().optional(),
28694
+ bookingTimeZone: z.string().optional()
28756
28695
  };
28757
28696
  const eventCollectionDisplaySchemaShape = {
28758
28697
  events: z.array(publicEventSchema),
@@ -28787,7 +28726,15 @@ const eventCollectionHydrationSchema = z.object({
28787
28726
  prefetchedEvents: z.boolean(),
28788
28727
  eventSurface: eventSurfaceScopeSchema$1,
28789
28728
  filterEventPresets: z.string().nullable(),
28790
- scheduleScope: eventScheduleScopeSchema$1
28729
+ scheduleScope: eventScheduleScopeSchema$1,
28730
+ calendarContext: z.object({
28731
+ timeZone: z.string().transform(toBookingTimeZone),
28732
+ initialToday: z.object({
28733
+ year: z.number().int(),
28734
+ month: z.number().int().min(1).max(12),
28735
+ day: z.number().int().min(1).max(31)
28736
+ })
28737
+ })
28791
28738
  });
28792
28739
  function buildEventCollectionDisplay(source) {
28793
28740
  return {
@@ -28832,14 +28779,19 @@ function buildEventCollectionPresentationDisplay(source) {
28832
28779
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
28833
28780
  };
28834
28781
  }
28835
- function buildEventCollectionHydration(source) {
28782
+ function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
28783
+ const timeZone = toBookingTimeZone(source.bookingTimeZone);
28836
28784
  return {
28837
28785
  siteId: source.siteId,
28838
28786
  stage: source.stage,
28839
28787
  prefetchedEvents: source.events != null,
28840
28788
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
28841
28789
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
28842
- scheduleScope: normalizeEventScheduleScope(source.scheduleScope)
28790
+ scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
28791
+ calendarContext: {
28792
+ timeZone,
28793
+ initialToday: getLocalScheduleDate(now, timeZone)
28794
+ }
28843
28795
  };
28844
28796
  }
28845
28797
  //#endregion