@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
@@ -2197,6 +2197,46 @@ var ENDPOINT_DEFINITIONS = {
2197
2197
  auth: "user",
2198
2198
  responseKind: "json"
2199
2199
  },
2200
+ getSiteIconStyleGuide: {
2201
+ path: "/sites/{siteId}/settings/icon-style-guide",
2202
+ method: "GET",
2203
+ revalidate: 120,
2204
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2205
+ auth: "user",
2206
+ responseKind: "json",
2207
+ errors: []
2208
+ },
2209
+ updateSiteIconStyleGuide: {
2210
+ path: "/sites/{siteId}/settings/icon-style-guide",
2211
+ method: "POST",
2212
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2213
+ auth: "user",
2214
+ responseKind: "json",
2215
+ errors: []
2216
+ },
2217
+ regenerateSiteIconStyleGuide: {
2218
+ path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
2219
+ method: "POST",
2220
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2221
+ auth: "user",
2222
+ responseKind: "json",
2223
+ errors: []
2224
+ },
2225
+ generateGeneratedIconSet: {
2226
+ path: "/sites/{siteId}/ai/generated-icons/generate",
2227
+ method: "POST",
2228
+ auth: "user",
2229
+ responseKind: "json",
2230
+ errors: []
2231
+ },
2232
+ applyGeneratedIconSet: {
2233
+ path: "/sites/{siteId}/ai/generated-icons/apply",
2234
+ method: "POST",
2235
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2236
+ auth: "user",
2237
+ responseKind: "json",
2238
+ errors: []
2239
+ },
2200
2240
  getSiteAiProfile: {
2201
2241
  path: "/sites/{siteId}/settings/ai-site-profile",
2202
2242
  method: "GET",
@@ -3972,6 +4012,14 @@ var ENDPOINT_DEFINITIONS = {
3972
4012
  auth: "public",
3973
4013
  responseKind: "json"
3974
4014
  },
4015
+ getGeneratedIconRenderAssets: {
4016
+ path: "/public/sites/{siteId}/generated-icon-assets",
4017
+ method: "POST",
4018
+ tags: [TAG_TEMPLATES.siteRoutableContent],
4019
+ auth: "public",
4020
+ responseKind: "json",
4021
+ errors: []
4022
+ },
3975
4023
  // Resolve entry subroute by kind and URL segment
3976
4024
  resolveEntrySubroute: {
3977
4025
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5676,6 +5724,13 @@ var ENDPOINT_DEFINITIONS = {
5676
5724
  auth: "service",
5677
5725
  responseKind: "json"
5678
5726
  },
5727
+ sdkDeleteNavigationMenu: {
5728
+ path: "/sdk/{siteId}/navigation/{menuId}",
5729
+ method: "DELETE",
5730
+ auth: "service",
5731
+ responseKind: "json",
5732
+ errors: ["resource:not_found", "server:internal_error"]
5733
+ },
5679
5734
  sdkUpsertTheme: {
5680
5735
  path: "/sdk/{siteId}/theme",
5681
5736
  method: "POST",
@@ -6338,6 +6393,20 @@ var managedDomainAddOnPricingSnapshotSchema = z.object({
6338
6393
  monthlyCurrency: z.literal("gbp")
6339
6394
  });
6340
6395
 
6396
+ // ../api/src/media.ts
6397
+ var AMBIENT_BACKGROUND_ROLES = [
6398
+ "light-texture",
6399
+ "proof-band-dark",
6400
+ "cta-wash",
6401
+ "footer-detail",
6402
+ "style-atmosphere-1",
6403
+ "style-atmosphere-2"
6404
+ ];
6405
+ var SITE_BACKGROUND_ASSET_USES = [
6406
+ "selected-background",
6407
+ ...AMBIENT_BACKGROUND_ROLES
6408
+ ];
6409
+
6341
6410
  // ../api/src/navigation/contracts.ts
6342
6411
  import { z as z2 } from "zod";
6343
6412
  var portalLinkPayloadSchema = z2.object({
@@ -6771,6 +6840,9 @@ function resolveRepeaterGridColumnFieldId(options) {
6771
6840
  return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID;
6772
6841
  }
6773
6842
 
6843
+ // ../blocks/src/system/icons/presets.ts
6844
+ var ICON_PICKER_PRESETS = ["cta", "feature"];
6845
+
6774
6846
  // ../blocks/src/system/manifest/schema.ts
6775
6847
  var visibilityLevels = ["admin", "designer", "author"];
6776
6848
  var MEDIA_KINDS = [
@@ -6929,7 +7001,7 @@ var uiSchema = z4.object({
6929
7001
  layoutGridColumnField: z4.string().optional(),
6930
7002
  layoutGridMaxRows: z4.number().int().positive().optional(),
6931
7003
  // Icon picker configuration (used when ui.widget === 'iconPicker')
6932
- iconPickerPreset: z4.enum(["cta"]).optional(),
7004
+ iconPickerPreset: z4.enum(ICON_PICKER_PRESETS).optional(),
6933
7005
  // Entry picker configuration
6934
7006
  contentTypeField: z4.string().optional(),
6935
7007
  fixedContentType: z4.string().optional(),
@@ -8595,7 +8667,7 @@ var themeColorBaseTokenNames = [
8595
8667
  "accentForeground"
8596
8668
  ];
8597
8669
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
8598
- var SHADE_STEPS = [
8670
+ var themeColorShadeSteps = [
8599
8671
  "50",
8600
8672
  "100",
8601
8673
  "200",
@@ -8608,7 +8680,7 @@ var SHADE_STEPS = [
8608
8680
  "900",
8609
8681
  "950"
8610
8682
  ];
8611
- var shadeStepSet = new Set(SHADE_STEPS);
8683
+ var shadeStepSet = new Set(themeColorShadeSteps);
8612
8684
  function isKnownBaseToken(value) {
8613
8685
  return themeColorBaseTokenSet.has(value);
8614
8686
  }
@@ -12309,6 +12381,7 @@ var curatedSiteStyleIdValues = [
12309
12381
  "site-style:personal-retreat-journal",
12310
12382
  "site-style:tactile-workshop",
12311
12383
  "site-style:modern-wellness",
12384
+ "site-style:clarity-zen-blue",
12312
12385
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
12313
12386
  "site-style:bold-launch",
12314
12387
  "site-style:south-west-twerk-school"
@@ -12894,6 +12967,114 @@ var curatedSiteStyles = [
12894
12967
  paletteChoice("warm-neutral-clay")
12895
12968
  ]
12896
12969
  }),
12970
+ defineCuratedSiteStyle({
12971
+ id: "site-style:clarity-zen-blue",
12972
+ name: "Clarity Zen",
12973
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
12974
+ 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.",
12975
+ siteCreatorSelection: {
12976
+ kind: "site_creator_keyword_heuristic",
12977
+ priority: 25
12978
+ },
12979
+ selectionKeywordRules: [
12980
+ { kind: "substring", value: "psychotherap" },
12981
+ { kind: "phrase", value: "mental health" },
12982
+ { kind: "phrase", value: "talk therapy" },
12983
+ { kind: "phrase", value: "therapy and wellbeing" }
12984
+ ],
12985
+ tokenRecipes: {
12986
+ palette: "brand-led",
12987
+ contrast: "standard",
12988
+ radius: "rounded",
12989
+ shadow: "subtle",
12990
+ typography: "serif-editorial",
12991
+ spacing: "airy",
12992
+ motion: "subtle"
12993
+ },
12994
+ compositionBudget: balancedBudget,
12995
+ themeOverrides: {
12996
+ typography: {
12997
+ body: {
12998
+ family: "Inter, system-ui, sans-serif",
12999
+ size: "md",
13000
+ weight: "regular",
13001
+ lineHeight: "relaxed",
13002
+ letterSpacing: "normal"
13003
+ },
13004
+ headings: {
13005
+ default: {
13006
+ family: '"Cormorant Garamond", Georgia, serif',
13007
+ weight: "regular",
13008
+ lineHeight: "normal",
13009
+ letterSpacing: "normal",
13010
+ colorToken: "text",
13011
+ italic: null,
13012
+ case: null
13013
+ },
13014
+ h1: {
13015
+ size: "xl",
13016
+ weight: "regular",
13017
+ lineHeight: "normal",
13018
+ letterSpacing: "normal",
13019
+ italic: null
13020
+ },
13021
+ h2: {
13022
+ size: "lg",
13023
+ weight: "regular",
13024
+ lineHeight: "normal",
13025
+ letterSpacing: "normal",
13026
+ italic: null
13027
+ },
13028
+ h3: {
13029
+ size: "md",
13030
+ weight: "regular",
13031
+ lineHeight: "normal",
13032
+ letterSpacing: "normal",
13033
+ italic: null
13034
+ }
13035
+ },
13036
+ scale: "majorThird"
13037
+ },
13038
+ bodyText: {
13039
+ intro: {
13040
+ paragraphSize: "default",
13041
+ headingSize: "editorial"
13042
+ }
13043
+ }
13044
+ },
13045
+ defaultBlockVariants: {
13046
+ "block.faq": "split-heading-columns"
13047
+ },
13048
+ recommendedAppearancePresetIds: [
13049
+ "hero-split-editorial",
13050
+ "intro-organic-statement",
13051
+ "feature-cards-raised-rule",
13052
+ "media-text-quiet-story",
13053
+ "testimonials-brand-background-quotes",
13054
+ "faq-contained-help",
13055
+ "contact-form-panel"
13056
+ ],
13057
+ recommendedHeaderLookIds: [
13058
+ "centered-calm",
13059
+ "serif-line",
13060
+ "minimal-transparent"
13061
+ ],
13062
+ recommendedFooterLookIds: [
13063
+ "footer-muted-grounding",
13064
+ "site-footer-brand-two-band"
13065
+ ],
13066
+ buttonPersonalityChoices: [
13067
+ buttonChoice("soft-pill"),
13068
+ buttonChoice("pebble"),
13069
+ buttonChoice("editorial-link")
13070
+ ],
13071
+ paletteVariantChoices: [
13072
+ paletteChoice("brand-led-cool"),
13073
+ paletteChoice("soft-natural-watercolor"),
13074
+ paletteChoice("soft-natural-stone"),
13075
+ paletteChoice("warm-neutral-cream")
13076
+ ]
13077
+ }),
12897
13078
  defineCuratedSiteStyle({
12898
13079
  id: "site-style:personal-retreat-journal",
12899
13080
  name: "Personal Retreat Journal",
@@ -16957,36 +17138,46 @@ function buildCarouselLayout() {
16957
17138
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
16958
17139
  );
16959
17140
  }
17141
+ function buildResponsiveGridCards() {
17142
+ return [
17143
+ // 2 columns
17144
+ grid(
17145
+ { gap: "lg", cols: { base: 1, sm: 2 } },
17146
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17147
+ when("gridColumns", { equals: "2" })
17148
+ ),
17149
+ // 3 columns (default when unset)
17150
+ grid(
17151
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17152
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17153
+ when("gridColumns", { equals: "3" })
17154
+ ),
17155
+ // 4 columns
17156
+ grid(
17157
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
17158
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17159
+ when("gridColumns", { equals: "4" })
17160
+ ),
17161
+ // Fallback to 3 columns when gridColumns is not set
17162
+ grid(
17163
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17164
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17165
+ when("gridColumns", { not: true })
17166
+ )
17167
+ ];
17168
+ }
16960
17169
  function buildGridLayout() {
16961
17170
  return el(
16962
17171
  "div",
16963
17172
  { className: "rb-mt-12 rb-testimonials-carousel" },
16964
- [
16965
- // 2 columns
16966
- grid(
16967
- { gap: "lg", cols: { base: 1, sm: 2 } },
16968
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16969
- when("gridColumns", { equals: "2" })
16970
- ),
16971
- // 3 columns (default when unset)
16972
- grid(
16973
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16974
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16975
- when("gridColumns", { equals: "3" })
16976
- ),
16977
- // 4 columns
16978
- grid(
16979
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
16980
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16981
- when("gridColumns", { equals: "4" })
16982
- ),
16983
- // Fallback to 3 columns when gridColumns is not set
16984
- grid(
16985
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16986
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16987
- when("gridColumns", { not: true })
16988
- )
16989
- ]
17173
+ buildResponsiveGridCards()
17174
+ );
17175
+ }
17176
+ function buildGridCardsLayout(className) {
17177
+ return el(
17178
+ "div",
17179
+ { className },
17180
+ buildResponsiveGridCards()
16990
17181
  );
16991
17182
  }
16992
17183
  var testimonialsCarouselFragment = defineFragment({
@@ -19955,6 +20146,24 @@ var questionColumnsLayout = styledSection({
19955
20146
  }),
19956
20147
  baseClass: ""
19957
20148
  });
20149
+ var splitHeadingColumnsLayout = styledSection({
20150
+ children: styledContainer({
20151
+ baseClassName: "rb-relative rb-isolate",
20152
+ children: el(
20153
+ "div",
20154
+ {
20155
+ className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
20156
+ },
20157
+ [
20158
+ el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
20159
+ el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
20160
+ questionColumnsAccordionLayout
20161
+ ])
20162
+ ]
20163
+ )
20164
+ }),
20165
+ baseClass: ""
20166
+ });
19958
20167
  var faqManifest = createBlockManifest({
19959
20168
  id: "block.faq",
19960
20169
  title: "FAQ",
@@ -19975,7 +20184,8 @@ var faqManifest = createBlockManifest({
19975
20184
  variants: {
19976
20185
  default: defaultLayout,
19977
20186
  "two-column": twoColumnLayout,
19978
- "question-columns": questionColumnsLayout
20187
+ "question-columns": questionColumnsLayout,
20188
+ "split-heading-columns": splitHeadingColumnsLayout
19979
20189
  },
19980
20190
  defaultVariant: "default",
19981
20191
  variantOptions: {
@@ -19990,6 +20200,10 @@ var faqManifest = createBlockManifest({
19990
20200
  "question-columns": {
19991
20201
  label: "Question columns",
19992
20202
  description: "A full-width heading above FAQ items split into two columns."
20203
+ },
20204
+ "split-heading-columns": {
20205
+ label: "Split heading columns",
20206
+ description: "A left heading column with FAQ items split into two columns on the right."
19993
20207
  }
19994
20208
  },
19995
20209
  description: "Accordion of frequently asked questions and answers.",
@@ -22071,6 +22285,7 @@ var siteFooterBlockDefinition = {
22071
22285
  };
22072
22286
 
22073
22287
  // ../blocks/src/system/blocks/testimonials.tsx
22288
+ var backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
22074
22289
  var wrapVariant = (variantLayout) => styledSection({
22075
22290
  children: styledContainer({
22076
22291
  children: stack(
@@ -22084,10 +22299,53 @@ var wrapVariant = (variantLayout) => styledSection({
22084
22299
  // styledContainer (rb-container) already provides horizontal padding
22085
22300
  baseClass: "",
22086
22301
  spacing: "comfortable",
22087
- imageClassName: "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50"
22302
+ imageClassName: backgroundImageClassName
22088
22303
  });
22089
22304
  var carouselLayout = wrapVariant(buildCarouselLayout());
22090
22305
  var gridLayout2 = wrapVariant(buildGridLayout());
22306
+ var splitHeading = stack(
22307
+ { gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
22308
+ [
22309
+ text(
22310
+ { as: "h2" },
22311
+ when("content.heading"),
22312
+ bind("content.heading")
22313
+ ),
22314
+ headingDecoration({
22315
+ family: "short-center-rule",
22316
+ placement: "after-heading"
22317
+ }),
22318
+ text(
22319
+ {
22320
+ as: "p",
22321
+ className: "rb-prose",
22322
+ style: textColorStyle("mutedText")
22323
+ },
22324
+ when("content.subheading"),
22325
+ bind("content.subheading")
22326
+ )
22327
+ ]
22328
+ );
22329
+ var splitGridLayout = styledSection({
22330
+ children: styledContainer({
22331
+ baseClassName: "rb-relative rb-isolate",
22332
+ children: el(
22333
+ "div",
22334
+ {
22335
+ className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
22336
+ },
22337
+ [
22338
+ el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
22339
+ el("div", { className: "rb-testimonials-split-grid-cards" }, [
22340
+ buildGridCardsLayout("rb-testimonials-split-grid-card-list")
22341
+ ])
22342
+ ]
22343
+ )
22344
+ }),
22345
+ baseClass: "",
22346
+ spacing: "comfortable",
22347
+ imageClassName: backgroundImageClassName
22348
+ });
22091
22349
  var additionalFields = parseFieldDefinitions([
22092
22350
  // Heading fields from fragment
22093
22351
  ...testimonialsHeadingFragment.fields,
@@ -22119,7 +22377,7 @@ var additionalFields = parseFieldDefinitions([
22119
22377
  ],
22120
22378
  ui: {
22121
22379
  intent: "display",
22122
- visibleWhen: { field: "variant", equals: "grid" }
22380
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
22123
22381
  }
22124
22382
  },
22125
22383
  // Carousel-specific fields (from fragment)
@@ -22153,7 +22411,8 @@ var testimonialsManifest = createBlockManifest({
22153
22411
  // Variant system - enables the variant switcher control in the editor
22154
22412
  variants: {
22155
22413
  carousel: carouselLayout,
22156
- grid: gridLayout2
22414
+ grid: gridLayout2,
22415
+ "split-grid": splitGridLayout
22157
22416
  },
22158
22417
  defaultVariant: "carousel",
22159
22418
  variantOptions: {
@@ -22166,6 +22425,11 @@ var testimonialsManifest = createBlockManifest({
22166
22425
  label: "Grid",
22167
22426
  description: "Responsive grid layout",
22168
22427
  icon: "Grid"
22428
+ },
22429
+ "split-grid": {
22430
+ label: "Split grid",
22431
+ description: "Heading on the left with testimonial cards on the right",
22432
+ icon: "PanelLeft"
22169
22433
  }
22170
22434
  },
22171
22435
  // Fields (variant field is auto-generated by augmentManifest)
@@ -22558,6 +22822,13 @@ var collectionBlockDefinition = {
22558
22822
  manifest: collectionManifest
22559
22823
  };
22560
22824
 
22825
+ // ../blocks/src/system/blocks/feature-card-icons.ts
22826
+ var FEATURE_CARD_ICON_TREATMENTS = [
22827
+ "plain",
22828
+ "soft-badge",
22829
+ "utility-badge"
22830
+ ];
22831
+
22561
22832
  // ../blocks/src/system/blocks/feature-cards.ts
22562
22833
  function grid3(props2, children) {
22563
22834
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -22600,6 +22871,15 @@ var featureCard = styledCard(
22600
22871
  bind("card.media")
22601
22872
  ),
22602
22873
  stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
22874
+ el(
22875
+ "feature-card-icon",
22876
+ {
22877
+ treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
22878
+ generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
22879
+ },
22880
+ null,
22881
+ bind("card.icon")
22882
+ ),
22603
22883
  text(
22604
22884
  {
22605
22885
  as: "h3",
@@ -22721,6 +23001,16 @@ var featureCardsConfig = {
22721
23001
  defaultValue: "4/3",
22722
23002
  visibleWhen: { field: "media", notEquals: null }
22723
23003
  }),
23004
+ {
23005
+ id: "icon",
23006
+ type: "text",
23007
+ label: "Icon",
23008
+ required: false,
23009
+ ui: {
23010
+ widget: "iconPicker",
23011
+ iconPickerPreset: "feature"
23012
+ }
23013
+ },
22724
23014
  {
22725
23015
  id: "title",
22726
23016
  type: "text",
@@ -22756,6 +23046,19 @@ var featureCardsConfig = {
22756
23046
  ]
22757
23047
  }
22758
23048
  },
23049
+ {
23050
+ id: "_iconTreatment",
23051
+ type: "select",
23052
+ label: "Icon style",
23053
+ required: false,
23054
+ defaultValue: "soft-badge",
23055
+ multiple: false,
23056
+ options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
23057
+ value,
23058
+ label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
23059
+ })),
23060
+ ui: { intent: "display" }
23061
+ },
22759
23062
  cardStylesField({
22760
23063
  id: "_cardStyles",
22761
23064
  label: "Card styles"
@@ -30573,7 +30876,8 @@ var systemBlockDefinitionsRaw = [
30573
30876
  layoutProfiles: [
30574
30877
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
30575
30878
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
30576
- layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
30879
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
30880
+ layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
30577
30881
  ]
30578
30882
  })),
30579
30883
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -30604,6 +30908,12 @@ var systemBlockDefinitionsRaw = [
30604
30908
  family: "grid",
30605
30909
  weight: "standard",
30606
30910
  bias: "soft"
30911
+ }),
30912
+ layoutProfile({
30913
+ variantKey: "split-grid",
30914
+ family: "split",
30915
+ weight: "featured",
30916
+ bias: "soft"
30607
30917
  })
30608
30918
  ]
30609
30919
  })),
@@ -34333,7 +34643,6 @@ var websiteSurfaceIds = [
34333
34643
  "site.footerBlocks",
34334
34644
  "site.navigation",
34335
34645
  "site.media",
34336
- "site.style",
34337
34646
  "site.performance"
34338
34647
  ];
34339
34648
  var websiteSurfaceIdSet = new Set(
@@ -34354,6 +34663,12 @@ var hiddenDemoSettingsNavSurfaceIds = [
34354
34663
  ];
34355
34664
  var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
34356
34665
 
34666
+ // ../api/src/navigation/identity.ts
34667
+ function unsafeAsNavigationMenuIdentifier(identifier) {
34668
+ return identifier;
34669
+ }
34670
+ var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
34671
+
34357
34672
  // ../api/src/aiPlayground.ts
34358
34673
  import { z as z66 } from "zod";
34359
34674
  var Rfc6902PatchOp = z66.discriminatedUnion("op", [