@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
@@ -304,6 +304,9 @@ function resolveRepeaterGridColumnFieldId(options) {
304
304
  return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID;
305
305
  }
306
306
 
307
+ // ../blocks/src/system/icons/presets.ts
308
+ var ICON_PICKER_PRESETS = ["cta", "feature"];
309
+
307
310
  // ../blocks/src/system/manifest/schema.ts
308
311
  var visibilityLevels = ["admin", "designer", "author"];
309
312
  var MEDIA_KINDS = [
@@ -462,7 +465,7 @@ var uiSchema = z2.object({
462
465
  layoutGridColumnField: z2.string().optional(),
463
466
  layoutGridMaxRows: z2.number().int().positive().optional(),
464
467
  // Icon picker configuration (used when ui.widget === 'iconPicker')
465
- iconPickerPreset: z2.enum(["cta"]).optional(),
468
+ iconPickerPreset: z2.enum(ICON_PICKER_PRESETS).optional(),
466
469
  // Entry picker configuration
467
470
  contentTypeField: z2.string().optional(),
468
471
  fixedContentType: z2.string().optional(),
@@ -2054,7 +2057,7 @@ var themeColorBaseTokenNames = [
2054
2057
  "accentForeground"
2055
2058
  ];
2056
2059
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
2057
- var SHADE_STEPS = [
2060
+ var themeColorShadeSteps = [
2058
2061
  "50",
2059
2062
  "100",
2060
2063
  "200",
@@ -2067,7 +2070,7 @@ var SHADE_STEPS = [
2067
2070
  "900",
2068
2071
  "950"
2069
2072
  ];
2070
- var shadeStepSet = new Set(SHADE_STEPS);
2073
+ var shadeStepSet = new Set(themeColorShadeSteps);
2071
2074
  function isKnownBaseToken(value) {
2072
2075
  return themeColorBaseTokenSet.has(value);
2073
2076
  }
@@ -5694,6 +5697,7 @@ var curatedSiteStyleIdValues = [
5694
5697
  "site-style:personal-retreat-journal",
5695
5698
  "site-style:tactile-workshop",
5696
5699
  "site-style:modern-wellness",
5700
+ "site-style:clarity-zen-blue",
5697
5701
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
5698
5702
  "site-style:bold-launch",
5699
5703
  "site-style:south-west-twerk-school"
@@ -6279,6 +6283,114 @@ var curatedSiteStyles = [
6279
6283
  paletteChoice("warm-neutral-clay")
6280
6284
  ]
6281
6285
  }),
6286
+ defineCuratedSiteStyle({
6287
+ id: "site-style:clarity-zen-blue",
6288
+ name: "Clarity Zen",
6289
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
6290
+ 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.",
6291
+ siteCreatorSelection: {
6292
+ kind: "site_creator_keyword_heuristic",
6293
+ priority: 25
6294
+ },
6295
+ selectionKeywordRules: [
6296
+ { kind: "substring", value: "psychotherap" },
6297
+ { kind: "phrase", value: "mental health" },
6298
+ { kind: "phrase", value: "talk therapy" },
6299
+ { kind: "phrase", value: "therapy and wellbeing" }
6300
+ ],
6301
+ tokenRecipes: {
6302
+ palette: "brand-led",
6303
+ contrast: "standard",
6304
+ radius: "rounded",
6305
+ shadow: "subtle",
6306
+ typography: "serif-editorial",
6307
+ spacing: "airy",
6308
+ motion: "subtle"
6309
+ },
6310
+ compositionBudget: balancedBudget,
6311
+ themeOverrides: {
6312
+ typography: {
6313
+ body: {
6314
+ family: "Inter, system-ui, sans-serif",
6315
+ size: "md",
6316
+ weight: "regular",
6317
+ lineHeight: "relaxed",
6318
+ letterSpacing: "normal"
6319
+ },
6320
+ headings: {
6321
+ default: {
6322
+ family: '"Cormorant Garamond", Georgia, serif',
6323
+ weight: "regular",
6324
+ lineHeight: "normal",
6325
+ letterSpacing: "normal",
6326
+ colorToken: "text",
6327
+ italic: null,
6328
+ case: null
6329
+ },
6330
+ h1: {
6331
+ size: "xl",
6332
+ weight: "regular",
6333
+ lineHeight: "normal",
6334
+ letterSpacing: "normal",
6335
+ italic: null
6336
+ },
6337
+ h2: {
6338
+ size: "lg",
6339
+ weight: "regular",
6340
+ lineHeight: "normal",
6341
+ letterSpacing: "normal",
6342
+ italic: null
6343
+ },
6344
+ h3: {
6345
+ size: "md",
6346
+ weight: "regular",
6347
+ lineHeight: "normal",
6348
+ letterSpacing: "normal",
6349
+ italic: null
6350
+ }
6351
+ },
6352
+ scale: "majorThird"
6353
+ },
6354
+ bodyText: {
6355
+ intro: {
6356
+ paragraphSize: "default",
6357
+ headingSize: "editorial"
6358
+ }
6359
+ }
6360
+ },
6361
+ defaultBlockVariants: {
6362
+ "block.faq": "split-heading-columns"
6363
+ },
6364
+ recommendedAppearancePresetIds: [
6365
+ "hero-split-editorial",
6366
+ "intro-organic-statement",
6367
+ "feature-cards-raised-rule",
6368
+ "media-text-quiet-story",
6369
+ "testimonials-brand-background-quotes",
6370
+ "faq-contained-help",
6371
+ "contact-form-panel"
6372
+ ],
6373
+ recommendedHeaderLookIds: [
6374
+ "centered-calm",
6375
+ "serif-line",
6376
+ "minimal-transparent"
6377
+ ],
6378
+ recommendedFooterLookIds: [
6379
+ "footer-muted-grounding",
6380
+ "site-footer-brand-two-band"
6381
+ ],
6382
+ buttonPersonalityChoices: [
6383
+ buttonChoice("soft-pill"),
6384
+ buttonChoice("pebble"),
6385
+ buttonChoice("editorial-link")
6386
+ ],
6387
+ paletteVariantChoices: [
6388
+ paletteChoice("brand-led-cool"),
6389
+ paletteChoice("soft-natural-watercolor"),
6390
+ paletteChoice("soft-natural-stone"),
6391
+ paletteChoice("warm-neutral-cream")
6392
+ ]
6393
+ }),
6282
6394
  defineCuratedSiteStyle({
6283
6395
  id: "site-style:personal-retreat-journal",
6284
6396
  name: "Personal Retreat Journal",
@@ -9779,36 +9891,46 @@ function buildCarouselLayout() {
9779
9891
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
9780
9892
  );
9781
9893
  }
9894
+ function buildResponsiveGridCards() {
9895
+ return [
9896
+ // 2 columns
9897
+ grid(
9898
+ { gap: "lg", cols: { base: 1, sm: 2 } },
9899
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9900
+ when("gridColumns", { equals: "2" })
9901
+ ),
9902
+ // 3 columns (default when unset)
9903
+ grid(
9904
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9905
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9906
+ when("gridColumns", { equals: "3" })
9907
+ ),
9908
+ // 4 columns
9909
+ grid(
9910
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
9911
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9912
+ when("gridColumns", { equals: "4" })
9913
+ ),
9914
+ // Fallback to 3 columns when gridColumns is not set
9915
+ grid(
9916
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9917
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9918
+ when("gridColumns", { not: true })
9919
+ )
9920
+ ];
9921
+ }
9782
9922
  function buildGridLayout() {
9783
9923
  return el(
9784
9924
  "div",
9785
9925
  { className: "rb-mt-12 rb-testimonials-carousel" },
9786
- [
9787
- // 2 columns
9788
- grid(
9789
- { gap: "lg", cols: { base: 1, sm: 2 } },
9790
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9791
- when("gridColumns", { equals: "2" })
9792
- ),
9793
- // 3 columns (default when unset)
9794
- grid(
9795
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9796
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9797
- when("gridColumns", { equals: "3" })
9798
- ),
9799
- // 4 columns
9800
- grid(
9801
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
9802
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9803
- when("gridColumns", { equals: "4" })
9804
- ),
9805
- // Fallback to 3 columns when gridColumns is not set
9806
- grid(
9807
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9808
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9809
- when("gridColumns", { not: true })
9810
- )
9811
- ]
9926
+ buildResponsiveGridCards()
9927
+ );
9928
+ }
9929
+ function buildGridCardsLayout(className) {
9930
+ return el(
9931
+ "div",
9932
+ { className },
9933
+ buildResponsiveGridCards()
9812
9934
  );
9813
9935
  }
9814
9936
  var testimonialsCarouselFragment = defineFragment({
@@ -12777,6 +12899,24 @@ var questionColumnsLayout = styledSection({
12777
12899
  }),
12778
12900
  baseClass: ""
12779
12901
  });
12902
+ var splitHeadingColumnsLayout = styledSection({
12903
+ children: styledContainer({
12904
+ baseClassName: "rb-relative rb-isolate",
12905
+ children: el(
12906
+ "div",
12907
+ {
12908
+ className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
12909
+ },
12910
+ [
12911
+ el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
12912
+ el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
12913
+ questionColumnsAccordionLayout
12914
+ ])
12915
+ ]
12916
+ )
12917
+ }),
12918
+ baseClass: ""
12919
+ });
12780
12920
  var faqManifest = createBlockManifest({
12781
12921
  id: "block.faq",
12782
12922
  title: "FAQ",
@@ -12797,7 +12937,8 @@ var faqManifest = createBlockManifest({
12797
12937
  variants: {
12798
12938
  default: defaultLayout,
12799
12939
  "two-column": twoColumnLayout,
12800
- "question-columns": questionColumnsLayout
12940
+ "question-columns": questionColumnsLayout,
12941
+ "split-heading-columns": splitHeadingColumnsLayout
12801
12942
  },
12802
12943
  defaultVariant: "default",
12803
12944
  variantOptions: {
@@ -12812,6 +12953,10 @@ var faqManifest = createBlockManifest({
12812
12953
  "question-columns": {
12813
12954
  label: "Question columns",
12814
12955
  description: "A full-width heading above FAQ items split into two columns."
12956
+ },
12957
+ "split-heading-columns": {
12958
+ label: "Split heading columns",
12959
+ description: "A left heading column with FAQ items split into two columns on the right."
12815
12960
  }
12816
12961
  },
12817
12962
  description: "Accordion of frequently asked questions and answers.",
@@ -13582,6 +13727,7 @@ var siteFooterBlockDefinition = {
13582
13727
  };
13583
13728
 
13584
13729
  // ../blocks/src/system/blocks/testimonials.tsx
13730
+ var backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
13585
13731
  var wrapVariant = (variantLayout) => styledSection({
13586
13732
  children: styledContainer({
13587
13733
  children: stack(
@@ -13595,10 +13741,53 @@ var wrapVariant = (variantLayout) => styledSection({
13595
13741
  // styledContainer (rb-container) already provides horizontal padding
13596
13742
  baseClass: "",
13597
13743
  spacing: "comfortable",
13598
- imageClassName: "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50"
13744
+ imageClassName: backgroundImageClassName
13599
13745
  });
13600
13746
  var carouselLayout = wrapVariant(buildCarouselLayout());
13601
13747
  var gridLayout2 = wrapVariant(buildGridLayout());
13748
+ var splitHeading = stack(
13749
+ { gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
13750
+ [
13751
+ text(
13752
+ { as: "h2" },
13753
+ when("content.heading"),
13754
+ bind("content.heading")
13755
+ ),
13756
+ headingDecoration({
13757
+ family: "short-center-rule",
13758
+ placement: "after-heading"
13759
+ }),
13760
+ text(
13761
+ {
13762
+ as: "p",
13763
+ className: "rb-prose",
13764
+ style: textColorStyle("mutedText")
13765
+ },
13766
+ when("content.subheading"),
13767
+ bind("content.subheading")
13768
+ )
13769
+ ]
13770
+ );
13771
+ var splitGridLayout = styledSection({
13772
+ children: styledContainer({
13773
+ baseClassName: "rb-relative rb-isolate",
13774
+ children: el(
13775
+ "div",
13776
+ {
13777
+ className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
13778
+ },
13779
+ [
13780
+ el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
13781
+ el("div", { className: "rb-testimonials-split-grid-cards" }, [
13782
+ buildGridCardsLayout("rb-testimonials-split-grid-card-list")
13783
+ ])
13784
+ ]
13785
+ )
13786
+ }),
13787
+ baseClass: "",
13788
+ spacing: "comfortable",
13789
+ imageClassName: backgroundImageClassName
13790
+ });
13602
13791
  var additionalFields = parseFieldDefinitions([
13603
13792
  // Heading fields from fragment
13604
13793
  ...testimonialsHeadingFragment.fields,
@@ -13630,7 +13819,7 @@ var additionalFields = parseFieldDefinitions([
13630
13819
  ],
13631
13820
  ui: {
13632
13821
  intent: "display",
13633
- visibleWhen: { field: "variant", equals: "grid" }
13822
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
13634
13823
  }
13635
13824
  },
13636
13825
  // Carousel-specific fields (from fragment)
@@ -13664,7 +13853,8 @@ var testimonialsManifest = createBlockManifest({
13664
13853
  // Variant system - enables the variant switcher control in the editor
13665
13854
  variants: {
13666
13855
  carousel: carouselLayout,
13667
- grid: gridLayout2
13856
+ grid: gridLayout2,
13857
+ "split-grid": splitGridLayout
13668
13858
  },
13669
13859
  defaultVariant: "carousel",
13670
13860
  variantOptions: {
@@ -13677,6 +13867,11 @@ var testimonialsManifest = createBlockManifest({
13677
13867
  label: "Grid",
13678
13868
  description: "Responsive grid layout",
13679
13869
  icon: "Grid"
13870
+ },
13871
+ "split-grid": {
13872
+ label: "Split grid",
13873
+ description: "Heading on the left with testimonial cards on the right",
13874
+ icon: "PanelLeft"
13680
13875
  }
13681
13876
  },
13682
13877
  // Fields (variant field is auto-generated by augmentManifest)
@@ -14069,6 +14264,13 @@ var collectionBlockDefinition = {
14069
14264
  manifest: collectionManifest
14070
14265
  };
14071
14266
 
14267
+ // ../blocks/src/system/blocks/feature-card-icons.ts
14268
+ var FEATURE_CARD_ICON_TREATMENTS = [
14269
+ "plain",
14270
+ "soft-badge",
14271
+ "utility-badge"
14272
+ ];
14273
+
14072
14274
  // ../blocks/src/system/blocks/feature-cards.ts
14073
14275
  function grid3(props2, children) {
14074
14276
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -14111,6 +14313,15 @@ var featureCard = styledCard(
14111
14313
  bind("card.media")
14112
14314
  ),
14113
14315
  stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
14316
+ el(
14317
+ "feature-card-icon",
14318
+ {
14319
+ treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
14320
+ generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
14321
+ },
14322
+ null,
14323
+ bind("card.icon")
14324
+ ),
14114
14325
  text(
14115
14326
  {
14116
14327
  as: "h3",
@@ -14232,6 +14443,16 @@ var featureCardsConfig = {
14232
14443
  defaultValue: "4/3",
14233
14444
  visibleWhen: { field: "media", notEquals: null }
14234
14445
  }),
14446
+ {
14447
+ id: "icon",
14448
+ type: "text",
14449
+ label: "Icon",
14450
+ required: false,
14451
+ ui: {
14452
+ widget: "iconPicker",
14453
+ iconPickerPreset: "feature"
14454
+ }
14455
+ },
14235
14456
  {
14236
14457
  id: "title",
14237
14458
  type: "text",
@@ -14267,6 +14488,19 @@ var featureCardsConfig = {
14267
14488
  ]
14268
14489
  }
14269
14490
  },
14491
+ {
14492
+ id: "_iconTreatment",
14493
+ type: "select",
14494
+ label: "Icon style",
14495
+ required: false,
14496
+ defaultValue: "soft-badge",
14497
+ multiple: false,
14498
+ options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
14499
+ value,
14500
+ label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
14501
+ })),
14502
+ ui: { intent: "display" }
14503
+ },
14270
14504
  cardStylesField({
14271
14505
  id: "_cardStyles",
14272
14506
  label: "Card styles"
@@ -22008,7 +22242,8 @@ var systemBlockDefinitionsRaw = [
22008
22242
  layoutProfiles: [
22009
22243
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
22010
22244
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
22011
- layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
22245
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
22246
+ layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
22012
22247
  ]
22013
22248
  })),
22014
22249
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -22039,6 +22274,12 @@ var systemBlockDefinitionsRaw = [
22039
22274
  family: "grid",
22040
22275
  weight: "standard",
22041
22276
  bias: "soft"
22277
+ }),
22278
+ layoutProfile({
22279
+ variantKey: "split-grid",
22280
+ family: "split",
22281
+ weight: "featured",
22282
+ bias: "soft"
22042
22283
  })
22043
22284
  ]
22044
22285
  })),
@@ -4,7 +4,7 @@ import * as path from "path";
4
4
  import * as crypto from "crypto";
5
5
 
6
6
  // src/version.ts
7
- var SDK_VERSION = "0.78.2";
7
+ var SDK_VERSION = "0.79.0";
8
8
 
9
9
  // src/constants.ts
10
10
  var PREBUILD_PAGE_SIZE = 50;