@strapi/admin 5.0.0-beta.1 → 5.0.0-beta.3

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 (1022) hide show
  1. package/dist/admin/AdminSeatInfo-H5eNy3Gq.js +105 -0
  2. package/dist/admin/AdminSeatInfo-H5eNy3Gq.js.map +1 -0
  3. package/dist/admin/AdminSeatInfo-jPH1stsB.mjs +101 -0
  4. package/dist/admin/AdminSeatInfo-jPH1stsB.mjs.map +1 -0
  5. package/dist/admin/ApplicationInfoPage-QiVVy6LS.mjs +664 -0
  6. package/dist/admin/ApplicationInfoPage-QiVVy6LS.mjs.map +1 -0
  7. package/dist/admin/ApplicationInfoPage-leY1AEgo.js +692 -0
  8. package/dist/admin/ApplicationInfoPage-leY1AEgo.js.map +1 -0
  9. package/dist/admin/AuthResponse-5G-7aJDM.mjs +43 -0
  10. package/dist/admin/AuthResponse-5G-7aJDM.mjs.map +1 -0
  11. package/dist/admin/AuthResponse-kdo9DYPT.js +70 -0
  12. package/dist/admin/AuthResponse-kdo9DYPT.js.map +1 -0
  13. package/dist/admin/AuthenticatedLayout-1x0WC6c6.js +1121 -0
  14. package/dist/admin/AuthenticatedLayout-1x0WC6c6.js.map +1 -0
  15. package/dist/admin/AuthenticatedLayout-zaOd05gw.mjs +1088 -0
  16. package/dist/admin/AuthenticatedLayout-zaOd05gw.mjs.map +1 -0
  17. package/dist/admin/CreateActionEE-2DKYzbq_.js +61 -0
  18. package/dist/admin/CreateActionEE-2DKYzbq_.js.map +1 -0
  19. package/dist/admin/CreateActionEE-TcGdWjIN.mjs +53 -0
  20. package/dist/admin/CreateActionEE-TcGdWjIN.mjs.map +1 -0
  21. package/dist/admin/CreatePage-J84OUqE4.js +269 -0
  22. package/dist/admin/CreatePage-J84OUqE4.js.map +1 -0
  23. package/dist/admin/CreatePage-gSoe3n8A.mjs +13 -0
  24. package/dist/admin/CreatePage-gSoe3n8A.mjs.map +1 -0
  25. package/dist/admin/CreatePage-pniatTP-.mjs +240 -0
  26. package/dist/admin/CreatePage-pniatTP-.mjs.map +1 -0
  27. package/dist/admin/CreatePage-z4ERqv1R.js +18 -0
  28. package/dist/admin/CreatePage-z4ERqv1R.js.map +1 -0
  29. package/dist/admin/CreateView-BdO0Pvex.mjs +13 -0
  30. package/dist/admin/CreateView-BdO0Pvex.mjs.map +1 -0
  31. package/dist/admin/CreateView-JNmfRawb.js +17 -0
  32. package/dist/admin/CreateView-JNmfRawb.js.map +1 -0
  33. package/dist/admin/CreateView-NwMXZjDh.js +17 -0
  34. package/dist/admin/CreateView-NwMXZjDh.js.map +1 -0
  35. package/dist/admin/CreateView-sFb3ySEj.mjs +13 -0
  36. package/dist/admin/CreateView-sFb3ySEj.mjs.map +1 -0
  37. package/dist/admin/EditPage-3wx6NJgA.mjs +790 -0
  38. package/dist/admin/EditPage-3wx6NJgA.mjs.map +1 -0
  39. package/dist/admin/EditPage-IQRLHMer.mjs +322 -0
  40. package/dist/admin/EditPage-IQRLHMer.mjs.map +1 -0
  41. package/dist/admin/EditPage-dAyJwJfs.js +351 -0
  42. package/dist/admin/EditPage-dAyJwJfs.js.map +1 -0
  43. package/dist/admin/EditPage-eR6riBsR.js +818 -0
  44. package/dist/admin/EditPage-eR6riBsR.js.map +1 -0
  45. package/dist/admin/EditPage-rdOE18EC.js +281 -0
  46. package/dist/admin/EditPage-rdOE18EC.js.map +1 -0
  47. package/dist/admin/EditPage-yztdPcnM.mjs +255 -0
  48. package/dist/admin/EditPage-yztdPcnM.mjs.map +1 -0
  49. package/dist/admin/EditView-fbzip_S8.mjs +332 -0
  50. package/dist/admin/EditView-fbzip_S8.mjs.map +1 -0
  51. package/dist/admin/EditView-oyHNBKvL.js +358 -0
  52. package/dist/admin/EditView-oyHNBKvL.js.map +1 -0
  53. package/dist/admin/EditViewPage-LdDGNi6d.js +875 -0
  54. package/dist/admin/EditViewPage-LdDGNi6d.js.map +1 -0
  55. package/dist/admin/EditViewPage-rDgxiutd.mjs +842 -0
  56. package/dist/admin/EditViewPage-rDgxiutd.mjs.map +1 -0
  57. package/dist/admin/EventsTable--peC0Geq.js +36 -0
  58. package/dist/admin/EventsTable--peC0Geq.js.map +1 -0
  59. package/dist/admin/EventsTable-rNMPq-X1.mjs +32 -0
  60. package/dist/admin/EventsTable-rNMPq-X1.mjs.map +1 -0
  61. package/dist/admin/HomePage-14WM2hIE.js +15 -0
  62. package/dist/admin/HomePage-14WM2hIE.js.map +1 -0
  63. package/dist/admin/HomePage-e2Bs6Kar.js +591 -0
  64. package/dist/admin/HomePage-e2Bs6Kar.js.map +1 -0
  65. package/dist/admin/HomePage-qgAro8dS.mjs +563 -0
  66. package/dist/admin/HomePage-qgAro8dS.mjs.map +1 -0
  67. package/dist/admin/HomePage-zQ7HL9y6.mjs +11 -0
  68. package/dist/admin/HomePage-zQ7HL9y6.mjs.map +1 -0
  69. package/dist/admin/InstalledPluginsPage-ZIPyDrzh.js +121 -0
  70. package/dist/admin/InstalledPluginsPage-ZIPyDrzh.js.map +1 -0
  71. package/dist/admin/InstalledPluginsPage-s_PGIc3_.mjs +96 -0
  72. package/dist/admin/InstalledPluginsPage-s_PGIc3_.mjs.map +1 -0
  73. package/dist/admin/Layout-KAX2c8wc.js +232 -0
  74. package/dist/admin/Layout-KAX2c8wc.js.map +1 -0
  75. package/dist/admin/Layout-mEj5c1Bi.mjs +204 -0
  76. package/dist/admin/Layout-mEj5c1Bi.mjs.map +1 -0
  77. package/dist/admin/ListPage-AI8neqxV.mjs +332 -0
  78. package/dist/admin/ListPage-AI8neqxV.mjs.map +1 -0
  79. package/dist/admin/ListPage-ARW72ceH.js +357 -0
  80. package/dist/admin/ListPage-ARW72ceH.js.map +1 -0
  81. package/dist/admin/ListPage-AUimd0cK.js +563 -0
  82. package/dist/admin/ListPage-AUimd0cK.js.map +1 -0
  83. package/dist/admin/ListPage-BIpKdUdv.mjs +486 -0
  84. package/dist/admin/ListPage-BIpKdUdv.mjs.map +1 -0
  85. package/dist/admin/ListPage-DxI49fdQ.js +307 -0
  86. package/dist/admin/ListPage-DxI49fdQ.js.map +1 -0
  87. package/dist/admin/ListPage-MvgbZlgc.js +15 -0
  88. package/dist/admin/ListPage-MvgbZlgc.js.map +1 -0
  89. package/dist/admin/ListPage-ZDEeaYvm.mjs +11 -0
  90. package/dist/admin/ListPage-ZDEeaYvm.mjs.map +1 -0
  91. package/dist/admin/ListPage-asZ9aDzG.mjs +282 -0
  92. package/dist/admin/ListPage-asZ9aDzG.mjs.map +1 -0
  93. package/dist/admin/ListPage-romICg1Z.js +514 -0
  94. package/dist/admin/ListPage-romICg1Z.js.map +1 -0
  95. package/dist/admin/ListPage-tniramRN.mjs +535 -0
  96. package/dist/admin/ListPage-tniramRN.mjs.map +1 -0
  97. package/dist/admin/ListView-1VRmjfh8.js +232 -0
  98. package/dist/admin/ListView-1VRmjfh8.js.map +1 -0
  99. package/dist/admin/ListView-6hlTFx5H.mjs +197 -0
  100. package/dist/admin/ListView-6hlTFx5H.mjs.map +1 -0
  101. package/dist/admin/ListView-GYuN24HV.mjs +206 -0
  102. package/dist/admin/ListView-GYuN24HV.mjs.map +1 -0
  103. package/dist/admin/ListView-ph55AtDF.js +223 -0
  104. package/dist/admin/ListView-ph55AtDF.js.map +1 -0
  105. package/dist/admin/Login-LxE58baP.mjs +31 -0
  106. package/dist/admin/Login-LxE58baP.mjs.map +1 -0
  107. package/dist/admin/Login-WeDT3kAj.js +39 -0
  108. package/dist/admin/Login-WeDT3kAj.js.map +1 -0
  109. package/dist/admin/MagicLinkEE-AO_SBYi5.mjs +27 -0
  110. package/dist/admin/MagicLinkEE-AO_SBYi5.mjs.map +1 -0
  111. package/dist/admin/MagicLinkEE-_fUwHKdf.js +31 -0
  112. package/dist/admin/MagicLinkEE-_fUwHKdf.js.map +1 -0
  113. package/dist/admin/MarketplacePage-26cUn4e5.mjs +1020 -0
  114. package/dist/admin/MarketplacePage-26cUn4e5.mjs.map +1 -0
  115. package/dist/admin/MarketplacePage-m8Lf3adM.js +1051 -0
  116. package/dist/admin/MarketplacePage-m8Lf3adM.js.map +1 -0
  117. package/dist/admin/Ornaments-RhzFP9rf.js +214 -0
  118. package/dist/admin/Ornaments-RhzFP9rf.js.map +1 -0
  119. package/dist/admin/Permissions-NRzJqZEr.js +2086 -0
  120. package/dist/admin/Permissions-NRzJqZEr.js.map +1 -0
  121. package/dist/admin/Permissions-VzklM1ie.mjs +2050 -0
  122. package/dist/admin/Permissions-VzklM1ie.mjs.map +1 -0
  123. package/dist/admin/PrivateRoute-KAM10GGM.js +22 -0
  124. package/dist/admin/PrivateRoute-KAM10GGM.js.map +1 -0
  125. package/dist/admin/PrivateRoute-wDu6Vo0N.mjs +20 -0
  126. package/dist/admin/PrivateRoute-wDu6Vo0N.mjs.map +1 -0
  127. package/dist/admin/ProfilePage-0d-k7mtP.mjs +387 -0
  128. package/dist/admin/ProfilePage-0d-k7mtP.mjs.map +1 -0
  129. package/dist/admin/ProfilePage-oSih4pcL.js +415 -0
  130. package/dist/admin/ProfilePage-oSih4pcL.js.map +1 -0
  131. package/dist/admin/PurchaseAuditLogs-8_4PcW7P.mjs +48 -0
  132. package/dist/admin/PurchaseAuditLogs-8_4PcW7P.mjs.map +1 -0
  133. package/dist/admin/PurchaseAuditLogs-tS_tVSGI.js +52 -0
  134. package/dist/admin/PurchaseAuditLogs-tS_tVSGI.js.map +1 -0
  135. package/dist/admin/PurchaseSingleSignOn--gblfVu6.mjs +51 -0
  136. package/dist/admin/PurchaseSingleSignOn--gblfVu6.mjs.map +1 -0
  137. package/dist/admin/PurchaseSingleSignOn-9SV6-fYs.js +55 -0
  138. package/dist/admin/PurchaseSingleSignOn-9SV6-fYs.js.map +1 -0
  139. package/dist/admin/SelectRoles-V_PZUtVT.mjs +106 -0
  140. package/dist/admin/SelectRoles-V_PZUtVT.mjs.map +1 -0
  141. package/dist/admin/SelectRoles-ZsRUnSdr.js +114 -0
  142. package/dist/admin/SelectRoles-ZsRUnSdr.js.map +1 -0
  143. package/dist/admin/SingleSignOnPage-jtjy4_4U.js +259 -0
  144. package/dist/admin/SingleSignOnPage-jtjy4_4U.js.map +1 -0
  145. package/dist/admin/SingleSignOnPage-kbLz1A_y.mjs +234 -0
  146. package/dist/admin/SingleSignOnPage-kbLz1A_y.mjs.map +1 -0
  147. package/dist/admin/Table-ZFyORhH3.mjs +196 -0
  148. package/dist/admin/Table-ZFyORhH3.mjs.map +1 -0
  149. package/dist/admin/Table-kMt3jQ2g.js +221 -0
  150. package/dist/admin/Table-kMt3jQ2g.js.map +1 -0
  151. package/dist/admin/TokenTypeSelect-Ngz4ONEL.js +386 -0
  152. package/dist/admin/TokenTypeSelect-Ngz4ONEL.js.map +1 -0
  153. package/dist/admin/TokenTypeSelect-oOKwvsQ2.mjs +358 -0
  154. package/dist/admin/TokenTypeSelect-oOKwvsQ2.mjs.map +1 -0
  155. package/dist/admin/UseCasePage-2wum_xzS.mjs +146 -0
  156. package/dist/admin/UseCasePage-2wum_xzS.mjs.map +1 -0
  157. package/dist/admin/UseCasePage-qrhHiF5S.js +175 -0
  158. package/dist/admin/UseCasePage-qrhHiF5S.js.map +1 -0
  159. package/dist/admin/admin-DUKhYsmP.mjs +256 -0
  160. package/dist/admin/admin-DUKhYsmP.mjs.map +1 -0
  161. package/dist/admin/admin-vlKSOeHB.js +274 -0
  162. package/dist/admin/admin-vlKSOeHB.js.map +1 -0
  163. package/dist/admin/apiTokens-dBRuo1wd.mjs +56 -0
  164. package/dist/admin/apiTokens-dBRuo1wd.mjs.map +1 -0
  165. package/dist/admin/apiTokens-lXn03No3.js +62 -0
  166. package/dist/admin/apiTokens-lXn03No3.js.map +1 -0
  167. package/dist/admin/ar-74XpZHjA.js +853 -0
  168. package/dist/admin/ar-74XpZHjA.js.map +1 -0
  169. package/dist/admin/ar-gTQs8p7A.mjs +832 -0
  170. package/dist/admin/ar-gTQs8p7A.mjs.map +1 -0
  171. package/dist/admin/ca-A-U5stlG.mjs +520 -0
  172. package/dist/admin/ca-A-U5stlG.mjs.map +1 -0
  173. package/dist/admin/ca-tfhzbe_0.js +538 -0
  174. package/dist/admin/ca-tfhzbe_0.js.map +1 -0
  175. package/dist/admin/constants-enREoOEa.mjs +52 -0
  176. package/dist/admin/constants-enREoOEa.mjs.map +1 -0
  177. package/dist/admin/constants-jQFnBWVd.js +60 -0
  178. package/dist/admin/constants-jQFnBWVd.js.map +1 -0
  179. package/dist/admin/cs-iYqoHUVt.mjs +166 -0
  180. package/dist/admin/cs-iYqoHUVt.mjs.map +1 -0
  181. package/dist/admin/cs-sS-228vY.js +179 -0
  182. package/dist/admin/cs-sS-228vY.js.map +1 -0
  183. package/dist/admin/de-og0YSnla.js +532 -0
  184. package/dist/admin/de-og0YSnla.js.map +1 -0
  185. package/dist/admin/de-uZBjRd6a.mjs +514 -0
  186. package/dist/admin/de-uZBjRd6a.mjs.map +1 -0
  187. package/dist/admin/dk-GtDhDxRc.js +452 -0
  188. package/dist/admin/dk-GtDhDxRc.js.map +1 -0
  189. package/dist/admin/dk-nXAO32DE.mjs +434 -0
  190. package/dist/admin/dk-nXAO32DE.mjs.map +1 -0
  191. package/dist/admin/ee.js +12 -0
  192. package/dist/admin/ee.js.map +1 -0
  193. package/dist/admin/ee.mjs +3 -0
  194. package/dist/admin/ee.mjs.map +1 -0
  195. package/dist/admin/en-2FB7x9Rq.js +804 -0
  196. package/dist/admin/en-2FB7x9Rq.js.map +1 -0
  197. package/dist/admin/en-qvX6GTOD.mjs +783 -0
  198. package/dist/admin/en-qvX6GTOD.mjs.map +1 -0
  199. package/dist/admin/es-TQtY4G8X.js +615 -0
  200. package/dist/admin/es-TQtY4G8X.js.map +1 -0
  201. package/dist/admin/es-i0dEHPPQ.mjs +595 -0
  202. package/dist/admin/es-i0dEHPPQ.mjs.map +1 -0
  203. package/dist/admin/eu-SRdPRyQu.js +645 -0
  204. package/dist/admin/eu-SRdPRyQu.js.map +1 -0
  205. package/dist/admin/eu-wFmYHERY.mjs +625 -0
  206. package/dist/admin/eu-wFmYHERY.mjs.map +1 -0
  207. package/dist/admin/fr-GW5-kEO9.js +571 -0
  208. package/dist/admin/fr-GW5-kEO9.js.map +1 -0
  209. package/dist/admin/fr-OI7VyC_k.mjs +550 -0
  210. package/dist/admin/fr-OI7VyC_k.mjs.map +1 -0
  211. package/dist/admin/gu-z6qqOLRh.js +438 -0
  212. package/dist/admin/gu-z6qqOLRh.js.map +1 -0
  213. package/dist/admin/gu-zSaMc-a6.mjs +429 -0
  214. package/dist/admin/gu-zSaMc-a6.mjs.map +1 -0
  215. package/dist/admin/he-CLdZZ_n1.js +329 -0
  216. package/dist/admin/he-CLdZZ_n1.js.map +1 -0
  217. package/dist/admin/he-YzAGShlQ.mjs +315 -0
  218. package/dist/admin/he-YzAGShlQ.mjs.map +1 -0
  219. package/dist/admin/hi-3pMoYe6q.js +537 -0
  220. package/dist/admin/hi-3pMoYe6q.js.map +1 -0
  221. package/dist/admin/hi-ZQ4t6UdY.mjs +519 -0
  222. package/dist/admin/hi-ZQ4t6UdY.mjs.map +1 -0
  223. package/dist/admin/hu-O1FJoY8c.mjs +625 -0
  224. package/dist/admin/hu-O1FJoY8c.mjs.map +1 -0
  225. package/dist/admin/hu-VxIqV1X0.js +645 -0
  226. package/dist/admin/hu-VxIqV1X0.js.map +1 -0
  227. package/dist/admin/id-Lb_0kPQU.mjs +290 -0
  228. package/dist/admin/id-Lb_0kPQU.mjs.map +1 -0
  229. package/dist/admin/id-cUUpuxZO.js +303 -0
  230. package/dist/admin/id-cUUpuxZO.js.map +1 -0
  231. package/dist/admin/index-dcaxfEDi.js +5241 -0
  232. package/dist/admin/index-dcaxfEDi.js.map +1 -0
  233. package/dist/admin/index-oBxjGftZ.mjs +5163 -0
  234. package/dist/admin/index-oBxjGftZ.mjs.map +1 -0
  235. package/dist/admin/index.js +26 -27
  236. package/dist/admin/index.js.map +1 -1
  237. package/dist/admin/index.mjs +3 -3
  238. package/dist/admin/it-136monzD.mjs +299 -0
  239. package/dist/admin/it-136monzD.mjs.map +1 -0
  240. package/dist/admin/it-m8H0rXTP.js +312 -0
  241. package/dist/admin/it-m8H0rXTP.js.map +1 -0
  242. package/dist/admin/ja-0-FUC0T4.mjs +434 -0
  243. package/dist/admin/ja-0-FUC0T4.mjs.map +1 -0
  244. package/dist/admin/ja-jhqUhh7F.js +452 -0
  245. package/dist/admin/ja-jhqUhh7F.js.map +1 -0
  246. package/dist/admin/ko-Fq49QS3z.js +451 -0
  247. package/dist/admin/ko-Fq49QS3z.js.map +1 -0
  248. package/dist/admin/ko-H3Y8GpnD.mjs +433 -0
  249. package/dist/admin/ko-H3Y8GpnD.mjs.map +1 -0
  250. package/dist/admin/ml-NPdcpJoN.mjs +519 -0
  251. package/dist/admin/ml-NPdcpJoN.mjs.map +1 -0
  252. package/dist/admin/ml-mLJM4sQP.js +537 -0
  253. package/dist/admin/ml-mLJM4sQP.js.map +1 -0
  254. package/dist/admin/ms-NDmpSkMY.js +213 -0
  255. package/dist/admin/ms-NDmpSkMY.js.map +1 -0
  256. package/dist/admin/ms-v9c434YI.mjs +200 -0
  257. package/dist/admin/ms-v9c434YI.mjs.map +1 -0
  258. package/dist/admin/nl-RREi1JAg.js +641 -0
  259. package/dist/admin/nl-RREi1JAg.js.map +1 -0
  260. package/dist/admin/nl-qHmOt3d1.mjs +621 -0
  261. package/dist/admin/nl-qHmOt3d1.mjs.map +1 -0
  262. package/dist/admin/no-2wT9Jd9n.js +313 -0
  263. package/dist/admin/no-2wT9Jd9n.js.map +1 -0
  264. package/dist/admin/no-XGZQN-Ji.mjs +300 -0
  265. package/dist/admin/no-XGZQN-Ji.mjs.map +1 -0
  266. package/dist/admin/pl-Id5YX-Pw.mjs +519 -0
  267. package/dist/admin/pl-Id5YX-Pw.mjs.map +1 -0
  268. package/dist/admin/pl-kU2npCRO.js +537 -0
  269. package/dist/admin/pl-kU2npCRO.js.map +1 -0
  270. package/dist/admin/pt-BR-0o0Gf-P8.mjs +588 -0
  271. package/dist/admin/pt-BR-0o0Gf-P8.mjs.map +1 -0
  272. package/dist/admin/pt-BR-R-dMJxPL.js +608 -0
  273. package/dist/admin/pt-BR-R-dMJxPL.js.map +1 -0
  274. package/dist/admin/pt-IygqsPYv.js +212 -0
  275. package/dist/admin/pt-IygqsPYv.js.map +1 -0
  276. package/dist/admin/pt-f52AXrxz.mjs +200 -0
  277. package/dist/admin/pt-f52AXrxz.mjs.map +1 -0
  278. package/dist/admin/rbac-WZsv1761.js +1237 -0
  279. package/dist/admin/rbac-WZsv1761.js.map +1 -0
  280. package/dist/admin/rbac-sYT_mXH0.mjs +1171 -0
  281. package/dist/admin/rbac-sYT_mXH0.mjs.map +1 -0
  282. package/dist/admin/ru-5TBoMH_2.js +766 -0
  283. package/dist/admin/ru-5TBoMH_2.js.map +1 -0
  284. package/dist/admin/ru-FpmG9SEf.mjs +745 -0
  285. package/dist/admin/ru-FpmG9SEf.mjs.map +1 -0
  286. package/dist/admin/sa-KUwV8aRB.mjs +519 -0
  287. package/dist/admin/sa-KUwV8aRB.mjs.map +1 -0
  288. package/dist/admin/sa-KmwTiEO5.js +537 -0
  289. package/dist/admin/sa-KmwTiEO5.js.map +1 -0
  290. package/dist/admin/selectors-3gRe5pAj.mjs +6 -0
  291. package/dist/admin/selectors-3gRe5pAj.mjs.map +1 -0
  292. package/dist/admin/selectors-CiTVxP8O.js +8 -0
  293. package/dist/admin/selectors-CiTVxP8O.js.map +1 -0
  294. package/dist/admin/sk-IV2uPmXo.js +503 -0
  295. package/dist/admin/sk-IV2uPmXo.js.map +1 -0
  296. package/dist/admin/sk-g_1C955P.mjs +483 -0
  297. package/dist/admin/sk-g_1C955P.mjs.map +1 -0
  298. package/dist/admin/src/StrapiApp.d.ts +12 -41
  299. package/dist/admin/src/components/Context.d.ts +6 -0
  300. package/dist/admin/src/components/Filters.d.ts +6 -1
  301. package/dist/admin/src/components/Form.d.ts +10 -1
  302. package/dist/admin/src/components/PageHelpers.d.ts +4 -0
  303. package/dist/admin/src/core/apis/rbac.d.ts +24 -0
  304. package/dist/admin/src/core/store/configure.d.ts +7 -18
  305. package/dist/admin/src/core/store/hooks.d.ts +6 -21
  306. package/dist/admin/src/ee.d.ts +5 -0
  307. package/dist/admin/src/features/Auth.d.ts +14 -3
  308. package/dist/admin/src/features/StrapiApp.d.ts +3 -1
  309. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  310. package/dist/admin/src/hooks/useContentTypes.d.ts +3 -3
  311. package/dist/admin/src/hooks/useRBAC.d.ts +33 -1
  312. package/dist/admin/src/index.d.ts +8 -4
  313. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +2 -2
  314. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +1 -1
  315. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  316. package/dist/admin/src/selectors.d.ts +4 -14
  317. package/dist/admin/src/services/admin.d.ts +5 -5
  318. package/dist/admin/src/services/api.d.ts +3 -3
  319. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  320. package/dist/admin/src/services/auth.d.ts +10 -10
  321. package/dist/admin/src/services/contentApi.d.ts +1 -1
  322. package/dist/admin/src/services/contentManager.d.ts +2 -2
  323. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  324. package/dist/admin/src/services/users.d.ts +8 -8
  325. package/dist/admin/src/services/webhooks.d.ts +2 -2
  326. package/dist/admin/src/utils/once.d.ts +1 -0
  327. package/dist/admin/src/utils/urls.d.ts +7 -1
  328. package/dist/admin/src/utils/users.d.ts +4 -4
  329. package/dist/admin/sv-Uv9nW9cN.js +640 -0
  330. package/dist/admin/sv-Uv9nW9cN.js.map +1 -0
  331. package/dist/admin/sv-lzyY1dsz.mjs +620 -0
  332. package/dist/admin/sv-lzyY1dsz.mjs.map +1 -0
  333. package/dist/admin/test.js +170 -2649
  334. package/dist/admin/test.js.map +1 -1
  335. package/dist/admin/test.mjs +166 -2645
  336. package/dist/admin/test.mjs.map +1 -1
  337. package/dist/admin/tests/mockData.d.ts +0 -1065
  338. package/dist/admin/tests/store.d.ts +0 -169
  339. package/dist/admin/tests/utils.d.ts +2 -176
  340. package/dist/admin/th-7LJ9Y8EL.mjs +284 -0
  341. package/dist/admin/th-7LJ9Y8EL.mjs.map +1 -0
  342. package/dist/admin/th-SXQwWjv6.js +297 -0
  343. package/dist/admin/th-SXQwWjv6.js.map +1 -0
  344. package/dist/admin/tr-09v-DLMg.mjs +581 -0
  345. package/dist/admin/tr-09v-DLMg.mjs.map +1 -0
  346. package/dist/admin/tr-RBQM-Vq5.js +601 -0
  347. package/dist/admin/tr-RBQM-Vq5.js.map +1 -0
  348. package/dist/admin/transferTokens-5qQjIKFd.js +65 -0
  349. package/dist/admin/transferTokens-5qQjIKFd.js.map +1 -0
  350. package/dist/admin/transferTokens-OLPKYcY_.mjs +59 -0
  351. package/dist/admin/transferTokens-OLPKYcY_.mjs.map +1 -0
  352. package/dist/admin/uk-38IblmOr.mjs +201 -0
  353. package/dist/admin/uk-38IblmOr.mjs.map +1 -0
  354. package/dist/admin/uk-5T4XFIKm.js +214 -0
  355. package/dist/admin/uk-5T4XFIKm.js.map +1 -0
  356. package/dist/admin/useAdminRoles-HWIbyk2Z.mjs +28 -0
  357. package/dist/admin/useAdminRoles-HWIbyk2Z.mjs.map +1 -0
  358. package/dist/admin/useAdminRoles-Q2BxHs4o.js +50 -0
  359. package/dist/admin/useAdminRoles-Q2BxHs4o.js.map +1 -0
  360. package/dist/admin/useEnterprise-DUs6BYlP.js +50 -0
  361. package/dist/admin/useEnterprise-DUs6BYlP.js.map +1 -0
  362. package/dist/admin/useEnterprise-jpsYZWzn.mjs +28 -0
  363. package/dist/admin/useEnterprise-jpsYZWzn.mjs.map +1 -0
  364. package/dist/admin/useLicenseLimitNotification-0UWeCY_u.js +105 -0
  365. package/dist/admin/useLicenseLimitNotification-0UWeCY_u.js.map +1 -0
  366. package/dist/admin/useLicenseLimitNotification-aTNbD3xK.mjs +80 -0
  367. package/dist/admin/useLicenseLimitNotification-aTNbD3xK.mjs.map +1 -0
  368. package/dist/admin/useLicenseLimits-F7K-YWAE.mjs +23 -0
  369. package/dist/admin/useLicenseLimits-F7K-YWAE.mjs.map +1 -0
  370. package/dist/admin/useLicenseLimits-m11DOu9p.js +45 -0
  371. package/dist/admin/useLicenseLimits-m11DOu9p.js.map +1 -0
  372. package/dist/admin/useWebhooks-7BXPSMHG.mjs +91 -0
  373. package/dist/admin/useWebhooks-7BXPSMHG.mjs.map +1 -0
  374. package/dist/admin/useWebhooks-oZ5DKtvz.js +93 -0
  375. package/dist/admin/useWebhooks-oZ5DKtvz.js.map +1 -0
  376. package/dist/admin/users-R5A0kUOV.js +33 -0
  377. package/dist/admin/users-R5A0kUOV.js.map +1 -0
  378. package/dist/admin/users-a4KTyEyc.mjs +30 -0
  379. package/dist/admin/users-a4KTyEyc.mjs.map +1 -0
  380. package/dist/admin/validation-2MGgF10o.js +65 -0
  381. package/dist/admin/validation-2MGgF10o.js.map +1 -0
  382. package/dist/admin/validation-gH-06ERZ.mjs +43 -0
  383. package/dist/admin/validation-gH-06ERZ.mjs.map +1 -0
  384. package/dist/admin/vi-mj-Smy3d.js +200 -0
  385. package/dist/admin/vi-mj-Smy3d.js.map +1 -0
  386. package/dist/admin/vi-ryNZtXtk.mjs +187 -0
  387. package/dist/admin/vi-ryNZtXtk.mjs.map +1 -0
  388. package/dist/admin/zh-6qF5HCOo.js +642 -0
  389. package/dist/admin/zh-6qF5HCOo.js.map +1 -0
  390. package/dist/admin/zh-Hans-HlxDUeVA.mjs +716 -0
  391. package/dist/admin/zh-Hans-HlxDUeVA.mjs.map +1 -0
  392. package/dist/admin/zh-Hans-eWSoi9-X.js +737 -0
  393. package/dist/admin/zh-Hans-eWSoi9-X.js.map +1 -0
  394. package/dist/admin/zh-WEteLuNm.mjs +622 -0
  395. package/dist/admin/zh-WEteLuNm.mjs.map +1 -0
  396. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +1 -1
  397. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  398. package/dist/ee/server/index.js +20 -31
  399. package/dist/ee/server/index.js.map +1 -1
  400. package/dist/ee/server/index.mjs +21 -32
  401. package/dist/ee/server/index.mjs.map +1 -1
  402. package/dist/package.json.d.ts +24 -33
  403. package/dist/server/index.js +51 -55
  404. package/dist/server/index.js.map +1 -1
  405. package/dist/server/index.mjs +52 -56
  406. package/dist/server/index.mjs.map +1 -1
  407. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  408. package/dist/server/src/controllers/webhooks.d.ts.map +1 -1
  409. package/dist/server/src/services/passport.d.ts.map +1 -1
  410. package/dist/server/src/validation/project-settings.d.ts +52 -6
  411. package/dist/server/src/validation/project-settings.d.ts.map +1 -1
  412. package/dist/shared/contracts/content-types.d.ts +5 -0
  413. package/dist/shared/contracts/content-types.d.ts.map +1 -0
  414. package/package.json +25 -34
  415. package/dist/admin/AdminSeatInfo-Gp4BFR1_.js +0 -105
  416. package/dist/admin/AdminSeatInfo-Gp4BFR1_.js.map +0 -1
  417. package/dist/admin/AdminSeatInfo-dDgFBcLY.mjs +0 -101
  418. package/dist/admin/AdminSeatInfo-dDgFBcLY.mjs.map +0 -1
  419. package/dist/admin/ApplicationInfoPage-GQLKLk5T.mjs +0 -670
  420. package/dist/admin/ApplicationInfoPage-GQLKLk5T.mjs.map +0 -1
  421. package/dist/admin/ApplicationInfoPage-e_sOqQMh.js +0 -698
  422. package/dist/admin/ApplicationInfoPage-e_sOqQMh.js.map +0 -1
  423. package/dist/admin/AuthResponse-gf-zZkxm.mjs +0 -43
  424. package/dist/admin/AuthResponse-gf-zZkxm.mjs.map +0 -1
  425. package/dist/admin/AuthResponse-l5QiAAK7.js +0 -70
  426. package/dist/admin/AuthResponse-l5QiAAK7.js.map +0 -1
  427. package/dist/admin/AuthenticatedLayout-3fYM18Xy.mjs +0 -1115
  428. package/dist/admin/AuthenticatedLayout-3fYM18Xy.mjs.map +0 -1
  429. package/dist/admin/AuthenticatedLayout-gGQYIisy.js +0 -1148
  430. package/dist/admin/AuthenticatedLayout-gGQYIisy.js.map +0 -1
  431. package/dist/admin/ComponentConfigurationPage-0kf7a5LK.mjs +0 -237
  432. package/dist/admin/ComponentConfigurationPage-0kf7a5LK.mjs.map +0 -1
  433. package/dist/admin/ComponentConfigurationPage-U7RcNJFs.js +0 -262
  434. package/dist/admin/ComponentConfigurationPage-U7RcNJFs.js.map +0 -1
  435. package/dist/admin/ComponentIcon-AkrHxAkm.mjs +0 -158
  436. package/dist/admin/ComponentIcon-AkrHxAkm.mjs.map +0 -1
  437. package/dist/admin/ComponentIcon-wcNWpdCz.js +0 -180
  438. package/dist/admin/ComponentIcon-wcNWpdCz.js.map +0 -1
  439. package/dist/admin/CreateActionEE-HO-FmNjw.js +0 -61
  440. package/dist/admin/CreateActionEE-HO-FmNjw.js.map +0 -1
  441. package/dist/admin/CreateActionEE-OscS6KZj.mjs +0 -53
  442. package/dist/admin/CreateActionEE-OscS6KZj.mjs.map +0 -1
  443. package/dist/admin/CreatePage-1a_Nb-RK.mjs +0 -248
  444. package/dist/admin/CreatePage-1a_Nb-RK.mjs.map +0 -1
  445. package/dist/admin/CreatePage-8rG8fSZv.mjs +0 -245
  446. package/dist/admin/CreatePage-8rG8fSZv.mjs.map +0 -1
  447. package/dist/admin/CreatePage-B0kLot_Q.js +0 -18
  448. package/dist/admin/CreatePage-B0kLot_Q.js.map +0 -1
  449. package/dist/admin/CreatePage-c92hDTE3.mjs +0 -13
  450. package/dist/admin/CreatePage-c92hDTE3.mjs.map +0 -1
  451. package/dist/admin/CreatePage-h9gJgINE.js +0 -274
  452. package/dist/admin/CreatePage-h9gJgINE.js.map +0 -1
  453. package/dist/admin/CreatePage-pN8WcSWM.js +0 -272
  454. package/dist/admin/CreatePage-pN8WcSWM.js.map +0 -1
  455. package/dist/admin/CreateView-Gd7sLphf.js +0 -17
  456. package/dist/admin/CreateView-Gd7sLphf.js.map +0 -1
  457. package/dist/admin/CreateView-PIPvgwa8.mjs +0 -13
  458. package/dist/admin/CreateView-PIPvgwa8.mjs.map +0 -1
  459. package/dist/admin/CreateView-kVD9MjAf.js +0 -17
  460. package/dist/admin/CreateView-kVD9MjAf.js.map +0 -1
  461. package/dist/admin/CreateView-nXkGgZTO.mjs +0 -13
  462. package/dist/admin/CreateView-nXkGgZTO.mjs.map +0 -1
  463. package/dist/admin/EditConfigurationPage-YAS-MAtE.js +0 -155
  464. package/dist/admin/EditConfigurationPage-YAS-MAtE.js.map +0 -1
  465. package/dist/admin/EditConfigurationPage-jugWslla.mjs +0 -130
  466. package/dist/admin/EditConfigurationPage-jugWslla.mjs.map +0 -1
  467. package/dist/admin/EditPage-6pGLGlrZ.mjs +0 -794
  468. package/dist/admin/EditPage-6pGLGlrZ.mjs.map +0 -1
  469. package/dist/admin/EditPage-I99-ASjb.mjs +0 -325
  470. package/dist/admin/EditPage-I99-ASjb.mjs.map +0 -1
  471. package/dist/admin/EditPage-NrM8ZRAf.mjs +0 -303
  472. package/dist/admin/EditPage-NrM8ZRAf.mjs.map +0 -1
  473. package/dist/admin/EditPage-ci9fcWte.js +0 -327
  474. package/dist/admin/EditPage-ci9fcWte.js.map +0 -1
  475. package/dist/admin/EditPage-fT6nuOwT.mjs +0 -260
  476. package/dist/admin/EditPage-fT6nuOwT.mjs.map +0 -1
  477. package/dist/admin/EditPage-hEDFGDcC.js +0 -822
  478. package/dist/admin/EditPage-hEDFGDcC.js.map +0 -1
  479. package/dist/admin/EditPage-m5HVhxC-.js +0 -286
  480. package/dist/admin/EditPage-m5HVhxC-.js.map +0 -1
  481. package/dist/admin/EditPage-um8Yysr-.js +0 -354
  482. package/dist/admin/EditPage-um8Yysr-.js.map +0 -1
  483. package/dist/admin/EditView-79rujo0b.mjs +0 -336
  484. package/dist/admin/EditView-79rujo0b.mjs.map +0 -1
  485. package/dist/admin/EditView-zEf-a-YM.js +0 -362
  486. package/dist/admin/EditView-zEf-a-YM.js.map +0 -1
  487. package/dist/admin/EditViewPage-BJdNfzBZ.mjs +0 -198
  488. package/dist/admin/EditViewPage-BJdNfzBZ.mjs.map +0 -1
  489. package/dist/admin/EditViewPage-Y67V7K7l.js +0 -226
  490. package/dist/admin/EditViewPage-Y67V7K7l.js.map +0 -1
  491. package/dist/admin/EditViewPage-iuq_KY3C.mjs +0 -846
  492. package/dist/admin/EditViewPage-iuq_KY3C.mjs.map +0 -1
  493. package/dist/admin/EditViewPage-vrE8FNb1.js +0 -879
  494. package/dist/admin/EditViewPage-vrE8FNb1.js.map +0 -1
  495. package/dist/admin/EventsTable-LOh2EX0N.mjs +0 -32
  496. package/dist/admin/EventsTable-LOh2EX0N.mjs.map +0 -1
  497. package/dist/admin/EventsTable-bm16Pj4a.js +0 -36
  498. package/dist/admin/EventsTable-bm16Pj4a.js.map +0 -1
  499. package/dist/admin/FieldTypeIcon-SCwhXPf6.mjs +0 -50
  500. package/dist/admin/FieldTypeIcon-SCwhXPf6.mjs.map +0 -1
  501. package/dist/admin/FieldTypeIcon-u9dTaLwb.js +0 -52
  502. package/dist/admin/FieldTypeIcon-u9dTaLwb.js.map +0 -1
  503. package/dist/admin/Filters-5FAHd62q.js +0 -511
  504. package/dist/admin/Filters-5FAHd62q.js.map +0 -1
  505. package/dist/admin/Filters-hYfcsahl.mjs +0 -489
  506. package/dist/admin/Filters-hYfcsahl.mjs.map +0 -1
  507. package/dist/admin/Form-7gccxUtH.mjs +0 -739
  508. package/dist/admin/Form-7gccxUtH.mjs.map +0 -1
  509. package/dist/admin/Form-m0qUJusG.js +0 -767
  510. package/dist/admin/Form-m0qUJusG.js.map +0 -1
  511. package/dist/admin/History-UVk6YZaL.js +0 -456
  512. package/dist/admin/History-UVk6YZaL.js.map +0 -1
  513. package/dist/admin/History-gNttF1-u.mjs +0 -430
  514. package/dist/admin/History-gNttF1-u.mjs.map +0 -1
  515. package/dist/admin/HomePage-2q7ngwX4.mjs +0 -11
  516. package/dist/admin/HomePage-2q7ngwX4.mjs.map +0 -1
  517. package/dist/admin/HomePage-_eHszm7N.mjs +0 -521
  518. package/dist/admin/HomePage-_eHszm7N.mjs.map +0 -1
  519. package/dist/admin/HomePage-jwm3AAzI.js +0 -530
  520. package/dist/admin/HomePage-jwm3AAzI.js.map +0 -1
  521. package/dist/admin/HomePage-ozwWqZdZ.js +0 -15
  522. package/dist/admin/HomePage-ozwWqZdZ.js.map +0 -1
  523. package/dist/admin/InputRenderer-tdeZayqM.js +0 -5345
  524. package/dist/admin/InputRenderer-tdeZayqM.js.map +0 -1
  525. package/dist/admin/InputRenderer-uXGu-VvL.mjs +0 -5304
  526. package/dist/admin/InputRenderer-uXGu-VvL.mjs.map +0 -1
  527. package/dist/admin/InstalledPluginsPage-rGp1BINi.mjs +0 -101
  528. package/dist/admin/InstalledPluginsPage-rGp1BINi.mjs.map +0 -1
  529. package/dist/admin/InstalledPluginsPage-relNbZiA.js +0 -126
  530. package/dist/admin/InstalledPluginsPage-relNbZiA.js.map +0 -1
  531. package/dist/admin/Layout-JSg7Wwnx.mjs +0 -89
  532. package/dist/admin/Layout-JSg7Wwnx.mjs.map +0 -1
  533. package/dist/admin/Layout-gqm-mRb2.mjs +0 -209
  534. package/dist/admin/Layout-gqm-mRb2.mjs.map +0 -1
  535. package/dist/admin/Layout-rp7YlCuF.js +0 -237
  536. package/dist/admin/Layout-rp7YlCuF.js.map +0 -1
  537. package/dist/admin/Layout-tPXv8ts4.js +0 -97
  538. package/dist/admin/Layout-tPXv8ts4.js.map +0 -1
  539. package/dist/admin/ListConfigurationPage-1JkDop6y.mjs +0 -651
  540. package/dist/admin/ListConfigurationPage-1JkDop6y.mjs.map +0 -1
  541. package/dist/admin/ListConfigurationPage-egv99PTx.js +0 -679
  542. package/dist/admin/ListConfigurationPage-egv99PTx.js.map +0 -1
  543. package/dist/admin/ListPage-5VIwPlnG.js +0 -520
  544. package/dist/admin/ListPage-5VIwPlnG.js.map +0 -1
  545. package/dist/admin/ListPage-85XB15gk.js +0 -305
  546. package/dist/admin/ListPage-85XB15gk.js.map +0 -1
  547. package/dist/admin/ListPage-NG7c9Zx-.js +0 -313
  548. package/dist/admin/ListPage-NG7c9Zx-.js.map +0 -1
  549. package/dist/admin/ListPage-Wf8HxliA.js +0 -15
  550. package/dist/admin/ListPage-Wf8HxliA.js.map +0 -1
  551. package/dist/admin/ListPage-Y0vGfxO1.mjs +0 -492
  552. package/dist/admin/ListPage-Y0vGfxO1.mjs.map +0 -1
  553. package/dist/admin/ListPage-_1MCPNWC.mjs +0 -11
  554. package/dist/admin/ListPage-_1MCPNWC.mjs.map +0 -1
  555. package/dist/admin/ListPage-bdblB4wE.mjs +0 -338
  556. package/dist/admin/ListPage-bdblB4wE.mjs.map +0 -1
  557. package/dist/admin/ListPage-d0uTS6lH.js +0 -363
  558. package/dist/admin/ListPage-d0uTS6lH.js.map +0 -1
  559. package/dist/admin/ListPage-e0975Wh-.js +0 -568
  560. package/dist/admin/ListPage-e0975Wh-.js.map +0 -1
  561. package/dist/admin/ListPage-eMKRFxzM.mjs +0 -288
  562. package/dist/admin/ListPage-eMKRFxzM.mjs.map +0 -1
  563. package/dist/admin/ListPage-tFqx6zb_.mjs +0 -540
  564. package/dist/admin/ListPage-tFqx6zb_.mjs.map +0 -1
  565. package/dist/admin/ListPage-v07yRAHk.mjs +0 -277
  566. package/dist/admin/ListPage-v07yRAHk.mjs.map +0 -1
  567. package/dist/admin/ListView-9shnR2xp.mjs +0 -212
  568. package/dist/admin/ListView-9shnR2xp.mjs.map +0 -1
  569. package/dist/admin/ListView-IaEe1_Uy.js +0 -238
  570. package/dist/admin/ListView-IaEe1_Uy.js.map +0 -1
  571. package/dist/admin/ListView-_EZZ571X.js +0 -228
  572. package/dist/admin/ListView-_EZZ571X.js.map +0 -1
  573. package/dist/admin/ListView-z9G1Eash.mjs +0 -202
  574. package/dist/admin/ListView-z9G1Eash.mjs.map +0 -1
  575. package/dist/admin/ListViewPage-FE12IpwT.mjs +0 -925
  576. package/dist/admin/ListViewPage-FE12IpwT.mjs.map +0 -1
  577. package/dist/admin/ListViewPage-u5WSF93L.js +0 -957
  578. package/dist/admin/ListViewPage-u5WSF93L.js.map +0 -1
  579. package/dist/admin/Login-9iKNSYCJ.mjs +0 -31
  580. package/dist/admin/Login-9iKNSYCJ.mjs.map +0 -1
  581. package/dist/admin/Login-ug0ICazL.js +0 -39
  582. package/dist/admin/Login-ug0ICazL.js.map +0 -1
  583. package/dist/admin/MagicLinkEE-3a4aj5bM.mjs +0 -27
  584. package/dist/admin/MagicLinkEE-3a4aj5bM.mjs.map +0 -1
  585. package/dist/admin/MagicLinkEE-TlpYCgSF.js +0 -31
  586. package/dist/admin/MagicLinkEE-TlpYCgSF.js.map +0 -1
  587. package/dist/admin/MarketplacePage-BBs4GMeX.mjs +0 -1014
  588. package/dist/admin/MarketplacePage-BBs4GMeX.mjs.map +0 -1
  589. package/dist/admin/MarketplacePage-GuZItQkJ.js +0 -1045
  590. package/dist/admin/MarketplacePage-GuZItQkJ.js.map +0 -1
  591. package/dist/admin/NoContentTypePage-MI-TNgDm.mjs +0 -50
  592. package/dist/admin/NoContentTypePage-MI-TNgDm.mjs.map +0 -1
  593. package/dist/admin/NoContentTypePage-WM9PSeKc.js +0 -54
  594. package/dist/admin/NoContentTypePage-WM9PSeKc.js.map +0 -1
  595. package/dist/admin/NoPermissionsPage-K6eIf5zl.mjs +0 -23
  596. package/dist/admin/NoPermissionsPage-K6eIf5zl.mjs.map +0 -1
  597. package/dist/admin/NoPermissionsPage-PP92ItBk.js +0 -27
  598. package/dist/admin/NoPermissionsPage-PP92ItBk.js.map +0 -1
  599. package/dist/admin/NotAllowed-9d8xvtvI.mjs +0 -36
  600. package/dist/admin/NotAllowed-9d8xvtvI.mjs.map +0 -1
  601. package/dist/admin/NotAllowed-FmDlK9I3.js +0 -42
  602. package/dist/admin/NotAllowed-FmDlK9I3.js.map +0 -1
  603. package/dist/admin/Ornaments-fHu7120M.js +0 -214
  604. package/dist/admin/Ornaments-fHu7120M.js.map +0 -1
  605. package/dist/admin/Permissions-jsl-R7bI.js +0 -2082
  606. package/dist/admin/Permissions-jsl-R7bI.js.map +0 -1
  607. package/dist/admin/Permissions-v99MLjbi.mjs +0 -2046
  608. package/dist/admin/Permissions-v99MLjbi.mjs.map +0 -1
  609. package/dist/admin/PrivateRoute-AFoVG5Bk.js +0 -22
  610. package/dist/admin/PrivateRoute-AFoVG5Bk.js.map +0 -1
  611. package/dist/admin/PrivateRoute-XiRz2oSq.mjs +0 -20
  612. package/dist/admin/PrivateRoute-XiRz2oSq.mjs.map +0 -1
  613. package/dist/admin/ProfilePage-HjJiMiTt.mjs +0 -391
  614. package/dist/admin/ProfilePage-HjJiMiTt.mjs.map +0 -1
  615. package/dist/admin/ProfilePage-wGM1mvXn.js +0 -419
  616. package/dist/admin/ProfilePage-wGM1mvXn.js.map +0 -1
  617. package/dist/admin/PurchaseAuditLogs-Rrl9r1j8.mjs +0 -48
  618. package/dist/admin/PurchaseAuditLogs-Rrl9r1j8.mjs.map +0 -1
  619. package/dist/admin/PurchaseAuditLogs-couRts7-.js +0 -52
  620. package/dist/admin/PurchaseAuditLogs-couRts7-.js.map +0 -1
  621. package/dist/admin/PurchaseReviewWorkflows--btlOW_J.mjs +0 -51
  622. package/dist/admin/PurchaseReviewWorkflows--btlOW_J.mjs.map +0 -1
  623. package/dist/admin/PurchaseReviewWorkflows-iyB5BJRO.js +0 -55
  624. package/dist/admin/PurchaseReviewWorkflows-iyB5BJRO.js.map +0 -1
  625. package/dist/admin/PurchaseSingleSignOn-L8l1HqSb.mjs +0 -51
  626. package/dist/admin/PurchaseSingleSignOn-L8l1HqSb.mjs.map +0 -1
  627. package/dist/admin/PurchaseSingleSignOn-oXrB5aDz.js +0 -55
  628. package/dist/admin/PurchaseSingleSignOn-oXrB5aDz.js.map +0 -1
  629. package/dist/admin/ReviewWorkflowsColumn-NUu47oVz.mjs +0 -34
  630. package/dist/admin/ReviewWorkflowsColumn-NUu47oVz.mjs.map +0 -1
  631. package/dist/admin/ReviewWorkflowsColumn-uIqJfjyd.js +0 -39
  632. package/dist/admin/ReviewWorkflowsColumn-uIqJfjyd.js.map +0 -1
  633. package/dist/admin/SelectRoles-5vr-vXOm.js +0 -114
  634. package/dist/admin/SelectRoles-5vr-vXOm.js.map +0 -1
  635. package/dist/admin/SelectRoles-ytHc3di2.mjs +0 -106
  636. package/dist/admin/SelectRoles-ytHc3di2.mjs.map +0 -1
  637. package/dist/admin/SingleSignOnPage-1Wqj_7y-.js +0 -263
  638. package/dist/admin/SingleSignOnPage-1Wqj_7y-.js.map +0 -1
  639. package/dist/admin/SingleSignOnPage-7oJES3UH.mjs +0 -238
  640. package/dist/admin/SingleSignOnPage-7oJES3UH.mjs.map +0 -1
  641. package/dist/admin/Table-LQhGojNx.mjs +0 -165
  642. package/dist/admin/Table-LQhGojNx.mjs.map +0 -1
  643. package/dist/admin/Table-M5UsBfFs.js +0 -190
  644. package/dist/admin/Table-M5UsBfFs.js.map +0 -1
  645. package/dist/admin/TokenTypeSelect-5o9mvFd7.mjs +0 -357
  646. package/dist/admin/TokenTypeSelect-5o9mvFd7.mjs.map +0 -1
  647. package/dist/admin/TokenTypeSelect-ZBDI26vJ.js +0 -385
  648. package/dist/admin/TokenTypeSelect-ZBDI26vJ.js.map +0 -1
  649. package/dist/admin/UseCasePage-e7rn-aW-.mjs +0 -146
  650. package/dist/admin/UseCasePage-e7rn-aW-.mjs.map +0 -1
  651. package/dist/admin/UseCasePage-q3u-xs7F.js +0 -175
  652. package/dist/admin/UseCasePage-q3u-xs7F.js.map +0 -1
  653. package/dist/admin/apiTokens-_gKUBKPQ.js +0 -62
  654. package/dist/admin/apiTokens-_gKUBKPQ.js.map +0 -1
  655. package/dist/admin/apiTokens-nD8zbNlc.mjs +0 -56
  656. package/dist/admin/apiTokens-nD8zbNlc.mjs.map +0 -1
  657. package/dist/admin/ar-i6ait0_Z.js +0 -939
  658. package/dist/admin/ar-i6ait0_Z.js.map +0 -1
  659. package/dist/admin/ar-lYsknZVT.mjs +0 -918
  660. package/dist/admin/ar-lYsknZVT.mjs.map +0 -1
  661. package/dist/admin/ca-1Cl4eOmr.js +0 -727
  662. package/dist/admin/ca-1Cl4eOmr.js.map +0 -1
  663. package/dist/admin/ca-ruPjUw52.mjs +0 -709
  664. package/dist/admin/ca-ruPjUw52.mjs.map +0 -1
  665. package/dist/admin/constants-6E1OwHx7.js +0 -197
  666. package/dist/admin/constants-6E1OwHx7.js.map +0 -1
  667. package/dist/admin/constants-AdKxCt0x.mjs +0 -52
  668. package/dist/admin/constants-AdKxCt0x.mjs.map +0 -1
  669. package/dist/admin/constants-D6NLEhwu.mjs +0 -172
  670. package/dist/admin/constants-D6NLEhwu.mjs.map +0 -1
  671. package/dist/admin/constants-DxpaZFhM.mjs +0 -10
  672. package/dist/admin/constants-DxpaZFhM.mjs.map +0 -1
  673. package/dist/admin/constants-ZZWbRAQT.js +0 -60
  674. package/dist/admin/constants-ZZWbRAQT.js.map +0 -1
  675. package/dist/admin/constants-wsN7Fj5H.js +0 -14
  676. package/dist/admin/constants-wsN7Fj5H.js.map +0 -1
  677. package/dist/admin/cs-MneRs5g8.js +0 -294
  678. package/dist/admin/cs-MneRs5g8.js.map +0 -1
  679. package/dist/admin/cs-cEW7Jgll.mjs +0 -281
  680. package/dist/admin/cs-cEW7Jgll.mjs.map +0 -1
  681. package/dist/admin/de-vPJQw5Tm.js +0 -719
  682. package/dist/admin/de-vPJQw5Tm.js.map +0 -1
  683. package/dist/admin/de-xZr3TXsT.mjs +0 -701
  684. package/dist/admin/de-xZr3TXsT.mjs.map +0 -1
  685. package/dist/admin/dk-_Fh6kypZ.js +0 -637
  686. package/dist/admin/dk-_Fh6kypZ.js.map +0 -1
  687. package/dist/admin/dk-nqK-ugFb.mjs +0 -619
  688. package/dist/admin/dk-nqK-ugFb.mjs.map +0 -1
  689. package/dist/admin/en-X84kQxpg.js +0 -1068
  690. package/dist/admin/en-X84kQxpg.js.map +0 -1
  691. package/dist/admin/en-qxG24n4z.mjs +0 -1047
  692. package/dist/admin/en-qxG24n4z.mjs.map +0 -1
  693. package/dist/admin/es-6dicYJQA.mjs +0 -779
  694. package/dist/admin/es-6dicYJQA.mjs.map +0 -1
  695. package/dist/admin/es-FC_8jlK7.js +0 -799
  696. package/dist/admin/es-FC_8jlK7.js.map +0 -1
  697. package/dist/admin/eu-Pzqod2VF.js +0 -835
  698. package/dist/admin/eu-Pzqod2VF.js.map +0 -1
  699. package/dist/admin/eu-l9nvfvQj.mjs +0 -815
  700. package/dist/admin/eu-l9nvfvQj.mjs.map +0 -1
  701. package/dist/admin/fr-8h2tzs3Z.js +0 -765
  702. package/dist/admin/fr-8h2tzs3Z.js.map +0 -1
  703. package/dist/admin/fr-97oVHDGZ.mjs +0 -744
  704. package/dist/admin/fr-97oVHDGZ.mjs.map +0 -1
  705. package/dist/admin/gu-YXP9LW1p.mjs +0 -617
  706. package/dist/admin/gu-YXP9LW1p.mjs.map +0 -1
  707. package/dist/admin/gu-fkXeW5oU.js +0 -626
  708. package/dist/admin/gu-fkXeW5oU.js.map +0 -1
  709. package/dist/admin/he-Rnd0orlz.mjs +0 -315
  710. package/dist/admin/he-Rnd0orlz.mjs.map +0 -1
  711. package/dist/admin/he-YNZzVWgP.js +0 -329
  712. package/dist/admin/he-YNZzVWgP.js.map +0 -1
  713. package/dist/admin/hi-42LJgJV1.mjs +0 -707
  714. package/dist/admin/hi-42LJgJV1.mjs.map +0 -1
  715. package/dist/admin/hi-ubgoUzQ0.js +0 -725
  716. package/dist/admin/hi-ubgoUzQ0.js.map +0 -1
  717. package/dist/admin/hu-oHJgjivB.js +0 -835
  718. package/dist/admin/hu-oHJgjivB.js.map +0 -1
  719. package/dist/admin/hu-xsansjmF.mjs +0 -815
  720. package/dist/admin/hu-xsansjmF.mjs.map +0 -1
  721. package/dist/admin/id-JurRr0gC.mjs +0 -438
  722. package/dist/admin/id-JurRr0gC.mjs.map +0 -1
  723. package/dist/admin/id-T2ge96wh.js +0 -451
  724. package/dist/admin/id-T2ge96wh.js.map +0 -1
  725. package/dist/admin/index-1NFAbkxM.mjs +0 -5927
  726. package/dist/admin/index-1NFAbkxM.mjs.map +0 -1
  727. package/dist/admin/index-mQQPK-ix.js +0 -6023
  728. package/dist/admin/index-mQQPK-ix.js.map +0 -1
  729. package/dist/admin/it-890_w-P3.mjs +0 -449
  730. package/dist/admin/it-890_w-P3.mjs.map +0 -1
  731. package/dist/admin/it-uWPMs24z.js +0 -462
  732. package/dist/admin/it-uWPMs24z.js.map +0 -1
  733. package/dist/admin/ja-F61alnK1.mjs +0 -618
  734. package/dist/admin/ja-F61alnK1.mjs.map +0 -1
  735. package/dist/admin/ja-pw-zE8MH.js +0 -636
  736. package/dist/admin/ja-pw-zE8MH.js.map +0 -1
  737. package/dist/admin/ko-DfQWK5T3.mjs +0 -616
  738. package/dist/admin/ko-DfQWK5T3.mjs.map +0 -1
  739. package/dist/admin/ko-XhK2FY3_.js +0 -634
  740. package/dist/admin/ko-XhK2FY3_.js.map +0 -1
  741. package/dist/admin/ml-EVaVYywL.mjs +0 -707
  742. package/dist/admin/ml-EVaVYywL.mjs.map +0 -1
  743. package/dist/admin/ml-hT2VI8JA.js +0 -725
  744. package/dist/admin/ml-hT2VI8JA.js.map +0 -1
  745. package/dist/admin/ms-CzgcVrsY.mjs +0 -332
  746. package/dist/admin/ms-CzgcVrsY.mjs.map +0 -1
  747. package/dist/admin/ms-DoMJCZ42.js +0 -345
  748. package/dist/admin/ms-DoMJCZ42.js.map +0 -1
  749. package/dist/admin/nl-LLi_sx9P.js +0 -831
  750. package/dist/admin/nl-LLi_sx9P.js.map +0 -1
  751. package/dist/admin/nl-XNqQYx_K.mjs +0 -811
  752. package/dist/admin/nl-XNqQYx_K.mjs.map +0 -1
  753. package/dist/admin/no-JwA1Lt4Y.mjs +0 -300
  754. package/dist/admin/no-JwA1Lt4Y.mjs.map +0 -1
  755. package/dist/admin/no-wmtVIVuz.js +0 -313
  756. package/dist/admin/no-wmtVIVuz.js.map +0 -1
  757. package/dist/admin/pl-05ncDTwZ.js +0 -724
  758. package/dist/admin/pl-05ncDTwZ.js.map +0 -1
  759. package/dist/admin/pl-euPz4n1g.mjs +0 -706
  760. package/dist/admin/pl-euPz4n1g.mjs.map +0 -1
  761. package/dist/admin/pt-BR-vpbGYSYw.mjs +0 -777
  762. package/dist/admin/pt-BR-vpbGYSYw.mjs.map +0 -1
  763. package/dist/admin/pt-BR-xA4J5pi2.js +0 -797
  764. package/dist/admin/pt-BR-xA4J5pi2.js.map +0 -1
  765. package/dist/admin/pt-RlnkaSdF.mjs +0 -287
  766. package/dist/admin/pt-RlnkaSdF.mjs.map +0 -1
  767. package/dist/admin/pt-yArB6nEx.js +0 -299
  768. package/dist/admin/pt-yArB6nEx.js.map +0 -1
  769. package/dist/admin/reducers-IQWvK_9L.mjs +0 -4617
  770. package/dist/admin/reducers-IQWvK_9L.mjs.map +0 -1
  771. package/dist/admin/reducers-wZUQqmNX.js +0 -4764
  772. package/dist/admin/reducers-wZUQqmNX.js.map +0 -1
  773. package/dist/admin/ru-4bDDGI3o.js +0 -996
  774. package/dist/admin/ru-4bDDGI3o.js.map +0 -1
  775. package/dist/admin/ru-tyoEF5X6.mjs +0 -975
  776. package/dist/admin/ru-tyoEF5X6.mjs.map +0 -1
  777. package/dist/admin/sa-OOEUNg5o.js +0 -725
  778. package/dist/admin/sa-OOEUNg5o.js.map +0 -1
  779. package/dist/admin/sa-s-WVHU-Y.mjs +0 -707
  780. package/dist/admin/sa-s-WVHU-Y.mjs.map +0 -1
  781. package/dist/admin/selectors-PTHjHMQi.js +0 -8
  782. package/dist/admin/selectors-PTHjHMQi.js.map +0 -1
  783. package/dist/admin/selectors-nn3C3YKE.mjs +0 -6
  784. package/dist/admin/selectors-nn3C3YKE.mjs.map +0 -1
  785. package/dist/admin/sk-1sQSF-r2.js +0 -693
  786. package/dist/admin/sk-1sQSF-r2.js.map +0 -1
  787. package/dist/admin/sk-5bIrjuCN.mjs +0 -673
  788. package/dist/admin/sk-5bIrjuCN.mjs.map +0 -1
  789. package/dist/admin/src/components/InjectionZone.d.ts +0 -59
  790. package/dist/admin/src/content-manager/components/ComponentIcon.d.ts +0 -8
  791. package/dist/admin/src/content-manager/components/ConfigurationForm/EditFieldForm.d.ts +0 -9
  792. package/dist/admin/src/content-manager/components/ConfigurationForm/Fields.d.ts +0 -21
  793. package/dist/admin/src/content-manager/components/ConfigurationForm/Form.d.ts +0 -32
  794. package/dist/admin/src/content-manager/components/DragPreviews/CardDragPreview.d.ts +0 -7
  795. package/dist/admin/src/content-manager/components/DragPreviews/ComponentDragPreview.d.ts +0 -6
  796. package/dist/admin/src/content-manager/components/DragPreviews/RelationDragPreview.d.ts +0 -11
  797. package/dist/admin/src/content-manager/components/FieldTypeIcon.d.ts +0 -9
  798. package/dist/admin/src/content-manager/components/LeftMenu.d.ts +0 -2
  799. package/dist/admin/src/content-manager/constants/attributes.d.ts +0 -14
  800. package/dist/admin/src/content-manager/constants/collections.d.ts +0 -3
  801. package/dist/admin/src/content-manager/constants/dragAndDrop.d.ts +0 -8
  802. package/dist/admin/src/content-manager/exports.d.ts +0 -10
  803. package/dist/admin/src/content-manager/features/DocumentRBAC.d.ts +0 -36
  804. package/dist/admin/src/content-manager/history/components/HistoryAction.d.ts +0 -3
  805. package/dist/admin/src/content-manager/history/components/VersionContent.d.ts +0 -2
  806. package/dist/admin/src/content-manager/history/components/VersionHeader.d.ts +0 -5
  807. package/dist/admin/src/content-manager/history/components/VersionsList.d.ts +0 -2
  808. package/dist/admin/src/content-manager/history/pages/History.d.ts +0 -25
  809. package/dist/admin/src/content-manager/history/routes.d.ts +0 -11
  810. package/dist/admin/src/content-manager/history/services/historyVersion.d.ts +0 -7
  811. package/dist/admin/src/content-manager/hooks/useContentManagerInitData.d.ts +0 -15
  812. package/dist/admin/src/content-manager/hooks/useContentTypeSchema.d.ts +0 -24
  813. package/dist/admin/src/content-manager/hooks/useDocument.d.ts +0 -89
  814. package/dist/admin/src/content-manager/hooks/useDocumentActions.d.ts +0 -102
  815. package/dist/admin/src/content-manager/hooks/useDocumentLayout.d.ts +0 -138
  816. package/dist/admin/src/content-manager/hooks/useDragAndDrop.d.ts +0 -51
  817. package/dist/admin/src/content-manager/hooks/useKeyboardDragAndDrop.d.ts +0 -14
  818. package/dist/admin/src/content-manager/hooks/useLazyComponents.d.ts +0 -13
  819. package/dist/admin/src/content-manager/hooks/useSyncRbac.d.ts +0 -15
  820. package/dist/admin/src/content-manager/layout.d.ts +0 -16
  821. package/dist/admin/src/content-manager/modules/rbac.d.ts +0 -14
  822. package/dist/admin/src/content-manager/modules/reducers.d.ts +0 -4
  823. package/dist/admin/src/content-manager/pages/ComponentConfigurationPage.d.ts +0 -3
  824. package/dist/admin/src/content-manager/pages/EditConfigurationPage.d.ts +0 -3
  825. package/dist/admin/src/content-manager/pages/EditView/EditViewPage.d.ts +0 -3
  826. package/dist/admin/src/content-manager/pages/EditView/components/DocumentActions.d.ts +0 -69
  827. package/dist/admin/src/content-manager/pages/EditView/components/DocumentStatus.d.ts +0 -16
  828. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +0 -3
  829. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.d.ts +0 -3
  830. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.d.ts +0 -3
  831. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.d.ts +0 -3
  832. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.d.ts +0 -3
  833. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Paragraph.d.ts +0 -3
  834. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Blocks/Quote.d.ts +0 -3
  835. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.d.ts +0 -6
  836. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +0 -61
  837. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.d.ts +0 -10
  838. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.d.ts +0 -10
  839. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +0 -10
  840. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/Modifiers.d.ts +0 -16
  841. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.d.ts +0 -11
  842. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.d.ts +0 -9
  843. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.d.ts +0 -8
  844. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +0 -13
  845. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/enterKey.d.ts +0 -6
  846. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +0 -10
  847. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/BlocksInput/utils/types.d.ts +0 -10
  848. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/Initializer.d.ts +0 -9
  849. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/Input.d.ts +0 -9
  850. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/NonRepeatable.d.ts +0 -6
  851. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Component/Repeatable.d.ts +0 -6
  852. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/ComponentContext.d.ts +0 -42
  853. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/AddComponentButton.d.ts +0 -11
  854. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/ComponentCard.d.ts +0 -9
  855. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.d.ts +0 -17
  856. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.d.ts +0 -9
  857. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +0 -14
  858. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/DynamicZoneLabel.d.ts +0 -12
  859. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +0 -13
  860. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/NotAllowed.d.ts +0 -7
  861. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Relations.d.ts +0 -26
  862. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/UID.d.ts +0 -9
  863. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/Editor.d.ts +0 -18
  864. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +0 -59
  865. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/Field.d.ts +0 -11
  866. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.d.ts +0 -5
  867. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +0 -7
  868. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.d.ts +0 -17
  869. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +0 -54
  870. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.d.ts +0 -5
  871. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.d.ts +0 -4
  872. package/dist/admin/src/content-manager/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.d.ts +0 -16
  873. package/dist/admin/src/content-manager/pages/EditView/components/FormLayout.d.ts +0 -5
  874. package/dist/admin/src/content-manager/pages/EditView/components/Header.d.ts +0 -35
  875. package/dist/admin/src/content-manager/pages/EditView/components/InputRenderer.d.ts +0 -14
  876. package/dist/admin/src/content-manager/pages/EditView/components/Panels.d.ts +0 -10
  877. package/dist/admin/src/content-manager/pages/EditView/utils/data.d.ts +0 -20
  878. package/dist/admin/src/content-manager/pages/EditView/utils/forms.d.ts +0 -9
  879. package/dist/admin/src/content-manager/pages/ListConfiguration/ListConfigurationPage.d.ts +0 -10
  880. package/dist/admin/src/content-manager/pages/ListConfiguration/components/DraggableCard.d.ts +0 -12
  881. package/dist/admin/src/content-manager/pages/ListConfiguration/components/EditFieldForm.d.ts +0 -8
  882. package/dist/admin/src/content-manager/pages/ListConfiguration/components/Header.d.ts +0 -8
  883. package/dist/admin/src/content-manager/pages/ListConfiguration/components/Settings.d.ts +0 -5
  884. package/dist/admin/src/content-manager/pages/ListConfiguration/components/SortDisplayedFields.d.ts +0 -6
  885. package/dist/admin/src/content-manager/pages/ListView/ListViewPage.d.ts +0 -3
  886. package/dist/admin/src/content-manager/pages/ListView/components/AutoCloneFailureModal.d.ts +0 -8
  887. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/Actions.d.ts +0 -52
  888. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +0 -15
  889. package/dist/admin/src/content-manager/pages/ListView/components/BulkActions/PublishAction.d.ts +0 -31
  890. package/dist/admin/src/content-manager/pages/ListView/components/Filters.d.ts +0 -8
  891. package/dist/admin/src/content-manager/pages/ListView/components/InjectionZoneList.d.ts +0 -7
  892. package/dist/admin/src/content-manager/pages/ListView/components/TableActions.d.ts +0 -8
  893. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellContent.d.ts +0 -9
  894. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/CellValue.d.ts +0 -8
  895. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Components.d.ts +0 -12
  896. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Media.d.ts +0 -23
  897. package/dist/admin/src/content-manager/pages/ListView/components/TableCells/Relations.d.ts +0 -12
  898. package/dist/admin/src/content-manager/pages/ListView/components/ViewSettingsMenu.d.ts +0 -10
  899. package/dist/admin/src/content-manager/pages/NoContentTypePage.d.ts +0 -2
  900. package/dist/admin/src/content-manager/pages/NoPermissionsPage.d.ts +0 -2
  901. package/dist/admin/src/content-manager/router.d.ts +0 -5
  902. package/dist/admin/src/content-manager/services/api.d.ts +0 -3
  903. package/dist/admin/src/content-manager/services/components.d.ts +0 -6
  904. package/dist/admin/src/content-manager/services/contentTypes.d.ts +0 -18
  905. package/dist/admin/src/content-manager/services/documents.d.ts +0 -94
  906. package/dist/admin/src/content-manager/services/init.d.ts +0 -10
  907. package/dist/admin/src/content-manager/services/relations.d.ts +0 -49
  908. package/dist/admin/src/content-manager/services/uid.d.ts +0 -32
  909. package/dist/admin/src/content-manager/utils/api.d.ts +0 -19
  910. package/dist/admin/src/content-manager/utils/attributes.d.ts +0 -19
  911. package/dist/admin/src/content-manager/utils/relations.d.ts +0 -12
  912. package/dist/admin/src/content-manager/utils/translations.d.ts +0 -2
  913. package/dist/admin/src/content-manager/utils/validation.d.ts +0 -7
  914. package/dist/admin/src/core/apis/content-manager.d.ts +0 -126
  915. package/dist/admin/src/hooks/useInjectionZone.d.ts +0 -2
  916. package/dist/admin/src/pages/Settings/pages/PurchaseReviewWorkflows.d.ts +0 -2
  917. package/dist/admin/src/utils/getYupInnerErrors.d.ts +0 -7
  918. package/dist/admin/src/utils/hashAdminUserEmail.d.ts +0 -6
  919. package/dist/admin/sv-JVgQU2PS.mjs +0 -810
  920. package/dist/admin/sv-JVgQU2PS.mjs.map +0 -1
  921. package/dist/admin/sv-d0rqYiHZ.js +0 -830
  922. package/dist/admin/sv-d0rqYiHZ.js.map +0 -1
  923. package/dist/admin/th-er8qvbeL.mjs +0 -420
  924. package/dist/admin/th-er8qvbeL.mjs.map +0 -1
  925. package/dist/admin/th-mqExIzdv.js +0 -433
  926. package/dist/admin/th-mqExIzdv.js.map +0 -1
  927. package/dist/admin/tr-aYPucbUC.js +0 -788
  928. package/dist/admin/tr-aYPucbUC.js.map +0 -1
  929. package/dist/admin/tr-b2vrBJ49.mjs +0 -768
  930. package/dist/admin/tr-b2vrBJ49.mjs.map +0 -1
  931. package/dist/admin/transferTokens-P5z1yVh2.js +0 -65
  932. package/dist/admin/transferTokens-P5z1yVh2.js.map +0 -1
  933. package/dist/admin/transferTokens-PlBVZdw3.mjs +0 -59
  934. package/dist/admin/transferTokens-PlBVZdw3.mjs.map +0 -1
  935. package/dist/admin/uk-1c7KIaI6.js +0 -346
  936. package/dist/admin/uk-1c7KIaI6.js.map +0 -1
  937. package/dist/admin/uk-RfkbT49M.mjs +0 -333
  938. package/dist/admin/uk-RfkbT49M.mjs.map +0 -1
  939. package/dist/admin/useAdminRoles-BG7b996L.mjs +0 -28
  940. package/dist/admin/useAdminRoles-BG7b996L.mjs.map +0 -1
  941. package/dist/admin/useAdminRoles-THWXour6.js +0 -50
  942. package/dist/admin/useAdminRoles-THWXour6.js.map +0 -1
  943. package/dist/admin/useContentTypes-PEGh0Cg-.mjs +0 -51
  944. package/dist/admin/useContentTypes-PEGh0Cg-.mjs.map +0 -1
  945. package/dist/admin/useContentTypes-RoSvxizj.js +0 -73
  946. package/dist/admin/useContentTypes-RoSvxizj.js.map +0 -1
  947. package/dist/admin/useDebounce-OnUygPz6.mjs +0 -17
  948. package/dist/admin/useDebounce-OnUygPz6.mjs.map +0 -1
  949. package/dist/admin/useDebounce-tz5EMJbt.js +0 -39
  950. package/dist/admin/useDebounce-tz5EMJbt.js.map +0 -1
  951. package/dist/admin/useDocumentLayout-4trWL6Jz.mjs +0 -732
  952. package/dist/admin/useDocumentLayout-4trWL6Jz.mjs.map +0 -1
  953. package/dist/admin/useDocumentLayout-V_N5dUwQ.js +0 -764
  954. package/dist/admin/useDocumentLayout-V_N5dUwQ.js.map +0 -1
  955. package/dist/admin/useLicenseLimitNotification-9DqSZuyc.mjs +0 -80
  956. package/dist/admin/useLicenseLimitNotification-9DqSZuyc.mjs.map +0 -1
  957. package/dist/admin/useLicenseLimitNotification-SiWQ5LGo.js +0 -105
  958. package/dist/admin/useLicenseLimitNotification-SiWQ5LGo.js.map +0 -1
  959. package/dist/admin/useReviewWorkflows-0ty4mwQd.js +0 -29
  960. package/dist/admin/useReviewWorkflows-0ty4mwQd.js.map +0 -1
  961. package/dist/admin/useReviewWorkflows-HwyFyit7.mjs +0 -27
  962. package/dist/admin/useReviewWorkflows-HwyFyit7.mjs.map +0 -1
  963. package/dist/admin/useSyncRbac-LNOzRXJ5.mjs +0 -45
  964. package/dist/admin/useSyncRbac-LNOzRXJ5.mjs.map +0 -1
  965. package/dist/admin/useSyncRbac-vkWgDJTE.js +0 -67
  966. package/dist/admin/useSyncRbac-vkWgDJTE.js.map +0 -1
  967. package/dist/admin/useWebhooks-DmGNXCdi.js +0 -93
  968. package/dist/admin/useWebhooks-DmGNXCdi.js.map +0 -1
  969. package/dist/admin/useWebhooks-dOVyaYlw.mjs +0 -91
  970. package/dist/admin/useWebhooks-dOVyaYlw.mjs.map +0 -1
  971. package/dist/admin/validateWorkflow-99y3bkNx.js +0 -1077
  972. package/dist/admin/validateWorkflow-99y3bkNx.js.map +0 -1
  973. package/dist/admin/validateWorkflow-ubLwZqCK.mjs +0 -1033
  974. package/dist/admin/validateWorkflow-ubLwZqCK.mjs.map +0 -1
  975. package/dist/admin/validation-cpJKCQz1.mjs +0 -43
  976. package/dist/admin/validation-cpJKCQz1.mjs.map +0 -1
  977. package/dist/admin/validation-lIVymZ0n.js +0 -65
  978. package/dist/admin/validation-lIVymZ0n.js.map +0 -1
  979. package/dist/admin/vi-Rg9es0FD.js +0 -301
  980. package/dist/admin/vi-Rg9es0FD.js.map +0 -1
  981. package/dist/admin/vi-pyngavdo.mjs +0 -288
  982. package/dist/admin/vi-pyngavdo.mjs.map +0 -1
  983. package/dist/admin/zh-Hans-Gbpdme1Q.mjs +0 -939
  984. package/dist/admin/zh-Hans-Gbpdme1Q.mjs.map +0 -1
  985. package/dist/admin/zh-Hans-SgnidiuG.js +0 -960
  986. package/dist/admin/zh-Hans-SgnidiuG.js.map +0 -1
  987. package/dist/admin/zh-ONWhjzCj.js +0 -839
  988. package/dist/admin/zh-ONWhjzCj.js.map +0 -1
  989. package/dist/admin/zh-fMjW2qMl.mjs +0 -819
  990. package/dist/admin/zh-fMjW2qMl.mjs.map +0 -1
  991. package/dist/ee/admin/src/content-manager/pages/EditView/components/AssigneeSelect.d.ts +0 -2
  992. package/dist/ee/admin/src/content-manager/pages/EditView/components/ReviewWorkflowsPanel.d.ts +0 -3
  993. package/dist/ee/admin/src/content-manager/pages/EditView/components/StageSelect.d.ts +0 -1
  994. package/dist/ee/admin/src/content-manager/pages/EditView/components/constants.d.ts +0 -2
  995. package/dist/ee/admin/src/content-manager/pages/ListSettingsView/constants.d.ts +0 -7
  996. package/dist/ee/admin/src/content-manager/pages/ListView/components/AssigneeFilter.d.ts +0 -7
  997. package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsAssigneeEE.d.ts +0 -7
  998. package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsColumn.d.ts +0 -2
  999. package/dist/ee/admin/src/content-manager/pages/ListView/components/ReviewWorkflowsStageEE.d.ts +0 -7
  1000. package/dist/ee/admin/src/content-manager/pages/ListView/components/StageFilter.d.ts +0 -8
  1001. package/dist/ee/admin/src/content-manager/pages/ListView/constants.d.ts +0 -69
  1002. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/CreatePage.d.ts +0 -1
  1003. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/EditPage.d.ts +0 -1
  1004. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/ListPage.d.ts +0 -2
  1005. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/actions.d.ts +0 -86
  1006. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/AddStage.d.ts +0 -2
  1007. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Layout.d.ts +0 -12
  1008. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal.d.ts +0 -15
  1009. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stage.d.ts +0 -10
  1010. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/StageDragPreview.d.ts +0 -4
  1011. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/Stages.d.ts +0 -7
  1012. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/WorkflowAttributes.d.ts +0 -4
  1013. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/constants.d.ts +0 -20
  1014. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.d.ts +0 -15
  1015. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/reducer.d.ts +0 -38
  1016. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/selectors.d.ts +0 -62
  1017. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/colors.d.ts +0 -8
  1018. package/dist/ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/validateWorkflow.d.ts +0 -5
  1019. package/dist/ee/admin/src/services/reviewWorkflows.d.ts +0 -39
  1020. package/dist/shared/contracts/review-workflows.d.ts +0 -83
  1021. package/dist/shared/contracts/review-workflows.d.ts.map +0 -1
  1022. /package/dist/admin/src/{content-manager/hooks → hooks}/usePrev.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-mQQPK-ix.js","sources":["../../ee/admin/src/constants.ts","../../ee/admin/src/pages/SettingsPage/constants.ts","../../admin/src/features/BackButton.tsx","../../admin/src/components/Providers.tsx","../../admin/src/App.tsx","../../admin/src/assets/images/logo-strapi-2022.svg","../../admin/src/hooks/useClipboard.ts","../../admin/src/components/ErrorElement.tsx","../../admin/src/hooks/useInjectionZone.ts","../../admin/src/components/InjectionZone.tsx","../../admin/src/content-manager/router.tsx","../../admin/src/services/users.ts","../../ee/admin/src/services/reviewWorkflows.ts","../../ee/admin/src/content-manager/pages/EditView/components/constants.ts","../../ee/admin/src/content-manager/pages/EditView/components/AssigneeSelect.tsx","../../ee/admin/src/hooks/useLicenseLimits.ts","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/assets/balloon.png","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal.tsx","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/constants.ts","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/utils/colors.ts","../../ee/admin/src/content-manager/pages/EditView/components/StageSelect.tsx","../../ee/admin/src/content-manager/pages/EditView/components/ReviewWorkflowsPanel.tsx","../../admin/src/content-manager/history/components/HistoryAction.tsx","../../admin/src/content-manager/hooks/useDocumentActions.ts","../../admin/src/content-manager/pages/EditView/components/DocumentActions.tsx","../../admin/src/hooks/useIsMounted.ts","../../admin/src/hooks/useForceUpdate.ts","../../admin/src/hooks/useThrottledCallback.ts","../../admin/src/utils/shims.ts","../../admin/src/components/DescriptionComponentRenderer.tsx","../../admin/src/content-manager/pages/EditView/components/Header.tsx","../../admin/src/content-manager/pages/EditView/components/Panels.tsx","../../admin/src/content-manager/pages/ListView/components/BulkActions/Actions.tsx","../../admin/src/content-manager/pages/ListView/components/AutoCloneFailureModal.tsx","../../admin/src/content-manager/pages/ListView/components/TableActions.tsx","../../admin/src/core/apis/content-manager.ts","../../admin/src/core/apis/CustomFields.ts","../../admin/src/core/apis/Plugin.ts","../../admin/src/core/store/configure.ts","../../admin/src/core/utils/basename.ts","../../admin/src/core/utils/createHook.ts","../../admin/src/hooks/useEnterprise.ts","../../admin/src/components/UnauthenticatedLogo.tsx","../../admin/src/layouts/UnauthenticatedLayout.tsx","../../admin/src/pages/Auth/components/Login.tsx","../../admin/src/pages/Auth/components/ForgotPassword.tsx","../../admin/src/pages/Auth/components/ForgotPasswordSuccess.tsx","../../admin/src/pages/Auth/components/Oops.tsx","../../admin/src/hooks/usePersistentState.ts","../../admin/src/components/NpsSurvey.tsx","../../admin/src/pages/Auth/components/Register.tsx","../../admin/src/pages/Auth/components/ResetPassword.tsx","../../admin/src/pages/Auth/constants.ts","../../admin/src/pages/Auth/AuthPage.tsx","../../admin/src/pages/NotFoundPage.tsx","../../admin/src/pages/Settings/constants.ts","../../admin/src/translations/languageNativeNames.ts","../../admin/src/StrapiApp.tsx","../../admin/src/render.ts","../../admin/src/components/ConfirmDialog.tsx","../../admin/src/components/Pagination.tsx","../../admin/src/components/SearchInput.tsx","../../admin/src/hooks/useControllableState.ts","../../admin/src/components/Table.tsx","../../admin/src/hooks/useInjectReducer.ts","../../admin/src/hooks/useFetchClient.ts"],"sourcesContent":["import type { SettingsMenu } from '../../../admin/src/constants';\nimport type { PermissionMap } from '../../../admin/src/types/permissions';\nimport type { RouteObject } from 'react-router-dom';\n\nexport const ADMIN_PERMISSIONS_EE = {\n settings: {\n auditLogs: {\n main: [{ action: 'admin::audit-logs.read', subject: null }],\n read: [{ action: 'admin::audit-logs.read', subject: null }],\n update: [{ action: 'admin::audit-logs.update', subject: null }],\n },\n 'review-workflows': {\n main: [{ action: 'admin::review-workflows.read', subject: null }],\n read: [{ action: 'admin::review-workflows.read', subject: null }],\n create: [{ action: 'admin::review-workflows.create', subject: null }],\n delete: [{ action: 'admin::review-workflows.delete', subject: null }],\n update: [{ action: 'admin::review-workflows.update', subject: null }],\n },\n sso: {\n main: [{ action: 'admin::provider-login.read', subject: null }],\n read: [{ action: 'admin::provider-login.read', subject: null }],\n update: [{ action: 'admin::provider-login.update', subject: null }],\n },\n },\n} satisfies {\n settings: Pick<PermissionMap['settings'], 'auditLogs' | 'review-workflows' | 'sso'>;\n};\n\n/**\n * Base EE routes, these are relative to the `root` of the app.\n * We use a function to get them so we're not looking at window\n * during build time.\n */\nexport const getEERoutes = (): RouteObject[] =>\n window.strapi.isEE\n ? [\n {\n path: 'auth/login/:authResponse',\n lazy: async () => {\n const { AuthResponse } = await import('./pages/AuthResponse');\n\n return {\n Component: AuthResponse,\n };\n },\n },\n ]\n : [];\n\n// TODO: the constants.js file is imported before the React application is setup and\n// therefore `window.strapi` might not exist at import-time. We should probably define\n// which constant is available at which stage of the application lifecycle.\nexport const SETTINGS_LINKS_EE = (): SettingsMenu => ({\n global: [\n ...(window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/single-sign-on',\n id: 'sso',\n },\n ]\n : []),\n\n ...(window.strapi.features.isEnabled(window.strapi.features.REVIEW_WORKFLOWS)\n ? [\n {\n intlLabel: {\n id: 'Settings.review-workflows.page.title',\n defaultMessage: 'Review Workflows',\n },\n to: '/settings/review-workflows',\n id: 'review-workflows',\n },\n ]\n : []),\n ],\n\n admin: [\n ...(window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/audit-logs?pageSize=50&page=1&sort=date:DESC',\n id: 'auditLogs',\n },\n ]\n : []),\n ],\n});\n","import { RouteObject } from 'react-router-dom';\n\n/**\n * All these routes are relative to the `/admin/settings/*` route\n * as such their path should not start with a `/` or include the `/settings` prefix.\n */\nexport const getEERoutes = (): RouteObject[] => [\n ...(window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS)\n ? [\n {\n path: 'audit-logs',\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/AuditLogs/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n },\n ]\n : []),\n ...(window.strapi.features.isEnabled(window.strapi.features.REVIEW_WORKFLOWS)\n ? [\n {\n path: 'review-workflows',\n lazy: async () => {\n const { ProtectedReviewWorkflowsPage } = await import(\n './pages/ReviewWorkflows/ListPage'\n );\n\n return {\n Component: ProtectedReviewWorkflowsPage,\n };\n },\n },\n {\n path: 'review-workflows/create',\n lazy: async () => {\n const { ReviewWorkflowsCreatePage } = await import(\n './pages/ReviewWorkflows/CreatePage'\n );\n\n return {\n Component: ReviewWorkflowsCreatePage,\n };\n },\n },\n {\n path: 'review-workflows/:workflowId',\n lazy: async () => {\n const { ReviewWorkflowsEditPage } = await import('./pages/ReviewWorkflows/EditPage');\n\n return {\n Component: ReviewWorkflowsEditPage,\n };\n },\n },\n ]\n : []),\n ...(window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n {\n path: 'single-sign-on',\n lazy: async () => {\n const { ProtectedSSO } = await import('./pages/SingleSignOnPage');\n\n return {\n Component: ProtectedSSO,\n };\n },\n },\n ]\n : []),\n];\n","import * as React from 'react';\n\nimport { Link, LinkProps } from '@strapi/design-system/v2';\nimport { ArrowLeft } from '@strapi/icons';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport { createContext } from '../components/Context';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\ninterface HistoryState {\n /**\n * The history of the user's navigation within our application\n * during their current session.\n */\n history: string[];\n /**\n * The index of the current location in the history array.\n */\n currentLocationIndex: number;\n /**\n * The current location of the user within our application.\n */\n currentLocation: string;\n /**\n * Whether the user can go back in the history.\n */\n canGoBack: boolean;\n}\n\ninterface HistoryContextValue extends HistoryState {\n /**\n * @description Push a new state to the history. You can\n * either pass a string or an object.\n */\n pushState: (\n path:\n | {\n to: string;\n search: string;\n }\n | string\n ) => void;\n /**\n * @description Go back in the history. This calls `navigate(-1)` internally\n * to keep the browser in sync with the application state.\n */\n goBack: () => void;\n}\n\nconst [Provider, useHistory] = createContext<HistoryContextValue>('History', {\n history: [],\n currentLocationIndex: 0,\n currentLocation: '',\n canGoBack: false,\n pushState: () => {\n throw new Error('You must use the `HistoryProvider` to access the `pushState` function.');\n },\n goBack: () => {\n throw new Error('You must use the `HistoryProvider` to access the `goBack` function.');\n },\n});\n\ninterface HistoryProviderProps {\n children: React.ReactNode;\n}\n\nconst HistoryProvider = ({ children }: HistoryProviderProps) => {\n const location = useLocation();\n const navigate = useNavigate();\n const [state, dispatch] = React.useReducer(reducer, {\n history: [],\n currentLocationIndex: 0,\n currentLocation: '',\n canGoBack: false,\n });\n\n const isGoingBack = React.useRef(false);\n\n const pushState: HistoryContextValue['pushState'] = React.useCallback((path) => {\n dispatch({\n type: 'PUSH_STATE',\n payload: typeof path === 'string' ? { to: path, search: '' } : path,\n });\n }, []);\n\n const goBack: HistoryContextValue['goBack'] = React.useCallback(() => {\n /**\n * Perform the browser back action\n * dispatch the goBack action to keep redux in sync\n * and set the ref to avoid an infinite loop and incorrect state pushing\n */\n navigate(-1);\n dispatch({ type: 'GO_BACK' });\n isGoingBack.current = true;\n }, [navigate]);\n\n /**\n * This is a semi-listener pattern to keep the `canGoBack` state in sync.\n */\n const prevIndex = React.useRef(state.currentLocationIndex);\n React.useEffect(() => {\n if (state.currentLocationIndex !== prevIndex.current) {\n dispatch({\n type: 'SET_CAN_GO_BACK',\n payload: state.currentLocationIndex > 1 && state.history.length > 1,\n });\n prevIndex.current = state.currentLocationIndex;\n }\n }, [prevIndex, state.currentLocationIndex, state.history.length]);\n\n /**\n * This effect is responsible for pushing the new state to the history\n * when the user navigates to a new location assuming they're not going back.\n */\n React.useLayoutEffect(() => {\n if (isGoingBack.current) {\n isGoingBack.current = false;\n } else {\n // this should only occur on link movements, not back/forward clicks\n dispatch({\n type: 'PUSH_STATE',\n payload: { to: location.pathname, search: location.search },\n });\n }\n }, [dispatch, location.pathname, location.search]);\n\n return (\n <Provider pushState={pushState} goBack={goBack} {...state}>\n {children}\n </Provider>\n );\n};\n\ntype HistoryActions =\n | {\n type: 'PUSH_STATE';\n payload: {\n to: string;\n search: string;\n };\n }\n | {\n type: 'GO_BACK';\n }\n | {\n type: 'SET_CAN_GO_BACK';\n payload: boolean;\n };\n\nconst reducer = (state: HistoryState, action: HistoryActions) =>\n produce(state, (draft) => {\n switch (action.type) {\n case 'PUSH_STATE': {\n const path = `${action.payload.to}${action.payload.search}`;\n if (state.currentLocationIndex === state.history.length) {\n // add the new place\n draft.history = [...state.history, path];\n } else {\n // delete all the history after the current place and then add the new place\n draft.history = [...state.history.slice(0, state.currentLocationIndex), path];\n }\n\n draft.currentLocation = path;\n draft.currentLocationIndex += 1;\n\n break;\n }\n case 'GO_BACK': {\n const newIndex = state.currentLocationIndex - 1;\n\n draft.currentLocation = state.history[newIndex - 1];\n draft.currentLocationIndex = newIndex;\n break;\n }\n case 'SET_CAN_GO_BACK': {\n draft.canGoBack = action.payload;\n break;\n }\n default:\n break;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * BackButton\n * -----------------------------------------------------------------------------------------------*/\ninterface BackButtonProps extends Pick<LinkProps, 'disabled'> {}\n\n/**\n * @beta\n * @description The universal back button for the Strapi application. This uses the internal history\n * context to navigate the user back to the previous location. It can be completely disabled in a\n * specific user case.\n */\nconst BackButton = React.forwardRef<HTMLAnchorElement, BackButtonProps>(({ disabled }, ref) => {\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n goBack();\n };\n\n return (\n <Link\n ref={ref}\n as={NavLink}\n // @ts-expect-error – the DS does not infer the props from the `as` prop to the component.\n to={history.at(-1)}\n onClick={handleClick}\n disabled={disabled || !canGoBack}\n aria-disabled={disabled || !canGoBack}\n startIcon={<ArrowLeft />}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n );\n});\n\nexport { BackButton, HistoryProvider };\nexport type { BackButtonProps, HistoryProviderProps, HistoryContextValue, HistoryState };\n","import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/Provider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <NotificationsProvider>\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n fields={strapi.library.fields}\n menu={strapi.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => {\n return strapi.runHookWaterfall(name, initialValue, store);\n }}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.settings}\n >\n <TrackingProvider>\n <GuidedTourProvider>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showTutorials={strapi.configurations.tutorials}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourProvider>\n </TrackingProvider>\n </StrapiAppProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\n </QueryClientProvider>\n </Provider>\n );\n};\n\nexport { Providers };\n","/**\n *\n * App.js\n *\n */\nimport { Suspense } from 'react';\n\nimport { Helmet } from 'react-helmet';\nimport { Outlet } from 'react-router-dom';\n\nimport { Page } from './components/PageHelpers';\nimport { Providers } from './components/Providers';\nimport { LANGUAGE_LOCAL_STORAGE_KEY } from './reducer';\n\nimport type { Store } from './core/store/configure';\nimport type { StrapiApp } from './StrapiApp';\n\ninterface AppProps {\n strapi: StrapiApp;\n store: Store;\n}\n\nconst App = ({ strapi, store }: AppProps) => {\n return (\n <Providers strapi={strapi} store={store}>\n <Suspense fallback={<Page.Loading />}>\n <Helmet\n htmlAttributes={{ lang: localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) || 'en' }}\n />\n <Outlet />\n </Suspense>\n </Providers>\n );\n};\n\nexport { App };\nexport type { AppProps };\n","export default \"data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M39%20282c0-118%200-176.9%2036.6-213.5C112.2%2032%20171.1%2032%20288.9%2032h221.2c117.8%200%20176.7%200%20213.3%2036.6C760%20105.2%20760%20164.1%20760%20281.9v221.2c0%20117.8%200%20176.7-36.6%20213.3C686.8%20753%20627.9%20753%20510.1%20753H288.9c-117.8%200-176.7%200-213.3-36.6C39%20679.8%2039%20620.9%2039%20503.1V281.9Z'%20fill='%234945FF'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M536.4%20250.7H293.7v123.8h123.8v123.7h123.8V255.5c0-2.6-2.2-4.8-4.9-4.8Z'%20fill='%23fff'/%3e%3cpath%20fill='%23fff'%20d='M412.7%20374.5h4.8v4.8h-4.8z'/%3e%3cpath%20d='M293.8%20374.5h119c2.6%200%204.8%202.1%204.8%204.8v119h-119a4.8%204.8%200%200%201-4.8-4.9v-119Z'%20fill='%239593FF'/%3e%3cpath%20d='M417.5%20498.2h123.8L421.6%20618a2.4%202.4%200%200%201-4-1.7v-118ZM293.8%20374.5h-118a2.4%202.4%200%200%201-1.7-4.1l119.7-119.7v123.8Z'%20fill='%239593FF'/%3e%3c/svg%3e\"","import { useCallback } from 'react';\n\nconst useClipboard = () => {\n const copy = useCallback(async (value: string | number) => {\n try {\n // only strings and numbers casted to strings can be copied to clipboard\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw new Error(\n `Cannot copy typeof ${typeof value} to clipboard, must be a string or number`\n );\n }\n // empty strings are also considered invalid\n else if (value === '') {\n throw new Error(`Cannot copy empty string to clipboard.`);\n }\n\n const stringifiedValue = value.toString();\n\n await navigator.clipboard.writeText(stringifiedValue);\n\n return true;\n } catch (error) {\n /**\n * Realistically this isn't useful in production as there's nothing the user can do.\n */\n if (process.env.NODE_ENV === 'development') {\n console.warn('Copy failed', error);\n }\n\n return false;\n }\n }, []);\n\n return { copy };\n};\n\nexport { useClipboard };\n","import { Alert, Button, Flex, Icon, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Duplicate, ExclamationMarkCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Flex\n gap={7}\n padding={7}\n direction=\"column\"\n width=\"35%\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n maxWidth=\"512px\"\n >\n <Flex direction=\"column\" gap={2}>\n <Icon as={ExclamationMarkCircle} width=\"32px\" height=\"32px\" color=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleClick} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n","import {\n InjectionZoneArea,\n InjectionZoneBlock,\n InjectionZoneContainer,\n InjectionZoneModule,\n} from '../components/InjectionZone';\nimport { useStrapiApp } from '../features/StrapiApp';\n\nexport const useInjectionZone = (area: InjectionZoneArea) => {\n const getAdminInjectedComponents = useStrapiApp(\n 'useInjectioneZone',\n (state) => state.getAdminInjectedComponents\n );\n\n const [moduleName, page, position] = area.split('.') as [\n InjectionZoneModule,\n InjectionZoneContainer,\n InjectionZoneBlock\n ];\n\n return getAdminInjectedComponents(moduleName, page, position);\n};\n","import * as React from 'react';\n\nimport { useInjectionZone } from '../hooks/useInjectionZone';\n\nconst INJECTION_ZONES = {\n admin: {\n // Temporary injection zone, support for the react-tour plugin in foodadvisor\n tutorials: {\n links: [],\n },\n },\n contentManager: {\n editView: { informations: [], 'right-links': [] },\n listView: {\n actions: [],\n deleteModalAdditionalInfos: [],\n publishModalAdditionalInfos: [],\n unpublishModalAdditionalInfos: [],\n },\n },\n} satisfies InjectionZones;\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface InjectionZones {\n admin: {\n tutorials: {\n links: InjectionZoneComponent[];\n };\n };\n contentManager: {\n editView: {\n informations: InjectionZoneComponent[];\n 'right-links': InjectionZoneComponent[];\n };\n listView: {\n actions: InjectionZoneComponent[];\n deleteModalAdditionalInfos: InjectionZoneComponent[];\n publishModalAdditionalInfos: InjectionZoneComponent[];\n unpublishModalAdditionalInfos: InjectionZoneComponent[];\n };\n };\n}\n\ntype InjectionZoneArea =\n | 'admin.tutorials.links'\n | 'contentManager.editView.informations'\n | 'contentManager.editView.right-links'\n | 'contentManager.listView.actions'\n | 'contentManager.listView.unpublishModalAdditionalInfos'\n | 'contentManager.listView.deleteModalAdditionalInfos'\n | 'contentManager.listView.publishModalAdditionalInfos'\n | 'contentManager.listView.deleteModalAdditionalInfos';\n\ntype InjectionZoneModule = InjectionZoneArea extends `${infer Word}.${string}` ? Word : never;\ntype InjectionZoneContainer = InjectionZoneArea extends `${string}.${infer Word}.${string}`\n ? Word\n : never;\ntype InjectionZoneBlock = InjectionZoneArea extends `${string}.${string}.${infer Word}`\n ? Word\n : never;\n\n/**\n * You can't know what this component props will be because it's generic and used everywhere\n * e.g. content-manager edit view, we just send the slug but we might not in the listView,\n * therefore, people should type it themselves on the components they render.\n */\nconst InjectionZone = ({ area, ...props }: { area: InjectionZoneArea; [key: string]: unknown }) => {\n const components = useInjectionZone(area);\n\n return (\n <>\n {components.map((component) => (\n <component.Component key={component.name} {...props} />\n ))}\n </>\n );\n};\n\nexport { InjectionZone, INJECTION_ZONES };\n\nexport type {\n InjectionZoneArea,\n InjectionZoneComponent,\n InjectionZones,\n InjectionZoneModule,\n InjectionZoneContainer,\n InjectionZoneBlock,\n};\n","/* eslint-disable check-file/filename-naming-convention */\nimport { lazy } from 'react';\n\nimport { Navigate, RouteObject, useLoaderData, useParams } from 'react-router-dom';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from './constants/collections';\nimport { routes as historyRoutes } from './history/routes';\n\nconst Redirect = () => {\n const pathname = useLoaderData() as string;\n\n return (\n <Navigate\n to={{\n pathname,\n }}\n />\n );\n};\n\nconst ProtectedEditViewPage = lazy(() =>\n import('./pages/EditView/EditViewPage').then((mod) => ({ default: mod.ProtectedEditViewPage }))\n);\nconst ProtectedListViewPage = lazy(() =>\n import('./pages/ListView/ListViewPage').then((mod) => ({ default: mod.ProtectedListViewPage }))\n);\n\nconst CollectionTypePages = () => {\n const { collectionType } = useParams<{ collectionType: string }>();\n\n /**\n * We only support two types of collections.\n */\n if (collectionType !== COLLECTION_TYPES && collectionType !== SINGLE_TYPES) {\n return <Navigate to=\"/404\" />;\n }\n\n return collectionType === COLLECTION_TYPES ? (\n <ProtectedListViewPage />\n ) : (\n <ProtectedEditViewPage />\n );\n};\n\nconst CLONE_RELATIVE_PATH = ':collectionType/:slug/clone/:origin';\nconst CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;\nconst LIST_RELATIVE_PATH = ':collectionType/:slug';\nconst LIST_PATH = `/content-manager/${LIST_RELATIVE_PATH}`;\n\nconst routes: RouteObject[] = [\n {\n path: 'content-manager/*',\n lazy: async () => {\n const { Layout } = await import('./layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n /**\n * These redirects exist because we've changed to use\n * the same term in `:collectionType` as the admin API\n * for simplicity\n */\n {\n path: 'collectionType/:slug',\n loader: ({ params }) => {\n const slug = params.slug;\n\n return `/content-manager/collection-types/${slug}`;\n },\n element: <Redirect />,\n },\n {\n path: 'singleType/:slug',\n loader: ({ params }) => {\n const slug = params.slug;\n\n return `/content-manager/single-types/${slug}`;\n },\n element: <Redirect />,\n },\n {\n path: LIST_RELATIVE_PATH,\n lazy: async () => {\n return {\n Component: CollectionTypePages,\n };\n },\n },\n {\n path: ':collectionType/:slug/:id',\n lazy: async () => {\n const { ProtectedEditViewPage } = await import('./pages/EditView/EditViewPage');\n\n return {\n Component: ProtectedEditViewPage,\n };\n },\n },\n {\n path: CLONE_RELATIVE_PATH,\n lazy: async () => {\n const { ProtectedEditViewPage } = await import('./pages/EditView/EditViewPage');\n\n return {\n Component: ProtectedEditViewPage,\n };\n },\n },\n {\n path: ':collectionType/:slug/configurations/list',\n lazy: async () => {\n const { ProtectedListConfiguration } = await import(\n './pages/ListConfiguration/ListConfigurationPage'\n );\n\n return {\n Component: ProtectedListConfiguration,\n };\n },\n },\n {\n path: 'components/:slug/configurations/edit',\n lazy: async () => {\n const { ProtectedComponentConfigurationPage } = await import(\n './pages/ComponentConfigurationPage'\n );\n\n return {\n Component: ProtectedComponentConfigurationPage,\n };\n },\n },\n {\n path: ':collectionType/:slug/configurations/edit',\n lazy: async () => {\n const { ProtectedEditConfigurationPage } = await import('./pages/EditConfigurationPage');\n\n return {\n Component: ProtectedEditConfigurationPage,\n };\n },\n },\n {\n path: '403',\n lazy: async () => {\n const { NoPermissions } = await import('./pages/NoPermissionsPage');\n\n return {\n Component: NoPermissions,\n };\n },\n },\n {\n path: 'no-content-types',\n lazy: async () => {\n const { NoContentType } = await import('./pages/NoContentTypePage');\n\n return {\n Component: NoContentType,\n };\n },\n },\n ...historyRoutes,\n ],\n },\n];\n\nexport { routes, CLONE_PATH, LIST_PATH };\n","import * as Permissions from '../../../shared/contracts/permissions';\nimport * as Roles from '../../../shared/contracts/roles';\nimport * as Users from '../../../shared/contracts/user';\n\nimport { adminApi } from './api';\n\nimport type { Data } from '@strapi/types';\n\nconst usersService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n /**\n * users\n */\n createUser: builder.mutation<Users.Create.Response['data'], Users.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/users',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: Users.Create.Response) => response.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }],\n }),\n updateUser: builder.mutation<\n Users.Update.Response['data'],\n Omit<Users.Update.Request['body'] & Users.Update.Params, 'blocked'>\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/users/${id}`,\n method: 'PUT',\n data: body,\n }),\n invalidatesTags: (_res, _err, { id }) => [\n { type: 'User', id },\n { type: 'User', id: 'LIST' },\n ],\n }),\n getUsers: builder.query<\n {\n users: Users.FindAll.Response['data']['results'];\n pagination: Users.FindAll.Response['data']['pagination'] | null;\n },\n GetUsersParams\n >({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/users/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Users.FindAll.Response | Users.FindOne.Response) => {\n let users: Users.FindAll.Response['data']['results'] = [];\n\n if (res.data) {\n if ('results' in res.data) {\n if (Array.isArray(res.data.results)) {\n users = res.data.results;\n }\n } else {\n users = [res.data];\n }\n }\n\n return {\n users,\n pagination: 'pagination' in res.data ? res.data.pagination : null,\n };\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'User' as const, id: arg.id }];\n } else {\n return [\n ...(res?.users.map(({ id }) => ({ type: 'User' as const, id })) ?? []),\n { type: 'User' as const, id: 'LIST' },\n ];\n }\n },\n }),\n deleteManyUsers: builder.mutation<\n Users.DeleteMany.Response['data'],\n Users.DeleteMany.Request['body']\n >({\n query: (body) => ({\n url: '/admin/users/batch-delete',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Users.DeleteMany.Response) => res.data,\n invalidatesTags: ['LicenseLimits', { type: 'User', id: 'LIST' }],\n }),\n /**\n * roles\n */\n createRole: builder.mutation<Roles.Create.Response['data'], Roles.Create.Request['body']>({\n query: (body) => ({\n url: '/admin/roles',\n method: 'POST',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: [{ type: 'Role', id: 'LIST' }],\n }),\n getRoles: builder.query<Roles.FindRoles.Response['data'], GetRolesParams | void>({\n query: ({ id, ...params } = {}) => ({\n url: `/admin/roles/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.FindRole.Response | Roles.FindRoles.Response) => {\n let roles: Roles.FindRoles.Response['data'] = [];\n\n if (res.data) {\n if (Array.isArray(res.data)) {\n roles = res.data;\n } else {\n roles = [res.data];\n }\n }\n\n return roles;\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg) {\n return [{ type: 'Role' as const, id: arg.id }];\n } else {\n return [\n ...(res?.map(({ id }) => ({ type: 'Role' as const, id })) ?? []),\n { type: 'Role' as const, id: 'LIST' },\n ];\n }\n },\n }),\n updateRole: builder.mutation<\n Roles.Update.Response['data'],\n Roles.Update.Request['body'] & Roles.Update.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.Create.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'Role' as const, id }],\n }),\n getRolePermissions: builder.query<\n Roles.GetPermissions.Response['data'],\n GetRolePermissionsParams\n >({\n query: ({ id, ...params }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Roles.GetPermissions.Response) => res.data,\n providesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n updateRolePermissions: builder.mutation<\n Roles.UpdatePermissions.Response['data'],\n Roles.UpdatePermissions.Request['body'] & Roles.UpdatePermissions.Request['params']\n >({\n query: ({ id, ...body }) => ({\n url: `/admin/roles/${id}/permissions`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (res: Roles.UpdatePermissions.Response) => res.data,\n invalidatesTags: (_res, _err, { id }) => [{ type: 'RolePermissions' as const, id }],\n }),\n /**\n * Permissions\n */\n getRolePermissionLayout: builder.query<\n Permissions.GetAll.Response['data'],\n Permissions.GetAll.Request['params']\n >({\n query: (params) => ({\n url: '/admin/permissions',\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (res: Permissions.GetAll.Response) => res.data,\n }),\n }),\n overrideExisting: false,\n});\n\ntype GetUsersParams =\n | Users.FindOne.Params\n | (Users.FindAll.Request['query'] & { id?: never })\n | void;\ntype GetRolesParams =\n | Roles.FindRole.Request['params']\n | (Roles.FindRoles.Request['query'] & { id?: never });\ninterface GetRolePermissionsParams {\n id: Data.ID;\n}\n\nconst {\n useCreateUserMutation,\n useGetUsersQuery,\n useUpdateUserMutation,\n useDeleteManyUsersMutation,\n useGetRolesQuery,\n useCreateRoleMutation,\n useUpdateRoleMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useUpdateRolePermissionsMutation,\n} = usersService;\n\nconst useAdminUsers = useGetUsersQuery;\n\nexport {\n useUpdateUserMutation,\n useGetRolesQuery,\n useAdminUsers,\n useDeleteManyUsersMutation,\n useCreateUserMutation,\n useGetRolePermissionsQuery,\n useGetRolePermissionLayoutQuery,\n useCreateRoleMutation,\n useUpdateRolePermissionsMutation,\n useUpdateRoleMutation,\n};\nexport type { GetRolesParams, GetUsersParams, GetRolePermissionsParams };\n","import { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nimport { adminApi } from '../../../../admin/src/services/api';\nimport * as ReviewWorkflows from '../../../../shared/contracts/review-workflows';\n\nconst reviewWorkflowsApi = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getWorkflows: builder.query<\n {\n workflows: ReviewWorkflows.GetAll.Response['data'];\n meta?: ReviewWorkflows.GetAll.Response['meta'];\n },\n GetWorkflowsParams | void\n >({\n query: (args) => {\n const { id, ...params } = args ?? {};\n\n return {\n url: `/admin/review-workflows/workflows/${id ?? ''}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n transformResponse: (res: ReviewWorkflows.GetAll.Response | ReviewWorkflows.Get.Response) => {\n let workflows: ReviewWorkflows.GetAll.Response['data'] = [];\n\n if (Array.isArray(res.data)) {\n workflows = res.data;\n } else {\n workflows = [res.data];\n }\n\n return {\n workflows,\n meta: 'meta' in res ? res.meta : undefined,\n };\n },\n providesTags: (res, _err, arg) => {\n if (typeof arg === 'object' && 'id' in arg && arg.id !== '') {\n return [{ type: 'ReviewWorkflow' as const, id: arg.id }];\n } else {\n return [\n ...(res?.workflows.map(({ id }) => ({ type: 'ReviewWorkflow' as const, id })) ?? []),\n { type: 'ReviewWorkflow' as const, id: 'LIST' },\n ];\n }\n },\n }),\n createWorkflow: builder.mutation<\n ReviewWorkflows.Create.Response['data'],\n ReviewWorkflows.Create.Request['body']\n >({\n query: (data) => ({\n url: '/admin/review-workflows/workflows',\n method: 'POST',\n data,\n }),\n transformResponse: (res: ReviewWorkflows.Create.Response) => res.data,\n invalidatesTags: [{ type: 'ReviewWorkflow' as const, id: 'LIST' }],\n }),\n updateWorkflow: builder.mutation<\n ReviewWorkflows.Update.Response['data'],\n ReviewWorkflows.Update.Request['body'] & ReviewWorkflows.Update.Params\n >({\n query: ({ id, ...data }) => ({\n url: `/admin/review-workflows/workflows/${id}`,\n method: 'PUT',\n data,\n }),\n transformResponse: (res: ReviewWorkflows.Update.Response) => res.data,\n invalidatesTags: (res, _err, arg) => [{ type: 'ReviewWorkflow' as const, id: arg.id }],\n }),\n deleteWorkflow: builder.mutation<\n ReviewWorkflows.Delete.Response['data'],\n ReviewWorkflows.Delete.Params\n >({\n query: ({ id }) => ({\n url: `/admin/review-workflows/workflows/${id}`,\n method: 'DELETE',\n }),\n transformResponse: (res: ReviewWorkflows.Delete.Response) => res.data,\n invalidatesTags: (res, _err, arg) => [{ type: 'ReviewWorkflow' as const, id: arg.id }],\n }),\n getStages: builder.query<\n {\n stages: NonNullable<Contracts.ReviewWorkflows.GetStages.Response['data']>;\n meta: NonNullable<Contracts.ReviewWorkflows.GetStages.Response['meta']>;\n },\n Contracts.ReviewWorkflows.GetStages.Params & { slug: string }\n >({\n query: ({ model, slug, id }) => ({\n url: `/admin/content-manager/${slug}/${model}/${id}/stages`,\n method: 'GET',\n }),\n transformResponse: (res: Contracts.ReviewWorkflows.GetStages.Response) => {\n return {\n meta: res.meta ?? { workflowCount: 0 },\n stages: res.data ?? [],\n };\n },\n providesTags: (_res, _err, arg) => {\n return [{ type: 'ReviewWorkflowStage' as const, id: arg.id }];\n },\n }),\n updateStage: builder.mutation<\n Contracts.ReviewWorkflows.UpdateStage.Response['data'],\n Contracts.ReviewWorkflows.UpdateStage.Request['body'] &\n Contracts.ReviewWorkflows.UpdateStage.Params & { slug: string }\n >({\n query: ({ model, slug, id, ...data }) => ({\n url: `/admin/content-manager/${slug}/${model}/${id}/stage`,\n method: 'PUT',\n data,\n }),\n transformResponse: (res: Contracts.ReviewWorkflows.UpdateStage.Response) => res.data,\n invalidatesTags: (res, _err, arg) => [{ type: 'ReviewWorkflowStage' as const, id: arg.id }],\n }),\n updateAssignee: builder.mutation<\n Contracts.ReviewWorkflows.UpdateAssignee.Response['data'],\n Contracts.ReviewWorkflows.UpdateAssignee.Request['body'] &\n Contracts.ReviewWorkflows.UpdateAssignee.Params & { slug: string }\n >({\n query: ({ model, slug, id, ...data }) => ({\n url: `/admin/content-manager/${slug}/${model}/${id}/assignee`,\n method: 'PUT',\n data,\n }),\n transformResponse: (res: Contracts.ReviewWorkflows.UpdateAssignee.Response) => res.data,\n }),\n }),\n overrideExisting: false,\n});\n\ntype GetWorkflowsParams =\n | ReviewWorkflows.Get.Params\n | (ReviewWorkflows.GetAll.Request['query'] & { id?: never });\n\nconst {\n useGetWorkflowsQuery,\n useCreateWorkflowMutation,\n useDeleteWorkflowMutation,\n useUpdateWorkflowMutation,\n useGetStagesQuery,\n useUpdateStageMutation,\n useUpdateAssigneeMutation,\n} = reviewWorkflowsApi;\n\nexport {\n useGetWorkflowsQuery,\n useCreateWorkflowMutation,\n useDeleteWorkflowMutation,\n useUpdateWorkflowMutation,\n useGetStagesQuery,\n useUpdateStageMutation,\n useUpdateAssigneeMutation,\n type GetWorkflowsParams,\n};\n","export const STAGE_ATTRIBUTE_NAME = 'strapi_stage';\nexport const ASSIGNEE_ATTRIBUTE_NAME = 'strapi_assignee';\n","import { Combobox, ComboboxOption, Field, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useField } from '../../../../../../../admin/src/components/Form';\nimport { useDoc } from '../../../../../../../admin/src/content-manager/hooks/useDocument';\nimport { useTypedSelector } from '../../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../../admin/src/hooks/useRBAC';\nimport { useAdminUsers } from '../../../../../../../admin/src/services/users';\nimport { getDisplayName } from '../../../../../../../admin/src/utils/users';\nimport { useUpdateAssigneeMutation } from '../../../../services/reviewWorkflows';\n\nimport { ASSIGNEE_ATTRIBUTE_NAME } from './constants';\n\nconst AssigneeSelect = () => {\n const { collectionType, model, id } = useDoc();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const {\n allowedActions: { canRead },\n isLoading: isLoadingPermissions,\n } = useRBAC(permissions.settings?.users);\n const { data, isLoading, isError } = useAdminUsers(\n { id },\n {\n skip: isLoadingPermissions || !canRead || !id,\n }\n );\n\n const users = data?.users || [];\n\n /**\n * TODO: type this value when we can test it.\n */\n const field = useField(ASSIGNEE_ATTRIBUTE_NAME);\n\n const currentAssignee = field.value ?? null;\n\n const [updateAssignee, { error, isLoading: isMutating }] = useUpdateAssigneeMutation();\n\n const handleChange = async (assigneeId: string | null) => {\n const res = await updateAssignee({\n slug: collectionType,\n model: model,\n id: id!,\n data: {\n id: assigneeId ? parseInt(assigneeId, 10) : null,\n },\n });\n\n if ('data' in res) {\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n field.onChange(ASSIGNEE_ATTRIBUTE_NAME, res.data[ASSIGNEE_ATTRIBUTE_NAME]);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.notification.saved',\n defaultMessage: 'Assignee updated',\n }),\n });\n }\n };\n\n return (\n <Field name={ASSIGNEE_ATTRIBUTE_NAME} id={ASSIGNEE_ATTRIBUTE_NAME}>\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Combobox\n clearLabel={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.clear',\n defaultMessage: 'Clear assignee',\n })}\n error={\n ((isError &&\n canRead &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.error',\n defaultMessage: 'An error occurred while fetching users',\n })) ||\n (error && formatAPIError(error))) ??\n undefined\n }\n disabled={(!isLoadingPermissions && !isLoading && users.length === 0) || !id}\n name={ASSIGNEE_ATTRIBUTE_NAME}\n id={ASSIGNEE_ATTRIBUTE_NAME}\n value={currentAssignee ? currentAssignee.id.toString() : null}\n // @ts-expect-error - DS Combobox wants to return number or string, this will be fixed in V2.\n onChange={handleChange}\n onClear={() => handleChange(null)}\n placeholder={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.label',\n defaultMessage: 'Assignee',\n })}\n loading={isLoading || isLoadingPermissions || isMutating}\n >\n {users.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id.toString()}\n textValue={getDisplayName(user, formatMessage)}\n >\n {getDisplayName(user, formatMessage)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n </Flex>\n </Field>\n );\n};\n\nexport { AssigneeSelect };\n","import * as React from 'react';\n\nimport { useGetLicenseLimitsQuery } from '../../../../admin/src/services/admin';\nimport { GetLicenseLimitInformation } from '../../../../shared/contracts/admin';\n\ninterface UseLicenseLimitsArgs {\n enabled?: boolean;\n}\n\nfunction useLicenseLimits({ enabled }: UseLicenseLimitsArgs = { enabled: true }) {\n const { data, isError, isLoading } = useGetLicenseLimitsQuery(undefined, {\n skip: !enabled,\n });\n\n type FeatureNames = GetLicenseLimitInformation.Response['data']['features'][number]['name'];\n\n type GetFeatureType = <T>(name: FeatureNames) => Record<string, T> | undefined;\n\n const getFeature = React.useCallback<GetFeatureType>(\n (name) => {\n const feature = data?.data?.features.find((feature) => feature.name === name);\n\n if (feature && 'options' in feature) {\n return feature.options;\n } else {\n return {};\n }\n },\n [data]\n );\n\n return { license: data?.data, getFeature, isError, isLoading };\n}\n\nexport { useLicenseLimits };\nexport type { UseLicenseLimitsArgs };\n","export default \"data:image/png;base64,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\"","import * as React from 'react';\n\nimport { Box, Flex, IconButton, ModalLayout, ModalBody, Typography } from '@strapi/design-system';\nimport { LinkButton } from '@strapi/design-system/v2';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport balloonImageSrc from './assets/balloon.png';\n\nconst TITLE_ID = 'limits-title';\n\nconst CTA_LEARN_MORE_HREF = 'https://strapi.io/pricing-cloud';\nconst CTA_SALES_HREF = 'https://strapi.io/contact-sales';\n\nconst Title: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Typography variant=\"alpha\" id={TITLE_ID}>\n {children}\n </Typography>\n );\n};\n\nconst Body: React.FC<React.PropsWithChildren> = ({ children }) => {\n return <Typography variant=\"omega\">{children}</Typography>;\n};\n\nconst CallToActions = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={2} paddingTop={4}>\n <LinkButton variant=\"default\" isExternal href={CTA_LEARN_MORE_HREF}>\n {formatMessage({\n id: 'Settings.review-workflows.limit.cta.learn',\n defaultMessage: 'Learn more',\n })}\n </LinkButton>\n\n <LinkButton variant=\"tertiary\" isExternal href={CTA_SALES_HREF}>\n {formatMessage({\n id: 'Settings.review-workflows.limit.cta.sales',\n defaultMessage: 'Contact Sales',\n })}\n </LinkButton>\n </Flex>\n );\n};\n\nconst BalloonImage = styled.img`\n // Margin top|right reverse the padding of ModalBody\n margin-right: ${({ theme }) => `-${theme.spaces[7]}`};\n margin-top: ${({ theme }) => `-${theme.spaces[7]}`};\n width: 360px;\n`;\n\nexport type LimitsModalProps = {\n isOpen?: boolean;\n onClose: () => void;\n};\n\nconst Root: React.FC<React.PropsWithChildren<LimitsModalProps>> = ({\n children,\n isOpen = false,\n onClose,\n}) => {\n const { formatMessage } = useIntl();\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <ModalLayout onClose={onClose} labelledBy={TITLE_ID}>\n <ModalBody>\n <Flex gap={2} paddingLeft={7} position=\"relative\">\n <Flex alignItems=\"start\" direction=\"column\" gap={2} width=\"60%\">\n {children}\n\n <CallToActions />\n </Flex>\n\n <Flex justifyContent=\"end\" height=\"100%\" width=\"40%\">\n <BalloonImage src={balloonImageSrc} aria-hidden alt=\"\" loading=\"lazy\" />\n\n <Box display=\"flex\" position=\"absolute\" right={0} top={0}>\n <IconButton\n icon={<Cross />}\n aria-label={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n onClick={onClose}\n />\n </Box>\n </Flex>\n </Flex>\n </ModalBody>\n </ModalLayout>\n );\n};\n\nconst LimitsModal = {\n Title,\n Body,\n Root,\n};\n\nexport { LimitsModal };\n","import { lightTheme } from '@strapi/design-system';\n\nexport const REDUX_NAMESPACE = 'settings_review-workflows';\n\nexport const ACTION_RESET_WORKFLOW = `Settings/Review_Workflows/RESET_WORKFLOW`;\nexport const ACTION_SET_CONTENT_TYPES = `Settings/Review_Workflows/SET_CONTENT_TYPES`;\nexport const ACTION_SET_IS_LOADING = `Settings/Review_Workflows/SET_IS_LOADING`;\nexport const ACTION_SET_ROLES = `Settings/Review_Workflows/SET_ROLES`;\nexport const ACTION_SET_WORKFLOW = `Settings/Review_Workflows/SET_WORKFLOW`;\nexport const ACTION_SET_WORKFLOWS = `Settings/Review_Workflows/SET_WORKFLOWS`;\nexport const ACTION_DELETE_STAGE = `Settings/Review_Workflows/WORKFLOW_DELETE_STAGE`;\nexport const ACTION_ADD_STAGE = `Settings/Review_Workflows/WORKFLOW_ADD_STAGE`;\nexport const ACTION_CLONE_STAGE = `Settings/Review_Workflows/WORKFLOW_CLONE_STAGE`;\nexport const ACTION_UPDATE_STAGE = `Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE`;\nexport const ACTION_UPDATE_STAGES = `Settings/Review_Workflows/WORKFLOW_UPDATE_STAGES`;\nexport const ACTION_UPDATE_STAGE_POSITION = `Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE_POSITION`;\nexport const ACTION_UPDATE_WORKFLOW = `Settings/Review_Workflows/WORKFLOW_UPDATE`;\n\nexport const STAGE_COLORS: Record<string, string> = {\n primary600: 'Blue',\n primary200: 'Lilac',\n alternative600: 'Violet',\n alternative200: 'Lavender',\n success600: 'Green',\n success200: 'Pale Green',\n danger500: 'Cherry',\n danger200: 'Pink',\n warning600: 'Orange',\n warning200: 'Yellow',\n secondary600: 'Teal',\n secondary200: 'Baby Blue',\n neutral400: 'Gray',\n neutral0: 'White',\n};\n\nexport const STAGE_COLOR_DEFAULT = lightTheme.colors.primary600;\n\nexport type DragDropTypes = 'stage';\n\nexport const DRAG_DROP_TYPES: Record<Uppercase<DragDropTypes>, DragDropTypes> = {\n STAGE: 'stage',\n};\n\nexport const CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME = 'numberOfWorkflows';\nexport const CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME = 'stagesPerWorkflow';\n","import { lightTheme } from '@strapi/design-system';\nimport { DefaultTheme } from 'styled-components';\n\nimport { STAGE_COLORS } from '../constants';\n\nexport function getStageColorByHex(hex: string) {\n if (!hex) {\n return null;\n }\n\n // there are multiple colors with the same hex code in the design tokens. In order to find\n // the correct one we have to find all matching colors and then check, which ones are usable\n // for stages.\n const themeColors: [string, (keyof typeof STAGE_COLORS)[]][] = Object.entries(\n lightTheme.colors\n ).filter(([, value]) => value.toUpperCase() === hex.toUpperCase());\n\n const themeColorName = themeColors.reduce((acc, [name]) => {\n if (STAGE_COLORS?.[name]) {\n acc = name;\n }\n\n return acc;\n }, null as keyof typeof STAGE_COLORS | null);\n\n if (!themeColorName) {\n return null;\n }\n\n return {\n themeColorName,\n name: STAGE_COLORS[themeColorName],\n };\n}\n\nexport function getAvailableStageColors() {\n return Object.entries(STAGE_COLORS).map(([themeColorName, name]) => ({\n hex: lightTheme.colors[themeColorName as keyof DefaultTheme['colors']].toUpperCase(),\n name,\n }));\n}\n","import * as React from 'react';\n\nimport {\n SingleSelect,\n SingleSelectOption,\n Field,\n FieldError,\n FieldHint,\n Flex,\n Loader,\n Typography,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useField } from '../../../../../../../admin/src/components/Form';\nimport { useDoc } from '../../../../../../../admin/src/content-manager/hooks/useDocument';\nimport { useNotification } from '../../../../../../../admin/src/features/Notifications';\nimport { useAPIErrorHandler } from '../../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useLicenseLimits } from '../../../../hooks/useLicenseLimits';\nimport { LimitsModal } from '../../../../pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../../../pages/SettingsPage/pages/ReviewWorkflows/constants';\nimport { getStageColorByHex } from '../../../../pages/SettingsPage/pages/ReviewWorkflows/utils/colors';\nimport { useGetStagesQuery, useUpdateStageMutation } from '../../../../services/reviewWorkflows';\n\nimport { STAGE_ATTRIBUTE_NAME } from './constants';\n\nimport type { Data } from '@strapi/types';\n\nexport const StageSelect = () => {\n const { collectionType, model, id } = useDoc();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const { data, isLoading } = useGetStagesQuery(\n {\n slug: collectionType,\n model: model,\n id: id!,\n },\n {\n skip: !id,\n }\n );\n\n const { meta, stages = [] } = data ?? {};\n\n const { getFeature } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState<'stage' | 'workflow' | null>(null);\n\n const limits = getFeature<string>('review-workflows') ?? {};\n // it is possible to rely on initialData here, because it always will\n // be updated at the same time when modifiedData is updated, otherwise\n // the entity is flagged as modified\n const field = useField(STAGE_ATTRIBUTE_NAME);\n\n const activeWorkflowStage = field.value ?? null;\n\n const [updateStage, { error }] = useUpdateStageMutation();\n\n const handleChange = async (stageId: Data.ID) => {\n try {\n /**\n * If the current license has a limit:\n * check if the total count of workflows exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10) < (meta?.workflowCount ?? 0)\n ) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit:\n * check if the total count of stages exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10) < stages.length\n ) {\n setShowLimitModal('stage');\n } else {\n if (id) {\n const res = await updateStage({\n model,\n id,\n slug: collectionType,\n data: { id: stageId },\n });\n\n if ('data' in res) {\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n field.onChange(STAGE_ATTRIBUTE_NAME, res.data[STAGE_ATTRIBUTE_NAME]);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.reviewWorkflows.stage.notification.saved',\n defaultMessage: 'Review stage updated',\n }),\n });\n }\n }\n }\n } catch (error) {\n // react-query@v3: the error doesn't have to be handled here\n // see: https://github.com/TanStack/query/issues/121\n }\n };\n\n const { themeColorName } = getStageColorByHex(activeWorkflowStage?.color) ?? {};\n\n return (\n <>\n <Field\n hint={\n stages.length === 0 &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.stages.no-transition',\n defaultMessage: 'You don’t have the permission to update this stage.',\n })\n }\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n >\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <SingleSelect\n disabled={stages.length === 0}\n error={(error && formatAPIError(error)) || undefined}\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n value={activeWorkflowStage?.id}\n onChange={handleChange}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.label',\n defaultMessage: 'Review stage',\n })}\n placeholder={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n startIcon={\n activeWorkflowStage && (\n <Flex\n as=\"span\"\n height={2}\n background={activeWorkflowStage?.color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : undefined}\n hasRadius\n shrink={0}\n width={2}\n marginRight=\"-3px\"\n />\n )\n }\n // @ts-expect-error – `customizeContent` is not correctly typed in the DS.\n customizeContent={() => (\n <Flex as=\"span\" justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Typography textColor=\"neutral800\" ellipsis>\n {activeWorkflowStage?.name ?? ''}\n </Typography>\n {isLoading ? (\n <Loader small style={{ display: 'flex' }} data-testid=\"loader\" />\n ) : null}\n </Flex>\n )}\n >\n {stages.map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color) ?? {};\n\n return (\n <SingleSelectOption\n key={id}\n startIcon={\n <Flex\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : undefined}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n value={id}\n textValue={name}\n >\n {name}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <FieldHint />\n <FieldError />\n </Flex>\n </Field>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root isOpen={showLimitModal === 'stage'} onClose={() => setShowLimitModal(null)}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n","import * as React from 'react';\n\nimport { Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../../../../admin/src/content-manager/hooks/useDocument';\n\nimport { AssigneeSelect } from './AssigneeSelect';\nimport { StageSelect } from './StageSelect';\n\nimport type { PanelComponent } from '../../../../../../../admin/src/core/apis/content-manager';\n\nconst ReviewWorkflowsPanel: PanelComponent = () => {\n const { schema } = useDoc();\n const { formatMessage } = useIntl();\n\n if (!window.strapi.isEE || !schema?.options?.reviewWorkflows) {\n return null;\n }\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.review-workflows.title',\n defaultMessage: 'Review Workflows',\n }),\n content: (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n <AssigneeSelect />\n <StageSelect />\n </Flex>\n ),\n };\n};\n\nReviewWorkflowsPanel.type = 'review-workflows';\n\nexport { ReviewWorkflowsPanel };\n","import { History } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { useQueryParams } from '../../../hooks/useQueryParams';\n\nimport type { DocumentActionComponent } from '../../../core/apis/content-manager';\n\nconst StyledHistory = styled(History)`\n path {\n fill: currentColor;\n }\n`;\n\nconst HistoryAction: DocumentActionComponent = ({ model, document }) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ plugins?: Record<string, unknown> }>();\n const navigate = useNavigate();\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n // TODO: also check license before adding history action\n if (!window.strapi.future.isEnabled('history')) {\n return null;\n }\n\n return {\n icon: <StyledHistory />,\n label: formatMessage({\n id: 'content-manager.history.document-action',\n defaultMessage: 'Content History',\n }),\n onClick: () => navigate({ pathname: 'history', search: pluginsQueryParams }),\n disabled:\n /**\n * The user is creating a new document.\n * It hasn't been saved yet, so there's no history to go to\n */\n !document ||\n /**\n * The document has been created but the current dimension has never been saved.\n * For example, the user is creating a new locale in an existing document,\n * so there's no history for the document in that locale\n */\n !document.id ||\n /**\n * History is only available for content types created by the user.\n * These have the `api::` prefix, as opposed to the ones created by Strapi or plugins,\n * which start with `admin::` or `plugin::`\n */\n !model.startsWith('api::'),\n position: 'header',\n };\n};\n\nHistoryAction.type = 'history';\n\nexport { HistoryAction };\n","import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\n\nimport { useNotification } from '../../features/Notifications';\nimport { TrackingEvent, useTracking } from '../../features/Tracking';\nimport { useAPIErrorHandler } from '../../hooks/useAPIErrorHandler';\nimport { BaseQueryError } from '../../utils/baseQuery';\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n useUnpublishDocumentMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta: any; error?: any }> =\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = () => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n autoClone: (args: {\n model: string;\n sourceId: string;\n }) => Promise<OperationResponse<Contracts.CollectionTypes.AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Contracts.CollectionTypes.Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Contracts.CollectionTypes.Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Contracts.CollectionTypes.Delete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Contracts.CollectionTypes.Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<Contracts.CollectionTypes.FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Contracts.CollectionTypes.Publish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Contracts.CollectionTypes.Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Contracts.CollectionTypes.Unpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [deleteDocument] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry');\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, publishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [updateDocument] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, updateDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [createDocument, formatAPIError, formatMessage, toggleNotification, trackUsage]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n const { id: _id, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n autoClone,\n clone,\n create,\n delete: _delete,\n discard,\n getDocument,\n publish,\n unpublish,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Dialog,\n DialogBody,\n DialogFooter,\n DialogProps,\n Flex,\n Icon,\n ModalBody,\n ModalHeader,\n ModalLayout,\n Radio,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Menu } from '@strapi/design-system/v2';\nimport { CrossCircle, ExclamationMarkCircle, More } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport styled, { DefaultTheme } from 'styled-components';\n\nimport { useForm } from '../../../../components/Form';\nimport { DocumentActionComponent } from '../../../../core/apis/content-manager';\nimport { NotificationConfig, useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH } from '../../../router';\nimport { buildValidParams } from '../../../utils/api';\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row';\n\ninterface DocumentActionDescription {\n label: string;\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: 'default' | 'secondary' | 'danger' | 'success';\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ReactNode;\n footer: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n <Flex gap={2}>\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </Flex>\n {secondaryAction ? (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {}\n\nconst DocumentActionButton = (action: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex={1}\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <Menu.Trigger\n disabled={isDisabled}\n size=\"S\"\n endIcon={null}\n paddingTop=\"7px\"\n paddingLeft=\"9px\"\n paddingRight=\"9px\"\n variant={variant}\n >\n <More aria-hidden focusable={false} />\n <VisuallyHidden as=\"span\">\n {label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n </VisuallyHidden>\n </Menu.Trigger>\n <Menu.Content top=\"4px\" maxHeight={undefined} popoverPlacement=\"bottom-end\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex color={convertActionVariantToColor(action.variant)} gap={2} as=\"span\">\n {action.icon}\n {action.label}\n </Flex>\n {/* TODO: remove this in 5.1 release */}\n {action.id.startsWith('HistoryAction') && (\n <Flex\n alignItems=\"center\"\n background=\"alternative100\"\n borderStyle=\"solid\"\n borderColor=\"alternative200\"\n borderWidth=\"1px\"\n height={5}\n paddingLeft={2}\n paddingRight={2}\n hasRadius\n color=\"alternative600\"\n >\n <Typography variant=\"sigma\" fontWeight=\"bold\" lineHeight={1}>\n {formatMessage({ id: 'global.new', defaultMessage: 'New' })}\n </Typography>\n </Flex>\n )}\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\nconst convertActionVariantToColor = (\n variant: DocumentActionDescription['variant'] = 'secondary'\n): keyof DefaultTheme['colors'] | undefined => {\n switch (variant) {\n case 'danger':\n return 'danger600';\n case 'secondary':\n return undefined;\n case 'success':\n return 'success600';\n default:\n return 'primary600';\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps\n extends DialogOptions,\n Pick<DialogProps, 'onClose' | 'isOpen'>,\n Pick<Action, 'variant'> {}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog isOpen={isOpen} title={title} onClose={handleClose}>\n <DialogBody>{content}</DialogBody>\n <DialogFooter\n startAction={\n <Button onClick={handleClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endAction={\n <Button onClick={handleConfirm} variant={variant}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n }\n />\n </Dialog>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const id = React.useId();\n\n if (!isOpen) {\n return null;\n }\n\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <ModalLayout borderRadius=\"4px\" overflow=\"hidden\" onClose={handleClose} labelledBy={id}>\n <ModalHeader>\n <Typography fontWeight=\"bold\" textColor=\"neutral800\" as=\"h2\" id={id}>\n {title}\n </Typography>\n </ModalHeader>\n <ModalBody>{content}</ModalBody>\n <Box\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={5}\n paddingRight={5}\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n background=\"neutral100\"\n >\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Box>\n </ModalLayout>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const { schema } = useDoc();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { formatMessage } = useIntl();\n const { canPublish, canCreate, canUpdate } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canCreate, canUpdate }) => ({ canPublish, canCreate, canUpdate })\n );\n const { publish } = useDocumentActions();\n const [{ query, rawQuery }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const formValues = useForm('PublishAction', ({ values }) => values);\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n * - the user doesn't have the permission to create a new document\n * - the user doesn't have the permission to update the document\n */\n disabled:\n isCloning ||\n isSubmitting ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish ||\n Boolean((!document?.documentId && !canCreate) || (document?.documentId && !canUpdate)),\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n setSubmitting(true);\n\n try {\n const { errors } = await validate();\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n formValues\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n }\n },\n };\n};\n\nPublishAction.type = 'publish';\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { canCreate, canUpdate } = useDocumentRBAC('UpdateAction', ({ canCreate, canUpdate }) => ({\n canCreate,\n canUpdate,\n }));\n const { create, update, clone } = useDocumentActions();\n const [{ query, rawQuery }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const document = useForm('UpdateAction', ({ values }) => values);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n\n return {\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n * - the user doesn't have the permission to create a new document\n * - the user doesn't have the permission to update the document\n */\n disabled:\n isSubmitting ||\n (!modified && !isCloning) ||\n activeTab === 'published' ||\n Boolean((!documentId && !canCreate) || (documentId && !canUpdate)),\n label: formatMessage({\n id: 'content-manager.containers.Edit.save',\n defaultMessage: 'Save',\n }),\n onClick: async () => {\n setSubmitting(true);\n\n try {\n const { errors } = await validate();\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params,\n },\n document\n );\n\n if ('data' in res) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n document\n );\n\n if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm();\n }\n } else {\n const res = await create(\n {\n model,\n params,\n },\n document\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n setSubmitting(false);\n }\n },\n };\n};\n\nUpdateAction.type = 'update';\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange: React.FormEventHandler<HTMLFieldSetElement> &\n React.FormEventHandler<HTMLDivElement> = (e) => {\n if ('value' in e.target) {\n setShouldKeepDraft(e.target.value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n }\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <StyledCrossCircle />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <Icon as={ExclamationMarkCircle} width=\"24px\" height=\"24px\" color=\"danger600\" />\n <Typography as=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Flex\n onChange={handleChange}\n direction=\"column\"\n alignItems=\"flex-start\"\n as=\"fieldset\"\n gap={3}\n >\n <VisuallyHidden as=\"legend\"></VisuallyHidden>\n <Radio\n checked={shouldKeepDraft}\n value={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n >\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio>\n <Radio\n checked={!shouldKeepDraft}\n value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}\n name=\"discard-options\"\n >\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio>\n </Flex>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <StyledCrossCircle />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <Icon as={ExclamationMarkCircle} width=\"24px\" height=\"24px\" color=\"danger600\" />\n <Typography as=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledCrossCircle = styled(CrossCircle)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DEFAULT_ACTIONS };\nexport type { DocumentActionDescription, DialogOptions, NotificationOptions, ModalOptions };\n","import * as React from 'react';\n\nconst useIsMounted = () => {\n const isMounted = React.useRef(false);\n\n React.useLayoutEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport { useIsMounted };\n","import * as React from 'react';\n\nimport { useIsMounted } from './useIsMounted';\n\n/**\n * @internal\n * @description Return a function that re-renders this component, if still mounted\n * @warning DO NOT USE EXCEPT SPECIAL CASES.\n */\nconst useForceUpdate = () => {\n const [tick, update] = React.useState<number>();\n const isMounted = useIsMounted();\n\n const forceUpdate = React.useCallback(() => {\n if (isMounted.current) {\n update(Math.random());\n }\n }, [isMounted, update]);\n\n return [tick, forceUpdate] as const;\n};\n\nexport { useForceUpdate };\n","import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: any[]) => any>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n","/* -------------------------------------------------------------------------------------------------\n * requestIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now();\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start);\n },\n });\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>;\n};\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback;\n\n/* -------------------------------------------------------------------------------------------------\n * cancelIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle: unknown) => {\n return clearTimeout(handle as any);\n};\n\nconst _cancelIdleCallback =\n typeof cancelIdleCallback === 'undefined' ? cancelIdleCallbackShim : cancelIdleCallback;\n\nexport { _requestIdleCallback as requestIdleCallback };\nexport { _cancelIdleCallback as cancelIdleCallback };\n","/**\n * This component will render DescriptionComponents that return objects e.g. `cm.apis.addEditViewPanel`\n * these descriptions are still treated like components because users can use react hooks in them.\n *\n * Rendering them normally by mapping etc. causes mutliple render issues.\n */\n\nimport * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useForceUpdate } from '../hooks/useForceUpdate';\nimport { useThrottledCallback } from '../hooks/useThrottledCallback';\nimport { cancelIdleCallback, requestIdleCallback } from '../utils/shims';\n\ninterface DescriptionComponent<Props, Description> {\n (props: Props): Description | null;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DescriptionComponentRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionComponentRendererProps<Props = any, Description = any> {\n children: (descriptions: Array<Description & { id: string }>) => React.ReactNode;\n descriptions: DescriptionComponent<Props, Description>[];\n props: Props;\n}\n\n/**\n * @internal\n *\n * @description This component takes an array of DescriptionComponents, which are react components that return objects as opposed to JSX.\n * We render these in their own isolated memoized component and use an update function to push the data back out to the parent.\n * Saving it in a ref, and then \"forcing\" an update of the parent component to render the children of this component with the new data.\n *\n * The DescriptionCompoonents can take props and use react hooks hence why we render them as if they were a component. The update\n * function is throttled and managed to avoid erroneous updates where we could wait a single tick to update the entire UI, which\n * creates less \"popping\" from functions being called in rapid succession.\n */\nconst DescriptionComponentRenderer = <Props, Description>({\n children,\n props,\n descriptions,\n}: DescriptionComponentRendererProps<Props, Description>) => {\n const statesRef = React.useRef<Record<string, { value: Description & { id: string } }>>({});\n const [tick, forceUpdate] = useForceUpdate();\n\n const requestHandle = React.useRef<number | null>(null);\n const requestUpdate = React.useCallback(() => {\n if (requestHandle.current) {\n cancelIdleCallback(requestHandle.current);\n }\n\n requestHandle.current = requestIdleCallback(() => {\n requestHandle.current = null;\n\n forceUpdate();\n });\n }, [forceUpdate]);\n\n /**\n * This will avoid us calling too many react updates in a short space of time.\n */\n const throttledRequestUpdate = useThrottledCallback(requestUpdate, 60, { trailing: true });\n\n const update = React.useCallback<DescriptionProps<Props, Description>['update']>(\n (id, description) => {\n if (description === null) {\n delete statesRef.current[id];\n } else {\n const current = statesRef.current[id];\n statesRef.current[id] = { ...current, value: { ...description, id } };\n }\n\n throttledRequestUpdate();\n },\n [throttledRequestUpdate]\n );\n\n const ids = React.useMemo(\n () => descriptions.map((description) => getCompId(description)),\n [descriptions]\n );\n\n const states = React.useMemo(\n () =>\n ids\n .map((id) => statesRef.current[id]?.value)\n .filter((state) => state !== null && state !== undefined),\n /**\n * we leave tick in the deps to ensure the memo is recalculated when the `update` function is called.\n * the `ids` will most likely be stable unless we get new actions, but we can't respond to the Description\n * Component changing the ref data in any other way.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ids, tick]\n );\n\n return (\n <>\n {descriptions.map((description) => {\n const key = getCompId(description);\n return (\n <Description key={key} id={key} description={description} props={props} update={update} />\n );\n })}\n {children(states)}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Description\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DescriptionProps<Props, Description> {\n description: DescriptionComponent<Props, Description>;\n id: string;\n props: Props;\n update: (id: string, value: Description | null) => void;\n}\n\n/**\n * Descriptions are objects, but to create the object, we allow users to create components,\n * this means they can use react hooks in them. It also means we need to render them\n * within a component, however because they return an object of data we can't add that\n * to the react tree, instead we push it back out to the parent.\n */\nconst Description = React.memo(\n ({ description, id, props, update }: DescriptionProps<any, any>) => {\n const comp = description(props);\n\n useShallowCompareEffect(() => {\n update(id, comp);\n\n return () => {\n update(id, null);\n };\n }, comp);\n\n return null;\n },\n (prev, next) => isEqual(prev.props, next.props)\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Helpers\n * -----------------------------------------------------------------------------------------------*/\n\nconst ids = new WeakMap<DescriptionComponent<any, any>, string>();\n\nlet counter = 0;\n\nfunction getCompId<T, K>(comp: DescriptionComponent<T, K>): string {\n const cachedId = ids.get(comp);\n\n if (cachedId) return cachedId;\n\n const id = `${comp.name || (comp as any).displayName || '<anonymous>'}-${counter++}`;\n\n ids.set(comp, id);\n\n return id;\n}\n\nconst useShallowCompareMemoize = <T,>(value: T): Array<T | undefined> => {\n const ref = React.useRef<T | undefined>(undefined);\n\n if (!isEqual(value, ref.current)) {\n ref.current = value;\n }\n\n return [ref.current];\n};\n\nconst useShallowCompareEffect = (callback: React.EffectCallback, dependencies?: unknown) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the linter isn't able to see that deps are properly handled here\n React.useEffect(callback, useShallowCompareMemoize(dependencies));\n};\n\nexport { DescriptionComponentRenderer };\nexport type { DescriptionComponentRendererProps, DescriptionComponent };\n","import * as React from 'react';\n\nimport { Flex, Icon, SingleSelect, SingleSelectOption, Typography } from '@strapi/design-system';\nimport { Cog, ExclamationMarkCircle, Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { DescriptionComponentRenderer } from '../../../../components/DescriptionComponentRenderer';\nimport { useForm } from '../../../../components/Form';\nimport { RelativeTime } from '../../../../components/RelativeTime';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useStrapiApp } from '../../../../features/StrapiApp';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { getDisplayName } from '../../../../utils/users';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n} from '../../../../core/apis/content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingTop={8} paddingBottom={4} gap={3}>\n <BackButton />\n <Flex\n width=\"100%\"\n justifyContent=\"space-between\"\n paddingTop={1}\n gap=\"80px\"\n alignItems=\"flex-start\"\n >\n <Typography variant=\"alpha\" as=\"h1\">\n {title}\n </Typography>\n <HeaderToolbar />\n </Flex>\n {status ? <DocumentStatus status={isCloning ? 'draft' : status} /> : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderButtonAction {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n /**\n * @default 'default'\n */\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => void;\n}\n\ninterface HeaderSelectAction {\n disabled?: boolean;\n label: string;\n options: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n }>;\n onSelect?: (value: string) => void;\n value?: string;\n}\n\ntype HeaderActionDescription = HeaderButtonAction | HeaderSelectAction;\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = () => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions()}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={status} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME], formatMessage)\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME], formatMessage)\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Last published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `Published {time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME], formatMessage)\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Last draft',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `Modified {time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Document',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `Created {time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n marginLeft=\"-4px\"\n marginRight=\"-4px\"\n as=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n width=\"100%\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography as=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography as=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n return (\n <Flex>\n {actions.map((action) => {\n if ('options' in action) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n disabled={action.disabled}\n aria-label={action.label}\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n value={action.value}\n >\n {action.options.map(({ label, ...option }) => (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n } else {\n // TODO: add button handler\n return null;\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n\n return {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <StyledCog />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n };\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledCog = styled(Cog)`\n path {\n fill: currentColor;\n }\n`;\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n\n return {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <StyledPencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n };\n};\n\nEditTheModelAction.type = 'edit-the-model';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledPencil = styled(Pencil)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage({\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete document',\n }),\n icon: <StyledTrash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <Icon as={ExclamationMarkCircle} width=\"24px\" height=\"24px\" color=\"danger600\" />\n <Typography as=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n","import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { DescriptionComponentRenderer } from '../../../../components/DescriptionComponentRenderer';\nimport { InjectionZone } from '../../../../components/InjectionZone';\nimport { useStrapiApp } from '../../../../features/StrapiApp';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../../core/apis/content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels()}\n >\n {(panels) =>\n panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))\n }\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Document',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions()}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"contentManager.editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n return (\n <Flex\n ref={ref}\n as=\"aside\"\n aria-labelledby=\"additional-information\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n hasRadius\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={4}\n shadow=\"tableShadow\"\n gap={3}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography as=\"h2\" variant=\"sigma\" textTransform=\"uppercase\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\nexport { Panels, ActionsPanel };\nexport type { PanelDescription };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Dialog,\n DialogBody,\n DialogFooter,\n DialogProps,\n Flex,\n ModalBody,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Check, ExclamationMarkCircle, Trash } from '@strapi/icons';\nimport { AxiosError, AxiosResponse } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { useQueryClient } from 'react-query';\nimport { useParams } from 'react-router-dom';\n\nimport { DescriptionComponentRenderer } from '../../../../../components/DescriptionComponentRenderer';\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport { NotificationConfig, useNotification } from '../../../../../features/Notifications';\nimport { useStrapiApp } from '../../../../../features/StrapiApp';\nimport { useTracking } from '../../../../../features/Tracking';\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { getTranslation } from '../../../../utils/translations';\n// import { useAllowedActions } from '../../hooks/useAllowedActions';\n\n// import { PublishAction } from './PublishAction';\n\nimport type {\n BulkActionComponent,\n ContentManagerPlugin,\n} from '../../../../../core/apis/content-manager';\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\ninterface BulkActionDescription {\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n disabled?: boolean;\n icon?: React.ReactNode;\n label: string;\n onClick?: (event: React.SyntheticEvent) => void;\n /**\n * @default 'default'\n */\n type?: 'icon' | 'default';\n /**\n * @default 'secondary'\n */\n variant?: 'default' | 'secondary' | 'tertiary' | 'danger-light' | 'success';\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ReactNode;\n footer: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkActionsRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkActionsRenderer = () => {\n const plugins = useStrapiApp('BulkActionsRenderer', (state) => state.plugins);\n\n const { model, collectionType } = useDoc();\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n model,\n collectionType,\n documentIds: [],\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getBulkActions()}\n >\n {(actions) => actions.map((action) => <BulkActionAction key={action.id} {...action} />)}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkActionAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends BulkActionDescription, Pick<BulkActionComponent, 'actionType'> {\n id: string;\n}\n\nconst BulkActionAction = (action: Action) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const handleClick = (action: Action) => (e: React.MouseEvent) => {\n const { onClick, dialog, id } = action;\n\n if (onClick) {\n onClick(e);\n }\n\n if (dialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal': {\n if (action.actionType === 'delete') trackUsage('willBulkDeleteEntries');\n e.preventDefault();\n setDialogId(id);\n }\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n if (action.dialog?.type === 'modal' && action.dialog?.onClose) {\n action.dialog.onClose();\n }\n };\n\n return (\n <>\n <Button\n disabled={action.disabled}\n startIcon={action.icon}\n variant={action.variant}\n onClick={handleClick(action)}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <BulkActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <BulkActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BulkActionConfirmDialogProps\n extends DialogOptions,\n Pick<DialogProps, 'onClose' | 'isOpen'>,\n Pick<Action, 'variant'> {\n confirmButton?: string;\n}\n\nconst BulkActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n confirmButton,\n isOpen,\n variant = 'secondary',\n}: BulkActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog isOpen={isOpen} title={title} onClose={handleClose}>\n <DialogBody icon={<ExclamationMarkCircle />}>{content}</DialogBody>\n <DialogFooter\n startAction={\n <Button onClick={handleClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endAction={\n <Button\n onClick={handleConfirm}\n variant={variant === 'danger-light' ? variant : 'secondary'}\n startIcon={variant === 'danger-light' ? <Trash /> : <Check />}\n >\n {confirmButton\n ? confirmButton\n : formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n }\n />\n </Dialog>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BulkActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BulkActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst BulkActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content,\n onModalClose,\n}: BulkActionModalProps) => {\n const id = React.useId();\n\n if (!isOpen) {\n return null;\n }\n\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <ModalLayout borderRadius=\"4px\" overflow=\"hidden\" onClose={handleClose} labelledBy={id}>\n <ModalHeader>\n <Typography fontWeight=\"bold\" textColor=\"neutral800\" as=\"h2\" id={id}>\n {title}\n </Typography>\n </ModalHeader>\n <ModalBody>{content}</ModalBody>\n <>{typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}</>\n </ModalLayout>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DefaultBulkActions\n * -----------------------------------------------------------------------------------------------*/\n\n// const DeleteAction: BulkActionComponent = ({ ids, model: slug }) => {\n// const { formatMessage } = useIntl();\n// const { post } = useFetchClient();\n// const toggleNotification = useNotification();\n// const { formatAPIError } = useAPIErrorHandler(getTranslation);\n// const contentType = useTypedSelector((state) => state['content-manager_listView'].contentType);\n// const { setSelectedEntries } = useTableContext();\n\n// const hasI18nEnabled = Boolean(contentType?.pluginOptions?.i18n);\n// const queryClient = useQueryClient();\n// const { trackUsage } = useTracking();\n// const hasDeletePermission = useAllowedActions(slug).canDelete;\n\n// const handleConfirmDeleteAllData = async () => {\n// try {\n// await post<\n// Contracts.CollectionTypes.BulkDelete.Response,\n// AxiosResponse<Contracts.CollectionTypes.BulkDelete.Response>,\n// Contracts.CollectionTypes.BulkDelete.Request['body']\n// >(`/content-manager/collection-types/${slug}/actions/bulkDelete`, {\n// ids,\n// });\n\n// queryClient.invalidateQueries(['content-manager', 'collection-types', slug]);\n// setSelectedEntries([]);\n// trackUsage('didBulkDeleteEntries');\n// } catch (err) {\n// if (err instanceof AxiosError) {\n// toggleNotification({\n// type: 'warning',\n// message: formatAPIError(err),\n// });\n// }\n// }\n// };\n\n// if (!hasDeletePermission) return null;\n\n// return {\n// actionType: 'delete',\n// variant: 'danger-light',\n// label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n// dialog: {\n// type: 'dialog',\n// title: formatMessage({\n// id: 'app.components.ConfirmDialog.title',\n// defaultMessage: 'Confirmation',\n// }),\n// content: (\n// <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n// <Typography id=\"confirm-description\" textAlign=\"center\">\n// {formatMessage({\n// id: 'popUpWarning.bodyMessage.contentType.delete.all',\n// defaultMessage: 'Are you sure you want to delete these entries?',\n// })}\n// </Typography>\n// {hasI18nEnabled && (\n// <Box textAlign=\"center\" padding={3}>\n// <Typography textColor=\"danger500\">\n// {formatMessage(\n// {\n// id: getTranslation('Settings.list.actions.deleteAdditionalInfos'),\n// defaultMessage:\n// 'This will delete the active locale versions <em>(from Internationalization)</em>',\n// },\n// {\n// em: Emphasis,\n// }\n// )}\n// </Typography>\n// </Box>\n// )}\n// </Flex>\n// ),\n// onConfirm: handleConfirmDeleteAllData,\n// },\n// };\n// };\n\n// const UnpublishAction: BulkActionComponent = ({ ids, model: slug }) => {\n// const { formatMessage } = useIntl();\n// const { post } = useFetchClient();\n// const toggleNotification = useNotification();\n// const { formatAPIError } = useAPIErrorHandler(getTranslation);\n// const { selectedEntries, setSelectedEntries } = useTableContext();\n// const { data, contentType } = useTypedSelector((state) => state['content-manager_listView']);\n// const selectedEntriesObjects = data.filter((entry) => selectedEntries.includes(entry.id));\n\n// const hasI18nEnabled = Boolean(contentType?.pluginOptions?.i18n);\n// const queryClient = useQueryClient();\n// const hasPublishPermission = useAllowedActions(slug).canPublish;\n\n// const bulkUnpublishMutation = useMutation<\n// Contracts.CollectionTypes.BulkUnpublish.Response,\n// AxiosError<Required<Pick<Contracts.CollectionTypes.BulkUnpublish.Response, 'error'>>>,\n// Contracts.CollectionTypes.BulkUnpublish.Request['body']\n// >(\n// async (body) => {\n// const { data } = await post<\n// Contracts.CollectionTypes.BulkUnpublish.Response,\n// AxiosResponse<Contracts.CollectionTypes.BulkUnpublish.Response>,\n// Contracts.CollectionTypes.BulkUnpublish.Request['body']\n// >(`/content-manager/collection-types/${slug}/actions/bulkUnpublish`, body);\n\n// return data;\n// },\n// {\n// onSuccess() {\n// toggleNotification({\n// type: 'success',\n// message: {\n// id: 'content-manager.success.record.unpublish',\n// defaultMessage: 'Unpublished',\n// },\n// });\n\n// queryClient.invalidateQueries(['content-manager', 'collection-types', slug]);\n// setSelectedEntries([]);\n// },\n// onError(error) {\n// toggleNotification({\n// type: 'warning',\n// message: formatAPIError(error),\n// });\n// },\n// }\n// );\n\n// const handleConfirmUnpublishAllData = async () => {\n// await bulkUnpublishMutation.mutateAsync({ ids });\n// };\n\n// const showUnpublishButton =\n// hasPublishPermission && selectedEntriesObjects.some((entry) => entry.publishedAt);\n\n// if (!showUnpublishButton) return null;\n\n// return {\n// actionType: 'unpublish',\n// variant: 'tertiary',\n// label: formatMessage({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' }),\n// dialog: {\n// type: 'dialog',\n// title: formatMessage({\n// id: 'app.components.ConfirmDialog.title',\n// defaultMessage: 'Confirmation',\n// }),\n// content: (\n// <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n// <Typography id=\"confirm-description\" textAlign=\"center\">\n// {formatMessage({\n// id: 'popUpWarning.bodyMessage.contentType.unpublish.all',\n// defaultMessage: 'Are you sure you want to unpublish these entries?',\n// })}\n// </Typography>\n// {hasI18nEnabled && (\n// <Box textAlign=\"center\" padding={3}>\n// <Typography textColor=\"danger500\">\n// {formatMessage(\n// {\n// id: getTranslation('Settings.list.actions.unpublishAdditionalInfos'),\n// defaultMessage:\n// 'This will unpublish the active locale versions <em>(from Internationalization)</em>',\n// },\n// {\n// em: Emphasis,\n// }\n// )}\n// </Typography>\n// </Box>\n// )}\n// </Flex>\n// ),\n// confirmButton: formatMessage({\n// id: 'app.utils.unpublish',\n// defaultMessage: 'Unpublish',\n// }),\n// onConfirm: handleConfirmUnpublishAllData,\n// },\n// };\n// };\n\nconst Emphasis = (chunks: React.ReactNode) => (\n <Typography fontWeight=\"semiBold\" textColor=\"danger500\">\n {chunks}\n </Typography>\n);\n\nconst DEFAULT_BULK_ACTIONS: BulkActionComponent[] = [];\n\nexport { DEFAULT_BULK_ACTIONS, BulkActionsRenderer, Emphasis };\nexport type { BulkActionDescription };\n","import { Box, Flex, Icon, Typography } from '@strapi/design-system';\nimport { ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\ntype ProhibitedCloningField = Contracts.CollectionTypes.ProhibitedCloningField;\ntype Reason = ProhibitedCloningField[1];\n\ninterface AutoCloneFailureModalBodyProps {\n prohibitedFields: ProhibitedCloningField[];\n}\n\nconst AutoCloneFailureModalBody = ({ prohibitedFields }: AutoCloneFailureModalBodyProps) => {\n const { formatMessage } = useIntl();\n\n const getDefaultErrorMessage = (reason: Reason) => {\n switch (reason) {\n case 'relation':\n return 'Duplicating the relation could remove it from the original entry.';\n case 'unique':\n return 'Identical values in a unique field are not allowed';\n default:\n return reason;\n }\n };\n\n return (\n <>\n <Typography variant=\"beta\">\n {formatMessage({\n id: getTranslation('containers.list.autoCloneModal.title'),\n defaultMessage: \"This entry can't be duplicated directly.\",\n })}\n </Typography>\n <Box marginTop={2}>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('containers.list.autoCloneModal.description'),\n defaultMessage:\n \"A new entry will be created with the same content, but you'll have to change the following fields to save it.\",\n })}\n </Typography>\n </Box>\n <Flex marginTop={6} gap={2} direction=\"column\" alignItems=\"stretch\">\n {prohibitedFields.map(([fieldPath, reason]) => (\n <Flex\n direction=\"column\"\n gap={2}\n alignItems=\"flex-start\"\n borderColor=\"neutral200\"\n hasRadius\n padding={6}\n key={fieldPath.join()}\n >\n <Flex direction=\"row\" as=\"ol\">\n {fieldPath.map((pathSegment, index) => (\n <Typography fontWeight=\"semiBold\" as=\"li\" key={index}>\n {pathSegment}\n {index !== fieldPath.length - 1 && (\n <Icon\n as={ChevronRight}\n color=\"neutral500\"\n height={2}\n width={2}\n marginLeft={2}\n marginRight={2}\n />\n )}\n </Typography>\n ))}\n </Flex>\n <Typography as=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation(`containers.list.autoCloneModal.error.${reason}`),\n defaultMessage: getDefaultErrorMessage(reason),\n })}\n </Typography>\n </Flex>\n ))}\n </Flex>\n </>\n );\n};\n\nexport { AutoCloneFailureModalBody };\nexport type { AutoCloneFailureModalBodyProps };\n","import * as React from 'react';\n\nimport { Button, Flex } from '@strapi/design-system';\nimport { LinkButton } from '@strapi/design-system/v2';\nimport { Duplicate, Pencil } from '@strapi/icons';\nimport { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { DescriptionComponentRenderer } from '../../../../components/DescriptionComponentRenderer';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useStrapiApp } from '../../../../features/StrapiApp';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { Document, useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { DocumentActionsMenu } from '../../EditView/components/DocumentActions';\n\nimport { AutoCloneFailureModalBody } from './AutoCloneFailureModal';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n DocumentActionProps,\n} from '../../../../core/apis/content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * TableActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableActionsProps {\n document: Document;\n}\n\nconst TableActions = ({ document }: TableActionsProps) => {\n const { formatMessage } = useIntl();\n const { model, collectionType } = useDoc();\n const plugins = useStrapiApp('TableActions', (state) => state.plugins);\n\n const props: DocumentActionProps = {\n activeTab: null,\n model,\n documentId: document.documentId,\n collectionType,\n document,\n };\n\n return (\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions()}\n >\n {(actions) => {\n const tableRowActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('table-row');\n });\n\n return (\n <DocumentActionsMenu\n actions={tableRowActions}\n label={formatMessage({\n id: 'content-manager.containers.list.table.row-actions',\n defaultMessage: 'Row action',\n })}\n variant=\"ghost\"\n />\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditAction: DocumentActionComponent = ({ documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canRead } = useDocumentRBAC('EditAction', ({ canRead }) => ({ canRead }));\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n\n return {\n disabled: !canRead,\n icon: <StyledPencil />,\n label: formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to edit a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.edit.error',\n defaultMessage: 'An error occurred while trying to edit the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n navigate({\n pathname: documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n },\n };\n};\n\nEditAction.type = 'edit';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledPencil = styled(Pencil)`\n path {\n fill: currentColor;\n }\n`;\n\nconst CloneAction: DocumentActionComponent = ({ model, documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canCreate } = useDocumentRBAC('CloneAction', ({ canCreate }) => ({ canCreate }));\n const { toggleNotification } = useNotification();\n const { autoClone } = useDocumentActions();\n const [prohibitedFields, setProhibitedFields] = React.useState<\n Contracts.CollectionTypes.ProhibitedCloningField[]\n >([]);\n\n return {\n disabled: !canCreate,\n icon: <StyledDuplicate />,\n label: formatMessage({\n id: 'content-manager.actions.clone.label',\n defaultMessage: 'Duplicate',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to clone a document in the table without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.clone.error',\n defaultMessage: 'An error occurred while trying to clone the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await autoClone({ model, sourceId: documentId });\n\n if ('data' in res) {\n navigate(res.data.documentId);\n\n /**\n * We return true because we don't need to show a modal anymore.\n */\n return true;\n }\n\n if (\n isBaseQueryError(res.error) &&\n res.error.details &&\n typeof res.error.details === 'object' &&\n 'prohibitedFields' in res.error.details &&\n Array.isArray(res.error.details.prohibitedFields)\n ) {\n const prohibitedFields = res.error.details\n .prohibitedFields as Contracts.CollectionTypes.ProhibitedCloningField[];\n\n setProhibitedFields(prohibitedFields);\n }\n },\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.header',\n defaultMessage: 'Duplicate',\n }),\n content: <AutoCloneFailureModalBody prohibitedFields={prohibitedFields} />,\n footer: ({ onClose }) => {\n return (\n <Flex justifyContent=\"space-between\">\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <LinkButton\n as={NavLink}\n // @ts-expect-error – the DS LinkButton can't infer props from the `as` prop component\n to={{\n pathname: `clone/${documentId}`,\n }}\n >\n {formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.create',\n defaultMessage: 'Create',\n })}\n </LinkButton>\n </Flex>\n );\n },\n },\n };\n};\n\nCloneAction.type = 'clone';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledDuplicate = styled(Duplicate)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_TABLE_ROW_ACTIONS = [EditAction, CloneAction];\n\nexport { TableActions, DEFAULT_TABLE_ROW_ACTIONS };\n","/* eslint-disable check-file/filename-naming-convention */\n/**\n * This file can be removed when the content-manager is moved back to it's own plugin,\n * we would just add the APIs that plugin and continue to alias their methods on the\n * main StrapiApp class.\n */\n\nimport { ReviewWorkflowsPanel } from '../../../../ee/admin/src/content-manager/pages/EditView/components/ReviewWorkflowsPanel';\nimport { HistoryAction } from '../../content-manager/history/components/HistoryAction';\nimport {\n DEFAULT_ACTIONS,\n type DocumentActionDescription,\n} from '../../content-manager/pages/EditView/components/DocumentActions';\nimport {\n DEFAULT_HEADER_ACTIONS,\n type HeaderActionDescription,\n} from '../../content-manager/pages/EditView/components/Header';\nimport {\n ActionsPanel,\n type PanelDescription,\n} from '../../content-manager/pages/EditView/components/Panels';\nimport {\n DEFAULT_BULK_ACTIONS,\n type BulkActionDescription,\n} from '../../content-manager/pages/ListView/components/BulkActions/Actions';\nimport { DEFAULT_TABLE_ROW_ACTIONS } from '../../content-manager/pages/ListView/components/TableActions';\n\nimport type { PluginConfig } from './Plugin';\nimport type { DescriptionComponent } from '../../components/DescriptionComponentRenderer';\nimport type { Document } from '../../content-manager/hooks/useDocument';\nimport type { Contracts } from '@strapi/plugin-content-manager/_internal/shared';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Types\n * -----------------------------------------------------------------------------------------------*/\n\ntype DescriptionReducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface EditViewContext {\n /**\n * This will ONLY be null, if the content-type\n * does not have draft & published enabled.\n */\n activeTab: 'draft' | 'published' | null;\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n document?: Document;\n /**\n * this will be undefined if someone is creating an entry.\n */\n documentId?: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n meta?: Contracts.CollectionTypes.DocumentMetadata;\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface ListViewContext {\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * TODO: add comment\n */\n documentIds: string[];\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface PanelComponentProps extends EditViewContext {}\n\ninterface PanelComponent extends DescriptionComponent<PanelComponentProps, PanelDescription> {\n /**\n * The defaults are added by Strapi only, if you're providing your own component,\n * you do not need to provide this.\n */\n type?: 'actions' | 'review-workflows' | 'releases';\n}\n\ninterface DocumentActionProps extends EditViewContext {}\n\ninterface DocumentActionComponent\n extends DescriptionComponent<DocumentActionProps, DocumentActionDescription> {\n type?:\n | 'clone'\n | 'configure-the-view'\n | 'delete'\n | 'discard'\n | 'edit'\n | 'edit-the-model'\n | 'history'\n | 'publish'\n | 'unpublish'\n | 'update';\n}\n\ninterface HeaderActionProps extends EditViewContext {}\n\ninterface HeaderActionComponent\n extends DescriptionComponent<HeaderActionProps, HeaderActionDescription> {}\n\ninterface BulkActionComponentProps extends ListViewContext {}\n\ninterface BulkActionComponent\n extends DescriptionComponent<BulkActionComponentProps, BulkActionDescription> {\n actionType?: 'delete' | 'publish' | 'unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ContentManager plugin\n * -----------------------------------------------------------------------------------------------*/\n\nclass ContentManagerPlugin {\n /**\n * The following properties are the stored ones provided by any plugins registering with\n * the content-manager. The function calls however, need to be called at runtime in the\n * application, so instead we collate them and run them later with the complete list incl.\n * ones already registered & the context of the view.\n */\n bulkActions: BulkActionComponent[] = [...DEFAULT_BULK_ACTIONS];\n documentActions: DocumentActionComponent[] = [\n ...DEFAULT_ACTIONS,\n ...DEFAULT_TABLE_ROW_ACTIONS,\n ...DEFAULT_HEADER_ACTIONS,\n HistoryAction,\n ];\n editViewSidePanels: PanelComponent[] = [ActionsPanel, ReviewWorkflowsPanel];\n headerActions: HeaderActionComponent[] = [];\n\n constructor() {}\n\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent>): void;\n addEditViewSidePanel(panels: PanelComponent[]): void;\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent> | PanelComponent[]) {\n if (Array.isArray(panels)) {\n this.editViewSidePanels = [...this.editViewSidePanels, ...panels];\n } else if (typeof panels === 'function') {\n this.editViewSidePanels = panels(this.editViewSidePanels);\n } else {\n throw new Error(\n `Expected the \\`panels\\` passed to \\`addEditViewSidePanel\\` to be an array or a function, but received ${getPrintableType(\n panels\n )}`\n );\n }\n }\n\n addDocumentAction(actions: DescriptionReducer<DocumentActionComponent>): void;\n addDocumentAction(actions: DocumentActionComponent[]): void;\n addDocumentAction(\n actions: DescriptionReducer<DocumentActionComponent> | DocumentActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.documentActions = [...this.documentActions, ...actions];\n } else if (typeof actions === 'function') {\n this.documentActions = actions(this.documentActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addDocumentHeaderAction(actions: DescriptionReducer<HeaderActionComponent>): void;\n addDocumentHeaderAction(actions: HeaderActionComponent[]): void;\n addDocumentHeaderAction(\n actions: DescriptionReducer<HeaderActionComponent> | HeaderActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.headerActions = [...this.headerActions, ...actions];\n } else if (typeof actions === 'function') {\n this.headerActions = actions(this.headerActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentHeaderAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addBulkAction(actions: DescriptionReducer<BulkActionComponent>): void;\n addBulkAction(actions: BulkActionComponent[]): void;\n addBulkAction(actions: DescriptionReducer<BulkActionComponent> | BulkActionComponent[]) {\n if (Array.isArray(actions)) {\n this.bulkActions = [...this.bulkActions, ...actions];\n } else if (typeof actions === 'function') {\n this.bulkActions = actions(this.bulkActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addBulkAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n get config() {\n return {\n id: 'content-manager',\n name: 'Content Manager',\n apis: {\n addDocumentAction: this.addDocumentAction.bind(this),\n addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),\n addEditViewSidePanel: this.addEditViewSidePanel.bind(this),\n getDocumentActions: () => this.documentActions,\n getHeaderActions: () => this.headerActions,\n getEditViewSidePanels: () => this.editViewSidePanels,\n addBulkAction: this.addBulkAction.bind(this),\n getBulkActions: () => this.bulkActions,\n },\n } satisfies PluginConfig;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { ContentManagerPlugin };\nexport type {\n EditViewContext,\n ListViewContext,\n BulkActionComponent,\n BulkActionComponentProps,\n BulkActionDescription,\n DescriptionComponent,\n DescriptionReducer,\n PanelComponentProps,\n PanelComponent,\n PanelDescription,\n DocumentActionComponent,\n DocumentActionDescription,\n DocumentActionProps,\n HeaderActionComponent,\n HeaderActionDescription,\n HeaderActionProps,\n};\n","/* eslint-disable check-file/filename-naming-convention */\nimport { ComponentType } from 'react';\n\nimport invariant from 'invariant';\n\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\nimport type { AnySchema } from 'yup';\n\ntype CustomFieldUID = `plugin::${string}.${string}` | `global::${string}`;\n\ntype CustomFieldOptionInput =\n | 'text'\n | 'checkbox'\n | 'checkbox-with-number-field'\n | 'select-default-boolean'\n | 'date'\n | 'select'\n | 'number'\n | 'boolean-radio-group'\n | 'select-date'\n | 'text-area-enum'\n | 'select-number'\n | 'radio-group';\n\ntype CustomFieldOptionName =\n | 'min'\n | 'minLength'\n | 'max'\n | 'maxLength'\n | 'required'\n | 'regex'\n | 'enum'\n | 'unique'\n | 'private'\n | 'default';\n\ninterface CustomFieldOption {\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n description: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n name: CustomFieldOptionName;\n type: CustomFieldOptionInput;\n defaultValue?: string | number | boolean | Date;\n}\n\ninterface CustomFieldOptionSection {\n sectionTitle:\n | (MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n })\n | null;\n items: CustomFieldOption[];\n}\n\ninterface CustomFieldOptions {\n base?: (CustomFieldOptionSection | CustomFieldOption)[];\n advanced?: (CustomFieldOptionSection | CustomFieldOption)[];\n validator?: () => Record<string, AnySchema>;\n}\n\ninterface CustomField {\n name: string;\n pluginId?: string;\n type: (typeof ALLOWED_TYPES)[number];\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n intlDescription: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n icon?: ComponentType;\n components: {\n Input: () => Promise<{ default?: ComponentType }>;\n };\n options?: CustomFieldOptions;\n}\n\nconst ALLOWED_TYPES = [\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'decimal',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'password',\n 'richtext',\n 'string',\n 'text',\n 'time',\n 'uid',\n] as const;\n\nconst ALLOWED_ROOT_LEVEL_OPTIONS = [\n 'min',\n 'minLength',\n 'max',\n 'maxLength',\n 'required',\n 'regex',\n 'enum',\n 'unique',\n 'private',\n 'default',\n] as const;\n\nclass CustomFields {\n customFields: Record<string, CustomField>;\n\n constructor() {\n this.customFields = {};\n }\n\n register = (customFields: CustomField | CustomField[]) => {\n if (Array.isArray(customFields)) {\n // If several custom fields are passed, register them one by one\n customFields.forEach((customField) => {\n this.register(customField);\n });\n } else {\n // Handle individual custom field\n const { name, pluginId, type, intlLabel, intlDescription, components, options } =\n customFields;\n\n // Ensure required attributes are provided\n invariant(name, 'A name must be provided');\n invariant(type, 'A type must be provided');\n invariant(intlLabel, 'An intlLabel must be provided');\n invariant(intlDescription, 'An intlDescription must be provided');\n invariant(components, 'A components object must be provided');\n invariant(components.Input, 'An Input component must be provided');\n\n // Ensure the type is valid\n invariant(\n ALLOWED_TYPES.includes(type),\n `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`\n );\n\n // Ensure name has no special characters\n const isValidObjectKey = /^(?![0-9])[a-zA-Z0-9$_-]+$/g;\n invariant(\n isValidObjectKey.test(name),\n `Custom field name: '${name}' is not a valid object key`\n );\n\n // Ensure options have valid name paths\n const allFormOptions = [...(options?.base || []), ...(options?.advanced || [])];\n\n if (allFormOptions.length) {\n const optionPathValidations = allFormOptions.reduce(optionsValidationReducer, []);\n\n optionPathValidations.forEach(({ isValidOptionPath, errorMessage }) => {\n invariant(isValidOptionPath, errorMessage);\n });\n }\n\n // When no plugin is specified, default to the global namespace\n const uid: CustomFieldUID = pluginId ? `plugin::${pluginId}.${name}` : `global::${name}`;\n\n // Ensure the uid is unique\n const uidAlreadyUsed = Object.prototype.hasOwnProperty.call(this.customFields, uid);\n invariant(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);\n\n this.customFields[uid] = customFields;\n }\n };\n\n getAll = () => {\n return this.customFields;\n };\n\n get = (uid: string): CustomField | undefined => {\n return this.customFields[uid];\n };\n}\n\ninterface OptionValidation {\n isValidOptionPath: boolean;\n errorMessage: string;\n}\n\nconst optionsValidationReducer = (\n acc: OptionValidation[],\n option: CustomFieldOptionSection | CustomFieldOption\n): OptionValidation[] => {\n if ('items' in option) {\n return option.items.reduce(optionsValidationReducer, acc);\n }\n\n if (!option.name) {\n acc.push({\n isValidOptionPath: false,\n errorMessage: \"The 'name' property is required on an options object\",\n });\n } else {\n acc.push({\n isValidOptionPath:\n option.name.startsWith('options') || ALLOWED_ROOT_LEVEL_OPTIONS.includes(option.name),\n errorMessage: `'${option.name}' must be prefixed with 'options.'`,\n });\n }\n\n return acc;\n};\n\nexport { type CustomField, CustomFields };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nexport interface PluginConfig\n extends Partial<Pick<Plugin, 'apis' | 'initializer' | 'injectionZones' | 'isReady'>> {\n name: string;\n id: string;\n}\n\nexport class Plugin {\n apis: Record<string, unknown>;\n initializer: React.ComponentType<{ setPlugin(pluginId: string): void }> | null;\n injectionZones: Record<\n string,\n Record<string, Array<{ name: string; Component: React.ComponentType }>>\n >;\n isReady: boolean;\n name: string;\n pluginId: PluginConfig['id'];\n\n constructor(pluginConf: PluginConfig) {\n this.apis = pluginConf.apis || {};\n this.initializer = pluginConf.initializer || null;\n this.injectionZones = pluginConf.injectionZones || {};\n this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;\n this.name = pluginConf.name;\n this.pluginId = pluginConf.id;\n }\n\n getInjectedComponents(containerName: string, blockName: string) {\n try {\n return this.injectionZones[containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n }\n\n injectComponent(\n containerName: string,\n blockName: string,\n component: { name: string; Component: React.ComponentType }\n ) {\n try {\n this.injectionZones[containerName][blockName].push(component);\n } catch (err) {\n console.error('Cannot inject component', err);\n }\n }\n}\n","import {\n configureStore,\n StoreEnhancer,\n Middleware,\n Reducer,\n combineReducers,\n} from '@reduxjs/toolkit';\n\nimport { reducer as cmAppReducer, ContentManagerAppState } from '../../content-manager/layout';\nimport { reducer as contentManagerReducers } from '../../content-manager/modules/reducers';\nimport { contentManagerApi } from '../../content-manager/services/api';\nimport { reducer as appReducer, AppState } from '../../reducer';\nimport { adminApi } from '../../services/api';\n\n/**\n * @description Static reducers are ones we know, they live in the admin package.\n */\nconst staticReducers = {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n 'content-manager_app': cmAppReducer,\n [contentManagerApi.reducerPath]: contentManagerApi.reducer,\n 'content-manager': contentManagerReducers,\n} as const;\n\nconst injectReducerStoreEnhancer: (appReducers: Record<string, Reducer>) => StoreEnhancer =\n (appReducers) =>\n (next) =>\n (...args) => {\n const store = next(...args);\n\n const asyncReducers: Record<string, Reducer> = {};\n\n return {\n ...store,\n asyncReducers,\n injectReducer: (key: string, asyncReducer: Reducer) => {\n asyncReducers[key] = asyncReducer;\n store.replaceReducer(\n // @ts-expect-error we dynamically add reducers which makes the types uncomfortable.\n combineReducers({\n ...appReducers,\n ...asyncReducers,\n })\n );\n },\n };\n };\n\ntype PreloadState = Partial<{\n admin_app: AppState;\n}>;\n\n/**\n * @description This is the main store configuration function, injected Reducers use our legacy app.addReducer API,\n * which we're trying to phase out. App Middlewares could potentially be improved...?\n */\nconst configureStoreImpl = (\n preloadedState: PreloadState = {},\n appMiddlewares: Array<() => Middleware> = [],\n injectedReducers: Record<string, Reducer> = {}\n) => {\n const coreReducers = { ...staticReducers, ...injectedReducers } as const;\n\n const defaultMiddlewareOptions = {} as any;\n\n // These are already disabled in 'production' env but we also need to disable it in test environments\n // However, we want to leave them on for development so any issues can still be caught\n if (process.env.NODE_ENV === 'test') {\n defaultMiddlewareOptions.serializableCheck = false;\n defaultMiddlewareOptions.immutableCheck = false;\n }\n\n const store = configureStore({\n preloadedState: {\n admin_app: preloadedState.admin_app,\n },\n reducer: coreReducers,\n devTools: process.env.NODE_ENV !== 'production',\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware(defaultMiddlewareOptions),\n adminApi.middleware,\n contentManagerApi.middleware,\n ...appMiddlewares.map((m) => m()),\n ],\n enhancers: [injectReducerStoreEnhancer(coreReducers)],\n });\n\n return store;\n};\n\ntype Store = ReturnType<typeof configureStoreImpl> & {\n asyncReducers: Record<string, Reducer>;\n injectReducer: (key: string, asyncReducer: Reducer) => void;\n};\n\ntype RootState = ReturnType<Store['getState']>;\n\ntype Dispatch = Store['dispatch'];\n\nexport { configureStoreImpl as configureStore };\nexport type { RootState, Dispatch, AppState, Store, PreloadState, ContentManagerAppState };\n","export const getBasename = () => (process.env.ADMIN_PATH ?? '').replace(window.location.origin, '');\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\n\nimport type { Store } from '../store/configure';\n\nexport type Handler = (...args: any[]) => any;\n\nexport const createHook = () => {\n const _handlers: Handler[] = [];\n\n return {\n register(fn: Handler) {\n _handlers.push(fn);\n },\n delete(handler: Handler) {\n _handlers.splice(_handlers.indexOf(handler), 1);\n },\n runWaterfall<T>(args: T, store?: Store) {\n return _handlers.reduce((acc, fn) => fn(acc, store), args);\n },\n async runWaterfallAsync<T>(args: T, store?: Store) {\n let result = args;\n\n for (const fn of _handlers) {\n result = await fn(result, store);\n }\n\n return result;\n },\n runSeries<T extends any[]>(...args: T) {\n return _handlers.map((fn) => fn(...args));\n },\n async runSeriesAsync<T extends any[]>(...args: T) {\n const result = [];\n\n for (const fn of _handlers) {\n result.push(await fn(...args));\n }\n\n return result;\n },\n runParallel<T extends any[]>(...args: T) {\n return Promise.all(\n _handlers.map((fn) => {\n return fn(...args);\n })\n );\n },\n };\n};\n","import * as React from 'react';\n\nimport { useCallbackRef } from '@strapi/design-system';\n\nfunction isEnterprise() {\n return window.strapi.isEE;\n}\n\nexport interface UseEnterpriseOptions<TCEData, TEEData, TDefaultValue, TCombinedValue> {\n defaultValue?: TDefaultValue;\n combine?: (ceData: TCEData, eeData: TEEData) => TCombinedValue;\n enabled?: boolean;\n}\n\ntype UseEnterpriseReturn<TCEData, TEEData, TDefaultValue, TCombinedValue> =\n TDefaultValue extends null\n ? TCEData | TEEData | TCombinedValue | null\n : TCEData | TEEData | TCombinedValue | TDefaultValue;\n\nexport const useEnterprise = <\n TCEData,\n TEEData = TCEData,\n TCombinedValue = TEEData,\n TDefaultValue = TCEData\n>(\n ceData: TCEData,\n eeCallback: () => Promise<TEEData>,\n opts: UseEnterpriseOptions<TCEData, TEEData, TDefaultValue, TCombinedValue> = {}\n): UseEnterpriseReturn<TCEData, TEEData, TDefaultValue, TCombinedValue> => {\n const { defaultValue = null, combine = (_ceData, eeData) => eeData, enabled = true } = opts;\n const eeCallbackRef = useCallbackRef(eeCallback);\n const combineCallbackRef = useCallbackRef(combine);\n\n // We have to use a nested object here, because functions (e.g. Components)\n // can not be stored as value directly\n const [{ data }, setData] = React.useState<{\n data: TCEData | TEEData | TDefaultValue | TCombinedValue | null;\n }>({\n data: isEnterprise() && enabled ? defaultValue : ceData,\n });\n\n React.useEffect(() => {\n async function importEE() {\n const eeData = await eeCallbackRef();\n const combinedValue = combineCallbackRef(ceData, eeData);\n\n setData({ data: combinedValue ? combinedValue : eeData });\n }\n\n if (isEnterprise() && enabled) {\n importEE();\n }\n }, [ceData, eeCallbackRef, combineCallbackRef, enabled]);\n\n // @ts-expect-error – the hook type assertion works in practice. But seems to have issues here...\n return data;\n};\n","import styled from 'styled-components';\n\nimport { useConfiguration } from '../features/Configuration';\n\nconst Img = styled.img`\n height: ${72 / 16}rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration('UnauthenticatedLogo');\n\n return <Img src={auth?.custom?.url || auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n","import * as React from 'react';\n\nimport { Box, Flex, SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex as=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { Login } from '../../../../../shared/contracts/authentication';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const navigate = useNavigate();\n\n const login = useAuth('Login', (state) => state.login);\n\n const handleLogin = async (body: Parameters<typeof login>[0]) => {\n setApiError(undefined);\n\n const res = await login(body);\n\n if ('error' in res) {\n const message = res.error.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n navigate('/auth/oops');\n return;\n }\n\n setApiError(message);\n } else {\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n navigate(redirectUrl);\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" as=\"h1\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"PUT\"\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n handleLogin(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n }),\n name: 'rememberMe',\n type: 'checkbox' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Login };\nexport type { LoginProps };\n","import { Box, Button, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { useForgotPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nimport type { ForgotPassword } from '../../../../../shared/contracts/authentication';\n\nconst ForgotPassword = () => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [forgotPassword, { error }] = useForgotPasswordMutation();\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'Auth.form.button.password-recovery',\n defaultMessage: 'Password Recovery',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n email: '',\n }}\n onSubmit={async (body) => {\n const res = await forgotPassword(body);\n\n if (!('error' in res)) {\n navigate('/auth/forgot-password-success');\n }\n }}\n validationSchema={yup.object().shape({\n email: yup.string().email(translatedErrors.email).required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required.',\n }),\n })}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n label: formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' }),\n name: 'email',\n placeholder: formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n }),\n required: true,\n type: 'string' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button type=\"submit\" fullWidth>\n {formatMessage({\n id: 'Auth.form.button.forgot-password',\n defaultMessage: 'Send Email',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPassword };\n","import { Box, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst ForgotPasswordSuccess = () => {\n const { formatMessage } = useIntl();\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.title',\n defaultMessage: 'Email sent',\n })}\n </Typography>\n </Box>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.email',\n defaultMessage: 'It can take a few minutes to receive your password recovery link.',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.contact-admin',\n defaultMessage:\n 'If you do not receive this link, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPasswordSuccess };\n","import * as React from 'react';\n\nimport { Box, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useLocation } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst Oops = () => {\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n\n const message =\n query.get('info') ||\n formatMessage({\n id: 'Auth.components.Oops.text',\n defaultMessage: 'Your account has been suspended.',\n });\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({ id: 'Auth.components.Oops.title', defaultMessage: 'Oops...' })}\n </Typography>\n </Box>\n <Typography>{message}</Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'Auth.components.Oops.text.admin',\n defaultMessage: 'If this is a mistake, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Oops };\n","import { useEffect, useState } from 'react';\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => {\n const stickyValue = window.localStorage.getItem(key);\n\n if (stickyValue !== null) {\n try {\n return JSON.parse(stickyValue);\n } catch {\n // JSON.parse fails when the stored value is a primitive\n return stickyValue;\n }\n }\n\n return defaultValue;\n });\n\n useEffect(() => {\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\nexport { usePersistentState };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n FieldLabel,\n FieldInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport styled, { useTheme } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useAppInfo } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { usePersistentState } from '../hooks/usePersistentState';\n\nconst FieldWrapper = styled(Field)`\n height: ${32 / 16}rem;\n width: ${32 / 16}rem;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 7 * 24 * 60 * 60 * 1000, // 7 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 5 * 60 * 1000, // 5 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const theme = useTheme();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const { toggleNotification } = useNotification();\n const currentEnvironment = useAppInfo('NpsSurvey', (state) => state.currentEnvironment);\n const strapiVersion = useAppInfo('NpsSurvey', (state) => state.strapiVersion);\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n const user = useAuth('NpsSurvey', (state) => state.user);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = async ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n try {\n const body = {\n email: typeof user === 'object' && user.email ? user.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n };\n const res = await fetch('https://analytics.strapi.io/submit-nps', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue, isSubmitting }) => (\n <Form name=\"npsSurveyForm\">\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex={theme.zIndices[2]}\n width=\"50%\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box as=\"fieldset\" width=\"100%\">\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" as=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n aria-label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n icon={<Cross />}\n />\n </Flex>\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <FieldLabel htmlFor={`nps-survey-rating-${number}-input`}>\n <VisuallyHidden>\n <FieldInput\n type=\"radio\"\n id={`nps-survey-rating-${number}-input`}\n name=\"npsSurveyRating\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </FieldLabel>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\">\n <Box marginTop={2}>\n <FieldLabel htmlFor=\"npsSurveyFeedback\" fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </FieldLabel>\n </Box>\n <Box width=\"62%\" marginTop={3} marginBottom={4}>\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n >\n {values.npsSurveyFeedback}\n </Textarea>\n </Box>\n <Button marginBottom={2} type=\"submit\" loading={isSubmitting}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../../../components/GuidedTour/Provider';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n }),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n }),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n }),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n }),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const setSkipped = useGuidedTour('Register', (state) => state.setSkipped);\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error) ? formatAPIError(error) : error.message ?? '';\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const setToken = useAuth('Register', (state) => state.setToken);\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin(body);\n\n if ('data' in res) {\n setToken(res.data.token);\n\n const { roles } = res.data.user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n localStorage.setItem('GUIDED_TOUR_SKIPPED', JSON.stringify(false));\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser(body);\n\n if ('data' in res) {\n setToken(res.data.token);\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography as=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n helpers.setErrors(\n err.inner.reduce<Record<string, string>>((acc, { message, path }) => {\n if (path && typeof message === 'object') {\n acc[path] = formatMessage(message);\n }\n return acc;\n }, {})\n );\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <GridItem key={field.name} col={size}>\n <InputRenderer {...field} />\n </GridItem>\n ))}\n </Grid>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, Navigate, useLocation } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useAuth } from '../../../features/Auth';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { useResetPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .matches(/[a-z]/, {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n })\n .matches(/[A-Z]/, {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n })\n .matches(/\\d/, {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n }),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n});\n\nconst ResetPassword = () => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const setToken = useAuth('ResetPassword', (state) => state.setToken);\n\n const [resetPassword, { error }] = useResetPasswordMutation();\n\n const handleSubmit = async (body: ResetPassword.Request['body']) => {\n const res = await resetPassword(body);\n\n if ('data' in res) {\n setToken(res.data.token);\n navigate('/');\n }\n };\n /**\n * If someone doesn't have a reset password token\n * then they should just be redirected back to the login page.\n */\n if (!query.get('code')) {\n return <Navigate to=\"/auth/login\" />;\n }\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n // We know query.code is defined because we check for it above.\n handleSubmit({ password: values.password, resetPasswordToken: query.get('code')! });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n type: 'password' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ResetPassword };\n","import type { ComponentType } from 'react';\n\nimport { ForgotPassword } from './components/ForgotPassword';\nimport { ForgotPasswordSuccess } from './components/ForgotPasswordSuccess';\nimport { Oops } from './components/Oops';\nimport { Register, RegisterProps } from './components/Register';\nimport { ResetPassword } from './components/ResetPassword';\n\nexport type AuthType =\n | 'login'\n | 'register'\n | 'register-admin'\n | 'forgot-password'\n | 'reset-password'\n | 'forgot-password-success'\n | 'oops'\n | 'providers';\n\nexport type FormDictionary = Record<AuthType, ComponentType | ComponentType<RegisterProps>>;\n\nexport const FORMS = {\n 'forgot-password': ForgotPassword,\n 'forgot-password-success': ForgotPasswordSuccess,\n // the `Component` attribute is set after all forms and CE/EE components are loaded, but since we\n // are here outside of a React component we can not use the hook directly\n login: () => null,\n oops: Oops,\n register: Register,\n 'register-admin': Register,\n 'reset-password': ResetPassword,\n providers: () => null,\n} satisfies FormDictionary;\n","import { Navigate, useLocation, useMatch } from 'react-router-dom';\n\nimport { useAuth } from '../../features/Auth';\nimport { useEnterprise } from '../../hooks/useEnterprise';\nimport { useInitQuery } from '../../services/admin';\n\nimport { Login as LoginCE } from './components/Login';\nimport { FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AuthPage = () => {\n const { search } = useLocation();\n const match = useMatch('/auth/:authType');\n const authType = match?.params.authType;\n const { data } = useInitQuery();\n const { hasAdmin } = data ?? {};\n const Login = useEnterprise(\n LoginCE,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/components/Login')).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/constants')).FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n const token = useAuth('AuthPage', (state) => state.token);\n\n if (!authType || !forms) {\n return <Navigate to=\"/\" />;\n }\n\n const Component = forms[authType as keyof FormDictionary];\n\n // Redirect the user to the login page if\n // the endpoint does not exist or\n // there is already an admin user oo\n // the user is already logged in\n if (!Component || (hasAdmin && authType === 'register-admin') || token) {\n return <Navigate to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Navigate\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\n","/**\n * NotFoundPage\n *\n * This is the page we show when the user visits a url that doesn't have a route\n *\n */\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { ArrowRight, EmptyPictures } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Page } from '../components/PageHelpers';\n\nexport const NotFoundPage = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Page.Main labelledBy=\"title\">\n <HeaderLayout\n id=\"title\"\n title={formatMessage({\n id: 'content-manager.pageNotFound',\n defaultMessage: 'Page not found',\n })}\n />\n <ContentLayout>\n <EmptyStateLayout\n action={\n <LinkButton variant=\"secondary\" endIcon={<ArrowRight />} to=\"/\">\n {formatMessage({\n id: 'app.components.NotFoundPage.back',\n defaultMessage: 'Back to homepage',\n })}\n </LinkButton>\n }\n content={formatMessage({\n id: 'app.page.not.found',\n defaultMessage: \"Oops! We can't seem to find the page you're looging for...\",\n })}\n hasRadius\n icon={<EmptyPictures width=\"10rem\" />}\n shadow=\"tableShadow\"\n />\n </ContentLayout>\n </Page.Main>\n );\n};\n","import type { RouteObject } from 'react-router-dom';\n\nexport const ROUTES_CE: RouteObject[] = [\n {\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/Roles/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n path: 'roles',\n },\n {\n lazy: async () => {\n const { ProtectedCreatePage } = await import('./pages/Roles/CreatePage');\n\n return {\n Component: ProtectedCreatePage,\n };\n },\n path: 'roles/duplicate/:id',\n },\n {\n lazy: async () => {\n const { ProtectedCreatePage } = await import('./pages/Roles/CreatePage');\n\n return {\n Component: ProtectedCreatePage,\n };\n },\n path: 'roles/new',\n },\n {\n lazy: async () => {\n const { ProtectedEditPage } = await import('./pages/Roles/EditPage');\n\n return {\n Component: ProtectedEditPage,\n };\n },\n path: 'roles/:id',\n },\n {\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/Users/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n path: 'users',\n },\n {\n lazy: async () => {\n const { ProtectedEditPage } = await import('./pages/Users/EditPage');\n\n return {\n Component: ProtectedEditPage,\n };\n },\n path: 'users/:id',\n },\n {\n lazy: async () => {\n const { ProtectedCreatePage } = await import('./pages/Webhooks/CreatePage');\n\n return {\n Component: ProtectedCreatePage,\n };\n },\n path: 'webhooks/create',\n },\n {\n lazy: async () => {\n const { ProtectedEditPage } = await import('./pages/Webhooks/EditPage');\n\n return {\n Component: ProtectedEditPage,\n };\n },\n path: 'webhooks/:id',\n },\n {\n lazy: async () => {\n const { ProtectedListPage } = await import('./pages/Webhooks/ListPage');\n\n return {\n Component: ProtectedListPage,\n };\n },\n path: 'webhooks',\n },\n {\n lazy: async () => {\n const { ProtectedListView } = await import('./pages/ApiTokens/ListView');\n\n return {\n Component: ProtectedListView,\n };\n },\n path: 'api-tokens',\n },\n {\n lazy: async () => {\n const { ProtectedCreateView } = await import('./pages/ApiTokens/CreateView');\n\n return {\n Component: ProtectedCreateView,\n };\n },\n path: 'api-tokens/create',\n },\n {\n lazy: async () => {\n const { ProtectedEditView } = await import('./pages/ApiTokens/EditView/EditViewPage');\n\n return {\n Component: ProtectedEditView,\n };\n },\n path: 'api-tokens/:id',\n },\n {\n lazy: async () => {\n const { ProtectedCreateView } = await import('./pages/TransferTokens/CreateView');\n\n return {\n Component: ProtectedCreateView,\n };\n },\n path: 'transfer-tokens/create',\n },\n {\n lazy: async () => {\n const { ProtectedListView } = await import('./pages/TransferTokens/ListView');\n\n return {\n Component: ProtectedListView,\n };\n },\n path: 'transfer-tokens',\n },\n {\n lazy: async () => {\n const { ProtectedEditView } = await import('./pages/TransferTokens/EditView');\n\n return {\n Component: ProtectedEditView,\n };\n },\n path: 'transfer-tokens/:id',\n },\n {\n lazy: async () => {\n const { PurchaseAuditLogs } = await import('./pages/PurchaseAuditLogs');\n\n return {\n Component: PurchaseAuditLogs,\n };\n },\n path: 'purchase-audit-logs',\n },\n {\n lazy: async () => {\n const { PurchaseReviewWorkflows } = await import('./pages/PurchaseReviewWorkflows');\n\n return {\n Component: PurchaseReviewWorkflows,\n };\n },\n path: 'purchase-review-workflows',\n },\n {\n lazy: async () => {\n const { PurchaseSingleSignOn } = await import('./pages/PurchaseSingleSignOn');\n\n return {\n Component: PurchaseSingleSignOn,\n };\n },\n path: 'purchase-single-sign-on',\n },\n];\n","export const languageNativeNames = {\n ar: 'العربية',\n ca: 'Català',\n cs: 'Čeština',\n de: 'Deutsch',\n dk: 'Dansk',\n en: 'English',\n es: 'Español',\n eu: 'Euskara',\n fr: 'Français',\n gu: 'Gujarati',\n he: 'עברית',\n hu: 'Magyar',\n id: 'Indonesian',\n it: 'Italiano',\n ja: '日本語',\n ko: '한국어',\n ml: 'Malayalam',\n ms: 'Melayu',\n nl: 'Nederlands',\n no: 'Norwegian',\n pl: 'Polski',\n 'pt-BR': 'Português (Brasil)',\n pt: 'Português (Portugal)',\n ru: 'Русский',\n sk: 'Slovenčina',\n sv: 'Swedish',\n th: 'ไทย',\n tr: 'Türkçe',\n uk: 'Українська',\n vi: 'Tiếng Việt',\n 'zh-Hans': '中文 (简体)',\n zh: '中文 (繁體)',\n sa: 'संस्कृत',\n hi: 'हिन्दी',\n} as const;\n","import * as React from 'react';\n\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { Provider } from 'react-redux';\nimport { RouterProvider, createBrowserRouter } from 'react-router-dom';\nimport { DefaultTheme } from 'styled-components';\n\nimport { ADMIN_PERMISSIONS_EE, getEERoutes as getBaseEERoutes } from '../../ee/admin/src/constants';\nimport { getEERoutes as getSettingsEERoutes } from '../../ee/admin/src/pages/SettingsPage/constants';\n\nimport { App } from './App';\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { ErrorElement } from './components/ErrorElement';\nimport {\n INJECTION_ZONES,\n InjectionZoneBlock,\n InjectionZoneComponent,\n InjectionZoneContainer,\n InjectionZoneModule,\n InjectionZones,\n} from './components/InjectionZone';\nimport { LanguageProvider } from './components/LanguageProvider';\nimport { Page } from './components/PageHelpers';\nimport { Theme } from './components/Theme';\nimport { ADMIN_PERMISSIONS_CE, HOOKS } from './constants';\nimport { routes as cmRoutes } from './content-manager/router';\nimport { ContentManagerPlugin } from './core/apis/content-manager';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { RootState, Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { NotFoundPage } from './pages/NotFoundPage';\nimport { ROUTES_CE } from './pages/Settings/constants';\nimport { THEME_LOCAL_STORAGE_KEY, LANGUAGE_LOCAL_STORAGE_KEY, ThemeName } from './reducer';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nimport type { Permission } from './features/Auth';\nimport type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n config?: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, Record<string, string>>;\n tutorials?: boolean;\n };\n}\n\ninterface MenuItem {\n to: string;\n icon: React.ElementType;\n intlLabel: MessageDescriptor & { values?: Record<string, PrimitiveType> };\n permissions: Permission[];\n notificationsCount?: number;\n Component: React.LazyExoticComponent<React.ComponentType>;\n exact?: boolean;\n lockIcon?: boolean;\n}\n\ninterface StrapiAppSettingLink extends Omit<MenuItem, 'icon' | 'notificationCount'> {\n id: string;\n}\n\ninterface StrapiAppPlugin {\n bootstrap: (\n args: Pick<\n StrapiApp,\n | 'addSettingsLink'\n | 'addSettingsLinks'\n | 'getPlugin'\n | 'injectContentManagerComponent'\n | 'injectAdminComponent'\n | 'registerHook'\n >\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads: (args: {\n locales: string[];\n }) => Promise<{ data: Record<string, string>; locale: string }[]>;\n}\n\ninterface UnloadedSettingsLink extends Omit<StrapiAppSettingLink, 'Component'> {\n Component: () => Promise<{ default: React.ComponentType }>;\n}\n\ninterface Component {\n name: string;\n Component: React.ComponentType;\n}\n\ninterface Field {\n type: string;\n Component: React.ComponentType;\n}\n\ninterface Library {\n fields: Record<Field['type'], Field['Component']>;\n components: Record<Component['name'], Component['Component']>;\n}\n\ninterface StrapiAppSetting {\n id: string;\n intlLabel: MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n };\n links: StrapiAppSettingLink[];\n}\n\nclass StrapiApp {\n appPlugins: Record<string, StrapiAppPlugin>;\n plugins: Record<string, Plugin> = {};\n hooksDict: Record<string, ReturnType<typeof createHook>> = {};\n\n admin = {\n injectionZones: INJECTION_ZONES,\n };\n\n translations: StrapiApp['configurations']['translations'] = {};\n\n /**\n * MENU API\n */\n menu: MenuItem[] = [];\n settings: Record<string, StrapiAppSetting> = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n\n configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n\n /**\n * APIs\n */\n private contentManager = new ContentManagerPlugin();\n library: Library = {\n components: {},\n fields: {},\n };\n middlewares: Array<() => Middleware<object, RootState>> = [];\n reducers: ReducersMapObject = {};\n customFields = new CustomFields();\n\n constructor({ config, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.appPlugins = appPlugins || {};\n\n this.createCustomConfigurations(config ?? {});\n\n this.registerPlugin(this.contentManager.config);\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((comp) => {\n invariant(comp.Component, 'A Component must be provided');\n invariant(comp.name, 'A type must be provided');\n\n this.library.components[comp.name] = comp.Component;\n });\n } else {\n invariant(components.Component, 'A Component must be provided');\n invariant(components.name, 'A type must be provided');\n\n this.library.components[components.name] = components.Component;\n }\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => {\n invariant(field.Component, 'A Component must be provided');\n invariant(field.type, 'A type must be provided');\n\n this.library.fields[field.type] = field.Component;\n });\n } else {\n invariant(fields.Component, 'A Component must be provided');\n invariant(fields.type, 'A type must be provided');\n\n this.library.fields[fields.type] = fields.Component;\n }\n };\n\n addMenuLink = (\n link: Omit<MenuItem, 'Component'> & {\n Component: () => Promise<{ default: React.ComponentType }>;\n }\n ) => {\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n typeof link.to === 'string',\n `[${\n link.intlLabel.defaultMessage\n }]: Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage should be defined`\n );\n invariant(\n link.Component && typeof link.Component === 'function',\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise that returns a default component. Please use: \\`Component: () => import(path)\\` instead.`\n );\n invariant(\n link.icon && typeof link.icon === 'function',\n `[${link.intlLabel.defaultMessage}]: link.Icon should be a valid React Component`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(`\n [${link.intlLabel.defaultMessage}]: [deprecated] addMenuLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". This will be removed\n in the future. Please use: \\`Component: () => import(path)\\` ensuring you return a default export instead.\n `);\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your menu link is an absolute path, it should be relative to the root of the application. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n this.menu.push({\n ...link,\n Component: React.lazy(async () => {\n const mod = await link.Component();\n\n if ('default' in mod) {\n return mod;\n } else {\n return { default: mod };\n }\n }),\n });\n };\n\n addMiddlewares = (middlewares: StrapiApp['middlewares']) => {\n middlewares.forEach((middleware) => {\n this.middlewares.push(middleware);\n });\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n /**\n * TODO: when we upgrade to redux-toolkit@2 and we can also dynamically add middleware,\n * we'll deprecate these two APIs in favour of their hook counterparts.\n */\n Object.entries(reducers).forEach(([name, reducer]) => {\n this.reducers[name] = reducer;\n });\n };\n\n addSettingsLink = (sectionId: keyof StrapiApp['settings'], link: UnloadedSettingsLink) => {\n invariant(this.settings[sectionId], 'The section does not exist');\n\n invariant(link.id, `[${link.intlLabel.defaultMessage}]: link.id should be defined`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `[${link.intlLabel.defaultMessage}]: link.intlLabel.id & link.intlLabel.defaultMessage`\n );\n invariant(link.to, `[${link.intlLabel.defaultMessage}]: link.to should be defined`);\n invariant(\n link.Component && typeof link.Component === 'function',\n `[${link.intlLabel.defaultMessage}]: link.Component must be a function returning a Promise. Please use: \\`Component: () => import(path)\\` instead.`\n );\n\n if (\n link.Component &&\n typeof link.Component === 'function' &&\n // @ts-expect-error – shh\n link.Component[Symbol.toStringTag] === 'AsyncFunction'\n ) {\n console.warn(`\n [${link.intlLabel.defaultMessage}]: [deprecated] addSettingsLink() was called with an async Component from the plugin \"${link.intlLabel.defaultMessage}\". This will be removed\n in the future. Please use: \\`Component: () => import(path)\\` ensuring you return a default export instead.\n `);\n }\n\n if (link.to.startsWith('/')) {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link is an absolute path. It should be relative to \\`/settings\\`. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.slice(1);\n }\n\n if (link.to.split('/')[0] === 'settings') {\n console.warn(\n `[${link.intlLabel.defaultMessage}]: the \\`to\\` property of your settings link has \\`settings\\` as the first part of it's path. It should be relative to \\`settings\\` and therefore, not include it. This has been corrected for you but will be removed in a future version of Strapi.`\n );\n\n link.to = link.to.split('/').slice(1).join('/');\n }\n\n this.settings[sectionId].links.push({\n ...link,\n Component: React.lazy(async () => {\n const mod = await link.Component();\n\n if ('default' in mod) {\n return mod;\n } else {\n return { default: mod };\n }\n }),\n });\n };\n\n addSettingsLinks = (\n sectionId: Parameters<typeof this.addSettingsLink>[0],\n links: UnloadedSettingsLink[]\n ) => {\n invariant(this.settings[sectionId], 'The section does not exist');\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n links.forEach((link) => {\n this.addSettingsLink(sectionId, link);\n });\n };\n\n async bootstrap(customBootstrap?: unknown) {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n injectContentManagerComponent: this.injectContentManagerComponent,\n injectAdminComponent: this.injectAdminComponent,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(customBootstrap)) {\n customBootstrap({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n injectContentManagerComponent: this.injectContentManagerComponent,\n injectAdminComponent: this.injectAdminComponent,\n registerHook: this.registerHook,\n });\n }\n }\n\n createCustomConfigurations = (customConfig: NonNullable<StrapiAppConstructorArgs['config']>) => {\n if (customConfig.locales) {\n this.configurations.locales = [\n 'en',\n ...(customConfig.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (customConfig.auth?.logo) {\n this.configurations.authLogo = customConfig.auth.logo;\n }\n\n if (customConfig.menu?.logo) {\n this.configurations.menuLogo = customConfig.menu.logo;\n }\n\n if (customConfig.head?.favicon) {\n this.configurations.head.favicon = customConfig.head.favicon;\n }\n\n if (customConfig.theme) {\n const darkTheme = customConfig.theme.dark;\n const lightTheme = customConfig.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`\n );\n merge(this.configurations.themes.light, customConfig.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (customConfig.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = customConfig.notifications.releases;\n }\n\n if (customConfig.tutorials !== undefined) {\n this.configurations.tutorials = customConfig.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n createSettingSection = (section: StrapiAppSetting, links: UnloadedSettingsLink[]) => {\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n links.forEach((link) => {\n this.addSettingsLink(section.id, link);\n });\n };\n\n getAdminInjectedComponents = (\n moduleName: InjectionZoneModule,\n containerName: InjectionZoneContainer,\n blockName: InjectionZoneBlock\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => this.plugins[pluginId];\n\n async register() {\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n }\n\n injectContentManagerComponent = <TContainerName extends keyof InjectionZones['contentManager']>(\n containerName: TContainerName,\n blockName: keyof InjectionZones['contentManager'][TContainerName],\n component: InjectionZoneComponent\n ) => {\n invariant(\n this.admin.injectionZones.contentManager[containerName]?.[blockName],\n `The ${containerName} ${String(blockName)} zone is not defined in the content manager`\n );\n invariant(component, 'A Component must be provided');\n\n if (containerName === 'editView' && blockName === 'right-links') {\n console.warn(\n `Injecting components into editView.right-links is deprecated. Please use the \\`addEditViewSidePanel\\` API instead.`\n );\n }\n\n // @ts-expect-error – we've alredy checked above that the block exists.\n this.admin.injectionZones.contentManager[containerName][blockName].push(component);\n };\n\n injectAdminComponent = <TContainerName extends keyof InjectionZones['admin']>(\n containerName: TContainerName,\n blockName: keyof InjectionZones['admin'][TContainerName],\n component: InjectionZoneComponent\n ) => {\n invariant(\n this.admin.injectionZones.admin[containerName]?.[blockName],\n `The ${containerName} ${String(blockName)} zone is not defined in the admin`\n );\n invariant(component, 'A Component must be provided');\n\n // @ts-expect-error – we've alredy checked above that the block exists.\n this.admin.injectionZones.admin[containerName][blockName].push(component);\n };\n\n async loadAdminTrads() {\n const adminLocales = await Promise.all(\n this.configurations.locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: null, locale };\n }\n })\n );\n\n return adminLocales.reduce<{ [locale: string]: Record<string, string> }>((acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n }, {});\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n */\n async loadTrads(customTranslations: Record<string, Record<string, string>> = {}) {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n type Translation = Awaited<ReturnType<StrapiAppPlugin['registerTrads']>>[number];\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(customTranslations[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = <T,>(name: string, initialValue: T, store?: Store) => {\n return this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n const locale = (localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) ||\n 'en') as keyof typeof localeNames;\n\n const store = configureStore(\n {\n admin_app: {\n permissions: merge({}, ADMIN_PERMISSIONS_CE, ADMIN_PERMISSIONS_EE),\n theme: {\n availableThemes: [],\n currentTheme: (localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system') as ThemeName,\n },\n language: {\n locale: localeNames[locale] ? locale : 'en',\n localeNames,\n },\n },\n },\n this.middlewares,\n this.reducers\n ) as Store;\n\n const settingsRoutes = [...getSettingsEERoutes(), ...ROUTES_CE].filter(\n (route, index, refArray) => refArray.findIndex((obj) => obj.path === route.path) === index\n );\n\n const router = createBrowserRouter(\n [\n {\n path: '/*',\n errorElement: (\n <Provider store={store}>\n <LanguageProvider messages={this.configurations.translations}>\n <Theme themes={this.configurations.themes}>\n <ErrorElement />\n </Theme>\n </LanguageProvider>\n </Provider>\n ),\n element: <App strapi={this} store={store} />,\n children: [\n {\n path: 'usecase',\n lazy: async () => {\n const { PrivateUseCasePage } = await import('./pages/UseCasePage');\n\n return {\n Component: PrivateUseCasePage,\n };\n },\n },\n {\n path: 'auth/:authType',\n element: <AuthPage />,\n },\n {\n path: '/*',\n lazy: async () => {\n const { PrivateAdminLayout } = await import('./layouts/AuthenticatedLayout');\n\n return {\n Component: PrivateAdminLayout,\n };\n },\n children: [\n {\n index: true,\n lazy: async () => {\n const { HomePage } = await import('./pages/HomePage');\n\n return {\n Component: HomePage,\n };\n },\n },\n {\n path: 'me',\n lazy: async () => {\n const { ProfilePage } = await import('./pages/ProfilePage');\n\n return {\n Component: ProfilePage,\n };\n },\n },\n {\n path: 'list-plugins',\n lazy: async () => {\n const { ProtectedInstalledPluginsPage } = await import(\n './pages/InstalledPluginsPage'\n );\n\n return {\n Component: ProtectedInstalledPluginsPage,\n };\n },\n },\n {\n path: 'marketplace',\n lazy: async () => {\n const { ProtectedMarketplacePage } = await import(\n './pages/Marketplace/MarketplacePage'\n );\n\n return {\n Component: ProtectedMarketplacePage,\n };\n },\n },\n {\n path: 'settings/*',\n lazy: async () => {\n const { Layout } = await import('./pages/Settings/Layout');\n\n return {\n Component: Layout,\n };\n },\n children: [\n {\n path: 'application-infos',\n lazy: async () => {\n const { ApplicationInfoPage } = await import(\n './pages/Settings/pages/ApplicationInfo/ApplicationInfoPage'\n );\n\n return {\n Component: ApplicationInfoPage,\n };\n },\n },\n ...Object.values(this.settings).flatMap(({ links }) =>\n links.map(({ to, Component }) => ({\n path: `${to}/*`,\n element: (\n <React.Suspense fallback={<Page.Loading />}>\n <Component />\n </React.Suspense>\n ),\n }))\n ),\n ...settingsRoutes,\n ],\n },\n ...this.menu.map(({ to, Component }) => ({\n path: `${to}/*`,\n element: (\n <React.Suspense fallback={<Page.Loading />}>\n <Component />\n </React.Suspense>\n ),\n })),\n ...getBaseEERoutes(),\n ...cmRoutes,\n ],\n },\n {\n path: '*',\n element: <NotFoundPage />,\n },\n ],\n },\n ],\n {\n basename: getBasename(),\n }\n );\n\n return <RouterProvider router={router} />;\n }\n}\n\nexport { StrapiApp };\nexport type {\n StrapiAppPlugin,\n StrapiAppSettingLink,\n StrapiAppSetting,\n MenuItem,\n StrapiAppConstructorArgs,\n};\n","/* eslint-disable no-undef */\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\nimport { getFetchClient } from './utils/getFetchClient';\n\nimport type { Modules } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: {\n bootstrap?: (app: StrapiApp) => Promise<void> | void;\n config?: StrapiAppConstructorArgs['config'];\n };\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: Modules.Features.FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: process.env.STRAPI_ADMIN_BACKEND_URL || window.location.origin,\n isEE: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',\n future: {\n isEnabled: (name: keyof NonNullable<Modules.Features.FeaturesConfig['future']>) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n config: customisations?.config,\n appPlugins: plugins,\n });\n\n await app.register();\n await app.bootstrap(customisations?.bootstrap);\n await app.loadTrads(customisations?.config?.translations);\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n\n if (typeof import.meta.hot?.accept === 'function') {\n import.meta.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n","import * as React from 'react';\n\nimport {\n Button,\n ButtonProps,\n Dialog,\n DialogBody,\n DialogFooter,\n Flex,\n Typography,\n DialogBodyProps,\n DialogProps,\n DialogFooterProps,\n} from '@strapi/design-system';\nimport { ExclamationMarkCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface ConfirmDialogProps\n extends Omit<DialogProps, 'title'>,\n Partial<Pick<DialogProps, 'title'>>,\n Pick<ButtonProps, 'variant'>,\n Partial<DialogFooterProps>,\n Pick<DialogBodyProps, 'icon'> {\n onConfirm?: () => Promise<void> | void;\n}\n\n/**\n * @beta\n * @public\n * @description A simple confirm dialog that out of the box can be used to confirm an action.\n * The component can additionally be customised if required e.g. the footer actions can be\n * completely replaced, but cannot be removed. Passing a string as the children prop will render\n * the string as the body of the dialog. If you need more control over the body, you can pass a\n * custom component as the children prop.\n * @example\n * ```tsx\n * const DeleteAction = ({ id }) => {\n * const [isOpen, setIsOpen] = React.useState(false);\n *\n * const [delete] = useDeleteMutation()\n * const handleConfirm = async () => {\n * await delete(id)\n * }\n *\n * return (\n * <>\n * <Button onClick={() => setIsOpen(true)}>Delete</Button>\n * <ConfirmDialog onConfirm={handleConfirm} onClose={() => setIsOpen(false)} isOpen={isOpen} />\n * </>\n * )\n * }\n * ```\n */\nconst ConfirmDialog = ({\n children,\n icon = <ExclamationMarkCircle />,\n onClose,\n onConfirm,\n variant = 'danger',\n startAction,\n endAction,\n ...props\n}: ConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n const [isConfirming, setIsConfirming] = React.useState(false);\n\n const content =\n children ||\n formatMessage({\n id: 'app.confirm.body',\n defaultMessage: 'Are you sure?',\n });\n\n const handleConfirm = async () => {\n if (!onConfirm) {\n return;\n }\n\n try {\n setIsConfirming(true);\n await onConfirm();\n onClose();\n } finally {\n setIsConfirming(false);\n }\n };\n\n return (\n <Dialog\n title={formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n onClose={onClose}\n {...props}\n >\n <DialogBody icon={icon}>\n {typeof content === 'string' ? <DefaultBodyWrapper>{content}</DefaultBodyWrapper> : content}\n </DialogBody>\n <DialogFooter\n startAction={\n startAction || (\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n )\n }\n endAction={\n endAction || (\n <Button onClick={handleConfirm} variant={variant} loading={isConfirming}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n )\n }\n />\n </Dialog>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DefaultBodyWrapper\n * -----------------------------------------------------------------------------------------------*/\ninterface DefaultBodyWrapperProps {\n children: React.ReactNode;\n}\n\nconst DefaultBodyWrapper = ({ children }: DefaultBodyWrapperProps) => {\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <Typography variant=\"omega\">{children}</Typography>\n </Flex>\n </Flex>\n );\n};\n\nexport { ConfirmDialog };\nexport type { ConfirmDialogProps };\n","/* eslint-disable import/export */\nimport * as React from 'react';\n\nimport { Flex, SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport {\n Dots,\n NextLink,\n PageLink,\n Pagination as PaginationImpl,\n PreviousLink,\n} from '@strapi/design-system/v2';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\nimport type { Pagination as PaginationApi } from '../../../shared/contracts/shared';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\ninterface PaginationContextValue {\n /**\n * @description the complete query object, this could include query params\n * injected by other plugins, if you're navigating to a different page you\n * should ensure these are still passed.\n */\n currentQuery?: object;\n pageCount: string;\n pageSize: string;\n page: string;\n setPageSize: (pageSize: string) => void;\n total: NonNullable<RootProps['total']>;\n}\n\nconst [PaginationProvider, usePagination] = createContext<PaginationContextValue>('Pagination');\n\ninterface RootProps {\n children: React.ReactNode;\n /**\n * @default 0\n * @description the total number of pages\n * that exist in the dataset.\n */\n pageCount?: PaginationApi['pageCount'];\n /**\n * @default 1\n * @description the initial page number.\n */\n defaultPage?: PaginationApi['page'];\n /**\n * @default 10\n * @description the initial number of items to display\n */\n defaultPageSize?: PaginationApi['pageSize'];\n /**\n * @description a callback that is called when the page size changes.\n */\n onPageSizeChange?: (pageSize: string) => void;\n /**\n * @default 0\n * @description the total number of items in the dataset.\n */\n total?: PaginationApi['total'];\n}\n\n/**\n * @description The root component for the composable pagination component.\n * It's advised to spread the entire pagination option object into this component.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * return (\n * <Pagination.Root {...response.pagination}>\n * <Pagination.PageSize />\n * <Pagination.Links />\n * </Pagination.Root>\n * );\n * };\n * ```\n */\nconst Root = React.forwardRef<HTMLDivElement, RootProps>(\n (\n { children, defaultPageSize = 10, pageCount = 0, defaultPage = 1, onPageSizeChange, total = 0 },\n forwardedRef\n ) => {\n const [{ query }, setQuery] = useQueryParams<Pick<PaginationContextValue, 'page' | 'pageSize'>>(\n {\n pageSize: defaultPageSize.toString(),\n page: defaultPage.toString(),\n }\n );\n\n const setPageSize = (pageSize: string) => {\n setQuery({ pageSize, page: '1' });\n\n if (onPageSizeChange) {\n onPageSizeChange(pageSize);\n }\n };\n\n return (\n <Flex ref={forwardedRef} paddingTop={4} alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PaginationProvider\n currentQuery={query}\n page={query.page}\n pageSize={query.pageSize}\n pageCount={pageCount.toString()}\n setPageSize={setPageSize}\n total={total}\n >\n {children}\n </PaginationProvider>\n </Flex>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * PageSize\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description The page size component is responsible for rendering the select input that allows\n * the user to change the number of items displayed per page.\n * If the total number of items is less than the minimum option, this component will not render.\n */\nconst PageSize = ({ options = ['10', '20', '50', '100'] }: Pagination.PageSizeProps) => {\n const { formatMessage } = useIntl();\n\n const pageSize = usePagination('PageSize', (state) => state.pageSize);\n const totalCount = usePagination('PageSize', (state) => state.total);\n const setPageSize = usePagination('PageSize', (state) => state.setPageSize);\n\n const handleChange = (value: string) => {\n setPageSize(value);\n };\n\n const minimumOption = parseInt(options[0], 10);\n\n if (minimumOption >= totalCount) {\n return null;\n }\n\n return (\n <Flex gap={2}>\n <SingleSelect\n size=\"S\"\n aria-label={formatMessage({\n id: 'components.PageFooter.select',\n defaultMessage: 'Entries per page',\n })}\n // @ts-expect-error from the DS V2 this won't be needed because we're only returning strings.\n onChange={handleChange}\n value={pageSize}\n >\n {options.map((option) => (\n <SingleSelectOption key={option} value={option}>\n {option}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Typography textColor=\"neutral600\" as=\"span\">\n {formatMessage({\n id: 'components.PageFooter.select',\n defaultMessage: 'Entries per page',\n })}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Links\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * The component works as follows\n * `1` , 2, 3, ... 10\n * 1, `2`, 3, ... 10\n * 1, 2, `3`, 4, ... 10\n * 1, 2, 3, `4`, 5, ... 10\n * 1, ..,4, `5`, 6, ... 10\n *\n * 1, ...., 8, 9, `10`\n * 1, ...., 8, `9`, 10\n * 1, ...., 7, `8`, 9, 10\n * 1, ... 6, `7`, 8, 9, 10\n */\n\n/**\n * @description The links component is responsible for rendering the pagination links.\n * If the total number of pages is less than or equal to 1, this component will not render.\n */\nconst Links = ({ boundaryCount = 1, siblingCount = 1 }: Pagination.LinksProps) => {\n const { formatMessage } = useIntl();\n\n const query = usePagination('Links', (state) => state.currentQuery);\n const currentPage = usePagination('Links', (state) => state.page);\n const totalPages = usePagination('Links', (state) => state.pageCount);\n\n const pageCount = parseInt(totalPages, 10);\n const activePage = parseInt(currentPage, 10);\n\n const range = (start: number, end: number) => {\n const length = end - start + 1;\n\n return Array.from({ length }, (_, i) => start + i);\n };\n\n const startPages = range(1, Math.min(boundaryCount, pageCount));\n const endPages = range(Math.max(pageCount - boundaryCount + 1, boundaryCount + 1), pageCount);\n\n const siblingsStart = Math.max(\n Math.min(\n // Natural start\n activePage - siblingCount,\n // Lower boundary when page is high\n pageCount - boundaryCount - siblingCount * 2 - 1\n ),\n // Greater than startPages\n boundaryCount + 2\n );\n\n const siblingsEnd = Math.min(\n Math.max(\n // Natural end\n activePage + siblingCount,\n // Upper boundary when page is low\n boundaryCount + siblingCount * 2 + 2\n ),\n // Less than endPages\n endPages.length > 0 ? endPages[0] - 2 : pageCount - 1\n );\n\n const items = [\n ...startPages,\n\n // Start ellipsis\n // eslint-disable-next-line no-nested-ternary\n ...(siblingsStart > boundaryCount + 2\n ? ['start-ellipsis']\n : boundaryCount + 1 < pageCount - boundaryCount\n ? [boundaryCount + 1]\n : []),\n\n // Sibling pages\n ...range(siblingsStart, siblingsEnd),\n\n // End ellipsis\n // eslint-disable-next-line no-nested-ternary\n ...(siblingsEnd < pageCount - boundaryCount - 1\n ? ['end-ellipsis']\n : pageCount - boundaryCount > boundaryCount\n ? [pageCount - boundaryCount]\n : []),\n\n ...endPages,\n ];\n\n if (pageCount <= 1) {\n return null;\n }\n\n return (\n <PaginationImpl activePage={activePage} pageCount={pageCount}>\n <PreviousLink\n as={Link}\n // @ts-expect-error – the `as` prop does not correctly infer the props of it's component\n to={{ search: stringify({ ...query, page: activePage - 1 }) }}\n >\n {formatMessage({\n id: 'components.pagination.go-to-previous',\n defaultMessage: 'Go to previous page',\n })}\n </PreviousLink>\n {items.map((item) => {\n if (typeof item === 'number') {\n return (\n <PageLink\n as={Link}\n active={item === activePage}\n key={item}\n number={item}\n // @ts-expect-error – the `as` prop does not correctly infer the props of it's component\n to={{ search: stringify({ ...query, page: item }) }}\n >\n {formatMessage(\n { id: 'components.pagination.go-to', defaultMessage: 'Go to page {page}' },\n { page: item }\n )}\n </PageLink>\n );\n }\n\n return <Dots key={item} />;\n })}\n\n <NextLink\n as={Link}\n // @ts-expect-error – the `as` prop does not correctly infer the props of it's component\n to={{ search: stringify({ ...query, page: activePage + 1 }) }}\n >\n {formatMessage({\n id: 'components.pagination.go-to-next',\n defaultMessage: 'Go to next page',\n })}\n </NextLink>\n </PaginationImpl>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Pagination = {\n Root,\n Links,\n PageSize,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Pagination {\n export interface Props extends RootProps {}\n\n export interface PageSizeProps {\n options?: string[];\n }\n\n export interface LinksProps {\n /**\n * @default 1\n * @description Number of always visible pages at the beginning and end.\n */\n boundaryCount?: number;\n /**\n * @default 1\n * @description Number of always visible pages before and after the current page.\n */\n siblingCount?: number;\n }\n}\n\nexport { Pagination };\n","import * as React from 'react';\n\nimport { Icon, IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search as SearchIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { TrackingEvent, useTracking } from '../features/Tracking';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\ninterface SearchInputProps {\n disabled?: boolean;\n label: string;\n placeholder?: string;\n trackedEvent?: TrackingEvent['name'] | null;\n trackedEventDetails?: TrackingEvent['properties'];\n}\n\nconst SearchInput = ({\n disabled,\n label,\n placeholder,\n trackedEvent,\n trackedEventDetails,\n}: SearchInputProps) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const iconButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const [{ query }, setQuery] = useQueryParams<{ _q: string; page?: number }>();\n\n const [value, setValue] = React.useState(query?._q || '');\n const [isOpen, setIsOpen] = React.useState(!!value);\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const handleToggle = () => setIsOpen((prev) => !prev);\n\n React.useLayoutEffect(() => {\n if (isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isOpen]);\n\n const handleClear = () => {\n setValue('');\n setQuery({ _q: '' }, 'remove');\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n // Ensure value is a string\n if (value) {\n if (trackedEvent) {\n trackUsage(trackedEvent, trackedEventDetails);\n }\n setQuery({ _q: encodeURIComponent(value), page: 1 });\n } else {\n handleToggle();\n setQuery({ _q: '' }, 'remove');\n }\n };\n\n if (isOpen) {\n return (\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n ref={inputRef}\n name=\"search\"\n onChange={(e) => setValue(e.target.value)}\n value={value}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onClear={handleClear}\n size=\"S\"\n placeholder={placeholder}\n >\n {label}\n </Searchbar>\n </SearchForm>\n );\n }\n\n return (\n <IconButton\n ref={iconButtonRef}\n disabled={disabled}\n icon={<Icon as={SearchIcon} color=\"neutral800\" />}\n label={formatMessage({ id: 'global.search', defaultMessage: 'Search' })}\n onClick={handleToggle}\n />\n );\n};\n\nexport { SearchInput };\nexport type { SearchInputProps };\n","import * as React from 'react';\n\nimport { useCallbackRef } from '@strapi/design-system';\n\ntype UseControllableStateParams<T> = {\n prop?: T | undefined;\n defaultProp?: T | undefined;\n onChange?: (state: T) => void;\n};\n\ntype SetStateFn<T> = (prevState?: T) => T;\n\nfunction useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n}: UseControllableStateParams<T>) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n\n const setValue: React.Dispatch<React.SetStateAction<T | undefined>> = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const setter = nextValue as SetStateFn<T>;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value as T);\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, handleChange]\n );\n\n return [value, setValue] as const;\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>) {\n const uncontrolledState = React.useState<T | undefined>(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React.useRef(value);\n const handleChange = useCallbackRef(onChange);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n handleChange(value as T);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef, handleChange]);\n\n return uncontrolledState;\n}\n\nexport { useControllableState };\n","/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n IconButton,\n Thead,\n Tr,\n RawTrProps,\n BaseCheckbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CarretDown, EmptyDocuments } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n [key: string]: any;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\nconst [TableProvider, useTable] = createContext<TableContextValue<any, any>>('Table');\n\ninterface RootProps<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n > {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = [],\n isLoading = false,\n onSelectedRowsChange,\n rows = [],\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <TableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </TableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{ sort?: `${string}:${'ASC' | 'DESC'}` }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n { id: 'components.TableHeader.sort', defaultMessage: 'Sort on {label}' },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery({\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n });\n }\n };\n\n return (\n <Th\n action={\n isSorted &&\n sortable && (\n <IconButton\n label={sortLabel}\n onClick={handleClickSort}\n icon={<SortIcon isUp={sortOrder === 'ASC'} />}\n borderStyle=\"none\"\n />\n )\n }\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Typography\n textColor=\"neutral600\"\n as={!isSorted && sortable ? 'button' : 'span'}\n onClick={handleClickSort}\n variant=\"sigma\"\n >\n {label}\n </Typography>\n </Tooltip>\n </Th>\n );\n};\n\ninterface SortIconProps {\n isUp: boolean;\n}\n\nconst SortIcon = styled(CarretDown)<SortIconProps>`\n transform: ${({ isUp }) => `rotate(${isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={areAllEntriesSelected}\n indeterminate={isIndeterminate}\n onChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"10rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = Td;\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n selectRow(rows.find((row) => row.id === id));\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <BaseCheckbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isChecked}\n onChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n","import { useEffect } from 'react';\n\nimport { Reducer } from '@reduxjs/toolkit';\n\nimport { useTypedStore } from '../core/store/hooks';\n\n/**\n * @public\n * @description Inject a new reducer into the global redux-store.\n * @example\n * ```tsx\n * import { reducer } from './local-store';\n *\n * const MyPlugin = () => {\n * useInjectReducer(\"plugin\", reducer);\n * }\n * ```\n */\nexport function useInjectReducer(namespace: string, reducer: Reducer) {\n const store = useTypedStore();\n\n useEffect(() => {\n store.injectReducer(namespace, reducer);\n }, [store, namespace, reducer]);\n}\n","import * as React from 'react';\n\nimport { getFetchClient } from '../utils/getFetchClient';\n\n/**\n * @public\n * @description This is an abstraction around the axios instance exposed by a hook. It provides a simple interface to handle API calls\n * to the Strapi backend.\n * It handles request cancellations inside the hook with an {@link https://axios-http.com/docs/cancellation} AbortController.\n * This is typically triggered when the component is unmounted so all the requests that it is currently making are aborted.\n * The expected URL style includes either a protocol (such as HTTP or HTTPS) or a relative URL. The URLs with domain and path but not protocol are not allowed (ex: `www.example.com`).\n * @example\n * ```tsx\n * import * as React from 'react';\n * import { useFetchClient } from '@strapi/admin/admin';\n *\n * const MyComponent = () => {\n * const [items, setItems] = React.useState([]);\n * const { get } = useFetchClient();\n * const requestURL = \"/some-endpoint\";\n *\n * const handleGetData = async () => {\n * const { data } = await get(requestURL);\n * setItems(data.items);\n * };\n *\n * return (\n * <div>\n * <div>\n * {\n * items && items.map(item => <h2 key={item.uuid}>{item.name}</h2>))\n * }\n * </div>\n * </div>\n * );\n * };\n * ```\n * @see {@link https://axios-http.com/docs/instance} axios instance API.\n * @see {@link https://axios-http.com/docs/cancellation} AbortController.\n */\nconst useFetchClient = () => {\n const controller = React.useRef<AbortController | null>(null);\n\n if (controller.current === null) {\n controller.current = new AbortController();\n }\n\n React.useEffect(() => {\n return () => {\n controller.current!.abort();\n };\n }, []);\n\n return React.useMemo(\n () =>\n getFetchClient({\n signal: controller.current!.signal,\n }),\n []\n );\n};\n\nexport { useFetchClient };\n"],"names":["getEERoutes","createContext","useLocation","useNavigate","React","produce","useIntl","jsx","Link","NavLink","ArrowLeft","QueryClient","Provider","QueryClientProvider","AuthProvider","LanguageProvider","Theme","NotificationsProvider","StrapiAppProvider","TrackingProvider","GuidedTourProvider","ConfigurationProvider","jsxs","Suspense","Page","Helmet","LANGUAGE_LOCAL_STORAGE_KEY","Outlet","useCallback","useRouteError","Main","Flex","Icon","ExclamationMarkCircle","Typography","Button","Duplicate","styled","Alert","useStrapiApp","Fragment","useLoaderData","Navigate","lazy","useParams","COLLECTION_TYPES","SINGLE_TYPES","ProtectedEditViewPage","historyRoutes","adminApi","useDoc","useTypedSelector","useAPIErrorHandler","useNotification","useRBAC","useField","Field","Combobox","ComboboxOption","getDisplayName","useGetLicenseLimitsQuery","feature","Body","LinkButton","Root","ModalLayout","ModalBody","Box","IconButton","Cross","lightTheme","error","SingleSelect","Loader","id","themeColorName","SingleSelectOption","FieldHint","FieldError","History","useQueryParams","stringify","useTracking","useDeleteDocumentMutation","getTranslation","useDiscardDocumentMutation","usePublishDocumentMutation","useUpdateDocumentMutation","useUnpublishDocumentMutation","useCreateDocumentMutation","useAutoCloneDocumentMutation","useCloneDocumentMutation","useLazyGetDocumentQuery","action","Menu","More","VisuallyHidden","Dialog","DialogBody","DialogFooter","ModalHeader","useMatch","useDocumentRBAC","canPublish","canCreate","canUpdate","buildValidParams","useForm","modified","setSubmitting","isSubmitting","PUBLISHED_AT_ATTRIBUTE_NAME","isBaseQueryError","resetForm","Radio","CrossCircle","useMemo","throttle","cancelIdleCallback","requestIdleCallback","ids","isEqual","DocumentStatus","CREATED_BY_ATTRIBUTE_NAME","UPDATED_BY_ATTRIBUTE_NAME","RelativeTime","PUBLISHED_BY_ATTRIBUTE_NAME","UPDATED_AT_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","Cog","StyledPencil","Pencil","Trash","ChevronRight","canRead","prohibitedFields","invariant","appReducer","cmAppReducer","contentManagerApi","contentManagerReducers","combineReducers","configureStore","useCallbackRef","useConfiguration","useTypedDispatch","setLocale","yup","translatedErrors","useAuth","camelCase","Form","InputRenderer","useForgotPasswordMutation","useState","useEffect","useTheme","useAppInfo","Portal","Formik","FieldLabel","FieldInput","Textarea","useGuidedTour","useGetRegistrationInfoQuery","useRegisterAdminMutation","useRegisterUserMutation","omit","ValidationError","Grid","GridItem","useResetPasswordMutation","useInitQuery","Login","LoginCE","HeaderLayout","ContentLayout","EmptyStateLayout","ArrowRight","EmptyPictures","HOOKS","Logo","darkTheme","isFunction","merge","pick","ADMIN_PERMISSIONS_CE","THEME_LOCAL_STORAGE_KEY","getSettingsEERoutes","createBrowserRouter","getBaseEERoutes","cmRoutes","RouterProvider","getFetchClient","features","createRoot","PaginationImpl","PreviousLink","PageLink","Dots","NextLink","SearchForm","Searchbar","SearchIcon","value","DSTable","Thead","Tr","Th","Tooltip","CarretDown","BaseCheckbox","Tbody","Td","EmptyDocuments","useTypedStore"],"mappings":"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"}