@kywi-software/core 0.1.0 → 0.2.1

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 (467) hide show
  1. package/dist/admin/app.d.ts +69 -0
  2. package/dist/admin/app.d.ts.map +1 -0
  3. package/dist/admin/app.js +98 -0
  4. package/dist/admin/app.js.map +1 -0
  5. package/dist/admin/chrome.d.ts +37 -0
  6. package/dist/admin/chrome.d.ts.map +1 -0
  7. package/dist/admin/chrome.js +162 -0
  8. package/dist/admin/chrome.js.map +1 -0
  9. package/dist/admin/context.d.ts +58 -0
  10. package/dist/admin/context.d.ts.map +1 -0
  11. package/dist/admin/context.js +31 -0
  12. package/dist/admin/context.js.map +1 -0
  13. package/dist/admin/index.d.ts +9 -1
  14. package/dist/admin/index.d.ts.map +1 -1
  15. package/dist/admin/index.js +12 -0
  16. package/dist/admin/index.js.map +1 -1
  17. package/dist/admin/kywi-logo.d.ts +21 -0
  18. package/dist/admin/kywi-logo.d.ts.map +1 -0
  19. package/dist/admin/kywi-logo.js +123 -0
  20. package/dist/admin/kywi-logo.js.map +1 -0
  21. package/dist/admin/nav.d.ts +21 -1
  22. package/dist/admin/nav.d.ts.map +1 -1
  23. package/dist/admin/nav.js +45 -88
  24. package/dist/admin/nav.js.map +1 -1
  25. package/dist/admin/primitives.d.ts +52 -0
  26. package/dist/admin/primitives.d.ts.map +1 -0
  27. package/dist/admin/primitives.js +78 -0
  28. package/dist/admin/primitives.js.map +1 -0
  29. package/dist/admin/registry.d.ts +130 -0
  30. package/dist/admin/registry.d.ts.map +1 -0
  31. package/dist/admin/registry.js +456 -0
  32. package/dist/admin/registry.js.map +1 -0
  33. package/dist/admin/server.d.ts +154 -0
  34. package/dist/admin/server.d.ts.map +1 -0
  35. package/dist/admin/server.js +121 -0
  36. package/dist/admin/server.js.map +1 -0
  37. package/dist/admin/shell.d.ts +27 -1
  38. package/dist/admin/shell.d.ts.map +1 -1
  39. package/dist/admin/shell.js +71 -6
  40. package/dist/admin/shell.js.map +1 -1
  41. package/dist/admin/styles/admin.css +113 -23
  42. package/dist/admin/surface-matcher.d.ts +51 -0
  43. package/dist/admin/surface-matcher.d.ts.map +1 -0
  44. package/dist/admin/surface-matcher.js +181 -0
  45. package/dist/admin/surface-matcher.js.map +1 -0
  46. package/dist/admin/surfaces/approvals/approvals-data.d.ts +17 -0
  47. package/dist/admin/surfaces/approvals/approvals-data.d.ts.map +1 -0
  48. package/dist/admin/surfaces/approvals/approvals-data.js +55 -0
  49. package/dist/admin/surfaces/approvals/approvals-data.js.map +1 -0
  50. package/dist/admin/surfaces/approvals/approvals-index.d.ts +3 -0
  51. package/dist/admin/surfaces/approvals/approvals-index.d.ts.map +1 -0
  52. package/dist/admin/surfaces/approvals/approvals-index.js +75 -0
  53. package/dist/admin/surfaces/approvals/approvals-index.js.map +1 -0
  54. package/dist/admin/surfaces/audiences/audiences-data.d.ts +107 -0
  55. package/dist/admin/surfaces/audiences/audiences-data.d.ts.map +1 -0
  56. package/dist/admin/surfaces/audiences/audiences-data.js +216 -0
  57. package/dist/admin/surfaces/audiences/audiences-data.js.map +1 -0
  58. package/dist/admin/surfaces/audiences/audiences-detail.d.ts +3 -0
  59. package/dist/admin/surfaces/audiences/audiences-detail.d.ts.map +1 -0
  60. package/dist/admin/surfaces/audiences/audiences-detail.js +78 -0
  61. package/dist/admin/surfaces/audiences/audiences-detail.js.map +1 -0
  62. package/dist/admin/surfaces/audiences/audiences-edit.d.ts +3 -0
  63. package/dist/admin/surfaces/audiences/audiences-edit.d.ts.map +1 -0
  64. package/dist/admin/surfaces/audiences/audiences-edit.js +55 -0
  65. package/dist/admin/surfaces/audiences/audiences-edit.js.map +1 -0
  66. package/dist/admin/surfaces/audiences/audiences-fields.d.ts +3 -0
  67. package/dist/admin/surfaces/audiences/audiences-fields.d.ts.map +1 -0
  68. package/dist/admin/surfaces/audiences/audiences-fields.js +56 -0
  69. package/dist/admin/surfaces/audiences/audiences-fields.js.map +1 -0
  70. package/dist/admin/surfaces/audiences/audiences-list.d.ts +3 -0
  71. package/dist/admin/surfaces/audiences/audiences-list.d.ts.map +1 -0
  72. package/dist/admin/surfaces/audiences/audiences-list.js +50 -0
  73. package/dist/admin/surfaces/audiences/audiences-list.js.map +1 -0
  74. package/dist/admin/surfaces/audiences/audiences-new.d.ts +3 -0
  75. package/dist/admin/surfaces/audiences/audiences-new.d.ts.map +1 -0
  76. package/dist/admin/surfaces/audiences/audiences-new.js +54 -0
  77. package/dist/admin/surfaces/audiences/audiences-new.js.map +1 -0
  78. package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts +3 -0
  79. package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts.map +1 -0
  80. package/dist/admin/surfaces/audiences/audiences-preview-tokens.js +123 -0
  81. package/dist/admin/surfaces/audiences/audiences-preview-tokens.js.map +1 -0
  82. package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts +3 -0
  83. package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts.map +1 -0
  84. package/dist/admin/surfaces/audiences/audiences-selfid-widget.js +50 -0
  85. package/dist/admin/surfaces/audiences/audiences-selfid-widget.js.map +1 -0
  86. package/dist/admin/surfaces/audiences/audiences-test.d.ts +3 -0
  87. package/dist/admin/surfaces/audiences/audiences-test.d.ts.map +1 -0
  88. package/dist/admin/surfaces/audiences/audiences-test.js +39 -0
  89. package/dist/admin/surfaces/audiences/audiences-test.js.map +1 -0
  90. package/dist/admin/surfaces/audiences/states.d.ts +10 -0
  91. package/dist/admin/surfaces/audiences/states.d.ts.map +1 -0
  92. package/dist/admin/surfaces/audiences/states.js +11 -0
  93. package/dist/admin/surfaces/audiences/states.js.map +1 -0
  94. package/dist/admin/surfaces/changesets/changesets-data.d.ts +35 -0
  95. package/dist/admin/surfaces/changesets/changesets-data.d.ts.map +1 -0
  96. package/dist/admin/surfaces/changesets/changesets-data.js +151 -0
  97. package/dist/admin/surfaces/changesets/changesets-data.js.map +1 -0
  98. package/dist/admin/surfaces/changesets/changesets-detail.d.ts +3 -0
  99. package/dist/admin/surfaces/changesets/changesets-detail.d.ts.map +1 -0
  100. package/dist/admin/surfaces/changesets/changesets-detail.js +84 -0
  101. package/dist/admin/surfaces/changesets/changesets-detail.js.map +1 -0
  102. package/dist/admin/surfaces/changesets/changesets-index.d.ts +3 -0
  103. package/dist/admin/surfaces/changesets/changesets-index.d.ts.map +1 -0
  104. package/dist/admin/surfaces/changesets/changesets-index.js +62 -0
  105. package/dist/admin/surfaces/changesets/changesets-index.js.map +1 -0
  106. package/dist/admin/surfaces/comments/comment-moderation.d.ts +18 -0
  107. package/dist/admin/surfaces/comments/comment-moderation.d.ts.map +1 -0
  108. package/dist/admin/surfaces/comments/comment-moderation.js +36 -0
  109. package/dist/admin/surfaces/comments/comment-moderation.js.map +1 -0
  110. package/dist/admin/surfaces/comments/comments-data.d.ts +23 -0
  111. package/dist/admin/surfaces/comments/comments-data.d.ts.map +1 -0
  112. package/dist/admin/surfaces/comments/comments-data.js +81 -0
  113. package/dist/admin/surfaces/comments/comments-data.js.map +1 -0
  114. package/dist/admin/surfaces/comments/comments-index.d.ts +3 -0
  115. package/dist/admin/surfaces/comments/comments-index.d.ts.map +1 -0
  116. package/dist/admin/surfaces/comments/comments-index.js +73 -0
  117. package/dist/admin/surfaces/comments/comments-index.js.map +1 -0
  118. package/dist/admin/surfaces/content/content-edit.d.ts +3 -0
  119. package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -0
  120. package/dist/admin/surfaces/content/content-edit.js +321 -0
  121. package/dist/admin/surfaces/content/content-edit.js.map +1 -0
  122. package/dist/admin/surfaces/content/content-index.d.ts +3 -0
  123. package/dist/admin/surfaces/content/content-index.d.ts.map +1 -0
  124. package/dist/admin/surfaces/content/content-index.js +21 -0
  125. package/dist/admin/surfaces/content/content-index.js.map +1 -0
  126. package/dist/admin/surfaces/content/content-list.d.ts +3 -0
  127. package/dist/admin/surfaces/content/content-list.d.ts.map +1 -0
  128. package/dist/admin/surfaces/content/content-list.js +70 -0
  129. package/dist/admin/surfaces/content/content-list.js.map +1 -0
  130. package/dist/admin/surfaces/content/content-new.d.ts +3 -0
  131. package/dist/admin/surfaces/content/content-new.d.ts.map +1 -0
  132. package/dist/admin/surfaces/content/content-new.js +109 -0
  133. package/dist/admin/surfaces/content/content-new.js.map +1 -0
  134. package/dist/admin/surfaces/content/content-translation-bar.d.ts +12 -0
  135. package/dist/admin/surfaces/content/content-translation-bar.d.ts.map +1 -0
  136. package/dist/admin/surfaces/content/content-translation-bar.js +65 -0
  137. package/dist/admin/surfaces/content/content-translation-bar.js.map +1 -0
  138. package/dist/admin/surfaces/content/runtime-content-types.d.ts +41 -0
  139. package/dist/admin/surfaces/content/runtime-content-types.d.ts.map +1 -0
  140. package/dist/admin/surfaces/content/runtime-content-types.js +51 -0
  141. package/dist/admin/surfaces/content/runtime-content-types.js.map +1 -0
  142. package/dist/admin/surfaces/contentTree/content-tree.d.ts +3 -0
  143. package/dist/admin/surfaces/contentTree/content-tree.d.ts.map +1 -0
  144. package/dist/admin/surfaces/contentTree/content-tree.js +179 -0
  145. package/dist/admin/surfaces/contentTree/content-tree.js.map +1 -0
  146. package/dist/admin/surfaces/contentTree/move-to-picker.d.ts +12 -0
  147. package/dist/admin/surfaces/contentTree/move-to-picker.d.ts.map +1 -0
  148. package/dist/admin/surfaces/contentTree/move-to-picker.js +77 -0
  149. package/dist/admin/surfaces/contentTree/move-to-picker.js.map +1 -0
  150. package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts +3 -0
  151. package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts.map +1 -0
  152. package/dist/admin/surfaces/contentTypes/content-types-designer.js +260 -0
  153. package/dist/admin/surfaces/contentTypes/content-types-designer.js.map +1 -0
  154. package/dist/admin/surfaces/contentTypes/content-types-list.d.ts +3 -0
  155. package/dist/admin/surfaces/contentTypes/content-types-list.d.ts.map +1 -0
  156. package/dist/admin/surfaces/contentTypes/content-types-list.js +69 -0
  157. package/dist/admin/surfaces/contentTypes/content-types-list.js.map +1 -0
  158. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts +3 -0
  159. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -0
  160. package/dist/admin/surfaces/dashboard/dashboard-index.js +100 -0
  161. package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -0
  162. package/dist/admin/surfaces/experiments/experiments-data.d.ts +12 -0
  163. package/dist/admin/surfaces/experiments/experiments-data.d.ts.map +1 -0
  164. package/dist/admin/surfaces/experiments/experiments-data.js +89 -0
  165. package/dist/admin/surfaces/experiments/experiments-data.js.map +1 -0
  166. package/dist/admin/surfaces/experiments/experiments-detail.d.ts +3 -0
  167. package/dist/admin/surfaces/experiments/experiments-detail.d.ts.map +1 -0
  168. package/dist/admin/surfaces/experiments/experiments-detail.js +87 -0
  169. package/dist/admin/surfaces/experiments/experiments-detail.js.map +1 -0
  170. package/dist/admin/surfaces/experiments/experiments-list.d.ts +3 -0
  171. package/dist/admin/surfaces/experiments/experiments-list.d.ts.map +1 -0
  172. package/dist/admin/surfaces/experiments/experiments-list.js +37 -0
  173. package/dist/admin/surfaces/experiments/experiments-list.js.map +1 -0
  174. package/dist/admin/surfaces/experiments/experiments-new.d.ts +3 -0
  175. package/dist/admin/surfaces/experiments/experiments-new.d.ts.map +1 -0
  176. package/dist/admin/surfaces/experiments/experiments-new.js +33 -0
  177. package/dist/admin/surfaces/experiments/experiments-new.js.map +1 -0
  178. package/dist/admin/surfaces/experiments/states.d.ts +10 -0
  179. package/dist/admin/surfaces/experiments/states.d.ts.map +1 -0
  180. package/dist/admin/surfaces/experiments/states.js +11 -0
  181. package/dist/admin/surfaces/experiments/states.js.map +1 -0
  182. package/dist/admin/surfaces/extensions/extensions-data.d.ts +59 -0
  183. package/dist/admin/surfaces/extensions/extensions-data.d.ts.map +1 -0
  184. package/dist/admin/surfaces/extensions/extensions-data.js +71 -0
  185. package/dist/admin/surfaces/extensions/extensions-data.js.map +1 -0
  186. package/dist/admin/surfaces/extensions/extensions-import-export.d.ts +3 -0
  187. package/dist/admin/surfaces/extensions/extensions-import-export.d.ts.map +1 -0
  188. package/dist/admin/surfaces/extensions/extensions-import-export.js +77 -0
  189. package/dist/admin/surfaces/extensions/extensions-import-export.js.map +1 -0
  190. package/dist/admin/surfaces/extensions/extensions-list.d.ts +3 -0
  191. package/dist/admin/surfaces/extensions/extensions-list.d.ts.map +1 -0
  192. package/dist/admin/surfaces/extensions/extensions-list.js +106 -0
  193. package/dist/admin/surfaces/extensions/extensions-list.js.map +1 -0
  194. package/dist/admin/surfaces/extensions/form-modal.d.ts +17 -0
  195. package/dist/admin/surfaces/extensions/form-modal.d.ts.map +1 -0
  196. package/dist/admin/surfaces/extensions/form-modal.js +27 -0
  197. package/dist/admin/surfaces/extensions/form-modal.js.map +1 -0
  198. package/dist/admin/surfaces/feeds/feed-editor.d.ts +8 -0
  199. package/dist/admin/surfaces/feeds/feed-editor.d.ts.map +1 -0
  200. package/dist/admin/surfaces/feeds/feed-editor.js +120 -0
  201. package/dist/admin/surfaces/feeds/feed-editor.js.map +1 -0
  202. package/dist/admin/surfaces/feeds/feeds-data.d.ts +35 -0
  203. package/dist/admin/surfaces/feeds/feeds-data.d.ts.map +1 -0
  204. package/dist/admin/surfaces/feeds/feeds-data.js +81 -0
  205. package/dist/admin/surfaces/feeds/feeds-data.js.map +1 -0
  206. package/dist/admin/surfaces/feeds/feeds-detail.d.ts +3 -0
  207. package/dist/admin/surfaces/feeds/feeds-detail.d.ts.map +1 -0
  208. package/dist/admin/surfaces/feeds/feeds-detail.js +36 -0
  209. package/dist/admin/surfaces/feeds/feeds-detail.js.map +1 -0
  210. package/dist/admin/surfaces/feeds/feeds-list.d.ts +3 -0
  211. package/dist/admin/surfaces/feeds/feeds-list.d.ts.map +1 -0
  212. package/dist/admin/surfaces/feeds/feeds-list.js +49 -0
  213. package/dist/admin/surfaces/feeds/feeds-list.js.map +1 -0
  214. package/dist/admin/surfaces/feeds/feeds-new.d.ts +3 -0
  215. package/dist/admin/surfaces/feeds/feeds-new.d.ts.map +1 -0
  216. package/dist/admin/surfaces/feeds/feeds-new.js +7 -0
  217. package/dist/admin/surfaces/feeds/feeds-new.js.map +1 -0
  218. package/dist/admin/surfaces/forms/form-editor.d.ts +5 -0
  219. package/dist/admin/surfaces/forms/form-editor.d.ts.map +1 -0
  220. package/dist/admin/surfaces/forms/form-editor.js +59 -0
  221. package/dist/admin/surfaces/forms/form-editor.js.map +1 -0
  222. package/dist/admin/surfaces/forms/forms-data.d.ts +52 -0
  223. package/dist/admin/surfaces/forms/forms-data.d.ts.map +1 -0
  224. package/dist/admin/surfaces/forms/forms-data.js +106 -0
  225. package/dist/admin/surfaces/forms/forms-data.js.map +1 -0
  226. package/dist/admin/surfaces/forms/forms-edit.d.ts +3 -0
  227. package/dist/admin/surfaces/forms/forms-edit.d.ts.map +1 -0
  228. package/dist/admin/surfaces/forms/forms-edit.js +40 -0
  229. package/dist/admin/surfaces/forms/forms-edit.js.map +1 -0
  230. package/dist/admin/surfaces/forms/forms-list.d.ts +3 -0
  231. package/dist/admin/surfaces/forms/forms-list.d.ts.map +1 -0
  232. package/dist/admin/surfaces/forms/forms-list.js +53 -0
  233. package/dist/admin/surfaces/forms/forms-list.js.map +1 -0
  234. package/dist/admin/surfaces/forms/forms-new.d.ts +3 -0
  235. package/dist/admin/surfaces/forms/forms-new.d.ts.map +1 -0
  236. package/dist/admin/surfaces/forms/forms-new.js +7 -0
  237. package/dist/admin/surfaces/forms/forms-new.js.map +1 -0
  238. package/dist/admin/surfaces/forms/forms-submissions.d.ts +3 -0
  239. package/dist/admin/surfaces/forms/forms-submissions.d.ts.map +1 -0
  240. package/dist/admin/surfaces/forms/forms-submissions.js +125 -0
  241. package/dist/admin/surfaces/forms/forms-submissions.js.map +1 -0
  242. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts +8 -0
  243. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -0
  244. package/dist/admin/surfaces/layouts/layout-editor-client.js +77 -0
  245. package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -0
  246. package/dist/admin/surfaces/layouts/layouts-data.d.ts +53 -0
  247. package/dist/admin/surfaces/layouts/layouts-data.d.ts.map +1 -0
  248. package/dist/admin/surfaces/layouts/layouts-data.js +61 -0
  249. package/dist/admin/surfaces/layouts/layouts-data.js.map +1 -0
  250. package/dist/admin/surfaces/layouts/layouts-detail.d.ts +3 -0
  251. package/dist/admin/surfaces/layouts/layouts-detail.d.ts.map +1 -0
  252. package/dist/admin/surfaces/layouts/layouts-detail.js +38 -0
  253. package/dist/admin/surfaces/layouts/layouts-detail.js.map +1 -0
  254. package/dist/admin/surfaces/layouts/layouts-list.d.ts +3 -0
  255. package/dist/admin/surfaces/layouts/layouts-list.d.ts.map +1 -0
  256. package/dist/admin/surfaces/layouts/layouts-list.js +62 -0
  257. package/dist/admin/surfaces/layouts/layouts-list.js.map +1 -0
  258. package/dist/admin/surfaces/layouts/layouts-new.d.ts +3 -0
  259. package/dist/admin/surfaces/layouts/layouts-new.d.ts.map +1 -0
  260. package/dist/admin/surfaces/layouts/layouts-new.js +7 -0
  261. package/dist/admin/surfaces/layouts/layouts-new.js.map +1 -0
  262. package/dist/admin/surfaces/login.d.ts +20 -0
  263. package/dist/admin/surfaces/login.d.ts.map +1 -0
  264. package/dist/admin/surfaces/login.js +93 -0
  265. package/dist/admin/surfaces/login.js.map +1 -0
  266. package/dist/admin/surfaces/media/library.d.ts +3 -0
  267. package/dist/admin/surfaces/media/library.d.ts.map +1 -0
  268. package/dist/admin/surfaces/media/library.js +7 -0
  269. package/dist/admin/surfaces/media/library.js.map +1 -0
  270. package/dist/admin/surfaces/media/media-client.d.ts +4 -0
  271. package/dist/admin/surfaces/media/media-client.d.ts.map +1 -0
  272. package/dist/admin/surfaces/media/media-client.js +203 -0
  273. package/dist/admin/surfaces/media/media-client.js.map +1 -0
  274. package/dist/admin/surfaces/media/upload.d.ts +3 -0
  275. package/dist/admin/surfaces/media/upload.d.ts.map +1 -0
  276. package/dist/admin/surfaces/media/upload.js +7 -0
  277. package/dist/admin/surfaces/media/upload.js.map +1 -0
  278. package/dist/admin/surfaces/plugins/plugins-data.d.ts +37 -0
  279. package/dist/admin/surfaces/plugins/plugins-data.d.ts.map +1 -0
  280. package/dist/admin/surfaces/plugins/plugins-data.js +31 -0
  281. package/dist/admin/surfaces/plugins/plugins-data.js.map +1 -0
  282. package/dist/admin/surfaces/plugins/plugins-index.d.ts +3 -0
  283. package/dist/admin/surfaces/plugins/plugins-index.d.ts.map +1 -0
  284. package/dist/admin/surfaces/plugins/plugins-index.js +72 -0
  285. package/dist/admin/surfaces/plugins/plugins-index.js.map +1 -0
  286. package/dist/admin/surfaces/search/search-index.d.ts +3 -0
  287. package/dist/admin/surfaces/search/search-index.d.ts.map +1 -0
  288. package/dist/admin/surfaces/search/search-index.js +76 -0
  289. package/dist/admin/surfaces/search/search-index.js.map +1 -0
  290. package/dist/admin/surfaces/settings/admin-features.d.ts +3 -0
  291. package/dist/admin/surfaces/settings/admin-features.d.ts.map +1 -0
  292. package/dist/admin/surfaces/settings/admin-features.js +138 -0
  293. package/dist/admin/surfaces/settings/admin-features.js.map +1 -0
  294. package/dist/admin/surfaces/settings/settings-ax.d.ts +3 -0
  295. package/dist/admin/surfaces/settings/settings-ax.d.ts.map +1 -0
  296. package/dist/admin/surfaces/settings/settings-ax.js +63 -0
  297. package/dist/admin/surfaces/settings/settings-ax.js.map +1 -0
  298. package/dist/admin/surfaces/settings/settings-cache.d.ts +3 -0
  299. package/dist/admin/surfaces/settings/settings-cache.d.ts.map +1 -0
  300. package/dist/admin/surfaces/settings/settings-cache.js +64 -0
  301. package/dist/admin/surfaces/settings/settings-cache.js.map +1 -0
  302. package/dist/admin/surfaces/settings/settings-email.d.ts +3 -0
  303. package/dist/admin/surfaces/settings/settings-email.d.ts.map +1 -0
  304. package/dist/admin/surfaces/settings/settings-email.js +89 -0
  305. package/dist/admin/surfaces/settings/settings-email.js.map +1 -0
  306. package/dist/admin/surfaces/settings/settings-general.d.ts +3 -0
  307. package/dist/admin/surfaces/settings/settings-general.d.ts.map +1 -0
  308. package/dist/admin/surfaces/settings/settings-general.js +91 -0
  309. package/dist/admin/surfaces/settings/settings-general.js.map +1 -0
  310. package/dist/admin/surfaces/settings/settings-site.d.ts +3 -0
  311. package/dist/admin/surfaces/settings/settings-site.d.ts.map +1 -0
  312. package/dist/admin/surfaces/settings/settings-site.js +14 -0
  313. package/dist/admin/surfaces/settings/settings-site.js.map +1 -0
  314. package/dist/admin/surfaces/settings/settings-sites.d.ts +3 -0
  315. package/dist/admin/surfaces/settings/settings-sites.d.ts.map +1 -0
  316. package/dist/admin/surfaces/settings/settings-sites.js +134 -0
  317. package/dist/admin/surfaces/settings/settings-sites.js.map +1 -0
  318. package/dist/admin/surfaces/settings/states.d.ts +33 -0
  319. package/dist/admin/surfaces/settings/states.d.ts.map +1 -0
  320. package/dist/admin/surfaces/settings/states.js +33 -0
  321. package/dist/admin/surfaces/settings/states.js.map +1 -0
  322. package/dist/admin/surfaces/taxonomy/categories.d.ts +3 -0
  323. package/dist/admin/surfaces/taxonomy/categories.d.ts.map +1 -0
  324. package/dist/admin/surfaces/taxonomy/categories.js +162 -0
  325. package/dist/admin/surfaces/taxonomy/categories.js.map +1 -0
  326. package/dist/admin/surfaces/taxonomy/tags.d.ts +3 -0
  327. package/dist/admin/surfaces/taxonomy/tags.d.ts.map +1 -0
  328. package/dist/admin/surfaces/taxonomy/tags.js +112 -0
  329. package/dist/admin/surfaces/taxonomy/tags.js.map +1 -0
  330. package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts +39 -0
  331. package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts.map +1 -0
  332. package/dist/admin/surfaces/taxonomy/taxonomy-ui.js +66 -0
  333. package/dist/admin/surfaces/taxonomy/taxonomy-ui.js.map +1 -0
  334. package/dist/admin/surfaces/translations/states.d.ts +10 -0
  335. package/dist/admin/surfaces/translations/states.d.ts.map +1 -0
  336. package/dist/admin/surfaces/translations/states.js +11 -0
  337. package/dist/admin/surfaces/translations/states.js.map +1 -0
  338. package/dist/admin/surfaces/translations/translations-index.d.ts +3 -0
  339. package/dist/admin/surfaces/translations/translations-index.d.ts.map +1 -0
  340. package/dist/admin/surfaces/translations/translations-index.js +99 -0
  341. package/dist/admin/surfaces/translations/translations-index.js.map +1 -0
  342. package/dist/admin/surfaces/trash/trash-index.d.ts +3 -0
  343. package/dist/admin/surfaces/trash/trash-index.d.ts.map +1 -0
  344. package/dist/admin/surfaces/trash/trash-index.js +96 -0
  345. package/dist/admin/surfaces/trash/trash-index.js.map +1 -0
  346. package/dist/admin/surfaces/users/users-data.d.ts +51 -0
  347. package/dist/admin/surfaces/users/users-data.d.ts.map +1 -0
  348. package/dist/admin/surfaces/users/users-data.js +60 -0
  349. package/dist/admin/surfaces/users/users-data.js.map +1 -0
  350. package/dist/admin/surfaces/users/users-detail.d.ts +3 -0
  351. package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -0
  352. package/dist/admin/surfaces/users/users-detail.js +148 -0
  353. package/dist/admin/surfaces/users/users-detail.js.map +1 -0
  354. package/dist/admin/surfaces/users/users-groups.d.ts +3 -0
  355. package/dist/admin/surfaces/users/users-groups.d.ts.map +1 -0
  356. package/dist/admin/surfaces/users/users-groups.js +136 -0
  357. package/dist/admin/surfaces/users/users-groups.js.map +1 -0
  358. package/dist/admin/surfaces/users/users-list.d.ts +3 -0
  359. package/dist/admin/surfaces/users/users-list.d.ts.map +1 -0
  360. package/dist/admin/surfaces/users/users-list.js +119 -0
  361. package/dist/admin/surfaces/users/users-list.js.map +1 -0
  362. package/dist/admin/surfaces/users/users-new.d.ts +3 -0
  363. package/dist/admin/surfaces/users/users-new.d.ts.map +1 -0
  364. package/dist/admin/surfaces/users/users-new.js +78 -0
  365. package/dist/admin/surfaces/users/users-new.js.map +1 -0
  366. package/dist/admin/surfaces/users/users-permissions.d.ts +3 -0
  367. package/dist/admin/surfaces/users/users-permissions.d.ts.map +1 -0
  368. package/dist/admin/surfaces/users/users-permissions.js +135 -0
  369. package/dist/admin/surfaces/users/users-permissions.js.map +1 -0
  370. package/dist/admin/surfaces/webServices/api-keys.d.ts +3 -0
  371. package/dist/admin/surfaces/webServices/api-keys.d.ts.map +1 -0
  372. package/dist/admin/surfaces/webServices/api-keys.js +65 -0
  373. package/dist/admin/surfaces/webServices/api-keys.js.map +1 -0
  374. package/dist/admin/surfaces/webServices/oauth.d.ts +3 -0
  375. package/dist/admin/surfaces/webServices/oauth.d.ts.map +1 -0
  376. package/dist/admin/surfaces/webServices/oauth.js +75 -0
  377. package/dist/admin/surfaces/webServices/oauth.js.map +1 -0
  378. package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts +8 -0
  379. package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts.map +1 -0
  380. package/dist/admin/surfaces/webServices/secret-reveal-modal.js +30 -0
  381. package/dist/admin/surfaces/webServices/secret-reveal-modal.js.map +1 -0
  382. package/dist/admin/surfaces/webServices/web-services-data.d.ts +38 -0
  383. package/dist/admin/surfaces/webServices/web-services-data.d.ts.map +1 -0
  384. package/dist/admin/surfaces/webServices/web-services-data.js +52 -0
  385. package/dist/admin/surfaces/webServices/web-services-data.js.map +1 -0
  386. package/dist/api/admin-features-routes.d.ts +10 -0
  387. package/dist/api/admin-features-routes.d.ts.map +1 -0
  388. package/dist/api/admin-features-routes.js +61 -0
  389. package/dist/api/admin-features-routes.js.map +1 -0
  390. package/dist/api/graphql/resolvers.d.ts +6 -6
  391. package/dist/api/index.d.ts.map +1 -1
  392. package/dist/api/index.js +2 -0
  393. package/dist/api/index.js.map +1 -1
  394. package/dist/config/define.d.ts +22 -1
  395. package/dist/config/define.d.ts.map +1 -1
  396. package/dist/config/define.js +44 -0
  397. package/dist/config/define.js.map +1 -1
  398. package/dist/config/parse.d.ts.map +1 -1
  399. package/dist/config/parse.js +8 -2
  400. package/dist/config/parse.js.map +1 -1
  401. package/dist/config/types.d.ts +60 -1
  402. package/dist/config/types.d.ts.map +1 -1
  403. package/dist/config/types.js +20 -1
  404. package/dist/config/types.js.map +1 -1
  405. package/dist/config/validate.d.ts.map +1 -1
  406. package/dist/config/validate.js +60 -0
  407. package/dist/config/validate.js.map +1 -1
  408. package/dist/db/admin-features-queries.d.ts +29 -0
  409. package/dist/db/admin-features-queries.d.ts.map +1 -0
  410. package/dist/db/admin-features-queries.js +46 -0
  411. package/dist/db/admin-features-queries.js.map +1 -0
  412. package/dist/db/analytics-queries.d.ts +2 -2
  413. package/dist/db/audit-queries.d.ts +3 -3
  414. package/dist/db/category-queries.d.ts +6 -6
  415. package/dist/db/changeset-audit-queries.d.ts +2 -2
  416. package/dist/db/changeset-queries.d.ts +8 -8
  417. package/dist/db/extension-queries.d.ts +17 -17
  418. package/dist/db/feed-queries.d.ts +6 -6
  419. package/dist/db/media-queries.d.ts +12 -12
  420. package/dist/db/site-admin-queries.d.ts +1 -1
  421. package/dist/db/site-queries.d.ts +3 -3
  422. package/dist/db/tag-queries.d.ts +4 -4
  423. package/dist/db/webhook-queries.d.ts +8 -8
  424. package/dist/db/workflow-queries.d.ts +5 -5
  425. package/dist/experiments/schema.d.ts +1 -1
  426. package/dist/host-client/index.d.ts +1 -0
  427. package/dist/host-client/index.d.ts.map +1 -1
  428. package/dist/host-client/index.js +4 -0
  429. package/dist/host-client/index.js.map +1 -1
  430. package/dist/host-client/json.d.ts +36 -0
  431. package/dist/host-client/json.d.ts.map +1 -0
  432. package/dist/host-client/json.js +106 -0
  433. package/dist/host-client/json.js.map +1 -0
  434. package/dist/layout/modules-extended.d.ts.map +1 -1
  435. package/dist/layout/modules-extended.js +9 -8
  436. package/dist/layout/modules-extended.js.map +1 -1
  437. package/dist/layout/modules.js +5 -5
  438. package/dist/layout/modules.js.map +1 -1
  439. package/dist/schema/base.d.ts +1 -1
  440. package/dist/scope/breadcrumbs.d.ts.map +1 -1
  441. package/dist/scope/breadcrumbs.js +4 -1
  442. package/dist/scope/breadcrumbs.js.map +1 -1
  443. package/dist/scope/head-foot.d.ts +12 -4
  444. package/dist/scope/head-foot.d.ts.map +1 -1
  445. package/dist/scope/head-foot.js +14 -6
  446. package/dist/scope/head-foot.js.map +1 -1
  447. package/dist/scope/jsonld.d.ts.map +1 -1
  448. package/dist/scope/jsonld.js +1 -11
  449. package/dist/scope/jsonld.js.map +1 -1
  450. package/dist/scope/kywi-form.d.ts.map +1 -1
  451. package/dist/scope/kywi-form.js +3 -3
  452. package/dist/scope/kywi-form.js.map +1 -1
  453. package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
  454. package/dist/scope/kywi-wizard-form.js +3 -3
  455. package/dist/scope/kywi-wizard-form.js.map +1 -1
  456. package/dist/scope/rendering.d.ts.map +1 -1
  457. package/dist/scope/rendering.js +7 -6
  458. package/dist/scope/rendering.js.map +1 -1
  459. package/dist/util/jsonld.d.ts +13 -0
  460. package/dist/util/jsonld.d.ts.map +1 -0
  461. package/dist/util/jsonld.js +15 -0
  462. package/dist/util/jsonld.js.map +1 -0
  463. package/dist/util/sanitize.d.ts +6 -0
  464. package/dist/util/sanitize.d.ts.map +1 -0
  465. package/dist/util/sanitize.js +156 -0
  466. package/dist/util/sanitize.js.map +1 -0
  467. package/package.json +12 -3
@@ -0,0 +1,106 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * `extensions.list` surface — the EAV subtype/set/attribute manager, ported
5
+ * verbatim from `apps/reference/app/admin/extensions/page.tsx` (0.2.0 T12).
6
+ * Markup / classes / copy unchanged; wiring substitutions (plan §1.3):
7
+ * `useRouter().push` → `useAdminContext().navigate`; the `adminFetch`-backed data
8
+ * helpers take the context `fetch`; `LoadingState`/`ErrorState` are the canonical
9
+ * core primitives; `FormModal` is the migrated sibling component.
10
+ * `AdminShellWrapper` is gone — chrome is rendered once by `KywiAdminApp` (T14).
11
+ */
12
+ import { useCallback, useEffect, useState } from 'react';
13
+ import { useAdminContext } from '../../context.js';
14
+ import { LoadingState, ErrorState } from '../../primitives.js';
15
+ import { ExtensionManager } from '../../extension-manager.js';
16
+ import { FormModal } from './form-modal.js';
17
+ import { loadSubtypes, createSubtype, deleteSubtype, createSet, deleteSet, createAttribute, deleteAttribute, exportExtensions, ATTRIBUTE_TYPES, BASE_CONTENT_TYPES, } from './extensions-data.js';
18
+ const noop = () => { };
19
+ export default function ExtensionsListSurface(_props) {
20
+ const { fetch: adminFetch, navigate } = useAdminContext();
21
+ const [subtypes, setSubtypes] = useState([]);
22
+ const [loading, setLoading] = useState(true);
23
+ const [error, setError] = useState(null);
24
+ const [subtypeModal, setSubtypeModal] = useState(false);
25
+ const [setModalFor, setSetModalFor] = useState(null);
26
+ const [attrModalFor, setAttrModalFor] = useState(null);
27
+ const load = useCallback(async () => {
28
+ setLoading(true);
29
+ setError(null);
30
+ try {
31
+ setSubtypes(await loadSubtypes(adminFetch));
32
+ }
33
+ catch (e) {
34
+ setError(e instanceof Error ? e.message : 'Failed to load extensions');
35
+ }
36
+ finally {
37
+ setLoading(false);
38
+ }
39
+ }, [adminFetch]);
40
+ useEffect(() => {
41
+ load();
42
+ }, [load]);
43
+ const guard = useCallback(async (fn, fallback) => {
44
+ setError(null);
45
+ try {
46
+ await fn();
47
+ await load();
48
+ }
49
+ catch (e) {
50
+ setError(e instanceof Error ? e.message : fallback);
51
+ }
52
+ }, [load]);
53
+ const handleExport = useCallback(async () => {
54
+ setError(null);
55
+ try {
56
+ const data = await exportExtensions(adminFetch);
57
+ const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });
58
+ const url = URL.createObjectURL(blob);
59
+ const a = document.createElement('a');
60
+ a.href = url;
61
+ a.download = 'kywi-extensions.json';
62
+ document.body.appendChild(a);
63
+ a.click();
64
+ a.remove();
65
+ URL.revokeObjectURL(url);
66
+ }
67
+ catch (e) {
68
+ setError(e instanceof Error ? e.message : 'Export failed');
69
+ }
70
+ }, [adminFetch]);
71
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsxs("div", { children: [_jsx("h1", { children: "Extensions" }), _jsxs("p", { className: "kywi-admin-section-hint", children: ["Extend content with EAV subtypes, attribute sets and attributes. Use", ' ', _jsx("button", { type: "button", className: "kywi-link-button", onClick: () => navigate('/admin/extensions/import-export'), children: "Import / Export" }), ' ', "to move definitions between environments."] })] }) }), error && _jsx(ErrorState, { message: error, onRetry: load }), loading ? (_jsx(LoadingState, { label: "Loading extensions\u2026" })) : (_jsx(ExtensionManager, { subtypes: subtypes, onCreateSubtype: () => setSubtypeModal(true), onUpdateSubtype: noop, onDeleteSubtype: id => void (window.confirm('Delete this subtype and all its sets/attributes?') &&
72
+ guard(() => deleteSubtype(adminFetch, id), 'Delete failed')), onCreateSet: ({ subtypeId }) => setSetModalFor(subtypeId), onUpdateSet: noop, onDeleteSet: id => void (window.confirm('Delete this attribute set?') && guard(() => deleteSet(adminFetch, id), 'Delete failed')), onCreateAttribute: ({ setId }) => setAttrModalFor(setId), onUpdateAttribute: noop, onDeleteAttribute: id => void (window.confirm('Delete this attribute?') && guard(() => deleteAttribute(adminFetch, id), 'Delete failed')), onReorderAttributes: noop, onExport: () => void handleExport(), onImport: () => navigate('/admin/extensions/import-export') })), subtypeModal && (_jsx(FormModal, { title: "New subtype", submitLabel: "Create subtype", fields: [
73
+ { name: 'name', label: 'Name', type: 'text', required: true, placeholder: 'e.g. product' },
74
+ { name: 'baseContentType', label: 'Base content type', type: 'select', options: BASE_CONTENT_TYPES },
75
+ { name: 'description', label: 'Description', type: 'text' },
76
+ ], onCancel: () => setSubtypeModal(false), onSubmit: values => {
77
+ setSubtypeModal(false);
78
+ const description = (values.description ?? '').trim();
79
+ void guard(() => createSubtype(adminFetch, {
80
+ name: (values.name ?? '').trim(),
81
+ baseContentType: values.baseContentType ?? 'content',
82
+ ...(description ? { description } : {}),
83
+ }), 'Create failed');
84
+ } })), setModalFor && (_jsx(FormModal, { title: "New attribute set", submitLabel: "Create set", fields: [
85
+ { name: 'name', label: 'Name', type: 'text', required: true, placeholder: 'e.g. specs' },
86
+ { name: 'label', label: 'Label', type: 'text', required: true, placeholder: 'e.g. Specifications' },
87
+ ], onCancel: () => setSetModalFor(null), onSubmit: values => {
88
+ const subtypeId = setModalFor;
89
+ setSetModalFor(null);
90
+ void guard(() => createSet(adminFetch, { subtypeId, name: (values.name ?? '').trim(), label: (values.label ?? '').trim() }), 'Create failed');
91
+ } })), attrModalFor && (_jsx(FormModal, { title: "New attribute", submitLabel: "Create attribute", fields: [
92
+ { name: 'name', label: 'Name', type: 'text', required: true, placeholder: 'e.g. weight' },
93
+ { name: 'label', label: 'Label', type: 'text', required: true, placeholder: 'e.g. Weight (kg)' },
94
+ { name: 'type', label: 'Type', type: 'select', options: ATTRIBUTE_TYPES },
95
+ ], onCancel: () => setAttrModalFor(null), onSubmit: values => {
96
+ const setId = attrModalFor;
97
+ setAttrModalFor(null);
98
+ void guard(() => createAttribute(adminFetch, {
99
+ setId,
100
+ name: (values.name ?? '').trim(),
101
+ label: (values.label ?? '').trim(),
102
+ type: values.type ?? 'text',
103
+ }), 'Create failed');
104
+ } }))] }));
105
+ }
106
+ //# sourceMappingURL=extensions-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions-list.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/extensions/extensions-list.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface FormModalField {
2
+ name: string;
3
+ label: string;
4
+ type: 'text' | 'select';
5
+ options?: readonly string[];
6
+ required?: boolean;
7
+ placeholder?: string;
8
+ defaultValue?: string;
9
+ }
10
+ export declare function FormModal({ title, fields, submitLabel, onSubmit, onCancel, }: {
11
+ title: string;
12
+ fields: FormModalField[];
13
+ submitLabel?: string;
14
+ onSubmit: (values: Record<string, string>) => void;
15
+ onCancel: () => void;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=form-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-modal.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/extensions/form-modal.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAM,EACN,WAAsB,EACtB,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;IAClD,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,2CAoEA"}
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * `FormModal` — a small reusable modal that collects a handful of fields and
5
+ * returns them as a name→value map. Ported verbatim from
6
+ * `apps/reference/components/form-modal.tsx` (0.2.0 T12); only the Extensions
7
+ * surface uses it (to gather the real create payloads the ExtensionManager fires
8
+ * with empty callbacks), so it lives alongside that surface. No wiring changes —
9
+ * it is a pure presentational component built on the shared admin overlay/modal
10
+ * classes.
11
+ */
12
+ import { useState } from 'react';
13
+ export function FormModal({ title, fields, submitLabel = 'Create', onSubmit, onCancel, }) {
14
+ const [values, setValues] = useState(() => Object.fromEntries(fields.map(f => [f.name, f.defaultValue ?? (f.type === 'select' ? (f.options?.[0] ?? '') : '')])));
15
+ function set(name, value) {
16
+ setValues(prev => ({ ...prev, [name]: value }));
17
+ }
18
+ function handleSubmit(e) {
19
+ e.preventDefault();
20
+ onSubmit(values);
21
+ }
22
+ return (_jsx("div", { className: "kywi-overlay-shell", role: "dialog", "aria-modal": "true", "aria-label": title, onClick: onCancel, children: _jsxs("div", { className: "kywi-admin-picker-modal", onClick: e => e.stopPropagation(), children: [_jsxs("div", { className: "kywi-admin-picker-header", children: [_jsx("h2", { className: "kywi-admin-picker-title", children: title }), _jsx("button", { type: "button", className: "kywi-admin-picker-close", onClick: onCancel, "aria-label": "Close", children: "\u00D7" })] }), _jsxs("form", { className: "kywi-admin-secret-modal-body", onSubmit: handleSubmit, children: [fields.map(f => {
23
+ const id = `fm-${f.name}`;
24
+ return (_jsxs("div", { className: "kywi-field", children: [_jsxs("label", { className: "kywi-field-label", htmlFor: id, children: [f.label, f.required ? '' : _jsx("span", { className: "kywi-field-optional", children: " (optional)" })] }), f.type === 'select' ? (_jsx("select", { id: id, className: "kywi-select", value: values[f.name] ?? '', onChange: e => set(f.name, e.target.value), children: (f.options ?? []).map(o => (_jsx("option", { value: o, children: o }, o))) })) : (_jsx("input", { id: id, type: "text", className: "kywi-input", value: values[f.name] ?? '', placeholder: f.placeholder, required: f.required, onChange: e => set(f.name, e.target.value) }))] }, f.name));
25
+ }), _jsxs("div", { className: "kywi-admin-secret-actions", children: [_jsx("button", { type: "button", className: "kywi-btn", onClick: onCancel, children: "Cancel" }), _jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", children: submitLabel })] })] })] }) }));
26
+ }
27
+ //# sourceMappingURL=form-modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-modal.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/extensions/form-modal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type FeedRow } from './feeds-data.js';
2
+ interface FeedEditorProps {
3
+ /** Existing feed when editing; undefined when creating. */
4
+ feed?: FeedRow;
5
+ }
6
+ export declare function FeedEditor({ feed }: FeedEditorProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=feed-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed-editor.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feed-editor.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAOL,KAAK,OAAO,EAEb,MAAM,iBAAiB,CAAA;AAqBxB,UAAU,eAAe;IACvB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,2CAsLnD"}
@@ -0,0 +1,120 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * `FeedEditor` — the create/edit feed orchestration sidecar for `feeds.new` /
5
+ * `feeds.detail`, ported verbatim from
6
+ * `apps/reference/app/admin/feeds/feed-editor.tsx` (0.2.0 T10). Markup /
7
+ * classes / copy unchanged; wiring substitutions (plan §1.3): `useRouter().push`
8
+ * → `useAdminContext().navigate`, the local `states.tsx` duplicate of
9
+ * `ErrorState` → the identical core primitive. `FeedBuilder` was already a core
10
+ * component (`admin/feed-builder.tsx`); only the local import path changes.
11
+ * `feeds-new.tsx` / `feeds-detail.tsx` mount this directly — chrome renders
12
+ * once via `KywiAdminApp` (T14), so no wrapper is needed here.
13
+ */
14
+ import { useCallback, useEffect, useState } from 'react';
15
+ import { useAdminContext } from '../../context.js';
16
+ import { FeedBuilder } from '../../feed-builder.js';
17
+ import { ErrorState } from '../../primitives.js';
18
+ import { createFeed, updateFeed, previewFeed, loadContentTypes, } from './feeds-data.js';
19
+ function slugify(value) {
20
+ return value
21
+ .toLowerCase()
22
+ .trim()
23
+ .replace(/[^a-z0-9]+/g, '-')
24
+ .replace(/^-+|-+$/g, '');
25
+ }
26
+ /** Best-effort human label for a feed result row. */
27
+ function rowTitle(item) {
28
+ return (item.title ??
29
+ item.name ??
30
+ item.slug ??
31
+ item.id ??
32
+ '(untitled)');
33
+ }
34
+ export function FeedEditor({ feed }) {
35
+ const { navigate } = useAdminContext();
36
+ const isEdit = feed !== undefined;
37
+ const [name, setName] = useState(feed?.name ?? '');
38
+ const [slug, setSlug] = useState(feed?.slug ?? '');
39
+ const [slugTouched, setSlugTouched] = useState(isEdit);
40
+ const [query, setQuery] = useState(feed?.query ?? null);
41
+ const [contentTypes, setContentTypes] = useState([]);
42
+ const [typesError, setTypesError] = useState(null);
43
+ const [preview, setPreview] = useState(null);
44
+ const [previewing, setPreviewing] = useState(false);
45
+ const [previewError, setPreviewError] = useState(null);
46
+ const [saving, setSaving] = useState(false);
47
+ const [saveError, setSaveError] = useState(null);
48
+ // Load the source content types for the builder's dropdown.
49
+ useEffect(() => {
50
+ let alive = true;
51
+ loadContentTypes()
52
+ .then(t => { if (alive)
53
+ setContentTypes(t); })
54
+ .catch(e => { if (alive)
55
+ setTypesError(e instanceof Error ? e.message : 'Failed to load content types'); });
56
+ return () => { alive = false; };
57
+ }, []);
58
+ const runPreview = useCallback(async (q) => {
59
+ setPreviewing(true);
60
+ setPreviewError(null);
61
+ try {
62
+ setPreview(await previewFeed(q));
63
+ }
64
+ catch (e) {
65
+ setPreview(null);
66
+ setPreviewError(e instanceof Error ? e.message : 'Preview failed');
67
+ }
68
+ finally {
69
+ setPreviewing(false);
70
+ }
71
+ }, []);
72
+ // Preview an already-saved feed's query on first load.
73
+ useEffect(() => {
74
+ if (feed?.query)
75
+ void runPreview(feed.query);
76
+ }, [feed, runPreview]);
77
+ // FeedBuilder emits the current query via its "Apply query" button — apply + preview.
78
+ const handleQueryApply = useCallback((q) => {
79
+ setQuery(q);
80
+ if (!slugTouched && !name)
81
+ setName(q.contentType ? `${q.contentType} feed` : '');
82
+ void runPreview(q);
83
+ }, [runPreview, slugTouched, name]);
84
+ const handleNameChange = useCallback((value) => {
85
+ setName(value);
86
+ if (!slugTouched)
87
+ setSlug(slugify(value));
88
+ }, [slugTouched]);
89
+ const handleSave = useCallback(async () => {
90
+ setSaveError(null);
91
+ if (!name.trim()) {
92
+ setSaveError('A feed name is required.');
93
+ return;
94
+ }
95
+ if (!slug.trim()) {
96
+ setSaveError('A feed slug is required.');
97
+ return;
98
+ }
99
+ if (!query) {
100
+ setSaveError('Configure and apply the query before saving.');
101
+ return;
102
+ }
103
+ setSaving(true);
104
+ try {
105
+ if (isEdit) {
106
+ await updateFeed(feed.slug, { name: name.trim(), query });
107
+ }
108
+ else {
109
+ await createFeed({ name: name.trim(), slug: slug.trim(), query });
110
+ }
111
+ navigate('/admin/feeds');
112
+ }
113
+ catch (e) {
114
+ setSaveError(e instanceof Error ? e.message : 'Save failed');
115
+ setSaving(false);
116
+ }
117
+ }, [name, slug, query, isEdit, feed, navigate]);
118
+ return (_jsxs("div", { className: "kywi-feed-editor", children: [_jsxs("div", { className: "kywi-admin-page-header", children: [_jsxs("div", { children: [_jsx("h1", { children: isEdit ? `Edit feed: ${feed.name}` : 'New feed' }), _jsx("p", { className: "kywi-text-muted", children: "Configure a content query, apply it to preview live results, then save it as a reusable feed." })] }), _jsxs("div", { className: "kywi-admin-button-row", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: () => navigate('/admin/feeds'), children: "Cancel" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: handleSave, disabled: saving, children: saving ? 'Saving…' : isEdit ? 'Save changes' : 'Save feed' })] })] }), saveError && _jsx(ErrorState, { message: saveError }), _jsxs("div", { className: "kywi-feed-editor-meta", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "feed-name", className: "kywi-field-label", children: "Feed name" }), _jsx("input", { id: "feed-name", type: "text", className: "kywi-input", value: name, onChange: e => handleNameChange(e.target.value), placeholder: "Latest blog posts" })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "feed-slug", className: "kywi-field-label", children: "Slug" }), _jsx("input", { id: "feed-slug", type: "text", className: "kywi-input", value: slug, disabled: isEdit, onChange: e => { setSlugTouched(true); setSlug(slugify(e.target.value)); }, placeholder: "latest-blog-posts" }), isEdit && _jsx("span", { className: "kywi-field-hint", children: "Slug is fixed after creation." })] })] }), _jsxs("div", { className: "kywi-feed-editor-grid", children: [_jsxs("div", { className: "kywi-feed-editor-builder", children: [typesError ? (_jsx(ErrorState, { message: typesError })) : (_jsx(FeedBuilder, { contentTypes: contentTypes, ...(query ? { initialQuery: query } : {}), onSave: handleQueryApply })), _jsxs("p", { className: "kywi-field-hint", children: ["Click ", _jsx("strong", { children: "Apply query" }), " in the builder to apply the query and refresh the preview, then ", _jsx("strong", { children: "Save changes" }), " above to store the feed."] })] }), _jsxs("aside", { className: "kywi-feed-preview", "aria-label": "Feed preview", children: [_jsx("h2", { className: "kywi-feed-preview-title", children: "Preview" }), previewing ? (_jsxs("div", { className: "kywi-admin-loading", role: "status", children: [_jsx("span", { className: "kywi-spinner", "aria-hidden": "true" }), _jsx("span", { children: "Running query\u2026" })] })) : previewError ? (_jsx(ErrorState, { message: previewError, ...(query ? { onRetry: () => runPreview(query) } : {}) })) : !preview ? (_jsx("div", { className: "kywi-empty-state", children: _jsx("p", { children: "No preview yet. Apply a query to see matching content." }) })) : preview.items.length === 0 ? (_jsx("div", { className: "kywi-empty-state", children: _jsx("p", { children: "The query matched no content." }) })) : (_jsxs(_Fragment, { children: [_jsxs("p", { className: "kywi-feed-preview-count", children: [preview.total, " match", preview.total === 1 ? '' : 'es', " \u00B7 showing ", preview.items.length] }), _jsx("ul", { className: "kywi-feed-preview-list", children: preview.items.map((item, i) => (_jsxs("li", { className: "kywi-feed-preview-item", children: [_jsx("span", { className: "kywi-feed-preview-item-title", children: rowTitle(item) }), typeof item.status === 'string' && (_jsx("span", { className: `kywi-admin-status-badge kywi-status-${item.status}`, children: item.status }))] }, item.id ?? i))) })] }))] })] })] }));
119
+ }
120
+ //# sourceMappingURL=feed-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed-editor.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feed-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { FeedQuery, FeedResult } from '../../../feeds/types.js';
2
+ export type { FeedQuery, FeedResult };
3
+ export interface FeedRow {
4
+ id: string;
5
+ name: string;
6
+ slug: string;
7
+ query: FeedQuery;
8
+ cacheTtl: number | null;
9
+ createdAt: string;
10
+ updatedAt: string;
11
+ }
12
+ export interface FeedWritePayload {
13
+ name: string;
14
+ slug: string;
15
+ query: FeedQuery;
16
+ cacheTtl?: number;
17
+ }
18
+ export interface ContentTypeOption {
19
+ name: string;
20
+ label: string;
21
+ }
22
+ export declare function loadFeeds(): Promise<FeedRow[]>;
23
+ /**
24
+ * Load a single feed's saved definition. GET /feeds/:slug executes the query and
25
+ * returns rows (a FeedResult), not the definition — so the editable name/slug/query
26
+ * come from the list endpoint, which returns full feed rows.
27
+ */
28
+ export declare function loadFeed(slug: string): Promise<FeedRow>;
29
+ export declare function createFeed(payload: FeedWritePayload): Promise<FeedRow>;
30
+ export declare function updateFeed(slug: string, payload: Partial<FeedWritePayload>): Promise<FeedRow>;
31
+ export declare function deleteFeed(slug: string): Promise<void>;
32
+ /** Run an ad-hoc query for the live preview panel. */
33
+ export declare function previewFeed(query: FeedQuery): Promise<FeedResult>;
34
+ export declare function loadContentTypes(): Promise<ContentTypeOption[]>;
35
+ //# sourceMappingURL=feeds-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-data.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AAErC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AA+BD,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAEpD;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7D;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAI5E;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnG;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,sDAAsD;AACtD,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAIvE;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAKrE"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Data helpers for the admin Feeds surface — 0.2.0 T10 migration.
3
+ *
4
+ * Ported verbatim from `apps/reference/app/admin/feeds/feeds-data.ts`; only the
5
+ * import source changes: `adminFetch` now comes directly from
6
+ * `@kywi-software/core/host-client` instead of the app's `lib/admin-auth`, and
7
+ * `FeedQuery`/`FeedResult` are imported from the co-located `feeds/types.js`
8
+ * module instead of the public `@kywi-software/core/admin` re-export.
9
+ *
10
+ * A feed is a saved, named content query (kywi_feeds). CRUD flows through the
11
+ * DB-backed /feeds routes; the live preview runs an ad-hoc query through
12
+ * POST /feeds/query. All requests go through adminFetch, whose httpOnly session
13
+ * cookie is bridged to an Authorization header by middleware.
14
+ */
15
+ import { adminFetch } from '../../../host-client/index.js';
16
+ async function readData(res) {
17
+ if (!res.ok) {
18
+ let message = `Request failed (${res.status})`;
19
+ try {
20
+ const body = await res.json();
21
+ message = body?.error?.message ?? message;
22
+ }
23
+ catch {
24
+ /* keep default */
25
+ }
26
+ throw new Error(message);
27
+ }
28
+ const body = await res.json();
29
+ return body.data;
30
+ }
31
+ async function expectOk(res) {
32
+ if (res.ok)
33
+ return;
34
+ let message = `Request failed (${res.status})`;
35
+ try {
36
+ const body = await res.json();
37
+ message = body?.error?.message ?? message;
38
+ }
39
+ catch {
40
+ /* keep default */
41
+ }
42
+ throw new Error(message);
43
+ }
44
+ // ─── Feeds ─────────────────────────────────────────────────────────────────
45
+ export async function loadFeeds() {
46
+ return readData(await adminFetch('/api/v1/feeds'));
47
+ }
48
+ /**
49
+ * Load a single feed's saved definition. GET /feeds/:slug executes the query and
50
+ * returns rows (a FeedResult), not the definition — so the editable name/slug/query
51
+ * come from the list endpoint, which returns full feed rows.
52
+ */
53
+ export async function loadFeed(slug) {
54
+ const feeds = await loadFeeds();
55
+ const feed = feeds.find(f => f.slug === slug);
56
+ if (!feed)
57
+ throw new Error(`Feed "${slug}" not found`);
58
+ return feed;
59
+ }
60
+ export async function createFeed(payload) {
61
+ return readData(await adminFetch('/api/v1/feeds', { method: 'POST', body: JSON.stringify(payload) }));
62
+ }
63
+ export async function updateFeed(slug, payload) {
64
+ return readData(await adminFetch(`/api/v1/feeds/${encodeURIComponent(slug)}`, {
65
+ method: 'PUT',
66
+ body: JSON.stringify(payload),
67
+ }));
68
+ }
69
+ export async function deleteFeed(slug) {
70
+ await expectOk(await adminFetch(`/api/v1/feeds/${encodeURIComponent(slug)}`, { method: 'DELETE' }));
71
+ }
72
+ /** Run an ad-hoc query for the live preview panel. */
73
+ export async function previewFeed(query) {
74
+ return readData(await adminFetch('/api/v1/feeds/query', { method: 'POST', body: JSON.stringify(query) }));
75
+ }
76
+ // ─── Content types (feed source options) ─────────────────────────────────────
77
+ export async function loadContentTypes() {
78
+ const types = await readData(await adminFetch('/api/v1/config/content-types'));
79
+ return types.map(t => ({ name: t.name, label: t.label }));
80
+ }
81
+ //# sourceMappingURL=feeds-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-data.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function FeedsDetailSurface({ params }: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=feeds-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-detail.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-detail.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,2CA4BlE"}
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * `feeds.detail` surface — ported verbatim from
5
+ * `apps/reference/app/admin/feeds/[slug]/page.tsx` (0.2.0 T10). Wiring
6
+ * substitutions (plan §1.3): `useParams()` → `props.params.slug`,
7
+ * `AdminShellWrapper` dropped — chrome renders once via `KywiAdminApp` (T14) —
8
+ * and the local `states.tsx` duplicate of `LoadingState`/`ErrorState` importing
9
+ * from the identical core primitives instead.
10
+ */
11
+ import { useCallback, useEffect, useState } from 'react';
12
+ import { LoadingState, ErrorState } from '../../primitives.js';
13
+ import { FeedEditor } from './feed-editor.js';
14
+ import { loadFeed } from './feeds-data.js';
15
+ export default function FeedsDetailSurface({ params }) {
16
+ const slug = params.slug ?? '';
17
+ const [feed, setFeed] = useState(null);
18
+ const [loading, setLoading] = useState(true);
19
+ const [error, setError] = useState(null);
20
+ const load = useCallback(async () => {
21
+ setLoading(true);
22
+ setError(null);
23
+ try {
24
+ setFeed(await loadFeed(decodeURIComponent(slug)));
25
+ }
26
+ catch (e) {
27
+ setError(e instanceof Error ? e.message : 'Failed to load feed');
28
+ }
29
+ finally {
30
+ setLoading(false);
31
+ }
32
+ }, [slug]);
33
+ useEffect(() => { load(); }, [load]);
34
+ return loading ? (_jsx(LoadingState, { label: "Loading feed\u2026" })) : error || !feed ? (_jsx(ErrorState, { message: error ?? 'Feed not found', onRetry: load })) : (_jsx(FeedEditor, { feed: feed }));
35
+ }
36
+ //# sourceMappingURL=feeds-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-detail.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-detail.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;GAOG;AAEH,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAA;AAExD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAgB;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;IAE9B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAA;IACtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAEvD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAA;QAClE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEnC,OAAO,OAAO,CAAC,CAAC,CAAC,CACf,KAAC,YAAY,IAAC,KAAK,EAAC,oBAAe,GAAG,CACvC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CACnB,KAAC,UAAU,IAAC,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,OAAO,EAAE,IAAI,GAAI,CAClE,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,GAAI,CAC3B,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function FeedsListSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=feeds-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-list.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-list.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,MAAM,EAAE,YAAY,2CAiH5D"}
@@ -0,0 +1,49 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * `feeds.list` surface — the Feeds index, ported verbatim from
5
+ * `apps/reference/app/admin/feeds/page.tsx` (0.2.0 T10). Markup / classes /
6
+ * copy unchanged; wiring substitutions (plan §1.3): `useRouter().push` →
7
+ * `useAdminContext().navigate`, the local `states.tsx` duplicate of
8
+ * `LoadingState`/`ErrorState` → the identical core primitives,
9
+ * `AdminShellWrapper` dropped — chrome renders once via `KywiAdminApp` (T14).
10
+ */
11
+ import { useCallback, useEffect, useState } from 'react';
12
+ import { useAdminContext } from '../../context.js';
13
+ import { LoadingState, ErrorState } from '../../primitives.js';
14
+ import { loadFeeds, deleteFeed } from './feeds-data.js';
15
+ export default function FeedsListSurface(_props) {
16
+ const { navigate } = useAdminContext();
17
+ const [feeds, setFeeds] = useState([]);
18
+ const [loading, setLoading] = useState(true);
19
+ const [error, setError] = useState(null);
20
+ const load = useCallback(async () => {
21
+ setLoading(true);
22
+ setError(null);
23
+ try {
24
+ const rows = await loadFeeds();
25
+ rows.sort((a, b) => (b.updatedAt ?? '').localeCompare(a.updatedAt ?? ''));
26
+ setFeeds(rows);
27
+ }
28
+ catch (e) {
29
+ setError(e instanceof Error ? e.message : 'Failed to load feeds');
30
+ }
31
+ finally {
32
+ setLoading(false);
33
+ }
34
+ }, []);
35
+ useEffect(() => { load(); }, [load]);
36
+ const handleDelete = useCallback(async (feed) => {
37
+ if (!window.confirm(`Delete feed "${feed.name}"? This cannot be undone.`))
38
+ return;
39
+ try {
40
+ await deleteFeed(feed.slug);
41
+ await load();
42
+ }
43
+ catch (e) {
44
+ window.alert(e instanceof Error ? e.message : 'Delete failed');
45
+ }
46
+ }, [load]);
47
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-admin-page-header", children: [_jsxs("div", { children: [_jsx("h1", { children: "Feeds" }), _jsx("p", { className: "kywi-text-muted", children: "Saved content queries with a live preview. Reuse them across the site." })] }), _jsx("div", { className: "kywi-admin-button-row", children: _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: () => navigate('/admin/feeds/new'), children: "New Feed" }) })] }), loading ? (_jsx(LoadingState, { label: "Loading feeds\u2026" })) : error ? (_jsx(ErrorState, { message: error, onRetry: load })) : feeds.length === 0 ? (_jsxs("div", { className: "kywi-empty-state", children: [_jsx("p", { children: "No feeds yet." }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: () => navigate('/admin/feeds/new'), children: "Create your first feed" })] })) : (_jsx("div", { className: "kywi-table-scroll", children: _jsxs("table", { className: "kywi-table kywi-feeds-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Name" }), _jsx("th", { children: "Slug" }), _jsx("th", { children: "Source type" }), _jsx("th", { children: "Limit" }), _jsx("th", { children: "Updated" }), _jsx("th", { className: "kywi-col-actions", children: "Actions" })] }) }), _jsx("tbody", { children: feeds.map(feed => (_jsxs("tr", { children: [_jsx("td", { children: _jsx("button", { type: "button", className: "kywi-link-button", onClick: () => navigate(`/admin/feeds/${encodeURIComponent(feed.slug)}`), children: feed.name }) }), _jsx("td", { children: _jsx("code", { children: feed.slug }) }), _jsx("td", { children: feed.query?.contentType ?? '—' }), _jsx("td", { children: feed.query?.limit ?? '—' }), _jsx("td", { children: feed.updatedAt ? new Date(feed.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/feeds/${encodeURIComponent(feed.slug)}`), children: "Edit" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger kywi-btn-sm", onClick: () => handleDelete(feed), children: "Delete" })] })] }, feed.id))) })] }) }))] }));
48
+ }
49
+ //# sourceMappingURL=feeds-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-list.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-list.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function FeedsNewSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=feeds-new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-new.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-new.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,YAAY,2CAE3D"}
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { FeedEditor } from './feed-editor.js';
4
+ export default function FeedsNewSurface(_props) {
5
+ return _jsx(FeedEditor, {});
6
+ }
7
+ //# sourceMappingURL=feeds-new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds-new.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/feeds/feeds-new.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAWZ,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAoB;IAC1D,OAAO,KAAC,UAAU,KAAG,CAAA;AACvB,CAAC"}