@riverbankcms/sdk 0.78.2 → 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 (159) hide show
  1. package/README.md +80 -0
  2. package/dist/{PreviewEditorSidebar-4DXLYX2V.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +724 -47
  3. package/dist/{PreviewEditorUI-CS5P4N3P.mjs → PreviewEditorUI-27KJVEET.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -0
  6. package/dist/_dts/api/src/endpoints.d.ts +55 -0
  7. package/dist/_dts/api/src/index.d.ts +5 -3
  8. package/dist/_dts/api/src/media.d.ts +8 -1
  9. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  10. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
  11. package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
  12. package/dist/_dts/api/src/navigation.d.ts +2 -0
  13. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
  14. package/dist/_dts/api/src/sdkContracts.d.ts +1 -0
  15. package/dist/_dts/api/src/siteIcons.d.ts +128 -0
  16. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +16 -0
  17. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -0
  18. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  19. package/dist/_dts/api/src/types.d.ts +1 -1
  20. package/dist/_dts/api/src/webhooks.d.ts +239 -0
  21. package/dist/_dts/blocks/src/index.d.ts +4 -0
  22. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  23. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  24. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  25. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  26. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  27. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  28. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
  29. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
  30. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +22 -22
  34. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  35. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  36. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  37. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  38. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
  39. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
  40. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
  41. package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
  42. package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
  43. package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
  44. package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
  45. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
  46. package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
  47. package/dist/_dts/blocks/src/system/index.d.ts +1 -0
  48. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
  49. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +23 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
  51. package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
  52. package/dist/_dts/core/src/branded.d.ts +6 -0
  53. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +191 -0
  54. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
  55. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
  56. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
  57. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
  58. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
  59. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
  60. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
  61. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  62. package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
  63. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -2
  64. package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
  65. package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
  66. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
  67. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
  68. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
  69. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
  70. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
  71. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
  72. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
  73. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
  74. package/dist/_dts/sdk/src/client/management/types.d.ts +2 -0
  75. package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
  76. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  77. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
  78. package/dist/_dts/sdk/src/next/index.d.ts +1 -1
  79. package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
  80. package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
  81. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  82. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  83. package/dist/_dts/sdk/src/version.d.ts +1 -1
  84. package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
  85. package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
  86. package/dist/_dts/site-commands/src/commands.d.ts +3 -0
  87. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  88. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
  89. package/dist/_dts/theme-core/src/schema.d.ts +5 -5
  90. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
  91. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
  92. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  93. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
  94. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
  95. package/dist/_dts/ui/src/combobox.d.ts +1 -0
  96. package/dist/{chunk-RGTOD4AJ.mjs → chunk-4HCW7FHJ.mjs} +491 -56
  97. package/dist/{chunk-OKMBEAXY.mjs → chunk-A3HHFKVT.mjs} +1 -1
  98. package/dist/{chunk-6HYXHRAI.mjs → chunk-GP555I66.mjs} +177 -7
  99. package/dist/{chunk-CR5HKAGU.mjs → chunk-K2IIF34C.mjs} +55 -0
  100. package/dist/{chunk-4QEGTLK6.mjs → chunk-LCY32PXF.mjs} +1 -1
  101. package/dist/{chunk-MCRQMPET.mjs → chunk-V47ZU33I.mjs} +1745 -157
  102. package/dist/cli/index.mjs +1169 -171
  103. package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
  104. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
  105. package/dist/client/{accordion-PLYNJIIM.mjs → accordion-QLA7KBYO.mjs} +1 -1
  106. package/dist/client/{bookingForm-BXAP6AO7.mjs → bookingForm-PYZIPA5G.mjs} +3 -3
  107. package/dist/client/bookings.mjs +110 -2
  108. package/dist/client/{carousel-TRBXDHGF.mjs → carousel-5EIULWBI.mjs} +2 -2
  109. package/dist/client/{cart-Z7H3HJRS.mjs → cart-DOP3FNI4.mjs} +5 -5
  110. package/dist/client/{checkout-WAFCUBIX.mjs → checkout-BVMF6FBV.mjs} +5 -5
  111. package/dist/client/{chunk-JRDUHZCT.mjs → chunk-44K2U3QI.mjs} +4 -4
  112. package/dist/client/{chunk-UVQEJJTN.mjs → chunk-CCNTDRCF.mjs} +1 -1
  113. package/dist/client/{chunk-ZI3LLBPZ.mjs → chunk-GG4M2NP6.mjs} +1 -1
  114. package/dist/client/{chunk-JGXPTEI2.mjs → chunk-R5ESWNKX.mjs} +6 -3
  115. package/dist/client/{chunk-CWGTG37I.mjs → chunk-TYONZMST.mjs} +1 -1
  116. package/dist/client/{chunk-75OUS5MT.mjs → chunk-UDS3NTWA.mjs} +1 -1
  117. package/dist/client/{chunk-DNRGY432.mjs → chunk-V6M5FCR5.mjs} +1 -1
  118. package/dist/client/{chunk-FUXW6VW2.mjs → chunk-YLDYVRZL.mjs} +4 -4
  119. package/dist/client/client.mjs +21329 -19729
  120. package/dist/client/{courseRegistration-AHFQHWIJ.mjs → courseRegistration-E6EAA6NL.mjs} +3 -3
  121. package/dist/client/{eventCalendar-LDXTV5R7.mjs → eventCalendar-HBG3HAK6.mjs} +5 -5
  122. package/dist/client/{eventCombined-A4JGTNJO.mjs → eventCombined-6K5ZZWAK.mjs} +5 -5
  123. package/dist/client/{eventDetails-4YXTZ7EG.mjs → eventDetails-Q75ICXLT.mjs} +5 -5
  124. package/dist/client/{eventListing-P72TPFFM.mjs → eventListing-27P5F7DZ.mjs} +5 -5
  125. package/dist/client/{eventRegistration-LSYJHGMT.mjs → eventRegistration-IQ7AMASR.mjs} +5 -5
  126. package/dist/client/{form-AOPYOKOW.mjs → form-JRTD65FN.mjs} +1 -1
  127. package/dist/client/{headerSection-5TFYDFVQ.mjs → headerSection-7FPSSZHS.mjs} +2 -2
  128. package/dist/client/hooks.mjs +350 -35
  129. package/dist/client/{locationMap-QSZ3ZVAZ.mjs → locationMap-7NGFNYBH.mjs} +1 -1
  130. package/dist/client/{newsletterForm-KTRHZY52.mjs → newsletterForm-F3BADCI2.mjs} +1 -1
  131. package/dist/client/{productDetail-N4E775RG.mjs → productDetail-V3HP7ITJ.mjs} +5 -5
  132. package/dist/client/{productList-UGUQ2S45.mjs → productList-L3EGJUF2.mjs} +5 -5
  133. package/dist/client/rendering/client.mjs +2713 -1382
  134. package/dist/client/rendering/islands.mjs +18 -18
  135. package/dist/client/rendering.mjs +2014 -414
  136. package/dist/client/{shop-VHSZEEQ2.mjs → shop-DQUB5E2C.mjs} +5 -5
  137. package/dist/preview-next/before-render.mjs +55 -0
  138. package/dist/preview-next/client/runtime.mjs +5 -5
  139. package/dist/preview-next/middleware.mjs +55 -0
  140. package/dist/{sdk-runtime-WHPJEF5G.mjs → sdk-runtime-AF6KXJU4.mjs} +6 -6
  141. package/dist/server/components.mjs +2169 -781
  142. package/dist/server/config-validation.mjs +350 -35
  143. package/dist/server/config.mjs +350 -35
  144. package/dist/server/data.mjs +350 -35
  145. package/dist/server/index.mjs +64 -1
  146. package/dist/server/next/revalidate.mjs +229 -34
  147. package/dist/server/next.mjs +2307 -818
  148. package/dist/server/page-converter.mjs +275 -34
  149. package/dist/server/prebuild.mjs +1 -1
  150. package/dist/server/rendering/server.mjs +2174 -786
  151. package/dist/server/rendering.mjs +2187 -799
  152. package/dist/server/routing.mjs +767 -50
  153. package/dist/server/server.mjs +351 -36
  154. package/dist/server/theme-bridge.mjs +164 -2
  155. package/dist/server/theme.mjs +2 -2
  156. package/dist/server/webhooks.mjs +129 -25
  157. package/dist/styles/index.css +55 -0
  158. package/package.json +2 -1
  159. package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +0 -8
@@ -2149,6 +2149,46 @@ var ENDPOINT_DEFINITIONS = {
2149
2149
  auth: "user",
2150
2150
  responseKind: "json"
2151
2151
  },
2152
+ getSiteIconStyleGuide: {
2153
+ path: "/sites/{siteId}/settings/icon-style-guide",
2154
+ method: "GET",
2155
+ revalidate: 120,
2156
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2157
+ auth: "user",
2158
+ responseKind: "json",
2159
+ errors: []
2160
+ },
2161
+ updateSiteIconStyleGuide: {
2162
+ path: "/sites/{siteId}/settings/icon-style-guide",
2163
+ method: "POST",
2164
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2165
+ auth: "user",
2166
+ responseKind: "json",
2167
+ errors: []
2168
+ },
2169
+ regenerateSiteIconStyleGuide: {
2170
+ path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
2171
+ method: "POST",
2172
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2173
+ auth: "user",
2174
+ responseKind: "json",
2175
+ errors: []
2176
+ },
2177
+ generateGeneratedIconSet: {
2178
+ path: "/sites/{siteId}/ai/generated-icons/generate",
2179
+ method: "POST",
2180
+ auth: "user",
2181
+ responseKind: "json",
2182
+ errors: []
2183
+ },
2184
+ applyGeneratedIconSet: {
2185
+ path: "/sites/{siteId}/ai/generated-icons/apply",
2186
+ method: "POST",
2187
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2188
+ auth: "user",
2189
+ responseKind: "json",
2190
+ errors: []
2191
+ },
2152
2192
  getSiteAiProfile: {
2153
2193
  path: "/sites/{siteId}/settings/ai-site-profile",
2154
2194
  method: "GET",
@@ -3924,6 +3964,14 @@ var ENDPOINT_DEFINITIONS = {
3924
3964
  auth: "public",
3925
3965
  responseKind: "json"
3926
3966
  },
3967
+ getGeneratedIconRenderAssets: {
3968
+ path: "/public/sites/{siteId}/generated-icon-assets",
3969
+ method: "POST",
3970
+ tags: [TAG_TEMPLATES.siteRoutableContent],
3971
+ auth: "public",
3972
+ responseKind: "json",
3973
+ errors: []
3974
+ },
3927
3975
  // Resolve entry subroute by kind and URL segment
3928
3976
  resolveEntrySubroute: {
3929
3977
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5628,6 +5676,13 @@ var ENDPOINT_DEFINITIONS = {
5628
5676
  auth: "service",
5629
5677
  responseKind: "json"
5630
5678
  },
5679
+ sdkDeleteNavigationMenu: {
5680
+ path: "/sdk/{siteId}/navigation/{menuId}",
5681
+ method: "DELETE",
5682
+ auth: "service",
5683
+ responseKind: "json",
5684
+ errors: ["resource:not_found", "server:internal_error"]
5685
+ },
5631
5686
  sdkUpsertTheme: {
5632
5687
  path: "/sdk/{siteId}/theme",
5633
5688
  method: "POST",
@@ -6290,6 +6345,20 @@ var managedDomainAddOnPricingSnapshotSchema = z.object({
6290
6345
  monthlyCurrency: z.literal("gbp")
6291
6346
  });
6292
6347
 
6348
+ // ../api/src/media.ts
6349
+ var AMBIENT_BACKGROUND_ROLES = [
6350
+ "light-texture",
6351
+ "proof-band-dark",
6352
+ "cta-wash",
6353
+ "footer-detail",
6354
+ "style-atmosphere-1",
6355
+ "style-atmosphere-2"
6356
+ ];
6357
+ var SITE_BACKGROUND_ASSET_USES = [
6358
+ "selected-background",
6359
+ ...AMBIENT_BACKGROUND_ROLES
6360
+ ];
6361
+
6293
6362
  // ../api/src/navigation/contracts.ts
6294
6363
  import { z as z2 } from "zod";
6295
6364
  var portalLinkPayloadSchema = z2.object({
@@ -6623,6 +6692,9 @@ function resolveRepeaterGridColumnFieldId(options) {
6623
6692
  return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID;
6624
6693
  }
6625
6694
 
6695
+ // ../blocks/src/system/icons/presets.ts
6696
+ var ICON_PICKER_PRESETS = ["cta", "feature"];
6697
+
6626
6698
  // ../blocks/src/system/manifest/schema.ts
6627
6699
  var visibilityLevels = ["admin", "designer", "author"];
6628
6700
  var MEDIA_KINDS = [
@@ -6781,7 +6853,7 @@ var uiSchema = z4.object({
6781
6853
  layoutGridColumnField: z4.string().optional(),
6782
6854
  layoutGridMaxRows: z4.number().int().positive().optional(),
6783
6855
  // Icon picker configuration (used when ui.widget === 'iconPicker')
6784
- iconPickerPreset: z4.enum(["cta"]).optional(),
6856
+ iconPickerPreset: z4.enum(ICON_PICKER_PRESETS).optional(),
6785
6857
  // Entry picker configuration
6786
6858
  contentTypeField: z4.string().optional(),
6787
6859
  fixedContentType: z4.string().optional(),
@@ -8447,7 +8519,7 @@ var themeColorBaseTokenNames = [
8447
8519
  "accentForeground"
8448
8520
  ];
8449
8521
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
8450
- var SHADE_STEPS = [
8522
+ var themeColorShadeSteps = [
8451
8523
  "50",
8452
8524
  "100",
8453
8525
  "200",
@@ -8460,7 +8532,7 @@ var SHADE_STEPS = [
8460
8532
  "900",
8461
8533
  "950"
8462
8534
  ];
8463
- var shadeStepSet = new Set(SHADE_STEPS);
8535
+ var shadeStepSet = new Set(themeColorShadeSteps);
8464
8536
  function isKnownBaseToken(value) {
8465
8537
  return themeColorBaseTokenSet.has(value);
8466
8538
  }
@@ -12161,6 +12233,7 @@ var curatedSiteStyleIdValues = [
12161
12233
  "site-style:personal-retreat-journal",
12162
12234
  "site-style:tactile-workshop",
12163
12235
  "site-style:modern-wellness",
12236
+ "site-style:clarity-zen-blue",
12164
12237
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
12165
12238
  "site-style:bold-launch",
12166
12239
  "site-style:south-west-twerk-school"
@@ -12746,6 +12819,114 @@ var curatedSiteStyles = [
12746
12819
  paletteChoice("warm-neutral-clay")
12747
12820
  ]
12748
12821
  }),
12822
+ defineCuratedSiteStyle({
12823
+ id: "site-style:clarity-zen-blue",
12824
+ name: "Clarity Zen",
12825
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
12826
+ 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.",
12827
+ siteCreatorSelection: {
12828
+ kind: "site_creator_keyword_heuristic",
12829
+ priority: 25
12830
+ },
12831
+ selectionKeywordRules: [
12832
+ { kind: "substring", value: "psychotherap" },
12833
+ { kind: "phrase", value: "mental health" },
12834
+ { kind: "phrase", value: "talk therapy" },
12835
+ { kind: "phrase", value: "therapy and wellbeing" }
12836
+ ],
12837
+ tokenRecipes: {
12838
+ palette: "brand-led",
12839
+ contrast: "standard",
12840
+ radius: "rounded",
12841
+ shadow: "subtle",
12842
+ typography: "serif-editorial",
12843
+ spacing: "airy",
12844
+ motion: "subtle"
12845
+ },
12846
+ compositionBudget: balancedBudget,
12847
+ themeOverrides: {
12848
+ typography: {
12849
+ body: {
12850
+ family: "Inter, system-ui, sans-serif",
12851
+ size: "md",
12852
+ weight: "regular",
12853
+ lineHeight: "relaxed",
12854
+ letterSpacing: "normal"
12855
+ },
12856
+ headings: {
12857
+ default: {
12858
+ family: '"Cormorant Garamond", Georgia, serif',
12859
+ weight: "regular",
12860
+ lineHeight: "normal",
12861
+ letterSpacing: "normal",
12862
+ colorToken: "text",
12863
+ italic: null,
12864
+ case: null
12865
+ },
12866
+ h1: {
12867
+ size: "xl",
12868
+ weight: "regular",
12869
+ lineHeight: "normal",
12870
+ letterSpacing: "normal",
12871
+ italic: null
12872
+ },
12873
+ h2: {
12874
+ size: "lg",
12875
+ weight: "regular",
12876
+ lineHeight: "normal",
12877
+ letterSpacing: "normal",
12878
+ italic: null
12879
+ },
12880
+ h3: {
12881
+ size: "md",
12882
+ weight: "regular",
12883
+ lineHeight: "normal",
12884
+ letterSpacing: "normal",
12885
+ italic: null
12886
+ }
12887
+ },
12888
+ scale: "majorThird"
12889
+ },
12890
+ bodyText: {
12891
+ intro: {
12892
+ paragraphSize: "default",
12893
+ headingSize: "editorial"
12894
+ }
12895
+ }
12896
+ },
12897
+ defaultBlockVariants: {
12898
+ "block.faq": "split-heading-columns"
12899
+ },
12900
+ recommendedAppearancePresetIds: [
12901
+ "hero-split-editorial",
12902
+ "intro-organic-statement",
12903
+ "feature-cards-raised-rule",
12904
+ "media-text-quiet-story",
12905
+ "testimonials-brand-background-quotes",
12906
+ "faq-contained-help",
12907
+ "contact-form-panel"
12908
+ ],
12909
+ recommendedHeaderLookIds: [
12910
+ "centered-calm",
12911
+ "serif-line",
12912
+ "minimal-transparent"
12913
+ ],
12914
+ recommendedFooterLookIds: [
12915
+ "footer-muted-grounding",
12916
+ "site-footer-brand-two-band"
12917
+ ],
12918
+ buttonPersonalityChoices: [
12919
+ buttonChoice("soft-pill"),
12920
+ buttonChoice("pebble"),
12921
+ buttonChoice("editorial-link")
12922
+ ],
12923
+ paletteVariantChoices: [
12924
+ paletteChoice("brand-led-cool"),
12925
+ paletteChoice("soft-natural-watercolor"),
12926
+ paletteChoice("soft-natural-stone"),
12927
+ paletteChoice("warm-neutral-cream")
12928
+ ]
12929
+ }),
12749
12930
  defineCuratedSiteStyle({
12750
12931
  id: "site-style:personal-retreat-journal",
12751
12932
  name: "Personal Retreat Journal",
@@ -16820,36 +17001,46 @@ function buildCarouselLayout() {
16820
17001
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
16821
17002
  );
16822
17003
  }
17004
+ function buildResponsiveGridCards() {
17005
+ return [
17006
+ // 2 columns
17007
+ grid(
17008
+ { gap: "lg", cols: { base: 1, sm: 2 } },
17009
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17010
+ when("gridColumns", { equals: "2" })
17011
+ ),
17012
+ // 3 columns (default when unset)
17013
+ grid(
17014
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17015
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17016
+ when("gridColumns", { equals: "3" })
17017
+ ),
17018
+ // 4 columns
17019
+ grid(
17020
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
17021
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17022
+ when("gridColumns", { equals: "4" })
17023
+ ),
17024
+ // Fallback to 3 columns when gridColumns is not set
17025
+ grid(
17026
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17027
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17028
+ when("gridColumns", { not: true })
17029
+ )
17030
+ ];
17031
+ }
16823
17032
  function buildGridLayout() {
16824
17033
  return el(
16825
17034
  "div",
16826
17035
  { className: "rb-mt-12 rb-testimonials-carousel" },
16827
- [
16828
- // 2 columns
16829
- grid(
16830
- { gap: "lg", cols: { base: 1, sm: 2 } },
16831
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16832
- when("gridColumns", { equals: "2" })
16833
- ),
16834
- // 3 columns (default when unset)
16835
- grid(
16836
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16837
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16838
- when("gridColumns", { equals: "3" })
16839
- ),
16840
- // 4 columns
16841
- grid(
16842
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
16843
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16844
- when("gridColumns", { equals: "4" })
16845
- ),
16846
- // Fallback to 3 columns when gridColumns is not set
16847
- grid(
16848
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16849
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16850
- when("gridColumns", { not: true })
16851
- )
16852
- ]
17036
+ buildResponsiveGridCards()
17037
+ );
17038
+ }
17039
+ function buildGridCardsLayout(className) {
17040
+ return el(
17041
+ "div",
17042
+ { className },
17043
+ buildResponsiveGridCards()
16853
17044
  );
16854
17045
  }
16855
17046
  var testimonialsCarouselFragment = defineFragment({
@@ -19818,6 +20009,24 @@ var questionColumnsLayout = styledSection({
19818
20009
  }),
19819
20010
  baseClass: ""
19820
20011
  });
20012
+ var splitHeadingColumnsLayout = styledSection({
20013
+ children: styledContainer({
20014
+ baseClassName: "rb-relative rb-isolate",
20015
+ children: el(
20016
+ "div",
20017
+ {
20018
+ className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
20019
+ },
20020
+ [
20021
+ el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
20022
+ el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
20023
+ questionColumnsAccordionLayout
20024
+ ])
20025
+ ]
20026
+ )
20027
+ }),
20028
+ baseClass: ""
20029
+ });
19821
20030
  var faqManifest = createBlockManifest({
19822
20031
  id: "block.faq",
19823
20032
  title: "FAQ",
@@ -19838,7 +20047,8 @@ var faqManifest = createBlockManifest({
19838
20047
  variants: {
19839
20048
  default: defaultLayout,
19840
20049
  "two-column": twoColumnLayout,
19841
- "question-columns": questionColumnsLayout
20050
+ "question-columns": questionColumnsLayout,
20051
+ "split-heading-columns": splitHeadingColumnsLayout
19842
20052
  },
19843
20053
  defaultVariant: "default",
19844
20054
  variantOptions: {
@@ -19853,6 +20063,10 @@ var faqManifest = createBlockManifest({
19853
20063
  "question-columns": {
19854
20064
  label: "Question columns",
19855
20065
  description: "A full-width heading above FAQ items split into two columns."
20066
+ },
20067
+ "split-heading-columns": {
20068
+ label: "Split heading columns",
20069
+ description: "A left heading column with FAQ items split into two columns on the right."
19856
20070
  }
19857
20071
  },
19858
20072
  description: "Accordion of frequently asked questions and answers.",
@@ -21937,6 +22151,7 @@ var siteFooterBlockDefinition = {
21937
22151
  };
21938
22152
 
21939
22153
  // ../blocks/src/system/blocks/testimonials.tsx
22154
+ var backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
21940
22155
  var wrapVariant = (variantLayout) => styledSection({
21941
22156
  children: styledContainer({
21942
22157
  children: stack(
@@ -21950,10 +22165,53 @@ var wrapVariant = (variantLayout) => styledSection({
21950
22165
  // styledContainer (rb-container) already provides horizontal padding
21951
22166
  baseClass: "",
21952
22167
  spacing: "comfortable",
21953
- imageClassName: "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50"
22168
+ imageClassName: backgroundImageClassName
21954
22169
  });
21955
22170
  var carouselLayout = wrapVariant(buildCarouselLayout());
21956
22171
  var gridLayout2 = wrapVariant(buildGridLayout());
22172
+ var splitHeading = stack(
22173
+ { gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
22174
+ [
22175
+ text(
22176
+ { as: "h2" },
22177
+ when("content.heading"),
22178
+ bind("content.heading")
22179
+ ),
22180
+ headingDecoration({
22181
+ family: "short-center-rule",
22182
+ placement: "after-heading"
22183
+ }),
22184
+ text(
22185
+ {
22186
+ as: "p",
22187
+ className: "rb-prose",
22188
+ style: textColorStyle("mutedText")
22189
+ },
22190
+ when("content.subheading"),
22191
+ bind("content.subheading")
22192
+ )
22193
+ ]
22194
+ );
22195
+ var splitGridLayout = styledSection({
22196
+ children: styledContainer({
22197
+ baseClassName: "rb-relative rb-isolate",
22198
+ children: el(
22199
+ "div",
22200
+ {
22201
+ className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
22202
+ },
22203
+ [
22204
+ el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
22205
+ el("div", { className: "rb-testimonials-split-grid-cards" }, [
22206
+ buildGridCardsLayout("rb-testimonials-split-grid-card-list")
22207
+ ])
22208
+ ]
22209
+ )
22210
+ }),
22211
+ baseClass: "",
22212
+ spacing: "comfortable",
22213
+ imageClassName: backgroundImageClassName
22214
+ });
21957
22215
  var additionalFields = parseFieldDefinitions([
21958
22216
  // Heading fields from fragment
21959
22217
  ...testimonialsHeadingFragment.fields,
@@ -21985,7 +22243,7 @@ var additionalFields = parseFieldDefinitions([
21985
22243
  ],
21986
22244
  ui: {
21987
22245
  intent: "display",
21988
- visibleWhen: { field: "variant", equals: "grid" }
22246
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
21989
22247
  }
21990
22248
  },
21991
22249
  // Carousel-specific fields (from fragment)
@@ -22019,7 +22277,8 @@ var testimonialsManifest = createBlockManifest({
22019
22277
  // Variant system - enables the variant switcher control in the editor
22020
22278
  variants: {
22021
22279
  carousel: carouselLayout,
22022
- grid: gridLayout2
22280
+ grid: gridLayout2,
22281
+ "split-grid": splitGridLayout
22023
22282
  },
22024
22283
  defaultVariant: "carousel",
22025
22284
  variantOptions: {
@@ -22032,6 +22291,11 @@ var testimonialsManifest = createBlockManifest({
22032
22291
  label: "Grid",
22033
22292
  description: "Responsive grid layout",
22034
22293
  icon: "Grid"
22294
+ },
22295
+ "split-grid": {
22296
+ label: "Split grid",
22297
+ description: "Heading on the left with testimonial cards on the right",
22298
+ icon: "PanelLeft"
22035
22299
  }
22036
22300
  },
22037
22301
  // Fields (variant field is auto-generated by augmentManifest)
@@ -22424,6 +22688,13 @@ var collectionBlockDefinition = {
22424
22688
  manifest: collectionManifest
22425
22689
  };
22426
22690
 
22691
+ // ../blocks/src/system/blocks/feature-card-icons.ts
22692
+ var FEATURE_CARD_ICON_TREATMENTS = [
22693
+ "plain",
22694
+ "soft-badge",
22695
+ "utility-badge"
22696
+ ];
22697
+
22427
22698
  // ../blocks/src/system/blocks/feature-cards.ts
22428
22699
  function grid3(props2, children) {
22429
22700
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -22466,6 +22737,15 @@ var featureCard = styledCard(
22466
22737
  bind("card.media")
22467
22738
  ),
22468
22739
  stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
22740
+ el(
22741
+ "feature-card-icon",
22742
+ {
22743
+ treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
22744
+ generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
22745
+ },
22746
+ null,
22747
+ bind("card.icon")
22748
+ ),
22469
22749
  text(
22470
22750
  {
22471
22751
  as: "h3",
@@ -22587,6 +22867,16 @@ var featureCardsConfig = {
22587
22867
  defaultValue: "4/3",
22588
22868
  visibleWhen: { field: "media", notEquals: null }
22589
22869
  }),
22870
+ {
22871
+ id: "icon",
22872
+ type: "text",
22873
+ label: "Icon",
22874
+ required: false,
22875
+ ui: {
22876
+ widget: "iconPicker",
22877
+ iconPickerPreset: "feature"
22878
+ }
22879
+ },
22590
22880
  {
22591
22881
  id: "title",
22592
22882
  type: "text",
@@ -22622,6 +22912,19 @@ var featureCardsConfig = {
22622
22912
  ]
22623
22913
  }
22624
22914
  },
22915
+ {
22916
+ id: "_iconTreatment",
22917
+ type: "select",
22918
+ label: "Icon style",
22919
+ required: false,
22920
+ defaultValue: "soft-badge",
22921
+ multiple: false,
22922
+ options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
22923
+ value,
22924
+ label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
22925
+ })),
22926
+ ui: { intent: "display" }
22927
+ },
22625
22928
  cardStylesField({
22626
22929
  id: "_cardStyles",
22627
22930
  label: "Card styles"
@@ -30439,7 +30742,8 @@ var systemBlockDefinitionsRaw = [
30439
30742
  layoutProfiles: [
30440
30743
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
30441
30744
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
30442
- layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
30745
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
30746
+ layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
30443
30747
  ]
30444
30748
  })),
30445
30749
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -30470,6 +30774,12 @@ var systemBlockDefinitionsRaw = [
30470
30774
  family: "grid",
30471
30775
  weight: "standard",
30472
30776
  bias: "soft"
30777
+ }),
30778
+ layoutProfile({
30779
+ variantKey: "split-grid",
30780
+ family: "split",
30781
+ weight: "featured",
30782
+ bias: "soft"
30473
30783
  })
30474
30784
  ]
30475
30785
  })),
@@ -34513,7 +34823,6 @@ var websiteSurfaceIds = [
34513
34823
  "site.footerBlocks",
34514
34824
  "site.navigation",
34515
34825
  "site.media",
34516
- "site.style",
34517
34826
  "site.performance"
34518
34827
  ];
34519
34828
  var websiteSurfaceIdSet = new Set(
@@ -34534,6 +34843,12 @@ var hiddenDemoSettingsNavSurfaceIds = [
34534
34843
  ];
34535
34844
  var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
34536
34845
 
34846
+ // ../api/src/navigation/identity.ts
34847
+ function unsafeAsNavigationMenuIdentifier(identifier) {
34848
+ return identifier;
34849
+ }
34850
+ var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
34851
+
34537
34852
  // ../api/src/aiPlayground.ts
34538
34853
  import { z as z66 } from "zod";
34539
34854
  var Rfc6902PatchOp = z66.discriminatedUnion("op", [
@@ -2171,6 +2171,46 @@ var ENDPOINT_DEFINITIONS = {
2171
2171
  auth: "user",
2172
2172
  responseKind: "json"
2173
2173
  },
2174
+ getSiteIconStyleGuide: {
2175
+ path: "/sites/{siteId}/settings/icon-style-guide",
2176
+ method: "GET",
2177
+ revalidate: 120,
2178
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2179
+ auth: "user",
2180
+ responseKind: "json",
2181
+ errors: []
2182
+ },
2183
+ updateSiteIconStyleGuide: {
2184
+ path: "/sites/{siteId}/settings/icon-style-guide",
2185
+ method: "POST",
2186
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2187
+ auth: "user",
2188
+ responseKind: "json",
2189
+ errors: []
2190
+ },
2191
+ regenerateSiteIconStyleGuide: {
2192
+ path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
2193
+ method: "POST",
2194
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2195
+ auth: "user",
2196
+ responseKind: "json",
2197
+ errors: []
2198
+ },
2199
+ generateGeneratedIconSet: {
2200
+ path: "/sites/{siteId}/ai/generated-icons/generate",
2201
+ method: "POST",
2202
+ auth: "user",
2203
+ responseKind: "json",
2204
+ errors: []
2205
+ },
2206
+ applyGeneratedIconSet: {
2207
+ path: "/sites/{siteId}/ai/generated-icons/apply",
2208
+ method: "POST",
2209
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2210
+ auth: "user",
2211
+ responseKind: "json",
2212
+ errors: []
2213
+ },
2174
2214
  getSiteAiProfile: {
2175
2215
  path: "/sites/{siteId}/settings/ai-site-profile",
2176
2216
  method: "GET",
@@ -3946,6 +3986,14 @@ var ENDPOINT_DEFINITIONS = {
3946
3986
  auth: "public",
3947
3987
  responseKind: "json"
3948
3988
  },
3989
+ getGeneratedIconRenderAssets: {
3990
+ path: "/public/sites/{siteId}/generated-icon-assets",
3991
+ method: "POST",
3992
+ tags: [TAG_TEMPLATES.siteRoutableContent],
3993
+ auth: "public",
3994
+ responseKind: "json",
3995
+ errors: []
3996
+ },
3949
3997
  // Resolve entry subroute by kind and URL segment
3950
3998
  resolveEntrySubroute: {
3951
3999
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5650,6 +5698,13 @@ var ENDPOINT_DEFINITIONS = {
5650
5698
  auth: "service",
5651
5699
  responseKind: "json"
5652
5700
  },
5701
+ sdkDeleteNavigationMenu: {
5702
+ path: "/sdk/{siteId}/navigation/{menuId}",
5703
+ method: "DELETE",
5704
+ auth: "service",
5705
+ responseKind: "json",
5706
+ errors: ["resource:not_found", "server:internal_error"]
5707
+ },
5653
5708
  sdkUpsertTheme: {
5654
5709
  path: "/sdk/{siteId}/theme",
5655
5710
  method: "POST",
@@ -6836,7 +6891,7 @@ var SimpleCache = class {
6836
6891
  };
6837
6892
 
6838
6893
  // src/version.ts
6839
- var SDK_VERSION = "0.78.2";
6894
+ var SDK_VERSION = "0.79.0";
6840
6895
 
6841
6896
  // src/client/error.ts
6842
6897
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -9023,6 +9078,14 @@ var API_ENDPOINTS2 = Object.freeze({
9023
9078
  auth: "user",
9024
9079
  responseKind: "json"
9025
9080
  },
9081
+ getPublicRoutableContent: {
9082
+ path: "/public/sites/{siteId}/routable-content",
9083
+ method: "GET",
9084
+ revalidate: 60,
9085
+ tags: ["riverbank:site:{siteId}:routable-content"],
9086
+ auth: "public",
9087
+ responseKind: "json"
9088
+ },
9026
9089
  getPublicSitemapRoutes: {
9027
9090
  path: "/public/sites/{siteId}/sitemap",
9028
9091
  method: "GET",