@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
@@ -2156,6 +2156,46 @@ var ENDPOINT_DEFINITIONS = {
2156
2156
  auth: "user",
2157
2157
  responseKind: "json"
2158
2158
  },
2159
+ getSiteIconStyleGuide: {
2160
+ path: "/sites/{siteId}/settings/icon-style-guide",
2161
+ method: "GET",
2162
+ revalidate: 120,
2163
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2164
+ auth: "user",
2165
+ responseKind: "json",
2166
+ errors: []
2167
+ },
2168
+ updateSiteIconStyleGuide: {
2169
+ path: "/sites/{siteId}/settings/icon-style-guide",
2170
+ method: "POST",
2171
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2172
+ auth: "user",
2173
+ responseKind: "json",
2174
+ errors: []
2175
+ },
2176
+ regenerateSiteIconStyleGuide: {
2177
+ path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
2178
+ method: "POST",
2179
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2180
+ auth: "user",
2181
+ responseKind: "json",
2182
+ errors: []
2183
+ },
2184
+ generateGeneratedIconSet: {
2185
+ path: "/sites/{siteId}/ai/generated-icons/generate",
2186
+ method: "POST",
2187
+ auth: "user",
2188
+ responseKind: "json",
2189
+ errors: []
2190
+ },
2191
+ applyGeneratedIconSet: {
2192
+ path: "/sites/{siteId}/ai/generated-icons/apply",
2193
+ method: "POST",
2194
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2195
+ auth: "user",
2196
+ responseKind: "json",
2197
+ errors: []
2198
+ },
2159
2199
  getSiteAiProfile: {
2160
2200
  path: "/sites/{siteId}/settings/ai-site-profile",
2161
2201
  method: "GET",
@@ -3931,6 +3971,14 @@ var ENDPOINT_DEFINITIONS = {
3931
3971
  auth: "public",
3932
3972
  responseKind: "json"
3933
3973
  },
3974
+ getGeneratedIconRenderAssets: {
3975
+ path: "/public/sites/{siteId}/generated-icon-assets",
3976
+ method: "POST",
3977
+ tags: [TAG_TEMPLATES.siteRoutableContent],
3978
+ auth: "public",
3979
+ responseKind: "json",
3980
+ errors: []
3981
+ },
3934
3982
  // Resolve entry subroute by kind and URL segment
3935
3983
  resolveEntrySubroute: {
3936
3984
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5635,6 +5683,13 @@ var ENDPOINT_DEFINITIONS = {
5635
5683
  auth: "service",
5636
5684
  responseKind: "json"
5637
5685
  },
5686
+ sdkDeleteNavigationMenu: {
5687
+ path: "/sdk/{siteId}/navigation/{menuId}",
5688
+ method: "DELETE",
5689
+ auth: "service",
5690
+ responseKind: "json",
5691
+ errors: ["resource:not_found", "server:internal_error"]
5692
+ },
5638
5693
  sdkUpsertTheme: {
5639
5694
  path: "/sdk/{siteId}/theme",
5640
5695
  method: "POST",
@@ -6297,6 +6352,20 @@ var managedDomainAddOnPricingSnapshotSchema = z.object({
6297
6352
  monthlyCurrency: z.literal("gbp")
6298
6353
  });
6299
6354
 
6355
+ // ../api/src/media.ts
6356
+ var AMBIENT_BACKGROUND_ROLES = [
6357
+ "light-texture",
6358
+ "proof-band-dark",
6359
+ "cta-wash",
6360
+ "footer-detail",
6361
+ "style-atmosphere-1",
6362
+ "style-atmosphere-2"
6363
+ ];
6364
+ var SITE_BACKGROUND_ASSET_USES = [
6365
+ "selected-background",
6366
+ ...AMBIENT_BACKGROUND_ROLES
6367
+ ];
6368
+
6300
6369
  // ../api/src/navigation/contracts.ts
6301
6370
  import { z as z2 } from "zod";
6302
6371
  var portalLinkPayloadSchema = z2.object({
@@ -6630,6 +6699,9 @@ function resolveRepeaterGridColumnFieldId(options) {
6630
6699
  return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID;
6631
6700
  }
6632
6701
 
6702
+ // ../blocks/src/system/icons/presets.ts
6703
+ var ICON_PICKER_PRESETS = ["cta", "feature"];
6704
+
6633
6705
  // ../blocks/src/system/manifest/schema.ts
6634
6706
  var visibilityLevels = ["admin", "designer", "author"];
6635
6707
  var MEDIA_KINDS = [
@@ -6788,7 +6860,7 @@ var uiSchema = z4.object({
6788
6860
  layoutGridColumnField: z4.string().optional(),
6789
6861
  layoutGridMaxRows: z4.number().int().positive().optional(),
6790
6862
  // Icon picker configuration (used when ui.widget === 'iconPicker')
6791
- iconPickerPreset: z4.enum(["cta"]).optional(),
6863
+ iconPickerPreset: z4.enum(ICON_PICKER_PRESETS).optional(),
6792
6864
  // Entry picker configuration
6793
6865
  contentTypeField: z4.string().optional(),
6794
6866
  fixedContentType: z4.string().optional(),
@@ -8454,7 +8526,7 @@ var themeColorBaseTokenNames = [
8454
8526
  "accentForeground"
8455
8527
  ];
8456
8528
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
8457
- var SHADE_STEPS = [
8529
+ var themeColorShadeSteps = [
8458
8530
  "50",
8459
8531
  "100",
8460
8532
  "200",
@@ -8467,7 +8539,7 @@ var SHADE_STEPS = [
8467
8539
  "900",
8468
8540
  "950"
8469
8541
  ];
8470
- var shadeStepSet = new Set(SHADE_STEPS);
8542
+ var shadeStepSet = new Set(themeColorShadeSteps);
8471
8543
  function isKnownBaseToken(value) {
8472
8544
  return themeColorBaseTokenSet.has(value);
8473
8545
  }
@@ -12168,6 +12240,7 @@ var curatedSiteStyleIdValues = [
12168
12240
  "site-style:personal-retreat-journal",
12169
12241
  "site-style:tactile-workshop",
12170
12242
  "site-style:modern-wellness",
12243
+ "site-style:clarity-zen-blue",
12171
12244
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
12172
12245
  "site-style:bold-launch",
12173
12246
  "site-style:south-west-twerk-school"
@@ -12753,6 +12826,114 @@ var curatedSiteStyles = [
12753
12826
  paletteChoice("warm-neutral-clay")
12754
12827
  ]
12755
12828
  }),
12829
+ defineCuratedSiteStyle({
12830
+ id: "site-style:clarity-zen-blue",
12831
+ name: "Clarity Zen",
12832
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
12833
+ 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.",
12834
+ siteCreatorSelection: {
12835
+ kind: "site_creator_keyword_heuristic",
12836
+ priority: 25
12837
+ },
12838
+ selectionKeywordRules: [
12839
+ { kind: "substring", value: "psychotherap" },
12840
+ { kind: "phrase", value: "mental health" },
12841
+ { kind: "phrase", value: "talk therapy" },
12842
+ { kind: "phrase", value: "therapy and wellbeing" }
12843
+ ],
12844
+ tokenRecipes: {
12845
+ palette: "brand-led",
12846
+ contrast: "standard",
12847
+ radius: "rounded",
12848
+ shadow: "subtle",
12849
+ typography: "serif-editorial",
12850
+ spacing: "airy",
12851
+ motion: "subtle"
12852
+ },
12853
+ compositionBudget: balancedBudget,
12854
+ themeOverrides: {
12855
+ typography: {
12856
+ body: {
12857
+ family: "Inter, system-ui, sans-serif",
12858
+ size: "md",
12859
+ weight: "regular",
12860
+ lineHeight: "relaxed",
12861
+ letterSpacing: "normal"
12862
+ },
12863
+ headings: {
12864
+ default: {
12865
+ family: '"Cormorant Garamond", Georgia, serif',
12866
+ weight: "regular",
12867
+ lineHeight: "normal",
12868
+ letterSpacing: "normal",
12869
+ colorToken: "text",
12870
+ italic: null,
12871
+ case: null
12872
+ },
12873
+ h1: {
12874
+ size: "xl",
12875
+ weight: "regular",
12876
+ lineHeight: "normal",
12877
+ letterSpacing: "normal",
12878
+ italic: null
12879
+ },
12880
+ h2: {
12881
+ size: "lg",
12882
+ weight: "regular",
12883
+ lineHeight: "normal",
12884
+ letterSpacing: "normal",
12885
+ italic: null
12886
+ },
12887
+ h3: {
12888
+ size: "md",
12889
+ weight: "regular",
12890
+ lineHeight: "normal",
12891
+ letterSpacing: "normal",
12892
+ italic: null
12893
+ }
12894
+ },
12895
+ scale: "majorThird"
12896
+ },
12897
+ bodyText: {
12898
+ intro: {
12899
+ paragraphSize: "default",
12900
+ headingSize: "editorial"
12901
+ }
12902
+ }
12903
+ },
12904
+ defaultBlockVariants: {
12905
+ "block.faq": "split-heading-columns"
12906
+ },
12907
+ recommendedAppearancePresetIds: [
12908
+ "hero-split-editorial",
12909
+ "intro-organic-statement",
12910
+ "feature-cards-raised-rule",
12911
+ "media-text-quiet-story",
12912
+ "testimonials-brand-background-quotes",
12913
+ "faq-contained-help",
12914
+ "contact-form-panel"
12915
+ ],
12916
+ recommendedHeaderLookIds: [
12917
+ "centered-calm",
12918
+ "serif-line",
12919
+ "minimal-transparent"
12920
+ ],
12921
+ recommendedFooterLookIds: [
12922
+ "footer-muted-grounding",
12923
+ "site-footer-brand-two-band"
12924
+ ],
12925
+ buttonPersonalityChoices: [
12926
+ buttonChoice("soft-pill"),
12927
+ buttonChoice("pebble"),
12928
+ buttonChoice("editorial-link")
12929
+ ],
12930
+ paletteVariantChoices: [
12931
+ paletteChoice("brand-led-cool"),
12932
+ paletteChoice("soft-natural-watercolor"),
12933
+ paletteChoice("soft-natural-stone"),
12934
+ paletteChoice("warm-neutral-cream")
12935
+ ]
12936
+ }),
12756
12937
  defineCuratedSiteStyle({
12757
12938
  id: "site-style:personal-retreat-journal",
12758
12939
  name: "Personal Retreat Journal",
@@ -16827,36 +17008,46 @@ function buildCarouselLayout() {
16827
17008
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
16828
17009
  );
16829
17010
  }
17011
+ function buildResponsiveGridCards() {
17012
+ return [
17013
+ // 2 columns
17014
+ grid(
17015
+ { gap: "lg", cols: { base: 1, sm: 2 } },
17016
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17017
+ when("gridColumns", { equals: "2" })
17018
+ ),
17019
+ // 3 columns (default when unset)
17020
+ grid(
17021
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17022
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17023
+ when("gridColumns", { equals: "3" })
17024
+ ),
17025
+ // 4 columns
17026
+ grid(
17027
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
17028
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17029
+ when("gridColumns", { equals: "4" })
17030
+ ),
17031
+ // Fallback to 3 columns when gridColumns is not set
17032
+ grid(
17033
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
17034
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
17035
+ when("gridColumns", { not: true })
17036
+ )
17037
+ ];
17038
+ }
16830
17039
  function buildGridLayout() {
16831
17040
  return el(
16832
17041
  "div",
16833
17042
  { className: "rb-mt-12 rb-testimonials-carousel" },
16834
- [
16835
- // 2 columns
16836
- grid(
16837
- { gap: "lg", cols: { base: 1, sm: 2 } },
16838
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16839
- when("gridColumns", { equals: "2" })
16840
- ),
16841
- // 3 columns (default when unset)
16842
- grid(
16843
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16844
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16845
- when("gridColumns", { equals: "3" })
16846
- ),
16847
- // 4 columns
16848
- grid(
16849
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
16850
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16851
- when("gridColumns", { equals: "4" })
16852
- ),
16853
- // Fallback to 3 columns when gridColumns is not set
16854
- grid(
16855
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
16856
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
16857
- when("gridColumns", { not: true })
16858
- )
16859
- ]
17043
+ buildResponsiveGridCards()
17044
+ );
17045
+ }
17046
+ function buildGridCardsLayout(className) {
17047
+ return el(
17048
+ "div",
17049
+ { className },
17050
+ buildResponsiveGridCards()
16860
17051
  );
16861
17052
  }
16862
17053
  var testimonialsCarouselFragment = defineFragment({
@@ -19825,6 +20016,24 @@ var questionColumnsLayout = styledSection({
19825
20016
  }),
19826
20017
  baseClass: ""
19827
20018
  });
20019
+ var splitHeadingColumnsLayout = styledSection({
20020
+ children: styledContainer({
20021
+ baseClassName: "rb-relative rb-isolate",
20022
+ children: el(
20023
+ "div",
20024
+ {
20025
+ className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
20026
+ },
20027
+ [
20028
+ el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
20029
+ el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
20030
+ questionColumnsAccordionLayout
20031
+ ])
20032
+ ]
20033
+ )
20034
+ }),
20035
+ baseClass: ""
20036
+ });
19828
20037
  var faqManifest = createBlockManifest({
19829
20038
  id: "block.faq",
19830
20039
  title: "FAQ",
@@ -19845,7 +20054,8 @@ var faqManifest = createBlockManifest({
19845
20054
  variants: {
19846
20055
  default: defaultLayout,
19847
20056
  "two-column": twoColumnLayout,
19848
- "question-columns": questionColumnsLayout
20057
+ "question-columns": questionColumnsLayout,
20058
+ "split-heading-columns": splitHeadingColumnsLayout
19849
20059
  },
19850
20060
  defaultVariant: "default",
19851
20061
  variantOptions: {
@@ -19860,6 +20070,10 @@ var faqManifest = createBlockManifest({
19860
20070
  "question-columns": {
19861
20071
  label: "Question columns",
19862
20072
  description: "A full-width heading above FAQ items split into two columns."
20073
+ },
20074
+ "split-heading-columns": {
20075
+ label: "Split heading columns",
20076
+ description: "A left heading column with FAQ items split into two columns on the right."
19863
20077
  }
19864
20078
  },
19865
20079
  description: "Accordion of frequently asked questions and answers.",
@@ -21944,6 +22158,7 @@ var siteFooterBlockDefinition = {
21944
22158
  };
21945
22159
 
21946
22160
  // ../blocks/src/system/blocks/testimonials.tsx
22161
+ var backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
21947
22162
  var wrapVariant = (variantLayout) => styledSection({
21948
22163
  children: styledContainer({
21949
22164
  children: stack(
@@ -21957,10 +22172,53 @@ var wrapVariant = (variantLayout) => styledSection({
21957
22172
  // styledContainer (rb-container) already provides horizontal padding
21958
22173
  baseClass: "",
21959
22174
  spacing: "comfortable",
21960
- imageClassName: "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50"
22175
+ imageClassName: backgroundImageClassName
21961
22176
  });
21962
22177
  var carouselLayout = wrapVariant(buildCarouselLayout());
21963
22178
  var gridLayout2 = wrapVariant(buildGridLayout());
22179
+ var splitHeading = stack(
22180
+ { gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
22181
+ [
22182
+ text(
22183
+ { as: "h2" },
22184
+ when("content.heading"),
22185
+ bind("content.heading")
22186
+ ),
22187
+ headingDecoration({
22188
+ family: "short-center-rule",
22189
+ placement: "after-heading"
22190
+ }),
22191
+ text(
22192
+ {
22193
+ as: "p",
22194
+ className: "rb-prose",
22195
+ style: textColorStyle("mutedText")
22196
+ },
22197
+ when("content.subheading"),
22198
+ bind("content.subheading")
22199
+ )
22200
+ ]
22201
+ );
22202
+ var splitGridLayout = styledSection({
22203
+ children: styledContainer({
22204
+ baseClassName: "rb-relative rb-isolate",
22205
+ children: el(
22206
+ "div",
22207
+ {
22208
+ className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
22209
+ },
22210
+ [
22211
+ el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
22212
+ el("div", { className: "rb-testimonials-split-grid-cards" }, [
22213
+ buildGridCardsLayout("rb-testimonials-split-grid-card-list")
22214
+ ])
22215
+ ]
22216
+ )
22217
+ }),
22218
+ baseClass: "",
22219
+ spacing: "comfortable",
22220
+ imageClassName: backgroundImageClassName
22221
+ });
21964
22222
  var additionalFields = parseFieldDefinitions([
21965
22223
  // Heading fields from fragment
21966
22224
  ...testimonialsHeadingFragment.fields,
@@ -21992,7 +22250,7 @@ var additionalFields = parseFieldDefinitions([
21992
22250
  ],
21993
22251
  ui: {
21994
22252
  intent: "display",
21995
- visibleWhen: { field: "variant", equals: "grid" }
22253
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
21996
22254
  }
21997
22255
  },
21998
22256
  // Carousel-specific fields (from fragment)
@@ -22026,7 +22284,8 @@ var testimonialsManifest = createBlockManifest({
22026
22284
  // Variant system - enables the variant switcher control in the editor
22027
22285
  variants: {
22028
22286
  carousel: carouselLayout,
22029
- grid: gridLayout2
22287
+ grid: gridLayout2,
22288
+ "split-grid": splitGridLayout
22030
22289
  },
22031
22290
  defaultVariant: "carousel",
22032
22291
  variantOptions: {
@@ -22039,6 +22298,11 @@ var testimonialsManifest = createBlockManifest({
22039
22298
  label: "Grid",
22040
22299
  description: "Responsive grid layout",
22041
22300
  icon: "Grid"
22301
+ },
22302
+ "split-grid": {
22303
+ label: "Split grid",
22304
+ description: "Heading on the left with testimonial cards on the right",
22305
+ icon: "PanelLeft"
22042
22306
  }
22043
22307
  },
22044
22308
  // Fields (variant field is auto-generated by augmentManifest)
@@ -22431,6 +22695,13 @@ var collectionBlockDefinition = {
22431
22695
  manifest: collectionManifest
22432
22696
  };
22433
22697
 
22698
+ // ../blocks/src/system/blocks/feature-card-icons.ts
22699
+ var FEATURE_CARD_ICON_TREATMENTS = [
22700
+ "plain",
22701
+ "soft-badge",
22702
+ "utility-badge"
22703
+ ];
22704
+
22434
22705
  // ../blocks/src/system/blocks/feature-cards.ts
22435
22706
  function grid3(props2, children) {
22436
22707
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -22473,6 +22744,15 @@ var featureCard = styledCard(
22473
22744
  bind("card.media")
22474
22745
  ),
22475
22746
  stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
22747
+ el(
22748
+ "feature-card-icon",
22749
+ {
22750
+ treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
22751
+ generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
22752
+ },
22753
+ null,
22754
+ bind("card.icon")
22755
+ ),
22476
22756
  text(
22477
22757
  {
22478
22758
  as: "h3",
@@ -22594,6 +22874,16 @@ var featureCardsConfig = {
22594
22874
  defaultValue: "4/3",
22595
22875
  visibleWhen: { field: "media", notEquals: null }
22596
22876
  }),
22877
+ {
22878
+ id: "icon",
22879
+ type: "text",
22880
+ label: "Icon",
22881
+ required: false,
22882
+ ui: {
22883
+ widget: "iconPicker",
22884
+ iconPickerPreset: "feature"
22885
+ }
22886
+ },
22597
22887
  {
22598
22888
  id: "title",
22599
22889
  type: "text",
@@ -22629,6 +22919,19 @@ var featureCardsConfig = {
22629
22919
  ]
22630
22920
  }
22631
22921
  },
22922
+ {
22923
+ id: "_iconTreatment",
22924
+ type: "select",
22925
+ label: "Icon style",
22926
+ required: false,
22927
+ defaultValue: "soft-badge",
22928
+ multiple: false,
22929
+ options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
22930
+ value,
22931
+ label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
22932
+ })),
22933
+ ui: { intent: "display" }
22934
+ },
22632
22935
  cardStylesField({
22633
22936
  id: "_cardStyles",
22634
22937
  label: "Card styles"
@@ -30446,7 +30749,8 @@ var systemBlockDefinitionsRaw = [
30446
30749
  layoutProfiles: [
30447
30750
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
30448
30751
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
30449
- layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
30752
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
30753
+ layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
30450
30754
  ]
30451
30755
  })),
30452
30756
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -30477,6 +30781,12 @@ var systemBlockDefinitionsRaw = [
30477
30781
  family: "grid",
30478
30782
  weight: "standard",
30479
30783
  bias: "soft"
30784
+ }),
30785
+ layoutProfile({
30786
+ variantKey: "split-grid",
30787
+ family: "split",
30788
+ weight: "featured",
30789
+ bias: "soft"
30480
30790
  })
30481
30791
  ]
30482
30792
  })),
@@ -34520,7 +34830,6 @@ var websiteSurfaceIds = [
34520
34830
  "site.footerBlocks",
34521
34831
  "site.navigation",
34522
34832
  "site.media",
34523
- "site.style",
34524
34833
  "site.performance"
34525
34834
  ];
34526
34835
  var websiteSurfaceIdSet = new Set(
@@ -34541,6 +34850,12 @@ var hiddenDemoSettingsNavSurfaceIds = [
34541
34850
  ];
34542
34851
  var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
34543
34852
 
34853
+ // ../api/src/navigation/identity.ts
34854
+ function unsafeAsNavigationMenuIdentifier(identifier) {
34855
+ return identifier;
34856
+ }
34857
+ var MAIN_NAVIGATION_MENU_IDENTIFIER = unsafeAsNavigationMenuIdentifier("main");
34858
+
34544
34859
  // ../api/src/aiPlayground.ts
34545
34860
  import { z as z66 } from "zod";
34546
34861
  var Rfc6902PatchOp = z66.discriminatedUnion("op", [
@@ -1,7 +1,7 @@
1
1
  import { LeafletStaticMap } from './chunk-XSV6KW4D.mjs';
2
2
  import './chunk-I2MMZO53.mjs';
3
3
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
4
- import { defineIslandPropsDecoder } from './chunk-JGXPTEI2.mjs';
4
+ import { defineIslandPropsDecoder } from './chunk-R5ESWNKX.mjs';
5
5
  import { normalizeLocationAddressText, toLocationCoordinates, textColorStyle, mergeStyles, borderColorStyle, backgroundColorStyle } from './chunk-AUJ5DBZJ.mjs';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
7
 
@@ -3,7 +3,7 @@ import { getFieldValidationControlProps, FieldValidationMessage } from './chunk-
3
3
  import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-YLMKMCSJ.mjs';
4
4
  import { BlockApiProvider, useBlockApi, FeedbackMessage } from './chunk-UDNSI5PY.mjs';
5
5
  import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
6
- import { defineIslandPropsDecoder, themeButtonClassName } from './chunk-JGXPTEI2.mjs';
6
+ import { defineIslandPropsDecoder, themeButtonClassName } from './chunk-R5ESWNKX.mjs';
7
7
  import { clsx_default } from './chunk-AUJ5DBZJ.mjs';
8
8
  import { useState } from 'react';
9
9
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,14 +1,14 @@
1
- import { mountShopBlockIsland, ProductDetailClient } from './chunk-FUXW6VW2.mjs';
2
- import './chunk-CWGTG37I.mjs';
3
- import './chunk-75OUS5MT.mjs';
1
+ import { mountShopBlockIsland, ProductDetailClient } from './chunk-YLDYVRZL.mjs';
2
+ import './chunk-TYONZMST.mjs';
3
+ import './chunk-UDS3NTWA.mjs';
4
4
  import './chunk-I2MMZO53.mjs';
5
5
  import './chunk-ZFHRN6W2.mjs';
6
- import './chunk-UVQEJJTN.mjs';
6
+ import './chunk-CCNTDRCF.mjs';
7
7
  import './chunk-3DCJ45Z2.mjs';
8
8
  import './chunk-3PEDD5KJ.mjs';
9
9
  import './chunk-UDNSI5PY.mjs';
10
10
  import './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder } from './chunk-JGXPTEI2.mjs';
11
+ import { defineIslandPropsDecoder } from './chunk-R5ESWNKX.mjs';
12
12
  import './chunk-AUJ5DBZJ.mjs';
13
13
 
14
14
  // src/rendering/islands/enhancers/productDetail.tsx
@@ -1,14 +1,14 @@
1
- import { mountShopBlockIsland, ProductListClient } from './chunk-FUXW6VW2.mjs';
2
- import './chunk-CWGTG37I.mjs';
3
- import './chunk-75OUS5MT.mjs';
1
+ import { mountShopBlockIsland, ProductListClient } from './chunk-YLDYVRZL.mjs';
2
+ import './chunk-TYONZMST.mjs';
3
+ import './chunk-UDS3NTWA.mjs';
4
4
  import './chunk-I2MMZO53.mjs';
5
5
  import './chunk-ZFHRN6W2.mjs';
6
- import './chunk-UVQEJJTN.mjs';
6
+ import './chunk-CCNTDRCF.mjs';
7
7
  import './chunk-3DCJ45Z2.mjs';
8
8
  import './chunk-3PEDD5KJ.mjs';
9
9
  import './chunk-UDNSI5PY.mjs';
10
10
  import './chunk-N7PBWBWQ.mjs';
11
- import { defineIslandPropsDecoder } from './chunk-JGXPTEI2.mjs';
11
+ import { defineIslandPropsDecoder } from './chunk-R5ESWNKX.mjs';
12
12
  import './chunk-AUJ5DBZJ.mjs';
13
13
 
14
14
  // src/rendering/islands/enhancers/productList.tsx