@rnaga/wp-next-admin 1.0.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 (405) hide show
  1. package/README.md +292 -0
  2. package/client/components/RootLayout.d.ts +13 -0
  3. package/client/components/RootLayout.d.ts.map +1 -0
  4. package/client/components/RootLayout.js +13 -0
  5. package/client/components/WrapperRootLayout.d.ts +9 -0
  6. package/client/components/WrapperRootLayout.d.ts.map +1 -0
  7. package/client/components/WrapperRootLayout.js +5 -0
  8. package/client/components/contents/blogs/Create.d.ts +2 -0
  9. package/client/components/contents/blogs/Create.d.ts.map +1 -0
  10. package/client/components/contents/blogs/Create.js +67 -0
  11. package/client/components/contents/blogs/Edit.d.ts +2 -0
  12. package/client/components/contents/blogs/Edit.d.ts.map +1 -0
  13. package/client/components/contents/blogs/Edit.js +144 -0
  14. package/client/components/contents/blogs/List.d.ts +2 -0
  15. package/client/components/contents/blogs/List.d.ts.map +1 -0
  16. package/client/components/contents/blogs/List.js +56 -0
  17. package/client/components/contents/blogs/index.d.ts +6 -0
  18. package/client/components/contents/blogs/index.d.ts.map +1 -0
  19. package/client/components/contents/blogs/index.js +8 -0
  20. package/client/components/contents/comments/ActionLink.d.ts +5 -0
  21. package/client/components/contents/comments/ActionLink.d.ts.map +1 -0
  22. package/client/components/contents/comments/ActionLink.js +67 -0
  23. package/client/components/contents/comments/List/Reply.d.ts +5 -0
  24. package/client/components/contents/comments/List/Reply.d.ts.map +1 -0
  25. package/client/components/contents/comments/List/Reply.js +33 -0
  26. package/client/components/contents/comments/List/Row.d.ts +5 -0
  27. package/client/components/contents/comments/List/Row.d.ts.map +1 -0
  28. package/client/components/contents/comments/List/Row.js +30 -0
  29. package/client/components/contents/comments/List/Toolbar.d.ts +8 -0
  30. package/client/components/contents/comments/List/Toolbar.d.ts.map +1 -0
  31. package/client/components/contents/comments/List/Toolbar.js +14 -0
  32. package/client/components/contents/comments/List/index.d.ts +5 -0
  33. package/client/components/contents/comments/List/index.d.ts.map +1 -0
  34. package/client/components/contents/comments/List/index.js +38 -0
  35. package/client/components/contents/comments/index.d.ts +7 -0
  36. package/client/components/contents/comments/index.d.ts.map +1 -0
  37. package/client/components/contents/comments/index.js +6 -0
  38. package/client/components/contents/dashboard/index.d.ts +2 -0
  39. package/client/components/contents/dashboard/index.d.ts.map +1 -0
  40. package/client/components/contents/dashboard/index.js +123 -0
  41. package/client/components/contents/index.d.ts +46 -0
  42. package/client/components/contents/index.d.ts.map +1 -0
  43. package/client/components/contents/index.js +28 -0
  44. package/client/components/contents/media/Edit.d.ts +2 -0
  45. package/client/components/contents/media/Edit.d.ts.map +1 -0
  46. package/client/components/contents/media/Edit.js +86 -0
  47. package/client/components/contents/media/List/ActionLink.d.ts +5 -0
  48. package/client/components/contents/media/List/ActionLink.d.ts.map +1 -0
  49. package/client/components/contents/media/List/ActionLink.js +24 -0
  50. package/client/components/contents/media/List/Table.d.ts +5 -0
  51. package/client/components/contents/media/List/Table.d.ts.map +1 -0
  52. package/client/components/contents/media/List/Table.js +38 -0
  53. package/client/components/contents/media/List/Thumbnail.d.ts +5 -0
  54. package/client/components/contents/media/List/Thumbnail.d.ts.map +1 -0
  55. package/client/components/contents/media/List/Thumbnail.js +28 -0
  56. package/client/components/contents/media/List/index.d.ts +2 -0
  57. package/client/components/contents/media/List/index.d.ts.map +1 -0
  58. package/client/components/contents/media/List/index.js +66 -0
  59. package/client/components/contents/media/index.d.ts +5 -0
  60. package/client/components/contents/media/index.d.ts.map +1 -0
  61. package/client/components/contents/media/index.js +6 -0
  62. package/client/components/contents/pages/Edit/Settings.d.ts +2 -0
  63. package/client/components/contents/pages/Edit/Settings.d.ts.map +1 -0
  64. package/client/components/contents/pages/Edit/Settings.js +17 -0
  65. package/client/components/contents/pages/Edit/Toolbar.d.ts +2 -0
  66. package/client/components/contents/pages/Edit/Toolbar.d.ts.map +1 -0
  67. package/client/components/contents/pages/Edit/Toolbar.js +72 -0
  68. package/client/components/contents/pages/Edit/index.d.ts +2 -0
  69. package/client/components/contents/pages/Edit/index.d.ts.map +1 -0
  70. package/client/components/contents/pages/Edit/index.js +43 -0
  71. package/client/components/contents/pages/List/ActionLink.d.ts +5 -0
  72. package/client/components/contents/pages/List/ActionLink.d.ts.map +1 -0
  73. package/client/components/contents/pages/List/ActionLink.js +12 -0
  74. package/client/components/contents/pages/List/Statuses.d.ts +2 -0
  75. package/client/components/contents/pages/List/Statuses.d.ts.map +1 -0
  76. package/client/components/contents/pages/List/Statuses.js +24 -0
  77. package/client/components/contents/pages/List/Toolbar.d.ts +8 -0
  78. package/client/components/contents/pages/List/Toolbar.d.ts.map +1 -0
  79. package/client/components/contents/pages/List/Toolbar.js +14 -0
  80. package/client/components/contents/pages/List/index.d.ts +2 -0
  81. package/client/components/contents/pages/List/index.d.ts.map +1 -0
  82. package/client/components/contents/pages/List/index.js +45 -0
  83. package/client/components/contents/pages/index.d.ts +5 -0
  84. package/client/components/contents/pages/index.d.ts.map +1 -0
  85. package/client/components/contents/pages/index.js +6 -0
  86. package/client/components/contents/posts/Edit/Settings.d.ts +2 -0
  87. package/client/components/contents/posts/Edit/Settings.d.ts.map +1 -0
  88. package/client/components/contents/posts/Edit/Settings.js +19 -0
  89. package/client/components/contents/posts/Edit/Toolbar.d.ts +2 -0
  90. package/client/components/contents/posts/Edit/Toolbar.d.ts.map +1 -0
  91. package/client/components/contents/posts/Edit/Toolbar.js +72 -0
  92. package/client/components/contents/posts/Edit/index.d.ts +2 -0
  93. package/client/components/contents/posts/Edit/index.d.ts.map +1 -0
  94. package/client/components/contents/posts/Edit/index.js +43 -0
  95. package/client/components/contents/posts/List/ActionLink.d.ts +5 -0
  96. package/client/components/contents/posts/List/ActionLink.d.ts.map +1 -0
  97. package/client/components/contents/posts/List/ActionLink.js +12 -0
  98. package/client/components/contents/posts/List/Statuses.d.ts +2 -0
  99. package/client/components/contents/posts/List/Statuses.d.ts.map +1 -0
  100. package/client/components/contents/posts/List/Statuses.js +32 -0
  101. package/client/components/contents/posts/List/Toolbar.d.ts +8 -0
  102. package/client/components/contents/posts/List/Toolbar.d.ts.map +1 -0
  103. package/client/components/contents/posts/List/Toolbar.js +14 -0
  104. package/client/components/contents/posts/List/index.d.ts +2 -0
  105. package/client/components/contents/posts/List/index.d.ts.map +1 -0
  106. package/client/components/contents/posts/List/index.js +46 -0
  107. package/client/components/contents/posts/index.d.ts +5 -0
  108. package/client/components/contents/posts/index.d.ts.map +1 -0
  109. package/client/components/contents/posts/index.js +6 -0
  110. package/client/components/contents/profile/index.d.ts +2 -0
  111. package/client/components/contents/profile/index.d.ts.map +1 -0
  112. package/client/components/contents/profile/index.js +7 -0
  113. package/client/components/contents/revisions/List/History.d.ts +7 -0
  114. package/client/components/contents/revisions/List/History.d.ts.map +1 -0
  115. package/client/components/contents/revisions/List/History.js +37 -0
  116. package/client/components/contents/revisions/List/diff2html.css +11 -0
  117. package/client/components/contents/revisions/List/index.d.ts +9 -0
  118. package/client/components/contents/revisions/List/index.d.ts.map +1 -0
  119. package/client/components/contents/revisions/List/index.js +145 -0
  120. package/client/components/contents/revisions/index.d.ts +2 -0
  121. package/client/components/contents/revisions/index.d.ts.map +1 -0
  122. package/client/components/contents/revisions/index.js +1 -0
  123. package/client/components/contents/roles/List/EditModal.d.ts +8 -0
  124. package/client/components/contents/roles/List/EditModal.d.ts.map +1 -0
  125. package/client/components/contents/roles/List/EditModal.js +153 -0
  126. package/client/components/contents/roles/List/index.d.ts +7 -0
  127. package/client/components/contents/roles/List/index.d.ts.map +1 -0
  128. package/client/components/contents/roles/List/index.js +111 -0
  129. package/client/components/contents/roles/index.d.ts +2 -0
  130. package/client/components/contents/roles/index.d.ts.map +1 -0
  131. package/client/components/contents/roles/index.js +1 -0
  132. package/client/components/contents/settings/index.d.ts +2 -0
  133. package/client/components/contents/settings/index.d.ts.map +1 -0
  134. package/client/components/contents/settings/index.js +67 -0
  135. package/client/components/contents/sites/Create.d.ts +2 -0
  136. package/client/components/contents/sites/Create.d.ts.map +1 -0
  137. package/client/components/contents/sites/Create.js +53 -0
  138. package/client/components/contents/sites/Delete.d.ts +2 -0
  139. package/client/components/contents/sites/Delete.d.ts.map +1 -0
  140. package/client/components/contents/sites/Delete.js +125 -0
  141. package/client/components/contents/sites/Edit.d.ts +2 -0
  142. package/client/components/contents/sites/Edit.d.ts.map +1 -0
  143. package/client/components/contents/sites/Edit.js +120 -0
  144. package/client/components/contents/sites/List.d.ts +2 -0
  145. package/client/components/contents/sites/List.d.ts.map +1 -0
  146. package/client/components/contents/sites/List.js +33 -0
  147. package/client/components/contents/sites/index.d.ts +7 -0
  148. package/client/components/contents/sites/index.d.ts.map +1 -0
  149. package/client/components/contents/sites/index.js +10 -0
  150. package/client/components/contents/terms/List/ActionLink.d.ts +5 -0
  151. package/client/components/contents/terms/List/ActionLink.d.ts.map +1 -0
  152. package/client/components/contents/terms/List/ActionLink.js +44 -0
  153. package/client/components/contents/terms/List/Toolbar.d.ts +8 -0
  154. package/client/components/contents/terms/List/Toolbar.d.ts.map +1 -0
  155. package/client/components/contents/terms/List/Toolbar.js +20 -0
  156. package/client/components/contents/terms/List/index.d.ts +18 -0
  157. package/client/components/contents/terms/List/index.d.ts.map +1 -0
  158. package/client/components/contents/terms/List/index.js +94 -0
  159. package/client/components/contents/terms/index.d.ts +2 -0
  160. package/client/components/contents/terms/index.d.ts.map +1 -0
  161. package/client/components/contents/terms/index.js +1 -0
  162. package/client/components/contents/users/Create.d.ts +2 -0
  163. package/client/components/contents/users/Create.d.ts.map +1 -0
  164. package/client/components/contents/users/Create.js +47 -0
  165. package/client/components/contents/users/Delete.d.ts +2 -0
  166. package/client/components/contents/users/Delete.d.ts.map +1 -0
  167. package/client/components/contents/users/Delete.js +113 -0
  168. package/client/components/contents/users/Edit/Profile/GenerateResetLinkModal.d.ts +6 -0
  169. package/client/components/contents/users/Edit/Profile/GenerateResetLinkModal.d.ts.map +1 -0
  170. package/client/components/contents/users/Edit/Profile/GenerateResetLinkModal.js +40 -0
  171. package/client/components/contents/users/Edit/Profile/ResetPasswordModal.d.ts +6 -0
  172. package/client/components/contents/users/Edit/Profile/ResetPasswordModal.d.ts.map +1 -0
  173. package/client/components/contents/users/Edit/Profile/ResetPasswordModal.js +41 -0
  174. package/client/components/contents/users/Edit/Profile/index.d.ts +4 -0
  175. package/client/components/contents/users/Edit/Profile/index.d.ts.map +1 -0
  176. package/client/components/contents/users/Edit/Profile/index.js +111 -0
  177. package/client/components/contents/users/Edit/Roles/ActionLink.d.ts +6 -0
  178. package/client/components/contents/users/Edit/Roles/ActionLink.d.ts.map +1 -0
  179. package/client/components/contents/users/Edit/Roles/ActionLink.js +63 -0
  180. package/client/components/contents/users/Edit/Roles/Add.d.ts +5 -0
  181. package/client/components/contents/users/Edit/Roles/Add.d.ts.map +1 -0
  182. package/client/components/contents/users/Edit/Roles/Add.js +60 -0
  183. package/client/components/contents/users/Edit/Roles/Edit.d.ts +8 -0
  184. package/client/components/contents/users/Edit/Roles/Edit.d.ts.map +1 -0
  185. package/client/components/contents/users/Edit/Roles/Edit.js +53 -0
  186. package/client/components/contents/users/Edit/Roles/Roles.d.ts +4 -0
  187. package/client/components/contents/users/Edit/Roles/Roles.d.ts.map +1 -0
  188. package/client/components/contents/users/Edit/Roles/Roles.js +41 -0
  189. package/client/components/contents/users/Edit/Roles/context.d.ts +9 -0
  190. package/client/components/contents/users/Edit/Roles/context.d.ts.map +1 -0
  191. package/client/components/contents/users/Edit/Roles/context.js +2 -0
  192. package/client/components/contents/users/Edit/Roles/index.d.ts +3 -0
  193. package/client/components/contents/users/Edit/Roles/index.d.ts.map +1 -0
  194. package/client/components/contents/users/Edit/Roles/index.js +2 -0
  195. package/client/components/contents/users/Edit/index.d.ts +4 -0
  196. package/client/components/contents/users/Edit/index.d.ts.map +1 -0
  197. package/client/components/contents/users/Edit/index.js +66 -0
  198. package/client/components/contents/users/List/CountRoles.d.ts +2 -0
  199. package/client/components/contents/users/List/CountRoles.d.ts.map +1 -0
  200. package/client/components/contents/users/List/CountRoles.js +68 -0
  201. package/client/components/contents/users/List/Toolbar.d.ts +10 -0
  202. package/client/components/contents/users/List/Toolbar.d.ts.map +1 -0
  203. package/client/components/contents/users/List/Toolbar.js +32 -0
  204. package/client/components/contents/users/List/index.d.ts +2 -0
  205. package/client/components/contents/users/List/index.d.ts.map +1 -0
  206. package/client/components/contents/users/List/index.js +30 -0
  207. package/client/components/contents/users/index.d.ts +9 -0
  208. package/client/components/contents/users/index.d.ts.map +1 -0
  209. package/client/components/contents/users/index.js +10 -0
  210. package/client/components/layout/Layout.d.ts +3 -0
  211. package/client/components/layout/Layout.d.ts.map +1 -0
  212. package/client/components/layout/Layout.js +69 -0
  213. package/client/components/layout/Main.d.ts +2 -0
  214. package/client/components/layout/Main.d.ts.map +1 -0
  215. package/client/components/layout/Main.js +12 -0
  216. package/client/components/layout/Overlay.d.ts +2 -0
  217. package/client/components/layout/Overlay.d.ts.map +1 -0
  218. package/client/components/layout/Overlay.js +49 -0
  219. package/client/components/layout/Title.d.ts +2 -0
  220. package/client/components/layout/Title.d.ts.map +1 -0
  221. package/client/components/layout/Title.js +19 -0
  222. package/client/components/layout/WrapperLayout.d.ts +2 -0
  223. package/client/components/layout/WrapperLayout.d.ts.map +1 -0
  224. package/client/components/layout/WrapperLayout.js +5 -0
  225. package/client/components/layout/header/Profile.d.ts +2 -0
  226. package/client/components/layout/header/Profile.d.ts.map +1 -0
  227. package/client/components/layout/header/Profile.js +66 -0
  228. package/client/components/layout/header/index.d.ts +2 -0
  229. package/client/components/layout/header/index.d.ts.map +1 -0
  230. package/client/components/layout/header/index.js +176 -0
  231. package/client/components/layout/sidebar/Collapse.d.ts +4 -0
  232. package/client/components/layout/sidebar/Collapse.d.ts.map +1 -0
  233. package/client/components/layout/sidebar/Collapse.js +53 -0
  234. package/client/components/layout/sidebar/Menus.d.ts +5 -0
  235. package/client/components/layout/sidebar/Menus.d.ts.map +1 -0
  236. package/client/components/layout/sidebar/Menus.js +76 -0
  237. package/client/components/layout/sidebar/index.d.ts +2 -0
  238. package/client/components/layout/sidebar/index.d.ts.map +1 -0
  239. package/client/components/layout/sidebar/index.js +86 -0
  240. package/client/components/utils/ErrorFallback.d.ts +6 -0
  241. package/client/components/utils/ErrorFallback.d.ts.map +1 -0
  242. package/client/components/utils/ErrorFallback.js +36 -0
  243. package/client/components/utils/dropdown/SelectWPAvailableSite.d.ts +7 -0
  244. package/client/components/utils/dropdown/SelectWPAvailableSite.d.ts.map +1 -0
  245. package/client/components/utils/dropdown/SelectWPAvailableSite.js +58 -0
  246. package/client/components/utils/dropdown/SelectWPSite.d.ts +5 -0
  247. package/client/components/utils/dropdown/SelectWPSite.d.ts.map +1 -0
  248. package/client/components/utils/dropdown/SelectWPSite.js +27 -0
  249. package/client/components/utils/dropdown/index.d.ts +2 -0
  250. package/client/components/utils/dropdown/index.d.ts.map +1 -0
  251. package/client/components/utils/dropdown/index.js +1 -0
  252. package/client/components/utils/index.d.ts +2 -0
  253. package/client/components/utils/index.d.ts.map +1 -0
  254. package/client/components/utils/index.js +1 -0
  255. package/client/components/utils/link/AdminLink.d.ts +46 -0
  256. package/client/components/utils/link/AdminLink.d.ts.map +1 -0
  257. package/client/components/utils/link/AdminLink.js +61 -0
  258. package/client/components/utils/link/index.d.ts +2 -0
  259. package/client/components/utils/link/index.d.ts.map +1 -0
  260. package/client/components/utils/link/index.js +2 -0
  261. package/client/components/utils/modal/CommentModal.d.ts +2 -0
  262. package/client/components/utils/modal/CommentModal.d.ts.map +1 -0
  263. package/client/components/utils/modal/CommentModal.js +53 -0
  264. package/client/components/utils/modal/TermModal.d.ts +10 -0
  265. package/client/components/utils/modal/TermModal.d.ts.map +1 -0
  266. package/client/components/utils/modal/TermModal.js +70 -0
  267. package/client/components/utils/modal/index.d.ts +3 -0
  268. package/client/components/utils/modal/index.d.ts.map +1 -0
  269. package/client/components/utils/modal/index.js +2 -0
  270. package/client/components/utils/post/PostPanel.d.ts +15 -0
  271. package/client/components/utils/post/PostPanel.d.ts.map +1 -0
  272. package/client/components/utils/post/PostPanel.js +70 -0
  273. package/client/components/utils/post/index.d.ts +4 -0
  274. package/client/components/utils/post/index.d.ts.map +1 -0
  275. package/client/components/utils/post/index.js +3 -0
  276. package/client/components/utils/post/link/PostActionLink.d.ts +9 -0
  277. package/client/components/utils/post/link/PostActionLink.d.ts.map +1 -0
  278. package/client/components/utils/post/link/PostActionLink.js +90 -0
  279. package/client/components/utils/post/link/PostRowLinks.d.ts +8 -0
  280. package/client/components/utils/post/link/PostRowLinks.d.ts.map +1 -0
  281. package/client/components/utils/post/link/PostRowLinks.js +30 -0
  282. package/client/components/utils/post/link/index.d.ts +3 -0
  283. package/client/components/utils/post/link/index.d.ts.map +1 -0
  284. package/client/components/utils/post/link/index.js +2 -0
  285. package/client/components/utils/post/settings/Categories.d.ts +2 -0
  286. package/client/components/utils/post/settings/Categories.d.ts.map +1 -0
  287. package/client/components/utils/post/settings/Categories.js +23 -0
  288. package/client/components/utils/post/settings/Discussion.d.ts +2 -0
  289. package/client/components/utils/post/settings/Discussion.d.ts.map +1 -0
  290. package/client/components/utils/post/settings/Discussion.js +25 -0
  291. package/client/components/utils/post/settings/Excerpt.d.ts +2 -0
  292. package/client/components/utils/post/settings/Excerpt.d.ts.map +1 -0
  293. package/client/components/utils/post/settings/Excerpt.js +9 -0
  294. package/client/components/utils/post/settings/FeaturedImage.d.ts +2 -0
  295. package/client/components/utils/post/settings/FeaturedImage.d.ts.map +1 -0
  296. package/client/components/utils/post/settings/FeaturedImage.js +63 -0
  297. package/client/components/utils/post/settings/PageAttributes.d.ts +2 -0
  298. package/client/components/utils/post/settings/PageAttributes.d.ts.map +1 -0
  299. package/client/components/utils/post/settings/PageAttributes.js +23 -0
  300. package/client/components/utils/post/settings/Revisions.d.ts +2 -0
  301. package/client/components/utils/post/settings/Revisions.d.ts.map +1 -0
  302. package/client/components/utils/post/settings/Revisions.js +44 -0
  303. package/client/components/utils/post/settings/Summary.d.ts +2 -0
  304. package/client/components/utils/post/settings/Summary.d.ts.map +1 -0
  305. package/client/components/utils/post/settings/Summary.js +58 -0
  306. package/client/components/utils/post/settings/Tags.d.ts +2 -0
  307. package/client/components/utils/post/settings/Tags.d.ts.map +1 -0
  308. package/client/components/utils/post/settings/Tags.js +11 -0
  309. package/client/components/utils/post/settings/index.d.ts +9 -0
  310. package/client/components/utils/post/settings/index.d.ts.map +1 -0
  311. package/client/components/utils/post/settings/index.js +8 -0
  312. package/client/hooks/index.d.ts +6 -0
  313. package/client/hooks/index.d.ts.map +1 -0
  314. package/client/hooks/index.js +5 -0
  315. package/client/hooks/use-admin-navigation.d.ts +39 -0
  316. package/client/hooks/use-admin-navigation.d.ts.map +1 -0
  317. package/client/hooks/use-admin-navigation.js +61 -0
  318. package/client/hooks/use-admin-server-actions.d.ts +49 -0
  319. package/client/hooks/use-admin-server-actions.d.ts.map +1 -0
  320. package/client/hooks/use-admin-server-actions.js +13 -0
  321. package/client/hooks/use-admin-user.d.ts +130 -0
  322. package/client/hooks/use-admin-user.d.ts.map +1 -0
  323. package/client/hooks/use-admin-user.js +19 -0
  324. package/client/hooks/use-current-menu.d.ts +3 -0
  325. package/client/hooks/use-current-menu.d.ts.map +1 -0
  326. package/client/hooks/use-current-menu.js +37 -0
  327. package/client/hooks/use-sidebar.d.ts +27 -0
  328. package/client/hooks/use-sidebar.d.ts.map +1 -0
  329. package/client/hooks/use-sidebar.js +51 -0
  330. package/client/hooks/use-sites.d.ts +136 -0
  331. package/client/hooks/use-sites.d.ts.map +1 -0
  332. package/client/hooks/use-sites.js +43 -0
  333. package/client/utils/get-default-admin-hooks.d.ts +3 -0
  334. package/client/utils/get-default-admin-hooks.d.ts.map +1 -0
  335. package/client/utils/get-default-admin-hooks.js +3 -0
  336. package/client/utils/index.d.ts +2 -0
  337. package/client/utils/index.d.ts.map +1 -0
  338. package/client/utils/index.js +1 -0
  339. package/client/wp-admin/initial-global-state.d.ts +5 -0
  340. package/client/wp-admin/initial-global-state.d.ts.map +1 -0
  341. package/client/wp-admin/initial-global-state.js +46 -0
  342. package/client/wp-admin/use-comment.d.ts +55 -0
  343. package/client/wp-admin/use-comment.d.ts.map +1 -0
  344. package/client/wp-admin/use-comment.js +32 -0
  345. package/client/wp-admin/use-overlay.d.ts +28 -0
  346. package/client/wp-admin/use-overlay.d.ts.map +1 -0
  347. package/client/wp-admin/use-overlay.js +89 -0
  348. package/client/wp-admin.d.ts +27 -0
  349. package/client/wp-admin.d.ts.map +1 -0
  350. package/client/wp-admin.js +49 -0
  351. package/client/wp-hooks/index.d.ts +5 -0
  352. package/client/wp-hooks/index.d.ts.map +1 -0
  353. package/client/wp-hooks/index.js +5 -0
  354. package/client/wp-hooks/menu-blog.hook.d.ts +11 -0
  355. package/client/wp-hooks/menu-blog.hook.d.ts.map +1 -0
  356. package/client/wp-hooks/menu-blog.hook.js +236 -0
  357. package/client/wp-hooks/menu-site.hook.d.ts +11 -0
  358. package/client/wp-hooks/menu-site.hook.d.ts.map +1 -0
  359. package/client/wp-hooks/menu-site.hook.js +171 -0
  360. package/client/wp-hooks/preload-modal.hook.d.ts +10 -0
  361. package/client/wp-hooks/preload-modal.hook.d.ts.map +1 -0
  362. package/client/wp-hooks/preload-modal.hook.js +45 -0
  363. package/client/wp-hooks/themes.hook.d.ts +9 -0
  364. package/client/wp-hooks/themes.hook.d.ts.map +1 -0
  365. package/client/wp-hooks/themes.hook.js +32 -0
  366. package/package.json +64 -0
  367. package/server/actions/dashboard.d.ts +141 -0
  368. package/server/actions/dashboard.d.ts.map +1 -0
  369. package/server/actions/dashboard.js +52 -0
  370. package/server/components/Page.d.ts +2 -0
  371. package/server/components/Page.d.ts.map +1 -0
  372. package/server/components/Page.js +3 -0
  373. package/server/components/RootLayout.d.ts +5 -0
  374. package/server/components/RootLayout.d.ts.map +1 -0
  375. package/server/components/RootLayout.js +57 -0
  376. package/server/components/RootPage.d.ts +2 -0
  377. package/server/components/RootPage.d.ts.map +1 -0
  378. package/server/components/RootPage.js +19 -0
  379. package/server/utils/get-default-admin-hooks.d.ts +3 -0
  380. package/server/utils/get-default-admin-hooks.d.ts.map +1 -0
  381. package/server/utils/get-default-admin-hooks.js +4 -0
  382. package/server/utils/index.d.ts +2 -0
  383. package/server/utils/index.d.ts.map +1 -0
  384. package/server/utils/index.js +1 -0
  385. package/server/wp-admin.d.ts +40 -0
  386. package/server/wp-admin.d.ts.map +1 -0
  387. package/server/wp-admin.js +58 -0
  388. package/server/wp-hooks/index.d.ts +3 -0
  389. package/server/wp-hooks/index.d.ts.map +1 -0
  390. package/server/wp-hooks/index.js +3 -0
  391. package/server/wp-hooks/next-admin-init.hook.d.ts +15 -0
  392. package/server/wp-hooks/next-admin-init.hook.d.ts.map +1 -0
  393. package/server/wp-hooks/next-admin-init.hook.js +65 -0
  394. package/types/client/form-data.d.ts +27 -0
  395. package/types/client/global-ref.d.ts +7 -0
  396. package/types/client/global-state.d.ts +78 -0
  397. package/types/client/index.d.ts +5 -0
  398. package/types/client/menus.d.ts +39 -0
  399. package/types/client.d.ts +40 -0
  400. package/types/hooks/actions.d.ts +4 -0
  401. package/types/hooks/filters.d.ts +39 -0
  402. package/types/hooks/index.d.ts +2 -0
  403. package/types/index.d.ts +4 -0
  404. package/types/server-actions.d.ts +21 -0
  405. package/types/theme.d.ts +33 -0
@@ -0,0 +1,7 @@
1
+ import type * as wpTypes from "@rnaga/wp-node/types";
2
+ export type EditState = undefined | {
3
+ role: wpTypes.Role | undefined;
4
+ roleName: string | undefined;
5
+ };
6
+ export declare const List: () => import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/contents/roles/List/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGrD,MAAM,MAAM,SAAS,GACjB,SAAS,GACT;IACE,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEN,eAAO,MAAM,IAAI,+CAwNhB,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useState, useTransition } from "react";
3
+ import { Box, Stack } from "@mui/material";
4
+ import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
5
+ import { Button } from "@rnaga/wp-next-ui/Button";
6
+ import { ActionTd, Table, Td, Th, THead, Tr } from "@rnaga/wp-next-ui/list";
7
+ import { Loading } from "@rnaga/wp-next-ui/Loading";
8
+ import { Select } from "@rnaga/wp-next-ui/Select";
9
+ import { Typography } from "@rnaga/wp-next-ui/Typography";
10
+ import * as wpDefaults from "@rnaga/wp-node/defaults";
11
+ import { AdminLink } from "../../../../components/utils/link";
12
+ import { useAdminNavigation, useSites } from "../../../../hooks/";
13
+ import { useWPAdmin } from "../../../../wp-admin";
14
+ import { EditModal } from "./EditModal";
15
+ export const List = () => {
16
+ const defaultRoleNames = Object.keys(wpDefaults.roles);
17
+ const { site, overlay } = useWPAdmin();
18
+ const { actions, safeParse, parse } = useServerActions();
19
+ const { queryObject, pushRouter } = useAdminNavigation();
20
+ const { sites: availableSites, blogs: availableBlogs, updateSites, } = useSites();
21
+ const [loading, startTransition] = useTransition();
22
+ const [state, setState] = useState({
23
+ openEditModal: false,
24
+ edit: undefined,
25
+ selectedBlog: undefined,
26
+ selectedRoleName: undefined,
27
+ roleCount: undefined,
28
+ });
29
+ const blogId = parseInt(`${queryObject.blog_id}`) > 0
30
+ ? parseInt(`${queryObject.blog_id}`)
31
+ : availableSites.primary_blog?.blog_id ?? site.blogId;
32
+ useEffect(() => {
33
+ if (!availableBlogs || !blogId) {
34
+ return;
35
+ }
36
+ const blog = !site.isMultiSite
37
+ ? availableSites.primary_blog
38
+ : (() => {
39
+ const blogs = availableBlogs.filter((blog) => blog?.blog_id == queryObject.blog_id);
40
+ return 0 >= blogs.length ? availableBlogs[0] : blogs[0];
41
+ })();
42
+ startTransition(async () => {
43
+ const [roleCount] = await actions.roles
44
+ .count({ blog_id: blogId })
45
+ .then(parse);
46
+ setState({
47
+ ...state,
48
+ selectedBlog: blog,
49
+ roleCount,
50
+ });
51
+ });
52
+ }, [availableBlogs, queryObject.blog_id]);
53
+ const roles = Object.entries(state?.selectedBlog?.blog_roles || {}).filter(([roleName]) => !["anonymous", "superadmin"].includes(roleName));
54
+ const handleSetState = (newState) => () => {
55
+ setState({ ...state, ...newState });
56
+ };
57
+ const handleEdit = (roleName, role) => {
58
+ setState({
59
+ ...state,
60
+ openEditModal: true,
61
+ edit: {
62
+ role,
63
+ roleName,
64
+ },
65
+ });
66
+ };
67
+ const handleDelete = (roleName, role) => {
68
+ overlay.confirm.open(`You are about to delete the ${role.name} role. This action cannot be undone`, async (confirm) => {
69
+ if (!confirm)
70
+ return;
71
+ const result = await actions.roles
72
+ .del(roleName, { blogId })
73
+ .then(safeParse);
74
+ if (!result.success) {
75
+ overlay.snackbar.open("error", result.error);
76
+ return;
77
+ }
78
+ overlay.snackbar.open("success", "Role has been deleted");
79
+ await updateSites();
80
+ });
81
+ };
82
+ const handleClickAddNewRole = () => {
83
+ blogId &&
84
+ setState({
85
+ ...state,
86
+ openEditModal: true,
87
+ edit: {
88
+ role: undefined,
89
+ roleName: undefined,
90
+ },
91
+ });
92
+ };
93
+ const handleSelectBlog = (blogId) => {
94
+ pushRouter({
95
+ blog_id: blogId,
96
+ });
97
+ };
98
+ const showBlogDropdown = site.isMultiSite && availableBlogs && availableBlogs?.length > 0;
99
+ return (_jsxs(_Fragment, { children: [_jsx(EditModal, { open: state.openEditModal, editState: state.edit, blogId: blogId, onClose: handleSetState({ openEditModal: false, edit: undefined }) }), showBlogDropdown && (_jsx(Box, { sx: { display: "flex", mb: 2 }, children: _jsx(Select, { size: "medium", sx: { maxWidth: 400 }, enum: [
100
+ ...availableBlogs.map((blog) => ({
101
+ label: blog?.blogname || "Unknown",
102
+ value: `${blog?.blog_id || 0}`,
103
+ })),
104
+ ], value: `${blogId}`, onChange: (value) => {
105
+ handleSelectBlog(parseInt(value));
106
+ } }) })), _jsx(Loading, { loading: loading, children: _jsxs(Stack, { spacing: 1, children: [_jsxs(Table, { children: [_jsxs(THead, { children: [_jsx(Th, { children: "Name" }), _jsx(Th, { children: "Role" }), _jsx(Th, { children: "Capabilities" }), _jsx(Th, { children: "Users" })] }), _jsx("tbody", { children: roles.map(([roleName, role]) => (_jsxs(Tr, { children: [defaultRoleNames.includes(roleName) ? (_jsx(Td, { style: {
107
+ paddingLeft: 10,
108
+ paddingTop: 5,
109
+ paddingBottom: 5,
110
+ }, children: _jsx(Typography, { size: "medium", bold: true, children: role.name }) })) : (_jsxs(ActionTd, { children: [_jsx(Typography, { size: "medium", bold: true, children: role.name }), _jsxs(Typography, { children: [_jsx(AdminLink, { onClick: () => handleEdit(roleName, role), children: "Edit" }), " ", _jsx(AdminLink, { color: "error", onClick: () => handleDelete(roleName, role), children: "Delete" })] })] })), _jsx(Td, { children: _jsx(Typography, { children: roleName }) }), _jsx(Td, { children: role.capabilities.length }), _jsx(Td, { children: state?.roleCount?.[roleName] ?? 0 })] }, role.name))) })] }), _jsx(Box, { children: _jsx(Button, { size: "medium", onClick: handleClickAddNewRole, children: "Add New Role" }) })] }) })] }));
111
+ };
@@ -0,0 +1,2 @@
1
+ export { List as Roles } from "./List";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/roles/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ export { List as Roles } from "./List";
@@ -0,0 +1,2 @@
1
+ export declare const Settings: () => import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/settings/index.tsx"],"names":[],"mappings":"AAoBA,eAAO,MAAM,QAAQ,sDAwLpB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import moment from "moment-timezone";
3
+ import { useEffect, useState } from "react";
4
+ import { Box, Stack } from "@mui/material";
5
+ import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
6
+ import { Button } from "@rnaga/wp-next-ui/Button";
7
+ import { Checkbox } from "@rnaga/wp-next-ui/Checkbox";
8
+ import { FormControl, FormLabel } from "@rnaga/wp-next-ui/Form";
9
+ import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
10
+ import { Input } from "@rnaga/wp-next-ui/Input";
11
+ import { InputMultiple } from "@rnaga/wp-next-ui/InputMultiple";
12
+ import { SelectAutocomplete } from "@rnaga/wp-next-ui/SelectAutocomplete";
13
+ import { SelectWPTerm } from "@rnaga/wp-next-ui/SelectWPTerm";
14
+ import { useAdminNavigation, useSites } from "../../../hooks";
15
+ import { useWPAdmin } from "../../../wp-admin";
16
+ export const Settings = () => {
17
+ const { site, overlay } = useWPAdmin();
18
+ const { refresh } = useAdminNavigation();
19
+ const { actions, safeParse, parse } = useServerActions();
20
+ const { updateSites } = useSites();
21
+ const { setFormData, formData, submit, setFormReady, formReady } = useFormData("options");
22
+ const [options, setOptions] = useState();
23
+ useEffect(() => {
24
+ (async () => {
25
+ const [options] = await overlay.circular
26
+ .promise(actions.options.getAll())
27
+ .then(parse);
28
+ setOptions(options);
29
+ setFormReady(true);
30
+ })();
31
+ }, []);
32
+ const handleSubmit = async (data) => {
33
+ const result = await overlay.circular
34
+ .promise(actions.options.update(data))
35
+ .then(safeParse);
36
+ if (!result.success) {
37
+ overlay.snackbar.open("error", result.error);
38
+ return;
39
+ }
40
+ overlay.snackbar.open("success", "Settings have been updated");
41
+ updateSites();
42
+ refresh(["header"]);
43
+ };
44
+ const handleCheckbox = (name) => (e) => {
45
+ setFormData({ [name]: e.target.checked ? 1 : 0 });
46
+ };
47
+ if (!options || !formReady)
48
+ return null;
49
+ return (_jsx(Box, { sx: { pb: 10 }, children: _jsxs("form", { onSubmit: submit(handleSubmit), children: [_jsx(Box, { sx: {
50
+ display: "flex",
51
+ justifyContent: "flex-end",
52
+ gap: 1.5,
53
+ }, children: _jsx(Button, { size: "medium", type: "submit", children: "Save" }) }), _jsxs(Stack, { spacing: 2, sx: { rowGap: 1, display: "flex" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Blog Name" }), _jsx(Input, { size: "large", name: "blogname", value: options.blogname, placeholder: "Blog Name" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Blog Description" }), _jsx(Input, { size: "large", name: "blogdescription", value: options.blogdescription, placeholder: "Blog Description" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Administration Email Address" }), _jsx(Input, { size: "large", name: "admin_email", value: options.admin_email, placeholder: "Administration Email Address" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Timezone" }), _jsx(SelectAutocomplete, { size: "medium", onChange: (value) => {
54
+ setFormData({ timezone_string: value });
55
+ }, value: options.timezone_string || "Etc/UTC", items: moment.tz.names().map((name) => ({
56
+ label: name,
57
+ value: name,
58
+ })), disableClearable: true })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Default Post Category" }), _jsx(SelectWPTerm, { size: "medium", taxonomy: "category", defaultValue: options.default_category, onChange: (term) => setFormData({ default_category: term.term_id }) })] }), !site.isMultiSite && (_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Membership" }), _jsx(Checkbox, { size: "medium", defaultChecked: options.users_can_register == "1", onChange: handleCheckbox("users_can_register"), label: "Anyone can register" })] })), _jsxs(Stack, { spacing: 1.5, children: [_jsx(FormLabel, { children: "Comments Settings" }), _jsx(Checkbox, { size: "medium", defaultChecked: options.require_name_email == "1", onChange: handleCheckbox("require_name_email"), label: "Comment author must fill out name and email" }), _jsx(Checkbox, { size: "medium", value: 1, name: "comment_registration", defaultChecked: options.comment_registration == "1", onChange: (e) => console.log(e.target.checked), label: "Users must be registered and logged in to comment" }), _jsx(Checkbox, { size: "medium", value: 1, defaultChecked: options.comment_moderation == "1", onChange: handleCheckbox("comment_moderation"), label: "Comment must be manually approved" }), _jsx(Checkbox, { size: "medium", value: 1, defaultChecked: options.comment_previously_approved == "1", onChange: handleCheckbox("comment_previously_approved"), label: "Comment author must have a previously approved comment" }), _jsx(FormLabel, { children: "Comment Moderation" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
59
+ setFormData({ moderation_keys: value.join("\n") });
60
+ }, value: 0 >= options?.moderation_keys.length
61
+ ? undefined
62
+ : options?.moderation_keys.split("\n") }), _jsx(FormLabel, { children: "Disallowed Comment Keys" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
63
+ setFormData({ disallowed_keys: value.join("\n") });
64
+ }, value: 0 >= options?.disallowed_keys.length
65
+ ? undefined
66
+ : options?.disallowed_keys.split("\n") })] })] })] }) }));
67
+ };
@@ -0,0 +1,2 @@
1
+ export declare const Create: () => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=Create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Create.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/Create.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,MAAM,+CAsFlB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Stack } from "@mui/material";
4
+ import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
5
+ import { Button } from "@rnaga/wp-next-ui/Button";
6
+ import { FormControl, FormLabel } from "@rnaga/wp-next-ui/Form";
7
+ import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
8
+ import { Input } from "@rnaga/wp-next-ui/Input";
9
+ import { Modal, ModalContent } from "@rnaga/wp-next-ui/Modal";
10
+ import { Typography } from "@rnaga/wp-next-ui/Typography";
11
+ import { useAdminNavigation, useSites } from "../../../hooks";
12
+ import { useWPAdmin } from "../../../wp-admin";
13
+ export const Create = () => {
14
+ const wpAdmin = useWPAdmin();
15
+ const { updateSites } = useSites();
16
+ const { wp: { viewport, globalState: { get: globalStateGet, set: globalStateSet }, }, overlay, } = wpAdmin;
17
+ const { formData, submit, validation } = useFormData("site-create");
18
+ const { actions, safeParse } = useServerActions();
19
+ const [loading, setLoading] = useState(false);
20
+ const open = globalStateGet("site-create-site-modal").open;
21
+ const { gotoPath } = useAdminNavigation();
22
+ const validate = (data) => {
23
+ if (data.path.length > 0 && !/^\//.test(data.path)) {
24
+ return [false, "Invalid path"];
25
+ }
26
+ return true;
27
+ };
28
+ const handleSubmit = async (data) => {
29
+ setLoading(true);
30
+ const result = await actions.site.create(data).then(safeParse);
31
+ if (!result.success) {
32
+ overlay.snackbar.open("error", result.error);
33
+ setLoading(false);
34
+ return;
35
+ }
36
+ if (await updateSites()) {
37
+ globalStateSet("site-create-site-modal", { open: false });
38
+ gotoPath("/sites/edit", {
39
+ segment: "site",
40
+ queryParams: {
41
+ id: result.data.siteId,
42
+ },
43
+ });
44
+ }
45
+ setLoading(false);
46
+ };
47
+ const handleClose = () => {
48
+ globalStateSet("site-create-site-modal", { open: false });
49
+ };
50
+ return (_jsx(Modal, { open: open, onClose: handleClose, sx: { zIndex: 2 }, children: _jsxs(ModalContent, { sx: {
51
+ minWidth: 350,
52
+ }, children: [_jsx(Typography, { size: "large", bold: true, sx: { mb: 2 }, children: "New Site" }), _jsx(Typography, { color: "error", children: validation?.error }), _jsx("form", { onSubmit: submit(handleSubmit, validate), children: _jsxs(Stack, { spacing: 2, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Domain" }), _jsx(Input, { size: "medium", name: "domain", required: true })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Path " }), _jsx(Input, { size: "medium", name: "path", value: "/", required: true })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Site Name" }), _jsx(Input, { size: "medium", name: "siteName", required: true })] }), _jsx(Button, { size: "medium", type: "submit", loading: loading, children: "Submit" })] }) })] }) }));
53
+ };
@@ -0,0 +1,2 @@
1
+ export declare const Delete: () => import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=Delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Delete.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/Delete.tsx"],"names":[],"mappings":"AAwBA,eAAO,MAAM,MAAM,sDAmOlB,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { z } from "zod";
4
+ import { Alert, Box, List, ListItem, ListItemText, Radio, RadioGroup, Stack, } from "@mui/material";
5
+ import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
6
+ import { Button } from "@rnaga/wp-next-ui/Button";
7
+ import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
8
+ import { SelectAutocomplete } from "@rnaga/wp-next-ui/SelectAutocomplete";
9
+ import { useWPTheme } from "@rnaga/wp-next-ui/ThemeRegistry";
10
+ import { Typography } from "@rnaga/wp-next-ui/Typography";
11
+ import { useAdminNavigation, useSites } from "../../../hooks";
12
+ import { useWPAdmin } from "../../../wp-admin";
13
+ export const Delete = () => {
14
+ const { searchParams, gotoPath } = useAdminNavigation();
15
+ const wpContext = useWPAdmin();
16
+ const { wp: { error }, overlay, } = wpContext;
17
+ const { sites: availableSites } = useSites();
18
+ const { wpTheme } = useWPTheme();
19
+ const { formData, setFormData, submit } = useFormData("site-delete", {
20
+ initialValue: {
21
+ deleteAll: true,
22
+ newSiteId: 1,
23
+ },
24
+ });
25
+ const { actions, safeParse, parse } = useServerActions();
26
+ const [blogs, setBlogs] = useState();
27
+ const [site, setSite] = useState();
28
+ const [otherSites, setOtherSites] = useState([]);
29
+ const siteId = z
30
+ .string()
31
+ .transform((v) => parseInt(v))
32
+ .parse(searchParams.get("id"));
33
+ useEffect(() => {
34
+ if (1 >= siteId) {
35
+ error.throw("Invalid site id");
36
+ return;
37
+ }
38
+ if (!availableSites.sites?.some((site) => site.site_id == siteId && site.is_superadmin)) {
39
+ error.throw("Not permitted");
40
+ return;
41
+ }
42
+ const otherSites = availableSites.sites?.filter((site) => site.site_id !== siteId);
43
+ if (!otherSites) {
44
+ return;
45
+ }
46
+ setOtherSites(otherSites);
47
+ const fetchData = async () => {
48
+ const resultBlogs = await actions.blog
49
+ .list({
50
+ site: [siteId],
51
+ per_page: 999,
52
+ })
53
+ .then(safeParse);
54
+ if (!resultBlogs.success) {
55
+ error.throw(resultBlogs.error);
56
+ }
57
+ const resultSite = await actions.site.get(siteId).then(safeParse);
58
+ if (!resultSite.success) {
59
+ error.throw(resultSite.error);
60
+ }
61
+ return { blogs: resultBlogs.data, site: resultSite.data };
62
+ };
63
+ overlay.circular.promise(fetchData().then((data) => {
64
+ setBlogs(data.blogs);
65
+ setSite(data.site);
66
+ }));
67
+ setFormData({ newSiteId: otherSites[0].site_id });
68
+ }, []);
69
+ const handleChange = (siteId) => {
70
+ const newSiteId = availableSites.sites?.filter((site) => site.site_id == siteId)[0].site_id;
71
+ if (!newSiteId) {
72
+ error.throw("Unknown error - please try again");
73
+ return;
74
+ }
75
+ setFormData({ deleteAll: false, newSiteId });
76
+ };
77
+ const handleChangeRadio = (v) => {
78
+ console.log(v);
79
+ setFormData({ deleteAll: v === "delete" });
80
+ };
81
+ const validate = (data) => {
82
+ if (!data.deleteAll && 1 >= data.newSiteId) {
83
+ error.throw("Invalid formData");
84
+ return false;
85
+ }
86
+ return true;
87
+ };
88
+ const handleSubmit = () => {
89
+ overlay.confirm.open("This action cannot be undone. This will permanently delete the site.", async (confirm) => {
90
+ if (!confirm) {
91
+ return;
92
+ }
93
+ const serverAction = formData.deleteAll
94
+ ? actions.site.del(siteId)
95
+ : actions.site.del(siteId, { newSiteId: formData.newSiteId });
96
+ await overlay.circular.promise(serverAction).then(parse);
97
+ gotoPath("/sites");
98
+ });
99
+ };
100
+ const handleCancel = () => {
101
+ gotoPath("/sites/edit", {
102
+ queryParams: { id: siteId },
103
+ });
104
+ };
105
+ if (!site) {
106
+ return null;
107
+ }
108
+ return (_jsx("form", { onSubmit: submit(handleSubmit, validate), children: _jsxs(Stack, { children: [_jsx(Alert, { variant: "outlined", severity: "error", sx: { mb: 2 }, children: _jsxs(Typography, { component: "div", size: "medium", color: "error", bold: true, children: [_jsx("b", { children: site.site_meta?.["site_name"] }), " will be deleted."] }) }), blogs && otherSites && (_jsxs(_Fragment, { children: [_jsx(Typography, { size: "medium", children: "The following blogs are associated with this site:" }), _jsx(List, { sx: { listStyleType: "disc" }, children: blogs.map((blog) => (_jsx(ListItemText, { sx: {
109
+ display: "list-item",
110
+ ml: 4,
111
+ }, children: _jsx(Typography, { size: "medium", bold: true, children: blog.blog_meta.blogname ?? `${blog.domain} ${blog.path}` }) }, `${blog.blog_id}`))) }), _jsx(Typography, { children: "What should be done with these blogs?" }), _jsx(Box, { sx: {
112
+ border: "1px solid",
113
+ borderColor: wpTheme.colorScale[400],
114
+ borderRadius: 1,
115
+ }, children: _jsx(RadioGroup, { defaultValue: "delete", name: "site", onChange: (e) => handleChangeRadio(e.target.value), children: _jsxs(List, { children: [_jsxs(ListItem, { children: [_jsx(Radio, { value: "delete" }), _jsx(Typography, { size: "medium", children: "Delete all blogs." })] }), _jsxs(ListItem, { children: [_jsx(Radio, { value: "inherit" }), _jsx(Typography, { size: "medium", children: "Attribute all blogs to:" })] }), formData.deleteAll === false && (_jsx(ListItem, { sx: { pl: 7 }, children: _jsx(SelectAutocomplete, { size: "medium", onChange: (value) => {
116
+ handleChange(parseInt(value));
117
+ }, value: `${formData.newSiteId ?? 1}`, items: otherSites.map((site) => ({
118
+ label: site.sitename,
119
+ value: `${site.site_id}`,
120
+ })), disableClearable: true, slotProps: {
121
+ input: {
122
+ minWidth: 250,
123
+ },
124
+ } }, siteId) }))] }) }) })] })), _jsxs(Box, { sx: { display: "flex", gap: 1, mt: 2 }, children: [_jsx(Button, { size: "medium", type: "submit", children: "Confirm Deletion" }), _jsx(Button, { color: "error", onClick: handleCancel, children: "Cancel" })] })] }) }));
125
+ };
@@ -0,0 +1,2 @@
1
+ export declare const Edit: () => import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=Edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Edit.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/Edit.tsx"],"names":[],"mappings":"AAoBA,eAAO,MAAM,IAAI,sDAwOhB,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { z } from "zod";
4
+ import { Box, Stack } from "@mui/material";
5
+ import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
6
+ import { Button } from "@rnaga/wp-next-ui/Button";
7
+ import { Checkbox } from "@rnaga/wp-next-ui/Checkbox";
8
+ import { FormControl, FormLabel } from "@rnaga/wp-next-ui/Form";
9
+ import { useFormData } from "@rnaga/wp-next-ui/hooks/use-form-data";
10
+ import { IconButtonDelete } from "@rnaga/wp-next-ui/IconButtonDelete";
11
+ import { Input } from "@rnaga/wp-next-ui/Input";
12
+ import { InputMultiple } from "@rnaga/wp-next-ui/InputMultiple";
13
+ import { Loading } from "@rnaga/wp-next-ui/Loading";
14
+ import { Select } from "@rnaga/wp-next-ui/Select";
15
+ import { useAdminNavigation, useSites } from "../../../hooks";
16
+ import { useWPAdmin } from "../../../wp-admin";
17
+ export const Edit = () => {
18
+ const wpContext = useWPAdmin();
19
+ const { wp: { error }, overlay, } = wpContext;
20
+ const { formData, setFormData, submit } = useFormData("site");
21
+ const { actions, execute, parse, safeParse, loading } = useServerActions();
22
+ const { searchParams, refresh, goto, resolvePath } = useAdminNavigation();
23
+ const { sites: availableSites } = useSites();
24
+ const [site, setSite] = useState();
25
+ const siteMetaKeys = [
26
+ "site_name",
27
+ "admin_email",
28
+ "illegal_names",
29
+ "limited_email_domains",
30
+ "banned_email_domains",
31
+ "add_new_users",
32
+ "registration",
33
+ ];
34
+ const siteId = z
35
+ .string()
36
+ .transform((v) => parseInt(v))
37
+ .parse(searchParams.get("id"));
38
+ useEffect(() => {
39
+ if (!availableSites.sites?.some((site) => site.site_id == siteId && site.is_superadmin)) {
40
+ error.throw("Not permitted");
41
+ return;
42
+ }
43
+ execute(actions.site.get(siteId)).then((response) => {
44
+ const [data] = parse(response);
45
+ setSite(data);
46
+ setFormData({
47
+ ...data,
48
+ meta_input: siteMetaKeys.reduce((acc, key) => {
49
+ acc[key] = data.site_meta?.[key];
50
+ return acc;
51
+ }, {}),
52
+ });
53
+ });
54
+ }, [siteId]);
55
+ const handleFormMetaChange = (key, value) => {
56
+ console.log("handleFormMetaChange", key, value);
57
+ setFormData({
58
+ ...formData,
59
+ meta_input: {
60
+ ...formData.meta_input,
61
+ [key]: value,
62
+ },
63
+ });
64
+ };
65
+ const handleSubmit = async (data) => {
66
+ console.log("data", data);
67
+ const result = await execute(actions.site.update(siteId, data)).then(safeParse);
68
+ if (!result.success) {
69
+ overlay.snackbar.open("error", result.error);
70
+ return;
71
+ }
72
+ refresh(["main"]);
73
+ };
74
+ const handleDelete = () => {
75
+ goto(resolvePath("site", {
76
+ append: "/sites/delete",
77
+ queryParams: { id: siteId },
78
+ }));
79
+ };
80
+ const validateDomain = (value) => {
81
+ return /^(?!:\/\/)([a-zA-Z0-9]+\.)?[a-zA-Z0-9][a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$/.test(value)
82
+ ? [true]
83
+ : [false, "Invalid domain"];
84
+ };
85
+ const validateName = (value) => {
86
+ return /^([a-z0-9]+)/.test(value)
87
+ ? [true]
88
+ : [false, "Value can only contain lowercase letters (a-z) and numbers"];
89
+ };
90
+ useEffect(() => {
91
+ console.log("Edit useEffect", formData);
92
+ }, [formData]);
93
+ if (!site) {
94
+ return null;
95
+ }
96
+ return (_jsx(Loading, { loading: loading, children: _jsxs("form", { onSubmit: submit(handleSubmit), children: [_jsxs(Box, { sx: {
97
+ display: "flex",
98
+ justifyContent: "flex-end",
99
+ gap: 1.5,
100
+ }, children: [_jsx(Button, { size: "medium", type: "submit", children: "Save" }), siteId > 1 && (_jsx(IconButtonDelete, { title: "Delete Site", onClick: handleDelete }))] }), _jsxs(Stack, { spacing: 2, sx: { rowGap: 1, display: "flex" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Site Name" }), _jsx(Input, { size: "medium", value: formData.meta_input?.["site_name"], placeholder: "Site Name", onChange: (value) => handleFormMetaChange("site_name", value) })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Site Admin Email" }), _jsx(Input, { size: "medium", value: formData.meta_input?.["admin_email"], placeholder: "Site Admin Email", onChange: (value) => handleFormMetaChange("admin_email", value) })] }), _jsxs(Box, { sx: { display: "grid", gap: 1.5, gridTemplateColumns: "1fr 1fr" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Domain" }), _jsx(Input, { size: "medium", value: site.domain })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Path" }), _jsx(Input, { size: "medium", name: "path", value: site.path })] })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Add New Users" }), _jsx(Checkbox, { size: "medium", defaultChecked: site.site_meta.add_new_users == "1", onChange: (e) => {
101
+ console.log(e.target.checked);
102
+ handleFormMetaChange("add_new_users", e.target.checked ? 1 : 0);
103
+ }, label: "Allow administrators to add new users" })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Allow new registrations" }), _jsx(Select, { size: "medium", value: formData.meta_input?.["registration"] || "none", onChange: (value) => handleFormMetaChange("registration", value), enum: [
104
+ { value: "none", label: "Registration is disabled" },
105
+ { value: "user", label: "User accounts may be registered" },
106
+ {
107
+ value: "blog",
108
+ label: "Logged in users may register new sites",
109
+ },
110
+ {
111
+ value: "all",
112
+ label: "Both sites and user accounts can be registered",
113
+ },
114
+ ] })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Banned Names" }), _jsx(InputMultiple, { onChange: (value) => handleFormMetaChange("illegal_names", value), validate: validateName, value: formData.meta_input?.["illegal_names"] || [], limitTags: 15 })] }), _jsxs(Box, { sx: { display: "grid", gap: 1.5, gridTemplateColumns: "1fr 1fr" }, children: [_jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Limited Email Registrations" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
115
+ console.log("value", value);
116
+ handleFormMetaChange("limited_email_domains", value);
117
+ }, value: formData.meta_input?.["limited_email_domains"] || [], validate: validateDomain, limitTags: 5 })] }), _jsxs(FormControl, { children: [_jsx(FormLabel, { children: "Banned Email Domains" }), _jsx(InputMultiple, { size: "medium", onChange: (value) => {
118
+ handleFormMetaChange("banned_email_domains", value);
119
+ }, value: formData.meta_input?.["banned_email_domains"] || [], validate: validateDomain, limitTags: 5 })] })] })] })] }) }));
120
+ };
@@ -0,0 +1,2 @@
1
+ export declare const List: () => import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=List.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/List.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,IAAI,sDAsEhB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState, useTransition } from "react";
3
+ import { AccordionDetails } from "@mui/material";
4
+ import { useServerActions } from "@rnaga/wp-next-core/client/hooks/use-server-actions";
5
+ import { Accordion } from "@rnaga/wp-next-ui/Accordion";
6
+ import { ActionTd, ListGrid, ListGridItem, ListGridTitle, SortableTh, Table, Td, Th, THead, Tr, } from "@rnaga/wp-next-ui/list";
7
+ import { Loading } from "@rnaga/wp-next-ui/Loading";
8
+ import { Typography } from "@rnaga/wp-next-ui/Typography";
9
+ import { useAdminNavigation } from "../../../hooks/use-admin-navigation";
10
+ import { useAdminUser } from "../../../hooks/use-admin-user";
11
+ import { AdminLink } from "../../utils/link";
12
+ export const List = () => {
13
+ const { navigationStatus, queryObject } = useAdminNavigation();
14
+ const { actions, parse } = useServerActions();
15
+ const { adminUser } = useAdminUser();
16
+ const [sites, setSites] = useState();
17
+ const [loading, startTransition] = useTransition();
18
+ useEffect(() => {
19
+ startTransition(async () => {
20
+ const [sites] = await actions.site
21
+ .list({ per_page: 999, ...queryObject })
22
+ .then(parse);
23
+ setSites(sites);
24
+ });
25
+ }, [navigationStatus]);
26
+ const canEditSite = (siteId) => {
27
+ return adminUser.availableSites.sites?.some((site) => site.site_id == siteId && site.is_superadmin);
28
+ };
29
+ if (!sites) {
30
+ return null;
31
+ }
32
+ return (_jsx(Loading, { loading: loading, children: _jsxs(Table, { children: [_jsxs(THead, { children: [_jsx(SortableTh, { name: "Name", orderby: "id" }), _jsx(SortableTh, { name: "Domain", orderby: "domain", viewport: "desktop" }), _jsx(Th, { viewport: "desktop", children: "Path" })] }), _jsx("tbody", { children: sites?.map((site) => (_jsxs(Tr, { style: { paddingTop: "1em" }, children: [_jsxs(ActionTd, { children: [_jsx(Typography, { children: site.site_name }), canEditSite(site.id) && (_jsx(AdminLink, { subPage: "edit", queryParams: { id: site.id }, children: "Edit" }))] }), _jsx(Td, { viewport: "mobile", children: _jsxs(Accordion, { children: [_jsx(ListGridTitle, { title: site.site_name }), _jsxs(AccordionDetails, { children: [canEditSite(site.id) && (_jsx(AdminLink, { subPage: "edit", queryParams: { id: site.id }, children: "Edit" })), _jsxs(ListGrid, { children: [_jsx(ListGridItem, { title: "Domain", children: site.domain }), _jsx(ListGridItem, { title: "Path", children: site.path })] })] })] }) }), _jsx(Td, { viewport: "desktop", children: site.domain }), _jsx(Td, { viewport: "desktop", children: site.path })] }, `${site.id}`))) })] }) }));
33
+ };
@@ -0,0 +1,7 @@
1
+ export declare const Sites: {
2
+ Create: () => import("react/jsx-runtime").JSX.Element;
3
+ List: () => import("react/jsx-runtime").JSX.Element | null;
4
+ Edit: () => import("react/jsx-runtime").JSX.Element | null;
5
+ Delete: () => import("react/jsx-runtime").JSX.Element | null;
6
+ };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/client/components/contents/sites/index.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK;;;;;CAKjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Create } from "./Create";
2
+ import { List } from "./List";
3
+ import { Edit } from "./Edit";
4
+ import { Delete } from "./Delete";
5
+ export const Sites = {
6
+ Create,
7
+ List,
8
+ Edit,
9
+ Delete,
10
+ };
@@ -0,0 +1,5 @@
1
+ import type * as wpCoreTypes from "@rnaga/wp-next-core/types";
2
+ export declare const ActionLink: (props: {
3
+ term: wpCoreTypes.actions.Terms[number];
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ActionLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionLink.d.ts","sourceRoot":"","sources":["../../../../../../src/client/components/contents/terms/List/ActionLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,WAAW,MAAM,2BAA2B,CAAC;AAW9D,eAAO,MAAM,UAAU,GAAI,OAAO;IAChC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CACzC,4CAyDA,CAAC"}