@riverbankcms/sdk 0.143.0 → 0.145.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 (254) hide show
  1. package/dist/{PreviewEditorSidebar-DROGfMKi.mjs → PreviewEditorSidebar-O-V6Pl5a.mjs} +20 -26
  2. package/dist/{PreviewEditorUI-BaRjhFu-.mjs → PreviewEditorUI-1UlX_9cw.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-BxGwdOCV.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-OIABYLES.mjs → SdkPreviewModeRuntime-DYbA_4iv.mjs} +431 -351
  5. package/dist/{SiteChromeCustomizeContext-ohjTvZbc.mjs → SiteChromeCustomizeContext-CNTKQ9nx.mjs} +3989 -2769
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +4719 -66
  7. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +429 -6
  8. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
  9. package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
  10. package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
  11. package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
  12. package/dist/_dts/api/src/billing.d.ts +1 -1
  13. package/dist/_dts/api/src/billingEndpointTypes.d.ts +8 -2
  14. package/dist/_dts/api/src/bookingConfig.d.ts +3 -1
  15. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -12
  16. package/dist/_dts/api/src/communications.d.ts +14 -22
  17. package/dist/_dts/api/src/contentRuntime.d.ts +2 -0
  18. package/dist/_dts/api/src/endpoints.d.ts +105 -58
  19. package/dist/_dts/api/src/index.d.ts +1 -1
  20. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  21. package/dist/_dts/api/src/launchReadiness.d.ts +2 -0
  22. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +4 -4
  23. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +0 -23
  24. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -0
  25. package/dist/_dts/api/src/publicBookingService.d.ts +35 -1
  26. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +1 -0
  27. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
  28. package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
  29. package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
  30. package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
  31. package/dist/_dts/api/src/sdkSettingsContracts.d.ts +8 -0
  32. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -6
  33. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -8
  34. package/dist/_dts/api/src/siteSettings.d.ts +17 -7
  35. package/dist/_dts/api/src/types.d.ts +2 -1
  36. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  37. package/dist/_dts/block-form/src/backend/types.d.ts +14 -0
  38. package/dist/_dts/block-form/src/client/index.d.ts +1 -0
  39. package/dist/_dts/block-form/src/context/RepeaterHostActionsContext.d.ts +30 -0
  40. package/dist/_dts/block-form/src/context/index.d.ts +1 -0
  41. package/dist/_dts/block-form/src/index.d.ts +1 -0
  42. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +4 -1
  43. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +5 -2
  44. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +11 -1
  45. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -0
  46. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useEmptyStateFocusAfterRemoval.d.ts +8 -0
  47. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +15 -1
  48. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +5 -2
  49. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
  50. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  51. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +58 -10
  52. package/dist/_dts/blocks/src/index.d.ts +1 -1
  53. package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
  54. package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
  55. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
  56. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
  57. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -0
  58. package/dist/_dts/blocks/src/server.d.ts +1 -1
  59. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
  60. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
  61. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -1
  62. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  63. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  64. package/dist/_dts/blocks/src/system/constants/events.d.ts +10 -0
  65. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
  66. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +5 -0
  67. package/dist/_dts/blocks/src/system/runtime/api/context.d.ts +3 -3
  68. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +10 -0
  69. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +3 -2
  70. package/dist/_dts/blocks/src/system/runtime/api/readAuthority.d.ts +11 -0
  71. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +9 -0
  72. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -13
  73. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -6
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +9 -4
  75. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +0 -1
  76. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +1 -3
  77. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
  78. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +22 -2
  79. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +7 -24
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
  85. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
  86. package/dist/_dts/blocks/src/system/runtime/nodes/cart.server.d.ts +1 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +1 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.d.ts +2 -1
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +2 -1
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.override.d.ts +2 -1
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -1
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +8 -0
  96. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +4 -5
  97. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +7 -2
  98. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +7 -5
  99. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -6
  100. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +6 -4
  101. package/dist/_dts/blocks/src/system/runtime/nodes/header-control.d.ts +10 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/layout.d.ts +6 -21
  103. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +20 -1
  104. package/dist/_dts/blocks/src/system/runtime/nodes/product-detail.server.d.ts +1 -0
  105. package/dist/_dts/blocks/src/system/runtime/nodes/product-list.server.d.ts +1 -0
  106. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/shop.server.d.ts +1 -0
  108. package/dist/_dts/blocks/src/system/runtime/shared/components/ThemedButton.d.ts +58 -0
  109. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  110. package/dist/_dts/blocks/src/system/transforms/registry/chromeLogo.d.ts +23 -0
  111. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +2 -1
  112. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +3 -1
  113. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +4 -1
  114. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -0
  115. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  116. package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
  117. package/dist/_dts/core/src/editor-state.d.ts +6 -0
  118. package/dist/_dts/core/src/event-catalogue.d.ts +27 -0
  119. package/dist/_dts/core/src/event-preset-vocabulary.d.ts +7 -0
  120. package/dist/_dts/core/src/index.d.ts +3 -0
  121. package/dist/_dts/core/src/public-profile.d.ts +9 -0
  122. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +676 -241
  123. package/dist/_dts/db/src/schemas/forms.d.ts +286 -2
  124. package/dist/_dts/editor-blocks/src/block-editor/{BlockCardHeader.d.ts → BlockCardFrame.d.ts} +11 -3
  125. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +6 -0
  126. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
  127. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
  128. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
  129. package/dist/_dts/logger/src/console.d.ts +3 -0
  130. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
  131. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  132. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +1 -0
  133. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
  134. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  135. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
  136. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
  137. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +1 -0
  138. package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
  139. package/dist/_dts/sdk/src/client/types.d.ts +4 -1
  140. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  141. package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
  142. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
  143. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
  144. package/dist/_dts/sdk/src/navigation/index.d.ts +27 -0
  145. package/dist/_dts/sdk/src/public-api/contracts.d.ts +21 -15
  146. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
  147. package/dist/_dts/sdk/src/rendering/client.d.ts +1 -0
  148. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +1 -0
  149. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +7 -1
  150. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -2
  151. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
  152. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +1 -1
  153. package/dist/_dts/sdk/src/rendering/islands/enhancers/routeIslandApiConfig.d.ts +3 -2
  154. package/dist/_dts/sdk/src/rendering/islands/enhancers/shopShared.d.ts +2 -0
  155. package/dist/_dts/sdk/src/rendering/overrides.d.ts +1 -0
  156. package/dist/_dts/sdk/src/version.d.ts +1 -1
  157. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  158. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +1 -1
  159. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +3 -13
  160. package/dist/_dts/theme-core/src/customCss/index.d.ts +1 -1
  161. package/dist/_dts/theme-core/src/customCss/patch.d.ts +0 -5
  162. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  163. package/dist/_dts/theme-core/src/layout/boundaryCss.d.ts +3 -0
  164. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
  165. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
  166. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
  167. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
  168. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  169. package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
  170. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
  171. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
  172. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  173. package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
  174. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
  175. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
  176. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
  177. package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
  178. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
  179. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
  180. package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
  181. package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
  182. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  183. package/dist/_dts/theme-core/src/surfaces/logoVariant.d.ts +26 -0
  184. package/dist/_dts/theme-core/src/utils/colorStyles.d.ts +10 -0
  185. package/dist/_dts/ui/src/editor-item-card.d.ts +116 -0
  186. package/dist/_dts/ui/src/index.d.ts +1 -0
  187. package/dist/client/{BookingConsentAgreement-BoCtvzzu.mjs → BookingConsentAgreement-DlVOmpW4.mjs} +4 -55
  188. package/dist/client/{DiscountCodeDisclosure-B5S30nZk.mjs → DiscountCodeDisclosure-T9q623PQ.mjs} +27 -17
  189. package/dist/client/{EventCombined.client-CeZ2-zSt.mjs → EventCombined.client-DnsUeONl.mjs} +54 -46
  190. package/dist/client/{EventListing.client-DJN3j8B3.mjs → EventListing.client-CNBFqJS4.mjs} +3 -4
  191. package/dist/client/{LeafletStaticMap-RjtGzDQT.mjs → LeafletStaticMap-C7higg52.mjs} +1 -1
  192. package/dist/client/ThemedButton-LAJTNrS8.mjs +412 -0
  193. package/dist/client/{accordion-DOmnDoyg.mjs → accordion-BcNF9TjX.mjs} +1 -1
  194. package/dist/client/{bookingForm-C0vk7pgS.mjs → bookingForm-BUaQ3S03.mjs} +161 -75
  195. package/dist/client/bookings.mjs +392 -182
  196. package/dist/client/{carousel-BZJ7pno3.mjs → carousel-CTdF6e0V.mjs} +2 -2
  197. package/dist/client/{carousel.client-DQTjCVQT.mjs → carousel.client-jahpU9Vz.mjs} +1 -1
  198. package/dist/client/{cart-CaeVAHJl.mjs → cart-pGtyf_XU.mjs} +3 -3
  199. package/dist/client/{checkout-7wmoNDtG.mjs → checkout-Da9WSn7Y.mjs} +3 -3
  200. package/dist/client/{checkoutUrls-FL6lRkrt.mjs → checkoutUrls-CW3-78uu.mjs} +1 -1
  201. package/dist/client/client.mjs +3819 -2717
  202. package/dist/client/{colorStyles-3013aRAY.mjs → colorStyles-CuJBiS-1.mjs} +16 -4
  203. package/dist/client/{context-BOimxE3U.mjs → context-BFeY_Wbm.mjs} +24 -8
  204. package/dist/client/{dates-BnzVksi4.mjs → dates-BhwVSxDg.mjs} +2 -2
  205. package/dist/client/{eventCalendar-l-fpaslC.mjs → eventCalendar-BAtdnR4s.mjs} +39 -50
  206. package/dist/client/{eventCombined-DGGvssK6.mjs → eventCombined-RksA3tRC.mjs} +5 -4
  207. package/dist/client/{eventDetails-DRiCm_hL.mjs → eventDetails-BB9hB4wR.mjs} +4 -4
  208. package/dist/client/{eventListing-dph8loYX.mjs → eventListing-BpJBkviM.mjs} +5 -4
  209. package/dist/client/{eventRegistration-ClBohmbY.mjs → eventRegistration-B18jFq_o.mjs} +83 -68
  210. package/dist/client/{form-BLVVAnd3.mjs → form-Dodt8Y8t.mjs} +9 -10
  211. package/dist/client/{headerSection-DHy4C8Ix.mjs → headerSection-B0qj9ttg.mjs} +23 -30
  212. package/dist/client/hooks.mjs +807 -162
  213. package/dist/client/{locationMap-6HuS28ck.mjs → locationMap-gn-iMk7a.mjs} +9 -10
  214. package/dist/client/{media-DHpfFwd3.mjs → media-BtJ37tzS.mjs} +1 -1
  215. package/dist/client/{newsletterForm-xOdcOhZP.mjs → newsletterForm-oByLdFkr.mjs} +31 -11
  216. package/dist/client/{pricing-ChinRYFt.mjs → pricing-BOU0_Hai.mjs} +1 -1
  217. package/dist/client/{productDetail-0chA5gbK.mjs → productDetail-D9v1zH2j.mjs} +3 -3
  218. package/dist/client/{productList-OoINA0h1.mjs → productList-D-mItx1n.mjs} +3 -3
  219. package/dist/client/{propsDecoder-CIZ-hbIG.mjs → propsDecoder-C3TP_z4x.mjs} +158 -61
  220. package/dist/client/rendering/client.mjs +2785 -2000
  221. package/dist/client/rendering/islands.mjs +19 -19
  222. package/dist/client/rendering.mjs +3855 -2694
  223. package/dist/client/{routeIslandApiConfig-UNsfPcYq.mjs → routeIslandApiConfig-DzN1W0sq.mjs} +8 -1
  224. package/dist/client/{scrollToBlock-BPZl0gPZ.mjs → scrollToBlock-CWs8EIdo.mjs} +1 -1
  225. package/dist/client/{shop-CLJFqNIq.mjs → shop-Dufw7N7o.mjs} +45 -58
  226. package/dist/client/{shop-commerce-PpANg5wB.mjs → shop-commerce-gklw_hLF.mjs} +42 -55
  227. package/dist/client/{shop-commerce-store-TA_Kz2ku.mjs → shop-commerce-store-Sf1eyTaZ.mjs} +1 -1
  228. package/dist/client/{shopShared-DzcFcA5g.mjs → shopShared-B5nyA41S.mjs} +6 -5
  229. package/dist/client/{useEventFilters-CFU21QZo.mjs → useEventFilters-CLL829vy.mjs} +66 -355
  230. package/dist/preview-next/before-render.mjs +147 -77
  231. package/dist/preview-next/client/runtime.mjs +4 -4
  232. package/dist/preview-next/editor-chrome.css +8 -0
  233. package/dist/preview-next/keepAlive.mjs +147 -77
  234. package/dist/preview-next/middleware.mjs +147 -77
  235. package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-BxAFlu-j.mjs} +147 -77
  236. package/dist/{sdk-runtime-CDKl0Fr7.mjs → sdk-runtime-D0uZFev7.mjs} +2 -2
  237. package/dist/{separator-BTp96X32.mjs → separator-EvdCAn4V.mjs} +1 -1
  238. package/dist/server/components.mjs +2548 -1607
  239. package/dist/server/config-validation.mjs +794 -160
  240. package/dist/server/config.mjs +794 -160
  241. package/dist/server/data.mjs +806 -161
  242. package/dist/server/index.mjs +167 -85
  243. package/dist/server/navigation.mjs +28 -1
  244. package/dist/server/next.mjs +14930 -14036
  245. package/dist/server/page-converter.mjs +494 -113
  246. package/dist/server/prebuild.mjs +1 -1
  247. package/dist/server/rendering/server.mjs +2537 -1590
  248. package/dist/server/rendering.mjs +2571 -1618
  249. package/dist/server/routing.mjs +918 -200
  250. package/dist/server/server.mjs +819 -205
  251. package/dist/server/theme-bridge.mjs +1232 -28
  252. package/dist/server/theme.mjs +6 -4
  253. package/dist/styles/index.css +6 -0
  254. package/package.json +2 -1
@@ -0,0 +1,320 @@
1
+ import { type BoundaryOptionId, type SiteStyleSectionTransitionIntent } from './types';
2
+ import type { AngleSectionTransitionVariantId, GradientSectionTransitionVariantId, SectionBoundaryRuntimeSize, SectionBoundaryTreatment, WaveSectionTransitionVariantId } from './sectionTransitions';
3
+ /**
4
+ * Every transition that draws something. `none` is deliberately outside the
5
+ * catalogue: it is the absence of a join, not a treatment (issue 1422).
6
+ */
7
+ export type DecorativeTransitionIntent = Exclude<SiteStyleSectionTransitionIntent, 'none'>;
8
+ export type DecorativeTransitionFamilyId = 'gradient' | 'wave' | 'angle';
9
+ /** One SVG mask per wave variant, keyed so CSS never guesses by prefix. */
10
+ export type WaveMaskId = 'classic' | 'balanced' | 'gentle' | 'bold' | 'drift';
11
+ /**
12
+ * The sloped top edge of an angle shape, as percentages from the top of the
13
+ * shape layer at its left and right edges. The bottom edge is always flat, so
14
+ * `polygon(0 {start}%, 100% {end}%, 100% 100%, 0 100%)` is the full shape.
15
+ */
16
+ export type AnglePolygon = Readonly<{
17
+ startTopPercent: number;
18
+ endTopPercent: number;
19
+ }>;
20
+ export type TransitionShape =
21
+ /** Every fade draws the same curve today; its height comes from the entry. */
22
+ Readonly<{
23
+ kind: 'fade';
24
+ }> | Readonly<{
25
+ kind: 'wave';
26
+ mask: WaveMaskId;
27
+ }> | Readonly<{
28
+ kind: 'angle';
29
+ polygon: AnglePolygon;
30
+ }>;
31
+ type TransitionCatalogueEntryBase = Readonly<{
32
+ intent: DecorativeTransitionIntent;
33
+ optionId: BoundaryOptionId;
34
+ /** Flat label used by the persistence-facing option list. */
35
+ label: string;
36
+ /** Short label used inside a family picker ("Classic" under "Wave"). */
37
+ variantLabel: string;
38
+ size: SectionBoundaryRuntimeSize;
39
+ /** Unwrapped CSS length expression; metrics wrap it in `calc()` as needed. */
40
+ heightExpression: string;
41
+ }>;
42
+ /**
43
+ * Family, variant, treatment and shape are correlated per family, so a wave
44
+ * entry cannot carry an angle polygon or a soft-fade treatment.
45
+ */
46
+ export type TransitionCatalogueEntry = TransitionCatalogueEntryBase & (Readonly<{
47
+ family: 'gradient';
48
+ variantId: GradientSectionTransitionVariantId;
49
+ treatment: Extract<SectionBoundaryTreatment, {
50
+ kind: 'soft-fade';
51
+ }>;
52
+ shape: Extract<TransitionShape, {
53
+ kind: 'fade';
54
+ }>;
55
+ }> | Readonly<{
56
+ family: 'wave';
57
+ variantId: WaveSectionTransitionVariantId;
58
+ treatment: Extract<SectionBoundaryTreatment, {
59
+ kind: 'wave-edge';
60
+ }>;
61
+ shape: Extract<TransitionShape, {
62
+ kind: 'wave';
63
+ }>;
64
+ }> | Readonly<{
65
+ family: 'angle';
66
+ variantId: AngleSectionTransitionVariantId;
67
+ treatment: Extract<SectionBoundaryTreatment, {
68
+ kind: 'angle-edge';
69
+ }>;
70
+ shape: Extract<TransitionShape, {
71
+ kind: 'angle';
72
+ }>;
73
+ }>);
74
+ export type TransitionCatalogueFamily = Readonly<{
75
+ id: DecorativeTransitionFamilyId;
76
+ label: string;
77
+ }>;
78
+ /**
79
+ * Family order for pickers. Entries below are listed family by family in this
80
+ * same order, so the flat option list and the grouped families agree.
81
+ */
82
+ export declare const transitionCatalogueFamilies: readonly [{
83
+ readonly id: "gradient";
84
+ readonly label: "Gradient";
85
+ }, {
86
+ readonly id: "wave";
87
+ readonly label: "Wave";
88
+ }, {
89
+ readonly id: "angle";
90
+ readonly label: "Angle";
91
+ }];
92
+ /**
93
+ * The single source of transition vocabulary. Order is significant: it is the
94
+ * order of `boundaryOptions` (after `none`) and of each family's variants,
95
+ * which persisted pins, page-flow presets and the editor picker all rely on.
96
+ *
97
+ * Shapes match what `generateLayoutCss` draws today. Structured
98
+ * amplitude/frequency treatments (issue 826) extend this list later.
99
+ */
100
+ export declare const transitionCatalogueEntries: readonly [{
101
+ readonly intent: "soft-fade-short";
102
+ readonly optionId: BoundaryOptionId;
103
+ readonly family: "gradient";
104
+ readonly variantId: "soft";
105
+ readonly label: "Soft";
106
+ readonly variantLabel: "Soft";
107
+ readonly treatment: {
108
+ readonly kind: "soft-fade";
109
+ readonly height: "medium";
110
+ readonly curve: "soft";
111
+ };
112
+ readonly size: "medium";
113
+ readonly heightExpression: "6rem + 2px";
114
+ readonly shape: {
115
+ readonly kind: "fade";
116
+ };
117
+ }, {
118
+ readonly intent: "soft-fade-long";
119
+ readonly optionId: BoundaryOptionId;
120
+ readonly family: "gradient";
121
+ readonly variantId: "spacious";
122
+ readonly label: "Spacious";
123
+ readonly variantLabel: "Spacious";
124
+ readonly treatment: {
125
+ readonly kind: "soft-fade";
126
+ readonly height: "large";
127
+ readonly curve: "spacious";
128
+ };
129
+ readonly size: "spacious";
130
+ readonly heightExpression: "10rem";
131
+ readonly shape: {
132
+ readonly kind: "fade";
133
+ };
134
+ }, {
135
+ readonly intent: "soft-fade-expansive";
136
+ readonly optionId: BoundaryOptionId;
137
+ readonly family: "gradient";
138
+ readonly variantId: "expansive";
139
+ readonly label: "Expansive";
140
+ readonly variantLabel: "Expansive";
141
+ readonly treatment: {
142
+ readonly kind: "soft-fade";
143
+ readonly height: "expansive";
144
+ readonly curve: "expansive";
145
+ };
146
+ readonly size: "expansive";
147
+ readonly heightExpression: "14rem";
148
+ readonly shape: {
149
+ readonly kind: "fade";
150
+ };
151
+ }, {
152
+ readonly intent: "wave-edge-balanced";
153
+ readonly optionId: BoundaryOptionId;
154
+ readonly family: "wave";
155
+ readonly variantId: "balanced";
156
+ readonly label: "Balanced wave";
157
+ readonly variantLabel: "Balanced";
158
+ readonly treatment: {
159
+ readonly kind: "wave-edge";
160
+ readonly height: "medium";
161
+ readonly amplitude: "balanced";
162
+ readonly rhythm: "double";
163
+ readonly symmetry: "symmetrical";
164
+ };
165
+ readonly size: "medium";
166
+ readonly heightExpression: "6rem + 2px";
167
+ readonly shape: {
168
+ readonly kind: "wave";
169
+ readonly mask: "balanced";
170
+ };
171
+ }, {
172
+ readonly intent: "wave-edge";
173
+ readonly optionId: BoundaryOptionId;
174
+ readonly family: "wave";
175
+ readonly variantId: "classic";
176
+ readonly label: "Classic wave";
177
+ readonly variantLabel: "Classic";
178
+ readonly treatment: {
179
+ readonly kind: "wave-edge";
180
+ readonly height: "medium";
181
+ readonly amplitude: "balanced";
182
+ readonly rhythm: "double";
183
+ readonly symmetry: "asymmetrical";
184
+ };
185
+ readonly size: "medium";
186
+ readonly heightExpression: "6rem + 2px";
187
+ readonly shape: {
188
+ readonly kind: "wave";
189
+ readonly mask: "classic";
190
+ };
191
+ }, {
192
+ readonly intent: "wave-edge-gentle";
193
+ readonly optionId: BoundaryOptionId;
194
+ readonly family: "wave";
195
+ readonly variantId: "gentle";
196
+ readonly label: "Gentle wave";
197
+ readonly variantLabel: "Gentle";
198
+ readonly treatment: {
199
+ readonly kind: "wave-edge";
200
+ readonly height: "compact";
201
+ readonly amplitude: "subtle";
202
+ readonly rhythm: "single";
203
+ readonly symmetry: "symmetrical";
204
+ };
205
+ readonly size: "compact";
206
+ readonly heightExpression: "4.5rem + 2px";
207
+ readonly shape: {
208
+ readonly kind: "wave";
209
+ readonly mask: "gentle";
210
+ };
211
+ }, {
212
+ readonly intent: "wave-edge-bold";
213
+ readonly optionId: BoundaryOptionId;
214
+ readonly family: "wave";
215
+ readonly variantId: "bold";
216
+ readonly label: "Bold wave";
217
+ readonly variantLabel: "Bold";
218
+ readonly treatment: {
219
+ readonly kind: "wave-edge";
220
+ readonly height: "large";
221
+ readonly amplitude: "bold";
222
+ readonly rhythm: "double";
223
+ readonly symmetry: "symmetrical";
224
+ };
225
+ readonly size: "large";
226
+ readonly heightExpression: "7rem + 2px";
227
+ readonly shape: {
228
+ readonly kind: "wave";
229
+ readonly mask: "bold";
230
+ };
231
+ }, {
232
+ readonly intent: "wave-edge-drift";
233
+ readonly optionId: BoundaryOptionId;
234
+ readonly family: "wave";
235
+ readonly variantId: "drift";
236
+ readonly label: "Drift wave";
237
+ readonly variantLabel: "Drift";
238
+ readonly treatment: {
239
+ readonly kind: "wave-edge";
240
+ readonly height: "medium";
241
+ readonly amplitude: "balanced";
242
+ readonly rhythm: "double";
243
+ readonly symmetry: "drift";
244
+ };
245
+ readonly size: "medium";
246
+ readonly heightExpression: "6rem + 2px";
247
+ readonly shape: {
248
+ readonly kind: "wave";
249
+ readonly mask: "drift";
250
+ };
251
+ }, {
252
+ readonly intent: "angle-edge-subtle";
253
+ readonly optionId: BoundaryOptionId;
254
+ readonly family: "angle";
255
+ readonly variantId: "subtle";
256
+ readonly label: "Subtle angle";
257
+ readonly variantLabel: "Subtle";
258
+ readonly treatment: {
259
+ readonly kind: "angle-edge";
260
+ readonly height: "compact";
261
+ readonly slope: "subtle";
262
+ readonly direction: "forward";
263
+ };
264
+ readonly size: "compact";
265
+ readonly heightExpression: "4.5rem + 2px";
266
+ readonly shape: {
267
+ readonly kind: "angle";
268
+ readonly polygon: {
269
+ readonly startTopPercent: 34;
270
+ readonly endTopPercent: 18;
271
+ };
272
+ };
273
+ }, {
274
+ readonly intent: "angle-edge";
275
+ readonly optionId: BoundaryOptionId;
276
+ readonly family: "angle";
277
+ readonly variantId: "balanced";
278
+ readonly label: "Balanced angle";
279
+ readonly variantLabel: "Balanced";
280
+ readonly treatment: {
281
+ readonly kind: "angle-edge";
282
+ readonly height: "medium";
283
+ readonly slope: "balanced";
284
+ readonly direction: "forward";
285
+ };
286
+ readonly size: "medium";
287
+ readonly heightExpression: "6rem + 2px";
288
+ readonly shape: {
289
+ readonly kind: "angle";
290
+ readonly polygon: {
291
+ readonly startTopPercent: 42;
292
+ readonly endTopPercent: 8;
293
+ };
294
+ };
295
+ }, {
296
+ readonly intent: "angle-edge-steep";
297
+ readonly optionId: BoundaryOptionId;
298
+ readonly family: "angle";
299
+ readonly variantId: "steep";
300
+ readonly label: "Steep angle";
301
+ readonly variantLabel: "Steep";
302
+ readonly treatment: {
303
+ readonly kind: "angle-edge";
304
+ readonly height: "large";
305
+ readonly slope: "steep";
306
+ readonly direction: "forward";
307
+ };
308
+ readonly size: "large";
309
+ readonly heightExpression: "7rem + 2px";
310
+ readonly shape: {
311
+ readonly kind: "angle";
312
+ readonly polygon: {
313
+ readonly startTopPercent: 54;
314
+ readonly endTopPercent: 0;
315
+ };
316
+ };
317
+ }];
318
+ /** CSS `clip-path` value for an angle shape, as `generateLayoutCss` draws it. */
319
+ export declare function anglePolygonCss(polygon: AnglePolygon): string;
320
+ export {};
@@ -436,7 +436,6 @@ export type BlockDesignPlan<TBlockId extends string = DesignBlockId, TPurpose ex
436
436
  * composition governs what the item looks like.
437
437
  */
438
438
  cardRole?: CardRole;
439
- transitionAfter: SiteStyleSectionTransitionIntent;
440
439
  emphasis: SiteStyleEmphasis;
441
440
  sectionHeight?: SectionHeightIntent;
442
441
  heroLegibility?: HeroLegibilityStrategy;
@@ -453,7 +452,6 @@ export type BlockDesignPlan<TBlockId extends string = DesignBlockId, TPurpose ex
453
452
  export type ResolvedBlockDesignPlan<TBlockId extends string = DesignBlockId, TPurpose extends string = string> = Readonly<BlockDesignPlan<TBlockId, TPurpose> & {
454
453
  appliedSectionSurface: SiteStyleSurfaceIntent;
455
454
  appliedContentFrame: ContentFrameIntent;
456
- appliedTransitionAfter: SiteStyleSectionTransitionIntent;
457
455
  /**
458
456
  * The card role after capability gating. `null` (or absent) means no
459
457
  * site-style card is applied; the block renders its own composition.
@@ -540,7 +538,7 @@ export type BlockDesignCapability = DesignedBlockDesignCapability | NoBlockDesig
540
538
  export type BlockDesignCapabilityMap = Readonly<Partial<Record<string, BlockDesignCapability>>>;
541
539
  export declare function defineBlockDesignCapability<const TCapability extends DesignedBlockDesignCapabilityInput>(capability: NoExtraKeys<TCapability, DesignedBlockDesignCapabilityInput>): DesignedBlockDesignCapability;
542
540
  export declare function defineNoBlockDesignCapability(reason: UnsupportedBlockDesignCapabilityReason): NoBlockDesignCapability;
543
- export type DesignRepairAction = 'fallback-block-design' | 'fallback-section-surface' | 'fallback-content-frame' | 'fallback-card-role' | 'fallback-section-height' | 'fallback-image-surface-treatment' | 'fallback-image-surface-motion' | 'fallback-tile-treatment' | 'fallback-event-list-treatment' | 'fallback-eyebrow-treatment' | 'fallback-accordion-icon-treatment' | 'remove-composition' | 'remove-hero-legibility' | 'remove-transition' | 'fallback-hero-legibility' | 'reduce-accent-density' | 'reduce-panel-density' | 'reduce-transition-mix' | 'reduce-primary-ctas' | 'reduce-media-density' | 'reduce-decorative-repetition';
541
+ export type DesignRepairAction = 'fallback-block-design' | 'fallback-section-surface' | 'fallback-content-frame' | 'fallback-card-role' | 'fallback-section-height' | 'fallback-image-surface-treatment' | 'fallback-image-surface-motion' | 'fallback-tile-treatment' | 'fallback-event-list-treatment' | 'fallback-eyebrow-treatment' | 'fallback-accordion-icon-treatment' | 'remove-composition' | 'remove-hero-legibility' | 'fallback-hero-legibility' | 'reduce-accent-density' | 'reduce-panel-density' | 'reduce-transition-mix' | 'reduce-primary-ctas' | 'reduce-media-density' | 'reduce-decorative-repetition';
544
542
  export type UnsupportedSectionSurfaceIssue<TBlockId extends string = DesignBlockId, TPurpose extends string = string> = Readonly<{
545
543
  kind: 'unsupported-section-surface';
546
544
  blockId: TBlockId;
@@ -704,7 +702,6 @@ export type BlockDesignCapabilityRequest = Readonly<{
704
702
  sectionSurface: SiteStyleSurfaceIntent;
705
703
  contentFrame: ContentFrameIntent;
706
704
  cardRole?: CardRole;
707
- transitionAfter: SiteStyleSectionTransitionIntent;
708
705
  sectionHeight?: SectionHeightIntent;
709
706
  heroLegibility?: HeroLegibilityStrategy;
710
707
  heroComposition?: HeroCompositionIntent;
@@ -720,7 +717,6 @@ export type BlockDesignCapabilityRequest = Readonly<{
720
717
  export type BlockDesignCapabilityFallback = Readonly<{
721
718
  sectionSurface: 'base';
722
719
  contentFrame: PlainFrameIntent;
723
- transitionAfter: 'none';
724
720
  sectionHeight: 'default';
725
721
  heroLegibility: 'none';
726
722
  imageSurfaceTreatment: Readonly<{
@@ -756,17 +752,6 @@ export type UnsupportedBlockDesignCapabilityIssue<TBlockId extends string = Desi
756
752
  severity: DesignIssueSeverity;
757
753
  allowedRepairActions: readonly ['fallback-block-design'];
758
754
  }>;
759
- export type RemovedTransitionForFlushFrameIssue<TBlockId extends string = DesignBlockId, TPurpose extends string = string> = Readonly<{
760
- kind: 'removed-transition-for-flush-frame';
761
- blockId: TBlockId;
762
- blockKind: string;
763
- purpose: TPurpose;
764
- requested: SiteStyleSectionTransitionIntent;
765
- fallback: 'none';
766
- policy: DesignResolutionPolicy;
767
- severity: DesignIssueSeverity;
768
- allowedRepairActions: readonly ['remove-transition'];
769
- }>;
770
755
  export type HeroImageWithoutLegibilityIssue<TBlockId extends string = DesignBlockId, TPurpose extends string = string> = Readonly<{
771
756
  kind: 'hero-image-without-legibility';
772
757
  blockId: TBlockId;
@@ -778,10 +763,10 @@ export type HeroImageWithoutLegibilityIssue<TBlockId extends string = DesignBloc
778
763
  severity: DesignIssueSeverity;
779
764
  allowedRepairActions: readonly ['fallback-hero-legibility'];
780
765
  }>;
781
- export type DesignResolutionIssue<TBlockId extends string = DesignBlockId, TPurpose extends string = string> = UnsupportedSectionSurfaceIssue<TBlockId, TPurpose> | UnsupportedContentFrameIssue<TBlockId, TPurpose> | UnsupportedCardRoleIssue<TBlockId, TPurpose> | UnsupportedSectionHeightIssue<TBlockId, TPurpose> | UnsupportedImageSurfaceTreatmentIssue<TBlockId, TPurpose> | UnsupportedImageSurfaceMotionIssue<TBlockId, TPurpose> | UnsupportedTileTreatmentIssue<TBlockId, TPurpose> | UnsupportedEventListTreatmentIssue<TBlockId, TPurpose> | UnsupportedEyebrowTreatmentIssue<TBlockId, TPurpose> | UnsupportedAccordionIconTreatmentIssue<TBlockId, TPurpose> | UnsupportedBlockCompositionIssue<TBlockId, TPurpose> | ImageSurfaceTreatmentWithoutImageSurfaceIssue<TBlockId, TPurpose> | ImageSurfaceMotionWithoutImageSurfaceIssue<TBlockId, TPurpose> | HeroLegibilityOverriddenByImageSurfaceTreatmentIssue<TBlockId, TPurpose> | MissingBlockDesignCapabilityIssue<TBlockId, TPurpose> | UnsupportedBlockDesignCapabilityIssue<TBlockId, TPurpose> | RemovedTransitionForFlushFrameIssue<TBlockId, TPurpose> | HeroImageWithoutLegibilityIssue<TBlockId, TPurpose>;
766
+ export type DesignResolutionIssue<TBlockId extends string = DesignBlockId, TPurpose extends string = string> = UnsupportedSectionSurfaceIssue<TBlockId, TPurpose> | UnsupportedContentFrameIssue<TBlockId, TPurpose> | UnsupportedCardRoleIssue<TBlockId, TPurpose> | UnsupportedSectionHeightIssue<TBlockId, TPurpose> | UnsupportedImageSurfaceTreatmentIssue<TBlockId, TPurpose> | UnsupportedImageSurfaceMotionIssue<TBlockId, TPurpose> | UnsupportedTileTreatmentIssue<TBlockId, TPurpose> | UnsupportedEventListTreatmentIssue<TBlockId, TPurpose> | UnsupportedEyebrowTreatmentIssue<TBlockId, TPurpose> | UnsupportedAccordionIconTreatmentIssue<TBlockId, TPurpose> | UnsupportedBlockCompositionIssue<TBlockId, TPurpose> | ImageSurfaceTreatmentWithoutImageSurfaceIssue<TBlockId, TPurpose> | ImageSurfaceMotionWithoutImageSurfaceIssue<TBlockId, TPurpose> | HeroLegibilityOverriddenByImageSurfaceTreatmentIssue<TBlockId, TPurpose> | MissingBlockDesignCapabilityIssue<TBlockId, TPurpose> | UnsupportedBlockDesignCapabilityIssue<TBlockId, TPurpose> | HeroImageWithoutLegibilityIssue<TBlockId, TPurpose>;
782
767
  export type DesignRepairResultForIssue<TIssue extends DesignResolutionIssue<string, string>> = {
783
768
  [TKind in TIssue['kind']]: Readonly<{
784
- kind: TKind extends 'removed-transition-for-flush-frame' ? 'repaired' : 'fallbackApplied';
769
+ kind: 'fallbackApplied';
785
770
  issue: Extract<TIssue, {
786
771
  kind: TKind;
787
772
  }>;
@@ -2,3 +2,4 @@ export * from './foregroundContract';
2
2
  export * from './foregroundInteraction';
3
3
  export * from './foregroundRoles';
4
4
  export * from './resolveSurfaceForeground';
5
+ export * from './logoVariant';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Whether a surface reads as light or dark, judged from the text foreground
3
+ * that was resolved for it: light text means a dark surface. `unknown` covers
4
+ * every foreground we cannot honestly classify.
5
+ */
6
+ export type SurfaceTone = 'light' | 'dark' | 'unknown';
7
+ /** Concrete hex behind a plain, opaque palette token, or null otherwise. */
8
+ export declare function opaquePaletteHexForToken(expandedPalette: Readonly<Record<string, string>>, token: string | null | undefined): string | null;
9
+ /**
10
+ * Tone of the surface a foreground token was resolved for.
11
+ *
12
+ * A token with opacity has no known underlay to composite against, and a raw
13
+ * or unrecognised token has no palette hex, so both are `unknown` rather than
14
+ * a guess.
15
+ */
16
+ export declare function surfaceToneFromForegroundToken(expandedPalette: Readonly<Record<string, string>>, foregroundToken: string | null | undefined): SurfaceTone;
17
+ export type LogoVariants<TLogo> = Readonly<{
18
+ forLightBackgrounds: TLogo | null;
19
+ forDarkBackgrounds: TLogo | null;
20
+ }>;
21
+ /**
22
+ * The logo to draw on a surface of the given tone. A missing variant falls
23
+ * back to the other one, and an unknown tone uses the light-backgrounds logo,
24
+ * which is what every site rendered before variants existed.
25
+ */
26
+ export declare function selectLogoVariant<TLogo>(tone: SurfaceTone, variants: LogoVariants<TLogo>): TLogo | null;
@@ -58,6 +58,16 @@ export declare function cssVarValue(token: ThemeColorToken): string;
58
58
  * @returns CSSProperties with backgroundColor
59
59
  */
60
60
  export declare function backgroundColorStyle(token: ThemeColorToken): CSSProperties;
61
+ /**
62
+ * Converts a text color token to a CSS color value that follows the enclosing
63
+ * surface. The semantic text tokens (`text`, `heading`, `mutedText`) resolve
64
+ * to the surface foreground variables, so text adapts when a section's
65
+ * background changes; any other token is a fixed theme color.
66
+ *
67
+ * @param token - Theme color token
68
+ * @returns CSS color value
69
+ */
70
+ export declare function textColorValue(token: ThemeColorToken): string;
61
71
  /**
62
72
  * Creates a text color style object from a theme token.
63
73
  *
@@ -0,0 +1,116 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * The card an editor uses for one item in an ordered list: a block on a page,
4
+ * a field on a form, an item in a repeater.
5
+ *
6
+ * It owns presentation only: the surface, the header layout, the disclosure
7
+ * and its accessibility contract, and how actions are drawn. Which actions an
8
+ * item offers, when they are available, reordering, drag state and focus
9
+ * restoration all belong to the editor that renders it.
10
+ */
11
+ export type EditorItemCardControl = Readonly<{
12
+ label: string;
13
+ disabled?: boolean;
14
+ onSelect: () => void;
15
+ ref?: React.Ref<HTMLButtonElement>;
16
+ }>;
17
+ export type EditorItemCardInlineAction = EditorItemCardControl & Readonly<{
18
+ key: string;
19
+ icon: React.ReactNode;
20
+ }>;
21
+ export type EditorItemCardMenuItem = Readonly<{
22
+ key: string;
23
+ label: string;
24
+ icon: React.ReactNode;
25
+ tone?: 'default' | 'destructive';
26
+ disabled?: boolean;
27
+ onSelect: () => void;
28
+ }>;
29
+ export type EditorItemCardMenuGroup = Readonly<{
30
+ key: string;
31
+ items: readonly EditorItemCardMenuItem[];
32
+ }>;
33
+ export type EditorItemCardMenu = Readonly<{
34
+ /** Accessible name for the trigger, e.g. "More actions for Hero". */
35
+ label: string;
36
+ disabled?: boolean;
37
+ ref?: React.Ref<HTMLButtonElement>;
38
+ groups: readonly EditorItemCardMenuGroup[];
39
+ }>;
40
+ export type EditorItemCardActionsProps = Readonly<{
41
+ move?: Readonly<{
42
+ earlier: EditorItemCardControl;
43
+ later: EditorItemCardControl;
44
+ }>;
45
+ /** Controls that render their own trigger, such as a settings dialog. */
46
+ slot?: React.ReactNode;
47
+ inline?: readonly EditorItemCardInlineAction[];
48
+ menu?: EditorItemCardMenu;
49
+ className?: string;
50
+ testId?: string;
51
+ }>;
52
+ /**
53
+ * `locked` renders no drag handle and no actions at all. There is deliberately
54
+ * no way to show them disabled: a control that never works reads as broken.
55
+ */
56
+ export type EditorItemCardAffordances = Readonly<{
57
+ kind: 'full';
58
+ dragHandle?: React.ReactNode;
59
+ actions?: EditorItemCardActionsProps;
60
+ }> | Readonly<{
61
+ kind: 'locked';
62
+ }>;
63
+ export type EditorItemCardDisclosure = Readonly<{
64
+ kind: 'collapsible';
65
+ open: boolean;
66
+ onOpenChange: (open: boolean) => void;
67
+ /** Stable id for the content region; generated when omitted. */
68
+ contentId?: string;
69
+ }> | Readonly<{
70
+ kind: 'static';
71
+ }>;
72
+ export type EditorItemCardState = 'default' | 'error' | 'highlighted';
73
+ export type EditorItemCardProps = Omit<React.ComponentProps<'div'>, 'title' | 'children'> & Readonly<{
74
+ title: string;
75
+ subtitle?: React.ReactNode;
76
+ /** Status shown beside the title, e.g. a validation hint. */
77
+ titleAdornment?: React.ReactNode;
78
+ state?: EditorItemCardState;
79
+ disclosure: EditorItemCardDisclosure;
80
+ affordances: EditorItemCardAffordances;
81
+ /** When false the header's controls are inert, e.g. while handlers load. */
82
+ interactive?: boolean;
83
+ /** Prefix for the header's test ids. */
84
+ testIdPrefix?: string;
85
+ children?: React.ReactNode;
86
+ }>;
87
+ export declare function EditorItemCard({ title, subtitle, titleAdornment, state, disclosure: requestedDisclosure, affordances, interactive, testIdPrefix, children, className, ...rootProps }: EditorItemCardProps): React.ReactElement;
88
+ /**
89
+ * The action row, usable on its own by item presentations that aren't a
90
+ * header card (for example a thumbnail tile).
91
+ */
92
+ export declare function EditorItemCardActions({ move, slot, inline, menu, className, testId, }: EditorItemCardActionsProps): React.ReactElement;
93
+ export type EditorItemCardDragHandleProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
94
+ /**
95
+ * Keeps the handle's space so titles stay aligned down a list, but makes it
96
+ * invisible and inert — e.g. while the item is expanded.
97
+ */
98
+ concealed?: boolean;
99
+ };
100
+ export declare const EditorItemCardDragHandle: React.ForwardRefExoticComponent<React.ButtonHTMLAttributes<HTMLButtonElement> & {
101
+ /**
102
+ * Keeps the handle's space so titles stay aligned down a list, but makes it
103
+ * invisible and inert — e.g. while the item is expanded.
104
+ */
105
+ concealed?: boolean;
106
+ } & React.RefAttributes<HTMLButtonElement>>;
107
+ export type EditorItemInsertDividerProps = Readonly<{
108
+ /** Visible action text, e.g. "Insert block" or "Insert field". */
109
+ label: string;
110
+ onSelect: () => void;
111
+ }>;
112
+ /**
113
+ * The gap between two items in an editor list. Its insert action appears
114
+ * when the gap is hovered or when keyboard focus reaches it.
115
+ */
116
+ export declare function EditorItemInsertDivider({ label, onSelect }: EditorItemInsertDividerProps): React.ReactElement;
@@ -4,6 +4,7 @@ export { SplitButton, type SplitButtonMenuItem, type SplitButtonProps, } from '.
4
4
  export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, } from './button-group';
5
5
  export { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, } from './card';
6
6
  export { Surface, surfaceVariants, type SurfaceProps } from './surface';
7
+ export { EditorItemCard, EditorItemCardActions, EditorItemCardDragHandle, EditorItemInsertDivider, type EditorItemCardActionsProps, type EditorItemCardAffordances, type EditorItemCardControl, type EditorItemCardDisclosure, type EditorItemCardDragHandleProps, type EditorItemCardInlineAction, type EditorItemCardMenu, type EditorItemCardMenuGroup, type EditorItemCardMenuItem, type EditorItemCardProps, type EditorItemCardState, type EditorItemInsertDividerProps, } from './editor-item-card';
7
8
  export { Collapsible, CollapsibleTrigger, CollapsibleContent, } from './collapsible';
8
9
  export { Disclosure, DisclosureTrigger, DisclosureContent, } from './disclosure';
9
10
  export { Dialog, DialogTrigger, DialogPortal, DialogClose, DialogOverlay, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, } from './dialog';
@@ -1,8 +1,7 @@
1
1
  "use client";
2
- import { O as clsx } from "./colorStyles-3013aRAY.mjs";
3
- import { Ft as assertNever$2, pn as formatCurrencyAmount } from "./propsDecoder-CIZ-hbIG.mjs";
4
- import { a as CheckIcon } from "./scrollToBlock-BPZl0gPZ.mjs";
5
- import { n as RichText } from "./checkoutUrls-FL6lRkrt.mjs";
2
+ import { _n as formatCurrencyAmount, zt as assertNever$2 } from "./propsDecoder-C3TP_z4x.mjs";
3
+ import { a as CheckIcon } from "./scrollToBlock-CWs8EIdo.mjs";
4
+ import { n as RichText } from "./checkoutUrls-CW3-78uu.mjs";
6
5
  import { useCallback, useEffect, useReducer, useRef } from "react";
7
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
7
  //#region ../core/src/date-math.ts
@@ -613,56 +612,6 @@ function usePolling(config) {
613
612
  };
614
613
  }
615
614
  //#endregion
616
- //#region ../blocks/src/system/runtime/nodes/spinner.tsx
617
- function resolveColorStyle(color) {
618
- switch (color) {
619
- case void 0: return;
620
- case "inherit": return { color: "inherit" };
621
- case "foreground": return { color: "rgb(var(--tb-foreground))" };
622
- case "text": return { color: "rgb(var(--tb-text))" };
623
- default: return;
624
- }
625
- }
626
- function SpinnerNode({ className, size = "md", color, strokeWidth = 3, srLabel, style, ...rest }) {
627
- const hasExplicitAriaLabel = typeof rest["aria-label"] === "string" && rest["aria-label"].trim().length > 0;
628
- const accessibilityProps = srLabel ? {
629
- role: "status",
630
- "aria-live": "polite"
631
- } : hasExplicitAriaLabel ? {} : { "aria-hidden": true };
632
- const trackStroke = color === "inherit" ? "currentColor" : "var(--rb-spinner-track-color)";
633
- const trackOpacity = color === "inherit" ? .25 : 1;
634
- return /* @__PURE__ */ jsxs("span", {
635
- ...accessibilityProps,
636
- className: clsx("rb-spinner", size ? `rb-spinner--${size}` : null, color === "inherit" ? "rb-spinner--inherit" : null, className),
637
- style: {
638
- ...resolveColorStyle(color),
639
- ...style ?? {}
640
- },
641
- ...rest,
642
- children: [/* @__PURE__ */ jsxs("svg", {
643
- viewBox: "0 0 24 24",
644
- fill: "none",
645
- "aria-hidden": "true",
646
- children: [/* @__PURE__ */ jsx("circle", {
647
- cx: "12",
648
- cy: "12",
649
- r: "10",
650
- stroke: trackStroke,
651
- strokeWidth,
652
- opacity: trackOpacity
653
- }), /* @__PURE__ */ jsx("path", {
654
- d: "M12 2a10 10 0 0 1 10 10",
655
- stroke: "currentColor",
656
- strokeWidth,
657
- strokeLinecap: "round"
658
- })]
659
- }), srLabel ? /* @__PURE__ */ jsx("span", {
660
- className: "rb-sr-only",
661
- children: srLabel
662
- }) : null]
663
- });
664
- }
665
- //#endregion
666
615
  //#region ../blocks/src/system/runtime/shared/components/StepIndicator.tsx
667
616
  /**
668
617
  * Shared step indicator component for registration wizards.
@@ -748,4 +697,4 @@ function BookingConsentAgreement({ agreement, showTitle = true, title, titleId }
748
697
  })] });
749
698
  }
750
699
  //#endregion
751
- export { buildBookingPaymentSelectionViewModel as a, usePolling as i, StepIndicator as n, resolveBookingPaymentDueNowCents as o, SpinnerNode as r, formatPrice as s, BookingConsentAgreement as t };
700
+ export { resolveBookingPaymentDueNowCents as a, buildBookingPaymentSelectionViewModel as i, StepIndicator as n, formatPrice as o, usePolling as r, BookingConsentAgreement as t };