@riverbankcms/sdk 0.78.0 → 0.79.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 (222) hide show
  1. package/README.md +125 -43
  2. package/dist/{PreviewEditorSidebar-RIKFQ72L.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +750 -65
  3. package/dist/{PreviewEditorUI-XO7TUWKK.mjs → PreviewEditorUI-27KJVEET.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +72 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  7. package/dist/_dts/api/src/endpoints.d.ts +64 -0
  8. package/dist/_dts/api/src/index.d.ts +8 -6
  9. package/dist/_dts/api/src/media.d.ts +8 -1
  10. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  11. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
  12. package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
  13. package/dist/_dts/api/src/navigation.d.ts +2 -0
  14. package/dist/_dts/api/src/public/types.d.ts +1 -1
  15. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
  16. package/dist/_dts/api/src/request.d.ts +3 -11
  17. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  18. package/dist/_dts/api/src/sdkContracts.d.ts +8 -1
  19. package/dist/_dts/api/src/siteIcons.d.ts +128 -0
  20. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +26 -0
  21. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +8 -0
  22. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +21 -20
  23. package/dist/_dts/api/src/types.d.ts +12 -27
  24. package/dist/_dts/api/src/webhooks.d.ts +239 -0
  25. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  26. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  27. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  28. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  29. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  30. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  31. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  32. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  33. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  34. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  35. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  36. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  37. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  38. package/dist/_dts/blocks/src/index.d.ts +4 -0
  39. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
  40. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
  41. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
  42. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
  43. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
  44. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
  45. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
  46. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
  47. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
  48. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
  50. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +69 -22
  51. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
  52. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
  53. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
  54. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  55. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  56. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
  57. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
  58. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
  59. package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
  60. package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
  61. package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
  62. package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
  63. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
  64. package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
  65. package/dist/_dts/blocks/src/system/index.d.ts +1 -0
  66. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
  67. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +187 -0
  68. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
  71. package/dist/_dts/content-editor/src/index.d.ts +1 -1
  72. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  73. package/dist/_dts/content-model/src/content-types/schema.d.ts +14 -0
  74. package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
  75. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  76. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  77. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  78. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  79. package/dist/_dts/core/src/branded.d.ts +114 -85
  80. package/dist/_dts/core/src/csv-types.d.ts +2 -2
  81. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  82. package/dist/_dts/core/src/participants.d.ts +2 -2
  83. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +202 -0
  84. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
  85. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
  86. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
  87. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
  88. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
  89. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
  90. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
  91. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  92. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  93. package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
  94. package/dist/_dts/media-editor/src/MediaEditor.d.ts +5 -2
  95. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  96. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  97. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  98. package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
  99. package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
  100. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
  101. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
  102. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
  103. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
  104. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  105. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  106. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  107. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  108. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  109. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  110. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  111. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  112. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
  113. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  114. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  115. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  116. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
  117. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
  118. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  119. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  120. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  121. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
  122. package/dist/_dts/sdk/src/client/management/types.d.ts +8 -0
  123. package/dist/_dts/sdk/src/client/types.d.ts +2 -2
  124. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  125. package/dist/_dts/sdk/src/config/field-definitions.d.ts +5 -1
  126. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  127. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
  128. package/dist/_dts/sdk/src/next/index.d.ts +1 -1
  129. package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
  130. package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
  131. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  132. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  133. package/dist/_dts/sdk/src/version.d.ts +1 -1
  134. package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
  135. package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
  136. package/dist/_dts/site-commands/src/commands.d.ts +6 -0
  137. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  138. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
  139. package/dist/_dts/theme-core/src/schema.d.ts +5 -5
  140. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
  141. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
  142. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  143. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
  144. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
  145. package/dist/_dts/ui/src/combobox.d.ts +1 -0
  146. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  147. package/dist/{chunk-F7RTCZYN.mjs → chunk-4HCW7FHJ.mjs} +504 -63
  148. package/dist/{chunk-SXOLGNMX.mjs → chunk-A3HHFKVT.mjs} +1 -1
  149. package/dist/{chunk-TXDES5P2.mjs → chunk-GP555I66.mjs} +180 -10
  150. package/dist/{chunk-SVMMM2NA.mjs → chunk-K2IIF34C.mjs} +79 -5
  151. package/dist/{chunk-NIDXI46P.mjs → chunk-LCY32PXF.mjs} +1 -1
  152. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  153. package/dist/{chunk-OECWLDHN.mjs → chunk-V47ZU33I.mjs} +2762 -732
  154. package/dist/cli/index.mjs +1799 -345
  155. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  156. package/dist/cli/init-docs/content/content-management.md +2 -2
  157. package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
  158. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
  159. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  160. package/dist/client/{accordion-EVDEOUPR.mjs → accordion-QLA7KBYO.mjs} +2 -2
  161. package/dist/client/analytics.mjs +1 -1
  162. package/dist/client/{bookingForm-DIHBLC64.mjs → bookingForm-PYZIPA5G.mjs} +55 -48
  163. package/dist/client/bookings.mjs +172 -57
  164. package/dist/client/{carousel-FEBQHIWI.mjs → carousel-5EIULWBI.mjs} +3 -3
  165. package/dist/client/{cart-7CKSXAE4.mjs → cart-DOP3FNI4.mjs} +7 -7
  166. package/dist/client/{checkout-WKYCANLV.mjs → checkout-BVMF6FBV.mjs} +7 -7
  167. package/dist/client/{chunk-GUK2FPXQ.mjs → chunk-44K2U3QI.mjs} +37 -15
  168. package/dist/client/{chunk-IVNCUVAV.mjs → chunk-AUJ5DBZJ.mjs} +18 -18
  169. package/dist/client/{chunk-VPPMNXCF.mjs → chunk-CCNTDRCF.mjs} +2 -2
  170. package/dist/client/{chunk-36WJCERQ.mjs → chunk-CE7IBGVW.mjs} +3 -1
  171. package/dist/client/{chunk-2SAVKN2M.mjs → chunk-GG4M2NP6.mjs} +2 -2
  172. package/dist/client/{chunk-65F47D7Y.mjs → chunk-R5ESWNKX.mjs} +49 -39
  173. package/dist/client/{chunk-RZDWX7QW.mjs → chunk-TYONZMST.mjs} +1 -1
  174. package/dist/client/{chunk-OFMSCGNY.mjs → chunk-UDS3NTWA.mjs} +2 -2
  175. package/dist/client/{chunk-YDSEG6GZ.mjs → chunk-V6M5FCR5.mjs} +2 -2
  176. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  177. package/dist/client/{chunk-RV6FX7UH.mjs → chunk-YLDYVRZL.mjs} +9 -9
  178. package/dist/client/{chunk-PD6NBCEY.mjs → chunk-ZFHRN6W2.mjs} +1 -1
  179. package/dist/client/client.mjs +21501 -19812
  180. package/dist/client/{courseRegistration-5QF2PHKM.mjs → courseRegistration-E6EAA6NL.mjs} +10 -10
  181. package/dist/client/{eventCalendar-4ZOSETDU.mjs → eventCalendar-HBG3HAK6.mjs} +9 -9
  182. package/dist/client/{eventCombined-WQGU7JUX.mjs → eventCombined-6K5ZZWAK.mjs} +9 -9
  183. package/dist/client/{eventDetails-AYWVUJ5Y.mjs → eventDetails-Q75ICXLT.mjs} +9 -9
  184. package/dist/client/{eventListing-NT7C6UT5.mjs → eventListing-27P5F7DZ.mjs} +9 -9
  185. package/dist/client/{eventRegistration-OH24F4ZJ.mjs → eventRegistration-IQ7AMASR.mjs} +9 -9
  186. package/dist/client/{form-7L42SRBB.mjs → form-JRTD65FN.mjs} +6 -3
  187. package/dist/client/{headerSection-OZRZNZ52.mjs → headerSection-7FPSSZHS.mjs} +3 -3
  188. package/dist/client/hooks.mjs +428 -83
  189. package/dist/client/{locationMap-ZBXRPQ7C.mjs → locationMap-7NGFNYBH.mjs} +3 -3
  190. package/dist/client/{newsletterForm-SNAGFF2I.mjs → newsletterForm-F3BADCI2.mjs} +2 -2
  191. package/dist/client/{productDetail-I46BOFGV.mjs → productDetail-V3HP7ITJ.mjs} +7 -7
  192. package/dist/client/{productList-BOYHTYI6.mjs → productList-L3EGJUF2.mjs} +7 -7
  193. package/dist/client/rendering/client.mjs +2886 -1513
  194. package/dist/client/rendering/islands.mjs +19 -19
  195. package/dist/client/rendering.mjs +2244 -564
  196. package/dist/client/{shop-XTXPZTKR.mjs → shop-DQUB5E2C.mjs} +7 -7
  197. package/dist/preview-next/before-render.mjs +65 -1
  198. package/dist/preview-next/client/runtime.mjs +6 -6
  199. package/dist/preview-next/middleware.mjs +65 -1
  200. package/dist/preview-next/tailwind-sources.css +1 -0
  201. package/dist/sdk-runtime-AF6KXJU4.mjs +8 -0
  202. package/dist/server/components.mjs +2270 -835
  203. package/dist/server/config-template-validation.mjs +221 -15
  204. package/dist/server/config-validation.mjs +426 -77
  205. package/dist/server/config.mjs +426 -77
  206. package/dist/server/data.mjs +427 -82
  207. package/dist/server/index.mjs +94 -10
  208. package/dist/server/next/revalidate.mjs +229 -34
  209. package/dist/server/next.mjs +2439 -888
  210. package/dist/server/page-converter.mjs +335 -74
  211. package/dist/server/prebuild.mjs +1 -1
  212. package/dist/server/rendering/server.mjs +2281 -846
  213. package/dist/server/rendering.mjs +2298 -860
  214. package/dist/server/routing.mjs +860 -113
  215. package/dist/server/server.mjs +452 -92
  216. package/dist/server/theme-bridge.mjs +164 -2
  217. package/dist/server/theme.mjs +2 -2
  218. package/dist/server/webhooks.mjs +129 -25
  219. package/dist/styles/index.css +55 -0
  220. package/package.json +2 -1
  221. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +0 -8
  222. package/dist/sdk-runtime-ZJLKC6DR.mjs +0 -8
@@ -146,7 +146,7 @@ var themeColorBaseTokenNames = [
146
146
  "accentForeground"
147
147
  ];
148
148
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
149
- var SHADE_STEPS = [
149
+ var themeColorShadeSteps = [
150
150
  "50",
151
151
  "100",
152
152
  "200",
@@ -159,7 +159,7 @@ var SHADE_STEPS = [
159
159
  "900",
160
160
  "950"
161
161
  ];
162
- var shadeStepSet = new Set(SHADE_STEPS);
162
+ var shadeStepSet = new Set(themeColorShadeSteps);
163
163
  function isKnownBaseToken(value) {
164
164
  return themeColorBaseTokenSet.has(value);
165
165
  }
@@ -4718,6 +4718,114 @@ var curatedSiteStyles = [
4718
4718
  paletteChoice("warm-neutral-clay")
4719
4719
  ]
4720
4720
  }),
4721
+ defineCuratedSiteStyle({
4722
+ id: "site-style:clarity-zen-blue",
4723
+ name: "Clarity Zen",
4724
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
4725
+ generationBrief: "Use a calm, soft palette, editorial serif headings, warm grounded copy, rounded cards, calm proof sections, and clear booking routes. Keep the tone compassionate and straightforward, with professional trust rather than hard-sell wellness language.",
4726
+ siteCreatorSelection: {
4727
+ kind: "site_creator_keyword_heuristic",
4728
+ priority: 25
4729
+ },
4730
+ selectionKeywordRules: [
4731
+ { kind: "substring", value: "psychotherap" },
4732
+ { kind: "phrase", value: "mental health" },
4733
+ { kind: "phrase", value: "talk therapy" },
4734
+ { kind: "phrase", value: "therapy and wellbeing" }
4735
+ ],
4736
+ tokenRecipes: {
4737
+ palette: "brand-led",
4738
+ contrast: "standard",
4739
+ radius: "rounded",
4740
+ shadow: "subtle",
4741
+ typography: "serif-editorial",
4742
+ spacing: "airy",
4743
+ motion: "subtle"
4744
+ },
4745
+ compositionBudget: balancedBudget,
4746
+ themeOverrides: {
4747
+ typography: {
4748
+ body: {
4749
+ family: "Inter, system-ui, sans-serif",
4750
+ size: "md",
4751
+ weight: "regular",
4752
+ lineHeight: "relaxed",
4753
+ letterSpacing: "normal"
4754
+ },
4755
+ headings: {
4756
+ default: {
4757
+ family: '"Cormorant Garamond", Georgia, serif',
4758
+ weight: "regular",
4759
+ lineHeight: "normal",
4760
+ letterSpacing: "normal",
4761
+ colorToken: "text",
4762
+ italic: null,
4763
+ case: null
4764
+ },
4765
+ h1: {
4766
+ size: "xl",
4767
+ weight: "regular",
4768
+ lineHeight: "normal",
4769
+ letterSpacing: "normal",
4770
+ italic: null
4771
+ },
4772
+ h2: {
4773
+ size: "lg",
4774
+ weight: "regular",
4775
+ lineHeight: "normal",
4776
+ letterSpacing: "normal",
4777
+ italic: null
4778
+ },
4779
+ h3: {
4780
+ size: "md",
4781
+ weight: "regular",
4782
+ lineHeight: "normal",
4783
+ letterSpacing: "normal",
4784
+ italic: null
4785
+ }
4786
+ },
4787
+ scale: "majorThird"
4788
+ },
4789
+ bodyText: {
4790
+ intro: {
4791
+ paragraphSize: "default",
4792
+ headingSize: "editorial"
4793
+ }
4794
+ }
4795
+ },
4796
+ defaultBlockVariants: {
4797
+ "block.faq": "split-heading-columns"
4798
+ },
4799
+ recommendedAppearancePresetIds: [
4800
+ "hero-split-editorial",
4801
+ "intro-organic-statement",
4802
+ "feature-cards-raised-rule",
4803
+ "media-text-quiet-story",
4804
+ "testimonials-brand-background-quotes",
4805
+ "faq-contained-help",
4806
+ "contact-form-panel"
4807
+ ],
4808
+ recommendedHeaderLookIds: [
4809
+ "centered-calm",
4810
+ "serif-line",
4811
+ "minimal-transparent"
4812
+ ],
4813
+ recommendedFooterLookIds: [
4814
+ "footer-muted-grounding",
4815
+ "site-footer-brand-two-band"
4816
+ ],
4817
+ buttonPersonalityChoices: [
4818
+ buttonChoice("soft-pill"),
4819
+ buttonChoice("pebble"),
4820
+ buttonChoice("editorial-link")
4821
+ ],
4822
+ paletteVariantChoices: [
4823
+ paletteChoice("brand-led-cool"),
4824
+ paletteChoice("soft-natural-watercolor"),
4825
+ paletteChoice("soft-natural-stone"),
4826
+ paletteChoice("warm-neutral-cream")
4827
+ ]
4828
+ }),
4721
4829
  defineCuratedSiteStyle({
4722
4830
  id: "site-style:personal-retreat-journal",
4723
4831
  name: "Personal Retreat Journal",
@@ -15396,6 +15504,60 @@ var containerResponsiveThemeCss = `/*
15396
15504
 
15397
15505
  :where(.theme-scope) .rb-heading-decoration-color-muted {
15398
15506
  color: rgb(var(--tb-mutedText));
15507
+ }
15508
+
15509
+ /* =============================================================================
15510
+ * Block: Feature Card Icons
15511
+ * =============================================================================
15512
+ */
15513
+
15514
+ :where(.theme-scope) .rb-feature-card-icon-zone {
15515
+ display: inline-flex;
15516
+ align-items: center;
15517
+ justify-content: center;
15518
+ flex: 0 0 auto;
15519
+ margin-bottom: 0.125rem;
15520
+ color: rgb(var(--tb-primary));
15521
+ }
15522
+
15523
+ :where(.theme-scope) .rb-feature-card-icon-zone--empty {
15524
+ visibility: hidden;
15525
+ }
15526
+
15527
+ :where(.theme-scope) .rb-feature-card-icon-zone--plain {
15528
+ width: 1.5rem;
15529
+ height: 1.5rem;
15530
+ }
15531
+
15532
+ :where(.theme-scope) .rb-feature-card-icon-zone--soft-badge,
15533
+ :where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
15534
+ width: 2.5rem;
15535
+ height: 2.5rem;
15536
+ border-radius: var(--rb-block-radius, 0.75rem);
15537
+ }
15538
+
15539
+ :where(.theme-scope) .rb-feature-card-icon-zone--soft-badge {
15540
+ background-color: rgb(var(--tb-primary) / 10%);
15541
+ }
15542
+
15543
+ :where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
15544
+ background-color: rgb(var(--tb-surface));
15545
+ border: 1px solid rgb(var(--tb-border));
15546
+ box-shadow: 0 1px 2px rgba(var(--tb-shadow), 0.08);
15547
+ }
15548
+
15549
+ :where(.theme-scope) .rb-feature-card-icon {
15550
+ width: 1.25rem;
15551
+ height: 1.25rem;
15552
+ }
15553
+
15554
+ :where(.theme-scope) .rb-feature-card-icon--generated {
15555
+ object-fit: contain;
15556
+ }
15557
+
15558
+ :where(.theme-scope) .rb-feature-card-icon-zone--plain .rb-feature-card-icon {
15559
+ width: 1.5rem;
15560
+ height: 1.5rem;
15399
15561
  }`;
15400
15562
 
15401
15563
  // ../theme-core/src/ThemeScopeCore.tsx
@@ -174,7 +174,7 @@ var themeColorBaseTokenNames = [
174
174
  "accentForeground"
175
175
  ];
176
176
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
177
- var SHADE_STEPS = [
177
+ var themeColorShadeSteps = [
178
178
  "50",
179
179
  "100",
180
180
  "200",
@@ -187,7 +187,7 @@ var SHADE_STEPS = [
187
187
  "900",
188
188
  "950"
189
189
  ];
190
- var shadeStepSet = new Set(SHADE_STEPS);
190
+ var shadeStepSet = new Set(themeColorShadeSteps);
191
191
  function isKnownBaseToken(value) {
192
192
  return themeColorBaseTokenSet.has(value);
193
193
  }
@@ -1,53 +1,151 @@
1
1
  // src/webhooks/verify.ts
2
2
  import crypto from "crypto";
3
+
4
+ // ../api/src/webhooks.ts
3
5
  import { z } from "zod";
4
- var WebhookEventSchema = z.enum([
6
+ var RIVERBANK_SIGNATURE_PREFIX = "sha256=";
7
+ var SUPPORTED_WEBHOOK_EVENTS = [
5
8
  "page.published",
9
+ "page.unpublished",
10
+ "page.deleted",
11
+ "page.path_changed",
6
12
  "entry.published",
13
+ "entry.unpublished",
14
+ "entry.deleted",
15
+ "entry.path_changed",
7
16
  "navigation.updated",
8
17
  "theme.updated",
9
18
  "site.settings_updated"
10
- ]);
19
+ ];
20
+ var WebhookEventSchema = z.enum(SUPPORTED_WEBHOOK_EVENTS);
21
+ function asRevalidationPath(path) {
22
+ return path;
23
+ }
24
+ function parseRevalidationPath(input) {
25
+ const trimmed = input.trim();
26
+ if (!trimmed) {
27
+ return { success: false, error: { tag: "EMPTY_PATH", input } };
28
+ }
29
+ if (/^[a-z][a-z\d+.-]*:/i.test(trimmed) || trimmed.startsWith("//") || !trimmed.startsWith("/")) {
30
+ return { success: false, error: { tag: "ABSOLUTE_OR_PROTOCOL_PATH", input } };
31
+ }
32
+ if (/[\u0000-\u001F\u007F]/.test(trimmed) || trimmed.includes("\\") || trimmed.includes("?") || trimmed.includes("#")) {
33
+ return { success: false, error: { tag: "MALFORMED_PATH", input } };
34
+ }
35
+ const collapsed = trimmed.replace(/\/{2,}/g, "/");
36
+ const normalized = collapsed === "/" ? "/" : collapsed.replace(/\/+$/g, "");
37
+ return { success: true, path: asRevalidationPath(normalized) };
38
+ }
39
+ function normalizeRevalidationPath(input) {
40
+ const result = parseRevalidationPath(input);
41
+ return result.success ? result.path : null;
42
+ }
43
+ function unwrapRevalidationPath(path) {
44
+ return path;
45
+ }
11
46
  var PagePublishedDataSchema = z.object({
12
47
  pageId: z.string(),
13
48
  path: z.string(),
14
49
  slug: z.string().optional()
15
- });
50
+ }).strict();
51
+ var PageRemovedDataSchema = z.object({
52
+ pageId: z.string(),
53
+ path: z.string(),
54
+ slug: z.string().optional()
55
+ }).strict();
56
+ var PagePathChangedDataSchema = z.object({
57
+ pageId: z.string(),
58
+ previousPath: z.string(),
59
+ path: z.string(),
60
+ slug: z.string().optional()
61
+ }).strict();
16
62
  var EntryPublishedDataSchema = z.object({
17
63
  entryId: z.string(),
18
64
  path: z.string(),
19
65
  contentType: z.string()
20
- });
66
+ }).strict();
67
+ var EntryRemovedDataSchema = z.object({
68
+ entryId: z.string(),
69
+ path: z.string(),
70
+ contentType: z.string()
71
+ }).strict();
72
+ var EntryPathChangedDataSchema = z.object({
73
+ entryId: z.string(),
74
+ previousPath: z.string(),
75
+ path: z.string(),
76
+ contentType: z.string()
77
+ }).strict();
21
78
  var NavigationUpdatedDataSchema = z.object({
22
79
  menuId: z.string().optional()
23
- });
24
- var EmptyDataSchema = z.object({});
25
- var WebhookDataSchema = z.union([
26
- PagePublishedDataSchema,
27
- EntryPublishedDataSchema,
28
- NavigationUpdatedDataSchema,
29
- EmptyDataSchema
30
- ]);
31
- var WebhookPayloadSchema = z.object({
32
- /** Event type */
33
- event: WebhookEventSchema,
34
- /** ISO timestamp of when the event occurred */
80
+ }).strict();
81
+ var EmptyWebhookDataSchema = z.object({}).strict();
82
+ var WebhookPayloadBaseSchema = z.object({
35
83
  timestamp: z.string(),
36
- /** Site ID that triggered the event */
84
+ dispatchId: z.string().optional(),
37
85
  siteId: z.string(),
38
- /** Event-specific data (shape depends on event type) */
39
- data: z.record(z.string(), z.unknown()),
40
- /** Cache invalidation tags (for tag-based revalidation) */
41
- tags: z.array(z.string()).optional()
86
+ tags: z.array(z.string()).optional(),
87
+ paths: z.array(z.string()).optional()
42
88
  });
89
+ var WebhookPayloadSchema = z.discriminatedUnion("event", [
90
+ WebhookPayloadBaseSchema.extend({
91
+ event: z.literal("page.published"),
92
+ data: PagePublishedDataSchema
93
+ }),
94
+ WebhookPayloadBaseSchema.extend({
95
+ event: z.literal("page.unpublished"),
96
+ data: PageRemovedDataSchema
97
+ }),
98
+ WebhookPayloadBaseSchema.extend({
99
+ event: z.literal("page.deleted"),
100
+ data: PageRemovedDataSchema
101
+ }),
102
+ WebhookPayloadBaseSchema.extend({
103
+ event: z.literal("page.path_changed"),
104
+ data: PagePathChangedDataSchema
105
+ }),
106
+ WebhookPayloadBaseSchema.extend({
107
+ event: z.literal("entry.published"),
108
+ data: EntryPublishedDataSchema
109
+ }),
110
+ WebhookPayloadBaseSchema.extend({
111
+ event: z.literal("entry.unpublished"),
112
+ data: EntryRemovedDataSchema
113
+ }),
114
+ WebhookPayloadBaseSchema.extend({
115
+ event: z.literal("entry.deleted"),
116
+ data: EntryRemovedDataSchema
117
+ }),
118
+ WebhookPayloadBaseSchema.extend({
119
+ event: z.literal("entry.path_changed"),
120
+ data: EntryPathChangedDataSchema
121
+ }),
122
+ WebhookPayloadBaseSchema.extend({
123
+ event: z.literal("navigation.updated"),
124
+ data: NavigationUpdatedDataSchema
125
+ }),
126
+ WebhookPayloadBaseSchema.extend({
127
+ event: z.literal("theme.updated"),
128
+ data: EmptyWebhookDataSchema
129
+ }),
130
+ WebhookPayloadBaseSchema.extend({
131
+ event: z.literal("site.settings_updated"),
132
+ data: EmptyWebhookDataSchema
133
+ })
134
+ ]);
135
+
136
+ // src/webhooks/verify.ts
43
137
  function verifyWebhookSignature(payload, signature, secret) {
44
- const expectedSignature = crypto.createHmac("sha256", secret).update(payload).digest("hex");
45
- if (signature.length !== expectedSignature.length) {
138
+ if (!signature.startsWith(RIVERBANK_SIGNATURE_PREFIX)) {
46
139
  return false;
47
140
  }
141
+ const signatureDigest = signature.slice(RIVERBANK_SIGNATURE_PREFIX.length);
142
+ if (!/^[a-f0-9]{64}$/.test(signatureDigest)) {
143
+ return false;
144
+ }
145
+ const expectedSignature = crypto.createHmac("sha256", secret).update(payload).digest("hex");
48
146
  return crypto.timingSafeEqual(
49
- Buffer.from(signature),
50
- Buffer.from(expectedSignature)
147
+ Buffer.from(signatureDigest, "hex"),
148
+ Buffer.from(expectedSignature, "hex")
51
149
  );
52
150
  }
53
151
  function parseWebhookPayload(body) {
@@ -64,7 +162,13 @@ function parseWebhookPayload(body) {
64
162
  return { success: true, payload: result.data };
65
163
  }
66
164
  export {
165
+ RIVERBANK_SIGNATURE_PREFIX,
166
+ SUPPORTED_WEBHOOK_EVENTS,
167
+ WebhookEventSchema,
67
168
  WebhookPayloadSchema,
169
+ normalizeRevalidationPath,
170
+ parseRevalidationPath,
68
171
  parseWebhookPayload,
172
+ unwrapRevalidationPath,
69
173
  verifyWebhookSignature
70
174
  };
@@ -9432,3 +9432,58 @@
9432
9432
  }
9433
9433
 
9434
9434
 
9435
+ /* =============================================================================
9436
+ * Block: Feature Card Icons
9437
+ * =============================================================================
9438
+ */
9439
+
9440
+ :where(.theme-scope) .rb-feature-card-icon-zone {
9441
+ display: inline-flex;
9442
+ align-items: center;
9443
+ justify-content: center;
9444
+ flex: 0 0 auto;
9445
+ margin-bottom: 0.125rem;
9446
+ color: rgb(var(--tb-primary));
9447
+ }
9448
+
9449
+ :where(.theme-scope) .rb-feature-card-icon-zone--empty {
9450
+ visibility: hidden;
9451
+ }
9452
+
9453
+ :where(.theme-scope) .rb-feature-card-icon-zone--plain {
9454
+ width: 1.5rem;
9455
+ height: 1.5rem;
9456
+ }
9457
+
9458
+ :where(.theme-scope) .rb-feature-card-icon-zone--soft-badge,
9459
+ :where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
9460
+ width: 2.5rem;
9461
+ height: 2.5rem;
9462
+ border-radius: var(--rb-block-radius, 0.75rem);
9463
+ }
9464
+
9465
+ :where(.theme-scope) .rb-feature-card-icon-zone--soft-badge {
9466
+ background-color: rgb(var(--tb-primary) / 10%);
9467
+ }
9468
+
9469
+ :where(.theme-scope) .rb-feature-card-icon-zone--utility-badge {
9470
+ background-color: rgb(var(--tb-surface));
9471
+ border: 1px solid rgb(var(--tb-border));
9472
+ box-shadow: 0 1px 2px rgba(var(--tb-shadow), 0.08);
9473
+ }
9474
+
9475
+ :where(.theme-scope) .rb-feature-card-icon {
9476
+ width: 1.25rem;
9477
+ height: 1.25rem;
9478
+ }
9479
+
9480
+ :where(.theme-scope) .rb-feature-card-icon--generated {
9481
+ object-fit: contain;
9482
+ }
9483
+
9484
+ :where(.theme-scope) .rb-feature-card-icon-zone--plain .rb-feature-card-icon {
9485
+ width: 1.5rem;
9486
+ height: 1.5rem;
9487
+ }
9488
+
9489
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.78.0",
3
+ "version": "0.79.0",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -234,6 +234,7 @@
234
234
  "test:lazy-overrides-smoke": "node scripts/lazy-overrides-smoke.mjs",
235
235
  "test:layout-page-hydration-smoke": "node scripts/layout-page-hydration-smoke.mjs",
236
236
  "test:content-load-failure-status-smoke": "node scripts/content-load-failure-status-smoke.mjs",
237
+ "test:isr-catch-all-revalidate-smoke": "node scripts/isr-catch-all-revalidate-smoke.mjs",
237
238
  "verify": "./verify.sh",
238
239
  "cli": "tsx src/cli/index.ts"
239
240
  },
@@ -1,8 +0,0 @@
1
- "use client";
2
- export { SdkPreviewModeRuntime } from './chunk-F7RTCZYN.mjs';
3
- import './chunk-SXOLGNMX.mjs';
4
- import './chunk-NIDXI46P.mjs';
5
- import './chunk-TXDES5P2.mjs';
6
- import './chunk-OECWLDHN.mjs';
7
- import './chunk-SVMMM2NA.mjs';
8
- import './chunk-XGB3TDIC.mjs';
@@ -1,8 +0,0 @@
1
- "use client";
2
- export { PreviewShell, PreviewShellLayout, SdkPreviewModeRuntime as SdkPreviewMode } from './chunk-F7RTCZYN.mjs';
3
- export { PreviewLayoutProvider, PreviewQueryProvider, createPreviewQueryClient, useOptionalPreviewLayout, usePreviewLayout } from './chunk-SXOLGNMX.mjs';
4
- import './chunk-NIDXI46P.mjs';
5
- import './chunk-TXDES5P2.mjs';
6
- import './chunk-OECWLDHN.mjs';
7
- import './chunk-SVMMM2NA.mjs';
8
- import './chunk-XGB3TDIC.mjs';