@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,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function SettingsSitesSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=settings-sites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-sites.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-sites.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAsCrD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAM,EAAE,YAAY,2CAkHhE"}
@@ -0,0 +1,134 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * `settings.sites` surface — the multi-site CRUD table with a typed-confirmation
5
+ * delete, ported verbatim from `apps/reference/app/admin/settings/sites/page.tsx`
6
+ * (0.2.0 T12). Markup / classes / copy unchanged; wiring substitutions (plan
7
+ * §1.3):
8
+ * - `adminFetch` → `useAdminContext().fetch` (the top surface and each dialog
9
+ * read it from context)
10
+ * - the module-level `THEME_OPTIONS = kywiConfig.themes.map(...)` → the theme
11
+ * list read off `useAdminContext().runtime` and threaded into the form dialog
12
+ * as a `themeOptions` prop
13
+ * `AdminShellWrapper` is gone — chrome is rendered once by `KywiAdminApp` (T14).
14
+ *
15
+ * The theme dropdown's option list comes from the site's configured `themes`,
16
+ * now carried on the secret-free `AdminRuntimeConfig` projection under
17
+ * `overview.themes` (admin/server.ts) and read via `runtimeThemeOptions` below.
18
+ *
19
+ * The last-site delete guard (Delete disabled when `sites.length <= 1`) and the
20
+ * type-the-name confirmation are preserved exactly.
21
+ */
22
+ import { useCallback, useEffect, useState } from 'react';
23
+ import { useAdminContext } from '../../context.js';
24
+ import { LoadingState, ErrorState } from './states.js';
25
+ /** Read the configured theme names off the runtime projection's `overview.themes`. */
26
+ function runtimeThemeOptions(runtime) {
27
+ const themes = runtime?.overview?.themes;
28
+ return (themes ?? []).map(t => t.name);
29
+ }
30
+ function emptyForm(themeOptions) {
31
+ return { name: '', domain: '', defaultLocale: 'en', theme: themeOptions[0] ?? 'default' };
32
+ }
33
+ export default function SettingsSitesSurface(_props) {
34
+ const { fetch: adminFetch, runtime } = useAdminContext();
35
+ const themeOptions = runtimeThemeOptions(runtime);
36
+ const [sites, setSites] = useState([]);
37
+ const [loading, setLoading] = useState(true);
38
+ const [error, setError] = useState(null);
39
+ const [dialog, setDialog] = useState(null);
40
+ const load = useCallback(async () => {
41
+ setLoading(true);
42
+ setError(null);
43
+ try {
44
+ const res = await adminFetch('/api/v1/sites');
45
+ if (!res.ok)
46
+ throw new Error(`Failed to load sites (${res.status})`);
47
+ const body = await res.json();
48
+ setSites((body.data ?? []));
49
+ }
50
+ catch (e) {
51
+ setError(e instanceof Error ? e.message : 'Failed to load sites');
52
+ }
53
+ finally {
54
+ setLoading(false);
55
+ }
56
+ }, [adminFetch]);
57
+ useEffect(() => { load(); }, [load]);
58
+ const closeAndReload = useCallback(async () => {
59
+ setDialog(null);
60
+ await load();
61
+ }, [load]);
62
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-admin-page-header", children: [_jsx("h1", { children: "Sites" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: () => setDialog({ kind: 'create' }), children: "New site" })] }), loading ? (_jsx(LoadingState, { label: "Loading sites\u2026" })) : error ? (_jsx(ErrorState, { message: error, onRetry: load })) : sites.length === 0 ? (_jsxs("div", { className: "kywi-empty-state", children: [_jsx("p", { children: "No sites yet." }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: () => setDialog({ kind: 'create' }), children: "Create your first site" })] })) : (_jsx("div", { style: { overflowX: 'auto' }, children: _jsxs("table", { className: "kywi-table kywi-admin-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Name" }), _jsx("th", { children: "Domain" }), _jsx("th", { children: "Slug" }), _jsx("th", { children: "Locale" }), _jsx("th", { children: "Theme" }), _jsx("th", { style: { textAlign: 'right' }, children: "Actions" })] }) }), _jsx("tbody", { children: sites.map(site => (_jsxs("tr", { children: [_jsx("td", { children: site.name }), _jsx("td", { style: { fontFamily: 'var(--kywi-font-mono)' }, children: site.domain }), _jsx("td", { style: { fontFamily: 'var(--kywi-font-mono)' }, children: site.slug }), _jsx("td", { children: site.defaultLocale }), _jsx("td", { children: site.theme }), _jsxs("td", { style: { textAlign: 'right', whiteSpace: 'nowrap' }, children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary kywi-btn-sm", onClick: () => setDialog({ kind: 'edit', site }), children: "Edit" }), ' ', _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger kywi-btn-sm", onClick: () => setDialog({ kind: 'delete', site }), disabled: sites.length <= 1, title: sites.length <= 1 ? 'Cannot delete the only site' : undefined, children: "Delete" })] })] }, site.id))) })] }) })), dialog?.kind === 'create' && (_jsx(SiteFormDialog, { title: "New site", mode: "create", themeOptions: themeOptions, onClose: () => setDialog(null), onSaved: closeAndReload })), dialog?.kind === 'edit' && (_jsx(SiteFormDialog, { title: "Edit site", mode: "edit", site: dialog.site, themeOptions: themeOptions, onClose: () => setDialog(null), onSaved: closeAndReload })), dialog?.kind === 'delete' && (_jsx(DeleteSiteDialog, { site: dialog.site, onClose: () => setDialog(null), onDeleted: closeAndReload }))] }));
63
+ }
64
+ // ─── Create / Edit dialog ──────────────────────────────────────────────────────
65
+ function SiteFormDialog({ title, mode, site, themeOptions, onClose, onSaved, }) {
66
+ const { fetch: adminFetch } = useAdminContext();
67
+ const [form, setForm] = useState(site
68
+ ? { name: site.name, domain: site.domain, defaultLocale: site.defaultLocale, theme: site.theme }
69
+ : emptyForm(themeOptions));
70
+ const [submitting, setSubmitting] = useState(false);
71
+ const [err, setErr] = useState(null);
72
+ const set = (patch) => setForm(prev => ({ ...prev, ...patch }));
73
+ const submit = async (e) => {
74
+ e.preventDefault();
75
+ setSubmitting(true);
76
+ setErr(null);
77
+ try {
78
+ const url = mode === 'create' ? '/api/v1/sites' : `/api/v1/sites/${site.id}`;
79
+ const method = mode === 'create' ? 'POST' : 'PUT';
80
+ const res = await adminFetch(url, {
81
+ method,
82
+ headers: { 'Content-Type': 'application/json' },
83
+ body: JSON.stringify({
84
+ name: form.name.trim(),
85
+ domain: form.domain.trim(),
86
+ defaultLocale: form.defaultLocale.trim() || 'en',
87
+ theme: form.theme,
88
+ }),
89
+ });
90
+ if (!res.ok) {
91
+ const body = await res.json().catch(() => null);
92
+ throw new Error(body?.error?.message ?? `${mode === 'create' ? 'Create' : 'Update'} failed (${res.status})`);
93
+ }
94
+ onSaved();
95
+ }
96
+ catch (e2) {
97
+ setErr(e2 instanceof Error ? e2.message : 'Save failed');
98
+ setSubmitting(false);
99
+ }
100
+ };
101
+ return (_jsx(ModalShell, { title: title, onClose: onClose, children: _jsxs("form", { onSubmit: submit, children: [err && _jsx(ErrorState, { message: err }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "site-name", children: "Name" }), _jsx("input", { id: "site-name", className: "kywi-input", type: "text", required: true, value: form.name, onChange: e => set({ name: e.target.value }) })] }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "site-domain", children: "Domain" }), _jsx("input", { id: "site-domain", className: "kywi-input", type: "text", required: true, value: form.domain, onChange: e => set({ domain: e.target.value }), placeholder: "example.com" })] }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "site-locale", children: "Default locale" }), _jsx("input", { id: "site-locale", className: "kywi-input", type: "text", value: form.defaultLocale, onChange: e => set({ defaultLocale: e.target.value }), placeholder: "en" })] }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "site-theme", children: "Theme" }), _jsx("select", { id: "site-theme", className: "kywi-input", value: form.theme, onChange: e => set({ theme: e.target.value }), children: themeOptions.map(t => _jsx("option", { value: t, children: t }, t)) })] }), mode === 'edit' && site && (_jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "site-slug", children: "Slug" }), _jsx("input", { id: "site-slug", className: "kywi-input", type: "text", value: site.slug, readOnly: true }), _jsx("p", { className: "kywi-field-hint", children: "The slug is immutable \u2014 it is the site\u2019s stable identifier used for site resolution. Changing it would break existing links and domain routing." })] })), _jsxs("div", { className: "kywi-form-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: onClose, disabled: submitting, children: "Cancel" }), _jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", disabled: submitting, children: submitting ? 'Saving…' : mode === 'create' ? 'Create site' : 'Save changes' })] })] }) }));
102
+ }
103
+ // ─── Delete dialog (typed confirmation) ─────────────────────────────────────────
104
+ function DeleteSiteDialog({ site, onClose, onDeleted, }) {
105
+ const { fetch: adminFetch } = useAdminContext();
106
+ const [confirm, setConfirm] = useState('');
107
+ const [submitting, setSubmitting] = useState(false);
108
+ const [err, setErr] = useState(null);
109
+ const matches = confirm.trim() === site.name;
110
+ const del = async () => {
111
+ if (!matches)
112
+ return;
113
+ setSubmitting(true);
114
+ setErr(null);
115
+ try {
116
+ const res = await adminFetch(`/api/v1/sites/${site.id}`, { method: 'DELETE' });
117
+ if (!res.ok) {
118
+ const body = await res.json().catch(() => null);
119
+ throw new Error(body?.error?.message ?? `Delete failed (${res.status})`);
120
+ }
121
+ onDeleted();
122
+ }
123
+ catch (e) {
124
+ setErr(e instanceof Error ? e.message : 'Delete failed');
125
+ setSubmitting(false);
126
+ }
127
+ };
128
+ return (_jsxs(ModalShell, { title: "Delete site", onClose: onClose, children: [err && _jsx(ErrorState, { message: err }), _jsxs("p", { style: { color: 'var(--kywi-text-muted)', marginBottom: 'var(--kywi-space-4)' }, children: ["This permanently deletes ", _jsx("strong", { children: site.name }), " and cannot be undone. All of the site\u2019s content, media, and settings will be removed. To confirm, type the site name below."] }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "delete-confirm", children: "Site name" }), _jsx("input", { id: "delete-confirm", className: "kywi-input", type: "text", value: confirm, onChange: e => setConfirm(e.target.value), placeholder: site.name, autoComplete: "off" })] }), _jsxs("div", { className: "kywi-form-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: onClose, disabled: submitting, children: "Cancel" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger", onClick: del, disabled: !matches || submitting, children: submitting ? 'Deleting…' : 'Delete site' })] })] }));
129
+ }
130
+ // ─── Modal shell (reuses the submission-detail modal styling) ───────────────────
131
+ function ModalShell({ title, onClose, children, }) {
132
+ return (_jsx("div", { className: "kywi-submission-detail-backdrop", role: "dialog", "aria-modal": "true", "aria-label": title, onClick: onClose, children: _jsxs("div", { className: "kywi-submission-detail-modal", onClick: e => e.stopPropagation(), children: [_jsxs("div", { className: "kywi-submission-detail-header", children: [_jsx("h2", { className: "kywi-submission-detail-title", children: title }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-sm", onClick: onClose, "aria-label": "Close", children: "\u2715" })] }), children] }) }));
133
+ }
134
+ //# sourceMappingURL=settings-sites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-sites.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-sites.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAyBtD,sFAAsF;AACtF,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,MAAM,GAAI,OAAuD,EAAE,QAAQ,EAAE,MAAM,CAAA;IACzF,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,YAAsB;IACvC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAA;AAC3F,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAoB;IAC/D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAA;IACxD,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY,EAAE,CAAC,CAAA;IACjD,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;IACvD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,IAAI,CAAC,CAAA;IAElD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,CAAA;YAC7C,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;YACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAC7B,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAc,CAAC,CAAA;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAA;QACnE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEnC,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC5C,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,OAAO,CACL,8BACE,eAAK,SAAS,EAAC,wBAAwB,aACrC,iCAAc,EACd,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,2BAA2B,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,yBAE/F,IACL,EAEL,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,YAAY,IAAC,KAAK,EAAC,qBAAgB,GAAG,CACxC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAI,CAC9C,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,eAAK,SAAS,EAAC,kBAAkB,aAC/B,wCAAoB,EACpB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,2BAA2B,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,uCAE/F,IACL,CACP,CAAC,CAAC,CAAC,CACF,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,YAC/B,iBAAO,SAAS,EAAC,6BAA6B,aAC5C,0BACE,yBACE,gCAAa,EACb,kCAAe,EACf,gCAAa,EACb,kCAAe,EACf,iCAAc,EACd,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAc,IAC5C,GACC,EACR,0BACG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACjB,yBACE,uBAAK,IAAI,CAAC,IAAI,GAAM,EACpB,aAAI,KAAK,EAAE,EAAE,UAAU,EAAE,uBAAuB,EAAE,YAAG,IAAI,CAAC,MAAM,GAAM,EACtE,aAAI,KAAK,EAAE,EAAE,UAAU,EAAE,uBAAuB,EAAE,YAAG,IAAI,CAAC,IAAI,GAAM,EACpE,uBAAK,IAAI,CAAC,aAAa,GAAM,EAC7B,uBAAK,IAAI,CAAC,KAAK,GAAM,EACrB,cAAI,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aACrD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,qBAGzC,EAAC,GAAG,EACb,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sCAAsC,EAChD,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAClD,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAC3B,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,uBAG7D,IACN,KAvBE,IAAI,CAAC,EAAE,CAwBX,CACN,CAAC,GACI,IACF,GACJ,CACP,EAEA,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,CAC5B,KAAC,cAAc,IAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,EAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,GAAI,CACvI,EACA,MAAM,EAAE,IAAI,KAAK,MAAM,IAAI,CAC1B,KAAC,cAAc,IACb,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAC9B,OAAO,EAAE,cAAc,GACvB,CACH,EACA,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,CAC5B,KAAC,gBAAgB,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,GAAI,CACnG,IACA,CACJ,CAAA;AACH,CAAC;AAED,kFAAkF;AAElF,SAAS,cAAc,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,OAAO,GAQR;IACC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IAC/C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAC9B,IAAI;QACF,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;QAChG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAC5B,CAAA;IACD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAEnD,MAAM,GAAG,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;IAElF,MAAM,MAAM,GAAG,KAAK,EAAE,CAAkB,EAAE,EAAE;QAC1C,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,CAAA;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,IAAK,CAAC,EAAE,EAAE,CAAA;YAC7E,MAAM,MAAM,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;YACjD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBACtB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;oBAC1B,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,IAAI;oBAChD,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC;aACH,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;gBAC/C,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;YAC9G,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;YACxD,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,YACxC,gBAAM,QAAQ,EAAE,MAAM,aACnB,GAAG,IAAI,KAAC,UAAU,IAAC,OAAO,EAAE,GAAG,GAAI,EACpC,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,WAAW,qBAAa,EAC9D,gBACE,EAAE,EAAC,WAAW,EACd,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAC5C,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,aAAa,uBAAe,EAClE,gBACE,EAAE,EAAC,aAAa,EAChB,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAC9C,WAAW,EAAC,aAAa,GACzB,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,aAAa,+BAAuB,EAC1E,gBACE,EAAE,EAAC,aAAa,EAChB,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EACrD,WAAW,EAAC,IAAI,GAChB,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,YAAY,sBAAc,EAChE,iBACE,EAAE,EAAC,YAAY,EACf,SAAS,EAAC,YAAY,EACtB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,YAE5C,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAgB,KAAK,EAAE,CAAC,YAAG,CAAC,IAAf,CAAC,CAAwB,CAAC,GACvD,IACL,EAEL,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAC1B,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,WAAW,qBAAa,EAC9D,gBAAO,EAAE,EAAC,WAAW,EAAC,SAAS,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,SAAG,EACtF,YAAG,SAAS,EAAC,iBAAiB,0KAG1B,IACA,CACP,EAED,eAAK,SAAS,EAAC,mBAAmB,aAChC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,6BAA6B,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,uBAE3F,EACT,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,2BAA2B,EAAC,QAAQ,EAAE,UAAU,YAC7E,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,GACrE,IACL,IACD,GACI,CACd,CAAA;AACH,CAAC;AAED,mFAAmF;AAEnF,SAAS,gBAAgB,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,SAAS,GAKV;IACC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAA;IAE5C,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,CAAA;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC9E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;gBAC/C,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,kBAAkB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;YAC1E,CAAC;YACD,SAAS,EAAE,CAAA;QACb,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;YACxD,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,MAAC,UAAU,IAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAE,OAAO,aAC7C,GAAG,IAAI,KAAC,UAAU,IAAC,OAAO,EAAE,GAAG,GAAI,EACpC,aAAG,KAAK,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,qBAAqB,EAAE,0CACvD,2BAAS,IAAI,CAAC,IAAI,GAAU,yIAEnD,EACJ,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,gBAAgB,0BAAkB,EACxE,gBACE,EAAE,EAAC,gBAAgB,EACnB,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,WAAW,EAAE,IAAI,CAAC,IAAI,EACtB,YAAY,EAAC,KAAK,GAClB,IACE,EACN,eAAK,SAAS,EAAC,mBAAmB,aAChC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,6BAA6B,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,uBAE3F,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B,EACpC,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,CAAC,OAAO,IAAI,UAAU,YAE/B,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,GAClC,IACL,IACK,CACd,CAAA;AACH,CAAC;AAED,mFAAmF;AAEnF,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,OAAO,EACP,QAAQ,GAKT;IACC,OAAO,CACL,cACE,SAAS,EAAC,iCAAiC,EAC3C,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACL,KAAK,EACjB,OAAO,EAAE,OAAO,YAEhB,eAAK,SAAS,EAAC,8BAA8B,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,aAC7E,eAAK,SAAS,EAAC,+BAA+B,aAC5C,aAAI,SAAS,EAAC,8BAA8B,YAAE,KAAK,GAAM,EACzD,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,qCAAqC,EAAC,OAAO,EAAE,OAAO,gBAAa,OAAO,uBAEjG,IACL,EACL,QAAQ,IACL,GACF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ /**
3
+ * Shared presentational states + helpers for the Settings suite (0.2.0 T12).
4
+ * Ported verbatim from `apps/reference/app/admin/settings/states.tsx`. The
5
+ * `LoadingState`/`ErrorState` here are byte-identical to the core primitives;
6
+ * they are kept in this settings-local module (alongside the settings-specific
7
+ * `SuccessFlash`/`ConfigNote`/`DefList`/`DefRow`) so the whole Settings suite
8
+ * imports its chrome from one place, exactly as the reference did.
9
+ */
10
+ export declare function LoadingState({ label }: {
11
+ label?: string;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ErrorState({ message, onRetry }: {
14
+ message: string;
15
+ onRetry?: () => void;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export declare function SuccessFlash({ message }: {
18
+ message: string;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ /** Callout signalling a value is defined in kywi.config.ts and read-only at runtime. */
21
+ export declare function ConfigNote({ children }: {
22
+ children: React.ReactNode;
23
+ }): import("react/jsx-runtime").JSX.Element;
24
+ export declare function DefList({ children }: {
25
+ children: React.ReactNode;
26
+ }): import("react/jsx-runtime").JSX.Element;
27
+ export declare function DefRow({ term, children, mono, muted, }: {
28
+ term: string;
29
+ children: React.ReactNode;
30
+ mono?: boolean;
31
+ muted?: boolean;
32
+ }): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=states.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/states.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;;;;GAOG;AAEH,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;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,2CAO5D;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAOrE;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAElE;AAED,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,IAAY,EACZ,KAAa,GACd,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,2CAUA"}
@@ -0,0 +1,33 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Shared presentational states + helpers for the Settings suite (0.2.0 T12).
5
+ * Ported verbatim from `apps/reference/app/admin/settings/states.tsx`. The
6
+ * `LoadingState`/`ErrorState` here are byte-identical to the core primitives;
7
+ * they are kept in this settings-local module (alongside the settings-specific
8
+ * `SuccessFlash`/`ConfigNote`/`DefList`/`DefRow`) so the whole Settings suite
9
+ * imports its chrome from one place, exactly as the reference did.
10
+ */
11
+ export function LoadingState({ label = 'Loading…' }) {
12
+ 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 })] }));
13
+ }
14
+ export function ErrorState({ message, onRetry }) {
15
+ 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" }))] }));
16
+ }
17
+ export function SuccessFlash({ message }) {
18
+ return (_jsxs("div", { className: "kywi-settings-success", role: "status", "aria-live": "polite", children: [_jsx("span", { "aria-hidden": "true", children: "\u2713" }), _jsx("span", { children: message })] }));
19
+ }
20
+ /** Callout signalling a value is defined in kywi.config.ts and read-only at runtime. */
21
+ export function ConfigNote({ children }) {
22
+ return (_jsxs("div", { className: "kywi-settings-note", children: [_jsx("span", { "aria-hidden": "true", children: "\u24D8" }), _jsx("span", { children: children })] }));
23
+ }
24
+ export function DefList({ children }) {
25
+ return _jsx("dl", { className: "kywi-def-list", children: children });
26
+ }
27
+ export function DefRow({ term, children, mono = false, muted = false, }) {
28
+ const cls = ['kywi-def-val', mono ? 'kywi-def-val--mono' : '', muted ? 'kywi-def-val--muted' : '']
29
+ .filter(Boolean)
30
+ .join(' ');
31
+ return (_jsxs("div", { className: "kywi-def-row", children: [_jsx("dt", { className: "kywi-def-term", children: term }), _jsx("dd", { className: cls, children: children })] }));
32
+ }
33
+ //# sourceMappingURL=states.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"states.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/states.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ;;;;;;;GAOG;AAEH,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;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAuB;IAC3D,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,EAAC,IAAI,EAAC,QAAQ,eAAW,QAAQ,aACrE,8BAAkB,MAAM,uBAAS,EACjC,yBAAO,OAAO,GAAQ,IAClB,CACP,CAAA;AACH,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAiC;IACpE,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aACjC,8BAAkB,MAAM,uBAAS,EACjC,yBAAO,QAAQ,GAAQ,IACnB,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAiC;IACjE,OAAO,aAAI,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAM,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,KAAK,GAMd;IACC,MAAM,GAAG,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/F,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,OAAO,CACL,eAAK,SAAS,EAAC,cAAc,aAC3B,aAAI,SAAS,EAAC,eAAe,YAAE,IAAI,GAAM,EACzC,aAAI,SAAS,EAAE,GAAG,YAAG,QAAQ,GAAM,IAC/B,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function CategoriesSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/taxonomy/categories.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA8NrD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAM,EAAE,YAAY,2CAkL7D"}
@@ -0,0 +1,162 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * `taxonomy.categories` surface — the Categories tree manager, ported verbatim
5
+ * from `apps/reference/app/admin/categories/page.tsx` (0.2.0 T11). Markup / copy
6
+ * / inline styles are unchanged; the wiring substitutions (plan §1.3) are: the
7
+ * shared taxonomy atoms now import from the co-located `./taxonomy-ui` (whose
8
+ * `apiGet`/`apiSend` source the host-client JSON layer), and `AdminShellWrapper`
9
+ * is gone — chrome is rendered once by `KywiAdminApp` (T14).
10
+ */
11
+ import { useCallback, useEffect, useMemo, useState } from 'react';
12
+ import { apiGet, apiSend, slugify, Loading, ErrorBox, EmptyState, Modal, ConfirmDialog, } from './taxonomy-ui.js';
13
+ /** Build a parent→children tree from the flat category list. */
14
+ function buildTree(rows) {
15
+ const byId = new Map();
16
+ for (const row of rows)
17
+ byId.set(row.id, { ...row, children: [] });
18
+ const roots = [];
19
+ for (const node of byId.values()) {
20
+ if (node.parentId && byId.has(node.parentId))
21
+ byId.get(node.parentId).children.push(node);
22
+ else
23
+ roots.push(node);
24
+ }
25
+ const sort = (list) => {
26
+ list.sort((a, b) => a.sortOrder - b.sortOrder || a.name.localeCompare(b.name));
27
+ list.forEach((n) => sort(n.children));
28
+ };
29
+ sort(roots);
30
+ return roots;
31
+ }
32
+ function CategoryForm({ form, busy, error, onChange, onSubmit, onClose, }) {
33
+ const title = form.mode === 'edit'
34
+ ? 'Rename category'
35
+ : form.parentName
36
+ ? `New child of “${form.parentName}”`
37
+ : 'New category';
38
+ return (_jsx(Modal, { title: title, onClose: onClose, children: _jsxs("form", { onSubmit: (e) => {
39
+ e.preventDefault();
40
+ onSubmit();
41
+ }, children: [_jsxs("div", { className: "kywi-form-field", children: [_jsxs("label", { className: "kywi-label", htmlFor: "category-name", children: ["Name ", _jsx("span", { className: "kywi-required", children: "*" })] }), _jsx("input", { id: "category-name", className: "kywi-input", type: "text", value: form.name, placeholder: "e.g. News", onChange: (e) => {
42
+ const name = e.target.value;
43
+ onChange({
44
+ name,
45
+ ...(form.slugTouched ? {} : { slug: slugify(name) }),
46
+ });
47
+ } })] }), _jsxs("div", { className: "kywi-form-field", children: [_jsxs("label", { className: "kywi-label", htmlFor: "category-slug", children: ["Slug ", _jsx("span", { className: "kywi-required", children: "*" })] }), _jsx("input", { id: "category-slug", className: "kywi-input", type: "text", value: form.slug, placeholder: "news", onChange: (e) => onChange({ slug: e.target.value, slugTouched: true }) })] }), error && (_jsx("p", { className: "kywi-admin-error-message", role: "alert", style: { marginTop: 'var(--kywi-space-2)' }, children: error })), _jsxs("div", { className: "kywi-admin-form-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: onClose, disabled: busy, children: "Cancel" }), _jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", disabled: busy || !form.name.trim() || !form.slug.trim(), children: busy ? 'Saving…' : form.mode === 'edit' ? 'Save' : 'Create' })] })] }) }));
48
+ }
49
+ // ── Tree node ────────────────────────────────────────────────────────────────
50
+ function CategoryTreeNode({ node, onAddChild, onRename, onDelete, }) {
51
+ return (_jsxs("div", { className: "kywi-category-node", "data-testid": "category-node", children: [_jsxs("div", { className: "kywi-category-row", children: [_jsxs("span", { className: "kywi-category-row-main", children: [_jsx("span", { className: "kywi-category-name", children: node.name }), _jsxs("code", { className: "kywi-category-slug", children: ["/", node.slug] }), !node.isActive && (_jsx("span", { className: "kywi-status-badge kywi-status-inactive", children: "Inactive" }))] }), _jsxs("span", { className: "kywi-category-row-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-xs", "aria-label": `Add child to ${node.name}`, onClick: () => onAddChild(node), children: "Add child" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-xs", "aria-label": `Rename ${node.name}`, onClick: () => onRename(node), children: "Rename" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-xs kywi-ctx-danger", "aria-label": `Delete ${node.name}`, onClick: () => onDelete(node), children: "Delete" })] })] }), node.children.length > 0 && (_jsx("div", { className: "kywi-category-children", children: node.children.map((child) => (_jsx(CategoryTreeNode, { node: child, onAddChild: onAddChild, onRename: onRename, onDelete: onDelete }, child.id))) }))] }));
52
+ }
53
+ // ── Page ───────────────────────────────────────────────────────────────────────
54
+ const EMPTY_FORM = {
55
+ mode: 'create',
56
+ parentId: null,
57
+ parentName: null,
58
+ name: '',
59
+ slug: '',
60
+ slugTouched: false,
61
+ };
62
+ export default function CategoriesSurface(_props) {
63
+ const [rows, setRows] = useState([]);
64
+ const [loading, setLoading] = useState(true);
65
+ const [error, setError] = useState(null);
66
+ const [form, setForm] = useState(null);
67
+ const [formBusy, setFormBusy] = useState(false);
68
+ const [formError, setFormError] = useState(null);
69
+ const [deleting, setDeleting] = useState(null);
70
+ const [deleteBusy, setDeleteBusy] = useState(false);
71
+ const load = useCallback(async () => {
72
+ setLoading(true);
73
+ setError(null);
74
+ try {
75
+ setRows(await apiGet('/api/v1/categories'));
76
+ }
77
+ catch (e) {
78
+ setError(e instanceof Error ? e.message : 'Failed to load categories');
79
+ }
80
+ finally {
81
+ setLoading(false);
82
+ }
83
+ }, []);
84
+ useEffect(() => {
85
+ load();
86
+ }, [load]);
87
+ const tree = useMemo(() => buildTree(rows), [rows]);
88
+ // ── Create / rename ──────────────────────────────────────────────────────
89
+ const openCreate = () => {
90
+ setFormError(null);
91
+ setForm({ ...EMPTY_FORM });
92
+ };
93
+ const openAddChild = (n) => {
94
+ setFormError(null);
95
+ setForm({ ...EMPTY_FORM, parentId: n.id, parentName: n.name });
96
+ };
97
+ const openRename = (n) => {
98
+ setFormError(null);
99
+ setForm({ mode: 'edit', id: n.id, name: n.name, slug: n.slug, slugTouched: true });
100
+ };
101
+ const submitForm = useCallback(async () => {
102
+ if (!form)
103
+ return;
104
+ setFormBusy(true);
105
+ setFormError(null);
106
+ try {
107
+ if (form.mode === 'edit') {
108
+ await apiSend(`/api/v1/categories/${form.id}`, 'PUT', {
109
+ name: form.name.trim(),
110
+ slug: form.slug.trim(),
111
+ });
112
+ }
113
+ else {
114
+ await apiSend('/api/v1/categories', 'POST', {
115
+ name: form.name.trim(),
116
+ slug: form.slug.trim(),
117
+ ...(form.parentId ? { parentId: form.parentId } : {}),
118
+ });
119
+ }
120
+ setForm(null);
121
+ await load();
122
+ }
123
+ catch (e) {
124
+ setFormError(e instanceof Error ? e.message : 'Save failed');
125
+ }
126
+ finally {
127
+ setFormBusy(false);
128
+ }
129
+ }, [form, load]);
130
+ // ── Delete (with content-count warning) ──────────────────────────────────
131
+ const openDelete = useCallback(async (node) => {
132
+ setDeleting({ node, count: null });
133
+ try {
134
+ const content = await apiGet(`/api/v1/categories/${node.id}/content`);
135
+ setDeleting({ node, count: Array.isArray(content) ? content.length : 0 });
136
+ }
137
+ catch {
138
+ // Count is a courtesy warning; if it fails, still allow the delete.
139
+ setDeleting({ node, count: 0 });
140
+ }
141
+ }, []);
142
+ const confirmDelete = useCallback(async () => {
143
+ if (!deleting)
144
+ return;
145
+ setDeleteBusy(true);
146
+ setError(null);
147
+ try {
148
+ await apiSend(`/api/v1/categories/${deleting.node.id}`, 'DELETE');
149
+ setDeleting(null);
150
+ await load();
151
+ }
152
+ catch (e) {
153
+ setError(e instanceof Error ? e.message : 'Delete failed');
154
+ setDeleting(null);
155
+ }
156
+ finally {
157
+ setDeleteBusy(false);
158
+ }
159
+ }, [deleting, load]);
160
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-admin-page-header", children: [_jsx("h1", { children: "Categories" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: openCreate, children: "New category" })] }), loading ? (_jsx(Loading, { label: "Loading categories\u2026" })) : error ? (_jsx(ErrorBox, { message: error, onRetry: load })) : tree.length === 0 ? (_jsxs(EmptyState, { children: [_jsx("p", { children: "No categories yet." }), _jsx("p", { className: "kywi-text-muted", children: "Categories organise content into a browsable hierarchy. Create your first one to get started." }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: openCreate, children: "New category" })] })) : (_jsx("div", { className: "kywi-category-tree", "data-testid": "category-tree", children: tree.map((node) => (_jsx(CategoryTreeNode, { node: node, onAddChild: openAddChild, onRename: openRename, onDelete: openDelete }, node.id))) })), form && (_jsx(CategoryForm, { form: form, busy: formBusy, error: formError, onChange: (patch) => setForm((prev) => (prev ? { ...prev, ...patch } : prev)), onSubmit: submitForm, onClose: () => setForm(null) })), deleting && (_jsx(ConfirmDialog, { title: `Delete “${deleting.node.name}”?`, message: _jsxs(_Fragment, { children: [_jsxs("p", { children: ["This permanently removes the category", deleting.node.children.length > 0 && (_jsxs(_Fragment, { children: [" and re-parents its ", deleting.node.children.length, " child categor", deleting.node.children.length === 1 ? 'y' : 'ies'] })), "."] }), deleting.count === null ? (_jsx("p", { className: "kywi-text-muted", children: "Checking assigned content\u2026" })) : deleting.count > 0 ? (_jsxs("p", { className: "kywi-admin-callout kywi-admin-callout-info", children: [deleting.count, " content item", deleting.count === 1 ? ' is' : 's are', " assigned to this category and will be unassigned."] })) : (_jsx("p", { className: "kywi-text-muted", children: "No content is assigned to this category." }))] }), busy: deleteBusy, onConfirm: confirmDelete, onCancel: () => setDeleting(null) }))] }));
161
+ }
162
+ //# sourceMappingURL=categories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/taxonomy/categories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function TagsSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/taxonomy/tags.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA+GrD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,MAAM,EAAE,YAAY,2CAmNvD"}
@@ -0,0 +1,112 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * `taxonomy.tags` surface — the Tags table manager, ported verbatim from
5
+ * `apps/reference/app/admin/tags/page.tsx` (0.2.0 T11). Markup / copy / inline
6
+ * styles are unchanged; the wiring substitutions (plan §1.3) are: the shared
7
+ * taxonomy atoms now import from the co-located `./taxonomy-ui` (whose
8
+ * `apiGet`/`apiSend` source the host-client JSON layer), and `AdminShellWrapper`
9
+ * is gone — chrome is rendered once by `KywiAdminApp` (T14).
10
+ */
11
+ import { useCallback, useEffect, useMemo, useState } from 'react';
12
+ import { apiGet, apiSend, slugify, Loading, ErrorBox, EmptyState, Modal, ConfirmDialog, } from './taxonomy-ui.js';
13
+ // ── Create / rename modal ──────────────────────────────────────────────────────
14
+ function TagForm({ form, busy, error, onChange, onSubmit, onClose, }) {
15
+ return (_jsx(Modal, { title: form.mode === 'edit' ? 'Rename tag' : 'New tag', onClose: onClose, children: _jsxs("form", { onSubmit: (e) => {
16
+ e.preventDefault();
17
+ onSubmit();
18
+ }, children: [_jsxs("div", { className: "kywi-form-field", children: [_jsxs("label", { className: "kywi-label", htmlFor: "tag-label", children: ["Label ", _jsx("span", { className: "kywi-required", children: "*" })] }), _jsx("input", { id: "tag-label", className: "kywi-input", type: "text", value: form.label, placeholder: "e.g. React", onChange: (e) => {
19
+ const label = e.target.value;
20
+ onChange({ label, ...(form.slugTouched ? {} : { slug: slugify(label) }) });
21
+ } })] }), _jsxs("div", { className: "kywi-form-field", children: [_jsxs("label", { className: "kywi-label", htmlFor: "tag-slug", children: ["Slug ", _jsx("span", { className: "kywi-required", children: "*" })] }), _jsx("input", { id: "tag-slug", className: "kywi-input", type: "text", value: form.slug, placeholder: "react", onChange: (e) => onChange({ slug: e.target.value, slugTouched: true }) })] }), error && (_jsx("p", { className: "kywi-admin-error-message", role: "alert", style: { marginTop: 'var(--kywi-space-2)' }, children: error })), _jsxs("div", { className: "kywi-admin-form-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: onClose, disabled: busy, children: "Cancel" }), _jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", disabled: busy || !form.label.trim() || !form.slug.trim(), children: busy ? 'Saving…' : form.mode === 'edit' ? 'Save' : 'Create' })] })] }) }));
22
+ }
23
+ // ── Page ───────────────────────────────────────────────────────────────────────
24
+ export default function TagsSurface(_props) {
25
+ const [tags, setTags] = useState([]);
26
+ const [loading, setLoading] = useState(true);
27
+ const [error, setError] = useState(null);
28
+ const [search, setSearch] = useState('');
29
+ const [form, setForm] = useState(null);
30
+ const [formBusy, setFormBusy] = useState(false);
31
+ const [formError, setFormError] = useState(null);
32
+ const [deleting, setDeleting] = useState(null);
33
+ const [deleteBusy, setDeleteBusy] = useState(false);
34
+ const load = useCallback(async () => {
35
+ setLoading(true);
36
+ setError(null);
37
+ try {
38
+ setTags(await apiGet('/api/v1/tags'));
39
+ }
40
+ catch (e) {
41
+ setError(e instanceof Error ? e.message : 'Failed to load tags');
42
+ }
43
+ finally {
44
+ setLoading(false);
45
+ }
46
+ }, []);
47
+ useEffect(() => {
48
+ load();
49
+ }, [load]);
50
+ const filtered = useMemo(() => {
51
+ const q = search.trim().toLowerCase();
52
+ if (!q)
53
+ return tags;
54
+ return tags.filter((t) => `${t.label} ${t.slug}`.toLowerCase().includes(q));
55
+ }, [tags, search]);
56
+ const openCreate = () => {
57
+ setFormError(null);
58
+ setForm({ mode: 'create', label: '', slug: '', slugTouched: false });
59
+ };
60
+ const openRename = (t) => {
61
+ setFormError(null);
62
+ setForm({ mode: 'edit', id: t.id, label: t.label, slug: t.slug, slugTouched: true });
63
+ };
64
+ const submitForm = useCallback(async () => {
65
+ if (!form)
66
+ return;
67
+ setFormBusy(true);
68
+ setFormError(null);
69
+ try {
70
+ if (form.mode === 'edit') {
71
+ await apiSend(`/api/v1/tags/${form.id}`, 'PUT', {
72
+ label: form.label.trim(),
73
+ slug: form.slug.trim(),
74
+ });
75
+ }
76
+ else {
77
+ await apiSend('/api/v1/tags', 'POST', {
78
+ label: form.label.trim(),
79
+ slug: form.slug.trim(),
80
+ });
81
+ }
82
+ setForm(null);
83
+ await load();
84
+ }
85
+ catch (e) {
86
+ setFormError(e instanceof Error ? e.message : 'Save failed');
87
+ }
88
+ finally {
89
+ setFormBusy(false);
90
+ }
91
+ }, [form, load]);
92
+ const confirmDelete = useCallback(async () => {
93
+ if (!deleting)
94
+ return;
95
+ setDeleteBusy(true);
96
+ setError(null);
97
+ try {
98
+ await apiSend(`/api/v1/tags/${deleting.id}`, 'DELETE');
99
+ setDeleting(null);
100
+ await load();
101
+ }
102
+ catch (e) {
103
+ setError(e instanceof Error ? e.message : 'Delete failed');
104
+ setDeleting(null);
105
+ }
106
+ finally {
107
+ setDeleteBusy(false);
108
+ }
109
+ }, [deleting, load]);
110
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-admin-page-header", children: [_jsx("h1", { children: "Tags" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: openCreate, children: "New tag" })] }), loading ? (_jsx(Loading, { label: "Loading tags\u2026" })) : error ? (_jsx(ErrorBox, { message: error, onRetry: load })) : tags.length === 0 ? (_jsxs(EmptyState, { children: [_jsx("p", { children: "No tags yet." }), _jsx("p", { className: "kywi-text-muted", children: "Tags are lightweight, non-hierarchical labels for content. Create your first one to get started." }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-primary", onClick: openCreate, children: "New tag" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-toolbar", children: _jsx("input", { type: "search", className: "kywi-admin-list-search", placeholder: "Search tags\u2026", "aria-label": "Search tags", value: search, onChange: (e) => setSearch(e.target.value) }) }), _jsx("div", { className: "kywi-table-scroll", children: _jsxs("table", { className: "kywi-admin-table", "data-testid": "tags-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: "Label" }), _jsx("th", { scope: "col", children: "Slug" }), _jsx("th", { scope: "col", children: "Usage" }), _jsx("th", { scope: "col", className: "kywi-col-actions", children: "Actions" })] }) }), _jsxs("tbody", { children: [filtered.map((t) => (_jsxs("tr", { "data-testid": "tag-row", children: [_jsx("td", { children: t.label }), _jsx("td", { children: _jsxs("code", { className: "kywi-category-slug", children: ["/", t.slug] }) }), _jsx("td", { children: t.usageCount }), _jsx("td", { className: "kywi-col-actions", children: _jsxs("span", { className: "kywi-related-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-xs", "aria-label": `Rename ${t.label}`, onClick: () => openRename(t), children: "Rename" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-xs kywi-ctx-danger", "aria-label": `Delete ${t.label}`, onClick: () => setDeleting(t), children: "Delete" })] }) })] }, t.id))), filtered.length === 0 && (_jsx("tr", { children: _jsxs("td", { colSpan: 4, className: "kywi-text-muted", style: { textAlign: 'center' }, children: ["No tags match \u201C", search, "\u201D."] }) }))] })] }) })] })), form && (_jsx(TagForm, { form: form, busy: formBusy, error: formError, onChange: (patch) => setForm((prev) => (prev ? { ...prev, ...patch } : prev)), onSubmit: submitForm, onClose: () => setForm(null) })), deleting && (_jsx(ConfirmDialog, { title: `Delete “${deleting.label}”?`, message: _jsxs(_Fragment, { children: [_jsx("p", { children: "This permanently removes the tag." }), deleting.usageCount > 0 ? (_jsxs("p", { className: "kywi-admin-callout kywi-admin-callout-info", children: ["This tag is used on ", deleting.usageCount, " content item", deleting.usageCount === 1 ? '' : 's', "; those references will be removed."] })) : (_jsx("p", { className: "kywi-text-muted", children: "This tag is not used on any content." }))] }), busy: deleteBusy, onConfirm: confirmDelete, onCancel: () => setDeleting(null) }))] }));
111
+ }
112
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/taxonomy/tags.tsx"],"names":[],"mappings":"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"}