@kywi-software/core 0.14.0 → 0.15.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 (478) hide show
  1. package/AGENT-PATTERNS.md +153 -17
  2. package/README.md +38 -12
  3. package/dist/admin/chrome.d.ts.map +1 -1
  4. package/dist/admin/chrome.js +6 -7
  5. package/dist/admin/chrome.js.map +1 -1
  6. package/dist/admin/field-components.d.ts.map +1 -1
  7. package/dist/admin/field-components.js +27 -1
  8. package/dist/admin/field-components.js.map +1 -1
  9. package/dist/admin/form-helpers.d.ts.map +1 -1
  10. package/dist/admin/form-helpers.js +6 -1
  11. package/dist/admin/form-helpers.js.map +1 -1
  12. package/dist/admin/layout-editor/chrome-env.d.ts +35 -0
  13. package/dist/admin/layout-editor/chrome-env.d.ts.map +1 -0
  14. package/dist/admin/layout-editor/chrome-env.js +13 -0
  15. package/dist/admin/layout-editor/chrome-env.js.map +1 -0
  16. package/dist/admin/layout-editor/component-actions.d.ts +58 -7
  17. package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
  18. package/dist/admin/layout-editor/component-actions.js +131 -5
  19. package/dist/admin/layout-editor/component-actions.js.map +1 -1
  20. package/dist/admin/layout-editor/component-fork.d.ts +4 -4
  21. package/dist/admin/layout-editor/component-fork.d.ts.map +1 -1
  22. package/dist/admin/layout-editor/component-fork.js +76 -10
  23. package/dist/admin/layout-editor/component-fork.js.map +1 -1
  24. package/dist/admin/layout-editor/component-picker-field.d.ts +17 -3
  25. package/dist/admin/layout-editor/component-picker-field.d.ts.map +1 -1
  26. package/dist/admin/layout-editor/component-picker-field.js +5 -2
  27. package/dist/admin/layout-editor/component-picker-field.js.map +1 -1
  28. package/dist/admin/layout-editor/drag-feedback.d.ts +25 -1
  29. package/dist/admin/layout-editor/drag-feedback.d.ts.map +1 -1
  30. package/dist/admin/layout-editor/drag-feedback.js +9 -0
  31. package/dist/admin/layout-editor/drag-feedback.js.map +1 -1
  32. package/dist/admin/layout-editor/drag-utils.d.ts +103 -5
  33. package/dist/admin/layout-editor/drag-utils.d.ts.map +1 -1
  34. package/dist/admin/layout-editor/drag-utils.js +131 -4
  35. package/dist/admin/layout-editor/drag-utils.js.map +1 -1
  36. package/dist/admin/layout-editor/editor-canvas.d.ts +11 -0
  37. package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
  38. package/dist/admin/layout-editor/editor-canvas.js +134 -20
  39. package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
  40. package/dist/admin/layout-editor/editor-dialog.d.ts +58 -3
  41. package/dist/admin/layout-editor/editor-dialog.d.ts.map +1 -1
  42. package/dist/admin/layout-editor/editor-dialog.js +71 -9
  43. package/dist/admin/layout-editor/editor-dialog.js.map +1 -1
  44. package/dist/admin/layout-editor/editor-state.d.ts +119 -0
  45. package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
  46. package/dist/admin/layout-editor/editor-state.js +188 -6
  47. package/dist/admin/layout-editor/editor-state.js.map +1 -1
  48. package/dist/admin/layout-editor/editor-toolbar.d.ts +10 -1
  49. package/dist/admin/layout-editor/editor-toolbar.d.ts.map +1 -1
  50. package/dist/admin/layout-editor/editor-toolbar.js +2 -2
  51. package/dist/admin/layout-editor/editor-toolbar.js.map +1 -1
  52. package/dist/admin/layout-editor/editor.css +216 -8
  53. package/dist/admin/layout-editor/inline-text.d.ts +15 -1
  54. package/dist/admin/layout-editor/inline-text.d.ts.map +1 -1
  55. package/dist/admin/layout-editor/inline-text.js +30 -2
  56. package/dist/admin/layout-editor/inline-text.js.map +1 -1
  57. package/dist/admin/layout-editor/layout-editor.d.ts +21 -16
  58. package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
  59. package/dist/admin/layout-editor/layout-editor.js +40 -17
  60. package/dist/admin/layout-editor/layout-editor.js.map +1 -1
  61. package/dist/admin/layout-editor/linked-component-notes.d.ts +88 -0
  62. package/dist/admin/layout-editor/linked-component-notes.d.ts.map +1 -0
  63. package/dist/admin/layout-editor/linked-component-notes.js +88 -0
  64. package/dist/admin/layout-editor/linked-component-notes.js.map +1 -0
  65. package/dist/admin/layout-editor/module-overlay.d.ts +23 -4
  66. package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
  67. package/dist/admin/layout-editor/module-overlay.js +56 -10
  68. package/dist/admin/layout-editor/module-overlay.js.map +1 -1
  69. package/dist/admin/layout-editor/module-variant-container-config.d.ts.map +1 -1
  70. package/dist/admin/layout-editor/module-variant-container-config.js +9 -2
  71. package/dist/admin/layout-editor/module-variant-container-config.js.map +1 -1
  72. package/dist/admin/layout-editor/module-variant-container-panel.d.ts +75 -0
  73. package/dist/admin/layout-editor/module-variant-container-panel.d.ts.map +1 -0
  74. package/dist/admin/layout-editor/module-variant-container-panel.js +29 -0
  75. package/dist/admin/layout-editor/module-variant-container-panel.js.map +1 -0
  76. package/dist/admin/layout-editor/node-lookup.d.ts.map +1 -1
  77. package/dist/admin/layout-editor/node-lookup.js +33 -3
  78. package/dist/admin/layout-editor/node-lookup.js.map +1 -1
  79. package/dist/admin/layout-editor/overlay-shell.d.ts.map +1 -1
  80. package/dist/admin/layout-editor/overlay-shell.js +19 -4
  81. package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
  82. package/dist/admin/layout-editor/props-panel.d.ts +28 -11
  83. package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
  84. package/dist/admin/layout-editor/props-panel.js +75 -125
  85. package/dist/admin/layout-editor/props-panel.js.map +1 -1
  86. package/dist/admin/layout-editor/section-variant-container-config.d.ts.map +1 -1
  87. package/dist/admin/layout-editor/section-variant-container-config.js +11 -2
  88. package/dist/admin/layout-editor/section-variant-container-config.js.map +1 -1
  89. package/dist/admin/layout-editor/use-chrome-flip.d.ts +99 -11
  90. package/dist/admin/layout-editor/use-chrome-flip.d.ts.map +1 -1
  91. package/dist/admin/layout-editor/use-chrome-flip.js +268 -97
  92. package/dist/admin/layout-editor/use-chrome-flip.js.map +1 -1
  93. package/dist/admin/layout-editor/use-component-connect.d.ts +13 -0
  94. package/dist/admin/layout-editor/use-component-connect.d.ts.map +1 -1
  95. package/dist/admin/layout-editor/use-component-connect.js +116 -20
  96. package/dist/admin/layout-editor/use-component-connect.js.map +1 -1
  97. package/dist/admin/layout-editor/use-component-fork.d.ts +49 -19
  98. package/dist/admin/layout-editor/use-component-fork.d.ts.map +1 -1
  99. package/dist/admin/layout-editor/use-component-fork.js +28 -19
  100. package/dist/admin/layout-editor/use-component-fork.js.map +1 -1
  101. package/dist/admin/layout-editor/use-component-library.d.ts +4 -4
  102. package/dist/admin/layout-editor/use-component-library.d.ts.map +1 -1
  103. package/dist/admin/layout-editor/use-component-library.js +1 -1
  104. package/dist/admin/layout-editor/use-component-library.js.map +1 -1
  105. package/dist/admin/layout-editor/use-editor-dnd.d.ts +10 -0
  106. package/dist/admin/layout-editor/use-editor-dnd.d.ts.map +1 -1
  107. package/dist/admin/layout-editor/use-editor-dnd.js +234 -14
  108. package/dist/admin/layout-editor/use-editor-dnd.js.map +1 -1
  109. package/dist/admin/layout-editor/variant-container-config.d.ts.map +1 -1
  110. package/dist/admin/layout-editor/variant-container-config.js +1 -1
  111. package/dist/admin/layout-editor/variant-container-config.js.map +1 -1
  112. package/dist/admin/layout-editor/variant-editor.d.ts +16 -15
  113. package/dist/admin/layout-editor/variant-editor.d.ts.map +1 -1
  114. package/dist/admin/layout-editor/variant-editor.js +16 -5
  115. package/dist/admin/layout-editor/variant-editor.js.map +1 -1
  116. package/dist/admin/primitives.d.ts.map +1 -1
  117. package/dist/admin/primitives.js +1 -1
  118. package/dist/admin/primitives.js.map +1 -1
  119. package/dist/admin/registry.d.ts +12 -0
  120. package/dist/admin/registry.d.ts.map +1 -1
  121. package/dist/admin/registry.js +12 -0
  122. package/dist/admin/registry.js.map +1 -1
  123. package/dist/admin/server.d.ts +10 -1
  124. package/dist/admin/server.d.ts.map +1 -1
  125. package/dist/admin/server.js +4 -1
  126. package/dist/admin/server.js.map +1 -1
  127. package/dist/admin/site-switcher.d.ts +16 -3
  128. package/dist/admin/site-switcher.d.ts.map +1 -1
  129. package/dist/admin/site-switcher.js +18 -3
  130. package/dist/admin/site-switcher.js.map +1 -1
  131. package/dist/admin/styles/admin.css +0 -3
  132. package/dist/admin/surface-matcher.d.ts +6 -2
  133. package/dist/admin/surface-matcher.d.ts.map +1 -1
  134. package/dist/admin/surface-matcher.js +42 -5
  135. package/dist/admin/surface-matcher.js.map +1 -1
  136. package/dist/admin/surfaces/components/components-data.d.ts +31 -11
  137. package/dist/admin/surfaces/components/components-data.d.ts.map +1 -1
  138. package/dist/admin/surfaces/components/components-data.js +17 -4
  139. package/dist/admin/surfaces/components/components-data.js.map +1 -1
  140. package/dist/admin/surfaces/components/components-list.d.ts.map +1 -1
  141. package/dist/admin/surfaces/components/components-list.js +20 -7
  142. package/dist/admin/surfaces/components/components-list.js.map +1 -1
  143. package/dist/admin/surfaces/components/definition-canvas.d.ts +11 -3
  144. package/dist/admin/surfaces/components/definition-canvas.d.ts.map +1 -1
  145. package/dist/admin/surfaces/components/definition-canvas.js +138 -17
  146. package/dist/admin/surfaces/components/definition-canvas.js.map +1 -1
  147. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -1
  148. package/dist/admin/surfaces/dashboard/dashboard-index.js +2 -2
  149. package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -1
  150. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -1
  151. package/dist/admin/surfaces/layouts/layout-editor-client.js +12 -11
  152. package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -1
  153. package/dist/admin/surfaces/menus/menu-editor.d.ts.map +1 -1
  154. package/dist/admin/surfaces/menus/menu-editor.js +17 -4
  155. package/dist/admin/surfaces/menus/menu-editor.js.map +1 -1
  156. package/dist/admin/surfaces/menus/menu-tree.d.ts +18 -4
  157. package/dist/admin/surfaces/menus/menu-tree.d.ts.map +1 -1
  158. package/dist/admin/surfaces/menus/menu-tree.js +18 -3
  159. package/dist/admin/surfaces/menus/menu-tree.js.map +1 -1
  160. package/dist/admin/surfaces/menus/menus-data.d.ts +18 -0
  161. package/dist/admin/surfaces/menus/menus-data.d.ts.map +1 -1
  162. package/dist/admin/surfaces/menus/menus-data.js +4 -0
  163. package/dist/admin/surfaces/menus/menus-data.js.map +1 -1
  164. package/dist/admin/surfaces/menus/menus-list.d.ts.map +1 -1
  165. package/dist/admin/surfaces/menus/menus-list.js +2 -12
  166. package/dist/admin/surfaces/menus/menus-list.js.map +1 -1
  167. package/dist/admin/surfaces/users/users-data.d.ts +14 -0
  168. package/dist/admin/surfaces/users/users-data.d.ts.map +1 -1
  169. package/dist/admin/surfaces/users/users-data.js +19 -0
  170. package/dist/admin/surfaces/users/users-data.js.map +1 -1
  171. package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -1
  172. package/dist/admin/surfaces/users/users-detail.js +40 -4
  173. package/dist/admin/surfaces/users/users-detail.js.map +1 -1
  174. package/dist/admin/surfaces/users/users-new.d.ts.map +1 -1
  175. package/dist/admin/surfaces/users/users-new.js +8 -5
  176. package/dist/admin/surfaces/users/users-new.js.map +1 -1
  177. package/dist/admin/user-form.d.ts +10 -1
  178. package/dist/admin/user-form.d.ts.map +1 -1
  179. package/dist/admin/user-form.js +2 -2
  180. package/dist/admin/user-form.js.map +1 -1
  181. package/dist/api/admin-features-routes.js +2 -2
  182. package/dist/api/admin-features-routes.js.map +1 -1
  183. package/dist/api/audience-preview-routes.d.ts +7 -0
  184. package/dist/api/audience-preview-routes.d.ts.map +1 -1
  185. package/dist/api/audience-preview-routes.js +4 -4
  186. package/dist/api/audience-preview-routes.js.map +1 -1
  187. package/dist/api/audience-routes.d.ts +7 -0
  188. package/dist/api/audience-routes.d.ts.map +1 -1
  189. package/dist/api/audience-routes.js +21 -15
  190. package/dist/api/audience-routes.js.map +1 -1
  191. package/dist/api/audience-runtime-routes.d.ts +6 -0
  192. package/dist/api/audience-runtime-routes.d.ts.map +1 -1
  193. package/dist/api/audience-runtime-routes.js +38 -3
  194. package/dist/api/audience-runtime-routes.js.map +1 -1
  195. package/dist/api/auth-routes.d.ts.map +1 -1
  196. package/dist/api/auth-routes.js +10 -4
  197. package/dist/api/auth-routes.js.map +1 -1
  198. package/dist/api/auth.d.ts +1 -0
  199. package/dist/api/auth.d.ts.map +1 -1
  200. package/dist/api/auth.js +43 -3
  201. package/dist/api/auth.js.map +1 -1
  202. package/dist/api/bulk-routes.d.ts.map +1 -1
  203. package/dist/api/bulk-routes.js +7 -7
  204. package/dist/api/bulk-routes.js.map +1 -1
  205. package/dist/api/category-routes.js +3 -3
  206. package/dist/api/category-routes.js.map +1 -1
  207. package/dist/api/comment-routes.js +8 -8
  208. package/dist/api/comment-routes.js.map +1 -1
  209. package/dist/api/component-routes.d.ts +25 -0
  210. package/dist/api/component-routes.d.ts.map +1 -1
  211. package/dist/api/component-routes.js +41 -16
  212. package/dist/api/component-routes.js.map +1 -1
  213. package/dist/api/content-routes.js +13 -13
  214. package/dist/api/content-routes.js.map +1 -1
  215. package/dist/api/dashboard-routes.js +1 -1
  216. package/dist/api/dashboard-routes.js.map +1 -1
  217. package/dist/api/experiment-routes.d.ts +7 -0
  218. package/dist/api/experiment-routes.d.ts.map +1 -1
  219. package/dist/api/experiment-routes.js +8 -8
  220. package/dist/api/experiment-routes.js.map +1 -1
  221. package/dist/api/experiment-runtime-routes.d.ts +6 -0
  222. package/dist/api/experiment-runtime-routes.d.ts.map +1 -1
  223. package/dist/api/experiment-runtime-routes.js +47 -11
  224. package/dist/api/experiment-runtime-routes.js.map +1 -1
  225. package/dist/api/feed-routes.d.ts +2 -2
  226. package/dist/api/feed-routes.js +3 -3
  227. package/dist/api/feed-routes.js.map +1 -1
  228. package/dist/api/form-routes.js +4 -4
  229. package/dist/api/form-routes.js.map +1 -1
  230. package/dist/api/graphql/resolvers.d.ts +1 -1
  231. package/dist/api/graphql/resolvers.d.ts.map +1 -1
  232. package/dist/api/graphql/resolvers.js +68 -33
  233. package/dist/api/graphql/resolvers.js.map +1 -1
  234. package/dist/api/group-routes.js +6 -6
  235. package/dist/api/group-routes.js.map +1 -1
  236. package/dist/api/index.d.ts +1 -0
  237. package/dist/api/index.d.ts.map +1 -1
  238. package/dist/api/index.js +39 -6
  239. package/dist/api/index.js.map +1 -1
  240. package/dist/api/layout-routes.d.ts.map +1 -1
  241. package/dist/api/layout-routes.js +27 -3
  242. package/dist/api/layout-routes.js.map +1 -1
  243. package/dist/api/media-routes.d.ts.map +1 -1
  244. package/dist/api/media-routes.js +50 -26
  245. package/dist/api/media-routes.js.map +1 -1
  246. package/dist/api/menu-routes.d.ts +9 -1
  247. package/dist/api/menu-routes.d.ts.map +1 -1
  248. package/dist/api/menu-routes.js +44 -10
  249. package/dist/api/menu-routes.js.map +1 -1
  250. package/dist/api/nav-routes.d.ts +6 -0
  251. package/dist/api/nav-routes.d.ts.map +1 -1
  252. package/dist/api/nav-routes.js +24 -3
  253. package/dist/api/nav-routes.js.map +1 -1
  254. package/dist/api/openapi.d.ts.map +1 -1
  255. package/dist/api/openapi.js +68 -33
  256. package/dist/api/openapi.js.map +1 -1
  257. package/dist/api/search-routes.js +2 -2
  258. package/dist/api/search-routes.js.map +1 -1
  259. package/dist/api/section-template-routes.d.ts.map +1 -1
  260. package/dist/api/section-template-routes.js +35 -18
  261. package/dist/api/section-template-routes.js.map +1 -1
  262. package/dist/api/site-admin-routes.d.ts +10 -1
  263. package/dist/api/site-admin-routes.d.ts.map +1 -1
  264. package/dist/api/site-admin-routes.js +21 -1
  265. package/dist/api/site-admin-routes.js.map +1 -1
  266. package/dist/api/site-context.d.ts +35 -5
  267. package/dist/api/site-context.d.ts.map +1 -1
  268. package/dist/api/site-context.js +21 -6
  269. package/dist/api/site-context.js.map +1 -1
  270. package/dist/api/tag-routes.js +3 -3
  271. package/dist/api/tag-routes.js.map +1 -1
  272. package/dist/api/translation-routes.js +5 -5
  273. package/dist/api/translation-routes.js.map +1 -1
  274. package/dist/api/user-routes.d.ts.map +1 -1
  275. package/dist/api/user-routes.js +134 -19
  276. package/dist/api/user-routes.js.map +1 -1
  277. package/dist/api/webhook-routes.js +5 -5
  278. package/dist/api/webhook-routes.js.map +1 -1
  279. package/dist/api/workflow-routes.js +8 -8
  280. package/dist/api/workflow-routes.js.map +1 -1
  281. package/dist/audiences/collectors/identity.d.ts +14 -1
  282. package/dist/audiences/collectors/identity.d.ts.map +1 -1
  283. package/dist/audiences/collectors/identity.js +16 -3
  284. package/dist/audiences/collectors/identity.js.map +1 -1
  285. package/dist/audiences/collectors/index.d.ts +12 -2
  286. package/dist/audiences/collectors/index.d.ts.map +1 -1
  287. package/dist/audiences/collectors/index.js +16 -5
  288. package/dist/audiences/collectors/index.js.map +1 -1
  289. package/dist/audiences/collectors/pinned-audience.d.ts +28 -2
  290. package/dist/audiences/collectors/pinned-audience.d.ts.map +1 -1
  291. package/dist/audiences/collectors/pinned-audience.js +35 -5
  292. package/dist/audiences/collectors/pinned-audience.js.map +1 -1
  293. package/dist/audiences/collectors/utm.d.ts +15 -1
  294. package/dist/audiences/collectors/utm.d.ts.map +1 -1
  295. package/dist/audiences/collectors/utm.js +16 -2
  296. package/dist/audiences/collectors/utm.js.map +1 -1
  297. package/dist/audiences/consent-config.d.ts +21 -0
  298. package/dist/audiences/consent-config.d.ts.map +1 -0
  299. package/dist/audiences/consent-config.js +15 -0
  300. package/dist/audiences/consent-config.js.map +1 -0
  301. package/dist/audiences/consent-startup.d.ts +39 -0
  302. package/dist/audiences/consent-startup.d.ts.map +1 -0
  303. package/dist/audiences/consent-startup.js +105 -0
  304. package/dist/audiences/consent-startup.js.map +1 -0
  305. package/dist/audiences/consent.d.ts +192 -0
  306. package/dist/audiences/consent.d.ts.map +1 -0
  307. package/dist/audiences/consent.js +322 -0
  308. package/dist/audiences/consent.js.map +1 -0
  309. package/dist/audiences/engine.d.ts +7 -0
  310. package/dist/audiences/engine.d.ts.map +1 -1
  311. package/dist/audiences/engine.js +6 -2
  312. package/dist/audiences/engine.js.map +1 -1
  313. package/dist/audiences/index.d.ts +3 -0
  314. package/dist/audiences/index.d.ts.map +1 -1
  315. package/dist/audiences/index.js +6 -0
  316. package/dist/audiences/index.js.map +1 -1
  317. package/dist/audiences/server-eval.d.ts +13 -1
  318. package/dist/audiences/server-eval.d.ts.map +1 -1
  319. package/dist/audiences/server-eval.js +18 -2
  320. package/dist/audiences/server-eval.js.map +1 -1
  321. package/dist/audiences/ssr.d.ts +18 -1
  322. package/dist/audiences/ssr.d.ts.map +1 -1
  323. package/dist/audiences/ssr.js +18 -1
  324. package/dist/audiences/ssr.js.map +1 -1
  325. package/dist/audiences/utm-persistence.d.ts +20 -7
  326. package/dist/audiences/utm-persistence.d.ts.map +1 -1
  327. package/dist/audiences/utm-persistence.js +20 -7
  328. package/dist/audiences/utm-persistence.js.map +1 -1
  329. package/dist/auth/roles.d.ts +11 -0
  330. package/dist/auth/roles.d.ts.map +1 -1
  331. package/dist/auth/roles.js +13 -0
  332. package/dist/auth/roles.js.map +1 -1
  333. package/dist/auth/tokens.d.ts +7 -0
  334. package/dist/auth/tokens.d.ts.map +1 -1
  335. package/dist/auth/tokens.js +24 -2
  336. package/dist/auth/tokens.js.map +1 -1
  337. package/dist/config/types.d.ts +43 -0
  338. package/dist/config/types.d.ts.map +1 -1
  339. package/dist/config/types.js.map +1 -1
  340. package/dist/config/validate.d.ts.map +1 -1
  341. package/dist/config/validate.js +3 -0
  342. package/dist/config/validate.js.map +1 -1
  343. package/dist/db/apply-snapshot.d.ts +18 -0
  344. package/dist/db/apply-snapshot.d.ts.map +1 -1
  345. package/dist/db/apply-snapshot.js +41 -16
  346. package/dist/db/apply-snapshot.js.map +1 -1
  347. package/dist/db/component-instance-queries.d.ts +79 -19
  348. package/dist/db/component-instance-queries.d.ts.map +1 -1
  349. package/dist/db/component-instance-queries.js +266 -83
  350. package/dist/db/component-instance-queries.js.map +1 -1
  351. package/dist/db/component-queries.d.ts +1 -16
  352. package/dist/db/component-queries.d.ts.map +1 -1
  353. package/dist/db/component-queries.js +7 -56
  354. package/dist/db/component-queries.js.map +1 -1
  355. package/dist/db/content-queries.d.ts.map +1 -1
  356. package/dist/db/content-queries.js +1 -2
  357. package/dist/db/content-queries.js.map +1 -1
  358. package/dist/db/extension-queries.d.ts +2 -2
  359. package/dist/db/feed-queries.d.ts +3 -3
  360. package/dist/db/index.d.ts +1 -0
  361. package/dist/db/index.d.ts.map +1 -1
  362. package/dist/db/index.js +1 -0
  363. package/dist/db/index.js.map +1 -1
  364. package/dist/db/layout-queries.d.ts +2 -1
  365. package/dist/db/layout-queries.d.ts.map +1 -1
  366. package/dist/db/layout-queries.js +3 -3
  367. package/dist/db/layout-queries.js.map +1 -1
  368. package/dist/db/menu-queries.d.ts +69 -5
  369. package/dist/db/menu-queries.d.ts.map +1 -1
  370. package/dist/db/menu-queries.js +120 -13
  371. package/dist/db/menu-queries.js.map +1 -1
  372. package/dist/db/section-template-queries.d.ts +62 -0
  373. package/dist/db/section-template-queries.d.ts.map +1 -0
  374. package/dist/db/section-template-queries.js +178 -0
  375. package/dist/db/section-template-queries.js.map +1 -0
  376. package/dist/db/site-plugin-queries.d.ts +2 -2
  377. package/dist/db/tree-queries.d.ts.map +1 -1
  378. package/dist/db/tree-queries.js +5 -0
  379. package/dist/db/tree-queries.js.map +1 -1
  380. package/dist/db/webhook-queries.d.ts +3 -3
  381. package/dist/db/workflow-queries.d.ts.map +1 -1
  382. package/dist/db/workflow-queries.js +5 -20
  383. package/dist/db/workflow-queries.js.map +1 -1
  384. package/dist/experiments/runtime.d.ts +21 -3
  385. package/dist/experiments/runtime.d.ts.map +1 -1
  386. package/dist/experiments/runtime.js +21 -3
  387. package/dist/experiments/runtime.js.map +1 -1
  388. package/dist/layout/component-refs.d.ts +90 -2
  389. package/dist/layout/component-refs.d.ts.map +1 -1
  390. package/dist/layout/component-refs.js +293 -16
  391. package/dist/layout/component-refs.js.map +1 -1
  392. package/dist/layout/index.d.ts +4 -3
  393. package/dist/layout/index.d.ts.map +1 -1
  394. package/dist/layout/index.js +3 -2
  395. package/dist/layout/index.js.map +1 -1
  396. package/dist/layout/legacy-variant-container.d.ts +123 -0
  397. package/dist/layout/legacy-variant-container.d.ts.map +1 -0
  398. package/dist/layout/legacy-variant-container.js +397 -0
  399. package/dist/layout/legacy-variant-container.js.map +1 -0
  400. package/dist/layout/module-permissions.d.ts.map +1 -1
  401. package/dist/layout/module-permissions.js +25 -1
  402. package/dist/layout/module-permissions.js.map +1 -1
  403. package/dist/layout/modules-extended.d.ts +28 -1
  404. package/dist/layout/modules-extended.d.ts.map +1 -1
  405. package/dist/layout/modules-extended.js +73 -1
  406. package/dist/layout/modules-extended.js.map +1 -1
  407. package/dist/layout/modules.d.ts.map +1 -1
  408. package/dist/layout/modules.js +9 -1
  409. package/dist/layout/modules.js.map +1 -1
  410. package/dist/layout/personalization.d.ts +83 -0
  411. package/dist/layout/personalization.d.ts.map +1 -1
  412. package/dist/layout/personalization.js +250 -4
  413. package/dist/layout/personalization.js.map +1 -1
  414. package/dist/layout/registry.d.ts.map +1 -1
  415. package/dist/layout/registry.js +20 -0
  416. package/dist/layout/registry.js.map +1 -1
  417. package/dist/layout/renderer.d.ts +29 -2
  418. package/dist/layout/renderer.d.ts.map +1 -1
  419. package/dist/layout/renderer.js +23 -6
  420. package/dist/layout/renderer.js.map +1 -1
  421. package/dist/layout/types.d.ts +17 -0
  422. package/dist/layout/types.d.ts.map +1 -1
  423. package/dist/layout/types.js +7 -0
  424. package/dist/layout/types.js.map +1 -1
  425. package/dist/media/inline-risk.d.ts +26 -0
  426. package/dist/media/inline-risk.d.ts.map +1 -0
  427. package/dist/media/inline-risk.js +142 -0
  428. package/dist/media/inline-risk.js.map +1 -0
  429. package/dist/nav/builder.d.ts.map +1 -1
  430. package/dist/nav/builder.js +15 -3
  431. package/dist/nav/builder.js.map +1 -1
  432. package/dist/nav/index.d.ts +1 -1
  433. package/dist/nav/index.d.ts.map +1 -1
  434. package/dist/nav/index.js +1 -1
  435. package/dist/nav/index.js.map +1 -1
  436. package/dist/nav/menu-resolver.d.ts +11 -0
  437. package/dist/nav/menu-resolver.d.ts.map +1 -1
  438. package/dist/nav/menu-resolver.js +49 -9
  439. package/dist/nav/menu-resolver.js.map +1 -1
  440. package/dist/nav/paths.d.ts +37 -0
  441. package/dist/nav/paths.d.ts.map +1 -0
  442. package/dist/nav/paths.js +48 -0
  443. package/dist/nav/paths.js.map +1 -0
  444. package/dist/nav/types.d.ts +6 -0
  445. package/dist/nav/types.d.ts.map +1 -1
  446. package/dist/nav/url-resolver.d.ts +1 -5
  447. package/dist/nav/url-resolver.d.ts.map +1 -1
  448. package/dist/nav/url-resolver.js +6 -12
  449. package/dist/nav/url-resolver.js.map +1 -1
  450. package/dist/schema/base.d.ts +24 -4
  451. package/dist/schema/base.d.ts.map +1 -1
  452. package/dist/schema/base.js +17 -4
  453. package/dist/schema/base.js.map +1 -1
  454. package/dist/schema/components.d.ts +90 -9
  455. package/dist/schema/components.d.ts.map +1 -1
  456. package/dist/schema/components.js +113 -22
  457. package/dist/schema/components.js.map +1 -1
  458. package/dist/schema/mysql-tables.d.ts +5758 -48
  459. package/dist/schema/mysql-tables.d.ts.map +1 -1
  460. package/dist/schema/mysql-tables.js +620 -46
  461. package/dist/schema/mysql-tables.js.map +1 -1
  462. package/dist/scope/kywi-form.d.ts +11 -0
  463. package/dist/scope/kywi-form.d.ts.map +1 -1
  464. package/dist/scope/kywi-form.js +11 -1
  465. package/dist/scope/kywi-form.js.map +1 -1
  466. package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
  467. package/dist/scope/kywi-wizard-form.js +76 -2
  468. package/dist/scope/kywi-wizard-form.js.map +1 -1
  469. package/dist/scope/sticky-offset.d.ts +34 -13
  470. package/dist/scope/sticky-offset.d.ts.map +1 -1
  471. package/dist/scope/sticky-offset.js +236 -43
  472. package/dist/scope/sticky-offset.js.map +1 -1
  473. package/dist/site/styles.css +61 -15
  474. package/dist/versioning/scheduler.d.ts +28 -0
  475. package/dist/versioning/scheduler.d.ts.map +1 -1
  476. package/dist/versioning/scheduler.js +50 -3
  477. package/dist/versioning/scheduler.js.map +1 -1
  478. package/package.json +7 -2
@@ -14,8 +14,8 @@
14
14
  * (see `definition-canvas.ts`) and reports what the server says otherwise.
15
15
  */
16
16
  import type { FetchLike } from '../../content-editor-api.js';
17
- /** The three component kinds (`kywi_components.type`). */
18
- export type ComponentKind = 'module' | 'section' | 'variantContainer';
17
+ /** The four component kinds (`kywi_components.type`, kywi-cms#170). */
18
+ export type ComponentKind = 'module' | 'section' | 'variantContainer' | 'moduleVariantContainer';
19
19
  /** Placement counts as `GET /components?withUsage=1` folds them into each row. */
20
20
  export interface ComponentUsageCounts {
21
21
  /** Placements on live (not trashed) pages. */
@@ -24,6 +24,8 @@ export interface ComponentUsageCounts {
24
24
  pages: number;
25
25
  /** Placements held by pages in the trash — see {@link ComponentUsage}. */
26
26
  trashedInstances: number;
27
+ /** Distinct saved layouts holding a placement — see {@link ComponentUsage}. */
28
+ blueprints: number;
27
29
  }
28
30
  /** A `kywi_components` row as the API returns it. */
29
31
  export interface ComponentRow {
@@ -45,11 +47,17 @@ export interface ComponentUsageItem {
45
47
  title: string | null;
46
48
  nodeIds: string[];
47
49
  }
50
+ /** One saved layout holding placements of a component (kywi-cms#156). */
51
+ export interface ComponentUsageBlueprint {
52
+ blueprintId: string;
53
+ name: string | null;
54
+ }
48
55
  /**
49
- * The full usage payload. Trashed pages are counted separately by the API on
50
- * purpose: "used on 4 pages" has to mean four pages the reader can open, but a
51
- * trashed page still holds its link and restoring it brings the link back — so
52
- * the delete confirmation has to name those too.
56
+ * The full usage payload. Trashed pages and saved layouts are each counted
57
+ * separately by the API on purpose: "used on 4 pages" has to mean four pages the
58
+ * reader can open. A trashed page still holds its link and restoring it brings
59
+ * the link back; a saved layout holds its link forever and stamps it into every
60
+ * page made from it. So the delete confirmation has to name both.
53
61
  */
54
62
  export interface ComponentUsage {
55
63
  instances: number;
@@ -57,30 +65,42 @@ export interface ComponentUsage {
57
65
  items: ComponentUsageItem[];
58
66
  trashedInstances: number;
59
67
  trashedPages: number;
68
+ blueprints: number;
69
+ blueprintInstances: number;
70
+ blueprintItems: ComponentUsageBlueprint[];
60
71
  }
61
- /** One page `POST /detach-all` (or `DELETE ?detachAll=1`) deliberately left linked. */
72
+ /**
73
+ * One holder `POST /detach-all` (or `DELETE ?detachAll=1`) deliberately left
74
+ * linked — a page, or a saved layout when `holderKind` is `'blueprint'`
75
+ * (kywi-cms#156). `contentId` is that holder's id, so branch on `holderKind`
76
+ * before building a link to it.
77
+ */
62
78
  export interface DetachSkippedPage {
63
79
  contentId: string;
64
80
  contentType: string;
81
+ holderKind?: 'content' | 'blueprint';
65
82
  reason: string;
66
83
  detail: string;
67
84
  }
68
85
  export interface DetachEverywhereResult {
69
86
  pages: number;
87
+ /** Saved layouts rewritten (kywi-cms#156). */
88
+ blueprints: number;
70
89
  instances: number;
71
90
  skipped: DetachSkippedPage[];
72
91
  }
73
92
  /**
74
93
  * What a component's kind is CALLED in the UI.
75
94
  *
76
- * These are the words the editors already use for the same three things, not new
95
+ * These are the words the editors already use for the same four things, not new
77
96
  * ones: `editor-canvas.tsx` labels a variant container "Personalized section" or
78
- * "A/B tested section" depending on its mode, and the save dialog says the same
79
- * (`use-component-connect.tsx`). A library that called the same object a
97
+ * "A/B tested section" depending on its mode, the props rail calls a module-level
98
+ * one a "personalized module" / "A/B tested module", and the save dialog says the
99
+ * same (`use-component-connect.tsx`). A library that called any of them a
80
100
  * "Container" would be the only place in the product using that word — and
81
101
  * "arm"-style internal vocabulary in user copy is exactly what kywi-cms#148 was
82
102
  * filed for. `mode` is read off the definition because that is where it lives;
83
- * an unreadable definition degrades to the neutral "Personalized section".
103
+ * an unreadable definition degrades to the neutral "Personalized ".
84
104
  */
85
105
  export declare function componentKindLabel(component: Pick<ComponentRow, 'type' | 'definition'>): string;
86
106
  /** The type-filter choices, in list order. */
@@ -1 +1 @@
1
- {"version":3,"file":"components-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,15 @@
2
2
  /**
3
3
  * What a component's kind is CALLED in the UI.
4
4
  *
5
- * These are the words the editors already use for the same three things, not new
5
+ * These are the words the editors already use for the same four things, not new
6
6
  * ones: `editor-canvas.tsx` labels a variant container "Personalized section" or
7
- * "A/B tested section" depending on its mode, and the save dialog says the same
8
- * (`use-component-connect.tsx`). A library that called the same object a
7
+ * "A/B tested section" depending on its mode, the props rail calls a module-level
8
+ * one a "personalized module" / "A/B tested module", and the save dialog says the
9
+ * same (`use-component-connect.tsx`). A library that called any of them a
9
10
  * "Container" would be the only place in the product using that word — and
10
11
  * "arm"-style internal vocabulary in user copy is exactly what kywi-cms#148 was
11
12
  * filed for. `mode` is read off the definition because that is where it lives;
12
- * an unreadable definition degrades to the neutral "Personalized section".
13
+ * an unreadable definition degrades to the neutral "Personalized ".
13
14
  */
14
15
  export function componentKindLabel(component) {
15
16
  switch (component.type) {
@@ -21,6 +22,10 @@ export function componentKindLabel(component) {
21
22
  const def = component.definition;
22
23
  return def?.mode === 'ab_test' ? 'A/B tested section' : 'Personalized section';
23
24
  }
25
+ case 'moduleVariantContainer': {
26
+ const def = component.definition;
27
+ return def?.mode === 'ab_test' ? 'A/B tested module' : 'Personalized module';
28
+ }
24
29
  default:
25
30
  return component.type;
26
31
  }
@@ -30,6 +35,7 @@ export const COMPONENT_KIND_FILTERS = [
30
35
  { value: 'module', label: 'Modules' },
31
36
  { value: 'section', label: 'Sections' },
32
37
  { value: 'variantContainer', label: 'Personalized sections' },
38
+ { value: 'moduleVariantContainer', label: 'Personalized modules' },
33
39
  ];
34
40
  /**
35
41
  * Does this component match the library's name/description search box?
@@ -65,6 +71,13 @@ export function usageSummary(usage) {
65
71
  if (usage.trashedInstances > 0) {
66
72
  parts.push(`plus ${usage.trashedInstances} in the trash`);
67
73
  }
74
+ // Saved layouts are named, never folded into the page count (kywi-cms#156):
75
+ // a blueprint is not a page a reader can open, but it does hold the link — so
76
+ // a component that reads "not used on any page" can still be undeletable, and
77
+ // this clause is where that stops being a surprise.
78
+ if (usage.blueprints > 0) {
79
+ parts.push(`also in ${usage.blueprints} saved layout${usage.blueprints === 1 ? '' : 's'}`);
80
+ }
68
81
  return parts.join(' · ');
69
82
  }
70
83
  // ─── Transport ────────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"components-data.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components-data.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components-list.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6CrD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAM,EAAE,YAAY,2CAkcjE"}
1
+ {"version":3,"file":"components-list.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6CrD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAM,EAAE,YAAY,2CAofjE"}
@@ -127,7 +127,11 @@ export default function ComponentsListSurface(_props) {
127
127
  // Without a usage read, assume there ARE instances: `?detachAll=1` is safe on
128
128
  // a component with none (nothing to detach, then delete), whereas omitting it
129
129
  // on one that has some is a 409 the user would have to answer again.
130
- const placed = pendingDelete.forceDetachAll || usage === null || usage.instances + usage.trashedInstances > 0;
130
+ // Saved layouts count as placements (kywi-cms#156): the server refuses the
131
+ // delete over them, and detach-all rewrites them.
132
+ const placed = pendingDelete.forceDetachAll ||
133
+ usage === null ||
134
+ usage.instances + usage.trashedInstances + usage.blueprintInstances > 0;
131
135
  setPendingDelete({ ...pendingDelete, busy: true, error: null });
132
136
  try {
133
137
  await deleteComponent(adminFetch, component.id, { detachAll: placed });
@@ -142,9 +146,16 @@ export default function ComponentsListSurface(_props) {
142
146
  setSkipped({
143
147
  name: component.name,
144
148
  pages: details?.skipped ?? [],
145
- titles: Object.fromEntries((usage?.items ?? [])
146
- .filter(item => item.title !== null)
147
- .map(item => [item.contentId, item.title])),
149
+ titles: Object.fromEntries([
150
+ ...(usage?.items ?? [])
151
+ .filter(item => item.title !== null)
152
+ .map(item => [item.contentId, item.title]),
153
+ // Blueprint names come from the same read, keyed by blueprint id —
154
+ // the skipped payload's `contentId` IS that id (kywi-cms#156).
155
+ ...(usage?.blueprintItems ?? [])
156
+ .filter(item => item.name !== null)
157
+ .map(item => [item.blueprintId, item.name]),
158
+ ]),
148
159
  });
149
160
  await load();
150
161
  return;
@@ -179,10 +190,12 @@ export default function ComponentsListSurface(_props) {
179
190
  if (!pendingDelete)
180
191
  return null;
181
192
  const { component, usage, loaded, usageError, error } = pendingDelete;
182
- return (_jsxs(_Fragment, { children: [!loaded ? (_jsxs("p", { children: ["Checking where \u201C", component.name, "\u201D is used\u2026"] })) : usage === null ? (_jsxs("p", { children: ["Could not read where \u201C", component.name, "\u201D is used (", usageError, "). Any instances will be detached into independent copies before it is deleted, and each page will keep rendering exactly what it renders now."] })) : usage.instances === 0 && usage.trashedInstances === 0 ? (_jsxs("p", { children: ["\u201C", component.name, "\u201D is not used on any page. Deleting it cannot change what any page renders."] })) : (_jsxs(_Fragment, { children: [_jsxs("p", { children: [_jsxs("strong", { children: [usage.instances, " instance", usage.instances === 1 ? '' : 's', " across ", usage.pages, ' ', "page", usage.pages === 1 ? '' : 's'] }), ' ', "will be detached into independent copies, then \u201C", component.name, "\u201D will be deleted. Every page keeps rendering exactly what it renders now \u2014 published pages included \u2014 but they stop following this component."] }), usage.trashedInstances > 0 && (_jsxs("p", { className: "kywi-text-muted", children: ["Plus ", usage.trashedInstances, " instance", usage.trashedInstances === 1 ? '' : 's', " on", ' ', usage.trashedPages, " page", usage.trashedPages === 1 ? '' : 's', " in the trash, which are detached too so restoring one does not bring back a broken link."] })), usage.items.length > 0 && (_jsx("ul", { className: "kywi-admin-confirm-list", children: usage.items.map(item => (_jsxs("li", { children: [item.title ?? item.contentId, item.nodeIds.length > 1 ? ` (${item.nodeIds.length} instances)` : ''] }, item.contentId))) }))] })), error && _jsx("p", { className: "kywi-admin-error-message", role: "alert", children: error })] }));
183
- }, [pendingDelete]);
193
+ return (_jsxs(_Fragment, { children: [!loaded ? (_jsxs("p", { children: ["Checking where \u201C", component.name, "\u201D is used\u2026"] })) : usage === null ? (_jsxs("p", { children: ["Could not read where \u201C", component.name, "\u201D is used (", usageError, "). Any instances will be detached into independent copies before it is deleted, and each page will keep rendering exactly what it renders now."] })) : usage.instances === 0 && usage.trashedInstances === 0 && usage.blueprints === 0 ? (_jsxs("p", { children: ["\u201C", component.name, "\u201D is not used on any page. Deleting it cannot change what any page renders."] })) : (_jsxs(_Fragment, { children: [usage.instances > 0 ? (_jsxs("p", { children: [_jsxs("strong", { children: [usage.instances, " instance", usage.instances === 1 ? '' : 's', " across ", usage.pages, ' ', "page", usage.pages === 1 ? '' : 's'] }), ' ', "will be detached into independent copies, then \u201C", component.name, "\u201D will be deleted. Every page keeps rendering exactly what it renders now \u2014 published pages included \u2014 but they stop following this component."] })) : (_jsxs("p", { children: ["\u201C", component.name, "\u201D is not used on any page, but it is still in use. Everything below will be detached into an independent copy before it is deleted, and each holder keeps rendering exactly what it renders now."] })), usage.trashedInstances > 0 && (_jsxs("p", { className: "kywi-text-muted", children: ["Plus ", usage.trashedInstances, " instance", usage.trashedInstances === 1 ? '' : 's', " on", ' ', usage.trashedPages, " page", usage.trashedPages === 1 ? '' : 's', " in the trash, which are detached too so restoring one does not bring back a broken link."] })), usage.items.length > 0 && (_jsx("ul", { className: "kywi-admin-confirm-list", children: usage.items.map(item => (_jsxs("li", { children: [item.title ?? item.contentId, item.nodeIds.length > 1 ? ` (${item.nodeIds.length} instances)` : ''] }, item.contentId))) })), usage.blueprints > 0 && (_jsxs(_Fragment, { children: [_jsxs("p", { className: "kywi-text-muted", "data-usage-blueprints": "", children: ["Plus ", usage.blueprintInstances, " instance", usage.blueprintInstances === 1 ? '' : 's', " in ", usage.blueprints, " saved layout", usage.blueprints === 1 ? '' : 's', ", which are detached too so a page made from one later does not start out with a broken link."] }), _jsx("ul", { className: "kywi-admin-confirm-list", children: usage.blueprintItems.map(item => (_jsx("li", { children: _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-sm", onClick: () => navigate(`/admin/layouts/${item.blueprintId}`), children: item.name ?? item.blueprintId }) }, item.blueprintId))) })] }))] })), error && _jsx("p", { className: "kywi-admin-error-message", role: "alert", children: error })] }));
194
+ }, [pendingDelete, navigate]);
184
195
  // ── Render ─────────────────────────────────────────────────────────────────
185
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsxs("div", { children: [_jsx("h1", { children: "Components" }), _jsxs("p", { className: "kywi-text-muted", children: ["Reusable modules, sections and personalized sections, saved from the editors. Every page that places one ", _jsx("strong", { children: "links" }), " to it, so editing a component here updates every instance everywhere \u2014 published pages included \u2014 the moment you save."] })] }) }), skipped && (_jsxs("div", { className: "kywi-admin-error", role: "alert", children: [_jsxs("p", { className: "kywi-admin-error-message", children: ["\u201C", skipped.name, "\u201D was ", _jsx("strong", { children: "not" }), " deleted: ", skipped.pages.length, " page", skipped.pages.length === 1 ? '' : 's', " could not be detached, so they still use it."] }), _jsx("ul", { className: "kywi-admin-confirm-list", children: skipped.pages.map(page => (_jsxs("li", { children: [skipped.titles[page.contentId] ?? page.contentId, " (", page.contentType, ") \u2014 ", page.detail] }, page.contentId))) }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: () => setSkipped(null), children: "Dismiss" })] })), loading ? (_jsx(LoadingState, { label: "Loading components\u2026" })) : error ? (_jsx(ErrorState, { message: error, onRetry: load })) : components.length === 0 ? (_jsx("div", { className: "kywi-empty-state", children: _jsxs("p", { children: ["No components yet. Open a page in the editor, select a module or section, and choose", ' ', _jsx("strong", { children: "Save as component" }), " \u2014 components are born from real pages rather than created blank here."] }) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-components-filters", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "kywi-components-search", className: "kywi-field-label", children: "Search" }), _jsx("input", { id: "kywi-components-search", type: "search", className: "kywi-input", value: search, placeholder: "Name, description or module type", onChange: e => setSearch(e.target.value) })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "kywi-components-type", className: "kywi-field-label", children: "Type" }), _jsxs("select", { id: "kywi-components-type", className: "kywi-input", value: kindFilter, onChange: e => setKindFilter(e.target.value), children: [_jsx("option", { value: "", children: "All types" }), COMPONENT_KIND_FILTERS.map(filter => (_jsx("option", { value: filter.value, children: filter.label }, filter.value)))] })] })] }), visible.length === 0 ? (_jsx("div", { className: "kywi-empty-state", children: _jsx("p", { children: "No components match that filter." }) })) : (_jsx("div", { className: "kywi-table-scroll", children: _jsxs("table", { className: "kywi-table kywi-components-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Name" }), _jsx("th", { children: "Type" }), _jsx("th", { children: "Module" }), _jsx("th", { children: "Used on" }), _jsx("th", { children: "Updated" }), _jsx("th", { className: "kywi-col-actions", children: "Actions" })] }) }), _jsx("tbody", { children: visible.map(component => {
196
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsxs("div", { children: [_jsx("h1", { children: "Components" }), _jsxs("p", { className: "kywi-text-muted", children: ["Reusable modules, sections and personalized sections, saved from the editors. Every page that places one ", _jsx("strong", { children: "links" }), " to it, so editing a component here updates every instance everywhere \u2014 published pages included \u2014 the moment you save."] })] }) }), skipped && (_jsxs("div", { className: "kywi-admin-error", role: "alert", children: [_jsxs("p", { className: "kywi-admin-error-message", children: ["\u201C", skipped.name, "\u201D was ", _jsx("strong", { children: "not" }), " deleted: ", skipped.pages.length, " document", skipped.pages.length === 1 ? '' : 's', " could not be detached, so they still use it."] }), _jsx("ul", { className: "kywi-admin-confirm-list", children: skipped.pages.map(page => (_jsxs("li", { children: [page.holderKind === 'blueprint'
197
+ ? `${skipped.titles[page.contentId] ?? page.contentId} (saved layout)`
198
+ : `${skipped.titles[page.contentId] ?? page.contentId} (${page.contentType})`, ' ', "\u2014 ", page.detail] }, page.contentId))) }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: () => setSkipped(null), children: "Dismiss" })] })), loading ? (_jsx(LoadingState, { label: "Loading components\u2026" })) : error ? (_jsx(ErrorState, { message: error, onRetry: load })) : components.length === 0 ? (_jsx("div", { className: "kywi-empty-state", children: _jsxs("p", { children: ["No components yet. Open a page in the editor, select a module or section, and choose", ' ', _jsx("strong", { children: "Save as component" }), " \u2014 components are born from real pages rather than created blank here."] }) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-components-filters", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "kywi-components-search", className: "kywi-field-label", children: "Search" }), _jsx("input", { id: "kywi-components-search", type: "search", className: "kywi-input", value: search, placeholder: "Name, description or module type", onChange: e => setSearch(e.target.value) })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "kywi-components-type", className: "kywi-field-label", children: "Type" }), _jsxs("select", { id: "kywi-components-type", className: "kywi-input", value: kindFilter, onChange: e => setKindFilter(e.target.value), children: [_jsx("option", { value: "", children: "All types" }), COMPONENT_KIND_FILTERS.map(filter => (_jsx("option", { value: filter.value, children: filter.label }, filter.value)))] })] })] }), visible.length === 0 ? (_jsx("div", { className: "kywi-empty-state", children: _jsx("p", { children: "No components match that filter." }) })) : (_jsx("div", { className: "kywi-table-scroll", children: _jsxs("table", { className: "kywi-table kywi-components-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Name" }), _jsx("th", { children: "Type" }), _jsx("th", { children: "Module" }), _jsx("th", { children: "Used on" }), _jsx("th", { children: "Updated" }), _jsx("th", { className: "kywi-col-actions", children: "Actions" })] }) }), _jsx("tbody", { children: visible.map(component => {
186
199
  const unused = component.usage?.instances === 0;
187
200
  return (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("button", { type: "button", className: "kywi-link-button", onClick: () => navigate(`/admin/components/${component.id}`), children: component.name }), component.description && (_jsx("div", { className: "kywi-text-muted", children: component.description }))] }), _jsx("td", { children: componentKindLabel(component) }), _jsx("td", { children: component.moduleType ? _jsx("code", { children: component.moduleType }) : '—' }), _jsx("td", { className: unused ? 'kywi-component-usage kywi-component-usage--unused' : 'kywi-component-usage', children: usageSummary(component.usage) }), _jsx("td", { children: component.updatedAt ? new Date(component.updatedAt).toLocaleDateString() : '—' }), _jsxs("td", { className: "kywi-col-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-sm", onClick: () => navigate(`/admin/components/${component.id}`), children: "Edit" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-sm", onClick: () => setRename({
188
201
  component,
@@ -1 +1 @@
1
- {"version":3,"file":"components-list.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components-list.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"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"}
@@ -19,17 +19,25 @@
19
19
  * — and the honest response to "you built something this component cannot hold"
20
20
  * is to say so, not to silently keep the first node and drop the rest.
21
21
  */
22
- import type { LayoutDocument, LayoutSection, VariantContainer } from '../../../layout/types.js';
22
+ import type { LayoutDocument, LayoutSection, ModuleVariantContainer, VariantContainer } from '../../../layout/types.js';
23
23
  import type { ComponentRow } from './components-data.js';
24
24
  /** The single region a definition canvas document has. */
25
25
  export declare const DEFINITION_REGION = "main";
26
26
  export type ExtractResult = {
27
27
  ok: true;
28
- definition: LayoutSection | VariantContainer;
28
+ definition: LayoutSection | VariantContainer | ModuleVariantContainer;
29
29
  } | {
30
30
  ok: false;
31
31
  error: string;
32
32
  };
33
+ /**
34
+ * The stored definition of a `moduleVariantContainer` component, or null when it
35
+ * doesn't match the row's type.
36
+ *
37
+ * Structural, like {@link readRegionNode}: a module's `type` is a registry name a
38
+ * host pack chooses, so the discriminant alone is not proof of shape.
39
+ */
40
+ export declare function readModuleVariantContainerDefinition(component: Pick<ComponentRow, 'type' | 'definition'>): ModuleVariantContainer | null;
33
41
  /**
34
42
  * Wrap a section/container definition as a one-node, one-region document.
35
43
  *
@@ -41,7 +49,7 @@ export type ExtractResult = {
41
49
  */
42
50
  export declare function seedDefinitionDocument(component: Pick<ComponentRow, 'type' | 'definition'>): LayoutDocument;
43
51
  /** The definition as a region node, or null when it doesn't match the row's type. */
44
- export declare function readRegionNode(component: Pick<ComponentRow, 'type' | 'definition'>): LayoutSection | VariantContainer | null;
52
+ export declare function readRegionNode(component: Pick<ComponentRow, 'type' | 'definition'>): LayoutSection | VariantContainer | ModuleVariantContainer | null;
45
53
  /**
46
54
  * Read the edited document back as a definition for a component of `type`, or
47
55
  * explain why it isn't one.
@@ -1 +1 @@
1
- {"version":3,"file":"definition-canvas.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/definition-canvas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAc,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAG3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,SAAS,CAAA;AAEvC,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,aAAa,GAAG,gBAAgB,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhC;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,cAAc,CAG3G;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GACnD,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAkBzC;AAoBD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,GAC/F,aAAa,CAwFf;AAsFD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAEnE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,GAC1C;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAYnE"}
1
+ {"version":3,"file":"definition-canvas.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/definition-canvas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,sBAAsB,EAEtB,gBAAgB,EACjB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,SAAS,CAAA;AAEvC,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,aAAa,GAAG,gBAAgB,GAAG,sBAAsB,CAAA;CAAE,GACnF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AA6BhC;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GACnD,sBAAsB,GAAG,IAAI,CAK/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,cAAc,CAU3G;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GACnD,aAAa,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,IAAI,CAwBlE;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,GAC/F,aAAa,CAsHf;AAmID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAEnE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,GAC1C;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAYnE"}
@@ -2,6 +2,46 @@ import { isModuleVariantContainer } from '../../../layout/types.js';
2
2
  import { validateComponentDefinition } from '../../../layout/component-refs.js';
3
3
  /** The single region a definition canvas document has. */
4
4
  export const DEFINITION_REGION = 'main';
5
+ /**
6
+ * The synthetic host a MODULE-level container definition is edited inside
7
+ * (kywi-cms#170).
8
+ *
9
+ * A module container is not a region node — it lives in a COLUMN — so unlike the
10
+ * other two region kinds it cannot be handed to the canvas as-is. It is wrapped
11
+ * in a one-section, one-column shell on the way in and unwrapped on the way out,
12
+ * and the shell's own ids are derived from the container's so two successive
13
+ * saves of an untouched component still produce identical rows.
14
+ *
15
+ * The wrapper is NOT stored: `extractDefinition` returns the container alone, so
16
+ * the row's `definition` stays exactly the shape `componentDetachSource` and the
17
+ * renderer read.
18
+ */
19
+ const DEFINITION_WRAPPER_SUFFIX = '-definition-host';
20
+ function wrapModuleVariantContainer(container) {
21
+ return {
22
+ id: `${container.id}${DEFINITION_WRAPPER_SUFFIX}`,
23
+ type: 'section',
24
+ style: {},
25
+ columns: [
26
+ { id: `${container.id}${DEFINITION_WRAPPER_SUFFIX}-column`, width: 12, nodes: [container] },
27
+ ],
28
+ };
29
+ }
30
+ /**
31
+ * The stored definition of a `moduleVariantContainer` component, or null when it
32
+ * doesn't match the row's type.
33
+ *
34
+ * Structural, like {@link readRegionNode}: a module's `type` is a registry name a
35
+ * host pack chooses, so the discriminant alone is not proof of shape.
36
+ */
37
+ export function readModuleVariantContainerDefinition(component) {
38
+ if (component.type !== 'moduleVariantContainer')
39
+ return null;
40
+ const def = component.definition;
41
+ if (typeof def !== 'object' || def === null || Array.isArray(def))
42
+ return null;
43
+ return isModuleVariantContainer(def) ? def : null;
44
+ }
5
45
  /**
6
46
  * Wrap a section/container definition as a one-node, one-region document.
7
47
  *
@@ -12,11 +52,25 @@ export const DEFINITION_REGION = 'main';
12
52
  * caller surfaces the mismatch separately.
13
53
  */
14
54
  export function seedDefinitionDocument(component) {
55
+ const moduleContainer = readModuleVariantContainerDefinition(component);
56
+ if (moduleContainer) {
57
+ return { regions: { [DEFINITION_REGION]: [wrapModuleVariantContainer(moduleContainer)] } };
58
+ }
15
59
  const node = readRegionNode(component);
16
- return { regions: { [DEFINITION_REGION]: node ? [node] : [] } };
60
+ // `readRegionNode` also answers for the module-container kind (see its note),
61
+ // but that branch returned above, so what is left here really is a region node.
62
+ const regionNode = node && node.type !== 'moduleVariantContainer' ? node : null;
63
+ return { regions: { [DEFINITION_REGION]: regionNode ? [regionNode] : [] } };
17
64
  }
18
65
  /** The definition as a region node, or null when it doesn't match the row's type. */
19
66
  export function readRegionNode(component) {
67
+ // The fourth kind is not a region node, but "does the stored definition match
68
+ // the row's declared type" is the question every caller is really asking —
69
+ // `component-edit.tsx` gates its whole error state on it — so answer it here
70
+ // rather than making each caller learn a second function (kywi-cms#170).
71
+ const moduleContainer = readModuleVariantContainerDefinition(component);
72
+ if (moduleContainer)
73
+ return moduleContainer;
20
74
  const def = component.definition;
21
75
  if (typeof def !== 'object' || def === null || Array.isArray(def))
22
76
  return null;
@@ -42,11 +96,11 @@ export function readRegionNode(component) {
42
96
  * a module-level container inside a section-level one, because a stored row that
43
97
  * predates that refusal reaches here without ever having been validated.
44
98
  */
45
- function holdsModuleVariantContainer(node) {
99
+ function holdsAbTestedModule(node) {
46
100
  const sections = node.type === 'section'
47
101
  ? [node]
48
102
  : [...(node.defaultSections ?? []), ...(node.variants ?? []).flatMap(v => v.sections ?? [])];
49
- return sections.some(section => (section.columns ?? []).some(column => (column.nodes ?? []).some(isModuleVariantContainer)));
103
+ return sections.some(section => (section.columns ?? []).some(column => (column.nodes ?? []).some(n => isModuleVariantContainer(n) && n.mode === 'ab_test')));
50
104
  }
51
105
  /**
52
106
  * Read the edited document back as a definition for a component of `type`, or
@@ -100,19 +154,47 @@ export function extractDefinition(doc, component) {
100
154
  'Personalize it again, or save it as a new component.',
101
155
  };
102
156
  }
103
- // A promoted MODULE is the same rule one level down (kywi-cms#161 final
104
- // review): a `moduleVariantContainer` stored in a definition holds ONE
105
- // `experimentId` for every page that places the component, so two placements
106
- // share a single experiment's buckets and exposures. Nothing scopes it —
107
- // `rekeyResolvedSection` re-keys arm MODULE ids per placement, never the
108
- // binding. The editor withholds promote on this canvas (`canvasKind`); this is
109
- // the fail-safe for a document that arrives holding one anyway (MCP, a direct
110
- // API write, a row stored before this refusal).
111
- if (holdsModuleVariantContainer(node)) {
157
+ // The fourth kind edits inside a synthetic one-section/one-column host
158
+ // (kywi-cms#170). Unwrap it here, so everything below the binding pin and the
159
+ // real validator sees the container the row actually stores.
160
+ if (component.type === 'moduleVariantContainer') {
161
+ const unwrapped = unwrapModuleVariantContainer(node);
162
+ if (!unwrapped.ok)
163
+ return unwrapped;
164
+ const pinned = pinDefinitionBinding(unwrapped.container, readModuleVariantContainerDefinition({
165
+ type: 'moduleVariantContainer',
166
+ definition: component.definition,
167
+ }), 'module');
168
+ if (!pinned.ok)
169
+ return pinned;
170
+ const check = validateComponentDefinition({
171
+ type: component.type,
172
+ moduleType: component.moduleType,
173
+ definition: pinned.container,
174
+ });
175
+ if (!check.success)
176
+ return { ok: false, error: check.error };
177
+ return { ok: true, definition: pinned.container };
178
+ }
179
+ // An A/B TESTED module is the same rule one level down (kywi-cms#161 final
180
+ // review, narrowed in #170): an `ab_test` `moduleVariantContainer` stored in a
181
+ // section/container definition holds ONE `experimentId` for every page that
182
+ // places the component, so two placements share a single experiment's buckets
183
+ // and exposures. Nothing scopes it — `rekeyResolvedSection` re-keys the
184
+ // container and its arms per placement, never the binding.
185
+ //
186
+ // A merely PERSONALIZED module is no longer refused: its arms are audiences,
187
+ // and audiences are content that travels with a component perfectly well. The
188
+ // editor withholds promote on this canvas (`canvasKind`); this is the
189
+ // fail-safe for a document that arrives holding an A/B one anyway (MCP, a
190
+ // direct API write, a row stored before this refusal).
191
+ if (holdsAbTestedModule(node)) {
112
192
  return {
113
193
  ok: false,
114
- error: 'A component cannot hold a personalized module. Remove the personalization before saving — ' +
115
- 'personalize the module on the page that places this component instead.',
194
+ error: 'A component cannot hold an A/B tested module. Remove the test before saving — every page ' +
195
+ 'placing this component would report into that one experiment, and a winner picked on any ' +
196
+ 'of them would decide them all. Save the module itself as a component instead, or A/B test ' +
197
+ 'the whole section.',
116
198
  };
117
199
  }
118
200
  // An experiment binding is the PLACEMENT's, never the definition's own to mint
@@ -169,7 +251,9 @@ export function extractDefinition(doc, component) {
169
251
  * made elsewhere, so the rule is flat — an A/B test is built on a page and saved
170
252
  * from there, which is also the only route that gives each placement its own run.
171
253
  */
172
- function pinDefinitionBinding(container, stored) {
254
+ function pinDefinitionBinding(container, stored,
255
+ /** What the refusal calls the thing, since the rule serves both kinds now. */
256
+ what = 'section') {
173
257
  const { experimentId: _canvasRun, winnerId: _canvasWinner, ...rest } = container;
174
258
  if (container.mode !== 'ab_test') {
175
259
  if (container.experimentId === undefined && container.winnerId === undefined) {
@@ -182,10 +266,10 @@ function pinDefinitionBinding(container, stored) {
182
266
  if (stored?.mode !== 'ab_test') {
183
267
  return {
184
268
  ok: false,
185
- error: 'This component cannot be turned into an A/B tested section here. An experiment belongs to ' +
269
+ error: `This component cannot be turned into an A/B tested ${what} here. An experiment belongs to ` +
186
270
  'one placement — every page that places this component and has no experiment of its own ' +
187
271
  'would be pulled into a single shared run. Build the A/B test on a page, then save that ' +
188
- 'section as a component: each placement gets its own experiment.',
272
+ `${what} as a component: each placement gets its own experiment.`,
189
273
  };
190
274
  }
191
275
  const experimentId = stored.experimentId;
@@ -210,6 +294,43 @@ function pinDefinitionBinding(container, stored) {
210
294
  },
211
295
  };
212
296
  }
297
+ /**
298
+ * Read the single module container back out of the synthetic host the canvas
299
+ * edits it in (kywi-cms#170), or explain what the author built instead.
300
+ *
301
+ * The messages are the same shape the region kinds' own mismatches use: say what
302
+ * the canvas is holding and what to do about it, rather than dropping the extra
303
+ * content silently.
304
+ */
305
+ function unwrapModuleVariantContainer(node) {
306
+ if (node.type !== 'section') {
307
+ return {
308
+ ok: false,
309
+ error: 'This is a personalized module component, but the canvas holds a personalized section. ' +
310
+ 'Remove the section-level personalization, or save it as a new component.',
311
+ };
312
+ }
313
+ const nodes = (node.columns ?? []).flatMap(column => column.nodes ?? []);
314
+ if (nodes.length === 0) {
315
+ return { ok: false, error: 'This component is empty. Add a module before saving.' };
316
+ }
317
+ if (nodes.length > 1) {
318
+ return {
319
+ ok: false,
320
+ error: `A personalized module component is a single module, but the canvas holds ${nodes.length}. ` +
321
+ 'Delete the extra modules, or save them as components of their own.',
322
+ };
323
+ }
324
+ const only = nodes[0];
325
+ if (!isModuleVariantContainer(only)) {
326
+ return {
327
+ ok: false,
328
+ error: 'This is a personalized module component, but the canvas holds a plain module. ' +
329
+ 'Personalize it again, or save it as a new component.',
330
+ };
331
+ }
332
+ return { ok: true, container: only };
333
+ }
213
334
  /**
214
335
  * A module component's definition: exactly the `{ props, style }` pair the
215
336
  * renderer reads (`componentDetachSource`). Nothing else is stored, so nothing