@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
@@ -1243,6 +1243,13 @@ const PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1243
1243
  //#endregion
1244
1244
  //#region ../api/src/publicEventEndpointDefinitions.ts
1245
1245
  const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1246
+ resolvePublicEventCheckoutReturn: {
1247
+ path: "/public/sites/{siteId}/events/checkout-return",
1248
+ method: "POST",
1249
+ tags: [TAG_TEMPLATES.publicEvents, "event-checkout"],
1250
+ auth: "public",
1251
+ responseKind: "json"
1252
+ },
1246
1253
  getPublicEventRegistrationOptions: {
1247
1254
  path: "/public/sites/{siteId}/events/registration-options",
1248
1255
  method: "POST",
@@ -1974,6 +1981,9 @@ function getZonedDateTimeParts(date, timeZone) {
1974
1981
  function formatDateKey(date) {
1975
1982
  return `${String(date.year).padStart(4, "0")}-${String(date.month).padStart(2, "0")}-${String(date.day).padStart(2, "0")}`;
1976
1983
  }
1984
+ function toBookingTimeZone(timeZone) {
1985
+ return getSafeTimeZone(timeZone);
1986
+ }
1977
1987
  function parseUtcIsoDateTimeString(value) {
1978
1988
  const normalized = value.trim();
1979
1989
  const hasUtcSuffix = normalized.endsWith("Z");
@@ -9222,12 +9232,8 @@ const legacyHeaderVariantValues = Object.keys(legacyHeaderVariants);
9222
9232
  * `@riverbankcms/api` is `z.input<typeof themeSchema>`, so a widened input here
9223
9233
  * would leak straight into a public type.
9224
9234
  *
9225
- * Not every read of a persisted theme goes through the schema:
9226
- * `resolveRuntimeTheme` in
9227
- * `apps/dashboard/src/server/services/sites/runtimeSiteResponse.ts` returns the
9228
- * raw database JSON asserted as `Theme` with no parse, so a theme still
9229
- * carrying a legacy spelling reaches the theme editor un-aliased. That gap
9230
- * predates this alias and is harmless while persisted usage is zero.
9235
+ * Persisted runtime themes are admitted through `parseThemeForPersistence`
9236
+ * before reaching consumers, so legacy spellings normalize at that boundary.
9231
9237
  */
9232
9238
  const headerVariantWithLegacyAliasSchema = z.enum([...headerVariantValues, ...legacyHeaderVariantValues]).transform((value) => value in legacyHeaderVariants ? legacyHeaderVariants[value] : value);
9233
9239
  const BREAKPOINT_LG = 1024;
@@ -9686,7 +9692,6 @@ const navFontWeight = z.enum([
9686
9692
  "bold"
9687
9693
  ]);
9688
9694
  const headerMaxWidth = z.enum(["container", "full"]);
9689
- const headerBarFrame = z.enum(["full-bleed", "inset-shell"]);
9690
9695
  const headerBorderSchema = componentBorderSchema.extend({ position: z.enum([
9691
9696
  "bottom",
9692
9697
  "top",
@@ -9715,12 +9720,6 @@ const headerLogoTextSchema = z.object({
9715
9720
  ]).optional(),
9716
9721
  hideOnShrink: z.boolean().optional()
9717
9722
  }).optional();
9718
- const navEffectsSchema = z.object({
9719
- underlineGradient: z.boolean().default(false),
9720
- glow: z.boolean().default(false),
9721
- glowColor: z.string().optional(),
9722
- neumorphic: z.boolean().default(false)
9723
- }).optional();
9724
9723
  const dropdownStyleSchema = z.object({
9725
9724
  background: themeColorTokenSchema.default("surface"),
9726
9725
  textColor: themeColorTokenSchema.default("text"),
@@ -9812,9 +9811,7 @@ const headerSchema = z.object({
9812
9811
  positioning: headerPositioning,
9813
9812
  shrinkOnScroll: z.boolean(),
9814
9813
  maxWidth: headerMaxWidth,
9815
- barFrame: headerBarFrame.optional(),
9816
9814
  scrollTreatment: headerScrollTreatmentSchema,
9817
- logoOverride: mediaSchema.nullable().optional(),
9818
9815
  background: headerBackgroundSchema.default({
9819
9816
  type: "color",
9820
9817
  color: "surface"
@@ -9826,13 +9823,11 @@ const headerSchema = z.object({
9826
9823
  navFontRole: z.enum(["body", "heading"]).optional(),
9827
9824
  navTextSize: navLinkStyleSchema.shape.textSize,
9828
9825
  interactionPalette: headerInteractionPaletteSchema.optional(),
9829
- navPlacement: z.enum(["end", "center"]).optional(),
9830
9826
  container: headerContainerSchema,
9831
9827
  border: headerBorderSchema,
9832
9828
  shadow: componentShadowSchema.optional(),
9833
9829
  logo: logoStyleSchema,
9834
9830
  logoText: headerLogoTextSchema,
9835
- navEffects: navEffectsSchema,
9836
9831
  navContainer: navContainerSchema,
9837
9832
  navLinkStyle: navLinkStyleSchema.optional(),
9838
9833
  ctaGap: headerCtaGapSchema.optional(),
@@ -11825,27 +11820,6 @@ function asHeaderStyleId(value) {
11825
11820
  return value;
11826
11821
  }
11827
11822
  //#endregion
11828
- //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
11829
- const clearSplitInteractionPalette = defineLookOptionGroup({
11830
- id: "interaction-palette",
11831
- label: "Hover colour",
11832
- defaultOptionId: "accent",
11833
- options: [
11834
- {
11835
- id: "accent",
11836
- label: "Accent"
11837
- },
11838
- {
11839
- id: "primary",
11840
- label: "Primary"
11841
- },
11842
- {
11843
- id: "secondary",
11844
- label: "Secondary"
11845
- }
11846
- ]
11847
- });
11848
- //#endregion
11849
11823
  //#region ../theme-core/src/site-styles/headerLayoutCatalog.ts
11850
11824
  const titleOnlyLogoAccommodation = {
11851
11825
  pattern: "title-only",
@@ -12005,43 +11979,37 @@ const headerStyleCatalog = defineExactCatalog()([
12005
11979
  id: asHeaderStyleId("minimal"),
12006
11980
  label: "Minimal",
12007
11981
  description: "Quiet surface with simple color-change navigation.",
12008
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12009
- navTypography: "plain"
11982
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12010
11983
  },
12011
11984
  {
12012
11985
  id: asHeaderStyleId("fine-line"),
12013
11986
  label: "Seamless",
12014
11987
  description: "Borderless surface with underline hover for a quieter page transition.",
12015
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12016
- navTypography: "plain"
11988
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12017
11989
  },
12018
11990
  {
12019
11991
  id: asHeaderStyleId("soft-bar"),
12020
11992
  label: "Soft Bar",
12021
11993
  description: "Soft tinted surface with gentle pill hover states.",
12022
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12023
- navTypography: "plain"
11994
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12024
11995
  },
12025
11996
  {
12026
11997
  id: asHeaderStyleId("pill-nav"),
12027
11998
  label: "Pill Nav",
12028
11999
  description: "A calm pill navigation rail over a neutral header.",
12029
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12030
- navTypography: "plain"
12000
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12031
12001
  },
12032
12002
  {
12033
12003
  id: asHeaderStyleId("brand-bar"),
12034
12004
  label: "Brand Bar",
12035
12005
  description: "Solid brand surface with high-contrast navigation.",
12036
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12037
- navTypography: "brand-caps"
12006
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12038
12007
  },
12039
12008
  {
12040
12009
  id: asHeaderStyleId("brand-underline"),
12041
12010
  label: "Brand Underline",
12042
12011
  description: "Brand surface with underline-grow navigation.",
12043
- supportedLayoutIds: supportedLayouts(["classic"]),
12044
- navTypography: "brand-caps"
12012
+ supportedLayoutIds: supportedLayouts(["classic"])
12045
12013
  },
12046
12014
  {
12047
12015
  id: asHeaderStyleId("brand-pill"),
@@ -12051,73 +12019,78 @@ const headerStyleCatalog = defineExactCatalog()([
12051
12019
  "classic",
12052
12020
  "centered",
12053
12021
  "floating"
12054
- ]),
12055
- navTypography: "brand-caps"
12022
+ ])
12056
12023
  },
12057
12024
  {
12058
12025
  id: asHeaderStyleId("brand-capsule"),
12059
12026
  label: "Brand Capsule",
12060
12027
  description: "Solid brand chrome designed as a floating capsule, with quiet-caps nav, a soft pill active state, and an inverted CTA pill.",
12061
- supportedLayoutIds: supportedLayouts(["classic"]),
12062
- navTypography: "quiet-caps"
12028
+ supportedLayoutIds: supportedLayouts(["classic"])
12063
12029
  },
12064
12030
  {
12065
12031
  id: asHeaderStyleId("serif-line"),
12066
12032
  label: "Serif Line",
12067
12033
  description: "Typographic logo treatment with understated underline navigation.",
12068
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12069
- navTypography: "heading"
12034
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12070
12035
  },
12071
12036
  {
12072
12037
  id: asHeaderStyleId("flat-tabs"),
12073
12038
  label: "Flat Tabs",
12074
12039
  description: "Flat block hover and active states with a Swiss utility feel.",
12075
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12076
- navTypography: "quiet-caps"
12040
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
12077
12041
  },
12078
12042
  {
12079
12043
  id: asHeaderStyleId("glass"),
12080
12044
  label: "Glass",
12081
12045
  description: "Translucent chrome with frosted navigation backing.",
12082
- supportedLayoutIds: supportedLayouts(["floating"]),
12083
- navTypography: "plain"
12046
+ supportedLayoutIds: supportedLayouts(["floating"])
12084
12047
  },
12085
12048
  {
12086
12049
  id: asHeaderStyleId("minimal-surface"),
12087
12050
  label: "Clear Split",
12088
12051
  description: "Floating logo with transparent navigation and no shared shell.",
12089
- supportedLayoutIds: supportedLayouts(["floating"]),
12090
- navTypography: "plain",
12091
- openingForegroundTarget: "all",
12092
- scrollTreatment: "contrast-glass",
12093
- interactionPalette: clearSplitInteractionPalette
12052
+ supportedLayoutIds: supportedLayouts(["floating"])
12094
12053
  },
12095
12054
  {
12096
12055
  id: asHeaderStyleId("soft-shell"),
12097
12056
  label: "Soft Shell",
12098
12057
  description: "Floating rounded shell with soft pill navigation states.",
12099
- supportedLayoutIds: supportedLayouts(["floating"]),
12100
- navTypography: "plain"
12058
+ supportedLayoutIds: supportedLayouts(["floating"])
12101
12059
  },
12102
12060
  {
12103
12061
  id: asHeaderStyleId("split-glass"),
12104
12062
  label: "Split Glass",
12105
12063
  description: "Logo floats independently while the navigation sits in a glass rail.",
12106
- supportedLayoutIds: supportedLayouts(["floating"]),
12107
- navTypography: "quiet-caps",
12108
- openingForegroundTarget: "brand-only"
12064
+ supportedLayoutIds: supportedLayouts(["floating"])
12109
12065
  },
12110
12066
  {
12111
12067
  id: asHeaderStyleId("split-pill"),
12112
12068
  label: "Split Pill",
12113
12069
  description: "Logo floats independently with a soft pill-backed navigation rail.",
12114
- supportedLayoutIds: supportedLayouts(["floating"]),
12115
- navTypography: "heading",
12116
- openingForegroundTarget: "brand-only"
12070
+ supportedLayoutIds: supportedLayouts(["floating"])
12117
12071
  }
12118
12072
  ]);
12119
12073
  new Map(headerLayoutCatalog.map((layout) => [layout.id, layout]));
12120
12074
  new Map(headerStyleCatalog.map((style) => [style.id, style]));
12075
+ defineLookOptionGroup({
12076
+ id: "interaction-palette",
12077
+ label: "Hover colour",
12078
+ defaultOptionId: "accent",
12079
+ options: [
12080
+ {
12081
+ id: "accent",
12082
+ label: "Accent"
12083
+ },
12084
+ {
12085
+ id: "primary",
12086
+ label: "Primary"
12087
+ },
12088
+ {
12089
+ id: "secondary",
12090
+ label: "Secondary"
12091
+ }
12092
+ ]
12093
+ });
12121
12094
  //#endregion
12122
12095
  //#region ../theme-core/src/site-styles/footerLooks.ts
12123
12096
  function asFooterLookId(value) {
@@ -15148,7 +15121,6 @@ const ALLOWED_TRANSFORM_IDS = [
15148
15121
  "layout.footerRootClass",
15149
15122
  "layout.headerRootStyle",
15150
15123
  "layout.headerSectionBackground",
15151
- "layout.classicNavMode",
15152
15124
  "layout.footerRootStyle",
15153
15125
  "ui.headerNavLinkClass",
15154
15126
  "ui.headingClassFromAlignment",
@@ -23624,26 +23596,6 @@ const headerLogoTextVisibleTransform = {
23624
23596
  return resolveHeaderBrandDisplay(asPartialObject(value)) !== "logo-only";
23625
23597
  }
23626
23598
  };
23627
- /**
23628
- * Selects which classic-layout nav row should render.
23629
- *
23630
- * - `'inline'` → classic variant with the historical logo-left / nav-right row
23631
- * - `'centered'`→ classic variant with a centred (flex-1) nav and a right CTA
23632
- * - `'other'` → not a classic variant (centered/floating handle it)
23633
- *
23634
- * Consumed by the site-header block's `$when` gates so the two classic rows are
23635
- * mutually exclusive without introducing a new top-level header variant.
23636
- */
23637
- const classicNavModeTransform = {
23638
- id: "layout.classicNavMode",
23639
- kind: "formatter",
23640
- summary: "Resolve which classic-layout nav row to render",
23641
- run: (value) => {
23642
- const header = asPartialObject(value);
23643
- if (header?.variant !== "classic") return "other";
23644
- return header?.navPlacement === "center" ? "centered" : "inline";
23645
- }
23646
- };
23647
23599
  const maxWidthClassTransform = {
23648
23600
  id: "layout.maxWidthClass",
23649
23601
  kind: "string",
@@ -23749,7 +23701,6 @@ const headerRootClassTransform = {
23749
23701
  if (isHeaderScrollRuntimeEnabled(content)) classes.push(config.shrink);
23750
23702
  const variant = header?.variant;
23751
23703
  if (variant && headerVariantValues.includes(variant)) classes.push(`header-variant-${variant}`);
23752
- if (header?.barFrame === "inset-shell" && variant === "classic") classes.push("header-bar-frame-inset-shell");
23753
23704
  return joinClasses(classes);
23754
23705
  }
23755
23706
  };
@@ -23957,7 +23908,6 @@ const layoutTransforms = [
23957
23908
  headerLogoClassTransform,
23958
23909
  headerLogoMediaClassTransform,
23959
23910
  headerLogoTextVisibleTransform,
23960
- classicNavModeTransform,
23961
23911
  footerRootClassTransform,
23962
23912
  headerRootStyleTransform,
23963
23913
  headerSectionBackgroundTransform,
@@ -24347,18 +24297,7 @@ const classicLayout = inline({
24347
24297
  logoRow,
24348
24298
  createNavRow(`rb-ml-auto ${desktopOnlyDisplay("flex")} rb-gap-6`),
24349
24299
  headerCta
24350
- ], whenTransformed("$root.theme.header", "layout.classicNavMode", "inline"));
24351
- const classicCenteredNavLayout = inline({
24352
- className: bindProp("$root.theme.header.maxWidth", {
24353
- transforms: pipe(tx("layout.maxWidthClass", { base: `rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-items-center rb-gap-6` })),
24354
- fallback: `rb-container rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-items-center rb-gap-6`
24355
- }),
24356
- align: "center"
24357
- }, [
24358
- logoRow,
24359
- createNavRow(`rb-flex-1 rb-justify-center ${desktopOnlyDisplay("flex")} rb-gap-6`, "center"),
24360
- headerCta
24361
- ], whenTransformed("$root.theme.header", "layout.classicNavMode", "centered"));
24300
+ ], when("$root.theme.header.variant", { equals: "classic" }));
24362
24301
  const centeredLayout = stack({
24363
24302
  gap: "md",
24364
24303
  align: "center",
@@ -24423,7 +24362,6 @@ const siteHeaderBlockDefinition = { manifest: createBlockManifest({
24423
24362
  }, [
24424
24363
  mobileHeaderBar,
24425
24364
  classicLayout,
24426
- classicCenteredNavLayout,
24427
24365
  centeredLayout,
24428
24366
  floatingLayout,
24429
24367
  mobileOverlay
@@ -28828,7 +28766,8 @@ const eventCollectionSourceSchemaShape = {
28828
28766
  buttonVariant: eventButtonVariantSchema.optional(),
28829
28767
  buttonText: z.string().optional(),
28830
28768
  emptyMessage: z.string().optional(),
28831
- className: z.string().optional()
28769
+ className: z.string().optional(),
28770
+ bookingTimeZone: z.string().optional()
28832
28771
  };
28833
28772
  const eventCollectionDisplaySchemaShape = {
28834
28773
  events: z.array(publicEventSchema),
@@ -28863,7 +28802,15 @@ const eventCollectionHydrationSchema = z.object({
28863
28802
  prefetchedEvents: z.boolean(),
28864
28803
  eventSurface: eventSurfaceScopeSchema$1,
28865
28804
  filterEventPresets: z.string().nullable(),
28866
- scheduleScope: eventScheduleScopeSchema$1
28805
+ scheduleScope: eventScheduleScopeSchema$1,
28806
+ calendarContext: z.object({
28807
+ timeZone: z.string().transform(toBookingTimeZone),
28808
+ initialToday: z.object({
28809
+ year: z.number().int(),
28810
+ month: z.number().int().min(1).max(12),
28811
+ day: z.number().int().min(1).max(31)
28812
+ })
28813
+ })
28867
28814
  });
28868
28815
  function buildEventCollectionDisplay(source) {
28869
28816
  return {
@@ -28908,14 +28855,19 @@ function buildEventCollectionPresentationDisplay(source) {
28908
28855
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
28909
28856
  };
28910
28857
  }
28911
- function buildEventCollectionHydration(source) {
28858
+ function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
28859
+ const timeZone = toBookingTimeZone(source.bookingTimeZone);
28912
28860
  return {
28913
28861
  siteId: source.siteId,
28914
28862
  stage: source.stage,
28915
28863
  prefetchedEvents: source.events != null,
28916
28864
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
28917
28865
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
28918
- scheduleScope: normalizeEventScheduleScope(source.scheduleScope)
28866
+ scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
28867
+ calendarContext: {
28868
+ timeZone,
28869
+ initialToday: getLocalScheduleDate(now, timeZone)
28870
+ }
28919
28871
  };
28920
28872
  }
28921
28873
  //#endregion