@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
@@ -2152,6 +2152,46 @@ var ENDPOINT_DEFINITIONS = {
2152
2152
  auth: "user",
2153
2153
  responseKind: "json"
2154
2154
  },
2155
+ getSiteIconStyleGuide: {
2156
+ path: "/sites/{siteId}/settings/icon-style-guide",
2157
+ method: "GET",
2158
+ revalidate: 120,
2159
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2160
+ auth: "user",
2161
+ responseKind: "json",
2162
+ errors: []
2163
+ },
2164
+ updateSiteIconStyleGuide: {
2165
+ path: "/sites/{siteId}/settings/icon-style-guide",
2166
+ method: "POST",
2167
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2168
+ auth: "user",
2169
+ responseKind: "json",
2170
+ errors: []
2171
+ },
2172
+ regenerateSiteIconStyleGuide: {
2173
+ path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
2174
+ method: "POST",
2175
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2176
+ auth: "user",
2177
+ responseKind: "json",
2178
+ errors: []
2179
+ },
2180
+ generateGeneratedIconSet: {
2181
+ path: "/sites/{siteId}/ai/generated-icons/generate",
2182
+ method: "POST",
2183
+ auth: "user",
2184
+ responseKind: "json",
2185
+ errors: []
2186
+ },
2187
+ applyGeneratedIconSet: {
2188
+ path: "/sites/{siteId}/ai/generated-icons/apply",
2189
+ method: "POST",
2190
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2191
+ auth: "user",
2192
+ responseKind: "json",
2193
+ errors: []
2194
+ },
2155
2195
  getSiteAiProfile: {
2156
2196
  path: "/sites/{siteId}/settings/ai-site-profile",
2157
2197
  method: "GET",
@@ -3927,6 +3967,14 @@ var ENDPOINT_DEFINITIONS = {
3927
3967
  auth: "public",
3928
3968
  responseKind: "json"
3929
3969
  },
3970
+ getGeneratedIconRenderAssets: {
3971
+ path: "/public/sites/{siteId}/generated-icon-assets",
3972
+ method: "POST",
3973
+ tags: [TAG_TEMPLATES.siteRoutableContent],
3974
+ auth: "public",
3975
+ responseKind: "json",
3976
+ errors: []
3977
+ },
3930
3978
  // Resolve entry subroute by kind and URL segment
3931
3979
  resolveEntrySubroute: {
3932
3980
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5631,6 +5679,13 @@ var ENDPOINT_DEFINITIONS = {
5631
5679
  auth: "service",
5632
5680
  responseKind: "json"
5633
5681
  },
5682
+ sdkDeleteNavigationMenu: {
5683
+ path: "/sdk/{siteId}/navigation/{menuId}",
5684
+ method: "DELETE",
5685
+ auth: "service",
5686
+ responseKind: "json",
5687
+ errors: ["resource:not_found", "server:internal_error"]
5688
+ },
5634
5689
  sdkUpsertTheme: {
5635
5690
  path: "/sdk/{siteId}/theme",
5636
5691
  method: "POST",
@@ -6293,6 +6348,20 @@ var managedDomainAddOnPricingSnapshotSchema = z.object({
6293
6348
  monthlyCurrency: z.literal("gbp")
6294
6349
  });
6295
6350
 
6351
+ // ../api/src/media.ts
6352
+ var AMBIENT_BACKGROUND_ROLES = [
6353
+ "light-texture",
6354
+ "proof-band-dark",
6355
+ "cta-wash",
6356
+ "footer-detail",
6357
+ "style-atmosphere-1",
6358
+ "style-atmosphere-2"
6359
+ ];
6360
+ var SITE_BACKGROUND_ASSET_USES = [
6361
+ "selected-background",
6362
+ ...AMBIENT_BACKGROUND_ROLES
6363
+ ];
6364
+
6296
6365
  // ../api/src/navigation/contracts.ts
6297
6366
  import { z as z2 } from "zod";
6298
6367
  var portalLinkPayloadSchema = z2.object({
@@ -6726,6 +6795,9 @@ function resolveRepeaterGridColumnFieldId(options) {
6726
6795
  return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID;
6727
6796
  }
6728
6797
 
6798
+ // ../blocks/src/system/icons/presets.ts
6799
+ var ICON_PICKER_PRESETS = ["cta", "feature"];
6800
+
6729
6801
  // ../blocks/src/system/manifest/schema.ts
6730
6802
  var visibilityLevels = ["admin", "designer", "author"];
6731
6803
  var MEDIA_KINDS = [
@@ -6884,7 +6956,7 @@ var uiSchema = z4.object({
6884
6956
  layoutGridColumnField: z4.string().optional(),
6885
6957
  layoutGridMaxRows: z4.number().int().positive().optional(),
6886
6958
  // Icon picker configuration (used when ui.widget === 'iconPicker')
6887
- iconPickerPreset: z4.enum(["cta"]).optional(),
6959
+ iconPickerPreset: z4.enum(ICON_PICKER_PRESETS).optional(),
6888
6960
  // Entry picker configuration
6889
6961
  contentTypeField: z4.string().optional(),
6890
6962
  fixedContentType: z4.string().optional(),
@@ -8550,7 +8622,7 @@ var themeColorBaseTokenNames = [
8550
8622
  "accentForeground"
8551
8623
  ];
8552
8624
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
8553
- var SHADE_STEPS = [
8625
+ var themeColorShadeSteps = [
8554
8626
  "50",
8555
8627
  "100",
8556
8628
  "200",
@@ -8563,7 +8635,7 @@ var SHADE_STEPS = [
8563
8635
  "900",
8564
8636
  "950"
8565
8637
  ];
8566
- var shadeStepSet = new Set(SHADE_STEPS);
8638
+ var shadeStepSet = new Set(themeColorShadeSteps);
8567
8639
  function isKnownBaseToken(value) {
8568
8640
  return themeColorBaseTokenSet.has(value);
8569
8641
  }
@@ -12264,6 +12336,7 @@ var curatedSiteStyleIdValues = [
12264
12336
  "site-style:personal-retreat-journal",
12265
12337
  "site-style:tactile-workshop",
12266
12338
  "site-style:modern-wellness",
12339
+ "site-style:clarity-zen-blue",
12267
12340
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
12268
12341
  "site-style:bold-launch",
12269
12342
  "site-style:south-west-twerk-school"
@@ -12849,6 +12922,114 @@ var curatedSiteStyles = [
12849
12922
  paletteChoice("warm-neutral-clay")
12850
12923
  ]
12851
12924
  }),
12925
+ defineCuratedSiteStyle({
12926
+ id: "site-style:clarity-zen-blue",
12927
+ name: "Clarity Zen",
12928
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
12929
+ 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.",
12930
+ siteCreatorSelection: {
12931
+ kind: "site_creator_keyword_heuristic",
12932
+ priority: 25
12933
+ },
12934
+ selectionKeywordRules: [
12935
+ { kind: "substring", value: "psychotherap" },
12936
+ { kind: "phrase", value: "mental health" },
12937
+ { kind: "phrase", value: "talk therapy" },
12938
+ { kind: "phrase", value: "therapy and wellbeing" }
12939
+ ],
12940
+ tokenRecipes: {
12941
+ palette: "brand-led",
12942
+ contrast: "standard",
12943
+ radius: "rounded",
12944
+ shadow: "subtle",
12945
+ typography: "serif-editorial",
12946
+ spacing: "airy",
12947
+ motion: "subtle"
12948
+ },
12949
+ compositionBudget: balancedBudget,
12950
+ themeOverrides: {
12951
+ typography: {
12952
+ body: {
12953
+ family: "Inter, system-ui, sans-serif",
12954
+ size: "md",
12955
+ weight: "regular",
12956
+ lineHeight: "relaxed",
12957
+ letterSpacing: "normal"
12958
+ },
12959
+ headings: {
12960
+ default: {
12961
+ family: '"Cormorant Garamond", Georgia, serif',
12962
+ weight: "regular",
12963
+ lineHeight: "normal",
12964
+ letterSpacing: "normal",
12965
+ colorToken: "text",
12966
+ italic: null,
12967
+ case: null
12968
+ },
12969
+ h1: {
12970
+ size: "xl",
12971
+ weight: "regular",
12972
+ lineHeight: "normal",
12973
+ letterSpacing: "normal",
12974
+ italic: null
12975
+ },
12976
+ h2: {
12977
+ size: "lg",
12978
+ weight: "regular",
12979
+ lineHeight: "normal",
12980
+ letterSpacing: "normal",
12981
+ italic: null
12982
+ },
12983
+ h3: {
12984
+ size: "md",
12985
+ weight: "regular",
12986
+ lineHeight: "normal",
12987
+ letterSpacing: "normal",
12988
+ italic: null
12989
+ }
12990
+ },
12991
+ scale: "majorThird"
12992
+ },
12993
+ bodyText: {
12994
+ intro: {
12995
+ paragraphSize: "default",
12996
+ headingSize: "editorial"
12997
+ }
12998
+ }
12999
+ },
13000
+ defaultBlockVariants: {
13001
+ "block.faq": "split-heading-columns"
13002
+ },
13003
+ recommendedAppearancePresetIds: [
13004
+ "hero-split-editorial",
13005
+ "intro-organic-statement",
13006
+ "feature-cards-raised-rule",
13007
+ "media-text-quiet-story",
13008
+ "testimonials-brand-background-quotes",
13009
+ "faq-contained-help",
13010
+ "contact-form-panel"
13011
+ ],
13012
+ recommendedHeaderLookIds: [
13013
+ "centered-calm",
13014
+ "serif-line",
13015
+ "minimal-transparent"
13016
+ ],
13017
+ recommendedFooterLookIds: [
13018
+ "footer-muted-grounding",
13019
+ "site-footer-brand-two-band"
13020
+ ],
13021
+ buttonPersonalityChoices: [
13022
+ buttonChoice("soft-pill"),
13023
+ buttonChoice("pebble"),
13024
+ buttonChoice("editorial-link")
13025
+ ],
13026
+ paletteVariantChoices: [
13027
+ paletteChoice("brand-led-cool"),
13028
+ paletteChoice("soft-natural-watercolor"),
13029
+ paletteChoice("soft-natural-stone"),
13030
+ paletteChoice("warm-neutral-cream")
13031
+ ]
13032
+ }),
12852
13033
  defineCuratedSiteStyle({
12853
13034
  id: "site-style:personal-retreat-journal",
12854
13035
  name: "Personal Retreat Journal",
@@ -16912,36 +17093,46 @@ function buildCarouselLayout() {
16912
17093
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
16913
17094
  );
16914
17095
  }
17096
+ function buildResponsiveGridCards() {
17097
+ return [
17098
+ // 2 columns
17099
+ grid(
17100
+ { gap: "lg", cols: { base: 1, sm: 2 } },
17101
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17102
+ when("gridColumns", { equals: "2" })
17103
+ ),
17104
+ // 3 columns (default when unset)
17105
+ grid(
17106
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17107
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17108
+ when("gridColumns", { equals: "3" })
17109
+ ),
17110
+ // 4 columns
17111
+ grid(
17112
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
17113
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17114
+ when("gridColumns", { equals: "4" })
17115
+ ),
17116
+ // Fallback to 3 columns when gridColumns is not set
17117
+ grid(
17118
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17119
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17120
+ when("gridColumns", { not: true })
17121
+ )
17122
+ ];
17123
+ }
16915
17124
  function buildGridLayout() {
16916
17125
  return el(
16917
17126
  "div",
16918
17127
  { className: "rb-mt-12 rb-testimonials-carousel" },
16919
- [
16920
- // 2 columns
16921
- grid(
16922
- { gap: "lg", cols: { base: 1, sm: 2 } },
16923
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16924
- when("gridColumns", { equals: "2" })
16925
- ),
16926
- // 3 columns (default when unset)
16927
- grid(
16928
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16929
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16930
- when("gridColumns", { equals: "3" })
16931
- ),
16932
- // 4 columns
16933
- grid(
16934
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
16935
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16936
- when("gridColumns", { equals: "4" })
16937
- ),
16938
- // Fallback to 3 columns when gridColumns is not set
16939
- grid(
16940
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16941
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16942
- when("gridColumns", { not: true })
16943
- )
16944
- ]
17128
+ buildResponsiveGridCards()
17129
+ );
17130
+ }
17131
+ function buildGridCardsLayout(className) {
17132
+ return el(
17133
+ "div",
17134
+ { className },
17135
+ buildResponsiveGridCards()
16945
17136
  );
16946
17137
  }
16947
17138
  var testimonialsCarouselFragment = defineFragment({
@@ -19910,6 +20101,24 @@ var questionColumnsLayout = styledSection({
19910
20101
  }),
19911
20102
  baseClass: ""
19912
20103
  });
20104
+ var splitHeadingColumnsLayout = styledSection({
20105
+ children: styledContainer({
20106
+ baseClassName: "rb-relative rb-isolate",
20107
+ children: el(
20108
+ "div",
20109
+ {
20110
+ className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
20111
+ },
20112
+ [
20113
+ el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
20114
+ el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
20115
+ questionColumnsAccordionLayout
20116
+ ])
20117
+ ]
20118
+ )
20119
+ }),
20120
+ baseClass: ""
20121
+ });
19913
20122
  var faqManifest = createBlockManifest({
19914
20123
  id: "block.faq",
19915
20124
  title: "FAQ",
@@ -19930,7 +20139,8 @@ var faqManifest = createBlockManifest({
19930
20139
  variants: {
19931
20140
  default: defaultLayout,
19932
20141
  "two-column": twoColumnLayout,
19933
- "question-columns": questionColumnsLayout
20142
+ "question-columns": questionColumnsLayout,
20143
+ "split-heading-columns": splitHeadingColumnsLayout
19934
20144
  },
19935
20145
  defaultVariant: "default",
19936
20146
  variantOptions: {
@@ -19945,6 +20155,10 @@ var faqManifest = createBlockManifest({
19945
20155
  "question-columns": {
19946
20156
  label: "Question columns",
19947
20157
  description: "A full-width heading above FAQ items split into two columns."
20158
+ },
20159
+ "split-heading-columns": {
20160
+ label: "Split heading columns",
20161
+ description: "A left heading column with FAQ items split into two columns on the right."
19948
20162
  }
19949
20163
  },
19950
20164
  description: "Accordion of frequently asked questions and answers.",
@@ -22026,6 +22240,7 @@ var siteFooterBlockDefinition = {
22026
22240
  };
22027
22241
 
22028
22242
  // ../blocks/src/system/blocks/testimonials.tsx
22243
+ var backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
22029
22244
  var wrapVariant = (variantLayout) => styledSection({
22030
22245
  children: styledContainer({
22031
22246
  children: stack(
@@ -22039,10 +22254,53 @@ var wrapVariant = (variantLayout) => styledSection({
22039
22254
  // styledContainer (rb-container) already provides horizontal padding
22040
22255
  baseClass: "",
22041
22256
  spacing: "comfortable",
22042
- imageClassName: "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50"
22257
+ imageClassName: backgroundImageClassName
22043
22258
  });
22044
22259
  var carouselLayout = wrapVariant(buildCarouselLayout());
22045
22260
  var gridLayout2 = wrapVariant(buildGridLayout());
22261
+ var splitHeading = stack(
22262
+ { gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
22263
+ [
22264
+ text(
22265
+ { as: "h2" },
22266
+ when("content.heading"),
22267
+ bind("content.heading")
22268
+ ),
22269
+ headingDecoration({
22270
+ family: "short-center-rule",
22271
+ placement: "after-heading"
22272
+ }),
22273
+ text(
22274
+ {
22275
+ as: "p",
22276
+ className: "rb-prose",
22277
+ style: textColorStyle("mutedText")
22278
+ },
22279
+ when("content.subheading"),
22280
+ bind("content.subheading")
22281
+ )
22282
+ ]
22283
+ );
22284
+ var splitGridLayout = styledSection({
22285
+ children: styledContainer({
22286
+ baseClassName: "rb-relative rb-isolate",
22287
+ children: el(
22288
+ "div",
22289
+ {
22290
+ className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
22291
+ },
22292
+ [
22293
+ el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
22294
+ el("div", { className: "rb-testimonials-split-grid-cards" }, [
22295
+ buildGridCardsLayout("rb-testimonials-split-grid-card-list")
22296
+ ])
22297
+ ]
22298
+ )
22299
+ }),
22300
+ baseClass: "",
22301
+ spacing: "comfortable",
22302
+ imageClassName: backgroundImageClassName
22303
+ });
22046
22304
  var additionalFields = parseFieldDefinitions([
22047
22305
  // Heading fields from fragment
22048
22306
  ...testimonialsHeadingFragment.fields,
@@ -22074,7 +22332,7 @@ var additionalFields = parseFieldDefinitions([
22074
22332
  ],
22075
22333
  ui: {
22076
22334
  intent: "display",
22077
- visibleWhen: { field: "variant", equals: "grid" }
22335
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
22078
22336
  }
22079
22337
  },
22080
22338
  // Carousel-specific fields (from fragment)
@@ -22108,7 +22366,8 @@ var testimonialsManifest = createBlockManifest({
22108
22366
  // Variant system - enables the variant switcher control in the editor
22109
22367
  variants: {
22110
22368
  carousel: carouselLayout,
22111
- grid: gridLayout2
22369
+ grid: gridLayout2,
22370
+ "split-grid": splitGridLayout
22112
22371
  },
22113
22372
  defaultVariant: "carousel",
22114
22373
  variantOptions: {
@@ -22121,6 +22380,11 @@ var testimonialsManifest = createBlockManifest({
22121
22380
  label: "Grid",
22122
22381
  description: "Responsive grid layout",
22123
22382
  icon: "Grid"
22383
+ },
22384
+ "split-grid": {
22385
+ label: "Split grid",
22386
+ description: "Heading on the left with testimonial cards on the right",
22387
+ icon: "PanelLeft"
22124
22388
  }
22125
22389
  },
22126
22390
  // Fields (variant field is auto-generated by augmentManifest)
@@ -22513,6 +22777,13 @@ var collectionBlockDefinition = {
22513
22777
  manifest: collectionManifest
22514
22778
  };
22515
22779
 
22780
+ // ../blocks/src/system/blocks/feature-card-icons.ts
22781
+ var FEATURE_CARD_ICON_TREATMENTS = [
22782
+ "plain",
22783
+ "soft-badge",
22784
+ "utility-badge"
22785
+ ];
22786
+
22516
22787
  // ../blocks/src/system/blocks/feature-cards.ts
22517
22788
  function grid3(props2, children) {
22518
22789
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -22555,6 +22826,15 @@ var featureCard = styledCard(
22555
22826
  bind("card.media")
22556
22827
  ),
22557
22828
  stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
22829
+ el(
22830
+ "feature-card-icon",
22831
+ {
22832
+ treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
22833
+ generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
22834
+ },
22835
+ null,
22836
+ bind("card.icon")
22837
+ ),
22558
22838
  text(
22559
22839
  {
22560
22840
  as: "h3",
@@ -22676,6 +22956,16 @@ var featureCardsConfig = {
22676
22956
  defaultValue: "4/3",
22677
22957
  visibleWhen: { field: "media", notEquals: null }
22678
22958
  }),
22959
+ {
22960
+ id: "icon",
22961
+ type: "text",
22962
+ label: "Icon",
22963
+ required: false,
22964
+ ui: {
22965
+ widget: "iconPicker",
22966
+ iconPickerPreset: "feature"
22967
+ }
22968
+ },
22679
22969
  {
22680
22970
  id: "title",
22681
22971
  type: "text",
@@ -22711,6 +23001,19 @@ var featureCardsConfig = {
22711
23001
  ]
22712
23002
  }
22713
23003
  },
23004
+ {
23005
+ id: "_iconTreatment",
23006
+ type: "select",
23007
+ label: "Icon style",
23008
+ required: false,
23009
+ defaultValue: "soft-badge",
23010
+ multiple: false,
23011
+ options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
23012
+ value,
23013
+ label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
23014
+ })),
23015
+ ui: { intent: "display" }
23016
+ },
22714
23017
  cardStylesField({
22715
23018
  id: "_cardStyles",
22716
23019
  label: "Card styles"
@@ -30528,7 +30831,8 @@ var systemBlockDefinitionsRaw = [
30528
30831
  layoutProfiles: [
30529
30832
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
30530
30833
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
30531
- layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
30834
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
30835
+ layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
30532
30836
  ]
30533
30837
  })),
30534
30838
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -30559,6 +30863,12 @@ var systemBlockDefinitionsRaw = [
30559
30863
  family: "grid",
30560
30864
  weight: "standard",
30561
30865
  bias: "soft"
30866
+ }),
30867
+ layoutProfile({
30868
+ variantKey: "split-grid",
30869
+ family: "split",
30870
+ weight: "featured",
30871
+ bias: "soft"
30562
30872
  })
30563
30873
  ]
30564
30874
  })),
@@ -34288,7 +34598,6 @@ var websiteSurfaceIds = [
34288
34598
  "site.footerBlocks",
34289
34599
  "site.navigation",
34290
34600
  "site.media",
34291
- "site.style",
34292
34601
  "site.performance"
34293
34602
  ];
34294
34603
  var websiteSurfaceIdSet = new Set(
@@ -34309,6 +34618,12 @@ var hiddenDemoSettingsNavSurfaceIds = [
34309
34618
  ];
34310
34619
  var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
34311
34620
 
34621
+ // ../api/src/navigation/identity.ts
34622
+ function unsafeAsNavigationMenuIdentifier(identifier) {
34623
+ return identifier;
34624
+ }
34625
+ var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
34626
+
34312
34627
  // ../api/src/aiPlayground.ts
34313
34628
  import { z as z66 } from "zod";
34314
34629
  var Rfc6902PatchOp = z66.discriminatedUnion("op", [