@riverbankcms/sdk 0.145.0 → 0.147.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/CHANGELOG.md +29 -0
  2. package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
  3. package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +311 -186
  6. package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +3808 -2395
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1122 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +102 -0
  9. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  10. package/dist/_dts/api/src/bookingConfig.d.ts +24 -1
  11. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +11 -26
  12. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  13. package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
  14. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  15. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
  17. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  18. package/dist/_dts/api/src/bookings.d.ts +1 -0
  19. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  20. package/dist/_dts/api/src/communications.d.ts +20 -4
  21. package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
  22. package/dist/_dts/api/src/endpoints.d.ts +816 -655
  23. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  24. package/dist/_dts/api/src/eventManagementContracts.d.ts +72 -4
  25. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  26. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  27. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  28. package/dist/_dts/api/src/index.d.ts +9 -2
  29. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  30. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  31. package/dist/_dts/api/src/launchReadiness.d.ts +19 -6
  32. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  33. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  34. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  35. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  36. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +57 -0
  37. package/dist/_dts/api/src/occurrenceScheduling.d.ts +29 -0
  38. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  39. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  40. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
  41. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  42. package/dist/_dts/api/src/sdk-event-upsert.d.ts +55 -1
  43. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  44. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  45. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  46. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  47. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  48. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  49. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  50. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  51. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  52. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  53. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  54. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +6 -49
  55. package/dist/_dts/api/src/siteOnboarding.d.ts +72 -18
  56. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  57. package/dist/_dts/api/src/types.d.ts +7 -1
  58. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  59. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  60. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
  61. package/dist/_dts/blocks/src/index.d.ts +2 -0
  62. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +29 -1
  63. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -1
  64. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  65. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  66. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  67. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
  70. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
  71. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
  72. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
  73. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
  76. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  79. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
  96. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
  97. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +34 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  101. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  103. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +4 -1
  104. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  105. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  106. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  107. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  108. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  109. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  110. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  111. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  112. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  113. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  114. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  115. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
  116. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  117. package/dist/_dts/core/src/editor-state.d.ts +2 -7
  118. package/dist/_dts/core/src/index.d.ts +2 -1
  119. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  120. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  121. package/dist/_dts/core/src/mailing-list-submission.d.ts +9 -1
  122. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  123. package/dist/_dts/core/src/participants.d.ts +0 -38
  124. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  125. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  126. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +151 -24
  127. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  128. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  129. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  130. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
  131. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  132. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  133. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +5 -5
  134. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
  135. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  136. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
  137. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  138. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
  139. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  140. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  141. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  142. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
  143. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  144. package/dist/_dts/sdk/src/version.d.ts +1 -1
  145. package/dist/_dts/surfaces/src/index.d.ts +9 -0
  146. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  147. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  148. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  149. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  150. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  151. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  152. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  153. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  154. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  156. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  157. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  158. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  159. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  160. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  161. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  162. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  163. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  164. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  165. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  166. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  167. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  168. package/dist/_dts/ui/src/badge.d.ts +2 -1
  169. package/dist/_dts/ui/src/button.d.ts +1 -1
  170. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  171. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  172. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  173. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  174. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  175. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  176. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  177. package/dist/_dts/ui/src/index.d.ts +4 -1
  178. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  179. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  180. package/dist/_dts/ui/src/popover.d.ts +7 -1
  181. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  182. package/dist/_dts/ui/src/surface.d.ts +1 -1
  183. package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
  184. package/dist/client/CheckboxChoice-B33MqoUo.mjs +24 -0
  185. package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
  186. package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
  187. package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
  188. package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
  189. package/dist/client/{scrollToBlock-CWs8EIdo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
  190. package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
  191. package/dist/client/{accordion-BcNF9TjX.mjs → accordion-CoT5g7zo.mjs} +1 -1
  192. package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-BWxB46xD.mjs} +251 -150
  193. package/dist/client/bookings.mjs +415 -234
  194. package/dist/client/{carousel-CTdF6e0V.mjs → carousel-DtNYWFd3.mjs} +2 -2
  195. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  196. package/dist/client/{cart-pGtyf_XU.mjs → cart-z4qZih1Y.mjs} +3 -3
  197. package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-DpL7euFH.mjs} +3 -3
  198. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
  199. package/dist/client/client.mjs +3721 -2220
  200. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  201. package/dist/client/{context-BFeY_Wbm.mjs → context-C8TinPJc.mjs} +1 -1
  202. package/dist/client/{dates-BhwVSxDg.mjs → dates-vwwxTeB0.mjs} +2 -3
  203. package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
  204. package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
  205. package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
  206. package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-DajjWgOv.mjs} +4 -4
  207. package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-DMq9gMA-.mjs} +121 -54
  208. package/dist/client/{form-Dodt8Y8t.mjs → form-Qf6qTbos.mjs} +136 -105
  209. package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-D7qJrqFX.mjs} +3 -3
  210. package/dist/client/hooks.mjs +1148 -179
  211. package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-CCF9-t_0.mjs} +4 -4
  212. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  213. package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
  214. package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-DzCLSP4S.mjs} +206 -104
  215. package/dist/client/{pricing-BOU0_Hai.mjs → pricing-Cgxv2KLC.mjs} +1 -1
  216. package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-ru9w5GHx.mjs} +3 -3
  217. package/dist/client/{productList-D-mItx1n.mjs → productList-zaapKSl-.mjs} +3 -3
  218. package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-CwvvNOHx.mjs} +91 -28
  219. package/dist/client/rendering/client.mjs +1441 -826
  220. package/dist/client/rendering/islands.mjs +19 -19
  221. package/dist/client/rendering.mjs +3652 -2005
  222. package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
  223. package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
  224. package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
  225. package/dist/client/{shop-Dufw7N7o.mjs → shop-mktkXvbV.mjs} +7 -7
  226. package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-TqExh235.mjs} +5 -5
  227. package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
  228. package/dist/preview-next/before-render.mjs +490 -153
  229. package/dist/preview-next/client/runtime.mjs +4 -4
  230. package/dist/preview-next/editor-base.css +64 -2
  231. package/dist/preview-next/editor-chrome.css +7 -4
  232. package/dist/preview-next/keepAlive.mjs +450 -153
  233. package/dist/preview-next/middleware.mjs +451 -153
  234. package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-C_EHQ5XA.mjs} +475 -153
  235. package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
  236. package/dist/{separator-EvdCAn4V.mjs → separator-C9qDP95Z.mjs} +1 -1
  237. package/dist/server/components.mjs +4957 -3509
  238. package/dist/server/config-validation.mjs +1115 -189
  239. package/dist/server/config.mjs +1115 -189
  240. package/dist/server/data.mjs +1113 -188
  241. package/dist/server/index.mjs +492 -154
  242. package/dist/server/navigation.mjs +13 -2
  243. package/dist/server/next.mjs +4798 -3462
  244. package/dist/server/page-converter.mjs +143 -89
  245. package/dist/server/prebuild.mjs +1 -1
  246. package/dist/server/rendering/server.mjs +3862 -2414
  247. package/dist/server/rendering.mjs +5648 -4154
  248. package/dist/server/routing.mjs +1223 -329
  249. package/dist/server/server.mjs +1172 -314
  250. package/dist/server/theme-bridge.mjs +533 -128
  251. package/dist/server/theme.mjs +5 -1
  252. package/dist/styles/index.css +218 -69
  253. package/package.json +1 -1
  254. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
@@ -1167,13 +1167,16 @@ const SURFACE_FOREGROUND_CSS_VARS = {
1167
1167
  text: "--rb-surface-text-color",
1168
1168
  heading: "--rb-surface-heading-color",
1169
1169
  link: "--rb-surface-link-color",
1170
+ linkHover: "--rb-surface-link-hover-color",
1170
1171
  supporting: "--rb-surface-supporting-color"
1171
1172
  };
1172
1173
  const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
1174
+ const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
1173
1175
  const DEFAULT_ROLE_FALLBACKS = {
1174
1176
  text: DEFAULT_SURFACE_TEXT_COLOR,
1175
1177
  heading: DEFAULT_SURFACE_TEXT_COLOR,
1176
- link: "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))",
1178
+ link: DEFAULT_SURFACE_LINK_COLOR,
1179
+ linkHover: DEFAULT_SURFACE_LINK_COLOR,
1177
1180
  supporting: "rgb(var(--tb-mutedText, 100 116 139))"
1178
1181
  };
1179
1182
  function requireSurfaceColorValue(role, value) {
@@ -1185,6 +1188,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
1185
1188
  const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
1186
1189
  const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
1187
1190
  if (role === "text") return `var(${roleVariable}, ${fallback})`;
1191
+ if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
1188
1192
  return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
1189
1193
  }
1190
1194
  //#endregion
@@ -325,6 +325,9 @@
325
325
  .rb-h-4 {
326
326
  height: 1rem;
327
327
  }
328
+ .rb-h-5 {
329
+ height: 1.25rem;
330
+ }
328
331
  .rb-h-8 {
329
332
  height: 2rem;
330
333
  }
@@ -1838,6 +1841,8 @@
1838
1841
  --rb-surface-text-color: var(--rb-modal-text, rgb(var(--tb-text, 17 24 39)));
1839
1842
  --rb-surface-heading-color: var(--rb-modal-heading, var(--rb-modal-text, rgb(var(--tb-text, 17 24 39))));
1840
1843
  --rb-surface-link-color: var(--rb-modal-link, var(--rb-modal-text, rgb(var(--tb-text, 17 24 39))));
1844
+ --rb-surface-link-hover-color: var(--rb-modal-link, var(--rb-modal-text, rgb(var(--tb-text, 17 24 39))));
1845
+ --rb-surface-link-hover-decoration: underline;
1841
1846
  --rb-surface-supporting-color: var(--rb-modal-supporting, var(--rb-modal-text, rgb(var(--tb-text, 17 24 39))));
1842
1847
  border: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1843
1848
  border-radius: var(--rb-modal-radius, var(--radius-card));
@@ -2265,14 +2270,18 @@
2265
2270
 
2266
2271
  :where(.theme-scope) .rb-prose a:hover {
2267
2272
  color: var(
2268
- --rb-prose-link-hover-color,
2269
- var(--rb-prose-effective-link-color)
2273
+ --rb-surface-link-hover-color,
2274
+ var(--rb-prose-link-hover-color, var(--rb-prose-effective-link-color))
2275
+ );
2276
+ text-decoration-line: var(
2277
+ --rb-surface-link-hover-decoration,
2278
+ var(--rb-prose-link-decoration-line, underline)
2270
2279
  );
2271
2280
  text-decoration-color: var(
2272
2281
  --rb-prose-link-hover-decoration-color,
2273
2282
  var(
2274
- --rb-prose-link-hover-color,
2275
- var(--rb-prose-effective-link-color)
2283
+ --rb-surface-link-hover-color,
2284
+ var(--rb-prose-link-hover-color, var(--rb-prose-effective-link-color))
2276
2285
  )
2277
2286
  );
2278
2287
  }
@@ -3306,6 +3315,8 @@
3306
3315
  --rb-surface-text-color: rgb(var(--tb-onSurface, var(--tb-text)));
3307
3316
  --rb-surface-heading-color: rgb(var(--tb-onSurface, var(--tb-text)));
3308
3317
  --rb-surface-link-color: rgb(var(--tb-onSurface, var(--tb-text)));
3318
+ --rb-surface-link-hover-color: rgb(var(--tb-onSurface, var(--tb-text)));
3319
+ --rb-surface-link-hover-decoration: underline;
3309
3320
  --rb-surface-supporting-color: rgb(var(--tb-onSurface, var(--tb-text)));
3310
3321
  border: 1px solid rgb(var(--tb-border));
3311
3322
  border-radius: var(--radius-card);
@@ -3447,6 +3458,8 @@
3447
3458
  --rb-surface-text-color: var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42))));
3448
3459
  --rb-surface-heading-color: var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42))));
3449
3460
  --rb-surface-link-color: var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42))));
3461
+ --rb-surface-link-hover-color: var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42))));
3462
+ --rb-surface-link-hover-decoration: underline;
3450
3463
  --rb-surface-supporting-color: var(--rb-reg-on-surface-muted, var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42)))));
3451
3464
  transition: border-color var(--rb-block-transition, 150ms) ease;
3452
3465
  width: 100%;
@@ -4232,6 +4245,10 @@
4232
4245
  margin-bottom: 0.25rem;
4233
4246
  }
4234
4247
 
4248
+ :where(.theme-scope) :where([data-block='event-registration']) .er-consent-check {
4249
+ margin-top: 0.75rem;
4250
+ }
4251
+
4235
4252
  :where(.theme-scope) :where([data-block='event-registration']) .er-required {
4236
4253
  color: var(--er-required);
4237
4254
  }
@@ -8934,13 +8951,6 @@
8934
8951
  margin: 0;
8935
8952
  }
8936
8953
 
8937
- /* Inline field (checkbox, radio with label) */
8938
- :where(.theme-scope) :where([data-block="form"]) .fb-inline {
8939
- display: flex;
8940
- align-items: center;
8941
- gap: 0.5rem;
8942
- }
8943
-
8944
8954
  /* Success state */
8945
8955
  :where(.theme-scope) :where([data-block="form"]) .fb-success {
8946
8956
  background-color: var(--fb-success-bg);
@@ -9410,6 +9420,8 @@
9410
9420
  --rb-surface-text-color: inherit;
9411
9421
  --rb-surface-heading-color: inherit;
9412
9422
  --rb-surface-link-color: inherit;
9423
+ --rb-surface-link-hover-color: inherit;
9424
+ --rb-surface-link-hover-decoration: inherit;
9413
9425
  --rb-surface-supporting-color: inherit;
9414
9426
  }
9415
9427
 
@@ -9505,6 +9517,8 @@
9505
9517
  --rb-surface-text-color: rgb(var(--tb-text, 17 24 39));
9506
9518
  --rb-surface-heading-color: rgb(var(--tb-text, 17 24 39));
9507
9519
  --rb-surface-link-color: rgb(var(--tb-primary, var(--tb-text, 17 24 39)));
9520
+ --rb-surface-link-hover-color: var(--rb-prose-link-hover-color, rgb(var(--tb-primary, var(--tb-text, 17 24 39))));
9521
+ --rb-surface-link-hover-decoration: initial;
9508
9522
  --rb-surface-supporting-color: rgb(var(--tb-mutedText, 100 116 139));
9509
9523
  border: 1px solid rgb(var(--tb-border));
9510
9524
  border-radius: var(--shop-card-radius);
@@ -9669,6 +9683,8 @@
9669
9683
  --rb-surface-text-color: rgb(var(--tb-text, 17 24 39));
9670
9684
  --rb-surface-heading-color: rgb(var(--tb-text, 17 24 39));
9671
9685
  --rb-surface-link-color: rgb(var(--tb-primary, var(--tb-text, 17 24 39)));
9686
+ --rb-surface-link-hover-color: var(--rb-prose-link-hover-color, rgb(var(--tb-primary, var(--tb-text, 17 24 39))));
9687
+ --rb-surface-link-hover-decoration: initial;
9672
9688
  --rb-surface-supporting-color: rgb(var(--tb-mutedText, 100 116 139));
9673
9689
  }
9674
9690
 
@@ -9745,6 +9761,8 @@
9745
9761
  --rb-surface-text-color: var(--cp-text);
9746
9762
  --rb-surface-heading-color: var(--cp-text);
9747
9763
  --rb-surface-link-color: var(--cp-primary);
9764
+ --rb-surface-link-hover-color: var(--rb-prose-link-hover-color, var(--cp-primary));
9765
+ --rb-surface-link-hover-decoration: initial;
9748
9766
  --rb-surface-supporting-color: var(--cp-muted);
9749
9767
  border: 1px solid var(--cp-card-border);
9750
9768
  border-radius: var(--cp-card-radius);
@@ -9894,6 +9912,8 @@
9894
9912
  --rb-surface-text-color: var(--cp-text);
9895
9913
  --rb-surface-heading-color: var(--cp-text);
9896
9914
  --rb-surface-link-color: var(--cp-primary);
9915
+ --rb-surface-link-hover-color: var(--rb-prose-link-hover-color, var(--cp-primary));
9916
+ --rb-surface-link-hover-decoration: initial;
9897
9917
  --rb-surface-supporting-color: var(--cp-muted);
9898
9918
  border: 1px dashed var(--cp-card-border);
9899
9919
  border-radius: var(--cp-card-radius);
@@ -9911,6 +9931,8 @@
9911
9931
  --rb-surface-text-color: var(--cp-text);
9912
9932
  --rb-surface-heading-color: var(--cp-text);
9913
9933
  --rb-surface-link-color: var(--cp-primary);
9934
+ --rb-surface-link-hover-color: var(--rb-prose-link-hover-color, var(--cp-primary));
9935
+ --rb-surface-link-hover-decoration: initial;
9914
9936
  --rb-surface-supporting-color: var(--cp-muted);
9915
9937
  border: 1px solid var(--cp-card-border);
9916
9938
  border-radius: var(--cp-card-radius);
@@ -10149,6 +10171,8 @@
10149
10171
  --rb-surface-text-color: var(--cp-text);
10150
10172
  --rb-surface-heading-color: var(--cp-text);
10151
10173
  --rb-surface-link-color: var(--cp-primary);
10174
+ --rb-surface-link-hover-color: var(--rb-prose-link-hover-color, var(--cp-primary));
10175
+ --rb-surface-link-hover-decoration: initial;
10152
10176
  --rb-surface-supporting-color: var(--cp-muted);
10153
10177
  border: 1px solid var(--cp-card-border);
10154
10178
  border-radius: var(--cp-card-radius);
@@ -11052,9 +11076,11 @@
11052
11076
  */
11053
11077
 
11054
11078
  /* Newsletter copy styling */
11079
+ /* Size only: weight, family and colour come from the theme's heading styles */
11055
11080
  :where(.theme-scope) :where([data-block="newsletter-signup"]) .newsletter-copy-title {
11056
- font-size: 1.5rem;
11057
- font-weight: 600;
11081
+ font-size: clamp(1.75rem, 1.35rem + 1.6vw, 2.5rem);
11082
+ line-height: 1.15;
11083
+ text-wrap: balance;
11058
11084
  }
11059
11085
 
11060
11086
  :where(.theme-scope) :where([data-block="newsletter-signup"]) .newsletter-copy-subtitle {
@@ -11078,37 +11104,150 @@
11078
11104
  gap: var(--rb-gap-sm, 0.75rem);
11079
11105
  }
11080
11106
 
11081
- /* Individual field styling */
11107
+ /* Extra preset fields (name, company...). Labels are visually hidden, so
11108
+ these sit in a row above the email entry. */
11109
+ :where(.theme-scope) .newsletter-extra-fields {
11110
+ display: grid;
11111
+ grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr));
11112
+ gap: 0.5rem;
11113
+ }
11114
+
11082
11115
  :where(.theme-scope) .newsletter-field {
11083
11116
  display: flex;
11084
11117
  flex-direction: column;
11085
11118
  gap: 0.25rem;
11119
+ text-align: left;
11086
11120
  }
11087
11121
 
11088
- /* Topic choices (visitor picks what to hear about). Same treatment as the
11089
- form block's .fb-fieldset / .fb-inline, defined here because the newsletter
11090
- form also renders inside contact-newsletter and the site footer. */
11091
- :where(.theme-scope) .newsletter-topics {
11122
+ /* Email entry: the email field and the themed submit button share one shell.
11123
+ The shell's look (background, border, corners, focus ring) comes from the
11124
+ theme's input system via .form-input-group; this only handles layout. */
11125
+ :where(.theme-scope) .newsletter-entry {
11126
+ container-type: inline-size;
11092
11127
  display: flex;
11093
11128
  flex-direction: column;
11094
- gap: 0.5rem;
11129
+ gap: 0.375rem;
11130
+ text-align: left;
11131
+ }
11132
+
11133
+ :where(.theme-scope) .newsletter-entry-group > button {
11134
+ white-space: nowrap;
11135
+ }
11136
+
11137
+ /* Too narrow for field and button side by side (phones, footer columns):
11138
+ stack them inside the shell and keep pill themes from turning the taller
11139
+ shell into a capsule. */
11140
+ @container (max-width: 22rem) {
11141
+ :where(.theme-scope) .newsletter-entry .newsletter-entry-group {
11142
+ flex-direction: column;
11143
+ border-radius: min(var(--rb-input-radius, 0.5rem), 1rem);
11144
+ }
11145
+
11146
+ :where(.theme-scope) .newsletter-entry .newsletter-entry-group > button {
11147
+ width: 100%;
11148
+ justify-content: center;
11149
+ }
11150
+ }
11151
+
11152
+ /* Topic choices (visitor picks what to hear about) as toggle chips. Each chip
11153
+ is a real checkbox underneath; the chip is its visible face. */
11154
+ :where(.theme-scope) .newsletter-topics {
11095
11155
  border: none;
11096
11156
  padding: 0;
11097
11157
  margin: 0;
11098
11158
  min-width: 0;
11099
11159
  }
11100
11160
 
11101
- :where(.theme-scope) .newsletter-topics > legend {
11161
+ :where(.theme-scope) .newsletter-topics-legend {
11102
11162
  padding: 0;
11103
- margin-bottom: 0.25rem;
11163
+ margin-bottom: 0.625rem;
11164
+ font-size: 0.9375rem;
11165
+ color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
11104
11166
  }
11105
11167
 
11106
- :where(.theme-scope) .newsletter-topic-choice {
11168
+ :where(.theme-scope) .newsletter-topic-chips {
11107
11169
  display: flex;
11108
- align-items: center;
11170
+ flex-wrap: wrap;
11109
11171
  gap: 0.5rem;
11110
11172
  }
11111
11173
 
11174
+ :where(.theme-scope) .newsletter-stacked .newsletter-topics-legend {
11175
+ width: 100%;
11176
+ }
11177
+
11178
+ :where(.theme-scope) .newsletter-stacked .newsletter-topic-chips {
11179
+ justify-content: center;
11180
+ }
11181
+
11182
+ :where(.theme-scope) .newsletter-topic-chip {
11183
+ position: relative;
11184
+ display: inline-flex;
11185
+ }
11186
+
11187
+ :where(.theme-scope) .newsletter-topic-chip > input {
11188
+ position: absolute;
11189
+ inset: 0;
11190
+ width: 100%;
11191
+ height: 100%;
11192
+ margin: 0;
11193
+ opacity: 0;
11194
+ cursor: pointer;
11195
+ }
11196
+
11197
+ :where(.theme-scope) .newsletter-topic-chip > span {
11198
+ display: inline-flex;
11199
+ align-items: center;
11200
+ gap: 0.375rem;
11201
+ padding: 0.4375rem 0.9375rem;
11202
+ border: 1px solid color-mix(in srgb, currentColor 35%, transparent);
11203
+ border-radius: var(--rb-button-radius, var(--rb-input-radius, 9999px));
11204
+ font-size: 0.9375rem;
11205
+ line-height: 1.3;
11206
+ color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
11207
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
11208
+ }
11209
+
11210
+ /* Tick that grows in when the chip is on */
11211
+ :where(.theme-scope) .newsletter-topic-chip > span::before {
11212
+ content: "";
11213
+ width: 0;
11214
+ height: 0.7em;
11215
+ background-color: currentColor;
11216
+ clip-path: polygon(14% 52%, 0 67%, 38% 100%, 100% 22%, 85% 8%, 37% 70%);
11217
+ transition: width 0.15s ease;
11218
+ }
11219
+
11220
+ :where(.theme-scope) .newsletter-topic-chip:hover > span {
11221
+ border-color: currentColor;
11222
+ }
11223
+
11224
+ /* Same accent and mark colours as the theme's checkboxes */
11225
+ :where(.theme-scope) .newsletter-topic-chip > input:checked + span {
11226
+ background-color: var(--rb-check-accent, rgb(var(--tb-primary)));
11227
+ border-color: var(--rb-check-accent, rgb(var(--tb-primary)));
11228
+ color: var(--rb-check-mark, rgb(var(--tb-onPrimary, 255 255 255)));
11229
+ }
11230
+
11231
+ :where(.theme-scope) .newsletter-topic-chip > input:checked + span::before {
11232
+ width: 0.7em;
11233
+ }
11234
+
11235
+ :where(.theme-scope) .newsletter-topic-chip > input:focus-visible + span {
11236
+ outline: 2px solid var(--rb-check-accent, rgb(var(--tb-primary)));
11237
+ outline-offset: 2px;
11238
+ }
11239
+
11240
+ :where(.theme-scope) .newsletter-topic-chip > input:disabled + span {
11241
+ opacity: 0.6;
11242
+ }
11243
+
11244
+ @media (prefers-reduced-motion: reduce) {
11245
+ :where(.theme-scope) .newsletter-topic-chip > span,
11246
+ :where(.theme-scope) .newsletter-topic-chip > span::before {
11247
+ transition: none;
11248
+ }
11249
+ }
11250
+
11112
11251
  /* Error panel and field notes. The form block scopes these to its own
11113
11252
  data-block, so the newsletter form (which also renders in the footer)
11114
11253
  needs its own copy of the treatment. */
@@ -11126,13 +11265,7 @@
11126
11265
  color: var(--fb-error-text);
11127
11266
  }
11128
11267
 
11129
- /* Required indicator */
11130
- :where(.theme-scope) .newsletter-required {
11131
- color: rgb(var(--tb-primary));
11132
- margin-left: 0.125rem;
11133
- }
11134
-
11135
- /* Submit button container */
11268
+ /* Submit button container (only when a preset has no email field) */
11136
11269
  :where(.theme-scope) .newsletter-submit {
11137
11270
  margin-top: 0.5rem;
11138
11271
  }
@@ -11144,50 +11277,29 @@
11144
11277
  justify-content: center;
11145
11278
  }
11146
11279
 
11147
- /* Privacy note */
11280
+ /* Privacy note: quieter than the intro so the entry row leads */
11148
11281
  :where(.theme-scope) .newsletter-privacy-note {
11149
11282
  margin-top: 0.75rem;
11150
- font-size: 1rem;
11151
- line-height: 1.6;
11152
- color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
11283
+ font-size: 0.8125rem;
11284
+ line-height: 1.5;
11285
+ color: var(--rb-surface-supporting-color, var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39))));
11286
+ opacity: 0.85;
11153
11287
  text-align: center;
11154
11288
  }
11155
11289
 
11156
11290
  /* =============================================================================
11157
- * Inline Variant - Horizontal layout
11291
+ * Inline Variant - left-aligned, wider entry row
11158
11292
  * =============================================================================
11159
11293
  */
11160
11294
 
11161
- :where(.theme-scope) .newsletter-inline .newsletter-form-fields {
11162
- flex-direction: row;
11163
- align-items: flex-end;
11164
- flex-wrap: wrap;
11165
- gap: var(--rb-gap-sm, 0.75rem);
11166
- }
11167
-
11168
- :where(.theme-scope) .newsletter-inline .newsletter-field {
11169
- flex: 1 1 auto;
11170
- min-width: 10rem;
11171
- }
11172
-
11173
- :where(.theme-scope) .newsletter-inline .newsletter-submit {
11174
- margin-top: 0;
11175
- flex-shrink: 0;
11176
- }
11177
-
11178
- :where(.theme-scope) .newsletter-inline .newsletter-topics {
11179
- flex-basis: 100%;
11295
+ :where(.theme-scope) .newsletter-inline .newsletter-form {
11296
+ max-width: 40rem;
11297
+ margin-left: 0;
11298
+ margin-right: 0;
11180
11299
  }
11181
11300
 
11182
- /* Mobile fallback for inline variant */
11183
- @media (max-width: 640px) {
11184
- :where(.theme-scope) .newsletter-inline .newsletter-form-fields {
11185
- flex-direction: column;
11186
- }
11187
-
11188
- :where(.theme-scope) .newsletter-inline .newsletter-field {
11189
- min-width: 100%;
11190
- }
11301
+ :where(.theme-scope) .newsletter-inline .newsletter-privacy-note {
11302
+ text-align: left;
11191
11303
  }
11192
11304
 
11193
11305
  /* =============================================================================
@@ -11324,12 +11436,6 @@
11324
11436
  margin: 0;
11325
11437
  }
11326
11438
 
11327
- :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-inline {
11328
- display: flex;
11329
- align-items: center;
11330
- gap: 0.5rem;
11331
- }
11332
-
11333
11439
  :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-success,
11334
11440
  :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-error,
11335
11441
  :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-empty {
@@ -12728,6 +12834,8 @@
12728
12834
  --rb-surface-text-color: rgb(var(--tb-onSecondary));
12729
12835
  --rb-surface-heading-color: rgb(var(--tb-onSecondary));
12730
12836
  --rb-surface-link-color: rgb(var(--tb-onSecondary));
12837
+ --rb-surface-link-hover-color: rgb(var(--tb-onSecondary));
12838
+ --rb-surface-link-hover-decoration: underline;
12731
12839
  --rb-surface-supporting-color: rgb(var(--tb-onSecondary));
12732
12840
  }
12733
12841
 
@@ -12857,6 +12965,8 @@
12857
12965
  --rb-surface-text-color: rgb(var(--tb-onPrimary));
12858
12966
  --rb-surface-heading-color: rgb(var(--tb-onPrimary));
12859
12967
  --rb-surface-link-color: rgb(var(--tb-onPrimary));
12968
+ --rb-surface-link-hover-color: rgb(var(--tb-onPrimary));
12969
+ --rb-surface-link-hover-decoration: underline;
12860
12970
  --rb-surface-supporting-color: color-mix(in oklab, rgb(var(--tb-onPrimary)), transparent 18%);
12861
12971
  }
12862
12972
 
@@ -13222,3 +13332,42 @@
13222
13332
  }
13223
13333
 
13224
13334
 
13335
+ /* =============================================================================
13336
+ * Site footer: social links
13337
+ *
13338
+ * Icon links get a 40px tap target with a hairline ring drawn from the link's
13339
+ * own colour, so it follows the footer's text colour on any surface. Links
13340
+ * without an icon (unknown platforms) stay plain text.
13341
+ * =============================================================================
13342
+ */
13343
+
13344
+ :where(.theme-scope) .rb-footer-socials {
13345
+ display: flex;
13346
+ flex-wrap: wrap;
13347
+ align-items: center;
13348
+ gap: 0.75rem 1.25rem;
13349
+ }
13350
+
13351
+ :where(.theme-scope) .rb-footer-social-link:has(> .rb-footer-social-icon) {
13352
+ display: inline-grid;
13353
+ place-items: center;
13354
+ width: 2.5rem;
13355
+ height: 2.5rem;
13356
+ border: 1px solid color-mix(in srgb, currentColor 22%, transparent);
13357
+ border-radius: 9999px;
13358
+ }
13359
+
13360
+ :where(.theme-scope) .rb-footer-socials:has(.rb-footer-social-icon) {
13361
+ gap: 0.5rem;
13362
+ }
13363
+
13364
+ :where(.theme-scope) .rb-footer-social-link:has(> .rb-footer-social-icon):hover {
13365
+ border-color: currentColor;
13366
+ }
13367
+
13368
+ :where(.theme-scope) .rb-footer-social-icon {
13369
+ width: 1.5rem;
13370
+ height: 1.5rem;
13371
+ }
13372
+
13373
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.145.0",
3
+ "version": "0.147.0",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -1,135 +0,0 @@
1
- import type { CustomerId, ParticipantId } from './branded';
2
- import type { ParticipantEmail, ParticipantParticipation, ParticipantRosterSlot, ParticipantSlotKey, ParticipantSubjectResolution, SingleSubjectParticipantParticipation } from './participants';
3
- export type ContactablePersonSeed = Readonly<{
4
- displayName: string | null;
5
- email: ParticipantEmail;
6
- phone: string | null;
7
- }>;
8
- export type ProvisionalPersonSeed = Readonly<{
9
- displayName: string | null;
10
- phone: string | null;
11
- }>;
12
- export type PersonResolutionInput = Readonly<{
13
- kind: 'with_email';
14
- displayName: string | null;
15
- email: ParticipantEmail;
16
- phone: string | null;
17
- existingParticipantIdByEmail: ParticipantId | null;
18
- }> | Readonly<{
19
- kind: 'without_email';
20
- displayName: string | null;
21
- phone: string | null;
22
- }>;
23
- export type PersonResolutionPlan = Readonly<{
24
- kind: 'reuse_existing_person_by_email';
25
- participantId: ParticipantId;
26
- email: ParticipantEmail;
27
- }> | Readonly<{
28
- kind: 'create_contactable_person';
29
- seed: ContactablePersonSeed;
30
- }> | Readonly<{
31
- kind: 'create_provisional_person';
32
- seed: ProvisionalPersonSeed;
33
- }>;
34
- export declare function planPersonResolution(input: PersonResolutionInput): PersonResolutionPlan;
35
- export type CustomerPersonResolutionInput = Readonly<{
36
- kind: 'with_email';
37
- customerId: CustomerId;
38
- displayName: string | null;
39
- email: ParticipantEmail;
40
- phone: string | null;
41
- existingParticipantIdByEmail: ParticipantId | null;
42
- }> | Readonly<{
43
- kind: 'without_email';
44
- customerId: CustomerId;
45
- displayName: string | null;
46
- phone: string | null;
47
- }>;
48
- export type CustomerPersonResolution = Readonly<{
49
- kind: 'link_existing_person_by_email';
50
- customerId: CustomerId;
51
- participantId: ParticipantId;
52
- email: ParticipantEmail;
53
- }> | Readonly<{
54
- kind: 'create_contactable_person_for_customer';
55
- customerId: CustomerId;
56
- seed: ContactablePersonSeed;
57
- }> | Readonly<{
58
- kind: 'create_provisional_person_for_customer';
59
- customerId: CustomerId;
60
- seed: ProvisionalPersonSeed;
61
- }>;
62
- export declare function planCustomerPersonResolution(input: CustomerPersonResolutionInput): CustomerPersonResolution;
63
- export type ParticipationPersonResolution = Readonly<{
64
- kind: 'reuse_existing_person_for_slot';
65
- slotKey: ParticipantSlotKey;
66
- participantId: ParticipantId;
67
- participation: ParticipantParticipation;
68
- }> | Readonly<{
69
- kind: 'create_contactable_person_for_slot';
70
- slotKey: ParticipantSlotKey;
71
- seed: ContactablePersonSeed;
72
- participation: ParticipantParticipation;
73
- }> | Readonly<{
74
- kind: 'create_provisional_person_for_slot';
75
- slotKey: ParticipantSlotKey;
76
- seed: ProvisionalPersonSeed;
77
- participation: ParticipantParticipation;
78
- }> | Readonly<{
79
- kind: 'blocked_duplicate_participant_in_booking';
80
- slotKey: ParticipantSlotKey;
81
- email: ParticipantEmail;
82
- conflictingSlotKeys: readonly ParticipantSlotKey[];
83
- }>;
84
- export declare function planParticipationPersonResolution(input: Readonly<{
85
- slot: ParticipantRosterSlot;
86
- resolution: ParticipantSubjectResolution;
87
- }>): ParticipationPersonResolution;
88
- export type SingleSubjectParticipantMaterializationInput = Readonly<{
89
- kind: 'participant_subject';
90
- customerId: CustomerId;
91
- displayName: string | null;
92
- email: ParticipantEmail;
93
- phone: string | null;
94
- existingParticipantIdByEmail: ParticipantId | null;
95
- participation: SingleSubjectParticipantParticipation;
96
- }> | Readonly<{
97
- kind: 'provisional_single_subject_participant';
98
- customerId: CustomerId;
99
- displayName: string | null;
100
- phone: string | null;
101
- participation: SingleSubjectParticipantParticipation;
102
- }>;
103
- export type SingleSubjectParticipantMaterializationPlan = Readonly<{
104
- kind: 'reuse_existing_person_and_participation';
105
- customerId: CustomerId;
106
- participantId: ParticipantId;
107
- participation: SingleSubjectParticipantParticipation;
108
- }> | Readonly<{
109
- kind: 'create_contactable_person_and_participation';
110
- customerId: CustomerId;
111
- seed: ContactablePersonSeed;
112
- participation: SingleSubjectParticipantParticipation;
113
- }> | Readonly<{
114
- kind: 'create_provisional_person_and_participation';
115
- customerId: CustomerId;
116
- seed: ProvisionalPersonSeed;
117
- participation: SingleSubjectParticipantParticipation;
118
- }>;
119
- export declare function planSingleSubjectParticipantMaterialization(input: SingleSubjectParticipantMaterializationInput): SingleSubjectParticipantMaterializationPlan;
120
- export type CleanupEvidence = Readonly<{
121
- legacyCustomerEmailCallSiteCount: number;
122
- unresolvedHealthRowCount: number;
123
- parityFailureSurfaces: readonly string[];
124
- }>;
125
- export type CleanupReadinessBlocker = 'legacy_customer_email_call_sites_remaining' | 'parity_failures_remaining' | 'unresolved_health_rows_remaining';
126
- export type CleanupReadiness = Readonly<{
127
- kind: 'ready';
128
- evidence: CleanupEvidence;
129
- blockers: readonly [];
130
- }> | Readonly<{
131
- kind: 'blocked';
132
- evidence: CleanupEvidence;
133
- blockers: readonly CleanupReadinessBlocker[];
134
- }>;
135
- export declare function planCleanupReadiness(evidence: CleanupEvidence): CleanupReadiness;