@riverbankcms/sdk 0.135.0 → 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 (153) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -8
  3. package/dist/{PreviewEditorSidebar-roNY0GVy.mjs → PreviewEditorSidebar-BU5ZlhQR.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-KboDbEh_.mjs → PreviewEditorUI-9XkHL-bC.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-DcgaESkm.mjs → PreviewQueryProvider-wbEpXryy.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-DBrF7Caa.mjs → SdkPreviewModeRuntime-CnWmj-2B.mjs} +50 -99
  7. package/dist/{SiteChromeCustomizeContext-DrIEpJKn.mjs → SiteChromeCustomizeContext-B6d5zkog.mjs} +2334 -1173
  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/blocks/events/shared/schemas.d.ts +25 -0
  26. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  27. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +78 -0
  28. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +2 -18
  29. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +103 -16
  30. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  32. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  33. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  34. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +19 -0
  35. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +52 -0
  36. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  37. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +44 -18
  38. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -3
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +3 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +1 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.client.d.ts +2 -2
  42. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +40 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +43 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +3 -1
  46. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarNavigationChevron.d.ts +4 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModalContext.d.ts +3 -2
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +3 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +31 -3
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +3 -1
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +19 -1
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +4 -3
  54. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +3 -3
  55. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -1
  56. package/dist/_dts/calendar/src/grid.d.ts +24 -66
  57. package/dist/_dts/calendar/src/index.d.ts +2 -2
  58. package/dist/_dts/calendar/src/timetable.d.ts +5 -9
  59. package/dist/_dts/commerce/src/purchase/allocation.d.ts +11 -0
  60. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  61. package/dist/_dts/commerce/src/purchase/settlement.d.ts +33 -0
  62. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +8 -0
  63. package/dist/_dts/content-model/src/templates/defaults.d.ts +6 -0
  64. package/dist/_dts/core/src/slug.d.ts +20 -5
  65. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +1 -1
  66. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +2 -1
  67. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +6 -0
  68. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  69. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +10 -6
  70. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +0 -1
  71. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  72. package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +3 -0
  73. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -0
  74. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  75. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +17 -0
  76. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +9 -3
  77. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +1 -1
  78. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  79. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +7 -4
  80. package/dist/_dts/sdk/src/version.d.ts +1 -1
  81. package/dist/_dts/theme-core/src/cards/types.d.ts +8 -8
  82. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  83. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  84. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -6
  85. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +6 -807
  86. package/dist/_dts/theme-core/src/schema.d.ts +452 -1278
  87. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +213 -1
  88. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +0 -29
  89. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +10 -0
  90. package/dist/_dts/theme-core/src/site-styles/headerLayoutTypes.d.ts +8 -5
  91. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +4 -4
  92. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +16 -2
  93. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +465 -0
  94. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +161 -0
  95. package/dist/client/{BookingConsentAgreement-BQqwi8Oa.mjs → BookingConsentAgreement-DCch21a6.mjs} +2 -2
  96. package/dist/client/{DiscountCodeDisclosure-B97aMo0V.mjs → DiscountCodeDisclosure-DIj1T59K.mjs} +1 -1
  97. package/dist/client/{EventCombined.client-Bs2Iw9Q6.mjs → EventCombined.client-BWVNlXTx.mjs} +226 -206
  98. package/dist/client/{EventListing.client-C4QUQdmg.mjs → EventListing.client-DVFCDe3i.mjs} +2 -2
  99. package/dist/client/{LeafletStaticMap-CwWRk69M.mjs → LeafletStaticMap-BY5mIHw9.mjs} +1 -1
  100. package/dist/client/{accordion-BA0j8Mpw.mjs → accordion-CK29E8rG.mjs} +1 -1
  101. package/dist/client/{bookingForm-Br2e41H0.mjs → bookingForm-DFvnet-N.mjs} +5 -5
  102. package/dist/client/bookings.mjs +87 -47
  103. package/dist/client/{carousel-B4dmwnpD.mjs → carousel-BVU5NQlb.mjs} +1 -1
  104. package/dist/client/{cart-B_ckGW4b.mjs → cart-BNItcZVa.mjs} +3 -3
  105. package/dist/client/{checkout-DAyspHdf.mjs → checkout-Bu6iCdkP.mjs} +3 -3
  106. package/dist/client/client.mjs +1985 -1055
  107. package/dist/client/{context-DljQn8L5.mjs → context-BImarOAq.mjs} +12 -0
  108. package/dist/client/{eventCalendar-pJu3FUod.mjs → eventCalendar-DS2h-UXD.mjs} +256 -114
  109. package/dist/client/{eventCombined-B6Kacm9F.mjs → eventCombined-Drt4Oq9p.mjs} +3 -3
  110. package/dist/client/{eventDetails-CaX9z1pv.mjs → eventDetails-Bl2vWgTX.mjs} +4 -3
  111. package/dist/client/{eventListing-B9aXPO-I.mjs → eventListing-CS7PHY7v.mjs} +3 -3
  112. package/dist/client/{eventRegistration-CBSovBkg.mjs → eventRegistration-D-j8eNy2.mjs} +85 -41
  113. package/dist/client/{form-Cm0tu_7o.mjs → form-RMpoLTyr.mjs} +2 -2
  114. package/dist/client/{headerSection-OgRtHeKS.mjs → headerSection-BYE3Lb3k.mjs} +2 -2
  115. package/dist/client/hooks.mjs +2254 -298
  116. package/dist/client/{locationMap-DmjcYqNM.mjs → locationMap-BxSr7Kkh.mjs} +2 -2
  117. package/dist/client/{newsletterForm-D08OZQAC.mjs → newsletterForm-DerbXwFC.mjs} +2 -2
  118. package/dist/client/{productDetail-BqZeu2P4.mjs → productDetail-4SZCLhAf.mjs} +3 -3
  119. package/dist/client/{productList-mNyIF9FG.mjs → productList-D7AP4GNq.mjs} +3 -3
  120. package/dist/client/{propsDecoder-DwHXRm9X.mjs → propsDecoder-pzBeCh14.mjs} +123 -46
  121. package/dist/client/rendering/client.mjs +793 -488
  122. package/dist/client/rendering/islands.mjs +17 -17
  123. package/dist/client/rendering.mjs +2161 -1268
  124. package/dist/client/{scrollToBlock-DtmdM3v-.mjs → scrollToBlock-CduAKf8T.mjs} +1 -1
  125. package/dist/client/{shop-CNjZK16F.mjs → shop-Cp5p_kGe.mjs} +6 -6
  126. package/dist/client/{shop-commerce-DkNNao1J.mjs → shop-commerce-DicXYaYX.mjs} +5 -5
  127. package/dist/client/{shop-commerce-store-9WA--zuW.mjs → shop-commerce-store-CGWnpY4K.mjs} +1 -1
  128. package/dist/client/{shopShared-CHCVfccY.mjs → shopShared-BDf9ljkm.mjs} +3 -3
  129. package/dist/client/{useEventFilters-DvuaB4ZN.mjs → useEventFilters-DeeyGYuk.mjs} +3 -3
  130. package/dist/preview-next/before-render.mjs +7 -0
  131. package/dist/preview-next/client/runtime.mjs +4 -4
  132. package/dist/preview-next/keepAlive.mjs +7 -0
  133. package/dist/preview-next/middleware.mjs +7 -0
  134. package/dist/{previewAuthStore-C7ksxt5b.mjs → previewAuthStore-DbqBol0V.mjs} +7 -0
  135. package/dist/{sdk-runtime-3GhW4knb.mjs → sdk-runtime-19MO27F0.mjs} +2 -2
  136. package/dist/{separator-D3bCWYYb.mjs → separator-DaPLtJ1f.mjs} +1 -1
  137. package/dist/server/components.mjs +1562 -917
  138. package/dist/server/config-validation.mjs +94 -135
  139. package/dist/server/config.mjs +94 -135
  140. package/dist/server/data.mjs +94 -134
  141. package/dist/server/index.mjs +122 -4
  142. package/dist/server/manifest.mjs +0 -1
  143. package/dist/server/next.mjs +1467 -732
  144. package/dist/server/page-converter.mjs +87 -113
  145. package/dist/server/prebuild.mjs +1 -1
  146. package/dist/server/rendering/server.mjs +1717 -939
  147. package/dist/server/rendering.mjs +1729 -1044
  148. package/dist/server/routing.mjs +3229 -1835
  149. package/dist/server/server.mjs +21739 -19801
  150. package/dist/server/theme-bridge.mjs +656 -264
  151. package/dist/server/theme.mjs +2 -17
  152. package/dist/styles/index.css +609 -181
  153. 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
@@ -26877,6 +26815,7 @@ const publicWholeSeriesPriceDisplaySchema = z.discriminatedUnion("kind", [
26877
26815
  freePriceDisplaySchema,
26878
26816
  exactPriceDisplaySchema,
26879
26817
  fromPriceDisplaySchema,
26818
+ rangePriceDisplaySchema,
26880
26819
  unavailablePriceDisplaySchema
26881
26820
  ]);
26882
26821
  z.discriminatedUnion("kind", [
@@ -27980,13 +27919,16 @@ function buildEventRegistrationShellStepLabels(source) {
27980
27919
  }) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
27981
27920
  }
27982
27921
  function scopeEventRegistrationEvents(source) {
27922
+ return toRegistrationEvents(scopeEventRegistrationSourceEvents(source));
27923
+ }
27924
+ function scopeEventRegistrationSourceEvents(source) {
27983
27925
  const scope = planEventRegistrationScope({
27984
- events: toRegistrationEvents(source.events ?? []),
27926
+ events: source.events ?? [],
27985
27927
  wholeSeriesOffering: source.wholeSeriesOffering,
27986
27928
  occurrenceContext: source.occurrenceContext,
27987
27929
  subject: source.subject
27988
27930
  });
27989
- return scope.kind === "invalidSelectedRun" ? [] : scope.events;
27931
+ return scope.kind === "invalidSelectedRun" ? [] : [...scope.events];
27990
27932
  }
27991
27933
  function shellLabelForRegistrationStep(step, events) {
27992
27934
  switch (step) {
@@ -28018,26 +27960,29 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
28018
27960
  source: createZodCodec(eventRegistrationSourceSchema),
28019
27961
  render: createZodCodec(eventRegistrationRenderSchema)
28020
27962
  },
28021
- buildRender: (source) => ({
28022
- display: buildEventRegistrationDisplay(source),
28023
- hydration: {
28024
- occurrenceContext: source.occurrenceContext ?? null,
28025
- subject: source.subject ?? null,
28026
- events: source.events ?? null,
28027
- wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
28028
- wholeSeriesOffering: resolveWholeSeriesOffering(source),
28029
- maxTickets: source.maxTickets ?? void 0,
28030
- showVenue: source.showVenue,
28031
- showCapacity: source.showCapacity,
28032
- successMessage: source.successMessage,
28033
- buttonVariant: source.buttonVariant,
28034
- overlayEnabled: source.overlayEnabled,
28035
- spamProtectionEnabled: source.spamProtectionEnabled,
28036
- supportEmail: source.supportEmail,
28037
- sitePasses: source.sitePasses ?? null,
28038
- siteMemberships: source.siteMemberships ?? null
28039
- }
28040
- })
27963
+ buildRender: (source) => {
27964
+ const events = source.events == null ? null : scopeEventRegistrationSourceEvents(source);
27965
+ return {
27966
+ display: buildEventRegistrationDisplay(source),
27967
+ hydration: {
27968
+ occurrenceContext: source.occurrenceContext ?? null,
27969
+ subject: source.subject ?? null,
27970
+ events,
27971
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
27972
+ wholeSeriesOffering: resolveWholeSeriesOffering(source),
27973
+ maxTickets: source.maxTickets ?? void 0,
27974
+ showVenue: source.showVenue,
27975
+ showCapacity: source.showCapacity,
27976
+ successMessage: source.successMessage,
27977
+ buttonVariant: source.buttonVariant,
27978
+ overlayEnabled: source.overlayEnabled,
27979
+ spamProtectionEnabled: source.spamProtectionEnabled,
27980
+ supportEmail: source.supportEmail,
27981
+ sitePasses: source.sitePasses ?? null,
27982
+ siteMemberships: source.siteMemberships ?? null
27983
+ }
27984
+ };
27985
+ }
28041
27986
  });
28042
27987
  function normalizeEventRegistrationEventInput(value) {
28043
27988
  if (!isRecord$3(value)) return value;
@@ -28821,7 +28766,8 @@ const eventCollectionSourceSchemaShape = {
28821
28766
  buttonVariant: eventButtonVariantSchema.optional(),
28822
28767
  buttonText: z.string().optional(),
28823
28768
  emptyMessage: z.string().optional(),
28824
- className: z.string().optional()
28769
+ className: z.string().optional(),
28770
+ bookingTimeZone: z.string().optional()
28825
28771
  };
28826
28772
  const eventCollectionDisplaySchemaShape = {
28827
28773
  events: z.array(publicEventSchema),
@@ -28856,7 +28802,15 @@ const eventCollectionHydrationSchema = z.object({
28856
28802
  prefetchedEvents: z.boolean(),
28857
28803
  eventSurface: eventSurfaceScopeSchema$1,
28858
28804
  filterEventPresets: z.string().nullable(),
28859
- 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
+ })
28860
28814
  });
28861
28815
  function buildEventCollectionDisplay(source) {
28862
28816
  return {
@@ -28901,14 +28855,19 @@ function buildEventCollectionPresentationDisplay(source) {
28901
28855
  emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
28902
28856
  };
28903
28857
  }
28904
- function buildEventCollectionHydration(source) {
28858
+ function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
28859
+ const timeZone = toBookingTimeZone(source.bookingTimeZone);
28905
28860
  return {
28906
28861
  siteId: source.siteId,
28907
28862
  stage: source.stage,
28908
28863
  prefetchedEvents: source.events != null,
28909
28864
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
28910
28865
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
28911
- scheduleScope: normalizeEventScheduleScope(source.scheduleScope)
28866
+ scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
28867
+ calendarContext: {
28868
+ timeZone,
28869
+ initialToday: getLocalScheduleDate(now, timeZone)
28870
+ }
28912
28871
  };
28913
28872
  }
28914
28873
  //#endregion