@strapi/admin 5.0.0-rc.8 → 5.0.0

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 (388) hide show
  1. package/dist/admin/{AdminSeatInfo-E8azTFQY.js → AdminSeatInfo-8vtNB3ck.js} +4 -4
  2. package/dist/admin/AdminSeatInfo-8vtNB3ck.js.map +1 -0
  3. package/dist/admin/{AdminSeatInfo-Q_hUNC5B.mjs → AdminSeatInfo-qIgh5-QA.mjs} +5 -5
  4. package/dist/admin/AdminSeatInfo-qIgh5-QA.mjs.map +1 -0
  5. package/dist/admin/{ApplicationInfoPage-_QAWr13m.mjs → ApplicationInfoPage-AAIv_ZkF.mjs} +10 -10
  6. package/dist/admin/ApplicationInfoPage-AAIv_ZkF.mjs.map +1 -0
  7. package/dist/admin/{ApplicationInfoPage-DOljMjfU.js → ApplicationInfoPage-bkWa99An.js} +10 -10
  8. package/dist/admin/ApplicationInfoPage-bkWa99An.js.map +1 -0
  9. package/dist/admin/{AuthResponse-J8A48xdo.mjs → AuthResponse-HYXVuTDF.mjs} +2 -2
  10. package/dist/admin/{AuthResponse-J8A48xdo.mjs.map → AuthResponse-HYXVuTDF.mjs.map} +1 -1
  11. package/dist/admin/{AuthResponse-KlTDmm2i.js → AuthResponse-R8kR_yqS.js} +2 -2
  12. package/dist/admin/{AuthResponse-KlTDmm2i.js.map → AuthResponse-R8kR_yqS.js.map} +1 -1
  13. package/dist/admin/{AuthenticatedLayout-DhxlhqLg.mjs → AuthenticatedLayout-J22BBdYe.mjs} +69 -82
  14. package/dist/admin/AuthenticatedLayout-J22BBdYe.mjs.map +1 -0
  15. package/dist/admin/{AuthenticatedLayout-S2qRx5pp.js → AuthenticatedLayout-ZAXB7o93.js} +68 -81
  16. package/dist/admin/AuthenticatedLayout-ZAXB7o93.js.map +1 -0
  17. package/dist/admin/{CreateActionEE-Yfp4hs7a.mjs → CreateActionEE-X2nnG2dm.mjs} +2 -2
  18. package/dist/admin/{CreateActionEE-Yfp4hs7a.mjs.map → CreateActionEE-X2nnG2dm.mjs.map} +1 -1
  19. package/dist/admin/{CreatePage-czINWoI4.js → CreatePage-3V_sa8A4.js} +3 -3
  20. package/dist/admin/{CreatePage-czINWoI4.js.map → CreatePage-3V_sa8A4.js.map} +1 -1
  21. package/dist/admin/{CreatePage-4aSBZ-8M.mjs → CreatePage-5WzWwepG.mjs} +7 -7
  22. package/dist/admin/CreatePage-5WzWwepG.mjs.map +1 -0
  23. package/dist/admin/{CreatePage-5Lsxkk31.mjs → CreatePage-hEdR3uWK.mjs} +3 -3
  24. package/dist/admin/{CreatePage-5Lsxkk31.mjs.map → CreatePage-hEdR3uWK.mjs.map} +1 -1
  25. package/dist/admin/{CreatePage-HNRkTZwZ.js → CreatePage-zzbF8IhD.js} +6 -6
  26. package/dist/admin/CreatePage-zzbF8IhD.js.map +1 -0
  27. package/dist/admin/{CreateView-AXL3tH85.js → CreateView-5EC5Yv96.js} +3 -3
  28. package/dist/admin/{CreateView-AXL3tH85.js.map → CreateView-5EC5Yv96.js.map} +1 -1
  29. package/dist/admin/{CreateView-qzRvLGBC.mjs → CreateView-OjaERndy.mjs} +3 -3
  30. package/dist/admin/{CreateView-qzRvLGBC.mjs.map → CreateView-OjaERndy.mjs.map} +1 -1
  31. package/dist/admin/{CreateView-u0mACDyv.mjs → CreateView-S8gDQUCt.mjs} +3 -3
  32. package/dist/admin/{CreateView-u0mACDyv.mjs.map → CreateView-S8gDQUCt.mjs.map} +1 -1
  33. package/dist/admin/{CreateView-aIiiLy3C.js → CreateView-ZQEmP8-n.js} +3 -3
  34. package/dist/admin/{CreateView-aIiiLy3C.js.map → CreateView-ZQEmP8-n.js.map} +1 -1
  35. package/dist/admin/{EditPage-cMbU4NVE.mjs → EditPage-493L2-vV.mjs} +42 -29
  36. package/dist/admin/EditPage-493L2-vV.mjs.map +1 -0
  37. package/dist/admin/{EditPage-Qp1c1eXd.mjs → EditPage-7fMqo-c-.mjs} +9 -9
  38. package/dist/admin/EditPage-7fMqo-c-.mjs.map +1 -0
  39. package/dist/admin/{EditPage-RZcyUKwu.js → EditPage-8T9gBnnc.js} +40 -27
  40. package/dist/admin/EditPage-8T9gBnnc.js.map +1 -0
  41. package/dist/admin/{EditPage-BAq4SLUJ.js → EditPage-OFlfNGv0.js} +8 -8
  42. package/dist/admin/EditPage-OFlfNGv0.js.map +1 -0
  43. package/dist/admin/{EditPage-hHV9CNBD.mjs → EditPage-akxbKeqK.mjs} +26 -17
  44. package/dist/admin/EditPage-akxbKeqK.mjs.map +1 -0
  45. package/dist/admin/{EditPage-nJMUfPC_.js → EditPage-gJJgatNc.js} +25 -16
  46. package/dist/admin/EditPage-gJJgatNc.js.map +1 -0
  47. package/dist/admin/{EditView-CqQ7E0hw.js → EditView-ZJPPeal2.js} +9 -10
  48. package/dist/admin/EditView-ZJPPeal2.js.map +1 -0
  49. package/dist/admin/{EditView-cnGxE7oC.mjs → EditView-_QID3gT5.mjs} +11 -12
  50. package/dist/admin/EditView-_QID3gT5.mjs.map +1 -0
  51. package/dist/admin/{EditViewPage-uUDS6iky.js → EditViewPage-_wx5u6QJ.js} +76 -53
  52. package/dist/admin/EditViewPage-_wx5u6QJ.js.map +1 -0
  53. package/dist/admin/{EditViewPage-tTqJWPbg.mjs → EditViewPage-zkNmb1zg.mjs} +77 -54
  54. package/dist/admin/EditViewPage-zkNmb1zg.mjs.map +1 -0
  55. package/dist/admin/{EventsTable-MqaO8InG.js → EventsTable-31485Cwq.js} +2 -2
  56. package/dist/admin/{EventsTable-MqaO8InG.js.map → EventsTable-31485Cwq.js.map} +1 -1
  57. package/dist/admin/{EventsTable-bAm473aQ.mjs → EventsTable-_BT8dIHY.mjs} +2 -2
  58. package/dist/admin/{EventsTable-bAm473aQ.mjs.map → EventsTable-_BT8dIHY.mjs.map} +1 -1
  59. package/dist/admin/{HomePage-kxpv-2IT.mjs → HomePage-LenrY0bj.mjs} +11 -14
  60. package/dist/admin/HomePage-LenrY0bj.mjs.map +1 -0
  61. package/dist/admin/{HomePage-iOCLC8T5.mjs → HomePage-NdId9gqT.mjs} +3 -3
  62. package/dist/admin/{HomePage-iOCLC8T5.mjs.map → HomePage-NdId9gqT.mjs.map} +1 -1
  63. package/dist/admin/{HomePage-cSNwcjEI.js → HomePage-T2yVEfC3.js} +19 -22
  64. package/dist/admin/HomePage-T2yVEfC3.js.map +1 -0
  65. package/dist/admin/{HomePage-qHKQJ_vS.js → HomePage-yyizKL39.js} +3 -3
  66. package/dist/admin/{HomePage-qHKQJ_vS.js.map → HomePage-yyizKL39.js.map} +1 -1
  67. package/dist/admin/{InstalledPluginsPage-nryUCDD3.mjs → InstalledPlugins-Z_uS95dC.mjs} +9 -11
  68. package/dist/admin/InstalledPlugins-Z_uS95dC.mjs.map +1 -0
  69. package/dist/admin/{InstalledPluginsPage-Vj2K7uad.js → InstalledPlugins-spdwM8ub.js} +9 -11
  70. package/dist/admin/InstalledPlugins-spdwM8ub.js.map +1 -0
  71. package/dist/admin/{Layout-Z093DFKa.mjs → Layout-5lg6USuO.mjs} +5 -5
  72. package/dist/admin/{Layout-Z093DFKa.mjs.map → Layout-5lg6USuO.mjs.map} +1 -1
  73. package/dist/admin/{Layout-Y4dCGf7_.js → Layout-B3TQMQxb.js} +5 -5
  74. package/dist/admin/{Layout-Y4dCGf7_.js.map → Layout-B3TQMQxb.js.map} +1 -1
  75. package/dist/admin/{ListPage-3OjwvR-r.mjs → ListPage--B6TB-mt.mjs} +6 -6
  76. package/dist/admin/ListPage--B6TB-mt.mjs.map +1 -0
  77. package/dist/admin/{ListPage-eY08uWFn.js → ListPage-GRLtmRuy.js} +46 -28
  78. package/dist/admin/ListPage-GRLtmRuy.js.map +1 -0
  79. package/dist/admin/{ListPage-9Y5APon-.mjs → ListPage-Ggd99FLO.mjs} +5 -5
  80. package/dist/admin/{ListPage-9Y5APon-.mjs.map → ListPage-Ggd99FLO.mjs.map} +1 -1
  81. package/dist/admin/{ListPage-qr-mWRUO.js → ListPage-Hc3VZ9O3.js} +7 -7
  82. package/dist/admin/ListPage-Hc3VZ9O3.js.map +1 -0
  83. package/dist/admin/{ListPage-v8u0mb2U.mjs → ListPage-LIn0aEKt.mjs} +3 -3
  84. package/dist/admin/{ListPage-v8u0mb2U.mjs.map → ListPage-LIn0aEKt.mjs.map} +1 -1
  85. package/dist/admin/{ListPage-MQLTqMD4.js → ListPage-UEsKYDPH.js} +3 -3
  86. package/dist/admin/{ListPage-MQLTqMD4.js.map → ListPage-UEsKYDPH.js.map} +1 -1
  87. package/dist/admin/{ListPage-KvnBaksH.js → ListPage-Vf4xtn8w.js} +6 -6
  88. package/dist/admin/{ListPage-KvnBaksH.js.map → ListPage-Vf4xtn8w.js.map} +1 -1
  89. package/dist/admin/{ListPage-uSjUZ61P.mjs → ListPage-rCkaHmeP.mjs} +7 -7
  90. package/dist/admin/ListPage-rCkaHmeP.mjs.map +1 -0
  91. package/dist/admin/{ListPage-hyar31Ge.mjs → ListPage-vJik-wkj.mjs} +48 -30
  92. package/dist/admin/ListPage-vJik-wkj.mjs.map +1 -0
  93. package/dist/admin/{ListPage-2bW3tnRz.js → ListPage-y3rcDJX1.js} +5 -5
  94. package/dist/admin/ListPage-y3rcDJX1.js.map +1 -0
  95. package/dist/admin/{ListView-4XLHSTtI.js → ListView-8pEtfLsu.js} +5 -5
  96. package/dist/admin/{ListView-4XLHSTtI.js.map → ListView-8pEtfLsu.js.map} +1 -1
  97. package/dist/admin/{ListView-NUg6w25H.mjs → ListView-iCqFRGiO.mjs} +5 -5
  98. package/dist/admin/{ListView-NUg6w25H.mjs.map → ListView-iCqFRGiO.mjs.map} +1 -1
  99. package/dist/admin/{ListView-Hx1s5o_O.mjs → ListView-jrsV1wF_.mjs} +5 -5
  100. package/dist/admin/{ListView-Hx1s5o_O.mjs.map → ListView-jrsV1wF_.mjs.map} +1 -1
  101. package/dist/admin/{ListView-U0ueqVjR.js → ListView-noYLY_DM.js} +4 -4
  102. package/dist/admin/{ListView-U0ueqVjR.js.map → ListView-noYLY_DM.js.map} +1 -1
  103. package/dist/admin/{Login-StNvuHl2.mjs → Login--GgWQano.mjs} +4 -4
  104. package/dist/admin/{Login-StNvuHl2.mjs.map → Login--GgWQano.mjs.map} +1 -1
  105. package/dist/admin/{Login-D_lEvhlk.js → Login-qr72UXGp.js} +4 -4
  106. package/dist/admin/{Login-D_lEvhlk.js.map → Login-qr72UXGp.js.map} +1 -1
  107. package/dist/admin/{MagicLinkEE-yv0VjDUG.js → MagicLinkEE-uTufI4yx.js} +3 -3
  108. package/dist/admin/{MagicLinkEE-yv0VjDUG.js.map → MagicLinkEE-uTufI4yx.js.map} +1 -1
  109. package/dist/admin/{MagicLinkEE-Enht2VEX.mjs → MagicLinkEE-vQcgXndx.mjs} +3 -3
  110. package/dist/admin/{MagicLinkEE-Enht2VEX.mjs.map → MagicLinkEE-vQcgXndx.mjs.map} +1 -1
  111. package/dist/admin/{MarketplacePage-0HLsOYU8.mjs → MarketplacePage-LRlL_4ys.mjs} +86 -73
  112. package/dist/admin/MarketplacePage-LRlL_4ys.mjs.map +1 -0
  113. package/dist/admin/{MarketplacePage-eNFHM7J0.js → MarketplacePage-yRWZ54oN.js} +87 -74
  114. package/dist/admin/MarketplacePage-yRWZ54oN.js.map +1 -0
  115. package/dist/admin/{Permissions-oxdduJgE.mjs → Permissions-aSGK8VGG.mjs} +3 -3
  116. package/dist/admin/{Permissions-oxdduJgE.mjs.map → Permissions-aSGK8VGG.mjs.map} +1 -1
  117. package/dist/admin/{Permissions-SuZE5tW3.js → Permissions-bmMBmcv7.js} +3 -3
  118. package/dist/admin/{Permissions-SuZE5tW3.js.map → Permissions-bmMBmcv7.js.map} +1 -1
  119. package/dist/admin/{PrivateRoute-ndqg7K6H.js → PrivateRoute-LO9G_pCJ.js} +2 -2
  120. package/dist/admin/{PrivateRoute-ndqg7K6H.js.map → PrivateRoute-LO9G_pCJ.js.map} +1 -1
  121. package/dist/admin/{PrivateRoute-4oRTB_tX.mjs → PrivateRoute-S4Lol0B9.mjs} +2 -2
  122. package/dist/admin/{PrivateRoute-4oRTB_tX.mjs.map → PrivateRoute-S4Lol0B9.mjs.map} +1 -1
  123. package/dist/admin/{ProfilePage-8lhmqZEh.js → ProfilePage-Mte9RhXw.js} +8 -8
  124. package/dist/admin/ProfilePage-Mte9RhXw.js.map +1 -0
  125. package/dist/admin/{ProfilePage-5ix1J-t3.mjs → ProfilePage-voofTYei.mjs} +9 -9
  126. package/dist/admin/ProfilePage-voofTYei.mjs.map +1 -0
  127. package/dist/admin/{PurchaseAuditLogs-amcjjsft.mjs → PurchaseAuditLogs-8wmVhLCb.mjs} +2 -2
  128. package/dist/admin/{PurchaseAuditLogs-amcjjsft.mjs.map → PurchaseAuditLogs-8wmVhLCb.mjs.map} +1 -1
  129. package/dist/admin/{PurchaseAuditLogs-LAxKPeum.js → PurchaseAuditLogs-qxVh-U_P.js} +2 -2
  130. package/dist/admin/{PurchaseAuditLogs-LAxKPeum.js.map → PurchaseAuditLogs-qxVh-U_P.js.map} +1 -1
  131. package/dist/admin/{PurchaseSingleSignOn-2jOz2dDs.mjs → PurchaseSingleSignOn-kgjD8gsd.mjs} +2 -2
  132. package/dist/admin/{PurchaseSingleSignOn-2jOz2dDs.mjs.map → PurchaseSingleSignOn-kgjD8gsd.mjs.map} +1 -1
  133. package/dist/admin/{PurchaseSingleSignOn-trhjWQVO.js → PurchaseSingleSignOn-ovEsG_Ud.js} +2 -2
  134. package/dist/admin/{PurchaseSingleSignOn-trhjWQVO.js.map → PurchaseSingleSignOn-ovEsG_Ud.js.map} +1 -1
  135. package/dist/admin/{SSOProviders-QBcyB9VI.js → SSOProviders-9-d1vYXb.js} +4 -4
  136. package/dist/admin/SSOProviders-9-d1vYXb.js.map +1 -0
  137. package/dist/admin/{SSOProviders-nMmBLr8g.mjs → SSOProviders-sy3Xon2A.mjs} +4 -4
  138. package/dist/admin/SSOProviders-sy3Xon2A.mjs.map +1 -0
  139. package/dist/admin/{SelectRoles-b0crlFl7.mjs → SelectRoles-Kzqv2-TI.mjs} +7 -7
  140. package/dist/admin/SelectRoles-Kzqv2-TI.mjs.map +1 -0
  141. package/dist/admin/{SelectRoles-nRbY6X9X.js → SelectRoles-pjJ11lBU.js} +8 -8
  142. package/dist/admin/SelectRoles-pjJ11lBU.js.map +1 -0
  143. package/dist/admin/{SingleSignOnPage-ifswElWH.js → SingleSignOnPage-WjL8NvC5.js} +14 -5
  144. package/dist/admin/SingleSignOnPage-WjL8NvC5.js.map +1 -0
  145. package/dist/admin/{SingleSignOnPage-SoYGwm82.mjs → SingleSignOnPage-p1fTOytT.mjs} +15 -6
  146. package/dist/admin/SingleSignOnPage-p1fTOytT.mjs.map +1 -0
  147. package/dist/admin/{Table-GNJgJ_tZ.mjs → Table-ARSVxoYe.mjs} +13 -20
  148. package/dist/admin/Table-ARSVxoYe.mjs.map +1 -0
  149. package/dist/admin/{Table-b0AhH-1j.js → Table-QAvKSSis.js} +13 -20
  150. package/dist/admin/Table-QAvKSSis.js.map +1 -0
  151. package/dist/admin/{Theme-PrUuuGtN.mjs → Theme-frC82ceE.mjs} +221 -20
  152. package/dist/admin/Theme-frC82ceE.mjs.map +1 -0
  153. package/dist/admin/{Theme-7W0we6BI.js → Theme-y_rWTknM.js} +225 -19
  154. package/dist/admin/Theme-y_rWTknM.js.map +1 -0
  155. package/dist/admin/{TokenTypeSelect-88Lcbz54.js → TokenTypeSelect-biZzRJv2.js} +5 -6
  156. package/dist/admin/TokenTypeSelect-biZzRJv2.js.map +1 -0
  157. package/dist/admin/{TokenTypeSelect-9u9d8fcv.mjs → TokenTypeSelect-j-b_9iB9.mjs} +5 -6
  158. package/dist/admin/TokenTypeSelect-j-b_9iB9.mjs.map +1 -0
  159. package/dist/admin/{UseCasePage-z6GrO4cL.mjs → UseCasePage-b2VozaZB.mjs} +14 -8
  160. package/dist/admin/{UseCasePage-z6GrO4cL.mjs.map → UseCasePage-b2VozaZB.mjs.map} +1 -1
  161. package/dist/admin/{UseCasePage-ipjo7uhC.js → UseCasePage-hJH0orUl.js} +14 -8
  162. package/dist/admin/UseCasePage-hJH0orUl.js.map +1 -0
  163. package/dist/admin/{admin-B6AW0Kov.mjs → admin-GZ-AP2T0.mjs} +2 -2
  164. package/dist/admin/{admin-B6AW0Kov.mjs.map → admin-GZ-AP2T0.mjs.map} +1 -1
  165. package/dist/admin/{apiTokens-YMUmHnrH.mjs → apiTokens-GQe-GqwZ.mjs} +2 -2
  166. package/dist/admin/{apiTokens-YMUmHnrH.mjs.map → apiTokens-GQe-GqwZ.mjs.map} +1 -1
  167. package/dist/admin/{constants-PyUVE8mk.js → constants-bgMqSKBQ.js} +4 -4
  168. package/dist/admin/{constants-PyUVE8mk.js.map → constants-bgMqSKBQ.js.map} +1 -1
  169. package/dist/admin/{constants-JnuNds5i.mjs → constants-jKuNcrQj.mjs} +4 -4
  170. package/dist/admin/{constants-JnuNds5i.mjs.map → constants-jKuNcrQj.mjs.map} +1 -1
  171. package/dist/admin/ee.mjs +1 -1
  172. package/dist/admin/{en-TbnMBjZf.js → en-_1-Nn7iH.js} +3 -2
  173. package/dist/admin/{en-TbnMBjZf.js.map → en-_1-Nn7iH.js.map} +1 -1
  174. package/dist/admin/{en-0Ld-ipyI.mjs → en-lDO5lPD0.mjs} +3 -2
  175. package/dist/admin/{en-0Ld-ipyI.mjs.map → en-lDO5lPD0.mjs.map} +1 -1
  176. package/dist/admin/{index-4iCJ7_08.mjs → index-hoTsgrwy.mjs} +138 -281
  177. package/dist/admin/index-hoTsgrwy.mjs.map +1 -0
  178. package/dist/admin/{index-3GWFhGv_.js → index-we0DbzVF.js} +142 -288
  179. package/dist/admin/index-we0DbzVF.js.map +1 -0
  180. package/dist/admin/index.js +5 -4
  181. package/dist/admin/index.js.map +1 -1
  182. package/dist/admin/index.mjs +3 -3
  183. package/dist/admin/{selectors-ZpHhvPK4.mjs → selectors--muHmKGe.mjs} +2 -2
  184. package/dist/admin/{selectors-ZpHhvPK4.mjs.map → selectors--muHmKGe.mjs.map} +1 -1
  185. package/dist/admin/{selectors-zQKcCNuz.js → selectors-1ySxKbos.js} +2 -2
  186. package/dist/admin/{selectors-zQKcCNuz.js.map → selectors-1ySxKbos.js.map} +1 -1
  187. package/dist/admin/src/StrapiApp.d.ts +8 -6
  188. package/dist/admin/src/components/Form.d.ts +3 -1
  189. package/dist/admin/src/components/GuidedTour/Provider.d.ts +0 -4
  190. package/dist/admin/src/constants.d.ts +10 -0
  191. package/dist/admin/src/features/Auth.d.ts +1 -1
  192. package/dist/admin/src/hooks/useRBAC.d.ts +1 -1
  193. package/dist/admin/src/index.d.ts +3 -0
  194. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +1 -1
  195. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +2 -1
  196. package/dist/admin/src/pages/Settings/pages/InstalledPlugins.d.ts +3 -0
  197. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +1 -1
  198. package/dist/admin/src/types/permissions.d.ts +3 -1
  199. package/dist/admin/test.js +3 -3
  200. package/dist/admin/test.js.map +1 -1
  201. package/dist/admin/test.mjs +4 -4
  202. package/dist/admin/test.mjs.map +1 -1
  203. package/dist/admin/{transferTokens-CNI0TFdA.mjs → transferTokens-v8tNpI_l.mjs} +2 -2
  204. package/dist/admin/{transferTokens-CNI0TFdA.mjs.map → transferTokens-v8tNpI_l.mjs.map} +1 -1
  205. package/dist/admin/{useAdminRoles-T7bcAXVs.js → useAdminRoles-0gM7o3f2.js} +2 -2
  206. package/dist/admin/{useAdminRoles-T7bcAXVs.js.map → useAdminRoles-0gM7o3f2.js.map} +1 -1
  207. package/dist/admin/{useAdminRoles-ZBjAOdVi.mjs → useAdminRoles-uRNvxyDX.mjs} +2 -2
  208. package/dist/admin/{useAdminRoles-ZBjAOdVi.mjs.map → useAdminRoles-uRNvxyDX.mjs.map} +1 -1
  209. package/dist/admin/{useLicenseLimitNotification-PaR7jmqd.mjs → useLicenseLimitNotification-Qx_rSpUQ.mjs} +3 -3
  210. package/dist/admin/{useLicenseLimitNotification-PaR7jmqd.mjs.map → useLicenseLimitNotification-Qx_rSpUQ.mjs.map} +1 -1
  211. package/dist/admin/{useLicenseLimitNotification-g1vq6nzk.js → useLicenseLimitNotification-eau4ja6h.js} +2 -2
  212. package/dist/admin/{useLicenseLimitNotification-g1vq6nzk.js.map → useLicenseLimitNotification-eau4ja6h.js.map} +1 -1
  213. package/dist/admin/{useLicenseLimits-Jy6E6qc2.mjs → useLicenseLimits-j5znikzW.mjs} +2 -2
  214. package/dist/admin/{useLicenseLimits-Jy6E6qc2.mjs.map → useLicenseLimits-j5znikzW.mjs.map} +1 -1
  215. package/dist/admin/{useWebhooks-7thg-d57.mjs → useWebhooks-upF7mgdZ.mjs} +2 -2
  216. package/dist/admin/{useWebhooks-7thg-d57.mjs.map → useWebhooks-upF7mgdZ.mjs.map} +1 -1
  217. package/dist/admin/{validation-Yg-jfoIk.mjs → validation-OR7t0a-C.mjs} +4 -4
  218. package/dist/admin/validation-OR7t0a-C.mjs.map +1 -0
  219. package/dist/admin/{validation-bQ-dFrHn.js → validation-VuxEFW4W.js} +4 -4
  220. package/dist/admin/validation-VuxEFW4W.js.map +1 -0
  221. package/dist/ee/server/src/audit-logs/content-types/audit-log.d.ts +41 -0
  222. package/dist/ee/server/src/audit-logs/content-types/audit-log.d.ts.map +1 -0
  223. package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts +7 -0
  224. package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts.map +1 -0
  225. package/dist/ee/server/src/audit-logs/routes/audit-logs.d.ts +19 -0
  226. package/dist/ee/server/src/audit-logs/routes/audit-logs.d.ts.map +1 -0
  227. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +27 -0
  228. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -0
  229. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +12 -0
  230. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -0
  231. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +6 -0
  232. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -0
  233. package/dist/ee/server/src/bootstrap.d.ts +3 -0
  234. package/dist/ee/server/src/bootstrap.d.ts.map +1 -0
  235. package/dist/ee/server/src/config/admin-actions.d.ts +20 -0
  236. package/dist/ee/server/src/config/admin-actions.d.ts.map +1 -0
  237. package/dist/ee/server/src/content-types/index.d.ts +3 -0
  238. package/dist/ee/server/src/content-types/index.d.ts.map +1 -0
  239. package/dist/ee/server/src/controllers/admin.d.ts +29 -0
  240. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -0
  241. package/dist/ee/server/src/controllers/authentication-utils/constants.d.ts +10 -0
  242. package/dist/ee/server/src/controllers/authentication-utils/constants.d.ts.map +1 -0
  243. package/dist/ee/server/src/controllers/authentication-utils/index.d.ts +5 -0
  244. package/dist/ee/server/src/controllers/authentication-utils/index.d.ts.map +1 -0
  245. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts +9 -0
  246. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -0
  247. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +55 -0
  248. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -0
  249. package/dist/ee/server/src/controllers/authentication.d.ts +9 -0
  250. package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -0
  251. package/dist/ee/server/src/controllers/index.d.ts +48 -0
  252. package/dist/ee/server/src/controllers/index.d.ts.map +1 -0
  253. package/dist/ee/server/src/controllers/role.d.ts +20 -0
  254. package/dist/ee/server/src/controllers/role.d.ts.map +1 -0
  255. package/dist/ee/server/src/controllers/user.d.ts +8 -0
  256. package/dist/ee/server/src/controllers/user.d.ts.map +1 -0
  257. package/dist/ee/server/src/destroy.d.ts +6 -0
  258. package/dist/ee/server/src/destroy.d.ts.map +1 -0
  259. package/dist/ee/server/src/index.d.ts +380 -0
  260. package/dist/ee/server/src/index.d.ts.map +1 -0
  261. package/dist/ee/server/src/register.d.ts +6 -0
  262. package/dist/ee/server/src/register.d.ts.map +1 -0
  263. package/dist/ee/server/src/routes/index.d.ts +47 -0
  264. package/dist/ee/server/src/routes/index.d.ts.map +1 -0
  265. package/dist/ee/server/src/routes/license-limit.d.ts +18 -0
  266. package/dist/ee/server/src/routes/license-limit.d.ts.map +1 -0
  267. package/dist/ee/server/src/routes/sso.d.ts +29 -0
  268. package/dist/ee/server/src/routes/sso.d.ts.map +1 -0
  269. package/dist/ee/server/src/routes/utils.d.ts +3 -0
  270. package/dist/ee/server/src/routes/utils.d.ts.map +1 -0
  271. package/dist/ee/server/src/services/auth.d.ts +6 -0
  272. package/dist/ee/server/src/services/auth.d.ts.map +1 -0
  273. package/dist/ee/server/src/services/index.d.ts +39 -0
  274. package/dist/ee/server/src/services/index.d.ts.map +1 -0
  275. package/dist/ee/server/src/services/metrics.d.ts +8 -0
  276. package/dist/ee/server/src/services/metrics.d.ts.map +1 -0
  277. package/dist/ee/server/src/services/passport/provider-registry.d.ts +4 -0
  278. package/dist/ee/server/src/services/passport/provider-registry.d.ts.map +1 -0
  279. package/dist/ee/server/src/services/passport/sso.d.ts +19 -0
  280. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -0
  281. package/dist/ee/server/src/services/passport.d.ts +13 -0
  282. package/dist/ee/server/src/services/passport.d.ts.map +1 -0
  283. package/dist/ee/server/src/services/role.d.ts +5 -0
  284. package/dist/ee/server/src/services/role.d.ts.map +1 -0
  285. package/dist/ee/server/src/services/seat-enforcement.d.ts +6 -0
  286. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -0
  287. package/dist/ee/server/src/services/user.d.ts +10 -0
  288. package/dist/ee/server/src/services/user.d.ts.map +1 -0
  289. package/dist/ee/server/src/utils/index.d.ts +11 -0
  290. package/dist/ee/server/src/utils/index.d.ts.map +1 -0
  291. package/dist/ee/server/src/utils/persisted-tables.d.ts +42 -0
  292. package/dist/ee/server/src/utils/persisted-tables.d.ts.map +1 -0
  293. package/dist/ee/server/src/utils/sso-lock.d.ts +6 -0
  294. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -0
  295. package/dist/ee/server/src/validation/authentication.d.ts +15 -0
  296. package/dist/ee/server/src/validation/authentication.d.ts.map +1 -0
  297. package/dist/ee/server/src/validation/role.d.ts +21 -0
  298. package/dist/ee/server/src/validation/role.d.ts.map +1 -0
  299. package/dist/ee/server/src/validation/user.d.ts +19 -0
  300. package/dist/ee/server/src/validation/user.d.ts.map +1 -0
  301. package/dist/package.json.d.ts +16 -15
  302. package/dist/server/index.js +1934 -539
  303. package/dist/server/index.js.map +1 -1
  304. package/dist/server/index.mjs +1734 -338
  305. package/dist/server/index.mjs.map +1 -1
  306. package/dist/server/src/config/admin-actions.d.ts +26 -0
  307. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  308. package/dist/server/src/domain/action/index.d.ts +51 -1
  309. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  310. package/dist/server/src/domain/action/provider.d.ts +10 -13
  311. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  312. package/dist/server/src/domain/condition/provider.d.ts +5 -6
  313. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  314. package/dist/server/src/domain/permission/index.d.ts +2 -2
  315. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  316. package/dist/server/src/index.d.ts +738 -10
  317. package/dist/server/src/index.d.ts.map +1 -1
  318. package/dist/server/src/services/action.d.ts +1 -3
  319. package/dist/server/src/services/action.d.ts.map +1 -1
  320. package/dist/server/src/services/permission.d.ts +11 -18
  321. package/dist/server/src/services/permission.d.ts.map +1 -1
  322. package/dist/server/src/services/transfer/permission.d.ts +6 -2
  323. package/dist/server/src/services/transfer/permission.d.ts.map +1 -1
  324. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  325. package/dist/shared/contracts/admin.d.ts +1 -0
  326. package/dist/shared/contracts/admin.d.ts.map +1 -1
  327. package/dist/shared/contracts/user.d.ts +1 -1
  328. package/dist/shared/contracts/user.d.ts.map +1 -1
  329. package/package.json +17 -16
  330. package/dist/admin/AdminSeatInfo-E8azTFQY.js.map +0 -1
  331. package/dist/admin/AdminSeatInfo-Q_hUNC5B.mjs.map +0 -1
  332. package/dist/admin/ApplicationInfoPage-DOljMjfU.js.map +0 -1
  333. package/dist/admin/ApplicationInfoPage-_QAWr13m.mjs.map +0 -1
  334. package/dist/admin/AuthenticatedLayout-DhxlhqLg.mjs.map +0 -1
  335. package/dist/admin/AuthenticatedLayout-S2qRx5pp.js.map +0 -1
  336. package/dist/admin/ContentBox-3MRTNw0X.js +0 -43
  337. package/dist/admin/ContentBox-3MRTNw0X.js.map +0 -1
  338. package/dist/admin/ContentBox-9LBDzws0.mjs +0 -41
  339. package/dist/admin/ContentBox-9LBDzws0.mjs.map +0 -1
  340. package/dist/admin/CreatePage-4aSBZ-8M.mjs.map +0 -1
  341. package/dist/admin/CreatePage-HNRkTZwZ.js.map +0 -1
  342. package/dist/admin/EditPage-BAq4SLUJ.js.map +0 -1
  343. package/dist/admin/EditPage-Qp1c1eXd.mjs.map +0 -1
  344. package/dist/admin/EditPage-RZcyUKwu.js.map +0 -1
  345. package/dist/admin/EditPage-cMbU4NVE.mjs.map +0 -1
  346. package/dist/admin/EditPage-hHV9CNBD.mjs.map +0 -1
  347. package/dist/admin/EditPage-nJMUfPC_.js.map +0 -1
  348. package/dist/admin/EditView-CqQ7E0hw.js.map +0 -1
  349. package/dist/admin/EditView-cnGxE7oC.mjs.map +0 -1
  350. package/dist/admin/EditViewPage-tTqJWPbg.mjs.map +0 -1
  351. package/dist/admin/EditViewPage-uUDS6iky.js.map +0 -1
  352. package/dist/admin/HomePage-cSNwcjEI.js.map +0 -1
  353. package/dist/admin/HomePage-kxpv-2IT.mjs.map +0 -1
  354. package/dist/admin/InstalledPluginsPage-Vj2K7uad.js.map +0 -1
  355. package/dist/admin/InstalledPluginsPage-nryUCDD3.mjs.map +0 -1
  356. package/dist/admin/ListPage-2bW3tnRz.js.map +0 -1
  357. package/dist/admin/ListPage-3OjwvR-r.mjs.map +0 -1
  358. package/dist/admin/ListPage-eY08uWFn.js.map +0 -1
  359. package/dist/admin/ListPage-hyar31Ge.mjs.map +0 -1
  360. package/dist/admin/ListPage-qr-mWRUO.js.map +0 -1
  361. package/dist/admin/ListPage-uSjUZ61P.mjs.map +0 -1
  362. package/dist/admin/MarketplacePage-0HLsOYU8.mjs.map +0 -1
  363. package/dist/admin/MarketplacePage-eNFHM7J0.js.map +0 -1
  364. package/dist/admin/ProfilePage-5ix1J-t3.mjs.map +0 -1
  365. package/dist/admin/ProfilePage-8lhmqZEh.js.map +0 -1
  366. package/dist/admin/SSOProviders-QBcyB9VI.js.map +0 -1
  367. package/dist/admin/SSOProviders-nMmBLr8g.mjs.map +0 -1
  368. package/dist/admin/SelectRoles-b0crlFl7.mjs.map +0 -1
  369. package/dist/admin/SelectRoles-nRbY6X9X.js.map +0 -1
  370. package/dist/admin/SingleSignOnPage-SoYGwm82.mjs.map +0 -1
  371. package/dist/admin/SingleSignOnPage-ifswElWH.js.map +0 -1
  372. package/dist/admin/Table-GNJgJ_tZ.mjs.map +0 -1
  373. package/dist/admin/Table-b0AhH-1j.js.map +0 -1
  374. package/dist/admin/Theme-7W0we6BI.js.map +0 -1
  375. package/dist/admin/Theme-PrUuuGtN.mjs.map +0 -1
  376. package/dist/admin/TokenTypeSelect-88Lcbz54.js.map +0 -1
  377. package/dist/admin/TokenTypeSelect-9u9d8fcv.mjs.map +0 -1
  378. package/dist/admin/UseCasePage-ipjo7uhC.js.map +0 -1
  379. package/dist/admin/index-3GWFhGv_.js.map +0 -1
  380. package/dist/admin/index-4iCJ7_08.mjs.map +0 -1
  381. package/dist/admin/src/pages/InstalledPluginsPage.d.ts +0 -3
  382. package/dist/admin/validation-Yg-jfoIk.mjs.map +0 -1
  383. package/dist/admin/validation-bQ-dFrHn.js.map +0 -1
  384. package/dist/ee/server/index.js +0 -2180
  385. package/dist/ee/server/index.js.map +0 -1
  386. package/dist/ee/server/index.mjs +0 -2175
  387. package/dist/ee/server/index.mjs.map +0 -1
  388. package/strapi-server.js +0 -18
@@ -1 +0,0 @@
1
- {"version":3,"file":"Theme-PrUuuGtN.mjs","sources":["../../admin/src/core/apis/rbac.ts","../../admin/src/components/Context.tsx","../../admin/src/core/store/hooks.ts","../../admin/src/features/StrapiApp.tsx","../../admin/src/reducer.ts","../../admin/src/services/auth.ts","../../admin/src/features/Auth.tsx","../../admin/src/features/Notifications.tsx","../../admin/src/utils/getPrefixedId.ts","../../admin/src/utils/normalizeAPIError.ts","../../admin/src/utils/objects.ts","../../admin/src/hooks/useAPIErrorHandler.ts","../../admin/src/components/PageHelpers.tsx","../../admin/src/utils/once.ts","../../admin/src/utils/strings.ts","../../admin/src/hooks/usePrev.ts","../../admin/src/hooks/useRBAC.ts","../../admin/src/features/AppInfo.tsx","../../admin/src/features/Tracking.tsx","../../admin/src/features/Configuration.tsx","../../admin/src/components/LanguageProvider.tsx","../../admin/src/components/Theme.tsx"],"sourcesContent":["import { Location } from 'react-router-dom';\n\nimport type { Permission, User } from '../../features/Auth';\n\ninterface RBACContext extends Pick<Location, 'pathname' | 'search'> {\n /**\n * The current user.\n */\n user?: User;\n /**\n * The permissions of the current user.\n */\n permissions: Permission[];\n}\n\ninterface RBACMiddleware {\n (\n ctx: RBACContext\n ): (\n next: (permissions: Permission[]) => Promise<Permission[]> | Permission[]\n ) => (permissions: Permission[]) => Promise<Permission[]> | Permission[];\n}\n\nclass RBAC {\n private middlewares: RBACMiddleware[] = [];\n\n constructor() {}\n\n use(middleware: RBACMiddleware[]): void;\n use(middleware: RBACMiddleware): void;\n use(middleware: RBACMiddleware | RBACMiddleware[]): void {\n if (Array.isArray(middleware)) {\n this.middlewares.push(...middleware);\n } else {\n this.middlewares.push(middleware);\n }\n }\n\n run = async (ctx: RBACContext, permissions: Permission[]): Promise<Permission[]> => {\n let index = 0;\n\n const middlewaresToRun = this.middlewares.map((middleware) => middleware(ctx));\n\n const next = async (permissions: Permission[]) => {\n if (index < this.middlewares.length) {\n return middlewaresToRun[index++](next)(permissions);\n }\n\n return permissions;\n };\n\n return next(permissions);\n };\n}\n\nexport { RBAC };\nexport type { RBACMiddleware, RBACContext };\n","import * as React from 'react';\n\nimport * as ContextSelector from 'use-context-selector';\n\n/**\n * @experimental\n * @description Create a context provider and a hook to consume the context.\n *\n * @warning this may be removed to the design-system instead of becoming stable.\n */\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = ContextSelector.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider = (props: ContextValueType & { children: React.ReactNode }) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n const useContext = <Selected,>(\n consumerName: string,\n selector: (value: ContextValueType) => Selected\n ): Selected =>\n ContextSelector.useContextSelector(Context, (ctx) => {\n if (ctx) return selector(ctx);\n // it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n });\n\n Provider.displayName = rootComponentName + 'Provider';\n\n return [Provider, useContext] as const;\n}\n\nexport { createContext };\n","import { createSelector, Selector } from '@reduxjs/toolkit';\nimport { useDispatch, useStore, TypedUseSelectorHook, useSelector } from 'react-redux';\n\nimport type { RootState, Store } from './configure';\n\ntype AppDispatch = Store['dispatch'];\n\nconst useTypedDispatch: () => AppDispatch = useDispatch;\nconst useTypedStore = useStore as () => Store;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nconst createTypedSelector = <TResult>(selector: Selector<RootState, TResult>) =>\n createSelector((state: RootState) => state, selector);\n\nexport { useTypedDispatch, useTypedStore, useTypedSelector, createTypedSelector };\n","import { createContext } from '../components/Context';\nimport { RBAC } from '../core/apis/rbac';\nimport { Router } from '../core/apis/router';\n\nimport type { StrapiApp } from '../StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * StrapiApp\n * -----------------------------------------------------------------------------------------------*/\ninterface StrapiAppContextValue\n extends Pick<\n StrapiApp,\n | 'customFields'\n | 'getPlugin'\n | 'getAdminInjectedComponents'\n | 'plugins'\n | 'runHookParallel'\n | 'runHookSeries'\n >,\n Pick<Router, 'menu' | 'settings'> {\n components: StrapiApp['library']['components'];\n fields: StrapiApp['library']['fields'];\n rbac: RBAC;\n runHookWaterfall: <TData>(\n name: Parameters<StrapiApp['runHookWaterfall']>[0],\n initialValue: TData\n ) => TData;\n}\n\nconst [StrapiAppProvider, useStrapiApp] = createContext<StrapiAppContextValue>('StrapiApp');\n\nexport { StrapiAppProvider, useStrapiApp };\nexport type { StrapiAppContextValue };\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { PermissionMap } from './types/permissions';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\n\ntype ThemeName = 'light' | 'dark' | 'system';\n\ninterface AppState {\n language: {\n locale: string;\n localeNames: Record<string, string>;\n };\n permissions: Partial<PermissionMap>;\n theme: {\n currentTheme: ThemeName;\n availableThemes: string[];\n };\n token?: string | null;\n}\n\nconst STORAGE_KEYS = {\n TOKEN: 'jwtToken',\n USER: 'userInfo',\n};\n\nconst THEME_LOCAL_STORAGE_KEY = 'STRAPI_THEME';\nconst LANGUAGE_LOCAL_STORAGE_KEY = 'strapi-admin-language';\n\nexport const getStoredToken = (): string | null => {\n const token =\n localStorage.getItem(STORAGE_KEYS.TOKEN) ?? sessionStorage.getItem(STORAGE_KEYS.TOKEN);\n\n if (typeof token === 'string') {\n return JSON.parse(token);\n }\n\n return null;\n};\n\nconst adminSlice = createSlice({\n name: 'admin',\n initialState: () => {\n return {\n language: {\n locale: 'en',\n localeNames: { en: 'English' },\n },\n permissions: {},\n theme: {\n availableThemes: [],\n currentTheme: localStorage.getItem(THEME_LOCAL_STORAGE_KEY) || 'system',\n },\n token: null,\n } as AppState;\n },\n reducers: {\n setAppTheme(state, action: PayloadAction<ThemeName>) {\n state.theme.currentTheme = action.payload;\n window.localStorage.setItem(THEME_LOCAL_STORAGE_KEY, action.payload);\n },\n setAvailableThemes(state, action: PayloadAction<AppState['theme']['availableThemes']>) {\n state.theme.availableThemes = action.payload;\n },\n setLocale(state, action: PayloadAction<string>) {\n state.language.locale = action.payload;\n\n window.localStorage.setItem(LANGUAGE_LOCAL_STORAGE_KEY, action.payload);\n document.documentElement.setAttribute('lang', action.payload);\n },\n setToken(state, action: PayloadAction<string | null>) {\n state.token = action.payload;\n },\n login(state, action: PayloadAction<{ token: string; persist?: boolean }>) {\n const { token, persist } = action.payload;\n\n if (!persist) {\n window.sessionStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n } else {\n window.localStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n }\n\n state.token = token;\n },\n logout(state) {\n state.token = null;\n window.localStorage.removeItem(STORAGE_KEYS.TOKEN);\n window.localStorage.removeItem(STORAGE_KEYS.USER);\n window.sessionStorage.removeItem(STORAGE_KEYS.TOKEN);\n window.sessionStorage.removeItem(STORAGE_KEYS.USER);\n },\n },\n});\n\nconst reducer = adminSlice.reducer;\n\nexport const { setAppTheme, setAvailableThemes, setLocale, setToken, logout, login } =\n adminSlice.actions;\n\nexport { reducer, THEME_LOCAL_STORAGE_KEY, LANGUAGE_LOCAL_STORAGE_KEY };\nexport type { AppState, ThemeName };\n","import { ProvidersOptions } from '../../../shared/contracts/admin';\nimport {\n type RenewToken,\n type Login,\n type ResetPassword,\n type RegisterAdmin,\n type Register,\n type RegistrationInfo,\n ForgotPassword,\n} from '../../../shared/contracts/authentication';\nimport { Check } from '../../../shared/contracts/permissions';\nimport { GetProviders, IsSSOLocked } from '../../../shared/contracts/providers';\nimport { type GetOwnPermissions, type GetMe, type UpdateMe } from '../../../shared/contracts/users';\n\nimport { adminApi } from './api';\n\nconst authService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['User', 'Me', 'ProvidersOptions'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n /**\n * ME\n */\n getMe: builder.query<GetMe.Response['data'], void>({\n query: () => ({\n method: 'GET',\n url: '/admin/users/me',\n }),\n transformResponse(res: GetMe.Response) {\n return res.data;\n },\n providesTags: (res) => (res ? ['Me', { type: 'User', id: res.id }] : ['Me']),\n }),\n getMyPermissions: builder.query<GetOwnPermissions.Response['data'], void>({\n query: () => ({\n method: 'GET',\n url: '/admin/users/me/permissions',\n }),\n transformResponse(res: GetOwnPermissions.Response) {\n return res.data;\n },\n }),\n updateMe: builder.mutation<UpdateMe.Response['data'], UpdateMe.Request['body']>({\n query: (body) => ({\n method: 'PUT',\n url: '/admin/users/me',\n data: body,\n }),\n transformResponse(res: UpdateMe.Response) {\n return res.data;\n },\n invalidatesTags: ['Me'],\n }),\n /**\n * Permissions\n */\n checkPermissions: builder.query<Check.Response, Check.Request['body']>({\n query: (permissions) => ({\n method: 'POST',\n url: '/admin/permissions/check',\n data: permissions,\n }),\n }),\n /**\n * Auth methods\n */\n login: builder.mutation<Login.Response['data'], Login.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/login',\n data: body,\n }),\n transformResponse(res: Login.Response) {\n return res.data;\n },\n invalidatesTags: ['Me'],\n }),\n logout: builder.mutation<void, void>({\n query: () => ({\n method: 'POST',\n url: '/admin/logout',\n }),\n }),\n resetPassword: builder.mutation<\n ResetPassword.Response['data'],\n ResetPassword.Request['body']\n >({\n query: (body) => ({\n method: 'POST',\n url: '/admin/reset-password',\n data: body,\n }),\n transformResponse(res: ResetPassword.Response) {\n return res.data;\n },\n }),\n renewToken: builder.mutation<RenewToken.Response['data'], RenewToken.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/renew-token',\n data: body,\n }),\n transformResponse(res: RenewToken.Response) {\n return res.data;\n },\n }),\n getRegistrationInfo: builder.query<\n RegistrationInfo.Response['data'],\n RegistrationInfo.Request['query']['registrationToken']\n >({\n query: (registrationToken) => ({\n url: '/admin/registration-info',\n method: 'GET',\n config: {\n params: {\n registrationToken,\n },\n },\n }),\n transformResponse(res: RegistrationInfo.Response) {\n return res.data;\n },\n }),\n registerAdmin: builder.mutation<\n RegisterAdmin.Response['data'],\n RegisterAdmin.Request['body']\n >({\n query: (body) => ({\n method: 'POST',\n url: '/admin/register-admin',\n data: body,\n }),\n transformResponse(res: RegisterAdmin.Response) {\n return res.data;\n },\n }),\n registerUser: builder.mutation<Register.Response['data'], Register.Request['body']>({\n query: (body) => ({\n method: 'POST',\n url: '/admin/register',\n data: body,\n }),\n transformResponse(res: Register.Response) {\n return res.data;\n },\n }),\n forgotPassword: builder.mutation<ForgotPassword.Response, ForgotPassword.Request['body']>({\n query: (body) => ({\n url: '/admin/forgot-password',\n method: 'POST',\n data: body,\n }),\n }),\n isSSOLocked: builder.query<IsSSOLocked.Response['data'], void>({\n query: () => ({\n url: '/admin/providers/isSSOLocked',\n method: 'GET',\n }),\n transformResponse(res: IsSSOLocked.Response) {\n return res.data;\n },\n }),\n getProviders: builder.query<GetProviders.Response, void>({\n query: () => ({\n url: '/admin/providers',\n method: 'GET',\n }),\n }),\n getProviderOptions: builder.query<ProvidersOptions.Response['data'], void>({\n query: () => ({\n url: '/admin/providers/options',\n method: 'GET',\n }),\n transformResponse(res: ProvidersOptions.Response) {\n return res.data;\n },\n providesTags: ['ProvidersOptions'],\n }),\n updateProviderOptions: builder.mutation<\n ProvidersOptions.Response['data'],\n ProvidersOptions.Request['body']\n >({\n query: (body) => ({\n url: '/admin/providers/options',\n method: 'PUT',\n data: body,\n }),\n transformResponse(res: ProvidersOptions.Response) {\n return res.data;\n },\n invalidatesTags: ['ProvidersOptions'],\n }),\n }),\n overrideExisting: false,\n });\n\nconst {\n useCheckPermissionsQuery,\n useLazyCheckPermissionsQuery,\n useGetMeQuery,\n useLoginMutation,\n useRenewTokenMutation,\n useLogoutMutation,\n useUpdateMeMutation,\n useResetPasswordMutation,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n useGetRegistrationInfoQuery,\n useForgotPasswordMutation,\n useGetMyPermissionsQuery,\n useIsSSOLockedQuery,\n useGetProvidersQuery,\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} = authService;\n\nexport {\n useCheckPermissionsQuery,\n useLazyCheckPermissionsQuery,\n useGetMeQuery,\n useLoginMutation,\n useRenewTokenMutation,\n useLogoutMutation,\n useUpdateMeMutation,\n useResetPasswordMutation,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n useGetRegistrationInfoQuery,\n useForgotPasswordMutation,\n useGetMyPermissionsQuery,\n useIsSSOLockedQuery,\n useGetProvidersQuery,\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n};\n","import * as React from 'react';\n\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { Login } from '../../../shared/contracts/authentication';\nimport { createContext } from '../components/Context';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { login as loginAction, logout as logoutAction, setLocale } from '../reducer';\nimport { adminApi } from '../services/api';\nimport {\n useGetMeQuery,\n useGetMyPermissionsQuery,\n useLazyCheckPermissionsQuery,\n useLoginMutation,\n useLogoutMutation,\n useRenewTokenMutation,\n} from '../services/auth';\n\nimport type {\n Permission as PermissionContract,\n SanitizedAdminUser,\n} from '../../../shared/contracts/shared';\n\ninterface Permission\n extends Pick<PermissionContract, 'action' | 'subject'>,\n Partial<Omit<PermissionContract, 'action' | 'subject'>> {}\n\ninterface User\n extends Pick<SanitizedAdminUser, 'email' | 'firstname' | 'lastname' | 'username' | 'roles'>,\n Partial<Omit<SanitizedAdminUser, 'email' | 'firstname' | 'lastname' | 'username' | 'roles'>> {}\n\ninterface AuthContextValue {\n login: (\n body: Login.Request['body'] & { rememberMe: boolean }\n ) => Promise<Awaited<ReturnType<ReturnType<typeof useLoginMutation>[0]>>>;\n logout: () => Promise<void>;\n /**\n * @alpha\n * @description given a list of permissions, this function checks\n * those against the current user's permissions or those passed as\n * the second argument, if the user has those permissions the complete\n * permission object form the API is returned. Therefore, if the list is\n * empty, the user does not have any of those permissions.\n */\n checkUserHasPermissions: (\n permissions?: Permission[],\n passedPermissions?: Permission[]\n ) => Promise<Permission[]>;\n isLoading: boolean;\n permissions: Permission[];\n refetchPermissions: () => Promise<void>;\n token: string | null;\n user?: User;\n}\n\nconst [Provider, useAuth] = createContext<AuthContextValue>('Auth');\n\ninterface AuthProviderProps {\n children: React.ReactNode;\n /**\n * @internal could be removed at any time.\n */\n _defaultPermissions?: Permission[];\n\n // NOTE: this is used for testing purposed only\n _disableRenewToken?: boolean;\n}\n\nconst STORAGE_KEYS = {\n TOKEN: 'jwtToken',\n USER: 'userInfo',\n};\n\nconst AuthProvider = ({\n children,\n _defaultPermissions = [],\n _disableRenewToken = false,\n}: AuthProviderProps) => {\n const dispatch = useTypedDispatch();\n const runRbacMiddleware = useStrapiApp('AuthProvider', (state) => state.rbac.run);\n const location = useLocation();\n const token = useTypedSelector((state) => state.admin_app.token ?? null);\n\n const { data: user, isLoading: isLoadingUser } = useGetMeQuery(undefined, {\n /**\n * If there's no token, we don't try to fetch\n * the user data because it will fail.\n */\n skip: !token,\n });\n\n const {\n data: userPermissions = _defaultPermissions,\n refetch,\n isUninitialized,\n isLoading: isLoadingPermissions,\n } = useGetMyPermissionsQuery(undefined, {\n skip: !token,\n });\n\n const navigate = useNavigate();\n\n const [loginMutation] = useLoginMutation();\n const [renewTokenMutation] = useRenewTokenMutation();\n const [logoutMutation] = useLogoutMutation();\n\n const clearStateAndLogout = React.useCallback(() => {\n dispatch(adminApi.util.resetApiState());\n dispatch(logoutAction());\n navigate('/auth/login');\n }, [dispatch, navigate]);\n\n /**\n * Fetch data from storages on mount and store it in our state.\n * It's not normally stored in session storage unless the user\n * does click \"remember me\" when they login. We also need to renew the token.\n */\n React.useEffect(() => {\n if (token && !_disableRenewToken) {\n renewTokenMutation({ token }).then((res) => {\n if ('data' in res) {\n dispatch(\n loginAction({\n token: res.data.token,\n })\n );\n } else {\n clearStateAndLogout();\n }\n });\n }\n }, [token, dispatch, renewTokenMutation, clearStateAndLogout, _disableRenewToken]);\n\n React.useEffect(() => {\n if (user) {\n if (user.preferedLanguage) {\n dispatch(setLocale(user.preferedLanguage));\n }\n }\n }, [dispatch, user]);\n\n React.useEffect(() => {\n /**\n * This will log a user out of all tabs if they log out in one tab.\n */\n const handleUserStorageChange = (event: StorageEvent) => {\n if (event.key === STORAGE_KEYS.USER && event.newValue === null) {\n clearStateAndLogout();\n }\n };\n\n window.addEventListener('storage', handleUserStorageChange);\n\n return () => {\n window.removeEventListener('storage', handleUserStorageChange);\n };\n });\n\n const login = React.useCallback<AuthContextValue['login']>(\n async ({ rememberMe, ...body }) => {\n const res = await loginMutation(body);\n\n /**\n * There will always be a `data` key in the response\n * because if something fails, it will throw an error.\n */\n if ('data' in res) {\n const { token } = res.data;\n\n dispatch(\n loginAction({\n token,\n persist: rememberMe,\n })\n );\n }\n\n return res;\n },\n [dispatch, loginMutation]\n );\n\n const logout = React.useCallback(async () => {\n await logoutMutation();\n clearStateAndLogout();\n }, [clearStateAndLogout, logoutMutation]);\n\n const refetchPermissions = React.useCallback(async () => {\n if (!isUninitialized) {\n await refetch();\n }\n }, [isUninitialized, refetch]);\n\n const [checkPermissions] = useLazyCheckPermissionsQuery();\n const checkUserHasPermissions: AuthContextValue['checkUserHasPermissions'] = React.useCallback(\n async (permissions, passedPermissions) => {\n /**\n * If there's no permissions to check, then we allow it to\n * pass to preserve existing behaviours.\n *\n * TODO: should we review this? it feels more dangerous than useful.\n */\n if (!permissions || permissions.length === 0) {\n return [{ action: '', subject: '' }];\n }\n\n /**\n * Given the provided permissions, return the permissions from either passedPermissions\n * or userPermissions as this is expected to be the full permission entity.\n */\n const actualUserPermissions = passedPermissions ?? userPermissions;\n\n const matchingPermissions = actualUserPermissions.filter(\n (permission) =>\n permissions.findIndex(\n (perm) => perm.action === permission.action && perm.subject === permission.subject\n ) >= 0\n );\n\n const middlewaredPermissions = await runRbacMiddleware(\n {\n user,\n permissions: userPermissions,\n pathname: location.pathname,\n search: location.search.split('?')[1] ?? '',\n },\n matchingPermissions\n );\n\n const shouldCheckConditions = middlewaredPermissions.some(\n (perm) => Array.isArray(perm.conditions) && perm.conditions.length > 0\n );\n\n if (!shouldCheckConditions) {\n return middlewaredPermissions;\n }\n\n const { data, error } = await checkPermissions({\n permissions: middlewaredPermissions.map((perm) => ({\n action: perm.action,\n subject: perm.subject,\n })),\n });\n\n if (error) {\n throw error;\n } else {\n return middlewaredPermissions.filter((_, index) => data?.data[index] === true);\n }\n },\n [checkPermissions, location.pathname, location.search, runRbacMiddleware, user, userPermissions]\n );\n\n const isLoading = isLoadingUser || isLoadingPermissions;\n\n return (\n <Provider\n token={token}\n user={user}\n login={login}\n logout={logout}\n permissions={userPermissions}\n checkUserHasPermissions={checkUserHasPermissions}\n refetchPermissions={refetchPermissions}\n isLoading={isLoading}\n >\n {children}\n </Provider>\n );\n};\n\nexport { AuthProvider, useAuth, STORAGE_KEYS };\nexport type { AuthContextValue, Permission, User };\n","import * as React from 'react';\n\nimport { Alert, AlertVariant, Flex, useCallbackRef, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface NotificationLink {\n label: string;\n target?: string;\n url: string;\n}\n\ninterface NotificationConfig {\n blockTransition?: boolean;\n link?: NotificationLink;\n message?: string;\n onClose?: () => void;\n timeout?: number;\n title?: string;\n type?: 'info' | 'warning' | 'danger' | 'success';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsContextValue {\n /**\n * Toggles a notification, wrapped in `useCallback` for a stable identity.\n */\n toggleNotification: (config: NotificationConfig) => void;\n}\n\nconst NotificationsContext = React.createContext<NotificationsContextValue>({\n toggleNotification: () => {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NotificationsProviderProps {\n children: React.ReactNode;\n}\ninterface Notification extends NotificationConfig {\n id: number;\n}\n\n/**\n * @internal\n * @description DO NOT USE. This will be removed before stable release of v5.\n */\nconst NotificationsProvider = ({ children }: NotificationsProviderProps) => {\n const notificationIdRef = React.useRef(0);\n\n const [notifications, setNotifications] = React.useState<Notification[]>([]);\n\n const toggleNotification = React.useCallback(\n ({ type, message, link, timeout, blockTransition, onClose, title }: NotificationConfig) => {\n setNotifications((s) => [\n ...s,\n {\n id: notificationIdRef.current++,\n type,\n message,\n link,\n timeout,\n blockTransition,\n onClose,\n title,\n },\n ]);\n },\n []\n );\n\n const clearNotification = React.useCallback((id: number) => {\n setNotifications((s) => s.filter((n) => n.id !== id));\n }, []);\n\n const value = React.useMemo(() => ({ toggleNotification }), [toggleNotification]);\n\n return (\n <NotificationsContext.Provider value={value}>\n <Flex\n left=\"50%\"\n marginLeft=\"-250px\"\n position=\"fixed\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={2}\n top={`4.6rem`}\n width={`50rem`}\n zIndex=\"notification\"\n >\n {notifications.map((notification) => {\n return (\n <Notification\n key={notification.id}\n {...notification}\n clearNotification={clearNotification}\n />\n );\n })}\n </Flex>\n {children}\n </NotificationsContext.Provider>\n );\n};\n\ninterface NotificationProps extends Notification {\n clearNotification: (id: number) => void;\n}\n\nconst Notification = ({\n clearNotification,\n blockTransition = false,\n id,\n link,\n message,\n onClose,\n timeout = 2500,\n title,\n type,\n}: NotificationProps) => {\n const { formatMessage } = useIntl();\n /**\n * Chances are `onClose` won't be classed as stabilised,\n * so we use `useCallbackRef` to avoid make it stable.\n */\n const onCloseCallback = useCallbackRef(onClose);\n\n const handleClose = React.useCallback(() => {\n onCloseCallback();\n\n clearNotification(id);\n }, [clearNotification, id, onCloseCallback]);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (!blockTransition) {\n const timeoutReference = setTimeout(() => {\n handleClose();\n }, timeout);\n\n return () => {\n clearTimeout(timeoutReference);\n };\n }\n }, [blockTransition, handleClose, timeout]);\n\n let variant: AlertVariant;\n let alertTitle: string;\n\n if (type === 'info') {\n variant = 'default';\n alertTitle = formatMessage({\n id: 'notification.default.title',\n defaultMessage: 'Information:',\n });\n } else if (type === 'danger') {\n variant = 'danger';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else if (type === 'warning') {\n variant = 'warning';\n alertTitle = formatMessage({\n id: 'notification.warning.title',\n defaultMessage: 'Warning:',\n });\n } else {\n variant = 'success';\n alertTitle = formatMessage({\n id: 'notification.success.title',\n defaultMessage: 'Success:',\n });\n }\n\n if (title) {\n alertTitle = title;\n }\n\n return (\n <Alert\n action={\n link ? (\n <Link href={link.url} isExternal>\n {link.label}\n </Link>\n ) : undefined\n }\n onClose={handleClose}\n closeLabel={formatMessage({\n id: 'global.close',\n defaultMessage: 'Close',\n })}\n title={alertTitle}\n variant={variant}\n >\n {message}\n </Alert>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @preserve\n * @description Returns an object to interact with the notification\n * system. The callbacks are wrapped in `useCallback` for a stable\n * identity.\n *\n * @example\n * ```tsx\n * import { useNotification } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { toggleNotification } = useNotification();\n *\n * return <button onClick={() => toggleNotification({ message: 'Hello world!' })}>Click me</button>;\n */\nconst useNotification = () => React.useContext(NotificationsContext);\n\nexport { NotificationsProvider, useNotification };\nexport type { NotificationConfig, NotificationsContextValue };\n","/**\n * Prefix message with 'apiError.'\n */\nexport function getPrefixedId(message: string, callback?: (prefixedMessage: string) => string) {\n const prefixedMessage = `apiError.${message}`;\n\n // if a prefix function has been passed in it is used to\n // prefix the id, e.g. to allow an error message to be\n // set only for a localization namespace\n if (typeof callback === 'function') {\n return callback(prefixedMessage);\n }\n\n return prefixedMessage;\n}\n","import { getPrefixedId } from './getPrefixedId';\n\nimport type { ApiError } from '../hooks/useAPIErrorHandler';\nimport type { FetchError } from '../utils/getFetchClient';\nimport type { errors } from '@strapi/utils';\n\nexport interface NormalizeErrorOptions {\n name?: string;\n intlMessagePrefixCallback?: (id: string) => string;\n}\n\ninterface NormalizeErrorReturn {\n id: string;\n defaultMessage: string;\n name?: string;\n values: Record<'path', string> | Record<string, never>;\n}\n\ninterface YupFormattedError {\n path: string[];\n message: string;\n name: string;\n}\n\nfunction normalizeError(\n error: ApiError | YupFormattedError,\n { name, intlMessagePrefixCallback }: NormalizeErrorOptions\n): NormalizeErrorReturn {\n const { message } = error;\n\n const normalizedError = {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n name: error.name ?? name,\n values: {},\n };\n\n if ('path' in error) {\n normalizedError.values = { path: error.path.join('.') };\n }\n\n return normalizedError;\n}\n\nconst validateErrorIsYupValidationError = (\n err: ApiError\n): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>\n typeof err.details === 'object' && err.details !== null && 'errors' in err.details;\n\n/**\n * Normalize the format of `ResponseError`\n * in places where the hook `useAPIErrorHandler` can not called\n * (e.g. outside of a React component).\n */\nexport function normalizeAPIError(\n apiError: FetchError,\n intlMessagePrefixCallback?: NormalizeErrorOptions['intlMessagePrefixCallback']\n):\n | NormalizeErrorReturn\n | { name: string; message: string | null; errors: NormalizeErrorReturn[] }\n | null {\n const error = apiError.response?.data?.error;\n\n if (error) {\n // some errors carry multiple errors (such as ValidationError)\n if (validateErrorIsYupValidationError(error)) {\n return {\n name: error.name,\n message: error?.message || null,\n errors: error.details.errors.map((err) =>\n normalizeError(err, { name: error.name, intlMessagePrefixCallback })\n ),\n };\n }\n return normalizeError(error, { intlMessagePrefixCallback });\n }\n\n return null;\n}\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n","import * as React from 'react';\n\nimport { IntlFormatters, useIntl } from 'react-intl';\n\nimport { FetchError } from '../utils/getFetchClient';\nimport { getPrefixedId } from '../utils/getPrefixedId';\nimport { NormalizeErrorOptions, normalizeAPIError } from '../utils/normalizeAPIError';\nimport { setIn } from '../utils/objects';\n\nimport type { errors } from '@strapi/utils';\n\ntype ApiError =\n | errors.ApplicationError\n | errors.ForbiddenError\n | errors.NotFoundError\n | errors.NotImplementedError\n | errors.PaginationError\n | errors.PayloadTooLargeError\n | errors.PolicyError\n | errors.RateLimitError\n | errors.UnauthorizedError\n | errors.ValidationError\n | errors.YupValidationError;\n\ninterface UnknownApiError {\n /**\n * The name of the ApiError, is always a static value.\n */\n name: 'UnknownError';\n /**\n * The error message.\n */\n message: string;\n /**\n * The error details.\n */\n details?: unknown;\n /**\n * The HTTP status code of the error.\n */\n status?: number;\n}\n\n/**\n * The last item is the fallback error SerializedError which\n * typically comes from redux-toolkit itself.\n */\ninterface SerializedError {\n /**\n * The name of the error.\n */\n name?: string;\n /**\n * The error message that explains what went wrong.\n */\n message?: string;\n /**\n * The stack trace of the error.\n */\n stack?: string;\n /**\n * A specific error code associated with the error.\n */\n code?: string;\n}\n\n/**\n * These are the types or errors we return\n * from the redux-toolkit data-fetching setup.\n */\ntype BaseQueryError = ApiError | UnknownApiError | SerializedError;\n\ninterface YupFormattedError {\n /**\n * An array representing the path to the field where the validation error occurred.\n */\n path: string[];\n /**\n * The error message describing the validation failure.\n */\n message: string;\n /**\n * The name of the error, typically identifies the type of validation error that occurred.\n */\n name: string;\n}\n\n/**\n * @public\n * @description The purpose of this hook is to offer a unified way to handle errors thrown by API endpoints, regardless of the type of error (`ValidationError`, `ApplicationErrror` ...)\nthat has been thrown.\n * @example\n * ```tsx\n * import * as React from 'react';\n * import { useFetchClient, useAPIErrorHandler, useNotification } from '@strapi/admin/admin';\n *\n * const MyComponent = () => {\n * const { get } = useFetchClient();\n * const { formatAPIError } = useAPIErrorHandler(getTrad);\n * const { toggleNotification } = useNotification();\n *\n * const handleDeleteItem = async () => {\n * try {\n * return await get('/admin');\n * } catch (error) {\n * toggleNotification({\n * type: 'danger',\n * message: formatAPIError(error),\n * });\n * }\n * };\n * return <button onClick={handleDeleteItem}>Delete item</button>;\n * };\n * ```\n */\nexport function useAPIErrorHandler(\n intlMessagePrefixCallback?: FormatAPIErrorOptions['intlMessagePrefixCallback']\n) {\n const { formatMessage } = useIntl();\n\n /**\n * @description This method try to normalize the passed error\n * and then call formatAPIError to stringify the ResponseObject\n * into a string. If it fails it will call formatFetchError and\n * return the error message.\n */\n const formatError = React.useCallback(\n (error: FetchError) => {\n // Try to normalize the passed error first. This will fail for e.g. network\n // errors which are thrown by fetchClient directly.\n try {\n const formattedErr = formatAPIError(error, { intlMessagePrefixCallback, formatMessage });\n\n if (!formattedErr) {\n return formatFetchError(error, { intlMessagePrefixCallback, formatMessage });\n }\n\n return formattedErr;\n } catch (_) {\n throw new Error('formatAPIError: Unknown error:', error);\n }\n },\n [formatMessage, intlMessagePrefixCallback]\n );\n\n return {\n /**\n * @alpha\n * Convert ValidationErrors from the API into an object that can be used by forms.\n */\n _unstableFormatValidationErrors: React.useCallback(\n (error: Extract<BaseQueryError, { name: 'ValidationError' }>): Record<string, string> => {\n if (typeof error.details === 'object' && error.details !== null) {\n if ('errors' in error.details && Array.isArray(error.details.errors)) {\n const validationErrors = error.details.errors as YupFormattedError[];\n\n return validationErrors.reduce((acc, err) => {\n const { path, message } = err;\n\n return setIn(acc, path.join('.'), message);\n }, {});\n } else {\n const details = error.details as Record<string, string[]>;\n\n return Object.keys(details).reduce((acc, key) => {\n const messages = details[key];\n\n return {\n ...acc,\n [key]: messages.join(', '),\n };\n }, {});\n }\n } else {\n return {};\n }\n },\n []\n ),\n /**\n * @alpha\n * This handles the errors given from `redux-toolkit`'s axios based baseQuery function.\n */\n _unstableFormatAPIError: React.useCallback(\n (error: BaseQueryError) => {\n const err = {\n response: {\n data: {\n error,\n },\n },\n } as FetchError;\n\n /**\n * There's a chance with SerializedErrors that the message is not set.\n * In that case we return a generic error message.\n */\n if (!error.message) {\n return 'Unknown error occured.';\n }\n\n return formatError(err);\n },\n [formatError]\n ),\n formatAPIError: formatError,\n };\n}\n\nfunction formatFetchError(\n error: FetchError,\n { intlMessagePrefixCallback, formatMessage }: FormatAPIErrorOptions\n) {\n const { code, message } = error;\n\n return formatMessage(\n {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n },\n {\n code,\n }\n );\n}\n\ntype FormatAPIErrorOptions = Partial<Pick<NormalizeErrorOptions, 'intlMessagePrefixCallback'>> &\n Pick<IntlFormatters, 'formatMessage'>;\n\n/**\n * @description This method stringifies the `ResponseObject` into\n * a string. If multiple errors are thrown by the API, which\n * happens e.g.in the case of a `ValidationError`, all errors\n * will bo concatenated into a single string.\n */\nfunction formatAPIError(\n error: FetchError,\n { formatMessage, intlMessagePrefixCallback }: FormatAPIErrorOptions\n) {\n if (!formatMessage) {\n throw new Error('The formatMessage callback is a mandatory argument.');\n }\n\n const normalizedError = normalizeAPIError(error, intlMessagePrefixCallback);\n\n if (!normalizedError) {\n return null;\n }\n\n if ('message' in normalizedError && normalizedError.message !== null) {\n return normalizedError.message;\n }\n\n // stringify multiple errors\n if ('errors' in normalizedError) {\n return normalizedError.errors\n .map(({ id, defaultMessage, values }) => formatMessage({ id, defaultMessage }, values))\n .join('\\n');\n }\n\n return formatMessage(normalizedError);\n}\n\nexport type { ApiError };\n","import * as React from 'react';\n\nimport {\n Box,\n EmptyStateLayout,\n type EmptyStateLayoutProps,\n Flex,\n Loader,\n Main,\n MainProps,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { EmptyPermissions, EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useCheckPermissionsQuery } from '../services/auth';\n\n/* -------------------------------------------------------------------------------------------------\n * Main\n * -----------------------------------------------------------------------------------------------*/\ninterface PageMainProps extends MainProps {\n children: React.ReactNode;\n}\n\nconst PageMain = ({ children, ...restProps }: PageMainProps) => {\n return <Main {...restProps}>{children}</Main>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Loading\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingProps {\n /**\n * @default 'Loading content.'\n */\n children?: React.ReactNode;\n}\n\n/**\n * @public\n * @description A loading component that should be rendered as the page\n * whilst you load the content for the aforementioned page.\n */\nconst Loading = ({ children = 'Loading content.' }: LoadingProps) => {\n return (\n <PageMain height=\"100vh\" aria-busy={true}>\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Loader>{children}</Loader>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Error\n * -----------------------------------------------------------------------------------------------*/\ninterface ErrorProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * TODO: should we start passing our errors here so they're persisted on the screen?\n * This could follow something similar to how the global app error works...?\n */\n\n/**\n * @public\n * @description An error component that should be rendered as the page\n * when an error occurs.\n */\nconst Error = (props: ErrorProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Woops! Something went wrong. Please, try again.',\n })}\n {...props}\n />\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoPermissions\n * -----------------------------------------------------------------------------------------------*/\ninterface NoPermissionsProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when the user does not have the permissions to access the content.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoPermissions = (props: NoPermissionsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyPermissions width=\"16rem\" />}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-permissions',\n defaultMessage: \"You don't have the permissions to access that content\",\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoData\n * -----------------------------------------------------------------------------------------------*/\ninterface NoDataProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when there is no data available to display.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoData = (props: NoDataProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\" background=\"neutral100\">\n <Flex alignItems=\"center\" height=\"100%\" width=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n action={props.action}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Protect\n * -----------------------------------------------------------------------------------------------*/\nexport interface ProtectProps {\n /**\n * The children to render if the user has the required permissions.\n * If providing a function, it will be called with an object containing\n * the permissions the user has based on the array you passed to the component.\n */\n children: React.ReactNode | ((args: { permissions: Permission[] }) => React.ReactNode);\n /**\n * The permissions the user needs to have to access the content.\n */\n permissions?: Array<Omit<Partial<Permission>, 'action'> & Pick<Permission, 'action'>>;\n}\n\n/**\n * @public\n * @description A wrapper component that should be used to protect a page. It will check the permissions\n * you pass to it and render the children if the user has the required permissions. If a user does not have ALL\n * the required permissions, it will redirect the user to the home page. Whilst these checks happen it will render\n * the loading component and should the check fail it will render the error component with a notification.\n */\nconst Protect = ({ permissions = [], children }: ProtectProps) => {\n const userPermissions = useAuth('Protect', (state) => state.permissions);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const matchingPermissions = userPermissions.filter(\n (permission) =>\n permissions.findIndex(\n (perm) => perm.action === permission.action && perm.subject === permission.subject\n ) >= 0\n );\n\n const shouldCheckConditions = matchingPermissions.some(\n (perm) => Array.isArray(perm.conditions) && perm.conditions.length > 0\n );\n\n const { isLoading, error, data } = useCheckPermissionsQuery(\n {\n permissions: matchingPermissions.map((perm) => ({\n action: perm.action,\n subject: perm.subject,\n })),\n },\n {\n skip: !shouldCheckConditions,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (isLoading) {\n return <Loading />;\n }\n\n if (error) {\n return <Error />;\n }\n\n const { data: permissionsData } = data || {};\n\n const canAccess =\n shouldCheckConditions && permissionsData\n ? !permissionsData.includes(false)\n : matchingPermissions.length > 0;\n\n if (!canAccess) {\n return <NoPermissions />;\n }\n\n return (\n <>\n {typeof children === 'function' ? children({ permissions: matchingPermissions }) : children}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Title\n * -----------------------------------------------------------------------------------------------*/\nexport interface TitleProps {\n children: string;\n}\n\n/**\n * @public\n * @description This component takes the children (must be a string) and sets\n * it as the title of the html.\n */\nconst Title = ({ children: title }: TitleProps) => {\n React.useEffect(() => {\n document.title = `${title} | Strapi`;\n }, [title]);\n\n return null;\n};\n\nconst Page = {\n Error,\n Loading,\n NoPermissions,\n Protect,\n NoData,\n Main: PageMain,\n Title,\n};\n\nexport { Page };\nexport type { ErrorProps, LoadingProps, NoPermissionsProps, PageMainProps as MainProps };\n","export const once = <TFunc extends (...args: any) => any>(fn: TFunc) => {\n const func = fn;\n let called = false;\n\n if (typeof func !== 'function') {\n throw new TypeError(`once requires a function parameter`);\n }\n\n return (...args: any) => {\n if (!called && process.env.NODE_ENV === 'development') {\n func(...args);\n called = true;\n }\n };\n};\n","const capitalise = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport { capitalise };\n","import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n","import { useEffect, useMemo, useState } from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { once } from '../utils/once';\nimport { capitalise } from '../utils/strings';\n\nimport { usePrev } from './usePrev';\n\ntype AllowedActions = Record<string, boolean>;\n\n/**\n * @public\n * @description This hooks takes an object or array of permissions (the latter preferred) and\n * runs through them to match against the current user's permissions as well as the RBAC middleware\n * system checking any conditions that may be present. It returns the filtered permissions as the complete\n * object from the API and a set of actions that can be performed. An action is derived from the last part\n * of the permission action e.g. `admin::roles.create` would be `canCreate`. If there's a hyphen in the action\n * this is removed and capitalised e.g `admin::roles.create-draft` would be `canCreateDraft`.\n * @example\n * ```tsx\n * import { Page, useRBAC } from '@strapi/strapi/admin'\n *\n * const MyProtectedPage = () => {\n * const { allowedActions, isLoading, error, permissions } = useRBAC([{ action: 'admin::roles.create' }])\n *\n * if(isLoading) {\n * return <Page.Loading />\n * }\n *\n * if(error){\n * return <Page.Error />\n * }\n *\n * if(!allowedActions.canCreate) {\n * return null\n * }\n *\n * return <MyPage permissions={permissions} />\n * }\n * ```\n */\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> | Permission[] = [],\n passedPermissions?: Permission[]\n): {\n allowedActions: AllowedActions;\n isLoading: boolean;\n error?: unknown;\n permissions: Permission[];\n} => {\n const isLoadingAuth = useAuth('useRBAC', (state) => state.isLoading);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<unknown>();\n const [data, setData] = useState<Record<string, boolean>>();\n\n const warnOnce = useMemo(() => once(console.warn), []);\n\n const actualPermissionsToCheck: Permission[] = useMemo(() => {\n if (Array.isArray(permissionsToCheck)) {\n return permissionsToCheck;\n } else {\n warnOnce(\n 'useRBAC: The first argument should be an array of permissions, not an object. This will be deprecated in the future.'\n );\n\n return Object.values(permissionsToCheck).flat();\n }\n }, [permissionsToCheck, warnOnce]);\n\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = useMemo(() => {\n return actualPermissionsToCheck.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: false,\n };\n }, {});\n }, [actualPermissionsToCheck]);\n\n const checkUserHasPermissions = useAuth('useRBAC', (state) => state.checkUserHasPermissions);\n\n const permssionsChecked = usePrev(actualPermissionsToCheck);\n useEffect(() => {\n if (!isEqual(permssionsChecked, actualPermissionsToCheck)) {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n checkUserHasPermissions(actualPermissionsToCheck, passedPermissions)\n .then((res) => {\n if (res) {\n setData(\n res.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: true,\n };\n }, {})\n );\n }\n })\n .catch((err) => {\n setError(err);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [\n actualPermissionsToCheck,\n checkUserHasPermissions,\n passedPermissions,\n permissionsToCheck,\n permssionsChecked,\n ]);\n\n /**\n * This hook originally would not return allowedActions\n * until all the checks were complete.\n */\n const allowedActions = Object.entries({\n ...defaultAllowedActions,\n ...data,\n }).reduce((acc, [name, allowed]) => {\n acc[`can${capitalise(name)}`] = allowed;\n\n return acc;\n }, {} as AllowedActions);\n\n return {\n allowedActions,\n permissions: actualPermissionsToCheck,\n isLoading: isLoading || isLoadingAuth,\n error,\n };\n};\n\nconst getActionName = (permission: Permission): string => {\n const [action = ''] = permission.action.split('.').slice(-1);\n return action.split('-').map(capitalise).join('');\n};\n\nexport { useRBAC };\nexport type { AllowedActions };\n","import { createContext } from '../components/Context';\n\ninterface AppInfoContextValue {\n autoReload?: boolean;\n communityEdition?: boolean;\n currentEnvironment?: string;\n dependencies?: Record<string, string>;\n latestStrapiReleaseTag?: string;\n nodeVersion?: string;\n projectId?: string | null;\n shouldUpdateStrapi?: boolean;\n strapiVersion?: string | null;\n useYarn?: boolean;\n userId?: string;\n}\n\nconst [AppInfoProvider, useAppInfo] = createContext<AppInfoContextValue>('AppInfo', {});\n\nexport { AppInfoProvider, useAppInfo };\n\nexport type { AppInfoContextValue };\n","import * as React from 'react';\n\nimport axios, { AxiosResponse } from 'axios';\n\nimport { useInitQuery, useTelemetryPropertiesQuery } from '../services/admin';\n\nimport { useAppInfo } from './AppInfo';\nimport { useAuth } from './Auth';\n\nexport interface TelemetryProperties {\n useTypescriptOnServer?: boolean;\n useTypescriptOnAdmin?: boolean;\n isHostedOnStrapiCloud?: boolean;\n numberOfAllContentTypes?: number;\n numberOfComponents?: number;\n numberOfDynamicZones?: number;\n}\n\nexport interface TrackingContextValue {\n uuid?: string | boolean;\n telemetryProperties?: TelemetryProperties;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nconst TrackingContext = React.createContext<TrackingContextValue>({\n uuid: false,\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface TrackingProviderProps {\n children: React.ReactNode;\n}\n\nconst TrackingProvider = ({ children }: TrackingProviderProps) => {\n const token = useAuth('App', (state) => state.token);\n const { data: initData } = useInitQuery();\n const { uuid } = initData ?? {};\n\n const { data } = useTelemetryPropertiesQuery(undefined, {\n skip: !initData?.uuid || !token,\n });\n\n React.useEffect(() => {\n if (uuid && data) {\n const event = 'didInitializeAdministration';\n try {\n fetch('https://analytics.strapi.io/api/v2/track', {\n method: 'POST',\n body: JSON.stringify({\n // This event is anonymous\n event,\n userId: '',\n eventPropeties: {},\n groupProperties: { ...data, projectId: uuid },\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n });\n } catch {\n // silence is golden\n }\n }\n }, [data, uuid]);\n\n const value = React.useMemo(\n () => ({\n uuid,\n telemetryProperties: data,\n }),\n [uuid, data]\n );\n\n return <TrackingContext.Provider value={value}>{children}</TrackingContext.Provider>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * We can group these events together because none have properties so there's no benefit\n * to having them as separate types.\n *\n * Meanwhile those with properties have different property shapes corresponding to the specific\n * event so understanding which properties go with which event is very helpful.\n */\ninterface EventWithoutProperties {\n name:\n | 'changeComponentsOrder'\n | 'didAccessAuthenticatedAdministration'\n | 'didAddComponentToDynamicZone'\n | 'didBulkDeleteEntries'\n | 'didNotBulkDeleteEntries'\n | 'didChangeDisplayedFields'\n | 'didCheckDraftRelations'\n | 'didClickGuidedTourHomepageApiTokens'\n | 'didClickGuidedTourHomepageContentManager'\n | 'didClickGuidedTourHomepageContentTypeBuilder'\n | 'didClickGuidedTourStep1CollectionType'\n | 'didClickGuidedTourStep2ContentManager'\n | 'didClickGuidedTourStep3ApiTokens'\n | 'didClickonBlogSection'\n | 'didClickonCodeExampleSection'\n | 'didClickonReadTheDocumentationSection'\n | 'didClickOnTryStrapiCloudSection'\n | 'didClickonTutorialSection'\n | 'didCreateGuidedTourCollectionType'\n | 'didCreateGuidedTourEntry'\n | 'didCreateNewRole'\n | 'didCreateRole'\n | 'didDeleteToken'\n | 'didDuplicateRole'\n | 'didEditEditSettings'\n | 'didEditEmailTemplates'\n | 'didEditFieldNameOnContentType'\n | 'didEditListSettings'\n | 'didEditMediaLibraryConfig'\n | 'didEditNameOfContentType'\n | 'didGenerateGuidedTourApiTokens'\n | 'didGoToMarketplace'\n | 'didLaunchGuidedtour'\n | 'didMissMarketplacePlugin'\n | 'didNotCreateFirstAdmin'\n | 'didNotSaveComponent'\n | 'didPluginLearnMore'\n | 'didPublishEntry'\n | 'didBulkPublishEntries'\n | 'didNotBulkPublishEntries'\n | 'didUnpublishEntry'\n | 'didBulkUnpublishEntries'\n | 'didNotBulkUnpublishEntries'\n | 'didSaveComponent'\n | 'didSaveContentType'\n | 'didSearch'\n | 'didSkipGuidedtour'\n | 'didSubmitPlugin'\n | 'didSubmitProvider'\n | 'didUpdateConditions'\n | 'didSelectAllMediaLibraryElements'\n | 'didSelectContentTypeFieldSettings'\n | 'didSelectContentTypeSettings'\n | 'didEditAuthenticationProvider'\n | 'hasClickedCTBAddFieldBanner'\n | 'removeComponentFromDynamicZone'\n | 'willAddMoreFieldToContentType'\n | 'willBulkDeleteEntries'\n | 'willBulkPublishEntries'\n | 'willBulkUnpublishEntries'\n | 'willChangeNumberOfEntriesPerPage'\n | 'willCheckDraftRelations'\n | 'willCreateComponent'\n | 'willCreateComponentFromAttributesModal'\n | 'willCreateContentType'\n | 'willCreateFirstAdmin'\n | 'willCreateNewRole'\n | 'willCreateRole'\n | 'willCreateSingleType'\n | 'willCreateStage'\n | 'willCreateWorkflow'\n | 'willDeleteEntryFromList'\n | 'willDeleteFieldOfContentType'\n | 'willDuplicateRole'\n | 'willEditEditLayout'\n | 'willEditEmailTemplates'\n | 'willEditEntryFromButton'\n | 'willEditEntryFromList'\n | 'willEditFieldOfContentType'\n | 'willEditMediaLibraryConfig'\n | 'willEditNameOfContentType'\n | 'willEditNameOfSingleType'\n | 'willEditAuthenticationProvider'\n | 'willEditFieldNameOnContentType'\n | 'willEditStage'\n | 'willFilterEntries'\n | 'willInstallPlugin'\n | 'willPublishEntry'\n | 'willUnpublishEntry'\n | 'willSaveComponent'\n | 'willSaveContentType'\n | 'willSaveContentTypeLayout'\n | 'didEditFieldNameOnContentType'\n | 'didCreateRelease';\n properties?: never;\n}\n\ninterface DidFilterMediaLibraryElementsEvent {\n name: 'didFilterMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n filter: string;\n };\n}\n\ninterface DidSortMediaLibraryElementsEvent {\n name: 'didSortMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n sort: string;\n };\n}\n\ninterface DidCropFileEvent {\n name: 'didCropFile';\n properties: MediaEvents['properties'] & {\n duplicatedFile: null | boolean;\n };\n}\n\ninterface DidSelectFile {\n name: 'didSelectFile';\n properties: MediaEvents['properties'] & {\n source: 'url' | 'computer';\n };\n}\n\ninterface DidEditMediaLibraryElementsEvent {\n name: 'didEditMediaLibraryElements';\n properties: MediaEvents['properties'] & {\n type: string;\n changeLocation: string;\n };\n}\n\ninterface MediaEvents {\n name:\n | 'didSearchMediaLibraryElements'\n | 'didReplaceMedia'\n | 'didAddMediaLibraryFolders'\n | 'willAddMediaLibraryAssets';\n properties: {\n location: string;\n };\n}\n\ninterface DidSelectContentTypeFieldTypeEvent {\n name: 'didSelectContentTypeFieldType';\n properties: {\n type?: string;\n };\n}\n\ninterface DidChangeModeEvent {\n name: 'didChangeMode';\n properties: {\n newMode: string;\n };\n}\ninterface DidSubmitWithErrorsFirstAdminEvent {\n name: 'didSubmitWithErrorsFirstAdmin';\n properties: {\n count: string;\n };\n}\n\ninterface WillNavigateEvent {\n name: 'willNavigate';\n properties: {\n from: string;\n to: string;\n };\n}\n\ninterface DidAccessTokenListEvent {\n name: 'didAccessTokenList';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n number: number;\n };\n}\ninterface LogoEvent {\n name: 'didChangeLogo' | 'didClickResetLogo';\n properties: {\n logo: 'menu' | 'auth';\n };\n}\n\ninterface TokenEvents {\n name:\n | 'didCopyTokenKey'\n | 'didAddTokenFromList'\n | 'didEditTokenFromList'\n | 'willAccessTokenList'\n | 'willAddTokenFromList'\n | 'willCreateToken'\n | 'willDeleteToken'\n | 'willEditToken'\n | 'willEditTokenFromList';\n properties: {\n tokenType: 'api-token' | 'transfer-token';\n };\n}\n\ninterface WillModifyTokenEvent {\n name: 'didCreateToken' | 'didEditToken';\n properties: {\n tokenType: TokenEvents['properties']['tokenType'];\n type: 'custom' | 'full-access' | 'read-only' | Array<'push' | 'pull' | 'push-pull'>;\n };\n}\n\ninterface DeleteEntryEvents {\n name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface CreateEntryEvents {\n name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface UpdateEntryEvents {\n name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry';\n properties: {\n status?: string;\n error?: unknown;\n };\n}\n\ninterface DidFilterEntriesEvent {\n name: 'didFilterEntries';\n properties: {\n useRelation: boolean;\n };\n}\n\ninterface DidPublishRelease {\n name: 'didPublishRelease';\n properties: {\n totalEntries: number;\n totalPublishedEntries: number;\n totalUnpublishedEntries: number;\n };\n}\n\ntype EventsWithProperties =\n | CreateEntryEvents\n | DidAccessTokenListEvent\n | DidChangeModeEvent\n | DidCropFileEvent\n | DeleteEntryEvents\n | DidEditMediaLibraryElementsEvent\n | DidFilterMediaLibraryElementsEvent\n | DidFilterEntriesEvent\n | DidSelectContentTypeFieldTypeEvent\n | DidSelectFile\n | DidSortMediaLibraryElementsEvent\n | DidSubmitWithErrorsFirstAdminEvent\n | LogoEvent\n | TokenEvents\n | UpdateEntryEvents\n | WillModifyTokenEvent\n | WillNavigateEvent\n | DidPublishRelease;\n\nexport type TrackingEvent = EventWithoutProperties | EventsWithProperties;\nexport interface UseTrackingReturn {\n /**\n * This type helps show all the available event names before you start typing,\n * however autocomplete isn't great.\n */\n trackUsage<TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n trackUsage<TEvent extends Extract<TrackingEvent, { properties?: never }>>(\n event: TEvent['name'],\n properties?: never\n ): Promise<null | AxiosResponse<string>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackUsage<TEvent extends Extract<TrackingEvent, { properties: object }>>(\n event: TEvent['name'],\n properties: TEvent['properties']\n ): Promise<null | AxiosResponse<string>>;\n}\n\n/**\n * @description Used to send amplitude events to the Strapi Tracking hub.\n *\n * @example\n * ```tsx\n * import { useTracking } from '@strapi/strapi/admin';\n *\n * const MyComponent = () => {\n * const { trackUsage } = useTracking();\n *\n * const handleClick = () => {\n * trackUsage('my-event', { myProperty: 'myValue' });\n * }\n *\n * return <button onClick={handleClick}>Send Event</button>\n * }\n * ```\n */\nconst useTracking = (): UseTrackingReturn => {\n const { uuid, telemetryProperties } = React.useContext(TrackingContext);\n const userId = useAppInfo('useTracking', (state) => state.userId);\n const trackUsage = React.useCallback(\n async <TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties?: TEvent['properties']\n ) => {\n try {\n if (uuid && !window.strapi.telemetryDisabled) {\n const res = await axios.post<string>(\n 'https://analytics.strapi.io/api/v2/track',\n {\n event,\n userId,\n eventProperties: { ...properties },\n userProperties: {},\n groupProperties: {\n ...telemetryProperties,\n projectId: uuid,\n projectType: window.strapi.projectType,\n },\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }\n );\n\n return res;\n }\n } catch (err) {\n // Silence is golden\n }\n\n return null;\n },\n [telemetryProperties, userId, uuid]\n );\n\n return { trackUsage };\n};\n\nexport { TrackingProvider, useTracking };\n","import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport { useIntl } from 'react-intl';\n\nimport { UpdateProjectSettings } from '../../../shared/contracts/admin';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../hooks/useRBAC';\nimport {\n ConfigurationLogo,\n useInitQuery,\n useProjectSettingsQuery,\n useUpdateProjectSettingsMutation,\n} from '../services/admin';\n\nimport { useAuth } from './Auth';\nimport { useNotification } from './Notifications';\nimport { useTracking } from './Tracking';\n\nimport type { StrapiApp } from '../StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface UpdateProjectSettingsBody {\n authLogo:\n | ((UpdateProjectSettings.Request['body']['authLogo'] | ConfigurationLogo['custom']) & {\n rawFile?: File;\n })\n | null;\n menuLogo:\n | ((UpdateProjectSettings.Request['body']['menuLogo'] | ConfigurationLogo['custom']) & {\n rawFile?: File;\n })\n | null;\n}\n\ninterface ConfigurationContextValue {\n logos: {\n auth: ConfigurationLogo;\n menu: ConfigurationLogo;\n };\n showTutorials: boolean;\n showReleaseNotification: boolean;\n updateProjectSettings: (body: UpdateProjectSettingsBody) => Promise<void>;\n}\n\nconst [ConfigurationContextProvider, useConfiguration] =\n createContext<ConfigurationContextValue>('ConfigurationContext');\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationProviderProps {\n children: React.ReactNode;\n defaultAuthLogo: StrapiApp['configurations']['authLogo'];\n defaultMenuLogo: StrapiApp['configurations']['menuLogo'];\n showReleaseNotification?: boolean;\n showTutorials?: boolean;\n}\n\nconst ConfigurationProvider = ({\n children,\n defaultAuthLogo,\n defaultMenuLogo,\n showReleaseNotification = false,\n showTutorials = false,\n}: ConfigurationProviderProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['project-settings']\n );\n const token = useAuth('ConfigurationProvider', (state) => state.token);\n\n const {\n allowedActions: { canRead },\n } = useRBAC(permissions);\n\n const {\n data: { authLogo: customAuthLogo, menuLogo: customMenuLogo } = {},\n error,\n isLoading,\n } = useInitQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'app.containers.App.notification.error.init' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n const { data, isSuccess } = useProjectSettingsQuery(undefined, {\n skip: !token || !canRead,\n });\n\n const [updateProjectSettingsMutation] = useUpdateProjectSettingsMutation();\n\n const updateProjectSettings = React.useCallback(\n async (body: UpdateProjectSettingsBody) => {\n const formData = new FormData();\n\n /**\n * We either only send files or we send null values.\n * Null removes the logo. If you don't want to effect\n * an existing logo, don't send anything.\n */\n Object.entries(body).forEach(([key, value]) => {\n if (value?.rawFile) {\n formData.append(key, value.rawFile);\n } else if (value === null) {\n formData.append(key, JSON.stringify(value));\n }\n });\n\n const res = await updateProjectSettingsMutation(formData);\n\n if ('data' in res) {\n const updatedMenuLogo = !!res.data.menuLogo && !!body.menuLogo?.rawFile;\n const updatedAuthLogo = !!res.data.authLogo && !!body.authLogo?.rawFile;\n\n if (updatedMenuLogo) {\n trackUsage('didChangeLogo', {\n logo: 'menu',\n });\n }\n\n if (updatedAuthLogo) {\n trackUsage('didChangeLogo', {\n logo: 'auth',\n });\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'app', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n },\n [formatAPIError, formatMessage, toggleNotification, trackUsage, updateProjectSettingsMutation]\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <ConfigurationContextProvider\n showReleaseNotification={showReleaseNotification}\n showTutorials={showTutorials}\n logos={{\n menu: {\n custom: isSuccess\n ? data?.menuLogo\n : {\n url: customMenuLogo ?? '',\n },\n default: defaultMenuLogo,\n },\n auth: {\n custom: isSuccess\n ? data?.authLogo\n : {\n url: customAuthLogo ?? '',\n },\n default: defaultAuthLogo,\n },\n }}\n updateProjectSettings={updateProjectSettings}\n >\n {children}\n </ConfigurationContextProvider>\n );\n};\n\nexport {\n ConfigurationContextProvider as _internalConfigurationContextProvider,\n ConfigurationProvider,\n useConfiguration,\n};\nexport type {\n ConfigurationProviderProps,\n ConfigurationContextValue,\n ConfigurationLogo,\n UpdateProjectSettingsBody,\n};\n","import * as React from 'react';\n\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\nimport { useTypedSelector } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, messages }: LanguageProviderProps) => {\n const locale = useTypedSelector((state) => state.admin_app.language.locale);\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\n {children}\n </IntlProvider>\n );\n};\n\nexport { LanguageProvider };\nexport type { LanguageProviderProps };\n","import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { DefaultTheme, createGlobalStyle } from 'styled-components';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { setAvailableThemes } from '../reducer';\n\ninterface ThemeProps {\n children: React.ReactNode;\n themes: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n}\n\nconst Theme = ({ children, themes }: ThemeProps) => {\n const { currentTheme } = useTypedSelector((state) => state.admin_app.theme);\n const [systemTheme, setSystemTheme] = React.useState<'light' | 'dark'>();\n const { locale } = useIntl();\n const dispatch = useDispatch();\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n React.useEffect(() => {\n dispatch(setAvailableThemes(Object.keys(themes)));\n }, [dispatch, themes]);\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\nexport type { ThemeProps };\n"],"names":["permissions","STORAGE_KEYS","logoutAction","loginAction","login","token","logout","Error","createContext"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenTypeSelect-88Lcbz54.js","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/utils/locales.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Dialog, Flex } from '@strapi/design-system';\nimport { Check, ArrowClockwise } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nimport { getDateFnsLocaleName } from '../../../../../../utils/locales';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n locale: locales[getDateFnsLocaleName(language)],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Field, Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={onChange} disabled={!canEditInputs} value={value} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { Field, TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["useIntl","React","useNotification","useAPIErrorHandler","useRegenerateTokenMutation","Dialog","jsx","Button","ArrowClockwise","ConfirmDialog","Layouts","jsxs","Flex","Check","BackButton","useTracking","useClipboard","token","ContentBox","IconButton","Duplicate","Key","locales","format","addDays","Fragment","Field","SingleSelect","value","SingleSelectOption","Typography","Textarea","TextInput","label"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,UAAa,GAAA,CAAC,EAAE,YAAA,EAAc,KAA2B,KAAA;AAC7D,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIA,iBAAQ,EAAA,CAAA;AAClC,EAAA,MAAM,CAAC,iBAAmB,EAAA,oBAAoB,CAAI,GAAAC,gBAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AAEtE,EAAA,MAAM,CAAC,qBAAuB,EAAA,wBAAwB,CAAI,GAAAA,gBAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AAC9E,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,qBAAgB,EAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,uBAAA,EAAyB,cAAe,EAAA,GAAIC,wBAAmB,EAAA,CAAA;AAEvE,EAAM,MAAA,CAAC,eAAe,CAAA,GAAIC,yCAA2B,EAAA,CAAA;AAErD,EAAA,MAAM,iBAAiB,YAAY;AACjC,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAM,MAAM,eAAA,CAAgB,GAAG,CAAA,CAAA;AAErC,MAAA,IAAI,WAAW,GAAK,EAAA;AAClB,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,QAAA;AAAA,UACN,OAAA,EAAS,cAAe,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,SAClC,CAAA,CAAA;AAED,QAAA,OAAA;AAAA,OACF;AAEA,MAAA,IAAI,YAAc,EAAA;AAChB,QAAa,YAAA,CAAA,GAAA,CAAI,KAAK,SAAS,CAAA,CAAA;AAAA,OACjC;AAAA,aACO,KAAO,EAAA;AACd,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,SAAS,aAAc,CAAA;AAAA,UACrB,EAAI,EAAA,oBAAA;AAAA,UACJ,cAAgB,EAAA,sBAAA;AAAA,SACjB,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACD,SAAA;AACA,MAAA,wBAAA,CAAyB,KAAK,CAAA,CAAA;AAAA,KAChC;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,4BAA4B,YAAY;AAC5C,IAAe,cAAA,EAAA,CAAA;AACf,IAAA,oBAAA,CAAqB,KAAK,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAA,uCACGC,mBAAO,CAAA,IAAA,EAAP,EAAY,IAAM,EAAA,iBAAA,EAAmB,cAAc,oBAClD,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAAD,mBAAA,CAAO,SAAP,EACC,QAAA,kBAAAC,cAAA;AAAA,MAACC,mBAAA;AAAA,MAAA;AAAA,QACC,SAAA,iCAAYC,oBAAe,EAAA,EAAA,CAAA;AAAA,QAC3B,IAAK,EAAA,QAAA;AAAA,QACL,IAAK,EAAA,GAAA;AAAA,QACL,OAAQ,EAAA,UAAA;AAAA,QACR,OAAA,EAAS,MAAM,oBAAA,CAAqB,IAAI,CAAA;AAAA,QACxC,IAAK,EAAA,YAAA;AAAA,QAEJ,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,4BAAA;AAAA,UACJ,cAAgB,EAAA,YAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KAEL,EAAA,CAAA;AAAA,oBAEAF,cAAA;AAAA,MAACG,mBAAA;AAAA,MAAA;AAAA,QACC,OAAO,aAAc,CAAA;AAAA,UACnB,EAAI,EAAA,wCAAA;AAAA,UACJ,cAAgB,EAAA,kBAAA;AAAA,SACjB,CAAA;AAAA,QACD,SACE,kBAAAH,cAAA;AAAA,UAACC,mBAAA;AAAA,UAAA;AAAA,YACC,SAAA,iCAAYC,oBAAe,EAAA,EAAA,CAAA;AAAA,YAC3B,OAAS,EAAA,qBAAA;AAAA,YACT,OAAS,EAAA,yBAAA;AAAA,YAER,QAAc,EAAA,aAAA,CAAA;AAAA,cACb,EAAI,EAAA,mCAAA;AAAA,cACJ,cAAgB,EAAA,YAAA;AAAA,aACjB,CAAA;AAAA,WAAA;AAAA,SACH;AAAA,QAGD,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,sCAAA;AAAA,UACJ,cAAgB,EAAA,iDAAA;AAAA,SACjB,CAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAiBO,MAAM,WAAW,CAA8B;AAAA,EACpD,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AACF,CAA6B,KAAA;AAC3B,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIR,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,gBAAA,GAAmB,CAAC,MAAmB,KAAA;AAC3C,IAAS,QAAA,CAAA;AAAA,MACP,GAAG,KAAA;AAAA,MACH,SAAW,EAAA,MAAA;AAAA,KACZ,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EACE,uBAAAM,cAAA;AAAA,IAACI,aAAQ,CAAA,MAAA;AAAA,IAAR;AAAA,MACC,KAAO,EAAA,KAAA,EAAO,IAAQ,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,MACzC,aACE,EAAA,aAAA,mBACGC,eAAA,CAAAC,iBAAA,EAAA,EAAK,KAAK,CACR,EAAA,QAAA,EAAA;AAAA,QAAA,aAAA,IAAiB,OAAO,EACvB,oBAAAN,cAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,YAAc,EAAA,gBAAA;AAAA,YACd,KAAK,CAAG,EAAA,aAAa,CAAG,EAAA,KAAA,EAAO,MAAM,EAAE,CAAA,CAAA;AAAA,WAAA;AAAA,SACzC;AAAA,wBAEFA,cAAA;AAAA,UAACC,mBAAA;AAAA,UAAA;AAAA,YACC,QAAU,EAAA,YAAA;AAAA,YACV,OAAS,EAAA,YAAA;AAAA,YACT,SAAA,iCAAYM,WAAM,EAAA,EAAA,CAAA;AAAA,YAClB,IAAK,EAAA,QAAA;AAAA,YACL,IAAK,EAAA,GAAA;AAAA,YAEJ,QAAc,EAAA,aAAA,CAAA;AAAA,cACb,EAAI,EAAA,aAAA;AAAA,cACJ,cAAgB,EAAA,MAAA;AAAA,aACjB,CAAA;AAAA,WAAA;AAAA,SACH;AAAA,OACF,EAAA,CAAA,GAEA,aACA,IAAA,KAAA,EAAO,EACL,oBAAAP,cAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,YAAc,EAAA,gBAAA;AAAA,UACd,KAAK,CAAG,EAAA,aAAa,CAAG,EAAA,KAAA,EAAO,MAAM,EAAE,CAAA,CAAA;AAAA,SAAA;AAAA,OACzC;AAAA,MAIN,gBAAA,iCAAmBQ,gBAAW,EAAA,EAAA,CAAA;AAAA,MAC9B,QAAQ,EAAA,IAAA;AAAA,KAAA;AAAA,GACV,CAAA;AAEJ;;ACtKO,MAAM,QAAW,GAAA,CAAC,EAAE,KAAA,EAAO,WAA+B,KAAA;AAC/D,EAAM,MAAA,EAAE,aAAc,EAAA,GAAId,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIE,qBAAgB,EAAA,CAAA;AAC/C,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIa,iBAAY,EAAA,CAAA;AAEnC,EAAM,MAAA,EAAE,IAAK,EAAA,GAAIC,kBAAa,EAAA,CAAA;AAE9B,EAAM,MAAA,WAAA,GAAc,CAACC,MAAAA,KAAkC,YAAY;AACjE,IAAA,IAAIA,MAAO,EAAA;AACT,MAAM,MAAA,OAAA,GAAU,MAAM,IAAA,CAAKA,MAAK,CAAA,CAAA;AAEhC,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,UAAA,CAAW,iBAAmB,EAAA;AAAA,UAC5B,SAAA;AAAA,SACD,CAAA,CAAA;AACD,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,SAAA;AAAA,UACN,OAAS,EAAA,aAAA,CAAc,EAAE,EAAA,EAAI,uCAAuC,CAAA;AAAA,SACrE,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EACE,uBAAAX,cAAA;AAAA,IAACY,qBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EACE,yBACGZ,cAAA,CAAA,MAAA,EAAA,EAAK,OAAO,EAAE,SAAA,EAAW,SACxB,EAAA,QAAA,kBAAAA,cAAA;AAAA,QAACa,uBAAA;AAAA,QAAA;AAAA,UACC,OAAO,aAAc,CAAA;AAAA,YACnB,EAAI,EAAA,qCAAA;AAAA,YACJ,cAAgB,EAAA,mBAAA;AAAA,WACjB,CAAA;AAAA,UACD,OAAA,EAAS,YAAY,KAAK,CAAA;AAAA,UAC1B,WAAa,EAAA,CAAA;AAAA,UACb,KAAO,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,QAAQ,QAAS,EAAA;AAAA,UAEtC,yCAACC,eAAU,EAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAEf,EAAA,CAAA;AAAA,MAGJ,KAAA,EACE,SACA,aAAc,CAAA;AAAA,QACZ,EAAI,EAAA,gCAAA;AAAA,QACJ,cAAgB,EAAA,sCAAA;AAAA,OACjB,CAAA;AAAA,MAEH,QAAA,EACE,QACI,aAAc,CAAA;AAAA,QACZ,EAAI,EAAA,kCAAA;AAAA,QACJ,cAAgB,EAAA,kEAAA;AAAA,OACjB,IACD,aAAc,CAAA;AAAA,QACZ,EAAI,EAAA,kCAAA;AAAA,QACJ,cAAgB,EAAA,yDAAA;AAAA,OACjB,CAAA;AAAA,MAEP,IAAA,iCAAOC,SAAI,EAAA,EAAA,CAAA;AAAA,MACX,cAAe,EAAA,YAAA;AAAA,KAAA;AAAA,GACjB,CAAA;AAEJ;;ACtEA,MAAM,oBAAA,GAAuB,CAAC,MAA+B,KAAA;AAC3D,EAAA,IAAI,OAAO,IAAK,CAAAC,kBAAO,CAAE,CAAA,QAAA,CAAS,MAAM,CAAG,EAAA;AACzC,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,MAAA,CAAA;AACT,CAAA;;ACTO,MAAM,mBAAsB,GAAA,CACjC,SACA,EAAA,QAAA,EACA,WAAmB,IAChB,KAAA;AACH,EAAI,IAAA,QAAA,IAAY,OAAO,QAAA,KAAa,QAAU,EAAA;AAC5C,IAAA,MAAM,cAAiB,GAAA,QAAA,GAAW,EAAK,GAAA,EAAA,GAAK,EAAK,GAAA,GAAA,CAAA;AAEjD,IAAO,OAAAC,cAAA,CAAOC,gBAAQ,IAAI,IAAA,CAAK,SAAS,CAAG,EAAA,cAAc,GAAG,KAAO,EAAA;AAAA,MACjE,MAAQ,EAAAF,kBAAA,CAAQ,oBAAqB,CAAA,QAAQ,CAAC,CAAA;AAAA,KAC/C,CAAA,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,WAAA,CAAA;AACT,CAAA;;ACjBA,MAAM,+BAAA,GAAkC,CACtC,OACiC,KAAA;AACjC,EAAA,OAAO,OAAO,OAAA,KAAY,QAAY,IAAA,OAAA,KAAY,QAAQ,IAAQ,IAAA,OAAA,CAAA;AACpE,CAAA;;ACWO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AACF,CAA0B,KAAA;AACxB,EAAM,MAAA,EAAE,aAAc,EAAA,GAAItB,iBAAQ,EAAA,CAAA;AAElC,EAAA,uBAEIW,eAAA,CAAAc,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAAd,eAAA;AAAA,MAACe,kBAAM,CAAA,IAAA;AAAA,MAAN;AAAA,QACC,OACE,KACI,GAAA,aAAA;AAAA,UACE,+BAAA,CAAgC,KAAK,CACjC,GAAA,KAAA,GACA,EAAE,EAAI,EAAA,KAAA,EAAO,gBAAgB,KAAM,EAAA;AAAA,SAEzC,GAAA,KAAA,CAAA;AAAA,QAEN,IAAK,EAAA,UAAA;AAAA,QACL,QAAQ,EAAA,IAAA;AAAA,QAER,QAAA,EAAA;AAAA,0BAACpB,cAAA,CAAAoB,kBAAA,CAAM,KAAN,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,YACb,EAAI,EAAA,+BAAA;AAAA,YACJ,cAAgB,EAAA,gBAAA;AAAA,WACjB,CACH,EAAA,CAAA;AAAA,0BACAf,eAAA;AAAA,YAACgB,yBAAA;AAAA,YAAA;AAAA,cACC,KAAA;AAAA,cACA,QAAA,EAAU,CAACC,MAAU,KAAA;AAEnB,gBAAS,QAAA,CAAA,EAAE,QAAQ,EAAE,IAAA,EAAM,YAAY,KAAAA,EAAAA,MAAAA,IAAS,CAAA,CAAA;AAAA,eAClD;AAAA,cACA,UAAU,CAAC,UAAA;AAAA,cACX,WAAY,EAAA,QAAA;AAAA,cAEZ,QAAA,EAAA;AAAA,gCAACtB,cAAA,CAAAuB,+BAAA,EAAA,EAAmB,KAAM,EAAA,WAAA,EACvB,QAAc,EAAA,aAAA,CAAA;AAAA,kBACb,EAAI,EAAA,iCAAA;AAAA,kBACJ,cAAgB,EAAA,QAAA;AAAA,iBACjB,CACH,EAAA,CAAA;AAAA,gCACCvB,cAAA,CAAAuB,+BAAA,EAAA,EAAmB,KAAM,EAAA,YAAA,EACvB,QAAc,EAAA,aAAA,CAAA;AAAA,kBACb,EAAI,EAAA,kCAAA;AAAA,kBACJ,cAAgB,EAAA,SAAA;AAAA,iBACjB,CACH,EAAA,CAAA;AAAA,gCACCvB,cAAA,CAAAuB,+BAAA,EAAA,EAAmB,KAAM,EAAA,YAAA,EACvB,QAAc,EAAA,aAAA,CAAA;AAAA,kBACb,EAAI,EAAA,kCAAA;AAAA,kBACJ,cAAgB,EAAA,SAAA;AAAA,iBACjB,CACH,EAAA,CAAA;AAAA,gCACCvB,cAAA,CAAAuB,+BAAA,EAAA,EAAmB,KAAM,EAAA,GAAA,EACvB,QAAc,EAAA,aAAA,CAAA;AAAA,kBACb,EAAI,EAAA,oCAAA;AAAA,kBACJ,cAAgB,EAAA,WAAA;AAAA,iBACjB,CACH,EAAA,CAAA;AAAA,eAAA;AAAA,aAAA;AAAA,WACF;AAAA,0BACAvB,cAAA,CAACoB,kBAAM,CAAA,KAAA,EAAN,EAAY,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KACf;AAAA,oBACApB,cAAA,CAACwB,2BAAW,OAAQ,EAAA,IAAA,EAAK,WAAU,YAChC,EAAA,QAAA,EAAA,CAAC,UACA,IAAA,CAAA,EAAG,aAAc,CAAA;AAAA,MACf,EAAI,EAAA,0CAAA;AAAA,MACJ,cAAgB,EAAA,iBAAA;AAAA;AAAA,KAEjB,CAAC,CAAK,EAAA,EAAA,mBAAA,CAAoB,KAAO,EAAA,SAAA,EAAW,QAAS,CAAA,KAAA,IAAS,EAAI,EAAA,EAAE,CAAC,CAAC,CAC3E,CAAA,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;ACnFO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AACF,CAA6B,KAAA;AAC3B,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI9B,iBAAQ,EAAA,CAAA;AAElC,EACE,uBAAAW,eAAA;AAAA,IAACe,kBAAM,CAAA,IAAA;AAAA,IAAN;AAAA,MACC,IAAK,EAAA,aAAA;AAAA,MACL,OACE,KACI,GAAA,aAAA;AAAA,QACE,+BAAA,CAAgC,KAAK,CAAA,GACjC,KACA,GAAA;AAAA,UACE,EAAI,EAAA,KAAA;AAAA,UACJ,cAAgB,EAAA,KAAA;AAAA,SAClB;AAAA,OAEN,GAAA,KAAA,CAAA;AAAA,MAGN,QAAA,EAAA;AAAA,wBAACpB,cAAA,CAAAoB,kBAAA,CAAM,KAAN,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,kCAAA;AAAA,UACJ,cAAgB,EAAA,aAAA;AAAA,SACjB,CACH,EAAA,CAAA;AAAA,uCACCK,qBAAS,EAAA,EAAA,QAAA,EAAoB,QAAU,EAAA,CAAC,eAAe,KAAc,EAAA,CAAA;AAAA,wBACtEzB,cAAA,CAACoB,kBAAM,CAAA,KAAA,EAAN,EAAY,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACf,CAAA;AAEJ;;AClCO,MAAM,YAAY,CAAC,EAAE,OAAO,KAAO,EAAA,QAAA,EAAU,eAAoC,KAAA;AACtF,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI1B,iBAAQ,EAAA,CAAA;AAElC,EACE,uBAAAW,eAAA;AAAA,IAACe,kBAAM,CAAA,IAAA;AAAA,IAAN;AAAA,MACC,IAAK,EAAA,MAAA;AAAA,MACL,OACE,KACI,GAAA,aAAA;AAAA,QACE,+BAAA,CAAgC,KAAK,CAAI,GAAA,KAAA,GAAQ,EAAE,EAAI,EAAA,KAAA,EAAO,gBAAgB,KAAM,EAAA;AAAA,OAEtF,GAAA,KAAA,CAAA;AAAA,MAEN,QAAQ,EAAA,IAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAACpB,cAAA,CAAAoB,kBAAA,CAAM,KAAN,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,EAAI,EAAA,2BAAA;AAAA,UACJ,cAAgB,EAAA,MAAA;AAAA,SACjB,CACH,EAAA,CAAA;AAAA,uCACCM,sBAAU,EAAA,EAAA,QAAA,EAAoB,KAAc,EAAA,QAAA,EAAU,CAAC,aAAe,EAAA,CAAA;AAAA,wBACvE1B,cAAA,CAACoB,kBAAM,CAAA,KAAA,EAAN,EAAY,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACf,CAAA;AAEJ;;ACnBO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,IAAO,GAAA,MAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAU,EAAC;AAAA,EACX,KAAA;AACF,CAA4B,KAAA;AAC1B,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI1B,iBAAQ,EAAA,CAAA;AAElC,EACE,uBAAAW,eAAA;AAAA,IAACe,kBAAM,CAAA,IAAA;AAAA,IAAN;AAAA,MACC,OACE,KACI,GAAA,aAAA;AAAA,QACE,+BAAA,CAAgC,KAAK,CAAI,GAAA,KAAA,GAAQ,EAAE,EAAI,EAAA,KAAA,EAAO,gBAAgB,KAAM,EAAA;AAAA,OAEtF,GAAA,KAAA,CAAA;AAAA,MAEN,IAAA;AAAA,MACA,QAAQ,EAAA,IAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAACpB,cAAA,CAAAoB,kBAAA,CAAM,KAAN,EAAA,EACE,QAAc,EAAA,aAAA,CAAA;AAAA,UACb,IAAI,KAAM,CAAA,EAAA;AAAA,UACV,gBAAgB,KAAM,CAAA,cAAA;AAAA,SACvB,CACH,EAAA,CAAA;AAAA,wBACApB,cAAA;AAAA,UAACqB,yBAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,QAAA;AAAA,YACA,WAAY,EAAA,QAAA;AAAA,YACZ,UAAU,CAAC,aAAA;AAAA,YAEV,qBACC,OAAQ,CAAA,GAAA,CAAI,CAAC,EAAE,KAAA,EAAAC,QAAO,KAAAK,EAAAA,MAAAA,EACpB,qBAAA3B,cAAA,CAACuB,mCAA+B,KAAOD,EAAAA,MAAAA,EACpC,wBAAcK,MAAK,CAAA,EAAA,EADGL,MAEzB,CACD,CAAA;AAAA,WAAA;AAAA,SACL;AAAA,wBACAtB,cAAA,CAACoB,kBAAM,CAAA,KAAA,EAAN,EAAY,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACf,CAAA;AAEJ;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenTypeSelect-9u9d8fcv.mjs","sources":["../../admin/src/pages/Settings/components/Tokens/FormHead.tsx","../../admin/src/pages/Settings/components/Tokens/TokenBox.tsx","../../admin/src/utils/locales.ts","../../admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.ts","../../admin/src/pages/Settings/utils/forms.ts","../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx","../../admin/src/pages/Settings/components/Tokens/TokenDescription.tsx","../../admin/src/pages/Settings/components/Tokens/TokenName.tsx","../../admin/src/pages/Settings/components/Tokens/TokenTypeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Dialog, Flex } from '@strapi/design-system';\nimport { Check, ArrowClockwise } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <Button\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n setToken: (token: TToken) => void;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex gap={2}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Button\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={<BackButton />}\n ellipsis\n />\n );\n};\n","import { IconButton } from '@strapi/design-system';\nimport { Duplicate, Key } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { ContentBox } from '../../../../components/ContentBox';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useClipboard } from '../../../../hooks/useClipboard';\n\ninterface TokenBoxProps {\n token?: string;\n tokenType: 'transfer-token' | 'api-token';\n}\n\nexport const TokenBox = ({ token, tokenType }: TokenBoxProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { trackUsage } = useTracking();\n\n const { copy } = useClipboard();\n\n const handleClick = (token: TokenBoxProps['token']) => async () => {\n if (token) {\n const didCopy = await copy(token);\n\n if (didCopy) {\n trackUsage('didCopyTokenKey', {\n tokenType,\n });\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'Settings.tokens.notification.copied' }),\n });\n }\n }\n };\n\n return (\n <ContentBox\n endAction={\n token && (\n <span style={{ alignSelf: 'start' }}>\n <IconButton\n label={formatMessage({\n id: 'app.component.CopyToClipboard.label',\n defaultMessage: 'Copy to clipboard',\n })}\n onClick={handleClick(token)}\n borderWidth={0}\n style={{ padding: 0, height: '1.6rem' }}\n >\n <Duplicate />\n </IconButton>\n </span>\n )\n }\n title={\n token ||\n formatMessage({\n id: 'Settings.tokens.copy.editTitle',\n defaultMessage: 'This token isn’t accessible anymore.',\n })\n }\n subtitle={\n token\n ? formatMessage({\n id: 'Settings.tokens.copy.lastWarning',\n defaultMessage: 'Make sure to copy this token, you won’t be able to see it again!',\n })\n : formatMessage({\n id: 'Settings.tokens.copy.editMessage',\n defaultMessage: 'For security reasons, you can only see your token once.',\n })\n }\n icon={<Key />}\n iconBackground=\"neutral100\"\n />\n );\n};\n","import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n","import { addDays, format } from 'date-fns';\nimport * as locales from 'date-fns/locale';\n\nimport { getDateFnsLocaleName } from '../../../../../../utils/locales';\n\nexport const getDateOfExpiration = (\n createdAt: string,\n duration: number | null,\n language: string = 'en'\n) => {\n if (duration && typeof duration === 'number') {\n const durationInDays = duration / 24 / 60 / 60 / 1000;\n\n return format(addDays(new Date(createdAt), durationInDays), 'PPP', {\n locale: locales[getDateFnsLocaleName(language)],\n });\n }\n\n return 'Unlimited';\n};\n","import { MessageDescriptor } from 'react-intl';\n\nconst isErrorMessageMessageDescriptor = (\n message: string | MessageDescriptor\n): message is MessageDescriptor => {\n return typeof message === 'object' && message !== null && 'id' in message;\n};\n\nexport { isErrorMessageMessageDescriptor };\n","import { SingleSelectOption, SingleSelect, Typography, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n","import { Field, Textarea, TextareaProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenDescriptionProps extends Pick<TextareaProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenDescription = ({\n error,\n value,\n onChange,\n canEditInputs,\n}: TokenDescriptionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"description\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : {\n id: error,\n defaultMessage: error,\n }\n )\n : undefined\n }\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea onChange={onChange} disabled={!canEditInputs} value={value} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { Field, TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n","import { SingleSelectOption, SingleSelect, SingleSelectProps, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenTypeSelectProps extends Pick<SingleSelectProps, 'onChange' | 'value'> {\n name?: string;\n options: Array<{\n label: MessageDescriptor;\n value: string;\n }>;\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n label: MessageDescriptor;\n}\n\nexport const TokenTypeSelect = ({\n name = 'type',\n error,\n value,\n onChange,\n canEditInputs,\n options = [],\n label,\n}: TokenTypeSelectProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name={name}\n required\n >\n <Field.Label>\n {formatMessage({\n id: label.id,\n defaultMessage: label.defaultMessage,\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={onChange}\n placeholder=\"Select\"\n disabled={!canEditInputs}\n >\n {options &&\n options.map(({ value, label }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["token","value","label"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UseCasePage-ipjo7uhC.js","sources":["../../admin/src/pages/UseCasePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Main,\n SingleSelectOption,\n SingleSelect,\n TextButton,\n TextInput,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { parse } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { Logo } from '../components/UnauthenticatedLogo';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { LayoutContent, UnauthenticatedLayout } from '../layouts/UnauthenticatedLayout';\n\nexport const options = [\n {\n intlLabel: {\n id: 'Usecase.front-end',\n defaultMessage: 'Front-end developer',\n },\n value: 'front_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.back-end',\n defaultMessage: 'Back-end developer',\n },\n value: 'back_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.full-stack',\n defaultMessage: 'Full-stack developer',\n },\n value: 'full_stack_developer',\n },\n {\n intlLabel: {\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n },\n value: 'content_manager',\n },\n {\n intlLabel: {\n id: 'Usecase.content-creator',\n defaultMessage: 'Content Creator',\n },\n value: 'content_creator',\n },\n {\n intlLabel: {\n id: 'Usecase.other',\n defaultMessage: 'Other',\n },\n value: 'other',\n },\n];\n\nconst UseCasePage = () => {\n const { toggleNotification } = useNotification();\n const location = useLocation();\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const [role, setRole] = React.useState<string | number | null>(null);\n const [otherRole, setOtherRole] = React.useState('');\n\n const { firstname, email } = useAuth('UseCasePage', (state) => state.user) ?? {};\n const { hasAdmin } = parse(location.search, { ignoreQueryPrefix: true });\n const isOther = role === 'other';\n\n const handleSubmit = async (event: React.FormEvent, skipPersona: boolean) => {\n event.preventDefault();\n try {\n await fetch('https://analytics.strapi.io/register', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n email,\n username: firstname,\n firstAdmin: Boolean(!hasAdmin),\n persona: {\n role: skipPersona ? undefined : role,\n otherRole: skipPersona ? undefined : otherRole,\n },\n }),\n });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Usecase.notification.success.project-created',\n defaultMessage: 'Project has been successfully created',\n }),\n });\n navigate('/');\n } catch (err) {\n // Silent\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main labelledBy=\"usecase-title\">\n <LayoutContent>\n <form onSubmit={(e) => handleSubmit(e, false)}>\n <Flex direction=\"column\" paddingBottom={7}>\n <Logo />\n <Box paddingTop={6} paddingBottom={1} width={`25rem`}>\n <Typography textAlign=\"center\" variant=\"alpha\" tag=\"h1\" id=\"usecase-title\">\n {formatMessage({\n id: 'Usecase.title',\n defaultMessage: 'Tell us a bit more about yourself',\n })}\n </Typography>\n </Box>\n </Flex>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Field.Root name=\"usecase\">\n <Field.Label>\n {formatMessage({\n id: 'Usecase.input.work-type',\n defaultMessage: 'What type of work do you do?',\n })}\n </Field.Label>\n <SingleSelect onChange={(value) => setRole(value)} value={role}>\n {options.map(({ intlLabel, value }) => (\n <SingleSelectOption key={value} value={value}>\n {formatMessage(intlLabel)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n {isOther && (\n <Field.Root name=\"other\">\n <Field.Label>\n {formatMessage({ id: 'Usecase.other', defaultMessage: 'Other' })}\n </Field.Label>\n <TextInput value={otherRole} onChange={(e) => setOtherRole(e.target.value)} />\n </Field.Root>\n )}\n <Button type=\"submit\" size=\"L\" fullWidth disabled={!role}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <TextButton onClick={(event) => handleSubmit(event, true)}>\n {formatMessage({\n id: 'Usecase.button.skip',\n defaultMessage: 'Skip this question',\n })}\n </TextButton>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst PrivateUseCasePage = () => {\n return (\n <PrivateRoute>\n <UseCasePage />\n </PrivateRoute>\n );\n};\n\nexport { PrivateUseCasePage, UseCasePage };\n"],"names":["useNotification","useLocation","useNavigate","useIntl","React","useAuth","parse","jsx","UnauthenticatedLayout","jsxs","Main","LayoutContent","Flex","Logo","Box","Typography","Field","SingleSelect","SingleSelectOption","TextInput","Button","TextButton","PrivateRoute"],"mappings":"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"}