@kywi-software/core 0.1.0 → 0.2.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 (463) 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/nav.d.ts +21 -1
  18. package/dist/admin/nav.d.ts.map +1 -1
  19. package/dist/admin/nav.js +45 -88
  20. package/dist/admin/nav.js.map +1 -1
  21. package/dist/admin/primitives.d.ts +52 -0
  22. package/dist/admin/primitives.d.ts.map +1 -0
  23. package/dist/admin/primitives.js +78 -0
  24. package/dist/admin/primitives.js.map +1 -0
  25. package/dist/admin/registry.d.ts +130 -0
  26. package/dist/admin/registry.d.ts.map +1 -0
  27. package/dist/admin/registry.js +456 -0
  28. package/dist/admin/registry.js.map +1 -0
  29. package/dist/admin/server.d.ts +154 -0
  30. package/dist/admin/server.d.ts.map +1 -0
  31. package/dist/admin/server.js +121 -0
  32. package/dist/admin/server.js.map +1 -0
  33. package/dist/admin/shell.d.ts +27 -1
  34. package/dist/admin/shell.d.ts.map +1 -1
  35. package/dist/admin/shell.js +10 -4
  36. package/dist/admin/shell.js.map +1 -1
  37. package/dist/admin/styles/admin.css +24 -0
  38. package/dist/admin/surface-matcher.d.ts +51 -0
  39. package/dist/admin/surface-matcher.d.ts.map +1 -0
  40. package/dist/admin/surface-matcher.js +181 -0
  41. package/dist/admin/surface-matcher.js.map +1 -0
  42. package/dist/admin/surfaces/approvals/approvals-data.d.ts +17 -0
  43. package/dist/admin/surfaces/approvals/approvals-data.d.ts.map +1 -0
  44. package/dist/admin/surfaces/approvals/approvals-data.js +55 -0
  45. package/dist/admin/surfaces/approvals/approvals-data.js.map +1 -0
  46. package/dist/admin/surfaces/approvals/approvals-index.d.ts +3 -0
  47. package/dist/admin/surfaces/approvals/approvals-index.d.ts.map +1 -0
  48. package/dist/admin/surfaces/approvals/approvals-index.js +75 -0
  49. package/dist/admin/surfaces/approvals/approvals-index.js.map +1 -0
  50. package/dist/admin/surfaces/audiences/audiences-data.d.ts +107 -0
  51. package/dist/admin/surfaces/audiences/audiences-data.d.ts.map +1 -0
  52. package/dist/admin/surfaces/audiences/audiences-data.js +216 -0
  53. package/dist/admin/surfaces/audiences/audiences-data.js.map +1 -0
  54. package/dist/admin/surfaces/audiences/audiences-detail.d.ts +3 -0
  55. package/dist/admin/surfaces/audiences/audiences-detail.d.ts.map +1 -0
  56. package/dist/admin/surfaces/audiences/audiences-detail.js +78 -0
  57. package/dist/admin/surfaces/audiences/audiences-detail.js.map +1 -0
  58. package/dist/admin/surfaces/audiences/audiences-edit.d.ts +3 -0
  59. package/dist/admin/surfaces/audiences/audiences-edit.d.ts.map +1 -0
  60. package/dist/admin/surfaces/audiences/audiences-edit.js +55 -0
  61. package/dist/admin/surfaces/audiences/audiences-edit.js.map +1 -0
  62. package/dist/admin/surfaces/audiences/audiences-fields.d.ts +3 -0
  63. package/dist/admin/surfaces/audiences/audiences-fields.d.ts.map +1 -0
  64. package/dist/admin/surfaces/audiences/audiences-fields.js +56 -0
  65. package/dist/admin/surfaces/audiences/audiences-fields.js.map +1 -0
  66. package/dist/admin/surfaces/audiences/audiences-list.d.ts +3 -0
  67. package/dist/admin/surfaces/audiences/audiences-list.d.ts.map +1 -0
  68. package/dist/admin/surfaces/audiences/audiences-list.js +50 -0
  69. package/dist/admin/surfaces/audiences/audiences-list.js.map +1 -0
  70. package/dist/admin/surfaces/audiences/audiences-new.d.ts +3 -0
  71. package/dist/admin/surfaces/audiences/audiences-new.d.ts.map +1 -0
  72. package/dist/admin/surfaces/audiences/audiences-new.js +54 -0
  73. package/dist/admin/surfaces/audiences/audiences-new.js.map +1 -0
  74. package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts +3 -0
  75. package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts.map +1 -0
  76. package/dist/admin/surfaces/audiences/audiences-preview-tokens.js +123 -0
  77. package/dist/admin/surfaces/audiences/audiences-preview-tokens.js.map +1 -0
  78. package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts +3 -0
  79. package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts.map +1 -0
  80. package/dist/admin/surfaces/audiences/audiences-selfid-widget.js +50 -0
  81. package/dist/admin/surfaces/audiences/audiences-selfid-widget.js.map +1 -0
  82. package/dist/admin/surfaces/audiences/audiences-test.d.ts +3 -0
  83. package/dist/admin/surfaces/audiences/audiences-test.d.ts.map +1 -0
  84. package/dist/admin/surfaces/audiences/audiences-test.js +39 -0
  85. package/dist/admin/surfaces/audiences/audiences-test.js.map +1 -0
  86. package/dist/admin/surfaces/audiences/states.d.ts +10 -0
  87. package/dist/admin/surfaces/audiences/states.d.ts.map +1 -0
  88. package/dist/admin/surfaces/audiences/states.js +11 -0
  89. package/dist/admin/surfaces/audiences/states.js.map +1 -0
  90. package/dist/admin/surfaces/changesets/changesets-data.d.ts +35 -0
  91. package/dist/admin/surfaces/changesets/changesets-data.d.ts.map +1 -0
  92. package/dist/admin/surfaces/changesets/changesets-data.js +151 -0
  93. package/dist/admin/surfaces/changesets/changesets-data.js.map +1 -0
  94. package/dist/admin/surfaces/changesets/changesets-detail.d.ts +3 -0
  95. package/dist/admin/surfaces/changesets/changesets-detail.d.ts.map +1 -0
  96. package/dist/admin/surfaces/changesets/changesets-detail.js +84 -0
  97. package/dist/admin/surfaces/changesets/changesets-detail.js.map +1 -0
  98. package/dist/admin/surfaces/changesets/changesets-index.d.ts +3 -0
  99. package/dist/admin/surfaces/changesets/changesets-index.d.ts.map +1 -0
  100. package/dist/admin/surfaces/changesets/changesets-index.js +62 -0
  101. package/dist/admin/surfaces/changesets/changesets-index.js.map +1 -0
  102. package/dist/admin/surfaces/comments/comment-moderation.d.ts +18 -0
  103. package/dist/admin/surfaces/comments/comment-moderation.d.ts.map +1 -0
  104. package/dist/admin/surfaces/comments/comment-moderation.js +36 -0
  105. package/dist/admin/surfaces/comments/comment-moderation.js.map +1 -0
  106. package/dist/admin/surfaces/comments/comments-data.d.ts +23 -0
  107. package/dist/admin/surfaces/comments/comments-data.d.ts.map +1 -0
  108. package/dist/admin/surfaces/comments/comments-data.js +81 -0
  109. package/dist/admin/surfaces/comments/comments-data.js.map +1 -0
  110. package/dist/admin/surfaces/comments/comments-index.d.ts +3 -0
  111. package/dist/admin/surfaces/comments/comments-index.d.ts.map +1 -0
  112. package/dist/admin/surfaces/comments/comments-index.js +73 -0
  113. package/dist/admin/surfaces/comments/comments-index.js.map +1 -0
  114. package/dist/admin/surfaces/content/content-edit.d.ts +3 -0
  115. package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -0
  116. package/dist/admin/surfaces/content/content-edit.js +321 -0
  117. package/dist/admin/surfaces/content/content-edit.js.map +1 -0
  118. package/dist/admin/surfaces/content/content-index.d.ts +3 -0
  119. package/dist/admin/surfaces/content/content-index.d.ts.map +1 -0
  120. package/dist/admin/surfaces/content/content-index.js +21 -0
  121. package/dist/admin/surfaces/content/content-index.js.map +1 -0
  122. package/dist/admin/surfaces/content/content-list.d.ts +3 -0
  123. package/dist/admin/surfaces/content/content-list.d.ts.map +1 -0
  124. package/dist/admin/surfaces/content/content-list.js +70 -0
  125. package/dist/admin/surfaces/content/content-list.js.map +1 -0
  126. package/dist/admin/surfaces/content/content-new.d.ts +3 -0
  127. package/dist/admin/surfaces/content/content-new.d.ts.map +1 -0
  128. package/dist/admin/surfaces/content/content-new.js +109 -0
  129. package/dist/admin/surfaces/content/content-new.js.map +1 -0
  130. package/dist/admin/surfaces/content/content-translation-bar.d.ts +12 -0
  131. package/dist/admin/surfaces/content/content-translation-bar.d.ts.map +1 -0
  132. package/dist/admin/surfaces/content/content-translation-bar.js +65 -0
  133. package/dist/admin/surfaces/content/content-translation-bar.js.map +1 -0
  134. package/dist/admin/surfaces/content/runtime-content-types.d.ts +41 -0
  135. package/dist/admin/surfaces/content/runtime-content-types.d.ts.map +1 -0
  136. package/dist/admin/surfaces/content/runtime-content-types.js +51 -0
  137. package/dist/admin/surfaces/content/runtime-content-types.js.map +1 -0
  138. package/dist/admin/surfaces/contentTree/content-tree.d.ts +3 -0
  139. package/dist/admin/surfaces/contentTree/content-tree.d.ts.map +1 -0
  140. package/dist/admin/surfaces/contentTree/content-tree.js +179 -0
  141. package/dist/admin/surfaces/contentTree/content-tree.js.map +1 -0
  142. package/dist/admin/surfaces/contentTree/move-to-picker.d.ts +12 -0
  143. package/dist/admin/surfaces/contentTree/move-to-picker.d.ts.map +1 -0
  144. package/dist/admin/surfaces/contentTree/move-to-picker.js +77 -0
  145. package/dist/admin/surfaces/contentTree/move-to-picker.js.map +1 -0
  146. package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts +3 -0
  147. package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts.map +1 -0
  148. package/dist/admin/surfaces/contentTypes/content-types-designer.js +260 -0
  149. package/dist/admin/surfaces/contentTypes/content-types-designer.js.map +1 -0
  150. package/dist/admin/surfaces/contentTypes/content-types-list.d.ts +3 -0
  151. package/dist/admin/surfaces/contentTypes/content-types-list.d.ts.map +1 -0
  152. package/dist/admin/surfaces/contentTypes/content-types-list.js +69 -0
  153. package/dist/admin/surfaces/contentTypes/content-types-list.js.map +1 -0
  154. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts +3 -0
  155. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -0
  156. package/dist/admin/surfaces/dashboard/dashboard-index.js +100 -0
  157. package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -0
  158. package/dist/admin/surfaces/experiments/experiments-data.d.ts +12 -0
  159. package/dist/admin/surfaces/experiments/experiments-data.d.ts.map +1 -0
  160. package/dist/admin/surfaces/experiments/experiments-data.js +89 -0
  161. package/dist/admin/surfaces/experiments/experiments-data.js.map +1 -0
  162. package/dist/admin/surfaces/experiments/experiments-detail.d.ts +3 -0
  163. package/dist/admin/surfaces/experiments/experiments-detail.d.ts.map +1 -0
  164. package/dist/admin/surfaces/experiments/experiments-detail.js +87 -0
  165. package/dist/admin/surfaces/experiments/experiments-detail.js.map +1 -0
  166. package/dist/admin/surfaces/experiments/experiments-list.d.ts +3 -0
  167. package/dist/admin/surfaces/experiments/experiments-list.d.ts.map +1 -0
  168. package/dist/admin/surfaces/experiments/experiments-list.js +37 -0
  169. package/dist/admin/surfaces/experiments/experiments-list.js.map +1 -0
  170. package/dist/admin/surfaces/experiments/experiments-new.d.ts +3 -0
  171. package/dist/admin/surfaces/experiments/experiments-new.d.ts.map +1 -0
  172. package/dist/admin/surfaces/experiments/experiments-new.js +33 -0
  173. package/dist/admin/surfaces/experiments/experiments-new.js.map +1 -0
  174. package/dist/admin/surfaces/experiments/states.d.ts +10 -0
  175. package/dist/admin/surfaces/experiments/states.d.ts.map +1 -0
  176. package/dist/admin/surfaces/experiments/states.js +11 -0
  177. package/dist/admin/surfaces/experiments/states.js.map +1 -0
  178. package/dist/admin/surfaces/extensions/extensions-data.d.ts +59 -0
  179. package/dist/admin/surfaces/extensions/extensions-data.d.ts.map +1 -0
  180. package/dist/admin/surfaces/extensions/extensions-data.js +71 -0
  181. package/dist/admin/surfaces/extensions/extensions-data.js.map +1 -0
  182. package/dist/admin/surfaces/extensions/extensions-import-export.d.ts +3 -0
  183. package/dist/admin/surfaces/extensions/extensions-import-export.d.ts.map +1 -0
  184. package/dist/admin/surfaces/extensions/extensions-import-export.js +77 -0
  185. package/dist/admin/surfaces/extensions/extensions-import-export.js.map +1 -0
  186. package/dist/admin/surfaces/extensions/extensions-list.d.ts +3 -0
  187. package/dist/admin/surfaces/extensions/extensions-list.d.ts.map +1 -0
  188. package/dist/admin/surfaces/extensions/extensions-list.js +106 -0
  189. package/dist/admin/surfaces/extensions/extensions-list.js.map +1 -0
  190. package/dist/admin/surfaces/extensions/form-modal.d.ts +17 -0
  191. package/dist/admin/surfaces/extensions/form-modal.d.ts.map +1 -0
  192. package/dist/admin/surfaces/extensions/form-modal.js +27 -0
  193. package/dist/admin/surfaces/extensions/form-modal.js.map +1 -0
  194. package/dist/admin/surfaces/feeds/feed-editor.d.ts +8 -0
  195. package/dist/admin/surfaces/feeds/feed-editor.d.ts.map +1 -0
  196. package/dist/admin/surfaces/feeds/feed-editor.js +120 -0
  197. package/dist/admin/surfaces/feeds/feed-editor.js.map +1 -0
  198. package/dist/admin/surfaces/feeds/feeds-data.d.ts +35 -0
  199. package/dist/admin/surfaces/feeds/feeds-data.d.ts.map +1 -0
  200. package/dist/admin/surfaces/feeds/feeds-data.js +81 -0
  201. package/dist/admin/surfaces/feeds/feeds-data.js.map +1 -0
  202. package/dist/admin/surfaces/feeds/feeds-detail.d.ts +3 -0
  203. package/dist/admin/surfaces/feeds/feeds-detail.d.ts.map +1 -0
  204. package/dist/admin/surfaces/feeds/feeds-detail.js +36 -0
  205. package/dist/admin/surfaces/feeds/feeds-detail.js.map +1 -0
  206. package/dist/admin/surfaces/feeds/feeds-list.d.ts +3 -0
  207. package/dist/admin/surfaces/feeds/feeds-list.d.ts.map +1 -0
  208. package/dist/admin/surfaces/feeds/feeds-list.js +49 -0
  209. package/dist/admin/surfaces/feeds/feeds-list.js.map +1 -0
  210. package/dist/admin/surfaces/feeds/feeds-new.d.ts +3 -0
  211. package/dist/admin/surfaces/feeds/feeds-new.d.ts.map +1 -0
  212. package/dist/admin/surfaces/feeds/feeds-new.js +7 -0
  213. package/dist/admin/surfaces/feeds/feeds-new.js.map +1 -0
  214. package/dist/admin/surfaces/forms/form-editor.d.ts +5 -0
  215. package/dist/admin/surfaces/forms/form-editor.d.ts.map +1 -0
  216. package/dist/admin/surfaces/forms/form-editor.js +59 -0
  217. package/dist/admin/surfaces/forms/form-editor.js.map +1 -0
  218. package/dist/admin/surfaces/forms/forms-data.d.ts +52 -0
  219. package/dist/admin/surfaces/forms/forms-data.d.ts.map +1 -0
  220. package/dist/admin/surfaces/forms/forms-data.js +106 -0
  221. package/dist/admin/surfaces/forms/forms-data.js.map +1 -0
  222. package/dist/admin/surfaces/forms/forms-edit.d.ts +3 -0
  223. package/dist/admin/surfaces/forms/forms-edit.d.ts.map +1 -0
  224. package/dist/admin/surfaces/forms/forms-edit.js +40 -0
  225. package/dist/admin/surfaces/forms/forms-edit.js.map +1 -0
  226. package/dist/admin/surfaces/forms/forms-list.d.ts +3 -0
  227. package/dist/admin/surfaces/forms/forms-list.d.ts.map +1 -0
  228. package/dist/admin/surfaces/forms/forms-list.js +53 -0
  229. package/dist/admin/surfaces/forms/forms-list.js.map +1 -0
  230. package/dist/admin/surfaces/forms/forms-new.d.ts +3 -0
  231. package/dist/admin/surfaces/forms/forms-new.d.ts.map +1 -0
  232. package/dist/admin/surfaces/forms/forms-new.js +7 -0
  233. package/dist/admin/surfaces/forms/forms-new.js.map +1 -0
  234. package/dist/admin/surfaces/forms/forms-submissions.d.ts +3 -0
  235. package/dist/admin/surfaces/forms/forms-submissions.d.ts.map +1 -0
  236. package/dist/admin/surfaces/forms/forms-submissions.js +125 -0
  237. package/dist/admin/surfaces/forms/forms-submissions.js.map +1 -0
  238. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts +8 -0
  239. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -0
  240. package/dist/admin/surfaces/layouts/layout-editor-client.js +77 -0
  241. package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -0
  242. package/dist/admin/surfaces/layouts/layouts-data.d.ts +53 -0
  243. package/dist/admin/surfaces/layouts/layouts-data.d.ts.map +1 -0
  244. package/dist/admin/surfaces/layouts/layouts-data.js +61 -0
  245. package/dist/admin/surfaces/layouts/layouts-data.js.map +1 -0
  246. package/dist/admin/surfaces/layouts/layouts-detail.d.ts +3 -0
  247. package/dist/admin/surfaces/layouts/layouts-detail.d.ts.map +1 -0
  248. package/dist/admin/surfaces/layouts/layouts-detail.js +38 -0
  249. package/dist/admin/surfaces/layouts/layouts-detail.js.map +1 -0
  250. package/dist/admin/surfaces/layouts/layouts-list.d.ts +3 -0
  251. package/dist/admin/surfaces/layouts/layouts-list.d.ts.map +1 -0
  252. package/dist/admin/surfaces/layouts/layouts-list.js +62 -0
  253. package/dist/admin/surfaces/layouts/layouts-list.js.map +1 -0
  254. package/dist/admin/surfaces/layouts/layouts-new.d.ts +3 -0
  255. package/dist/admin/surfaces/layouts/layouts-new.d.ts.map +1 -0
  256. package/dist/admin/surfaces/layouts/layouts-new.js +7 -0
  257. package/dist/admin/surfaces/layouts/layouts-new.js.map +1 -0
  258. package/dist/admin/surfaces/login.d.ts +20 -0
  259. package/dist/admin/surfaces/login.d.ts.map +1 -0
  260. package/dist/admin/surfaces/login.js +92 -0
  261. package/dist/admin/surfaces/login.js.map +1 -0
  262. package/dist/admin/surfaces/media/library.d.ts +3 -0
  263. package/dist/admin/surfaces/media/library.d.ts.map +1 -0
  264. package/dist/admin/surfaces/media/library.js +7 -0
  265. package/dist/admin/surfaces/media/library.js.map +1 -0
  266. package/dist/admin/surfaces/media/media-client.d.ts +4 -0
  267. package/dist/admin/surfaces/media/media-client.d.ts.map +1 -0
  268. package/dist/admin/surfaces/media/media-client.js +203 -0
  269. package/dist/admin/surfaces/media/media-client.js.map +1 -0
  270. package/dist/admin/surfaces/media/upload.d.ts +3 -0
  271. package/dist/admin/surfaces/media/upload.d.ts.map +1 -0
  272. package/dist/admin/surfaces/media/upload.js +7 -0
  273. package/dist/admin/surfaces/media/upload.js.map +1 -0
  274. package/dist/admin/surfaces/plugins/plugins-data.d.ts +37 -0
  275. package/dist/admin/surfaces/plugins/plugins-data.d.ts.map +1 -0
  276. package/dist/admin/surfaces/plugins/plugins-data.js +31 -0
  277. package/dist/admin/surfaces/plugins/plugins-data.js.map +1 -0
  278. package/dist/admin/surfaces/plugins/plugins-index.d.ts +3 -0
  279. package/dist/admin/surfaces/plugins/plugins-index.d.ts.map +1 -0
  280. package/dist/admin/surfaces/plugins/plugins-index.js +72 -0
  281. package/dist/admin/surfaces/plugins/plugins-index.js.map +1 -0
  282. package/dist/admin/surfaces/search/search-index.d.ts +3 -0
  283. package/dist/admin/surfaces/search/search-index.d.ts.map +1 -0
  284. package/dist/admin/surfaces/search/search-index.js +76 -0
  285. package/dist/admin/surfaces/search/search-index.js.map +1 -0
  286. package/dist/admin/surfaces/settings/admin-features.d.ts +3 -0
  287. package/dist/admin/surfaces/settings/admin-features.d.ts.map +1 -0
  288. package/dist/admin/surfaces/settings/admin-features.js +138 -0
  289. package/dist/admin/surfaces/settings/admin-features.js.map +1 -0
  290. package/dist/admin/surfaces/settings/settings-ax.d.ts +3 -0
  291. package/dist/admin/surfaces/settings/settings-ax.d.ts.map +1 -0
  292. package/dist/admin/surfaces/settings/settings-ax.js +63 -0
  293. package/dist/admin/surfaces/settings/settings-ax.js.map +1 -0
  294. package/dist/admin/surfaces/settings/settings-cache.d.ts +3 -0
  295. package/dist/admin/surfaces/settings/settings-cache.d.ts.map +1 -0
  296. package/dist/admin/surfaces/settings/settings-cache.js +64 -0
  297. package/dist/admin/surfaces/settings/settings-cache.js.map +1 -0
  298. package/dist/admin/surfaces/settings/settings-email.d.ts +3 -0
  299. package/dist/admin/surfaces/settings/settings-email.d.ts.map +1 -0
  300. package/dist/admin/surfaces/settings/settings-email.js +89 -0
  301. package/dist/admin/surfaces/settings/settings-email.js.map +1 -0
  302. package/dist/admin/surfaces/settings/settings-general.d.ts +3 -0
  303. package/dist/admin/surfaces/settings/settings-general.d.ts.map +1 -0
  304. package/dist/admin/surfaces/settings/settings-general.js +91 -0
  305. package/dist/admin/surfaces/settings/settings-general.js.map +1 -0
  306. package/dist/admin/surfaces/settings/settings-site.d.ts +3 -0
  307. package/dist/admin/surfaces/settings/settings-site.d.ts.map +1 -0
  308. package/dist/admin/surfaces/settings/settings-site.js +14 -0
  309. package/dist/admin/surfaces/settings/settings-site.js.map +1 -0
  310. package/dist/admin/surfaces/settings/settings-sites.d.ts +3 -0
  311. package/dist/admin/surfaces/settings/settings-sites.d.ts.map +1 -0
  312. package/dist/admin/surfaces/settings/settings-sites.js +134 -0
  313. package/dist/admin/surfaces/settings/settings-sites.js.map +1 -0
  314. package/dist/admin/surfaces/settings/states.d.ts +33 -0
  315. package/dist/admin/surfaces/settings/states.d.ts.map +1 -0
  316. package/dist/admin/surfaces/settings/states.js +33 -0
  317. package/dist/admin/surfaces/settings/states.js.map +1 -0
  318. package/dist/admin/surfaces/taxonomy/categories.d.ts +3 -0
  319. package/dist/admin/surfaces/taxonomy/categories.d.ts.map +1 -0
  320. package/dist/admin/surfaces/taxonomy/categories.js +162 -0
  321. package/dist/admin/surfaces/taxonomy/categories.js.map +1 -0
  322. package/dist/admin/surfaces/taxonomy/tags.d.ts +3 -0
  323. package/dist/admin/surfaces/taxonomy/tags.d.ts.map +1 -0
  324. package/dist/admin/surfaces/taxonomy/tags.js +112 -0
  325. package/dist/admin/surfaces/taxonomy/tags.js.map +1 -0
  326. package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts +39 -0
  327. package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts.map +1 -0
  328. package/dist/admin/surfaces/taxonomy/taxonomy-ui.js +66 -0
  329. package/dist/admin/surfaces/taxonomy/taxonomy-ui.js.map +1 -0
  330. package/dist/admin/surfaces/translations/states.d.ts +10 -0
  331. package/dist/admin/surfaces/translations/states.d.ts.map +1 -0
  332. package/dist/admin/surfaces/translations/states.js +11 -0
  333. package/dist/admin/surfaces/translations/states.js.map +1 -0
  334. package/dist/admin/surfaces/translations/translations-index.d.ts +3 -0
  335. package/dist/admin/surfaces/translations/translations-index.d.ts.map +1 -0
  336. package/dist/admin/surfaces/translations/translations-index.js +99 -0
  337. package/dist/admin/surfaces/translations/translations-index.js.map +1 -0
  338. package/dist/admin/surfaces/trash/trash-index.d.ts +3 -0
  339. package/dist/admin/surfaces/trash/trash-index.d.ts.map +1 -0
  340. package/dist/admin/surfaces/trash/trash-index.js +96 -0
  341. package/dist/admin/surfaces/trash/trash-index.js.map +1 -0
  342. package/dist/admin/surfaces/users/users-data.d.ts +51 -0
  343. package/dist/admin/surfaces/users/users-data.d.ts.map +1 -0
  344. package/dist/admin/surfaces/users/users-data.js +60 -0
  345. package/dist/admin/surfaces/users/users-data.js.map +1 -0
  346. package/dist/admin/surfaces/users/users-detail.d.ts +3 -0
  347. package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -0
  348. package/dist/admin/surfaces/users/users-detail.js +148 -0
  349. package/dist/admin/surfaces/users/users-detail.js.map +1 -0
  350. package/dist/admin/surfaces/users/users-groups.d.ts +3 -0
  351. package/dist/admin/surfaces/users/users-groups.d.ts.map +1 -0
  352. package/dist/admin/surfaces/users/users-groups.js +136 -0
  353. package/dist/admin/surfaces/users/users-groups.js.map +1 -0
  354. package/dist/admin/surfaces/users/users-list.d.ts +3 -0
  355. package/dist/admin/surfaces/users/users-list.d.ts.map +1 -0
  356. package/dist/admin/surfaces/users/users-list.js +119 -0
  357. package/dist/admin/surfaces/users/users-list.js.map +1 -0
  358. package/dist/admin/surfaces/users/users-new.d.ts +3 -0
  359. package/dist/admin/surfaces/users/users-new.d.ts.map +1 -0
  360. package/dist/admin/surfaces/users/users-new.js +78 -0
  361. package/dist/admin/surfaces/users/users-new.js.map +1 -0
  362. package/dist/admin/surfaces/users/users-permissions.d.ts +3 -0
  363. package/dist/admin/surfaces/users/users-permissions.d.ts.map +1 -0
  364. package/dist/admin/surfaces/users/users-permissions.js +135 -0
  365. package/dist/admin/surfaces/users/users-permissions.js.map +1 -0
  366. package/dist/admin/surfaces/webServices/api-keys.d.ts +3 -0
  367. package/dist/admin/surfaces/webServices/api-keys.d.ts.map +1 -0
  368. package/dist/admin/surfaces/webServices/api-keys.js +65 -0
  369. package/dist/admin/surfaces/webServices/api-keys.js.map +1 -0
  370. package/dist/admin/surfaces/webServices/oauth.d.ts +3 -0
  371. package/dist/admin/surfaces/webServices/oauth.d.ts.map +1 -0
  372. package/dist/admin/surfaces/webServices/oauth.js +75 -0
  373. package/dist/admin/surfaces/webServices/oauth.js.map +1 -0
  374. package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts +8 -0
  375. package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts.map +1 -0
  376. package/dist/admin/surfaces/webServices/secret-reveal-modal.js +30 -0
  377. package/dist/admin/surfaces/webServices/secret-reveal-modal.js.map +1 -0
  378. package/dist/admin/surfaces/webServices/web-services-data.d.ts +38 -0
  379. package/dist/admin/surfaces/webServices/web-services-data.d.ts.map +1 -0
  380. package/dist/admin/surfaces/webServices/web-services-data.js +52 -0
  381. package/dist/admin/surfaces/webServices/web-services-data.js.map +1 -0
  382. package/dist/api/admin-features-routes.d.ts +10 -0
  383. package/dist/api/admin-features-routes.d.ts.map +1 -0
  384. package/dist/api/admin-features-routes.js +61 -0
  385. package/dist/api/admin-features-routes.js.map +1 -0
  386. package/dist/api/graphql/resolvers.d.ts +6 -6
  387. package/dist/api/index.d.ts.map +1 -1
  388. package/dist/api/index.js +2 -0
  389. package/dist/api/index.js.map +1 -1
  390. package/dist/config/define.d.ts +22 -1
  391. package/dist/config/define.d.ts.map +1 -1
  392. package/dist/config/define.js +44 -0
  393. package/dist/config/define.js.map +1 -1
  394. package/dist/config/parse.d.ts.map +1 -1
  395. package/dist/config/parse.js +8 -2
  396. package/dist/config/parse.js.map +1 -1
  397. package/dist/config/types.d.ts +60 -1
  398. package/dist/config/types.d.ts.map +1 -1
  399. package/dist/config/types.js +20 -1
  400. package/dist/config/types.js.map +1 -1
  401. package/dist/config/validate.d.ts.map +1 -1
  402. package/dist/config/validate.js +60 -0
  403. package/dist/config/validate.js.map +1 -1
  404. package/dist/db/admin-features-queries.d.ts +29 -0
  405. package/dist/db/admin-features-queries.d.ts.map +1 -0
  406. package/dist/db/admin-features-queries.js +46 -0
  407. package/dist/db/admin-features-queries.js.map +1 -0
  408. package/dist/db/analytics-queries.d.ts +2 -2
  409. package/dist/db/audit-queries.d.ts +3 -3
  410. package/dist/db/category-queries.d.ts +6 -6
  411. package/dist/db/changeset-audit-queries.d.ts +2 -2
  412. package/dist/db/changeset-queries.d.ts +8 -8
  413. package/dist/db/extension-queries.d.ts +17 -17
  414. package/dist/db/feed-queries.d.ts +6 -6
  415. package/dist/db/media-queries.d.ts +12 -12
  416. package/dist/db/site-admin-queries.d.ts +1 -1
  417. package/dist/db/site-queries.d.ts +3 -3
  418. package/dist/db/tag-queries.d.ts +4 -4
  419. package/dist/db/webhook-queries.d.ts +8 -8
  420. package/dist/db/workflow-queries.d.ts +5 -5
  421. package/dist/experiments/schema.d.ts +1 -1
  422. package/dist/host-client/index.d.ts +1 -0
  423. package/dist/host-client/index.d.ts.map +1 -1
  424. package/dist/host-client/index.js +4 -0
  425. package/dist/host-client/index.js.map +1 -1
  426. package/dist/host-client/json.d.ts +36 -0
  427. package/dist/host-client/json.d.ts.map +1 -0
  428. package/dist/host-client/json.js +106 -0
  429. package/dist/host-client/json.js.map +1 -0
  430. package/dist/layout/modules-extended.d.ts.map +1 -1
  431. package/dist/layout/modules-extended.js +9 -8
  432. package/dist/layout/modules-extended.js.map +1 -1
  433. package/dist/layout/modules.js +5 -5
  434. package/dist/layout/modules.js.map +1 -1
  435. package/dist/schema/base.d.ts +1 -1
  436. package/dist/scope/breadcrumbs.d.ts.map +1 -1
  437. package/dist/scope/breadcrumbs.js +4 -1
  438. package/dist/scope/breadcrumbs.js.map +1 -1
  439. package/dist/scope/head-foot.d.ts +12 -4
  440. package/dist/scope/head-foot.d.ts.map +1 -1
  441. package/dist/scope/head-foot.js +14 -6
  442. package/dist/scope/head-foot.js.map +1 -1
  443. package/dist/scope/jsonld.d.ts.map +1 -1
  444. package/dist/scope/jsonld.js +1 -11
  445. package/dist/scope/jsonld.js.map +1 -1
  446. package/dist/scope/kywi-form.d.ts.map +1 -1
  447. package/dist/scope/kywi-form.js +3 -3
  448. package/dist/scope/kywi-form.js.map +1 -1
  449. package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
  450. package/dist/scope/kywi-wizard-form.js +3 -3
  451. package/dist/scope/kywi-wizard-form.js.map +1 -1
  452. package/dist/scope/rendering.d.ts.map +1 -1
  453. package/dist/scope/rendering.js +7 -6
  454. package/dist/scope/rendering.js.map +1 -1
  455. package/dist/util/jsonld.d.ts +13 -0
  456. package/dist/util/jsonld.d.ts.map +1 -0
  457. package/dist/util/jsonld.js +15 -0
  458. package/dist/util/jsonld.js.map +1 -0
  459. package/dist/util/sanitize.d.ts +6 -0
  460. package/dist/util/sanitize.d.ts.map +1 -0
  461. package/dist/util/sanitize.js +156 -0
  462. package/dist/util/sanitize.js.map +1 -0
  463. package/package.json +12 -3
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared building blocks for the taxonomy admin surfaces (`taxonomy.categories`,
3
+ * `taxonomy.tags`): slugify plus presentational Loading / Error / Empty / Modal /
4
+ * Confirm atoms. Ported verbatim from `apps/reference/components/taxonomy-ui.tsx`
5
+ * (0.2.0 T11). Markup / copy are unchanged; the only wiring substitution (plan
6
+ * §1.3) is the `apiGet`/`apiSend` re-export, which now sources the JSON layer
7
+ * from `@kywi-software/core/host-client` instead of the app-local `lib/admin-api`.
8
+ * All markup uses the shipped `kywi-*` admin design-system classes.
9
+ */
10
+ import React from 'react';
11
+ export { getJson as apiGet, sendJson as apiSend } from '../../../host-client/index.js';
12
+ /** Derive a URL-safe slug from a human label. */
13
+ export declare function slugify(input: string): string;
14
+ export declare function Loading({ label }: {
15
+ label?: string;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export declare function ErrorBox({ message, onRetry }: {
18
+ message: string;
19
+ onRetry?: () => void;
20
+ }): import("react/jsx-runtime").JSX.Element;
21
+ export declare function EmptyState({ children }: {
22
+ children: React.ReactNode;
23
+ }): import("react/jsx-runtime").JSX.Element;
24
+ export declare function Modal({ title, onClose, children, labelledBy, }: {
25
+ title: string;
26
+ onClose: () => void;
27
+ children: React.ReactNode;
28
+ labelledBy?: string;
29
+ }): import("react/jsx-runtime").JSX.Element;
30
+ export declare function ConfirmDialog({ title, message, confirmLabel, danger, busy, onConfirm, onCancel, }: {
31
+ title: string;
32
+ message: React.ReactNode;
33
+ confirmLabel?: string;
34
+ danger?: boolean;
35
+ busy?: boolean;
36
+ onConfirm: () => void;
37
+ onCancel: () => void;
38
+ }): import("react/jsx-runtime").JSX.Element;
39
+ //# sourceMappingURL=taxonomy-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxonomy-ui.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/taxonomy/taxonomy-ui.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAEtF,iDAAiD;AACjD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAID,wBAAgB,OAAO,CAAC,EAAE,KAAkB,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CAOjE;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,2CAWvF;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAErE;AAID,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAA+B,GAChC,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,2CA6CA;AAID,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,YAAuB,EACvB,MAAa,EACb,IAAY,EACZ,SAAS,EACT,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,2CAqCA"}
@@ -0,0 +1,66 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Shared building blocks for the taxonomy admin surfaces (`taxonomy.categories`,
5
+ * `taxonomy.tags`): slugify plus presentational Loading / Error / Empty / Modal /
6
+ * Confirm atoms. Ported verbatim from `apps/reference/components/taxonomy-ui.tsx`
7
+ * (0.2.0 T11). Markup / copy are unchanged; the only wiring substitution (plan
8
+ * §1.3) is the `apiGet`/`apiSend` re-export, which now sources the JSON layer
9
+ * from `@kywi-software/core/host-client` instead of the app-local `lib/admin-api`.
10
+ * All markup uses the shipped `kywi-*` admin design-system classes.
11
+ */
12
+ import { useEffect, useRef } from 'react';
13
+ // ── Data layer (single source: host-client JSON layer) ─────────────────────────
14
+ export { getJson as apiGet, sendJson as apiSend } from '../../../host-client/index.js';
15
+ /** Derive a URL-safe slug from a human label. */
16
+ export function slugify(input) {
17
+ return input
18
+ .toLowerCase()
19
+ .trim()
20
+ .replace(/[^a-z0-9]+/g, '-')
21
+ .replace(/^-+|-+$/g, '');
22
+ }
23
+ // ── Presentational states ─────────────────────────────────────────────────────
24
+ export function Loading({ label = 'Loading…' }) {
25
+ return (_jsxs("div", { className: "kywi-admin-loading", role: "status", "aria-live": "polite", children: [_jsx("span", { className: "kywi-spinner", "aria-hidden": "true" }), _jsx("span", { children: label })] }));
26
+ }
27
+ export function ErrorBox({ message, onRetry }) {
28
+ return (_jsxs("div", { className: "kywi-admin-error", role: "alert", children: [_jsx("p", { className: "kywi-admin-error-message", children: message }), onRetry && (_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: onRetry, children: "Try again" }))] }));
29
+ }
30
+ export function EmptyState({ children }) {
31
+ return _jsx("div", { className: "kywi-admin-empty-state", children: children });
32
+ }
33
+ // ── Modal frame ───────────────────────────────────────────────────────────────
34
+ export function Modal({ title, onClose, children, labelledBy = 'kywi-modal-title', }) {
35
+ const firstFieldRef = useRef(null);
36
+ useEffect(() => {
37
+ function onKey(e) {
38
+ if (e.key === 'Escape')
39
+ onClose();
40
+ }
41
+ window.addEventListener('keydown', onKey);
42
+ // Focus the first focusable control for keyboard users.
43
+ firstFieldRef.current?.querySelector('input, select, textarea, button')?.focus();
44
+ return () => window.removeEventListener('keydown', onKey);
45
+ }, [onClose]);
46
+ return (_jsx("div", { className: "kywi-admin-picker-overlay", onClick: (e) => {
47
+ if (e.target === e.currentTarget)
48
+ onClose();
49
+ }, children: _jsxs("div", { className: "kywi-admin-picker-modal", role: "dialog", "aria-modal": "true", "aria-labelledby": labelledBy, children: [_jsxs("div", { className: "kywi-admin-picker-header", children: [_jsx("span", { id: labelledBy, className: "kywi-admin-picker-title", children: title }), _jsx("button", { type: "button", className: "kywi-admin-picker-close", "aria-label": "Close", onClick: onClose, children: "\u00D7" })] }), _jsx("div", { ref: firstFieldRef, style: { padding: 'var(--kywi-space-5)' }, children: children })] }) }));
50
+ }
51
+ // ── Confirm dialog ─────────────────────────────────────────────────────────────
52
+ export function ConfirmDialog({ title, message, confirmLabel = 'Delete', danger = true, busy = false, onConfirm, onCancel, }) {
53
+ useEffect(() => {
54
+ function onKey(e) {
55
+ if (e.key === 'Escape')
56
+ onCancel();
57
+ }
58
+ window.addEventListener('keydown', onKey);
59
+ return () => window.removeEventListener('keydown', onKey);
60
+ }, [onCancel]);
61
+ return (_jsx("div", { className: "kywi-admin-picker-overlay", onClick: (e) => {
62
+ if (e.target === e.currentTarget)
63
+ onCancel();
64
+ }, children: _jsxs("div", { className: "kywi-confirm", role: "alertdialog", "aria-modal": "true", "aria-labelledby": "kywi-confirm-title", children: [_jsx("h2", { id: "kywi-confirm-title", className: "kywi-section-heading", children: title }), _jsx("div", { className: "kywi-admin-confirm-text", children: message }), _jsxs("div", { className: "kywi-admin-form-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: onCancel, disabled: busy, children: "Cancel" }), _jsx("button", { type: "button", className: `kywi-btn ${danger ? 'kywi-btn-danger' : 'kywi-btn-primary'}`, onClick: onConfirm, disabled: busy, children: busy ? 'Working…' : confirmLabel })] })] }) }));
65
+ }
66
+ //# sourceMappingURL=taxonomy-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxonomy-ui.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/taxonomy/taxonomy-ui.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** Shared loading / error presentational states for the Translations surface.
2
+ * Ported verbatim from `apps/reference/components/admin-states.tsx` (0.2.0 T11). */
3
+ export declare function LoadingState({ label }: {
4
+ label?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export declare function ErrorState({ message, onRetry }: {
7
+ message: string;
8
+ onRetry?: () => void;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=states.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/translations/states.tsx"],"names":[],"mappings":"AAGA;oFACoF;AAEpF,wBAAgB,YAAY,CAAC,EAAE,KAAkB,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CAOtE;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,2CAWzF"}
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /** Shared loading / error presentational states for the Translations surface.
4
+ * Ported verbatim from `apps/reference/components/admin-states.tsx` (0.2.0 T11). */
5
+ export function LoadingState({ label = 'Loading…' }) {
6
+ return (_jsxs("div", { className: "kywi-admin-loading", role: "status", "aria-live": "polite", children: [_jsx("span", { className: "kywi-spinner", "aria-hidden": "true" }), _jsx("span", { children: label })] }));
7
+ }
8
+ export function ErrorState({ message, onRetry }) {
9
+ return (_jsxs("div", { className: "kywi-admin-error", role: "alert", children: [_jsx("p", { className: "kywi-admin-error-message", children: message }), onRetry && (_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: onRetry, children: "Try again" }))] }));
10
+ }
11
+ //# sourceMappingURL=states.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"states.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/translations/states.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ;oFACoF;AAEpF,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,GAAG,UAAU,EAAsB;IACrE,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAC,QAAQ,eAAW,QAAQ,aAClE,eAAM,SAAS,EAAC,cAAc,iBAAa,MAAM,GAAG,EACpD,yBAAO,KAAK,GAAQ,IAChB,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAA6C;IACxF,OAAO,CACL,eAAK,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,OAAO,aAC5C,YAAG,SAAS,EAAC,0BAA0B,YAAE,OAAO,GAAK,EACpD,OAAO,IAAI,CACV,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,6BAA6B,EAAC,OAAO,EAAE,OAAO,0BAErE,CACV,IACG,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function TranslationsSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=translations-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations-index.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/translations/translations-index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA0CrD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAM,EAAE,YAAY,2CAmN/D"}
@@ -0,0 +1,99 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * `translations.index` surface — the Translations coverage dashboard, ported
5
+ * verbatim from `apps/reference/app/admin/translations/page.tsx` (0.2.0 T11).
6
+ * Markup / copy / inline styles are unchanged; the wiring substitutions (plan
7
+ * §1.3) are: `useRouter().push` → `useAdminContext().navigate`, `adminFetch` →
8
+ * `useAdminContext().fetch`, and the `LoadingState`/`ErrorState` atoms now import
9
+ * from the co-located `./states`. `AdminShellWrapper` is gone — chrome is
10
+ * rendered once by `KywiAdminApp` (T14).
11
+ */
12
+ import { useCallback, useEffect, useState } from 'react';
13
+ import { useAdminContext } from '../../context.js';
14
+ import { LoadingState, ErrorState } from './states.js';
15
+ /** Friendly language name for a locale code, falling back to the raw code. */
16
+ function localeName(locale, inLocale) {
17
+ try {
18
+ const name = new Intl.DisplayNames([inLocale], { type: 'language' }).of(locale);
19
+ return name ? `${name} (${locale})` : locale;
20
+ }
21
+ catch {
22
+ return locale;
23
+ }
24
+ }
25
+ export default function TranslationsSurface(_props) {
26
+ const { fetch: adminFetch, navigate } = useAdminContext();
27
+ const [locales, setLocales] = useState(null);
28
+ const [coverage, setCoverage] = useState(null);
29
+ const [strings, setStrings] = useState(null);
30
+ const [loading, setLoading] = useState(true);
31
+ const [error, setError] = useState(null);
32
+ const [creating, setCreating] = useState(null);
33
+ const [createError, setCreateError] = useState(null);
34
+ const load = useCallback(async () => {
35
+ setLoading(true);
36
+ setError(null);
37
+ try {
38
+ const [lRes, cRes, sRes] = await Promise.all([
39
+ adminFetch('/api/v1/translations/locales'),
40
+ adminFetch('/api/v1/translations/coverage'),
41
+ adminFetch('/api/v1/translations/strings'),
42
+ ]);
43
+ if (!lRes.ok)
44
+ throw new Error(`Could not load locales (${lRes.status})`);
45
+ if (!cRes.ok)
46
+ throw new Error(`Could not load coverage (${cRes.status})`);
47
+ if (!sRes.ok)
48
+ throw new Error(`Could not load interface strings (${sRes.status})`);
49
+ setLocales((await lRes.json()).data);
50
+ setCoverage((await cRes.json()).data);
51
+ setStrings((await sRes.json()).data);
52
+ }
53
+ catch (e) {
54
+ setError(e instanceof Error ? e.message : 'Failed to load translation data');
55
+ }
56
+ finally {
57
+ setLoading(false);
58
+ }
59
+ }, []);
60
+ useEffect(() => { load(); }, [load]);
61
+ const createTranslation = useCallback(async (item, locale) => {
62
+ setCreating(`${item.id}:${locale}`);
63
+ setCreateError(null);
64
+ try {
65
+ const res = await adminFetch('/api/v1/translations', {
66
+ method: 'POST',
67
+ headers: { 'Content-Type': 'application/json' },
68
+ body: JSON.stringify({ sourceId: item.id, locale }),
69
+ });
70
+ const body = await res.json().catch(() => null);
71
+ if (!res.ok)
72
+ throw new Error(body?.error?.message ?? `Create failed (${res.status})`);
73
+ // The translation is a fresh draft in the target locale — open its editor.
74
+ navigate(`/admin/content/${body.data.contentTypeName}/${body.data.id}`);
75
+ }
76
+ catch (e) {
77
+ setCreateError(e instanceof Error ? e.message : 'Failed to create translation');
78
+ setCreating(null);
79
+ }
80
+ }, [navigate]);
81
+ const defaultLocale = coverage?.defaultLocale ?? locales?.defaultLocale ?? 'en';
82
+ const stringKeys = strings
83
+ ? Array.from(new Set(Object.values(strings.bundles).flatMap((b) => Object.keys(b)))).sort()
84
+ : [];
85
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "Translations" }) }), loading ? (_jsx(LoadingState, { label: "Loading translation coverage\u2026" })) : error ? (_jsx(ErrorState, { message: error, onRetry: load })) : (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--kywi-space-6, 1.5rem)', maxWidth: 960 }, children: [_jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Configured locales", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Configured locales" }), _jsx("div", { className: "kywi-tag-list", style: { display: 'flex', gap: '0.5rem', flexWrap: 'wrap' }, children: (locales?.locales ?? []).map((l) => (_jsxs("span", { className: "kywi-admin-status-badge", "data-default": l === defaultLocale, children: [localeName(l, defaultLocale), l === defaultLocale ? ' · default' : ''] }, l))) }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: '0.75rem' }, children: ["Locales are defined in ", _jsx("code", { children: "kywi.config.ts" }), " (", _jsx("code", { children: "site.locales" }), ") and are read-only here. Add a locale in code, then create translations below."] })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Content coverage", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Content coverage" }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: '-0.25rem', marginBottom: '1rem' }, children: ["Which ", _jsx("strong", { children: "published" }), " ", localeName(defaultLocale, defaultLocale), " content still lacks a translation in each locale. Creating one copies the source and opens the editor in the target locale."] }), createError && _jsx(ErrorState, { message: createError }), (coverage?.locales.length ?? 0) === 0 ? (_jsxs("div", { className: "kywi-admin-empty-state", children: ["No additional locales are configured. Add one to ", _jsx("code", { children: "site.locales" }), " to manage translations."] })) : (coverage.locales.map((lc) => (_jsxs("div", { style: { marginBottom: '1.5rem' }, children: [_jsxs("div", { style: {
86
+ display: 'flex',
87
+ alignItems: 'center',
88
+ justifyContent: 'space-between',
89
+ marginBottom: '0.5rem',
90
+ flexWrap: 'wrap',
91
+ gap: '0.5rem',
92
+ }, children: [_jsx("h3", { style: { fontSize: '0.95rem', fontWeight: 600 }, children: localeName(lc.locale, defaultLocale) }), _jsxs("span", { className: "kywi-admin-status-badge", "data-complete": lc.translated === lc.total, children: [lc.translated, " / ", lc.total, " translated"] })] }), lc.missing.length === 0 ? (_jsx("div", { className: "kywi-admin-callout kywi-admin-callout-success", children: lc.total === 0
93
+ ? 'No published content yet.'
94
+ : `All published content is translated into ${lc.locale}.` })) : (_jsxs("table", { className: "kywi-admin-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Title" }), _jsx("th", { children: "Type" }), _jsx("th", { children: "Slug" }), _jsx("th", { style: { textAlign: 'right' }, children: "Action" })] }) }), _jsx("tbody", { children: lc.missing.map((item) => {
95
+ const busy = creating === `${item.id}:${lc.locale}`;
96
+ return (_jsxs("tr", { children: [_jsx("td", { children: item.title }), _jsx("td", { children: item.contentTypeName }), _jsx("td", { children: _jsx("code", { children: item.slug }) }), _jsx("td", { style: { textAlign: 'right' }, children: _jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary kywi-btn-sm", disabled: !!creating, onClick: () => createTranslation(item, lc.locale), children: busy ? 'Creating…' : `Create ${lc.locale} translation` }) })] }, item.id));
97
+ }) })] }))] }, lc.locale))))] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Interface strings", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Interface strings" }), _jsxs("div", { className: "kywi-admin-callout kywi-admin-callout-info", children: ["Resource bundles are JSON files loaded at startup (", _jsx("code", { children: "apps/reference/i18n/*.json" }), "). They are config-as-code and edited in the repository \u2014 this view is read-only."] }), stringKeys.length === 0 ? (_jsx("div", { className: "kywi-admin-empty-state", children: "No interface string bundles are loaded." })) : (_jsx("div", { className: "kywi-table-scroll", style: { overflowX: 'auto' }, children: _jsxs("table", { className: "kywi-admin-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Key" }), (strings?.locales ?? []).map((l) => (_jsx("th", { children: l.toUpperCase() }, l)))] }) }), _jsx("tbody", { children: stringKeys.map((key) => (_jsxs("tr", { children: [_jsx("td", { children: _jsx("code", { children: key }) }), (strings?.locales ?? []).map((l) => (_jsx("td", { children: strings?.bundles[l]?.[key] ?? (_jsx("span", { className: "kywi-def-val--muted", children: "\u2014" })) }, l)))] }, key))) })] }) }))] })] }))] }));
98
+ }
99
+ //# sourceMappingURL=translations-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations-index.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/translations/translations-index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function TrashIndexSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=trash-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trash-index.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/trash/trash-index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6BrD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAM,EAAE,YAAY,2CAwK7D"}
@@ -0,0 +1,96 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * Trash surface (`/admin/trash`) — 0.2.0 T6 migration.
5
+ *
6
+ * Ported verbatim from `apps/reference/app/admin/trash/page.tsx`. `apiGet`/
7
+ * `apiSend` (the app's `taxonomy-ui` re-exports of `getJson`/`sendJson`) →
8
+ * `getJson`/`sendJson` imported directly from `@kywi-software/core/host-client`;
9
+ * `Loading`/`ErrorBox`/`EmptyState`/`ConfirmDialog` → core `admin/primitives`.
10
+ * The outer `AdminShellWrapper` is dropped — chrome renders once around every
11
+ * surface via `KywiAdminApp`/`AdminChrome`.
12
+ */
13
+ import { useCallback, useEffect, useState } from 'react';
14
+ import { getJson, sendJson } from '../../../host-client/index.js';
15
+ import { Loading, ErrorBox, EmptyState, ConfirmDialog } from '../../primitives.js';
16
+ function formatDate(value) {
17
+ if (!value)
18
+ return '—';
19
+ const d = new Date(value);
20
+ return isNaN(d.getTime())
21
+ ? '—'
22
+ : d.toLocaleString(undefined, {
23
+ year: 'numeric',
24
+ month: 'short',
25
+ day: 'numeric',
26
+ hour: '2-digit',
27
+ minute: '2-digit',
28
+ });
29
+ }
30
+ // ── Surface ──────────────────────────────────────────────────────────────────
31
+ export default function TrashIndexSurface(_props) {
32
+ const [rows, setRows] = useState([]);
33
+ const [loading, setLoading] = useState(true);
34
+ const [error, setError] = useState(null);
35
+ const [notice, setNotice] = useState(null);
36
+ // Row-level busy state keyed by id, so one row's action doesn't disable all.
37
+ const [busyId, setBusyId] = useState(null);
38
+ // Pending permanent-delete confirmation (null = closed).
39
+ const [purging, setPurging] = useState(null);
40
+ const [purgeBusy, setPurgeBusy] = useState(false);
41
+ const load = useCallback(async () => {
42
+ setLoading(true);
43
+ setError(null);
44
+ try {
45
+ setRows(await getJson('/api/v1/content/trash'));
46
+ }
47
+ catch (e) {
48
+ setError(e instanceof Error ? e.message : 'Failed to load trash');
49
+ }
50
+ finally {
51
+ setLoading(false);
52
+ }
53
+ }, []);
54
+ useEffect(() => {
55
+ load();
56
+ }, [load]);
57
+ const handleRestore = useCallback(async (row) => {
58
+ setBusyId(row.id);
59
+ setError(null);
60
+ setNotice(null);
61
+ try {
62
+ await sendJson(`/api/v1/content/by-id/${row.id}/restore`, 'POST');
63
+ setRows(prev => prev.filter(r => r.id !== row.id));
64
+ setNotice(`Restored “${row.title}”.`);
65
+ }
66
+ catch (e) {
67
+ setError(e instanceof Error ? e.message : 'Failed to restore content');
68
+ }
69
+ finally {
70
+ setBusyId(null);
71
+ }
72
+ }, []);
73
+ const confirmPurge = useCallback(async () => {
74
+ if (!purging)
75
+ return;
76
+ const row = purging;
77
+ setPurgeBusy(true);
78
+ setError(null);
79
+ setNotice(null);
80
+ try {
81
+ await sendJson(`/api/v1/content/by-id/${row.id}/permanent`, 'DELETE');
82
+ setRows(prev => prev.filter(r => r.id !== row.id));
83
+ setNotice(`Permanently deleted “${row.title}”.`);
84
+ setPurging(null);
85
+ }
86
+ catch (e) {
87
+ setError(e instanceof Error ? e.message : 'Failed to delete content');
88
+ setPurging(null);
89
+ }
90
+ finally {
91
+ setPurgeBusy(false);
92
+ }
93
+ }, [purging]);
94
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-admin-page-header", children: [_jsx("h1", { children: "Trash" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: load, disabled: loading, children: "Refresh" })] }), _jsx("p", { className: "kywi-text-muted", style: { marginTop: 'calc(-1 * var(--kywi-space-2))' }, children: "Soft-deleted content. Restore returns an item to its content type; permanent delete removes it for good and cannot be undone." }), notice && (_jsx("p", { className: "kywi-admin-callout kywi-admin-callout-info", role: "status", children: notice })), loading ? (_jsx(Loading, { label: "Loading trash\u2026" })) : error && rows.length === 0 ? (_jsx(ErrorBox, { message: error, onRetry: load })) : rows.length === 0 ? (_jsxs(EmptyState, { children: [_jsx("p", { children: "Trash is empty." }), _jsx("p", { className: "kywi-text-muted", children: "Deleted content lands here first, so you can restore it or remove it permanently." })] })) : (_jsxs(_Fragment, { children: [error && (_jsx("p", { className: "kywi-admin-error-message", role: "alert", children: error })), _jsxs("table", { className: "kywi-admin-table", "data-testid": "trash-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: "Title" }), _jsx("th", { scope: "col", children: "Type" }), _jsx("th", { scope: "col", children: "Deleted" }), _jsx("th", { scope: "col", children: "Actions" })] }) }), _jsx("tbody", { children: rows.map(row => (_jsxs("tr", { "data-testid": "trash-row", "data-content-id": row.id, children: [_jsx("td", { children: row.title || _jsx("span", { className: "kywi-text-muted", children: "Untitled" }) }), _jsx("td", { children: _jsx("code", { children: row.contentTypeName }) }), _jsx("td", { children: formatDate(row.deletedAt) }), _jsx("td", { children: _jsxs("div", { className: "kywi-admin-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary kywi-btn-sm", onClick: () => handleRestore(row), disabled: busyId === row.id, children: busyId === row.id ? 'Restoring…' : 'Restore' }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger kywi-btn-sm", onClick: () => setPurging(row), disabled: busyId === row.id, children: "Delete permanently" })] }) })] }, row.id))) })] })] })), purging && (_jsx(ConfirmDialog, { title: `Permanently delete “${purging.title || 'Untitled'}”?`, message: _jsx("p", { children: "This removes the content for good. This action cannot be undone." }), confirmLabel: "Delete permanently", busy: purgeBusy, onConfirm: confirmPurge, onCancel: () => setPurging(null) }))] }));
95
+ }
96
+ //# sourceMappingURL=trash-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trash-index.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/trash/trash-index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Shared data helpers for the admin Users surface (0.2.0 admin-app migration,
3
+ * plan §1.3 / §2, T9). Ported verbatim from
4
+ * `apps/reference/app/admin/users/users-data.ts`; the only substitution is the
5
+ * fetch source: the reference read `adminFetch` from app-local `lib/admin-auth`,
6
+ * these helpers instead take a `fetchFn: FetchLike` parameter supplied by each
7
+ * surface from `useAdminContext().fetch` (same pattern as
8
+ * `surfaces/content/runtime-content-types.ts`). All calls go through the
9
+ * DB-backed /api/v1 handler.
10
+ */
11
+ import type { FetchLike } from '../../content-editor-api.js';
12
+ export interface RawUser {
13
+ id: string;
14
+ email: string;
15
+ firstName: string;
16
+ lastName: string;
17
+ role: string;
18
+ isActive: boolean;
19
+ lastLoginAt: string | null;
20
+ }
21
+ export interface RawGroup {
22
+ id: string;
23
+ name: string;
24
+ type: string;
25
+ defaultRole: string;
26
+ siteId: string;
27
+ }
28
+ export interface RawSite {
29
+ id: string;
30
+ slug: string;
31
+ name: string;
32
+ }
33
+ /** The role model, in privilege order, per packages/core/src/auth/roles.ts. */
34
+ export declare const KYWI_ROLES: readonly ["superAdmin", "siteAdmin", "editor", "author", "reader"];
35
+ export declare function fetchData<T>(fetchFn: FetchLike, path: string): Promise<T>;
36
+ export declare function loadUsers(fetchFn: FetchLike): Promise<RawUser[]>;
37
+ export declare function loadGroups(fetchFn: FetchLike): Promise<RawGroup[]>;
38
+ export declare function loadSites(fetchFn: FetchLike): Promise<RawSite[]>;
39
+ /** Load groups plus their member user-IDs (one members call per group). */
40
+ export declare function loadGroupsWithMembers(fetchFn: FetchLike): Promise<{
41
+ groups: RawGroup[];
42
+ membersByGroup: Record<string, string[]>;
43
+ }>;
44
+ /** Invert a groupId→userIds map into userId→groupNames. */
45
+ export declare function buildUserGroupNames(groups: RawGroup[], membersByGroup: Record<string, string[]>): Record<string, string[]>;
46
+ export declare function fullName(u: {
47
+ firstName: string;
48
+ lastName: string;
49
+ email: string;
50
+ }): string;
51
+ //# sourceMappingURL=users-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,+EAA+E;AAC/E,eAAO,MAAM,UAAU,oEAAqE,CAAA;AAE5F,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAc/E;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAExE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEtE;AAED,2EAA2E;AAC3E,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;IACvE,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CACzC,CAAC,CAYD;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,QAAQ,EAAE,EAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAW1B;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAG1F"}
@@ -0,0 +1,60 @@
1
+ /** The role model, in privilege order, per packages/core/src/auth/roles.ts. */
2
+ export const KYWI_ROLES = ['superAdmin', 'siteAdmin', 'editor', 'author', 'reader'];
3
+ export async function fetchData(fetchFn, path) {
4
+ const res = await fetchFn(path);
5
+ if (!res.ok) {
6
+ let message = `Request failed (${res.status})`;
7
+ try {
8
+ const body = await res.json();
9
+ message = body?.error?.message ?? message;
10
+ }
11
+ catch {
12
+ /* keep default */
13
+ }
14
+ throw new Error(message);
15
+ }
16
+ const body = await res.json();
17
+ return body.data;
18
+ }
19
+ export async function loadUsers(fetchFn) {
20
+ return fetchData(fetchFn, '/api/v1/users');
21
+ }
22
+ export async function loadGroups(fetchFn) {
23
+ return fetchData(fetchFn, '/api/v1/groups');
24
+ }
25
+ export async function loadSites(fetchFn) {
26
+ return fetchData(fetchFn, '/api/v1/sites');
27
+ }
28
+ /** Load groups plus their member user-IDs (one members call per group). */
29
+ export async function loadGroupsWithMembers(fetchFn) {
30
+ const groups = await loadGroups(fetchFn);
31
+ const entries = await Promise.all(groups.map(async (g) => {
32
+ try {
33
+ return [g.id, await fetchData(fetchFn, `/api/v1/groups/${g.id}/members`)];
34
+ }
35
+ catch {
36
+ return [g.id, []];
37
+ }
38
+ }));
39
+ return { groups, membersByGroup: Object.fromEntries(entries) };
40
+ }
41
+ /** Invert a groupId→userIds map into userId→groupNames. */
42
+ export function buildUserGroupNames(groups, membersByGroup) {
43
+ const nameById = new Map(groups.map(g => [g.id, g.name]));
44
+ const result = {};
45
+ for (const [groupId, userIds] of Object.entries(membersByGroup)) {
46
+ const name = nameById.get(groupId);
47
+ if (!name)
48
+ continue;
49
+ for (const userId of userIds) {
50
+ ;
51
+ (result[userId] ??= []).push(name);
52
+ }
53
+ }
54
+ return result;
55
+ }
56
+ export function fullName(u) {
57
+ const name = `${u.firstName ?? ''} ${u.lastName ?? ''}`.trim();
58
+ return name || u.email;
59
+ }
60
+ //# sourceMappingURL=users-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users-data.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function UsersDetailSurface({ params }: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=users-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users-detail.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-detail.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAwBrD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,2CAyKlE"}