@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
@@ -2176,6 +2176,46 @@ var init_endpoints = __esm({
2176
2176
  auth: "user",
2177
2177
  responseKind: "json"
2178
2178
  },
2179
+ getSiteIconStyleGuide: {
2180
+ path: "/sites/{siteId}/settings/icon-style-guide",
2181
+ method: "GET",
2182
+ revalidate: 120,
2183
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2184
+ auth: "user",
2185
+ responseKind: "json",
2186
+ errors: []
2187
+ },
2188
+ updateSiteIconStyleGuide: {
2189
+ path: "/sites/{siteId}/settings/icon-style-guide",
2190
+ method: "POST",
2191
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2192
+ auth: "user",
2193
+ responseKind: "json",
2194
+ errors: []
2195
+ },
2196
+ regenerateSiteIconStyleGuide: {
2197
+ path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
2198
+ method: "POST",
2199
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2200
+ auth: "user",
2201
+ responseKind: "json",
2202
+ errors: []
2203
+ },
2204
+ generateGeneratedIconSet: {
2205
+ path: "/sites/{siteId}/ai/generated-icons/generate",
2206
+ method: "POST",
2207
+ auth: "user",
2208
+ responseKind: "json",
2209
+ errors: []
2210
+ },
2211
+ applyGeneratedIconSet: {
2212
+ path: "/sites/{siteId}/ai/generated-icons/apply",
2213
+ method: "POST",
2214
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2215
+ auth: "user",
2216
+ responseKind: "json",
2217
+ errors: []
2218
+ },
2179
2219
  getSiteAiProfile: {
2180
2220
  path: "/sites/{siteId}/settings/ai-site-profile",
2181
2221
  method: "GET",
@@ -3951,6 +3991,14 @@ var init_endpoints = __esm({
3951
3991
  auth: "public",
3952
3992
  responseKind: "json"
3953
3993
  },
3994
+ getGeneratedIconRenderAssets: {
3995
+ path: "/public/sites/{siteId}/generated-icon-assets",
3996
+ method: "POST",
3997
+ tags: [TAG_TEMPLATES.siteRoutableContent],
3998
+ auth: "public",
3999
+ responseKind: "json",
4000
+ errors: []
4001
+ },
3954
4002
  // Resolve entry subroute by kind and URL segment
3955
4003
  resolveEntrySubroute: {
3956
4004
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5655,6 +5703,13 @@ var init_endpoints = __esm({
5655
5703
  auth: "service",
5656
5704
  responseKind: "json"
5657
5705
  },
5706
+ sdkDeleteNavigationMenu: {
5707
+ path: "/sdk/{siteId}/navigation/{menuId}",
5708
+ method: "DELETE",
5709
+ auth: "service",
5710
+ responseKind: "json",
5711
+ errors: ["resource:not_found", "server:internal_error"]
5712
+ },
5658
5713
  sdkUpsertTheme: {
5659
5714
  path: "/sdk/{siteId}/theme",
5660
5715
  method: "POST",
@@ -6678,9 +6733,22 @@ var init_accessAdmin = __esm({
6678
6733
  });
6679
6734
 
6680
6735
  // ../api/src/media.ts
6736
+ var AMBIENT_BACKGROUND_ROLES, SITE_BACKGROUND_ASSET_USES;
6681
6737
  var init_media = __esm({
6682
6738
  "../api/src/media.ts"() {
6683
6739
  "use strict";
6740
+ AMBIENT_BACKGROUND_ROLES = [
6741
+ "light-texture",
6742
+ "proof-band-dark",
6743
+ "cta-wash",
6744
+ "footer-detail",
6745
+ "style-atmosphere-1",
6746
+ "style-atmosphere-2"
6747
+ ];
6748
+ SITE_BACKGROUND_ASSET_USES = [
6749
+ "selected-background",
6750
+ ...AMBIENT_BACKGROUND_ROLES
6751
+ ];
6684
6752
  }
6685
6753
  });
6686
6754
 
@@ -6902,11 +6970,23 @@ var init_fileSafety = __esm({
6902
6970
  });
6903
6971
 
6904
6972
  // ../media-core/src/fileDomain.ts
6905
- var FILE_SIZE_LIMITS, DEFAULT_PRIVATE_FILE_SIGNED_URL_EXPIRY_SECONDS;
6973
+ var AMBIENT_BACKGROUND_ROLES2, SITE_BACKGROUND_ASSET_USES2, FILE_SIZE_LIMITS, DEFAULT_PRIVATE_FILE_SIGNED_URL_EXPIRY_SECONDS;
6906
6974
  var init_fileDomain = __esm({
6907
6975
  "../media-core/src/fileDomain.ts"() {
6908
6976
  "use strict";
6909
6977
  init_src();
6978
+ AMBIENT_BACKGROUND_ROLES2 = [
6979
+ "light-texture",
6980
+ "proof-band-dark",
6981
+ "cta-wash",
6982
+ "footer-detail",
6983
+ "style-atmosphere-1",
6984
+ "style-atmosphere-2"
6985
+ ];
6986
+ SITE_BACKGROUND_ASSET_USES2 = [
6987
+ "selected-background",
6988
+ ...AMBIENT_BACKGROUND_ROLES2
6989
+ ];
6910
6990
  FILE_SIZE_LIMITS = {
6911
6991
  audio: unsafeAsPositiveByteCount(250 * 1024 * 1024),
6912
6992
  rawVideoBeforeCompression: unsafeAsPositiveByteCount(500 * 1024 * 1024),
@@ -7608,6 +7688,15 @@ var init_repeaterGrid = __esm({
7608
7688
  }
7609
7689
  });
7610
7690
 
7691
+ // ../blocks/src/system/icons/presets.ts
7692
+ var ICON_PICKER_PRESETS;
7693
+ var init_presets = __esm({
7694
+ "../blocks/src/system/icons/presets.ts"() {
7695
+ "use strict";
7696
+ ICON_PICKER_PRESETS = ["cta", "feature"];
7697
+ }
7698
+ });
7699
+
7611
7700
  // ../blocks/src/system/manifest/schema.ts
7612
7701
  import { z as z5 } from "zod";
7613
7702
  function isDisplayMediaKind(kind) {
@@ -7695,6 +7784,7 @@ var init_schema2 = __esm({
7695
7784
  init_src2();
7696
7785
  init_node();
7697
7786
  init_repeaterGrid();
7787
+ init_presets();
7698
7788
  visibilityLevels = ["admin", "designer", "author"];
7699
7789
  MEDIA_KINDS = [
7700
7790
  "image",
@@ -7846,7 +7936,7 @@ var init_schema2 = __esm({
7846
7936
  layoutGridColumnField: z5.string().optional(),
7847
7937
  layoutGridMaxRows: z5.number().int().positive().optional(),
7848
7938
  // Icon picker configuration (used when ui.widget === 'iconPicker')
7849
- iconPickerPreset: z5.enum(["cta"]).optional(),
7939
+ iconPickerPreset: z5.enum(ICON_PICKER_PRESETS).optional(),
7850
7940
  // Entry picker configuration
7851
7941
  contentTypeField: z5.string().optional(),
7852
7942
  fixedContentType: z5.string().optional(),
@@ -8291,6 +8381,283 @@ var init_schema2 = __esm({
8291
8381
  }
8292
8382
  });
8293
8383
 
8384
+ // ../blocks/src/system/icons/ids.ts
8385
+ var init_ids = __esm({
8386
+ "../blocks/src/system/icons/ids.ts"() {
8387
+ "use strict";
8388
+ }
8389
+ });
8390
+
8391
+ // ../blocks/src/system/icons/semantic.ts
8392
+ var featurePreset, SEMANTIC_ICON_DEFINITIONS, SEMANTIC_ICON_OPTIONS;
8393
+ var init_semantic = __esm({
8394
+ "../blocks/src/system/icons/semantic.ts"() {
8395
+ "use strict";
8396
+ featurePreset = ["feature"];
8397
+ SEMANTIC_ICON_DEFINITIONS = [
8398
+ {
8399
+ id: "protection-trust",
8400
+ label: "Protection and trust",
8401
+ tags: ["safe", "safety", "security", "trust", "privacy", "confidence"],
8402
+ domains: ["wellbeing", "services", "technology"],
8403
+ tone: ["trustworthy", "practical"],
8404
+ presets: featurePreset
8405
+ },
8406
+ {
8407
+ id: "confidentiality",
8408
+ label: "Confidentiality",
8409
+ tags: ["confidential", "privacy", "secure", "protected", "private"],
8410
+ domains: ["wellbeing", "coaching", "services", "technology"],
8411
+ tone: ["trustworthy", "calm"],
8412
+ presets: featurePreset
8413
+ },
8414
+ {
8415
+ id: "care-support",
8416
+ label: "Care and support",
8417
+ tags: ["care", "support", "therapy", "kindness", "help", "compassion"],
8418
+ domains: ["wellbeing", "coaching", "community"],
8419
+ tone: ["warm", "human"],
8420
+ presets: featurePreset
8421
+ },
8422
+ {
8423
+ id: "partnership",
8424
+ label: "Partnership",
8425
+ tags: ["partnership", "together", "support", "relationship", "collaboration"],
8426
+ domains: ["coaching", "community", "services"],
8427
+ tone: ["warm", "human", "trustworthy"],
8428
+ presets: featurePreset
8429
+ },
8430
+ {
8431
+ id: "warmth",
8432
+ label: "Warmth",
8433
+ tags: ["heart", "warmth", "care", "love", "wellbeing", "personal"],
8434
+ domains: ["wellbeing", "community", "hospitality"],
8435
+ tone: ["warm", "human"],
8436
+ presets: featurePreset
8437
+ },
8438
+ {
8439
+ id: "community",
8440
+ label: "Community",
8441
+ tags: ["community", "group", "people", "team", "members", "belonging"],
8442
+ domains: ["community", "education", "events"],
8443
+ tone: ["human", "warm"],
8444
+ presets: featurePreset
8445
+ },
8446
+ {
8447
+ id: "personal-guidance",
8448
+ label: "Personal guidance",
8449
+ tags: ["guidance", "personal", "coach", "expert", "one to one", "trusted"],
8450
+ domains: ["coaching", "services", "education"],
8451
+ tone: ["trustworthy", "human"],
8452
+ presets: featurePreset
8453
+ },
8454
+ {
8455
+ id: "conversation",
8456
+ label: "Conversation",
8457
+ tags: ["conversation", "talk", "chat", "communication", "support"],
8458
+ domains: ["coaching", "community", "services"],
8459
+ tone: ["human", "warm"],
8460
+ presets: featurePreset
8461
+ },
8462
+ {
8463
+ id: "friendly-welcome",
8464
+ label: "Friendly welcome",
8465
+ tags: ["friendly", "welcome", "positive", "happy", "approachable"],
8466
+ domains: ["hospitality", "community", "services"],
8467
+ tone: ["warm", "playful", "human"],
8468
+ presets: featurePreset
8469
+ },
8470
+ {
8471
+ id: "insight-learning",
8472
+ label: "Insight and learning",
8473
+ tags: ["mind", "insight", "learning", "clarity", "thinking", "therapy"],
8474
+ domains: ["wellbeing", "coaching", "education"],
8475
+ tone: ["calm", "practical"],
8476
+ presets: featurePreset
8477
+ },
8478
+ {
8479
+ id: "natural-wellbeing",
8480
+ label: "Natural wellbeing",
8481
+ tags: ["natural", "wellbeing", "growth", "eco", "calm", "organic"],
8482
+ domains: ["wellbeing", "hospitality", "creative"],
8483
+ tone: ["calm", "warm"],
8484
+ presets: featurePreset
8485
+ },
8486
+ {
8487
+ id: "growth",
8488
+ label: "Growth",
8489
+ tags: ["growth", "new", "progress", "development", "nurture"],
8490
+ domains: ["wellbeing", "coaching", "education", "community"],
8491
+ tone: ["warm", "calm"],
8492
+ presets: featurePreset
8493
+ },
8494
+ {
8495
+ id: "gentle-care",
8496
+ label: "Gentle care",
8497
+ tags: ["gentle", "soft", "care", "wellbeing", "beauty", "calm"],
8498
+ domains: ["wellbeing", "creative", "hospitality"],
8499
+ tone: ["warm", "calm", "premium"],
8500
+ presets: featurePreset
8501
+ },
8502
+ {
8503
+ id: "special-touch",
8504
+ label: "Special touch",
8505
+ tags: ["special", "sparkle", "magic", "polish", "delight", "creative"],
8506
+ domains: ["creative", "commerce", "hospitality"],
8507
+ tone: ["playful", "premium"],
8508
+ presets: featurePreset
8509
+ },
8510
+ {
8511
+ id: "ideas",
8512
+ label: "Ideas",
8513
+ tags: ["idea", "innovation", "clarity", "creative", "strategy"],
8514
+ domains: ["coaching", "education", "creative", "technology"],
8515
+ tone: ["practical", "playful"],
8516
+ presets: featurePreset
8517
+ },
8518
+ {
8519
+ id: "direction",
8520
+ label: "Direction",
8521
+ tags: ["direction", "navigation", "path", "journey", "guidance"],
8522
+ domains: ["coaching", "education", "services"],
8523
+ tone: ["trustworthy", "practical"],
8524
+ presets: featurePreset
8525
+ },
8526
+ {
8527
+ id: "focus",
8528
+ label: "Focus",
8529
+ tags: ["focus", "goal", "outcome", "aim", "strategy"],
8530
+ domains: ["coaching", "services", "technology"],
8531
+ tone: ["practical"],
8532
+ presets: featurePreset
8533
+ },
8534
+ {
8535
+ id: "quality",
8536
+ label: "Quality",
8537
+ tags: ["quality", "award", "standard", "achievement", "premium"],
8538
+ domains: ["services", "education", "commerce"],
8539
+ tone: ["premium", "trustworthy"],
8540
+ presets: featurePreset
8541
+ },
8542
+ {
8543
+ id: "highlight",
8544
+ label: "Highlight",
8545
+ tags: ["highlight", "featured", "favorite", "quality", "special"],
8546
+ domains: ["creative", "commerce", "services"],
8547
+ tone: ["playful", "premium"],
8548
+ presets: featurePreset
8549
+ },
8550
+ {
8551
+ id: "verified-quality",
8552
+ label: "Verified quality",
8553
+ tags: ["verified", "quality", "approved", "trusted", "check"],
8554
+ domains: ["services", "commerce", "education"],
8555
+ tone: ["trustworthy", "practical"],
8556
+ presets: featurePreset
8557
+ },
8558
+ {
8559
+ id: "learning",
8560
+ label: "Learning",
8561
+ tags: ["learning", "book", "course", "knowledge", "education"],
8562
+ domains: ["education", "coaching", "community"],
8563
+ tone: ["calm", "practical"],
8564
+ presets: featurePreset
8565
+ },
8566
+ {
8567
+ id: "training",
8568
+ label: "Training",
8569
+ tags: ["training", "course", "qualification", "school", "education"],
8570
+ domains: ["education", "coaching"],
8571
+ tone: ["trustworthy", "practical"],
8572
+ presets: featurePreset
8573
+ },
8574
+ {
8575
+ id: "programmes-dates",
8576
+ label: "Programmes and dates",
8577
+ tags: ["calendar", "dates", "schedule", "events", "programme", "classes"],
8578
+ domains: ["events", "education", "community"],
8579
+ tone: ["practical"],
8580
+ presets: featurePreset
8581
+ },
8582
+ {
8583
+ id: "place",
8584
+ label: "Place",
8585
+ tags: ["place", "location", "local", "venue", "destination"],
8586
+ domains: ["events", "hospitality", "services"],
8587
+ tone: ["practical"],
8588
+ presets: featurePreset
8589
+ },
8590
+ {
8591
+ id: "products",
8592
+ label: "Products",
8593
+ tags: ["products", "shop", "store", "retail", "commerce"],
8594
+ domains: ["commerce"],
8595
+ tone: ["practical", "premium"],
8596
+ presets: featurePreset
8597
+ },
8598
+ {
8599
+ id: "packages",
8600
+ label: "Packages",
8601
+ tags: ["package", "bundle", "delivery", "offer", "product"],
8602
+ domains: ["commerce", "services"],
8603
+ tone: ["practical"],
8604
+ presets: featurePreset
8605
+ },
8606
+ {
8607
+ id: "time",
8608
+ label: "Time",
8609
+ tags: ["time", "duration", "schedule", "availability", "appointment"],
8610
+ domains: ["events", "services", "wellbeing"],
8611
+ tone: ["practical", "calm"],
8612
+ presets: featurePreset
8613
+ },
8614
+ {
8615
+ id: "practical-service",
8616
+ label: "Practical service",
8617
+ tags: ["service", "repair", "setup", "practical", "tools", "support"],
8618
+ domains: ["services", "technology"],
8619
+ tone: ["practical"],
8620
+ presets: featurePreset
8621
+ },
8622
+ {
8623
+ id: "at-home",
8624
+ label: "At home",
8625
+ tags: ["home", "domestic", "comfort", "local", "space"],
8626
+ domains: ["hospitality", "services", "community"],
8627
+ tone: ["warm", "calm"],
8628
+ presets: featurePreset
8629
+ },
8630
+ {
8631
+ id: "worldwide",
8632
+ label: "Worldwide",
8633
+ tags: ["global", "online", "worldwide", "remote", "international"],
8634
+ domains: ["technology", "education", "services"],
8635
+ tone: ["practical"],
8636
+ presets: featurePreset
8637
+ },
8638
+ {
8639
+ id: "professional-service",
8640
+ label: "Professional service",
8641
+ tags: ["business", "professional", "consulting", "service", "work"],
8642
+ domains: ["services", "technology", "coaching"],
8643
+ tone: ["practical", "trustworthy"],
8644
+ presets: featurePreset
8645
+ }
8646
+ ];
8647
+ SEMANTIC_ICON_OPTIONS = SEMANTIC_ICON_DEFINITIONS.map(({ id, label }) => ({
8648
+ id,
8649
+ label
8650
+ }));
8651
+ }
8652
+ });
8653
+
8654
+ // ../blocks/src/system/icons/value.ts
8655
+ var init_value = __esm({
8656
+ "../blocks/src/system/icons/value.ts"() {
8657
+ "use strict";
8658
+ }
8659
+ });
8660
+
8294
8661
  // ../blocks/src/system/manifest/fieldValidation/index.ts
8295
8662
  import { z as z6 } from "zod";
8296
8663
  var init_fieldValidation = __esm({
@@ -9599,7 +9966,7 @@ function parseThemeColorToken(value) {
9599
9966
  if (!isThemeColorToken(value)) return null;
9600
9967
  return value.trim();
9601
9968
  }
9602
- var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet, SHADE_STEPS, shadeStepSet, themeColorTokenSchema;
9969
+ var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet, themeColorShadeSteps, shadeStepSet, themeColorTokenSchema;
9603
9970
  var init_themeColorTokens = __esm({
9604
9971
  "../theme-core/src/tokens/themeColorTokens.ts"() {
9605
9972
  "use strict";
@@ -9634,7 +10001,7 @@ var init_themeColorTokens = __esm({
9634
10001
  "accentForeground"
9635
10002
  ];
9636
10003
  themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
9637
- SHADE_STEPS = [
10004
+ themeColorShadeSteps = [
9638
10005
  "50",
9639
10006
  "100",
9640
10007
  "200",
@@ -9647,7 +10014,7 @@ var init_themeColorTokens = __esm({
9647
10014
  "900",
9648
10015
  "950"
9649
10016
  ];
9650
- shadeStepSet = new Set(SHADE_STEPS);
10017
+ shadeStepSet = new Set(themeColorShadeSteps);
9651
10018
  themeColorTokenSchema = z9.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
9652
10019
  }
9653
10020
  });
@@ -10860,7 +11227,7 @@ var init_generateButtonCss = __esm({
10860
11227
  });
10861
11228
 
10862
11229
  // ../theme-core/src/buttons/presets.ts
10863
- var init_presets = __esm({
11230
+ var init_presets2 = __esm({
10864
11231
  "../theme-core/src/buttons/presets.ts"() {
10865
11232
  "use strict";
10866
11233
  }
@@ -10889,7 +11256,7 @@ var init_buttons = __esm({
10889
11256
  init_generateButtonCss();
10890
11257
  init_generateDefaultButtonSystem();
10891
11258
  init_constants();
10892
- init_presets();
11259
+ init_presets2();
10893
11260
  init_personalities();
10894
11261
  init_types5();
10895
11262
  init_registry2();
@@ -14106,6 +14473,7 @@ var init_curatedSiteStyles = __esm({
14106
14473
  "site-style:personal-retreat-journal",
14107
14474
  "site-style:tactile-workshop",
14108
14475
  "site-style:modern-wellness",
14476
+ "site-style:clarity-zen-blue",
14109
14477
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
14110
14478
  "site-style:bold-launch",
14111
14479
  "site-style:south-west-twerk-school"
@@ -14458,6 +14826,114 @@ var init_curatedSiteStyles = __esm({
14458
14826
  paletteChoice("warm-neutral-clay")
14459
14827
  ]
14460
14828
  }),
14829
+ defineCuratedSiteStyle({
14830
+ id: "site-style:clarity-zen-blue",
14831
+ name: "Clarity Zen",
14832
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
14833
+ 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.",
14834
+ siteCreatorSelection: {
14835
+ kind: "site_creator_keyword_heuristic",
14836
+ priority: 25
14837
+ },
14838
+ selectionKeywordRules: [
14839
+ { kind: "substring", value: "psychotherap" },
14840
+ { kind: "phrase", value: "mental health" },
14841
+ { kind: "phrase", value: "talk therapy" },
14842
+ { kind: "phrase", value: "therapy and wellbeing" }
14843
+ ],
14844
+ tokenRecipes: {
14845
+ palette: "brand-led",
14846
+ contrast: "standard",
14847
+ radius: "rounded",
14848
+ shadow: "subtle",
14849
+ typography: "serif-editorial",
14850
+ spacing: "airy",
14851
+ motion: "subtle"
14852
+ },
14853
+ compositionBudget: balancedBudget,
14854
+ themeOverrides: {
14855
+ typography: {
14856
+ body: {
14857
+ family: "Inter, system-ui, sans-serif",
14858
+ size: "md",
14859
+ weight: "regular",
14860
+ lineHeight: "relaxed",
14861
+ letterSpacing: "normal"
14862
+ },
14863
+ headings: {
14864
+ default: {
14865
+ family: '"Cormorant Garamond", Georgia, serif',
14866
+ weight: "regular",
14867
+ lineHeight: "normal",
14868
+ letterSpacing: "normal",
14869
+ colorToken: "text",
14870
+ italic: null,
14871
+ case: null
14872
+ },
14873
+ h1: {
14874
+ size: "xl",
14875
+ weight: "regular",
14876
+ lineHeight: "normal",
14877
+ letterSpacing: "normal",
14878
+ italic: null
14879
+ },
14880
+ h2: {
14881
+ size: "lg",
14882
+ weight: "regular",
14883
+ lineHeight: "normal",
14884
+ letterSpacing: "normal",
14885
+ italic: null
14886
+ },
14887
+ h3: {
14888
+ size: "md",
14889
+ weight: "regular",
14890
+ lineHeight: "normal",
14891
+ letterSpacing: "normal",
14892
+ italic: null
14893
+ }
14894
+ },
14895
+ scale: "majorThird"
14896
+ },
14897
+ bodyText: {
14898
+ intro: {
14899
+ paragraphSize: "default",
14900
+ headingSize: "editorial"
14901
+ }
14902
+ }
14903
+ },
14904
+ defaultBlockVariants: {
14905
+ "block.faq": "split-heading-columns"
14906
+ },
14907
+ recommendedAppearancePresetIds: [
14908
+ "hero-split-editorial",
14909
+ "intro-organic-statement",
14910
+ "feature-cards-raised-rule",
14911
+ "media-text-quiet-story",
14912
+ "testimonials-brand-background-quotes",
14913
+ "faq-contained-help",
14914
+ "contact-form-panel"
14915
+ ],
14916
+ recommendedHeaderLookIds: [
14917
+ "centered-calm",
14918
+ "serif-line",
14919
+ "minimal-transparent"
14920
+ ],
14921
+ recommendedFooterLookIds: [
14922
+ "footer-muted-grounding",
14923
+ "site-footer-brand-two-band"
14924
+ ],
14925
+ buttonPersonalityChoices: [
14926
+ buttonChoice("soft-pill"),
14927
+ buttonChoice("pebble"),
14928
+ buttonChoice("editorial-link")
14929
+ ],
14930
+ paletteVariantChoices: [
14931
+ paletteChoice("brand-led-cool"),
14932
+ paletteChoice("soft-natural-watercolor"),
14933
+ paletteChoice("soft-natural-stone"),
14934
+ paletteChoice("warm-neutral-cream")
14935
+ ]
14936
+ }),
14461
14937
  defineCuratedSiteStyle({
14462
14938
  id: "site-style:personal-retreat-journal",
14463
14939
  name: "Personal Retreat Journal",
@@ -19117,36 +19593,46 @@ function buildCarouselLayout() {
19117
19593
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
19118
19594
  );
19119
19595
  }
19596
+ function buildResponsiveGridCards() {
19597
+ return [
19598
+ // 2 columns
19599
+ grid(
19600
+ { gap: "lg", cols: { base: 1, sm: 2 } },
19601
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19602
+ when("gridColumns", { equals: "2" })
19603
+ ),
19604
+ // 3 columns (default when unset)
19605
+ grid(
19606
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
19607
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19608
+ when("gridColumns", { equals: "3" })
19609
+ ),
19610
+ // 4 columns
19611
+ grid(
19612
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
19613
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19614
+ when("gridColumns", { equals: "4" })
19615
+ ),
19616
+ // Fallback to 3 columns when gridColumns is not set
19617
+ grid(
19618
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
19619
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19620
+ when("gridColumns", { not: true })
19621
+ )
19622
+ ];
19623
+ }
19120
19624
  function buildGridLayout() {
19121
19625
  return el(
19122
19626
  "div",
19123
19627
  { className: "rb-mt-12 rb-testimonials-carousel" },
19124
- [
19125
- // 2 columns
19126
- grid(
19127
- { gap: "lg", cols: { base: 1, sm: 2 } },
19128
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19129
- when("gridColumns", { equals: "2" })
19130
- ),
19131
- // 3 columns (default when unset)
19132
- grid(
19133
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
19134
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19135
- when("gridColumns", { equals: "3" })
19136
- ),
19137
- // 4 columns
19138
- grid(
19139
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
19140
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19141
- when("gridColumns", { equals: "4" })
19142
- ),
19143
- // Fallback to 3 columns when gridColumns is not set
19144
- grid(
19145
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
19146
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19147
- when("gridColumns", { not: true })
19148
- )
19149
- ]
19628
+ buildResponsiveGridCards()
19629
+ );
19630
+ }
19631
+ function buildGridCardsLayout(className) {
19632
+ return el(
19633
+ "div",
19634
+ { className },
19635
+ buildResponsiveGridCards()
19150
19636
  );
19151
19637
  }
19152
19638
  var grid, testimonialsCarouselFragment;
@@ -22710,7 +23196,7 @@ function fragmentLayoutNode(layout) {
22710
23196
  function isNodeDefinitionArray(layout) {
22711
23197
  return Array.isArray(layout);
22712
23198
  }
22713
- var faqComposition, headingLayout, accordionLayout, questionColumnsAccordionLayout, defaultLayout, twoColumnLayout, questionColumnsLayout, faqManifest, faqBlockDefinition;
23199
+ var faqComposition, headingLayout, accordionLayout, questionColumnsAccordionLayout, defaultLayout, twoColumnLayout, questionColumnsLayout, splitHeadingColumnsLayout, faqManifest, faqBlockDefinition;
22714
23200
  var init_faq = __esm({
22715
23201
  "../blocks/src/system/blocks/faq.ts"() {
22716
23202
  "use strict";
@@ -22766,6 +23252,24 @@ var init_faq = __esm({
22766
23252
  }),
22767
23253
  baseClass: ""
22768
23254
  });
23255
+ splitHeadingColumnsLayout = styledSection({
23256
+ children: styledContainer({
23257
+ baseClassName: "rb-relative rb-isolate",
23258
+ children: el(
23259
+ "div",
23260
+ {
23261
+ className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
23262
+ },
23263
+ [
23264
+ el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
23265
+ el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
23266
+ questionColumnsAccordionLayout
23267
+ ])
23268
+ ]
23269
+ )
23270
+ }),
23271
+ baseClass: ""
23272
+ });
22769
23273
  faqManifest = createBlockManifest({
22770
23274
  id: "block.faq",
22771
23275
  title: "FAQ",
@@ -22786,7 +23290,8 @@ var init_faq = __esm({
22786
23290
  variants: {
22787
23291
  default: defaultLayout,
22788
23292
  "two-column": twoColumnLayout,
22789
- "question-columns": questionColumnsLayout
23293
+ "question-columns": questionColumnsLayout,
23294
+ "split-heading-columns": splitHeadingColumnsLayout
22790
23295
  },
22791
23296
  defaultVariant: "default",
22792
23297
  variantOptions: {
@@ -22801,6 +23306,10 @@ var init_faq = __esm({
22801
23306
  "question-columns": {
22802
23307
  label: "Question columns",
22803
23308
  description: "A full-width heading above FAQ items split into two columns."
23309
+ },
23310
+ "split-heading-columns": {
23311
+ label: "Split heading columns",
23312
+ description: "A left heading column with FAQ items split into two columns on the right."
22804
23313
  }
22805
23314
  },
22806
23315
  description: "Accordion of frequently asked questions and answers.",
@@ -24994,7 +25503,7 @@ var init_site_footer = __esm({
24994
25503
  });
24995
25504
 
24996
25505
  // ../blocks/src/system/blocks/testimonials.tsx
24997
- var wrapVariant, carouselLayout, gridLayout2, additionalFields, entriesLoader, dataLoaders2, testimonialsManifest, testimonialsBlockDefinition;
25506
+ var backgroundImageClassName, wrapVariant, carouselLayout, gridLayout2, splitHeading, splitGridLayout, additionalFields, entriesLoader, dataLoaders2, testimonialsManifest, testimonialsBlockDefinition;
24998
25507
  var init_testimonials = __esm({
24999
25508
  "../blocks/src/system/blocks/testimonials.tsx"() {
25000
25509
  "use strict";
@@ -25005,6 +25514,8 @@ var init_testimonials = __esm({
25005
25514
  init_defineBlock();
25006
25515
  init_builder();
25007
25516
  init_fragments2();
25517
+ init_colorStyles();
25518
+ backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
25008
25519
  wrapVariant = (variantLayout) => styledSection({
25009
25520
  children: styledContainer({
25010
25521
  children: stack(
@@ -25018,10 +25529,53 @@ var init_testimonials = __esm({
25018
25529
  // styledContainer (rb-container) already provides horizontal padding
25019
25530
  baseClass: "",
25020
25531
  spacing: "comfortable",
25021
- imageClassName: "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50"
25532
+ imageClassName: backgroundImageClassName
25022
25533
  });
25023
25534
  carouselLayout = wrapVariant(buildCarouselLayout());
25024
25535
  gridLayout2 = wrapVariant(buildGridLayout());
25536
+ splitHeading = stack(
25537
+ { gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
25538
+ [
25539
+ text(
25540
+ { as: "h2" },
25541
+ when("content.heading"),
25542
+ bind("content.heading")
25543
+ ),
25544
+ headingDecoration({
25545
+ family: "short-center-rule",
25546
+ placement: "after-heading"
25547
+ }),
25548
+ text(
25549
+ {
25550
+ as: "p",
25551
+ className: "rb-prose",
25552
+ style: textColorStyle("mutedText")
25553
+ },
25554
+ when("content.subheading"),
25555
+ bind("content.subheading")
25556
+ )
25557
+ ]
25558
+ );
25559
+ splitGridLayout = styledSection({
25560
+ children: styledContainer({
25561
+ baseClassName: "rb-relative rb-isolate",
25562
+ children: el(
25563
+ "div",
25564
+ {
25565
+ className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
25566
+ },
25567
+ [
25568
+ el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
25569
+ el("div", { className: "rb-testimonials-split-grid-cards" }, [
25570
+ buildGridCardsLayout("rb-testimonials-split-grid-card-list")
25571
+ ])
25572
+ ]
25573
+ )
25574
+ }),
25575
+ baseClass: "",
25576
+ spacing: "comfortable",
25577
+ imageClassName: backgroundImageClassName
25578
+ });
25025
25579
  additionalFields = parseFieldDefinitions([
25026
25580
  // Heading fields from fragment
25027
25581
  ...testimonialsHeadingFragment.fields,
@@ -25053,7 +25607,7 @@ var init_testimonials = __esm({
25053
25607
  ],
25054
25608
  ui: {
25055
25609
  intent: "display",
25056
- visibleWhen: { field: "variant", equals: "grid" }
25610
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
25057
25611
  }
25058
25612
  },
25059
25613
  // Carousel-specific fields (from fragment)
@@ -25087,7 +25641,8 @@ var init_testimonials = __esm({
25087
25641
  // Variant system - enables the variant switcher control in the editor
25088
25642
  variants: {
25089
25643
  carousel: carouselLayout,
25090
- grid: gridLayout2
25644
+ grid: gridLayout2,
25645
+ "split-grid": splitGridLayout
25091
25646
  },
25092
25647
  defaultVariant: "carousel",
25093
25648
  variantOptions: {
@@ -25100,6 +25655,11 @@ var init_testimonials = __esm({
25100
25655
  label: "Grid",
25101
25656
  description: "Responsive grid layout",
25102
25657
  icon: "Grid"
25658
+ },
25659
+ "split-grid": {
25660
+ label: "Split grid",
25661
+ description: "Heading on the left with testimonial cards on the right",
25662
+ icon: "PanelLeft"
25103
25663
  }
25104
25664
  },
25105
25665
  // Fields (variant field is auto-generated by augmentManifest)
@@ -25525,6 +26085,19 @@ var init_collection = __esm({
25525
26085
  }
25526
26086
  });
25527
26087
 
26088
+ // ../blocks/src/system/blocks/feature-card-icons.ts
26089
+ var FEATURE_CARD_ICON_TREATMENTS;
26090
+ var init_feature_card_icons = __esm({
26091
+ "../blocks/src/system/blocks/feature-card-icons.ts"() {
26092
+ "use strict";
26093
+ FEATURE_CARD_ICON_TREATMENTS = [
26094
+ "plain",
26095
+ "soft-badge",
26096
+ "utility-badge"
26097
+ ];
26098
+ }
26099
+ });
26100
+
25528
26101
  // ../blocks/src/system/blocks/feature-cards.ts
25529
26102
  function grid3(props2, children) {
25530
26103
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -25540,6 +26113,7 @@ var init_feature_cards = __esm({
25540
26113
  init_builder();
25541
26114
  init_fragments();
25542
26115
  init_colorStyles();
26116
+ init_feature_card_icons();
25543
26117
  sectionHeading = stack(
25544
26118
  { gap: "sm", className: "rb-feature-cards-heading rb-mx-auto rb-max-w-3xl rb-text-center" },
25545
26119
  [
@@ -25578,6 +26152,15 @@ var init_feature_cards = __esm({
25578
26152
  bind("card.media")
25579
26153
  ),
25580
26154
  stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
26155
+ el(
26156
+ "feature-card-icon",
26157
+ {
26158
+ treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
26159
+ generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
26160
+ },
26161
+ null,
26162
+ bind("card.icon")
26163
+ ),
25581
26164
  text(
25582
26165
  {
25583
26166
  as: "h3",
@@ -25699,6 +26282,16 @@ var init_feature_cards = __esm({
25699
26282
  defaultValue: "4/3",
25700
26283
  visibleWhen: { field: "media", notEquals: null }
25701
26284
  }),
26285
+ {
26286
+ id: "icon",
26287
+ type: "text",
26288
+ label: "Icon",
26289
+ required: false,
26290
+ ui: {
26291
+ widget: "iconPicker",
26292
+ iconPickerPreset: "feature"
26293
+ }
26294
+ },
25702
26295
  {
25703
26296
  id: "title",
25704
26297
  type: "text",
@@ -25734,6 +26327,19 @@ var init_feature_cards = __esm({
25734
26327
  ]
25735
26328
  }
25736
26329
  },
26330
+ {
26331
+ id: "_iconTreatment",
26332
+ type: "select",
26333
+ label: "Icon style",
26334
+ required: false,
26335
+ defaultValue: "soft-badge",
26336
+ multiple: false,
26337
+ options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
26338
+ value,
26339
+ label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
26340
+ })),
26341
+ ui: { intent: "display" }
26342
+ },
25737
26343
  cardStylesField({
25738
26344
  id: "_cardStyles",
25739
26345
  label: "Card styles"
@@ -33936,6 +34542,7 @@ var init_blocks = __esm({
33936
34542
  init_columns();
33937
34543
  init_collection();
33938
34544
  init_feature_cards();
34545
+ init_feature_card_icons();
33939
34546
  init_media_text();
33940
34547
  init_appointment_booking();
33941
34548
  init_event_registration();
@@ -34199,7 +34806,8 @@ var init_blocks = __esm({
34199
34806
  layoutProfiles: [
34200
34807
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
34201
34808
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
34202
- layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
34809
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
34810
+ layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
34203
34811
  ]
34204
34812
  })),
34205
34813
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -34230,6 +34838,12 @@ var init_blocks = __esm({
34230
34838
  family: "grid",
34231
34839
  weight: "standard",
34232
34840
  bias: "soft"
34841
+ }),
34842
+ layoutProfile({
34843
+ variantKey: "split-grid",
34844
+ family: "split",
34845
+ weight: "featured",
34846
+ bias: "soft"
34233
34847
  })
34234
34848
  ]
34235
34849
  })),
@@ -35071,6 +35685,96 @@ var init_transforms = __esm({
35071
35685
  }
35072
35686
  });
35073
35687
 
35688
+ // ../blocks/src/system/icons/cta.ts
35689
+ function formatLucideName(name) {
35690
+ return name.replace(/([a-z0-9])([A-Z])/g, "$1 $2");
35691
+ }
35692
+ var CTA_ICON_NAMES, CTA_ICON_OPTIONS;
35693
+ var init_cta = __esm({
35694
+ "../blocks/src/system/icons/cta.ts"() {
35695
+ "use strict";
35696
+ CTA_ICON_NAMES = [
35697
+ "ArrowRight",
35698
+ "ArrowLeft",
35699
+ "ChevronRight",
35700
+ "ChevronLeft",
35701
+ "ChevronUp",
35702
+ "ChevronDown",
35703
+ "ExternalLink",
35704
+ "Download",
35705
+ "Upload",
35706
+ "Mail",
35707
+ "Phone",
35708
+ "Play",
35709
+ "ShoppingCart",
35710
+ "Calendar",
35711
+ "MapPin",
35712
+ "Info",
35713
+ "Plus",
35714
+ "Minus",
35715
+ "Check",
35716
+ "X"
35717
+ ];
35718
+ CTA_ICON_OPTIONS = CTA_ICON_NAMES.map((id) => ({
35719
+ id,
35720
+ label: formatLucideName(id)
35721
+ }));
35722
+ }
35723
+ });
35724
+
35725
+ // ../blocks/src/system/icons/registry.ts
35726
+ function buildSearchText(parts) {
35727
+ return parts.map((part) => part.trim()).filter(Boolean).join(" ");
35728
+ }
35729
+ function semanticDefinitionToOption(definition, preset2) {
35730
+ return {
35731
+ id: definition.id,
35732
+ label: definition.label,
35733
+ searchText: buildSearchText([
35734
+ definition.label,
35735
+ definition.id,
35736
+ ...definition.tags,
35737
+ ...definition.domains,
35738
+ ...definition.tone
35739
+ ]),
35740
+ preset: preset2
35741
+ };
35742
+ }
35743
+ function semanticOptionsForPreset(preset2) {
35744
+ return SEMANTIC_ICON_DEFINITIONS.filter((definition) => definition.presets.includes(preset2)).map((definition) => semanticDefinitionToOption(definition, preset2));
35745
+ }
35746
+ var CTA_PICKER_OPTIONS, ICON_PICKER_OPTIONS_BY_PRESET;
35747
+ var init_registry6 = __esm({
35748
+ "../blocks/src/system/icons/registry.ts"() {
35749
+ "use strict";
35750
+ init_cta();
35751
+ init_semantic();
35752
+ CTA_PICKER_OPTIONS = CTA_ICON_OPTIONS.map((option) => ({
35753
+ id: option.id,
35754
+ label: option.label,
35755
+ searchText: buildSearchText([option.label, option.id]),
35756
+ preset: "cta"
35757
+ }));
35758
+ ICON_PICKER_OPTIONS_BY_PRESET = {
35759
+ cta: CTA_PICKER_OPTIONS,
35760
+ feature: semanticOptionsForPreset("feature")
35761
+ };
35762
+ }
35763
+ });
35764
+
35765
+ // ../blocks/src/system/icons/index.ts
35766
+ var init_icons = __esm({
35767
+ "../blocks/src/system/icons/index.ts"() {
35768
+ "use strict";
35769
+ init_cta();
35770
+ init_ids();
35771
+ init_presets();
35772
+ init_semantic();
35773
+ init_registry6();
35774
+ init_value();
35775
+ }
35776
+ });
35777
+
35074
35778
  // ../blocks/src/system/runtime/resolver.ts
35075
35779
  import React from "react";
35076
35780
  var init_resolver3 = __esm({
@@ -35121,7 +35825,7 @@ var init_layout2 = __esm({
35121
35825
  });
35122
35826
 
35123
35827
  // ../blocks/src/system/ai/hints/registry.ts
35124
- var init_registry6 = __esm({
35828
+ var init_registry7 = __esm({
35125
35829
  "../blocks/src/system/ai/hints/registry.ts"() {
35126
35830
  "use strict";
35127
35831
  }
@@ -35138,7 +35842,7 @@ var init_types16 = __esm({
35138
35842
  var init_hints = __esm({
35139
35843
  "../blocks/src/system/ai/hints/index.ts"() {
35140
35844
  "use strict";
35141
- init_registry6();
35845
+ init_registry7();
35142
35846
  init_types16();
35143
35847
  }
35144
35848
  });
@@ -35172,6 +35876,7 @@ var init_system = __esm({
35172
35876
  init_componentFactory();
35173
35877
  init_designCapabilities();
35174
35878
  init_fragments2();
35879
+ init_icons();
35175
35880
  init_layout2();
35176
35881
  init_defineBlock();
35177
35882
  init_ai();
@@ -35271,7 +35976,7 @@ var init_generateNavLinkCSS = __esm({
35271
35976
 
35272
35977
  // ../theme-core/src/navigation/presets.ts
35273
35978
  var NAV_LINK_PRESETS, NAV_LINK_PRESET_IDS;
35274
- var init_presets2 = __esm({
35979
+ var init_presets3 = __esm({
35275
35980
  "../theme-core/src/navigation/presets.ts"() {
35276
35981
  "use strict";
35277
35982
  NAV_LINK_PRESETS = {
@@ -35444,7 +36149,7 @@ var init_generateHeaderCss = __esm({
35444
36149
  "use strict";
35445
36150
  init_resolver();
35446
36151
  init_generateNavLinkCSS();
35447
- init_presets2();
36152
+ init_presets3();
35448
36153
  init_shared();
35449
36154
  init_breakpoints();
35450
36155
  init_navDropdownSizing();
@@ -35465,7 +36170,7 @@ var init_generateFooterCss = __esm({
35465
36170
  "use strict";
35466
36171
  init_resolver();
35467
36172
  init_generateNavLinkCSS();
35468
- init_presets2();
36173
+ init_presets3();
35469
36174
  }
35470
36175
  });
35471
36176
 
@@ -36070,7 +36775,7 @@ var init_course_registration2 = __esm({
36070
36775
 
36071
36776
  // ../theme-core/src/blocks/registry.ts
36072
36777
  var blockVarRegistry;
36073
- var init_registry7 = __esm({
36778
+ var init_registry8 = __esm({
36074
36779
  "../theme-core/src/blocks/registry.ts"() {
36075
36780
  "use strict";
36076
36781
  init_event_registration2();
@@ -36117,7 +36822,7 @@ var init_vars = __esm({
36117
36822
  var init_blocks2 = __esm({
36118
36823
  "../theme-core/src/blocks/index.ts"() {
36119
36824
  "use strict";
36120
- init_registry7();
36825
+ init_registry8();
36121
36826
  init_vars();
36122
36827
  }
36123
36828
  });
@@ -38408,7 +39113,7 @@ var init_core4 = __esm({
38408
39113
  });
38409
39114
 
38410
39115
  // ../theme-core/src/gradients/presets.ts
38411
- var init_presets3 = __esm({
39116
+ var init_presets4 = __esm({
38412
39117
  "../theme-core/src/gradients/presets.ts"() {
38413
39118
  "use strict";
38414
39119
  }
@@ -38426,7 +39131,7 @@ var init_gradients2 = __esm({
38426
39131
  "../theme-core/src/gradients/index.ts"() {
38427
39132
  "use strict";
38428
39133
  init_types9();
38429
- init_presets3();
39134
+ init_presets4();
38430
39135
  init_utils4();
38431
39136
  }
38432
39137
  });
@@ -40444,7 +41149,6 @@ var init_dashboardSiteNav = __esm({
40444
41149
  "site.footerBlocks",
40445
41150
  "site.navigation",
40446
41151
  "site.media",
40447
- "site.style",
40448
41152
  "site.performance"
40449
41153
  ];
40450
41154
  websiteSurfaceIdSet = new Set(
@@ -40492,6 +41196,18 @@ var init_dashboardBookingsNav = __esm({
40492
41196
  }
40493
41197
  });
40494
41198
 
41199
+ // ../api/src/navigation/identity.ts
41200
+ function unsafeAsNavigationMenuIdentifier(identifier) {
41201
+ return identifier;
41202
+ }
41203
+ var MAIN_NAVIGATION_MENU_IDENTIFIER;
41204
+ var init_identity = __esm({
41205
+ "../api/src/navigation/identity.ts"() {
41206
+ "use strict";
41207
+ MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
41208
+ }
41209
+ });
41210
+
40495
41211
  // ../api/src/navigation/dashboardDemoNav.ts
40496
41212
  var init_dashboardDemoNav = __esm({
40497
41213
  "../api/src/navigation/dashboardDemoNav.ts"() {
@@ -40529,6 +41245,7 @@ var init_navigation = __esm({
40529
41245
  init_dashboardSettingsNav();
40530
41246
  init_dashboardTeamMemberNav();
40531
41247
  init_dashboardBookingsNav();
41248
+ init_identity();
40532
41249
  init_dashboardDemoNav();
40533
41250
  init_linkValue();
40534
41251
  init_matcher();