@riverbankcms/sdk 0.60.0 → 0.60.3

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 (140) hide show
  1. package/README.md +20 -3
  2. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +1 -3
  3. package/dist/_dts/api/src/bookingRecords.d.ts +8 -0
  4. package/dist/_dts/api/src/communications.d.ts +1 -0
  5. package/dist/_dts/api/src/contentRuntime.d.ts +8 -0
  6. package/dist/_dts/api/src/endpoints.d.ts +18 -1
  7. package/dist/_dts/api/src/index.d.ts +1 -1
  8. package/dist/_dts/api/src/media.d.ts +1 -1
  9. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +45 -1
  10. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +24 -1
  11. package/dist/_dts/api/src/siteSettings.d.ts +7 -0
  12. package/dist/_dts/api/src/types.d.ts +1 -1
  13. package/dist/_dts/billing/src/plans/types.d.ts +27 -0
  14. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -0
  15. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
  16. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -0
  17. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +173 -2
  18. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -2
  19. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +1 -0
  20. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.client.d.ts +1 -0
  21. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/AgendaEventCard.d.ts +2 -0
  22. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  23. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -1
  24. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -1
  25. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +1 -0
  27. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +16 -0
  28. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +2 -0
  29. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +4 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +38 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +2 -1
  32. package/dist/_dts/content-editor/src/index.d.ts +2 -2
  33. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +9 -0
  34. package/dist/_dts/content-editor/src/primitives/shared/index.d.ts +1 -0
  35. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +10 -0
  36. package/dist/_dts/core/src/business-address.d.ts +38 -0
  37. package/dist/_dts/core/src/index.d.ts +1 -0
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +22 -0
  39. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  40. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +4 -0
  41. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +8 -5
  42. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +7 -5
  43. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -0
  44. package/dist/_dts/editor-blocks/src/block-editor/reorderControlMode.d.ts +3 -0
  45. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +4 -0
  46. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +14 -0
  47. package/dist/_dts/media-react/src/index.d.ts +1 -1
  48. package/dist/_dts/preview-next/src/client/blocks/runOptimisticCustomizeAction.d.ts +43 -20
  49. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  50. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +11 -28
  51. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -1
  52. package/dist/_dts/preview-next/src/client/preview/PreviewEditorUI.d.ts +1 -1
  53. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  54. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
  55. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +20 -0
  56. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +99 -0
  57. package/dist/_dts/preview-next/src/client/preview/previewChromeSurface.d.ts +12 -0
  58. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +41 -0
  59. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +15 -0
  60. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +106 -0
  61. package/dist/_dts/preview-next/src/client/preview/previewUndoDomains.d.ts +34 -0
  62. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +2 -1
  63. package/dist/_dts/preview-next/src/client/preview/useOnboardingConfirmationCheck.d.ts +4 -9
  64. package/dist/_dts/preview-next/src/constants.d.ts +0 -1
  65. package/dist/_dts/preview-next/src/index.d.ts +1 -0
  66. package/dist/_dts/preview-next/src/onboarding-preview-planner.d.ts +89 -0
  67. package/dist/_dts/preview-next/src/route-contract.d.ts +37 -0
  68. package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
  69. package/dist/_dts/sdk/src/rendering/components/Block.d.ts +7 -76
  70. package/dist/_dts/sdk/src/rendering/components/Block.server.d.ts +9 -0
  71. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +78 -0
  72. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +5 -5
  73. package/dist/_dts/sdk/src/rendering/server.d.ts +2 -2
  74. package/dist/_dts/sdk/src/version.d.ts +1 -1
  75. package/dist/_dts/theme-core/src/buttons/constants.d.ts +9 -1
  76. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +16 -11
  77. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +9 -16
  78. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  79. package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +11 -0
  80. package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +11 -0
  81. package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +11 -0
  82. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +14 -0
  83. package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +11 -0
  84. package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +11 -0
  85. package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +11 -0
  86. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +268 -0
  87. package/dist/_dts/theme-core/src/buttons/types.d.ts +253 -72
  88. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  89. package/dist/_dts/theme-core/src/index.d.ts +17 -16
  90. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +69 -15
  91. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  92. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +28 -0
  93. package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +28 -0
  94. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +17 -0
  95. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +28 -0
  96. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +154 -0
  97. package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +28 -0
  98. package/dist/_dts/theme-core/src/responsiveDisplay.d.ts +23 -0
  99. package/dist/_dts/theme-core/src/responsiveMode.d.ts +21 -0
  100. package/dist/_dts/theme-core/src/schema.d.ts +122 -10
  101. package/dist/_dts/theme-core/src/site-styles/compatibility.d.ts +109 -0
  102. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +193 -0
  103. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  104. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorErrors.d.ts +1 -0
  105. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -0
  106. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +43 -2
  107. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +23 -1
  108. package/dist/_dts/ui/src/badge.d.ts +1 -1
  109. package/dist/_dts/ui/src/callout.d.ts +1 -1
  110. package/dist/_dts/ui/src/command-multi-select.d.ts +2 -2
  111. package/dist/cli/index.mjs +1590 -302
  112. package/dist/client/bookings.mjs +321 -144
  113. package/dist/client/client.mjs +4371 -2715
  114. package/dist/client/hooks.mjs +2826 -1675
  115. package/dist/client/rendering/client.mjs +3570 -2262
  116. package/dist/client/rendering/islands.mjs +1948 -756
  117. package/dist/client/rendering.mjs +42015 -40278
  118. package/dist/preview-next/before-render.mjs +5542 -0
  119. package/dist/preview-next/client/runtime.mjs +103364 -99924
  120. package/dist/preview-next/constants.mjs +0 -2
  121. package/dist/preview-next/index.mjs +0 -2
  122. package/dist/preview-next/middleware.mjs +5552 -1
  123. package/dist/server/components.mjs +11234 -9740
  124. package/dist/server/config-validation.mjs +3057 -1906
  125. package/dist/server/config.mjs +3057 -1906
  126. package/dist/server/data.mjs +2826 -1675
  127. package/dist/server/index.mjs +19 -2
  128. package/dist/server/next.mjs +3997 -2507
  129. package/dist/server/page-converter.mjs +2970 -1836
  130. package/dist/server/prebuild.mjs +1 -1
  131. package/dist/server/rendering/server.mjs +5960 -3200
  132. package/dist/server/rendering.mjs +12734 -11162
  133. package/dist/server/routing.mjs +3045 -1743
  134. package/dist/server/server.mjs +2827 -1676
  135. package/dist/server/theme-bridge.mjs +2074 -839
  136. package/dist/server/theme.mjs +1087 -492
  137. package/dist/styles/index.css +343 -299
  138. package/package.json +1 -1
  139. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.d.ts +0 -11
  140. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.state.d.ts +0 -43
@@ -1,6 +1,38 @@
1
- import type React from 'react';
1
+ import React from 'react';
2
2
  import type { ComponentRegistry } from '../resolver';
3
- import { type RuntimeBackedBlockKind } from './runtime-backed-blocks';
3
+ import { BookingFormNodeClient } from '../nodes/booking-form.client';
4
+ import { EventDetailsIslandClient } from '../nodes/event-details.client';
5
+ import { LocationMapIslandClient } from '../nodes/location-map.client';
6
+ import { CarouselNodeClient } from '../nodes/carousel.client';
7
+ import { AccordionNode, AccordionItemNode } from '../nodes/accordion';
8
+ import HeaderSectionNode from '../nodes/header-section.client';
9
+ import { EventCombinedIslandClient } from '../nodes/events';
10
+ import { MediaNode } from '../nodes/media.client';
11
+ import { runtimeBackedBlockServerEntries, type RuntimeBackedBlockMode, type RuntimeBackedBlockKind, type RuntimeBackedClientBlockEntry, type RuntimeBackedClientComponentProps } from './runtime-backed-blocks';
12
+ type SourcePropsClientEntry<TProps extends object = object> = Readonly<{
13
+ kind: 'source-props';
14
+ component: React.ComponentType<TProps>;
15
+ }>;
16
+ type ExplicitAdapterClientEntry<TProps extends object = object> = Readonly<{
17
+ kind: 'explicit-adapter';
18
+ component: React.ComponentType<TProps>;
19
+ produces: 'client-props' | 'island-props';
20
+ }>;
21
+ export type ClientComponentRegistryEntryByKind = Readonly<{
22
+ media: SourcePropsClientEntry<React.ComponentProps<typeof MediaNode>>;
23
+ carousel: SourcePropsClientEntry<React.ComponentProps<typeof CarouselNodeClient>>;
24
+ accordion: SourcePropsClientEntry<React.ComponentProps<typeof AccordionNode>>;
25
+ accordionItem: SourcePropsClientEntry<React.ComponentProps<typeof AccordionItemNode>>;
26
+ headerSection: SourcePropsClientEntry<React.ComponentProps<typeof HeaderSectionNode>>;
27
+ 'booking-form': ExplicitAdapterClientEntry<React.ComponentProps<typeof BookingFormNodeClient>>;
28
+ 'event-details': ExplicitAdapterClientEntry<React.ComponentProps<typeof EventDetailsIslandClient>>;
29
+ 'location-map': ExplicitAdapterClientEntry<React.ComponentProps<typeof LocationMapIslandClient>>;
30
+ 'event-combined': ExplicitAdapterClientEntry<React.ComponentProps<typeof EventCombinedIslandClient>>;
31
+ }>;
32
+ export type ClientComponentRegistryEntry = ClientComponentRegistryEntryByKind[keyof ClientComponentRegistryEntryByKind];
33
+ export declare function defineSourcePropsClientEntry<TProps extends object>(component: React.ComponentType<TProps>): SourcePropsClientEntry<TProps>;
34
+ export declare function defineExplicitAdapterClientEntry<TProps extends object>(component: React.ComponentType<TProps>, contract: Pick<ExplicitAdapterClientEntry<TProps>, 'produces'>): ExplicitAdapterClientEntry<TProps>;
35
+ export declare function defineRuntimeBackedBlockClientEntry<TKind extends RuntimeBackedBlockKind>(kind: TKind, client: React.ComponentType<RuntimeBackedClientComponentProps<typeof runtimeBackedBlockServerEntries[TKind]['definition']['runtime'], RuntimeBackedBlockMode<TKind>>>): RuntimeBackedClientBlockEntry<typeof runtimeBackedBlockServerEntries[TKind]['definition']['runtime'], RuntimeBackedBlockMode<TKind>>;
4
36
  export declare const runtimeBackedBlockClientEntries: {
5
37
  readonly form: Readonly<{
6
38
  definition: import("../..").SystemBlockDefinition<unknown, Readonly<{
@@ -168,6 +200,7 @@ export declare const runtimeBackedBlockClientEntries: {
168
200
  }>;
169
201
  }>;
170
202
  renderKind: "progressive";
203
+ mode: "form";
171
204
  client: React.ElementType;
172
205
  }>;
173
206
  readonly 'event-listing': Readonly<{
@@ -612,6 +645,7 @@ export declare const runtimeBackedBlockClientEntries: {
612
645
  }>;
613
646
  }>;
614
647
  renderKind: "progressive";
648
+ mode: "event-listing";
615
649
  client: React.ElementType;
616
650
  }>;
617
651
  readonly 'event-calendar': Readonly<{
@@ -1080,6 +1114,7 @@ export declare const runtimeBackedBlockClientEntries: {
1080
1114
  }>;
1081
1115
  }>;
1082
1116
  renderKind: "progressive";
1117
+ mode: "event-calendar";
1083
1118
  client: React.ElementType;
1084
1119
  }>;
1085
1120
  readonly 'newsletter-form': Readonly<{
@@ -1284,6 +1319,7 @@ export declare const runtimeBackedBlockClientEntries: {
1284
1319
  }>;
1285
1320
  }>;
1286
1321
  renderKind: "progressive";
1322
+ mode: "newsletter-form";
1287
1323
  client: React.ElementType;
1288
1324
  }>;
1289
1325
  readonly 'product-list': Readonly<{
@@ -1548,6 +1584,7 @@ export declare const runtimeBackedBlockClientEntries: {
1548
1584
  }>;
1549
1585
  }>;
1550
1586
  renderKind: "progressive";
1587
+ mode: "product-list";
1551
1588
  client: React.ElementType;
1552
1589
  }>;
1553
1590
  readonly 'product-detail': Readonly<{
@@ -1644,6 +1681,7 @@ export declare const runtimeBackedBlockClientEntries: {
1644
1681
  }>;
1645
1682
  }>;
1646
1683
  renderKind: "progressive";
1684
+ mode: "product-detail";
1647
1685
  client: React.ElementType;
1648
1686
  }>;
1649
1687
  readonly cart: Readonly<{
@@ -1824,6 +1862,7 @@ export declare const runtimeBackedBlockClientEntries: {
1824
1862
  }>;
1825
1863
  }>;
1826
1864
  renderKind: "client-owned";
1865
+ mode: "cart";
1827
1866
  client: React.ElementType;
1828
1867
  }>;
1829
1868
  readonly checkout: Readonly<{
@@ -1938,6 +1977,7 @@ export declare const runtimeBackedBlockClientEntries: {
1938
1977
  }>;
1939
1978
  }>;
1940
1979
  renderKind: "client-owned";
1980
+ mode: "checkout";
1941
1981
  client: React.ElementType;
1942
1982
  }>;
1943
1983
  readonly 'course-registration': Readonly<{
@@ -2154,6 +2194,7 @@ export declare const runtimeBackedBlockClientEntries: {
2154
2194
  }>;
2155
2195
  }>;
2156
2196
  renderKind: "client-owned";
2197
+ mode: "course-registration";
2157
2198
  client: React.ElementType;
2158
2199
  }>;
2159
2200
  readonly gifting: Readonly<{
@@ -2286,6 +2327,7 @@ export declare const runtimeBackedBlockClientEntries: {
2286
2327
  }>;
2287
2328
  }>;
2288
2329
  renderKind: "client-owned";
2330
+ mode: "gifting";
2289
2331
  client: React.ElementType;
2290
2332
  }>;
2291
2333
  readonly 'event-registration': Readonly<{
@@ -2502,6 +2544,7 @@ export declare const runtimeBackedBlockClientEntries: {
2502
2544
  }>;
2503
2545
  }>;
2504
2546
  renderKind: "client-owned";
2547
+ mode: "event-registration";
2505
2548
  client: React.ElementType;
2506
2549
  }>;
2507
2550
  readonly shop: Readonly<{
@@ -2742,8 +2785,136 @@ export declare const runtimeBackedBlockClientEntries: {
2742
2785
  }>;
2743
2786
  }>;
2744
2787
  renderKind: "progressive";
2788
+ mode: "passes-memberships";
2745
2789
  client: React.ElementType;
2746
2790
  }>;
2747
2791
  };
2748
2792
  export declare const runtimeBackedBlockClientRegistry: Readonly<Record<RuntimeBackedBlockKind, React.ElementType>>;
2793
+ export declare const clientComponentRegistryEntries: {
2794
+ readonly media: Readonly<{
2795
+ kind: "source-props";
2796
+ component: React.ComponentType<import("../nodes/media").MediaNodeProps>;
2797
+ }>;
2798
+ readonly carousel: Readonly<{
2799
+ kind: "source-props";
2800
+ component: React.ComponentType<import("../nodes/carousel.client").CarouselNodeClientProps>;
2801
+ }>;
2802
+ readonly accordion: Readonly<{
2803
+ kind: "source-props";
2804
+ component: React.ComponentType<import("../nodes/accordion").AccordionNodeProps>;
2805
+ }>;
2806
+ readonly accordionItem: Readonly<{
2807
+ kind: "source-props";
2808
+ component: React.ComponentType<import("../nodes/accordion").AccordionItemNodeProps>;
2809
+ }>;
2810
+ readonly headerSection: Readonly<{
2811
+ kind: "source-props";
2812
+ component: React.ComponentType<{
2813
+ [key: string]: unknown;
2814
+ className?: string;
2815
+ blockId?: string;
2816
+ blockKind?: string;
2817
+ blockContent?: unknown;
2818
+ fragmentRegistry?: unknown;
2819
+ pathBase?: string;
2820
+ } & {
2821
+ children?: React.ReactNode | undefined;
2822
+ }>;
2823
+ }>;
2824
+ readonly 'booking-form': Readonly<{
2825
+ kind: "explicit-adapter";
2826
+ component: React.ComponentType<import("../nodes/booking-form.client").BookingFormNodeClientProps>;
2827
+ produces: "client-props" | "island-props";
2828
+ }>;
2829
+ readonly 'event-details': Readonly<{
2830
+ kind: "explicit-adapter";
2831
+ component: React.ComponentType<Readonly<{
2832
+ occurrenceContext?: import("../../../contracts").EventDetailsOccurrenceContext | null;
2833
+ contentEntry?: import("../../../contracts").EventDetailsContentEntry | null;
2834
+ events?: readonly import("../..").PublicEvent[] | null;
2835
+ showVenue?: boolean;
2836
+ showMap?: boolean;
2837
+ showOtherDates?: boolean;
2838
+ otherDatesLimit?: string;
2839
+ showCost?: boolean;
2840
+ showAcceptedPasses?: boolean;
2841
+ showAcceptedMemberships?: boolean;
2842
+ sitePasses?: Readonly<{
2843
+ passes: readonly import("../..").PublicPassProduct[];
2844
+ }> | null;
2845
+ siteMemberships?: Readonly<{
2846
+ memberships: readonly import("../..").PublicMembershipProduct[];
2847
+ }> | null;
2848
+ className?: string | null;
2849
+ nowIso?: string;
2850
+ }>>;
2851
+ produces: "client-props" | "island-props";
2852
+ }>;
2853
+ readonly 'location-map': Readonly<{
2854
+ kind: "explicit-adapter";
2855
+ component: React.ComponentType<Readonly<{
2856
+ location?: import("../nodes/location-map.shared").NormalizedLocationMapValue | null;
2857
+ zoom?: number | null;
2858
+ heightPx?: number | null;
2859
+ showAddressText?: boolean;
2860
+ showDirections?: boolean;
2861
+ directionsLabel?: string | null;
2862
+ className?: string | null;
2863
+ }>>;
2864
+ produces: "client-props" | "island-props";
2865
+ }>;
2866
+ readonly 'event-combined': Readonly<{
2867
+ kind: "explicit-adapter";
2868
+ component: React.ComponentType<Readonly<Readonly<{
2869
+ siteId: string;
2870
+ apiBaseUrl?: string;
2871
+ stage?: "preview" | "published";
2872
+ }> & {
2873
+ renderKind: "progressive";
2874
+ render: Readonly<{
2875
+ mode: "event-combined";
2876
+ } & Readonly<{
2877
+ display: Readonly<{
2878
+ kind: "event-combined";
2879
+ className: string | null;
2880
+ events: readonly import("../..").PublicEvent[];
2881
+ listLayout: import("../..").EventLayout;
2882
+ listColumns: import("../..").ColumnOption;
2883
+ eventsPerPage: string;
2884
+ loadMoreText: string;
2885
+ startOfWeek: import("../..").WeekStart;
2886
+ calendarTabViews: import("../..").CalendarTabViews;
2887
+ showFilters: boolean;
2888
+ showCategoryFilter: import("../..").FilterAutoShow;
2889
+ showVenueFilter: boolean;
2890
+ showStaffFilter: boolean;
2891
+ eventKind: import("../..").EventBlockKind;
2892
+ eventSurface: import("../..").EventSurfaceScope;
2893
+ filterEventPresets: string | null;
2894
+ scheduleScope: import("../..").EventScheduleScope;
2895
+ filterCategoryIds: string | null;
2896
+ filterStaffMemberId: string | null;
2897
+ filterVenueId: string | null;
2898
+ showVenue: boolean;
2899
+ showMap: boolean;
2900
+ showCapacity: boolean;
2901
+ buttonVariant: import("../..").ButtonVariant;
2902
+ buttonText: string;
2903
+ emptyMessage: string;
2904
+ }>;
2905
+ hydration: Readonly<{
2906
+ siteId: string;
2907
+ stage?: "preview" | "published";
2908
+ prefetchedEvents: boolean;
2909
+ eventKind: import("../..").EventBlockKind;
2910
+ eventSurface: import("../..").EventSurfaceScope;
2911
+ filterEventPresets: string | null;
2912
+ scheduleScope: import("../..").EventScheduleScope;
2913
+ }>;
2914
+ }>>;
2915
+ }>>;
2916
+ produces: "client-props" | "island-props";
2917
+ }>;
2918
+ };
2749
2919
  export declare const clientComponentRegistry: ComponentRegistry;
2920
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- import type { InteractiveBlockRuntime } from '../../../contracts/runtime';
2
+ import type { InteractiveBlockRuntime, RuntimeKind, RuntimeRender, RuntimeSource } from '../../../contracts/runtime';
3
3
  import type { SystemBlockDefinition } from '../../registry';
4
4
  type AnyInteractiveRuntime = InteractiveBlockRuntime<any, any, any>;
5
5
  type RuntimeBackedBlockDefinition<TRuntime extends AnyInteractiveRuntime = AnyInteractiveRuntime> = SystemBlockDefinition<unknown, TRuntime> & Readonly<{
@@ -8,9 +8,16 @@ type RuntimeBackedBlockDefinition<TRuntime extends AnyInteractiveRuntime = AnyIn
8
8
  }>;
9
9
  runtime: TRuntime;
10
10
  }>;
11
- export type RuntimeBackedClientBlockEntry<TRuntime extends AnyInteractiveRuntime> = Readonly<{
11
+ export type RuntimeBackedClientComponentProps<TRuntime extends AnyInteractiveRuntime, TMode extends string> = Readonly<RuntimeSource<TRuntime> & {
12
+ renderKind: RuntimeKind<TRuntime>;
13
+ render: Readonly<{
14
+ mode: TMode;
15
+ } & RuntimeRender<TRuntime>>;
16
+ }>;
17
+ export type RuntimeBackedClientBlockEntry<TRuntime extends AnyInteractiveRuntime, TMode extends string = string> = Readonly<{
12
18
  definition: RuntimeBackedBlockDefinition<TRuntime>;
13
19
  renderKind: TRuntime['kind'];
20
+ mode: TMode;
14
21
  client: React.ElementType;
15
22
  }>;
16
23
  export declare const runtimeBackedBlockServerEntries: {
@@ -1387,6 +1394,21 @@ export declare const runtimeBackedBlockServerEntries: {
1387
1394
  }>;
1388
1395
  };
1389
1396
  export type RuntimeBackedBlockKind = keyof typeof runtimeBackedBlockServerEntries;
1397
+ export declare const runtimeBackedBlockModes: {
1398
+ readonly form: "form";
1399
+ readonly 'event-listing': "event-listing";
1400
+ readonly 'event-calendar': "event-calendar";
1401
+ readonly 'newsletter-form': "newsletter-form";
1402
+ readonly 'product-list': "product-list";
1403
+ readonly 'product-detail': "product-detail";
1404
+ readonly cart: "cart";
1405
+ readonly checkout: "checkout";
1406
+ readonly 'course-registration': "course-registration";
1407
+ readonly gifting: "gifting";
1408
+ readonly 'event-registration': "event-registration";
1409
+ readonly shop: "passes-memberships";
1410
+ };
1411
+ export type RuntimeBackedBlockMode<TKind extends RuntimeBackedBlockKind> = typeof runtimeBackedBlockModes[TKind];
1390
1412
  export declare const runtimeBackedBlockKinds: readonly ("form" | "event-registration" | "course-registration" | "event-listing" | "event-calendar" | "shop" | "product-list" | "product-detail" | "cart" | "checkout" | "gifting" | "newsletter-form")[];
1391
1413
  export declare const runtimeBackedBlockServerRegistry: Readonly<{
1392
1414
  readonly form: React.ElementType<any, keyof React.JSX.IntrinsicElements>;
@@ -12,6 +12,7 @@
12
12
  * correctly relative to the page scroll container.
13
13
  */
14
14
  export declare const POSITIONING_CLASSES: readonly ["rb-sticky", "rb-fixed", "rb-absolute", "rb-relative", "rb-top-0", "rb-left-0", "rb-right-0", "rb-bottom-0", "rb-z-40", "rb-z-50"];
15
+ export { desktopOnlyDisplay, mobileOnlyDisplay, type ResponsiveDisplay, } from '@riverbankcms/theme-core/responsiveDisplay';
15
16
  /**
16
17
  * Split className into positioning classes (for wrapper) and content classes (for section).
17
18
  *
@@ -17,3 +17,4 @@ export declare const BookingFormClient: React.FC<BookingFormClientProps>;
17
17
  * harder to miswire across interactive surfaces.
18
18
  */
19
19
  export declare const BookingFormNodeClient: React.FC<BookingFormNodeClientProps>;
20
+ export declare function buildBookingFormNodeClientProps(props: BookingFormNodeClientProps): BookingFormClientProps;
@@ -2,6 +2,8 @@ import React from 'react';
2
2
  import type { PublicEvent } from '../../../../blocks/events/shared/types';
3
3
  type AgendaEventCardProps = {
4
4
  event: PublicEvent;
5
+ /** Whether to render the capacity indicator. */
6
+ showCapacity: boolean;
5
7
  /** When provided, renders as button and calls onClick instead of navigating */
6
8
  onClick?: (event: PublicEvent) => void;
7
9
  };
@@ -3,6 +3,7 @@ import type { PublicEvent } from '../../../../blocks/events/shared/types';
3
3
  type DayEventsModalProps = {
4
4
  date: Date;
5
5
  events: PublicEvent[];
6
+ showCapacity: boolean;
6
7
  onClose: () => void;
7
8
  onSelectEvent: (event: PublicEvent) => void;
8
9
  };
@@ -12,5 +13,5 @@ type DayEventsModalProps = {
12
13
  * Uses AgendaEventCard with onClick prop to display events.
13
14
  * Clicking an event triggers onSelectEvent (typically opens EventDetailModal).
14
15
  */
15
- export declare function DayEventsModal({ date, events, onClose, onSelectEvent, }: DayEventsModalProps): React.ReactElement;
16
+ export declare function DayEventsModal({ date, events, showCapacity, onClose, onSelectEvent, }: DayEventsModalProps): React.ReactElement;
16
17
  export default DayEventsModal;
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import type { PublicEvent, ButtonVariant, CardVariant } from '../../../../blocks/events/shared/types';
3
3
  type EventDetailModalProps = {
4
4
  event: PublicEvent;
5
+ showCapacity: boolean;
5
6
  onClose: () => void;
6
7
  cardVariant?: CardVariant;
7
8
  buttonVariant?: ButtonVariant;
@@ -14,5 +15,5 @@ type EventDetailModalProps = {
14
15
  * Reuses EventCard component directly for DRY implementation.
15
16
  * EventCard already includes the CTA button to navigate to the full event page.
16
17
  */
17
- export declare function EventDetailModal({ event, onClose, cardVariant, buttonVariant, buttonText, showMap, }: EventDetailModalProps): React.ReactElement;
18
+ export declare function EventDetailModal({ event, showCapacity, onClose, cardVariant, buttonVariant, buttonText, showMap, }: EventDetailModalProps): React.ReactElement;
18
19
  export default EventDetailModal;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { ButtonVariant, CardVariant } from '../../../../blocks/events/shared/types';
3
3
  type EventModalsProps = {
4
+ showCapacity: boolean;
4
5
  cardVariant?: CardVariant;
5
6
  buttonVariant?: ButtonVariant;
6
7
  buttonText?: string;
@@ -13,5 +14,5 @@ type EventModalsProps = {
13
14
  * - EventDetailModal for single event view
14
15
  * - DayEventsModal for day events list (clicking an event switches to event modal)
15
16
  */
16
- export declare function EventModals({ cardVariant, buttonVariant, buttonText, }: EventModalsProps): React.ReactElement | null;
17
+ export declare function EventModals({ showCapacity, cardVariant, buttonVariant, buttonText, }: EventModalsProps): React.ReactElement | null;
17
18
  export default EventModals;
@@ -4,6 +4,7 @@ type WeekAgendaViewProps = {
4
4
  viewDate: Date;
5
5
  events: PublicEvent[];
6
6
  startOfWeek: WeekStart;
7
+ showCapacity: boolean;
7
8
  emptyMessage?: string;
8
9
  };
9
10
  /**
@@ -4,6 +4,7 @@ type WeekTimetableViewProps = {
4
4
  viewDate: Date;
5
5
  events: PublicEvent[];
6
6
  startOfWeek: WeekStart;
7
+ showCapacity: boolean;
7
8
  emptyMessage?: string;
8
9
  };
9
10
  export declare const WeekTimetableView: React.FC<WeekTimetableViewProps>;
@@ -0,0 +1,16 @@
1
+ import type { PublicEvent } from '../../../../blocks/events/shared/types';
2
+ export type EventAvailability = {
3
+ /** Remaining spots. `null` when the event has no capacity cap. */
4
+ available: number | null;
5
+ /** True when the event has a cap and no spots remain. */
6
+ isFull: boolean;
7
+ };
8
+ /**
9
+ * Compute remaining spots for an event from `availableSpots` with a fallback
10
+ * to `capacity - registeredCount`. Returns `{ available: null, isFull: false }`
11
+ * for uncapped events so call sites can render no capacity indicator at all.
12
+ *
13
+ * The single source of truth for capacity math across event cards, agenda
14
+ * rows, and timetable cells — keep wording variations in the call sites.
15
+ */
16
+ export declare function getEventAvailability(event: PublicEvent): EventAvailability;
@@ -10,6 +10,8 @@ export type TimetableEventCell = {
10
10
  categoryColor: string;
11
11
  timeLabel: string;
12
12
  teacherLine: string | null;
13
+ capacityLabel: string | null;
14
+ isFull: boolean;
13
15
  };
14
16
  export type TimetableDay = {
15
17
  date: Date;
@@ -4,6 +4,10 @@ export type LocationMapProps = Readonly<{
4
4
  blockId?: string | null;
5
5
  className?: string | null;
6
6
  location?: LocationMapValueInput | null;
7
+ businessAddress?: LocationMapValueInput | null;
8
+ locationSource?: string | null;
9
+ venueId?: string | null;
10
+ venuesById?: Record<string, unknown> | null;
7
11
  zoom?: number | string | null;
8
12
  heightPx?: number | string | null;
9
13
  showAddressText?: boolean | string | null;
@@ -18,9 +18,28 @@ export declare const LOCATION_MAP_LIMITS: {
18
18
  };
19
19
  export type LocationMapValueInput = Readonly<{
20
20
  addressText?: string | null;
21
+ displayAddress?: string | null;
21
22
  lat?: number | string | null;
22
23
  lng?: number | string | null;
23
24
  }>;
25
+ export type LocationMapSource = 'business_address' | 'venue' | 'custom';
26
+ export type LocationMapUnresolvedReason = 'missing_custom_location' | 'missing_business_address' | 'missing_venue_id' | 'missing_venue_location';
27
+ export type LocationMapLocationsByVenueId = Readonly<Record<string, unknown>>;
28
+ export type ResolvedLocationMapLocation = Readonly<{
29
+ kind: 'custom';
30
+ locationValue: NormalizedLocationMapValue;
31
+ }> | Readonly<{
32
+ kind: 'business_address';
33
+ locationValue: NormalizedLocationMapValue;
34
+ }> | Readonly<{
35
+ kind: 'venue';
36
+ venueId: string;
37
+ locationValue: NormalizedLocationMapValue;
38
+ }> | Readonly<{
39
+ kind: 'unresolved';
40
+ source: LocationMapSource;
41
+ reason: LocationMapUnresolvedReason;
42
+ }>;
24
43
  export type NormalizedLocationMapValue = AddressedLocationValue;
25
44
  export type LocationMapHydrationProps = Readonly<{
26
45
  location?: NormalizedLocationMapValue | null;
@@ -32,7 +51,9 @@ export type LocationMapHydrationProps = Readonly<{
32
51
  className?: string | null;
33
52
  }>;
34
53
  export type NormalizedLocationMapProps = Readonly<{
54
+ resolvedLocation: ResolvedLocationMapLocation;
35
55
  locationValue: NormalizedLocationMapValue | null;
56
+ unresolvedMessage: string | null;
36
57
  addressText: string | null;
37
58
  location: LocationCoordinates | null;
38
59
  zoom: number;
@@ -43,8 +64,21 @@ export type NormalizedLocationMapProps = Readonly<{
43
64
  className: string | null;
44
65
  }>;
45
66
  export declare function normalizeLocationMapValue(value: unknown): NormalizedLocationMapValue | null;
67
+ export declare function normalizeLocationMapSource(value: LocationMapSource | string | null | undefined): LocationMapSource;
68
+ export declare function resolveLocationMapLocation(input: {
69
+ location?: unknown;
70
+ businessAddress?: unknown;
71
+ locationSource?: LocationMapSource | string | null;
72
+ venueId?: string | null;
73
+ venuesById?: LocationMapLocationsByVenueId | null;
74
+ }): ResolvedLocationMapLocation;
75
+ export declare function describeUnresolvedLocationMapLocation(resolvedLocation: ResolvedLocationMapLocation): string | null;
46
76
  export declare function normalizeLocationMapProps(input: {
47
77
  location?: unknown;
78
+ businessAddress?: unknown;
79
+ locationSource?: LocationMapSource | string | null;
80
+ venueId?: string | null;
81
+ venuesById?: LocationMapLocationsByVenueId | null;
48
82
  zoom?: number | string | null;
49
83
  heightPx?: number | string | null;
50
84
  showAddressText?: boolean | string | null;
@@ -54,6 +88,10 @@ export declare function normalizeLocationMapProps(input: {
54
88
  }): NormalizedLocationMapProps;
55
89
  export declare function toLocationMapHydrationProps(input: {
56
90
  location?: unknown;
91
+ businessAddress?: unknown;
92
+ locationSource?: LocationMapSource | string | null;
93
+ venueId?: string | null;
94
+ venuesById?: Record<string, unknown> | null;
57
95
  zoom?: number | string | null;
58
96
  heightPx?: number | string | null;
59
97
  showAddressText?: boolean | string | null;
@@ -15,7 +15,8 @@ export type LocationMapViewProps = Readonly<{
15
15
  showAddressText: boolean;
16
16
  showDirections: boolean;
17
17
  directionsLabel: string;
18
+ unresolvedMessage?: string | null;
18
19
  renderMap?: (args: RenderMapArgs) => React.ReactNode;
19
20
  }>;
20
- export declare function LocationMapView({ addressText, location, zoom, heightPx, showAddressText, showDirections, directionsLabel, renderMap, }: LocationMapViewProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function LocationMapView({ addressText, location, zoom, heightPx, showAddressText, showDirections, directionsLabel, unresolvedMessage, renderMap, }: LocationMapViewProps): import("react/jsx-runtime").JSX.Element;
21
22
  export {};
@@ -13,8 +13,8 @@ export type { EntryEditorDriver } from './controller/driver';
13
13
  export { EditableBlockProvider, useBlockData } from './components/EditableBlockProvider';
14
14
  export { ContentFieldsForm, type ContentFieldsFormProps } from './components/ContentFieldsForm';
15
15
  export { useUISelector } from './ui/useUISelector';
16
- export { useEditorUiStore, useEditorUiStoreInstance, createEditorUiStore } from './ui/editorUiStore';
17
- export type { EditorUiStoreInstance, EditorUiState, ViewportMode, ViewportWidth, ViewportState, ZoomLevel, } from './ui/editorUiStore';
16
+ export { useEditorUiStore, useEditorUiStoreInstance, useOptionalEditorUiStoreInstance, createEditorUiStore } from './ui/editorUiStore';
17
+ export type { ActivePreviewField, EditorUiStoreInstance, EditorUiState, PreviewSidebarTab, ViewportMode, ViewportWidth, ViewportState, ZoomLevel, } from './ui/editorUiStore';
18
18
  export { PreviewTextEditor } from './primitives/PreviewTextEditor';
19
19
  export { PreviewRichTextEditor } from './primitives/PreviewRichTextEditor';
20
20
  export { useStoreBinding, parseEditorPath } from './primitives/shared';
@@ -0,0 +1,9 @@
1
+ import type { ActivePreviewField } from '../../ui/editorUiStore';
2
+ /**
3
+ * Returns true when the given editor path targets the same block-field that
4
+ * the sidebar has currently focused (the "linked focus" affordance).
5
+ *
6
+ * Encapsulates the `blocks.{blockId}.{fieldPath}` path convention so editor
7
+ * primitives and tests share a single source of truth.
8
+ */
9
+ export declare function isLinkedSidebarField(editorPath: string, activeField: ActivePreviewField): boolean;
@@ -1,2 +1,3 @@
1
1
  export { parseEditorPath, useStoreBinding } from './storeBinding';
2
+ export { isLinkedSidebarField } from './activePreviewField';
2
3
  export type { PathInfo } from './types';
@@ -14,6 +14,11 @@ export type { ViewportState } from "./stores/viewportStore";
14
14
  export type { EditorCommand, EditorBlockItem, EditorDraftSnapshot, EditorHistorySnapshot, EditorEffect, } from "./editorHistory";
15
15
  export type MetadataSnapshot = EditorValueSnapshot<EditorMetadataValues | null>;
16
16
  export type ContentSnapshot = EditorValueSnapshot<EditorContentValues | null>;
17
+ export type PreviewSidebarTab = "editor" | "assistant";
18
+ export type ActivePreviewField = Readonly<{
19
+ blockId: EditorBlockId;
20
+ fieldPath: string;
21
+ }> | null;
17
22
  /**
18
23
  * Form-facing metadata facade. Consumers pass plain records for ergonomics;
19
24
  * the reducer core normalizes and brands values at this boundary.
@@ -98,9 +103,13 @@ type RestoreListener = (transition: {
98
103
  }) => void;
99
104
  export type EditorUiState = {
100
105
  drawerOpen: boolean;
106
+ previewSidebarTab: PreviewSidebarTab;
107
+ activePreviewField: ActivePreviewField;
101
108
  focusRequest: FocusRequest;
102
109
  activeBlockId: EditorBlockId | null;
103
110
  setDrawerOpen: (open: boolean) => void;
111
+ setPreviewSidebarTab: (tab: PreviewSidebarTab) => void;
112
+ setActivePreviewField: (field: ActivePreviewField) => void;
104
113
  requestFocus: (payload: Omit<NonNullable<FocusRequest>, "requestId">) => void;
105
114
  clearFocus: () => void;
106
115
  setActiveBlockId: (id: EditorBlockId | null) => void;
@@ -139,3 +148,4 @@ export type EditorUiStoreInstance = ReturnType<typeof createEditorUiStore>;
139
148
  export declare const EditorUiStoreProvider: import("react").Provider<import("zustand").StoreApi<EditorUiState> | null>;
140
149
  export declare function useEditorUiStore<T>(selector: (state: EditorUiState) => T): T;
141
150
  export declare function useEditorUiStoreInstance(): EditorUiStoreInstance;
151
+ export declare function useOptionalEditorUiStoreInstance(): EditorUiStoreInstance | null;
@@ -0,0 +1,38 @@
1
+ export type BusinessAddressDraft = Readonly<{
2
+ addressLine1?: string | null;
3
+ addressLine2?: string | null;
4
+ locality?: string | null;
5
+ region?: string | null;
6
+ postalCode?: string | null;
7
+ countryCode?: string | null;
8
+ displayAddress?: string | null;
9
+ lat?: number | null;
10
+ lng?: number | null;
11
+ }>;
12
+ export type BusinessAddress = Readonly<{
13
+ addressLine1: string;
14
+ addressLine2: string | null;
15
+ locality: string;
16
+ region: string | null;
17
+ postalCode: string | null;
18
+ countryCode: string;
19
+ displayAddress: string;
20
+ lat: number;
21
+ lng: number;
22
+ }>;
23
+ export type BusinessAddressValidationErrorCode = 'missing_address_line_1' | 'missing_locality' | 'missing_country_code' | 'missing_display_address' | 'missing_latitude' | 'missing_longitude' | 'invalid_latitude' | 'invalid_longitude';
24
+ export type BusinessAddressValidationResult = Readonly<{
25
+ success: true;
26
+ address: BusinessAddress;
27
+ }> | Readonly<{
28
+ success: false;
29
+ errors: readonly BusinessAddressValidationErrorCode[];
30
+ }>;
31
+ export declare function buildBusinessAddressDisplayText(input: BusinessAddressDraft): string | null;
32
+ export declare function validateBusinessAddressDraft(input: BusinessAddressDraft): BusinessAddressValidationResult;
33
+ export declare function isCompleteBusinessAddress(value: BusinessAddressDraft | null | undefined): value is BusinessAddress;
34
+ export declare function businessAddressToAddressedLocation(address: BusinessAddress | null | undefined): Readonly<{
35
+ addressText: string | null;
36
+ lat: number | null;
37
+ lng: number | null;
38
+ }> | null;
@@ -10,6 +10,7 @@ export * from "./booking-date-time";
10
10
  export * from "./person-records";
11
11
  export * from "./rectification";
12
12
  export * from "./location";
13
+ export * from "./business-address";
13
14
  export * from "./result";
14
15
  export { assertNever } from "./assert-never";
15
16
  export { tryAsync } from "./try-async";