@riverbankcms/sdk 0.125.0 → 0.127.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 (177) hide show
  1. package/README.md +3 -1
  2. package/dist/{PreviewEditorSidebar-BezDOtQ7.mjs → PreviewEditorSidebar-BXtfF7tp.mjs} +122 -301
  3. package/dist/{PreviewEditorUI-CgSqmfo2.mjs → PreviewEditorUI-Dou73Q0K.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BH-3-jSj.mjs → PreviewQueryProvider-DgFDIwvK.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Co3AHfj0.mjs → SdkPreviewModeRuntime-B0HPXr-l.mjs} +141 -63
  6. package/dist/{SiteChromeCustomizeContext-BHF-KANn.mjs → SiteChromeCustomizeContext-DZiDBAYu.mjs} +5330 -5841
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1552 -202
  8. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  9. package/dist/_dts/api/src/contentRuntime.d.ts +1 -7
  10. package/dist/_dts/api/src/endpoints.d.ts +0 -7
  11. package/dist/_dts/api/src/sdk-event-upsert.d.ts +42 -0
  12. package/dist/_dts/api/src/sdkContracts.d.ts +11 -9
  13. package/dist/_dts/api/src/siteOperations.d.ts +18 -1
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -14
  15. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  16. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  17. package/dist/_dts/blocks/src/index.d.ts +3 -2
  18. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  19. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  20. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +15 -2
  21. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  22. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  23. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  24. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  25. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  26. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  27. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +322 -171
  28. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  29. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  30. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  31. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  32. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  33. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  34. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  35. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  36. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  37. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  38. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  39. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +1 -2
  40. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -3
  41. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -2
  42. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +6 -60
  43. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -13
  44. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +8 -100
  45. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  46. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  47. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  48. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  49. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  50. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  51. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -4
  52. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -15
  53. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +11 -21
  54. package/dist/_dts/sdk/src/cli/commands/event.d.ts +2 -2
  55. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +12 -0
  56. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +6 -0
  57. package/dist/_dts/sdk/src/cli/commands/style.d.ts +1 -1
  58. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +5 -0
  59. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +17 -0
  60. package/dist/_dts/sdk/src/cli/content/reader.d.ts +5 -10
  61. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +1 -1
  62. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +24 -0
  63. package/dist/_dts/sdk/src/client/management/http.d.ts +1 -1
  64. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -28
  65. package/dist/_dts/sdk/src/config/index.d.ts +1 -1
  66. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -20
  67. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  68. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  69. package/dist/_dts/sdk/src/version.d.ts +1 -1
  70. package/dist/_dts/site-commands/src/commandContract.d.ts +33 -5
  71. package/dist/_dts/site-commands/src/commandDomain.d.ts +2 -2
  72. package/dist/_dts/site-commands/src/commands.d.ts +38 -9
  73. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +28 -1
  74. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +4 -4
  75. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  76. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  77. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  78. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  79. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  81. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  82. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +25 -0
  83. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  84. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +9 -0
  85. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  86. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  87. package/dist/_dts/theme-core/src/palette/concretePalette.d.ts +20 -0
  88. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -17
  89. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -6
  90. package/dist/_dts/theme-core/src/palette/schema.d.ts +39 -0
  91. package/dist/_dts/theme-core/src/schema.d.ts +105 -45
  92. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  93. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  94. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  95. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  96. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  97. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  98. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  99. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  100. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  101. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  102. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  103. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  104. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  105. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +5 -7
  106. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -6
  107. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  108. package/dist/cli/index.mjs +1583 -1601
  109. package/dist/cli/init-docs/content/cli-reference.md +6 -3
  110. package/dist/cli/init-docs/content/content-management.md +24 -13
  111. package/dist/client/{DiscountCodeDisclosure-CyPpekBp.mjs → DiscountCodeDisclosure-BDFRp8Y7.mjs} +1 -1
  112. package/dist/client/{EventCombined.client-zywit-60.mjs → EventCombined.client-DJgF1_lf.mjs} +2 -2
  113. package/dist/client/{EventListing.client-J2nLhkKT.mjs → EventListing.client-CnWGNjOr.mjs} +2 -2
  114. package/dist/client/{LeafletStaticMap-CSubXWt6.mjs → LeafletStaticMap-BISs9Bl7.mjs} +1 -1
  115. package/dist/client/{MagicLinkForm-DDLIfiq9.mjs → MagicLinkForm-b5E_HoG9.mjs} +1 -1
  116. package/dist/client/{StepIndicator-DE8EvHIp.mjs → StepIndicator-D8gVYkK-.mjs} +2 -2
  117. package/dist/client/{accordion-Ct5T5NiA.mjs → accordion-DFDajgDz.mjs} +1 -1
  118. package/dist/client/{bookingForm-DMxtLPxw.mjs → bookingForm-Bdqj9-52.mjs} +5 -6
  119. package/dist/client/bookings.mjs +315 -46
  120. package/dist/client/{carousel--FMqgvob.mjs → carousel-Cvqf-kN8.mjs} +1 -1
  121. package/dist/client/{cart-BKX1bWiU.mjs → cart-CuH2TJXP.mjs} +3 -3
  122. package/dist/client/{checkout-B_jxi4WW.mjs → checkout-CMNPpejZ.mjs} +3 -3
  123. package/dist/client/client.mjs +1381 -1427
  124. package/dist/client/{courseRegistration-DH4MlkRD.mjs → courseRegistration-DTEYWL6Z.mjs} +6 -7
  125. package/dist/client/{eventCalendar-BQILwAcL.mjs → eventCalendar-BW-XoxZ0.mjs} +4 -4
  126. package/dist/client/{eventCombined-DFFW_Vmo.mjs → eventCombined-Bpn7s0y9.mjs} +2 -2
  127. package/dist/client/{eventDetails-B045CTSJ.mjs → eventDetails-D2uUSTMH.mjs} +3 -3
  128. package/dist/client/{eventListing-BDMYNVzS.mjs → eventListing-CVr1c094.mjs} +2 -2
  129. package/dist/client/{eventRegistration-CQ2-BSnB.mjs → eventRegistration-Dv4AvkMw.mjs} +30 -22
  130. package/dist/client/{form-DJKuyZgN.mjs → form-DxdKf9fs.mjs} +1 -1
  131. package/dist/client/{headerSection-DeTjfiDo.mjs → headerSection-BaXI5Sro.mjs} +2 -2
  132. package/dist/client/hooks.mjs +851 -976
  133. package/dist/client/{locationMap-i2wDA8gB.mjs → locationMap-BEtW2fKz.mjs} +2 -2
  134. package/dist/client/{newsletterForm-DKiueauk.mjs → newsletterForm-BKKs0S4R.mjs} +1 -1
  135. package/dist/client/{pricing-C01J3Epx.mjs → pricing-ClkqcElA.mjs} +1 -1
  136. package/dist/client/{productDetail-Dfc1sZaX.mjs → productDetail-H-ru8dyy.mjs} +3 -3
  137. package/dist/client/{productList-BXbvXWTF.mjs → productList-Buyi5c0C.mjs} +3 -3
  138. package/dist/client/{propsDecoder-CIR5DQ1l.mjs → propsDecoder-BF7i6Ijg.mjs} +293 -65
  139. package/dist/client/rendering/client.mjs +1145 -1190
  140. package/dist/client/rendering/islands.mjs +18 -18
  141. package/dist/client/rendering.mjs +1257 -1298
  142. package/dist/client/{useDiscountCodeUi-Bcyh4508.mjs → scrollToBlock-D_7t8yWb.mjs} +18 -2
  143. package/dist/client/{shop-BbNwPKM-.mjs → shop-CF7SZQNX.mjs} +5 -6
  144. package/dist/client/{shop-commerce-XO-XMFEt.mjs → shop-commerce-DA7_Rq5p.mjs} +4 -4
  145. package/dist/client/{shop-commerce-store-Byh6OUGK.mjs → shop-commerce-store-BmLqW7Gh.mjs} +1 -1
  146. package/dist/client/{shopShared-Bbq39mwr.mjs → shopShared-WL-E1znM.mjs} +2 -2
  147. package/dist/client/{useEventFilters-C8OOJ3el.mjs → useEventFilters-rc8VLeLV.mjs} +2 -2
  148. package/dist/client/{usePolling-CyJVo9kF.mjs → usePolling-1ncrfd4S.mjs} +2 -2
  149. package/dist/preview-next/before-render.mjs +0 -7
  150. package/dist/preview-next/client/runtime.mjs +4 -4
  151. package/dist/preview-next/middleware.mjs +0 -7
  152. package/dist/{previewAuthStore-CJX21dGi.mjs → previewAuthStore-Dev9CdG9.mjs} +0 -7
  153. package/dist/{sdk-runtime-BGhyuE-E.mjs → sdk-runtime-BnrCCFJq.mjs} +2 -2
  154. package/dist/{separator-BFs-Kmv5.mjs → separator-CFvBx2yl.mjs} +1 -1
  155. package/dist/server/components.mjs +1389 -1489
  156. package/dist/server/config-validation.mjs +851 -976
  157. package/dist/server/config.mjs +851 -976
  158. package/dist/server/data.mjs +851 -976
  159. package/dist/server/index.mjs +1 -8
  160. package/dist/server/next.mjs +1393 -1500
  161. package/dist/server/page-converter.mjs +851 -976
  162. package/dist/server/prebuild.mjs +1 -1
  163. package/dist/server/rendering/server.mjs +1346 -1446
  164. package/dist/server/rendering.mjs +1390 -1490
  165. package/dist/server/routing.mjs +939 -1041
  166. package/dist/server/server.mjs +852 -984
  167. package/dist/server/theme-bridge.mjs +322 -279
  168. package/dist/server/theme.mjs +277 -33
  169. package/package.json +1 -1
  170. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
  171. package/dist/_dts/theme-core/src/palette/editorState.d.ts +0 -75
  172. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +0 -64
  173. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +0 -81
  174. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +0 -75
  175. package/dist/_dts/theme-core/src/palette/selection.d.ts +0 -74
  176. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +0 -34
  177. package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
@@ -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';
@@ -350,13 +349,8 @@ export type SiteBySlugResponse = {
350
349
  selectionId?: string | null;
351
350
  selectionVersion?: number | null;
352
351
  selectionUpdatedAt?: string | null;
353
- /**
354
- * Persisted Style configurator selections (Phase C). Optional so legacy
355
- * site_theme_selections rows (pre-migration) still satisfy the response
356
- * type — consumers fall back to the site style's defaults when null.
357
- */
352
+ /** Canonical persisted style selection; null only when no current selection exists. */
358
353
  selectionButtonStyleSelection?: import('../../theme-core/src/buttons/index').ButtonStyleSelection | null;
359
- runtimePaletteState?: AuthoritativeRuntimePaletteState | null;
360
354
  selectionHeaderLayoutId?: string | null;
361
355
  selectionHeaderStyleId?: string | null;
362
356
  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 = {
@@ -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>;
@@ -5,6 +5,7 @@
5
5
  * Supports blocks (per-block data), metadata, content, and linkedContent (embedded entry data).
6
6
  */
7
7
  import type { EditorBlockId, EditorSyncState } from '../../../core/src/index';
8
+ import { type BlockDraftSaveability } from '../blockDraftSaveability';
8
9
  import type { FormBackend, StoreBackendOptions } from './types';
9
10
  type StoreSnapshot = {
10
11
  current: Record<string, unknown> | null;
@@ -45,7 +46,7 @@ interface EditorStoreState {
45
46
  blockValidation?: {
46
47
  markPathEdited: (blockId: EditorBlockId, path: string) => void;
47
48
  isPathEdited: (blockId: EditorBlockId, path: string) => boolean;
48
- showAllValidation: (blockId: EditorBlockId) => boolean;
49
+ getBlockSaveability: (blockId: EditorBlockId) => BlockDraftSaveability;
49
50
  };
50
51
  arrayKeys: ArrayKeysManager;
51
52
  requestFocus?: (payload: {
@@ -93,6 +93,7 @@ export declare function shouldShowBlockFieldValidation(input: {
93
93
  touchedPaths: ReadonlySet<string>;
94
94
  showAllValidation: boolean;
95
95
  }): boolean;
96
+ export declare function shouldRevealAllBlockFieldValidation(saveability: BlockDraftSaveability): boolean;
96
97
  export declare function validateBlockManifestValues(manifest: BlockManifest, values: Record<string, unknown>): BlockDraftValidationIssue[];
97
98
  export declare function validateBlockManifestIssues(manifest: BlockManifest, values: Record<string, unknown>, mode: BlockManifestValidationMode): ManifestValidationIssue[];
98
99
  export declare function validateBlockManifest(manifest: BlockManifest, values: Record<string, unknown>, mode: BlockManifestValidationMode): BlockDraftValidationIssue[];
@@ -51,9 +51,10 @@ export { singleButtonManifest } from './system/blocks/single-button';
51
51
  export { Text, RichText } from './primitives/content/primitives';
52
52
  export type { PrimitiveAPI, RichTextPrimitiveProps, RichTextVariant, TextProps, } from './primitives/content/primitives';
53
53
  export { resolveImageUrl, ImagePresets, buildMediaAssetIndex, buildResolveImageUrlContext, setContextSupabaseUrl, setContextSiteId, setContextMediaAssetIndex, setContextResolveImageUrlContext, setContextMediaAssets, getSiteId, runWithMediaContext, computeMediaTransformStyle, resolveImageSourceSetWithContext, resolveImageUrlResult, resolveImageUrlWithContext, resolveImageUrlWithContextResult, resolveMediaStorageUrl, resolveMediaStorageUrlResult, resolveMediaWithContext, resolveTargetAspectRatio, } from './system/runtime/nodes/media';
54
+ export { mergeResolveImageUrlContexts } from './system/runtime/nodes/mergeResolveImageUrlContexts';
54
55
  export type { ImageOptions, MediaAssetIndex, MediaAssetIndexItem, MediaUrlResolution, ResolveImageSourceSetOptions, ResolveImageUrlContext, ResolveImageUrlContextInput, ResolvedImageSourceSet, } from './system/runtime/nodes/media';
55
- export type { AudioMedia, ArchiveMedia, DocumentMedia, ImageMedia, Media, MediaOfType, MediaTypeDiscriminant, PublicDownloadMediaType, PublicDownloadMedia, SpreadsheetMedia, VideoMedia, } from './lib/media';
56
- export { MEDIA_TYPE_DISCRIMINANTS, PUBLIC_DOWNLOAD_MEDIA_TYPES, isMediaTypeDiscriminant, mediaSchema, mediaTypeDiscriminantFromMimeType, } from './lib/media';
56
+ export type { AudioMedia, ArchiveMedia, DocumentMedia, ImageMedia, Media, MediaIdentifier, MediaOfType, MediaTypeDiscriminant, PublicDownloadMediaType, PublicDownloadMedia, PersistableMedia, SpreadsheetMedia, VideoMedia, } from './lib/media';
57
+ export { MEDIA_TYPE_DISCRIMINANTS, PUBLIC_DOWNLOAD_MEDIA_TYPES, isMediaTypeDiscriminant, mediaIdentifierSchema, mediaSchema, mediaTypeDiscriminantFromMimeType, persistableMediaSchema, } from './lib/media';
57
58
  export { SECTION_BACKGROUND_MIN_SOURCE_HEIGHT, SECTION_BACKGROUND_MIN_SOURCE_WIDTH, resolveMediaSlotContract, } from './system/media/slotContracts';
58
59
  export { collectConstrainedVideoMediaValues } from './system/media/constrainedVideoMedia';
59
60
  export type { ConstrainedVideoMediaValue } from './system/media/constrainedVideoMedia';
@@ -5,6 +5,13 @@ export declare const PUBLIC_DOWNLOAD_MEDIA_TYPES: readonly ["document", "spreads
5
5
  export type PublicDownloadMediaType = typeof PUBLIC_DOWNLOAD_MEDIA_TYPES[number];
6
6
  export declare function isMediaTypeDiscriminant(value: unknown): value is MediaTypeDiscriminant;
7
7
  export declare function mediaTypeDiscriminantFromMimeType(mimeType: string): MediaTypeDiscriminant | null;
8
+ /**
9
+ * Canonical identifier carried by media values that are safe to persist.
10
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
11
+ * identifiers or independently disagree about normalization.
12
+ */
13
+ export declare const mediaIdentifierSchema: z.core.$ZodBranded<z.ZodString, "MediaIdentifier", "out">;
14
+ export type MediaIdentifier = z.infer<typeof mediaIdentifierSchema>;
8
15
  export declare const mediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
9
16
  purpose: z.ZodOptional<z.ZodString>;
10
17
  placeholder: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
@@ -264,7 +271,267 @@ export declare const mediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
264
271
  }, z.core.$strip>>;
265
272
  type: z.ZodLiteral<"archive">;
266
273
  }, z.core.$strip>], "type">;
274
+ export declare const persistableMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
275
+ purpose: z.ZodOptional<z.ZodString>;
276
+ placeholder: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
277
+ assetId: z.ZodOptional<z.ZodString>;
278
+ src: z.ZodOptional<z.ZodString>;
279
+ alt: z.ZodOptional<z.ZodString>;
280
+ filename: z.ZodOptional<z.ZodString>;
281
+ mimeType: z.ZodOptional<z.ZodString>;
282
+ width: z.ZodOptional<z.ZodNumber>;
283
+ height: z.ZodOptional<z.ZodNumber>;
284
+ storageBucket: z.ZodOptional<z.ZodString>;
285
+ storagePath: z.ZodOptional<z.ZodString>;
286
+ poster: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
287
+ tag: z.ZodLiteral<"storage">;
288
+ assetId: z.ZodOptional<z.ZodString>;
289
+ storageBucket: z.ZodString;
290
+ storagePath: z.ZodString;
291
+ }, z.core.$strip>, z.ZodObject<{
292
+ tag: z.ZodLiteral<"external-src">;
293
+ assetId: z.ZodOptional<z.ZodString>;
294
+ src: z.ZodString;
295
+ }, z.core.$strip>], "tag">>;
296
+ transform: z.ZodOptional<z.ZodObject<{
297
+ aspectCrops: z.ZodOptional<z.ZodPipe<z.ZodTransform<object | undefined, unknown>, z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
298
+ aspect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodString>>;
299
+ rect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
300
+ hotspot: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodObject<{
301
+ x: z.ZodNumber;
302
+ y: z.ZodNumber;
303
+ radius: z.ZodOptional<z.ZodNumber>;
304
+ }, z.core.$strip>>>;
305
+ rotation: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>>;
306
+ }, z.core.$strip>>>>>;
307
+ rect: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
308
+ hotspot: z.ZodOptional<z.ZodObject<{
309
+ x: z.ZodNumber;
310
+ y: z.ZodNumber;
311
+ radius: z.ZodOptional<z.ZodNumber>;
312
+ }, z.core.$strip>>;
313
+ rotation: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
314
+ }, z.core.$strip>>;
315
+ identifier: z.core.$ZodBranded<z.ZodString, "MediaIdentifier", "out">;
316
+ type: z.ZodLiteral<"image">;
317
+ }, z.core.$strip>, z.ZodObject<{
318
+ purpose: z.ZodOptional<z.ZodString>;
319
+ placeholder: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
320
+ assetId: z.ZodOptional<z.ZodString>;
321
+ src: z.ZodOptional<z.ZodString>;
322
+ alt: z.ZodOptional<z.ZodString>;
323
+ filename: z.ZodOptional<z.ZodString>;
324
+ mimeType: z.ZodOptional<z.ZodString>;
325
+ width: z.ZodOptional<z.ZodNumber>;
326
+ height: z.ZodOptional<z.ZodNumber>;
327
+ storageBucket: z.ZodOptional<z.ZodString>;
328
+ storagePath: z.ZodOptional<z.ZodString>;
329
+ poster: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
330
+ tag: z.ZodLiteral<"storage">;
331
+ assetId: z.ZodOptional<z.ZodString>;
332
+ storageBucket: z.ZodString;
333
+ storagePath: z.ZodString;
334
+ }, z.core.$strip>, z.ZodObject<{
335
+ tag: z.ZodLiteral<"external-src">;
336
+ assetId: z.ZodOptional<z.ZodString>;
337
+ src: z.ZodString;
338
+ }, z.core.$strip>], "tag">>;
339
+ transform: z.ZodOptional<z.ZodObject<{
340
+ aspectCrops: z.ZodOptional<z.ZodPipe<z.ZodTransform<object | undefined, unknown>, z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
341
+ aspect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodString>>;
342
+ rect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
343
+ hotspot: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodObject<{
344
+ x: z.ZodNumber;
345
+ y: z.ZodNumber;
346
+ radius: z.ZodOptional<z.ZodNumber>;
347
+ }, z.core.$strip>>>;
348
+ rotation: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>>;
349
+ }, z.core.$strip>>>>>;
350
+ rect: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
351
+ hotspot: z.ZodOptional<z.ZodObject<{
352
+ x: z.ZodNumber;
353
+ y: z.ZodNumber;
354
+ radius: z.ZodOptional<z.ZodNumber>;
355
+ }, z.core.$strip>>;
356
+ rotation: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
357
+ }, z.core.$strip>>;
358
+ identifier: z.core.$ZodBranded<z.ZodString, "MediaIdentifier", "out">;
359
+ type: z.ZodLiteral<"video">;
360
+ }, z.core.$strip>, z.ZodObject<{
361
+ purpose: z.ZodOptional<z.ZodString>;
362
+ placeholder: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
363
+ assetId: z.ZodOptional<z.ZodString>;
364
+ src: z.ZodOptional<z.ZodString>;
365
+ alt: z.ZodOptional<z.ZodString>;
366
+ filename: z.ZodOptional<z.ZodString>;
367
+ mimeType: z.ZodOptional<z.ZodString>;
368
+ width: z.ZodOptional<z.ZodNumber>;
369
+ height: z.ZodOptional<z.ZodNumber>;
370
+ storageBucket: z.ZodOptional<z.ZodString>;
371
+ storagePath: z.ZodOptional<z.ZodString>;
372
+ poster: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
373
+ tag: z.ZodLiteral<"storage">;
374
+ assetId: z.ZodOptional<z.ZodString>;
375
+ storageBucket: z.ZodString;
376
+ storagePath: z.ZodString;
377
+ }, z.core.$strip>, z.ZodObject<{
378
+ tag: z.ZodLiteral<"external-src">;
379
+ assetId: z.ZodOptional<z.ZodString>;
380
+ src: z.ZodString;
381
+ }, z.core.$strip>], "tag">>;
382
+ transform: z.ZodOptional<z.ZodObject<{
383
+ aspectCrops: z.ZodOptional<z.ZodPipe<z.ZodTransform<object | undefined, unknown>, z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
384
+ aspect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodString>>;
385
+ rect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
386
+ hotspot: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodObject<{
387
+ x: z.ZodNumber;
388
+ y: z.ZodNumber;
389
+ radius: z.ZodOptional<z.ZodNumber>;
390
+ }, z.core.$strip>>>;
391
+ rotation: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>>;
392
+ }, z.core.$strip>>>>>;
393
+ rect: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
394
+ hotspot: z.ZodOptional<z.ZodObject<{
395
+ x: z.ZodNumber;
396
+ y: z.ZodNumber;
397
+ radius: z.ZodOptional<z.ZodNumber>;
398
+ }, z.core.$strip>>;
399
+ rotation: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
400
+ }, z.core.$strip>>;
401
+ identifier: z.core.$ZodBranded<z.ZodString, "MediaIdentifier", "out">;
402
+ type: z.ZodLiteral<"audio">;
403
+ }, z.core.$strip>, z.ZodObject<{
404
+ purpose: z.ZodOptional<z.ZodString>;
405
+ placeholder: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
406
+ assetId: z.ZodOptional<z.ZodString>;
407
+ src: z.ZodOptional<z.ZodString>;
408
+ alt: z.ZodOptional<z.ZodString>;
409
+ filename: z.ZodOptional<z.ZodString>;
410
+ mimeType: z.ZodOptional<z.ZodString>;
411
+ width: z.ZodOptional<z.ZodNumber>;
412
+ height: z.ZodOptional<z.ZodNumber>;
413
+ storageBucket: z.ZodOptional<z.ZodString>;
414
+ storagePath: z.ZodOptional<z.ZodString>;
415
+ poster: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
416
+ tag: z.ZodLiteral<"storage">;
417
+ assetId: z.ZodOptional<z.ZodString>;
418
+ storageBucket: z.ZodString;
419
+ storagePath: z.ZodString;
420
+ }, z.core.$strip>, z.ZodObject<{
421
+ tag: z.ZodLiteral<"external-src">;
422
+ assetId: z.ZodOptional<z.ZodString>;
423
+ src: z.ZodString;
424
+ }, z.core.$strip>], "tag">>;
425
+ transform: z.ZodOptional<z.ZodObject<{
426
+ aspectCrops: z.ZodOptional<z.ZodPipe<z.ZodTransform<object | undefined, unknown>, z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
427
+ aspect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodString>>;
428
+ rect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
429
+ hotspot: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodObject<{
430
+ x: z.ZodNumber;
431
+ y: z.ZodNumber;
432
+ radius: z.ZodOptional<z.ZodNumber>;
433
+ }, z.core.$strip>>>;
434
+ rotation: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>>;
435
+ }, z.core.$strip>>>>>;
436
+ rect: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
437
+ hotspot: z.ZodOptional<z.ZodObject<{
438
+ x: z.ZodNumber;
439
+ y: z.ZodNumber;
440
+ radius: z.ZodOptional<z.ZodNumber>;
441
+ }, z.core.$strip>>;
442
+ rotation: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
443
+ }, z.core.$strip>>;
444
+ identifier: z.core.$ZodBranded<z.ZodString, "MediaIdentifier", "out">;
445
+ type: z.ZodLiteral<"document">;
446
+ }, z.core.$strip>, z.ZodObject<{
447
+ purpose: z.ZodOptional<z.ZodString>;
448
+ placeholder: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
449
+ assetId: z.ZodOptional<z.ZodString>;
450
+ src: z.ZodOptional<z.ZodString>;
451
+ alt: z.ZodOptional<z.ZodString>;
452
+ filename: z.ZodOptional<z.ZodString>;
453
+ mimeType: z.ZodOptional<z.ZodString>;
454
+ width: z.ZodOptional<z.ZodNumber>;
455
+ height: z.ZodOptional<z.ZodNumber>;
456
+ storageBucket: z.ZodOptional<z.ZodString>;
457
+ storagePath: z.ZodOptional<z.ZodString>;
458
+ poster: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
459
+ tag: z.ZodLiteral<"storage">;
460
+ assetId: z.ZodOptional<z.ZodString>;
461
+ storageBucket: z.ZodString;
462
+ storagePath: z.ZodString;
463
+ }, z.core.$strip>, z.ZodObject<{
464
+ tag: z.ZodLiteral<"external-src">;
465
+ assetId: z.ZodOptional<z.ZodString>;
466
+ src: z.ZodString;
467
+ }, z.core.$strip>], "tag">>;
468
+ transform: z.ZodOptional<z.ZodObject<{
469
+ aspectCrops: z.ZodOptional<z.ZodPipe<z.ZodTransform<object | undefined, unknown>, z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
470
+ aspect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodString>>;
471
+ rect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
472
+ hotspot: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodObject<{
473
+ x: z.ZodNumber;
474
+ y: z.ZodNumber;
475
+ radius: z.ZodOptional<z.ZodNumber>;
476
+ }, z.core.$strip>>>;
477
+ rotation: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>>;
478
+ }, z.core.$strip>>>>>;
479
+ rect: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
480
+ hotspot: z.ZodOptional<z.ZodObject<{
481
+ x: z.ZodNumber;
482
+ y: z.ZodNumber;
483
+ radius: z.ZodOptional<z.ZodNumber>;
484
+ }, z.core.$strip>>;
485
+ rotation: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
486
+ }, z.core.$strip>>;
487
+ identifier: z.core.$ZodBranded<z.ZodString, "MediaIdentifier", "out">;
488
+ type: z.ZodLiteral<"spreadsheet">;
489
+ }, z.core.$strip>, z.ZodObject<{
490
+ purpose: z.ZodOptional<z.ZodString>;
491
+ placeholder: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
492
+ assetId: z.ZodOptional<z.ZodString>;
493
+ src: z.ZodOptional<z.ZodString>;
494
+ alt: z.ZodOptional<z.ZodString>;
495
+ filename: z.ZodOptional<z.ZodString>;
496
+ mimeType: z.ZodOptional<z.ZodString>;
497
+ width: z.ZodOptional<z.ZodNumber>;
498
+ height: z.ZodOptional<z.ZodNumber>;
499
+ storageBucket: z.ZodOptional<z.ZodString>;
500
+ storagePath: z.ZodOptional<z.ZodString>;
501
+ poster: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
502
+ tag: z.ZodLiteral<"storage">;
503
+ assetId: z.ZodOptional<z.ZodString>;
504
+ storageBucket: z.ZodString;
505
+ storagePath: z.ZodString;
506
+ }, z.core.$strip>, z.ZodObject<{
507
+ tag: z.ZodLiteral<"external-src">;
508
+ assetId: z.ZodOptional<z.ZodString>;
509
+ src: z.ZodString;
510
+ }, z.core.$strip>], "tag">>;
511
+ transform: z.ZodOptional<z.ZodObject<{
512
+ aspectCrops: z.ZodOptional<z.ZodPipe<z.ZodTransform<object | undefined, unknown>, z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
513
+ aspect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodString>>;
514
+ rect: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
515
+ hotspot: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodObject<{
516
+ x: z.ZodNumber;
517
+ y: z.ZodNumber;
518
+ radius: z.ZodOptional<z.ZodNumber>;
519
+ }, z.core.$strip>>>;
520
+ rotation: z.ZodPipe<z.ZodTransform<{} | undefined, unknown>, z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>>;
521
+ }, z.core.$strip>>>>>;
522
+ rect: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
523
+ hotspot: z.ZodOptional<z.ZodObject<{
524
+ x: z.ZodNumber;
525
+ y: z.ZodNumber;
526
+ radius: z.ZodOptional<z.ZodNumber>;
527
+ }, z.core.$strip>>;
528
+ rotation: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
529
+ }, z.core.$strip>>;
530
+ identifier: z.core.$ZodBranded<z.ZodString, "MediaIdentifier", "out">;
531
+ type: z.ZodLiteral<"archive">;
532
+ }, z.core.$strip>], "type">;
267
533
  export type Media = z.infer<typeof mediaSchema>;
534
+ export type PersistableMedia = z.infer<typeof persistableMediaSchema>;
268
535
  export type MediaOfType<TType extends MediaTypeDiscriminant> = Extract<Media, {
269
536
  type: TType;
270
537
  }>;
@@ -15,19 +15,6 @@ export declare const blockButtonRoleSchema: z.ZodEnum<{
15
15
  secondary: "secondary";
16
16
  ghost: "ghost";
17
17
  }>;
18
- /**
19
- * Temporary rollout boundary for persisted content written before issue #1220.
20
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
21
- * only until the post-deploy role rewrite has been audited in production.
22
- */
23
- export declare function canonicalizePersistedBlockButtonRole(value: string): string;
24
- export declare const persistedBlockButtonRoleSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodEnum<{
25
- outline: "outline";
26
- accent: "accent";
27
- primary: "primary";
28
- secondary: "secondary";
29
- ghost: "ghost";
30
- }>>;
31
18
  export declare const BLOCK_BUTTON_ROLE_OPTIONS: ReadonlyArray<{
32
19
  readonly value: BlockButtonRole;
33
20
  readonly label: string;
@@ -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 {};