@riverbankcms/sdk 0.130.0 → 0.130.2

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 (244) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +1 -1
  3. package/dist/{PreviewEditorSidebar-DiEpbOdw.mjs → PreviewEditorSidebar-BY-1QdE2.mjs} +18 -15
  4. package/dist/{PreviewEditorUI-C6MvxnIa.mjs → PreviewEditorUI-BS34jI9_.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-C2rnoPz6.mjs → PreviewQueryProvider-BD0kOjtI.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-DRXA_m5L.mjs → SdkPreviewModeRuntime-B1pWnhu-.mjs} +48 -21
  7. package/dist/{SiteChromeCustomizeContext-BTHdv5_-.mjs → SiteChromeCustomizeContext-BhUG_72i.mjs} +6180 -5076
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +309 -32
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +969 -112
  10. package/dist/_dts/api/src/accountApi.d.ts +213 -0
  11. package/dist/_dts/api/src/accountEndpointDefinitions.d.ts +30 -0
  12. package/dist/_dts/api/src/accountEndpoints.d.ts +254 -0
  13. package/dist/_dts/api/src/apiCallParams.d.ts +60 -0
  14. package/dist/_dts/api/src/bookingConfig.d.ts +10 -20
  15. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -5
  16. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +15 -0
  17. package/dist/_dts/api/src/bookingSettingsSections.d.ts +9 -0
  18. package/dist/_dts/api/src/bookingVerticals.d.ts +2 -2
  19. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -0
  20. package/dist/_dts/api/src/endpoints.d.ts +1253 -1209
  21. package/dist/_dts/api/src/event-destination-policy.d.ts +1 -1
  22. package/dist/_dts/api/src/eventManagementContracts.d.ts +83 -7
  23. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +26 -0
  24. package/dist/_dts/api/src/eventSeriesPresentationPreset.d.ts +12 -0
  25. package/dist/_dts/api/src/index.d.ts +11 -3
  26. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
  27. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -0
  28. package/dist/_dts/api/src/oauth.d.ts +8 -0
  29. package/dist/_dts/api/src/preview-auth.d.ts +26 -0
  30. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +5 -5
  31. package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +0 -1
  32. package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -0
  33. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +48 -0
  34. package/dist/_dts/api/src/sdkContracts.d.ts +5 -13
  35. package/dist/_dts/api/src/sdkEventCategoryContracts.d.ts +9 -0
  36. package/dist/_dts/api/src/sdkThemeWire.d.ts +40 -8
  37. package/dist/_dts/api/src/settings/permissions.d.ts +2 -2
  38. package/dist/_dts/api/src/siteApiKeyEndpointDefinitions.d.ts +66 -0
  39. package/dist/_dts/api/src/siteInfrastructure.d.ts +3 -3
  40. package/dist/_dts/api/src/siteOperations.d.ts +1 -1
  41. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +12 -4
  42. package/dist/_dts/api/src/types.d.ts +7 -59
  43. package/dist/_dts/block-form/src/client/index.d.ts +15 -23
  44. package/dist/_dts/block-form/src/index.d.ts +23 -22
  45. package/dist/_dts/blocks/src/primitives/layout/Grid.d.ts +18 -1
  46. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +1 -0
  47. package/dist/_dts/blocks/src/system/blocks/events/shared/filtering.d.ts +1 -1
  48. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +61 -0
  49. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +24 -22
  50. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +25 -1
  51. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +7 -30
  52. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +0 -1
  53. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +4 -63
  54. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +1 -3
  55. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +13 -1
  56. package/dist/_dts/blocks/src/system/fields/gridLayout.d.ts +20 -0
  57. package/dist/_dts/blocks/src/system/node/fragments/classNameBinding.d.ts +6 -1
  58. package/dist/_dts/blocks/src/system/node/fragments/styledCard.d.ts +31 -0
  59. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +4 -0
  60. package/dist/_dts/blocks/src/system/runtime/api/types/courses.d.ts +0 -1
  61. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +0 -1
  62. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +4 -2
  63. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +24 -8
  64. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +8 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.validationErrors.d.ts +17 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +42 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +4 -1
  71. package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +17 -1
  72. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/spacing.d.ts +1 -1
  74. package/dist/_dts/blocks/src/system/transforms/registry/_utils/boxStyleClassNames.d.ts +90 -0
  75. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +4 -0
  76. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +26 -0
  77. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -37
  78. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -2
  79. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +6 -6
  80. package/dist/_dts/content-model/src/content-types/builtins.d.ts +6 -6
  81. package/dist/_dts/core/src/branded.d.ts +4 -0
  82. package/dist/_dts/core/src/event-page-surface-subject.d.ts +25 -4
  83. package/dist/_dts/core/src/index.d.ts +3 -0
  84. package/dist/_dts/core/src/public-event-booking-availability.d.ts +8 -0
  85. package/dist/_dts/core/src/secret.d.ts +44 -0
  86. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +341 -0
  87. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +2 -1
  88. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -2
  89. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -2
  90. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +1 -1
  91. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +1 -1
  92. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +1 -1
  93. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +1 -1
  94. package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +1 -1
  95. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  96. package/dist/_dts/editor-blocks/src/index.d.ts +2 -2
  97. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
  98. package/dist/_dts/editor-blocks/src/widgets/button/ButtonField.d.ts +1 -1
  99. package/dist/_dts/editor-blocks/src/widgets/button/ButtonVariantField.d.ts +1 -1
  100. package/dist/_dts/editor-blocks/src/widgets/button/index.d.ts +1 -1
  101. package/dist/_dts/editor-blocks/src/widgets/content-type-select/ContentTypeSelectField.d.ts +1 -1
  102. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerField.d.ts +1 -1
  103. package/dist/_dts/editor-blocks/src/widgets/entry-picker/index.d.ts +1 -1
  104. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  105. package/dist/_dts/editor-blocks/src/widgets/inline-text/InlineTextField.d.ts +1 -1
  106. package/dist/_dts/editor-blocks/src/widgets/link/LinkField.d.ts +2 -2
  107. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/OfferingsPreviewGroupOrderField.d.ts +1 -1
  108. package/dist/_dts/editor-blocks/src/widgets/reference/ReferenceField.d.ts +2 -2
  109. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextField.d.ts +2 -2
  110. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/SiteOptionPickerField.d.ts +1 -1
  111. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +1 -1
  112. package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +1 -1
  113. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +1 -1
  114. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +1 -1
  115. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -0
  116. package/dist/_dts/preview-next/src/client/preview/PreviewSiteFontStorageContext.d.ts +6 -0
  117. package/dist/_dts/preview-next/src/client/preview/siteFontPreview.d.ts +5 -0
  118. package/dist/_dts/preview-next/src/client/sdk/contentStorage.d.ts +10 -0
  119. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -1
  120. package/dist/_dts/preview-next/src/index.d.ts +1 -0
  121. package/dist/_dts/preview-next/src/keepAlive.d.ts +3 -5
  122. package/dist/_dts/preview-next/src/refresh-contract.d.ts +1 -0
  123. package/dist/_dts/preview-next/src/route-contract.d.ts +7 -0
  124. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  125. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +61 -39
  126. package/dist/_dts/sdk/src/preview-next/keep-alive.d.ts +1 -1
  127. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +1 -1
  128. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  129. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +9 -1
  130. package/dist/_dts/sdk/src/theme-bridge/types.d.ts +4 -2
  131. package/dist/_dts/sdk/src/version.d.ts +1 -1
  132. package/dist/_dts/theme-core/src/cards/core.d.ts +54 -10
  133. package/dist/_dts/theme-core/src/cards/decorations.d.ts +33 -0
  134. package/dist/_dts/theme-core/src/cards/generateDefaultCardSystem.d.ts +7 -2
  135. package/dist/_dts/theme-core/src/cards/index.d.ts +3 -0
  136. package/dist/_dts/theme-core/src/cards/openCardVariant.d.ts +24 -0
  137. package/dist/_dts/theme-core/src/cards/roles.d.ts +38 -0
  138. package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +53 -8
  139. package/dist/_dts/theme-core/src/cards/types.d.ts +489 -21
  140. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  141. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +59 -0
  142. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +2 -2
  143. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +3 -2
  144. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +12 -135
  145. package/dist/_dts/theme-core/src/palette/utils/contrast.d.ts +1 -0
  146. package/dist/_dts/theme-core/src/palette/utils/opaqueSurfaceColor.d.ts +6 -0
  147. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -1
  148. package/dist/_dts/theme-core/src/schema.d.ts +301 -94
  149. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +84 -102
  150. package/dist/_dts/theme-core/src/site-styles/appearancePresetResolution.d.ts +12 -1
  151. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +9 -4
  152. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +0 -20
  153. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +84 -102
  154. package/dist/_dts/theme-core/src/site-styles/cardRoleVocabulary.d.ts +48 -0
  155. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +21 -385
  156. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +10 -18
  157. package/dist/_dts/theme-core/src/site-styles/headerLayoutTypes.d.ts +2 -4
  158. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +2 -9
  159. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +0 -2
  160. package/dist/_dts/theme-core/src/site-styles/index.d.ts +5 -0
  161. package/dist/_dts/theme-core/src/site-styles/pageDesignAppearanceAvailability.d.ts +3 -0
  162. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorCapabilities.d.ts +22 -0
  163. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +9 -8
  164. package/dist/_dts/theme-core/src/site-styles/pageDesignIntentEquality.d.ts +3 -0
  165. package/dist/_dts/theme-core/src/site-styles/previewRuntimeCapabilities.d.ts +19 -0
  166. package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +9 -0
  167. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +1 -62
  168. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +13 -12
  169. package/dist/_dts/theme-core/src/site-styles/types.d.ts +50 -39
  170. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +9 -9
  171. package/dist/_dts/theme-core/src/status/generateStatusCss.d.ts +1 -0
  172. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  173. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +39 -0
  174. package/dist/_dts/ui/src/navigation-tabs.d.ts +3 -2
  175. package/dist/client/{CourseRegistrationWizard-Bvtz9G9g.mjs → CourseRegistrationWizard-DGW9F0SQ.mjs} +7 -7
  176. package/dist/client/{DiscountCodeDisclosure-Ur-Xx1U_.mjs → DiscountCodeDisclosure-BPZ-yfGI.mjs} +1 -1
  177. package/dist/client/{EventCombined.client-EhscD4U6.mjs → EventCombined.client-Cjt3kKYR.mjs} +4 -4
  178. package/dist/client/{EventListing.client-Bn26cFTY.mjs → EventListing.client-DY9dn6Fh.mjs} +2 -2
  179. package/dist/client/{FeedbackMessage-ByMrs3cr.mjs → FeedbackMessage-CtLvvS_d.mjs} +15 -3
  180. package/dist/client/{LeafletStaticMap-BUw9Ntzr.mjs → LeafletStaticMap--2c61XYn.mjs} +1 -1
  181. package/dist/client/{StepIndicator-BfbdiVQI.mjs → StepIndicator-CLjQhkDb.mjs} +3 -3
  182. package/dist/client/{accordion-CjIeof73.mjs → accordion-_boYwHHi.mjs} +1 -1
  183. package/dist/client/{bookingForm-DwEeovf_.mjs → bookingForm--AqEfyBX.mjs} +56 -39
  184. package/dist/client/bookings.mjs +393 -192
  185. package/dist/client/{carousel-BMrfgOba.mjs → carousel-CVI2dqZr.mjs} +2 -2
  186. package/dist/client/{carousel.client-CpwTUhIo.mjs → carousel.client-59G_WMr4.mjs} +1 -1
  187. package/dist/client/{cart-rXEdxTdb.mjs → cart-DR6IiPz9.mjs} +3 -3
  188. package/dist/client/{checkout-D3JlSzh3.mjs → checkout-CsrGAfQt.mjs} +3 -3
  189. package/dist/client/client.mjs +4524 -3512
  190. package/dist/client/{colorStyles-BWpj_h4C.mjs → colorStyles-CrxJrPjJ.mjs} +277 -1
  191. package/dist/client/{context-CJz1Vlsz.mjs → context-B83PiNzm.mjs} +6 -21
  192. package/dist/client/{courseRegistration-DO5XvMAA.mjs → courseRegistration-aNJVaLa3.mjs} +3 -3
  193. package/dist/client/{eventCalendar-DO6rTqCn.mjs → eventCalendar-OZ7h59VN.mjs} +6 -6
  194. package/dist/client/{eventCombined-bJ3i_ovU.mjs → eventCombined-BbJ6bFKz.mjs} +3 -3
  195. package/dist/client/{eventDetails-CCbrXE7o.mjs → eventDetails-BLyUBiCT.mjs} +3 -3
  196. package/dist/client/{eventListing-Bdlt9YTm.mjs → eventListing-DuP1yhBS.mjs} +3 -3
  197. package/dist/client/{eventRegistration-B02lt6iY.mjs → eventRegistration-BXyECPa-.mjs} +11 -12
  198. package/dist/client/{form-DrUBAAox.mjs → form-BA4t3kKU.mjs} +4 -4
  199. package/dist/client/{headerSection-MzqvHL6T.mjs → headerSection-CpNaJxhW.mjs} +2 -2
  200. package/dist/client/hooks.mjs +1967 -2059
  201. package/dist/client/{locationMap-DG8BxTBm.mjs → locationMap-3HGMCL7_.mjs} +3 -3
  202. package/dist/client/{media-CNE1Z-wb.mjs → media-BOHuueS5.mjs} +16 -4
  203. package/dist/client/{newsletterForm-BzO-Td3p.mjs → newsletterForm-C2s6Mw67.mjs} +4 -4
  204. package/dist/client/{pricing-NgK7ozkg.mjs → pricing-BiqIMgZk.mjs} +1 -1
  205. package/dist/client/{productDetail-CfQ7rhVK.mjs → productDetail-C9joWhdE.mjs} +3 -3
  206. package/dist/client/{productList-C23rOLUi.mjs → productList-CjzdU3pB.mjs} +3 -3
  207. package/dist/client/{propsDecoder-CAZdhwjs.mjs → propsDecoder-CBPGXEYX.mjs} +395 -402
  208. package/dist/client/rendering/client.mjs +2004 -2856
  209. package/dist/client/rendering/islands.mjs +20 -20
  210. package/dist/client/rendering.mjs +4605 -3496
  211. package/dist/client/{scrollToBlock-DSSqVQr1.mjs → scrollToBlock-DZ73aEX6.mjs} +1 -1
  212. package/dist/client/{shop-BMToKLK7.mjs → shop-CQRai7hj.mjs} +7 -7
  213. package/dist/client/{shop-commerce-DB4JRKmp.mjs → shop-commerce-hP9UboOx.mjs} +8 -8
  214. package/dist/client/{shop-commerce-store-BOqSIOuc.mjs → shop-commerce-store-DiD5a32e.mjs} +1 -1
  215. package/dist/client/{shopShared-B6SK9DZv.mjs → shopShared-DP8DXTkF.mjs} +5 -5
  216. package/dist/client/{useEventFilters-CULOa4nB.mjs → useEventFilters-pF_OJNQP.mjs} +137 -81
  217. package/dist/client/{usePolling-BGG_8-jl.mjs → usePolling-Cls91SD2.mjs} +2 -2
  218. package/dist/preview-next/before-render.mjs +192 -108
  219. package/dist/preview-next/client/runtime.mjs +4 -4
  220. package/dist/preview-next/keepAlive.mjs +7406 -29
  221. package/dist/preview-next/middleware.mjs +186 -107
  222. package/dist/{previewAuthStore-_GXFRg2W.mjs → previewAuthStore-CX1C_KJ4.mjs} +185 -107
  223. package/dist/{sdk-runtime-hhSOMShR.mjs → sdk-runtime-5CcPAI14.mjs} +2 -2
  224. package/dist/{separator-flRaFc14.mjs → separator-BXlYN_gr.mjs} +1 -1
  225. package/dist/server/components.mjs +6363 -4998
  226. package/dist/server/config-validation.mjs +1967 -2059
  227. package/dist/server/config.mjs +1967 -2059
  228. package/dist/server/data.mjs +1967 -2059
  229. package/dist/server/index.mjs +186 -108
  230. package/dist/server/next.mjs +6553 -5285
  231. package/dist/server/page-converter.mjs +1031 -1844
  232. package/dist/server/prebuild.mjs +1 -1
  233. package/dist/server/rendering/server.mjs +3352 -3006
  234. package/dist/server/rendering.mjs +6289 -4924
  235. package/dist/server/routing.mjs +1906 -1036
  236. package/dist/server/server.mjs +1976 -2165
  237. package/dist/server/theme-bridge.mjs +949 -670
  238. package/dist/server/theme.mjs +252 -51
  239. package/dist/styles/index.css +295 -334
  240. package/package.json +3 -2
  241. package/dist/_dts/block-form/src/client/blockDraftSaveability.d.ts +0 -1
  242. package/dist/_dts/block-form/src/widgets/index.d.ts +0 -20
  243. package/dist/_dts/blocks/src/system/runtime/api/requestBody.d.ts +0 -7
  244. package/dist/client/clsx-DgIEfj3H.mjs +0 -16
@@ -2,6 +2,7 @@ import type { AppointmentResourceId, AppointmentServiceId, Brand, CustomerPassId
2
2
  import type { BlockApiConfig, EligibleAppointmentPackage } from "../api/types";
3
3
  import type { TimeSlot } from "../api/types";
4
4
  import type { BookingFormConfig, BookingFormData, BookingFormField, BookingPaymentStepResolution, BookingFormServicesSource, BookingFormService, BookingSelectedCollectionOptionKind, BookingSubmissionData } from "./booking-form.state";
5
+ import type { BookingValidationErrors } from "./booking-form.validationErrors";
5
6
  export type LoadState<T> = Readonly<{
6
7
  tag: "idle";
7
8
  }> | Readonly<{
@@ -25,10 +26,6 @@ export type BookingFlowStep = Readonly<{
25
26
  canEnter: boolean;
26
27
  canLeave: boolean;
27
28
  }>;
28
- export type BookingValidationErrors = Readonly<{
29
- formError: string | null;
30
- fieldErrors: Readonly<Record<string, string>>;
31
- }>;
32
29
  export type BookingFieldId = Brand<string, "BookingFieldId">;
33
30
  export declare const unsafeAsBookingFieldId: (id: string) => BookingFieldId;
34
31
  export type BookingFieldValue = string | number | boolean | readonly string[] | null;
@@ -173,6 +170,13 @@ export type BookingFlowReducerState = Readonly<{
173
170
  selectedSlot: BookingSlotView | null;
174
171
  fieldValues: Readonly<Record<string, BookingFieldValue>>;
175
172
  touchedFields: Readonly<Record<string, boolean>>;
173
+ /**
174
+ * Steps the user has tried to advance past. Step validation is derived
175
+ * continuously (it gates `canLeave`), but a step's errors are only ever
176
+ * *shown* once the step has been attempted — so a freshly mounted form is
177
+ * never scolded for input it has not had the chance to give yet.
178
+ */
179
+ attemptedStepIds: BookingAttemptedStepIds;
176
180
  discountCode: string;
177
181
  selectedSlidingAmountInput: string;
178
182
  selectedCollectionOptionKind?: BookingSelectedCollectionOptionKind;
@@ -200,6 +204,9 @@ export type BookingFlowEvent = Readonly<{
200
204
  }> | Readonly<{
201
205
  type: "field-touched";
202
206
  fieldId: BookingFieldId;
207
+ }> | Readonly<{
208
+ type: "step-advance-attempted";
209
+ stepId: BookingFlowStepId;
203
210
  }> | Readonly<{
204
211
  type: "payment-option-selected";
205
212
  kind: BookingSelectedCollectionOptionKind | null;
@@ -256,6 +263,13 @@ export type BookingStepPlanItem = Readonly<{
256
263
  label: string;
257
264
  visible: boolean;
258
265
  }>;
266
+ /**
267
+ * Steps the user has actually tried to advance past. Step validation is derived
268
+ * continuously (it gates whether a step can be left), but a step's errors are
269
+ * only ever *shown* once the step has been attempted — so a freshly mounted
270
+ * form is never scolded for input it has not had the chance to give yet.
271
+ */
272
+ export type BookingAttemptedStepIds = Readonly<Partial<Record<BookingFlowStepId, boolean>>>;
259
273
  export type BookingStepValidationResult = Readonly<{
260
274
  ok: true;
261
275
  }> | Readonly<{
@@ -272,6 +286,12 @@ export type DeriveBookingFlowStepsInput = Readonly<{
272
286
  requiresServiceSelection?: boolean;
273
287
  requiresResourceSelection?: boolean;
274
288
  enableAppointmentPackages?: boolean;
289
+ /**
290
+ * Steps whose validation messaging has been earned by an advance attempt.
291
+ * Omitted means "none attempted yet", so callers that only need gating can
292
+ * keep ignoring it.
293
+ */
294
+ attemptedStepIds?: BookingAttemptedStepIds;
275
295
  }>;
276
296
  export type DerivedBookingFlowSteps = Readonly<{
277
297
  steps: readonly BookingFlowStep[];
@@ -416,10 +436,6 @@ export type AppointmentBookingOverrideInputResult = Readonly<{
416
436
  reason: "missing-site-id" | "missing-api-base-url" | "missing-form" | "missing-form-id" | "missing-services";
417
437
  message: string;
418
438
  }>;
419
- export declare function createEmptyBookingValidationErrors(): BookingValidationErrors;
420
- export declare function createFormBookingValidationError(formError: string): BookingValidationErrors;
421
- export declare function createFieldBookingValidationErrors(fieldErrors: Readonly<Record<string, string>>): BookingValidationErrors;
422
- export declare function hasBookingValidationErrors(errors: BookingValidationErrors): boolean;
423
439
  export declare function createInitialBookingFlowReducerState(input: Readonly<{
424
440
  defaultServiceId?: string;
425
441
  defaultResourceId?: string;
@@ -8,6 +8,14 @@ type BookingFormProps = BookingFormSourceProps & Readonly<{
8
8
  * Server-safe placeholder for booking form.
9
9
  * Renders a stable shell plus the typed island envelope so hydration can attach
10
10
  * without pulling client hooks into the server graph.
11
+ *
12
+ * The island root carries mount identity only. The loading affordances — the
13
+ * `.rb-reg-surface` card, its `aria-busy` / `role="status"` announcement and the
14
+ * skeleton — live on a *child*, which the island mounter replaces wholesale when
15
+ * React takes over (it swaps the root's children, not the root). That keeps the
16
+ * card drawn exactly once after hydration, because the client wizard renders its
17
+ * own `.rb-reg-surface`, and leaves no stale loading state on the mounted form.
18
+ * `event-registration.server.tsx` follows the same shape.
11
19
  */
12
20
  export declare function BookingFormSSR({ blockId, siteId, apiBaseUrl, portalToken, formId, serviceId, resourceId, initialData, noticeMessage, requiresServiceSelection, requiresResourceSelection, shouldAutoSelectSingleResource, rebookContext, submitLabel, successMessage, form, services, spamProtectionEnabled, className, children, }: BookingFormProps): React.JSX.Element;
13
21
  export default BookingFormSSR;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The booking flow's validation vocabulary: what a step can complain about, and
3
+ * when the user has earned the right to be told.
4
+ *
5
+ * Split out of `booking-form.headless.state.ts` so the reducer file carries
6
+ * behaviour rather than this small closed value type and its constructors.
7
+ */
8
+ export type BookingValidationErrors = Readonly<{
9
+ formError: string | null;
10
+ fieldErrors: Readonly<Record<string, string>>;
11
+ }>;
12
+ export declare function createEmptyBookingValidationErrors(): BookingValidationErrors;
13
+ export declare function createFormBookingValidationError(formError: string): BookingValidationErrors;
14
+ export declare function createFieldBookingValidationErrors(fieldErrors: Readonly<Record<string, string>>): BookingValidationErrors;
15
+ export declare function hasBookingValidationErrors(errors: BookingValidationErrors): boolean;
16
+ export declare function clearBookingFormError(errors: BookingValidationErrors): BookingValidationErrors;
17
+ export declare function clearBookingFieldError(errors: BookingValidationErrors, fieldId: string): BookingValidationErrors;
@@ -1,7 +1,7 @@
1
1
  import type { PaymentSelection, PublicEvent, RegistrationStep } from './types';
2
2
  import type { UseEventRegistrationWizardResult } from './useEventRegistrationWizard';
3
3
  import { type EventRegistrationFlowStatus, type EventRegistrationFlowStep, type EventRegistrationFlowView, type EventRegistrationPaymentSelection, type EventRegistrationSubmitPlan } from './event-registration.headless.contract';
4
- export declare function getRegistrableStatuses(isPreview: boolean | undefined): readonly PublicEvent['status'][];
4
+ export declare function isEventRegistrationAvailable(event: Pick<PublicEvent, 'bookingAvailability'>): boolean;
5
5
  export declare function normalizeEventRegistrationMaxTickets(value: string | number | undefined): number;
6
6
  export declare function toHeadlessPaymentSelection(selection: PaymentSelection): EventRegistrationPaymentSelection;
7
7
  export declare function toInternalPaymentSelection(selection: EventRegistrationPaymentSelection): PaymentSelection;
@@ -1,6 +1,6 @@
1
1
  import { type EventPageSurfaceSubject, type EventPageSurfaceSubjectParseError, type EventOfferingId, type EventSeriesId, type Result } from '../../../../../../core/src/index';
2
2
  import { z } from 'zod';
3
- export declare const unsupportedEventRegistrationPageSurfaceSubjectReasons: readonly ["unsupportedSubject", "invalidEventSeriesId", "invalidEventOfferingId"];
3
+ export declare const unsupportedEventRegistrationPageSurfaceSubjectReasons: readonly ["unsupportedSubject", "invalidEventSeriesId", "invalidEventSeriesBookingScope", "invalidEventOfferingId"];
4
4
  export type UnsupportedEventRegistrationPageSurfaceSubjectReason = (typeof unsupportedEventRegistrationPageSurfaceSubjectReasons)[number];
5
5
  export type EventRegistrationPageSurfaceSubject = EventPageSurfaceSubject | Readonly<{
6
6
  kind: 'unsupported';
@@ -9,5 +9,5 @@ type EventRegistrationProps = Omit<EventRegistrationSourceProps, 'subject'> & Re
9
9
  * Server-safe placeholder for event registration.
10
10
  * Provides a static container for island hydration without importing client hooks.
11
11
  */
12
- export declare function EventRegistrationSSR({ blockId, siteId, apiBaseUrl, portalToken, previewToken, occurrenceContext, subject, events, className, buttonText, maxTickets, showVenue, showCapacity, successMessage, waitlistMessage, buttonVariant, overlayEnabled, spamProtectionEnabled, stage, supportEmail, sitePasses, siteMemberships, children, }: EventRegistrationProps): React.JSX.Element;
12
+ export declare function EventRegistrationSSR({ blockId, subject, children, ...sourceProps }: EventRegistrationProps): React.JSX.Element;
13
13
  export default EventRegistrationSSR;
@@ -138,6 +138,7 @@ export declare const eventCollectionSourceSchemaShape: {
138
138
  eventPreset: z.ZodOptional<z.ZodEnum<{
139
139
  course: "course";
140
140
  event: "event";
141
+ term: "term";
141
142
  performance: "performance";
142
143
  class: "class";
143
144
  workshop: "workshop";
@@ -452,6 +453,24 @@ export declare const eventCollectionSourceSchemaShape: {
452
453
  label: z.ZodString;
453
454
  }, z.core.$strip>], "kind">;
454
455
  requiresRegistration: z.ZodBoolean;
456
+ bookingAvailability: z.ZodDiscriminatedUnion<[z.ZodObject<{
457
+ kind: z.ZodLiteral<"open">;
458
+ }, z.core.$strip>, z.ZodObject<{
459
+ kind: z.ZodLiteral<"closed">;
460
+ reason: z.ZodEnum<{
461
+ occurrence_cancelled: "occurrence_cancelled";
462
+ occurrence_completed: "occurrence_completed";
463
+ series_draft: "series_draft";
464
+ series_cancelled: "series_cancelled";
465
+ series_completed: "series_completed";
466
+ series_archived: "series_archived";
467
+ parent_archived: "parent_archived";
468
+ parent_inconsistent: "parent_inconsistent";
469
+ not_public: "not_public";
470
+ already_started: "already_started";
471
+ enrollment_closed: "enrollment_closed";
472
+ }>;
473
+ }, z.core.$strip>], "kind">;
455
474
  deliveryMode: z.ZodEnum<{
456
475
  in_person: "in_person";
457
476
  hybrid: "hybrid";
@@ -498,6 +517,8 @@ export declare const eventCollectionSourceSchemaShape: {
498
517
  active: "active";
499
518
  draft: "draft";
500
519
  archived: "archived";
520
+ completed: "completed";
521
+ cancelled: "cancelled";
501
522
  }>>;
502
523
  timeZone: z.ZodString;
503
524
  pricing: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -845,6 +866,7 @@ export declare const eventCollectionDisplaySchemaShape: {
845
866
  eventPreset: z.ZodOptional<z.ZodEnum<{
846
867
  course: "course";
847
868
  event: "event";
869
+ term: "term";
848
870
  performance: "performance";
849
871
  class: "class";
850
872
  workshop: "workshop";
@@ -1159,6 +1181,24 @@ export declare const eventCollectionDisplaySchemaShape: {
1159
1181
  label: z.ZodString;
1160
1182
  }, z.core.$strip>], "kind">;
1161
1183
  requiresRegistration: z.ZodBoolean;
1184
+ bookingAvailability: z.ZodDiscriminatedUnion<[z.ZodObject<{
1185
+ kind: z.ZodLiteral<"open">;
1186
+ }, z.core.$strip>, z.ZodObject<{
1187
+ kind: z.ZodLiteral<"closed">;
1188
+ reason: z.ZodEnum<{
1189
+ occurrence_cancelled: "occurrence_cancelled";
1190
+ occurrence_completed: "occurrence_completed";
1191
+ series_draft: "series_draft";
1192
+ series_cancelled: "series_cancelled";
1193
+ series_completed: "series_completed";
1194
+ series_archived: "series_archived";
1195
+ parent_archived: "parent_archived";
1196
+ parent_inconsistent: "parent_inconsistent";
1197
+ not_public: "not_public";
1198
+ already_started: "already_started";
1199
+ enrollment_closed: "enrollment_closed";
1200
+ }>;
1201
+ }, z.core.$strip>], "kind">;
1162
1202
  deliveryMode: z.ZodEnum<{
1163
1203
  in_person: "in_person";
1164
1204
  hybrid: "hybrid";
@@ -1205,6 +1245,8 @@ export declare const eventCollectionDisplaySchemaShape: {
1205
1245
  active: "active";
1206
1246
  draft: "draft";
1207
1247
  archived: "archived";
1248
+ completed: "completed";
1249
+ cancelled: "cancelled";
1208
1250
  }>>;
1209
1251
  timeZone: z.ZodString;
1210
1252
  pricing: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -6,7 +6,10 @@ import type { CardOrientation, EventLayout, PublicEvent } from '../../../../bloc
6
6
  /** Day names starting from Sunday — kept for back-compat re-export. */
7
7
  export { DAY_NAMES, MONTH_NAMES } from '../../../../../../../calendar/src/index';
8
8
  export type { WeekStart } from '../../../../../../../calendar/src/index';
9
- /** Column class mappings for grid layouts */
9
+ /**
10
+ * Column class mappings for grid layouts, derived from the canonical
11
+ * responsive column ladder (see gridUserColumnLadder).
12
+ */
10
13
  export declare const COLUMN_CLASSES: Record<string, string>;
11
14
  /**
12
15
  * Build container class based on layout mode
@@ -1,8 +1,24 @@
1
1
  import type { ReactNode } from 'react';
2
2
  export type FeedbackTone = 'info' | 'success' | 'warning' | 'error';
3
3
  export type FeedbackLiveMode = 'off' | 'polite' | 'assertive';
4
+ /**
5
+ * How loudly a feedback message presents itself. Orthogonal to tone: tone says
6
+ * what kind of message it is, treatment says how much room it takes up.
7
+ *
8
+ * - `panel` — the alert box. The default, and what every existing call site
9
+ * gets. Suits a genuine failure: a declined payment, a lost submission.
10
+ * - `field-note` — a quiet margin note attached to the control or group it
11
+ * describes. Suits inline validation, where the user has simply not finished
12
+ * something yet.
13
+ *
14
+ * Site styles own each treatment's appearance; the CSS is generated in
15
+ * theme-core (`status/generateStatusCss.ts`) from theme tokens, so a block
16
+ * only ever names the treatment.
17
+ */
18
+ export type FeedbackTreatment = 'panel' | 'field-note';
4
19
  export type FeedbackMessageProps = Readonly<{
5
20
  tone: FeedbackTone;
21
+ treatment?: FeedbackTreatment;
6
22
  children: ReactNode;
7
23
  className?: string;
8
24
  id?: string;
@@ -12,4 +28,4 @@ export type FeedbackMessageProps = Readonly<{
12
28
  role?: 'alert' | 'status';
13
29
  live?: FeedbackLiveMode;
14
30
  }>;
15
- export declare function FeedbackMessage({ tone, children, className, id, title, titleClassName, bodyClassName, role, live, }: FeedbackMessageProps): import("react").JSX.Element;
31
+ export declare function FeedbackMessage({ tone, treatment, children, className, id, title, titleClassName, bodyClassName, role, live, }: FeedbackMessageProps): import("react").JSX.Element;
@@ -15,7 +15,7 @@ export type { BookingOptionGroupViewModel, BookingOptionListProps, } from './Boo
15
15
  export { FieldValidationMessage, getFieldValidationControlProps, } from './FieldValidationMessage';
16
16
  export type { FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, } from './FieldValidationMessage';
17
17
  export { FeedbackMessage } from './FeedbackMessage';
18
- export type { FeedbackLiveMode, FeedbackMessageProps, FeedbackTone } from './FeedbackMessage';
18
+ export type { FeedbackLiveMode, FeedbackMessageProps, FeedbackTone, FeedbackTreatment, } from './FeedbackMessage';
19
19
  export { LoggedInAsUser } from './LoggedInAsUser';
20
20
  export { StateIcon } from './StateIcon';
21
21
  export type { LoggedInAsUserProps } from './LoggedInAsUser';
@@ -21,7 +21,7 @@
21
21
  * 2. TypeScript will error until you update both spacing maps
22
22
  * 3. No way to get out of sync
23
23
  */
24
- declare const SEMANTIC_SPACING_VALUES: readonly ["none", "compact", "cozy", "medium", "comfortable", "spacious"];
24
+ export declare const SEMANTIC_SPACING_VALUES: readonly ["none", "compact", "cozy", "medium", "comfortable", "spacious"];
25
25
  /**
26
26
  * Semantic spacing values used across the block system.
27
27
  * These abstract away the specific CSS classes and provide a consistent vocabulary.
@@ -0,0 +1,90 @@
1
+ import { type CardRole } from '../../../../../../theme-core/src/cards/index';
2
+ /**
3
+ * @file The one place box-style content becomes CSS classes.
4
+ *
5
+ * `boxStyles.all` runs this for the binding pipeline, and the React nodes that
6
+ * render a card outside that pipeline (offerings-preview) call it directly, so
7
+ * there is a single card-class emission path rather than copies that drift.
8
+ */
9
+ /** The elevation class an elevated box gets when the theme defines a shadow. */
10
+ export declare const RAISED_SHADOW_CLASS = "rb-shadow-md";
11
+ /** Radius values to their `rb-*` classes (defined in `rb-utilities.css`). */
12
+ export declare const ROUNDED_CLASSES: Readonly<Record<string, string>>;
13
+ export declare const fixedFrameScopeClass = "rb-bg-motion-fixed-frame-scope";
14
+ export declare function hasFixedFrameBackgroundMotion(value: unknown): boolean;
15
+ /**
16
+ * The role a card renders with, and the one place a set of card styles becomes
17
+ * a role.
18
+ *
19
+ * Precedence: a per-item override, then the `role` a Look compiled onto the
20
+ * block's card styles, then the legacy `cardVariant` field. `cardVariant` only
21
+ * ever held role names, so it reads *as* a role rather than as a second
22
+ * vocabulary — an explicit `role` wins when a record carries both.
23
+ *
24
+ * Compiled and freshly authored card styles carry only `role`. `cardVariant`
25
+ * survives on content persisted before the role contract, and normalizes here
26
+ * rather than in `cardStylesOverrideSchema` because that content reaches the
27
+ * renderer as a raw record without ever passing through the schema.
28
+ */
29
+ export declare function resolveCardRoleForBoxStyles(input: Record<string, unknown>, override: CardRole | null | undefined): CardRole | null;
30
+ /**
31
+ * Parse a block's own per-item surface vocabulary into a card role. The alias
32
+ * map is declared by the block (its persisted values are its own history), and
33
+ * `normalizeCardRole` remains the one untrusted-input boundary after that.
34
+ */
35
+ export declare function resolveItemCardRole(value: unknown, aliases: Readonly<Record<string, string>> | undefined): CardRole | null;
36
+ /** The border widths `CardStylesContent['border']` can carry. */
37
+ export type BoxBorderWidth = 'none' | '1' | '2' | '3';
38
+ /**
39
+ * A box border after the one legacy shape has been normalized away, parsed
40
+ * into the vocabulary the field actually declares. The record arrives here as
41
+ * raw persisted JSON, so parsing is this function's job and no reader
42
+ * downstream repeats it.
43
+ */
44
+ export type NormalizedBoxBorder = Readonly<{
45
+ /** `null` means the box expresses no opinion and inherits its border. */
46
+ enabled: boolean | null;
47
+ width: BoxBorderWidth | undefined;
48
+ colorToken: string | undefined;
49
+ }>;
50
+ /**
51
+ * A box's border record with `{ width: 'none' }`-without-`enabled` resolved.
52
+ *
53
+ * That shape used to mean two different things to two different readers: the
54
+ * old private offerings emitter read it as border-off, while the shared
55
+ * emitter read it as "no opinion" and left the caller's base `rb-border` in
56
+ * place. Same persisted bytes, opposite answers. A width of `none` says there
57
+ * is no border, so it is read as `enabled: false` here — once, at the one
58
+ * place box-style content is interpreted — and every reader downstream now
59
+ * agrees.
60
+ *
61
+ * Nothing persisted carries the shape (the #1297 usage audit found zero rows;
62
+ * the authoring UI cannot produce it, since the width control is gated on
63
+ * `enabled === true`), so this is boundary hygiene rather than a migration.
64
+ */
65
+ export declare function normalizeBoxStylesBorder(value: unknown): NormalizedBoxBorder | null;
66
+ /**
67
+ * The class list for a set of box styles: the caller's base class, the border /
68
+ * spacing / elevation / radius overrides the box carries, and its card surface.
69
+ *
70
+ * Pure, so the React nodes that render a card outside the binding pipeline
71
+ * (offerings-preview) share this one emission path with `boxStyles.all` instead
72
+ * of keeping a copy that drifts.
73
+ */
74
+ export declare function boxStyleClassNames(value: unknown, options: Readonly<{
75
+ axis?: "y" | "all";
76
+ baseClass?: string;
77
+ includeSpacing?: boolean;
78
+ /**
79
+ * A card role that wins over the one compiled into the box styles — the
80
+ * per-item override in blocks that let individual cards pick their surface.
81
+ */
82
+ cardRoleOverride?: CardRole | null;
83
+ /**
84
+ * The elevation class an elevated box gets. Defaults to the standard raised
85
+ * shadow; pass `null` to opt out explicitly (the binding pipeline does that
86
+ * for a theme whose medium shadow is `none`). Omitting it must never
87
+ * silently flatten a raised card, hence the default.
88
+ */
89
+ raisedClass?: string | null;
90
+ }>): string;
@@ -1,4 +1,8 @@
1
+ import { resolveSurfaceForeground, type ResolvedSurfaceForeground } from '../../../../../../theme-core/src/surfaces/index';
2
+ import type { ThemeHeader } from '../../../../../../theme-core/src/schema';
1
3
  import type { TransformContext } from '../core';
4
+ export declare function resolveHeaderLeafTextColor(header: Partial<ThemeHeader> | undefined): NonNullable<ThemeHeader['textColor']>;
5
+ export declare function resolveHeaderRootForeground(header: Partial<ThemeHeader> | undefined, palette: Parameters<typeof resolveSurfaceForeground>[1], isTransparent: boolean): ResolvedSurfaceForeground;
2
6
  export declare function resolveSurfaceForegroundStyles(value: unknown, context: TransformContext, options?: Readonly<{
3
7
  fallbackToken?: string;
4
8
  }>): Record<string, string>;
@@ -1,5 +1,6 @@
1
1
  import { type TransformDefinition } from "./core";
2
2
  import type { SemanticSpacing } from "../../spacing";
3
+ import { type CardRole } from '../../../../../theme-core/src/cards/index';
3
4
  /**
4
5
  * Maps semantic spacing values to CSS-only `rb-*` spacing classes.
5
6
  *
@@ -59,7 +60,32 @@ export declare const boxStylesCompositeTransform: TransformDefinition<{
59
60
  axis?: "y" | "all";
60
61
  baseClass?: string;
61
62
  includeSpacing?: boolean;
63
+ cardRoleOverride?: CardRole | null;
62
64
  }>;
65
+ type CardRoleClassOptions = {
66
+ baseClass?: string;
67
+ axis?: "y" | "all";
68
+ /** Where the block's compiled card styles live on the view model. */
69
+ stylesPath?: string;
70
+ /** The block's own per-item surface vocabulary, mapped onto card roles. */
71
+ itemRoleAliases?: Readonly<Record<string, string>>;
72
+ /**
73
+ * `surface` renders the card container (box styles plus the role class);
74
+ * `media` / `content` render the shared child hooks generated card CSS
75
+ * targets, and only while a role is actually in play.
76
+ */
77
+ emit?: "surface" | "media" | "content";
78
+ };
79
+ /**
80
+ * Card classes for a block whose items may each pick their own surface.
81
+ *
82
+ * Bound from the per-item role so it can see the repeated item, and reads the
83
+ * block's compiled card styles off the view model — the two live in different
84
+ * binding scopes. Precedence: the Look's block-level role is the base, an
85
+ * explicit per-item role overrides it, and the user's own card fields (border,
86
+ * background, radius) ride along on top as they always have.
87
+ */
88
+ export declare const cardRoleClassTransform: TransformDefinition<CardRoleClassOptions>;
63
89
  export declare const cardVariantClassTransform: TransformDefinition<{
64
90
  baseClass?: string;
65
91
  }>;
@@ -1,6 +1,5 @@
1
1
  import { z } from 'zod';
2
- import type { ThemeHeader } from '../../../../../theme-core/src/schema';
3
- import type { ThemeTokens } from '../../theme';
2
+ import { type ThemeHeader } from '../../../../../theme-core/src/schema';
4
3
  import { type TransformDefinition } from './core';
5
4
  declare const headerLogoClassSchema: z.ZodObject<{
6
5
  base: z.ZodOptional<z.ZodString>;
@@ -13,7 +12,7 @@ export declare const headerLogoTextVisibleTransform: TransformDefinition;
13
12
  *
14
13
  * - `'inline'` → classic variant with the historical logo-left / nav-right row
15
14
  * - `'centered'`→ classic variant with a centred (flex-1) nav and a right CTA
16
- * - `'other'` → not a classic variant (centered/floating/transparent handle it)
15
+ * - `'other'` → not a classic variant (centered/floating handle it)
17
16
  *
18
17
  * Consumed by the site-header block's `$when` gates so the two classic rows are
19
18
  * mutually exclusive without introducing a new top-level header variant.
@@ -32,47 +31,15 @@ declare const headerRootClassSchema: z.ZodObject<{
32
31
  invert: z.ZodOptional<z.ZodString>;
33
32
  }, z.core.$strip>;
34
33
  type HeaderRootOptions = z.infer<typeof headerRootClassSchema>;
35
- export type HeaderVisualStyles = ReturnType<typeof resolveHeaderVisualStyles>;
36
- export declare function resolveBackgroundVisualStyles(backgroundColor: string | undefined, tokens: ThemeTokens, defaultToken?: string): {
34
+ export declare function resolveBackgroundVisualStyles(backgroundColor: string | undefined, defaultToken?: string): {
37
35
  backgroundToken: string;
38
- paletteHex: string | null;
39
- backgroundHex: string | null;
40
- isBackgroundDark: boolean;
41
- textColorToken: "text";
42
- textColorOverride: string | null;
43
- isTransparent: boolean;
44
- } | {
45
- backgroundToken: string;
46
- paletteHex: string | undefined;
47
- backgroundHex: string;
48
- isBackgroundDark: boolean;
49
- textColorToken: "text" | undefined;
50
- textColorOverride: string | null;
51
36
  isTransparent: boolean;
52
37
  };
53
- export declare function resolveHeaderVisualStyles(header: Partial<ThemeHeader> | undefined, tokens: ThemeTokens): {
54
- backgroundToken: string;
55
- paletteHex: string | null;
56
- backgroundHex: string | null;
57
- isBackgroundDark: boolean;
58
- textColorToken: "text";
59
- textColorOverride: string | null;
60
- isTransparent: boolean;
61
- } | {
38
+ export declare function resolveHeaderVisualStyles(header: Partial<ThemeHeader> | undefined): {
62
39
  backgroundToken: string;
63
- paletteHex: string | undefined;
64
- backgroundHex: string;
65
- isBackgroundDark: boolean;
66
- textColorToken: "text" | undefined;
67
- textColorOverride: string | null;
68
40
  isTransparent: boolean;
69
41
  } | {
70
42
  readonly backgroundToken: "transparent";
71
- readonly paletteHex: null;
72
- readonly backgroundHex: null;
73
- readonly isBackgroundDark: false;
74
- readonly textColorToken: "text";
75
- readonly textColorOverride: null;
76
43
  readonly isTransparent: true;
77
44
  };
78
45
  export declare const headerRootClassTransform: TransformDefinition<HeaderRootOptions>;
@@ -1,7 +1,7 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { BlockManifest } from '../../../blocks/src/index';
3
- import { type FieldWidgetComponent } from '../../../block-form/src/client/index';
4
- import type { ManifestFormSource } from '../../../block-form/src/client/index';
3
+ import { type FieldWidgetComponent } from '../../../block-form/src/index';
4
+ import type { ManifestFormSource } from '../../../block-form/src/index';
5
5
  export type { AutosaveHandle } from '../hooks/useSimpleAutosave';
6
6
  export type ContentFieldsFormProps<TValues extends Record<string, unknown>> = {
7
7
  siteId: string;
@@ -57,19 +57,19 @@ export declare const EVENT_CONTENT_TYPE_SCHEMA: {
57
57
  readonly fields: [{
58
58
  readonly id: "summary";
59
59
  readonly type: "textarea";
60
- readonly label: "Summary";
61
- readonly description: "Short teaser shown in listings.";
60
+ readonly label: "Short introduction";
61
+ readonly description: "Write one or two sentences that help people quickly understand what this is. It appears wherever the event is listed and near the top of its page.";
62
62
  readonly rows: 3;
63
63
  }, {
64
64
  readonly id: "image";
65
65
  readonly type: "media";
66
- readonly label: "Listing image";
67
- readonly description: "Optional image used for event cards and previews.";
66
+ readonly label: "Event image";
67
+ readonly description: "Choose the main image people will see wherever the event is listed and on its page.";
68
68
  }, {
69
69
  readonly id: "body";
70
70
  readonly type: "richText";
71
- readonly label: "Details";
72
- readonly description: "Full event details and agenda.";
71
+ readonly label: "About this event";
72
+ readonly description: "Add the main information people need before booking—what to expect, who it’s for, what’s included, and anything they should bring or know.";
73
73
  }];
74
74
  readonly routing: {
75
75
  readonly enabled: true;
@@ -162,19 +162,19 @@ export declare const BUILTIN_CONTENT_TYPE_SCHEMAS: {
162
162
  readonly fields: [{
163
163
  readonly id: "summary";
164
164
  readonly type: "textarea";
165
- readonly label: "Summary";
166
- readonly description: "Short teaser shown in listings.";
165
+ readonly label: "Short introduction";
166
+ readonly description: "Write one or two sentences that help people quickly understand what this is. It appears wherever the event is listed and near the top of its page.";
167
167
  readonly rows: 3;
168
168
  }, {
169
169
  readonly id: "image";
170
170
  readonly type: "media";
171
- readonly label: "Listing image";
172
- readonly description: "Optional image used for event cards and previews.";
171
+ readonly label: "Event image";
172
+ readonly description: "Choose the main image people will see wherever the event is listed and on its page.";
173
173
  }, {
174
174
  readonly id: "body";
175
175
  readonly type: "richText";
176
- readonly label: "Details";
177
- readonly description: "Full event details and agenda.";
176
+ readonly label: "About this event";
177
+ readonly description: "Add the main information people need before booking—what to expect, who it’s for, what’s included, and anything they should bring or know.";
178
178
  }];
179
179
  readonly routing: {
180
180
  readonly enabled: true;
@@ -24,6 +24,8 @@ export type BrandedIdParseError = {
24
24
  export declare function expectParsedBrandedId<TBrand>(result: Result<TBrand, BrandedIdParseError>): TBrand;
25
25
  export type EventInstanceId = Brand<string, 'EventInstanceId'>;
26
26
  export type SiteId = Brand<string, 'SiteId'>;
27
+ /** An API key identifier, independent of the credential family it represents. */
28
+ export type ApiKeyId = Brand<string, 'ApiKeyId'>;
27
29
  export type SiteRouteId = Brand<string, 'SiteRouteId'>;
28
30
  export type PageId = Brand<string, 'PageId'>;
29
31
  export type PageSurfaceId = Brand<string, 'PageSurfaceId'>;
@@ -159,6 +161,7 @@ export declare const unsafeAsEntryId: (id: string) => EntryId;
159
161
  export declare const unsafeAsPreviewEntryId: (id: string) => PreviewEntryId;
160
162
  export declare const unsafeAsEventInstanceId: (id: string) => EventInstanceId;
161
163
  export declare const unsafeAsSiteId: (id: string) => SiteId;
164
+ export declare const unsafeAsApiKeyId: (id: string) => ApiKeyId;
162
165
  export declare const unsafeAsSiteRouteId: (id: string) => SiteRouteId;
163
166
  export declare const unsafeAsPageId: (id: string) => PageId;
164
167
  export declare const unsafeAsPageSurfaceId: (id: string) => PageSurfaceId;
@@ -268,6 +271,7 @@ export declare const unsafeAsEncounterRecordId: (id: string) => EncounterRecordI
268
271
  export declare const unsafeAsRecordEntryId: (id: string) => RecordEntryId;
269
272
  export declare const unsafeAsProtectedPayloadKeyVersion: (id: string) => ProtectedPayloadKeyVersion;
270
273
  export declare const parseSiteId: (value: unknown) => Result<SiteId, BrandedIdParseError>;
274
+ export declare const parseApiKeyId: (value: unknown) => Result<ApiKeyId, BrandedIdParseError>;
271
275
  export declare const parseSiteRouteId: (value: unknown) => Result<SiteRouteId, BrandedIdParseError>;
272
276
  export declare const parsePageId: (value: unknown) => Result<PageId, BrandedIdParseError>;
273
277
  export declare const parsePageSurfaceId: (value: unknown) => Result<PageSurfaceId, BrandedIdParseError>;
@@ -14,16 +14,33 @@ export type EventPageSurfaceSubjectRefWire = Readonly<{
14
14
  kind: 'eventOffering';
15
15
  eventOfferingId: string;
16
16
  }>;
17
- export type EventPageSurfaceSubject = Extract<EventPageSurfaceSubjectRef, {
17
+ export type EventPageSurfaceBookingScope = 'single_occurrence' | 'whole_series';
18
+ export type EventSeriesPageSurfaceSubject = Readonly<{
18
19
  kind: 'eventSeries';
20
+ eventSeriesId: EventSeriesId;
21
+ bookingScope: 'single_occurrence';
22
+ }> | Readonly<{
23
+ kind: 'eventSeries';
24
+ eventSeriesId: EventSeriesId;
25
+ bookingScope: 'whole_series';
26
+ isWholeSeriesBooking: true;
27
+ }>;
28
+ export type EventSeriesPageSurfaceSubjectWire = Readonly<{
29
+ kind: 'eventSeries';
30
+ eventSeriesId: string;
31
+ bookingScope: 'single_occurrence';
19
32
  }> | Readonly<{
33
+ kind: 'eventSeries';
34
+ eventSeriesId: string;
35
+ bookingScope: 'whole_series';
36
+ isWholeSeriesBooking: true;
37
+ }>;
38
+ export type EventPageSurfaceSubject = EventSeriesPageSurfaceSubject | Readonly<{
20
39
  kind: 'eventOffering';
21
40
  eventOfferingId: EventOfferingId;
22
41
  availableEventSeriesIds: readonly EventSeriesId[];
23
42
  }>;
24
- export type EventPageSurfaceSubjectWire = Extract<EventPageSurfaceSubjectRefWire, {
25
- kind: 'eventSeries';
26
- }> | Readonly<{
43
+ export type EventPageSurfaceSubjectWire = EventSeriesPageSurfaceSubjectWire | Readonly<{
27
44
  kind: 'eventOffering';
28
45
  eventOfferingId: string;
29
46
  availableEventSeriesIds: readonly string[];
@@ -36,9 +53,13 @@ export type EventPageSurfaceSubjectParseError = Readonly<{
36
53
  }> | Readonly<{
37
54
  kind: 'invalidEventSeriesId';
38
55
  error: BrandedIdParseError;
56
+ }> | Readonly<{
57
+ kind: 'invalidEventSeriesBookingScope';
58
+ bookingScope: unknown;
39
59
  }> | Readonly<{
40
60
  kind: 'invalidEventOfferingId';
41
61
  error: BrandedIdParseError;
42
62
  }>;
63
+ export declare function createEventSeriesPageSurfaceSubject(eventSeriesId: EventSeriesId, bookingScope: EventPageSurfaceBookingScope): EventSeriesPageSurfaceSubject;
43
64
  export declare function parseEventPageSurfaceSubject(value: unknown): Result<EventPageSurfaceSubject, EventPageSurfaceSubjectParseError>;
44
65
  export declare function toEventPageSurfaceSubjectWire(subject: EventPageSurfaceSubject): EventPageSurfaceSubjectWire;