@riverbankcms/sdk 0.149.0 → 0.150.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 (165) hide show
  1. package/dist/EventEmbeddedCheckoutStep-D00Kc8Zj.mjs +285 -0
  2. package/dist/{PreviewEditorSidebar-DBKln68M.mjs → PreviewEditorSidebar-7ZhmmnBB.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-DpRX4Mum.mjs → PreviewEditorUI-BIJucTRd.mjs} +2 -2
  4. package/dist/{SdkPreviewModeRuntime-DJPmPY-r.mjs → SdkPreviewModeRuntime-tj45gmCX.mjs} +4 -3
  5. package/dist/{SiteChromeCustomizeContext-JYA0cJ_Z.mjs → SiteChromeCustomizeContext-BFOt0ss-.mjs} +4454 -4059
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +660 -0
  7. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +510 -0
  8. package/dist/_dts/api/src/billing.d.ts +2 -2
  9. package/dist/_dts/api/src/contentRuntime.d.ts +5 -1
  10. package/dist/_dts/api/src/footerCompositionContracts.d.ts +9 -0
  11. package/dist/_dts/api/src/footerSettings.d.ts +3 -3
  12. package/dist/_dts/api/src/index.d.ts +1 -1
  13. package/dist/_dts/api/src/navigation/bookingPortalLink.d.ts +13 -0
  14. package/dist/_dts/api/src/navigation.d.ts +1 -0
  15. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +9 -173
  16. package/dist/_dts/api/src/sdkThemeWire.d.ts +12 -0
  17. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
  18. package/dist/_dts/api/src/siteSettings.d.ts +2 -0
  19. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
  20. package/dist/_dts/blocks/src/client.d.ts +2 -1
  21. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  22. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +30 -3
  23. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +10 -1
  24. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +38 -18
  26. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +6 -0
  28. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventEmbeddedCheckoutStep.d.ts +13 -0
  29. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationPayment.d.ts +15 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +0 -1
  31. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/FullyBookedStep.d.ts +6 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentBlockingPanel.d.ts +3 -0
  33. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +2 -0
  34. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +15 -5
  35. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +4 -2
  36. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentLocation.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentResponse.d.ts +72 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +66 -5
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +1 -4
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +13 -5
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +11 -52
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +19 -2
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -42
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +7 -8
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +90 -24
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useGuestRegistrationRecovery.d.ts +30 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/usePaymentStatusRecovery.d.ts +24 -12
  48. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useRegistrationAdmission.d.ts +18 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/wizardSteps.d.ts +6 -1
  50. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +1 -1
  51. package/dist/_dts/blocks/src/system/runtime/shared/stripe/browserStripe.d.ts +8 -0
  52. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +8 -0
  53. package/dist/_dts/commerce/src/purchase/checkoutCopy.d.ts +10 -0
  54. package/dist/_dts/commerce/src/purchase/checkoutPresentation.d.ts +49 -0
  55. package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +4 -4
  56. package/dist/_dts/commerce/src/purchase/checkoutStripeFinalizationPlanning.d.ts +5 -1
  57. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +9 -0
  58. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  59. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +1 -0
  60. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +9 -2
  61. package/dist/_dts/commerce/src/purchase/types.d.ts +5 -6
  62. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +3 -2
  63. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +6 -1
  64. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +7 -0
  65. package/dist/_dts/core/src/index.d.ts +1 -0
  66. package/dist/_dts/core/src/patch/index.d.ts +30 -0
  67. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +30 -1
  68. package/dist/_dts/sdk/src/bookings/index.d.ts +2 -1
  69. package/dist/_dts/sdk/src/bookings/types.d.ts +1 -1
  70. package/dist/_dts/sdk/src/version.d.ts +1 -1
  71. package/dist/_dts/theme-core/src/blocks/index.d.ts +1 -0
  72. package/dist/_dts/theme-core/src/blocks/opaquePanels.d.ts +147 -0
  73. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +22 -0
  74. package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +22 -0
  75. package/dist/_dts/theme-core/src/cards/roles.d.ts +12 -0
  76. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  77. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +198 -0
  78. package/dist/_dts/theme-core/src/palette/utils/index.d.ts +2 -0
  79. package/dist/_dts/theme-core/src/palette/utils/scrimContrast.d.ts +22 -0
  80. package/dist/_dts/theme-core/src/runtime/bridgeColourTokens.d.ts +10 -0
  81. package/dist/_dts/theme-core/src/schema.d.ts +330 -0
  82. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +0 -51
  83. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +0 -51
  84. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +11 -0
  85. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorCapabilities.d.ts +7 -1
  86. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +7 -1
  87. package/dist/_dts/theme-core/src/site-styles/previewRuntimeCapabilities.d.ts +12 -6
  88. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +7 -4
  89. package/dist/_dts/theme-core/src/site-styles/sectionSurfaceBackgrounds.d.ts +65 -0
  90. package/dist/_dts/theme-core/src/site-styles/types.d.ts +17 -0
  91. package/dist/_dts/theme-core/src/surfaces/opaqueSurface.d.ts +43 -0
  92. package/dist/client/{BookingMailingListNote-Cr3EeTP5.mjs → BookingMailingListNote-CYHOufsI.mjs} +10 -440
  93. package/dist/client/{CheckboxChoice-B33MqoUo.mjs → CheckboxChoice-M-3HycLw.mjs} +1 -1
  94. package/dist/client/{DemoBookingPortalAccess-BFGB1Fay.mjs → DemoBookingPortalAccess-Cvr9O_ca.mjs} +2 -2
  95. package/dist/client/{EventCombined.client-DKYV0_ft.mjs → EventCombined.client-m5UZIobP.mjs} +7 -7
  96. package/dist/client/EventEmbeddedCheckoutStep-DL6zFAkA.mjs +289 -0
  97. package/dist/client/{EventListing.client-B9UIcEYc.mjs → EventListing.client-DeMfCM04.mjs} +2 -2
  98. package/dist/client/{LeafletStaticMap-CFLPkP0K.mjs → LeafletStaticMap-CvZ3gOdD.mjs} +1 -1
  99. package/dist/client/{checkoutUrls-CXhko2Rv.mjs → RichText-BtfNvQV6.mjs} +2 -29
  100. package/dist/client/{TerminalPanel-JjmgxEsR.mjs → TerminalPanel-CUCNEwlH.mjs} +2 -18
  101. package/dist/client/{ThemedButton-CKV1Jh2m.mjs → ThemedButton-C7WhXuRl.mjs} +2 -2
  102. package/dist/client/{accordion-DXWIfT3T.mjs → accordion-cQm5mjqs.mjs} +1 -1
  103. package/dist/client/{bookingForm-CjZgHNvv.mjs → bookingForm-BVPJE5RQ.mjs} +11 -10
  104. package/dist/client/bookings.mjs +2668 -1134
  105. package/dist/client/{carousel-DSLikmvZ.mjs → carousel-3vgnY7LC.mjs} +2 -2
  106. package/dist/client/{carousel.client-A2lG-9od.mjs → carousel.client-CISsdZvg.mjs} +1 -1
  107. package/dist/client/{cart-HDjWReFt.mjs → cart-BGK4oOjm.mjs} +3 -3
  108. package/dist/client/{checkout-CUvRZA3W.mjs → checkout-GsBLUNJD.mjs} +3 -3
  109. package/dist/client/checkoutUrls-ChxwaNtO.mjs +28 -0
  110. package/dist/client/client.mjs +3042 -1868
  111. package/dist/client/{colorStyles-j5U9v5JA.mjs → colorStyles-D-32xHZh.mjs} +2 -30
  112. package/dist/client/{context-DFmaZa-Q.mjs → context-D_8s12Fp.mjs} +1 -1
  113. package/dist/client/{dates-BBep1JnF.mjs → dates-DeJQbQ9T.mjs} +2 -2
  114. package/dist/client/{eventCalendar-zEobhxo4.mjs → eventCalendar-cmucD4NR.mjs} +10 -10
  115. package/dist/client/{eventCombined-Dp7bz5k-.mjs → eventCombined-ku3E9FTl.mjs} +4 -4
  116. package/dist/client/{eventDetails-FE-zqTt7.mjs → eventDetails-CyKZ61sF.mjs} +5 -5
  117. package/dist/client/{eventListing-BMt5snal.mjs → eventListing-B7yxGIhX.mjs} +4 -4
  118. package/dist/client/{eventRegistration-O6ZxHfOb.mjs → eventRegistration-BoXfSFgZ.mjs} +1403 -857
  119. package/dist/client/{form-DFa1D8vt.mjs → form-CNQOWhJo.mjs} +5 -5
  120. package/dist/client/{headerSection-CmjHLR-N.mjs → headerSection-DahaBJGQ.mjs} +3 -3
  121. package/dist/client/hooks.mjs +123 -64
  122. package/dist/client/{locationMap-BXKP_lGh.mjs → locationMap-BoDjqYlW.mjs} +4 -4
  123. package/dist/client/{media-Cl38iOMI.mjs → media-BFY0y2rb.mjs} +2 -1
  124. package/dist/client/{newsletterForm-CU-HmxGx.mjs → newsletterForm-DtzXDklw.mjs} +4 -4
  125. package/dist/client/{pricing-KEAEsibq.mjs → pricing-DXEh2Lhh.mjs} +1 -1
  126. package/dist/client/{productDetail-Ckp7MGnt.mjs → productDetail-D7cPa-00.mjs} +3 -3
  127. package/dist/client/{productList-D91V0sYa.mjs → productList-D1XMap66.mjs} +3 -3
  128. package/dist/client/{propsDecoder-DZd6RJeA.mjs → propsDecoder-DiIeBopB.mjs} +758 -245
  129. package/dist/client/rendering/client.mjs +4381 -2892
  130. package/dist/client/rendering/islands.mjs +19 -19
  131. package/dist/client/rendering.mjs +3026 -1852
  132. package/dist/client/result-DRW7JWXz.mjs +30 -0
  133. package/dist/client/{routeIslandApiConfig-E1EkhhYY.mjs → routeIslandApiConfig-wzR4lKAY.mjs} +1 -1
  134. package/dist/client/scrollToBlock-C86BYkyV.mjs +17 -0
  135. package/dist/client/{shop-4F2jLQPI.mjs → shop-CYT5P-S5.mjs} +8 -8
  136. package/dist/client/{shop-commerce-store-vicweP2K.mjs → shop-commerce-store-wKhsJQxI.mjs} +1 -1
  137. package/dist/client/{shop-commerce-BbfCJjB3.mjs → shop-commerce-ypBu_dx4.mjs} +9 -9
  138. package/dist/client/{shopShared-DlONJt0T.mjs → shopShared-DFGhYrf2.mjs} +52 -6
  139. package/dist/client/{useEventFilters-COYyL3m7.mjs → useEventFilters-blSbN5o7.mjs} +8 -8
  140. package/dist/preview-next/client/runtime.mjs +3 -3
  141. package/dist/{sdk-runtime-CwvFFjB-.mjs → sdk-runtime-2p8uQk1V.mjs} +1 -1
  142. package/dist/{separator-ByL72zUT.mjs → separator-Cvvzk0Oo.mjs} +1 -1
  143. package/dist/server/components.mjs +4066 -3765
  144. package/dist/server/config-validation.mjs +185 -126
  145. package/dist/server/config.mjs +185 -126
  146. package/dist/server/data.mjs +123 -64
  147. package/dist/server/index.mjs +1 -1
  148. package/dist/server/next.mjs +615 -314
  149. package/dist/server/page-converter.mjs +100 -56
  150. package/dist/server/prebuild.mjs +1 -1
  151. package/dist/server/rendering/server.mjs +4041 -3751
  152. package/dist/server/rendering.mjs +4069 -3768
  153. package/dist/server/routing.mjs +149 -72
  154. package/dist/server/server.mjs +124 -65
  155. package/dist/server/theme-bridge.mjs +1122 -310
  156. package/dist/server/theme.mjs +126 -116
  157. package/dist/spinner-CDo6AkDz.mjs +658 -0
  158. package/dist/styles/index.css +75 -212
  159. package/package.json +1 -1
  160. package/dist/_dts/billing/src/checkout/platform.d.ts +0 -77
  161. package/dist/_dts/billing/src/config/env.d.ts +0 -29
  162. package/dist/_dts/billing/src/stripe/client.d.ts +0 -29
  163. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +0 -63
  164. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +0 -9
  165. package/dist/client/urlParams-D71VXFGx.mjs +0 -47
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { O as clsx } from "./colorStyles-j5U9v5JA.mjs";
3
- import { Kt as err, Wt as assertNever, qt as ok, t as defineIslandPropsDecoder } from "./propsDecoder-DZd6RJeA.mjs";
4
- import { n as useBlockApi, t as BlockApiProvider } from "./context-DFmaZa-Q.mjs";
2
+ import { r as clsx } from "./result-DRW7JWXz.mjs";
3
+ import { Kt as err, Wt as assertNever, qt as ok, t as defineIslandPropsDecoder } from "./propsDecoder-DiIeBopB.mjs";
4
+ import { t as ThemedButton } from "./ThemedButton-C7WhXuRl.mjs";
5
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-D_8s12Fp.mjs";
5
6
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
- import { t as ThemedButton } from "./ThemedButton-CKV1Jh2m.mjs";
7
7
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
8
- import { t as CheckboxChoice } from "./CheckboxChoice-B33MqoUo.mjs";
8
+ import { t as CheckboxChoice } from "./CheckboxChoice-M-3HycLw.mjs";
9
9
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
10
10
  import { useReducer, useRef, useState } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { j as staticHeaderChromeRuntime, r as buildCartDisplay, t as defineIslandPropsDecoder } from "./propsDecoder-DZd6RJeA.mjs";
3
- import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-CKV1Jh2m.mjs";
2
+ import { j as staticHeaderChromeRuntime, r as buildCartDisplay, t as defineIslandPropsDecoder } from "./propsDecoder-DiIeBopB.mjs";
3
+ import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-C7WhXuRl.mjs";
4
4
  import { t as resolveDedicatedCheckoutPath } from "./checkoutRoute-ClwHwYVA.mjs";
5
- import { n as useCommerceCart } from "./shop-commerce-store-vicweP2K.mjs";
5
+ import { n as useCommerceCart } from "./shop-commerce-store-wKhsJQxI.mjs";
6
6
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
7
7
  import * as React$1 from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -3933,6 +3933,15 @@ function fallbackBackground(fallbackToken, palette) {
3933
3933
  reason: "unresolvable-colour"
3934
3934
  };
3935
3935
  }
3936
+ /** Every role's contextual styles against one proven solid surface. */
3937
+ function knownSurfaceButtonContextStyles(input) {
3938
+ return Object.fromEntries(VARIANT_ROLES.flatMap((role) => Object.entries(contextualButtonSurfaceStyles(resolveContextualButtonRole({
3939
+ role,
3940
+ buttonSystem: input.buttonSystem,
3941
+ palette: input.palette,
3942
+ surface: input.surface
3943
+ })))));
3944
+ }
3936
3945
  function resolveContextualButtonRole(input) {
3937
3946
  const requested = findVariant(input.buttonSystem, input.role);
3938
3947
  if (!requested) return {
@@ -6932,6 +6941,18 @@ function brandNonEmptyString(value, label) {
6932
6941
  if (value.length === 0) throw new Error(`${label} must be a non-empty string.`);
6933
6942
  return value;
6934
6943
  }
6944
+ /**
6945
+ * What a block's own section background field admits, read from its manifest.
6946
+ * A site style's surface rule may paint a gradient or a photo; a block whose
6947
+ * `_sectionStyles.background` refuses that paint would be dropped at render
6948
+ * admission, so the runtime compiler paints the surface's colour equivalent
6949
+ * instead (see `compileSectionBackground`).
6950
+ */
6951
+ const sectionBackgroundPaintValues = [
6952
+ "color",
6953
+ "gradient",
6954
+ "image"
6955
+ ];
6935
6956
  const plainFrame = { kind: "plain" };
6936
6957
  function panelFrame(treatment) {
6937
6958
  return {
@@ -7016,6 +7037,7 @@ function defineBlockDesignCapability(capability) {
7016
7037
  ...capability,
7017
7038
  kind: "designed",
7018
7039
  looks: capability.looks ?? "not-applicable",
7040
+ sectionBackgroundPaints: admittedSectionBackgroundPaints(capability.sectionBackgroundPaints),
7019
7041
  sectionHeights: capability.sectionHeights ?? ["default"],
7020
7042
  imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
7021
7043
  imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
@@ -7028,6 +7050,10 @@ function defineBlockDesignCapability(capability) {
7028
7050
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
7029
7051
  };
7030
7052
  }
7053
+ /** Absent means the block admits every section background paint. */
7054
+ function admittedSectionBackgroundPaints(paints) {
7055
+ return paints ?? sectionBackgroundPaintValues;
7056
+ }
7031
7057
  //#endregion
7032
7058
  //#region ../theme-core/src/site-styles/logoBranding.ts
7033
7059
  const logoTextConfidenceValues = [
@@ -7306,12 +7332,22 @@ const mediaPresentationSchema = commonSchema.extend({
7306
7332
  const boxBackgroundSchema = z.discriminatedUnion("type", [
7307
7333
  commonSchema.extend({
7308
7334
  type: z.literal("color"),
7309
- color: tokenOrCssColorValueSchema.nullable().optional()
7335
+ color: tokenOrCssColorValueSchema.nullable().optional(),
7336
+ /**
7337
+ * Compiler-owned. The scrim a site-style colour surface lays over media
7338
+ * that replaces it (a Look's band meeting an authored photo), sized so the
7339
+ * surface's foreground stays legible over any pixel. A colour background
7340
+ * never draws it itself; `resolveSectionBackground` moves it onto the
7341
+ * merged media background as its overlay.
7342
+ */
7343
+ mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
7310
7344
  }),
7311
7345
  commonSchema.extend({
7312
7346
  type: z.literal("gradient"),
7313
7347
  gradient: z.string().nullable().optional(),
7314
- gradientPresetId: z.string().min(1).nullable().optional()
7348
+ gradientPresetId: z.string().min(1).nullable().optional(),
7349
+ /** Compiler-owned; see the colour branch. */
7350
+ mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
7315
7351
  }),
7316
7352
  mediaPresentationSchema.extend({
7317
7353
  type: z.literal("image"),
@@ -13160,6 +13196,17 @@ function defineBlockAppearancePreset(preset) {
13160
13196
  * (`defineBlockAppearancePreset` defaults it to `none`) — the block's own
13161
13197
  * composition still governs how its items look. The per-Look rationale for the card-bearing ones lives
13162
13198
  * in `.project/plans/1297-card-role-contract-site-styles-own-card-surfaces/mapping-table.md`.
13199
+ *
13200
+ * A Look asking for the `alternative` or `open` role is offered only where the
13201
+ * site style defines that role (`siteStyleSupportsLookDesign`), so two Looks
13202
+ * that differ only in role are distinct wherever both are offered.
13203
+ *
13204
+ * Retiring a Look is removing its entry. A stored pin to a retired id reads as
13205
+ * an unsupported pin in the page design editor model and renders the block's
13206
+ * auto Look, the same path an unavailable Look takes. Duplicates retired in
13207
+ * the 2026-09 Look audit: `feature-cards-soft-panels`,
13208
+ * `feature-cards-photo-tiles`, `feature-cards-editorial-pathways`,
13209
+ * `testimonials-default-cards`.
13163
13210
  */
13164
13211
  const brandScrimOptionGroups = [{
13165
13212
  id: "image-surface-treatment",
@@ -13544,16 +13591,6 @@ defineBlockAppearancePreset({
13544
13591
  treatment: "framed-programme"
13545
13592
  }
13546
13593
  }
13547
- }), defineBlockAppearancePreset({
13548
- id: "feature-cards-soft-panels",
13549
- target: "feature-cards",
13550
- label: "Soft tinted panels",
13551
- blockKinds: ["block.feature-cards"],
13552
- design: {
13553
- sectionSurface: "base",
13554
- contentFrame: plainFrame,
13555
- cardRole: "alternative"
13556
- }
13557
13594
  }), defineBlockAppearancePreset({
13558
13595
  id: "feature-cards-editorial-diptych",
13559
13596
  target: "feature-cards",
@@ -13565,27 +13602,6 @@ defineBlockAppearancePreset({
13565
13602
  contentFrame: plainFrame,
13566
13603
  cardRole: "default"
13567
13604
  }
13568
- }), defineBlockAppearancePreset({
13569
- id: "feature-cards-editorial-pathways",
13570
- target: "feature-cards",
13571
- label: "Editorial pathways",
13572
- blockKinds: ["block.feature-cards"],
13573
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
13574
- design: {
13575
- sectionSurface: "base",
13576
- contentFrame: plainFrame,
13577
- cardRole: "default"
13578
- }
13579
- }), defineBlockAppearancePreset({
13580
- id: "feature-cards-photo-tiles",
13581
- target: "feature-cards",
13582
- label: "Photo tiles",
13583
- blockKinds: ["block.feature-cards"],
13584
- design: {
13585
- sectionSurface: "base",
13586
- contentFrame: plainFrame,
13587
- cardRole: "default"
13588
- }
13589
13605
  }), defineBlockAppearancePreset({
13590
13606
  id: "events-lined-panel",
13591
13607
  target: "events",
@@ -13674,16 +13690,6 @@ defineBlockAppearancePreset({
13674
13690
  contentFrame: panelFrame("raised"),
13675
13691
  cardRole: "default"
13676
13692
  }
13677
- }), defineBlockAppearancePreset({
13678
- id: "testimonials-default-cards",
13679
- target: "testimonials",
13680
- label: "Default cards",
13681
- blockKinds: ["block.testimonials"],
13682
- design: {
13683
- sectionSurface: "base",
13684
- contentFrame: plainFrame,
13685
- cardRole: "default"
13686
- }
13687
13693
  }), defineBlockAppearancePreset({
13688
13694
  id: "testimonials-statement-cards",
13689
13695
  target: "testimonials",
@@ -17165,9 +17171,7 @@ const curatedSiteStyles = [
17165
17171
  recommendedAppearancePresetIds: [
17166
17172
  "hero-split-editorial",
17167
17173
  "intro-portrait-bio",
17168
- "feature-cards-soft-panels",
17169
- "feature-cards-editorial-columns",
17170
- "feature-cards-photo-tiles",
17174
+ "feature-cards-bold-colors",
17171
17175
  "testimonials-non-carded",
17172
17176
  "faq-contained-help",
17173
17177
  "contact-form-panel"
@@ -17811,8 +17815,7 @@ const curatedSiteStyles = [
17811
17815
  "intro-portrait-bio",
17812
17816
  "feature-cards-editorial-columns",
17813
17817
  "feature-cards-editorial-diptych",
17814
- "feature-cards-editorial-pathways",
17815
- "feature-cards-soft-panels",
17818
+ "feature-cards-bold-colors",
17816
17819
  "events-lined-panel",
17817
17820
  "testimonials-non-carded",
17818
17821
  "faq-base-accordion",
@@ -21228,6 +21231,34 @@ function withLookCapability(declaration) {
21228
21231
  }
21229
21232
  };
21230
21233
  }
21234
+ /**
21235
+ * The section background paints a block's own `_sectionStyles.background`
21236
+ * field admits, read from its manifest so the design capability cannot drift
21237
+ * from what render admission accepts. A block without the field admits none.
21238
+ */
21239
+ function sectionBackgroundPaintsOfFields(fields) {
21240
+ const sectionStyles = fields.find((field) => field.id === "_sectionStyles");
21241
+ if (!sectionStyles || sectionStyles.type !== "modal") return [];
21242
+ const background = sectionStyles.schema.fields.find((field) => field.id === "background");
21243
+ if (!background || background.type !== "tabGroup") return [];
21244
+ const tabIds = new Set(background.tabs.map((tab) => tab.id));
21245
+ return [
21246
+ "color",
21247
+ "gradient",
21248
+ "image"
21249
+ ].filter((paint) => tabIds.has(paint));
21250
+ }
21251
+ /** Pins a designed capability's section background paints to the block's manifest. */
21252
+ function withManifestSectionBackgroundPaints(declaration, fields) {
21253
+ if (declaration.kind !== "capability") return declaration;
21254
+ return {
21255
+ kind: "capability",
21256
+ capability: {
21257
+ ...declaration.capability,
21258
+ sectionBackgroundPaints: sectionBackgroundPaintsOfFields(fields)
21259
+ }
21260
+ };
21261
+ }
21231
21262
  function declareNoBlockDesignCapability(reason) {
21232
21263
  return {
21233
21264
  kind: "none",
@@ -23099,15 +23130,11 @@ function resolveContextualButtonStyles(background, foreground, context, options)
23099
23130
  if (!paletteCache.has(palette)) paletteCache.set(palette, surfaceCache);
23100
23131
  const cached = surfaceCache.get(cacheKey);
23101
23132
  if (cached) return cached;
23102
- const styles = Object.fromEntries(VARIANT_ROLES.flatMap((role) => {
23103
- const resolution = resolveContextualButtonRole({
23104
- role,
23105
- buttonSystem,
23106
- palette,
23107
- surface: surface.surface
23108
- });
23109
- return Object.entries(contextualButtonSurfaceStyles(resolution));
23110
- }));
23133
+ const styles = knownSurfaceButtonContextStyles({
23134
+ surface: surface.surface,
23135
+ palette,
23136
+ buttonSystem
23137
+ });
23111
23138
  surfaceCache.set(cacheKey, styles);
23112
23139
  return styles;
23113
23140
  }
@@ -29783,6 +29810,20 @@ const footerEngagement = stack({
29783
29810
  ...footerSpamProtectionBinding
29784
29811
  }), [], when("module.engagement.kind", { equals: "mailing-list" }))
29785
29812
  ], when("module.kind", { equals: "engagement" }));
29813
+ const platformAttribution = el("div", {
29814
+ className: "rb-caption",
29815
+ "data-site-attribution": "macadamia"
29816
+ }, [
29817
+ text({ as: "span" }, bind("module.lead")),
29818
+ text({
29819
+ as: "span",
29820
+ value: " "
29821
+ }),
29822
+ link({
29823
+ href: { $bind: { from: "module.link.href" } },
29824
+ className: "footer-nav-link rb-caption transition-theme-standard"
29825
+ }, [text({ as: "span" }, bind("module.link.label"))])
29826
+ ], when("module.kind", { equals: "attribution" }));
29786
29827
  const footerGroup = stack({
29787
29828
  gap: "md",
29788
29829
  align: "stretch",
@@ -29812,6 +29853,7 @@ const footerGroup = stack({
29812
29853
  hours,
29813
29854
  socials,
29814
29855
  footerEngagement,
29856
+ platformAttribution,
29815
29857
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
29816
29858
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
29817
29859
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -32045,14 +32087,18 @@ const calendarTabViewsSchema = z.enum([
32045
32087
  * @param needsPaymentStep - Whether user must complete payment method selection
32046
32088
  * @returns Array of wizard steps to display
32047
32089
  */
32048
- function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
32090
+ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep, paymentActive = false) {
32049
32091
  const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : [
32050
32092
  "select-event",
32051
32093
  "select-tickets",
32052
32094
  "enter-details"
32053
32095
  ];
32054
32096
  if (!needsPaymentStep) return baseSteps;
32055
- return [...baseSteps, "select-payment"];
32097
+ return paymentActive ? [
32098
+ ...baseSteps,
32099
+ "select-payment",
32100
+ "payment"
32101
+ ] : [...baseSteps, "select-payment"];
32056
32102
  }
32057
32103
  //#endregion
32058
32104
  //#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
@@ -32171,6 +32217,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
32171
32217
  "Date",
32172
32218
  "Tickets",
32173
32219
  "Details",
32220
+ "Payment options",
32174
32221
  "Payment"
32175
32222
  ];
32176
32223
  const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
@@ -32313,12 +32360,13 @@ function shellLabelForRegistrationStep(step, events) {
32313
32360
  switch (step) {
32314
32361
  case "select-event": return isDateSelection(events) ? "Date" : "Event";
32315
32362
  case "select-tickets": return "Tickets";
32363
+ case "fully-booked":
32316
32364
  case "enter-details": return "Details";
32317
- case "select-payment": return "Payment";
32365
+ case "select-payment": return "Payment options";
32366
+ case "payment": return "Payment";
32318
32367
  case "error":
32319
32368
  case "success":
32320
32369
  case "submitting":
32321
- case "redirecting":
32322
32370
  case "verifying-payment":
32323
32371
  case "verifying-timeout":
32324
32372
  case "payment-status":
@@ -32330,7 +32378,7 @@ function isDateSelection(events) {
32330
32378
  return Boolean(events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId));
32331
32379
  }
32332
32380
  function buildEventRegistrationShellBodyText(stepLabels) {
32333
- if (stepLabels.includes("Payment")) return "Preparing tickets, details, and payment options.";
32381
+ if (stepLabels.includes("Payment options")) return "Preparing tickets, details, and payment options.";
32334
32382
  if (stepLabels[0] === "Tickets") return "Preparing tickets and booking details.";
32335
32383
  return "Preparing dates, tickets, and booking details.";
32336
32384
  }
@@ -34214,7 +34262,8 @@ const eventCalendarLayout = [styledSection({
34214
34262
  fallback: false
34215
34263
  } },
34216
34264
  banded: { $bind: {
34217
- from: "content.banded",
34265
+ from: "content",
34266
+ transforms: [{ id: "events.calendarBanded" }],
34218
34267
  fallback: false
34219
34268
  } }
34220
34269
  }))]
@@ -40598,7 +40647,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
40598
40647
  if (definition.manifest.name !== blockKind) throw new Error(`System block kind mismatch: expected ${blockKind}, received ${definition.manifest.name}.`);
40599
40648
  return {
40600
40649
  ...definition,
40601
- designCapability,
40650
+ designCapability: withManifestSectionBackgroundPaints(designCapability, definition.manifest.fields),
40602
40651
  designMetadata,
40603
40652
  manifest: {
40604
40653
  ...definition.manifest,
@@ -41649,6 +41698,16 @@ const defaultTransforms = createTransformRegistry([
41649
41698
  return resolveCalendarReadProfile(asPartialObject(value) ?? {});
41650
41699
  }
41651
41700
  },
41701
+ {
41702
+ id: "events.calendarBanded",
41703
+ kind: "formatter",
41704
+ summary: "Paint the week-board band only on a section with no background of its own",
41705
+ run(value) {
41706
+ const content = asPartialObject(value) ?? {};
41707
+ const sectionStyles = asPartialObject(content._sectionStyles);
41708
+ return content.banded === true && parseBackgroundContent(sectionStyles?.background) === null;
41709
+ }
41710
+ },
41652
41711
  ...formattingTransforms,
41653
41712
  ...layoutTransforms,
41654
41713
  ...chromeLogoTransforms,
@@ -1,8 +1,8 @@
1
- import { i as textColorStyle } from "./colorStyles-j5U9v5JA.mjs";
2
- import { t as defineIslandPropsDecoder } from "./propsDecoder-DZd6RJeA.mjs";
3
- import { n as ThemedButtonLink } from "./ThemedButton-CKV1Jh2m.mjs";
1
+ import { i as textColorStyle } from "./colorStyles-D-32xHZh.mjs";
2
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-DiIeBopB.mjs";
3
+ import { n as ThemedButtonLink } from "./ThemedButton-C7WhXuRl.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as LeafletStaticMap } from "./LeafletStaticMap-CFLPkP0K.mjs";
5
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-CvZ3gOdD.mjs";
6
6
  import "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region ../core/src/location.ts
@@ -1,4 +1,5 @@
1
- import { D as ok$1, E as err, O as clsx, S as unsafeAsMediaAssetId, T as unsafeAsStoragePath, f as isExplicitRectCrop, i as textColorStyle, m as resolveMediaTransformForAspect, n as mergeStyles, p as parseAspectRatioValue, t as backgroundColorStyle, w as unsafeAsStorageBucketName } from "./colorStyles-j5U9v5JA.mjs";
1
+ import { n as ok$1, r as clsx, t as err } from "./result-DRW7JWXz.mjs";
2
+ import { S as unsafeAsMediaAssetId, T as unsafeAsStoragePath, f as isExplicitRectCrop, i as textColorStyle, m as resolveMediaTransformForAspect, n as mergeStyles, p as parseAspectRatioValue, t as backgroundColorStyle, w as unsafeAsStorageBucketName } from "./colorStyles-D-32xHZh.mjs";
2
3
  import "react";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  //#region ../media-core/src/fileSafety.ts
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { O as clsx } from "./colorStyles-j5U9v5JA.mjs";
3
- import { $t as parseMailingListVisitorSelection, Tn as assertNever$1, Wt as assertNever, g as newsletterBlockSubmissionMessage, h as NEWSLETTER_SIGNUPS_PAUSED_MESSAGE, t as defineIslandPropsDecoder } from "./propsDecoder-DZd6RJeA.mjs";
4
- import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-DFmaZa-Q.mjs";
2
+ import { r as clsx } from "./result-DRW7JWXz.mjs";
3
+ import { Pn as assertNever$1, Wt as assertNever, g as newsletterBlockSubmissionMessage, h as NEWSLETTER_SIGNUPS_PAUSED_MESSAGE, sn as parseMailingListVisitorSelection, t as defineIslandPropsDecoder } from "./propsDecoder-DiIeBopB.mjs";
4
+ import { t as ThemedButton } from "./ThemedButton-C7WhXuRl.mjs";
5
+ import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-D_8s12Fp.mjs";
5
6
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
- import { t as ThemedButton } from "./ThemedButton-CKV1Jh2m.mjs";
7
7
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
8
8
  import { i as getFieldValidationControlProps, r as FieldValidationMessage, t as MAILING_LIST_CONFIRMATION_MESSAGE } from "./mailingListSignupCopy-DZSHZrm6.mjs";
9
9
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
@@ -1,4 +1,4 @@
1
- import { gn as formatEventPricing, hn as formatBookingPriceDisplay, yn as publicEventPricingDisplay } from "./propsDecoder-DZd6RJeA.mjs";
1
+ import { En as formatEventPricing, Tn as formatBookingPriceDisplay, kn as publicEventPricingDisplay } from "./propsDecoder-DiIeBopB.mjs";
2
2
  //#region ../blocks/src/system/runtime/nodes/events/domain/capacity.ts
3
3
  /**
4
4
  * Compute remaining spots for an event from `availableSpots` with a fallback
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-DZd6RJeA.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-BbfCJjB3.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-DlONJt0T.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-DiIeBopB.mjs";
2
+ import { t as mountShopBlockIsland } from "./shopShared-DFGhYrf2.mjs";
3
+ import { r as ProductDetailController } from "./shop-commerce-ypBu_dx4.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-detail.client.tsx
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-DZd6RJeA.mjs";
2
- import { i as ProductListController } from "./shop-commerce-BbfCJjB3.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-DlONJt0T.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-DiIeBopB.mjs";
2
+ import { t as mountShopBlockIsland } from "./shopShared-DFGhYrf2.mjs";
3
+ import { i as ProductListController } from "./shop-commerce-ypBu_dx4.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-list.client.tsx