@jini-ai/admin 0.4.2 → 0.4.4

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 (361) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +7 -0
  3. package/dist/agent-plugins/react/components/AgentPluginListPanel.d.ts +1 -1
  4. package/dist/agent-plugins/react/hooks/AgentPluginInspector.hooks.js +1 -1
  5. package/dist/agent-plugins/react/hooks/AgentPluginPanel.hooks.d.ts +1 -1
  6. package/dist/agent-plugins/react/hooks/AgentPluginsPage.hooks.d.ts +1 -1
  7. package/dist/agent-plugins/react/hooks/AgentPluginsPage.hooks.js +1 -1
  8. package/dist/agent-plugins/react/hooks/MarketplaceTab.hooks.d.ts +1 -1
  9. package/dist/agent-plugins/react/index.js +1 -1
  10. package/dist/agent-plugins/react/pages/AgentPluginsPage.d.ts +1 -1
  11. package/dist/agent-plugins/react/tabs/DownloadedTab.d.ts +1 -1
  12. package/dist/agent-plugins/react/tabs/InstalledTab.d.ts +1 -1
  13. package/dist/agent-plugins/react/tabs/MarketplaceTab.d.ts +1 -1
  14. package/dist/comments/adapters/http.d.ts +29 -0
  15. package/dist/comments/adapters/http.js +50 -0
  16. package/dist/comments/adapters/memory.d.ts +17 -0
  17. package/dist/comments/adapters/memory.js +61 -0
  18. package/dist/comments/comments.module.d.ts +73 -0
  19. package/dist/comments/comments.module.js +16 -0
  20. package/dist/comments/conformance/comments-api.conformance.d.ts +9 -0
  21. package/dist/comments/conformance/comments-api.conformance.js +63 -0
  22. package/dist/comments/controllers/comment-queue.controller.d.ts +48 -0
  23. package/dist/comments/controllers/comment-queue.controller.js +164 -0
  24. package/dist/comments/controllers/comment-settings.controller.d.ts +32 -0
  25. package/dist/comments/controllers/comment-settings.controller.js +77 -0
  26. package/dist/comments/controllers/comments.controller.d.ts +16 -0
  27. package/dist/comments/controllers/comments.controller.js +16 -0
  28. package/dist/comments/index.d.ts +13 -0
  29. package/dist/comments/index.js +8 -0
  30. package/dist/comments/messages.en.d.ts +54 -0
  31. package/dist/comments/messages.en.js +56 -0
  32. package/dist/comments/models.d.ts +22 -0
  33. package/dist/comments/models.js +2 -0
  34. package/dist/comments/ports.d.ts +14 -0
  35. package/dist/comments/ports.js +5 -0
  36. package/dist/comments/react/components/QueueSection.d.ts +30 -0
  37. package/dist/comments/react/components/QueueSection.js +57 -0
  38. package/dist/comments/react/components/SettingsSection.d.ts +14 -0
  39. package/dist/comments/react/components/SettingsSection.js +23 -0
  40. package/dist/comments/react/hooks/CommentsPage.hooks.d.ts +9 -0
  41. package/dist/comments/react/hooks/CommentsPage.hooks.js +10 -0
  42. package/dist/comments/react/hooks/CommentsPorts.hooks.d.ts +13 -0
  43. package/dist/comments/react/hooks/CommentsPorts.hooks.js +15 -0
  44. package/dist/comments/react/hooks/QueueSection.hooks.d.ts +62 -0
  45. package/dist/comments/react/hooks/QueueSection.hooks.js +57 -0
  46. package/dist/comments/react/hooks/SettingsSection.hooks.d.ts +12 -0
  47. package/dist/comments/react/hooks/SettingsSection.hooks.js +21 -0
  48. package/dist/comments/react/hooks/use-comment-queue.hooks.d.ts +34 -0
  49. package/dist/comments/react/hooks/use-comment-queue.hooks.js +47 -0
  50. package/dist/comments/react/hooks/use-comment-settings.hooks.d.ts +22 -0
  51. package/dist/comments/react/hooks/use-comment-settings.hooks.js +30 -0
  52. package/dist/comments/react/hooks/use-comments.hooks.d.ts +15 -0
  53. package/dist/comments/react/hooks/use-comments.hooks.js +20 -0
  54. package/dist/comments/react/index.d.ts +316 -0
  55. package/dist/comments/react/index.js +35 -0
  56. package/dist/comments/react/pages/CommentsPage.d.ts +12 -0
  57. package/dist/comments/react/pages/CommentsPage.js +15 -0
  58. package/dist/comments/rules.d.ts +140 -0
  59. package/dist/comments/rules.js +199 -0
  60. package/dist/core/index.d.ts +3 -1
  61. package/dist/core/index.js +1 -0
  62. package/dist/core/ledger-slice.d.ts +90 -0
  63. package/dist/core/ledger-slice.js +81 -0
  64. package/dist/core/ports/comments.d.ts +2 -0
  65. package/dist/core/ports/forms.d.ts +19 -7
  66. package/dist/core/ports/forms.js +4 -4
  67. package/dist/core/ports/index.d.ts +1 -1
  68. package/dist/core/ports/seo.d.ts +33 -6
  69. package/dist/core/react/bind-react.d.ts +46 -0
  70. package/dist/core/react/bind-react.js +28 -0
  71. package/dist/core/react/index.d.ts +3 -0
  72. package/dist/core/react/index.js +3 -0
  73. package/dist/core/react/use-controller.d.ts +16 -0
  74. package/dist/core/react/use-controller.js +18 -0
  75. package/dist/forms/adapters/http.d.ts +26 -0
  76. package/dist/forms/adapters/http.js +43 -0
  77. package/dist/forms/adapters/memory.d.ts +14 -0
  78. package/dist/forms/adapters/memory.js +77 -0
  79. package/dist/forms/conformance/forms-api.conformance.d.ts +17 -0
  80. package/dist/forms/conformance/forms-api.conformance.js +71 -0
  81. package/dist/forms/controllers/draft-store.d.ts +18 -0
  82. package/dist/forms/controllers/draft-store.js +17 -0
  83. package/dist/forms/controllers/field-attributes-dialog.controller.d.ts +37 -0
  84. package/dist/forms/controllers/field-attributes-dialog.controller.js +27 -0
  85. package/dist/forms/controllers/form-editor.controller.d.ts +36 -0
  86. package/dist/forms/controllers/form-editor.controller.js +22 -0
  87. package/dist/forms/controllers/form-fields-editor.controller.d.ts +20 -0
  88. package/dist/forms/controllers/form-fields-editor.controller.js +10 -0
  89. package/dist/forms/controllers/form-submission-detail.controller.d.ts +20 -0
  90. package/dist/forms/controllers/form-submission-detail.controller.js +10 -0
  91. package/dist/forms/controllers/form-submissions.controller.d.ts +25 -0
  92. package/dist/forms/controllers/form-submissions.controller.js +10 -0
  93. package/dist/forms/controllers/forms-list.controller.d.ts +22 -0
  94. package/dist/forms/controllers/forms-list.controller.js +10 -0
  95. package/dist/forms/forms.module.d.ts +138 -0
  96. package/dist/forms/forms.module.js +17 -0
  97. package/dist/forms/html-rules.d.ts +34 -0
  98. package/dist/forms/html-rules.js +34 -0
  99. package/dist/forms/index.d.ts +14 -0
  100. package/dist/forms/index.js +12 -0
  101. package/dist/forms/messages.en.d.ts +101 -0
  102. package/dist/forms/messages.en.js +105 -0
  103. package/dist/forms/models.d.ts +29 -0
  104. package/dist/forms/models.js +8 -0
  105. package/dist/forms/ports.d.ts +26 -0
  106. package/dist/forms/ports.js +6 -0
  107. package/dist/forms/react/components/FieldAttributesDialog.d.ts +14 -0
  108. package/dist/forms/react/components/FieldAttributesDialog.js +47 -0
  109. package/dist/forms/react/components/FormEditorFieldsBody.d.ts +28 -0
  110. package/dist/forms/react/components/FormEditorFieldsBody.js +24 -0
  111. package/dist/forms/react/components/FormEditorHeaderText.d.ts +7 -0
  112. package/dist/forms/react/components/FormEditorHeaderText.js +8 -0
  113. package/dist/forms/react/components/FormEditorMainPanel.d.ts +12 -0
  114. package/dist/forms/react/components/FormEditorMainPanel.js +13 -0
  115. package/dist/forms/react/components/FormEditorTabStrip.d.ts +13 -0
  116. package/dist/forms/react/components/FormEditorTabStrip.js +14 -0
  117. package/dist/forms/react/components/FormFieldsEditor.d.ts +13 -0
  118. package/dist/forms/react/components/FormFieldsEditor.js +39 -0
  119. package/dist/forms/react/components/FormSubmissionDate.d.ts +8 -0
  120. package/dist/forms/react/components/FormSubmissionDate.js +5 -0
  121. package/dist/forms/react/components/FormSubmissionDetail.d.ts +15 -0
  122. package/dist/forms/react/components/FormSubmissionDetail.js +30 -0
  123. package/dist/forms/react/components/FormSubmissions.d.ts +12 -0
  124. package/dist/forms/react/components/FormSubmissions.js +46 -0
  125. package/dist/forms/react/hooks/FormsPorts.hooks.d.ts +41 -0
  126. package/dist/forms/react/hooks/FormsPorts.hooks.js +16 -0
  127. package/dist/forms/react/hooks/forms-view.hooks.d.ts +117 -0
  128. package/dist/forms/react/hooks/forms-view.hooks.js +78 -0
  129. package/dist/forms/react/hooks/use-field-attributes-dialog.hooks.d.ts +31 -0
  130. package/dist/forms/react/hooks/use-field-attributes-dialog.hooks.js +22 -0
  131. package/dist/forms/react/hooks/use-form-editor.hooks.d.ts +118 -0
  132. package/dist/forms/react/hooks/use-form-editor.hooks.js +208 -0
  133. package/dist/forms/react/hooks/use-form-fields-editor.hooks.d.ts +34 -0
  134. package/dist/forms/react/hooks/use-form-fields-editor.hooks.js +36 -0
  135. package/dist/forms/react/hooks/use-form-submission-date.hooks.d.ts +12 -0
  136. package/dist/forms/react/hooks/use-form-submission-date.hooks.js +9 -0
  137. package/dist/forms/react/hooks/use-form-submission-detail.hooks.d.ts +68 -0
  138. package/dist/forms/react/hooks/use-form-submission-detail.hooks.js +81 -0
  139. package/dist/forms/react/hooks/use-form-submissions.hooks.d.ts +67 -0
  140. package/dist/forms/react/hooks/use-form-submissions.hooks.js +110 -0
  141. package/dist/forms/react/hooks/use-forms-list.hooks.d.ts +78 -0
  142. package/dist/forms/react/hooks/use-forms-list.hooks.js +103 -0
  143. package/dist/forms/react/index.d.ts +452 -0
  144. package/dist/forms/react/index.js +35 -0
  145. package/dist/forms/react/pages/FormEditor.d.ts +19 -0
  146. package/dist/forms/react/pages/FormEditor.js +40 -0
  147. package/dist/forms/react/pages/FormsList.d.ts +39 -0
  148. package/dist/forms/react/pages/FormsList.js +50 -0
  149. package/dist/forms/rules.d.ts +291 -0
  150. package/dist/forms/rules.js +338 -0
  151. package/dist/media/react/hooks/EditMediaPanel.hooks.js +1 -1
  152. package/dist/media/react/hooks/LibraryTab.hooks.d.ts +1 -1
  153. package/dist/media/react/hooks/LibraryTab.hooks.js +1 -1
  154. package/dist/media/react/hooks/MediaCard.hooks.js +6 -20
  155. package/dist/media/react/hooks/MediaGrid.hooks.d.ts +2 -2
  156. package/dist/media/react/hooks/MediaPage.hooks.d.ts +1 -1
  157. package/dist/media/react/hooks/MediaPage.hooks.js +1 -1
  158. package/dist/media/react/hooks/MediaPicker.hooks.js +1 -1
  159. package/dist/media/react/index.js +1 -1
  160. package/dist/media/react/tabs/LibraryTab.d.ts +1 -1
  161. package/dist/media/react/tabs/ProvidersTab.d.ts +1 -1
  162. package/dist/playground/react/components/Canvas.d.ts +1 -1
  163. package/dist/playground/react/hooks/Canvas.hooks.d.ts +1 -1
  164. package/dist/playground/react/hooks/Canvas.hooks.js +1 -1
  165. package/dist/playground/react/hooks/PlaygroundPage.hooks.d.ts +1 -1
  166. package/dist/playground/react/index.js +1 -1
  167. package/dist/playground/react/pages/PlaygroundPage.d.ts +1 -1
  168. package/dist/playground/react/tabs/CanvasTab.d.ts +1 -1
  169. package/dist/react/bind-react.d.ts +1 -45
  170. package/dist/react/bind-react.js +2 -27
  171. package/dist/react/components/ConfirmDialog/ConfirmDialog.d.ts +22 -5
  172. package/dist/react/components/ConfirmDialog/ConfirmDialog.hooks.d.ts +2 -2
  173. package/dist/react/components/ConfirmDialog/ConfirmDialog.hooks.js +17 -55
  174. package/dist/react/components/ConfirmDialog/ConfirmDialog.js +33 -70
  175. package/dist/react/components/RowMenu/RowMenu.hooks.js +14 -3
  176. package/dist/react/use-controller.d.ts +1 -15
  177. package/dist/react/use-controller.js +2 -17
  178. package/dist/redirects/adapters/http.d.ts +20 -0
  179. package/dist/redirects/adapters/http.js +31 -0
  180. package/dist/redirects/adapters/memory.d.ts +13 -0
  181. package/dist/redirects/adapters/memory.js +83 -0
  182. package/dist/redirects/conformance/redirects-api.conformance.d.ts +12 -0
  183. package/dist/redirects/conformance/redirects-api.conformance.js +66 -0
  184. package/dist/redirects/controllers/hit-count.controller.d.ts +14 -0
  185. package/dist/redirects/controllers/hit-count.controller.js +10 -0
  186. package/dist/redirects/controllers/import-redirects.controller.d.ts +28 -0
  187. package/dist/redirects/controllers/import-redirects.controller.js +29 -0
  188. package/dist/redirects/controllers/redirects.controller.d.ts +37 -0
  189. package/dist/redirects/controllers/redirects.controller.js +38 -0
  190. package/dist/redirects/index.d.ts +11 -0
  191. package/dist/redirects/index.js +10 -0
  192. package/dist/redirects/messages.en.d.ts +58 -0
  193. package/dist/redirects/messages.en.js +60 -0
  194. package/dist/redirects/models.d.ts +14 -0
  195. package/dist/redirects/models.js +2 -0
  196. package/dist/redirects/ports.d.ts +9 -0
  197. package/dist/redirects/ports.js +4 -0
  198. package/dist/redirects/react/components/HitCountCell.d.ts +19 -0
  199. package/dist/redirects/react/components/HitCountCell.js +19 -0
  200. package/dist/redirects/react/components/ImportRedirectsForm.d.ts +17 -0
  201. package/dist/redirects/react/components/ImportRedirectsForm.js +12 -0
  202. package/dist/redirects/react/hooks/RedirectsOptions.hooks.d.ts +27 -0
  203. package/dist/redirects/react/hooks/RedirectsOptions.hooks.js +15 -0
  204. package/dist/redirects/react/hooks/RedirectsPage.hooks.d.ts +50 -0
  205. package/dist/redirects/react/hooks/RedirectsPage.hooks.js +30 -0
  206. package/dist/redirects/react/hooks/RedirectsPorts.hooks.d.ts +10 -0
  207. package/dist/redirects/react/hooks/RedirectsPorts.hooks.js +11 -0
  208. package/dist/redirects/react/hooks/use-hit-count-cell.hooks.d.ts +19 -0
  209. package/dist/redirects/react/hooks/use-hit-count-cell.hooks.js +15 -0
  210. package/dist/redirects/react/hooks/use-import-redirects-form.hooks.d.ts +21 -0
  211. package/dist/redirects/react/hooks/use-import-redirects-form.hooks.js +25 -0
  212. package/dist/redirects/react/hooks/use-redirects.hooks.d.ts +34 -0
  213. package/dist/redirects/react/hooks/use-redirects.hooks.js +63 -0
  214. package/dist/redirects/react/hooks/wired.hooks.d.ts +55 -0
  215. package/dist/redirects/react/hooks/wired.hooks.js +31 -0
  216. package/dist/redirects/react/index.d.ts +324 -0
  217. package/dist/redirects/react/index.js +28 -0
  218. package/dist/redirects/react/pages/RedirectsPage.d.ts +15 -0
  219. package/dist/redirects/react/pages/RedirectsPage.js +20 -0
  220. package/dist/redirects/redirects.module.d.ts +77 -0
  221. package/dist/redirects/redirects.module.js +13 -0
  222. package/dist/redirects/rules.d.ts +131 -0
  223. package/dist/redirects/rules.js +134 -0
  224. package/dist/security/react/hooks/AccessTokensTab.hooks.d.ts +1 -1
  225. package/dist/security/react/hooks/AccessTokensTab.hooks.js +1 -1
  226. package/dist/security/react/hooks/RootKeyTab.hooks.d.ts +1 -1
  227. package/dist/security/react/hooks/RootKeyTab.hooks.js +1 -1
  228. package/dist/security/react/hooks/SecurityPage.hooks.d.ts +1 -1
  229. package/dist/security/react/index.js +1 -1
  230. package/dist/security/react/pages/SecurityPage.d.ts +1 -1
  231. package/dist/security/react/tabs/AccessTokensTab.d.ts +1 -1
  232. package/dist/security/react/tabs/RootKeyTab.d.ts +1 -1
  233. package/dist/seo/adapters/http.d.ts +31 -0
  234. package/dist/seo/adapters/http.js +37 -0
  235. package/dist/seo/adapters/memory.d.ts +28 -0
  236. package/dist/seo/adapters/memory.js +129 -0
  237. package/dist/seo/conformance/seo-api.conformance.d.ts +8 -0
  238. package/dist/seo/conformance/seo-api.conformance.js +44 -0
  239. package/dist/seo/controllers/entry-picker.controller.d.ts +21 -0
  240. package/dist/seo/controllers/entry-picker.controller.js +17 -0
  241. package/dist/seo/controllers/entry-section.controller.d.ts +20 -0
  242. package/dist/seo/controllers/entry-section.controller.js +7 -0
  243. package/dist/seo/controllers/media-ref.controller.d.ts +26 -0
  244. package/dist/seo/controllers/media-ref.controller.js +14 -0
  245. package/dist/seo/controllers/seo-entry.controller.d.ts +31 -0
  246. package/dist/seo/controllers/seo-entry.controller.js +52 -0
  247. package/dist/seo/controllers/seo.controller.d.ts +29 -0
  248. package/dist/seo/controllers/seo.controller.js +50 -0
  249. package/dist/seo/controllers/sitemap.controller.d.ts +25 -0
  250. package/dist/seo/controllers/sitemap.controller.js +27 -0
  251. package/dist/seo/index.d.ts +14 -0
  252. package/dist/seo/index.js +12 -0
  253. package/dist/seo/messages.en.d.ts +79 -0
  254. package/dist/seo/messages.en.js +79 -0
  255. package/dist/seo/models.d.ts +179 -0
  256. package/dist/seo/models.js +8 -0
  257. package/dist/seo/ports.d.ts +11 -0
  258. package/dist/seo/ports.js +4 -0
  259. package/dist/seo/react/components/MediaPickerBridge.d.ts +4 -0
  260. package/dist/seo/react/components/MediaPickerBridge.js +8 -0
  261. package/dist/seo/react/components/MediaRefField.d.ts +40 -0
  262. package/dist/seo/react/components/MediaRefField.js +12 -0
  263. package/dist/seo/react/components/SeoIcons.d.ts +13 -0
  264. package/dist/seo/react/components/SeoIcons.js +32 -0
  265. package/dist/seo/react/components/SitemapModal.d.ts +48 -0
  266. package/dist/seo/react/components/SitemapModal.js +72 -0
  267. package/dist/seo/react/hooks/MediaPickerBridge.hooks.d.ts +6 -0
  268. package/dist/seo/react/hooks/MediaPickerBridge.hooks.js +27 -0
  269. package/dist/seo/react/hooks/MediaRefField.hooks.d.ts +25 -0
  270. package/dist/seo/react/hooks/MediaRefField.hooks.js +30 -0
  271. package/dist/seo/react/hooks/SeoModuleTabs.d.ts +14 -0
  272. package/dist/seo/react/hooks/SeoModuleTabs.js +18 -0
  273. package/dist/seo/react/hooks/SeoPage.hooks.d.ts +69 -0
  274. package/dist/seo/react/hooks/SeoPage.hooks.js +37 -0
  275. package/dist/seo/react/hooks/SeoPorts.hooks.d.ts +19 -0
  276. package/dist/seo/react/hooks/SeoPorts.hooks.js +22 -0
  277. package/dist/seo/react/hooks/SitemapModal.hooks.d.ts +26 -0
  278. package/dist/seo/react/hooks/SitemapModal.hooks.js +20 -0
  279. package/dist/seo/react/hooks/use-entry-picker.hooks.d.ts +11 -0
  280. package/dist/seo/react/hooks/use-entry-picker.hooks.js +20 -0
  281. package/dist/seo/react/hooks/use-seo-entry-panel.hooks.d.ts +14 -0
  282. package/dist/seo/react/hooks/use-seo-entry-panel.hooks.js +26 -0
  283. package/dist/seo/react/hooks/use-seo-entry-section.hooks.d.ts +4 -0
  284. package/dist/seo/react/hooks/use-seo-entry-section.hooks.js +7 -0
  285. package/dist/seo/react/hooks/use-seo.hooks.d.ts +11 -0
  286. package/dist/seo/react/hooks/use-seo.hooks.js +29 -0
  287. package/dist/seo/react/hooks/use-sitemap-modal.hooks.d.ts +10 -0
  288. package/dist/seo/react/hooks/use-sitemap-modal.hooks.js +18 -0
  289. package/dist/seo/react/index.d.ts +369 -0
  290. package/dist/seo/react/index.js +30 -0
  291. package/dist/seo/react/options.d.ts +26 -0
  292. package/dist/seo/react/options.js +2 -0
  293. package/dist/seo/react/pages/SeoPage.d.ts +161 -0
  294. package/dist/seo/react/pages/SeoPage.js +215 -0
  295. package/dist/seo/rules.d.ts +142 -0
  296. package/dist/seo/rules.js +220 -0
  297. package/dist/seo/seo.module.d.ts +115 -0
  298. package/dist/seo/seo.module.js +14 -0
  299. package/dist/source-control/react/hooks/ProvidersTab.hooks.d.ts +1 -1
  300. package/dist/source-control/react/hooks/ProvidersTab.hooks.js +1 -1
  301. package/dist/source-control/react/hooks/SourceControlPage.hooks.d.ts +1 -1
  302. package/dist/source-control/react/index.js +1 -1
  303. package/dist/source-control/react/pages/SourceControlPage.d.ts +1 -1
  304. package/dist/source-control/react/tabs/ProvidersTab.d.ts +1 -1
  305. package/dist/widgets/adapters/http.d.ts +19 -0
  306. package/dist/widgets/adapters/http.js +33 -0
  307. package/dist/widgets/adapters/memory.d.ts +22 -0
  308. package/dist/widgets/adapters/memory.js +93 -0
  309. package/dist/widgets/conformance/widgets-api.conformance.d.ts +6 -0
  310. package/dist/widgets/conformance/widgets-api.conformance.js +55 -0
  311. package/dist/widgets/controllers/instance-editor.controller.d.ts +49 -0
  312. package/dist/widgets/controllers/instance-editor.controller.js +87 -0
  313. package/dist/widgets/controllers/library.controller.d.ts +33 -0
  314. package/dist/widgets/controllers/library.controller.js +53 -0
  315. package/dist/widgets/controllers/region-editor.controller.d.ts +42 -0
  316. package/dist/widgets/controllers/region-editor.controller.js +69 -0
  317. package/dist/widgets/controllers/regions.controller.d.ts +27 -0
  318. package/dist/widgets/controllers/regions.controller.js +44 -0
  319. package/dist/widgets/index.d.ts +11 -0
  320. package/dist/widgets/index.js +9 -0
  321. package/dist/widgets/messages.en.d.ts +78 -0
  322. package/dist/widgets/messages.en.js +83 -0
  323. package/dist/widgets/models.d.ts +62 -0
  324. package/dist/widgets/models.js +2 -0
  325. package/dist/widgets/ports.d.ts +79 -0
  326. package/dist/widgets/ports.js +5 -0
  327. package/dist/widgets/react/components/WidgetInstanceNotices.d.ts +14 -0
  328. package/dist/widgets/react/components/WidgetInstanceNotices.js +25 -0
  329. package/dist/widgets/react/components/WidgetRegionEditorHeaderActions.d.ts +22 -0
  330. package/dist/widgets/react/components/WidgetRegionEditorHeaderActions.js +18 -0
  331. package/dist/widgets/react/components/WidgetsLibraryNotices.d.ts +13 -0
  332. package/dist/widgets/react/components/WidgetsLibraryNotices.js +10 -0
  333. package/dist/widgets/react/hooks/WidgetsPorts.hooks.d.ts +270 -0
  334. package/dist/widgets/react/hooks/WidgetsPorts.hooks.js +17 -0
  335. package/dist/widgets/react/hooks/navigation.hooks.d.ts +9 -0
  336. package/dist/widgets/react/hooks/navigation.hooks.js +6 -0
  337. package/dist/widgets/react/hooks/page-views.hooks.d.ts +87 -0
  338. package/dist/widgets/react/hooks/page-views.hooks.js +30 -0
  339. package/dist/widgets/react/hooks/use-widget-instance-editor.hooks.d.ts +56 -0
  340. package/dist/widgets/react/hooks/use-widget-instance-editor.hooks.js +38 -0
  341. package/dist/widgets/react/hooks/use-widget-region-editor.hooks.d.ts +32 -0
  342. package/dist/widgets/react/hooks/use-widget-region-editor.hooks.js +22 -0
  343. package/dist/widgets/react/hooks/use-widget-regions.hooks.d.ts +23 -0
  344. package/dist/widgets/react/hooks/use-widget-regions.hooks.js +22 -0
  345. package/dist/widgets/react/hooks/use-widgets-library.hooks.d.ts +37 -0
  346. package/dist/widgets/react/hooks/use-widgets-library.hooks.js +23 -0
  347. package/dist/widgets/react/index.d.ts +391 -0
  348. package/dist/widgets/react/index.js +31 -0
  349. package/dist/widgets/react/pages/WidgetInstanceEditor.d.ts +23 -0
  350. package/dist/widgets/react/pages/WidgetInstanceEditor.js +37 -0
  351. package/dist/widgets/react/pages/WidgetRegionEditor.d.ts +22 -0
  352. package/dist/widgets/react/pages/WidgetRegionEditor.js +25 -0
  353. package/dist/widgets/react/pages/WidgetRegions.d.ts +21 -0
  354. package/dist/widgets/react/pages/WidgetRegions.js +31 -0
  355. package/dist/widgets/react/pages/WidgetsLibrary.d.ts +24 -0
  356. package/dist/widgets/react/pages/WidgetsLibrary.js +61 -0
  357. package/dist/widgets/rules.d.ts +94 -0
  358. package/dist/widgets/rules.js +83 -0
  359. package/dist/widgets/widgets.module.d.ts +122 -0
  360. package/dist/widgets/widgets.module.js +21 -0
  361. package/package.json +206 -9
@@ -0,0 +1,452 @@
1
+ import type { ModulePageProps } from '../../core/react/bind-react.js';
2
+ import type { AdminInstance } from '../../core/module/types.js';
3
+ import type { ReactNode } from 'react';
4
+ import type { FormsReactOptions } from './hooks/FormsPorts.hooks.js';
5
+ export type { FormsReactOptions, FormsPorts } from './hooks/FormsPorts.hooks.js';
6
+ export { FormsPortsContext, FormsOptionsContext, useFormsPorts } from './hooks/FormsPorts.hooks.js';
7
+ export { useFormsList } from './hooks/use-forms-list.hooks.js';
8
+ export { useFormEditor } from './hooks/use-form-editor.hooks.js';
9
+ export type { FormsListProps } from './pages/FormsList.js';
10
+ export type { FormEditorProps } from './pages/FormEditor.js';
11
+ export type { FieldAttributesDialogProps } from './components/FieldAttributesDialog.js';
12
+ export interface FormsModulePageProps extends ModulePageProps {
13
+ readonly formId?: string;
14
+ readonly params?: Readonly<Record<string, unknown>>;
15
+ }
16
+ /** One scoped module factory; page sections share their draft across route-derived tab changes. */
17
+ export declare function forms(_required: Record<string, never>, options?: FormsReactOptions): {
18
+ id: "forms";
19
+ requires: {
20
+ readonly formsApi: import("../../core/module/token.js").AdminPortToken<import("../ports.js").AdminFormsPort, "admin.forms.api">;
21
+ readonly formsTrash: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsTrashPort, "admin.forms.trash">;
22
+ };
23
+ optional: {
24
+ readonly formsEvents: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsEventsPort, "admin.forms.events">;
25
+ readonly formsNavigation: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsNavigationPort, "admin.forms.navigation">;
26
+ };
27
+ messages: {
28
+ readonly "Created / Updated": "Created / Updated";
29
+ readonly "Created {created} \u00B7 Updated {updated}": "Created {created} · Updated {updated}";
30
+ readonly "Created {date}": "Created {date}";
31
+ readonly "Updated {date}": "Updated {date}";
32
+ readonly Builder: "Builder";
33
+ readonly HTML: "HTML";
34
+ readonly "Form authoring mode": "Form authoring mode";
35
+ readonly "Form HTML": "Form HTML";
36
+ readonly "Copy HTML embed": "Copy HTML embed";
37
+ readonly "Copied!": "Copied!";
38
+ readonly "Could not copy embed": "Could not copy embed";
39
+ readonly Send: "Send";
40
+ readonly Back: "Back";
41
+ readonly Content: "Content";
42
+ readonly Forms: "Forms";
43
+ readonly "Manage the forms embedded across the site and their submissions.": "Manage the forms embedded across the site and their submissions.";
44
+ readonly "New form": "New form";
45
+ readonly "No forms yet.": "No forms yet.";
46
+ readonly "Create your first form to start collecting submissions.": "Create your first form to start collecting submissions.";
47
+ readonly Name: "Name";
48
+ readonly Slug: "Slug";
49
+ readonly Status: "Status";
50
+ readonly Fields: "Fields";
51
+ readonly Notify: "Notify";
52
+ readonly More: "More";
53
+ readonly off: "off";
54
+ readonly Edit: "Edit";
55
+ readonly Disable: "Disable";
56
+ readonly Enable: "Enable";
57
+ readonly "Move to trash?": "Move to trash?";
58
+ readonly "Move to trash": "Move to trash";
59
+ readonly Move: "Move";
60
+ readonly "to trash? It will disappear from the site and from this list.": "to trash? It will disappear from the site and from this list.";
61
+ readonly "Field attributes \u2014": "Field attributes —";
62
+ readonly "CSS classes": "CSS classes";
63
+ readonly "HTML attributes": "HTML attributes";
64
+ readonly Value: "Value";
65
+ readonly Remove: "Remove";
66
+ readonly "Add attribute": "Add attribute";
67
+ readonly Save: "Save";
68
+ readonly Cancel: "Cancel";
69
+ readonly ID: "ID";
70
+ readonly Label: "Label";
71
+ readonly Type: "Type";
72
+ readonly Req: "Req";
73
+ readonly "Max length": "Max length";
74
+ readonly "Add field": "Add field";
75
+ readonly "Back to submissions": "Back to submissions";
76
+ readonly "Submitted at": "Submitted at";
77
+ readonly "Source IP": "Source IP";
78
+ readonly "Delete submission": "Delete submission";
79
+ readonly "Confirm delete": "Confirm delete";
80
+ readonly "Delete permanently?": "Delete permanently?";
81
+ readonly "This cannot be undone.": "This cannot be undone.";
82
+ readonly "It will disappear from this list. You can restore it from the Trash.": "It will disappear from this list. You can restore it from the Trash.";
83
+ readonly View: "View";
84
+ readonly "Load more": "Load more";
85
+ readonly "Loading\u2026": "Loading…";
86
+ readonly "No submissions yet.": "No submissions yet.";
87
+ readonly "Create form": "Create form";
88
+ readonly Form: "Form";
89
+ readonly "Configure a new form's fields.": "Configure a new form's fields.";
90
+ readonly "Configure this form's fields, or review its submissions.": "Configure this form's fields, or review its submissions.";
91
+ readonly Submissions: "Submissions";
92
+ readonly "Back to forms": "Back to forms";
93
+ readonly "Actions for form \"{name}\"": "Actions for form \"{name}\"";
94
+ readonly "Loading forms\u2026": "Loading forms…";
95
+ readonly Delete: "Delete";
96
+ readonly "See more about field attributes": "See more about field attributes";
97
+ readonly "Add CSS classes and HTML attributes to this field\u2019s input. Classes are unrestricted \u2014 Tailwind utility classes like ": "Add CSS classes and HTML attributes to this field’s input. Classes are unrestricted — Tailwind utility classes like ";
98
+ readonly "or ": "or ";
99
+ readonly " work as expected. Attribute names are limited to a safe allowlist (": " work as expected. Attribute names are limited to a safe allowlist (";
100
+ readonly ", ": ", ";
101
+ readonly ", and a fixed list of layout/behavior attributes) \u2014 anything else, including event handlers like ": ", and a fixed list of layout/behavior attributes) — anything else, including event handlers like ";
102
+ readonly ", is rejected.": ", is rejected.";
103
+ readonly Attribute: "Attribute";
104
+ readonly "e.g. Enter your work email": "e.g. Enter your work email";
105
+ readonly "Existing fields cannot be removed once created": "Existing fields cannot be removed once created";
106
+ readonly "Loading submission\u2026": "Loading submission…";
107
+ readonly "Loading submissions\u2026": "Loading submissions…";
108
+ readonly "Form sections": "Form sections";
109
+ readonly "Loading form\u2026": "Loading form…";
110
+ readonly "failed to delete form": "failed to delete form";
111
+ readonly "This item changed since you loaded it. Reload and try again.": "This item changed since you loaded it. Reload and try again.";
112
+ readonly "failed to update form status": "failed to update form status";
113
+ readonly "failed to load forms": "failed to load forms";
114
+ readonly "save failed": "save failed";
115
+ readonly "status update failed": "status update failed";
116
+ readonly "failed to load form": "failed to load form";
117
+ readonly recipient: "recipient";
118
+ readonly recipients: "recipients";
119
+ readonly "failed to load submissions": "failed to load submissions";
120
+ readonly "failed to load submission": "failed to load submission";
121
+ readonly "delete failed": "delete failed";
122
+ readonly "Unknown field": "Unknown field";
123
+ };
124
+ pages: {
125
+ readonly list: {
126
+ readonly path: "/forms";
127
+ readonly label: "Forms";
128
+ readonly permissions: readonly ["admin.forms.manage"];
129
+ readonly agentReachable: true;
130
+ readonly nav: {
131
+ readonly group: "content";
132
+ readonly icon: "forms";
133
+ };
134
+ readonly tabs: {};
135
+ };
136
+ readonly editor: {
137
+ readonly path: "/forms/:formId";
138
+ readonly label: "Form";
139
+ readonly permissions: readonly ["admin.forms.manage"];
140
+ readonly agentReachable: true;
141
+ readonly tabs: {
142
+ readonly fields: {
143
+ readonly label: "Fields";
144
+ readonly agentReachable: true;
145
+ };
146
+ readonly submissions: {
147
+ readonly label: "Submissions";
148
+ readonly agentReachable: true;
149
+ };
150
+ };
151
+ };
152
+ };
153
+ } & {
154
+ react: {
155
+ Provider: ({ admin, children, options: liveOptions }: {
156
+ admin: AdminInstance;
157
+ children: ReactNode;
158
+ options?: FormsReactOptions;
159
+ }) => import("react").FunctionComponentElement<{
160
+ admin: AdminInstance;
161
+ children: ReactNode;
162
+ }>;
163
+ module: {
164
+ readonly id: "forms";
165
+ readonly requires: {
166
+ readonly formsApi: import("../../core/module/token.js").AdminPortToken<import("../ports.js").AdminFormsPort, "admin.forms.api">;
167
+ readonly formsTrash: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsTrashPort, "admin.forms.trash">;
168
+ };
169
+ readonly optional: {
170
+ readonly formsEvents: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsEventsPort, "admin.forms.events">;
171
+ readonly formsNavigation: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsNavigationPort, "admin.forms.navigation">;
172
+ };
173
+ readonly messages: {
174
+ readonly "Created / Updated": "Created / Updated";
175
+ readonly "Created {created} \u00B7 Updated {updated}": "Created {created} · Updated {updated}";
176
+ readonly "Created {date}": "Created {date}";
177
+ readonly "Updated {date}": "Updated {date}";
178
+ readonly Builder: "Builder";
179
+ readonly HTML: "HTML";
180
+ readonly "Form authoring mode": "Form authoring mode";
181
+ readonly "Form HTML": "Form HTML";
182
+ readonly "Copy HTML embed": "Copy HTML embed";
183
+ readonly "Copied!": "Copied!";
184
+ readonly "Could not copy embed": "Could not copy embed";
185
+ readonly Send: "Send";
186
+ readonly Back: "Back";
187
+ readonly Content: "Content";
188
+ readonly Forms: "Forms";
189
+ readonly "Manage the forms embedded across the site and their submissions.": "Manage the forms embedded across the site and their submissions.";
190
+ readonly "New form": "New form";
191
+ readonly "No forms yet.": "No forms yet.";
192
+ readonly "Create your first form to start collecting submissions.": "Create your first form to start collecting submissions.";
193
+ readonly Name: "Name";
194
+ readonly Slug: "Slug";
195
+ readonly Status: "Status";
196
+ readonly Fields: "Fields";
197
+ readonly Notify: "Notify";
198
+ readonly More: "More";
199
+ readonly off: "off";
200
+ readonly Edit: "Edit";
201
+ readonly Disable: "Disable";
202
+ readonly Enable: "Enable";
203
+ readonly "Move to trash?": "Move to trash?";
204
+ readonly "Move to trash": "Move to trash";
205
+ readonly Move: "Move";
206
+ readonly "to trash? It will disappear from the site and from this list.": "to trash? It will disappear from the site and from this list.";
207
+ readonly "Field attributes \u2014": "Field attributes —";
208
+ readonly "CSS classes": "CSS classes";
209
+ readonly "HTML attributes": "HTML attributes";
210
+ readonly Value: "Value";
211
+ readonly Remove: "Remove";
212
+ readonly "Add attribute": "Add attribute";
213
+ readonly Save: "Save";
214
+ readonly Cancel: "Cancel";
215
+ readonly ID: "ID";
216
+ readonly Label: "Label";
217
+ readonly Type: "Type";
218
+ readonly Req: "Req";
219
+ readonly "Max length": "Max length";
220
+ readonly "Add field": "Add field";
221
+ readonly "Back to submissions": "Back to submissions";
222
+ readonly "Submitted at": "Submitted at";
223
+ readonly "Source IP": "Source IP";
224
+ readonly "Delete submission": "Delete submission";
225
+ readonly "Confirm delete": "Confirm delete";
226
+ readonly "Delete permanently?": "Delete permanently?";
227
+ readonly "This cannot be undone.": "This cannot be undone.";
228
+ readonly "It will disappear from this list. You can restore it from the Trash.": "It will disappear from this list. You can restore it from the Trash.";
229
+ readonly View: "View";
230
+ readonly "Load more": "Load more";
231
+ readonly "Loading\u2026": "Loading…";
232
+ readonly "No submissions yet.": "No submissions yet.";
233
+ readonly "Create form": "Create form";
234
+ readonly Form: "Form";
235
+ readonly "Configure a new form's fields.": "Configure a new form's fields.";
236
+ readonly "Configure this form's fields, or review its submissions.": "Configure this form's fields, or review its submissions.";
237
+ readonly Submissions: "Submissions";
238
+ readonly "Back to forms": "Back to forms";
239
+ readonly "Actions for form \"{name}\"": "Actions for form \"{name}\"";
240
+ readonly "Loading forms\u2026": "Loading forms…";
241
+ readonly Delete: "Delete";
242
+ readonly "See more about field attributes": "See more about field attributes";
243
+ readonly "Add CSS classes and HTML attributes to this field\u2019s input. Classes are unrestricted \u2014 Tailwind utility classes like ": "Add CSS classes and HTML attributes to this field’s input. Classes are unrestricted — Tailwind utility classes like ";
244
+ readonly "or ": "or ";
245
+ readonly " work as expected. Attribute names are limited to a safe allowlist (": " work as expected. Attribute names are limited to a safe allowlist (";
246
+ readonly ", ": ", ";
247
+ readonly ", and a fixed list of layout/behavior attributes) \u2014 anything else, including event handlers like ": ", and a fixed list of layout/behavior attributes) — anything else, including event handlers like ";
248
+ readonly ", is rejected.": ", is rejected.";
249
+ readonly Attribute: "Attribute";
250
+ readonly "e.g. Enter your work email": "e.g. Enter your work email";
251
+ readonly "Existing fields cannot be removed once created": "Existing fields cannot be removed once created";
252
+ readonly "Loading submission\u2026": "Loading submission…";
253
+ readonly "Loading submissions\u2026": "Loading submissions…";
254
+ readonly "Form sections": "Form sections";
255
+ readonly "Loading form\u2026": "Loading form…";
256
+ readonly "failed to delete form": "failed to delete form";
257
+ readonly "This item changed since you loaded it. Reload and try again.": "This item changed since you loaded it. Reload and try again.";
258
+ readonly "failed to update form status": "failed to update form status";
259
+ readonly "failed to load forms": "failed to load forms";
260
+ readonly "save failed": "save failed";
261
+ readonly "status update failed": "status update failed";
262
+ readonly "failed to load form": "failed to load form";
263
+ readonly recipient: "recipient";
264
+ readonly recipients: "recipients";
265
+ readonly "failed to load submissions": "failed to load submissions";
266
+ readonly "failed to load submission": "failed to load submission";
267
+ readonly "delete failed": "delete failed";
268
+ readonly "Unknown field": "Unknown field";
269
+ };
270
+ readonly pages: {
271
+ readonly list: {
272
+ readonly path: "/forms";
273
+ readonly label: "Forms";
274
+ readonly permissions: readonly ["admin.forms.manage"];
275
+ readonly agentReachable: true;
276
+ readonly nav: {
277
+ readonly group: "content";
278
+ readonly icon: "forms";
279
+ };
280
+ readonly tabs: {};
281
+ };
282
+ readonly editor: {
283
+ readonly path: "/forms/:formId";
284
+ readonly label: "Form";
285
+ readonly permissions: readonly ["admin.forms.manage"];
286
+ readonly agentReachable: true;
287
+ readonly tabs: {
288
+ readonly fields: {
289
+ readonly label: "Fields";
290
+ readonly agentReachable: true;
291
+ };
292
+ readonly submissions: {
293
+ readonly label: "Submissions";
294
+ readonly agentReachable: true;
295
+ };
296
+ };
297
+ };
298
+ };
299
+ };
300
+ pages: {
301
+ readonly list: {
302
+ Page: import("react").LazyExoticComponent<import("react").ComponentType<ModulePageProps>>;
303
+ tabs: {};
304
+ };
305
+ readonly editor: {
306
+ Page: import("react").LazyExoticComponent<import("react").ComponentType<ModulePageProps>>;
307
+ tabs: {
308
+ readonly fields: import("react").LazyExoticComponent<import("react").ComponentType<import("../../react/bind-react.js").TabViewProps>>;
309
+ readonly submissions: import("react").LazyExoticComponent<import("react").ComponentType<import("../../react/bind-react.js").TabViewProps>>;
310
+ };
311
+ };
312
+ };
313
+ usePorts: (_required?: Record<string, never>, _optional?: Record<string, never>) => import("../../core/module/types.js").ScopedPorts<{
314
+ readonly id: "forms";
315
+ readonly requires: {
316
+ readonly formsApi: import("../../core/module/token.js").AdminPortToken<import("../ports.js").AdminFormsPort, "admin.forms.api">;
317
+ readonly formsTrash: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsTrashPort, "admin.forms.trash">;
318
+ };
319
+ readonly optional: {
320
+ readonly formsEvents: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsEventsPort, "admin.forms.events">;
321
+ readonly formsNavigation: import("../../core/module/token.js").AdminPortToken<import("../ports.js").FormsNavigationPort, "admin.forms.navigation">;
322
+ };
323
+ readonly messages: {
324
+ readonly "Created / Updated": "Created / Updated";
325
+ readonly "Created {created} \u00B7 Updated {updated}": "Created {created} · Updated {updated}";
326
+ readonly "Created {date}": "Created {date}";
327
+ readonly "Updated {date}": "Updated {date}";
328
+ readonly Builder: "Builder";
329
+ readonly HTML: "HTML";
330
+ readonly "Form authoring mode": "Form authoring mode";
331
+ readonly "Form HTML": "Form HTML";
332
+ readonly "Copy HTML embed": "Copy HTML embed";
333
+ readonly "Copied!": "Copied!";
334
+ readonly "Could not copy embed": "Could not copy embed";
335
+ readonly Send: "Send";
336
+ readonly Back: "Back";
337
+ readonly Content: "Content";
338
+ readonly Forms: "Forms";
339
+ readonly "Manage the forms embedded across the site and their submissions.": "Manage the forms embedded across the site and their submissions.";
340
+ readonly "New form": "New form";
341
+ readonly "No forms yet.": "No forms yet.";
342
+ readonly "Create your first form to start collecting submissions.": "Create your first form to start collecting submissions.";
343
+ readonly Name: "Name";
344
+ readonly Slug: "Slug";
345
+ readonly Status: "Status";
346
+ readonly Fields: "Fields";
347
+ readonly Notify: "Notify";
348
+ readonly More: "More";
349
+ readonly off: "off";
350
+ readonly Edit: "Edit";
351
+ readonly Disable: "Disable";
352
+ readonly Enable: "Enable";
353
+ readonly "Move to trash?": "Move to trash?";
354
+ readonly "Move to trash": "Move to trash";
355
+ readonly Move: "Move";
356
+ readonly "to trash? It will disappear from the site and from this list.": "to trash? It will disappear from the site and from this list.";
357
+ readonly "Field attributes \u2014": "Field attributes —";
358
+ readonly "CSS classes": "CSS classes";
359
+ readonly "HTML attributes": "HTML attributes";
360
+ readonly Value: "Value";
361
+ readonly Remove: "Remove";
362
+ readonly "Add attribute": "Add attribute";
363
+ readonly Save: "Save";
364
+ readonly Cancel: "Cancel";
365
+ readonly ID: "ID";
366
+ readonly Label: "Label";
367
+ readonly Type: "Type";
368
+ readonly Req: "Req";
369
+ readonly "Max length": "Max length";
370
+ readonly "Add field": "Add field";
371
+ readonly "Back to submissions": "Back to submissions";
372
+ readonly "Submitted at": "Submitted at";
373
+ readonly "Source IP": "Source IP";
374
+ readonly "Delete submission": "Delete submission";
375
+ readonly "Confirm delete": "Confirm delete";
376
+ readonly "Delete permanently?": "Delete permanently?";
377
+ readonly "This cannot be undone.": "This cannot be undone.";
378
+ readonly "It will disappear from this list. You can restore it from the Trash.": "It will disappear from this list. You can restore it from the Trash.";
379
+ readonly View: "View";
380
+ readonly "Load more": "Load more";
381
+ readonly "Loading\u2026": "Loading…";
382
+ readonly "No submissions yet.": "No submissions yet.";
383
+ readonly "Create form": "Create form";
384
+ readonly Form: "Form";
385
+ readonly "Configure a new form's fields.": "Configure a new form's fields.";
386
+ readonly "Configure this form's fields, or review its submissions.": "Configure this form's fields, or review its submissions.";
387
+ readonly Submissions: "Submissions";
388
+ readonly "Back to forms": "Back to forms";
389
+ readonly "Actions for form \"{name}\"": "Actions for form \"{name}\"";
390
+ readonly "Loading forms\u2026": "Loading forms…";
391
+ readonly Delete: "Delete";
392
+ readonly "See more about field attributes": "See more about field attributes";
393
+ readonly "Add CSS classes and HTML attributes to this field\u2019s input. Classes are unrestricted \u2014 Tailwind utility classes like ": "Add CSS classes and HTML attributes to this field’s input. Classes are unrestricted — Tailwind utility classes like ";
394
+ readonly "or ": "or ";
395
+ readonly " work as expected. Attribute names are limited to a safe allowlist (": " work as expected. Attribute names are limited to a safe allowlist (";
396
+ readonly ", ": ", ";
397
+ readonly ", and a fixed list of layout/behavior attributes) \u2014 anything else, including event handlers like ": ", and a fixed list of layout/behavior attributes) — anything else, including event handlers like ";
398
+ readonly ", is rejected.": ", is rejected.";
399
+ readonly Attribute: "Attribute";
400
+ readonly "e.g. Enter your work email": "e.g. Enter your work email";
401
+ readonly "Existing fields cannot be removed once created": "Existing fields cannot be removed once created";
402
+ readonly "Loading submission\u2026": "Loading submission…";
403
+ readonly "Loading submissions\u2026": "Loading submissions…";
404
+ readonly "Form sections": "Form sections";
405
+ readonly "Loading form\u2026": "Loading form…";
406
+ readonly "failed to delete form": "failed to delete form";
407
+ readonly "This item changed since you loaded it. Reload and try again.": "This item changed since you loaded it. Reload and try again.";
408
+ readonly "failed to update form status": "failed to update form status";
409
+ readonly "failed to load forms": "failed to load forms";
410
+ readonly "save failed": "save failed";
411
+ readonly "status update failed": "status update failed";
412
+ readonly "failed to load form": "failed to load form";
413
+ readonly recipient: "recipient";
414
+ readonly recipients: "recipients";
415
+ readonly "failed to load submissions": "failed to load submissions";
416
+ readonly "failed to load submission": "failed to load submission";
417
+ readonly "delete failed": "delete failed";
418
+ readonly "Unknown field": "Unknown field";
419
+ };
420
+ readonly pages: {
421
+ readonly list: {
422
+ readonly path: "/forms";
423
+ readonly label: "Forms";
424
+ readonly permissions: readonly ["admin.forms.manage"];
425
+ readonly agentReachable: true;
426
+ readonly nav: {
427
+ readonly group: "content";
428
+ readonly icon: "forms";
429
+ };
430
+ readonly tabs: {};
431
+ };
432
+ readonly editor: {
433
+ readonly path: "/forms/:formId";
434
+ readonly label: "Form";
435
+ readonly permissions: readonly ["admin.forms.manage"];
436
+ readonly agentReachable: true;
437
+ readonly tabs: {
438
+ readonly fields: {
439
+ readonly label: "Fields";
440
+ readonly agentReachable: true;
441
+ };
442
+ readonly submissions: {
443
+ readonly label: "Submissions";
444
+ readonly agentReachable: true;
445
+ };
446
+ };
447
+ };
448
+ };
449
+ }>;
450
+ };
451
+ };
452
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,35 @@
1
+ import { createElement } from 'react';
2
+ import { bindReact } from '../../core/react/bind-react.js';
3
+ import { formsModule } from '../forms.module.js';
4
+ import { FormsPortsContext, FormsOptionsContext } from './hooks/FormsPorts.hooks.js';
5
+ export { FormsPortsContext, FormsOptionsContext, useFormsPorts } from './hooks/FormsPorts.hooks.js';
6
+ export { useFormsList } from './hooks/use-forms-list.hooks.js';
7
+ export { useFormEditor } from './hooks/use-form-editor.hooks.js';
8
+ /** One scoped module factory; page sections share their draft across route-derived tab changes. */
9
+ export function forms(_required, options = {}) {
10
+ const react = bindReact({ module: formsModule, views: {
11
+ list: { page: async () => {
12
+ const { FormsList } = await import('./pages/FormsList.js');
13
+ return { default: (_props) => createElement(FormsList) };
14
+ }, tabs: {} },
15
+ editor: { page: async () => {
16
+ const { FormEditor } = await import('./pages/FormEditor.js');
17
+ return { default: (props) => {
18
+ const formId = props.formId ?? props.params?.formId;
19
+ if (typeof formId !== 'string' || !formId)
20
+ throw new Error('Forms editor page requires formId');
21
+ return createElement(FormEditor, { formId, tab: props.requestedTab === 'submissions' ? 'submissions' : 'fields' });
22
+ } };
23
+ },
24
+ // The editor owns one persistent draft for both route tabs. Section rendering stays in
25
+ // that page; mounting an independent tab view would split or reset the draft.
26
+ tabs: { fields: async () => ({ default: () => null }), submissions: async () => ({ default: () => null }) } },
27
+ } }, { context: FormsPortsContext });
28
+ // Options live above lazy pages so a host locale update changes copy without replacing the
29
+ // page/component identity or discarding its working draft. The factory defaults still apply.
30
+ function Provider({ admin, children, options: liveOptions = options }) {
31
+ return createElement(react.Provider, { admin, children: createElement(FormsOptionsContext.Provider, { value: liveOptions }, children) });
32
+ }
33
+ return Object.assign({ ...formsModule }, { react: { ...react, Provider } });
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,19 @@
1
+ import { useWiredFormEditor } from "../hooks/use-form-editor.hooks.js";
2
+ export interface FormEditorProps {
3
+ formId: string;
4
+ /** Which tab is active, derived from the route by `panels.tsx` (`/forms/:formId` -> `"fields"`,
5
+ * `/forms/:formId/submissions` -> `"submissions"`) — ADR-063. Ignored while `isNew`/tabs aren't
6
+ * shown. */
7
+ tab: "fields" | "submissions";
8
+ /** Dependency injection seam for tests — see `PostsProps.usePostsHook` for the convention. */
9
+ useFormEditorHook?: typeof useWiredFormEditor;
10
+ }
11
+ /** The name/slug fields, the field-definition table, and the status-toggle/save action row —
12
+ * shared verbatim between the "new form" view (no tabs) and the
13
+ * "existing form, Fields tab" view (see `FormEditor`'s own `fieldsBody` comment for why it's one
14
+ * JSX value rather than two copies). Split into its own top-level component, not just a local
15
+ * `const`, because a `const` assigned inside `FormEditor` still executes in that function's own
16
+ * scope — every branch inside it would still count toward `FormEditor`'s own complexity score. */
17
+ export declare function FormEditor({ formId, tab, useFormEditorHook }: FormEditorProps, _optional?: Record<string, never>): import("react").JSX.Element;
18
+ export default FormEditor;
19
+ //# sourceMappingURL=FormEditor.d.ts.map
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { agentHandle } from '@jini-ai/agentic';
3
+ import { useWiredFormEditor } from "../hooks/use-form-editor.hooks.js";
4
+ import { FormEditorFieldsBody } from "../components/FormEditorFieldsBody.js";
5
+ import { FormEditorHeaderText } from "../components/FormEditorHeaderText.js";
6
+ import { FormEditorTabStrip } from "../components/FormEditorTabStrip.js";
7
+ import { FormEditorMainPanel } from "../components/FormEditorMainPanel.js";
8
+ /** The name/slug fields, the field-definition table, and the status-toggle/save action row —
9
+ * shared verbatim between the "new form" view (no tabs) and the
10
+ * "existing form, Fields tab" view (see `FormEditor`'s own `fieldsBody` comment for why it's one
11
+ * JSX value rather than two copies). Split into its own top-level component, not just a local
12
+ * `const`, because a `const` assigned inside `FormEditor` still executes in that function's own
13
+ * scope — every branch inside it would still count toward `FormEditor`'s own complexity score. */
14
+ export function FormEditor({ formId, tab, useFormEditorHook = useWiredFormEditor }, _optional = {}) {
15
+ const { answerColumns, mode, onModeChange, html, setHtml, copyEmbed, copyFeedback, isNew, form, name, setName, slug, setSlug, fields, setFields, tab: activeTab, onTabChange, error, saving, existingFieldIds, showTabs, tabRefs, onTabsKeyDown, handleSave, handleStatusToggle, t, } = useFormEditorHook({ formId, tab });
16
+ if (!isNew && !form && !error)
17
+ return _jsx("div", { className: "notice", children: t("Loading form…") });
18
+ // Previously this was the ONLY guard, and it only covers the pre-error case — once the load
19
+ // failed and set `error`, `!error` here goes false and rendering fell through to the full,
20
+ // empty, live-saveable editor below (audit blocker, exec summary #3: a bogus form id showed
21
+ // "form definition 'X' was not found" AND a working Save button underneath it). This guard is
22
+ // safe to add as a second, separate check rather than merging into the one above: it only fires
23
+ // while `form` is still null, so a load failure has to happen before the form ever loaded —
24
+ // once `form` is set, it stays set, so a LATER failure (e.g. a failed Save) never re-enters
25
+ // this branch and never blanks a screen the operator is already editing (same "a later failure
26
+ // must not erase what already rendered" principle as `Pages.tsx`/`Posts.tsx`'s `error && !data`
27
+ // guard — see `CollectionEntryEditor.tsx`'s sequential loading → not-found guards for the
28
+ // reference shape this now matches).
29
+ if (!isNew && !form && error)
30
+ return _jsx("div", { className: "notice error", children: error });
31
+ // Shared between the "new form" (no tabs, always visible) and "existing form, Fields tab"
32
+ // views — kept as one JSX value instead of two copies so the two paths can't drift.
33
+ const fieldsBody = (_jsx(FormEditorFieldsBody, { mode: mode, onModeChange: onModeChange, html: html, onHtmlChange: setHtml, onCopyEmbed: copyEmbed, copyFeedback: copyFeedback, name: name, onNameChange: setName, slug: slug, onSlugChange: setSlug, isNew: isNew, fields: fields, existingFieldIds: existingFieldIds, onFieldsChange: setFields, form: form, saving: saving, onStatusToggle: handleStatusToggle, onSave: handleSave, t: t }));
34
+ return (_jsxs("div", { className: "page", children: [_jsxs("div", { className: "page-header page-header-split", ...agentHandle({ handle: "form-editor-header" }, {
35
+ role: "region",
36
+ label: "Form editor header — title and the Back to forms link",
37
+ }), children: [_jsx("div", { className: "page-header-lead", children: _jsxs("a", { className: "btn-secondary", href: "/admin/forms", "aria-label": t("Back to forms"), ...agentHandle({ handle: "form-editor-back" }, { role: "link", label: "Back to the list of all forms" }), children: ["\u2190 ", t("Back")] }) }), _jsx(FormEditorHeaderText, { isNew: isNew, name: name, t: t })] }), error ? _jsx("div", { className: "notice error", children: error }) : null, _jsx(FormEditorTabStrip, { showTabs: showTabs, tab: activeTab, onTabChange: onTabChange, tabRefs: tabRefs, onTabsKeyDown: onTabsKeyDown, t: t }), _jsx(FormEditorMainPanel, { isNew: isNew, tab: activeTab, formId: formId, fieldsBody: fieldsBody, t: t, answerColumns: answerColumns })] }));
38
+ }
39
+ export default FormEditor;
40
+ //# sourceMappingURL=FormEditor.js.map
@@ -0,0 +1,39 @@
1
+ import { useWiredFormsList } from '../hooks/use-forms-list.hooks.js';
2
+ /**
3
+ * @file Forms list screen (SPEC-010 ui.spec.md §2.1/§3.1) — the `/admin/forms` route.
4
+ * Mirrors `Menus.tsx`/`Posts.tsx`'s fetch/loading/error/table convention. Layout now follows the
5
+ * Posts/Media page-primitive pass (`.page`/`.page-header`/`.card`/`.table-scroll`/`.empty-state`,
6
+ * see `styles.css`) instead of the bare `.editor-header` this screen used before — see
7
+ * `FormEditor.tsx`'s file comment for the fuller rationale (both screens were audited together).
8
+ *
9
+ * Row actions: `Posts.tsx`/`Pages.tsx`'s `RowMenu` pattern, INCLUDING a Delete item (T7a,
10
+ * 2026-09-21) — `api.ts`'s generic `trash` route (`POST /trash/items`, `type: "form"`) now covers
11
+ * forms, so there is a server capability to wire. Reached through `RowMenu`'s "Delete" ->
12
+ * `ConfirmDialog` ("Move to trash?") -> `useFormsList`'s `removeForm`, the same three-step gate
13
+ * `Posts.tsx`/`Pages.tsx` already use for their own row deletes; see `use-forms-list.hooks.ts`'s own
14
+ * doc for why a click alone can never delete. What ALSO exists (unchanged by this pass) is
15
+ * `api.updateForm`'s `status` patch, the exact call `FormEditor.tsx`'s own Disable/Enable button
16
+ * already makes — surfaced here too so an operator doesn't have to open the editor just to toggle
17
+ * it. That action stays un-confirmed: `FormEditor.tsx` treats it as reversible either direction (no
18
+ * confirm step there either), so this list doesn't invent a heavier gate the editor itself doesn't
19
+ * have. `.btn-warning`'s tone applies only going active -> disabled, same asymmetry as
20
+ * `FormEditor.tsx`'s "Re-enabling is the safe direction" comment.
21
+ *
22
+ * ## Markup only
23
+ *
24
+ * State, the load effect, and the `api.*` calls live in `hooks/use-forms-list.hooks.ts`. That hook
25
+ * was written during the hooks extraction but never wired — this component kept a byte-identical
26
+ * inline copy of the same logic, so the hook was dead code and this screen was never actually
27
+ * markup-only. Wired here; the duplicate is gone. The two copies had NOT drifted, so this is a
28
+ * pure de-duplication with no behaviour change.
29
+ */
30
+ export interface FormsListProps {
31
+ /**
32
+ * Dependency injection seam for tests — see `RedirectsProps.useRedirectsHook` for the
33
+ * convention. Defaulted to the real hook, so `panels.tsx` passes nothing.
34
+ */
35
+ useFormsListHook?: typeof useWiredFormsList;
36
+ }
37
+ export declare function FormsList({ useFormsListHook }?: FormsListProps, _optional?: Record<string, never>): import("react").JSX.Element;
38
+ export default FormsList;
39
+ //# sourceMappingURL=FormsList.d.ts.map