@riverbankcms/sdk 0.124.0 → 0.126.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 (130) hide show
  1. package/README.md +3 -1
  2. package/dist/{PreviewEditorSidebar-DBmAJJkQ.mjs → PreviewEditorSidebar-DcYJxTgc.mjs} +67 -266
  3. package/dist/{PreviewEditorUI-CfGaz9cY.mjs → PreviewEditorUI-Ctt1yTJr.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BH-3-jSj.mjs → PreviewQueryProvider-DgFDIwvK.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-BW9Z8j8T.mjs → SdkPreviewModeRuntime-CvW1vdQ4.mjs} +38 -30
  6. package/dist/{SiteChromeCustomizeContext-2z8moxYf.mjs → SiteChromeCustomizeContext-C87qlKWw.mjs} +493 -1378
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1354 -202
  8. package/dist/_dts/api/src/accessAdmin.d.ts +2 -14
  9. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  10. package/dist/_dts/api/src/contentRuntime.d.ts +0 -2
  11. package/dist/_dts/api/src/endpoints.d.ts +0 -7
  12. package/dist/_dts/api/src/sdk-event-upsert.d.ts +42 -0
  13. package/dist/_dts/api/src/sdkContracts.d.ts +11 -9
  14. package/dist/_dts/api/src/siteAccessAdmin.d.ts +23 -0
  15. package/dist/_dts/api/src/siteOperations.d.ts +18 -1
  16. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -14
  17. package/dist/_dts/billing/src/plans/types.d.ts +24 -5
  18. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +4 -0
  19. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +2 -0
  20. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +1 -0
  21. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +2 -0
  22. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +3 -1
  23. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +2 -1
  24. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +15 -2
  25. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +331 -19
  26. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +1 -2
  27. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -3
  28. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -2
  29. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -12
  30. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -13
  31. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +8 -100
  32. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -4
  33. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -15
  34. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +11 -21
  35. package/dist/_dts/sdk/src/cli/commands/event.d.ts +2 -2
  36. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +12 -0
  37. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +6 -0
  38. package/dist/_dts/sdk/src/cli/commands/style.d.ts +1 -1
  39. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +5 -0
  40. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +17 -0
  41. package/dist/_dts/sdk/src/cli/content/reader.d.ts +5 -10
  42. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +1 -1
  43. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +24 -0
  44. package/dist/_dts/sdk/src/client/management/http.d.ts +1 -1
  45. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -28
  46. package/dist/_dts/sdk/src/config/index.d.ts +1 -1
  47. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -20
  48. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  49. package/dist/_dts/sdk/src/version.d.ts +1 -1
  50. package/dist/_dts/site-commands/src/commandContract.d.ts +33 -5
  51. package/dist/_dts/site-commands/src/commandDomain.d.ts +2 -2
  52. package/dist/_dts/site-commands/src/commands.d.ts +38 -9
  53. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +28 -1
  54. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +4 -4
  55. package/dist/_dts/theme-core/src/palette/concretePalette.d.ts +20 -0
  56. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -17
  57. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -6
  58. package/dist/_dts/theme-core/src/palette/schema.d.ts +39 -0
  59. package/dist/_dts/theme-core/src/schema.d.ts +38 -26
  60. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -6
  61. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -6
  62. package/dist/cli/index.mjs +631 -525
  63. package/dist/cli/init-docs/content/cli-reference.md +6 -3
  64. package/dist/cli/init-docs/content/content-management.md +24 -13
  65. package/dist/client/{DiscountCodeDisclosure-DxvjKvck.mjs → DiscountCodeDisclosure-DS0AuFWW.mjs} +1 -1
  66. package/dist/client/{EventCombined.client-BydMGc4c.mjs → EventCombined.client-DtMxLr7q.mjs} +2 -2
  67. package/dist/client/{EventListing.client-vpzhhysN.mjs → EventListing.client-BdLSRNg1.mjs} +2 -2
  68. package/dist/client/{LeafletStaticMap-CB07rpf8.mjs → LeafletStaticMap-BrpC6vsT.mjs} +1 -1
  69. package/dist/client/{MagicLinkForm-BzyRJ8VF.mjs → MagicLinkForm-Bt3IuLMy.mjs} +1 -1
  70. package/dist/client/{StepIndicator-CTcGf8Be.mjs → StepIndicator-CBYPFVoy.mjs} +2 -2
  71. package/dist/client/{accordion-B-DUDLRD.mjs → accordion-BqqwPJWM.mjs} +1 -1
  72. package/dist/client/{bookingForm-DSbClLcZ.mjs → bookingForm-SneP3yxC.mjs} +5 -6
  73. package/dist/client/bookings.mjs +190 -24
  74. package/dist/client/{carousel-B6Ccdx8M.mjs → carousel-BTIR9L3I.mjs} +1 -1
  75. package/dist/client/{cart-BZh8G8wM.mjs → cart-bqiqd8SX.mjs} +3 -3
  76. package/dist/client/{checkout-o6zaC-kM.mjs → checkout-WbTFV5v4.mjs} +3 -3
  77. package/dist/client/client.mjs +175 -223
  78. package/dist/client/{courseRegistration-Cf11pNDs.mjs → courseRegistration-BcemLAdN.mjs} +6 -7
  79. package/dist/client/{eventCalendar-BeXrdsSE.mjs → eventCalendar-CsxIw0V_.mjs} +4 -4
  80. package/dist/client/{eventCombined-DA76PZgG.mjs → eventCombined-B6XMoHfa.mjs} +2 -2
  81. package/dist/client/{eventDetails-BLxg0rok.mjs → eventDetails-BJaoPPfo.mjs} +10 -5
  82. package/dist/client/{eventListing-tO9LheBX.mjs → eventListing-DgwdYHRT.mjs} +2 -2
  83. package/dist/client/{eventRegistration-Cnene9D9.mjs → eventRegistration-C0O3folu.mjs} +30 -22
  84. package/dist/client/{form-DZf72CHB.mjs → form-Bk9txGFt.mjs} +1 -1
  85. package/dist/client/{headerSection-Hioja5Cr.mjs → headerSection-yIBt0yTv.mjs} +2 -2
  86. package/dist/client/hooks.mjs +54 -102
  87. package/dist/client/{locationMap-DwhUXEix.mjs → locationMap-C-3KIpv-.mjs} +2 -2
  88. package/dist/client/{newsletterForm-C350bEQf.mjs → newsletterForm-CzB8g8h2.mjs} +1 -1
  89. package/dist/client/{pricing-BYWN_ATa.mjs → pricing-C1QeDes_.mjs} +1 -1
  90. package/dist/client/{productDetail-CCqCyXgU.mjs → productDetail-w7SBp5uc.mjs} +3 -3
  91. package/dist/client/{productList-BAiNJrOU.mjs → productList-D0tGKHGf.mjs} +3 -3
  92. package/dist/client/{propsDecoder-DeunRj6m.mjs → propsDecoder-Bcin2DB3.mjs} +172 -11
  93. package/dist/client/rendering/client.mjs +322 -363
  94. package/dist/client/rendering/islands.mjs +18 -18
  95. package/dist/client/rendering.mjs +231 -272
  96. package/dist/client/{useDiscountCodeUi-I-92-x2V.mjs → scrollToBlock-h-o_STf_.mjs} +18 -2
  97. package/dist/client/{shop-DUmCdBtw.mjs → shop-BGzmL8O_.mjs} +5 -6
  98. package/dist/client/{shop-commerce-CY27mEUr.mjs → shop-commerce-lX8QxjX-.mjs} +4 -4
  99. package/dist/client/{shop-commerce-store-ChXPbWfa.mjs → shop-commerce-store-CEurARtu.mjs} +1 -1
  100. package/dist/client/{shopShared-q0kin1cv.mjs → shopShared-DXxH8xxw.mjs} +2 -2
  101. package/dist/client/{useEventFilters-DlcVluZh.mjs → useEventFilters-B591g9vd.mjs} +2 -2
  102. package/dist/client/{usePolling-Bz7GFV_a.mjs → usePolling-BvnChV4m.mjs} +2 -2
  103. package/dist/preview-next/before-render.mjs +0 -7
  104. package/dist/preview-next/client/runtime.mjs +4 -4
  105. package/dist/preview-next/middleware.mjs +0 -7
  106. package/dist/{previewAuthStore-CJX21dGi.mjs → previewAuthStore-Dev9CdG9.mjs} +0 -7
  107. package/dist/{sdk-runtime-OnPM8Z69.mjs → sdk-runtime-M__i3Jce.mjs} +2 -2
  108. package/dist/{separator-CPtfzHqA.mjs → separator-VSlnI9bc.mjs} +1 -1
  109. package/dist/server/components.mjs +99 -141
  110. package/dist/server/config-validation.mjs +54 -102
  111. package/dist/server/config.mjs +54 -102
  112. package/dist/server/data.mjs +54 -102
  113. package/dist/server/index.mjs +1 -8
  114. package/dist/server/next.mjs +103 -152
  115. package/dist/server/page-converter.mjs +54 -102
  116. package/dist/server/prebuild.mjs +1 -1
  117. package/dist/server/rendering/server.mjs +62 -104
  118. package/dist/server/rendering.mjs +100 -142
  119. package/dist/server/routing.mjs +75 -147
  120. package/dist/server/server.mjs +55 -110
  121. package/dist/server/theme-bridge.mjs +172 -162
  122. package/dist/server/theme.mjs +167 -11
  123. package/package.json +1 -1
  124. package/dist/_dts/theme-core/src/palette/editorState.d.ts +0 -75
  125. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +0 -64
  126. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +0 -81
  127. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +0 -75
  128. package/dist/_dts/theme-core/src/palette/selection.d.ts +0 -74
  129. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +0 -34
  130. package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
@@ -5,6 +5,8 @@ import { z } from "zod";
5
5
  import type { PageRecord } from "./contentRuntime";
6
6
  import type { SiteDeploymentMode } from "./siteSettings";
7
7
  import type { SiteRole } from "./siteMembers";
8
+ import type { SiteAccessSummary, SitePlanSummaryResponse } from "./siteAccessAdmin";
9
+ export type { SiteAccessSummary, SitePlanSummaryResponse, } from "./siteAccessAdmin";
8
10
  /**
9
11
  * Access, Domain, and Admin Contracts
10
12
  *
@@ -67,19 +69,6 @@ export type SiteInvitation = {
67
69
  createdAt: string;
68
70
  updatedAt: string;
69
71
  };
70
- export type SiteAccessSummary = {
71
- membershipRole: SiteRole | null;
72
- canInvite: boolean;
73
- canManage: boolean;
74
- canTransferOwnership: boolean;
75
- };
76
- export type SitePlanSummaryResponse = {
77
- planId: string;
78
- maxCollaborators: number | null;
79
- canInviteEditors: boolean;
80
- canInviteAdmins: boolean;
81
- currentCollaborators: number;
82
- };
83
72
  export type ListSiteMembersResponse = {
84
73
  members: SiteMember[];
85
74
  invitations: SiteInvitation[];
@@ -696,4 +685,3 @@ export type AdminDeletePriceOverrideRequest = {
696
685
  export type AdminDeletePriceOverrideResponse = {
697
686
  success: true;
698
687
  };
699
- export {};
@@ -43,7 +43,7 @@ export interface ApiError {
43
43
  fieldErrors?: FieldError[];
44
44
  /**
45
45
  * Optional precise failure tag from the originating `DomainServiceError`
46
- * (e.g. `STALE_BASE`, `STALE_PALETTE`, `PALETTE_CAP_REACHED`). The coarse
46
+ * (e.g. `STALE_BASE`, `STALE_THEME_SELECTION`). The coarse
47
47
  * `code` collapses several tags into one (`resource:conflict`); `tag` lets
48
48
  * callers branch on the exact failure. Always optional and backward-compatible.
49
49
  */
@@ -1,6 +1,5 @@
1
1
  import type { Block, SdkCustomBlock, SdkCustomBlockInput, SiteFont, Theme } from '../../blocks/src/index';
2
2
  import type { CamelizeKeys, DbRow } from '../../db/src/index';
3
- import type { AuthoritativeRuntimePaletteState } from '../../theme-core/src/palette/index';
4
3
  import type { ContentTypeRoutingInfo, PublicContentTypeMeta } from './contentTypes';
5
4
  import type { SiteRuntimePrivacyPolicy } from './privacyPolicy';
6
5
  import type { SitePagePayload } from './sitePages';
@@ -356,7 +355,6 @@ export type SiteBySlugResponse = {
356
355
  * type — consumers fall back to the site style's defaults when null.
357
356
  */
358
357
  selectionButtonStyleSelection?: import('../../theme-core/src/buttons/index').ButtonStyleSelection | null;
359
- runtimePaletteState?: AuthoritativeRuntimePaletteState | null;
360
358
  selectionHeaderLayoutId?: string | null;
361
359
  selectionHeaderStyleId?: string | null;
362
360
  selectionHeaderLookId?: string | null;
@@ -1578,13 +1578,6 @@ export declare const API_ENDPOINTS: {
1578
1578
  readonly auth: "user";
1579
1579
  readonly responseKind: "json";
1580
1580
  };
1581
- readonly listSiteThemePalettes: {
1582
- readonly path: "/sites/{siteId}/theme/palettes";
1583
- readonly method: "GET";
1584
- readonly auth: "user";
1585
- readonly errors: readonly [];
1586
- readonly responseKind: "json";
1587
- };
1588
1581
  readonly createSiteFontUploadUrl: {
1589
1582
  readonly path: "/sites/{siteId}/fonts/upload-url";
1590
1583
  readonly method: "POST";
@@ -2,6 +2,45 @@ import type { SdkEntryUpsertSlotBlock, SdkEventContentInput, SdkPullEventSeries,
2
2
  import { type SdkEventPaymentTerms, type SdkEventPaymentTermsIssue } from './sdk-event-payment-terms';
3
3
  import { type SdkEventPricing, type SdkEventPricingIssue } from './sdk-event-pricing';
4
4
  import { type ClassifySdkEventScheduleOptions, type SdkEventCanonicalSchedule, type SdkEventScheduleInput, type SdkEventScheduleIssue } from './sdk-event-schedule';
5
+ import { z } from 'zod';
6
+ export declare const sdkEventOccurrenceInputSchema: z.ZodObject<{
7
+ startsAt: z.ZodString;
8
+ endsAt: z.ZodString;
9
+ timeZone: z.ZodString;
10
+ }, z.core.$strip>;
11
+ export declare const sdkEventUpsertOptionalFieldSchemas: {
12
+ readonly path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
13
+ readonly status: z.ZodOptional<z.ZodEnum<{
14
+ active: "active";
15
+ draft: "draft";
16
+ archived: "archived";
17
+ completed: "completed";
18
+ cancelled: "cancelled";
19
+ }>>;
20
+ readonly visibility: z.ZodOptional<z.ZodEnum<{
21
+ public: "public";
22
+ private: "private";
23
+ unlisted: "unlisted";
24
+ }>>;
25
+ readonly preset: z.ZodOptional<z.ZodEnum<{
26
+ course: "course";
27
+ event: "event";
28
+ performance: "performance";
29
+ class: "class";
30
+ workshop: "workshop";
31
+ retreat: "retreat";
32
+ }>>;
33
+ readonly bookingScope: z.ZodOptional<z.ZodEnum<{
34
+ single_occurrence: "single_occurrence";
35
+ whole_series: "whole_series";
36
+ }>>;
37
+ readonly occurrences: z.ZodOptional<z.ZodArray<z.ZodObject<{
38
+ startsAt: z.ZodString;
39
+ endsAt: z.ZodString;
40
+ timeZone: z.ZodString;
41
+ }, z.core.$strip>>>;
42
+ readonly capacity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
43
+ };
5
44
  export type SdkEventUpsertBody = Readonly<{
6
45
  identifier: string;
7
46
  title: string;
@@ -9,6 +48,9 @@ export type SdkEventUpsertBody = Readonly<{
9
48
  path?: string | null;
10
49
  status?: SdkPullEventSeries['status'];
11
50
  visibility?: SdkPullEventSeries['visibility'];
51
+ preset?: SdkPullEventSeries['preset'];
52
+ bookingScope?: SdkPullEventSeries['bookingScope'];
53
+ occurrences?: SdkPullEventSeries['occurrences'];
12
54
  schedule: SdkEventUpsertScheduleInput;
13
55
  capacity?: number | null;
14
56
  pricing?: SdkEventUpsertPricingInput;
@@ -5,6 +5,7 @@ import type { JsonValue } from './shared-contracts';
5
5
  import type { SdkEventPricing, SdkEventPricingInput } from './sdk-event-pricing';
6
6
  import type { SdkEventPaymentTerms, SdkEventPaymentTermsInput } from './sdk-event-payment-terms';
7
7
  import type { EventOccurrenceStatus } from './bookingRecords';
8
+ import type { EventPreset } from './bookingConfig';
8
9
  /**
9
10
  * SDK Site Configuration Types
10
11
  *
@@ -604,7 +605,7 @@ export interface SdkCatalogButtonStyle {
604
605
  export interface SdkCatalogPalette {
605
606
  /** Human-readable source alias. */
606
607
  authoringKey: string;
607
- /** Canonical persistence/runtime identity (colors+mode hash). */
608
+ /** Canonical authoring identity derived from colors and mode. */
608
609
  valueKey: string;
609
610
  name: string;
610
611
  description: string;
@@ -628,7 +629,6 @@ export interface SdkCatalogCurrentSelection {
628
629
  /** The curated site style the active theme was compiled from (null when unknown). */
629
630
  siteStyleId: string | null;
630
631
  buttonStyleSelection: SdkCatalogButtonStyleSelection | null;
631
- paletteValueKey: string | null;
632
632
  headerLayoutId: string | null;
633
633
  headerStyleId: string | null;
634
634
  headerLookId: string | null;
@@ -855,13 +855,9 @@ export interface SdkPullEventSeries {
855
855
  * IMPORTANT: This must be roundtrip-safe for SDK pull -> push workflows.
856
856
  */
857
857
  visibility: 'private' | 'public' | 'unlisted';
858
- schedule: {
859
- recurrenceRule: string | null;
860
- /** Date used for the first occurrence; required for one-off SDK-managed events. */
861
- startDate?: string | null;
862
- defaultStartTime: string;
863
- durationMinutes: number;
864
- };
858
+ preset: EventPreset;
859
+ bookingScope: 'single_occurrence' | 'whole_series';
860
+ occurrences: readonly SdkPullEventOccurrence[];
865
861
  capacity: number | null;
866
862
  pricing: SdkEventPricing;
867
863
  paymentTerms?: SdkEventPaymentTerms;
@@ -884,6 +880,11 @@ export interface SdkPullEventSeries {
884
880
  contentUpdatedAt: string | null;
885
881
  blocks?: SdkEntrySlotBlocks;
886
882
  }
883
+ export type SdkPullEventOccurrence = Readonly<{
884
+ startsAt: string;
885
+ endsAt: string;
886
+ timeZone: string;
887
+ }>;
887
888
  export type SdkEventContentInput = {
888
889
  summary?: string;
889
890
  body?: string | RichTextDoc;
@@ -1029,6 +1030,7 @@ export type SdkManagementEventCategory = SdkPullEventCategory & {
1029
1030
  };
1030
1031
  export type SdkManagementEventSeries = SdkPullEventSeries & {
1031
1032
  id: string;
1033
+ schedule: SdkEventCanonicalScheduleInput;
1032
1034
  };
1033
1035
  export type SdkEventOccurrenceProvenance = 'manual' | 'recurrence_generated' | 'recurrence_exception';
1034
1036
  export type SdkEventOccurrenceDeletionEligibility = {
@@ -0,0 +1,23 @@
1
+ import type { SiteRole } from './siteMembers';
2
+ export type SiteAccessSummary = {
3
+ membershipRole: SiteRole | null;
4
+ collaboration: 'manage' | 'view_only';
5
+ canTransferOwnership: boolean;
6
+ };
7
+ export type SitePlanSummaryResponse = {
8
+ planId: string;
9
+ websiteCollaboration: {
10
+ kind: 'owner_only' | 'bounded' | 'unlimited';
11
+ assignableRoles: readonly ('editor' | 'administrator')[];
12
+ placeLimit: number | null;
13
+ usage: {
14
+ accepted: number;
15
+ pending: number;
16
+ used: number;
17
+ remaining: number | null;
18
+ };
19
+ };
20
+ operationalStaff: {
21
+ enabled: boolean;
22
+ };
23
+ };
@@ -229,12 +229,29 @@ export type DevToolsSetSiteRoleDowngradeRequest = {
229
229
  };
230
230
  export type CronEventRemindersResponse = {
231
231
  success: true;
232
- sent: number;
232
+ scanned: number;
233
+ owned: number;
234
+ created: number;
235
+ existing: number;
236
+ skipped: number;
233
237
  failed: number;
234
238
  errors: Array<{
235
239
  attendeeId: string;
236
240
  error: string;
237
241
  }>;
242
+ errorsTruncated: number;
243
+ scan: {
244
+ kind: "completed";
245
+ pages: number;
246
+ } | {
247
+ kind: "incomplete";
248
+ reason: "page_budget" | "deadline";
249
+ pages: number;
250
+ lastCursor: {
251
+ createdAt: string;
252
+ attendeeId: string;
253
+ };
254
+ };
238
255
  };
239
256
  export type CronEventFeedbackEmailsResponse = {
240
257
  success: true;
@@ -3,7 +3,6 @@ import type { ListMediaAssetsResult, MediaAssetWithLabels } from '@riverbankcms/
3
3
  import type { DbJson } from '../../db/src/index';
4
4
  import type { PageDesignEditorReadModel, PageDesignIntent, AppearancePresetId, BoundaryOptionId, DesignBlockId, FooterLookId, HeaderLayoutId, HeaderLookId, HeaderStyleId, LayoutVariantKey, SiteStyleId } from '../../theme-core/src/site-styles/index';
5
5
  import type { ButtonStyleSelection } from '../../theme-core/src/buttons/index';
6
- import type { PaletteCommand, PaletteLibraryAuthority, PaletteSelection } from '../../theme-core/src/palette/index';
7
6
  import type { APIEndpoint } from './apiEndpointTypes';
8
7
  import type { AnalyticsReportQuery, AnalyticsReportResponse } from './analytics';
9
8
  import type { CreateMediaAssetBody, MediaAssetResponse, MediaAssetFileFilterContract, MediaBulkDeleteResponse, MediaClassifyJobResponse, MediaJobSummaryResponse, MediaLabelSummary, MediaSettingsResponse } from './media';
@@ -45,7 +44,7 @@ export type SiteStyleSelectionChange = Readonly<{
45
44
  buttonStyleSelection: ButtonStyleSelection | null;
46
45
  }> | Readonly<{
47
46
  kind: 'set-palette';
48
- command: PaletteCommand;
47
+ palette: Theme['palette'];
49
48
  }> | Readonly<{
50
49
  kind: 'set-typography';
51
50
  typography: Theme['typography'] | null;
@@ -73,18 +72,11 @@ export type ApplySiteStyleSelectionResponse = Readonly<{
73
72
  theme: Theme;
74
73
  siteStyleId: SiteStyleId;
75
74
  buttonStyleSelection: ButtonStyleSelection;
76
- activePaletteSelection: PaletteSelection;
77
- /** Present only when the active selection is a site palette. */
78
- activeSitePaletteVersion: number | null;
79
75
  headerLayoutId: HeaderLayoutId | null;
80
76
  headerStyleId: HeaderStyleId | null;
81
77
  headerLookId: HeaderLookId | null;
82
78
  footerLookId: FooterLookId | null;
83
79
  }>;
84
- export type ListSiteThemePalettesResponse = Readonly<{
85
- active: PaletteLibraryAuthority;
86
- palettes: readonly import('../../theme-core/src/palette/index').SitePalette[];
87
- }>;
88
80
  export type SaveSiteChromeLookSelectionBody = Readonly<{
89
81
  surface: 'header';
90
82
  lookId: HeaderLookId | null;
@@ -262,8 +254,6 @@ export type SiteRuntimeAPIEndpoints = {
262
254
  * local state without a follow-up read.
263
255
  */
264
256
  buttonStyleSelection: ButtonStyleSelection | null;
265
- activePaletteSelection: PaletteSelection;
266
- activeSitePaletteVersion: number | null;
267
257
  headerLayoutId: HeaderLayoutId | null;
268
258
  headerStyleId: HeaderStyleId | null;
269
259
  headerLookId: HeaderLookId | null;
@@ -272,9 +262,6 @@ export type SiteRuntimeAPIEndpoints = {
272
262
  applySiteStyleSelection: APIEndpoint<ApplySiteStyleSelectionBody, {
273
263
  siteId: string;
274
264
  }, ApplySiteStyleSelectionResponse>;
275
- listSiteThemePalettes: APIEndpoint<never, {
276
- siteId: string;
277
- }, ListSiteThemePalettesResponse>;
278
265
  saveSiteChromeLookSelection: APIEndpoint<SaveSiteChromeLookSelectionBody, {
279
266
  siteId: string;
280
267
  }, SaveSiteChromeLookSelectionResponse>;
@@ -40,9 +40,29 @@ export declare const BRANDING_TIERS: readonly ["macadamia_visible", "light_custo
40
40
  export type BrandingTier = (typeof BRANDING_TIERS)[number];
41
41
  export declare const TEAM_TIERS: readonly ["owner_only", "multi_practitioner"];
42
42
  export type TeamTier = (typeof TEAM_TIERS)[number];
43
- export declare const SITE_ROLE_ENTITLEMENTS: readonly ["administrator", "editor", "team_member"];
44
- export type SiteRoleEntitlement = (typeof SITE_ROLE_ENTITLEMENTS)[number];
45
- export declare const PLAN_BOOLEAN_FEATURE_KEYS: readonly ["customDomain", "customContentTypes", "analytics", "passes", "memberships", "discountCodes", "advancedPaymentSchemes", "internalNotes", "multipleTeamLogins", "multiplePractitioners"];
43
+ export declare const WEBSITE_COLLABORATOR_ROLES: readonly ["editor", "administrator"];
44
+ export type WebsiteCollaboratorRole = (typeof WEBSITE_COLLABORATOR_ROLES)[number];
45
+ export declare const WEBSITE_COLLABORATION_VISITOR_ROLES: readonly ["owner", "administrator", "editor", "team_member"];
46
+ export type WebsiteCollaborationVisitorRole = (typeof WEBSITE_COLLABORATION_VISITOR_ROLES)[number];
47
+ export type WebsiteCollaborationPolicy = Readonly<{
48
+ kind: 'owner_only';
49
+ assignableRoles: readonly [];
50
+ visibilityRoles: readonly ['owner'];
51
+ managementRoles: readonly ['owner'];
52
+ }> | Readonly<{
53
+ kind: 'bounded';
54
+ maxNonOwnerPlaces: 1;
55
+ assignableRoles: readonly ['editor', 'administrator'];
56
+ visibilityRoles: readonly ['owner', 'administrator'];
57
+ managementRoles: readonly ['owner'];
58
+ }> | Readonly<{
59
+ kind: 'unlimited';
60
+ assignableRoles: readonly ['editor', 'administrator'];
61
+ visibilityRoles: readonly ['owner', 'administrator', 'editor'];
62
+ managementRoles: readonly ['owner', 'administrator'];
63
+ }>;
64
+ export type WebsiteCollaborationTier = WebsiteCollaborationPolicy['kind'];
65
+ export declare const PLAN_BOOLEAN_FEATURE_KEYS: readonly ["customDomain", "customContentTypes", "analytics", "passes", "memberships", "discountCodes", "advancedPaymentSchemes", "internalNotes", "multiplePractitioners"];
46
66
  export type PlanBooleanFeatureKey = (typeof PLAN_BOOLEAN_FEATURE_KEYS)[number];
47
67
  export type StripeBookingCommission = Readonly<{
48
68
  kind: 'none';
@@ -75,15 +95,14 @@ export interface PlanEntitlements {
75
95
  discountCodes: boolean;
76
96
  advancedPaymentSchemes: boolean;
77
97
  internalNotes: boolean;
78
- multipleTeamLogins: boolean;
79
98
  multiplePractitioners: boolean;
99
+ websiteCollaboration: WebsiteCollaborationPolicy;
80
100
  contentFlexibility: ContentFlexibilityTier;
81
101
  forms: FormsTier;
82
102
  seo: SeoTier;
83
103
  newsletter: NewsletterTier;
84
104
  branding: BrandingTier;
85
105
  team: TeamTier;
86
- enabledSiteRoles: readonly SiteRoleEntitlement[];
87
106
  }
88
107
  export interface PlanDefinition {
89
108
  id: BillingPlanId;
@@ -3,6 +3,7 @@ import { type EventAutoApplyDiscountPreview } from '../system/blocks/event-detai
3
3
  import type { PublicMembershipProductCollection, PublicPassProductCollection } from '../system/blocks/shop.shared';
4
4
  import type { PublicEvent } from '../system/blocks/events/shared/types';
5
5
  import type { OccurrenceContextLike } from '../system/runtime/nodes/event-details/logic';
6
+ import { type EventRegistrationPageSurfaceSubject } from '../system/runtime/nodes/event-registration/eventScope';
6
7
  import type { LocationMapHydrationProps } from '../system/runtime/nodes/location-map.shared';
7
8
  export type AccordionIslandProps = Readonly<{
8
9
  type?: 'single' | 'multiple';
@@ -26,6 +27,7 @@ export type CarouselIslandProps = Readonly<{
26
27
  export type EventDetailsOccurrenceContext = NonNullable<OccurrenceContextLike>;
27
28
  export type EventDetailsIslandProps = Readonly<{
28
29
  occurrenceContext?: EventDetailsOccurrenceContext | null;
30
+ subject?: EventRegistrationPageSurfaceSubject | null;
29
31
  events?: readonly PublicEvent[] | null;
30
32
  showVenue?: boolean;
31
33
  showMap?: boolean;
@@ -88,6 +90,7 @@ export declare const carouselIslandPropsCodec: Readonly<{
88
90
  export declare const eventDetailsIslandPropsCodec: Readonly<{
89
91
  encode: (value: Readonly<{
90
92
  occurrenceContext?: EventDetailsOccurrenceContext | null;
93
+ subject?: EventRegistrationPageSurfaceSubject | null;
91
94
  events?: readonly PublicEvent[] | null;
92
95
  showVenue?: boolean;
93
96
  showMap?: boolean;
@@ -108,6 +111,7 @@ export declare const eventDetailsIslandPropsCodec: Readonly<{
108
111
  }>) => unknown;
109
112
  decode: (input: unknown) => import("./runtime").DecodeResult<Readonly<{
110
113
  occurrenceContext?: EventDetailsOccurrenceContext | null;
114
+ subject?: EventRegistrationPageSurfaceSubject | null;
111
115
  events?: readonly PublicEvent[] | null;
112
116
  showVenue?: boolean;
113
117
  showMap?: boolean;
@@ -1921,6 +1921,7 @@ export declare const runtimeIslandCodecs: {
1921
1921
  readonly 'event-details': Readonly<{
1922
1922
  encode: (value: Readonly<{
1923
1923
  occurrenceContext?: import("./non-block-islands").EventDetailsOccurrenceContext | null;
1924
+ subject?: import("../system/runtime/nodes/event-registration/eventScope").EventRegistrationPageSurfaceSubject | null;
1924
1925
  events?: readonly import(".").PublicEvent[] | null;
1925
1926
  showVenue?: boolean;
1926
1927
  showMap?: boolean;
@@ -1941,6 +1942,7 @@ export declare const runtimeIslandCodecs: {
1941
1942
  }>) => unknown;
1942
1943
  decode: (input: unknown) => import("./runtime").DecodeResult<Readonly<{
1943
1944
  occurrenceContext?: import("./non-block-islands").EventDetailsOccurrenceContext | null;
1945
+ subject?: import("../system/runtime/nodes/event-registration/eventScope").EventRegistrationPageSurfaceSubject | null;
1944
1946
  events?: readonly import(".").PublicEvent[] | null;
1945
1947
  showVenue?: boolean;
1946
1948
  showMap?: boolean;
@@ -2467,6 +2467,7 @@ export declare const clientComponentRegistryEntries: {
2467
2467
  kind: "explicit-adapter";
2468
2468
  component: React.ComponentType<Readonly<{
2469
2469
  occurrenceContext?: import("../../../contracts").EventDetailsOccurrenceContext | null;
2470
+ subject?: import("../nodes/event-registration/eventScope").EventRegistrationPageSurfaceSubject | null;
2470
2471
  events?: readonly import("../..").PublicEvent[] | null;
2471
2472
  showVenue?: boolean;
2472
2473
  showMap?: boolean;
@@ -1,4 +1,5 @@
1
1
  import type { PublicEvent } from '../../../blocks/events/shared/types';
2
+ import { type EventRegistrationPageSurfaceSubject } from '../event-registration/eventScope';
2
3
  export { filterPassesForEvent, filterMembershipsForEvent, } from '../events/shared/eventProductEligibility';
3
4
  export type OccurrenceContextLike = {
4
5
  id: string;
@@ -16,6 +17,7 @@ export type EventDetailsSelection = {
16
17
  export declare function selectEventDetails(args: {
17
18
  events: PublicEvent[] | null | undefined;
18
19
  occurrenceContext: OccurrenceContextLike | null | undefined;
20
+ subject?: EventRegistrationPageSurfaceSubject | null;
19
21
  nowIso: string;
20
22
  otherDatesLimit: string | number | null | undefined;
21
23
  }): EventDetailsSelection;
@@ -2,10 +2,12 @@ import React from 'react';
2
2
  import type { EventAutoApplyDiscountPreview } from '../../blocks/event-details';
3
3
  import type { EventDetailsIslandProps } from '../../../contracts';
4
4
  import type { PublicEvent } from '../../blocks/events/shared/types';
5
+ import type { EventRegistrationPageSurfaceSubject } from './event-registration/eventScope';
5
6
  import type { PublicMembershipProductCollection, PublicPassProductCollection } from '../../blocks/shop';
6
7
  import { type OccurrenceContextLike } from './event-details/logic';
7
8
  export type EventDetailsClientProps = Readonly<{
8
9
  occurrenceContext?: OccurrenceContextLike | null;
10
+ subject?: EventRegistrationPageSurfaceSubject | null;
9
11
  events?: PublicEvent[] | null;
10
12
  showVenue?: boolean;
11
13
  showMap?: boolean;
@@ -25,6 +27,6 @@ export type EventDetailsClientProps = Readonly<{
25
27
  children?: React.ReactNode;
26
28
  }>;
27
29
  export type EventDetailsIslandClientProps = EventDetailsIslandProps;
28
- export declare function EventDetailsClient({ occurrenceContext, events, showVenue, showMap, showOtherDates, otherDatesLimit, showCost, showAcceptedPasses, showAcceptedMemberships, sitePasses, siteMemberships, autoApplyDiscount, className, nowIso, children, }: EventDetailsClientProps): React.JSX.Element;
30
+ export declare function EventDetailsClient({ occurrenceContext, subject, events, showVenue, showMap, showOtherDates, otherDatesLimit, showCost, showAcceptedPasses, showAcceptedMemberships, sitePasses, siteMemberships, autoApplyDiscount, className, nowIso, children, }: EventDetailsClientProps): React.JSX.Element;
29
31
  export declare function EventDetailsIslandClient(props: EventDetailsIslandClientProps): React.JSX.Element;
30
32
  export default EventDetailsClient;
@@ -6,6 +6,7 @@ import { type OccurrenceContextLike } from './event-details/logic';
6
6
  type EventDetailsProps = {
7
7
  blockId?: string | null;
8
8
  occurrenceContext?: OccurrenceContextLike | null;
9
+ subject?: unknown;
9
10
  events?: PublicEvent[] | null;
10
11
  showVenue?: boolean;
11
12
  showMap?: boolean;
@@ -23,5 +24,5 @@ type EventDetailsProps = {
23
24
  className?: string | null;
24
25
  children?: React.ReactNode;
25
26
  };
26
- export declare function EventDetailsSSR({ blockId, occurrenceContext, events, showVenue, showMap, showOtherDates, otherDatesLimit, showCost, showAcceptedPasses, showAcceptedMemberships, sitePasses, siteMemberships, autoApplyDiscount, className, children, }: EventDetailsProps): React.JSX.Element;
27
+ export declare function EventDetailsSSR({ blockId, occurrenceContext, subject, events, showVenue, showMap, showOtherDates, otherDatesLimit, showCost, showAcceptedPasses, showAcceptedMemberships, sitePasses, siteMemberships, autoApplyDiscount, className, children, }: EventDetailsProps): React.JSX.Element;
27
28
  export default EventDetailsSSR;
@@ -1,7 +1,9 @@
1
1
  import { usePaymentVerification } from '../../hooks/usePaymentVerification';
2
2
  import type { BlockApiClient } from '../../api';
3
+ import { consumeSearchParam, scrollToBlock } from '../../shared';
4
+ import { cleanupStaleRegistrations, clearPendingRegistration, getPendingRegistration } from './sessionStorage';
3
5
  import type { EventTicketSelectionLine, FormData, PaymentSelection, RegistrationEvent, RegistrationResult, RegistrationStep } from './types';
4
- export declare function useEventRegistrationStripeReturn(options: {
6
+ type EventRegistrationStripeReturnOptions = {
5
7
  api: BlockApiClient;
6
8
  events: RegistrationEvent[];
7
9
  occurrenceId: string;
@@ -17,4 +19,15 @@ export declare function useEventRegistrationStripeReturn(options: {
17
19
  setStep: (step: RegistrationStep) => void;
18
20
  setRegistrationResult: (result: RegistrationResult) => void;
19
21
  setErrorMessage: (message: string) => void;
20
- }): ReturnType<typeof usePaymentVerification>;
22
+ };
23
+ export type EventRegistrationStripeReturnDeps = Readonly<{
24
+ usePaymentVerification: typeof usePaymentVerification;
25
+ consumeSearchParam: typeof consumeSearchParam;
26
+ scrollToBlock: typeof scrollToBlock;
27
+ cleanupStaleRegistrations: typeof cleanupStaleRegistrations;
28
+ clearPendingRegistration: typeof clearPendingRegistration;
29
+ getPendingRegistration: typeof getPendingRegistration;
30
+ }>;
31
+ export declare function useEventRegistrationStripeReturn(options: EventRegistrationStripeReturnOptions): ReturnType<typeof usePaymentVerification>;
32
+ export declare function useEventRegistrationStripeReturnWithDeps(options: EventRegistrationStripeReturnOptions, deps: EventRegistrationStripeReturnDeps): ReturnType<typeof usePaymentVerification>;
33
+ export {};