@kywi-software/core 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/dist/admin/app.d.ts +69 -0
  2. package/dist/admin/app.d.ts.map +1 -0
  3. package/dist/admin/app.js +98 -0
  4. package/dist/admin/app.js.map +1 -0
  5. package/dist/admin/chrome.d.ts +37 -0
  6. package/dist/admin/chrome.d.ts.map +1 -0
  7. package/dist/admin/chrome.js +162 -0
  8. package/dist/admin/chrome.js.map +1 -0
  9. package/dist/admin/context.d.ts +58 -0
  10. package/dist/admin/context.d.ts.map +1 -0
  11. package/dist/admin/context.js +31 -0
  12. package/dist/admin/context.js.map +1 -0
  13. package/dist/admin/index.d.ts +9 -1
  14. package/dist/admin/index.d.ts.map +1 -1
  15. package/dist/admin/index.js +12 -0
  16. package/dist/admin/index.js.map +1 -1
  17. package/dist/admin/kywi-logo.d.ts +21 -0
  18. package/dist/admin/kywi-logo.d.ts.map +1 -0
  19. package/dist/admin/kywi-logo.js +123 -0
  20. package/dist/admin/kywi-logo.js.map +1 -0
  21. package/dist/admin/nav.d.ts +21 -1
  22. package/dist/admin/nav.d.ts.map +1 -1
  23. package/dist/admin/nav.js +45 -88
  24. package/dist/admin/nav.js.map +1 -1
  25. package/dist/admin/primitives.d.ts +52 -0
  26. package/dist/admin/primitives.d.ts.map +1 -0
  27. package/dist/admin/primitives.js +78 -0
  28. package/dist/admin/primitives.js.map +1 -0
  29. package/dist/admin/registry.d.ts +130 -0
  30. package/dist/admin/registry.d.ts.map +1 -0
  31. package/dist/admin/registry.js +456 -0
  32. package/dist/admin/registry.js.map +1 -0
  33. package/dist/admin/server.d.ts +154 -0
  34. package/dist/admin/server.d.ts.map +1 -0
  35. package/dist/admin/server.js +121 -0
  36. package/dist/admin/server.js.map +1 -0
  37. package/dist/admin/shell.d.ts +27 -1
  38. package/dist/admin/shell.d.ts.map +1 -1
  39. package/dist/admin/shell.js +71 -6
  40. package/dist/admin/shell.js.map +1 -1
  41. package/dist/admin/styles/admin.css +113 -23
  42. package/dist/admin/surface-matcher.d.ts +51 -0
  43. package/dist/admin/surface-matcher.d.ts.map +1 -0
  44. package/dist/admin/surface-matcher.js +181 -0
  45. package/dist/admin/surface-matcher.js.map +1 -0
  46. package/dist/admin/surfaces/approvals/approvals-data.d.ts +17 -0
  47. package/dist/admin/surfaces/approvals/approvals-data.d.ts.map +1 -0
  48. package/dist/admin/surfaces/approvals/approvals-data.js +55 -0
  49. package/dist/admin/surfaces/approvals/approvals-data.js.map +1 -0
  50. package/dist/admin/surfaces/approvals/approvals-index.d.ts +3 -0
  51. package/dist/admin/surfaces/approvals/approvals-index.d.ts.map +1 -0
  52. package/dist/admin/surfaces/approvals/approvals-index.js +75 -0
  53. package/dist/admin/surfaces/approvals/approvals-index.js.map +1 -0
  54. package/dist/admin/surfaces/audiences/audiences-data.d.ts +107 -0
  55. package/dist/admin/surfaces/audiences/audiences-data.d.ts.map +1 -0
  56. package/dist/admin/surfaces/audiences/audiences-data.js +216 -0
  57. package/dist/admin/surfaces/audiences/audiences-data.js.map +1 -0
  58. package/dist/admin/surfaces/audiences/audiences-detail.d.ts +3 -0
  59. package/dist/admin/surfaces/audiences/audiences-detail.d.ts.map +1 -0
  60. package/dist/admin/surfaces/audiences/audiences-detail.js +78 -0
  61. package/dist/admin/surfaces/audiences/audiences-detail.js.map +1 -0
  62. package/dist/admin/surfaces/audiences/audiences-edit.d.ts +3 -0
  63. package/dist/admin/surfaces/audiences/audiences-edit.d.ts.map +1 -0
  64. package/dist/admin/surfaces/audiences/audiences-edit.js +55 -0
  65. package/dist/admin/surfaces/audiences/audiences-edit.js.map +1 -0
  66. package/dist/admin/surfaces/audiences/audiences-fields.d.ts +3 -0
  67. package/dist/admin/surfaces/audiences/audiences-fields.d.ts.map +1 -0
  68. package/dist/admin/surfaces/audiences/audiences-fields.js +56 -0
  69. package/dist/admin/surfaces/audiences/audiences-fields.js.map +1 -0
  70. package/dist/admin/surfaces/audiences/audiences-list.d.ts +3 -0
  71. package/dist/admin/surfaces/audiences/audiences-list.d.ts.map +1 -0
  72. package/dist/admin/surfaces/audiences/audiences-list.js +50 -0
  73. package/dist/admin/surfaces/audiences/audiences-list.js.map +1 -0
  74. package/dist/admin/surfaces/audiences/audiences-new.d.ts +3 -0
  75. package/dist/admin/surfaces/audiences/audiences-new.d.ts.map +1 -0
  76. package/dist/admin/surfaces/audiences/audiences-new.js +54 -0
  77. package/dist/admin/surfaces/audiences/audiences-new.js.map +1 -0
  78. package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts +3 -0
  79. package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts.map +1 -0
  80. package/dist/admin/surfaces/audiences/audiences-preview-tokens.js +123 -0
  81. package/dist/admin/surfaces/audiences/audiences-preview-tokens.js.map +1 -0
  82. package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts +3 -0
  83. package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts.map +1 -0
  84. package/dist/admin/surfaces/audiences/audiences-selfid-widget.js +50 -0
  85. package/dist/admin/surfaces/audiences/audiences-selfid-widget.js.map +1 -0
  86. package/dist/admin/surfaces/audiences/audiences-test.d.ts +3 -0
  87. package/dist/admin/surfaces/audiences/audiences-test.d.ts.map +1 -0
  88. package/dist/admin/surfaces/audiences/audiences-test.js +39 -0
  89. package/dist/admin/surfaces/audiences/audiences-test.js.map +1 -0
  90. package/dist/admin/surfaces/audiences/states.d.ts +10 -0
  91. package/dist/admin/surfaces/audiences/states.d.ts.map +1 -0
  92. package/dist/admin/surfaces/audiences/states.js +11 -0
  93. package/dist/admin/surfaces/audiences/states.js.map +1 -0
  94. package/dist/admin/surfaces/changesets/changesets-data.d.ts +35 -0
  95. package/dist/admin/surfaces/changesets/changesets-data.d.ts.map +1 -0
  96. package/dist/admin/surfaces/changesets/changesets-data.js +151 -0
  97. package/dist/admin/surfaces/changesets/changesets-data.js.map +1 -0
  98. package/dist/admin/surfaces/changesets/changesets-detail.d.ts +3 -0
  99. package/dist/admin/surfaces/changesets/changesets-detail.d.ts.map +1 -0
  100. package/dist/admin/surfaces/changesets/changesets-detail.js +84 -0
  101. package/dist/admin/surfaces/changesets/changesets-detail.js.map +1 -0
  102. package/dist/admin/surfaces/changesets/changesets-index.d.ts +3 -0
  103. package/dist/admin/surfaces/changesets/changesets-index.d.ts.map +1 -0
  104. package/dist/admin/surfaces/changesets/changesets-index.js +62 -0
  105. package/dist/admin/surfaces/changesets/changesets-index.js.map +1 -0
  106. package/dist/admin/surfaces/comments/comment-moderation.d.ts +18 -0
  107. package/dist/admin/surfaces/comments/comment-moderation.d.ts.map +1 -0
  108. package/dist/admin/surfaces/comments/comment-moderation.js +36 -0
  109. package/dist/admin/surfaces/comments/comment-moderation.js.map +1 -0
  110. package/dist/admin/surfaces/comments/comments-data.d.ts +23 -0
  111. package/dist/admin/surfaces/comments/comments-data.d.ts.map +1 -0
  112. package/dist/admin/surfaces/comments/comments-data.js +81 -0
  113. package/dist/admin/surfaces/comments/comments-data.js.map +1 -0
  114. package/dist/admin/surfaces/comments/comments-index.d.ts +3 -0
  115. package/dist/admin/surfaces/comments/comments-index.d.ts.map +1 -0
  116. package/dist/admin/surfaces/comments/comments-index.js +73 -0
  117. package/dist/admin/surfaces/comments/comments-index.js.map +1 -0
  118. package/dist/admin/surfaces/content/content-edit.d.ts +3 -0
  119. package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -0
  120. package/dist/admin/surfaces/content/content-edit.js +321 -0
  121. package/dist/admin/surfaces/content/content-edit.js.map +1 -0
  122. package/dist/admin/surfaces/content/content-index.d.ts +3 -0
  123. package/dist/admin/surfaces/content/content-index.d.ts.map +1 -0
  124. package/dist/admin/surfaces/content/content-index.js +21 -0
  125. package/dist/admin/surfaces/content/content-index.js.map +1 -0
  126. package/dist/admin/surfaces/content/content-list.d.ts +3 -0
  127. package/dist/admin/surfaces/content/content-list.d.ts.map +1 -0
  128. package/dist/admin/surfaces/content/content-list.js +70 -0
  129. package/dist/admin/surfaces/content/content-list.js.map +1 -0
  130. package/dist/admin/surfaces/content/content-new.d.ts +3 -0
  131. package/dist/admin/surfaces/content/content-new.d.ts.map +1 -0
  132. package/dist/admin/surfaces/content/content-new.js +109 -0
  133. package/dist/admin/surfaces/content/content-new.js.map +1 -0
  134. package/dist/admin/surfaces/content/content-translation-bar.d.ts +12 -0
  135. package/dist/admin/surfaces/content/content-translation-bar.d.ts.map +1 -0
  136. package/dist/admin/surfaces/content/content-translation-bar.js +65 -0
  137. package/dist/admin/surfaces/content/content-translation-bar.js.map +1 -0
  138. package/dist/admin/surfaces/content/runtime-content-types.d.ts +41 -0
  139. package/dist/admin/surfaces/content/runtime-content-types.d.ts.map +1 -0
  140. package/dist/admin/surfaces/content/runtime-content-types.js +51 -0
  141. package/dist/admin/surfaces/content/runtime-content-types.js.map +1 -0
  142. package/dist/admin/surfaces/contentTree/content-tree.d.ts +3 -0
  143. package/dist/admin/surfaces/contentTree/content-tree.d.ts.map +1 -0
  144. package/dist/admin/surfaces/contentTree/content-tree.js +179 -0
  145. package/dist/admin/surfaces/contentTree/content-tree.js.map +1 -0
  146. package/dist/admin/surfaces/contentTree/move-to-picker.d.ts +12 -0
  147. package/dist/admin/surfaces/contentTree/move-to-picker.d.ts.map +1 -0
  148. package/dist/admin/surfaces/contentTree/move-to-picker.js +77 -0
  149. package/dist/admin/surfaces/contentTree/move-to-picker.js.map +1 -0
  150. package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts +3 -0
  151. package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts.map +1 -0
  152. package/dist/admin/surfaces/contentTypes/content-types-designer.js +260 -0
  153. package/dist/admin/surfaces/contentTypes/content-types-designer.js.map +1 -0
  154. package/dist/admin/surfaces/contentTypes/content-types-list.d.ts +3 -0
  155. package/dist/admin/surfaces/contentTypes/content-types-list.d.ts.map +1 -0
  156. package/dist/admin/surfaces/contentTypes/content-types-list.js +69 -0
  157. package/dist/admin/surfaces/contentTypes/content-types-list.js.map +1 -0
  158. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts +3 -0
  159. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -0
  160. package/dist/admin/surfaces/dashboard/dashboard-index.js +100 -0
  161. package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -0
  162. package/dist/admin/surfaces/experiments/experiments-data.d.ts +12 -0
  163. package/dist/admin/surfaces/experiments/experiments-data.d.ts.map +1 -0
  164. package/dist/admin/surfaces/experiments/experiments-data.js +89 -0
  165. package/dist/admin/surfaces/experiments/experiments-data.js.map +1 -0
  166. package/dist/admin/surfaces/experiments/experiments-detail.d.ts +3 -0
  167. package/dist/admin/surfaces/experiments/experiments-detail.d.ts.map +1 -0
  168. package/dist/admin/surfaces/experiments/experiments-detail.js +87 -0
  169. package/dist/admin/surfaces/experiments/experiments-detail.js.map +1 -0
  170. package/dist/admin/surfaces/experiments/experiments-list.d.ts +3 -0
  171. package/dist/admin/surfaces/experiments/experiments-list.d.ts.map +1 -0
  172. package/dist/admin/surfaces/experiments/experiments-list.js +37 -0
  173. package/dist/admin/surfaces/experiments/experiments-list.js.map +1 -0
  174. package/dist/admin/surfaces/experiments/experiments-new.d.ts +3 -0
  175. package/dist/admin/surfaces/experiments/experiments-new.d.ts.map +1 -0
  176. package/dist/admin/surfaces/experiments/experiments-new.js +33 -0
  177. package/dist/admin/surfaces/experiments/experiments-new.js.map +1 -0
  178. package/dist/admin/surfaces/experiments/states.d.ts +10 -0
  179. package/dist/admin/surfaces/experiments/states.d.ts.map +1 -0
  180. package/dist/admin/surfaces/experiments/states.js +11 -0
  181. package/dist/admin/surfaces/experiments/states.js.map +1 -0
  182. package/dist/admin/surfaces/extensions/extensions-data.d.ts +59 -0
  183. package/dist/admin/surfaces/extensions/extensions-data.d.ts.map +1 -0
  184. package/dist/admin/surfaces/extensions/extensions-data.js +71 -0
  185. package/dist/admin/surfaces/extensions/extensions-data.js.map +1 -0
  186. package/dist/admin/surfaces/extensions/extensions-import-export.d.ts +3 -0
  187. package/dist/admin/surfaces/extensions/extensions-import-export.d.ts.map +1 -0
  188. package/dist/admin/surfaces/extensions/extensions-import-export.js +77 -0
  189. package/dist/admin/surfaces/extensions/extensions-import-export.js.map +1 -0
  190. package/dist/admin/surfaces/extensions/extensions-list.d.ts +3 -0
  191. package/dist/admin/surfaces/extensions/extensions-list.d.ts.map +1 -0
  192. package/dist/admin/surfaces/extensions/extensions-list.js +106 -0
  193. package/dist/admin/surfaces/extensions/extensions-list.js.map +1 -0
  194. package/dist/admin/surfaces/extensions/form-modal.d.ts +17 -0
  195. package/dist/admin/surfaces/extensions/form-modal.d.ts.map +1 -0
  196. package/dist/admin/surfaces/extensions/form-modal.js +27 -0
  197. package/dist/admin/surfaces/extensions/form-modal.js.map +1 -0
  198. package/dist/admin/surfaces/feeds/feed-editor.d.ts +8 -0
  199. package/dist/admin/surfaces/feeds/feed-editor.d.ts.map +1 -0
  200. package/dist/admin/surfaces/feeds/feed-editor.js +120 -0
  201. package/dist/admin/surfaces/feeds/feed-editor.js.map +1 -0
  202. package/dist/admin/surfaces/feeds/feeds-data.d.ts +35 -0
  203. package/dist/admin/surfaces/feeds/feeds-data.d.ts.map +1 -0
  204. package/dist/admin/surfaces/feeds/feeds-data.js +81 -0
  205. package/dist/admin/surfaces/feeds/feeds-data.js.map +1 -0
  206. package/dist/admin/surfaces/feeds/feeds-detail.d.ts +3 -0
  207. package/dist/admin/surfaces/feeds/feeds-detail.d.ts.map +1 -0
  208. package/dist/admin/surfaces/feeds/feeds-detail.js +36 -0
  209. package/dist/admin/surfaces/feeds/feeds-detail.js.map +1 -0
  210. package/dist/admin/surfaces/feeds/feeds-list.d.ts +3 -0
  211. package/dist/admin/surfaces/feeds/feeds-list.d.ts.map +1 -0
  212. package/dist/admin/surfaces/feeds/feeds-list.js +49 -0
  213. package/dist/admin/surfaces/feeds/feeds-list.js.map +1 -0
  214. package/dist/admin/surfaces/feeds/feeds-new.d.ts +3 -0
  215. package/dist/admin/surfaces/feeds/feeds-new.d.ts.map +1 -0
  216. package/dist/admin/surfaces/feeds/feeds-new.js +7 -0
  217. package/dist/admin/surfaces/feeds/feeds-new.js.map +1 -0
  218. package/dist/admin/surfaces/forms/form-editor.d.ts +5 -0
  219. package/dist/admin/surfaces/forms/form-editor.d.ts.map +1 -0
  220. package/dist/admin/surfaces/forms/form-editor.js +59 -0
  221. package/dist/admin/surfaces/forms/form-editor.js.map +1 -0
  222. package/dist/admin/surfaces/forms/forms-data.d.ts +52 -0
  223. package/dist/admin/surfaces/forms/forms-data.d.ts.map +1 -0
  224. package/dist/admin/surfaces/forms/forms-data.js +106 -0
  225. package/dist/admin/surfaces/forms/forms-data.js.map +1 -0
  226. package/dist/admin/surfaces/forms/forms-edit.d.ts +3 -0
  227. package/dist/admin/surfaces/forms/forms-edit.d.ts.map +1 -0
  228. package/dist/admin/surfaces/forms/forms-edit.js +40 -0
  229. package/dist/admin/surfaces/forms/forms-edit.js.map +1 -0
  230. package/dist/admin/surfaces/forms/forms-list.d.ts +3 -0
  231. package/dist/admin/surfaces/forms/forms-list.d.ts.map +1 -0
  232. package/dist/admin/surfaces/forms/forms-list.js +53 -0
  233. package/dist/admin/surfaces/forms/forms-list.js.map +1 -0
  234. package/dist/admin/surfaces/forms/forms-new.d.ts +3 -0
  235. package/dist/admin/surfaces/forms/forms-new.d.ts.map +1 -0
  236. package/dist/admin/surfaces/forms/forms-new.js +7 -0
  237. package/dist/admin/surfaces/forms/forms-new.js.map +1 -0
  238. package/dist/admin/surfaces/forms/forms-submissions.d.ts +3 -0
  239. package/dist/admin/surfaces/forms/forms-submissions.d.ts.map +1 -0
  240. package/dist/admin/surfaces/forms/forms-submissions.js +125 -0
  241. package/dist/admin/surfaces/forms/forms-submissions.js.map +1 -0
  242. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts +8 -0
  243. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -0
  244. package/dist/admin/surfaces/layouts/layout-editor-client.js +77 -0
  245. package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -0
  246. package/dist/admin/surfaces/layouts/layouts-data.d.ts +53 -0
  247. package/dist/admin/surfaces/layouts/layouts-data.d.ts.map +1 -0
  248. package/dist/admin/surfaces/layouts/layouts-data.js +61 -0
  249. package/dist/admin/surfaces/layouts/layouts-data.js.map +1 -0
  250. package/dist/admin/surfaces/layouts/layouts-detail.d.ts +3 -0
  251. package/dist/admin/surfaces/layouts/layouts-detail.d.ts.map +1 -0
  252. package/dist/admin/surfaces/layouts/layouts-detail.js +38 -0
  253. package/dist/admin/surfaces/layouts/layouts-detail.js.map +1 -0
  254. package/dist/admin/surfaces/layouts/layouts-list.d.ts +3 -0
  255. package/dist/admin/surfaces/layouts/layouts-list.d.ts.map +1 -0
  256. package/dist/admin/surfaces/layouts/layouts-list.js +62 -0
  257. package/dist/admin/surfaces/layouts/layouts-list.js.map +1 -0
  258. package/dist/admin/surfaces/layouts/layouts-new.d.ts +3 -0
  259. package/dist/admin/surfaces/layouts/layouts-new.d.ts.map +1 -0
  260. package/dist/admin/surfaces/layouts/layouts-new.js +7 -0
  261. package/dist/admin/surfaces/layouts/layouts-new.js.map +1 -0
  262. package/dist/admin/surfaces/login.d.ts +20 -0
  263. package/dist/admin/surfaces/login.d.ts.map +1 -0
  264. package/dist/admin/surfaces/login.js +93 -0
  265. package/dist/admin/surfaces/login.js.map +1 -0
  266. package/dist/admin/surfaces/media/library.d.ts +3 -0
  267. package/dist/admin/surfaces/media/library.d.ts.map +1 -0
  268. package/dist/admin/surfaces/media/library.js +7 -0
  269. package/dist/admin/surfaces/media/library.js.map +1 -0
  270. package/dist/admin/surfaces/media/media-client.d.ts +4 -0
  271. package/dist/admin/surfaces/media/media-client.d.ts.map +1 -0
  272. package/dist/admin/surfaces/media/media-client.js +203 -0
  273. package/dist/admin/surfaces/media/media-client.js.map +1 -0
  274. package/dist/admin/surfaces/media/upload.d.ts +3 -0
  275. package/dist/admin/surfaces/media/upload.d.ts.map +1 -0
  276. package/dist/admin/surfaces/media/upload.js +7 -0
  277. package/dist/admin/surfaces/media/upload.js.map +1 -0
  278. package/dist/admin/surfaces/plugins/plugins-data.d.ts +37 -0
  279. package/dist/admin/surfaces/plugins/plugins-data.d.ts.map +1 -0
  280. package/dist/admin/surfaces/plugins/plugins-data.js +31 -0
  281. package/dist/admin/surfaces/plugins/plugins-data.js.map +1 -0
  282. package/dist/admin/surfaces/plugins/plugins-index.d.ts +3 -0
  283. package/dist/admin/surfaces/plugins/plugins-index.d.ts.map +1 -0
  284. package/dist/admin/surfaces/plugins/plugins-index.js +72 -0
  285. package/dist/admin/surfaces/plugins/plugins-index.js.map +1 -0
  286. package/dist/admin/surfaces/search/search-index.d.ts +3 -0
  287. package/dist/admin/surfaces/search/search-index.d.ts.map +1 -0
  288. package/dist/admin/surfaces/search/search-index.js +76 -0
  289. package/dist/admin/surfaces/search/search-index.js.map +1 -0
  290. package/dist/admin/surfaces/settings/admin-features.d.ts +3 -0
  291. package/dist/admin/surfaces/settings/admin-features.d.ts.map +1 -0
  292. package/dist/admin/surfaces/settings/admin-features.js +138 -0
  293. package/dist/admin/surfaces/settings/admin-features.js.map +1 -0
  294. package/dist/admin/surfaces/settings/settings-ax.d.ts +3 -0
  295. package/dist/admin/surfaces/settings/settings-ax.d.ts.map +1 -0
  296. package/dist/admin/surfaces/settings/settings-ax.js +63 -0
  297. package/dist/admin/surfaces/settings/settings-ax.js.map +1 -0
  298. package/dist/admin/surfaces/settings/settings-cache.d.ts +3 -0
  299. package/dist/admin/surfaces/settings/settings-cache.d.ts.map +1 -0
  300. package/dist/admin/surfaces/settings/settings-cache.js +64 -0
  301. package/dist/admin/surfaces/settings/settings-cache.js.map +1 -0
  302. package/dist/admin/surfaces/settings/settings-email.d.ts +3 -0
  303. package/dist/admin/surfaces/settings/settings-email.d.ts.map +1 -0
  304. package/dist/admin/surfaces/settings/settings-email.js +89 -0
  305. package/dist/admin/surfaces/settings/settings-email.js.map +1 -0
  306. package/dist/admin/surfaces/settings/settings-general.d.ts +3 -0
  307. package/dist/admin/surfaces/settings/settings-general.d.ts.map +1 -0
  308. package/dist/admin/surfaces/settings/settings-general.js +91 -0
  309. package/dist/admin/surfaces/settings/settings-general.js.map +1 -0
  310. package/dist/admin/surfaces/settings/settings-site.d.ts +3 -0
  311. package/dist/admin/surfaces/settings/settings-site.d.ts.map +1 -0
  312. package/dist/admin/surfaces/settings/settings-site.js +14 -0
  313. package/dist/admin/surfaces/settings/settings-site.js.map +1 -0
  314. package/dist/admin/surfaces/settings/settings-sites.d.ts +3 -0
  315. package/dist/admin/surfaces/settings/settings-sites.d.ts.map +1 -0
  316. package/dist/admin/surfaces/settings/settings-sites.js +134 -0
  317. package/dist/admin/surfaces/settings/settings-sites.js.map +1 -0
  318. package/dist/admin/surfaces/settings/states.d.ts +33 -0
  319. package/dist/admin/surfaces/settings/states.d.ts.map +1 -0
  320. package/dist/admin/surfaces/settings/states.js +33 -0
  321. package/dist/admin/surfaces/settings/states.js.map +1 -0
  322. package/dist/admin/surfaces/taxonomy/categories.d.ts +3 -0
  323. package/dist/admin/surfaces/taxonomy/categories.d.ts.map +1 -0
  324. package/dist/admin/surfaces/taxonomy/categories.js +162 -0
  325. package/dist/admin/surfaces/taxonomy/categories.js.map +1 -0
  326. package/dist/admin/surfaces/taxonomy/tags.d.ts +3 -0
  327. package/dist/admin/surfaces/taxonomy/tags.d.ts.map +1 -0
  328. package/dist/admin/surfaces/taxonomy/tags.js +112 -0
  329. package/dist/admin/surfaces/taxonomy/tags.js.map +1 -0
  330. package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts +39 -0
  331. package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts.map +1 -0
  332. package/dist/admin/surfaces/taxonomy/taxonomy-ui.js +66 -0
  333. package/dist/admin/surfaces/taxonomy/taxonomy-ui.js.map +1 -0
  334. package/dist/admin/surfaces/translations/states.d.ts +10 -0
  335. package/dist/admin/surfaces/translations/states.d.ts.map +1 -0
  336. package/dist/admin/surfaces/translations/states.js +11 -0
  337. package/dist/admin/surfaces/translations/states.js.map +1 -0
  338. package/dist/admin/surfaces/translations/translations-index.d.ts +3 -0
  339. package/dist/admin/surfaces/translations/translations-index.d.ts.map +1 -0
  340. package/dist/admin/surfaces/translations/translations-index.js +99 -0
  341. package/dist/admin/surfaces/translations/translations-index.js.map +1 -0
  342. package/dist/admin/surfaces/trash/trash-index.d.ts +3 -0
  343. package/dist/admin/surfaces/trash/trash-index.d.ts.map +1 -0
  344. package/dist/admin/surfaces/trash/trash-index.js +96 -0
  345. package/dist/admin/surfaces/trash/trash-index.js.map +1 -0
  346. package/dist/admin/surfaces/users/users-data.d.ts +51 -0
  347. package/dist/admin/surfaces/users/users-data.d.ts.map +1 -0
  348. package/dist/admin/surfaces/users/users-data.js +60 -0
  349. package/dist/admin/surfaces/users/users-data.js.map +1 -0
  350. package/dist/admin/surfaces/users/users-detail.d.ts +3 -0
  351. package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -0
  352. package/dist/admin/surfaces/users/users-detail.js +148 -0
  353. package/dist/admin/surfaces/users/users-detail.js.map +1 -0
  354. package/dist/admin/surfaces/users/users-groups.d.ts +3 -0
  355. package/dist/admin/surfaces/users/users-groups.d.ts.map +1 -0
  356. package/dist/admin/surfaces/users/users-groups.js +136 -0
  357. package/dist/admin/surfaces/users/users-groups.js.map +1 -0
  358. package/dist/admin/surfaces/users/users-list.d.ts +3 -0
  359. package/dist/admin/surfaces/users/users-list.d.ts.map +1 -0
  360. package/dist/admin/surfaces/users/users-list.js +119 -0
  361. package/dist/admin/surfaces/users/users-list.js.map +1 -0
  362. package/dist/admin/surfaces/users/users-new.d.ts +3 -0
  363. package/dist/admin/surfaces/users/users-new.d.ts.map +1 -0
  364. package/dist/admin/surfaces/users/users-new.js +78 -0
  365. package/dist/admin/surfaces/users/users-new.js.map +1 -0
  366. package/dist/admin/surfaces/users/users-permissions.d.ts +3 -0
  367. package/dist/admin/surfaces/users/users-permissions.d.ts.map +1 -0
  368. package/dist/admin/surfaces/users/users-permissions.js +135 -0
  369. package/dist/admin/surfaces/users/users-permissions.js.map +1 -0
  370. package/dist/admin/surfaces/webServices/api-keys.d.ts +3 -0
  371. package/dist/admin/surfaces/webServices/api-keys.d.ts.map +1 -0
  372. package/dist/admin/surfaces/webServices/api-keys.js +65 -0
  373. package/dist/admin/surfaces/webServices/api-keys.js.map +1 -0
  374. package/dist/admin/surfaces/webServices/oauth.d.ts +3 -0
  375. package/dist/admin/surfaces/webServices/oauth.d.ts.map +1 -0
  376. package/dist/admin/surfaces/webServices/oauth.js +75 -0
  377. package/dist/admin/surfaces/webServices/oauth.js.map +1 -0
  378. package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts +8 -0
  379. package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts.map +1 -0
  380. package/dist/admin/surfaces/webServices/secret-reveal-modal.js +30 -0
  381. package/dist/admin/surfaces/webServices/secret-reveal-modal.js.map +1 -0
  382. package/dist/admin/surfaces/webServices/web-services-data.d.ts +38 -0
  383. package/dist/admin/surfaces/webServices/web-services-data.d.ts.map +1 -0
  384. package/dist/admin/surfaces/webServices/web-services-data.js +52 -0
  385. package/dist/admin/surfaces/webServices/web-services-data.js.map +1 -0
  386. package/dist/api/admin-features-routes.d.ts +10 -0
  387. package/dist/api/admin-features-routes.d.ts.map +1 -0
  388. package/dist/api/admin-features-routes.js +61 -0
  389. package/dist/api/admin-features-routes.js.map +1 -0
  390. package/dist/api/graphql/resolvers.d.ts +6 -6
  391. package/dist/api/index.d.ts.map +1 -1
  392. package/dist/api/index.js +2 -0
  393. package/dist/api/index.js.map +1 -1
  394. package/dist/config/define.d.ts +22 -1
  395. package/dist/config/define.d.ts.map +1 -1
  396. package/dist/config/define.js +44 -0
  397. package/dist/config/define.js.map +1 -1
  398. package/dist/config/parse.d.ts.map +1 -1
  399. package/dist/config/parse.js +8 -2
  400. package/dist/config/parse.js.map +1 -1
  401. package/dist/config/types.d.ts +60 -1
  402. package/dist/config/types.d.ts.map +1 -1
  403. package/dist/config/types.js +20 -1
  404. package/dist/config/types.js.map +1 -1
  405. package/dist/config/validate.d.ts.map +1 -1
  406. package/dist/config/validate.js +60 -0
  407. package/dist/config/validate.js.map +1 -1
  408. package/dist/db/admin-features-queries.d.ts +29 -0
  409. package/dist/db/admin-features-queries.d.ts.map +1 -0
  410. package/dist/db/admin-features-queries.js +46 -0
  411. package/dist/db/admin-features-queries.js.map +1 -0
  412. package/dist/db/analytics-queries.d.ts +2 -2
  413. package/dist/db/audit-queries.d.ts +3 -3
  414. package/dist/db/category-queries.d.ts +6 -6
  415. package/dist/db/changeset-audit-queries.d.ts +2 -2
  416. package/dist/db/changeset-queries.d.ts +8 -8
  417. package/dist/db/extension-queries.d.ts +17 -17
  418. package/dist/db/feed-queries.d.ts +6 -6
  419. package/dist/db/media-queries.d.ts +12 -12
  420. package/dist/db/site-admin-queries.d.ts +1 -1
  421. package/dist/db/site-queries.d.ts +3 -3
  422. package/dist/db/tag-queries.d.ts +4 -4
  423. package/dist/db/webhook-queries.d.ts +8 -8
  424. package/dist/db/workflow-queries.d.ts +5 -5
  425. package/dist/experiments/schema.d.ts +1 -1
  426. package/dist/host-client/index.d.ts +1 -0
  427. package/dist/host-client/index.d.ts.map +1 -1
  428. package/dist/host-client/index.js +4 -0
  429. package/dist/host-client/index.js.map +1 -1
  430. package/dist/host-client/json.d.ts +36 -0
  431. package/dist/host-client/json.d.ts.map +1 -0
  432. package/dist/host-client/json.js +106 -0
  433. package/dist/host-client/json.js.map +1 -0
  434. package/dist/layout/modules-extended.d.ts.map +1 -1
  435. package/dist/layout/modules-extended.js +9 -8
  436. package/dist/layout/modules-extended.js.map +1 -1
  437. package/dist/layout/modules.js +5 -5
  438. package/dist/layout/modules.js.map +1 -1
  439. package/dist/schema/base.d.ts +1 -1
  440. package/dist/scope/breadcrumbs.d.ts.map +1 -1
  441. package/dist/scope/breadcrumbs.js +4 -1
  442. package/dist/scope/breadcrumbs.js.map +1 -1
  443. package/dist/scope/head-foot.d.ts +12 -4
  444. package/dist/scope/head-foot.d.ts.map +1 -1
  445. package/dist/scope/head-foot.js +14 -6
  446. package/dist/scope/head-foot.js.map +1 -1
  447. package/dist/scope/jsonld.d.ts.map +1 -1
  448. package/dist/scope/jsonld.js +1 -11
  449. package/dist/scope/jsonld.js.map +1 -1
  450. package/dist/scope/kywi-form.d.ts.map +1 -1
  451. package/dist/scope/kywi-form.js +3 -3
  452. package/dist/scope/kywi-form.js.map +1 -1
  453. package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
  454. package/dist/scope/kywi-wizard-form.js +3 -3
  455. package/dist/scope/kywi-wizard-form.js.map +1 -1
  456. package/dist/scope/rendering.d.ts.map +1 -1
  457. package/dist/scope/rendering.js +7 -6
  458. package/dist/scope/rendering.js.map +1 -1
  459. package/dist/util/jsonld.d.ts +13 -0
  460. package/dist/util/jsonld.d.ts.map +1 -0
  461. package/dist/util/jsonld.js +15 -0
  462. package/dist/util/jsonld.js.map +1 -0
  463. package/dist/util/sanitize.d.ts +6 -0
  464. package/dist/util/sanitize.d.ts.map +1 -0
  465. package/dist/util/sanitize.js +156 -0
  466. package/dist/util/sanitize.js.map +1 -0
  467. package/package.json +12 -3
@@ -0,0 +1,51 @@
1
+ import { type KywiRole } from '../auth/roles.js';
2
+ import { type AdminSurface, type AdminConfigCeiling, type AdminFeatureFlags } from './registry.js';
3
+ export interface SurfaceMatch {
4
+ surface: AdminSurface;
5
+ params: Record<string, string>;
6
+ }
7
+ /**
8
+ * Match admin path segments (already stripped of the `/admin` prefix) to a
9
+ * surface. Empty segments (`/admin`) resolve to the index surface (dashboard).
10
+ * Config/flag/role gating is NOT applied here — see `resolveSurface` /
11
+ * `isSurfaceEnabled`. Returns null for no match.
12
+ */
13
+ export declare function matchSurface(segments: string[]): SurfaceMatch | null;
14
+ /**
15
+ * The precedence gate: a surface is enabled iff it passes the config ceiling
16
+ * (hard) AND the runtime flag (soft) AND the role check — each optional and
17
+ * skipped when its argument is omitted.
18
+ *
19
+ * effective = config ceiling ∧ runtime flag ∧ hasMinRole(role, surface.minRole)
20
+ *
21
+ * Config-off beats runtime/role-on; a runtime-off never resurrects a config-off.
22
+ * (Runtime flags param is the T16 placeholder; full storage lands in T16.)
23
+ */
24
+ export declare function isSurfaceEnabled(surface: AdminSurface, adminConfig?: AdminConfigCeiling, flags?: AdminFeatureFlags, role?: KywiRole): boolean;
25
+ /**
26
+ * Match segments then apply the CONFIG CEILING only (the hard, server-side gate
27
+ * used by the generated catch-all to decide a real 404). Role/flags are soft,
28
+ * client-side gates and are intentionally not applied here. Returns null when
29
+ * unmatched or config-disabled.
30
+ *
31
+ * The Admin Features surface is exempt from the area/surface-level config
32
+ * denylist (escape hatch) — only the master `enabled: false` switch can 404 it.
33
+ */
34
+ export declare function resolveSurface(segments: string[], adminConfig?: AdminConfigCeiling): SurfaceMatch | null;
35
+ /**
36
+ * The visibility gate used by BOTH the nav derivation (`buildAdminNav`) and the
37
+ * router's client-side surface gate (`KywiAdminApp`): identical to
38
+ * `isSurfaceEnabled` for every ordinary surface, but with the Admin Features
39
+ * escape-hatch special-case folded in (T16).
40
+ *
41
+ * For the Admin Features surface:
42
+ * - the config-area (`features.settings`) and runtime flags NEVER hide it;
43
+ * - the master switch (`enabled: false`) still does;
44
+ * - the role gate still applies AND it is only ever shown to a CONFIRMED
45
+ * superAdmin — when `role` is omitted (e.g. the legacy reference nav that
46
+ * passes no role) it is hidden, so it never leaks into a role-agnostic nav.
47
+ *
48
+ * For every other surface this delegates to the frozen `isSurfaceEnabled`.
49
+ */
50
+ export declare function isSurfaceVisible(surface: AdminSurface, adminConfig?: AdminConfigCeiling, flags?: AdminFeatureFlags, role?: KywiRole): boolean;
51
+ //# sourceMappingURL=surface-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface-matcher.d.ts","sourceRoot":"","sources":["../../src/admin/surface-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAA;AA+EtB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CASpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,WAAW,CAAC,EAAE,kBAAkB,EAChC,KAAK,CAAC,EAAE,iBAAiB,EACzB,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAeT;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CASxG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,WAAW,CAAC,EAAE,kBAAkB,EAChC,KAAK,CAAC,EAAE,iBAAiB,EACzB,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAOT"}
@@ -0,0 +1,181 @@
1
+ import { hasMinRole } from '../auth/roles.js';
2
+ import { ADMIN_SURFACES, ADMIN_INDEX_SURFACE_ID, } from './registry.js';
3
+ import { ADMIN_FEATURES_SURFACE_ID } from '../config/types.js';
4
+ function parsePattern(pattern) {
5
+ const raw = pattern.startsWith('/') ? pattern.slice(1) : pattern;
6
+ const parts = raw.split('/');
7
+ const catchAllIndex = parts.findIndex(p => p.startsWith('*'));
8
+ if (catchAllIndex >= 0) {
9
+ return { segments: parts.slice(0, catchAllIndex), catchAllParam: parts[catchAllIndex].slice(1) };
10
+ }
11
+ return { segments: parts };
12
+ }
13
+ function matchParsed(parsed, pathSegments) {
14
+ const { segments, catchAllParam } = parsed;
15
+ const params = {};
16
+ if (catchAllParam) {
17
+ if (pathSegments.length < segments.length)
18
+ return null;
19
+ for (let i = 0; i < segments.length; i++) {
20
+ const routeSeg = segments[i];
21
+ const pathSeg = pathSegments[i];
22
+ if (routeSeg.startsWith(':'))
23
+ params[routeSeg.slice(1)] = pathSeg;
24
+ else if (routeSeg !== pathSeg)
25
+ return null;
26
+ }
27
+ params[catchAllParam] = pathSegments.slice(segments.length).join('/');
28
+ return params;
29
+ }
30
+ if (segments.length !== pathSegments.length)
31
+ return null;
32
+ for (let i = 0; i < segments.length; i++) {
33
+ const routeSeg = segments[i];
34
+ const pathSeg = pathSegments[i];
35
+ if (routeSeg.startsWith(':'))
36
+ params[routeSeg.slice(1)] = pathSeg;
37
+ else if (routeSeg !== pathSeg)
38
+ return null;
39
+ }
40
+ return params;
41
+ }
42
+ /**
43
+ * Order two patterns most-specific → least-specific, matching
44
+ * `api/router.ts#compareRouteSpecificity`: (1) more fixed segments first;
45
+ * (2) at equal length a literal beats a `:param` left-to-right; (3) a
46
+ * non-catch-all beats an otherwise-equal catch-all.
47
+ */
48
+ function compareSpecificity(a, b) {
49
+ if (a.segments.length !== b.segments.length)
50
+ return b.segments.length - a.segments.length;
51
+ for (let i = 0; i < a.segments.length; i++) {
52
+ const aParam = a.segments[i].startsWith(':');
53
+ const bParam = b.segments[i].startsWith(':');
54
+ if (aParam !== bParam)
55
+ return aParam ? 1 : -1;
56
+ }
57
+ const aCatch = a.catchAllParam ? 1 : 0;
58
+ const bCatch = b.catchAllParam ? 1 : 0;
59
+ return aCatch - bCatch;
60
+ }
61
+ // Pre-parse + specificity-sort once at module load (surfaces are static).
62
+ const SORTED_PATTERNS = ADMIN_SURFACES.map(surface => {
63
+ const { segments, catchAllParam } = parsePattern(surface.pattern);
64
+ const parsed = { surface, segments };
65
+ if (catchAllParam !== undefined)
66
+ parsed.catchAllParam = catchAllParam;
67
+ return parsed;
68
+ }).sort(compareSpecificity);
69
+ const INDEX_SURFACE = ADMIN_SURFACES.find(s => s.id === ADMIN_INDEX_SURFACE_ID);
70
+ /**
71
+ * Match admin path segments (already stripped of the `/admin` prefix) to a
72
+ * surface. Empty segments (`/admin`) resolve to the index surface (dashboard).
73
+ * Config/flag/role gating is NOT applied here — see `resolveSurface` /
74
+ * `isSurfaceEnabled`. Returns null for no match.
75
+ */
76
+ export function matchSurface(segments) {
77
+ if (segments.length === 0) {
78
+ return INDEX_SURFACE ? { surface: INDEX_SURFACE, params: {} } : null;
79
+ }
80
+ for (const parsed of SORTED_PATTERNS) {
81
+ const params = matchParsed(parsed, segments);
82
+ if (params !== null)
83
+ return { surface: parsed.surface, params };
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * The precedence gate: a surface is enabled iff it passes the config ceiling
89
+ * (hard) AND the runtime flag (soft) AND the role check — each optional and
90
+ * skipped when its argument is omitted.
91
+ *
92
+ * effective = config ceiling ∧ runtime flag ∧ hasMinRole(role, surface.minRole)
93
+ *
94
+ * Config-off beats runtime/role-on; a runtime-off never resurrects a config-off.
95
+ * (Runtime flags param is the T16 placeholder; full storage lands in T16.)
96
+ */
97
+ export function isSurfaceEnabled(surface, adminConfig, flags, role) {
98
+ // config ceiling (hard)
99
+ if (adminConfig) {
100
+ if (adminConfig.enabled === false)
101
+ return false;
102
+ if (adminConfig.features && adminConfig.features[surface.area] === false)
103
+ return false;
104
+ if (adminConfig.disableSurfaces && adminConfig.disableSurfaces.includes(surface.id))
105
+ return false;
106
+ }
107
+ // runtime flag (soft) — missing entry = enabled
108
+ if (flags) {
109
+ if (flags[surface.id] === false)
110
+ return false;
111
+ if (flags[surface.area] === false)
112
+ return false;
113
+ }
114
+ // role
115
+ if (role !== undefined && !hasMinRole(role, surface.minRole))
116
+ return false;
117
+ return true;
118
+ }
119
+ /**
120
+ * The T16 self-lockout escape hatch (contract documented on
121
+ * `ADMIN_FEATURES_SURFACE_ID` in `config/types.ts`). The superAdmin "Admin
122
+ * Features" surface must stay reachable so a superAdmin can always undo a
123
+ * runtime lockout: disabling the `settings` AREA — at config time
124
+ * (`admin.features.settings = false`) OR at runtime (a `settings` /
125
+ * `settings.adminFeatures` flag = false) — must NOT hide THIS surface. Only the
126
+ * master switch (`admin.enabled = false`, i.e. a fully headless host) removes
127
+ * it, and the role gate (superAdmin) still applies. `admin.disableSurfaces`
128
+ * naming this id is already a config-validation hard error, so it need not be
129
+ * re-checked here.
130
+ */
131
+ function isAdminFeaturesSurface(surface) {
132
+ return surface.id === ADMIN_FEATURES_SURFACE_ID;
133
+ }
134
+ /**
135
+ * Match segments then apply the CONFIG CEILING only (the hard, server-side gate
136
+ * used by the generated catch-all to decide a real 404). Role/flags are soft,
137
+ * client-side gates and are intentionally not applied here. Returns null when
138
+ * unmatched or config-disabled.
139
+ *
140
+ * The Admin Features surface is exempt from the area/surface-level config
141
+ * denylist (escape hatch) — only the master `enabled: false` switch can 404 it.
142
+ */
143
+ export function resolveSurface(segments, adminConfig) {
144
+ const match = matchSurface(segments);
145
+ if (!match)
146
+ return null;
147
+ if (isAdminFeaturesSurface(match.surface)) {
148
+ if (adminConfig?.enabled === false)
149
+ return null;
150
+ return match;
151
+ }
152
+ if (!isSurfaceEnabled(match.surface, adminConfig))
153
+ return null;
154
+ return match;
155
+ }
156
+ /**
157
+ * The visibility gate used by BOTH the nav derivation (`buildAdminNav`) and the
158
+ * router's client-side surface gate (`KywiAdminApp`): identical to
159
+ * `isSurfaceEnabled` for every ordinary surface, but with the Admin Features
160
+ * escape-hatch special-case folded in (T16).
161
+ *
162
+ * For the Admin Features surface:
163
+ * - the config-area (`features.settings`) and runtime flags NEVER hide it;
164
+ * - the master switch (`enabled: false`) still does;
165
+ * - the role gate still applies AND it is only ever shown to a CONFIRMED
166
+ * superAdmin — when `role` is omitted (e.g. the legacy reference nav that
167
+ * passes no role) it is hidden, so it never leaks into a role-agnostic nav.
168
+ *
169
+ * For every other surface this delegates to the frozen `isSurfaceEnabled`.
170
+ */
171
+ export function isSurfaceVisible(surface, adminConfig, flags, role) {
172
+ if (isAdminFeaturesSurface(surface)) {
173
+ if (adminConfig?.enabled === false)
174
+ return false;
175
+ if (role === undefined)
176
+ return false;
177
+ return hasMinRole(role, surface.minRole);
178
+ }
179
+ return isSurfaceEnabled(surface, adminConfig, flags, role);
180
+ }
181
+ //# sourceMappingURL=surface-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface-matcher.js","sourceRoot":"","sources":["../../src/admin/surface-matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ApprovalQueueItem } from '../../approval-queue.js';
2
+ /** A queue item plus the content-type name needed to build the transition URL. */
3
+ export interface ApprovalItem extends ApprovalQueueItem {
4
+ contentTypeName: string;
5
+ }
6
+ /**
7
+ * Load the pending queue. Submitter ids and the site id are resolved to human
8
+ * names via the users/sites lists when available; a failed/forbidden lookup
9
+ * degrades to the raw id so the queue still renders. (The Site column value
10
+ * doubles as its filter key, so resolving it in place keeps the filter human.)
11
+ */
12
+ export declare function loadApprovals(): Promise<ApprovalItem[]>;
13
+ /** Approve a submission: version + publish it via the engine workflow. */
14
+ export declare function approveSubmission(contentTypeName: string, id: string, comment?: string): Promise<void>;
15
+ /** Reject a submission back to draft, recording the comment as the reason. */
16
+ export declare function rejectSubmission(contentTypeName: string, id: string, comment?: string): Promise<void>;
17
+ //# sourceMappingURL=approvals-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/approvals/approvals-data.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAehE,kFAAkF;AAClF,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD,eAAe,EAAE,MAAM,CAAA;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAoB7D;AAED,0EAA0E;AAC1E,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,8EAA8E;AAC9E,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Data helpers for the Approvals surface (`/admin/approvals`) — 0.2.0 T6
3
+ * migration.
4
+ *
5
+ * Ported verbatim from `apps/reference/app/admin/approvals/approvals-data.ts`;
6
+ * only the import source changes: `getJson`/`sendJson`/`loadUserDisplayMap`/
7
+ * `loadSiteDisplayMap` now come directly from `@kywi-software/core/host-client`
8
+ * instead of the app's `lib/admin-api` re-export shim.
9
+ *
10
+ * Pending submissions come from GET /content/pending (editor+). Approving from
11
+ * the queue publishes in one engine transition (approve route with
12
+ * `{ publish: true }`) so the content is both versioned and made live.
13
+ * Rejecting sends it back to draft with the comment as the reason.
14
+ */
15
+ import { getJson, sendJson, loadUserDisplayMap, loadSiteDisplayMap } from '../../../host-client/index.js';
16
+ /**
17
+ * Load the pending queue. Submitter ids and the site id are resolved to human
18
+ * names via the users/sites lists when available; a failed/forbidden lookup
19
+ * degrades to the raw id so the queue still renders. (The Site column value
20
+ * doubles as its filter key, so resolving it in place keeps the filter human.)
21
+ */
22
+ export async function loadApprovals() {
23
+ const [rows, userMap, siteMap] = await Promise.all([
24
+ getJson('/api/v1/content/pending'),
25
+ loadUserDisplayMap(),
26
+ loadSiteDisplayMap(),
27
+ ]);
28
+ return rows.map(row => {
29
+ const submitterId = row.updatedBy ?? row.createdBy ?? '';
30
+ return {
31
+ id: row.id,
32
+ title: row.title,
33
+ contentType: row.contentTypeName,
34
+ contentTypeName: row.contentTypeName,
35
+ siteId: siteMap.get(row.siteId) ?? row.siteId,
36
+ submittedBy: userMap.get(submitterId) ?? submitterId,
37
+ submittedAt: row.updatedAt ?? row.createdAt,
38
+ status: 'pending',
39
+ };
40
+ });
41
+ }
42
+ /** Approve a submission: version + publish it via the engine workflow. */
43
+ export async function approveSubmission(contentTypeName, id, comment) {
44
+ await sendJson(`/api/v1/content/${contentTypeName}/${id}/approve`, 'POST', {
45
+ publish: true,
46
+ ...(comment ? { comment } : {}),
47
+ });
48
+ }
49
+ /** Reject a submission back to draft, recording the comment as the reason. */
50
+ export async function rejectSubmission(contentTypeName, id, comment) {
51
+ await sendJson(`/api/v1/content/${contentTypeName}/${id}/reject`, 'POST', {
52
+ ...(comment ? { reason: comment } : {}),
53
+ });
54
+ }
55
+ //# sourceMappingURL=approvals-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals-data.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/approvals/approvals-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAqBzG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjD,OAAO,CAAsB,yBAAyB,CAAC;QACvD,kBAAkB,EAAE;QACpB,kBAAkB,EAAE;KACrB,CAAC,CAAA;IAEF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACpB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAA;QACxD,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,eAAe;YAChC,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM;YAC7C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,WAAW;YACpD,WAAW,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS;YAC3C,MAAM,EAAE,SAAkB;SAC3B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,eAAuB,EACvB,EAAU,EACV,OAAgB;IAEhB,MAAM,QAAQ,CAAC,mBAAmB,eAAe,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;QACzE,OAAO,EAAE,IAAI;QACb,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC,CAAA;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,eAAuB,EACvB,EAAU,EACV,OAAgB;IAEhB,MAAM,QAAQ,CAAC,mBAAmB,eAAe,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE;QACxE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SurfaceProps } from '../../registry.js';
2
+ export default function ApprovalsIndexSurface(_props: SurfaceProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=approvals-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals-index.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/approvals/approvals-index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAM,EAAE,YAAY,2CAsFjE"}
@@ -0,0 +1,75 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Approvals surface (`/admin/approvals`) — 0.2.0 T6 migration.
5
+ *
6
+ * Ported verbatim from `apps/reference/app/admin/approvals/page.tsx`. The
7
+ * `approvals-data.ts` sidecar moves alongside it (`./approvals-data.js`).
8
+ * `Loading`/`ErrorBox` → core `admin/primitives`; the outer
9
+ * `AdminShellWrapper` is dropped — chrome renders once around every surface
10
+ * via `KywiAdminApp`/`AdminChrome`. `ApprovalQueue` was already a core
11
+ * component (`admin/approval-queue.tsx`); only the local import path changes.
12
+ */
13
+ import { useCallback, useEffect, useMemo, useState } from 'react';
14
+ import { ApprovalQueue } from '../../approval-queue.js';
15
+ import { Loading, ErrorBox } from '../../primitives.js';
16
+ import { loadApprovals, approveSubmission, rejectSubmission } from './approvals-data.js';
17
+ export default function ApprovalsIndexSurface(_props) {
18
+ const [items, setItems] = useState([]);
19
+ const [loading, setLoading] = useState(true);
20
+ const [error, setError] = useState(null);
21
+ const [busy, setBusy] = useState(false);
22
+ const [notice, setNotice] = useState(null);
23
+ const load = useCallback(async () => {
24
+ setLoading(true);
25
+ setError(null);
26
+ try {
27
+ setItems(await loadApprovals());
28
+ }
29
+ catch (e) {
30
+ setError(e instanceof Error ? e.message : 'Failed to load approvals');
31
+ }
32
+ finally {
33
+ setLoading(false);
34
+ }
35
+ }, []);
36
+ useEffect(() => {
37
+ load();
38
+ }, [load]);
39
+ // Filter dropdowns are populated from the items actually in the queue.
40
+ const filterOptions = useMemo(() => {
41
+ const uniq = (values) => Array.from(new Set(values.filter(Boolean)));
42
+ return {
43
+ sites: uniq(items.map(i => i.siteId)),
44
+ contentTypes: uniq(items.map(i => i.contentType)),
45
+ submitters: uniq(items.map(i => i.submittedBy)),
46
+ };
47
+ }, [items]);
48
+ const runAction = useCallback(async (id, comment, verb) => {
49
+ const item = items.find(i => i.id === id);
50
+ if (!item)
51
+ return;
52
+ setBusy(true);
53
+ setError(null);
54
+ setNotice(null);
55
+ try {
56
+ if (verb === 'approve') {
57
+ await approveSubmission(item.contentTypeName, id, comment);
58
+ setNotice(`“${item.title}” approved and published.`);
59
+ }
60
+ else {
61
+ await rejectSubmission(item.contentTypeName, id, comment);
62
+ setNotice(`“${item.title}” rejected and returned to draft.`);
63
+ }
64
+ await load();
65
+ }
66
+ catch (e) {
67
+ setError(e instanceof Error ? e.message : `Failed to ${verb} submission`);
68
+ }
69
+ finally {
70
+ setBusy(false);
71
+ }
72
+ }, [items, load]);
73
+ return (_jsxs(_Fragment, { children: [notice && (_jsx("div", { className: "kywi-admin-callout kywi-admin-callout-success", role: "status", children: notice })), !loading && error && (_jsx("div", { className: "kywi-admin-callout kywi-admin-callout-danger", role: "alert", children: error })), loading ? (_jsx(Loading, { label: "Loading approvals\u2026" })) : error && items.length === 0 ? (_jsx(ErrorBox, { message: error, onRetry: load })) : (_jsx(ApprovalQueue, { items: items, filterOptions: filterOptions, busy: busy, onApprove: (id, comment) => runAction(id, comment, 'approve'), onReject: (id, comment) => runAction(id, comment, 'reject') }))] }));
74
+ }
75
+ //# sourceMappingURL=approvals-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals-index.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/approvals/approvals-index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Shared data helpers for the admin Personalization (Audiences) surface.
3
+ * All calls go through the DB-backed /api/v1 handler via adminFetch; the
4
+ * httpOnly session cookie is bridged to Authorization by middleware.
5
+ *
6
+ * Response envelope: success is `{ data }`, failure is `{ error: { message } }`.
7
+ *
8
+ * Ported verbatim from `apps/reference/app/admin/audiences/audiences-data.ts`
9
+ * (0.2.0 T11). The only wiring substitutions (plan §1.3) are the import
10
+ * rewires: the `adminFetch` + JSON layer now source from
11
+ * `@kywi-software/core/host-client`, and the admin/evaluator types resolve to
12
+ * core's own modules rather than the package self-reference.
13
+ */
14
+ import { getJson } from '../../../host-client/index.js';
15
+ import type { Audience, SelfIdField, SelfIdWidgetConfig } from '../../../audiences/types.js';
16
+ import type { EvaluationTrace } from '../../../audiences/evaluator/index.js';
17
+ import type { ConditionGroupInput } from '../../condition-builder.js';
18
+ import type { SignalOption } from '../../signal-options.js';
19
+ export { getJson };
20
+ export declare function loadAudiences(): Promise<Audience[]>;
21
+ /**
22
+ * Load the dynamic condition-builder signal catalogue (base signals + self-ID
23
+ * fields + registered adapter fields). Degrades gracefully: on failure the
24
+ * editor falls back to its built-in base catalogue.
25
+ */
26
+ export declare function loadSignalOptions(): Promise<SignalOption[] | undefined>;
27
+ /** Persist the audience list order (priorities) via the reorder API. */
28
+ export declare function reorderAudiences(orderedIds: string[]): Promise<void>;
29
+ export declare function loadAudience(id: string): Promise<Audience>;
30
+ /** Payload accepted by both create and update audience routes. */
31
+ export interface AudienceSubmitValues {
32
+ name?: string;
33
+ description?: string;
34
+ status?: 'active' | 'draft' | 'archived';
35
+ priority?: number;
36
+ scoreThreshold?: number | null;
37
+ conditionGroups?: ConditionGroupInput[];
38
+ }
39
+ export declare function createAudience(v: AudienceSubmitValues): Promise<Audience>;
40
+ export declare function updateAudience(id: string, v: AudienceSubmitValues): Promise<Audience>;
41
+ export declare function deleteAudience(id: string): Promise<void>;
42
+ /** Map a stored Audience into the editor's initialValues shape. */
43
+ export declare function toEditorValues(a: Audience): {
44
+ name: string;
45
+ description: string;
46
+ status: 'active' | 'draft' | 'archived';
47
+ priority: number;
48
+ scoreThreshold: number | null;
49
+ conditionGroups: ConditionGroupInput[];
50
+ };
51
+ /** Next free priority (max + 1), so the "New" default doesn't collide with the
52
+ * (siteId, priority) unique index. */
53
+ export declare function nextPriority(audiences: Audience[]): number;
54
+ /** One audience's match analytics, as returned by GET /audiences/analytics. */
55
+ export interface AudienceAnalytics {
56
+ audienceId: string;
57
+ matchCount: number;
58
+ matchRate: number;
59
+ uniqueVisitors: number;
60
+ period: 'day' | 'week' | 'month';
61
+ }
62
+ /**
63
+ * Load match analytics for a single audience. Returns null when the endpoint
64
+ * reports no record for it (e.g. it has never been evaluated).
65
+ */
66
+ export declare function loadAudienceAnalytics(id: string, period?: 'day' | 'week' | 'month'): Promise<AudienceAnalytics | null>;
67
+ export declare function loadSelfIdFields(): Promise<SelfIdField[]>;
68
+ export declare function saveSelfIdField(field: Omit<SelfIdField, 'siteId'>): Promise<SelfIdField>;
69
+ export declare function deleteSelfIdField(fieldId: string): Promise<void>;
70
+ /**
71
+ * Returns null when no config has been saved yet. The API returns 200 with a
72
+ * null body in that case (avoids a console 404); a legacy 404 is tolerated too.
73
+ */
74
+ export declare function loadWidgetConfig(): Promise<SelfIdWidgetConfig | null>;
75
+ export declare function saveWidgetConfig(config: Omit<SelfIdWidgetConfig, 'id' | 'siteId'>): Promise<SelfIdWidgetConfig>;
76
+ /** The flat signal bag the RuleTester hands back. */
77
+ export interface FlatRuleTesterSignals {
78
+ utmSource: string;
79
+ utmMedium: string;
80
+ utmCampaign: string;
81
+ utmTerm: string;
82
+ utmContent: string;
83
+ referrerRaw: string;
84
+ referrerDomain: string;
85
+ referrerSourceType: string;
86
+ pageViews: number;
87
+ totalPageViews: number;
88
+ timeOnSite: number;
89
+ entryPage: string;
90
+ pagesVisited: string[];
91
+ categoryScores: Record<string, number>;
92
+ behavioralTotalScore: number;
93
+ selfId: Record<string, string>;
94
+ visitorId: string;
95
+ isKnown: boolean;
96
+ }
97
+ /** POST to /audiences/evaluate and return the trace for this audience. */
98
+ export declare function evaluateAudience(audienceId: string, signals: FlatRuleTesterSignals): Promise<EvaluationTrace | null>;
99
+ export interface IssuedPreviewToken {
100
+ jti: string;
101
+ jwt: string;
102
+ audienceId: string;
103
+ expiresAt: number;
104
+ }
105
+ export declare function issuePreviewToken(audienceId: string): Promise<IssuedPreviewToken>;
106
+ export declare function revokePreviewToken(jti: string, audienceId: string): Promise<void>;
107
+ //# sourceMappingURL=audiences-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audiences-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/audiences/audiences-data.ts"],"names":[],"mappings":"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"}