@strapi/plugin-users-permissions 0.0.0-next.f4ff842a3cb7b83db540bee67554b704e042b042 → 0.0.0-next.f5312617ca16b870c2bf1adcea2c69b676979e29

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