@riverbankcms/sdk 0.136.0 → 0.137.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 (160) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/dist/{PreviewEditorSidebar-BU5ZlhQR.mjs → PreviewEditorSidebar-Bn6cONPa.mjs} +8 -8
  3. package/dist/{PreviewEditorUI-9XkHL-bC.mjs → PreviewEditorUI-LAwXZPSx.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-wbEpXryy.mjs → PreviewQueryProvider-ztQUdsNo.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CnWmj-2B.mjs → SdkPreviewModeRuntime-BbbGsI_v.mjs} +596 -164
  6. package/dist/{SiteChromeCustomizeContext-B6d5zkog.mjs → SiteChromeCustomizeContext-BbkNSt5a.mjs} +2888 -1404
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +12 -298
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +21 -14
  9. package/dist/_dts/ai/src/designer/themePatch.d.ts +5 -10
  10. package/dist/_dts/api/src/accessAdmin.d.ts +1 -9
  11. package/dist/_dts/api/src/accountApi.d.ts +49 -2
  12. package/dist/_dts/api/src/contentRuntime.d.ts +1 -4
  13. package/dist/_dts/api/src/domainConnection.d.ts +41 -0
  14. package/dist/_dts/api/src/endpoints.d.ts +194 -181
  15. package/dist/_dts/api/src/index.d.ts +4 -3
  16. package/dist/_dts/api/src/media.d.ts +19 -2
  17. package/dist/_dts/api/src/sdkContracts.d.ts +2 -15
  18. package/dist/_dts/api/src/sdkMediaContracts.d.ts +40 -0
  19. package/dist/_dts/api/src/sdkMediaEndpointDefinitions.d.ts +61 -0
  20. package/dist/_dts/api/src/sdkThemeWire.d.ts +15 -4
  21. package/dist/_dts/api/src/siteInfrastructure.d.ts +17 -23
  22. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +7 -21
  23. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +27 -3
  24. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +37 -17
  25. package/dist/_dts/api/src/types.d.ts +1 -1
  26. package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -2
  27. package/dist/_dts/blocks/src/index.d.ts +1 -1
  28. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +9 -0
  29. package/dist/_dts/blocks/src/pageRendererBlockSupport.d.ts +75 -0
  30. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +2 -0
  31. package/dist/_dts/blocks/src/server.d.ts +1 -1
  32. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  34. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -3
  35. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +34 -22
  36. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ErrorStep.d.ts +3 -5
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +2 -0
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorPresentation.d.ts +5 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +25 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.d.ts +4 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -3
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +5 -2
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +2 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/capacity.d.ts +164 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/cta.d.ts +29 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +47 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +14 -0
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/people.d.ts +6 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/pricing.d.ts +31 -0
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/OfferingTitle.d.ts +11 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +1 -1
  56. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +3 -1
  57. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listingLayout.d.ts +23 -0
  58. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +57 -0
  59. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  60. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +8 -40
  61. package/dist/_dts/db/src/index.d.ts +1 -0
  62. package/dist/_dts/db/src/utils/postgrestFilter.d.ts +2 -0
  63. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +4 -0
  64. package/dist/_dts/media-core/src/fileDomain.d.ts +3 -0
  65. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -0
  66. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  67. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -2
  68. package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +1 -1
  69. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +2 -0
  70. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlSaveRequest.d.ts +51 -0
  71. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +24 -2
  72. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +23 -1
  73. package/dist/_dts/preview-next/src/client/preview/usePersistedHeaderPreferences.d.ts +8 -0
  74. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
  75. package/dist/_dts/sdk/src/version.d.ts +1 -1
  76. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  77. package/dist/_dts/theme-core/src/gradients/types.d.ts +5 -0
  78. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +25 -2
  79. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
  80. package/dist/_dts/theme-core/src/schema.d.ts +12 -11
  81. package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +43 -3
  82. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +10 -0
  83. package/dist/_dts/theme-core/src/site-styles/headerBrandPresentation.d.ts +63 -0
  84. package/dist/_dts/theme-core/src/site-styles/headerBytesComparison.d.ts +30 -0
  85. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +50 -1
  86. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +48 -9
  87. package/dist/_dts/theme-core/src/site-styles/headerPreferences.d.ts +162 -0
  88. package/dist/_dts/theme-core/src/site-styles/headerPreferencesPersistence.d.ts +73 -0
  89. package/dist/_dts/theme-core/src/site-styles/headerRecompile.d.ts +118 -0
  90. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +10 -1
  91. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +1 -1
  92. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +7 -0
  93. package/dist/_dts/theme-core/src/site-styles/index.d.ts +5 -0
  94. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  95. package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +20 -1
  96. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +43 -2
  97. package/dist/client/{BookingConsentAgreement-DCch21a6.mjs → BookingConsentAgreement--_fUCZe-.mjs} +2 -2
  98. package/dist/client/{DiscountCodeDisclosure-DIj1T59K.mjs → DiscountCodeDisclosure-BMipSoDJ.mjs} +1 -1
  99. package/dist/client/{EventCombined.client-BWVNlXTx.mjs → EventCombined.client-CwJOxn7A.mjs} +154 -178
  100. package/dist/client/{EventListing.client-DVFCDe3i.mjs → EventListing.client-eVwiylPW.mjs} +2 -2
  101. package/dist/client/{LeafletStaticMap-BY5mIHw9.mjs → LeafletStaticMap-IKenna5u.mjs} +1 -1
  102. package/dist/client/{accordion-CK29E8rG.mjs → accordion-MGAO3PuE.mjs} +1 -1
  103. package/dist/client/{bookingForm-DFvnet-N.mjs → bookingForm-CudlQPUu.mjs} +5 -5
  104. package/dist/client/bookings.mjs +418 -79
  105. package/dist/client/capacity-BW00PO7s.mjs +271 -0
  106. package/dist/client/{carousel-BVU5NQlb.mjs → carousel-BrbGJ2Jl.mjs} +1 -1
  107. package/dist/client/{cart-BNItcZVa.mjs → cart-Bq5eU0xZ.mjs} +3 -3
  108. package/dist/client/{checkout-Bu6iCdkP.mjs → checkout-BAFVRdrK.mjs} +3 -3
  109. package/dist/client/client.mjs +2919 -1918
  110. package/dist/client/{context-BImarOAq.mjs → context-DCkiHVdD.mjs} +8 -5
  111. package/dist/client/dates-2RPXHQy4.mjs +264 -0
  112. package/dist/client/{eventCalendar-DS2h-UXD.mjs → eventCalendar-B0O-hPF7.mjs} +10 -17
  113. package/dist/client/{eventCombined-Drt4Oq9p.mjs → eventCombined-DCkDaoDI.mjs} +3 -3
  114. package/dist/client/{eventDetails-Bl2vWgTX.mjs → eventDetails-D8GG2dnD.mjs} +5 -3
  115. package/dist/client/{eventListing-CS7PHY7v.mjs → eventListing-3ssV_bxz.mjs} +3 -3
  116. package/dist/client/{eventRegistration-D-j8eNy2.mjs → eventRegistration-bPQo3kVw.mjs} +562 -309
  117. package/dist/client/{form-RMpoLTyr.mjs → form-qMv8RDkk.mjs} +2 -2
  118. package/dist/client/{headerSection-BYE3Lb3k.mjs → headerSection-CH0Sc5hX.mjs} +2 -2
  119. package/dist/client/hooks.mjs +289 -32
  120. package/dist/client/{locationMap-BxSr7Kkh.mjs → locationMap-0_xlBnNI.mjs} +2 -2
  121. package/dist/client/{newsletterForm-DerbXwFC.mjs → newsletterForm-NUW7m9RI.mjs} +2 -2
  122. package/dist/client/{productDetail-4SZCLhAf.mjs → productDetail-FBEOM7jW.mjs} +3 -3
  123. package/dist/client/{productList-D7AP4GNq.mjs → productList-R0OSGhnn.mjs} +3 -3
  124. package/dist/client/{propsDecoder-pzBeCh14.mjs → propsDecoder-pYvx_Srl.mjs} +88 -380
  125. package/dist/client/rendering/client.mjs +2616 -1637
  126. package/dist/client/rendering/islands.mjs +17 -17
  127. package/dist/client/rendering.mjs +2710 -1702
  128. package/dist/client/{scrollToBlock-CduAKf8T.mjs → scrollToBlock-ByQv96M2.mjs} +1 -1
  129. package/dist/client/{shop-Cp5p_kGe.mjs → shop-RUG9DmRE.mjs} +6 -6
  130. package/dist/client/{shop-commerce-DicXYaYX.mjs → shop-commerce-B76Jz23B.mjs} +5 -5
  131. package/dist/client/{shop-commerce-store-CGWnpY4K.mjs → shop-commerce-store-QuQNdDsD.mjs} +1 -1
  132. package/dist/client/{shopShared-BDf9ljkm.mjs → shopShared-vXU1omwJ.mjs} +3 -3
  133. package/dist/client/{useEventFilters-DeeyGYuk.mjs → useEventFilters-ByuU6HLA.mjs} +33 -18
  134. package/dist/preview-next/before-render.mjs +79 -51
  135. package/dist/preview-next/client/runtime.mjs +4 -4
  136. package/dist/preview-next/keepAlive.mjs +79 -51
  137. package/dist/preview-next/middleware.mjs +79 -51
  138. package/dist/{previewAuthStore-DbqBol0V.mjs → previewAuthStore-L_cKW8Sb.mjs} +79 -51
  139. package/dist/{sdk-runtime-19MO27F0.mjs → sdk-runtime-sUMr5d70.mjs} +2 -2
  140. package/dist/{separator-DaPLtJ1f.mjs → separator-BIHkie5i.mjs} +1 -1
  141. package/dist/server/components.mjs +2077 -1274
  142. package/dist/server/config-validation.mjs +289 -32
  143. package/dist/server/config.mjs +289 -32
  144. package/dist/server/data.mjs +289 -32
  145. package/dist/server/index.mjs +80 -52
  146. package/dist/server/next.mjs +1822 -1111
  147. package/dist/server/page-converter.mjs +167 -31
  148. package/dist/server/prebuild.mjs +1 -1
  149. package/dist/server/rendering/server.mjs +1988 -1286
  150. package/dist/server/rendering.mjs +1943 -1182
  151. package/dist/server/routing.mjs +351 -86
  152. package/dist/server/server.mjs +293 -128
  153. package/dist/server/theme-bridge.mjs +52 -8
  154. package/dist/server/theme.mjs +27 -8
  155. package/dist/styles/index.css +15 -0
  156. package/package.json +1 -1
  157. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +0 -48
  158. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +0 -17
  159. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +0 -100
  160. /package/dist/_dts/blocks/src/system/runtime/nodes/events/{shared → domain}/destination.d.ts +0 -0
@@ -1640,6 +1640,83 @@ const SDK_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1640
1640
  errors: ["validation:invalid_input", "server:internal_error"]
1641
1641
  }
1642
1642
  });
1643
+ //#endregion
1644
+ //#region ../api/src/sdkMediaEndpointDefinitions.ts
1645
+ const SDK_MEDIA_ENDPOINT_DEFINITIONS = {
1646
+ sdkMediaExists: {
1647
+ path: "/sdk/{siteId}/media/exists",
1648
+ method: "POST",
1649
+ errors: ["validation:invalid_input"],
1650
+ auth: "service",
1651
+ responseKind: "json"
1652
+ },
1653
+ sdkMediaFindByChecksum: {
1654
+ path: "/sdk/{siteId}/media/find-by-checksum",
1655
+ method: "POST",
1656
+ errors: ["server:internal_error"],
1657
+ auth: "service",
1658
+ responseKind: "json"
1659
+ },
1660
+ sdkMediaResolve: {
1661
+ path: "/sdk/{siteId}/media/resolve",
1662
+ method: "POST",
1663
+ errors: ["server:internal_error"],
1664
+ auth: "service",
1665
+ responseKind: "json"
1666
+ },
1667
+ sdkMediaList: {
1668
+ path: "/sdk/{siteId}/media",
1669
+ method: "GET",
1670
+ auth: "service",
1671
+ responseKind: "json"
1672
+ },
1673
+ sdkMediaDownload: {
1674
+ path: "/sdk/{siteId}/media/{identifier}/download",
1675
+ method: "GET",
1676
+ auth: "service",
1677
+ responseKind: "json"
1678
+ },
1679
+ sdkMediaDeletePreview: {
1680
+ path: "/sdk/{siteId}/media/{identifier}/delete-preview",
1681
+ method: "POST",
1682
+ auth: "service",
1683
+ responseKind: "json"
1684
+ },
1685
+ sdkMediaDeleteApply: {
1686
+ path: "/sdk/{siteId}/media/{identifier}",
1687
+ method: "DELETE",
1688
+ auth: "service",
1689
+ responseKind: "json"
1690
+ },
1691
+ sdkMediaUploadUrl: {
1692
+ path: "/sdk/{siteId}/media/upload-url",
1693
+ method: "POST",
1694
+ errors: [
1695
+ "resource:not_found",
1696
+ "validation:invalid_input",
1697
+ "resource:conflict",
1698
+ "validation:payload_too_large",
1699
+ "billing:plan_limit_exceeded",
1700
+ "server:internal_error"
1701
+ ],
1702
+ auth: "service",
1703
+ responseKind: "json"
1704
+ },
1705
+ sdkMediaUploadFinalize: {
1706
+ path: "/sdk/{siteId}/media/upload",
1707
+ method: "POST",
1708
+ errors: [
1709
+ "resource:not_found",
1710
+ "validation:invalid_input",
1711
+ "resource:conflict",
1712
+ "validation:payload_too_large",
1713
+ "billing:plan_limit_exceeded",
1714
+ "server:internal_error"
1715
+ ],
1716
+ auth: "service",
1717
+ responseKind: "json"
1718
+ }
1719
+ };
1643
1720
  const API_ENDPOINTS$1 = {
1644
1721
  ...ACCOUNT_ENDPOINT_DEFINITIONS,
1645
1722
  ...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
@@ -3780,26 +3857,6 @@ const API_ENDPOINTS$1 = {
3780
3857
  auth: "public",
3781
3858
  responseKind: "json"
3782
3859
  },
3783
- createTheme: {
3784
- path: "/ai/chat/create-theme",
3785
- method: "POST",
3786
- revalidate: 60,
3787
- tags: ["theme", "ai-theme"],
3788
- auth: "user",
3789
- responseKind: "json"
3790
- },
3791
- generateThemes: {
3792
- path: "/theme/generate",
3793
- method: "POST",
3794
- errors: [
3795
- "validation:invalid_input",
3796
- "resource:not_found",
3797
- "server:internal_error"
3798
- ],
3799
- tags: ["theme"],
3800
- auth: "user",
3801
- responseKind: "json"
3802
- },
3803
3860
  extractThemeFromInspiration: {
3804
3861
  path: "/theme/extract-from-inspiration",
3805
3862
  method: "POST",
@@ -3973,7 +4030,7 @@ const API_ENDPOINTS$1 = {
3973
4030
  method: "DELETE",
3974
4031
  tags: ["media", "media-{assetId}"],
3975
4032
  auth: "user",
3976
- responseKind: "void"
4033
+ responseKind: "json"
3977
4034
  },
3978
4035
  mediaBulkDelete: {
3979
4036
  path: "/media/bulk-delete",
@@ -6559,42 +6616,13 @@ const API_ENDPOINTS$1 = {
6559
6616
  auth: "user",
6560
6617
  responseKind: "json"
6561
6618
  },
6619
+ ...SDK_MEDIA_ENDPOINT_DEFINITIONS,
6562
6620
  sdkIdentifiersBackfill: {
6563
6621
  path: "/sdk/{siteId}/identifiers/backfill",
6564
6622
  method: "POST",
6565
6623
  auth: "service",
6566
6624
  responseKind: "json"
6567
6625
  },
6568
- sdkMediaExists: {
6569
- path: "/sdk/{siteId}/media/exists",
6570
- method: "POST",
6571
- auth: "service",
6572
- responseKind: "json"
6573
- },
6574
- sdkMediaFindByChecksum: {
6575
- path: "/sdk/{siteId}/media/find-by-checksum",
6576
- method: "POST",
6577
- auth: "service",
6578
- responseKind: "json"
6579
- },
6580
- sdkMediaResolve: {
6581
- path: "/sdk/{siteId}/media/resolve",
6582
- method: "POST",
6583
- auth: "service",
6584
- responseKind: "json"
6585
- },
6586
- sdkMediaUploadUrl: {
6587
- path: "/sdk/{siteId}/media/upload-url",
6588
- method: "POST",
6589
- auth: "service",
6590
- responseKind: "json"
6591
- },
6592
- sdkMediaUploadFinalize: {
6593
- path: "/sdk/{siteId}/media/upload",
6594
- method: "POST",
6595
- auth: "service",
6596
- responseKind: "json"
6597
- },
6598
6626
  sdkUpdateWorkflowRunStatus: {
6599
6627
  path: "/sdk/{siteId}/workflows/runs/{runId}/status",
6600
6628
  method: "POST",
@@ -8082,7 +8110,7 @@ var SimpleCache = class {
8082
8110
  * 1. This constant
8083
8111
  * 2. The "version" field in package.json
8084
8112
  */
8085
- const SDK_VERSION = "0.136.0";
8113
+ const SDK_VERSION = "0.137.0";
8086
8114
  //#endregion
8087
8115
  //#region src/client/error.ts
8088
8116
  let _Symbol$for;
@@ -13141,6 +13169,11 @@ const gradientConfigSchema = z.object({
13141
13169
  position: z.string().optional(),
13142
13170
  stops: z.array(gradientStopSchema).min(2)
13143
13171
  });
13172
+ const gradientsSchema = z.object({
13173
+ button: z.string().min(1).nullable().optional(),
13174
+ hero: z.string().min(1).nullable().optional(),
13175
+ background: z.string().min(1).nullable().optional()
13176
+ });
13144
13177
  //#endregion
13145
13178
  //#region ../theme-core/src/interactive/baseSchema.ts
13146
13179
  /**
@@ -13894,11 +13927,30 @@ const headerContainerSchema = z.object({
13894
13927
  tint: z.string().nullable().optional(),
13895
13928
  opacity: z.number().min(0).max(1).default(.12)
13896
13929
  }).optional();
13897
- const headerInteractionPaletteSchema = z.enum([
13930
+ //#endregion
13931
+ //#region ../theme-core/src/header/interactionPalette.ts
13932
+ /**
13933
+ * The palettes that fill the nav link with a colour on hover and focus. Each
13934
+ * one names a background/foreground token pair.
13935
+ */
13936
+ const headerInteractionPillPaletteValues = [
13898
13937
  "primary",
13899
13938
  "secondary",
13900
13939
  "accent"
13901
- ]);
13940
+ ];
13941
+ /**
13942
+ * "No pill": the nav link keeps whatever hover treatment its recipe compiled,
13943
+ * and the palette step writes nothing at all (#1318 Phase 4c decision 2).
13944
+ *
13945
+ * It exists because "a colour change on hover, no filled background" was not
13946
+ * expressible in the vocabulary, and it is what
13947
+ * `anna-raven-therapy-and-yoga` and `kirtan-lucy` have rendered since before
13948
+ * the palette existed. Without it those two rows can only be classified as a
13949
+ * conscious visual change.
13950
+ */
13951
+ const headerInteractionQuietPalette = "quiet";
13952
+ const headerInteractionPaletteValues = [...headerInteractionPillPaletteValues, headerInteractionQuietPalette];
13953
+ const headerInteractionPaletteSchema = z.enum(headerInteractionPaletteValues);
13902
13954
  //#endregion
13903
13955
  //#region ../theme-core/src/boxBackgroundSchema.ts
13904
13956
  const boxBackgroundOverlaySchema = z.preprocess(normalizeAuthoringOpacity, z.discriminatedUnion("type", [
@@ -14280,11 +14332,12 @@ const inputStyle = z.object({
14280
14332
  ]),
14281
14333
  label: z.enum(["inside", "above"])
14282
14334
  });
14283
- const headerPositioning = z.enum([
14335
+ const headerPositioningValues = [
14284
14336
  "static",
14285
14337
  "sticky",
14286
14338
  "fixed"
14287
- ]);
14339
+ ];
14340
+ const headerPositioning = z.enum(headerPositioningValues);
14288
14341
  const headerNavStyle = z.enum([
14289
14342
  "minimal",
14290
14343
  "underline",
@@ -14419,7 +14472,7 @@ const headerSchema = z.object({
14419
14472
  variant: headerVariantWithLegacyAliasSchema,
14420
14473
  positioning: headerPositioning,
14421
14474
  shrinkOnScroll: z.boolean(),
14422
- maxWidth: headerMaxWidth,
14475
+ maxWidth: headerMaxWidth.default("container"),
14423
14476
  scrollTreatment: headerScrollTreatmentSchema,
14424
14477
  background: headerBackgroundSchema.default({
14425
14478
  type: "color",
@@ -14618,11 +14671,6 @@ const bodyTextSchema = z.object({ intro: z.object({
14618
14671
  paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
14619
14672
  headingSize: bodyTextIntroTypographySizeSchema.optional()
14620
14673
  }).optional() }).optional();
14621
- const gradientsSchema = z.object({
14622
- button: z.string().min(1).nullable().optional(),
14623
- hero: z.string().min(1).nullable().optional(),
14624
- background: z.string().min(1).nullable().optional()
14625
- });
14626
14674
  /**
14627
14675
  * Testimonial quote-mark treatment, owned by the site style (analogous to the
14628
14676
  * accordion icon). `style` is the coarse selector; the optional fields fine-tune
@@ -18238,41 +18286,6 @@ function compileManifestContentContract(manifestOrFields) {
18238
18286
  findNonPortableMediaPaths: (content) => findNonPortableMediaPaths(plans, content)
18239
18287
  }) });
18240
18288
  }
18241
- /** Strictly admits already-persisted content without repairing it. */
18242
- function admitStoredManifestContent(contract, content) {
18243
- const state = contract[compiledManifestContentContract];
18244
- const nonPortablePaths = state.findNonPortableMediaPaths(content);
18245
- if (nonPortablePaths.length > 0) return {
18246
- ok: false,
18247
- error: {
18248
- kind: "non_portable_media",
18249
- paths: nonPortablePaths
18250
- }
18251
- };
18252
- const parsed = state.strictStoredSchema.safeParse(content);
18253
- return parsed.success ? {
18254
- ok: true,
18255
- value: content
18256
- } : {
18257
- ok: false,
18258
- error: zodAdmissionError(parsed.error)
18259
- };
18260
- }
18261
- /**
18262
- * Applies a pure runtime projection to admitted stored content and validates
18263
- * the resulting render shape before granting the renderable proof.
18264
- */
18265
- function deriveRenderableManifestContent(contract, stored, project) {
18266
- const projected = project(stored);
18267
- const parsed = contract[compiledManifestContentContract].renderSchema.safeParse(projected);
18268
- return parsed.success ? {
18269
- ok: true,
18270
- value: projected
18271
- } : {
18272
- ok: false,
18273
- error: zodAdmissionError(parsed.error)
18274
- };
18275
- }
18276
18289
  /**
18277
18290
  * Re-admits renderable content after a transport boundary has erased its
18278
18291
  * compile-time proof. Unlike write admission, this never canonicalizes or
@@ -19272,6 +19285,12 @@ function cardRoleFromLegacyVocabulary(value) {
19272
19285
  */
19273
19286
  const cardRoleWithLegacyAliasSchema = z.preprocess((value) => cardRoleFromLegacyVocabulary(value) ?? value, cardRoleSchema);
19274
19287
  //#endregion
19288
+ //#region ../theme-core/src/site-styles/compilationPlan.ts
19289
+ const defaultHeaderBrandPreferences = {
19290
+ brandDisplay: "auto",
19291
+ logoSize: "auto"
19292
+ };
19293
+ //#endregion
19275
19294
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
19276
19295
  function boundaryRuntimeMetrics(family, size, heightExpression) {
19277
19296
  return {
@@ -21645,6 +21664,12 @@ const overlayLogoAccommodations = [
21645
21664
  inlineMarkWithTitleLogoAccommodation,
21646
21665
  unbackedOverlayLogoAccommodation
21647
21666
  ];
21667
+ const allCuratedLogoAccommodations = [
21668
+ ...inlineClassicLogoAccommodations,
21669
+ ...centeredLogoAccommodations,
21670
+ ...overlayLogoAccommodations
21671
+ ];
21672
+ new Set(allCuratedLogoAccommodations.filter((option) => option.providesBacking === true).map((option) => option.pattern));
21648
21673
  const headerLayoutCatalog = defineExactCatalog()([
21649
21674
  {
21650
21675
  id: asHeaderLayoutId("classic"),
@@ -21794,6 +21819,10 @@ defineLookOptionGroup({
21794
21819
  {
21795
21820
  id: "secondary",
21796
21821
  label: "Secondary"
21822
+ },
21823
+ {
21824
+ id: headerInteractionQuietPalette,
21825
+ label: "Text only"
21797
21826
  }
21798
21827
  ]
21799
21828
  });
@@ -24215,6 +24244,67 @@ const blockDesignFallback = {
24215
24244
  };
24216
24245
  blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.transitionAfter, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
24217
24246
  //#endregion
24247
+ //#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
24248
+ const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
24249
+ const quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
24250
+ siteChromeBackgroundColorTokens.filter((token) => !quickSiteChromeBackgroundColorTokens.includes(token));
24251
+ function parseSiteChromeBackgroundColorToken(value) {
24252
+ const token = parseBackgroundAppearanceColorToken(value);
24253
+ return token ? token : null;
24254
+ }
24255
+ function toSiteChromeBackgroundColorTokens(tokenNames) {
24256
+ return tokenNames.flatMap((name) => {
24257
+ const token = parseSiteChromeBackgroundColorToken(name);
24258
+ return token ? [token] : [];
24259
+ });
24260
+ }
24261
+ //#endregion
24262
+ //#region ../theme-core/src/site-styles/siteChromeNavPreferences.ts
24263
+ const headerNavTypographyPreferenceValues = [
24264
+ "inherit",
24265
+ "body",
24266
+ "heading"
24267
+ ];
24268
+ const headerNavFontSizePreferenceValues = [
24269
+ "inherit",
24270
+ "sm",
24271
+ "base",
24272
+ "lg",
24273
+ "xl"
24274
+ ];
24275
+ const defaultHeaderNavPreferences = {
24276
+ typography: "inherit",
24277
+ fontSize: "inherit",
24278
+ interactionPalette: "recommended"
24279
+ };
24280
+ //#endregion
24281
+ //#region ../theme-core/src/site-styles/headerBrandPresentation.ts
24282
+ /**
24283
+ * Whether the header wears a brand presentation at all (#1318 Phase 4c).
24284
+ *
24285
+ * `applyHeaderBrandPresentation` is unconditional today: given a logo context
24286
+ * it always writes a `logo` object carrying a resolved display, size and
24287
+ * accommodation. That makes "this header has no brand presentation block" —
24288
+ * which is what several live sites persist, including one whose site *does*
24289
+ * have a logo asset — a state the preference record could not express, so a
24290
+ * recompile would silently give the site a logo treatment it has never
24291
+ * rendered.
24292
+ *
24293
+ * This is the third field in this phase with that shape, after the interaction
24294
+ * palette and the nav text size: the persisted bytes carry intent the reader
24295
+ * cannot say, so the recompile "corrects" it. The fix is the same one — widen
24296
+ * the closed vocabulary with a named member and derive it by baseline
24297
+ * comparison — and it is a *widening*, not a restyle: `'recommended'` is the
24298
+ * default and reproduces today's behaviour exactly, so no row whose bytes carry
24299
+ * a presentation compiles differently for `'plain'` existing.
24300
+ *
24301
+ * `'plain'` is deliberately not "preserve whatever bytes are there". It is a
24302
+ * constructive instruction — *write no presentation block* — so Phase 4e's
24303
+ * compiler, which builds the header from nothing, can produce it.
24304
+ */
24305
+ const headerBrandPresentationValues = ["recommended", "plain"];
24306
+ defaultHeaderBrandPreferences.brandDisplay, defaultHeaderBrandPreferences.logoSize, defaultHeaderNavPreferences.typography, defaultHeaderNavPreferences.fontSize, defaultHeaderNavPreferences.interactionPalette;
24307
+ //#endregion
24218
24308
  //#region ../theme-core/src/site-styles/generatedSchemas.ts
24219
24309
  function uniqueNonEmpty(values) {
24220
24310
  const uniqueValues = [...new Set(values)];
@@ -24283,6 +24373,56 @@ z.object({
24283
24373
  blocks: z.array(generatedPageDesignBlockIntentSchema)
24284
24374
  }).strict();
24285
24375
  //#endregion
24376
+ //#region ../theme-core/src/site-styles/headerPreferencesPersistence.ts
24377
+ const backgroundColorTokenSchema = z.unknown().transform((value, ctx) => {
24378
+ const token = parseSiteChromeBackgroundColorToken(value);
24379
+ if (token === null) {
24380
+ ctx.addIssue({
24381
+ code: "custom",
24382
+ message: "Unknown site chrome background colour token"
24383
+ });
24384
+ return z.NEVER;
24385
+ }
24386
+ return token;
24387
+ });
24388
+ const backgroundOverrideSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("default") }).strict(), z.object({
24389
+ kind: z.literal("color"),
24390
+ token: backgroundColorTokenSchema
24391
+ }).strict()]);
24392
+ const logoTextIntentSchema = z.object({
24393
+ mobileMaxWidth: z.enum([
24394
+ "xs",
24395
+ "sm",
24396
+ "md"
24397
+ ]).optional(),
24398
+ mobileWrapLines: z.union([z.literal(1), z.literal(2)]).optional(),
24399
+ hideOnShrink: z.boolean().optional()
24400
+ }).strict();
24401
+ const structureSchema = z.object({
24402
+ positioning: z.union([z.literal("inherit"), z.enum(headerPositioningValues)]),
24403
+ shrinkOnScroll: z.union([z.literal("inherit"), z.boolean()]),
24404
+ logoText: z.union([
24405
+ z.literal("inherit"),
24406
+ z.literal("none"),
24407
+ logoTextIntentSchema
24408
+ ])
24409
+ }).strict();
24410
+ const headerPreferencesShape = {
24411
+ brandPresentation: z.enum(headerBrandPresentationValues),
24412
+ brandDisplay: z.enum(brandDisplayModeValues),
24413
+ logoSize: z.enum(logoSizePolicyValues),
24414
+ navFontRole: z.enum(headerNavTypographyPreferenceValues),
24415
+ navTextSize: z.enum(headerNavFontSizePreferenceValues),
24416
+ interactionPalette: z.union([z.literal("recommended"), z.enum(headerInteractionPaletteValues)]),
24417
+ background: backgroundOverrideSchema,
24418
+ structure: structureSchema
24419
+ };
24420
+ z.object(headerPreferencesShape).strict();
24421
+ z.object(headerPreferencesShape).omit({
24422
+ brandPresentation: true,
24423
+ structure: true
24424
+ }).strict();
24425
+ //#endregion
24286
24426
  //#region ../theme-core/src/site-styles/pageDesignAuthority.ts
24287
24427
  const nonEmptyStringSchema = z.string().min(1);
24288
24428
  const blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
@@ -24384,21 +24524,6 @@ function collectBlockSequenceIssues(snapshots) {
24384
24524
  return issues;
24385
24525
  }
24386
24526
  //#endregion
24387
- //#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
24388
- const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
24389
- const quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
24390
- siteChromeBackgroundColorTokens.filter((token) => !quickSiteChromeBackgroundColorTokens.includes(token));
24391
- function parseSiteChromeBackgroundColorToken(value) {
24392
- const token = parseBackgroundAppearanceColorToken(value);
24393
- return token ? token : null;
24394
- }
24395
- function toSiteChromeBackgroundColorTokens(tokenNames) {
24396
- return tokenNames.flatMap((name) => {
24397
- const token = parseSiteChromeBackgroundColorToken(name);
24398
- return token ? [token] : [];
24399
- });
24400
- }
24401
- //#endregion
24402
24527
  //#region ../theme-core/src/site-styles/tokenRecipes.ts
24403
24528
  const themeTokenRecipeOptions = {
24404
24529
  palette: [
@@ -35629,7 +35754,7 @@ const eventDisplayFields = [
35629
35754
  {
35630
35755
  id: "showCapacity",
35631
35756
  type: "boolean",
35632
- label: "Show available spots",
35757
+ label: "Show available places",
35633
35758
  description: "Display remaining capacity",
35634
35759
  required: false,
35635
35760
  defaultValue: true,
@@ -35928,7 +36053,7 @@ function planEventRegistrationScope(input) {
35928
36053
  };
35929
36054
  }
35930
36055
  //#endregion
35931
- //#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
36056
+ //#region ../blocks/src/system/runtime/nodes/events/domain/destination.ts
35932
36057
  function isRecord$10(value) {
35933
36058
  return typeof value === "object" && value !== null && !Array.isArray(value);
35934
36059
  }
@@ -35946,7 +36071,7 @@ function resolveRuntimeEventDestination(event) {
35946
36071
  };
35947
36072
  }
35948
36073
  //#endregion
35949
- //#region ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
36074
+ //#region ../blocks/src/system/runtime/nodes/events/domain/pricing.ts
35950
36075
  const DEFAULT_EVENT_CURRENCY = "USD";
35951
36076
  function resolveRuntimeEventPricing(event) {
35952
36077
  if (isPublicEventPricing(event.pricing)) return event.pricing;
@@ -36626,7 +36751,7 @@ const eventRegistrationBlockDefinition = {
36626
36751
  {
36627
36752
  id: "showCapacity",
36628
36753
  type: "boolean",
36629
- label: "Show available spots",
36754
+ label: "Show available places",
36630
36755
  description: "Display remaining capacity",
36631
36756
  required: false,
36632
36757
  defaultValue: true,
@@ -37187,7 +37312,11 @@ const eventSpotlightBlockDefinition = {
37187
37312
  } }
37188
37313
  };
37189
37314
  //#endregion
37190
- //#region ../blocks/src/system/runtime/nodes/events/shared/utils.ts
37315
+ //#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
37316
+ /**
37317
+ * Layout classes for event listing containers and cards. Presentation
37318
+ * plumbing rather than event domain logic, so it lives beside the components.
37319
+ */
37191
37320
  /**
37192
37321
  * Column class mappings for grid layouts, derived from the canonical
37193
37322
  * responsive column ladder (see gridUserColumnLadder).
@@ -38519,7 +38648,7 @@ const eventCalendarAdditionalFields = [
38519
38648
  {
38520
38649
  id: "showCapacity",
38521
38650
  type: "boolean",
38522
- label: "Show available spots",
38651
+ label: "Show available places",
38523
38652
  description: "Display remaining capacity on event cards and timetable cells",
38524
38653
  required: false,
38525
38654
  defaultValue: true,
@@ -48548,6 +48677,50 @@ z.object({
48548
48677
  title: z.string(),
48549
48678
  slug: z.string().min(1)
48550
48679
  });
48680
+ z.object({
48681
+ signedUrl: z.string().url(),
48682
+ token: z.string().min(1),
48683
+ storagePath: z.string().min(1)
48684
+ }).strict();
48685
+ const backupManifestSchema = z.object({
48686
+ siteId: z.string().min(1),
48687
+ siteSlug: z.string().min(1),
48688
+ siteTitle: z.string(),
48689
+ exportedAt: z.string().min(1),
48690
+ tableCount: z.number().int().nonnegative(),
48691
+ totalRecords: z.number().int().nonnegative(),
48692
+ pageCount: z.number().int().nonnegative(),
48693
+ blockCount: z.number().int().nonnegative(),
48694
+ contentEntryCount: z.number().int().nonnegative(),
48695
+ formCount: z.number().int().nonnegative(),
48696
+ navigationMenuCount: z.number().int().nonnegative(),
48697
+ mediaCount: z.number().int().nonnegative(),
48698
+ mediaBytes: z.number().int().nonnegative()
48699
+ }).strict();
48700
+ z.object({
48701
+ ok: z.literal(true),
48702
+ manifest: backupManifestSchema,
48703
+ storagePath: z.string().min(1)
48704
+ }).strict();
48705
+ z.object({
48706
+ ok: z.literal(true),
48707
+ siteId: brandedIdSchema(parseSiteId, "site id"),
48708
+ slug: z.string().min(1),
48709
+ title: z.string(),
48710
+ counts: z.record(z.string(), z.object({
48711
+ created: z.number().int().nonnegative(),
48712
+ updated: z.number().int().nonnegative(),
48713
+ skipped: z.number().int().nonnegative(),
48714
+ failed: z.number().int().nonnegative()
48715
+ }).strict()),
48716
+ warnings: z.array(z.string()),
48717
+ errors: z.array(z.object({
48718
+ table: z.string(),
48719
+ id: z.string(),
48720
+ error: z.string()
48721
+ }).strict())
48722
+ }).strict();
48723
+ z.object({ deleted: z.boolean() }).strict();
48551
48724
  const apiKeyIdSchema = brandedIdSchema(parseApiKeyId, "API key id");
48552
48725
  const standardKeyIdsSchema = z.object({
48553
48726
  live: apiKeyIdSchema.optional(),
@@ -50148,9 +50321,7 @@ function admitMaterializedSdkTemplateBlockContent(input) {
50148
50321
  const baseContent = sanitizeSdkRuntimeBlockContent(input.block.blockKind, input.block.content ?? {});
50149
50322
  const bindings = input.block.bindings ?? {};
50150
50323
  const materialized = input.block.scope === "entry" && Object.keys(bindings).length > 0 ? applyBindingsToContent(baseContent, bindings, input.bindingContext) : baseContent;
50151
- const contract = compileManifestContentContract(input.manifestOrFields);
50152
- const stored = admitStoredManifestContent(contract, materialized);
50153
- return stored.ok ? deriveRenderableManifestContent(contract, stored.value, (content) => content) : stored;
50324
+ return admitTransportedRenderableManifestContent(compileManifestContentContract(input.manifestOrFields), materialized);
50154
50325
  }
50155
50326
  function createTemplateRenderTarget(source, templateId) {
50156
50327
  switch (source.kind) {
@@ -50282,13 +50453,7 @@ function admitEntrySlotBlock(block, customBlocks) {
50282
50453
  if (transportedAdmission) return invalidRenderableBlock(base, transportedAdmission.error);
50283
50454
  const manifest = resolveSdkBlockManifest(block.kind, customBlocks);
50284
50455
  if (manifest === null) return invalidRenderableBlock(base, { kind: "manifest_unavailable" });
50285
- const contract = compileManifestContentContract(manifest);
50286
- const stored = admitStoredManifestContent(contract, block.content ?? {});
50287
- if (!stored.ok) return invalidRenderableBlock(base, {
50288
- kind: "invalid_manifest_content",
50289
- error: stored.error
50290
- });
50291
- const renderable = deriveRenderableManifestContent(contract, stored.value, (content) => content);
50456
+ const renderable = admitTransportedRenderableManifestContent(compileManifestContentContract(manifest), block.content ?? {});
50292
50457
  return renderable.ok ? {
50293
50458
  ...base,
50294
50459
  admission: {