@riverbankcms/sdk 0.78.0 → 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 (222) hide show
  1. package/README.md +125 -43
  2. package/dist/{PreviewEditorSidebar-RIKFQ72L.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +750 -65
  3. package/dist/{PreviewEditorUI-XO7TUWKK.mjs → PreviewEditorUI-27KJVEET.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +72 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  7. package/dist/_dts/api/src/endpoints.d.ts +64 -0
  8. package/dist/_dts/api/src/index.d.ts +8 -6
  9. package/dist/_dts/api/src/media.d.ts +8 -1
  10. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  11. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
  12. package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
  13. package/dist/_dts/api/src/navigation.d.ts +2 -0
  14. package/dist/_dts/api/src/public/types.d.ts +1 -1
  15. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
  16. package/dist/_dts/api/src/request.d.ts +3 -11
  17. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  18. package/dist/_dts/api/src/sdkContracts.d.ts +8 -1
  19. package/dist/_dts/api/src/siteIcons.d.ts +128 -0
  20. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +26 -0
  21. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +8 -0
  22. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +21 -20
  23. package/dist/_dts/api/src/types.d.ts +12 -27
  24. package/dist/_dts/api/src/webhooks.d.ts +239 -0
  25. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  26. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  27. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  28. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  29. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  30. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  31. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  32. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  33. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  34. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  35. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  36. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  37. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  38. package/dist/_dts/blocks/src/index.d.ts +4 -0
  39. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
  40. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
  41. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
  42. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
  43. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
  44. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
  45. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
  46. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
  47. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
  48. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
  50. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +69 -22
  51. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
  52. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
  53. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
  54. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  55. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  56. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
  57. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
  58. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
  59. package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
  60. package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
  61. package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
  62. package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
  63. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
  64. package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
  65. package/dist/_dts/blocks/src/system/index.d.ts +1 -0
  66. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
  67. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +187 -0
  68. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
  71. package/dist/_dts/content-editor/src/index.d.ts +1 -1
  72. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  73. package/dist/_dts/content-model/src/content-types/schema.d.ts +14 -0
  74. package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
  75. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  76. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  77. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  78. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  79. package/dist/_dts/core/src/branded.d.ts +114 -85
  80. package/dist/_dts/core/src/csv-types.d.ts +2 -2
  81. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  82. package/dist/_dts/core/src/participants.d.ts +2 -2
  83. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +202 -0
  84. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
  85. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
  86. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
  87. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
  88. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
  89. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
  90. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
  91. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  92. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  93. package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
  94. package/dist/_dts/media-editor/src/MediaEditor.d.ts +5 -2
  95. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  96. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  97. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  98. package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
  99. package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
  100. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
  101. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
  102. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
  103. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
  104. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  105. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  106. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  107. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  108. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  109. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  110. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  111. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  112. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
  113. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  114. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  115. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  116. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
  117. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
  118. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  119. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  120. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  121. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
  122. package/dist/_dts/sdk/src/client/management/types.d.ts +8 -0
  123. package/dist/_dts/sdk/src/client/types.d.ts +2 -2
  124. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  125. package/dist/_dts/sdk/src/config/field-definitions.d.ts +5 -1
  126. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  127. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
  128. package/dist/_dts/sdk/src/next/index.d.ts +1 -1
  129. package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
  130. package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
  131. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  132. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  133. package/dist/_dts/sdk/src/version.d.ts +1 -1
  134. package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
  135. package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
  136. package/dist/_dts/site-commands/src/commands.d.ts +6 -0
  137. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  138. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
  139. package/dist/_dts/theme-core/src/schema.d.ts +5 -5
  140. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
  141. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
  142. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  143. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
  144. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
  145. package/dist/_dts/ui/src/combobox.d.ts +1 -0
  146. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  147. package/dist/{chunk-F7RTCZYN.mjs → chunk-4HCW7FHJ.mjs} +504 -63
  148. package/dist/{chunk-SXOLGNMX.mjs → chunk-A3HHFKVT.mjs} +1 -1
  149. package/dist/{chunk-TXDES5P2.mjs → chunk-GP555I66.mjs} +180 -10
  150. package/dist/{chunk-SVMMM2NA.mjs → chunk-K2IIF34C.mjs} +79 -5
  151. package/dist/{chunk-NIDXI46P.mjs → chunk-LCY32PXF.mjs} +1 -1
  152. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  153. package/dist/{chunk-OECWLDHN.mjs → chunk-V47ZU33I.mjs} +2762 -732
  154. package/dist/cli/index.mjs +1799 -345
  155. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  156. package/dist/cli/init-docs/content/content-management.md +2 -2
  157. package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
  158. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
  159. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  160. package/dist/client/{accordion-EVDEOUPR.mjs → accordion-QLA7KBYO.mjs} +2 -2
  161. package/dist/client/analytics.mjs +1 -1
  162. package/dist/client/{bookingForm-DIHBLC64.mjs → bookingForm-PYZIPA5G.mjs} +55 -48
  163. package/dist/client/bookings.mjs +172 -57
  164. package/dist/client/{carousel-FEBQHIWI.mjs → carousel-5EIULWBI.mjs} +3 -3
  165. package/dist/client/{cart-7CKSXAE4.mjs → cart-DOP3FNI4.mjs} +7 -7
  166. package/dist/client/{checkout-WKYCANLV.mjs → checkout-BVMF6FBV.mjs} +7 -7
  167. package/dist/client/{chunk-GUK2FPXQ.mjs → chunk-44K2U3QI.mjs} +37 -15
  168. package/dist/client/{chunk-IVNCUVAV.mjs → chunk-AUJ5DBZJ.mjs} +18 -18
  169. package/dist/client/{chunk-VPPMNXCF.mjs → chunk-CCNTDRCF.mjs} +2 -2
  170. package/dist/client/{chunk-36WJCERQ.mjs → chunk-CE7IBGVW.mjs} +3 -1
  171. package/dist/client/{chunk-2SAVKN2M.mjs → chunk-GG4M2NP6.mjs} +2 -2
  172. package/dist/client/{chunk-65F47D7Y.mjs → chunk-R5ESWNKX.mjs} +49 -39
  173. package/dist/client/{chunk-RZDWX7QW.mjs → chunk-TYONZMST.mjs} +1 -1
  174. package/dist/client/{chunk-OFMSCGNY.mjs → chunk-UDS3NTWA.mjs} +2 -2
  175. package/dist/client/{chunk-YDSEG6GZ.mjs → chunk-V6M5FCR5.mjs} +2 -2
  176. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  177. package/dist/client/{chunk-RV6FX7UH.mjs → chunk-YLDYVRZL.mjs} +9 -9
  178. package/dist/client/{chunk-PD6NBCEY.mjs → chunk-ZFHRN6W2.mjs} +1 -1
  179. package/dist/client/client.mjs +21501 -19812
  180. package/dist/client/{courseRegistration-5QF2PHKM.mjs → courseRegistration-E6EAA6NL.mjs} +10 -10
  181. package/dist/client/{eventCalendar-4ZOSETDU.mjs → eventCalendar-HBG3HAK6.mjs} +9 -9
  182. package/dist/client/{eventCombined-WQGU7JUX.mjs → eventCombined-6K5ZZWAK.mjs} +9 -9
  183. package/dist/client/{eventDetails-AYWVUJ5Y.mjs → eventDetails-Q75ICXLT.mjs} +9 -9
  184. package/dist/client/{eventListing-NT7C6UT5.mjs → eventListing-27P5F7DZ.mjs} +9 -9
  185. package/dist/client/{eventRegistration-OH24F4ZJ.mjs → eventRegistration-IQ7AMASR.mjs} +9 -9
  186. package/dist/client/{form-7L42SRBB.mjs → form-JRTD65FN.mjs} +6 -3
  187. package/dist/client/{headerSection-OZRZNZ52.mjs → headerSection-7FPSSZHS.mjs} +3 -3
  188. package/dist/client/hooks.mjs +428 -83
  189. package/dist/client/{locationMap-ZBXRPQ7C.mjs → locationMap-7NGFNYBH.mjs} +3 -3
  190. package/dist/client/{newsletterForm-SNAGFF2I.mjs → newsletterForm-F3BADCI2.mjs} +2 -2
  191. package/dist/client/{productDetail-I46BOFGV.mjs → productDetail-V3HP7ITJ.mjs} +7 -7
  192. package/dist/client/{productList-BOYHTYI6.mjs → productList-L3EGJUF2.mjs} +7 -7
  193. package/dist/client/rendering/client.mjs +2886 -1513
  194. package/dist/client/rendering/islands.mjs +19 -19
  195. package/dist/client/rendering.mjs +2244 -564
  196. package/dist/client/{shop-XTXPZTKR.mjs → shop-DQUB5E2C.mjs} +7 -7
  197. package/dist/preview-next/before-render.mjs +65 -1
  198. package/dist/preview-next/client/runtime.mjs +6 -6
  199. package/dist/preview-next/middleware.mjs +65 -1
  200. package/dist/preview-next/tailwind-sources.css +1 -0
  201. package/dist/sdk-runtime-AF6KXJU4.mjs +8 -0
  202. package/dist/server/components.mjs +2270 -835
  203. package/dist/server/config-template-validation.mjs +221 -15
  204. package/dist/server/config-validation.mjs +426 -77
  205. package/dist/server/config.mjs +426 -77
  206. package/dist/server/data.mjs +427 -82
  207. package/dist/server/index.mjs +94 -10
  208. package/dist/server/next/revalidate.mjs +229 -34
  209. package/dist/server/next.mjs +2439 -888
  210. package/dist/server/page-converter.mjs +335 -74
  211. package/dist/server/prebuild.mjs +1 -1
  212. package/dist/server/rendering/server.mjs +2281 -846
  213. package/dist/server/rendering.mjs +2298 -860
  214. package/dist/server/routing.mjs +860 -113
  215. package/dist/server/server.mjs +452 -92
  216. package/dist/server/theme-bridge.mjs +164 -2
  217. package/dist/server/theme.mjs +2 -2
  218. package/dist/server/webhooks.mjs +129 -25
  219. package/dist/styles/index.css +55 -0
  220. package/package.json +2 -1
  221. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +0 -8
  222. package/dist/sdk-runtime-ZJLKC6DR.mjs +0 -8
@@ -1775,7 +1775,16 @@ var init_endpoints = __esm({
1775
1775
  revalidate: 60,
1776
1776
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
1777
1777
  auth: "user",
1778
- responseKind: "json"
1778
+ responseKind: "json",
1779
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1780
+ },
1781
+ reorderContentEntries: {
1782
+ path: "/sites/{siteId}/content/{type}/order",
1783
+ method: "POST",
1784
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
1785
+ auth: "user",
1786
+ responseKind: "json",
1787
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1779
1788
  },
1780
1789
  getContentTemplate: {
1781
1790
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -2167,6 +2176,46 @@ var init_endpoints = __esm({
2167
2176
  auth: "user",
2168
2177
  responseKind: "json"
2169
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
+ },
2170
2219
  getSiteAiProfile: {
2171
2220
  path: "/sites/{siteId}/settings/ai-site-profile",
2172
2221
  method: "GET",
@@ -3942,6 +3991,14 @@ var init_endpoints = __esm({
3942
3991
  auth: "public",
3943
3992
  responseKind: "json"
3944
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
+ },
3945
4002
  // Resolve entry subroute by kind and URL segment
3946
4003
  resolveEntrySubroute: {
3947
4004
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5646,6 +5703,13 @@ var init_endpoints = __esm({
5646
5703
  auth: "service",
5647
5704
  responseKind: "json"
5648
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
+ },
5649
5713
  sdkUpsertTheme: {
5650
5714
  path: "/sdk/{siteId}/theme",
5651
5715
  method: "POST",
@@ -6276,12 +6340,19 @@ var init_endpoints = __esm({
6276
6340
  }
6277
6341
  });
6278
6342
 
6343
+ // ../core/src/result.ts
6344
+ var init_result = __esm({
6345
+ "../core/src/result.ts"() {
6346
+ "use strict";
6347
+ }
6348
+ });
6349
+
6279
6350
  // ../core/src/branded.ts
6280
- var asStorageBucketName, unsafeAsPositiveByteCount, unsafeAsPositiveSeconds;
6351
+ var unsafeAsStorageBucketName, unsafeAsPositiveByteCount, unsafeAsPositiveSeconds;
6281
6352
  var init_branded = __esm({
6282
6353
  "../core/src/branded.ts"() {
6283
6354
  "use strict";
6284
- asStorageBucketName = (value) => value;
6355
+ unsafeAsStorageBucketName = (value) => value;
6285
6356
  unsafeAsPositiveByteCount = (value) => value;
6286
6357
  unsafeAsPositiveSeconds = (value) => value;
6287
6358
  }
@@ -6378,13 +6449,6 @@ var init_booking_instalments = __esm({
6378
6449
  }
6379
6450
  });
6380
6451
 
6381
- // ../core/src/result.ts
6382
- var init_result = __esm({
6383
- "../core/src/result.ts"() {
6384
- "use strict";
6385
- }
6386
- });
6387
-
6388
6452
  // ../core/src/booking-date-time.ts
6389
6453
  var init_booking_date_time = __esm({
6390
6454
  "../core/src/booking-date-time.ts"() {
@@ -6669,9 +6733,22 @@ var init_accessAdmin = __esm({
6669
6733
  });
6670
6734
 
6671
6735
  // ../api/src/media.ts
6736
+ var AMBIENT_BACKGROUND_ROLES, SITE_BACKGROUND_ASSET_USES;
6672
6737
  var init_media = __esm({
6673
6738
  "../api/src/media.ts"() {
6674
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
+ ];
6675
6752
  }
6676
6753
  });
6677
6754
 
@@ -6893,11 +6970,23 @@ var init_fileSafety = __esm({
6893
6970
  });
6894
6971
 
6895
6972
  // ../media-core/src/fileDomain.ts
6896
- 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;
6897
6974
  var init_fileDomain = __esm({
6898
6975
  "../media-core/src/fileDomain.ts"() {
6899
6976
  "use strict";
6900
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
+ ];
6901
6990
  FILE_SIZE_LIMITS = {
6902
6991
  audio: unsafeAsPositiveByteCount(250 * 1024 * 1024),
6903
6992
  rawVideoBeforeCompression: unsafeAsPositiveByteCount(500 * 1024 * 1024),
@@ -6922,15 +7011,15 @@ var init_fileStorage = __esm({
6922
7011
  "use strict";
6923
7012
  init_src();
6924
7013
  FILE_STORAGE_BUCKETS = {
6925
- publicSite: asStorageBucketName("media"),
6926
- privateSite: asStorageBucketName("site-files-private"),
6927
- temporary: asStorageBucketName("temp-uploads")
7014
+ publicSite: unsafeAsStorageBucketName("media"),
7015
+ privateSite: unsafeAsStorageBucketName("site-files-private"),
7016
+ temporary: unsafeAsStorageBucketName("temp-uploads")
6928
7017
  };
6929
7018
  PUBLIC_SITE_FILE_STORAGE_BUCKETS = [
6930
7019
  FILE_STORAGE_BUCKETS.publicSite,
6931
7020
  // Existing site logo and font uploads predate the unified file buckets.
6932
- asStorageBucketName("site-assets"),
6933
- asStorageBucketName("site-fonts")
7021
+ unsafeAsStorageBucketName("site-assets"),
7022
+ unsafeAsStorageBucketName("site-fonts")
6934
7023
  ];
6935
7024
  PRIVATE_SITE_FILE_BUCKET_MIME_TYPES = [
6936
7025
  "application/pdf",
@@ -7263,14 +7352,14 @@ function rotateNormalizedPoint(point, rotation) {
7263
7352
  const x = point.x;
7264
7353
  const y = point.y;
7265
7354
  switch (rotation) {
7355
+ case 0:
7356
+ return { x, y };
7266
7357
  case 90:
7267
7358
  return { x: 1 - y, y: x };
7268
7359
  case 180:
7269
7360
  return { x: 1 - x, y: 1 - y };
7270
7361
  case 270:
7271
7362
  return { x: y, y: 1 - x };
7272
- default:
7273
- return { x, y };
7274
7363
  }
7275
7364
  }
7276
7365
  var init_rotation = __esm({
@@ -7599,6 +7688,15 @@ var init_repeaterGrid = __esm({
7599
7688
  }
7600
7689
  });
7601
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
+
7602
7700
  // ../blocks/src/system/manifest/schema.ts
7603
7701
  import { z as z5 } from "zod";
7604
7702
  function isDisplayMediaKind(kind) {
@@ -7686,6 +7784,7 @@ var init_schema2 = __esm({
7686
7784
  init_src2();
7687
7785
  init_node();
7688
7786
  init_repeaterGrid();
7787
+ init_presets();
7689
7788
  visibilityLevels = ["admin", "designer", "author"];
7690
7789
  MEDIA_KINDS = [
7691
7790
  "image",
@@ -7757,6 +7856,8 @@ var init_schema2 = __esm({
7757
7856
  mediaPickerAutoOpen: z5.boolean().optional(),
7758
7857
  showMediaPreview: z5.boolean().optional(),
7759
7858
  showMediaOverlayActions: z5.boolean().optional(),
7859
+ mediaPreviewMaxWidth: z5.enum(["xs", "sm", "md", "none"]).optional(),
7860
+ preventMediaPreviewUpscale: z5.boolean().optional(),
7760
7861
  mediaDelivery: mediaDeliverySchema.optional(),
7761
7862
  mediaDeliveryByVariant: z5.record(z5.string(), mediaDeliverySchema).optional(),
7762
7863
  // Optional input hints for validators/widgets
@@ -7835,7 +7936,7 @@ var init_schema2 = __esm({
7835
7936
  layoutGridColumnField: z5.string().optional(),
7836
7937
  layoutGridMaxRows: z5.number().int().positive().optional(),
7837
7938
  // Icon picker configuration (used when ui.widget === 'iconPicker')
7838
- iconPickerPreset: z5.enum(["cta"]).optional(),
7939
+ iconPickerPreset: z5.enum(ICON_PICKER_PRESETS).optional(),
7839
7940
  // Entry picker configuration
7840
7941
  contentTypeField: z5.string().optional(),
7841
7942
  fixedContentType: z5.string().optional(),
@@ -8006,6 +8107,9 @@ var init_schema2 = __esm({
8006
8107
  type: z5.literal("repeater"),
8007
8108
  itemLabel: z5.string().default("Item"),
8008
8109
  itemLabelSource: z5.string().optional(),
8110
+ showSummary: z5.boolean().optional(),
8111
+ summaryFields: z5.string().array().optional(),
8112
+ summaryMaxChars: z5.number().int().positive().optional(),
8009
8113
  minItems: z5.number().int().min(0).default(0),
8010
8114
  maxItems: z5.number().int().positive().optional(),
8011
8115
  // Monomorphic mode
@@ -8277,6 +8381,283 @@ var init_schema2 = __esm({
8277
8381
  }
8278
8382
  });
8279
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
+
8280
8661
  // ../blocks/src/system/manifest/fieldValidation/index.ts
8281
8662
  import { z as z6 } from "zod";
8282
8663
  var init_fieldValidation = __esm({
@@ -9585,7 +9966,7 @@ function parseThemeColorToken(value) {
9585
9966
  if (!isThemeColorToken(value)) return null;
9586
9967
  return value.trim();
9587
9968
  }
9588
- var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet, SHADE_STEPS, shadeStepSet, themeColorTokenSchema;
9969
+ var PALETTE_TOKEN_NAMES, paletteTokenNameSchema, themeColorBaseTokenNames, themeColorBaseTokenSet, themeColorShadeSteps, shadeStepSet, themeColorTokenSchema;
9589
9970
  var init_themeColorTokens = __esm({
9590
9971
  "../theme-core/src/tokens/themeColorTokens.ts"() {
9591
9972
  "use strict";
@@ -9620,7 +10001,7 @@ var init_themeColorTokens = __esm({
9620
10001
  "accentForeground"
9621
10002
  ];
9622
10003
  themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
9623
- SHADE_STEPS = [
10004
+ themeColorShadeSteps = [
9624
10005
  "50",
9625
10006
  "100",
9626
10007
  "200",
@@ -9633,7 +10014,7 @@ var init_themeColorTokens = __esm({
9633
10014
  "900",
9634
10015
  "950"
9635
10016
  ];
9636
- shadeStepSet = new Set(SHADE_STEPS);
10017
+ shadeStepSet = new Set(themeColorShadeSteps);
9637
10018
  themeColorTokenSchema = z9.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
9638
10019
  }
9639
10020
  });
@@ -10846,7 +11227,7 @@ var init_generateButtonCss = __esm({
10846
11227
  });
10847
11228
 
10848
11229
  // ../theme-core/src/buttons/presets.ts
10849
- var init_presets = __esm({
11230
+ var init_presets2 = __esm({
10850
11231
  "../theme-core/src/buttons/presets.ts"() {
10851
11232
  "use strict";
10852
11233
  }
@@ -10875,7 +11256,7 @@ var init_buttons = __esm({
10875
11256
  init_generateButtonCss();
10876
11257
  init_generateDefaultButtonSystem();
10877
11258
  init_constants();
10878
- init_presets();
11259
+ init_presets2();
10879
11260
  init_personalities();
10880
11261
  init_types5();
10881
11262
  init_registry2();
@@ -14092,6 +14473,7 @@ var init_curatedSiteStyles = __esm({
14092
14473
  "site-style:personal-retreat-journal",
14093
14474
  "site-style:tactile-workshop",
14094
14475
  "site-style:modern-wellness",
14476
+ "site-style:clarity-zen-blue",
14095
14477
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
14096
14478
  "site-style:bold-launch",
14097
14479
  "site-style:south-west-twerk-school"
@@ -14444,6 +14826,114 @@ var init_curatedSiteStyles = __esm({
14444
14826
  paletteChoice("warm-neutral-clay")
14445
14827
  ]
14446
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
+ }),
14447
14937
  defineCuratedSiteStyle({
14448
14938
  id: "site-style:personal-retreat-journal",
14449
14939
  name: "Personal Retreat Journal",
@@ -18181,47 +18671,48 @@ function validateFieldDefinitions(fields3, fragmentId) {
18181
18671
  function prefixFieldId(field, scope) {
18182
18672
  const cloned = cloneFieldDefinition2(field);
18183
18673
  cloned.id = `${scope}.${field.id}`;
18184
- cloned.defaultValue = cloneUnknown(cloned.defaultValue);
18674
+ const defaultValue = cloned.defaultValue;
18675
+ cloned.defaultValue = cloneUnknown(defaultValue);
18185
18676
  cloned.visibleRoles = cloned.visibleRoles ? [...cloned.visibleRoles] : void 0;
18186
18677
  cloned.ui = cloneUnknown(cloned.ui);
18187
18678
  return cloned;
18188
18679
  }
18189
18680
  function cloneFieldDefinition2(field) {
18190
- switch (field.type) {
18191
- case "repeater":
18192
- if (field.polymorphic && field.itemTypes) {
18193
- return {
18194
- ...field,
18195
- polymorphic: true,
18196
- itemTypes: Object.fromEntries(
18197
- Object.entries(field.itemTypes).map(([key, itemType]) => [
18198
- key,
18199
- {
18200
- ...itemType,
18201
- fields: itemType.fields.map(cloneFieldDefinition2)
18202
- }
18203
- ])
18204
- )
18205
- };
18206
- } else if (field.schema) {
18207
- return {
18208
- ...field,
18209
- schema: {
18210
- fields: field.schema.fields.map(cloneFieldDefinition2)
18211
- }
18212
- };
18213
- }
18214
- return { ...field };
18215
- case "group":
18681
+ if (field.type === "repeater") {
18682
+ if (field.polymorphic && field.itemTypes) {
18683
+ return {
18684
+ ...field,
18685
+ polymorphic: true,
18686
+ itemTypes: Object.fromEntries(
18687
+ Object.entries(field.itemTypes).map(([key, itemType]) => [
18688
+ key,
18689
+ {
18690
+ ...itemType,
18691
+ fields: itemType.fields.map(cloneFieldDefinition2)
18692
+ }
18693
+ ])
18694
+ )
18695
+ };
18696
+ }
18697
+ if (field.schema) {
18216
18698
  return {
18217
18699
  ...field,
18218
18700
  schema: {
18219
18701
  fields: field.schema.fields.map(cloneFieldDefinition2)
18220
18702
  }
18221
18703
  };
18222
- default:
18223
- return { ...field };
18704
+ }
18705
+ return { ...field };
18224
18706
  }
18707
+ if (field.type === "group") {
18708
+ return {
18709
+ ...field,
18710
+ schema: {
18711
+ fields: field.schema.fields.map(cloneFieldDefinition2)
18712
+ }
18713
+ };
18714
+ }
18715
+ return { ...field };
18225
18716
  }
18226
18717
  function cloneUnknown(value) {
18227
18718
  if (value == null || typeof value !== "object") {
@@ -19102,36 +19593,46 @@ function buildCarouselLayout() {
19102
19593
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
19103
19594
  );
19104
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
+ }
19105
19624
  function buildGridLayout() {
19106
19625
  return el(
19107
19626
  "div",
19108
19627
  { className: "rb-mt-12 rb-testimonials-carousel" },
19109
- [
19110
- // 2 columns
19111
- grid(
19112
- { gap: "lg", cols: { base: 1, sm: 2 } },
19113
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19114
- when("gridColumns", { equals: "2" })
19115
- ),
19116
- // 3 columns (default when unset)
19117
- grid(
19118
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
19119
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19120
- when("gridColumns", { equals: "3" })
19121
- ),
19122
- // 4 columns
19123
- grid(
19124
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
19125
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19126
- when("gridColumns", { equals: "4" })
19127
- ),
19128
- // Fallback to 3 columns when gridColumns is not set
19129
- grid(
19130
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
19131
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
19132
- when("gridColumns", { not: true })
19133
- )
19134
- ]
19628
+ buildResponsiveGridCards()
19629
+ );
19630
+ }
19631
+ function buildGridCardsLayout(className) {
19632
+ return el(
19633
+ "div",
19634
+ { className },
19635
+ buildResponsiveGridCards()
19135
19636
  );
19136
19637
  }
19137
19638
  var grid, testimonialsCarouselFragment;
@@ -21189,7 +21690,8 @@ function createBlockManifestWithContentShape(config, _contentShape) {
21189
21690
  return createBlockManifest(config);
21190
21691
  }
21191
21692
  function normalizeBlockLayout(layout) {
21192
- return Array.isArray(layout) ? [...layout] : layout;
21693
+ const rawLayout = layout;
21694
+ return Array.isArray(rawLayout) ? rawLayout : rawLayout;
21193
21695
  }
21194
21696
  function deriveComponentName(id) {
21195
21697
  const base = id.replace(/^block\./, "");
@@ -22694,7 +23196,7 @@ function fragmentLayoutNode(layout) {
22694
23196
  function isNodeDefinitionArray(layout) {
22695
23197
  return Array.isArray(layout);
22696
23198
  }
22697
- var faqComposition, headingLayout, accordionLayout, questionColumnsAccordionLayout, defaultLayout, twoColumnLayout, questionColumnsLayout, faqManifest, faqBlockDefinition;
23199
+ var faqComposition, headingLayout, accordionLayout, questionColumnsAccordionLayout, defaultLayout, twoColumnLayout, questionColumnsLayout, splitHeadingColumnsLayout, faqManifest, faqBlockDefinition;
22698
23200
  var init_faq = __esm({
22699
23201
  "../blocks/src/system/blocks/faq.ts"() {
22700
23202
  "use strict";
@@ -22750,6 +23252,24 @@ var init_faq = __esm({
22750
23252
  }),
22751
23253
  baseClass: ""
22752
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
+ });
22753
23273
  faqManifest = createBlockManifest({
22754
23274
  id: "block.faq",
22755
23275
  title: "FAQ",
@@ -22770,7 +23290,8 @@ var init_faq = __esm({
22770
23290
  variants: {
22771
23291
  default: defaultLayout,
22772
23292
  "two-column": twoColumnLayout,
22773
- "question-columns": questionColumnsLayout
23293
+ "question-columns": questionColumnsLayout,
23294
+ "split-heading-columns": splitHeadingColumnsLayout
22774
23295
  },
22775
23296
  defaultVariant: "default",
22776
23297
  variantOptions: {
@@ -22785,6 +23306,10 @@ var init_faq = __esm({
22785
23306
  "question-columns": {
22786
23307
  label: "Question columns",
22787
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."
22788
23313
  }
22789
23314
  },
22790
23315
  description: "Accordion of frequently asked questions and answers.",
@@ -22799,6 +23324,9 @@ var init_faq = __esm({
22799
23324
 
22800
23325
  // ../blocks/src/system/transforms/registry/formatting.ts
22801
23326
  import { z as z35 } from "zod";
23327
+ function toUnknownArray(value) {
23328
+ return Array.isArray(value) ? value : [];
23329
+ }
22802
23330
  var uppercaseTransform, fallbackTransform, dateFormatShort, arrayLengthTransform, jsonArrayTransform, csvTransform, marqueeLoopOptionsSchema, marqueeLoopTransform, formattingTransforms;
22803
23331
  var init_formatting = __esm({
22804
23332
  "../blocks/src/system/transforms/registry/formatting.ts"() {
@@ -22879,11 +23407,12 @@ var init_formatting = __esm({
22879
23407
  summary: "Repeat an array to a minimum length, then duplicate it for seamless marquee looping",
22880
23408
  schema: marqueeLoopOptionsSchema,
22881
23409
  run: (value, options) => {
22882
- if (!Array.isArray(value) || value.length === 0) return [];
23410
+ const items = toUnknownArray(value);
23411
+ if (items.length === 0) return [];
22883
23412
  const minItems = options?.minItems ?? 10;
22884
23413
  const base = [];
22885
23414
  while (base.length < minItems) {
22886
- base.push(...value);
23415
+ base.push(...items);
22887
23416
  if (base.length > 1e3) break;
22888
23417
  }
22889
23418
  return [...base, ...base];
@@ -24974,7 +25503,7 @@ var init_site_footer = __esm({
24974
25503
  });
24975
25504
 
24976
25505
  // ../blocks/src/system/blocks/testimonials.tsx
24977
- var wrapVariant, carouselLayout, gridLayout2, additionalFields, entriesLoader, dataLoaders2, testimonialsManifest, testimonialsBlockDefinition;
25506
+ var backgroundImageClassName, wrapVariant, carouselLayout, gridLayout2, splitHeading, splitGridLayout, additionalFields, entriesLoader, dataLoaders2, testimonialsManifest, testimonialsBlockDefinition;
24978
25507
  var init_testimonials = __esm({
24979
25508
  "../blocks/src/system/blocks/testimonials.tsx"() {
24980
25509
  "use strict";
@@ -24985,6 +25514,8 @@ var init_testimonials = __esm({
24985
25514
  init_defineBlock();
24986
25515
  init_builder();
24987
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";
24988
25519
  wrapVariant = (variantLayout) => styledSection({
24989
25520
  children: styledContainer({
24990
25521
  children: stack(
@@ -24998,10 +25529,53 @@ var init_testimonials = __esm({
24998
25529
  // styledContainer (rb-container) already provides horizontal padding
24999
25530
  baseClass: "",
25000
25531
  spacing: "comfortable",
25001
- 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
25002
25533
  });
25003
25534
  carouselLayout = wrapVariant(buildCarouselLayout());
25004
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
+ });
25005
25579
  additionalFields = parseFieldDefinitions([
25006
25580
  // Heading fields from fragment
25007
25581
  ...testimonialsHeadingFragment.fields,
@@ -25033,7 +25607,7 @@ var init_testimonials = __esm({
25033
25607
  ],
25034
25608
  ui: {
25035
25609
  intent: "display",
25036
- visibleWhen: { field: "variant", equals: "grid" }
25610
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
25037
25611
  }
25038
25612
  },
25039
25613
  // Carousel-specific fields (from fragment)
@@ -25067,7 +25641,8 @@ var init_testimonials = __esm({
25067
25641
  // Variant system - enables the variant switcher control in the editor
25068
25642
  variants: {
25069
25643
  carousel: carouselLayout,
25070
- grid: gridLayout2
25644
+ grid: gridLayout2,
25645
+ "split-grid": splitGridLayout
25071
25646
  },
25072
25647
  defaultVariant: "carousel",
25073
25648
  variantOptions: {
@@ -25080,6 +25655,11 @@ var init_testimonials = __esm({
25080
25655
  label: "Grid",
25081
25656
  description: "Responsive grid layout",
25082
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"
25083
25663
  }
25084
25664
  },
25085
25665
  // Fields (variant field is auto-generated by augmentManifest)
@@ -25505,6 +26085,19 @@ var init_collection = __esm({
25505
26085
  }
25506
26086
  });
25507
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
+
25508
26101
  // ../blocks/src/system/blocks/feature-cards.ts
25509
26102
  function grid3(props2, children) {
25510
26103
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -25520,6 +26113,7 @@ var init_feature_cards = __esm({
25520
26113
  init_builder();
25521
26114
  init_fragments();
25522
26115
  init_colorStyles();
26116
+ init_feature_card_icons();
25523
26117
  sectionHeading = stack(
25524
26118
  { gap: "sm", className: "rb-feature-cards-heading rb-mx-auto rb-max-w-3xl rb-text-center" },
25525
26119
  [
@@ -25558,6 +26152,15 @@ var init_feature_cards = __esm({
25558
26152
  bind("card.media")
25559
26153
  ),
25560
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
+ ),
25561
26164
  text(
25562
26165
  {
25563
26166
  as: "h3",
@@ -25679,6 +26282,16 @@ var init_feature_cards = __esm({
25679
26282
  defaultValue: "4/3",
25680
26283
  visibleWhen: { field: "media", notEquals: null }
25681
26284
  }),
26285
+ {
26286
+ id: "icon",
26287
+ type: "text",
26288
+ label: "Icon",
26289
+ required: false,
26290
+ ui: {
26291
+ widget: "iconPicker",
26292
+ iconPickerPreset: "feature"
26293
+ }
26294
+ },
25682
26295
  {
25683
26296
  id: "title",
25684
26297
  type: "text",
@@ -25714,6 +26327,19 @@ var init_feature_cards = __esm({
25714
26327
  ]
25715
26328
  }
25716
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
+ },
25717
26343
  cardStylesField({
25718
26344
  id: "_cardStyles",
25719
26345
  label: "Card styles"
@@ -26812,10 +27438,10 @@ function normalizeEventCategoryIds(value) {
26812
27438
  if (Array.isArray(value)) {
26813
27439
  return normalizeIdList(
26814
27440
  value.filter((entry) => typeof entry === "string")
26815
- ).map(asEventCategoryId);
27441
+ ).map(unsafeAsEventCategoryId);
26816
27442
  }
26817
27443
  if (typeof value === "string") {
26818
- return normalizeIdList(value.split(",")).map(asEventCategoryId);
27444
+ return normalizeIdList(value.split(",")).map(unsafeAsEventCategoryId);
26819
27445
  }
26820
27446
  return [];
26821
27447
  }
@@ -26828,7 +27454,7 @@ function normalizeEventVenueId(value) {
26828
27454
  return null;
26829
27455
  }
26830
27456
  const trimmed = value.trim();
26831
- return trimmed ? asVenueId(trimmed) : null;
27457
+ return trimmed ? unsafeAsVenueId(trimmed) : null;
26832
27458
  }
26833
27459
  function normalizeEventStaffMemberId(value) {
26834
27460
  if (typeof value !== "string") {
@@ -26837,7 +27463,7 @@ function normalizeEventStaffMemberId(value) {
26837
27463
  const trimmed = value.trim();
26838
27464
  return trimmed ? trimmed : null;
26839
27465
  }
26840
- var eventBlockKindValues, eventSurfacePresetValues, eventSurfaceScopeValues, eventScheduleScopeValues, asEventCategoryId, asVenueId;
27466
+ var eventBlockKindValues, eventSurfacePresetValues, eventSurfaceScopeValues, eventScheduleScopeValues, unsafeAsEventCategoryId, unsafeAsVenueId;
26841
27467
  var init_filtering = __esm({
26842
27468
  "../blocks/src/system/blocks/events/shared/filtering.ts"() {
26843
27469
  "use strict";
@@ -26856,8 +27482,8 @@ var init_filtering = __esm({
26856
27482
  "custom"
26857
27483
  ];
26858
27484
  eventScheduleScopeValues = ["any", "recurring", "oneOff"];
26859
- asEventCategoryId = (value) => value;
26860
- asVenueId = (value) => value;
27485
+ unsafeAsEventCategoryId = (value) => value;
27486
+ unsafeAsVenueId = (value) => value;
26861
27487
  }
26862
27488
  });
26863
27489
 
@@ -33916,6 +34542,7 @@ var init_blocks = __esm({
33916
34542
  init_columns();
33917
34543
  init_collection();
33918
34544
  init_feature_cards();
34545
+ init_feature_card_icons();
33919
34546
  init_media_text();
33920
34547
  init_appointment_booking();
33921
34548
  init_event_registration();
@@ -34179,7 +34806,8 @@ var init_blocks = __esm({
34179
34806
  layoutProfiles: [
34180
34807
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
34181
34808
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
34182
- 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" })
34183
34811
  ]
34184
34812
  })),
34185
34813
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -34210,6 +34838,12 @@ var init_blocks = __esm({
34210
34838
  family: "grid",
34211
34839
  weight: "standard",
34212
34840
  bias: "soft"
34841
+ }),
34842
+ layoutProfile({
34843
+ variantKey: "split-grid",
34844
+ family: "split",
34845
+ weight: "featured",
34846
+ bias: "soft"
34213
34847
  })
34214
34848
  ]
34215
34849
  })),
@@ -35051,6 +35685,96 @@ var init_transforms = __esm({
35051
35685
  }
35052
35686
  });
35053
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
+
35054
35778
  // ../blocks/src/system/runtime/resolver.ts
35055
35779
  import React from "react";
35056
35780
  var init_resolver3 = __esm({
@@ -35101,7 +35825,7 @@ var init_layout2 = __esm({
35101
35825
  });
35102
35826
 
35103
35827
  // ../blocks/src/system/ai/hints/registry.ts
35104
- var init_registry6 = __esm({
35828
+ var init_registry7 = __esm({
35105
35829
  "../blocks/src/system/ai/hints/registry.ts"() {
35106
35830
  "use strict";
35107
35831
  }
@@ -35118,7 +35842,7 @@ var init_types16 = __esm({
35118
35842
  var init_hints = __esm({
35119
35843
  "../blocks/src/system/ai/hints/index.ts"() {
35120
35844
  "use strict";
35121
- init_registry6();
35845
+ init_registry7();
35122
35846
  init_types16();
35123
35847
  }
35124
35848
  });
@@ -35152,6 +35876,7 @@ var init_system = __esm({
35152
35876
  init_componentFactory();
35153
35877
  init_designCapabilities();
35154
35878
  init_fragments2();
35879
+ init_icons();
35155
35880
  init_layout2();
35156
35881
  init_defineBlock();
35157
35882
  init_ai();
@@ -35251,7 +35976,7 @@ var init_generateNavLinkCSS = __esm({
35251
35976
 
35252
35977
  // ../theme-core/src/navigation/presets.ts
35253
35978
  var NAV_LINK_PRESETS, NAV_LINK_PRESET_IDS;
35254
- var init_presets2 = __esm({
35979
+ var init_presets3 = __esm({
35255
35980
  "../theme-core/src/navigation/presets.ts"() {
35256
35981
  "use strict";
35257
35982
  NAV_LINK_PRESETS = {
@@ -35424,7 +36149,7 @@ var init_generateHeaderCss = __esm({
35424
36149
  "use strict";
35425
36150
  init_resolver();
35426
36151
  init_generateNavLinkCSS();
35427
- init_presets2();
36152
+ init_presets3();
35428
36153
  init_shared();
35429
36154
  init_breakpoints();
35430
36155
  init_navDropdownSizing();
@@ -35445,7 +36170,7 @@ var init_generateFooterCss = __esm({
35445
36170
  "use strict";
35446
36171
  init_resolver();
35447
36172
  init_generateNavLinkCSS();
35448
- init_presets2();
36173
+ init_presets3();
35449
36174
  }
35450
36175
  });
35451
36176
 
@@ -36050,7 +36775,7 @@ var init_course_registration2 = __esm({
36050
36775
 
36051
36776
  // ../theme-core/src/blocks/registry.ts
36052
36777
  var blockVarRegistry;
36053
- var init_registry7 = __esm({
36778
+ var init_registry8 = __esm({
36054
36779
  "../theme-core/src/blocks/registry.ts"() {
36055
36780
  "use strict";
36056
36781
  init_event_registration2();
@@ -36097,7 +36822,7 @@ var init_vars = __esm({
36097
36822
  var init_blocks2 = __esm({
36098
36823
  "../theme-core/src/blocks/index.ts"() {
36099
36824
  "use strict";
36100
- init_registry7();
36825
+ init_registry8();
36101
36826
  init_vars();
36102
36827
  }
36103
36828
  });
@@ -38388,7 +39113,7 @@ var init_core4 = __esm({
38388
39113
  });
38389
39114
 
38390
39115
  // ../theme-core/src/gradients/presets.ts
38391
- var init_presets3 = __esm({
39116
+ var init_presets4 = __esm({
38392
39117
  "../theme-core/src/gradients/presets.ts"() {
38393
39118
  "use strict";
38394
39119
  }
@@ -38406,7 +39131,7 @@ var init_gradients2 = __esm({
38406
39131
  "../theme-core/src/gradients/index.ts"() {
38407
39132
  "use strict";
38408
39133
  init_types9();
38409
- init_presets3();
39134
+ init_presets4();
38410
39135
  init_utils4();
38411
39136
  }
38412
39137
  });
@@ -38730,11 +39455,11 @@ function normalizeContent(block) {
38730
39455
  }
38731
39456
  function normalizeParams(input) {
38732
39457
  if (!input || typeof input !== "object") return {};
38733
- const entries = Object.entries(input).map(([key, value]) => [
38734
- key,
38735
- coerceToString(value)
38736
- ]);
38737
- return Object.fromEntries(entries);
39458
+ const output = {};
39459
+ for (const [key, value] of Object.entries(input)) {
39460
+ output[key] = coerceToString(value);
39461
+ }
39462
+ return output;
38738
39463
  }
38739
39464
  function isNonArrayObject(value) {
38740
39465
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -38996,7 +39721,7 @@ import { z as z65 } from "zod";
38996
39721
  function unsafeRetypeZodSchema(schema) {
38997
39722
  return schema;
38998
39723
  }
38999
- var navIdListSchema, dashboardNavVisibilityBaseSchema, dashboardNavVisibilityRolesSchema, dashboardNavVisibilitySchema, dashboardNavigationConfigSchema, dashboardConfigSchema, fieldDefinitionInputSchema, nodeDefinitionSchema, sdkLoaderEndpointSchema, loaderParamBindingSchema, loaderParamValueSchema, sdkConfigLoaderSchema, sdkDataLoadersSchema, sdkCustomBlockIdSchema, sdkCustomBlockInputSchema, sdkBlockFieldExtensionInputSchema, sdkBlockFieldExtensionsInputSchema, sdkThemePaletteSchema, sdkThemeConfigSchema, sdkSectionBackgroundSchema, sdkSectionOptionsConfigSchema, sdkContainerOptionsConfigSchema, sdkSiteStyleConfigSchema, sdkSiteLayoutConfigSchema, sdkFieldSelectOptionSchema, sdkBlockFieldConfigSchema, sdkBlockFieldOptionsMapSchema, sdkContentTypeTemplateConfigSchema, sdkContentTypeConfigSchema, sdkContentConfigSchema, SDK_WORKFLOW_ID_MAX_LENGTH, SDK_WORKFLOW_TITLE_MAX_LENGTH, SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH, SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH, SDK_WORKFLOW_ENDPOINT_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_MAX_COUNT, SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT, SDK_WORKFLOW_MAX_COUNT, SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH, SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH, SDK_WORKFLOW_ID_PATTERN, SDK_WORKFLOW_ENDPOINT_PATTERN, sdkWorkflowIdSchema, sdkWorkflowEndpointSchema, sdkWorkflowManualTriggerSchema, sdkWorkflowTriggerFieldSchema, sdkWorkflowFieldChangedConditionSchema, sdkWorkflowFieldEmptyConditionSchema, sdkWorkflowEntryDraftUpdatedTriggerSchema, sdkWorkflowTriggerSchema, sdkWorkflowConfirmationSchema, sdkWorkflowConfigSchema, sdkWorkflowsSchema, riverbankSiteConfigInputSchema, pushSdkConfigBodySchema;
39724
+ var navIdListSchema, dashboardNavVisibilityBaseSchema, dashboardNavVisibilityRolesSchema, dashboardNavVisibilitySchema, dashboardNavigationConfigSchema, dashboardConfigSchema, fieldDefinitionInputSchema, nodeDefinitionSchema, sdkLoaderEndpointSchema, loaderFallbackScalarSchema, loaderParamBindingSchema, loaderParamValueSchema, sdkConfigLoaderSchema, sdkDataLoadersSchema, sdkCustomBlockIdSchema, sdkCustomBlockInputSchema, sdkBlockFieldExtensionInputSchema, sdkBlockFieldExtensionsInputSchema, sdkThemePaletteSchema, sdkThemeConfigSchema, sdkSectionBackgroundSchema, sdkSectionOptionsConfigSchema, sdkContainerOptionsConfigSchema, sdkSiteStyleConfigSchema, sdkSiteLayoutConfigSchema, sdkFieldSelectOptionSchema, sdkBlockFieldConfigSchema, sdkBlockFieldOptionsMapSchema, sdkContentTypeTemplateConfigSchema, sdkContentTypeOrderingConfigSchema, sdkContentTypeConfigSchema, sdkContentConfigSchema, SDK_WORKFLOW_ID_MAX_LENGTH, SDK_WORKFLOW_TITLE_MAX_LENGTH, SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH, SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH, SDK_WORKFLOW_ENDPOINT_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_MAX_COUNT, SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT, SDK_WORKFLOW_MAX_COUNT, SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH, SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH, SDK_WORKFLOW_ID_PATTERN, SDK_WORKFLOW_ENDPOINT_PATTERN, sdkWorkflowIdSchema, sdkWorkflowEndpointSchema, sdkWorkflowManualTriggerSchema, sdkWorkflowTriggerFieldSchema, sdkWorkflowFieldChangedConditionSchema, sdkWorkflowFieldEmptyConditionSchema, sdkWorkflowEntryDraftUpdatedTriggerSchema, sdkWorkflowTriggerSchema, sdkWorkflowConfirmationSchema, sdkWorkflowConfigSchema, sdkWorkflowsSchema, riverbankSiteConfigInputSchema, pushSdkConfigBodySchema;
39000
39725
  var init_contracts2 = __esm({
39001
39726
  "../api/src/sdkConfig/contracts.ts"() {
39002
39727
  "use strict";
@@ -39030,10 +39755,16 @@ var init_contracts2 = __esm({
39030
39755
  fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
39031
39756
  nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
39032
39757
  sdkLoaderEndpointSchema = z65.enum(SUPPORTED_LOADER_ENDPOINTS);
39758
+ loaderFallbackScalarSchema = z65.union([
39759
+ z65.string(),
39760
+ z65.number(),
39761
+ z65.boolean(),
39762
+ z65.null()
39763
+ ]);
39033
39764
  loaderParamBindingSchema = z65.object({
39034
39765
  $bind: z65.object({
39035
39766
  from: z65.string().min(1, "Binding path is required"),
39036
- fallback: z65.string().optional()
39767
+ fallback: loaderFallbackScalarSchema.optional()
39037
39768
  })
39038
39769
  });
39039
39770
  loaderParamValueSchema = z65.union([
@@ -39179,9 +39910,13 @@ var init_contracts2 = __esm({
39179
39910
  sdkContentTypeTemplateConfigSchema = z65.object({
39180
39911
  blocks: z65.array(z65.unknown())
39181
39912
  }).passthrough();
39913
+ sdkContentTypeOrderingConfigSchema = z65.object({
39914
+ mode: z65.enum(["default", "manual"]).optional()
39915
+ }).optional();
39182
39916
  sdkContentTypeConfigSchema = z65.object({
39183
39917
  key: z65.string().min(1),
39184
39918
  fields: z65.array(z65.unknown()),
39919
+ ordering: sdkContentTypeOrderingConfigSchema,
39185
39920
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
39186
39921
  }).passthrough();
39187
39922
  sdkContentConfigSchema = z65.object({
@@ -40414,7 +41149,6 @@ var init_dashboardSiteNav = __esm({
40414
41149
  "site.footerBlocks",
40415
41150
  "site.navigation",
40416
41151
  "site.media",
40417
- "site.style",
40418
41152
  "site.performance"
40419
41153
  ];
40420
41154
  websiteSurfaceIdSet = new Set(
@@ -40462,6 +41196,18 @@ var init_dashboardBookingsNav = __esm({
40462
41196
  }
40463
41197
  });
40464
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
+
40465
41211
  // ../api/src/navigation/dashboardDemoNav.ts
40466
41212
  var init_dashboardDemoNav = __esm({
40467
41213
  "../api/src/navigation/dashboardDemoNav.ts"() {
@@ -40499,6 +41245,7 @@ var init_navigation = __esm({
40499
41245
  init_dashboardSettingsNav();
40500
41246
  init_dashboardTeamMemberNav();
40501
41247
  init_dashboardBookingsNav();
41248
+ init_identity();
40502
41249
  init_dashboardDemoNav();
40503
41250
  init_linkValue();
40504
41251
  init_matcher();
@@ -40799,7 +41546,7 @@ async function prefetchBlockData2(page, context, client, options) {
40799
41546
  throw new Error("listPublishedEntries requires siteId and type params");
40800
41547
  }
40801
41548
  const parsedLimit = typeof limit === "string" ? Number.parseInt(limit, 10) : typeof limit === "number" ? limit : void 0;
40802
- const order = orderBy === "newest" || orderBy === "oldest" || orderBy === "title" || orderBy === "order" ? orderBy : void 0;
41549
+ const order = orderBy === "order" ? "manual" : orderBy === "newest" || orderBy === "oldest" || orderBy === "title" ? orderBy : void 0;
40803
41550
  const parsedEntryIds = mode === "manual" ? parseManualEntryIds(entryIds) : void 0;
40804
41551
  if (mode === "manual" && (!parsedEntryIds || parsedEntryIds.length === 0)) {
40805
41552
  return { entries: [] };