@riverbankcms/sdk 0.138.0 → 0.140.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/README.md +12 -16
  2. package/dist/{PreviewEditorSidebar-BVPur_CU.mjs → PreviewEditorSidebar-CUyTzd5z.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DLhWX8oh.mjs → PreviewEditorUI-Agkw4v5i.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BguJY1SW.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Tda6qw4z.mjs → SdkPreviewModeRuntime-DdbeAdS8.mjs} +62 -28
  6. package/dist/{SiteChromeCustomizeContext-BHFgMjde.mjs → SiteChromeCustomizeContext-CqGOz-Kv.mjs} +8467 -5616
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +264 -495
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +221 -242
  9. package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
  10. package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
  11. package/dist/_dts/api/src/authSubmission.d.ts +46 -0
  12. package/dist/_dts/api/src/billing.d.ts +18 -7
  13. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
  14. package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
  15. package/dist/_dts/api/src/blocks.d.ts +2 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
  17. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
  18. package/dist/_dts/api/src/communications.d.ts +0 -1
  19. package/dist/_dts/api/src/contentRuntime.d.ts +16 -4
  20. package/dist/_dts/api/src/endpoints.d.ts +275 -167
  21. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  22. package/dist/_dts/api/src/footerSettings.d.ts +10 -10
  23. package/dist/_dts/api/src/index.d.ts +11 -10
  24. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  25. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  26. package/dist/_dts/api/src/mailchimpIntegration.d.ts +2 -59
  27. package/dist/_dts/api/src/mailingListIntegration.d.ts +123 -0
  28. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  29. package/dist/_dts/api/src/navigation/locations.d.ts +1 -0
  30. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  31. package/dist/_dts/api/src/navigation.d.ts +1 -26
  32. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +109 -2
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  34. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +185 -0
  35. package/dist/_dts/api/src/privacyPolicy.d.ts +74 -2
  36. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +14 -6
  37. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +1 -1
  38. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  39. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  40. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +2 -4
  41. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +9 -49
  42. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  43. package/dist/_dts/api/src/publicReadEndpointDefinitions.d.ts +73 -0
  44. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  45. package/dist/_dts/api/src/schemas/site-api-keys.d.ts +1 -1
  46. package/dist/_dts/api/src/sdkContracts.d.ts +5 -32
  47. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  48. package/dist/_dts/api/src/sdkThemeWire.d.ts +46 -46
  49. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  50. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +9 -34
  51. package/dist/_dts/api/src/siteOnboarding.d.ts +84 -228
  52. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -13
  53. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  54. package/dist/_dts/api/src/siteSettings.d.ts +38 -6
  55. package/dist/_dts/api/src/types.d.ts +78 -77
  56. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  57. package/dist/_dts/billing/src/membership/index.d.ts +17 -7
  58. package/dist/_dts/billing/src/plans/display.d.ts +15 -0
  59. package/dist/_dts/billing/src/plans/registry.d.ts +2 -0
  60. package/dist/_dts/billing/src/plans/standing.d.ts +19 -0
  61. package/dist/_dts/billing/src/plans/types.d.ts +4 -7
  62. package/dist/_dts/billing/src/site-arrangements.d.ts +14 -3
  63. package/dist/_dts/billing/src/subscriptions/evidence.d.ts +12 -0
  64. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +31 -0
  65. package/dist/_dts/billing/src/subscriptions/store.d.ts +23 -5
  66. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -15
  67. package/dist/_dts/blocks/src/client.d.ts +1 -1
  68. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +48 -20
  69. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  70. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +9 -0
  71. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +12 -6
  72. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  73. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  74. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +11 -0
  75. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +39 -66
  76. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  77. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  78. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  79. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +39 -114
  80. package/dist/_dts/blocks/src/system/blocks/offerings-preview/catalogue.d.ts +18 -0
  81. package/dist/_dts/blocks/src/system/blocks/offerings-preview/fields.d.ts +2 -0
  82. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +4 -0
  83. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +7 -13
  84. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  85. package/dist/_dts/blocks/src/system/data/index.d.ts +4 -4
  86. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  87. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +2 -1
  88. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +2 -74
  89. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  90. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +33 -100
  91. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  92. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  93. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  94. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  95. package/dist/_dts/blocks/src/system/runtime/api/types/newsletter.d.ts +5 -15
  96. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  97. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  98. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +78 -30
  99. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +39 -15
  100. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -0
  101. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +1 -1
  102. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarToday.d.ts +22 -0
  103. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +94 -0
  104. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  105. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  106. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  108. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  109. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  110. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  111. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +12 -2
  112. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  113. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  114. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -7
  115. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  116. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +28 -0
  117. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/bookability.d.ts +9 -0
  118. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +14 -0
  119. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/duration.d.ts +2 -0
  120. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +4 -0
  121. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/location.d.ts +2 -0
  122. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/quickDates.d.ts +16 -0
  123. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/AgendaEventCard.d.ts +9 -1
  124. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +2 -0
  125. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayHeaders.d.ts +4 -0
  126. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  127. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +5 -0
  128. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -1
  129. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventQuickDates.d.ts +15 -0
  130. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +7 -3
  131. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +1 -0
  132. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +2 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +1 -0
  134. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/useHydrationReady.d.ts +6 -0
  135. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +3 -0
  136. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +62 -33
  137. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -3
  138. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +14 -31
  139. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-catalogue.d.ts +14 -0
  140. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-content.d.ts +23 -0
  141. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +4 -2
  142. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  143. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  144. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  145. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  146. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +5 -0
  147. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  148. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  149. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +32 -16
  150. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +34 -0
  151. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  152. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +6 -24
  153. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  154. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +4 -2
  155. package/dist/_dts/core/src/branded.d.ts +0 -8
  156. package/dist/_dts/core/src/footer-engagement.d.ts +2 -6
  157. package/dist/_dts/core/src/index.d.ts +10 -1
  158. package/dist/_dts/core/src/mailing-list-identifiers.d.ts +21 -0
  159. package/dist/_dts/core/src/mailing-list-runtime.d.ts +42 -0
  160. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +14 -0
  161. package/dist/_dts/core/src/mailing-list-setup.d.ts +142 -0
  162. package/dist/_dts/core/src/mailing-list-submission.d.ts +224 -0
  163. package/dist/_dts/core/src/mailing-list-targeting-parser.d.ts +12 -0
  164. package/dist/_dts/core/src/mailing-list-targeting.d.ts +93 -0
  165. package/dist/_dts/core/src/navigation-locations.d.ts +28 -0
  166. package/dist/_dts/core/src/participants.d.ts +2 -29
  167. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  168. package/dist/_dts/core/src/public-profile.d.ts +35 -1
  169. package/dist/_dts/core/src/public-read-cache-contract.d.ts +45 -0
  170. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  171. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +797 -954
  172. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  173. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  174. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +12 -0
  175. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +14 -0
  176. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/index.d.ts +3 -0
  177. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +7 -0
  178. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  179. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  180. package/dist/_dts/sdk/src/client/publicAppointmentReadOperations.d.ts +12 -0
  181. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +2 -1
  182. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +11 -4
  183. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -13
  184. package/dist/_dts/sdk/src/config/content-validation.d.ts +5 -8
  185. package/dist/_dts/sdk/src/constants.d.ts +3 -3
  186. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  187. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -31
  188. package/dist/_dts/sdk/src/navigation/index.d.ts +11 -29
  189. package/dist/_dts/sdk/src/next/index.d.ts +4 -4
  190. package/dist/_dts/sdk/src/prebuild/types.d.ts +1 -5
  191. package/dist/_dts/sdk/src/public-api/contracts.d.ts +44 -33
  192. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +5 -0
  193. package/dist/_dts/sdk/src/rendering/client.d.ts +3 -20
  194. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +5 -0
  195. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +4 -0
  196. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +8 -1
  197. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  198. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  199. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  200. package/dist/_dts/sdk/src/version.d.ts +1 -1
  201. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  202. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  203. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  204. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  205. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  206. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +41 -0
  207. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  208. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  209. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  210. package/dist/_dts/theme-core/src/runtime/buildThemeRuntime.d.ts +0 -1
  211. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  212. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  213. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  214. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  215. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  216. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  217. package/dist/_dts/theme-core/src/tokens/tokens.d.ts +7 -0
  218. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  219. package/dist/_dts/ui/src/badge.d.ts +1 -1
  220. package/dist/_dts/ui/src/callout.d.ts +1 -1
  221. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  222. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  223. package/dist/client/{BookingConsentAgreement-DQUik1Mx.mjs → BookingConsentAgreement-CuKa82V4.mjs} +4 -4
  224. package/dist/client/{DiscountCodeDisclosure-CU67Q4vH.mjs → DiscountCodeDisclosure-BbYieKWB.mjs} +1 -1
  225. package/dist/client/{EventCombined.client-a02TXUgg.mjs → EventCombined.client-LTfR1Aby.mjs} +444 -200
  226. package/dist/client/{EventListing.client-99qx7jFl.mjs → EventListing.client-DUHpYSuo.mjs} +2 -2
  227. package/dist/client/{LeafletStaticMap-CWzcq73L.mjs → LeafletStaticMap-CHRupL6m.mjs} +1 -1
  228. package/dist/client/{accordion-D1nb3-Oj.mjs → accordion-6HiIFxNL.mjs} +1 -1
  229. package/dist/client/{bookingForm-BGrmLhaO.mjs → bookingForm-Dlmid43H.mjs} +7 -7
  230. package/dist/client/bookings.mjs +368 -142
  231. package/dist/client/{carousel-DSmOx3ad.mjs → carousel-DmkZRRq_.mjs} +2 -2
  232. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  233. package/dist/client/{cart-COWeOIUk.mjs → cart-CIC24330.mjs} +3 -3
  234. package/dist/client/{checkout-CeysaIJK.mjs → checkout-D1Zw9imo.mjs} +3 -3
  235. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  236. package/dist/client/client.mjs +5017 -2258
  237. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  238. package/dist/client/{context-DBzX85Xc.mjs → context-Cy1OayHx.mjs} +9 -21
  239. package/dist/client/{dates-DCYhZBlW.mjs → dates-aDcfoLHr.mjs} +21 -3
  240. package/dist/client/{eventCalendar-BgsN73Ul.mjs → eventCalendar-FQxMPAjf.mjs} +81 -79
  241. package/dist/client/{eventCombined-DcZQAMQP.mjs → eventCombined-Dr3ac6Hb.mjs} +3 -3
  242. package/dist/client/{eventDetails-BWwGJ54l.mjs → eventDetails-D-AzUHFQ.mjs} +4 -4
  243. package/dist/client/{eventListing-DqYqV8vp.mjs → eventListing-B3XxBf3i.mjs} +3 -3
  244. package/dist/client/{eventRegistration-DQGDgu_e.mjs → eventRegistration-I6EaokFD.mjs} +543 -155
  245. package/dist/client/{form-ClfpasVT.mjs → form-BbWckVWY.mjs} +3 -3
  246. package/dist/client/{headerSection-BuOMe98N.mjs → headerSection-C9qU4Y7x.mjs} +2 -2
  247. package/dist/client/hooks.mjs +1685 -716
  248. package/dist/client/{locationMap-CEqu_sfa.mjs → locationMap-CLCShvlG.mjs} +3 -3
  249. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  250. package/dist/client/newsletterForm-Briukxzi.mjs +444 -0
  251. package/dist/client/{pricing-xj7MPZlK.mjs → pricing-Copadu-2.mjs} +1 -1
  252. package/dist/client/{productDetail-vxqTt5Xj.mjs → productDetail-oujlRd-r.mjs} +3 -3
  253. package/dist/client/{productList-OTdZu8sb.mjs → productList-BRiIRUcd.mjs} +3 -3
  254. package/dist/client/{propsDecoder-CY9gGEF7.mjs → propsDecoder-CB2KS_ko.mjs} +706 -160
  255. package/dist/client/rendering/client.mjs +3161 -1226
  256. package/dist/client/rendering/islands.mjs +19 -19
  257. package/dist/client/rendering.mjs +4864 -1914
  258. package/dist/client/{scrollToBlock--BFV6kl-.mjs → scrollToBlock-B1IS1_ua.mjs} +1 -1
  259. package/dist/client/{shop-CP4YbDL9.mjs → shop-Vn6yNFED.mjs} +6 -6
  260. package/dist/client/{shop-commerce-APs4XBXE.mjs → shop-commerce-BVTqipYp.mjs} +7 -7
  261. package/dist/client/{shop-commerce-store-CAVLxLFr.mjs → shop-commerce-store-BVnJVy7v.mjs} +1 -1
  262. package/dist/client/{shopShared-BnSRrwXI.mjs → shopShared-COIeK77T.mjs} +4 -4
  263. package/dist/client/{useEventFilters-1a1by4c8.mjs → useEventFilters-DzIUcS9n.mjs} +58 -11
  264. package/dist/preview-next/before-render.mjs +357 -175
  265. package/dist/preview-next/client/runtime.mjs +4 -4
  266. package/dist/preview-next/keepAlive.mjs +357 -175
  267. package/dist/preview-next/middleware.mjs +357 -175
  268. package/dist/{previewAuthStore-BkEgnYPP.mjs → previewAuthStore-Gjb6r6vz.mjs} +357 -175
  269. package/dist/{sdk-runtime-DwGfsT0S.mjs → sdk-runtime-CnCLvZRv.mjs} +2 -2
  270. package/dist/{separator-BeqDLneQ.mjs → separator-DKDRJ1oH.mjs} +1 -1
  271. package/dist/server/components.mjs +3389 -1251
  272. package/dist/server/config-validation.mjs +2737 -1784
  273. package/dist/server/config.mjs +2742 -1788
  274. package/dist/server/data.mjs +1586 -615
  275. package/dist/server/index.mjs +496 -352
  276. package/dist/server/navigation.mjs +16 -47
  277. package/dist/server/next.mjs +3978 -2007
  278. package/dist/server/page-converter.mjs +1109 -553
  279. package/dist/server/prebuild.mjs +2 -3
  280. package/dist/server/rendering/server.mjs +4101 -1951
  281. package/dist/server/rendering.mjs +3416 -1259
  282. package/dist/server/routing.mjs +1869 -786
  283. package/dist/server/server.mjs +3260 -2482
  284. package/dist/server/theme-bridge.mjs +725 -124
  285. package/dist/server/theme.mjs +8 -2
  286. package/dist/styles/index.css +526 -68
  287. package/package.json +1 -1
  288. package/dist/_dts/api/src/navigation/identity.d.ts +0 -59
  289. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +0 -291
  290. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  291. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
  292. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +0 -38
  293. package/dist/client/newsletterForm-IbrHjMxy.mjs +0 -322
@@ -1634,6 +1634,55 @@ function interpolateHex(startHex, endHex, position) {
1634
1634
  const channel = (from, to) => Math.round(from + (to - from) * position).toString(16).padStart(2, "0");
1635
1635
  return `#${channel(start.r, end.r)}${channel(start.g, end.g)}${channel(start.b, end.b)}`;
1636
1636
  }
1637
+ //#endregion
1638
+ //#region ../theme-core/src/utils/colorStyles.ts
1639
+ const COLOR_VAR_PREFIX = "--tb-";
1640
+ function parseToken(source) {
1641
+ const parts = parseColorTokenParts(source);
1642
+ if (parts.kind === "raw") return {
1643
+ token: source,
1644
+ raw: parts.value
1645
+ };
1646
+ if (parts.kind === "invalid") return { token: source };
1647
+ return {
1648
+ token: parts.token,
1649
+ opacityPercent: parts.opacityPercent === null ? void 0 : parts.opacityPercent
1650
+ };
1651
+ }
1652
+ /**
1653
+ * Converts a theme color token to a CSS rgb value.
1654
+ * This is the primary function for applying theme colors to CSS properties.
1655
+ *
1656
+ * @param token - Theme color token (semantic, with opacity, or raw)
1657
+ * @returns CSS color value (rgb with optional alpha, or raw CSS value)
1658
+ *
1659
+ * @example
1660
+ * rgbColorValue('primary') // => 'rgb(var(--tb-primary))'
1661
+ * rgbColorValue('surface/95') // => 'rgb(var(--tb-surface) / 0.95)'
1662
+ * rgbColorValue('raw:transparent') // => 'transparent'
1663
+ */
1664
+ function rgbColorValue(token) {
1665
+ const { token: baseToken, opacityPercent, raw } = parseToken(token);
1666
+ if (raw) return raw;
1667
+ const cssVar = `${COLOR_VAR_PREFIX}${baseToken}`;
1668
+ if (opacityPercent === void 0) return `rgb(var(${cssVar}))`;
1669
+ return `rgb(var(${cssVar}) / ${opacityPercent / 100})`;
1670
+ }
1671
+ /**
1672
+ * Converts a theme color token to a CSS variable reference.
1673
+ * Note: This returns the base variable without rgb() wrapper, ignoring opacity.
1674
+ *
1675
+ * @param token - Theme color token
1676
+ * @returns CSS variable reference
1677
+ *
1678
+ * @example
1679
+ * cssVarValue('primary') // => 'var(--tb-primary)'
1680
+ * cssVarValue('surface/95') // => 'var(--tb-surface)' (opacity ignored)
1681
+ */
1682
+ function cssVarValue(token) {
1683
+ const { token: baseToken } = parseToken(token);
1684
+ return `var(${COLOR_VAR_PREFIX}${baseToken})`;
1685
+ }
1637
1686
  shadeBackgroundEffect({
1638
1687
  id: "darken-background",
1639
1688
  name: "Darken on Hover",
@@ -1688,55 +1737,6 @@ function shadeBackgroundEffect(config) {
1688
1737
  };
1689
1738
  }
1690
1739
  //#endregion
1691
- //#region ../theme-core/src/utils/colorStyles.ts
1692
- const COLOR_VAR_PREFIX = "--tb-";
1693
- function parseToken(source) {
1694
- const parts = parseColorTokenParts(source);
1695
- if (parts.kind === "raw") return {
1696
- token: source,
1697
- raw: parts.value
1698
- };
1699
- if (parts.kind === "invalid") return { token: source };
1700
- return {
1701
- token: parts.token,
1702
- opacityPercent: parts.opacityPercent === null ? void 0 : parts.opacityPercent
1703
- };
1704
- }
1705
- /**
1706
- * Converts a theme color token to a CSS rgb value.
1707
- * This is the primary function for applying theme colors to CSS properties.
1708
- *
1709
- * @param token - Theme color token (semantic, with opacity, or raw)
1710
- * @returns CSS color value (rgb with optional alpha, or raw CSS value)
1711
- *
1712
- * @example
1713
- * rgbColorValue('primary') // => 'rgb(var(--tb-primary))'
1714
- * rgbColorValue('surface/95') // => 'rgb(var(--tb-surface) / 0.95)'
1715
- * rgbColorValue('raw:transparent') // => 'transparent'
1716
- */
1717
- function rgbColorValue(token) {
1718
- const { token: baseToken, opacityPercent, raw } = parseToken(token);
1719
- if (raw) return raw;
1720
- const cssVar = `${COLOR_VAR_PREFIX}${baseToken}`;
1721
- if (opacityPercent === void 0) return `rgb(var(${cssVar}))`;
1722
- return `rgb(var(${cssVar}) / ${opacityPercent / 100})`;
1723
- }
1724
- /**
1725
- * Converts a theme color token to a CSS variable reference.
1726
- * Note: This returns the base variable without rgb() wrapper, ignoring opacity.
1727
- *
1728
- * @param token - Theme color token
1729
- * @returns CSS variable reference
1730
- *
1731
- * @example
1732
- * cssVarValue('primary') // => 'var(--tb-primary)'
1733
- * cssVarValue('surface/95') // => 'var(--tb-surface)' (opacity ignored)
1734
- */
1735
- function cssVarValue(token) {
1736
- const { token: baseToken } = parseToken(token);
1737
- return `var(${COLOR_VAR_PREFIX}${baseToken})`;
1738
- }
1739
- //#endregion
1740
1740
  //#region ../theme-core/src/utils/tokenOrColor.ts
1741
1741
  /**
1742
1742
  * Runtime color-reference fields intentionally accept any string, including
@@ -5076,8 +5076,14 @@ const headerInteractionPillPaletteValues = [
5076
5076
  "accent"
5077
5077
  ];
5078
5078
  /**
5079
- * "No pill": the nav link keeps whatever hover treatment its recipe compiled,
5080
- * and the palette step writes nothing at all (#1318 Phase 4c decision 2).
5079
+ * "No pill": a colour change on hover rather than a filled background.
5080
+ *
5081
+ * The palette step writes nothing (#1318 Phase 4c decision 2), but on a
5082
+ * foreground-adaptive style that is not the end of the story: the hover colour
5083
+ * is derived from the resolved opening foreground at render time, paired with
5084
+ * the resting colour, so `quiet` resolves to a definite colour rather than to
5085
+ * whatever brand token the recipe happened to name. See
5086
+ * `applyOpeningForeground`.
5081
5087
  *
5082
5088
  * It exists because "a colour change on hover, no filled background" was not
5083
5089
  * expressible in the vocabulary, and it is what
@@ -10921,6 +10927,132 @@ ${root} .step-connector {
10921
10927
  return cssBlocks.join("\n\n");
10922
10928
  }
10923
10929
  //#endregion
10930
+ //#region ../theme-core/src/typography/generateTypographyCss.ts
10931
+ function globalHeadingColorFallback(level) {
10932
+ return `var(--hc-h${level}, var(--hc-heading, ${DEFAULT_SURFACE_TEXT_COLOR}))`;
10933
+ }
10934
+ /**
10935
+ * Generate typography CSS for heading elements.
10936
+ *
10937
+ * Creates scoped CSS that:
10938
+ * - Applies font-size, font-weight, letter-spacing, line-height to h1-h6
10939
+ * - Uses clamp() for fluid responsive sizing
10940
+ * - Provides variant classes (.heading-display, .heading-compact)
10941
+ *
10942
+ * Selectors use :where() for zero specificity, allowing site styles to override easily.
10943
+ */
10944
+ function generateTypographyCss({ themeId }) {
10945
+ const root = `:where([data-theme-scope="${themeId}"])`;
10946
+ const cssBlocks = [];
10947
+ cssBlocks.push(`/* Base heading styles */
10948
+ ${root} :where(h1, h2, h3, h4, h5, h6) {
10949
+ font-family: var(--font-heading);
10950
+ font-style: var(--fi-heading, normal);
10951
+ text-transform: var(--tt-heading, none);
10952
+ font-variant: var(--fv-heading, normal);
10953
+ margin: 0;
10954
+ }`);
10955
+ cssBlocks.push(`/* Heading level styles with fluid typography */
10956
+ ${root} :where(h1) {
10957
+ font-size: var(--fs-h1-fluid, var(--fs-h1));
10958
+ font-weight: var(--fw-h1, var(--font-weight-heading));
10959
+ font-style: var(--fi-h1, var(--fi-heading, normal));
10960
+ letter-spacing: var(--ls-h1, var(--ls-heading));
10961
+ line-height: var(--lh-h1, var(--lh-heading));
10962
+ color: ${surfaceForegroundValue("heading", globalHeadingColorFallback(1))};
10963
+ }
10964
+
10965
+ ${root} :where(h2) {
10966
+ font-size: var(--fs-h2-fluid, var(--fs-h2));
10967
+ font-weight: var(--fw-h2, var(--font-weight-heading));
10968
+ font-style: var(--fi-h2, var(--fi-heading, normal));
10969
+ letter-spacing: var(--ls-h2, var(--ls-heading));
10970
+ line-height: var(--lh-h2, var(--lh-heading));
10971
+ color: ${surfaceForegroundValue("heading", globalHeadingColorFallback(2))};
10972
+ }
10973
+
10974
+ ${root} :where(h3) {
10975
+ font-size: var(--fs-h3-fluid, var(--fs-h3));
10976
+ font-weight: var(--fw-h3, var(--font-weight-heading));
10977
+ font-style: var(--fi-h3, var(--fi-heading, normal));
10978
+ letter-spacing: var(--ls-h3, var(--ls-heading));
10979
+ line-height: var(--lh-h3, var(--lh-heading));
10980
+ color: ${surfaceForegroundValue("heading", globalHeadingColorFallback(3))};
10981
+ }
10982
+
10983
+ ${root} :where(h4) {
10984
+ font-size: var(--fs-h4-fluid, var(--fs-h4, var(--fs-h3)));
10985
+ font-weight: var(--fw-h4, var(--font-weight-heading));
10986
+ font-style: var(--fi-h4, var(--fi-heading, normal));
10987
+ letter-spacing: var(--ls-h4, var(--ls-heading));
10988
+ line-height: var(--lh-h4, var(--lh-heading));
10989
+ color: ${surfaceForegroundValue("heading", globalHeadingColorFallback(4))};
10990
+ }
10991
+
10992
+ ${root} :where(h5) {
10993
+ font-size: var(--fs-h5-fluid, var(--fs-h5, var(--fs-body)));
10994
+ font-weight: var(--fw-h5, var(--font-weight-heading));
10995
+ font-style: var(--fi-h5, var(--fi-heading, normal));
10996
+ letter-spacing: var(--ls-h5, var(--ls-heading));
10997
+ line-height: var(--lh-h5, var(--lh-heading));
10998
+ color: ${surfaceForegroundValue("heading", globalHeadingColorFallback(5))};
10999
+ }
11000
+
11001
+ ${root} :where(h6) {
11002
+ font-size: var(--fs-h6-fluid, var(--fs-h6, var(--fs-body)));
11003
+ font-weight: var(--fw-h6, var(--font-weight-heading));
11004
+ font-style: var(--fi-h6, var(--fi-heading, normal));
11005
+ letter-spacing: var(--ls-h6, var(--ls-heading));
11006
+ line-height: var(--lh-h6, var(--lh-heading));
11007
+ color: ${surfaceForegroundValue("heading", globalHeadingColorFallback(6))};
11008
+ }`);
11009
+ cssBlocks.push(`/* Display variant for hero/splash headings */
11010
+ ${root} :where(.heading-display) {
11011
+ font-size: var(--fs-display-fluid, var(--fs-display));
11012
+ }
11013
+
11014
+ ${root} :where(h1.heading-display) {
11015
+ font-size: var(--fs-h1-display-fluid, var(--fs-h1-display, calc(var(--fs-h1) * 1.5)));
11016
+ }
11017
+
11018
+ ${root} :where(h2.heading-display) {
11019
+ font-size: var(--fs-h2-display-fluid, var(--fs-h2-display, calc(var(--fs-h2) * 1.35)));
11020
+ }`);
11021
+ cssBlocks.push(`/* Compact variant for cards/sidebars */
11022
+ ${root} :where(.heading-compact) {
11023
+ font-size: var(--fs-compact);
11024
+ }
11025
+
11026
+ ${root} :where(h1.heading-compact) {
11027
+ font-size: calc(var(--fs-h1) * 0.75);
11028
+ }
11029
+
11030
+ ${root} :where(h2.heading-compact) {
11031
+ font-size: calc(var(--fs-h2) * 0.8);
11032
+ }
11033
+
11034
+ ${root} :where(h3.heading-compact) {
11035
+ font-size: calc(var(--fs-h3) * 0.85);
11036
+ }`);
11037
+ cssBlocks.push(`/* Body text base styles */
11038
+ ${root} {
11039
+ font-family: var(--font-body);
11040
+ font-weight: var(--font-weight-body);
11041
+ font-size: var(--fs-body);
11042
+ letter-spacing: var(--ls-body);
11043
+ line-height: var(--lh-body);
11044
+ }
11045
+
11046
+ ${root} :where(p, li, td, th, label, span) {
11047
+ font-family: var(--font-body);
11048
+ font-weight: var(--font-weight-body);
11049
+ letter-spacing: var(--ls-body);
11050
+ font-size: inherit;
11051
+ line-height: inherit;
11052
+ }`);
11053
+ return `@layer rb-theme {\n${cssBlocks.join("\n\n")}\n}`;
11054
+ }
11055
+ //#endregion
10924
11056
  //#region ../theme-core/src/blocks/vars/event-registration.ts
10925
11057
  /**
10926
11058
  * Generate CSS variables for the event-registration block.
@@ -16654,7 +16786,8 @@ const containerResponsiveThemeCss = `/*
16654
16786
  [data-block='event-listing'],
16655
16787
  [data-block='event-spotlight'],
16656
16788
  [data-block='event-calendar'],
16657
- [data-block='event-combined']
16789
+ [data-block='event-combined'],
16790
+ .event-card--catalogue
16658
16791
  )
16659
16792
  .event-card-media {
16660
16793
  height: var(--rb-event-card-media-height, 16rem);
@@ -16667,7 +16800,8 @@ const containerResponsiveThemeCss = `/*
16667
16800
  [data-block='event-listing'],
16668
16801
  [data-block='event-spotlight'],
16669
16802
  [data-block='event-calendar'],
16670
- [data-block='event-combined']
16803
+ [data-block='event-combined'],
16804
+ .event-card--catalogue
16671
16805
  )
16672
16806
  .event-card-image {
16673
16807
  width: 100%;
@@ -16680,12 +16814,12 @@ const containerResponsiveThemeCss = `/*
16680
16814
 
16681
16815
  :where(.theme-scope)
16682
16816
  :where(
16683
- [data-block='event-listing'],
16684
- [data-block='event-spotlight'],
16685
- [data-block='event-calendar'],
16686
- [data-block='event-combined']
16817
+ [data-block='event-listing'] .event-card:hover,
16818
+ [data-block='event-spotlight'] .event-card:hover,
16819
+ [data-block='event-calendar'] .event-card:hover,
16820
+ [data-block='event-combined'] .event-card:hover,
16821
+ .event-card--catalogue:hover
16687
16822
  )
16688
- .event-card:hover
16689
16823
  .event-card-image {
16690
16824
  transform: scale(var(--rb-event-card-image-hover-scale, 1.08));
16691
16825
  }
@@ -18629,16 +18763,6 @@ const containerResponsiveThemeCss = `/*
18629
18763
  gap: 0.5rem;
18630
18764
  }
18631
18765
 
18632
- /* Empty day message */
18633
- :where(.theme-scope)
18634
- :where([data-block='event-calendar'])
18635
- .event-agenda-day-empty {
18636
- font-size: 0.875rem;
18637
- opacity: var(--ec-empty-opacity);
18638
- margin: 0;
18639
- padding: 0.25rem 0;
18640
- }
18641
-
18642
18766
  /* -----------------------------------------------------------------------------
18643
18767
  * Agenda Event Card
18644
18768
  * Rich event card for agenda view
@@ -18722,7 +18846,6 @@ const containerResponsiveThemeCss = `/*
18722
18846
  gap: 0.75rem;
18723
18847
  flex-wrap: wrap;
18724
18848
  font-size: 0.75rem;
18725
- opacity: 0.7;
18726
18849
  }
18727
18850
 
18728
18851
  :where(.theme-scope)
@@ -18735,9 +18858,8 @@ const containerResponsiveThemeCss = `/*
18735
18858
 
18736
18859
  :where(.theme-scope)
18737
18860
  :where([data-block='event-calendar'])
18738
- .event-agenda-card-icon {
18861
+ .event-agenda-card-icon {
18739
18862
  flex-shrink: 0;
18740
- opacity: 0.7;
18741
18863
  }
18742
18864
 
18743
18865
  :where(.theme-scope)
@@ -18754,11 +18876,199 @@ const containerResponsiveThemeCss = `/*
18754
18876
 
18755
18877
  :where(.theme-scope)
18756
18878
  :where([data-block='event-calendar'])
18757
- .event-agenda-card-capacity--full {
18758
- color: rgb(var(--tb-error, 239 68 68));
18879
+ .event-agenda-card-capacity--full {
18880
+ font-weight: 600;
18881
+ }
18882
+
18883
+ /*
18884
+ * Agenda rows
18885
+ *
18886
+ * The modal keeps the original button card above. Published agenda rows use
18887
+ * an article so their title and booking action can be separate, accessible
18888
+ * links without nesting anchors.
18889
+ */
18890
+ :where(.theme-scope)
18891
+ :where([data-block='event-calendar'])
18892
+ .event-agenda-card--agenda {
18893
+ display: grid;
18894
+ grid-template-columns: 0.25rem minmax(4.5rem, auto) minmax(0, 1fr) auto;
18895
+ align-items: center;
18896
+ column-gap: 1rem;
18897
+ padding: 1rem;
18898
+ }
18899
+
18900
+ :where(.theme-scope)
18901
+ :where([data-block='event-calendar'])
18902
+ .event-agenda-card--agenda
18903
+ .event-agenda-card-indicator {
18904
+ grid-column: 1;
18905
+ grid-row: 1;
18906
+ }
18907
+
18908
+ :where(.theme-scope)
18909
+ :where([data-block='event-calendar'])
18910
+ .event-agenda-card--agenda
18911
+ > .event-agenda-card-time {
18912
+ grid-column: 2;
18913
+ grid-row: 1;
18914
+ font-size: 0.875rem;
18915
+ font-weight: 700;
18916
+ opacity: 1;
18917
+ }
18918
+
18919
+ :where(.theme-scope)
18920
+ :where([data-block='event-calendar'])
18921
+ .event-agenda-card--agenda
18922
+ .event-agenda-card-content {
18923
+ grid-column: 3;
18924
+ grid-row: 1;
18925
+ display: block;
18926
+ }
18927
+
18928
+ :where(.theme-scope)
18929
+ :where([data-block='event-calendar'])
18930
+ .event-agenda-card--agenda
18931
+ .event-agenda-card-title {
18932
+ margin: 0;
18933
+ font-size: 0.9375rem;
18934
+ font-weight: 600;
18935
+ line-height: 1.3;
18936
+ }
18937
+
18938
+ :where(.theme-scope)
18939
+ :where([data-block='event-calendar'])
18940
+ .event-agenda-card--agenda
18941
+ .event-agenda-card-title
18942
+ a {
18943
+ color: inherit;
18944
+ text-decoration: none;
18945
+ }
18946
+
18947
+ :where(.theme-scope)
18948
+ :where([data-block='event-calendar'])
18949
+ .event-agenda-card--agenda
18950
+ .event-agenda-card-title
18951
+ a:hover {
18952
+ text-decoration: underline;
18953
+ text-underline-offset: 0.15em;
18954
+ }
18955
+
18956
+ :where(.theme-scope)
18957
+ :where([data-block='event-calendar'])
18958
+ .event-agenda-card--agenda
18959
+ .event-agenda-card-details {
18960
+ align-items: baseline;
18961
+ gap: 0.25rem 0.6rem;
18962
+ margin-top: 0.2rem;
18963
+ font-size: 0.75rem;
18964
+ line-height: 1.35;
18965
+ }
18966
+
18967
+ :where(.theme-scope)
18968
+ :where([data-block='event-calendar'])
18969
+ .event-agenda-card--agenda
18970
+ .event-agenda-card-location {
18971
+ display: inline-flex;
18972
+ align-items: center;
18973
+ gap: 0.25rem;
18974
+ }
18975
+
18976
+ :where(.theme-scope)
18977
+ :where([data-block='event-calendar'])
18978
+ .event-agenda-card--agenda
18979
+ .event-agenda-card-action {
18980
+ grid-column: 4;
18981
+ grid-row: 1;
18982
+ display: flex;
18983
+ flex-direction: column;
18984
+ align-items: flex-end;
18985
+ gap: 0.5rem;
18986
+ min-width: max-content;
18987
+ }
18988
+
18989
+ :where(.theme-scope)
18990
+ :where([data-block='event-calendar'])
18991
+ .event-agenda-card--agenda
18992
+ .event-agenda-card-price {
18993
+ font-size: 0.875rem;
18994
+ font-weight: 700;
18759
18995
  opacity: 1;
18760
18996
  }
18761
18997
 
18998
+ :where(.theme-scope)
18999
+ :where([data-block='event-calendar'])
19000
+ .event-agenda-card--agenda
19001
+ .event-agenda-card-status {
19002
+ font-size: 0.75rem;
19003
+ font-weight: 600;
19004
+ white-space: nowrap;
19005
+ }
19006
+
19007
+ :where(.theme-scope)
19008
+ :where([data-block='event-calendar'])
19009
+ .event-agenda-card--agenda
19010
+ .event-agenda-card-icon {
19011
+ width: 0.875rem;
19012
+ height: 0.875rem;
19013
+ }
19014
+
19015
+ :where(.theme-scope)
19016
+ :where([data-block='event-calendar'])
19017
+ .event-agenda-empty {
19018
+ margin: 0;
19019
+ padding: 2rem 1rem;
19020
+ text-align: center;
19021
+ font-size: 0.875rem;
19022
+ opacity: var(--ec-empty-opacity);
19023
+ }
19024
+
19025
+ @container rb-site (max-width: 639px) {
19026
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
19027
+ :where(.theme-scope)
19028
+ :where([data-block='event-calendar'])
19029
+ .event-agenda-card--agenda {
19030
+ grid-template-columns: minmax(4.25rem, auto) minmax(0, 1fr);
19031
+ grid-template-areas:
19032
+ 'time content'
19033
+ 'action action';
19034
+ align-items: start;
19035
+ column-gap: 0.75rem;
19036
+ row-gap: 0.65rem;
19037
+ }
19038
+
19039
+ :where(.theme-scope)
19040
+ :where([data-block='event-calendar'])
19041
+ .event-agenda-card--agenda
19042
+ .event-agenda-card-indicator {
19043
+ display: none;
19044
+ }
19045
+
19046
+ :where(.theme-scope)
19047
+ :where([data-block='event-calendar'])
19048
+ .event-agenda-card--agenda
19049
+ > .event-agenda-card-time {
19050
+ grid-area: time;
19051
+ }
19052
+
19053
+ :where(.theme-scope)
19054
+ :where([data-block='event-calendar'])
19055
+ .event-agenda-card--agenda
19056
+ .event-agenda-card-content {
19057
+ grid-area: content;
19058
+ }
19059
+
19060
+ :where(.theme-scope)
19061
+ :where([data-block='event-calendar'])
19062
+ .event-agenda-card--agenda
19063
+ .event-agenda-card-action {
19064
+ grid-area: action;
19065
+ flex-direction: row;
19066
+ align-items: center;
19067
+ justify-content: flex-end;
19068
+ }
19069
+ }
19070
+ }
19071
+
18762
19072
  /* -----------------------------------------------------------------------------
18763
19073
  * Week Timetable View
18764
19074
  * Time-grid layout for recurring class schedules
@@ -20484,8 +20794,9 @@ const containerResponsiveThemeCss = `/*
20484
20794
  border: 1px solid rgb(var(--tb-primary));
20485
20795
  border-radius: var(--rb-button-radius, 0.375rem);
20486
20796
  cursor: pointer;
20487
- transition: background-color var(--rb-block-transition, 150ms) ease,
20488
- color var(--rb-block-transition, 150ms) ease;
20797
+ transition:
20798
+ background-color var(--rb-block-transition, 150ms) ease,
20799
+ color var(--rb-block-transition, 150ms) ease;
20489
20800
  }
20490
20801
 
20491
20802
  :where(.theme-scope) .event-reset-filters-btn:hover {
@@ -20513,6 +20824,63 @@ const containerResponsiveThemeCss = `/*
20513
20824
  text-underline-offset: 0.12em;
20514
20825
  }
20515
20826
 
20827
+ /* Catalogue cards can keep their media footprint when an event has no
20828
+ resolved image. The date remains useful content and follows the site's
20829
+ palette and typography tokens. */
20830
+ :where(.theme-scope) .event-card-date-fallback {
20831
+ position: relative;
20832
+ display: flex;
20833
+ min-height: var(--rb-event-card-media-height, 16rem);
20834
+ flex-direction: column;
20835
+ justify-content: flex-end;
20836
+ gap: 0.125rem;
20837
+ overflow: hidden;
20838
+ padding: 1.125rem;
20839
+ border-bottom: 1px solid rgb(var(--tb-border, 229 231 235));
20840
+ background: rgb(var(--tb-surfaceAlt, var(--tb-surface, 255 255 255)));
20841
+ color: rgb(var(--tb-text, 17 24 39));
20842
+ }
20843
+
20844
+ :where(.theme-scope) .event-card-date-fallback::before {
20845
+ position: absolute;
20846
+ inset: 0;
20847
+ pointer-events: none;
20848
+ background: radial-gradient(
20849
+ 120% 140% at 0% 0%,
20850
+ color-mix(in srgb, rgb(var(--tb-primary, 0 0 0)) 11%, transparent),
20851
+ transparent 62%
20852
+ );
20853
+ content: '';
20854
+ }
20855
+
20856
+ :where(.theme-scope) .event-card-date-fallback-label,
20857
+ :where(.theme-scope) .event-card-date-fallback-value {
20858
+ position: relative;
20859
+ }
20860
+
20861
+ :where(.theme-scope) .event-card-date-fallback-label {
20862
+ color: rgb(var(--tb-mutedText, var(--tb-muted, 107 114 128)));
20863
+ font-size: 0.72rem;
20864
+ font-weight: 700;
20865
+ letter-spacing: 0.14em;
20866
+ line-height: 1.2;
20867
+ text-transform: uppercase;
20868
+ }
20869
+
20870
+ :where(.theme-scope) .event-card-date-fallback-value {
20871
+ color: rgb(var(--tb-primary, 0 0 0));
20872
+ font-family: var(--font-heading, var(--font-body, inherit));
20873
+ font-size: clamp(1.7rem, 1.35rem + 1.1vw, 2.35rem);
20874
+ font-weight: 500;
20875
+ letter-spacing: -0.025em;
20876
+ line-height: 1.04;
20877
+ }
20878
+
20879
+ :where(.theme-scope) .event-card-price {
20880
+ color: rgb(var(--tb-text, 17 24 39));
20881
+ font-weight: 600;
20882
+ }
20883
+
20516
20884
  /* =============================================================================
20517
20885
  * Block: Carousel Navigation (Phase 3 client component migration)
20518
20886
  * =============================================================================
@@ -21146,7 +21514,9 @@ const containerResponsiveThemeCss = `/*
21146
21514
  text-align: left;
21147
21515
  }
21148
21516
 
21149
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-login__subtitle {
21517
+ :where(.theme-scope)
21518
+ :where([data-block="customer-portal"])
21519
+ .cp-login__subtitle {
21150
21520
  color: var(--cp-muted);
21151
21521
  font-size: 0.9375rem;
21152
21522
  text-align: left;
@@ -21173,7 +21543,9 @@ const containerResponsiveThemeCss = `/*
21173
21543
  text-align: left;
21174
21544
  }
21175
21545
 
21176
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-login__reset-link {
21546
+ :where(.theme-scope)
21547
+ :where([data-block="customer-portal"])
21548
+ .cp-login__reset-link {
21177
21549
  appearance: none;
21178
21550
  background: none;
21179
21551
  border: 0;
@@ -21187,11 +21559,15 @@ const containerResponsiveThemeCss = `/*
21187
21559
  text-underline-offset: 0.15em;
21188
21560
  }
21189
21561
 
21190
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-login__reset-link:hover {
21562
+ :where(.theme-scope)
21563
+ :where([data-block="customer-portal"])
21564
+ .cp-login__reset-link:hover {
21191
21565
  color: var(--cp-text);
21192
21566
  }
21193
21567
 
21194
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-login__reset-link:focus-visible {
21568
+ :where(.theme-scope)
21569
+ :where([data-block="customer-portal"])
21570
+ .cp-login__reset-link:focus-visible {
21195
21571
  outline: 2px solid currentColor;
21196
21572
  outline-offset: 3px;
21197
21573
  }
@@ -21236,7 +21612,9 @@ const containerResponsiveThemeCss = `/*
21236
21612
  border-bottom: none;
21237
21613
  }
21238
21614
 
21239
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-header__welcome {
21615
+ :where(.theme-scope)
21616
+ :where([data-block="customer-portal"])
21617
+ .cp-header__welcome {
21240
21618
  font-size: 1.125rem;
21241
21619
  font-weight: 500;
21242
21620
  }
@@ -21252,8 +21630,14 @@ const containerResponsiveThemeCss = `/*
21252
21630
  }
21253
21631
 
21254
21632
  @keyframes cp-fade-in {
21255
- from { opacity: 0; transform: translateY(4px); }
21256
- to { opacity: 1; transform: translateY(0); }
21633
+ from {
21634
+ opacity: 0;
21635
+ transform: translateY(4px);
21636
+ }
21637
+ to {
21638
+ opacity: 1;
21639
+ transform: translateY(0);
21640
+ }
21257
21641
  }
21258
21642
 
21259
21643
  /* Empty state */
@@ -21342,6 +21726,77 @@ const containerResponsiveThemeCss = `/*
21342
21726
  margin-top: 1rem;
21343
21727
  }
21344
21728
 
21729
+ /* Event waitlists */
21730
+ :where(.theme-scope) :where([data-block="customer-portal"]) .cp-waitlist-list {
21731
+ display: grid;
21732
+ gap: 1rem;
21733
+ }
21734
+
21735
+ :where(.theme-scope)
21736
+ :where([data-block="customer-portal"])
21737
+ .cp-waitlists
21738
+ > .cp-alert {
21739
+ margin-bottom: 1rem;
21740
+ }
21741
+
21742
+ :where(.theme-scope) :where([data-block="customer-portal"]) .cp-waitlist-card {
21743
+ transition:
21744
+ border-color 180ms ease,
21745
+ box-shadow 180ms ease;
21746
+ }
21747
+
21748
+ :where(.theme-scope)
21749
+ :where([data-block="customer-portal"])
21750
+ .cp-waitlist-card--focused {
21751
+ border-color: var(--cp-primary);
21752
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--cp-primary) 22%, transparent);
21753
+ }
21754
+
21755
+ :where(.theme-scope)
21756
+ :where([data-block="customer-portal"])
21757
+ .cp-waitlist-card__summary,
21758
+ :where(.theme-scope)
21759
+ :where([data-block="customer-portal"])
21760
+ .cp-waitlist-card__position {
21761
+ font-weight: 600;
21762
+ }
21763
+
21764
+ :where(.theme-scope)
21765
+ :where([data-block="customer-portal"])
21766
+ .cp-waitlist-card
21767
+ .cp-card-body
21768
+ p {
21769
+ margin: 0.4rem 0;
21770
+ }
21771
+
21772
+ @container rb-site (max-width: 640px) {
21773
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
21774
+ :where(.theme-scope)
21775
+ :where([data-block="customer-portal"])
21776
+ .cp-waitlist-card
21777
+ .cp-card-header {
21778
+ flex-direction: column-reverse;
21779
+ }
21780
+
21781
+ :where(.theme-scope)
21782
+ :where([data-block="customer-portal"])
21783
+ .cp-waitlist-card
21784
+ .cp-card-actions {
21785
+ align-items: stretch;
21786
+ flex-direction: column;
21787
+ }
21788
+
21789
+ :where(.theme-scope)
21790
+ :where([data-block="customer-portal"])
21791
+ .cp-waitlist-card
21792
+ .cp-card-actions
21793
+ > * {
21794
+ justify-content: center;
21795
+ text-align: center;
21796
+ }
21797
+ }
21798
+ }
21799
+
21345
21800
  /* Badge */
21346
21801
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-badge {
21347
21802
  display: inline-flex;
@@ -21478,11 +21933,18 @@ const containerResponsiveThemeCss = `/*
21478
21933
  background: rgba(var(--tb-border), 0.2);
21479
21934
  }
21480
21935
 
21481
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table tbody tr:last-child td {
21936
+ :where(.theme-scope)
21937
+ :where([data-block="customer-portal"])
21938
+ .cp-table
21939
+ tbody
21940
+ tr:last-child
21941
+ td {
21482
21942
  border-bottom: none;
21483
21943
  }
21484
21944
 
21485
- :where(.theme-scope) :where([data-block="customer-portal"]) :is(.cp-row--past, .cp-row--muted) {
21945
+ :where(.theme-scope)
21946
+ :where([data-block="customer-portal"])
21947
+ :is(.cp-row--past, .cp-row--muted) {
21486
21948
  opacity: 0.65;
21487
21949
  }
21488
21950
 
@@ -21495,7 +21957,9 @@ const containerResponsiveThemeCss = `/*
21495
21957
  line-height: 1.2;
21496
21958
  }
21497
21959
 
21498
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-title__badges {
21960
+ :where(.theme-scope)
21961
+ :where([data-block="customer-portal"])
21962
+ .cp-row-title__badges {
21499
21963
  margin-left: auto;
21500
21964
  display: flex;
21501
21965
  flex-wrap: wrap;
@@ -21503,7 +21967,9 @@ const containerResponsiveThemeCss = `/*
21503
21967
  gap: 0.375rem;
21504
21968
  }
21505
21969
 
21506
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-title__text {
21970
+ :where(.theme-scope)
21971
+ :where([data-block="customer-portal"])
21972
+ .cp-row-title__text {
21507
21973
  min-width: 0;
21508
21974
  }
21509
21975
 
@@ -21523,12 +21989,16 @@ const containerResponsiveThemeCss = `/*
21523
21989
  line-height: 1.35;
21524
21990
  }
21525
21991
 
21526
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-note--success {
21992
+ :where(.theme-scope)
21993
+ :where([data-block="customer-portal"])
21994
+ .cp-row-note--success {
21527
21995
  border-left-color: rgb(var(--tb-success));
21528
21996
  color: rgb(var(--tb-success));
21529
21997
  }
21530
21998
 
21531
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-note--error {
21999
+ :where(.theme-scope)
22000
+ :where([data-block="customer-portal"])
22001
+ .cp-row-note--error {
21532
22002
  border-left-color: rgb(var(--tb-destructive));
21533
22003
  color: rgb(var(--tb-destructive));
21534
22004
  }
@@ -21547,16 +22017,23 @@ const containerResponsiveThemeCss = `/*
21547
22017
  white-space: nowrap;
21548
22018
  }
21549
22019
 
21550
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-col-actions .btn-sm {
22020
+ :where(.theme-scope)
22021
+ :where([data-block="customer-portal"])
22022
+ .cp-col-actions
22023
+ .btn-sm {
21551
22024
  white-space: nowrap;
21552
22025
  }
21553
22026
 
21554
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-title__link {
22027
+ :where(.theme-scope)
22028
+ :where([data-block="customer-portal"])
22029
+ .cp-row-title__link {
21555
22030
  color: inherit;
21556
22031
  text-decoration: none;
21557
22032
  }
21558
22033
 
21559
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-title__link:hover {
22034
+ :where(.theme-scope)
22035
+ :where([data-block="customer-portal"])
22036
+ .cp-row-title__link:hover {
21560
22037
  text-decoration: underline;
21561
22038
  text-decoration-thickness: 2px;
21562
22039
  text-underline-offset: 2px;
@@ -21578,7 +22055,9 @@ const containerResponsiveThemeCss = `/*
21578
22055
  }
21579
22056
 
21580
22057
  /* Profile actions */
21581
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-profile__actions {
22058
+ :where(.theme-scope)
22059
+ :where([data-block="customer-portal"])
22060
+ .cp-profile__actions {
21582
22061
  display: flex;
21583
22062
  gap: 0.75rem;
21584
22063
  margin-top: 1rem;
@@ -21645,28 +22124,39 @@ const containerResponsiveThemeCss = `/*
21645
22124
  gap: 0.375rem;
21646
22125
  }
21647
22126
 
21648
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-guest-edit-row__index {
22127
+ :where(.theme-scope)
22128
+ :where([data-block="customer-portal"])
22129
+ .cp-guest-edit-row__index {
21649
22130
  font-size: 0.75rem;
21650
22131
  font-weight: 500;
21651
22132
  color: var(--cp-muted);
21652
22133
  }
21653
22134
 
21654
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-guest-edit-row__fields {
22135
+ :where(.theme-scope)
22136
+ :where([data-block="customer-portal"])
22137
+ .cp-guest-edit-row__fields {
21655
22138
  display: flex;
21656
22139
  gap: 0.5rem;
21657
22140
  }
21658
22141
 
21659
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-guest-edit-row__fields input {
22142
+ :where(.theme-scope)
22143
+ :where([data-block="customer-portal"])
22144
+ .cp-guest-edit-row__fields
22145
+ input {
21660
22146
  flex: 1;
21661
22147
  min-width: 0;
21662
22148
  }
21663
22149
 
21664
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-guest-edit-row__error {
22150
+ :where(.theme-scope)
22151
+ :where([data-block="customer-portal"])
22152
+ .cp-guest-edit-row__error {
21665
22153
  font-size: 0.75rem;
21666
22154
  color: var(--cp-error);
21667
22155
  }
21668
22156
 
21669
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-guests__actions {
22157
+ :where(.theme-scope)
22158
+ :where([data-block="customer-portal"])
22159
+ .cp-guests__actions {
21670
22160
  display: flex;
21671
22161
  gap: 0.5rem;
21672
22162
  margin-top: 0.5rem;
@@ -21680,13 +22170,18 @@ const containerResponsiveThemeCss = `/*
21680
22170
  }
21681
22171
 
21682
22172
  /* In the actions modal, tiles sit on a surface modal, so use "background" for contrast. */
21683
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-actions-list :where(.rb-tile) {
22173
+ :where(.theme-scope)
22174
+ :where([data-block="customer-portal"])
22175
+ .cp-actions-list
22176
+ :where(.rb-tile) {
21684
22177
  --rb-event-tile-bg: rgb(var(--tb-background));
21685
22178
  --rb-event-tile-border: rgb(var(--tb-border));
21686
22179
  }
21687
22180
 
21688
22181
  /* Actions trigger: icon-only kebab button */
21689
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-actions-trigger.btn-sm {
22182
+ :where(.theme-scope)
22183
+ :where([data-block="customer-portal"])
22184
+ .cp-actions-trigger.btn-sm {
21690
22185
  padding: 0.35rem !important;
21691
22186
  line-height: 1 !important;
21692
22187
  min-width: 32px;
@@ -21710,17 +22205,24 @@ const containerResponsiveThemeCss = `/*
21710
22205
  gap: 0.25rem;
21711
22206
  }
21712
22207
 
21713
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-action-tile__title {
22208
+ :where(.theme-scope)
22209
+ :where([data-block="customer-portal"])
22210
+ .cp-action-tile__title {
21714
22211
  font-weight: 600;
21715
22212
  font-size: 0.9375rem;
21716
22213
  }
21717
22214
 
21718
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-action-tile__desc {
22215
+ :where(.theme-scope)
22216
+ :where([data-block="customer-portal"])
22217
+ .cp-action-tile__desc {
21719
22218
  font-size: 0.875rem;
21720
22219
  line-height: 1.35;
21721
22220
  }
21722
22221
 
21723
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-action-tile--danger .cp-action-tile__title {
22222
+ :where(.theme-scope)
22223
+ :where([data-block="customer-portal"])
22224
+ .cp-action-tile--danger
22225
+ .cp-action-tile__title {
21724
22226
  color: rgb(var(--tb-destructive));
21725
22227
  }
21726
22228
 
@@ -21742,7 +22244,9 @@ const containerResponsiveThemeCss = `/*
21742
22244
  text-decoration: underline;
21743
22245
  }
21744
22246
 
21745
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-btn--link:hover {
22247
+ :where(.theme-scope)
22248
+ :where([data-block="customer-portal"])
22249
+ .cp-btn--link:hover {
21746
22250
  color: var(--cp-primary-hover);
21747
22251
  }
21748
22252
 
@@ -21781,34 +22285,48 @@ const containerResponsiveThemeCss = `/*
21781
22285
  margin-top: 0.75rem;
21782
22286
  }
21783
22287
 
21784
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-cancel-confirm__title {
22288
+ :where(.theme-scope)
22289
+ :where([data-block="customer-portal"])
22290
+ .cp-cancel-confirm__title {
21785
22291
  font-weight: 600;
21786
22292
  margin-bottom: 0.5rem;
21787
22293
  }
21788
22294
 
21789
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-cancel-confirm__message {
22295
+ :where(.theme-scope)
22296
+ :where([data-block="customer-portal"])
22297
+ .cp-cancel-confirm__message {
21790
22298
  margin-bottom: 0.25rem;
21791
22299
  }
21792
22300
 
21793
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-cancel-confirm__warning {
22301
+ :where(.theme-scope)
22302
+ :where([data-block="customer-portal"])
22303
+ .cp-cancel-confirm__warning {
21794
22304
  margin-bottom: 0.75rem;
21795
22305
  }
21796
22306
 
21797
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-cancel-confirm__actions {
22307
+ :where(.theme-scope)
22308
+ :where([data-block="customer-portal"])
22309
+ .cp-cancel-confirm__actions {
21798
22310
  display: flex;
21799
22311
  gap: 0.75rem;
21800
22312
  }
21801
22313
 
21802
22314
  /* Membership actions */
21803
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-membership-actions {
22315
+ :where(.theme-scope)
22316
+ :where([data-block="customer-portal"])
22317
+ .cp-membership-actions {
21804
22318
  margin-top: 0.75rem;
21805
22319
  }
21806
22320
 
21807
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-section-actions {
22321
+ :where(.theme-scope)
22322
+ :where([data-block="customer-portal"])
22323
+ .cp-section-actions {
21808
22324
  margin-top: 1rem;
21809
22325
  }
21810
22326
 
21811
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-card-subtitle--spaced {
22327
+ :where(.theme-scope)
22328
+ :where([data-block="customer-portal"])
22329
+ .cp-card-subtitle--spaced {
21812
22330
  margin-top: 0.75rem;
21813
22331
  }
21814
22332
 
@@ -21832,9 +22350,18 @@ const containerResponsiveThemeCss = `/*
21832
22350
  display: none;
21833
22351
  }
21834
22352
 
21835
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table :is(th, td).cp-col-guests,
21836
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table :is(th, td).cp-col-tickets,
21837
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table :is(th, td).cp-col-actions {
22353
+ :where(.theme-scope)
22354
+ :where([data-block="customer-portal"])
22355
+ .cp-table
22356
+ :is(th, td).cp-col-guests,
22357
+ :where(.theme-scope)
22358
+ :where([data-block="customer-portal"])
22359
+ .cp-table
22360
+ :is(th, td).cp-col-tickets,
22361
+ :where(.theme-scope)
22362
+ :where([data-block="customer-portal"])
22363
+ .cp-table
22364
+ :is(th, td).cp-col-actions {
21838
22365
  display: none;
21839
22366
  }
21840
22367
 
@@ -21843,24 +22370,34 @@ const containerResponsiveThemeCss = `/*
21843
22370
  }
21844
22371
 
21845
22372
  /* Make the cell a positioning context for the kebab */
21846
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row > td:first-child {
22373
+ :where(.theme-scope)
22374
+ :where([data-block="customer-portal"])
22375
+ .cp-row
22376
+ > td:first-child {
21847
22377
  position: relative;
21848
22378
  padding-right: 2.5rem;
21849
22379
  }
21850
22380
 
21851
22381
  /* Position kebab in top-right of the cell */
21852
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-mobile-actions {
22382
+ :where(.theme-scope)
22383
+ :where([data-block="customer-portal"])
22384
+ .cp-row-mobile-actions {
21853
22385
  position: absolute;
21854
22386
  top: 0.5rem;
21855
22387
  right: 0.5rem;
21856
22388
  margin-top: 0;
21857
22389
  }
21858
22390
 
21859
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-row-mobile-actions .btn-sm {
22391
+ :where(.theme-scope)
22392
+ :where([data-block="customer-portal"])
22393
+ .cp-row-mobile-actions
22394
+ .btn-sm {
21860
22395
  width: auto;
21861
22396
  }
21862
22397
 
21863
- :where(.theme-scope) :where([data-block="customer-portal"]) .cp-profile__edit {
22398
+ :where(.theme-scope)
22399
+ :where([data-block="customer-portal"])
22400
+ .cp-profile__edit {
21864
22401
  align-self: stretch;
21865
22402
  }
21866
22403
  }
@@ -22308,6 +22845,30 @@ const containerResponsiveThemeCss = `/*
22308
22845
  gap: 0.25rem;
22309
22846
  }
22310
22847
 
22848
+ /* Topic choices (visitor picks what to hear about). Same treatment as the
22849
+ form block's .fb-fieldset / .fb-inline, defined here because the newsletter
22850
+ form also renders inside contact-newsletter and the site footer. */
22851
+ :where(.theme-scope) .newsletter-topics {
22852
+ display: flex;
22853
+ flex-direction: column;
22854
+ gap: 0.5rem;
22855
+ border: none;
22856
+ padding: 0;
22857
+ margin: 0;
22858
+ min-width: 0;
22859
+ }
22860
+
22861
+ :where(.theme-scope) .newsletter-topics > legend {
22862
+ padding: 0;
22863
+ margin-bottom: 0.25rem;
22864
+ }
22865
+
22866
+ :where(.theme-scope) .newsletter-topic-choice {
22867
+ display: flex;
22868
+ align-items: center;
22869
+ gap: 0.5rem;
22870
+ }
22871
+
22311
22872
  /* Required indicator */
22312
22873
  :where(.theme-scope) .newsletter-required {
22313
22874
  color: rgb(var(--tb-primary));
@@ -22357,6 +22918,10 @@ const containerResponsiveThemeCss = `/*
22357
22918
  flex-shrink: 0;
22358
22919
  }
22359
22920
 
22921
+ :where(.theme-scope) .newsletter-inline .newsletter-topics {
22922
+ flex-basis: 100%;
22923
+ }
22924
+
22360
22925
  /* Mobile fallback for inline variant */
22361
22926
  @container rb-site (max-width: 640px) {
22362
22927
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
@@ -24375,6 +24940,38 @@ const containerResponsiveThemeCss = `/*
24375
24940
  box-shadow:
24376
24941
  0 0 0 2px rgb(var(--tb-surface)),
24377
24942
  0 0 0 4px rgba(var(--tb-primary), 0.3);
24943
+ }
24944
+
24945
+ /* =============================================================================
24946
+ * Block: Appointment Services
24947
+ * ============================================================================= */
24948
+
24949
+ :where(.theme-scope) :where([data-block="appointment-services"]) .appointment-services-row {
24950
+ display: flex;
24951
+ flex-wrap: wrap;
24952
+ align-items: baseline;
24953
+ column-gap: 1rem;
24954
+ row-gap: 0.5rem;
24955
+ }
24956
+
24957
+ :where(.theme-scope) :where([data-block="appointment-services"]) .appointment-services-row-main {
24958
+ flex: 1 1 16rem;
24959
+ }
24960
+
24961
+ :where(.theme-scope) :where([data-block="appointment-services"]) .appointment-services-row-price {
24962
+ flex: 0 0 auto;
24963
+ }
24964
+
24965
+ :where(.theme-scope) :where([data-block="appointment-services"]) .appointment-services-row-action {
24966
+ flex: 1 0 100%;
24967
+ }
24968
+
24969
+ @container rb-site (min-width: 768px) {
24970
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
24971
+ :where(.theme-scope) :where([data-block="appointment-services"]) .appointment-services-row-action {
24972
+ flex: 0 0 auto;
24973
+ }
24974
+ }
24378
24975
  }`;
24379
24976
  //#endregion
24380
24977
  //#region ../theme-core/src/ThemeScopeCore.tsx
@@ -24931,19 +25528,21 @@ function normalizeTokenValue(value) {
24931
25528
  if (trimmedValue.startsWith("#")) return hexToRgbChannels(trimmedValue);
24932
25529
  return trimmedValue;
24933
25530
  }
24934
- function buildThemeBridgeRuntime(config) {
25531
+ function buildThemeRuntimeFromBridge(config) {
24935
25532
  validateThemeBridgeConfig(config);
25533
+ return buildBridgeCssVars(config);
25534
+ }
25535
+ function buildThemeBridgeRuntime(config) {
25536
+ const cssVars = buildThemeRuntimeFromBridge(config);
24936
25537
  const themeId = "sdk";
24937
25538
  const corners = config.corners ?? "rounded";
24938
- const shadows = config.shadows ?? "medium";
24939
- const cssVars = buildBridgeCssVars(config);
24940
25539
  const generatorTheme = buildBridgeGeneratorTheme(corners);
24941
25540
  return {
24942
25541
  themeId,
24943
25542
  cssVars,
24944
- buttonCss: shouldGenerateComponent(config.components?.buttons) ? generateButtonsCss(config, corners, shadows) : void 0,
24945
- cardCss: generateCardsCss(config, corners, shadows),
24946
- inputCss: shouldGenerateComponent(config.components?.inputs) ? generateInputsCss(corners, shadows) : void 0,
25543
+ buttonCss: shouldGenerateComponent(config.components?.buttons) ? generateButtonsCss(config, corners, config.shadows ?? "medium") : void 0,
25544
+ cardCss: generateCardsCss(config, corners, config.shadows ?? "medium"),
25545
+ inputCss: shouldGenerateComponent(config.components?.inputs) ? generateInputsCss(corners, config.shadows ?? "medium") : void 0,
24947
25546
  statusCss: generateStatusCss({
24948
25547
  themeId,
24949
25548
  theme: generatorTheme
@@ -24952,6 +25551,7 @@ function buildThemeBridgeRuntime(config) {
24952
25551
  themeId,
24953
25552
  theme: generatorTheme
24954
25553
  }),
25554
+ typographyCss: generateTypographyCss({ themeId }),
24955
25555
  blockVarsCss: generateAllBlockVarsCss({
24956
25556
  themeId,
24957
25557
  theme: generatorTheme
@@ -25210,7 +25810,7 @@ function shouldGenerateComponent(value) {
25210
25810
  function generateButtonsCss(config, corners, shadows) {
25211
25811
  let variants = getDefaultButtonVariants();
25212
25812
  const buttonConfig = config.components?.buttons;
25213
- if (buttonConfig !== void 0 && buttonConfig !== true && buttonConfig !== false && buttonConfig.variants) {
25813
+ if (typeof buttonConfig === "object" && buttonConfig.variants) {
25214
25814
  const requestedIds = new Set(buttonConfig.variants);
25215
25815
  variants = variants.filter((variant) => requestedIds.has(variant.id));
25216
25816
  }
@@ -25398,6 +25998,7 @@ function ThemeBridgeProvider({ config, children, className = "" }) {
25398
25998
  inputCss: runtime.inputCss,
25399
25999
  statusCss: runtime.statusCss,
25400
26000
  progressCss: runtime.progressCss,
26001
+ typographyCss: runtime.typographyCss,
25401
26002
  blockVarsCss: runtime.blockVarsCss,
25402
26003
  customCss: runtime.customCss,
25403
26004
  children