@riverbankcms/sdk 0.139.0 → 0.140.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 (196) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-CUyTzd5z.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-Agkw4v5i.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-DdbeAdS8.mjs} +22 -8
  6. package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-CqGOz-Kv.mjs} +2053 -1110
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +165 -165
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +212 -212
  9. package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
  10. package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
  11. package/dist/_dts/api/src/authSubmission.d.ts +46 -0
  12. package/dist/_dts/api/src/billing.d.ts +8 -4
  13. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
  14. package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
  15. package/dist/_dts/api/src/blocks.d.ts +2 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
  17. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
  18. package/dist/_dts/api/src/communications.d.ts +0 -1
  19. package/dist/_dts/api/src/contentRuntime.d.ts +8 -3
  20. package/dist/_dts/api/src/endpoints.d.ts +93 -64
  21. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  22. package/dist/_dts/api/src/footerSettings.d.ts +9 -6
  23. package/dist/_dts/api/src/index.d.ts +5 -6
  24. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  25. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  26. package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
  27. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  28. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  29. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  30. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
  31. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
  32. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  33. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  34. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
  35. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  36. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  37. package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
  38. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  39. package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
  40. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  41. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +9 -5
  42. package/dist/_dts/api/src/siteOnboarding.d.ts +2 -9
  43. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
  44. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  45. package/dist/_dts/api/src/siteSettings.d.ts +20 -7
  46. package/dist/_dts/api/src/types.d.ts +77 -77
  47. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  48. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  49. package/dist/_dts/billing/src/plans/types.d.ts +3 -0
  50. package/dist/_dts/billing/src/site-arrangements.d.ts +14 -3
  51. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
  52. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  53. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -0
  54. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  55. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  56. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  57. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  58. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  59. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  60. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +2 -1
  61. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  62. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  63. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  64. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  65. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  66. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  68. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +30 -6
  69. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +15 -3
  70. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +43 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  72. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  76. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  78. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +10 -2
  79. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
  82. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  83. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
  85. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  87. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  88. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  89. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  90. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
  91. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  92. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  93. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
  94. package/dist/_dts/core/src/branded.d.ts +0 -8
  95. package/dist/_dts/core/src/index.d.ts +1 -0
  96. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
  97. package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
  98. package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
  99. package/dist/_dts/core/src/participants.d.ts +2 -29
  100. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  101. package/dist/_dts/core/src/public-profile.d.ts +27 -1
  102. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  103. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +293 -606
  104. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  105. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
  106. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
  107. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
  108. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  109. package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
  110. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  111. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  112. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
  113. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  114. package/dist/_dts/sdk/src/version.d.ts +1 -1
  115. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  116. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  117. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  118. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  119. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  120. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  121. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  122. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  123. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  124. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  125. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  126. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  127. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  128. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  129. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  130. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  131. package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-CuKa82V4.mjs} +4 -4
  132. package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-BbYieKWB.mjs} +1 -1
  133. package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-LTfR1Aby.mjs} +6 -6
  134. package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-DUHpYSuo.mjs} +2 -2
  135. package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-CHRupL6m.mjs} +1 -1
  136. package/dist/client/{accordion-FxF_ta47.mjs → accordion-6HiIFxNL.mjs} +1 -1
  137. package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-Dlmid43H.mjs} +7 -7
  138. package/dist/client/bookings.mjs +325 -140
  139. package/dist/client/{carousel-vng7fFT5.mjs → carousel-DmkZRRq_.mjs} +2 -2
  140. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  141. package/dist/client/{cart-DEPDsjNk.mjs → cart-CIC24330.mjs} +3 -3
  142. package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D1Zw9imo.mjs} +3 -3
  143. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  144. package/dist/client/client.mjs +1717 -882
  145. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  146. package/dist/client/{context-DvU_WUmd.mjs → context-Cy1OayHx.mjs} +6 -19
  147. package/dist/client/{dates-wnPMiRl5.mjs → dates-aDcfoLHr.mjs} +2 -2
  148. package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-FQxMPAjf.mjs} +8 -8
  149. package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-Dr3ac6Hb.mjs} +3 -3
  150. package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-D-AzUHFQ.mjs} +4 -4
  151. package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-B3XxBf3i.mjs} +3 -3
  152. package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-I6EaokFD.mjs} +500 -152
  153. package/dist/client/{form-CBKXN5In.mjs → form-BbWckVWY.mjs} +3 -3
  154. package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-C9qU4Y7x.mjs} +2 -2
  155. package/dist/client/hooks.mjs +445 -180
  156. package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-CLCShvlG.mjs} +3 -3
  157. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  158. package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-Briukxzi.mjs} +130 -87
  159. package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-Copadu-2.mjs} +1 -1
  160. package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-oujlRd-r.mjs} +3 -3
  161. package/dist/client/{productList-FM0cbUzj.mjs → productList-BRiIRUcd.mjs} +3 -3
  162. package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-CB2KS_ko.mjs} +130 -24
  163. package/dist/client/rendering/client.mjs +911 -400
  164. package/dist/client/rendering/islands.mjs +19 -19
  165. package/dist/client/rendering.mjs +1696 -818
  166. package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-B1IS1_ua.mjs} +1 -1
  167. package/dist/client/{shop-BIcjvy5a.mjs → shop-Vn6yNFED.mjs} +6 -6
  168. package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-BVTqipYp.mjs} +7 -7
  169. package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-BVnJVy7v.mjs} +1 -1
  170. package/dist/client/{shopShared-DowkXevB.mjs → shopShared-COIeK77T.mjs} +4 -4
  171. package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-DzIUcS9n.mjs} +7 -7
  172. package/dist/preview-next/before-render.mjs +119 -64
  173. package/dist/preview-next/client/runtime.mjs +4 -4
  174. package/dist/preview-next/keepAlive.mjs +119 -64
  175. package/dist/preview-next/middleware.mjs +119 -64
  176. package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
  177. package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-CnCLvZRv.mjs} +2 -2
  178. package/dist/{separator-UGtpag4Z.mjs → separator-DKDRJ1oH.mjs} +1 -1
  179. package/dist/server/components.mjs +787 -323
  180. package/dist/server/config-validation.mjs +328 -79
  181. package/dist/server/config.mjs +332 -83
  182. package/dist/server/data.mjs +441 -180
  183. package/dist/server/index.mjs +126 -66
  184. package/dist/server/next.mjs +1031 -595
  185. package/dist/server/page-converter.mjs +183 -74
  186. package/dist/server/prebuild.mjs +1 -1
  187. package/dist/server/rendering/server.mjs +1068 -592
  188. package/dist/server/rendering.mjs +802 -324
  189. package/dist/server/routing.mjs +506 -214
  190. package/dist/server/server.mjs +468 -244
  191. package/dist/server/theme-bridge.mjs +433 -100
  192. package/dist/server/theme.mjs +8 -2
  193. package/dist/styles/index.css +237 -43
  194. package/package.json +1 -1
  195. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  196. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
@@ -2,6 +2,6 @@ import { type ThemeColorToken } from '../tokens';
2
2
  export declare const backgroundAppearanceQuickColorTokenNames: readonly ["background", "surface", "muted", "primary", "secondary", "accent"];
3
3
  export declare const backgroundAppearanceBaseColorTokenNames: readonly ["background", "surface", "surfaceAlt", "muted", "primary", "secondary", "accent", "neutral"];
4
4
  export declare const backgroundAppearanceShadeableColorTokenNames: readonly ["primary", "secondary", "accent", "neutral"];
5
- export declare const backgroundAppearanceColorTokenNames: readonly ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-600" | "neutral-500" | "neutral-800" | "neutral-700" | "neutral-900" | "primary-500" | "primary-400" | "neutral-950" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "secondary-500" | "accent-400" | "neutral-50" | "neutral-100" | "neutral-200" | "neutral-300" | "secondary-400" | "neutral-400" | "primary-100" | "primary-800" | "primary-900" | "primary-700" | "primary-50" | "secondary-50" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
6
- export declare const backgroundAppearanceAdvancedColorTokenNames: ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-600" | "neutral-500" | "neutral-800" | "neutral-700" | "neutral-900" | "primary-500" | "primary-400" | "neutral-950" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "secondary-500" | "accent-400" | "neutral-50" | "neutral-100" | "neutral-200" | "neutral-300" | "secondary-400" | "neutral-400" | "primary-100" | "primary-800" | "primary-900" | "primary-700" | "primary-50" | "secondary-50" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
5
+ export declare const backgroundAppearanceColorTokenNames: readonly ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-600" | "neutral-500" | "neutral-50" | "neutral-900" | "primary-50" | "primary-500" | "primary-900" | "secondary-50" | "secondary-500" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "neutral-100" | "primary-400" | "neutral-300" | "neutral-950" | "neutral-800" | "neutral-700" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "accent-400" | "neutral-200" | "secondary-400" | "neutral-400" | "primary-100" | "primary-800" | "primary-700" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
6
+ export declare const backgroundAppearanceAdvancedColorTokenNames: ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-600" | "neutral-500" | "neutral-50" | "neutral-900" | "primary-50" | "primary-500" | "primary-900" | "secondary-50" | "secondary-500" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "neutral-100" | "primary-400" | "neutral-300" | "neutral-950" | "neutral-800" | "neutral-700" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "accent-400" | "neutral-200" | "secondary-400" | "neutral-400" | "primary-100" | "primary-800" | "primary-700" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
7
7
  export declare function parseBackgroundAppearanceColorToken(value: unknown): ThemeColorToken | null;
@@ -0,0 +1,77 @@
1
+ import { type ThemeColorToken } from '../tokens';
2
+ /**
3
+ * How far a hover state softens away from its resting foreground, as a
4
+ * percentage of full opacity.
5
+ *
6
+ * Softening — rather than brightening — is forced by the token vocabulary
7
+ * rather than chosen for taste. A resolved foreground is frequently an
8
+ * `on*` token, which `expandPalette` emits as pure `#FFFFFF` or `#000000`
9
+ * with no shade ramp: over a primary-painted section the resolved text role
10
+ * is `onPrimary`, and white has no headroom left to move further from its
11
+ * background. Moving *toward* the mid-range always has headroom, whatever
12
+ * the resting colour, and it keeps the hue exactly.
13
+ *
14
+ * 85% is the measured floor, not a round number. Softening costs contrast, and
15
+ * the binding case is a scrolled overlay header: `contrast-glass` paints 60%
16
+ * black or white, which composites the backdrop into a known band whatever the
17
+ * page content underneath happens to be. The lightest backdrop a dark glass can
18
+ * present is 60% black over white, `#666666`; a white foreground softened to
19
+ * 85% reads 4.69:1 there, against 4.07:1 at 75%, which fails. Nav links are
20
+ * 18px regular (`textSize: 'lg'`), so the bar is WCAG AA's 4.5:1 rather than
21
+ * the large-text 3:1.
22
+ *
23
+ * The mirror case — a light glass over dark content, `#999999` — cannot be met
24
+ * by any softening, because the *resting* colour is already only about 4.6:1
25
+ * there. That is a property of the glass rather than of this derivation, and
26
+ * it wants fixing where the glass tone is chosen.
27
+ */
28
+ export declare const FOREGROUND_HOVER_OPACITY_PERCENT = 85;
29
+ /**
30
+ * Derive the hover foreground that belongs with a resolved resting foreground.
31
+ *
32
+ * A resting foreground is chosen to be legible against a known surface. A hover
33
+ * state derived from it stays within a bounded distance of that colour, so it
34
+ * inherits most of the resting colour's contrast margin instead of asserting
35
+ * an unrelated brand colour that no one checked against the surface.
36
+ *
37
+ * That bounded-distance property is what lets this be used on a transparent
38
+ * overlay header, where the backdrop is only partly knowable: the scrolled
39
+ * state composites a 60% glass tint over arbitrary page content, so no
40
+ * compile-time contrast proof is available there. Staying near a colour that
41
+ * is already trusted in both states is a weaker claim than a contrast proof,
42
+ * and it is one this function can actually keep.
43
+ *
44
+ * Returns `null` when the resting token is not a plain palette token — an
45
+ * already-faded or raw value has no well-defined softening, and the caller
46
+ * should leave hover alone rather than guess.
47
+ */
48
+ export declare function deriveForegroundHoverToken(restingToken: ThemeColorToken): ThemeColorToken | null;
49
+ /** Flatten `foreground` at `alpha` over `background` into an opaque hex. */
50
+ export declare function compositeHex(foreground: string, background: string, alpha: number): string;
51
+ export type ForegroundHoverPlan =
52
+ /** Soften the resting colour; the derived token clears the conservative bound. */
53
+ Readonly<{
54
+ kind: 'softened';
55
+ token: ThemeColorToken;
56
+ }>
57
+ /**
58
+ * Keep the resting colour. Softening it would drop below the ordinary-text
59
+ * ratio somewhere the glass can reach, so the hover affordance has to come
60
+ * from something other than colour.
61
+ */
62
+ | Readonly<{
63
+ kind: 'resting';
64
+ }>;
65
+ /**
66
+ * Decide whether the resting foreground can safely be softened for hover.
67
+ *
68
+ * `glassTone` is the scroll treatment's compiled tone, or `null` when the style
69
+ * has no glass. Without one there is no bound on what the header can end up
70
+ * over, so this declines to soften rather than guess.
71
+ *
72
+ * The light-glass end cannot be satisfied by any softening: against `#999999`
73
+ * a dark resting foreground is already close to the 4.5:1 line, so every step
74
+ * away from it fails. That is why this returns a plan rather than a colour —
75
+ * the caller has to have a non-colour affordance to fall back on.
76
+ */
77
+ export declare function planForegroundHover(restingToken: ThemeColorToken, restingHex: string | null, glassTone: 'light' | 'dark' | null): ForegroundHoverPlan;
@@ -1,3 +1,4 @@
1
1
  export * from './foregroundContract';
2
+ export * from './foregroundInteraction';
2
3
  export * from './foregroundRoles';
3
4
  export * from './resolveSurfaceForeground';
@@ -7,7 +7,7 @@
7
7
  import type { Theme } from '../schema';
8
8
  export interface GenerateTypographyCssParams {
9
9
  themeId: string;
10
- theme: Theme;
10
+ theme?: Theme;
11
11
  }
12
12
  /**
13
13
  * Generate typography CSS for heading elements.
@@ -19,4 +19,4 @@ export interface GenerateTypographyCssParams {
19
19
  *
20
20
  * Selectors use :where() for zero specificity, allowing site styles to override easily.
21
21
  */
22
- export declare function generateTypographyCss({ themeId }: GenerateTypographyCssParams): string;
22
+ export declare function generateTypographyCss({ themeId, }: GenerateTypographyCssParams): string;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * True once `active` has held for `delay` milliseconds.
3
+ *
4
+ * This is what keeps a spinner from flashing on an action that finishes
5
+ * quickly. It lives on its own so that anything drawing its own pending
6
+ * indicator gets the same timing rather than reimplementing it, and so the two
7
+ * cannot drift apart.
8
+ */
9
+ export declare function useDelayedFlag(active: boolean, delay: number): boolean;
@@ -6,5 +6,15 @@ export interface PendingButtonProps extends ButtonProps {
6
6
  pendingLabel?: ReactNode;
7
7
  spinnerDelay?: number;
8
8
  spinnerProps?: Omit<DelayedSpinnerProps, 'active' | 'delay'>;
9
+ /**
10
+ * Draws the pending indicator instead of the default spinner, for surfaces
11
+ * with their own loading language.
12
+ *
13
+ * `visible` already has `spinnerDelay` applied, so a slot does not have to
14
+ * reimplement the delay and cannot flash on a fast action.
15
+ */
16
+ renderSpinner?: (state: Readonly<{
17
+ visible: boolean;
18
+ }>) => ReactNode;
9
19
  }
10
20
  export declare const PendingButton: import("react").ForwardRefExoticComponent<PendingButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { D as clsx } from "./colorStyles-CrxJrPjJ.mjs";
3
- import { Nt as assertNever$2, dn as formatCurrencyAmount } from "./propsDecoder-DYzafZb2.mjs";
4
- import { a as CheckIcon } from "./scrollToBlock-CvXszexS.mjs";
5
- import { n as RichText } from "./checkoutUrls-BuseL0dw.mjs";
2
+ import { O as clsx } from "./colorStyles-3013aRAY.mjs";
3
+ import { Pt as assertNever$2, fn as formatCurrencyAmount } from "./propsDecoder-CB2KS_ko.mjs";
4
+ import { a as CheckIcon } from "./scrollToBlock-B1IS1_ua.mjs";
5
+ import { n as RichText } from "./checkoutUrls-FL6lRkrt.mjs";
6
6
  import { useCallback, useEffect, useReducer, useRef } from "react";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region ../core/src/date-math.ts
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { ut as themeButtonClassName } from "./propsDecoder-DYzafZb2.mjs";
2
+ import { dt as themeButtonClassName } from "./propsDecoder-CB2KS_ko.mjs";
3
3
  import { useId } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/api/types/discounts.ts
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { D as clsx } from "./colorStyles-CrxJrPjJ.mjs";
3
- import { $ as getOrderedDayNames, B as buildEventRuntimeFilters, F as calendarWindowBounds, G as getCardOrientation, I as calendarWindowMonths$1, K as getContainerClass, M as calendarMonthDate, N as calendarPageResponseError, P as calendarQueryKey, Q as getDayOfWeek, R as planCalendarMonthRanges, V as getEventRuntimeFiltersKey, X as buildCalendarViewport, Y as addMonths, Yt as formatLocalScheduleDate, Z as formatDateKey, Zt as getLocalScheduleDate, nt as isToday, q as MONTH_NAMES, rt as shiftCalendarAnchorDate, tt as isSameCalendarDay, ut as themeButtonClassName } from "./propsDecoder-DYzafZb2.mjs";
4
- import { a as EventCardClient, i as EventPaginatedListView, n as useEventPagination, o as EventFilters, r as toError, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-oMoTw_JE.mjs";
5
- import { o as formatEventRemainingPlaces, p as isEventFull, t as formatEventPrice } from "./pricing-Uzw-GQ6Y.mjs";
6
- import { a as formatTime, d as resolveEventLinkProps, o as groupEventsByDate, s as resolveEventTimeZone, t as formatDate, u as resolveEventCta } from "./dates-wnPMiRl5.mjs";
7
- import { n as useBlockApi } from "./context-DvU_WUmd.mjs";
2
+ import { O as clsx } from "./colorStyles-3013aRAY.mjs";
3
+ import { $ as getDayOfWeek, F as calendarQueryKey, H as getEventRuntimeFiltersKey, I as calendarWindowBounds, J as MONTH_NAMES, K as getCardOrientation, L as calendarWindowMonths$1, N as calendarMonthDate, P as calendarPageResponseError, Q as formatDateKey, Qt as getLocalScheduleDate, V as buildEventRuntimeFilters, X as addMonths, Xt as formatLocalScheduleDate, Z as buildCalendarViewport, dt as themeButtonClassName, et as getOrderedDayNames, it as shiftCalendarAnchorDate, nt as isSameCalendarDay, q as getContainerClass, rt as isToday, z as planCalendarMonthRanges } from "./propsDecoder-CB2KS_ko.mjs";
4
+ import { a as EventCardClient, i as EventPaginatedListView, n as useEventPagination, o as EventFilters, r as toError, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-DzIUcS9n.mjs";
5
+ import { o as formatEventRemainingPlaces, p as isEventFull, t as formatEventPrice } from "./pricing-Copadu-2.mjs";
6
+ import { a as formatTime, d as resolveEventLinkProps, o as groupEventsByDate, s as resolveEventTimeZone, t as formatDate, u as resolveEventCta } from "./dates-aDcfoLHr.mjs";
7
+ import { n as useBlockApi } from "./context-Cy1OayHx.mjs";
8
8
  import { t as createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
9
9
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
10
10
  import React, { createContext, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { B as buildEventRuntimeFilters } from "./propsDecoder-DYzafZb2.mjs";
3
- import { i as EventPaginatedListView, n as useEventPagination, o as EventFilters, t as useEventFilters } from "./useEventFilters-oMoTw_JE.mjs";
2
+ import { V as buildEventRuntimeFilters } from "./propsDecoder-CB2KS_ko.mjs";
3
+ import { i as EventPaginatedListView, n as useEventPagination, o as EventFilters, t as useEventFilters } from "./useEventFilters-DzIUcS9n.mjs";
4
4
  import { useId, useMemo } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/events/EventListing.client.tsx
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Mt as isRecord } from "./propsDecoder-DYzafZb2.mjs";
2
+ import { Nt as isRecord } from "./propsDecoder-CB2KS_ko.mjs";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/nodes/shared/LeafletStaticMap.tsx
@@ -1,4 +1,4 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-DYzafZb2.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CB2KS_ko.mjs";
2
2
  //#region src/rendering/islands/enhancers/accordion.ts
3
3
  const decode = defineIslandPropsDecoder("accordion");
4
4
  function parseDefaultValues(value) {
@@ -1,14 +1,14 @@
1
1
  "use client";
2
- import { S as unsafeAsPassId, _ as unsafeAsAppointmentResourceId, b as unsafeAsFormId, v as unsafeAsAppointmentServiceId, y as unsafeAsCustomerPassId } from "./colorStyles-CrxJrPjJ.mjs";
3
- import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as StepIndicator, r as SpinnerNode, t as BookingConsentAgreement } from "./BookingConsentAgreement-CZvTDtsK.mjs";
4
- import { $t as resolveBookingTimeZoneId, At as isBookingRequirementConsentFieldId, Ct as resolveBookingPaymentStep, Dt as projectSelectedAppointmentConsentIntoForm, Et as toSelectedCollectionOptionKind, Ft as err, Lt as okWith, Nt as assertNever, Ot as resolveSelectedAppointmentConsent, Pt as clearWorkflowFeedback, Qt as parseBookingLocalDate, Rt as reportWorkflowError, St as resolveAppointmentCheckoutVerificationState, Tt as resolveDefaultBookingServiceId, Ut as addLocalScheduleDays, Yt as formatLocalScheduleDate, _t as getBookingServiceSlidingScale, bt as parseBookingCurrencyInputToCents, dn as formatCurrencyAmount, ft as logger, gt as getBookingRedirectStateFromLocation, ht as formatBookingSubmissionPreparationError, kt as BOOKING_FORM_DATA_RESERVED_KEYS, mt as formatBookingCentsAsCurrencyInput, pt as deriveBookingFormViewState, qt as formatBookingInstant, t as defineIslandPropsDecoder, ut as themeButtonClassName, vt as getBookingSuccessMessage, wt as resolveBookingSiteId, xt as prepareBookingSubmission, yt as isBookingServiceSlidingAmountInRange, zt as reportWorkflowSuccess } from "./propsDecoder-DYzafZb2.mjs";
5
- import { n as useBlockApi, t as BlockApiProvider } from "./context-DvU_WUmd.mjs";
2
+ import { C as unsafeAsPassId, b as unsafeAsCustomerPassId, v as unsafeAsAppointmentResourceId, x as unsafeAsFormId, y as unsafeAsAppointmentServiceId } from "./colorStyles-3013aRAY.mjs";
3
+ import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as StepIndicator, r as SpinnerNode, t as BookingConsentAgreement } from "./BookingConsentAgreement-CuKa82V4.mjs";
4
+ import { $t as parseBookingLocalDate, At as BOOKING_FORM_DATA_RESERVED_KEYS, Bt as reportWorkflowSuccess, Ct as resolveAppointmentCheckoutVerificationState, Dt as toSelectedCollectionOptionKind, Et as resolveDefaultBookingServiceId, Ft as clearWorkflowFeedback, It as err, Jt as formatBookingInstant, Ot as projectSelectedAppointmentConsentIntoForm, Pt as assertNever, Rt as okWith, St as prepareBookingSubmission, Tt as resolveBookingSiteId, Wt as addLocalScheduleDays, Xt as formatLocalScheduleDate, _t as getBookingRedirectStateFromLocation, bt as isBookingServiceSlidingAmountInRange, dt as themeButtonClassName, en as resolveBookingTimeZoneId, fn as formatCurrencyAmount, gt as formatBookingSubmissionPreparationError, ht as formatBookingCentsAsCurrencyInput, jt as isBookingRequirementConsentFieldId, kt as resolveSelectedAppointmentConsent, mt as deriveBookingFormViewState, pt as logger, t as defineIslandPropsDecoder, vt as getBookingServiceSlidingScale, wt as resolveBookingPaymentStep, xt as parseBookingCurrencyInputToCents, yt as getBookingSuccessMessage, zt as reportWorkflowError } from "./propsDecoder-CB2KS_ko.mjs";
5
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-Cy1OayHx.mjs";
6
6
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
7
- import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-CvXszexS.mjs";
8
- import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-D-DsLCMU.mjs";
7
+ import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-B1IS1_ua.mjs";
8
+ import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-BbYieKWB.mjs";
9
9
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
10
10
  import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
11
- import { t as buildCheckoutReturnUrls } from "./checkoutUrls-BuseL0dw.mjs";
11
+ import { t as buildCheckoutReturnUrls } from "./checkoutUrls-FL6lRkrt.mjs";
12
12
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
13
13
  import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-UNsfPcYq.mjs";
14
14
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";