@strapi/plugin-users-permissions 0.0.0-next.e6eaa3d0563c85f80fd88b258df70a55c057096e → 0.0.0-next.e8d8fc824d0f6a695b2a9ebaa4680ed21c3645ca

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 (250) hide show
  1. package/LICENSE +18 -3
  2. package/admin/src/components/BoundRoute/index.jsx +2 -2
  3. package/admin/src/components/FormModal/Input/index.jsx +32 -31
  4. package/admin/src/components/FormModal/index.jsx +57 -68
  5. package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.jsx +4 -3
  6. package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +13 -22
  7. package/admin/src/components/Permissions/index.jsx +27 -35
  8. package/admin/src/components/Permissions/reducer.js +1 -1
  9. package/admin/src/components/Policies/index.jsx +7 -5
  10. package/admin/src/components/UsersPermissions/index.jsx +15 -7
  11. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  12. package/admin/src/index.js +15 -32
  13. package/admin/src/pages/AdvancedSettings/index.jsx +83 -128
  14. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  15. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  16. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +119 -139
  17. package/admin/src/pages/EmailTemplates/components/EmailTable.jsx +20 -17
  18. package/admin/src/pages/EmailTemplates/index.jsx +36 -62
  19. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  20. package/admin/src/pages/Providers/index.jsx +98 -113
  21. package/admin/src/pages/Providers/utils/forms.js +23 -11
  22. package/admin/src/pages/Roles/constants.js +3 -3
  23. package/admin/src/pages/Roles/hooks/usePlugins.js +4 -4
  24. package/admin/src/pages/Roles/index.jsx +9 -18
  25. package/admin/src/pages/Roles/pages/CreatePage.jsx +53 -58
  26. package/admin/src/pages/Roles/pages/EditPage.jsx +63 -68
  27. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +27 -31
  28. package/admin/src/pages/Roles/pages/ListPage/index.jsx +79 -55
  29. package/admin/src/translations/en.json +1 -1
  30. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  31. package/dist/_chunks/{ar-t5qTFaAD.js → ar-BguGUqwK.js} +1 -1
  32. package/dist/_chunks/ar-BguGUqwK.js.map +1 -0
  33. package/dist/_chunks/{ar-MvD8Ghac.mjs → ar-CK8BRRXB.mjs} +1 -1
  34. package/dist/_chunks/ar-CK8BRRXB.mjs.map +1 -0
  35. package/dist/_chunks/{cs-BMuXwxA1.mjs → cs-BVigMk0l.mjs} +1 -1
  36. package/dist/_chunks/cs-BVigMk0l.mjs.map +1 -0
  37. package/dist/_chunks/{cs-I8N4u-Sd.js → cs-BW8-K_GY.js} +1 -1
  38. package/dist/_chunks/cs-BW8-K_GY.js.map +1 -0
  39. package/dist/_chunks/{de-zs2qqc0W.mjs → de-BKUdRFI4.mjs} +1 -1
  40. package/dist/_chunks/de-BKUdRFI4.mjs.map +1 -0
  41. package/dist/_chunks/{de-YTjtq89K.js → de-owXpVluI.js} +1 -1
  42. package/dist/_chunks/de-owXpVluI.js.map +1 -0
  43. package/dist/_chunks/{dk-HctVBMsG.mjs → dk-BQiTK50l.mjs} +1 -1
  44. package/dist/_chunks/dk-BQiTK50l.mjs.map +1 -0
  45. package/dist/_chunks/{dk-TF-dWjzl.js → dk-LXAnbuBk.js} +1 -1
  46. package/dist/_chunks/dk-LXAnbuBk.js.map +1 -0
  47. package/dist/_chunks/{en-CE3wEy_c.mjs → en-DOHtPf-2.mjs} +2 -2
  48. package/dist/_chunks/en-DOHtPf-2.mjs.map +1 -0
  49. package/dist/_chunks/{en-m608rMZx.js → en-MHo5mcsU.js} +2 -2
  50. package/dist/_chunks/en-MHo5mcsU.js.map +1 -0
  51. package/dist/_chunks/{es-XBQsB8_9.js → es-BwLCLXAQ.js} +1 -1
  52. package/dist/_chunks/es-BwLCLXAQ.js.map +1 -0
  53. package/dist/_chunks/{es-9381tih_.mjs → es-DNgOVMjD.mjs} +1 -1
  54. package/dist/_chunks/es-DNgOVMjD.mjs.map +1 -0
  55. package/dist/_chunks/{fr-CMSc77If.mjs → fr-DkgRugiU.mjs} +1 -1
  56. package/dist/_chunks/fr-DkgRugiU.mjs.map +1 -0
  57. package/dist/_chunks/{fr-6cz3U-IF.js → fr-DkhpSjjm.js} +1 -1
  58. package/dist/_chunks/fr-DkhpSjjm.js.map +1 -0
  59. package/dist/_chunks/{id-RJ934rq-.js → id-BTemOeTZ.js} +1 -1
  60. package/dist/_chunks/id-BTemOeTZ.js.map +1 -0
  61. package/dist/_chunks/{id-SDuyIkZa.mjs → id-BdEsvnaF.mjs} +1 -1
  62. package/dist/_chunks/id-BdEsvnaF.mjs.map +1 -0
  63. package/dist/_chunks/index-BP1KkpZq.js +280 -0
  64. package/dist/_chunks/index-BP1KkpZq.js.map +1 -0
  65. package/dist/_chunks/index-BnvtBuUS.js +365 -0
  66. package/dist/_chunks/index-BnvtBuUS.js.map +1 -0
  67. package/dist/_chunks/{index-YkMqn-9t.js → index-BphRo4l2.js} +56 -53
  68. package/dist/_chunks/index-BphRo4l2.js.map +1 -0
  69. package/dist/_chunks/index-C_5QiATG.mjs +344 -0
  70. package/dist/_chunks/index-C_5QiATG.mjs.map +1 -0
  71. package/dist/_chunks/index-Cn5HftCc-CvJvlZwK.js +11113 -0
  72. package/dist/_chunks/index-Cn5HftCc-CvJvlZwK.js.map +1 -0
  73. package/dist/_chunks/index-Cn5HftCc-Dku5eOkP.mjs +11090 -0
  74. package/dist/_chunks/index-Cn5HftCc-Dku5eOkP.mjs.map +1 -0
  75. package/dist/_chunks/{index-l_QWM0NZ.mjs → index-Cxhs260c.mjs} +239 -256
  76. package/dist/_chunks/index-Cxhs260c.mjs.map +1 -0
  77. package/dist/_chunks/index-D4Ge_-Bp.mjs +262 -0
  78. package/dist/_chunks/index-D4Ge_-Bp.mjs.map +1 -0
  79. package/dist/_chunks/{index-5-krOCaE.mjs → index-D5yExFYc.mjs} +55 -52
  80. package/dist/_chunks/index-D5yExFYc.mjs.map +1 -0
  81. package/dist/_chunks/{index-wiA9qAAp.mjs → index-D_J3MMcj.mjs} +105 -103
  82. package/dist/_chunks/index-D_J3MMcj.mjs.map +1 -0
  83. package/dist/_chunks/{index-dnfs8wOQ.js → index-DoogNdMf.js} +109 -108
  84. package/dist/_chunks/index-DoogNdMf.js.map +1 -0
  85. package/dist/_chunks/{index-Aq7T7skI.js → index-iJPHXbGD.js} +256 -276
  86. package/dist/_chunks/index-iJPHXbGD.js.map +1 -0
  87. package/dist/_chunks/{it-bvH7DgQo.mjs → it-B-rv0E24.mjs} +1 -1
  88. package/dist/_chunks/it-B-rv0E24.mjs.map +1 -0
  89. package/dist/_chunks/{it-YhZOlM2X.js → it-D1rH6V6_.js} +1 -1
  90. package/dist/_chunks/it-D1rH6V6_.js.map +1 -0
  91. package/dist/_chunks/{ja-o_-JPvQv.mjs → ja-C8K-VBPD.mjs} +1 -1
  92. package/dist/_chunks/ja-C8K-VBPD.mjs.map +1 -0
  93. package/dist/_chunks/{ja-xssHUXFv.js → ja-DqShgTMf.js} +1 -1
  94. package/dist/_chunks/ja-DqShgTMf.js.map +1 -0
  95. package/dist/_chunks/{ko-C3mHUSJa.js → ko-B9DGEPWH.js} +1 -1
  96. package/dist/_chunks/ko-B9DGEPWH.js.map +1 -0
  97. package/dist/_chunks/{ko-XJbPSez_.mjs → ko-Busb0wIY.mjs} +1 -1
  98. package/dist/_chunks/ko-Busb0wIY.mjs.map +1 -0
  99. package/dist/_chunks/{ms-II5Ea73J.mjs → ms-ByvsQjRt.mjs} +1 -1
  100. package/dist/_chunks/ms-ByvsQjRt.mjs.map +1 -0
  101. package/dist/_chunks/{ms-d0hfg65Z.js → ms-CPBU3LWf.js} +1 -1
  102. package/dist/_chunks/ms-CPBU3LWf.js.map +1 -0
  103. package/dist/_chunks/{nl-vEy6TN0K.mjs → nl-5qO8Rpcy.mjs} +1 -1
  104. package/dist/_chunks/nl-5qO8Rpcy.mjs.map +1 -0
  105. package/dist/_chunks/{nl-TA7TfK_5.js → nl-CwNB6YoO.js} +1 -1
  106. package/dist/_chunks/nl-CwNB6YoO.js.map +1 -0
  107. package/dist/_chunks/{pl-2VowaFGt.mjs → pl-BdIzifBE.mjs} +1 -1
  108. package/dist/_chunks/pl-BdIzifBE.mjs.map +1 -0
  109. package/dist/_chunks/{pl-0pUL9hdA.js → pl-Do9UD69f.js} +1 -1
  110. package/dist/_chunks/pl-Do9UD69f.js.map +1 -0
  111. package/dist/_chunks/{pt-Rf9W51IO.mjs → pt-BIO24ioG.mjs} +1 -1
  112. package/dist/_chunks/pt-BIO24ioG.mjs.map +1 -0
  113. package/dist/_chunks/{pt-BR-WNOhafR4.js → pt-BR-D7dZhxuP.js} +1 -1
  114. package/dist/_chunks/pt-BR-D7dZhxuP.js.map +1 -0
  115. package/dist/_chunks/{pt-BR-sS1Xp3Jt.mjs → pt-BR-f0p23AQZ.mjs} +1 -1
  116. package/dist/_chunks/pt-BR-f0p23AQZ.mjs.map +1 -0
  117. package/dist/_chunks/{pt-guNR9Gax.js → pt-fdvyOnUp.js} +1 -1
  118. package/dist/_chunks/pt-fdvyOnUp.js.map +1 -0
  119. package/dist/_chunks/{ru-X3BMXDds.js → ru-C94rjPGA.js} +1 -1
  120. package/dist/_chunks/ru-C94rjPGA.js.map +1 -0
  121. package/dist/_chunks/{ru-qKHnd5or.mjs → ru-VWy-IB7K.mjs} +1 -1
  122. package/dist/_chunks/ru-VWy-IB7K.mjs.map +1 -0
  123. package/dist/_chunks/{sk-NWPw1oTN.js → sk-BABEhykl.js} +1 -1
  124. package/dist/_chunks/sk-BABEhykl.js.map +1 -0
  125. package/dist/_chunks/{sk-_Ryr-eTT.mjs → sk-B_LIcepm.mjs} +1 -1
  126. package/dist/_chunks/sk-B_LIcepm.mjs.map +1 -0
  127. package/dist/_chunks/{sv-BqzScFXS.mjs → sv-ABLKOokl.mjs} +1 -1
  128. package/dist/_chunks/sv-ABLKOokl.mjs.map +1 -0
  129. package/dist/_chunks/{sv-76NnbB__.js → sv-Be43LhA9.js} +1 -1
  130. package/dist/_chunks/sv-Be43LhA9.js.map +1 -0
  131. package/dist/_chunks/{th-WsknMEpq.mjs → th-DKyP7ueR.mjs} +1 -1
  132. package/dist/_chunks/th-DKyP7ueR.mjs.map +1 -0
  133. package/dist/_chunks/{th-cbppX21D.js → th-DgVhVLhL.js} +1 -1
  134. package/dist/_chunks/th-DgVhVLhL.js.map +1 -0
  135. package/dist/_chunks/{tr-6mm_Fmz7.js → tr-B_idhkEs.js} +1 -1
  136. package/dist/_chunks/tr-B_idhkEs.js.map +1 -0
  137. package/dist/_chunks/{tr-_DB1F1GW.mjs → tr-qa1Q5UjC.mjs} +1 -1
  138. package/dist/_chunks/tr-qa1Q5UjC.mjs.map +1 -0
  139. package/dist/_chunks/{uk-yxMSQAwI.mjs → uk-BmRqbeQc.mjs} +1 -1
  140. package/dist/_chunks/uk-BmRqbeQc.mjs.map +1 -0
  141. package/dist/_chunks/{uk-sI2I1ogF.js → uk-LHOivnhP.js} +1 -1
  142. package/dist/_chunks/uk-LHOivnhP.js.map +1 -0
  143. package/dist/_chunks/{vi-A3zJxaiI.js → vi-CdVRdKDw.js} +1 -1
  144. package/dist/_chunks/vi-CdVRdKDw.js.map +1 -0
  145. package/dist/_chunks/{vi-xY0zCW3d.mjs → vi-HW-EdMea.mjs} +1 -1
  146. package/dist/_chunks/vi-HW-EdMea.mjs.map +1 -0
  147. package/dist/_chunks/{zh-OFeldzbX.mjs → zh-5hKkVPA4.mjs} +1 -1
  148. package/dist/_chunks/zh-5hKkVPA4.mjs.map +1 -0
  149. package/dist/_chunks/{zh-72SpmFXa.js → zh-Cuq8gMnF.js} +1 -1
  150. package/dist/_chunks/zh-Cuq8gMnF.js.map +1 -0
  151. package/dist/_chunks/{zh-Hans-E84cu4kP.mjs → zh-Hans-BHilK-yc.mjs} +1 -1
  152. package/dist/_chunks/zh-Hans-BHilK-yc.mjs.map +1 -0
  153. package/dist/_chunks/{zh-Hans-ArWWtyP4.js → zh-Hans-GQDMKtY4.js} +1 -1
  154. package/dist/_chunks/zh-Hans-GQDMKtY4.js.map +1 -0
  155. package/dist/admin/index.js +1 -2
  156. package/dist/admin/index.js.map +1 -1
  157. package/dist/admin/index.mjs +1 -2
  158. package/dist/admin/index.mjs.map +1 -1
  159. package/package.json +27 -28
  160. package/server/bootstrap/index.js +18 -51
  161. package/server/bootstrap/users-permissions-actions.js +6 -0
  162. package/server/config.js +29 -0
  163. package/server/content-types/user/index.js +0 -1
  164. package/server/controllers/auth.js +62 -63
  165. package/server/controllers/content-manager-user.js +28 -30
  166. package/server/controllers/role.js +17 -4
  167. package/server/controllers/user.js +8 -9
  168. package/server/controllers/validation/auth.js +81 -25
  169. package/server/graphql/types/index.js +1 -0
  170. package/server/graphql/types/me.js +1 -0
  171. package/server/graphql/types/user-input.js +20 -0
  172. package/server/middlewares/rateLimit.js +1 -1
  173. package/server/register.js +1 -1
  174. package/server/services/jwt.js +3 -3
  175. package/server/services/permission.js +3 -7
  176. package/server/services/providers-registry.js +469 -261
  177. package/server/services/providers.js +10 -5
  178. package/server/services/role.js +15 -13
  179. package/server/services/user.js +56 -19
  180. package/server/services/users-permissions.js +15 -13
  181. package/server/utils/index.d.ts +2 -1
  182. package/server/utils/sanitize/sanitizers.js +7 -3
  183. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  184. package/admin/src/pages/Roles/pages/ListPage/utils/api.js +0 -30
  185. package/dist/_chunks/ar-MvD8Ghac.mjs.map +0 -1
  186. package/dist/_chunks/ar-t5qTFaAD.js.map +0 -1
  187. package/dist/_chunks/cs-BMuXwxA1.mjs.map +0 -1
  188. package/dist/_chunks/cs-I8N4u-Sd.js.map +0 -1
  189. package/dist/_chunks/de-YTjtq89K.js.map +0 -1
  190. package/dist/_chunks/de-zs2qqc0W.mjs.map +0 -1
  191. package/dist/_chunks/dk-HctVBMsG.mjs.map +0 -1
  192. package/dist/_chunks/dk-TF-dWjzl.js.map +0 -1
  193. package/dist/_chunks/en-CE3wEy_c.mjs.map +0 -1
  194. package/dist/_chunks/en-m608rMZx.js.map +0 -1
  195. package/dist/_chunks/es-9381tih_.mjs.map +0 -1
  196. package/dist/_chunks/es-XBQsB8_9.js.map +0 -1
  197. package/dist/_chunks/fr-6cz3U-IF.js.map +0 -1
  198. package/dist/_chunks/fr-CMSc77If.mjs.map +0 -1
  199. package/dist/_chunks/id-RJ934rq-.js.map +0 -1
  200. package/dist/_chunks/id-SDuyIkZa.mjs.map +0 -1
  201. package/dist/_chunks/index-5-krOCaE.mjs.map +0 -1
  202. package/dist/_chunks/index-Aq7T7skI.js.map +0 -1
  203. package/dist/_chunks/index-LN8gSFZ3.mjs +0 -385
  204. package/dist/_chunks/index-LN8gSFZ3.mjs.map +0 -1
  205. package/dist/_chunks/index-RWAJu_-T.js +0 -407
  206. package/dist/_chunks/index-RWAJu_-T.js.map +0 -1
  207. package/dist/_chunks/index-SICvbeQf.mjs +0 -301
  208. package/dist/_chunks/index-SICvbeQf.mjs.map +0 -1
  209. package/dist/_chunks/index-YkMqn-9t.js.map +0 -1
  210. package/dist/_chunks/index-_wwOOuf_.js +0 -320
  211. package/dist/_chunks/index-_wwOOuf_.js.map +0 -1
  212. package/dist/_chunks/index-dnfs8wOQ.js.map +0 -1
  213. package/dist/_chunks/index-l_QWM0NZ.mjs.map +0 -1
  214. package/dist/_chunks/index-wiA9qAAp.mjs.map +0 -1
  215. package/dist/_chunks/it-YhZOlM2X.js.map +0 -1
  216. package/dist/_chunks/it-bvH7DgQo.mjs.map +0 -1
  217. package/dist/_chunks/ja-o_-JPvQv.mjs.map +0 -1
  218. package/dist/_chunks/ja-xssHUXFv.js.map +0 -1
  219. package/dist/_chunks/ko-C3mHUSJa.js.map +0 -1
  220. package/dist/_chunks/ko-XJbPSez_.mjs.map +0 -1
  221. package/dist/_chunks/ms-II5Ea73J.mjs.map +0 -1
  222. package/dist/_chunks/ms-d0hfg65Z.js.map +0 -1
  223. package/dist/_chunks/nl-TA7TfK_5.js.map +0 -1
  224. package/dist/_chunks/nl-vEy6TN0K.mjs.map +0 -1
  225. package/dist/_chunks/pl-0pUL9hdA.js.map +0 -1
  226. package/dist/_chunks/pl-2VowaFGt.mjs.map +0 -1
  227. package/dist/_chunks/pt-BR-WNOhafR4.js.map +0 -1
  228. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +0 -1
  229. package/dist/_chunks/pt-Rf9W51IO.mjs.map +0 -1
  230. package/dist/_chunks/pt-guNR9Gax.js.map +0 -1
  231. package/dist/_chunks/ru-X3BMXDds.js.map +0 -1
  232. package/dist/_chunks/ru-qKHnd5or.mjs.map +0 -1
  233. package/dist/_chunks/sk-NWPw1oTN.js.map +0 -1
  234. package/dist/_chunks/sk-_Ryr-eTT.mjs.map +0 -1
  235. package/dist/_chunks/sv-76NnbB__.js.map +0 -1
  236. package/dist/_chunks/sv-BqzScFXS.mjs.map +0 -1
  237. package/dist/_chunks/th-WsknMEpq.mjs.map +0 -1
  238. package/dist/_chunks/th-cbppX21D.js.map +0 -1
  239. package/dist/_chunks/tr-6mm_Fmz7.js.map +0 -1
  240. package/dist/_chunks/tr-_DB1F1GW.mjs.map +0 -1
  241. package/dist/_chunks/uk-sI2I1ogF.js.map +0 -1
  242. package/dist/_chunks/uk-yxMSQAwI.mjs.map +0 -1
  243. package/dist/_chunks/vi-A3zJxaiI.js.map +0 -1
  244. package/dist/_chunks/vi-xY0zCW3d.mjs.map +0 -1
  245. package/dist/_chunks/zh-72SpmFXa.js.map +0 -1
  246. package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +0 -1
  247. package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +0 -1
  248. package/dist/_chunks/zh-OFeldzbX.mjs.map +0 -1
  249. package/server/bootstrap/grant-config.js +0 -131
  250. package/strapi-server.js +0 -3
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
- const helperPlugin = require("@strapi/helper-plugin");
5
+ const admin = require("@strapi/strapi/admin");
6
6
  const reactRouterDom = require("react-router-dom");
7
- const index = require("./index-YkMqn-9t.js");
7
+ const index = require("./index-BphRo4l2.js");
8
8
  const designSystem = require("@strapi/design-system");
9
9
  const icons = require("@strapi/icons");
10
10
  const formik = require("formik");
@@ -14,8 +14,8 @@ const PropTypes = require("prop-types");
14
14
  const upperFirst = require("lodash/upperFirst");
15
15
  const sortBy = require("lodash/sortBy");
16
16
  const get = require("lodash/get");
17
- const styled = require("styled-components");
18
- const produce = require("immer");
17
+ const styledComponents = require("styled-components");
18
+ const createNextState2 = require("immer");
19
19
  const isEmpty = require("lodash/isEmpty");
20
20
  const without = require("lodash/without");
21
21
  const map = require("lodash/map");
@@ -25,8 +25,7 @@ const take = require("lodash/take");
25
25
  const yup = require("yup");
26
26
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
27
27
  function _interopNamespace(e) {
28
- if (e && e.__esModule)
29
- return e;
28
+ if (e && e.__esModule) return e;
30
29
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
31
30
  if (e) {
32
31
  for (const k in e) {
@@ -47,8 +46,6 @@ const PropTypes__default = /* @__PURE__ */ _interopDefault(PropTypes);
47
46
  const upperFirst__default = /* @__PURE__ */ _interopDefault(upperFirst);
48
47
  const sortBy__default = /* @__PURE__ */ _interopDefault(sortBy);
49
48
  const get__default = /* @__PURE__ */ _interopDefault(get);
50
- const styled__default = /* @__PURE__ */ _interopDefault(styled);
51
- const produce__default = /* @__PURE__ */ _interopDefault(produce);
52
49
  const isEmpty__default = /* @__PURE__ */ _interopDefault(isEmpty);
53
50
  const without__default = /* @__PURE__ */ _interopDefault(without);
54
51
  const map__default = /* @__PURE__ */ _interopDefault(map);
@@ -91,18 +88,19 @@ const init$1 = (initialState2, permissions) => {
91
88
  const collapses = Object.keys(permissions).sort().map((name) => ({ name, isOpen: false }));
92
89
  return { ...initialState2, collapses };
93
90
  };
94
- const activeCheckboxWrapperStyles = styled.css`
91
+ const activeCheckboxWrapperStyles = styledComponents.css`
95
92
  background: ${(props) => props.theme.colors.primary100};
96
- svg {
93
+
94
+ #cog {
97
95
  opacity: 1;
98
96
  }
99
97
  `;
100
- const CheckboxWrapper = styled__default.default(designSystem.Box)`
98
+ const CheckboxWrapper = styledComponents.styled(designSystem.Box)`
101
99
  display: flex;
102
100
  justify-content: space-between;
103
101
  align-items: center;
104
102
 
105
- svg {
103
+ #cog {
106
104
  opacity: 0;
107
105
  path {
108
106
  fill: ${(props) => props.theme.colors.primary600};
@@ -115,7 +113,7 @@ const CheckboxWrapper = styled__default.default(designSystem.Box)`
115
113
  ${activeCheckboxWrapperStyles}
116
114
  }
117
115
  `;
118
- const Border = styled__default.default.div`
116
+ const Border = styledComponents.styled.div`
119
117
  flex: 1;
120
118
  align-self: center;
121
119
  border-top: 1px solid ${({ theme }) => theme.colors.neutral150};
@@ -152,22 +150,21 @@ const SubCategory = ({ subCategory }) => {
152
150
  designSystem.Checkbox,
153
151
  {
154
152
  name: subCategory.name,
155
- value: hasAllActionsSelected,
156
- onValueChange: (value) => handleChangeSelectAll({ target: { name: subCategory.name, value } }),
157
- indeterminate: hasSomeActionsSelected,
153
+ checked: hasSomeActionsSelected ? "indeterminate" : hasAllActionsSelected,
154
+ onCheckedChange: (value) => handleChangeSelectAll({ target: { name: subCategory.name, value } }),
158
155
  children: formatMessage({ id: "app.utils.select-all", defaultMessage: "Select all" })
159
156
  }
160
157
  ) })
161
158
  ] }),
162
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { paddingTop: 6, paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 2, style: { flex: 1 }, children: subCategory.actions.map((action) => {
159
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { paddingTop: 6, paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 2, style: { flex: 1 }, children: subCategory.actions.map((action) => {
163
160
  const name = `${action.name}.enabled`;
164
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(CheckboxWrapper, { isActive: isActionSelected(action.name), padding: 2, hasRadius: true, children: [
161
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(CheckboxWrapper, { isActive: isActionSelected(action.name), padding: 2, hasRadius: true, children: [
165
162
  /* @__PURE__ */ jsxRuntime.jsx(
166
163
  designSystem.Checkbox,
167
164
  {
168
- value: get__default.default(modifiedData, name, false),
165
+ checked: get__default.default(modifiedData, name, false),
169
166
  name,
170
- onValueChange: (value) => onChange({ target: { name, value } }),
167
+ onCheckedChange: (value) => onChange({ target: { name, value } }),
171
168
  children: action.label
172
169
  }
173
170
  ),
@@ -178,7 +175,7 @@ const SubCategory = ({ subCategory }) => {
178
175
  onClick: () => onSelectedAction(action.name),
179
176
  style: { display: "inline-flex", alignItems: "center" },
180
177
  children: [
181
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { as: "span", children: formatMessage(
178
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { tag: "span", children: formatMessage(
182
179
  {
183
180
  id: "app.utils.show-bound-route",
184
181
  defaultMessage: "Show bound route for {route}"
@@ -187,7 +184,7 @@ const SubCategory = ({ subCategory }) => {
187
184
  route: action.name
188
185
  }
189
186
  ) }),
190
- /* @__PURE__ */ jsxRuntime.jsx(icons.Cog, {})
187
+ /* @__PURE__ */ jsxRuntime.jsx(icons.Cog, { id: "cog", cursor: "pointer" })
191
188
  ]
192
189
  }
193
190
  )
@@ -239,7 +236,7 @@ const initialState$1 = {
239
236
  };
240
237
  const reducer$1 = (state, action) => (
241
238
  // eslint-disable-next-line consistent-return
242
- produce__default.default(state, (draftState) => {
239
+ createNextState2.produce(state, (draftState) => {
243
240
  switch (action.type) {
244
241
  case "TOGGLE_COLLAPSE": {
245
242
  draftState.collapses = state.collapses.map((collapse, index2) => {
@@ -258,41 +255,24 @@ const reducer$1 = (state, action) => (
258
255
  const Permissions = () => {
259
256
  const { modifiedData } = useUsersPermissions();
260
257
  const { formatMessage } = reactIntl.useIntl();
261
- const [{ collapses }, dispatch] = React.useReducer(
262
- reducer$1,
263
- initialState$1,
264
- (state) => init$1(state, modifiedData)
265
- );
266
- const handleToggle = (index2) => dispatch({
267
- type: "TOGGLE_COLLAPSE",
268
- index: index2
269
- });
270
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 1, children: collapses.map((collapse, index2) => /* @__PURE__ */ jsxRuntime.jsxs(
271
- designSystem.Accordion,
272
- {
273
- expanded: collapse.isOpen,
274
- onToggle: () => handleToggle(index2),
275
- variant: index2 % 2 === 0 ? "secondary" : void 0,
276
- children: [
277
- /* @__PURE__ */ jsxRuntime.jsx(
278
- designSystem.AccordionToggle,
258
+ const [{ collapses }] = React.useReducer(reducer$1, initialState$1, (state) => init$1(state, modifiedData));
259
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Root, { size: "M", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 1, children: collapses.map((collapse, index2) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: collapse.name, children: [
260
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Header, { variant: index2 % 2 === 0 ? "secondary" : void 0, children: /* @__PURE__ */ jsxRuntime.jsx(
261
+ designSystem.Accordion.Trigger,
262
+ {
263
+ caretPosition: "right",
264
+ description: formatMessage(
279
265
  {
280
- title: formatPluginName(collapse.name),
281
- description: formatMessage(
282
- {
283
- id: "users-permissions.Plugin.permissions.plugins.description",
284
- defaultMessage: "Define all allowed actions for the {name} plugin."
285
- },
286
- { name: collapse.name }
287
- ),
288
- variant: index2 % 2 ? "primary" : "secondary"
289
- }
266
+ id: "users-permissions.Plugin.permissions.plugins.description",
267
+ defaultMessage: "Define all allowed actions for the {name} plugin."
268
+ },
269
+ { name: collapse.name }
290
270
  ),
291
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.AccordionContent, { children: /* @__PURE__ */ jsxRuntime.jsx(PermissionRow, { permissions: modifiedData[collapse.name], name: collapse.name }) })
292
- ]
293
- },
294
- collapse.name
295
- )) });
271
+ children: formatPluginName(collapse.name)
272
+ }
273
+ ) }),
274
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(PermissionRow, { permissions: modifiedData[collapse.name], name: collapse.name }) })
275
+ ] }, collapse.name)) }) });
296
276
  };
297
277
  const getMethodColor = (verb) => {
298
278
  switch (verb) {
@@ -333,7 +313,7 @@ const getMethodColor = (verb) => {
333
313
  }
334
314
  }
335
315
  };
336
- const MethodBox = styled__default.default(designSystem.Box)`
316
+ const MethodBox = styledComponents.styled(designSystem.Box)`
337
317
  margin: -1px;
338
318
  border-radius: ${({ theme }) => theme.spaces[1]} 0 0 ${({ theme }) => theme.spaces[1]};
339
319
  `;
@@ -344,7 +324,7 @@ function BoundRoute({ route }) {
344
324
  const [controller = "", action = ""] = title ? title.split(".") : [];
345
325
  const colors = getMethodColor(route.method);
346
326
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
347
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "delta", as: "h3", children: [
327
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "delta", tag: "h3", children: [
348
328
  formatMessage({
349
329
  id: "users-permissions.BoundRoute.title",
350
330
  defaultMessage: "Bound route to"
@@ -387,7 +367,7 @@ const Policies = () => {
387
367
  const pathResolved = path.slice(1).join(".");
388
368
  const displayedRoutes = isEmpty__default.default(controllerRoutes) ? [] : controllerRoutes.filter((o) => o.handler.endsWith(pathResolved));
389
369
  return /* @__PURE__ */ jsxRuntime.jsx(
390
- designSystem.GridItem,
370
+ designSystem.Grid.Item,
391
371
  {
392
372
  col: 5,
393
373
  background: "neutral150",
@@ -396,15 +376,17 @@ const Policies = () => {
396
376
  paddingLeft: 7,
397
377
  paddingRight: 7,
398
378
  style: { minHeight: "100%" },
379
+ direction: "column",
380
+ alignItems: "stretch",
399
381
  children: selectedAction ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: displayedRoutes.map((route, key) => (
400
382
  // eslint-disable-next-line react/no-array-index-key
401
383
  /* @__PURE__ */ jsxRuntime.jsx(BoundRoute, { route }, key)
402
384
  )) }) : /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
403
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h3", children: formatMessage({
385
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h3", children: formatMessage({
404
386
  id: "users-permissions.Policies.header.title",
405
387
  defaultMessage: "Advanced settings"
406
388
  }) }),
407
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "p", textColor: "neutral600", children: formatMessage({
389
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "p", textColor: "neutral600", children: formatMessage({
408
390
  id: "users-permissions.Policies.header.hint",
409
391
  defaultMessage: "Select the application's actions or the plugin's actions and click on the cog icon to display the bound route"
410
392
  }) })
@@ -427,7 +409,7 @@ const initialState = {
427
409
  selectedAction: "",
428
410
  policies: []
429
411
  };
430
- const reducer = (state, action) => produce__default.default(state, (draftState) => {
412
+ const reducer = (state, action) => createNextState2.produce(state, (draftState) => {
431
413
  switch (action.type) {
432
414
  case "ON_CHANGE": {
433
415
  const keysLength = action.keys.length;
@@ -506,20 +488,32 @@ const UsersPermissions = React.forwardRef(({ permissions, routes }, ref) => {
506
488
  onChangeSelectAll: handleChangeSelectAll,
507
489
  onSelectedAction: handleSelectedAction
508
490
  };
509
- return /* @__PURE__ */ jsxRuntime.jsx(UsersPermissionsProvider, { value: providerValue, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { gap: 0, shadow: "filterShadow", hasRadius: true, background: "neutral0", children: [
510
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 7, paddingTop: 6, paddingBottom: 6, paddingLeft: 7, paddingRight: 7, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: [
511
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
512
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h2", children: formatMessage({
513
- id: index.getTrad("Plugins.header.title"),
514
- defaultMessage: "Permissions"
515
- }) }),
516
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "p", textColor: "neutral600", children: formatMessage({
517
- id: index.getTrad("Plugins.header.description"),
518
- defaultMessage: "Only actions bound by a route are listed below."
519
- }) })
520
- ] }),
521
- /* @__PURE__ */ jsxRuntime.jsx(Permissions, {})
522
- ] }) }),
491
+ return /* @__PURE__ */ jsxRuntime.jsx(UsersPermissionsProvider, { value: providerValue, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 0, shadow: "filterShadow", hasRadius: true, background: "neutral0", children: [
492
+ /* @__PURE__ */ jsxRuntime.jsx(
493
+ designSystem.Grid.Item,
494
+ {
495
+ col: 7,
496
+ paddingTop: 6,
497
+ paddingBottom: 6,
498
+ paddingLeft: 7,
499
+ paddingRight: 7,
500
+ direction: "column",
501
+ alignItems: "stretch",
502
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: [
503
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
504
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
505
+ id: index.getTrad("Plugins.header.title"),
506
+ defaultMessage: "Permissions"
507
+ }) }),
508
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "p", textColor: "neutral600", children: formatMessage({
509
+ id: index.getTrad("Plugins.header.description"),
510
+ defaultMessage: "Only actions bound by a route are listed below."
511
+ }) })
512
+ ] }),
513
+ /* @__PURE__ */ jsxRuntime.jsx(Permissions, {})
514
+ ] })
515
+ }
516
+ ),
523
517
  /* @__PURE__ */ jsxRuntime.jsx(Policies, {})
524
518
  ] }) });
525
519
  });
@@ -529,8 +523,8 @@ UsersPermissions.propTypes = {
529
523
  };
530
524
  const UsersPermissions$1 = React.memo(UsersPermissions);
531
525
  const createRoleSchema = yup__namespace.object().shape({
532
- name: yup__namespace.string().required(helperPlugin.translatedErrors.required),
533
- description: yup__namespace.string().required(helperPlugin.translatedErrors.required)
526
+ name: yup__namespace.string().required(admin.translatedErrors.required.id),
527
+ description: yup__namespace.string().required(admin.translatedErrors.required.id)
534
528
  });
535
529
  const cleanPermissions = (permissions) => Object.keys(permissions).reduce((acc, current) => {
536
530
  const currentPermission = permissions[current].controllers;
@@ -548,9 +542,9 @@ const cleanPermissions = (permissions) => Object.keys(permissions).reduce((acc,
548
542
  return acc;
549
543
  }, {});
550
544
  const usePlugins = () => {
551
- const toggleNotification = helperPlugin.useNotification();
552
- const { get: get2 } = helperPlugin.useFetchClient();
553
- const { formatAPIError } = helperPlugin.useAPIErrorHandler(index.getTrad);
545
+ const { toggleNotification } = admin.useNotification();
546
+ const { get: get2 } = admin.useFetchClient();
547
+ const { formatAPIError } = admin.useAPIErrorHandler(index.getTrad);
554
548
  const [
555
549
  {
556
550
  data: permissions,
@@ -585,7 +579,7 @@ const usePlugins = () => {
585
579
  React.useEffect(() => {
586
580
  if (permissionsError) {
587
581
  toggleNotification({
588
- type: "warning",
582
+ type: "danger",
589
583
  message: formatAPIError(permissionsError)
590
584
  });
591
585
  }
@@ -593,7 +587,7 @@ const usePlugins = () => {
593
587
  React.useEffect(() => {
594
588
  if (routesError) {
595
589
  toggleNotification({
596
- type: "warning",
590
+ type: "danger",
597
591
  message: formatAPIError(routesError)
598
592
  });
599
593
  }
@@ -611,43 +605,43 @@ const usePlugins = () => {
611
605
  };
612
606
  const CreatePage = () => {
613
607
  const { formatMessage } = reactIntl.useIntl();
614
- const toggleNotification = helperPlugin.useNotification();
615
- const { goBack } = reactRouterDom.useHistory();
616
- const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
608
+ const { toggleNotification } = admin.useNotification();
609
+ const navigate = reactRouterDom.useNavigate();
617
610
  const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins();
618
- const { trackUsage } = helperPlugin.useTracking();
611
+ const { trackUsage } = admin.useTracking();
619
612
  const permissionsRef = React__namespace.useRef();
620
- const { post } = helperPlugin.useFetchClient();
613
+ const { post } = admin.useFetchClient();
621
614
  const mutation = reactQuery.useMutation((body) => post(`/users-permissions/roles`, body), {
622
615
  onError() {
623
616
  toggleNotification({
624
- type: "warning",
625
- message: {
617
+ type: "danger",
618
+ message: formatMessage({
626
619
  id: "notification.error",
627
620
  defaultMessage: "An error occurred"
628
- }
621
+ })
629
622
  });
630
623
  },
631
624
  onSuccess() {
632
625
  trackUsage("didCreateRole");
633
626
  toggleNotification({
634
627
  type: "success",
635
- message: {
628
+ message: formatMessage({
636
629
  id: index.getTrad("Settings.roles.created"),
637
630
  defaultMessage: "Role created"
638
- }
631
+ })
639
632
  });
640
- goBack();
633
+ navigate(-1);
641
634
  }
642
635
  });
643
636
  const handleCreateRoleSubmit = async (data) => {
644
- lockApp();
645
637
  const permissions2 = permissionsRef.current.getPermissions();
646
638
  await mutation.mutate({ ...data, ...permissions2, users: [] });
647
- unlockApp();
648
639
  };
649
640
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { children: [
650
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.SettingsPageTitle, { name: "Roles" }),
641
+ /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Title, { children: formatMessage(
642
+ { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
643
+ { name: "Roles" }
644
+ ) }),
651
645
  /* @__PURE__ */ jsxRuntime.jsx(
652
646
  formik.Formik,
653
647
  {
@@ -655,9 +649,9 @@ const CreatePage = () => {
655
649
  initialValues: { name: "", description: "" },
656
650
  onSubmit: handleCreateRoleSubmit,
657
651
  validationSchema: createRoleSchema,
658
- children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Form, { noValidate: true, onSubmit: handleSubmit, children: [
652
+ children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { noValidate: true, onSubmit: handleSubmit, children: [
659
653
  /* @__PURE__ */ jsxRuntime.jsx(
660
- designSystem.HeaderLayout,
654
+ admin.Layouts.Header,
661
655
  {
662
656
  primaryAction: !isLoadingPlugins && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", loading: mutation.isLoading, startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}), children: formatMessage({
663
657
  id: "global.save",
@@ -673,7 +667,7 @@ const CreatePage = () => {
673
667
  })
674
668
  }
675
669
  ),
676
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(
670
+ /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
677
671
  designSystem.Flex,
678
672
  {
679
673
  background: "neutral0",
@@ -688,40 +682,44 @@ const CreatePage = () => {
688
682
  shadow: "filterShadow",
689
683
  children: [
690
684
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", children: [
691
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h2", children: formatMessage({
685
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
692
686
  id: index.getTrad("EditPage.form.roles"),
693
687
  defaultMessage: "Role details"
694
688
  }) }),
695
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { gap: 4, children: [
696
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
697
- designSystem.TextInput,
689
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 4, children: [
690
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
691
+ designSystem.Field.Root,
698
692
  {
699
693
  name: "name",
700
- value: values.name || "",
701
- onChange: handleChange,
702
- label: formatMessage({
703
- id: "global.name",
704
- defaultMessage: "Name"
705
- }),
706
694
  error: errors?.name ? formatMessage({ id: errors.name, defaultMessage: "Name is required" }) : false,
707
- required: true
695
+ required: true,
696
+ children: [
697
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
698
+ id: "global.name",
699
+ defaultMessage: "Name"
700
+ }) }),
701
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.TextInput, { value: values.name || "", onChange: handleChange }),
702
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
703
+ ]
708
704
  }
709
705
  ) }),
710
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
711
- designSystem.Textarea,
706
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
707
+ designSystem.Field.Root,
712
708
  {
713
- id: "description",
714
- value: values.description || "",
715
- onChange: handleChange,
716
- label: formatMessage({
717
- id: "global.description",
718
- defaultMessage: "Description"
719
- }),
709
+ name: "description",
720
710
  error: errors?.description ? formatMessage({
721
711
  id: errors.description,
722
712
  defaultMessage: "Description is required"
723
713
  }) : false,
724
- required: true
714
+ required: true,
715
+ children: [
716
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
717
+ id: "global.description",
718
+ defaultMessage: "Description"
719
+ }) }),
720
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Textarea, { value: values.description || "", onChange: handleChange }),
721
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
722
+ ]
725
723
  }
726
724
  ) })
727
725
  ] })
@@ -742,15 +740,14 @@ const CreatePage = () => {
742
740
  )
743
741
  ] });
744
742
  };
745
- const ProtectedRolesCreatePage = () => /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.createRole, children: /* @__PURE__ */ jsxRuntime.jsx(CreatePage, {}) });
743
+ const ProtectedRolesCreatePage = () => /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.createRole, children: /* @__PURE__ */ jsxRuntime.jsx(CreatePage, {}) });
746
744
  const EditPage = () => {
747
745
  const { formatMessage } = reactIntl.useIntl();
748
- const toggleNotification = helperPlugin.useNotification();
749
- const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
746
+ const { toggleNotification } = admin.useNotification();
750
747
  const {
751
748
  params: { id }
752
- } = reactRouterDom.useRouteMatch(`/settings/users-permissions/roles/:id`);
753
- const { get: get2 } = helperPlugin.useFetchClient();
749
+ } = reactRouterDom.useMatch(`/settings/users-permissions/roles/:id`);
750
+ const { get: get2 } = admin.useFetchClient();
754
751
  const { isLoading: isLoadingPlugins, routes } = usePlugins();
755
752
  const {
756
753
  data: role,
@@ -763,37 +760,38 @@ const EditPage = () => {
763
760
  return role2;
764
761
  });
765
762
  const permissionsRef = React__namespace.useRef();
766
- const { put } = helperPlugin.useFetchClient();
767
- const { formatAPIError } = helperPlugin.useAPIErrorHandler();
763
+ const { put } = admin.useFetchClient();
764
+ const { formatAPIError } = admin.useAPIErrorHandler();
768
765
  const mutation = reactQuery.useMutation((body) => put(`/users-permissions/roles/${id}`, body), {
769
766
  onError(error) {
770
767
  toggleNotification({
771
- type: "warning",
768
+ type: "danger",
772
769
  message: formatAPIError(error)
773
770
  });
774
771
  },
775
772
  async onSuccess() {
776
773
  toggleNotification({
777
774
  type: "success",
778
- message: {
775
+ message: formatMessage({
779
776
  id: index.getTrad("Settings.roles.created"),
780
777
  defaultMessage: "Role edited"
781
- }
778
+ })
782
779
  });
783
780
  await refetchRole();
784
781
  }
785
782
  });
786
783
  const handleEditRoleSubmit = async (data) => {
787
- lockApp();
788
784
  const permissions = permissionsRef.current.getPermissions();
789
785
  await mutation.mutate({ ...data, ...permissions, users: [] });
790
- unlockApp();
791
786
  };
792
787
  if (isLoadingRole) {
793
- return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {});
788
+ return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Loading, {});
794
789
  }
795
790
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { children: [
796
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.SettingsPageTitle, { name: "Roles" }),
791
+ /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Title, { children: formatMessage(
792
+ { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
793
+ { name: "Roles" }
794
+ ) }),
797
795
  /* @__PURE__ */ jsxRuntime.jsx(
798
796
  formik.Formik,
799
797
  {
@@ -801,11 +799,11 @@ const EditPage = () => {
801
799
  initialValues: { name: role.name, description: role.description },
802
800
  onSubmit: handleEditRoleSubmit,
803
801
  validationSchema: createRoleSchema,
804
- children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Form, { noValidate: true, onSubmit: handleSubmit, children: [
802
+ children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { noValidate: true, onSubmit: handleSubmit, children: [
805
803
  /* @__PURE__ */ jsxRuntime.jsx(
806
- designSystem.HeaderLayout,
804
+ admin.Layouts.Header,
807
805
  {
808
- primaryAction: !isLoadingPlugins && /* @__PURE__ */ jsxRuntime.jsx(
806
+ primaryAction: !isLoadingPlugins ? /* @__PURE__ */ jsxRuntime.jsx(
809
807
  designSystem.Button,
810
808
  {
811
809
  disabled: role.code === "strapi-super-admin",
@@ -817,16 +815,13 @@ const EditPage = () => {
817
815
  defaultMessage: "Save"
818
816
  })
819
817
  }
820
- ),
818
+ ) : null,
821
819
  title: role.name,
822
820
  subtitle: role.description,
823
- navigationAction: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Link, { startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowLeft, {}), to: "/settings/users-permissions/roles", children: formatMessage({
824
- id: "global.back",
825
- defaultMessage: "Back"
826
- }) })
821
+ navigationAction: /* @__PURE__ */ jsxRuntime.jsx(admin.BackButton, { fallback: ".." })
827
822
  }
828
823
  ),
829
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(
824
+ /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
830
825
  designSystem.Flex,
831
826
  {
832
827
  background: "neutral0",
@@ -841,40 +836,47 @@ const EditPage = () => {
841
836
  shadow: "filterShadow",
842
837
  children: [
843
838
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
844
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h2", children: formatMessage({
839
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
845
840
  id: index.getTrad("EditPage.form.roles"),
846
841
  defaultMessage: "Role details"
847
842
  }) }),
848
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { gap: 4, children: [
849
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
850
- designSystem.TextInput,
843
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 4, children: [
844
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
845
+ designSystem.Field.Root,
851
846
  {
852
847
  name: "name",
853
- value: values.name || "",
854
- onChange: handleChange,
855
- label: formatMessage({
856
- id: "global.name",
857
- defaultMessage: "Name"
858
- }),
859
- error: errors?.name ? formatMessage({ id: errors.name, defaultMessage: "Name is required" }) : false,
860
- required: true
848
+ error: errors?.name ? formatMessage({
849
+ id: errors.name,
850
+ defaultMessage: "Name is required"
851
+ }) : false,
852
+ required: true,
853
+ children: [
854
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
855
+ id: "global.name",
856
+ defaultMessage: "Name"
857
+ }) }),
858
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.TextInput, { value: values.name || "", onChange: handleChange }),
859
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
860
+ ]
861
861
  }
862
862
  ) }),
863
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
864
- designSystem.Textarea,
863
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
864
+ designSystem.Field.Root,
865
865
  {
866
- id: "description",
867
- value: values.description || "",
868
- onChange: handleChange,
869
- label: formatMessage({
870
- id: "global.description",
871
- defaultMessage: "Description"
872
- }),
866
+ name: "description",
873
867
  error: errors?.description ? formatMessage({
874
868
  id: errors.description,
875
869
  defaultMessage: "Description is required"
876
870
  }) : false,
877
- required: true
871
+ required: true,
872
+ children: [
873
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
874
+ id: "global.description",
875
+ defaultMessage: "Description"
876
+ }) }),
877
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Textarea, { value: values.description || "", onChange: handleChange }),
878
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
879
+ ]
878
880
  }
879
881
  ) })
880
882
  ] })
@@ -895,18 +897,18 @@ const EditPage = () => {
895
897
  )
896
898
  ] });
897
899
  };
898
- const ProtectedRolesEditPage = () => /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.updateRole, children: /* @__PURE__ */ jsxRuntime.jsx(EditPage, {}) });
899
- const EditLink = styled__default.default(designSystem.Link)`
900
+ const ProtectedRolesEditPage = () => /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.updateRole, children: /* @__PURE__ */ jsxRuntime.jsx(EditPage, {}) });
901
+ const EditLink = styledComponents.styled(designSystem.Link)`
900
902
  align-items: center;
901
- height: ${helperPlugin.pxToRem(32)};
903
+ height: 3.2rem;
904
+ width: 3.2rem;
902
905
  display: flex;
903
906
  justify-content: center;
904
- padding: ${({ theme }) => `${theme.spaces[2]}}`};
905
- width: ${helperPlugin.pxToRem(32)};
907
+ padding: ${({ theme }) => `${theme.spaces[2]}`};
906
908
 
907
909
  svg {
908
- height: ${helperPlugin.pxToRem(12)};
909
- width: ${helperPlugin.pxToRem(12)};
910
+ height: 1.6rem;
911
+ width: 1.6rem;
910
912
 
911
913
  path {
912
914
  fill: ${({ theme }) => theme.colors.neutral500};
@@ -922,19 +924,16 @@ const EditLink = styled__default.default(designSystem.Link)`
922
924
  }
923
925
  }
924
926
  `;
925
- const TableBody = ({ sortedRoles, canDelete, permissions, setRoleToDelete, onDelete }) => {
927
+ const TableBody = ({ sortedRoles, canDelete, canUpdate, setRoleToDelete, onDelete }) => {
926
928
  const { formatMessage } = reactIntl.useIntl();
927
- const { push } = reactRouterDom.useHistory();
929
+ const navigate = reactRouterDom.useNavigate();
928
930
  const [showConfirmDelete, setShowConfirmDelete] = onDelete;
929
931
  const checkCanDeleteRole = (role) => canDelete && !["public", "authenticated"].includes(role.type);
930
932
  const handleClickDelete = (id) => {
931
933
  setRoleToDelete(id);
932
934
  setShowConfirmDelete(!showConfirmDelete);
933
935
  };
934
- const handleClickEdit = (id) => {
935
- push(`/settings/users-permissions/roles/${id}`);
936
- };
937
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: sortedRoles?.map((role) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { ...helperPlugin.onRowClick({ fn: () => handleClickEdit(role.id) }), children: [
936
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: sortedRoles?.map((role) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { cursor: "pointer", onClick: () => navigate(role.id.toString()), children: [
938
937
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "20%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: role.name }) }),
939
938
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "50%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: role.description }) }),
940
939
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "30%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage(
@@ -944,83 +943,59 @@ const TableBody = ({ sortedRoles, canDelete, permissions, setRoleToDelete, onDel
944
943
  },
945
944
  { number: role.nb_users }
946
945
  ) }) }),
947
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "end", ...helperPlugin.stopPropagation, children: [
948
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: permissions.updateRole, children: /* @__PURE__ */ jsxRuntime.jsx(
946
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "end", onClick: (e) => e.stopPropagation(), children: [
947
+ canUpdate ? /* @__PURE__ */ jsxRuntime.jsx(
949
948
  EditLink,
950
949
  {
951
- to: `/settings/users-permissions/roles/${role.id}`,
950
+ tag: reactRouterDom.NavLink,
951
+ to: role.id.toString(),
952
952
  "aria-label": formatMessage(
953
953
  { id: "app.component.table.edit", defaultMessage: "Edit {target}" },
954
954
  { target: `${role.name}` }
955
955
  ),
956
956
  children: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {})
957
957
  }
958
- ) }),
959
- checkCanDeleteRole(role) && /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: permissions.deleteRole, children: /* @__PURE__ */ jsxRuntime.jsx(
958
+ ) : null,
959
+ checkCanDeleteRole(role) && /* @__PURE__ */ jsxRuntime.jsx(
960
960
  designSystem.IconButton,
961
961
  {
962
- onClick: () => handleClickDelete(role.id),
963
- noBorder: true,
964
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {}),
962
+ onClick: () => handleClickDelete(role.id.toString()),
963
+ variant: "ghost",
965
964
  label: formatMessage(
966
965
  { id: "global.delete-target", defaultMessage: "Delete {target}" },
967
966
  { target: `${role.name}` }
968
- )
967
+ ),
968
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {})
969
969
  }
970
- ) })
970
+ )
971
971
  ] }) })
972
972
  ] }, role.name)) });
973
973
  };
974
974
  TableBody.defaultProps = {
975
- canDelete: false
975
+ canDelete: false,
976
+ canUpdate: false
976
977
  };
977
978
  TableBody.propTypes = {
978
979
  onDelete: PropTypes__default.default.array.isRequired,
979
- permissions: PropTypes__default.default.object.isRequired,
980
980
  setRoleToDelete: PropTypes__default.default.func.isRequired,
981
981
  sortedRoles: PropTypes__default.default.array.isRequired,
982
- canDelete: PropTypes__default.default.bool
983
- };
984
- const fetchData = async (toggleNotification, notifyStatus) => {
985
- try {
986
- const { get: get2 } = helperPlugin.getFetchClient();
987
- const { data } = await get2("/users-permissions/roles");
988
- notifyStatus("The roles have loaded successfully");
989
- return data;
990
- } catch (err) {
991
- toggleNotification({
992
- type: "warning",
993
- message: { id: "notification.error" }
994
- });
995
- throw new Error(err);
996
- }
997
- };
998
- const deleteData = async (id, toggleNotification) => {
999
- try {
1000
- const { del } = helperPlugin.getFetchClient();
1001
- await del(`/users-permissions/roles/${id}`);
1002
- } catch (error) {
1003
- toggleNotification({
1004
- type: "warning",
1005
- message: { id: "notification.error", defaultMessage: "An error occured" }
1006
- });
1007
- }
982
+ canDelete: PropTypes__default.default.bool,
983
+ canUpdate: PropTypes__default.default.bool
1008
984
  };
1009
985
  const RolesListPage = () => {
1010
- const { trackUsage } = helperPlugin.useTracking();
986
+ const { trackUsage } = admin.useTracking();
1011
987
  const { formatMessage, locale } = reactIntl.useIntl();
1012
- const toggleNotification = helperPlugin.useNotification();
988
+ const { toggleNotification } = admin.useNotification();
1013
989
  const { notifyStatus } = designSystem.useNotifyAT();
1014
- const [{ query }] = helperPlugin.useQueryParams();
990
+ const [{ query }] = admin.useQueryParams();
1015
991
  const _q = query?._q || "";
1016
992
  const [showConfirmDelete, setShowConfirmDelete] = React.useState(false);
1017
- const [isConfirmButtonLoading, setIsConfirmButtonLoading] = React.useState(false);
1018
993
  const [roleToDelete, setRoleToDelete] = React.useState();
1019
- helperPlugin.useFocusWhenNavigate();
994
+ const { del, get: get2 } = admin.useFetchClient();
1020
995
  const {
1021
996
  isLoading: isLoadingForPermissions,
1022
- allowedActions: { canRead, canDelete }
1023
- } = helperPlugin.useRBAC({
997
+ allowedActions: { canRead, canDelete, canCreate, canUpdate }
998
+ } = admin.useRBAC({
1024
999
  create: index.PERMISSIONS.createRole,
1025
1000
  read: index.PERMISSIONS.readRoles,
1026
1001
  update: index.PERMISSIONS.updateRole,
@@ -1031,20 +1006,43 @@ const RolesListPage = () => {
1031
1006
  data: { roles },
1032
1007
  isFetching,
1033
1008
  refetch
1034
- } = reactQuery.useQuery("get-roles", () => fetchData(toggleNotification, notifyStatus), {
1009
+ } = reactQuery.useQuery("get-roles", () => fetchData(toggleNotification, formatMessage, notifyStatus), {
1035
1010
  initialData: {},
1036
1011
  enabled: canRead
1037
1012
  });
1038
- const { includes } = helperPlugin.useFilter(locale, {
1013
+ const { contains } = designSystem.useFilter(locale, {
1039
1014
  sensitivity: "base"
1040
1015
  });
1041
- const formatter = helperPlugin.useCollator(locale, {
1016
+ const formatter = designSystem.useCollator(locale, {
1042
1017
  sensitivity: "base"
1043
1018
  });
1044
- const isLoading = isLoadingForData || isFetching;
1019
+ const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;
1045
1020
  const handleShowConfirmDelete = () => {
1046
1021
  setShowConfirmDelete(!showConfirmDelete);
1047
1022
  };
1023
+ const deleteData = async (id, formatMessage2, toggleNotification2) => {
1024
+ try {
1025
+ await del(`/users-permissions/roles/${id}`);
1026
+ } catch (error) {
1027
+ toggleNotification2({
1028
+ type: "danger",
1029
+ message: formatMessage2({ id: "notification.error", defaultMessage: "An error occured" })
1030
+ });
1031
+ }
1032
+ };
1033
+ const fetchData = async (toggleNotification2, formatMessage2, notifyStatus2) => {
1034
+ try {
1035
+ const { data } = await get2("/users-permissions/roles");
1036
+ notifyStatus2("The roles have loaded successfully");
1037
+ return data;
1038
+ } catch (err) {
1039
+ toggleNotification2({
1040
+ type: "danger",
1041
+ message: formatMessage2({ id: "notification.error", defaultMessage: "An error occurred" })
1042
+ });
1043
+ throw new Error(err);
1044
+ }
1045
+ };
1048
1046
  const emptyLayout = {
1049
1047
  roles: {
1050
1048
  id: index.getTrad("Roles.empty"),
@@ -1059,28 +1057,32 @@ const RolesListPage = () => {
1059
1057
  id: "global.roles",
1060
1058
  defaultMessage: "Roles"
1061
1059
  });
1062
- const deleteMutation = reactQuery.useMutation((id) => deleteData(id, toggleNotification), {
1060
+ const deleteMutation = reactQuery.useMutation((id) => deleteData(id, formatMessage, toggleNotification), {
1063
1061
  async onSuccess() {
1064
1062
  await refetch();
1065
1063
  }
1066
1064
  });
1067
1065
  const handleConfirmDelete = async () => {
1068
- setIsConfirmButtonLoading(true);
1069
1066
  await deleteMutation.mutateAsync(roleToDelete);
1070
1067
  setShowConfirmDelete(!showConfirmDelete);
1071
- setIsConfirmButtonLoading(false);
1072
1068
  };
1073
- const sortedRoles = (roles || []).filter((role) => includes(role.name, _q) || includes(role.description, _q)).sort(
1069
+ const sortedRoles = (roles || []).filter((role) => contains(role.name, _q) || contains(role.description, _q)).sort(
1074
1070
  (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)
1075
1071
  );
1076
1072
  const emptyContent = _q && !sortedRoles.length ? "search" : "roles";
1077
1073
  const colCount = 4;
1078
1074
  const rowCount = (roles?.length || 0) + 1;
1079
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Layout, { children: [
1080
- /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.SettingsPageTitle, { name: pageTitle }),
1081
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isLoading, children: [
1075
+ if (isLoading) {
1076
+ return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Loading, {});
1077
+ }
1078
+ return /* @__PURE__ */ jsxRuntime.jsxs(admin.Layouts.Root, { children: [
1079
+ /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Title, { children: formatMessage(
1080
+ { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
1081
+ { name: pageTitle }
1082
+ ) }),
1083
+ /* @__PURE__ */ jsxRuntime.jsxs(admin.Page.Main, { children: [
1082
1084
  /* @__PURE__ */ jsxRuntime.jsx(
1083
- designSystem.HeaderLayout,
1085
+ admin.Layouts.Header,
1084
1086
  {
1085
1087
  title: formatMessage({
1086
1088
  id: "global.roles",
@@ -1090,10 +1092,11 @@ const RolesListPage = () => {
1090
1092
  id: "Settings.roles.list.description",
1091
1093
  defaultMessage: "List of roles"
1092
1094
  }),
1093
- primaryAction: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.createRole, children: /* @__PURE__ */ jsxRuntime.jsx(
1094
- helperPlugin.LinkButton,
1095
+ primaryAction: canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
1096
+ designSystem.LinkButton,
1095
1097
  {
1096
- to: "/settings/users-permissions/roles/new",
1098
+ to: "new",
1099
+ tag: reactRouterDom.NavLink,
1097
1100
  onClick: () => trackUsage("willCreateRole"),
1098
1101
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}),
1099
1102
  size: "S",
@@ -1102,14 +1105,14 @@ const RolesListPage = () => {
1102
1105
  defaultMessage: "Add new role"
1103
1106
  })
1104
1107
  }
1105
- ) })
1108
+ ) : null
1106
1109
  }
1107
1110
  ),
1108
1111
  /* @__PURE__ */ jsxRuntime.jsx(
1109
- designSystem.ActionLayout,
1112
+ admin.Layouts.Action,
1110
1113
  {
1111
1114
  startActions: /* @__PURE__ */ jsxRuntime.jsx(
1112
- helperPlugin.SearchURLQuery,
1115
+ admin.SearchInput,
1113
1116
  {
1114
1117
  label: formatMessage({
1115
1118
  id: "app.component.search.label",
@@ -1119,9 +1122,8 @@ const RolesListPage = () => {
1119
1122
  )
1120
1123
  }
1121
1124
  ),
1122
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ContentLayout, { children: [
1123
- !canRead && /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.NoPermissions, {}),
1124
- (isLoading || isLoadingForPermissions) && /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}),
1125
+ /* @__PURE__ */ jsxRuntime.jsxs(admin.Layouts.Content, { children: [
1126
+ !canRead && /* @__PURE__ */ jsxRuntime.jsx(admin.Page.NoPermissions, {}),
1125
1127
  canRead && sortedRoles && sortedRoles?.length ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount, rowCount, children: [
1126
1128
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
1127
1129
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.name", defaultMessage: "Name" }) }) }),
@@ -1143,49 +1145,27 @@ const RolesListPage = () => {
1143
1145
  {
1144
1146
  sortedRoles,
1145
1147
  canDelete,
1148
+ canUpdate,
1146
1149
  permissions: index.PERMISSIONS,
1147
1150
  setRoleToDelete,
1148
1151
  onDelete: [showConfirmDelete, setShowConfirmDelete]
1149
1152
  }
1150
1153
  )
1151
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.EmptyStateLayout, { content: emptyLayout[emptyContent] })
1154
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.EmptyStateLayout, { content: formatMessage(emptyLayout[emptyContent]) })
1152
1155
  ] }),
1153
- /* @__PURE__ */ jsxRuntime.jsx(
1154
- helperPlugin.ConfirmDialog,
1155
- {
1156
- isConfirmButtonLoading,
1157
- onConfirm: handleConfirmDelete,
1158
- onToggleDialog: handleShowConfirmDelete,
1159
- isOpen: showConfirmDelete
1160
- }
1161
- )
1156
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Root, { open: showConfirmDelete, onOpenChange: handleShowConfirmDelete, children: /* @__PURE__ */ jsxRuntime.jsx(admin.ConfirmDialog, { onConfirm: handleConfirmDelete }) })
1162
1157
  ] })
1163
1158
  ] });
1164
1159
  };
1165
1160
  const ProtectedRolesListPage = () => {
1166
- return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.accessRoles, children: /* @__PURE__ */ jsxRuntime.jsx(RolesListPage, {}) });
1161
+ return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.accessRoles, children: /* @__PURE__ */ jsxRuntime.jsx(RolesListPage, {}) });
1167
1162
  };
1168
1163
  const Roles = () => {
1169
- return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.accessRoles, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Switch, { children: [
1170
- /* @__PURE__ */ jsxRuntime.jsx(
1171
- reactRouterDom.Route,
1172
- {
1173
- path: "/settings/users-permissions/roles/new",
1174
- component: ProtectedRolesCreatePage,
1175
- exact: true
1176
- }
1177
- ),
1178
- /* @__PURE__ */ jsxRuntime.jsx(
1179
- reactRouterDom.Route,
1180
- {
1181
- path: "/settings/users-permissions/roles/:id",
1182
- component: ProtectedRolesEditPage,
1183
- exact: true
1184
- }
1185
- ),
1186
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: "/settings/users-permissions/roles", component: ProtectedRolesListPage, exact: true }),
1187
- /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: "", component: helperPlugin.AnErrorOccurred })
1164
+ return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.accessRoles, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
1165
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ProtectedRolesListPage, {}) }),
1166
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: "new", element: /* @__PURE__ */ jsxRuntime.jsx(ProtectedRolesCreatePage, {}) }),
1167
+ /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":id", element: /* @__PURE__ */ jsxRuntime.jsx(ProtectedRolesEditPage, {}) })
1188
1168
  ] }) });
1189
1169
  };
1190
1170
  exports.default = Roles;
1191
- //# sourceMappingURL=index-Aq7T7skI.js.map
1171
+ //# sourceMappingURL=index-iJPHXbGD.js.map