@kywi-software/core 0.2.0 → 0.3.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 (364) hide show
  1. package/README.md +57 -2
  2. package/dist/admin/app.d.ts +10 -1
  3. package/dist/admin/app.d.ts.map +1 -1
  4. package/dist/admin/app.js +2 -2
  5. package/dist/admin/app.js.map +1 -1
  6. package/dist/admin/approval-queue.d.ts +3 -1
  7. package/dist/admin/approval-queue.d.ts.map +1 -1
  8. package/dist/admin/approval-queue.js +2 -2
  9. package/dist/admin/approval-queue.js.map +1 -1
  10. package/dist/admin/audience-list.d.ts.map +1 -1
  11. package/dist/admin/audience-list.js +9 -1
  12. package/dist/admin/audience-list.js.map +1 -1
  13. package/dist/admin/chrome.d.ts +7 -1
  14. package/dist/admin/chrome.d.ts.map +1 -1
  15. package/dist/admin/chrome.js +2 -1
  16. package/dist/admin/chrome.js.map +1 -1
  17. package/dist/admin/content-editor-api.d.ts +27 -1
  18. package/dist/admin/content-editor-api.d.ts.map +1 -1
  19. package/dist/admin/content-editor-api.js +60 -2
  20. package/dist/admin/content-editor-api.js.map +1 -1
  21. package/dist/admin/content-form.d.ts +62 -6
  22. package/dist/admin/content-form.d.ts.map +1 -1
  23. package/dist/admin/content-form.js +118 -13
  24. package/dist/admin/content-form.js.map +1 -1
  25. package/dist/admin/content-permissions-tab.d.ts +13 -0
  26. package/dist/admin/content-permissions-tab.d.ts.map +1 -0
  27. package/dist/admin/content-permissions-tab.js +90 -0
  28. package/dist/admin/content-permissions-tab.js.map +1 -0
  29. package/dist/admin/context.d.ts +8 -0
  30. package/dist/admin/context.d.ts.map +1 -1
  31. package/dist/admin/context.js.map +1 -1
  32. package/dist/admin/feed-builder.d.ts.map +1 -1
  33. package/dist/admin/feed-builder.js +20 -1
  34. package/dist/admin/feed-builder.js.map +1 -1
  35. package/dist/admin/field-components.d.ts.map +1 -1
  36. package/dist/admin/field-components.js +26 -1
  37. package/dist/admin/field-components.js.map +1 -1
  38. package/dist/admin/form-builder.js +6 -1
  39. package/dist/admin/form-builder.js.map +1 -1
  40. package/dist/admin/form-helpers.d.ts.map +1 -1
  41. package/dist/admin/form-helpers.js +2 -0
  42. package/dist/admin/form-helpers.js.map +1 -1
  43. package/dist/admin/kywi-logo.d.ts +21 -0
  44. package/dist/admin/kywi-logo.d.ts.map +1 -0
  45. package/dist/admin/kywi-logo.js +123 -0
  46. package/dist/admin/kywi-logo.js.map +1 -0
  47. package/dist/admin/layout-editor/component-actions.d.ts +18 -0
  48. package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
  49. package/dist/admin/layout-editor/component-actions.js +19 -0
  50. package/dist/admin/layout-editor/component-actions.js.map +1 -1
  51. package/dist/admin/layout-editor/component-picker-field.d.ts +20 -0
  52. package/dist/admin/layout-editor/component-picker-field.d.ts.map +1 -0
  53. package/dist/admin/layout-editor/component-picker-field.js +16 -0
  54. package/dist/admin/layout-editor/component-picker-field.js.map +1 -0
  55. package/dist/admin/layout-editor/drag-utils.d.ts +48 -0
  56. package/dist/admin/layout-editor/drag-utils.d.ts.map +1 -1
  57. package/dist/admin/layout-editor/drag-utils.js +43 -0
  58. package/dist/admin/layout-editor/drag-utils.js.map +1 -1
  59. package/dist/admin/layout-editor/editor-canvas.d.ts +9 -1
  60. package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
  61. package/dist/admin/layout-editor/editor-canvas.js +41 -15
  62. package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
  63. package/dist/admin/layout-editor/editor-state.d.ts +9 -1
  64. package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
  65. package/dist/admin/layout-editor/editor-state.js +34 -0
  66. package/dist/admin/layout-editor/editor-state.js.map +1 -1
  67. package/dist/admin/layout-editor/editor.css +83 -0
  68. package/dist/admin/layout-editor/form-picker-field.d.ts +17 -0
  69. package/dist/admin/layout-editor/form-picker-field.d.ts.map +1 -0
  70. package/dist/admin/layout-editor/form-picker-field.js +35 -0
  71. package/dist/admin/layout-editor/form-picker-field.js.map +1 -0
  72. package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
  73. package/dist/admin/layout-editor/layout-editor.js +95 -28
  74. package/dist/admin/layout-editor/layout-editor.js.map +1 -1
  75. package/dist/admin/layout-editor/mode-toggle.d.ts.map +1 -1
  76. package/dist/admin/layout-editor/mode-toggle.js +1 -1
  77. package/dist/admin/layout-editor/mode-toggle.js.map +1 -1
  78. package/dist/admin/layout-editor/module-overlay.d.ts +10 -1
  79. package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
  80. package/dist/admin/layout-editor/module-overlay.js +3 -3
  81. package/dist/admin/layout-editor/module-overlay.js.map +1 -1
  82. package/dist/admin/layout-editor/props-panel.d.ts +10 -1
  83. package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
  84. package/dist/admin/layout-editor/props-panel.js +25 -2
  85. package/dist/admin/layout-editor/props-panel.js.map +1 -1
  86. package/dist/admin/layout-editor/section-insert-line.d.ts.map +1 -1
  87. package/dist/admin/layout-editor/section-insert-line.js +1 -1
  88. package/dist/admin/layout-editor/section-insert-line.js.map +1 -1
  89. package/dist/admin/layout-editor/section-overlay.d.ts.map +1 -1
  90. package/dist/admin/layout-editor/section-overlay.js +1 -1
  91. package/dist/admin/layout-editor/section-overlay.js.map +1 -1
  92. package/dist/admin/layout-editor/section-template-picker.d.ts +9 -1
  93. package/dist/admin/layout-editor/section-template-picker.d.ts.map +1 -1
  94. package/dist/admin/layout-editor/section-template-picker.js +45 -2
  95. package/dist/admin/layout-editor/section-template-picker.js.map +1 -1
  96. package/dist/admin/registry.d.ts.map +1 -1
  97. package/dist/admin/registry.js +11 -0
  98. package/dist/admin/registry.js.map +1 -1
  99. package/dist/admin/server.d.ts +15 -2
  100. package/dist/admin/server.d.ts.map +1 -1
  101. package/dist/admin/server.js +37 -1
  102. package/dist/admin/server.js.map +1 -1
  103. package/dist/admin/shell.d.ts.map +1 -1
  104. package/dist/admin/shell.js +62 -3
  105. package/dist/admin/shell.js.map +1 -1
  106. package/dist/admin/styles/admin.css +105 -27
  107. package/dist/admin/surface-matcher.d.ts +27 -0
  108. package/dist/admin/surface-matcher.d.ts.map +1 -1
  109. package/dist/admin/surface-matcher.js +11 -0
  110. package/dist/admin/surface-matcher.js.map +1 -1
  111. package/dist/admin/surfaces/approvals/approvals-data.d.ts +29 -9
  112. package/dist/admin/surfaces/approvals/approvals-data.d.ts.map +1 -1
  113. package/dist/admin/surfaces/approvals/approvals-data.js +65 -22
  114. package/dist/admin/surfaces/approvals/approvals-data.js.map +1 -1
  115. package/dist/admin/surfaces/approvals/approvals-index.d.ts.map +1 -1
  116. package/dist/admin/surfaces/approvals/approvals-index.js +47 -14
  117. package/dist/admin/surfaces/approvals/approvals-index.js.map +1 -1
  118. package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -1
  119. package/dist/admin/surfaces/content/content-edit.js +34 -8
  120. package/dist/admin/surfaces/content/content-edit.js.map +1 -1
  121. package/dist/admin/surfaces/content/content-index.d.ts.map +1 -1
  122. package/dist/admin/surfaces/content/content-index.js +29 -2
  123. package/dist/admin/surfaces/content/content-index.js.map +1 -1
  124. package/dist/admin/surfaces/content/content-new.d.ts.map +1 -1
  125. package/dist/admin/surfaces/content/content-new.js +6 -4
  126. package/dist/admin/surfaces/content/content-new.js.map +1 -1
  127. package/dist/admin/surfaces/contentTree/content-tree.d.ts.map +1 -1
  128. package/dist/admin/surfaces/contentTree/content-tree.js +25 -2
  129. package/dist/admin/surfaces/contentTree/content-tree.js.map +1 -1
  130. package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts.map +1 -1
  131. package/dist/admin/surfaces/contentTypes/content-types-designer.js +78 -47
  132. package/dist/admin/surfaces/contentTypes/content-types-designer.js.map +1 -1
  133. package/dist/admin/surfaces/feeds/feed-editor.d.ts.map +1 -1
  134. package/dist/admin/surfaces/feeds/feed-editor.js +21 -4
  135. package/dist/admin/surfaces/feeds/feed-editor.js.map +1 -1
  136. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -1
  137. package/dist/admin/surfaces/layouts/layout-editor-client.js +7 -4
  138. package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -1
  139. package/dist/admin/surfaces/login.d.ts.map +1 -1
  140. package/dist/admin/surfaces/login.js +2 -1
  141. package/dist/admin/surfaces/login.js.map +1 -1
  142. package/dist/admin/surfaces/media/media-client.d.ts.map +1 -1
  143. package/dist/admin/surfaces/media/media-client.js +10 -2
  144. package/dist/admin/surfaces/media/media-client.js.map +1 -1
  145. package/dist/admin/surfaces/settings/settings-site.d.ts.map +1 -1
  146. package/dist/admin/surfaces/settings/settings-site.js +39 -2
  147. package/dist/admin/surfaces/settings/settings-site.js.map +1 -1
  148. package/dist/admin/surfaces/settings/settings-sites.js +18 -0
  149. package/dist/admin/surfaces/settings/settings-sites.js.map +1 -1
  150. package/dist/admin/surfaces/trash/trash-index.d.ts.map +1 -1
  151. package/dist/admin/surfaces/trash/trash-index.js +45 -8
  152. package/dist/admin/surfaces/trash/trash-index.js.map +1 -1
  153. package/dist/admin/surfaces/users/users-data.d.ts +11 -0
  154. package/dist/admin/surfaces/users/users-data.d.ts.map +1 -1
  155. package/dist/admin/surfaces/users/users-data.js +20 -1
  156. package/dist/admin/surfaces/users/users-data.js.map +1 -1
  157. package/dist/admin/surfaces/webServices/web-services-data.d.ts +11 -1
  158. package/dist/admin/surfaces/webServices/web-services-data.d.ts.map +1 -1
  159. package/dist/admin/surfaces/webServices/web-services-data.js +13 -0
  160. package/dist/admin/surfaces/webServices/web-services-data.js.map +1 -1
  161. package/dist/admin/surfaces/webServices/webhooks.d.ts +3 -0
  162. package/dist/admin/surfaces/webServices/webhooks.d.ts.map +1 -0
  163. package/dist/admin/surfaces/webServices/webhooks.js +69 -0
  164. package/dist/admin/surfaces/webServices/webhooks.js.map +1 -0
  165. package/dist/admin/webhook-manager.d.ts +32 -0
  166. package/dist/admin/webhook-manager.d.ts.map +1 -0
  167. package/dist/admin/webhook-manager.js +62 -0
  168. package/dist/admin/webhook-manager.js.map +1 -0
  169. package/dist/api/admin-features-routes.d.ts.map +1 -1
  170. package/dist/api/admin-features-routes.js +30 -0
  171. package/dist/api/admin-features-routes.js.map +1 -1
  172. package/dist/api/api-key-routes.d.ts.map +1 -1
  173. package/dist/api/api-key-routes.js +6 -1
  174. package/dist/api/api-key-routes.js.map +1 -1
  175. package/dist/api/auth.d.ts +8 -0
  176. package/dist/api/auth.d.ts.map +1 -1
  177. package/dist/api/auth.js +11 -1
  178. package/dist/api/auth.js.map +1 -1
  179. package/dist/api/comment-routes.d.ts.map +1 -1
  180. package/dist/api/comment-routes.js +102 -47
  181. package/dist/api/comment-routes.js.map +1 -1
  182. package/dist/api/config-routes.d.ts +10 -2
  183. package/dist/api/config-routes.d.ts.map +1 -1
  184. package/dist/api/config-routes.js +46 -25
  185. package/dist/api/config-routes.js.map +1 -1
  186. package/dist/api/content-routes.d.ts.map +1 -1
  187. package/dist/api/content-routes.js +41 -0
  188. package/dist/api/content-routes.js.map +1 -1
  189. package/dist/api/content-schemas.d.ts.map +1 -1
  190. package/dist/api/content-schemas.js +34 -1
  191. package/dist/api/content-schemas.js.map +1 -1
  192. package/dist/api/content-type-routes.d.ts.map +1 -1
  193. package/dist/api/content-type-routes.js +58 -3
  194. package/dist/api/content-type-routes.js.map +1 -1
  195. package/dist/api/feed-routes.d.ts +180 -0
  196. package/dist/api/feed-routes.d.ts.map +1 -1
  197. package/dist/api/feed-routes.js +10 -2
  198. package/dist/api/feed-routes.js.map +1 -1
  199. package/dist/api/form-routes.d.ts +6 -0
  200. package/dist/api/form-routes.d.ts.map +1 -1
  201. package/dist/api/form-routes.js +93 -14
  202. package/dist/api/form-routes.js.map +1 -1
  203. package/dist/api/graphql/resolvers.d.ts +4 -4
  204. package/dist/api/index.d.ts.map +1 -1
  205. package/dist/api/index.js +12 -1
  206. package/dist/api/index.js.map +1 -1
  207. package/dist/api/media-routes.d.ts.map +1 -1
  208. package/dist/api/media-routes.js +18 -1
  209. package/dist/api/media-routes.js.map +1 -1
  210. package/dist/api/webhook-routes.d.ts.map +1 -1
  211. package/dist/api/webhook-routes.js +19 -2
  212. package/dist/api/webhook-routes.js.map +1 -1
  213. package/dist/api/workflow-routes.d.ts.map +1 -1
  214. package/dist/api/workflow-routes.js +163 -4
  215. package/dist/api/workflow-routes.js.map +1 -1
  216. package/dist/auth/roles.d.ts +28 -0
  217. package/dist/auth/roles.d.ts.map +1 -1
  218. package/dist/auth/roles.js +49 -0
  219. package/dist/auth/roles.js.map +1 -1
  220. package/dist/config/reserved-field-names.d.ts +29 -0
  221. package/dist/config/reserved-field-names.d.ts.map +1 -0
  222. package/dist/config/reserved-field-names.js +59 -0
  223. package/dist/config/reserved-field-names.js.map +1 -0
  224. package/dist/config/types.d.ts +31 -2
  225. package/dist/config/types.d.ts.map +1 -1
  226. package/dist/config/types.js.map +1 -1
  227. package/dist/db/analytics-queries.d.ts +1 -1
  228. package/dist/db/api-key-queries.d.ts +7 -2
  229. package/dist/db/api-key-queries.d.ts.map +1 -1
  230. package/dist/db/api-key-queries.js +8 -2
  231. package/dist/db/api-key-queries.js.map +1 -1
  232. package/dist/db/apply-snapshot.d.ts +58 -0
  233. package/dist/db/apply-snapshot.d.ts.map +1 -0
  234. package/dist/db/apply-snapshot.js +142 -0
  235. package/dist/db/apply-snapshot.js.map +1 -0
  236. package/dist/db/audit-queries.d.ts +3 -3
  237. package/dist/db/category-queries.d.ts +3 -3
  238. package/dist/db/changeset-audit-queries.d.ts +2 -2
  239. package/dist/db/changeset-queries.d.ts +5 -5
  240. package/dist/db/changeset-queries.d.ts.map +1 -1
  241. package/dist/db/changeset-queries.js +24 -7
  242. package/dist/db/changeset-queries.js.map +1 -1
  243. package/dist/db/content-queries.d.ts +6 -0
  244. package/dist/db/content-queries.d.ts.map +1 -1
  245. package/dist/db/content-queries.js +8 -0
  246. package/dist/db/content-queries.js.map +1 -1
  247. package/dist/db/content-type-queries.d.ts +20 -0
  248. package/dist/db/content-type-queries.d.ts.map +1 -1
  249. package/dist/db/content-type-queries.js +32 -0
  250. package/dist/db/content-type-queries.js.map +1 -1
  251. package/dist/db/dashboard-queries.d.ts.map +1 -1
  252. package/dist/db/dashboard-queries.js +5 -1
  253. package/dist/db/dashboard-queries.js.map +1 -1
  254. package/dist/db/dynamic-schema.d.ts.map +1 -1
  255. package/dist/db/dynamic-schema.js +2 -0
  256. package/dist/db/dynamic-schema.js.map +1 -1
  257. package/dist/db/extension-queries.d.ts +8 -8
  258. package/dist/db/feed-queries.d.ts +3 -3
  259. package/dist/db/index.d.ts +3 -0
  260. package/dist/db/index.d.ts.map +1 -1
  261. package/dist/db/index.js +7 -0
  262. package/dist/db/index.js.map +1 -1
  263. package/dist/db/media-queries.d.ts +31 -7
  264. package/dist/db/media-queries.d.ts.map +1 -1
  265. package/dist/db/media-queries.js +13 -1
  266. package/dist/db/media-queries.js.map +1 -1
  267. package/dist/db/membership-dedupe.d.ts +26 -0
  268. package/dist/db/membership-dedupe.d.ts.map +1 -0
  269. package/dist/db/membership-dedupe.js +68 -0
  270. package/dist/db/membership-dedupe.js.map +1 -0
  271. package/dist/db/revision-queries.d.ts +122 -0
  272. package/dist/db/revision-queries.d.ts.map +1 -0
  273. package/dist/db/revision-queries.js +213 -0
  274. package/dist/db/revision-queries.js.map +1 -0
  275. package/dist/db/schema-apply.d.ts +8 -0
  276. package/dist/db/schema-apply.d.ts.map +1 -1
  277. package/dist/db/schema-apply.js +17 -0
  278. package/dist/db/schema-apply.js.map +1 -1
  279. package/dist/db/schema-field-queries.d.ts +2 -0
  280. package/dist/db/schema-field-queries.d.ts.map +1 -1
  281. package/dist/db/schema-field-queries.js +4 -0
  282. package/dist/db/schema-field-queries.js.map +1 -1
  283. package/dist/db/site-plugin-queries.d.ts +2 -2
  284. package/dist/db/user-queries.d.ts +12 -0
  285. package/dist/db/user-queries.d.ts.map +1 -1
  286. package/dist/db/user-queries.js +18 -4
  287. package/dist/db/user-queries.js.map +1 -1
  288. package/dist/db/version-queries.d.ts +37 -0
  289. package/dist/db/version-queries.d.ts.map +1 -1
  290. package/dist/db/version-queries.js +36 -0
  291. package/dist/db/version-queries.js.map +1 -1
  292. package/dist/db/webhook-queries.d.ts +27 -5
  293. package/dist/db/webhook-queries.d.ts.map +1 -1
  294. package/dist/db/webhook-queries.js +17 -0
  295. package/dist/db/webhook-queries.js.map +1 -1
  296. package/dist/db/workflow-queries.d.ts +2 -2
  297. package/dist/experiments/schema.d.ts +1 -1
  298. package/dist/hooks/index.d.ts +1 -1
  299. package/dist/hooks/index.d.ts.map +1 -1
  300. package/dist/hooks/index.js +1 -1
  301. package/dist/hooks/index.js.map +1 -1
  302. package/dist/hooks/webhook-retry.d.ts +22 -1
  303. package/dist/hooks/webhook-retry.d.ts.map +1 -1
  304. package/dist/hooks/webhook-retry.js +38 -1
  305. package/dist/hooks/webhook-retry.js.map +1 -1
  306. package/dist/host/index.d.ts +28 -0
  307. package/dist/host/index.d.ts.map +1 -1
  308. package/dist/host/index.js +56 -1
  309. package/dist/host/index.js.map +1 -1
  310. package/dist/layout/comments-module.d.ts +18 -0
  311. package/dist/layout/comments-module.d.ts.map +1 -0
  312. package/dist/layout/comments-module.js +130 -0
  313. package/dist/layout/comments-module.js.map +1 -0
  314. package/dist/layout/feed-hydration.d.ts +75 -0
  315. package/dist/layout/feed-hydration.d.ts.map +1 -0
  316. package/dist/layout/feed-hydration.js +158 -0
  317. package/dist/layout/feed-hydration.js.map +1 -0
  318. package/dist/layout/index.d.ts +2 -1
  319. package/dist/layout/index.d.ts.map +1 -1
  320. package/dist/layout/index.js +2 -1
  321. package/dist/layout/index.js.map +1 -1
  322. package/dist/layout/module-render-context.d.ts +13 -0
  323. package/dist/layout/module-render-context.d.ts.map +1 -0
  324. package/dist/layout/module-render-context.js +15 -0
  325. package/dist/layout/module-render-context.js.map +1 -0
  326. package/dist/layout/modules-extended.d.ts.map +1 -1
  327. package/dist/layout/modules-extended.js +92 -13
  328. package/dist/layout/modules-extended.js.map +1 -1
  329. package/dist/layout/registry.d.ts.map +1 -1
  330. package/dist/layout/registry.js +22 -6
  331. package/dist/layout/registry.js.map +1 -1
  332. package/dist/layout/renderer.d.ts +17 -1
  333. package/dist/layout/renderer.d.ts.map +1 -1
  334. package/dist/layout/renderer.js +11 -4
  335. package/dist/layout/renderer.js.map +1 -1
  336. package/dist/nav/index.d.ts +1 -0
  337. package/dist/nav/index.d.ts.map +1 -1
  338. package/dist/nav/index.js +4 -0
  339. package/dist/nav/index.js.map +1 -1
  340. package/dist/nav/url-resolver.d.ts +10 -2
  341. package/dist/nav/url-resolver.d.ts.map +1 -1
  342. package/dist/nav/url-resolver.js +17 -3
  343. package/dist/nav/url-resolver.js.map +1 -1
  344. package/dist/schema/base.d.ts +37 -1
  345. package/dist/schema/base.d.ts.map +1 -1
  346. package/dist/schema/base.js +20 -2
  347. package/dist/schema/base.js.map +1 -1
  348. package/dist/schema/generate.d.ts +8 -0
  349. package/dist/schema/generate.d.ts.map +1 -1
  350. package/dist/schema/generate.js +7 -4
  351. package/dist/schema/generate.js.map +1 -1
  352. package/dist/schema/mapper.d.ts.map +1 -1
  353. package/dist/schema/mapper.js +2 -0
  354. package/dist/schema/mapper.js.map +1 -1
  355. package/dist/schema/mysql-tables.d.ts +34 -0
  356. package/dist/schema/mysql-tables.d.ts.map +1 -1
  357. package/dist/schema/mysql-tables.js +14 -2
  358. package/dist/schema/mysql-tables.js.map +1 -1
  359. package/dist/server.d.ts +1 -0
  360. package/dist/server.d.ts.map +1 -1
  361. package/dist/server.js +1 -0
  362. package/dist/server.js.map +1 -1
  363. package/dist/site/styles.css +384 -0
  364. package/package.json +2 -1
@@ -1,4 +1,5 @@
1
- import type { ContentTypeConfig } from '../config/types.js';
1
+ import type { ContentTypeConfig, ModuleConfig } from '../config/types.js';
2
+ import type { ModuleComponentMap } from '../layout/index.js';
2
3
  import { type ExtensionFetcher } from './extension-sets.js';
3
4
  export interface ContentLockInfo {
4
5
  lockedBy: string;
@@ -39,10 +40,22 @@ export interface CategoryOption {
39
40
  interface ContentEditFormProps {
40
41
  contentType: ContentTypeConfig;
41
42
  initialValues?: Record<string, unknown>;
43
+ /**
44
+ * Host-registered custom layout modules (`config.modules`), from
45
+ * `runtime.modules`. Merged into the Layout tab's palette/registry so
46
+ * defineModule types are draggable, configurable, and persist (kywi-cms#48).
47
+ */
48
+ hostModules?: ModuleConfig[];
49
+ /**
50
+ * Host-provided React renderers for those custom module types (kywi-cms#48).
51
+ * Merged over the built-ins so a host module previews with its real component
52
+ * in the editor canvas.
53
+ */
54
+ hostModuleComponents?: ModuleComponentMap;
42
55
  onSubmit: (data: Record<string, unknown>) => void | Promise<void>;
43
56
  onCancel?: () => void;
44
57
  onForceUnlock?: () => void | Promise<void>;
45
- onApprovalAction?: (action: 'submit' | 'approve' | 'reject', comment?: string) => void | Promise<void>;
58
+ onApprovalAction?: (action: 'submit' | 'approve' | 'reject', comment?: string, fields?: Record<string, unknown>) => void | Promise<void>;
46
59
  onRestoreVersion?: (versionId: string) => void | Promise<void>;
47
60
  onDeleteVersion?: (versionId: string) => void | Promise<void>;
48
61
  onDiffVersion?: (versionId: string) => void | Promise<void>;
@@ -68,12 +81,55 @@ interface ContentEditFormProps {
68
81
  * (relatedType, id) reference to a human label. The stored value stays the id. */
69
82
  resolveRelationship?: (relatedType: string, id: string) => Promise<string | null>;
70
83
  /**
71
- * Authenticated fetch used by the extension-set group on Tab 1 (G7). When
72
- * provided (edit mode), the group loads applicable EAV attribute sets and
73
- * saves them via /extensions/data. Omit it to keep the group inert.
84
+ * Authenticated fetch used by the extension-set group on Tab 1 (G7) and by
85
+ * the Layout tab to persist a layout edit directly (kywi-cms#19 — see the
86
+ * Layout tab below). When provided (edit mode), the extension group loads
87
+ * applicable EAV attribute sets and saves them via /extensions/data. Omit it
88
+ * to keep the extension group inert and the Layout tab's Save staging-only
89
+ * (there is no content id to persist against yet in create mode anyway).
74
90
  */
75
91
  extensionFetcher?: ExtensionFetcher;
92
+ /**
93
+ * Controlled active-tab state (kywi-cms#25). The surface that owns this form
94
+ * remounts it with a fresh `key` after every successful save so freshly
95
+ * server-normalized values are re-seeded (see content-edit.tsx) — without
96
+ * this, the tab bar's own local state would remount too and always reset to
97
+ * "Content", bouncing the editor away from whatever tab (e.g. SEO) the user
98
+ * was iterating on. Omit both props to fall back to uncontrolled local state
99
+ * (create mode, which never remounts mid-edit).
100
+ */
101
+ activeTab?: TabId;
102
+ onActiveTabChange?: (tab: TabId) => void;
76
103
  }
77
- export declare function ContentEditForm({ contentType, initialValues, onSubmit, onCancel, onForceUnlock, onApprovalAction, onRestoreVersion, onDeleteVersion, onDiffVersion, onAddToChangeset, mode, isSubmitting, lockInfo, userRole, groups, versions, approvalHistory, availableCategories, availableTags, openChangesets, users, resolveRelationship, extensionFetcher, }: ContentEditFormProps): import("react/jsx-runtime").JSX.Element;
104
+ declare const TABS: readonly [{
105
+ readonly id: "content";
106
+ readonly label: "Content";
107
+ }, {
108
+ readonly id: "publishing";
109
+ readonly label: "Publishing";
110
+ }, {
111
+ readonly id: "navigation";
112
+ readonly label: "Navigation";
113
+ }, {
114
+ readonly id: "seo";
115
+ readonly label: "SEO";
116
+ }, {
117
+ readonly id: "layout";
118
+ readonly label: "Layout";
119
+ }, {
120
+ readonly id: "categories-tags";
121
+ readonly label: "Categories & Tags";
122
+ }, {
123
+ readonly id: "related-content";
124
+ readonly label: "Related Content";
125
+ }, {
126
+ readonly id: "permissions";
127
+ readonly label: "Permissions";
128
+ }, {
129
+ readonly id: "version-history";
130
+ readonly label: "Version History";
131
+ }];
132
+ export type TabId = (typeof TABS)[number]['id'];
133
+ export declare function ContentEditForm({ contentType, initialValues, hostModules, hostModuleComponents, onSubmit, onCancel, onForceUnlock, onApprovalAction, onRestoreVersion, onDeleteVersion, onDiffVersion, onAddToChangeset, mode, isSubmitting, lockInfo, userRole, groups, versions, approvalHistory, availableCategories, availableTags, openChangesets, users, resolveRelationship, extensionFetcher, activeTab: controlledActiveTab, onActiveTabChange, }: ContentEditFormProps): import("react/jsx-runtime").JSX.Element;
78
134
  export {};
79
135
  //# sourceMappingURL=content-form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-form.d.ts","sourceRoot":"","sources":["../../src/admin/content-form.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content-form.d.ts","sourceRoot":"","sources":["../../src/admin/content-form.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useCallback, useEffect } from 'react';
2
+ import { useState, useCallback, useEffect, useMemo } from 'react';
3
3
  import { FieldRenderer, CategoryTreePicker, TagInput, RelatedContentPicker } from './field-components.js';
4
4
  import { MediaPickerField } from './media-picker-field.js';
5
+ import { TiptapEditor } from './tiptap-editor.js';
5
6
  import { formDataToApiPayload, apiDataToFormValues } from './form-helpers.js';
6
7
  import { LayoutEditor } from './layout-editor/index.js';
7
8
  import { createModuleRegistry } from '../layout/registry.js';
8
9
  import { BUILT_IN_MODULE_COMPONENTS } from '../layout/modules.js';
9
10
  import { ExtensionSets } from './extension-sets.js';
11
+ import { isReservedFieldName } from '../config/reserved-field-names.js';
12
+ import { adminFetch } from '../host-client/index.js';
13
+ import { ContentPermissionsTab } from './content-permissions-tab.js';
10
14
  // ---------------------------------------------------------------------------
11
15
  // Tab definitions — exactly 9 in spec order
12
16
  // ---------------------------------------------------------------------------
@@ -29,13 +33,31 @@ const ADMIN_ROLES = new Set(['siteAdmin', 'superAdmin']);
29
33
  // ---------------------------------------------------------------------------
30
34
  // Component
31
35
  // ---------------------------------------------------------------------------
32
- export function ContentEditForm({ contentType, initialValues, onSubmit, onCancel, onForceUnlock, onApprovalAction, onRestoreVersion, onDeleteVersion, onDiffVersion, onAddToChangeset, mode, isSubmitting = false, lockInfo, userRole, groups = [], versions = [], approvalHistory = [], availableCategories = [], availableTags = [], openChangesets = [], users = [], resolveRelationship, extensionFetcher, }) {
36
+ export function ContentEditForm({ contentType, initialValues, hostModules, hostModuleComponents, onSubmit, onCancel, onForceUnlock, onApprovalAction, onRestoreVersion, onDeleteVersion, onDiffVersion, onAddToChangeset, mode, isSubmitting = false, lockInfo, userRole, groups = [], versions = [], approvalHistory = [], availableCategories = [], availableTags = [], openChangesets = [], users = [], resolveRelationship, extensionFetcher, activeTab: controlledActiveTab, onActiveTabChange, }) {
33
37
  const isLockedByOther = lockInfo != null;
34
38
  const canForceUnlock = userRole === 'siteAdmin' || userRole === 'superAdmin';
39
+ const titleRequired = contentType.titleRequired ?? true;
40
+ // Defensive hardening for kywi-cms#10: a custom field whose name collides
41
+ // with a built-in (Title/Slug/Body/Featured Image/etc.) is now rejected at
42
+ // creation time (Type Designer + content-type-routes.ts), but a type
43
+ // created before that guard existed could already carry one. Rendering it
44
+ // would silently share the same `values` key as the built-in it collides
45
+ // with (they are, literally, one value) — so it is dropped from the custom
46
+ // fields list rather than rendered a second time.
47
+ const customFields = contentType.fields.filter(field => !isReservedFieldName(field.name));
35
48
  const [values, setValues] = useState(() => initialValues
36
49
  ? apiDataToFormValues(initialValues, contentType.fields)
37
50
  : { title: '', slug: '', status: 'draft' });
38
- const [activeTab, setActiveTab] = useState('content');
51
+ // kywi-cms#25: optionally controlled so the host surface can preserve the
52
+ // active tab across a post-save remount (see the `activeTab` prop doc above).
53
+ // Uncontrolled callers (no `activeTab` prop, e.g. content-new.tsx) keep the
54
+ // old local-state behavior unchanged.
55
+ const [uncontrolledActiveTab, setUncontrolledActiveTab] = useState('content');
56
+ const activeTab = controlledActiveTab ?? uncontrolledActiveTab;
57
+ const setActiveTab = useCallback((tab) => {
58
+ setUncontrolledActiveTab(tab);
59
+ onActiveTabChange?.(tab);
60
+ }, [onActiveTabChange]);
39
61
  const [approvalComment, setApprovalComment] = useState('');
40
62
  // Names of custom fields currently reporting invalid input (e.g. unparseable
41
63
  // JSON). Save is disabled while any is present.
@@ -45,10 +67,61 @@ export function ContentEditForm({ contentType, initialValues, onSubmit, onCancel
45
67
  // into `values` live — see the Layout tab's onChange) by closing/reloading
46
68
  // the tab. Cleared on a successful submit. (G-J04-03)
47
69
  const [isDirty, setIsDirty] = useState(false);
70
+ // Audience catalogue for the Layout tab's "+ Page Variant" picker and the
71
+ // variantContainer arm picker (kywi-cms#52). The layout editor renders no
72
+ // audiences of its own, so the content editor must load them — without this
73
+ // the picker always showed "No audiences yet" even when active audiences
74
+ // existed. GET /audiences is authorized for editor and above (same threshold
75
+ // as this form), and adminFetch scopes the request to the active site.
76
+ const [audiences, setAudiences] = useState([]);
77
+ useEffect(() => {
78
+ let cancelled = false;
79
+ adminFetch('/api/v1/audiences')
80
+ .then(r => (r.ok ? r.json() : Promise.reject(new Error(String(r.status)))))
81
+ .then((body) => {
82
+ if (cancelled)
83
+ return;
84
+ setAudiences((body.data ?? []).map(a => ({ id: a.id, name: a.name })));
85
+ })
86
+ .catch(() => { });
87
+ return () => { cancelled = true; };
88
+ }, []);
89
+ // Layout editor palette + preview components (kywi-cms#48). The registry
90
+ // merges host-registered `defineModule` modules over the built-ins so custom
91
+ // types appear in the palette, carry their prop fields, and persist; the
92
+ // component map merges the host's renderers over the built-ins so those types
93
+ // preview with their real component in the canvas (a missing renderer falls
94
+ // back to the "Unknown" placeholder, but the module still saves + renders on
95
+ // the public site once the host wires KywiLayout.moduleComponents).
96
+ const layoutModuleRegistry = useMemo(() => createModuleRegistry(hostModules ?? []), [hostModules]);
97
+ const layoutModuleComponents = useMemo(() => (hostModuleComponents
98
+ ? { ...BUILT_IN_MODULE_COMPONENTS, ...hostModuleComponents }
99
+ : BUILT_IN_MODULE_COMPONENTS), [hostModuleComponents]);
48
100
  const handleChange = useCallback((name, value) => {
49
101
  setValues(prev => ({ ...prev, [name]: value }));
50
102
  setIsDirty(true);
51
103
  }, []);
104
+ // kywi-cms#13/#26 pattern, same root cause found here too: the "Expiration
105
+ // Notify User" <select> always offers a "— No one —" placeholder, so it's
106
+ // safe when `expirationNotifyUser` is empty or already a known user — but if
107
+ // the stored id belongs to a user who's since been deleted, no <option>
108
+ // matches it, the browser silently falls back to displaying "— No one —",
109
+ // and `values.expirationNotifyUser` (seeded once from the loaded content)
110
+ // never updates to match — because a <select> that never gets a real user
111
+ // interaction never fires `change`. Save would then round-trip the invisible
112
+ // stale id forever. Clear it once `users` loads if it doesn't resolve to a
113
+ // real option, so state matches what's on screen. (Uses `setValues`
114
+ // directly, not `handleChange` — this is a display/state reconciliation on
115
+ // load, not a user edit, so it must not mark the form dirty.)
116
+ useEffect(() => {
117
+ if (users.length === 0)
118
+ return;
119
+ const current = values.expirationNotifyUser;
120
+ if (typeof current === 'string' && current !== '' && !users.some(u => u.id === current)) {
121
+ setValues(prev => ({ ...prev, expirationNotifyUser: '' }));
122
+ }
123
+ // eslint-disable-next-line react-hooks/exhaustive-deps
124
+ }, [users]);
52
125
  // Browser-level unsaved-changes guard: warn before unload (close/reload/
53
126
  // cross-origin nav) whenever there are pending edits.
54
127
  useEffect(() => {
@@ -79,6 +152,41 @@ export function ContentEditForm({ contentType, initialValues, onSubmit, onCancel
79
152
  });
80
153
  }, []);
81
154
  const hasInvalidField = invalidFields.size > 0;
155
+ // kywi-cms#19: the Layout tab's own "Save" used to only stage the layout
156
+ // into this form's `values` — exactly what `onChange` already does on every
157
+ // edit (see the Layout tab below), making the button cosmetic. An editor who
158
+ // built a layout, clicked the visible in-tab Save, and navigated away lost
159
+ // the work unless they also clicked the page-level Save. Persist directly
160
+ // through the dedicated layout endpoint so the in-tab Save is real and does
161
+ // not require a second save. In create mode there is no content id yet
162
+ // (`extensionFetcher`/`initialValues.id` are both absent) — nothing exists
163
+ // to persist against until the page itself is first saved, so it still only
164
+ // stages, same as before.
165
+ const [layoutSaveState, setLayoutSaveState] = useState({ status: 'idle' });
166
+ const handleLayoutSave = useCallback(async (layout) => {
167
+ handleChange('layout', layout);
168
+ const contentId = initialValues?.id;
169
+ if (!extensionFetcher || contentId == null)
170
+ return;
171
+ setLayoutSaveState({ status: 'saving' });
172
+ try {
173
+ const res = await extensionFetcher(`/api/v1/content/${contentType.name}/${contentId}/layout`, {
174
+ method: 'PUT',
175
+ body: JSON.stringify(layout),
176
+ });
177
+ if (!res.ok) {
178
+ const body = await res.json().catch(() => null);
179
+ throw new Error(body?.error?.message ?? `Layout save failed (${res.status})`);
180
+ }
181
+ setLayoutSaveState({ status: 'saved' });
182
+ }
183
+ catch (err) {
184
+ setLayoutSaveState({
185
+ status: 'error',
186
+ message: err instanceof Error ? err.message : 'Failed to save layout',
187
+ });
188
+ }
189
+ }, [extensionFetcher, initialValues?.id, contentType.name, handleChange]);
82
190
  const handleSubmit = useCallback((e) => {
83
191
  e.preventDefault();
84
192
  if (invalidFields.size > 0)
@@ -90,19 +198,16 @@ export function ContentEditForm({ contentType, initialValues, onSubmit, onCancel
90
198
  }, [values, contentType.fields, onSubmit, invalidFields]);
91
199
  const canApprove = APPROVAL_ROLES.has(userRole ?? '');
92
200
  const isAdmin = ADMIN_ROLES.has(userRole ?? '');
93
- return (_jsxs("form", { onSubmit: handleSubmit, className: "kywi-content-form", children: [_jsx("div", { className: "kywi-form-header", children: _jsx("h1", { children: mode === 'create' ? `New ${contentType.label}` : `Edit ${contentType.label}` }) }), isLockedByOther && (_jsxs("div", { className: "kywi-lock-banner", role: "alert", children: [_jsx("span", { className: "kywi-lock-banner-text", children: `This content is locked by ${lockInfo.lockedBy}. Editing is disabled.` }), canForceUnlock && onForceUnlock && (_jsx("button", { type: "button", onClick: () => onForceUnlock(), className: "kywi-btn kywi-btn-danger kywi-force-unlock-btn", children: "Force Unlock" }))] })), _jsx("div", { className: "kywi-tab-bar", role: "tablist", children: TABS.map(tab => (_jsx("button", { type: "button", role: "tab", "aria-selected": activeTab === tab.id, "aria-controls": `kywi-tab-panel-${tab.id}`, className: `kywi-tab${activeTab === tab.id ? ' kywi-tab-active' : ''}`, onClick: () => setActiveTab(tab.id), children: tab.label }, tab.id))) }), _jsxs("div", { className: "kywi-tab-content", children: [activeTab === 'content' && (_jsxs("div", { id: "kywi-tab-panel-content", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-title", className: "kywi-field-label", children: "Title" }), _jsx("input", { id: "field-title", type: "text", name: "title", value: String(values.title ?? ''), onChange: e => handleChange('title', e.target.value), className: "kywi-input", required: true })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-slug", className: "kywi-field-label", children: "Slug" }), _jsx("input", { id: "field-slug", type: "text", name: "slug", value: String(values.slug ?? ''), onChange: e => handleChange('slug', e.target.value), className: "kywi-input", placeholder: "Auto-generated from title if empty" })] }), contentType.baseType === 'content' && (_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-body", className: "kywi-field-label", children: "Body" }), _jsx("textarea", { id: "field-body", name: "body", value: String(values.body ?? ''), onChange: e => handleChange('body', e.target.value), className: "kywi-textarea", rows: 10 })] })), _jsxs("div", { className: "kywi-field", "data-field-name": "featuredImageId", children: [_jsx("label", { className: "kywi-field-label", htmlFor: "field-featuredImageId", children: "Featured Image" }), _jsx(MediaPickerField, { id: "field-featuredImageId", value: typeof values.featuredImageId === 'string' ? values.featuredImageId : null, accept: "image/*", onChange: mediaId => handleChange('featuredImageId', mediaId) })] }), contentType.fields.length > 0 && (_jsx("div", { className: "kywi-form-custom-fields", children: contentType.fields.map(field => (_jsx(FieldRenderer, { field: field, value: values[field.name], onChange: val => handleChange(field.name, val), onValidityChange: valid => handleFieldValidity(field.name, valid), ...(resolveRelationship ? { resolveRelationship } : {}) }, field.name))) })), extensionFetcher && initialValues?.id != null && (_jsx(ExtensionSets, { contentId: String(initialValues.id), baseTypes: [contentType.name, contentType.baseType], fetcher: extensionFetcher }))] })), activeTab === 'publishing' && (_jsxs("div", { id: "kywi-tab-panel-publishing", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-status", className: "kywi-field-label", children: "Status" }), _jsxs("select", { id: "field-status", name: "status", value: String(values.status ?? 'draft'), onChange: e => handleChange('status', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "draft", children: "Draft" }), _jsx("option", { value: "pending", children: "Pending Review" }), _jsx("option", { value: "approved", children: "Approved" }), _jsx("option", { value: "published", children: "Published" }), _jsx("option", { value: "archived", children: "Archived" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-publishedAt", className: "kywi-field-label", children: "Published At" }), _jsx("input", { id: "field-publishedAt", type: "datetime-local", name: "publishedAt", value: String(values.publishedAt ?? ''), onChange: e => handleChange('publishedAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-unpublishAt", className: "kywi-field-label", children: "Unpublish At" }), _jsx("input", { id: "field-unpublishAt", type: "datetime-local", name: "unpublishAt", value: String(values.unpublishAt ?? ''), onChange: e => handleChange('unpublishAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-expiresAt", className: "kywi-field-label", children: "Expires At" }), _jsx("input", { id: "field-expiresAt", type: "datetime-local", name: "expiresAt", value: String(values.expiresAt ?? ''), onChange: e => handleChange('expiresAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-featureInSection", className: "kywi-field-label", children: "Feature In Section" }), _jsxs("select", { id: "field-featureInSection", name: "featureInSection", value: String(values.featureInSection ?? 'no'), onChange: e => handleChange('featureInSection', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "no", children: "No" }), _jsx("option", { value: "yes", children: "Yes" }), _jsx("option", { value: "scheduled", children: "Scheduled" })] })] }), String(values.featureInSection) === 'scheduled' && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-featureStartAt", className: "kywi-field-label", children: "Feature Start" }), _jsx("input", { id: "field-featureStartAt", type: "datetime-local", name: "featureStartAt", value: String(values.featureStartAt ?? ''), onChange: e => handleChange('featureStartAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-featureEndAt", className: "kywi-field-label", children: "Feature End" }), _jsx("input", { id: "field-featureEndAt", type: "datetime-local", name: "featureEndAt", value: String(values.featureEndAt ?? ''), onChange: e => handleChange('featureEndAt', e.target.value), className: "kywi-input" })] })] })), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-expirationNotifyUser", className: "kywi-field-label", children: "Expiration Notify User" }), users.length > 0 ? (_jsxs("select", { id: "field-expirationNotifyUser", name: "expirationNotifyUser", value: String(values.expirationNotifyUser ?? ''), onChange: e => handleChange('expirationNotifyUser', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "", children: "\u2014 No one \u2014" }), users.map(u => (_jsx("option", { value: u.id, children: u.label }, u.id)))] })) : (_jsx("input", { id: "field-expirationNotifyUser", type: "text", name: "expirationNotifyUser", value: String(values.expirationNotifyUser ?? ''), onChange: e => handleChange('expirationNotifyUser', e.target.value), className: "kywi-input", placeholder: "User ID to notify on expiration" }))] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-internalNotes", className: "kywi-field-label", children: "Internal Notes" }), _jsx("textarea", { id: "field-internalNotes", name: "internalNotes", value: String(values.internalNotes ?? ''), onChange: e => handleChange('internalNotes', e.target.value), className: "kywi-textarea", rows: 4 })] }), openChangesets.length > 0 && (_jsxs("div", { className: "kywi-changeset-section", "data-testid": "changeset-dropdown", children: [_jsx("h3", { className: "kywi-section-heading", children: "Add to Changeset" }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-changeset", className: "kywi-field-label", children: "Changeset" }), _jsxs("select", { id: "field-changeset", className: "kywi-select", defaultValue: "", onChange: e => {
201
+ return (_jsxs("form", { onSubmit: handleSubmit, className: "kywi-content-form", children: [_jsx("div", { className: "kywi-form-header", children: _jsx("h1", { children: mode === 'create' ? `New ${contentType.label}` : `Edit ${contentType.label}` }) }), isLockedByOther && (_jsxs("div", { className: "kywi-lock-banner", role: "alert", children: [_jsx("span", { className: "kywi-lock-banner-text", children: `This content is locked by ${lockInfo.lockedBy}. Editing is disabled.` }), canForceUnlock && onForceUnlock && (_jsx("button", { type: "button", onClick: () => onForceUnlock(), className: "kywi-btn kywi-btn-danger kywi-force-unlock-btn", children: "Force Unlock" }))] })), _jsx("div", { className: "kywi-tab-bar", role: "tablist", children: TABS.map(tab => (_jsx("button", { type: "button", role: "tab", "aria-selected": activeTab === tab.id, "aria-controls": `kywi-tab-panel-${tab.id}`, className: `kywi-tab${activeTab === tab.id ? ' kywi-tab-active' : ''}`, onClick: () => setActiveTab(tab.id), children: tab.label }, tab.id))) }), _jsxs("div", { className: "kywi-tab-content", children: [activeTab === 'content' && (_jsxs("div", { id: "kywi-tab-panel-content", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsxs("label", { htmlFor: "field-title", className: "kywi-field-label", children: ["Title", titleRequired && _jsx("span", { className: "kywi-required", "aria-hidden": "true", children: " *" })] }), _jsx("input", { id: "field-title", type: "text", name: "title", value: String(values.title ?? ''), onChange: e => handleChange('title', e.target.value), className: "kywi-input", required: titleRequired })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-slug", className: "kywi-field-label", children: "Slug" }), _jsx("input", { id: "field-slug", type: "text", name: "slug", value: String(values.slug ?? ''), onChange: e => handleChange('slug', e.target.value), className: "kywi-input", placeholder: "Auto-generated from title if empty" })] }), contentType.baseType === 'content' && (_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-body", className: "kywi-field-label", children: "Body" }), _jsx(TiptapEditor, { id: "field-body", value: String(values.body ?? ''), onChange: html => handleChange('body', html), className: "kywi-richtext" })] })), _jsxs("div", { className: "kywi-field", "data-field-name": "featuredImageId", children: [_jsx("label", { className: "kywi-field-label", htmlFor: "field-featuredImageId", children: "Featured Image" }), _jsx(MediaPickerField, { id: "field-featuredImageId", value: typeof values.featuredImageId === 'string' ? values.featuredImageId : null, accept: "image/*", onChange: mediaId => handleChange('featuredImageId', mediaId) })] }), customFields.length > 0 && (_jsx("div", { className: "kywi-form-custom-fields", children: customFields.map(field => (_jsx(FieldRenderer, { field: field, value: values[field.name], onChange: val => handleChange(field.name, val), onValidityChange: valid => handleFieldValidity(field.name, valid), ...(resolveRelationship ? { resolveRelationship } : {}) }, field.name))) })), extensionFetcher && initialValues?.id != null && (_jsx(ExtensionSets, { contentId: String(initialValues.id), baseTypes: [contentType.name, contentType.baseType], fetcher: extensionFetcher }))] })), activeTab === 'publishing' && (_jsxs("div", { id: "kywi-tab-panel-publishing", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-status", className: "kywi-field-label", children: "Status" }), _jsxs("select", { id: "field-status", name: "status", value: String(values.status ?? 'draft'), onChange: e => handleChange('status', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "draft", children: "Draft" }), _jsx("option", { value: "pending", children: "Pending Review" }), _jsx("option", { value: "approved", children: "Approved" }), _jsx("option", { value: "published", children: "Published" }), _jsx("option", { value: "archived", children: "Archived" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-publishedAt", className: "kywi-field-label", children: "Published At" }), _jsx("input", { id: "field-publishedAt", type: "datetime-local", name: "publishedAt", value: String(values.publishedAt ?? ''), onChange: e => handleChange('publishedAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-unpublishAt", className: "kywi-field-label", children: "Unpublish At" }), _jsx("input", { id: "field-unpublishAt", type: "datetime-local", name: "unpublishAt", value: String(values.unpublishAt ?? ''), onChange: e => handleChange('unpublishAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-expiresAt", className: "kywi-field-label", children: "Expires At" }), _jsx("input", { id: "field-expiresAt", type: "datetime-local", name: "expiresAt", value: String(values.expiresAt ?? ''), onChange: e => handleChange('expiresAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-featureInSection", className: "kywi-field-label", children: "Feature In Section" }), _jsxs("select", { id: "field-featureInSection", name: "featureInSection", value: String(values.featureInSection ?? 'no'), onChange: e => handleChange('featureInSection', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "no", children: "No" }), _jsx("option", { value: "yes", children: "Yes" }), _jsx("option", { value: "scheduled", children: "Scheduled" })] })] }), String(values.featureInSection) === 'scheduled' && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-featureStartAt", className: "kywi-field-label", children: "Feature Start" }), _jsx("input", { id: "field-featureStartAt", type: "datetime-local", name: "featureStartAt", value: String(values.featureStartAt ?? ''), onChange: e => handleChange('featureStartAt', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-featureEndAt", className: "kywi-field-label", children: "Feature End" }), _jsx("input", { id: "field-featureEndAt", type: "datetime-local", name: "featureEndAt", value: String(values.featureEndAt ?? ''), onChange: e => handleChange('featureEndAt', e.target.value), className: "kywi-input" })] })] })), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-expirationNotifyUser", className: "kywi-field-label", children: "Expiration Notify User" }), users.length > 0 ? (_jsxs("select", { id: "field-expirationNotifyUser", name: "expirationNotifyUser", value: String(values.expirationNotifyUser ?? ''), onChange: e => handleChange('expirationNotifyUser', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "", children: "\u2014 No one \u2014" }), users.map(u => (_jsx("option", { value: u.id, children: u.label }, u.id)))] })) : (_jsx("input", { id: "field-expirationNotifyUser", type: "text", name: "expirationNotifyUser", value: String(values.expirationNotifyUser ?? ''), onChange: e => handleChange('expirationNotifyUser', e.target.value), className: "kywi-input", placeholder: "User ID to notify on expiration" }))] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-internalNotes", className: "kywi-field-label", children: "Internal Notes" }), _jsx("textarea", { id: "field-internalNotes", name: "internalNotes", value: String(values.internalNotes ?? ''), onChange: e => handleChange('internalNotes', e.target.value), className: "kywi-textarea", rows: 4 })] }), openChangesets.length > 0 && (_jsxs("div", { className: "kywi-changeset-section", "data-testid": "changeset-dropdown", children: [_jsx("h3", { className: "kywi-section-heading", children: "Add to Changeset" }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-changeset", className: "kywi-field-label", children: "Changeset" }), _jsxs("select", { id: "field-changeset", className: "kywi-select", defaultValue: "", onChange: e => {
94
202
  if (e.target.value)
95
203
  onAddToChangeset?.(e.target.value);
96
- }, children: [_jsx("option", { value: "", children: "-- Select a changeset --" }), openChangesets.map(cs => (_jsx("option", { value: cs.id, children: cs.name }, cs.id)))] })] })] })), canApprove && (_jsxs("div", { className: "kywi-approval-section", "data-testid": "approval-actions", children: [_jsx("h3", { className: "kywi-section-heading", children: "Approval" }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-approvalComment", className: "kywi-field-label", children: "Comment" }), _jsx("textarea", { id: "field-approvalComment", value: approvalComment, onChange: e => setApprovalComment(e.target.value), className: "kywi-textarea", rows: 2, placeholder: "Optional comment..." })] }), _jsxs("div", { className: "kywi-approval-buttons", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: () => onApprovalAction?.('submit', approvalComment), children: "Submit for Review" }), isAdmin && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: () => onApprovalAction?.('approve', approvalComment), children: "Approve" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger", onClick: () => onApprovalAction?.('reject', approvalComment), children: "Reject" })] }))] })] })), approvalHistory.length > 0 && (_jsxs("div", { className: "kywi-approval-history", children: [_jsx("h3", { className: "kywi-section-heading", children: "Approval History" }), _jsx("ul", { className: "kywi-approval-list", children: approvalHistory.map(entry => (_jsxs("li", { className: "kywi-approval-entry", children: [_jsx("strong", { children: entry.action }), " by ", entry.by, " at ", entry.at, entry.comment && _jsx("p", { children: entry.comment })] }, entry.id))) })] }))] })), activeTab === 'navigation' && (_jsxs("div", { id: "kywi-tab-panel-navigation", role: "tabpanel", className: "kywi-tab-panel", children: [_jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "isNav", checked: Boolean(values.isNav ?? false), onChange: e => handleChange('isNav', e.target.checked), className: "kywi-checkbox" }), ' ', "Show in Navigation"] }) }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-menuTitle", className: "kywi-field-label", children: "Menu Title" }), _jsx("input", { id: "field-menuTitle", type: "text", name: "menuTitle", value: String(values.menuTitle ?? ''), onChange: e => handleChange('menuTitle', e.target.value), className: "kywi-input", placeholder: "Override title in navigation" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-parentId", className: "kywi-field-label", children: "Parent" }), _jsx("input", { id: "field-parentId", type: "text", name: "parentId", value: String(values.parentId ?? ''), onChange: e => handleChange('parentId', e.target.value), className: "kywi-input", placeholder: "Content ID of parent" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-sortOrder", className: "kywi-field-label", children: "Sort Order" }), _jsx("input", { id: "field-sortOrder", type: "number", name: "sortOrder", value: String(values.sortOrder ?? ''), onChange: e => handleChange('sortOrder', e.target.value === '' ? '' : Number(e.target.value)), className: "kywi-input" })] }), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "openInNewWindow", checked: Boolean(values.openInNewWindow ?? false), onChange: e => handleChange('openInNewWindow', e.target.checked), className: "kywi-checkbox" }), ' ', "Open in New Window"] }) }), groups.length > 0 && (_jsxs("div", { className: "kywi-field", children: [_jsx("span", { className: "kywi-field-label", children: "Nav Visibility by Group" }), _jsx("div", { className: "kywi-group-visibility", children: groups.map(g => {
204
+ }, children: [_jsx("option", { value: "", children: "-- Select a changeset --" }), openChangesets.map(cs => (_jsx("option", { value: cs.id, children: cs.name }, cs.id)))] })] })] })), canApprove && (_jsxs("div", { className: "kywi-approval-section", "data-testid": "approval-actions", children: [_jsx("h3", { className: "kywi-section-heading", children: "Approval" }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-approvalComment", className: "kywi-field-label", children: "Comment" }), _jsx("textarea", { id: "field-approvalComment", value: approvalComment, onChange: e => setApprovalComment(e.target.value), className: "kywi-textarea", rows: 2, placeholder: "Optional comment..." })] }), _jsxs("div", { className: "kywi-approval-buttons", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: () =>
205
+ // Carry the editor's current edits so Submit-for-Review no
206
+ // longer discards unsaved changes (#45.3) and can fork a
207
+ // pending revision of published content (#42).
208
+ onApprovalAction?.('submit', approvalComment, formDataToApiPayload(values, contentType.fields)), children: "Submit for Review" }), isAdmin && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: () => onApprovalAction?.('approve', approvalComment), children: "Approve" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger", onClick: () => onApprovalAction?.('reject', approvalComment), children: "Reject" })] }))] })] })), approvalHistory.length > 0 && (_jsxs("div", { className: "kywi-approval-history", children: [_jsx("h3", { className: "kywi-section-heading", children: "Approval History" }), _jsx("ul", { className: "kywi-approval-list", children: approvalHistory.map(entry => (_jsxs("li", { className: "kywi-approval-entry", children: [_jsx("strong", { children: entry.action }), " by ", entry.by, " at ", entry.at, entry.comment && _jsx("p", { children: entry.comment })] }, entry.id))) })] }))] })), activeTab === 'navigation' && (_jsxs("div", { id: "kywi-tab-panel-navigation", role: "tabpanel", className: "kywi-tab-panel", children: [_jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "isNav", checked: Boolean(values.isNav ?? false), onChange: e => handleChange('isNav', e.target.checked), className: "kywi-checkbox" }), ' ', "Show in Navigation"] }) }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-menuTitle", className: "kywi-field-label", children: "Menu Title" }), _jsx("input", { id: "field-menuTitle", type: "text", name: "menuTitle", value: String(values.menuTitle ?? ''), onChange: e => handleChange('menuTitle', e.target.value), className: "kywi-input", placeholder: "Override title in navigation" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-parentId", className: "kywi-field-label", children: "Parent" }), _jsx("input", { id: "field-parentId", type: "text", name: "parentId", value: String(values.parentId ?? ''), onChange: e => handleChange('parentId', e.target.value), className: "kywi-input", placeholder: "Content ID of parent" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-sortOrder", className: "kywi-field-label", children: "Sort Order" }), _jsx("input", { id: "field-sortOrder", type: "number", name: "sortOrder", value: String(values.sortOrder ?? ''), onChange: e => handleChange('sortOrder', e.target.value === '' ? '' : Number(e.target.value)), className: "kywi-input" })] }), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "openInNewWindow", checked: Boolean(values.openInNewWindow ?? false), onChange: e => handleChange('openInNewWindow', e.target.checked), className: "kywi-checkbox" }), ' ', "Open in New Window"] }) }), groups.length > 0 && (_jsxs("div", { className: "kywi-field", children: [_jsx("span", { className: "kywi-field-label", children: "Nav Visibility by Group" }), _jsx("div", { className: "kywi-group-visibility", children: groups.map(g => {
97
209
  const vis = values.navVisibility ?? {};
98
210
  return (_jsxs("label", { className: "kywi-field-label kywi-group-vis-label", children: [_jsx("input", { type: "checkbox", checked: vis[g.id] ?? true, onChange: e => handleChange('navVisibility', { ...vis, [g.id]: e.target.checked }), className: "kywi-checkbox" }), ' ', g.name] }, g.id));
99
- }) })] })), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "excludeFromSitemap", checked: Boolean(values.excludeFromSitemap ?? false), onChange: e => handleChange('excludeFromSitemap', e.target.checked), className: "kywi-checkbox" }), ' ', "Exclude from Sitemap"] }) }), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "excludeFromSearch", checked: Boolean(values.excludeFromSearch ?? false), onChange: e => handleChange('excludeFromSearch', e.target.checked), className: "kywi-checkbox" }), ' ', "Exclude from search & AX"] }) }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-urlOverride", className: "kywi-field-label", children: "URL Override" }), _jsx("input", { id: "field-urlOverride", type: "text", name: "urlOverride", value: String(values.urlOverride ?? ''), onChange: e => handleChange('urlOverride', e.target.value), className: "kywi-input", placeholder: "/custom-path" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-redirectUrl", className: "kywi-field-label", children: "Redirect URL" }), _jsx("input", { id: "field-redirectUrl", type: "text", name: "redirectUrl", value: String(values.redirectUrl ?? ''), onChange: e => handleChange('redirectUrl', e.target.value), className: "kywi-input", placeholder: "https://..." })] })] })), activeTab === 'seo' && (_jsxs("div", { id: "kywi-tab-panel-seo", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-metaTitle", className: "kywi-field-label", children: "Meta Title" }), _jsx("input", { id: "field-metaTitle", type: "text", name: "metaTitle", value: String(values.metaTitle ?? ''), onChange: e => handleChange('metaTitle', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-metaDescription", className: "kywi-field-label", children: "Meta Description" }), _jsx("textarea", { id: "field-metaDescription", name: "metaDescription", value: String(values.metaDescription ?? ''), onChange: e => handleChange('metaDescription', e.target.value), className: "kywi-textarea", rows: 3 })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-metaKeywords", className: "kywi-field-label", children: "Meta Keywords" }), _jsx("input", { id: "field-metaKeywords", type: "text", name: "metaKeywords", value: String(values.metaKeywords ?? ''), onChange: e => handleChange('metaKeywords', e.target.value), className: "kywi-input", placeholder: "keyword1, keyword2, ..." })] }), _jsxs("div", { className: "kywi-field", "data-field-name": "metaImageId", children: [_jsx("label", { htmlFor: "field-metaImageId", className: "kywi-field-label", children: "OG Image" }), _jsx(MediaPickerField, { id: "field-metaImageId", value: typeof values.metaImageId === 'string' ? values.metaImageId : null, accept: "image/*", onChange: mediaId => handleChange('metaImageId', mediaId) })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-canonicalUrl", className: "kywi-field-label", children: "Canonical URL" }), _jsx("input", { id: "field-canonicalUrl", type: "text", name: "canonicalUrl", value: String(values.canonicalUrl ?? ''), onChange: e => handleChange('canonicalUrl', e.target.value), className: "kywi-input", placeholder: "https://..." })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-robotsIndex", className: "kywi-field-label", children: "Robots Index" }), _jsxs("select", { id: "field-robotsIndex", name: "robotsIndex", value: String(values.robotsIndex ?? 'index'), onChange: e => handleChange('robotsIndex', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "index", children: "Index" }), _jsx("option", { value: "noindex", children: "No Index" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-robotsFollow", className: "kywi-field-label", children: "Robots Follow" }), _jsxs("select", { id: "field-robotsFollow", name: "robotsFollow", value: String(values.robotsFollow ?? 'follow'), onChange: e => handleChange('robotsFollow', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "follow", children: "Follow" }), _jsx("option", { value: "nofollow", children: "No Follow" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-changeFreq", className: "kywi-field-label", children: "Change Frequency" }), _jsxs("select", { id: "field-changeFreq", name: "changeFreq", value: String(values.changeFreq ?? ''), onChange: e => handleChange('changeFreq', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "", children: "-- Select --" }), _jsx("option", { value: "always", children: "Always" }), _jsx("option", { value: "hourly", children: "Hourly" }), _jsx("option", { value: "daily", children: "Daily" }), _jsx("option", { value: "weekly", children: "Weekly" }), _jsx("option", { value: "monthly", children: "Monthly" }), _jsx("option", { value: "yearly", children: "Yearly" }), _jsx("option", { value: "never", children: "Never" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-sitemapPriority", className: "kywi-field-label", children: "Sitemap Priority (0-1)" }), _jsx("input", { id: "field-sitemapPriority", type: "number", name: "sitemapPriority", min: "0", max: "1", step: "0.1", value: String(values.sitemapPriority ?? ''), onChange: e => handleChange('sitemapPriority', e.target.value === '' ? '' : Number(e.target.value)), className: "kywi-input" })] })] })), activeTab === 'layout' && (_jsx("div", { id: "kywi-tab-panel-layout", role: "tabpanel", className: "kywi-tab-panel", children: _jsx(LayoutEditor, { initialLayout: values.layout ?? { regions: {} }, contentId: String(initialValues?.id ?? ''), contentType: contentType.name, moduleRegistry: createModuleRegistry([]), moduleComponents: BUILT_IN_MODULE_COMPONENTS, onChange: layout => handleChange('layout', layout), onSave: layout => handleChange('layout', layout), ...(userRole ? { userRole } : {}) }) })), activeTab === 'categories-tags' && (_jsxs("div", { id: "kywi-tab-panel-categories-tags", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { className: "kywi-field-label", children: "Categories" }), _jsx(CategoryTreePicker, { categories: availableCategories, selected: values.categoryIds ?? [], onChange: ids => handleChange('categoryIds', ids) })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { className: "kywi-field-label", children: "Tags" }), _jsx(TagInput, { tags: Array.isArray(values.tags) ? values.tags : [], suggestions: availableTags, onChange: tags => handleChange('tags', tags) })] }), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "featuredInCategory", checked: Boolean(values.featuredInCategory ?? false), onChange: e => handleChange('featuredInCategory', e.target.checked), className: "kywi-checkbox" }), ' ', "Featured in Category"] }) })] })), activeTab === 'related-content' && (_jsx("div", { id: "kywi-tab-panel-related-content", role: "tabpanel", className: "kywi-tab-panel", children: _jsx(RelatedContentPicker, { selected: values.relatedContentIds ?? [], onChange: ids => handleChange('relatedContentIds', ids) }) })), activeTab === 'permissions' && (_jsxs("div", { id: "kywi-tab-panel-permissions", role: "tabpanel", className: "kywi-tab-panel", children: [_jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "inheritPermissions", checked: Boolean(values.inheritPermissions ?? true), onChange: e => handleChange('inheritPermissions', e.target.checked), className: "kywi-checkbox" }), ' ', "Inherit from Parent"] }) }), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "noLoginRequired", checked: Boolean(values.noLoginRequired ?? false), onChange: e => handleChange('noLoginRequired', e.target.checked), className: "kywi-checkbox" }), ' ', "No Login Required"] }) }), groups.length > 0 && !values.inheritPermissions && (_jsx("div", { className: "kywi-permissions-matrix", "data-testid": "permissions-matrix", children: _jsxs("table", { className: "kywi-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Group" }), _jsx("th", { children: "Read" }), _jsx("th", { children: "Write" }), _jsx("th", { children: "Deny" })] }) }), _jsx("tbody", { children: groups.map(g => {
100
- const perms = values.groupPermissions ?? {};
101
- const current = perms[g.id] ?? 'inherit';
102
- return (_jsxs("tr", { children: [_jsx("td", { children: g.name }), ['read', 'write', 'deny'].map(level => (_jsx("td", { children: _jsx("input", { type: "radio", name: `perm-${g.id}`, value: level, checked: current === level, onChange: () => handleChange('groupPermissions', {
103
- ...perms,
104
- [g.id]: level,
105
- }) }) }, level)))] }, g.id));
106
- }) })] }) }))] })), activeTab === 'version-history' && (_jsx("div", { id: "kywi-tab-panel-version-history", role: "tabpanel", className: "kywi-tab-panel", children: versions.length === 0 ? (_jsx("p", { className: "kywi-empty-state", children: "No versions recorded yet." })) : (_jsxs("table", { className: "kywi-table kywi-version-table", "data-testid": "version-list", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Version" }), _jsx("th", { children: "Created" }), _jsx("th", { children: "By" }), _jsx("th", { children: "Actions" })] }) }), _jsx("tbody", { children: versions.map(v => (_jsxs("tr", { "data-version-id": v.id, children: [_jsxs("td", { children: ["v", v.version] }), _jsx("td", { children: v.createdAt }), _jsx("td", { children: v.createdBy }), _jsxs("td", { className: "kywi-version-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary kywi-btn-sm", "data-action": "diff", onClick: () => onDiffVersion?.(v.id), children: "Diff" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary kywi-btn-sm", "data-action": "restore", onClick: () => onRestoreVersion?.(v.id), children: "Restore" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger kywi-btn-sm", "data-action": "delete", onClick: () => onDeleteVersion?.(v.id), children: "Delete" })] })] }, v.id))) })] })) }))] }), _jsxs("div", { className: "kywi-form-actions", children: [_jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", disabled: isSubmitting || isLockedByOther || hasInvalidField, children: isSubmitting ? 'Saving...' : mode === 'create' ? 'Create' : 'Save' }), onCancel && (_jsx("button", { type: "button", onClick: onCancel, className: "kywi-btn kywi-btn-secondary", children: "Cancel" })), hasInvalidField && (_jsx("span", { className: "kywi-field-error", role: "alert", children: "Fix the highlighted fields before saving." }))] })] }));
211
+ }) })] })), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "excludeFromSitemap", checked: Boolean(values.excludeFromSitemap ?? false), onChange: e => handleChange('excludeFromSitemap', e.target.checked), className: "kywi-checkbox" }), ' ', "Exclude from Sitemap"] }) }), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "excludeFromSearch", checked: Boolean(values.excludeFromSearch ?? false), onChange: e => handleChange('excludeFromSearch', e.target.checked), className: "kywi-checkbox" }), ' ', "Exclude from search & AX"] }) }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-urlOverride", className: "kywi-field-label", children: "URL Override" }), _jsx("input", { id: "field-urlOverride", type: "text", name: "urlOverride", value: String(values.urlOverride ?? ''), onChange: e => handleChange('urlOverride', e.target.value), className: "kywi-input", placeholder: "/custom-path" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-redirectUrl", className: "kywi-field-label", children: "Redirect URL" }), _jsx("input", { id: "field-redirectUrl", type: "text", name: "redirectUrl", value: String(values.redirectUrl ?? ''), onChange: e => handleChange('redirectUrl', e.target.value), className: "kywi-input", placeholder: "https://..." })] })] })), activeTab === 'seo' && (_jsxs("div", { id: "kywi-tab-panel-seo", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-metaTitle", className: "kywi-field-label", children: "Meta Title" }), _jsx("input", { id: "field-metaTitle", type: "text", name: "metaTitle", value: String(values.metaTitle ?? ''), onChange: e => handleChange('metaTitle', e.target.value), className: "kywi-input" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-metaDescription", className: "kywi-field-label", children: "Meta Description" }), _jsx("textarea", { id: "field-metaDescription", name: "metaDescription", value: String(values.metaDescription ?? ''), onChange: e => handleChange('metaDescription', e.target.value), className: "kywi-textarea", rows: 3 })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-metaKeywords", className: "kywi-field-label", children: "Meta Keywords" }), _jsx("input", { id: "field-metaKeywords", type: "text", name: "metaKeywords", value: String(values.metaKeywords ?? ''), onChange: e => handleChange('metaKeywords', e.target.value), className: "kywi-input", placeholder: "keyword1, keyword2, ..." })] }), _jsxs("div", { className: "kywi-field", "data-field-name": "metaImageId", children: [_jsx("label", { htmlFor: "field-metaImageId", className: "kywi-field-label", children: "OG Image" }), _jsx(MediaPickerField, { id: "field-metaImageId", value: typeof values.metaImageId === 'string' ? values.metaImageId : null, accept: "image/*", onChange: mediaId => handleChange('metaImageId', mediaId) })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-canonicalUrl", className: "kywi-field-label", children: "Canonical URL" }), _jsx("input", { id: "field-canonicalUrl", type: "text", name: "canonicalUrl", value: String(values.canonicalUrl ?? ''), onChange: e => handleChange('canonicalUrl', e.target.value), className: "kywi-input", placeholder: "https://..." })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-robotsIndex", className: "kywi-field-label", children: "Robots Index" }), _jsxs("select", { id: "field-robotsIndex", name: "robotsIndex", value: String(values.robotsIndex ?? 'index'), onChange: e => handleChange('robotsIndex', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "index", children: "Index" }), _jsx("option", { value: "noindex", children: "No Index" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-robotsFollow", className: "kywi-field-label", children: "Robots Follow" }), _jsxs("select", { id: "field-robotsFollow", name: "robotsFollow", value: String(values.robotsFollow ?? 'follow'), onChange: e => handleChange('robotsFollow', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "follow", children: "Follow" }), _jsx("option", { value: "nofollow", children: "No Follow" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-changeFreq", className: "kywi-field-label", children: "Change Frequency" }), _jsxs("select", { id: "field-changeFreq", name: "changeFreq", value: String(values.changeFreq ?? ''), onChange: e => handleChange('changeFreq', e.target.value), className: "kywi-select", children: [_jsx("option", { value: "", children: "-- Select --" }), _jsx("option", { value: "always", children: "Always" }), _jsx("option", { value: "hourly", children: "Hourly" }), _jsx("option", { value: "daily", children: "Daily" }), _jsx("option", { value: "weekly", children: "Weekly" }), _jsx("option", { value: "monthly", children: "Monthly" }), _jsx("option", { value: "yearly", children: "Yearly" }), _jsx("option", { value: "never", children: "Never" })] })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "field-sitemapPriority", className: "kywi-field-label", children: "Sitemap Priority (0-1)" }), _jsx("input", { id: "field-sitemapPriority", type: "number", name: "sitemapPriority", min: "0", max: "1", step: "0.1", value: String(values.sitemapPriority ?? ''), onChange: e => handleChange('sitemapPriority', e.target.value === '' ? '' : Number(e.target.value)), className: "kywi-input" })] })] })), activeTab === 'layout' && (_jsxs("div", { id: "kywi-tab-panel-layout", role: "tabpanel", className: "kywi-tab-panel", children: [layoutSaveState.status === 'error' && (_jsx("div", { className: "kywi-field-error", role: "alert", children: layoutSaveState.message })), layoutSaveState.status === 'saved' && (_jsx("p", { className: "kywi-field-hint", role: "status", children: "Layout saved." })), _jsx(LayoutEditor, { initialLayout: values.layout ?? { regions: {} }, contentId: String(initialValues?.id ?? ''), contentType: contentType.name, moduleRegistry: layoutModuleRegistry, moduleComponents: layoutModuleComponents, audiences: audiences, onChange: layout => handleChange('layout', layout), onSave: handleLayoutSave, ...(userRole ? { userRole } : {}) })] })), activeTab === 'categories-tags' && (_jsxs("div", { id: "kywi-tab-panel-categories-tags", role: "tabpanel", className: "kywi-tab-panel", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { className: "kywi-field-label", children: "Categories" }), _jsx(CategoryTreePicker, { categories: availableCategories, selected: values.categoryIds ?? [], onChange: ids => handleChange('categoryIds', ids) })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { className: "kywi-field-label", children: "Tags" }), _jsx(TagInput, { tags: Array.isArray(values.tags) ? values.tags : [], suggestions: availableTags, onChange: tags => handleChange('tags', tags) })] }), _jsx("div", { className: "kywi-field kywi-field-checkbox", children: _jsxs("label", { className: "kywi-field-label", children: [_jsx("input", { type: "checkbox", name: "featuredInCategory", checked: Boolean(values.featuredInCategory ?? false), onChange: e => handleChange('featuredInCategory', e.target.checked), className: "kywi-checkbox" }), ' ', "Featured in Category"] }) })] })), activeTab === 'related-content' && (_jsx("div", { id: "kywi-tab-panel-related-content", role: "tabpanel", className: "kywi-tab-panel", children: _jsx(RelatedContentPicker, { selected: values.relatedContentIds ?? [], onChange: ids => handleChange('relatedContentIds', ids) }) })), activeTab === 'permissions' && (_jsx("div", { id: "kywi-tab-panel-permissions", role: "tabpanel", className: "kywi-tab-panel", children: _jsx(ContentPermissionsTab, { contentId: String(initialValues?.id ?? ''), groups: groups, userRole: userRole }) })), activeTab === 'version-history' && (_jsx("div", { id: "kywi-tab-panel-version-history", role: "tabpanel", className: "kywi-tab-panel", children: versions.length === 0 ? (_jsx("p", { className: "kywi-empty-state", children: "No versions recorded yet." })) : (_jsxs("table", { className: "kywi-table kywi-version-table", "data-testid": "version-list", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Version" }), _jsx("th", { children: "Created" }), _jsx("th", { children: "By" }), _jsx("th", { children: "Actions" })] }) }), _jsx("tbody", { children: versions.map(v => (_jsxs("tr", { "data-version-id": v.id, children: [_jsxs("td", { children: ["v", v.version] }), _jsx("td", { children: v.createdAt }), _jsx("td", { children: v.createdBy }), _jsxs("td", { className: "kywi-version-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary kywi-btn-sm", "data-action": "diff", onClick: () => onDiffVersion?.(v.id), children: "Diff" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary kywi-btn-sm", "data-action": "restore", onClick: () => onRestoreVersion?.(v.id), children: "Restore" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger kywi-btn-sm", "data-action": "delete", onClick: () => onDeleteVersion?.(v.id), children: "Delete" })] })] }, v.id))) })] })) }))] }), _jsxs("div", { className: "kywi-form-actions", children: [_jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", disabled: isSubmitting || isLockedByOther || hasInvalidField, children: isSubmitting ? 'Saving...' : mode === 'create' ? 'Create' : 'Save' }), onCancel && (_jsx("button", { type: "button", onClick: onCancel, className: "kywi-btn kywi-btn-secondary", children: "Cancel" })), hasInvalidField && (_jsx("span", { className: "kywi-field-error", role: "alert", children: "Fix the highlighted fields before saving." }))] })] }));
107
212
  }
108
213
  //# sourceMappingURL=content-form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-form.js","sourceRoot":"","sources":["../../src/admin/content-form.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content-form.js","sourceRoot":"","sources":["../../src/admin/content-form.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface ContentPermissionsTabProps {
2
+ /** The content node's id; empty for an unsaved (create-mode) node. */
3
+ contentId: string;
4
+ /** Groups available to grant to. */
5
+ groups: {
6
+ id: string;
7
+ name: string;
8
+ }[];
9
+ /** Signed-in user's role — content-permission routes are siteAdmin-gated. */
10
+ userRole?: string | undefined;
11
+ }
12
+ export declare function ContentPermissionsTab({ contentId, groups, userRole }: ContentPermissionsTabProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=content-permissions-tab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-permissions-tab.d.ts","sourceRoot":"","sources":["../../src/admin/content-permissions-tab.tsx"],"names":[],"mappings":"AAwCA,MAAM,WAAW,0BAA0B;IACzC,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AAMD,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,0BAA0B,2CAoHhG"}