@riverbankcms/sdk 0.145.0 → 0.146.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 (159) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +280 -182
  6. package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +1330 -734
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +924 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +84 -0
  9. package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
  10. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +8 -14
  11. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  12. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  13. package/dist/_dts/api/src/communications.d.ts +20 -4
  14. package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
  15. package/dist/_dts/api/src/endpoints.d.ts +223 -88
  16. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  17. package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
  18. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  19. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  20. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  21. package/dist/_dts/api/src/index.d.ts +7 -1
  22. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  23. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  24. package/dist/_dts/api/src/launchReadiness.d.ts +20 -2
  25. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  26. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  27. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +42 -0
  28. package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
  29. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  30. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  31. package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -1
  32. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  33. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  34. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  35. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  36. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  37. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  38. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  39. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  40. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  41. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  42. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -32
  43. package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
  44. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  45. package/dist/_dts/api/src/types.d.ts +7 -1
  46. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  47. package/dist/_dts/blocks/src/index.d.ts +2 -0
  48. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
  49. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
  50. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  51. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  52. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  54. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
  55. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
  56. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +36 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  59. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  60. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  62. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -1
  63. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  65. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  66. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  67. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  68. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
  69. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  70. package/dist/_dts/core/src/editor-state.d.ts +2 -7
  71. package/dist/_dts/core/src/index.d.ts +1 -0
  72. package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
  73. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  74. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  75. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +49 -2
  76. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  77. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  78. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
  79. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  80. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -4
  81. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
  82. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  83. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -2
  84. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -2
  85. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
  86. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  87. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  88. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  89. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
  90. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  91. package/dist/_dts/sdk/src/version.d.ts +1 -1
  92. package/dist/_dts/surfaces/src/index.d.ts +9 -0
  93. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  95. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  96. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  97. package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
  98. package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
  99. package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
  100. package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
  101. package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
  102. package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
  103. package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
  104. package/dist/client/{accordion-BcNF9TjX.mjs → accordion-BEQNSptH.mjs} +1 -1
  105. package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-AMr-s5vw.mjs} +33 -52
  106. package/dist/client/bookings.mjs +48 -46
  107. package/dist/client/{carousel-CTdF6e0V.mjs → carousel-Bbt_QgJy.mjs} +1 -1
  108. package/dist/client/{cart-pGtyf_XU.mjs → cart-CnWi30zJ.mjs} +3 -3
  109. package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-f3nkWgd4.mjs} +3 -3
  110. package/dist/client/client.mjs +1611 -815
  111. package/dist/client/{context-BFeY_Wbm.mjs → context-Bc8T6pCe.mjs} +1 -1
  112. package/dist/client/{dates-BhwVSxDg.mjs → dates-DUsCEzLb.mjs} +2 -3
  113. package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
  114. package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
  115. package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
  116. package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-CA3frIH5.mjs} +4 -4
  117. package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
  118. package/dist/client/{form-Dodt8Y8t.mjs → form-C2h3YAcg.mjs} +135 -104
  119. package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-lwMuMTH9.mjs} +3 -3
  120. package/dist/client/hooks.mjs +489 -65
  121. package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-DJ2bLODV.mjs} +3 -3
  122. package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-8Pu5K32g.mjs} +203 -101
  123. package/dist/client/{pricing-BOU0_Hai.mjs → pricing-HHx3IgBz.mjs} +1 -1
  124. package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-C_1odnAf.mjs} +3 -3
  125. package/dist/client/{productList-D-mItx1n.mjs → productList-CtCv-Nmx.mjs} +3 -3
  126. package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-Dcgsncxb.mjs} +40 -23
  127. package/dist/client/rendering/client.mjs +490 -457
  128. package/dist/client/rendering/islands.mjs +17 -17
  129. package/dist/client/rendering.mjs +1515 -628
  130. package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
  131. package/dist/client/{scrollToBlock-CWs8EIdo.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
  132. package/dist/client/{shop-Dufw7N7o.mjs → shop-DQXrQ8kJ.mjs} +7 -7
  133. package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
  134. package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
  135. package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-cuaONpkJ.mjs} +4 -4
  136. package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
  137. package/dist/preview-next/before-render.mjs +368 -103
  138. package/dist/preview-next/client/runtime.mjs +4 -4
  139. package/dist/preview-next/editor-base.css +11 -0
  140. package/dist/preview-next/keepAlive.mjs +328 -103
  141. package/dist/preview-next/middleware.mjs +329 -103
  142. package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-h5IgbSp4.mjs} +353 -103
  143. package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
  144. package/dist/{separator-EvdCAn4V.mjs → separator-BpHS1KZK.mjs} +1 -1
  145. package/dist/server/components.mjs +1376 -331
  146. package/dist/server/config-validation.mjs +405 -27
  147. package/dist/server/config.mjs +405 -27
  148. package/dist/server/data.mjs +405 -27
  149. package/dist/server/index.mjs +370 -104
  150. package/dist/server/next.mjs +1430 -463
  151. package/dist/server/page-converter.mjs +36 -25
  152. package/dist/server/prebuild.mjs +1 -1
  153. package/dist/server/rendering/server.mjs +1374 -331
  154. package/dist/server/rendering.mjs +1436 -364
  155. package/dist/server/routing.mjs +476 -43
  156. package/dist/server/server.mjs +504 -169
  157. package/dist/server/theme-bridge.mjs +467 -111
  158. package/dist/styles/index.css +186 -65
  159. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { B as calendarWindowPageSchema } from "./propsDecoder-C3TP_z4x.mjs";
2
+ import { H as calendarWindowPageSchema } from "./propsDecoder-Dcgsncxb.mjs";
3
3
  import { createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/api/deduplication.ts
@@ -1,5 +1,5 @@
1
- import { Xt as formatBookingDate, Zt as formatBookingDateParts, cn as toScheduledBookingDateTime, en as formatBookingTime, lt as resolveRuntimeEventDestination, on as toBookingTimeZone, sn as toScheduledBookingDateRange, yn as assertNever } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-BOU0_Hai.mjs";
1
+ import { $t as formatBookingDateParts, Qt as formatBookingDate, cn as toBookingTimeZone, dt as resolveRuntimeEventDestination, ln as toScheduledBookingDateRange, nn as formatBookingTime, un as toScheduledBookingDateTime, xn as assertNever } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-HHx3IgBz.mjs";
3
3
  //#region ../blocks/src/system/runtime/nodes/events/domain/cta.ts
4
4
  /**
5
5
  * Booking call-to-action resolution for events: where an event links to and
@@ -16,7 +16,6 @@ function closedEventBookingLabel(reason) {
16
16
  case "series_archived":
17
17
  case "parent_archived":
18
18
  case "parent_inconsistent":
19
- case "not_public":
20
19
  case "already_started":
21
20
  case "enrollment_closed": return "Registration closed";
22
21
  default: return assertNever(reason);
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import { O as clsx } from "./colorStyles-CuJBiS-1.mjs";
3
- import { $ as addDays, G as buildEventRuntimeFilters, H as resolveCalendarReadProfile, O as buildEventCalendarListingRender, Q as MONTH_NAMES, at as getWeekCalendarDays, it as getOrderedDayNames, nt as formatDateKey, ot as isSameCalendarDay, rt as getDayOfWeek, st as isToday, t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
4
- import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-CLL829vy.mjs";
5
- import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-BOU0_Hai.mjs";
6
- import { a as formatTime, c as getLocalDateKey, d as resolveEventLinkProps, l as getLocalMinuteOfDay, o as groupEventsByDate, s as resolveEventTimeZone } from "./dates-BhwVSxDg.mjs";
7
- import { a as WeekAgendaView, c as CalendarDayCell, d as useCalendarEvents, i as useHydrationReady, l as EventModalProvider, o as CalendarNavigationChevron, r as EventModals, s as CalendarDayHeaders, t as EventCombinedClient, u as useEventModal } from "./EventCombined.client-DnsUeONl.mjs";
8
- import { t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
9
- import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-LAJTNrS8.mjs";
3
+ import { A as buildEventCalendarListingRender, W as resolveCalendarReadProfile, at as getDayOfWeek, ct as isSameCalendarDay, et as MONTH_NAMES, it as formatDateKey, lt as isToday, ot as getOrderedDayNames, q as buildEventRuntimeFilters, st as getWeekCalendarDays, t as defineIslandPropsDecoder, tt as addDays } from "./propsDecoder-Dcgsncxb.mjs";
4
+ import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-Bukew6Gb.mjs";
5
+ import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-HHx3IgBz.mjs";
6
+ import { a as formatTime, c as getLocalDateKey, d as resolveEventLinkProps, l as getLocalMinuteOfDay, o as groupEventsByDate, s as resolveEventTimeZone } from "./dates-DUsCEzLb.mjs";
7
+ import { a as WeekAgendaView, c as CalendarDayCell, d as useCalendarEvents, i as useHydrationReady, l as EventModalProvider, o as CalendarNavigationChevron, r as EventModals, s as CalendarDayHeaders, t as EventCombinedClient, u as useEventModal } from "./EventCombined.client-BdRjVbhH.mjs";
8
+ import { t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
9
+ import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
10
10
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
11
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
12
- import { n as EventListingController } from "./EventListing.client-CNBFqJS4.mjs";
11
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
12
+ import { n as EventListingController } from "./EventListing.client-DBxC6xOU.mjs";
13
13
  import { useEffect, useId, useMemo, useState } from "react";
14
14
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
15
  //#region ../calendar/src/lane-packing.ts
@@ -1,8 +1,8 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { n as EventCombinedIslandClient } from "./EventCombined.client-DnsUeONl.mjs";
3
- import { t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { n as EventCombinedIslandClient } from "./EventCombined.client-BdRjVbhH.mjs";
3
+ import { t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
5
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/rendering/islands/enhancers/eventCombined.tsx
@@ -1,8 +1,8 @@
1
- import { A as resolveEventRegistrationScopedEvents, Kt as CANCELLED_SESSION_STATUS, _n as formatCurrencyAmount, cn as toScheduledBookingDateTime, dn as isPublicEventPricingOptionDisplayable, fn as publicEventPricingCurrency, gn as publicEventPricingType, ln as formatBookingPriceDisplay, nn as getBookingLocalDateKey, on as toBookingTimeZone, pn as publicEventPricingDisplay, qt as resolveWholeSeriesBookingPhase, t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { l as formatTotalCapacity, n as formatEventPriceAmount, t as formatEventPrice } from "./pricing-BOU0_Hai.mjs";
3
- import { d as resolveEventLinkProps, r as formatEventDateParts } from "./dates-BhwVSxDg.mjs";
1
+ import { Jt as CANCELLED_SESSION_STATUS, M as resolveEventRegistrationScopedEvents, Yt as resolveWholeSeriesBookingPhase, cn as toBookingTimeZone, dn as formatBookingPriceDisplay, hn as publicEventPricingDisplay, in as getBookingLocalDateKey, mn as publicEventPricingCurrency, pn as isPublicEventPricingOptionDisplayable, t as defineIslandPropsDecoder, un as toScheduledBookingDateTime, vn as publicEventPricingType, yn as formatCurrencyAmount } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { l as formatTotalCapacity, n as formatEventPriceAmount, t as formatEventPrice } from "./pricing-HHx3IgBz.mjs";
3
+ import { d as resolveEventLinkProps, r as formatEventDateParts } from "./dates-DUsCEzLb.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as LeafletStaticMap } from "./LeafletStaticMap-C7higg52.mjs";
5
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-mHEJKrTs.mjs";
6
6
  import "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region ../blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.ts
@@ -1,8 +1,8 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
3
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
4
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
5
- import { t as EventListingClient } from "./EventListing.client-CNBFqJS4.mjs";
4
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
5
+ import { t as EventListingClient } from "./EventListing.client-DBxC6xOU.mjs";
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/rendering/islands/enhancers/eventListing.tsx
@@ -1,20 +1,21 @@
1
1
  "use client";
2
- import { a as resolveBookingPaymentDueNowCents, i as buildBookingPaymentSelectionViewModel, n as StepIndicator$1, o as formatPrice, r as usePolling, t as BookingConsentAgreement } from "./BookingConsentAgreement-DlVOmpW4.mjs";
3
- import { A as resolveEventRegistrationScopedEvents, C as resolveRegistrationTarget, D as getWizardStepsForContext, E as getStepNumber, Qt as formatBookingDateTime, S as resolveEventRequiresPayment, T as WIZARD_STEPS, Xt as formatBookingDate, _ as toRegistrationEvents, _n as formatCurrencyAmount, b as findPreSelectedEvent, cn as toScheduledBookingDateTime, en as formatBookingTime, fn as publicEventPricingCurrency, g as getRegistrationStartAt, gn as publicEventPricingType, h as buildEventRegistrationDisplayFromScopedEvents, hn as publicEventPricingStrategy, mn as publicEventPricingOptions, on as toBookingTimeZone, t as defineIslandPropsDecoder, ut as groupPublicEventsByRun, v as toWholeSeriesRegistrationEvents, vn as parseCurrencyCode, w as toRegistrationRequestSubject, x as resolveDiscountContext, y as findEventByOccurrenceId, zt as assertNever } from "./propsDecoder-C3TP_z4x.mjs";
4
- import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-BOU0_Hai.mjs";
5
- import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
2
+ import { a as resolveBookingPaymentDueNowCents, i as buildBookingPaymentSelectionViewModel, n as StepIndicator$1, o as formatPrice, r as usePolling, t as BookingConsentAgreement } from "./BookingConsentAgreement-BQKL045f.mjs";
3
+ import { C as resolveDiscountContext, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber, Qt as formatBookingDate, S as findPreSelectedEvent, T as resolveRegistrationTarget, Vt as assertNever, _ as buildEventRegistrationDisplayFromScopedEvents, _n as publicEventPricingStrategy, b as toWholeSeriesRegistrationEvents, bn as parseCurrencyCode, cn as toBookingTimeZone, en as formatBookingDateTime, ft as groupPublicEventsByRun, gn as publicEventPricingOptions, k as getWizardStepsForContext, mn as publicEventPricingCurrency, nn as formatBookingTime, t as defineIslandPropsDecoder, un as toScheduledBookingDateTime, v as getRegistrationStartAt, vn as publicEventPricingType, w as resolveEventRequiresPayment, x as findEventByOccurrenceId, y as toRegistrationEvents, yn as formatCurrencyAmount } from "./propsDecoder-Dcgsncxb.mjs";
4
+ import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-HHx3IgBz.mjs";
5
+ import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
6
6
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
7
- import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-CWs8EIdo.mjs";
8
- import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-T9q623PQ.mjs";
9
- import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-LAJTNrS8.mjs";
7
+ import { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-BNgaEUpo.mjs";
8
+ import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-CsOtjFY7.mjs";
9
+ import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
10
10
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
11
11
  import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
12
12
  import { t as buildCheckoutReturnUrls } from "./checkoutUrls-CW3-78uu.mjs";
13
+ import { t as CheckboxChoice } from "./CheckboxChoice--W2n6yKs.mjs";
13
14
  import { t as createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
14
15
  import { n as consumeSearchParams } from "./urlParams-D71VXFGx.mjs";
15
16
  import { t as CrossIcon } from "./CrossIcon-Dn1KRKW5.mjs";
16
17
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
17
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
18
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
18
19
  import { t as createLucideIcon } from "./createLucideIcon-PaLVMov4.mjs";
19
20
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
20
21
  import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
@@ -4550,26 +4551,24 @@ function EventConsentField({ consent, error, formData, idBase, onChange }) {
4550
4551
  title: consent.title,
4551
4552
  titleId: `${idBase}-consent-title`
4552
4553
  }),
4553
- /* @__PURE__ */ jsxs("label", {
4554
- className: "er-label rb-flex rb-items-start rb-gap-2 rb-cursor-pointer",
4555
- children: [
4556
- /* @__PURE__ */ jsx("input", {
4557
- "aria-describedby": error ? errorId : void 0,
4558
- className: "form-checkbox rb-mt-0.5",
4559
- checked: formData.consentAccepted === true,
4560
- onChange: (event) => onChange({
4561
- ...formData,
4562
- consentAccepted: event.target.checked
4563
- }),
4564
- type: "checkbox"
4565
- }),
4554
+ /* @__PURE__ */ jsx(CheckboxChoice, {
4555
+ "aria-describedby": error ? errorId : void 0,
4556
+ "aria-invalid": error ? true : void 0,
4557
+ checked: formData.consentAccepted === true,
4558
+ onChange: (event) => onChange({
4559
+ ...formData,
4560
+ consentAccepted: event.target.checked
4561
+ }),
4562
+ label: /* @__PURE__ */ jsxs(Fragment, { children: [
4566
4563
  consent.checkboxLabel,
4567
4564
  " ",
4568
4565
  /* @__PURE__ */ jsx("span", {
4569
4566
  className: "er-required",
4570
4567
  children: "*"
4571
4568
  })
4572
- ]
4569
+ ] }),
4570
+ presentation: "tile",
4571
+ className: "er-consent-check"
4573
4572
  }),
4574
4573
  error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
4575
4574
  id: errorId,
@@ -1,10 +1,11 @@
1
1
  "use client";
2
2
  import { O as clsx } from "./colorStyles-CuJBiS-1.mjs";
3
- import { Ht as ok, Vt as err, t as defineIslandPropsDecoder, zt as assertNever } from "./propsDecoder-C3TP_z4x.mjs";
4
- import { n as useBlockApi, t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
3
+ import { Ut as err, Vt as assertNever, Wt as ok, t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
4
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
5
5
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
- import { t as ThemedButton } from "./ThemedButton-LAJTNrS8.mjs";
6
+ import { t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
7
7
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
8
+ import { t as CheckboxChoice } from "./CheckboxChoice--W2n6yKs.mjs";
8
9
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
9
10
  import { useReducer, useRef, useState } from "react";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -87,6 +88,136 @@ function useFormSubmission() {
87
88
  };
88
89
  }
89
90
  //#endregion
91
+ //#region ../blocks/src/system/runtime/nodes/form.fields.tsx
92
+ function fieldBasics(field) {
93
+ return {
94
+ inputId: `f_${field.id}`,
95
+ label: String(field.label ?? field.id),
96
+ required: Boolean(field.required)
97
+ };
98
+ }
99
+ function textInputType(type) {
100
+ return type === "email" || type === "url" || type === "tel" || type === "number" ? type : "text";
101
+ }
102
+ function textInputConstraints(field, inputType) {
103
+ if (inputType === "number") return {
104
+ ...typeof field.min === "number" ? { min: field.min } : {},
105
+ ...typeof field.max === "number" ? { max: field.max } : {}
106
+ };
107
+ return {
108
+ ...typeof field.minLength === "number" ? { minLength: field.minLength } : {},
109
+ ...typeof field.maxLength === "number" ? { maxLength: field.maxLength } : {},
110
+ ...typeof field.pattern === "string" && field.pattern ? { pattern: field.pattern } : {}
111
+ };
112
+ }
113
+ function LabelledField({ basics, children }) {
114
+ return /* @__PURE__ */ jsxs("div", {
115
+ className: "fb-field",
116
+ children: [/* @__PURE__ */ jsx("label", {
117
+ htmlFor: basics.inputId,
118
+ className: "form-label",
119
+ children: basics.label
120
+ }), children]
121
+ });
122
+ }
123
+ function TextareaField({ field }) {
124
+ const basics = fieldBasics(field);
125
+ return /* @__PURE__ */ jsx(LabelledField, {
126
+ basics,
127
+ children: /* @__PURE__ */ jsx("textarea", {
128
+ id: basics.inputId,
129
+ name: field.id,
130
+ required: basics.required,
131
+ placeholder: field.placeholder,
132
+ rows: field.rows,
133
+ className: "form-textarea"
134
+ })
135
+ });
136
+ }
137
+ function SelectField({ field }) {
138
+ const basics = fieldBasics(field);
139
+ const options = field.options ?? [];
140
+ const multiple = Boolean(field.multiple);
141
+ return /* @__PURE__ */ jsx(LabelledField, {
142
+ basics,
143
+ children: /* @__PURE__ */ jsxs("select", {
144
+ id: basics.inputId,
145
+ name: field.id,
146
+ multiple,
147
+ required: basics.required,
148
+ className: "form-select",
149
+ children: [!multiple && /* @__PURE__ */ jsx("option", {
150
+ value: "",
151
+ children: "Select…"
152
+ }), options.map((opt) => /* @__PURE__ */ jsx("option", {
153
+ value: opt.value,
154
+ children: opt.label
155
+ }, opt.value))]
156
+ })
157
+ });
158
+ }
159
+ function RadioField({ field }) {
160
+ const basics = fieldBasics(field);
161
+ const options = field.options ?? [];
162
+ return /* @__PURE__ */ jsxs("fieldset", {
163
+ className: "fb-fieldset",
164
+ children: [/* @__PURE__ */ jsx("legend", {
165
+ className: "form-label",
166
+ children: basics.label
167
+ }), options.map((opt) => /* @__PURE__ */ jsxs("label", {
168
+ className: "form-check",
169
+ children: [/* @__PURE__ */ jsx("input", {
170
+ type: "radio",
171
+ name: field.id,
172
+ value: opt.value,
173
+ required: basics.required,
174
+ className: "form-radio"
175
+ }), /* @__PURE__ */ jsx("span", {
176
+ className: "form-check-label",
177
+ children: opt.label
178
+ })]
179
+ }, opt.value))]
180
+ });
181
+ }
182
+ function TextInputField({ field, type }) {
183
+ const basics = fieldBasics(field);
184
+ const inputType = textInputType(type);
185
+ return /* @__PURE__ */ jsx(LabelledField, {
186
+ basics,
187
+ children: /* @__PURE__ */ jsx("input", {
188
+ id: basics.inputId,
189
+ name: field.id,
190
+ type: inputType,
191
+ required: basics.required,
192
+ placeholder: field.placeholder,
193
+ ...textInputConstraints(field, inputType),
194
+ className: "form-input"
195
+ })
196
+ });
197
+ }
198
+ function FormFieldControl({ field }) {
199
+ const type = String(field.type ?? "text");
200
+ switch (type) {
201
+ case "textarea": return /* @__PURE__ */ jsx(TextareaField, { field });
202
+ case "select": return /* @__PURE__ */ jsx(SelectField, { field });
203
+ case "radio": return /* @__PURE__ */ jsx(RadioField, { field });
204
+ case "checkbox":
205
+ case "consent": {
206
+ const basics = fieldBasics(field);
207
+ return /* @__PURE__ */ jsx(CheckboxChoice, {
208
+ name: field.id,
209
+ required: basics.required,
210
+ label: basics.label,
211
+ presentation: type === "consent" ? "tile" : "row"
212
+ });
213
+ }
214
+ default: return /* @__PURE__ */ jsx(TextInputField, {
215
+ field,
216
+ type
217
+ });
218
+ }
219
+ }
220
+ //#endregion
90
221
  //#region ../blocks/src/system/runtime/nodes/form.client.tsx
91
222
  const FormNodeClient = ({ render }) => {
92
223
  const form = render.display.form;
@@ -100,107 +231,7 @@ const FormNodeClient = ({ render }) => {
100
231
  children: "Missing or unknown form."
101
232
  });
102
233
  const groups = render.display.groups;
103
- const renderField = (field) => {
104
- const inputId = `f_${field.id}`;
105
- const label = String(field.label ?? field.id);
106
- const required = Boolean(field.required);
107
- const type = String(field.type ?? "text");
108
- if (type === "textarea") return /* @__PURE__ */ jsxs("div", {
109
- className: "fb-field",
110
- children: [/* @__PURE__ */ jsx("label", {
111
- htmlFor: inputId,
112
- className: "form-label",
113
- children: label
114
- }), /* @__PURE__ */ jsx("textarea", {
115
- id: inputId,
116
- name: field.id,
117
- required,
118
- placeholder: field.placeholder,
119
- rows: field.rows,
120
- className: "form-textarea"
121
- })]
122
- }, field.id);
123
- if (type === "select") {
124
- const options = field.options ?? [];
125
- const multiple = Boolean(field.multiple);
126
- return /* @__PURE__ */ jsxs("div", {
127
- className: "fb-field",
128
- children: [/* @__PURE__ */ jsx("label", {
129
- htmlFor: inputId,
130
- className: "form-label",
131
- children: label
132
- }), /* @__PURE__ */ jsxs("select", {
133
- id: inputId,
134
- name: field.id,
135
- multiple,
136
- required,
137
- className: "form-select",
138
- children: [!multiple && /* @__PURE__ */ jsx("option", {
139
- value: "",
140
- children: "Select…"
141
- }), options.map((opt) => /* @__PURE__ */ jsx("option", {
142
- value: opt.value,
143
- children: opt.label
144
- }, opt.value))]
145
- })]
146
- }, field.id);
147
- }
148
- if (type === "radio") {
149
- const options = field.options ?? [];
150
- return /* @__PURE__ */ jsxs("fieldset", {
151
- className: "fb-fieldset",
152
- children: [/* @__PURE__ */ jsx("legend", {
153
- className: "form-label",
154
- children: label
155
- }), options.map((opt) => /* @__PURE__ */ jsxs("label", {
156
- className: "fb-inline form-label",
157
- children: [/* @__PURE__ */ jsx("input", {
158
- type: "radio",
159
- name: field.id,
160
- value: opt.value,
161
- required,
162
- className: "form-radio"
163
- }), /* @__PURE__ */ jsx("span", { children: opt.label })]
164
- }, opt.value))]
165
- }, field.id);
166
- }
167
- if (type === "checkbox" || type === "consent") return /* @__PURE__ */ jsxs("label", {
168
- className: "fb-inline form-label",
169
- children: [/* @__PURE__ */ jsx("input", {
170
- type: "checkbox",
171
- name: field.id,
172
- required,
173
- className: "form-checkbox"
174
- }), /* @__PURE__ */ jsx("span", { children: label })]
175
- }, field.id);
176
- const inputType = type === "email" || type === "url" || type === "tel" || type === "number" ? type : "text";
177
- const extra = {};
178
- if (inputType === "text" || inputType === "email" || inputType === "url" || inputType === "tel") {
179
- if (typeof field.minLength === "number") extra.minLength = field.minLength;
180
- if (typeof field.maxLength === "number") extra.maxLength = field.maxLength;
181
- if (typeof field.pattern === "string" && field.pattern) extra.pattern = field.pattern;
182
- }
183
- if (inputType === "number") {
184
- if (typeof field.min === "number") extra.min = field.min;
185
- if (typeof field.max === "number") extra.max = field.max;
186
- }
187
- return /* @__PURE__ */ jsxs("div", {
188
- className: "fb-field",
189
- children: [/* @__PURE__ */ jsx("label", {
190
- htmlFor: inputId,
191
- className: "form-label",
192
- children: label
193
- }), /* @__PURE__ */ jsx("input", {
194
- id: inputId,
195
- name: field.id,
196
- type: inputType,
197
- required,
198
- placeholder: field.placeholder,
199
- ...extra,
200
- className: "form-input"
201
- })]
202
- }, field.id);
203
- };
234
+ const renderField = (field) => /* @__PURE__ */ jsx(FormFieldControl, { field }, field.id);
204
235
  const handleSubmit = async (e) => {
205
236
  e.preventDefault();
206
237
  const formData = new FormData(e.currentTarget);
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { k as staticHeaderChromeRuntime, r as buildCartDisplay, t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
3
- import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-LAJTNrS8.mjs";
2
+ import { j as staticHeaderChromeRuntime, r as buildCartDisplay, t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
3
+ import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
4
4
  import { t as resolveDedicatedCheckoutPath } from "./checkoutRoute-ClwHwYVA.mjs";
5
- import { n as useCommerceCart } from "./shop-commerce-store-Sf1eyTaZ.mjs";
5
+ import { n as useCommerceCart } from "./shop-commerce-store-DtSfkKuX.mjs";
6
6
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
7
7
  import * as React$1 from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";