@strapi/admin 5.10.4 → 5.11.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 (174) hide show
  1. package/dist/admin/chunks/{ApplicationInfoPage-DiEcqVEU.mjs → ApplicationInfoPage-BZwUO73O.mjs} +2 -2
  2. package/dist/admin/chunks/{ApplicationInfoPage-DiEcqVEU.mjs.map → ApplicationInfoPage-BZwUO73O.mjs.map} +1 -1
  3. package/dist/admin/chunks/{ApplicationInfoPage-CsBvES_c.js → ApplicationInfoPage-DJOazrYK.js} +2 -2
  4. package/dist/admin/chunks/{ApplicationInfoPage-CsBvES_c.js.map → ApplicationInfoPage-DJOazrYK.js.map} +1 -1
  5. package/dist/admin/chunks/{AuthenticatedLayout-D_VSoB1l.js → AuthenticatedLayout-Dy75FZrh.js} +7 -6
  6. package/dist/admin/chunks/AuthenticatedLayout-Dy75FZrh.js.map +1 -0
  7. package/dist/admin/chunks/{AuthenticatedLayout-C9eZ12Ue.mjs → AuthenticatedLayout-jDyinb04.mjs} +7 -6
  8. package/dist/admin/chunks/AuthenticatedLayout-jDyinb04.mjs.map +1 -0
  9. package/dist/admin/chunks/{CreatePage-DQDa78K3.mjs → CreatePage-BO4p8eVo.mjs} +2 -2
  10. package/dist/admin/chunks/{CreatePage-DQDa78K3.mjs.map → CreatePage-BO4p8eVo.mjs.map} +1 -1
  11. package/dist/admin/chunks/{CreatePage-DbmpFjHt.js → CreatePage-Bgs19RIr.js} +2 -2
  12. package/dist/admin/chunks/{CreatePage-DbmpFjHt.js.map → CreatePage-Bgs19RIr.js.map} +1 -1
  13. package/dist/admin/chunks/{CreatePage-Cb-ETkOn.mjs → CreatePage-CvMkpe3b.mjs} +3 -3
  14. package/dist/admin/chunks/{CreatePage-Cb-ETkOn.mjs.map → CreatePage-CvMkpe3b.mjs.map} +1 -1
  15. package/dist/admin/chunks/{CreatePage-DkzHz0zk.js → CreatePage-D0kjwP8s.js} +3 -3
  16. package/dist/admin/chunks/{CreatePage-DkzHz0zk.js.map → CreatePage-D0kjwP8s.js.map} +1 -1
  17. package/dist/admin/chunks/{CreateView-CmubtWzn.mjs → CreateView-B5Rq5Uhw.mjs} +4 -4
  18. package/dist/admin/chunks/{CreateView-CmubtWzn.mjs.map → CreateView-B5Rq5Uhw.mjs.map} +1 -1
  19. package/dist/admin/chunks/{CreateView-CE4-drK6.js → CreateView-DCsm2KBZ.js} +4 -4
  20. package/dist/admin/chunks/{CreateView-CE4-drK6.js.map → CreateView-DCsm2KBZ.js.map} +1 -1
  21. package/dist/admin/chunks/{CreateView-yjsS9KUJ.js → CreateView-DGq7e-Zm.js} +4 -4
  22. package/dist/admin/chunks/{CreateView-yjsS9KUJ.js.map → CreateView-DGq7e-Zm.js.map} +1 -1
  23. package/dist/admin/chunks/{CreateView-DZaIevIB.mjs → CreateView-h_bF5XrZ.mjs} +4 -4
  24. package/dist/admin/chunks/{CreateView-DZaIevIB.mjs.map → CreateView-h_bF5XrZ.mjs.map} +1 -1
  25. package/dist/admin/chunks/{EditPage-CNaAuT5C.js → EditPage-85v6bKcJ.js} +3 -3
  26. package/dist/admin/chunks/{EditPage-CNaAuT5C.js.map → EditPage-85v6bKcJ.js.map} +1 -1
  27. package/dist/admin/chunks/{EditPage-C44OaxjN.mjs → EditPage-CBrPs4kH.mjs} +3 -3
  28. package/dist/admin/chunks/{EditPage-C44OaxjN.mjs.map → EditPage-CBrPs4kH.mjs.map} +1 -1
  29. package/dist/admin/chunks/{EditPage-Bjr4f1Bs.mjs → EditPage-CFSx_zaS.mjs} +3 -3
  30. package/dist/admin/chunks/{EditPage-Bjr4f1Bs.mjs.map → EditPage-CFSx_zaS.mjs.map} +1 -1
  31. package/dist/admin/chunks/{EditPage-CycQlsFL.js → EditPage-CK8pIRKZ.js} +3 -3
  32. package/dist/admin/chunks/{EditPage-CycQlsFL.js.map → EditPage-CK8pIRKZ.js.map} +1 -1
  33. package/dist/admin/chunks/{EditPage-BrMhV8aB.js → EditPage-DHtr1mq1.js} +6 -6
  34. package/dist/admin/chunks/{EditPage-BrMhV8aB.js.map → EditPage-DHtr1mq1.js.map} +1 -1
  35. package/dist/admin/chunks/{EditPage-MmQQ4hWc.mjs → EditPage-DrT9bgfE.mjs} +6 -6
  36. package/dist/admin/chunks/{EditPage-MmQQ4hWc.mjs.map → EditPage-DrT9bgfE.mjs.map} +1 -1
  37. package/dist/admin/chunks/{EditView-C9cKaoY1.js → EditView-CfJxHMkF.js} +3 -3
  38. package/dist/admin/chunks/{EditView-C9cKaoY1.js.map → EditView-CfJxHMkF.js.map} +1 -1
  39. package/dist/admin/chunks/{EditView-CFIkvFrt.mjs → EditView-XfGT5Bj1.mjs} +3 -3
  40. package/dist/admin/chunks/{EditView-CFIkvFrt.mjs.map → EditView-XfGT5Bj1.mjs.map} +1 -1
  41. package/dist/admin/chunks/{EditViewPage-CwdhHAuX.mjs → EditViewPage-BLftPAqX.mjs} +3 -3
  42. package/dist/admin/chunks/{EditViewPage-CwdhHAuX.mjs.map → EditViewPage-BLftPAqX.mjs.map} +1 -1
  43. package/dist/admin/chunks/{EditViewPage-DBga-70A.js → EditViewPage-Dvm8m28e.js} +3 -3
  44. package/dist/admin/chunks/{EditViewPage-DBga-70A.js.map → EditViewPage-Dvm8m28e.js.map} +1 -1
  45. package/dist/admin/chunks/{EventsTable-fkWvAMuL.js → EventsTable-C1FNa1mh.js} +3 -3
  46. package/dist/admin/chunks/{EventsTable-fkWvAMuL.js.map → EventsTable-C1FNa1mh.js.map} +1 -1
  47. package/dist/admin/chunks/{EventsTable-CeqMb1jP.mjs → EventsTable-aDYIp-4O.mjs} +3 -3
  48. package/dist/admin/chunks/{EventsTable-CeqMb1jP.mjs.map → EventsTable-aDYIp-4O.mjs.map} +1 -1
  49. package/dist/admin/chunks/{HomePage-CVc0RfvD.js → HomePage-8CeDS3qO.js} +3 -3
  50. package/dist/admin/chunks/{HomePage-CVc0RfvD.js.map → HomePage-8CeDS3qO.js.map} +1 -1
  51. package/dist/admin/chunks/{HomePage-B2skN1xt.js → HomePage-BKwoMagC.js} +3 -3
  52. package/dist/admin/chunks/{HomePage-B2skN1xt.js.map → HomePage-BKwoMagC.js.map} +1 -1
  53. package/dist/admin/chunks/{HomePage-DGTeFboL.mjs → HomePage-BRggBAHf.mjs} +3 -3
  54. package/dist/admin/chunks/{HomePage-DGTeFboL.mjs.map → HomePage-BRggBAHf.mjs.map} +1 -1
  55. package/dist/admin/chunks/{HomePage-MfOqcIag.mjs → HomePage-DuRHJoC7.mjs} +3 -3
  56. package/dist/admin/chunks/{HomePage-MfOqcIag.mjs.map → HomePage-DuRHJoC7.mjs.map} +1 -1
  57. package/dist/admin/chunks/{InstalledPlugins-5j7xjDqh.mjs → InstalledPlugins-23tOdYYB.mjs} +2 -2
  58. package/dist/admin/chunks/{InstalledPlugins-5j7xjDqh.mjs.map → InstalledPlugins-23tOdYYB.mjs.map} +1 -1
  59. package/dist/admin/chunks/{InstalledPlugins-BXM3i3xr.js → InstalledPlugins-z8ODfbJj.js} +2 -2
  60. package/dist/admin/chunks/{InstalledPlugins-BXM3i3xr.js.map → InstalledPlugins-z8ODfbJj.js.map} +1 -1
  61. package/dist/admin/chunks/{Layout-DST1PxaO.js → Layout-BZgwh-LZ.js} +3 -3
  62. package/dist/admin/chunks/{Layout-DST1PxaO.js.map → Layout-BZgwh-LZ.js.map} +1 -1
  63. package/dist/admin/chunks/{Layout-DYjtK6iP.mjs → Layout-CmzbGRtV.mjs} +3 -3
  64. package/dist/admin/chunks/{Layout-DYjtK6iP.mjs.map → Layout-CmzbGRtV.mjs.map} +1 -1
  65. package/dist/admin/chunks/{ListPage-BhGt3EBQ.mjs → ListPage-BE3aimOU.mjs} +2 -2
  66. package/dist/admin/chunks/{ListPage-BhGt3EBQ.mjs.map → ListPage-BE3aimOU.mjs.map} +1 -1
  67. package/dist/admin/chunks/{ListPage-CWINpwfS.js → ListPage-BRVhZryp.js} +6 -6
  68. package/dist/admin/chunks/{ListPage-CWINpwfS.js.map → ListPage-BRVhZryp.js.map} +1 -1
  69. package/dist/admin/chunks/{ListPage-srJutHdv.mjs → ListPage-BuFQNHRU.mjs} +3 -3
  70. package/dist/admin/chunks/{ListPage-srJutHdv.mjs.map → ListPage-BuFQNHRU.mjs.map} +1 -1
  71. package/dist/admin/chunks/{ListPage-CLXy5r60.js → ListPage-C46MNvAQ.js} +3 -3
  72. package/dist/admin/chunks/{ListPage-CLXy5r60.js.map → ListPage-C46MNvAQ.js.map} +1 -1
  73. package/dist/admin/chunks/{ListPage-BVI0O8bq.mjs → ListPage-CTxfjKUP.mjs} +2 -2
  74. package/dist/admin/chunks/{ListPage-BVI0O8bq.mjs.map → ListPage-CTxfjKUP.mjs.map} +1 -1
  75. package/dist/admin/chunks/{ListPage-B5Hb8BA-.mjs → ListPage-CovdXetq.mjs} +6 -6
  76. package/dist/admin/chunks/{ListPage-B5Hb8BA-.mjs.map → ListPage-CovdXetq.mjs.map} +1 -1
  77. package/dist/admin/chunks/{ListPage-BgyypnOM.js → ListPage-D7fIXyTM.js} +5 -5
  78. package/dist/admin/chunks/{ListPage-BgyypnOM.js.map → ListPage-D7fIXyTM.js.map} +1 -1
  79. package/dist/admin/chunks/{ListPage-PwzVjSsA.mjs → ListPage-DoR-NV6v.mjs} +5 -5
  80. package/dist/admin/chunks/{ListPage-PwzVjSsA.mjs.map → ListPage-DoR-NV6v.mjs.map} +1 -1
  81. package/dist/admin/chunks/{ListPage-D21yUih2.js → ListPage-SVEmrFSg.js} +2 -2
  82. package/dist/admin/chunks/{ListPage-D21yUih2.js.map → ListPage-SVEmrFSg.js.map} +1 -1
  83. package/dist/admin/chunks/{ListPage-DbfL2rpi.js → ListPage-fOcHewxm.js} +2 -2
  84. package/dist/admin/chunks/{ListPage-DbfL2rpi.js.map → ListPage-fOcHewxm.js.map} +1 -1
  85. package/dist/admin/chunks/{ListView--KzJiQiO.mjs → ListView-BUbdI3-z.mjs} +3 -3
  86. package/dist/admin/chunks/{ListView--KzJiQiO.mjs.map → ListView-BUbdI3-z.mjs.map} +1 -1
  87. package/dist/admin/chunks/{ListView-DzwvQ8nW.js → ListView-CGHuleNQ.js} +3 -3
  88. package/dist/admin/chunks/{ListView-DzwvQ8nW.js.map → ListView-CGHuleNQ.js.map} +1 -1
  89. package/dist/admin/chunks/{ListView-CoGoDDiF.mjs → ListView-DxPGNDw_.mjs} +3 -3
  90. package/dist/admin/chunks/{ListView-CoGoDDiF.mjs.map → ListView-DxPGNDw_.mjs.map} +1 -1
  91. package/dist/admin/chunks/{ListView-DGfxO89i.js → ListView-HZFAPppY.js} +3 -3
  92. package/dist/admin/chunks/{ListView-DGfxO89i.js.map → ListView-HZFAPppY.js.map} +1 -1
  93. package/dist/admin/chunks/{Login-Dtkhd0GV.mjs → Login-B_Z4SJVp.mjs} +2 -2
  94. package/dist/admin/chunks/{Login-Dtkhd0GV.mjs.map → Login-B_Z4SJVp.mjs.map} +1 -1
  95. package/dist/admin/chunks/{Login-Iw84AH9L.js → Login-CjRacmoJ.js} +2 -2
  96. package/dist/admin/chunks/{Login-Iw84AH9L.js.map → Login-CjRacmoJ.js.map} +1 -1
  97. package/dist/admin/chunks/{MagicLinkEE-C5K8p8Rk.js → MagicLinkEE-DZLJwQiC.js} +4 -4
  98. package/dist/admin/chunks/{MagicLinkEE-C5K8p8Rk.js.map → MagicLinkEE-DZLJwQiC.js.map} +1 -1
  99. package/dist/admin/chunks/{MagicLinkEE-EcyHC46Y.mjs → MagicLinkEE-Oh6er0ux.mjs} +4 -4
  100. package/dist/admin/chunks/{MagicLinkEE-EcyHC46Y.mjs.map → MagicLinkEE-Oh6er0ux.mjs.map} +1 -1
  101. package/dist/admin/chunks/{MarketplacePage-CcAYozK2.mjs → MarketplacePage-BUksRtFV.mjs} +2 -2
  102. package/dist/admin/chunks/{MarketplacePage-CcAYozK2.mjs.map → MarketplacePage-BUksRtFV.mjs.map} +1 -1
  103. package/dist/admin/chunks/{MarketplacePage-BmqfuAvB.js → MarketplacePage-D-PvEBXN.js} +2 -2
  104. package/dist/admin/chunks/{MarketplacePage-BmqfuAvB.js.map → MarketplacePage-D-PvEBXN.js.map} +1 -1
  105. package/dist/admin/chunks/{ProfilePage-CN8SAQ9w.mjs → ProfilePage-D0cczhuo.mjs} +3 -3
  106. package/dist/admin/chunks/{ProfilePage-CN8SAQ9w.mjs.map → ProfilePage-D0cczhuo.mjs.map} +1 -1
  107. package/dist/admin/chunks/{ProfilePage-DiGV7o6c.js → ProfilePage-DghUK7p_.js} +3 -3
  108. package/dist/admin/chunks/{ProfilePage-DiGV7o6c.js.map → ProfilePage-DghUK7p_.js.map} +1 -1
  109. package/dist/admin/chunks/{PurchaseAuditLogs-DnWVbru3.js → PurchaseAuditLogs-BIBa5E6F.js} +2 -2
  110. package/dist/admin/chunks/{PurchaseAuditLogs-DnWVbru3.js.map → PurchaseAuditLogs-BIBa5E6F.js.map} +1 -1
  111. package/dist/admin/chunks/{PurchaseAuditLogs-BI41XTBD.mjs → PurchaseAuditLogs-BOqpGLyP.mjs} +2 -2
  112. package/dist/admin/chunks/{PurchaseAuditLogs-BI41XTBD.mjs.map → PurchaseAuditLogs-BOqpGLyP.mjs.map} +1 -1
  113. package/dist/admin/chunks/{PurchaseContentHistory-BzC2C4Pv.mjs → PurchaseContentHistory-DqyUHK_8.mjs} +2 -2
  114. package/dist/admin/chunks/{PurchaseContentHistory-BzC2C4Pv.mjs.map → PurchaseContentHistory-DqyUHK_8.mjs.map} +1 -1
  115. package/dist/admin/chunks/{PurchaseContentHistory-DUk7otrp.js → PurchaseContentHistory-y25nmJsq.js} +2 -2
  116. package/dist/admin/chunks/{PurchaseContentHistory-DUk7otrp.js.map → PurchaseContentHistory-y25nmJsq.js.map} +1 -1
  117. package/dist/admin/chunks/{PurchaseSingleSignOn-Bq0YHAHt.js → PurchaseSingleSignOn-DloQ-NfU.js} +2 -2
  118. package/dist/admin/chunks/{PurchaseSingleSignOn-Bq0YHAHt.js.map → PurchaseSingleSignOn-DloQ-NfU.js.map} +1 -1
  119. package/dist/admin/chunks/{PurchaseSingleSignOn-G1TKPP15.mjs → PurchaseSingleSignOn-L8wgCpHG.mjs} +2 -2
  120. package/dist/admin/chunks/{PurchaseSingleSignOn-G1TKPP15.mjs.map → PurchaseSingleSignOn-L8wgCpHG.mjs.map} +1 -1
  121. package/dist/admin/chunks/{SelectRoles-CKInlnSd.js → SelectRoles-ChZyGpDA.js} +3 -3
  122. package/dist/admin/chunks/{SelectRoles-CKInlnSd.js.map → SelectRoles-ChZyGpDA.js.map} +1 -1
  123. package/dist/admin/chunks/{SelectRoles-DR4KBZkw.mjs → SelectRoles-hAMu1PFv.mjs} +3 -3
  124. package/dist/admin/chunks/{SelectRoles-DR4KBZkw.mjs.map → SelectRoles-hAMu1PFv.mjs.map} +1 -1
  125. package/dist/admin/chunks/{SingleSignOnPage-CRzrEUGp.mjs → SingleSignOnPage-B-NIM66a.mjs} +3 -3
  126. package/dist/admin/chunks/{SingleSignOnPage-CRzrEUGp.mjs.map → SingleSignOnPage-B-NIM66a.mjs.map} +1 -1
  127. package/dist/admin/chunks/{SingleSignOnPage-DtRVlrGP.js → SingleSignOnPage-D-JNyyk2.js} +3 -3
  128. package/dist/admin/chunks/{SingleSignOnPage-DtRVlrGP.js.map → SingleSignOnPage-D-JNyyk2.js.map} +1 -1
  129. package/dist/admin/chunks/{Table-CBZnqMuN.js → Table-U6zMuKE5.js} +2 -2
  130. package/dist/admin/chunks/{Table-CBZnqMuN.js.map → Table-U6zMuKE5.js.map} +1 -1
  131. package/dist/admin/chunks/{Table-BohVeu0r.mjs → Table-b4wXHsis.mjs} +2 -2
  132. package/dist/admin/chunks/{Table-BohVeu0r.mjs.map → Table-b4wXHsis.mjs.map} +1 -1
  133. package/dist/admin/chunks/{TokenTypeSelect-CpEAVZ_b.mjs → TokenTypeSelect-BUFFAUgx.mjs} +2 -2
  134. package/dist/admin/chunks/{TokenTypeSelect-CpEAVZ_b.mjs.map → TokenTypeSelect-BUFFAUgx.mjs.map} +1 -1
  135. package/dist/admin/chunks/{TokenTypeSelect-BV_ZNiY_.js → TokenTypeSelect-DCa4dg3r.js} +2 -2
  136. package/dist/admin/chunks/{TokenTypeSelect-BV_ZNiY_.js.map → TokenTypeSelect-DCa4dg3r.js.map} +1 -1
  137. package/dist/admin/chunks/{UseCasePage-Bro5fyP3.mjs → UseCasePage-BlHgNz7W.mjs} +2 -2
  138. package/dist/admin/chunks/{UseCasePage-Bro5fyP3.mjs.map → UseCasePage-BlHgNz7W.mjs.map} +1 -1
  139. package/dist/admin/chunks/{UseCasePage-CipG2GC4.js → UseCasePage-CYCPZztF.js} +2 -2
  140. package/dist/admin/chunks/{UseCasePage-CipG2GC4.js.map → UseCasePage-CYCPZztF.js.map} +1 -1
  141. package/dist/admin/chunks/{constants-BddeukI7.mjs → constants-BY_PZgf3.mjs} +2 -2
  142. package/dist/admin/chunks/{constants-BddeukI7.mjs.map → constants-BY_PZgf3.mjs.map} +1 -1
  143. package/dist/admin/chunks/{constants-CaerHoe3.js → constants-D3gM8ElF.js} +2 -2
  144. package/dist/admin/chunks/{constants-CaerHoe3.js.map → constants-D3gM8ElF.js.map} +1 -1
  145. package/dist/admin/chunks/{index-HGaughzt.js → index-BdqtLS-k.js} +32 -32
  146. package/dist/admin/chunks/{index-HGaughzt.js.map → index-BdqtLS-k.js.map} +1 -1
  147. package/dist/admin/chunks/{index-BM8-DG5K.mjs → index-C3BO0YZa.mjs} +32 -32
  148. package/dist/admin/chunks/{index-BM8-DG5K.mjs.map → index-C3BO0YZa.mjs.map} +1 -1
  149. package/dist/admin/chunks/uk-D7QEPfXn.mjs +788 -0
  150. package/dist/admin/chunks/uk-D7QEPfXn.mjs.map +1 -0
  151. package/dist/admin/chunks/uk-WdcESeZB.js +807 -0
  152. package/dist/admin/chunks/uk-WdcESeZB.js.map +1 -0
  153. package/dist/admin/chunks/{useAdminRoles-C6Es4UUq.mjs → useAdminRoles-D68i2BI_.mjs} +2 -2
  154. package/dist/admin/chunks/{useAdminRoles-C6Es4UUq.mjs.map → useAdminRoles-D68i2BI_.mjs.map} +1 -1
  155. package/dist/admin/chunks/{useAdminRoles-_4HKisJz.js → useAdminRoles-Dy5KXk0R.js} +2 -2
  156. package/dist/admin/chunks/{useAdminRoles-_4HKisJz.js.map → useAdminRoles-Dy5KXk0R.js.map} +1 -1
  157. package/dist/admin/chunks/{validation-Dmvl0gZQ.mjs → validation-XFv2h8gD.mjs} +2 -2
  158. package/dist/admin/chunks/{validation-Dmvl0gZQ.mjs.map → validation-XFv2h8gD.mjs.map} +1 -1
  159. package/dist/admin/chunks/{validation-dPl3P7dv.js → validation-sucpUItn.js} +2 -2
  160. package/dist/admin/chunks/{validation-dPl3P7dv.js.map → validation-sucpUItn.js.map} +1 -1
  161. package/dist/admin/index.js +1 -1
  162. package/dist/admin/index.mjs +1 -1
  163. package/dist/server/index.js +0 -1
  164. package/dist/server/index.js.map +1 -1
  165. package/dist/server/index.mjs +0 -1
  166. package/dist/server/index.mjs.map +1 -1
  167. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  168. package/package.json +11 -11
  169. package/dist/admin/chunks/AuthenticatedLayout-C9eZ12Ue.mjs.map +0 -1
  170. package/dist/admin/chunks/AuthenticatedLayout-D_VSoB1l.js.map +0 -1
  171. package/dist/admin/chunks/uk-Cb6a0PAZ.mjs +0 -201
  172. package/dist/admin/chunks/uk-Cb6a0PAZ.mjs.map +0 -1
  173. package/dist/admin/chunks/uk-gz16FlMw.js +0 -212
  174. package/dist/admin/chunks/uk-gz16FlMw.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationInfoPage-CsBvES_c.js","sources":["../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.ts","../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/files.ts","../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx","../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["export const DIMENSION = 750;\nexport const SIZE = 100;\nexport const ACCEPTED_FORMAT = ['image/jpeg', 'image/png', 'image/svg+xml'];\n","import { ACCEPTED_FORMAT, DIMENSION, SIZE } from './constants';\n\nimport type { MessageDescriptor } from 'react-intl';\n\nconst FILE_FORMAT_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-format',\n defaultMessage: 'Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).',\n};\n\nconst FILE_SIZING_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-size',\n defaultMessage:\n 'The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)',\n};\n\ninterface ImageDimensions {\n height: number;\n width: number;\n}\n\ninterface ImageAsset extends ImageDimensions {\n ext: string | undefined;\n size: number;\n name: string;\n url: string;\n rawFile: File;\n}\n\nconst parseFileMetadatas = async (file: File): Promise<ImageAsset> => {\n const isFormatAuthorized = ACCEPTED_FORMAT.includes(file.type);\n\n if (!isFormatAuthorized) {\n throw new ParsingFileError('File format', FILE_FORMAT_ERROR_MESSAGE);\n }\n\n const fileDimensions = await new Promise<ImageDimensions>((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.src = reader.result as string;\n };\n reader.readAsDataURL(file);\n });\n\n const areDimensionsAuthorized =\n fileDimensions.width <= DIMENSION && fileDimensions.height <= DIMENSION;\n\n if (!areDimensionsAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n const asset = {\n ext: file.name.split('.').pop(),\n size: file.size / 1000,\n name: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n width: fileDimensions.width,\n height: fileDimensions.height,\n };\n\n const isSizeAuthorized = asset.size <= SIZE;\n\n if (!isSizeAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n return asset;\n};\n\nclass ParsingFileError extends Error {\n displayMessage: MessageDescriptor;\n\n constructor(message: string, displayMessage: MessageDescriptor, options?: ErrorOptions) {\n super(message, options);\n this.displayMessage = displayMessage;\n }\n}\n\nexport { parseFileMetadatas, ParsingFileError };\nexport type { ImageAsset };\n","import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const communityEdition = useAppInfo('ApplicationInfoPage', (state) => state.communityEdition);\n const latestStrapiReleaseTag = useAppInfo(\n 'ApplicationInfoPage',\n (state) => state.latestStrapiReleaseTag\n );\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.edition-title',\n defaultMessage: 'current edition',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>\n {formatMessage(\n {\n id: 'Settings.application.ee-or-ce',\n defaultMessage:\n '{communityEdition, select, true {Community Edition} other {Enterprise Edition}}',\n },\n { communityEdition }\n )}\n </Typography>\n <Link href=\"https://strapi.io/pricing-self-hosted\" endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n <AdminSeatInfo />\n </Grid.Root>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["DIMENSION","SIZE","ACCEPTED_FORMAT","FILE_FORMAT_ERROR_MESSAGE","id","defaultMessage","FILE_SIZING_ERROR_MESSAGE","parseFileMetadatas","file","isFormatAuthorized","includes","type","ParsingFileError","fileDimensions","Promise","resolve","reader","FileReader","onload","img","Image","width","height","src","result","readAsDataURL","areDimensionsAuthorized","asset","ext","name","split","pop","size","url","URL","createObjectURL","rawFile","isSizeAuthorized","Error","constructor","message","displayMessage","options","LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","actions","CarouselActions","Trigger","IconButton","disabled","onClick","Plus","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","File","config","headers","err","AxiosError","dimension","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","aria-hidden","Typography","htmlFor","FileInput","accept","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","toUpperCase","CardBadge","AdminSeatInfoCE","ApplicationInfoPage","trackUsage","useTracking","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","menu","auth","settings","useSelector","selectAdminPermissions","communityEdition","useAppInfo","latestStrapiReleaseTag","nodeVersion","shouldUpdateStrapi","strapiVersion","AdminSeatInfo","useEnterprise","AdminSeatInfoEE","allowedActions","canRead","useRBAC","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","Layouts","Page","Main","title","subtitle","primaryAction","startIcon","Check","shadow","Grid","Item","col","s","Link","href","endIcon","ExternalLink","default"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationInfoPage-DJOazrYK.js","sources":["../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.ts","../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/files.ts","../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx","../../../admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.tsx"],"sourcesContent":["export const DIMENSION = 750;\nexport const SIZE = 100;\nexport const ACCEPTED_FORMAT = ['image/jpeg', 'image/png', 'image/svg+xml'];\n","import { ACCEPTED_FORMAT, DIMENSION, SIZE } from './constants';\n\nimport type { MessageDescriptor } from 'react-intl';\n\nconst FILE_FORMAT_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-format',\n defaultMessage: 'Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).',\n};\n\nconst FILE_SIZING_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-size',\n defaultMessage:\n 'The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)',\n};\n\ninterface ImageDimensions {\n height: number;\n width: number;\n}\n\ninterface ImageAsset extends ImageDimensions {\n ext: string | undefined;\n size: number;\n name: string;\n url: string;\n rawFile: File;\n}\n\nconst parseFileMetadatas = async (file: File): Promise<ImageAsset> => {\n const isFormatAuthorized = ACCEPTED_FORMAT.includes(file.type);\n\n if (!isFormatAuthorized) {\n throw new ParsingFileError('File format', FILE_FORMAT_ERROR_MESSAGE);\n }\n\n const fileDimensions = await new Promise<ImageDimensions>((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.src = reader.result as string;\n };\n reader.readAsDataURL(file);\n });\n\n const areDimensionsAuthorized =\n fileDimensions.width <= DIMENSION && fileDimensions.height <= DIMENSION;\n\n if (!areDimensionsAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n const asset = {\n ext: file.name.split('.').pop(),\n size: file.size / 1000,\n name: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n width: fileDimensions.width,\n height: fileDimensions.height,\n };\n\n const isSizeAuthorized = asset.size <= SIZE;\n\n if (!isSizeAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n return asset;\n};\n\nclass ParsingFileError extends Error {\n displayMessage: MessageDescriptor;\n\n constructor(message: string, displayMessage: MessageDescriptor, options?: ErrorOptions) {\n super(message, options);\n this.displayMessage = displayMessage;\n }\n}\n\nexport { parseFileMetadatas, ParsingFileError };\nexport type { ImageAsset };\n","import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Link, Typography } from '@strapi/design-system';\nimport { Check, ExternalLink } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useAppInfo } from '../../../../features/AppInfo';\nimport { useConfiguration } from '../../../../features/Configuration';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useEnterprise } from '../../../../hooks/useEnterprise';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { LogoInput, LogoInputProps } from './components/LogoInput';\nimport { DIMENSION, SIZE } from './utils/constants';\n\nconst AdminSeatInfoCE = () => null;\n\n/* -------------------------------------------------------------------------------------------------\n * ApplicationInfoPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ApplicationInfoPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { logos: serverLogos, updateProjectSettings } = useConfiguration('ApplicationInfoPage');\n const [logos, setLogos] = React.useState({ menu: serverLogos.menu, auth: serverLogos.auth });\n const { settings } = useSelector(selectAdminPermissions);\n\n const communityEdition = useAppInfo('ApplicationInfoPage', (state) => state.communityEdition);\n const latestStrapiReleaseTag = useAppInfo(\n 'ApplicationInfoPage',\n (state) => state.latestStrapiReleaseTag\n );\n const nodeVersion = useAppInfo('ApplicationInfoPage', (state) => state.nodeVersion);\n const shouldUpdateStrapi = useAppInfo('ApplicationInfoPage', (state) => state.shouldUpdateStrapi);\n const strapiVersion = useAppInfo('ApplicationInfoPage', (state) => state.strapiVersion);\n\n const AdminSeatInfo = useEnterprise(\n AdminSeatInfoCE,\n async () =>\n (\n await import(\n '../../../../../../ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo'\n )\n ).AdminSeatInfoEE\n );\n\n const {\n allowedActions: { canRead, canUpdate },\n } = useRBAC(settings ? settings['project-settings'] : {});\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {\n e.preventDefault();\n\n updateProjectSettings({\n authLogo: logos.auth.custom ?? null,\n menuLogo: logos.menu.custom ?? null,\n });\n };\n\n const handleChangeLogo =\n (logo: 'menu' | 'auth'): LogoInputProps['onChangeLogo'] =>\n (newLogo) => {\n /**\n * If there's no newLogo value we can assume we're reseting.\n */\n if (newLogo === null) {\n trackUsage('didClickResetLogo', {\n logo,\n });\n }\n\n setLogos((prev) => ({\n ...prev,\n [logo]: {\n ...prev[logo],\n custom: newLogo,\n },\n }));\n };\n\n React.useEffect(() => {\n setLogos({\n menu: serverLogos.menu,\n auth: serverLogos.auth,\n });\n }, [serverLogos]);\n\n // block rendering until the EE component is fully loaded\n if (!AdminSeatInfo) {\n return null;\n }\n\n const isSaveDisabled =\n logos.auth.custom === serverLogos.auth.custom && logos.menu.custom === serverLogos.menu.custom;\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: 'Settings.application.header',\n defaultMessage: 'Application',\n }),\n }\n )}\n </Page.Title>\n <Page.Main>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: 'Settings.application.title',\n defaultMessage: 'Overview',\n })}\n subtitle={formatMessage({\n id: 'Settings.application.description',\n defaultMessage: 'Administration panel’s global information',\n })}\n primaryAction={\n canUpdate && (\n <Button disabled={isSaveDisabled} type=\"submit\" startIcon={<Check />}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n )\n }\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n\n <Grid.Root gap={5} tag=\"dl\">\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.strapiVersion',\n defaultMessage: 'strapi version',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>v{strapiVersion}</Typography>\n {shouldUpdateStrapi && (\n <Link\n href={`https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`}\n endIcon={<ExternalLink />}\n >\n {formatMessage({\n id: 'Settings.application.link-upgrade',\n defaultMessage: 'Upgrade your admin panel',\n })}\n </Link>\n )}\n </Flex>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.edition-title',\n defaultMessage: 'current edition',\n })}\n </Typography>\n <Flex gap={3} direction=\"column\" alignItems=\"start\" tag=\"dd\">\n <Typography>\n {formatMessage(\n {\n id: 'Settings.application.ee-or-ce',\n defaultMessage:\n '{communityEdition, select, true {Community Edition} other {Enterprise Edition}}',\n },\n { communityEdition }\n )}\n </Typography>\n <Link href=\"https://strapi.io/pricing-self-hosted\" endIcon={<ExternalLink />}>\n {formatMessage({\n id: 'Settings.application.link-pricing',\n defaultMessage: 'See all pricing plans',\n })}\n </Link>\n </Flex>\n </Grid.Item>\n\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"sigma\" textColor=\"neutral600\" tag=\"dt\">\n {formatMessage({\n id: 'Settings.application.node-version',\n defaultMessage: 'node version',\n })}\n </Typography>\n <Typography tag=\"dd\">{nodeVersion}</Typography>\n </Grid.Item>\n <AdminSeatInfo />\n </Grid.Root>\n </Flex>\n {canRead && (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingRight={7}\n paddingLeft={7}\n >\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: 'Settings.application.customization',\n defaultMessage: 'Customization',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.size-details',\n defaultMessage:\n 'Max dimension: {dimension}×{dimension}, Max file size: {size}KB',\n },\n { dimension: DIMENSION, size: SIZE }\n )}\n </Typography>\n <Grid.Root paddingTop={4} gap={4}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.menu.custom}\n defaultLogo={logos.menu.default}\n hint={formatMessage({\n id: 'Settings.application.customization.menu-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the main navigation',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.menu-logo.title',\n defaultMessage: 'Menu logo',\n })}\n onChangeLogo={handleChangeLogo('menu')}\n />\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <LogoInput\n canUpdate={canUpdate}\n customLogo={logos.auth.custom}\n defaultLogo={logos.auth.default}\n hint={formatMessage({\n id: 'Settings.application.customization.auth-logo.carousel-hint',\n defaultMessage: 'Replace the logo in the authentication pages',\n })}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.auth-logo.title',\n defaultMessage: 'Auth logo',\n })}\n onChangeLogo={handleChangeLogo('auth')}\n />\n </Grid.Item>\n </Grid.Root>\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nexport { ApplicationInfoPage };\n"],"names":["DIMENSION","SIZE","ACCEPTED_FORMAT","FILE_FORMAT_ERROR_MESSAGE","id","defaultMessage","FILE_SIZING_ERROR_MESSAGE","parseFileMetadatas","file","isFormatAuthorized","includes","type","ParsingFileError","fileDimensions","Promise","resolve","reader","FileReader","onload","img","Image","width","height","src","result","readAsDataURL","areDimensionsAuthorized","asset","ext","name","split","pop","size","url","URL","createObjectURL","rawFile","isSizeAuthorized","Error","constructor","message","displayMessage","options","LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","actions","CarouselActions","Trigger","IconButton","disabled","onClick","Plus","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","File","config","headers","err","AxiosError","dimension","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","aria-hidden","Typography","htmlFor","FileInput","accept","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","toUpperCase","CardBadge","AdminSeatInfoCE","ApplicationInfoPage","trackUsage","useTracking","logos","serverLogos","updateProjectSettings","useConfiguration","setLogos","menu","auth","settings","useSelector","selectAdminPermissions","communityEdition","useAppInfo","latestStrapiReleaseTag","nodeVersion","shouldUpdateStrapi","strapiVersion","AdminSeatInfo","useEnterprise","AdminSeatInfoEE","allowedActions","canRead","useRBAC","authLogo","custom","menuLogo","handleChangeLogo","logo","newLogo","prev","useEffect","isSaveDisabled","Layouts","Page","Main","title","subtitle","primaryAction","startIcon","Check","shadow","Grid","Item","col","s","Link","href","endIcon","ExternalLink","default"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var package_json = require('@strapi/admin/package.json');
5
+ var packageInfo = require('@strapi/admin/package.json');
6
6
  var designSystem = require('@strapi/design-system');
7
7
  var reactDnd = require('react-dnd');
8
8
  var reactDndHtml5Backend = require('react-dnd-html5-backend');
@@ -16,7 +16,7 @@ var styledComponents = require('styled-components');
16
16
  var Theme = require('./Theme-DDlJz91O.js');
17
17
  var Ornaments = require('./Ornaments-CvdERnok.js');
18
18
  var users = require('./users-D-oKxjK9.js');
19
- var index = require('./index-HGaughzt.js');
19
+ var index = require('./index-BdqtLS-k.js');
20
20
  var immer = require('immer');
21
21
  var PrivateRoute = require('./PrivateRoute-DvGSyomB.js');
22
22
  var cloneDeep = require('lodash/cloneDeep');
@@ -842,6 +842,7 @@ const getPluginSectionLinks = async (pluginsSectionRawLinks, checkUserHasPermiss
842
842
  return authorizedPluginSectionLinks;
843
843
  };
844
844
 
845
+ const { version: strapiVersion } = packageInfo;
845
846
  const AdminLayout = ()=>{
846
847
  const setGuidedTourVisibility = Theme.useGuidedTour('AdminLayout', (state)=>state.setGuidedTourVisibility);
847
848
  const { formatMessage } = reactIntl.useIntl();
@@ -849,7 +850,7 @@ const AdminLayout = ()=>{
849
850
  const [userId, setUserId] = React__namespace.useState();
850
851
  const { showReleaseNotification } = Theme.useConfiguration('AuthenticatedApp');
851
852
  const { data: appInfo, isLoading: isLoadingAppInfo } = admin.useInformationQuery();
852
- const [tagName, setTagName] = React__namespace.useState(package_json.version);
853
+ const [tagName, setTagName] = React__namespace.useState(strapiVersion);
853
854
  React__namespace.useEffect(()=>{
854
855
  if (showReleaseNotification) {
855
856
  fetch('https://api.github.com/repos/strapi/strapi/releases/latest').then(async (res)=>{
@@ -892,7 +893,7 @@ const AdminLayout = ()=>{
892
893
  userInfo
893
894
  ]);
894
895
  const { trackUsage } = Theme.useTracking();
895
- const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks } = useMenu(checkLatestStrapiVersion(package_json.version, tagName));
896
+ const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
896
897
  /**
897
898
  * Make sure the event is only send once after accessing the admin panel
898
899
  * and not at runtime for example when regenerating the permissions with the ctb
@@ -909,7 +910,7 @@ const AdminLayout = ()=>{
909
910
  ...appInfo,
910
911
  userId: userId,
911
912
  latestStrapiReleaseTag: tagName,
912
- shouldUpdateStrapi: checkLatestStrapiVersion(package_json.version, tagName),
913
+ shouldUpdateStrapi: checkLatestStrapiVersion(strapiVersion, tagName),
913
914
  children: [
914
915
  /*#__PURE__*/ jsxRuntime.jsx(index.NpsSurvey, {}),
915
916
  /*#__PURE__*/ jsxRuntime.jsx(PluginsInitializer, {
@@ -961,4 +962,4 @@ const checkLatestStrapiVersion = (currentPackageVersion, latestPublishedVersion
961
962
 
962
963
  exports.AdminLayout = AdminLayout;
963
964
  exports.PrivateAdminLayout = PrivateAdminLayout;
964
- //# sourceMappingURL=AuthenticatedLayout-D_VSoB1l.js.map
965
+ //# sourceMappingURL=AuthenticatedLayout-Dy75FZrh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticatedLayout-Dy75FZrh.js","sources":["../../../admin/src/components/GuidedTour/Modal.tsx","../../../admin/src/components/MainNav/MainNav.tsx","../../../admin/src/components/MainNav/NavBrand.tsx","../../../admin/src/components/MainNav/NavLink.tsx","../../../admin/src/components/MainNav/NavUser.tsx","../../../admin/src/components/LeftMenu.tsx","../../../admin/src/components/PluginsInitializer.tsx","../../../admin/src/hooks/useMenu.ts","../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n FlexComponent,\n FocusTrap,\n IconButton,\n Portal,\n Typography,\n LinkButton,\n} from '@strapi/design-system';\nimport { ArrowRight, Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\n\nimport { LAYOUT_DATA, STATES } from './constants';\nimport { Number, VerticalDivider } from './Ornaments';\nimport { GuidedTourContextValue, useGuidedTour } from './Provider';\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourModal = () => {\n const guidedTour = useGuidedTour('GuidedTourModal', (state) => state);\n\n const {\n currentStep,\n guidedTourState,\n setCurrentStep,\n setStepState,\n isGuidedTourVisible,\n setSkipped,\n } = guidedTour;\n\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n if (!currentStep || !isGuidedTourVisible) {\n return null;\n }\n\n const stepData = get(LAYOUT_DATA, currentStep);\n const sectionKeys = Object.keys(guidedTourState);\n const [sectionName, stepName] = currentStep.split('.') as [\n keyof GuidedTourContextValue['guidedTourState'],\n string,\n ];\n const sectionIndex = sectionKeys.indexOf(sectionName);\n const stepIndex = Object.keys(guidedTourState[sectionName]).indexOf(stepName);\n const hasSectionAfter = sectionIndex < sectionKeys.length - 1;\n const hasStepAfter = stepIndex < Object.keys(guidedTourState[sectionName]).length - 1;\n\n const handleCtaClick = () => {\n setStepState(currentStep, true);\n\n if (stepData) {\n trackUsage(stepData.trackingEvent);\n }\n\n setCurrentStep(null);\n };\n\n const handleSkip = () => {\n setSkipped(true);\n setCurrentStep(null);\n trackUsage('didSkipGuidedtour');\n };\n\n return (\n <Portal>\n <ModalWrapper onClick={handleCtaClick} padding={8} justifyContent=\"center\">\n <FocusTrap onEscape={handleCtaClick}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n background=\"neutral0\"\n width={`66rem`}\n shadow=\"popupShadow\"\n hasRadius\n padding={4}\n gap={8}\n role=\"dialog\"\n aria-modal\n onClick={(e) => e.stopPropagation()}\n >\n <Flex justifyContent=\"flex-end\">\n <IconButton\n onClick={handleCtaClick}\n withTooltip={false}\n label={formatMessage({\n id: 'app.utils.close-label',\n defaultMessage: 'Close',\n })}\n >\n <Cross />\n </IconButton>\n </Flex>\n <Box\n paddingLeft={7}\n paddingRight={7}\n paddingBottom={!hasStepAfter && !hasSectionAfter ? 8 : 0}\n >\n <GuidedTourStepper\n title={stepData && 'title' in stepData ? stepData.title : undefined}\n cta={stepData && 'cta' in stepData ? stepData.cta : undefined}\n onCtaClick={handleCtaClick}\n sectionIndex={sectionIndex}\n stepIndex={stepIndex}\n hasSectionAfter={hasSectionAfter}\n >\n {stepData && 'content' in stepData && <GuidedTourContent {...stepData.content} />}\n </GuidedTourStepper>\n </Box>\n {!(!hasStepAfter && !hasSectionAfter) && (\n <Flex justifyContent=\"flex-end\">\n <Button variant=\"tertiary\" onClick={handleSkip}>\n {formatMessage({\n id: 'app.components.GuidedTour.skip',\n defaultMessage: 'Skip the tour',\n })}\n </Button>\n </Flex>\n )}\n </Flex>\n </FocusTrap>\n </ModalWrapper>\n </Portal>\n );\n};\n\nconst ModalWrapper = styled<FlexComponent>(Flex)`\n position: fixed;\n z-index: 4;\n inset: 0;\n /* this is theme.colors.neutral800 with opacity */\n background: ${({ theme }) => `${theme.colors.neutral800}1F`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourStepper\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourStepperProps {\n title: MessageDescriptor | undefined;\n children: React.ReactNode;\n cta?: {\n title: MessageDescriptor;\n target?: string;\n };\n onCtaClick: () => void;\n sectionIndex: number;\n stepIndex: number;\n hasSectionAfter: boolean;\n}\n\nconst GuidedTourStepper = ({\n title,\n children,\n cta,\n onCtaClick,\n sectionIndex,\n stepIndex,\n hasSectionAfter,\n}: GuidedTourStepperProps) => {\n const { formatMessage } = useIntl();\n\n const hasSectionBefore = sectionIndex > 0;\n const hasStepsBefore = stepIndex > 0;\n const nextSectionIndex = sectionIndex + 1;\n\n return (\n <>\n <Flex alignItems=\"stretch\">\n <Flex marginRight={8} justifyContent=\"center\" minWidth={`3rem`}>\n {hasSectionBefore && <VerticalDivider state={STATES.IS_DONE} minHeight={`2.4rem`} />}\n </Flex>\n <Typography variant=\"sigma\" textColor=\"primary600\">\n {formatMessage({\n id: 'app.components.GuidedTour.title',\n defaultMessage: '3 steps to get started',\n })}\n </Typography>\n </Flex>\n <Flex>\n <Flex marginRight={8} minWidth={`3rem`}>\n <Number\n state={hasStepsBefore ? STATES.IS_DONE : STATES.IS_ACTIVE}\n paddingTop={3}\n paddingBottom={3}\n >\n {sectionIndex + 1}\n </Number>\n </Flex>\n {title && (\n <Typography variant=\"alpha\" fontWeight=\"bold\" textColor=\"neutral800\" tag=\"h3\" id=\"title\">\n {formatMessage(title)}\n </Typography>\n )}\n </Flex>\n <Flex alignItems=\"stretch\">\n <Flex marginRight={8} direction=\"column\" justifyContent=\"center\" minWidth={`3rem`}>\n {hasSectionAfter && (\n <>\n <VerticalDivider state={STATES.IS_DONE} />\n {hasStepsBefore && (\n <Number state={STATES.IS_ACTIVE} paddingTop={3}>\n {nextSectionIndex + 1}\n </Number>\n )}\n </>\n )}\n </Flex>\n <Box>\n {children}\n {cta &&\n (cta.target ? (\n <LinkButton\n tag={NavLink}\n endIcon={<ArrowRight />}\n onClick={onCtaClick}\n to={cta.target}\n >\n {formatMessage(cta.title)}\n </LinkButton>\n ) : (\n <Button endIcon={<ArrowRight />} onClick={onCtaClick}>\n {formatMessage(cta.title)}\n </Button>\n ))}\n </Box>\n </Flex>\n {hasStepsBefore && hasSectionAfter && (\n <Box paddingTop={3}>\n <Flex marginRight={8} justifyContent=\"center\" width={`3rem`}>\n <VerticalDivider state={STATES.IS_DONE} minHeight={`2.4rem`} />\n </Flex>\n </Box>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourContentProps\n extends Required<Pick<MessageDescriptor, 'defaultMessage' | 'id'>> {}\n\nconst GuidedTourContent = ({ id, defaultMessage }: GuidedTourContentProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} paddingBottom={6}>\n {formatMessage(\n { id, defaultMessage },\n {\n documentationLink: DocumentationLink,\n b: Bold,\n p: Paragraph,\n light: Light,\n ul: List,\n li: ListItem,\n }\n )}\n </Flex>\n );\n};\n\nconst DocumentationLink = (children: React.ReactNode) => (\n <Typography\n tag=\"a\"\n textColor=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest-api.html#api-parameters\"\n >\n {children}\n </Typography>\n);\n\nconst Bold = (children: React.ReactNode) => (\n <Typography fontWeight=\"semiBold\">{children}</Typography>\n);\n\nconst Paragraph = (children: React.ReactNode) => <Typography>{children}</Typography>;\n\nconst Light = (children: React.ReactNode) => (\n <Typography textColor=\"neutral600\">{children}</Typography>\n);\n\nconst List = (children: React.ReactNode) => (\n <Box paddingLeft={6}>\n <ul>{children}</ul>\n </Box>\n);\n\nconst LiStyled = styled.li`\n list-style: disc;\n &::marker {\n color: ${({ theme }) => theme.colors.neutral800};\n }\n`;\n\nconst ListItem = (children: React.ReactNode) => <LiStyled>{children}</LiStyled>;\n\nexport { GuidedTourModal };\n","import { Flex, FlexComponent, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst MainNavWrapper = styled<FlexComponent<'nav'>>(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst MainNav = (props: FlexProps<'nav'>) => (\n <MainNavWrapper\n alignItems=\"normal\"\n tag=\"nav\"\n background=\"neutral0\"\n direction=\"column\"\n height=\"100vh\"\n position=\"sticky\"\n top={0}\n zIndex={2}\n width={10}\n {...props}\n />\n);\n\nexport { MainNav };\n","import { Box, Flex, type FlexComponent, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useConfiguration } from '../../features/Configuration';\n\nconst BrandIconWrapper = styled<FlexComponent>(Flex)`\n svg,\n img {\n border-radius: ${({ theme }) => theme.borderRadius};\n object-fit: contain;\n height: 2.4rem;\n width: 2.4rem;\n }\n`;\n\nexport const NavBrand = () => {\n const { formatMessage } = useIntl();\n const {\n logos: { menu },\n } = useConfiguration('LeftMenu');\n return (\n <Box padding={3}>\n <BrandIconWrapper direction=\"column\" justifyContent=\"center\" width=\"3.2rem\" height=\"3.2rem\">\n <img\n src={menu.custom?.url || menu.default}\n alt={formatMessage({\n id: 'app.components.LeftMenu.logo.alt',\n defaultMessage: 'Application logo',\n })}\n width=\"100%\"\n height=\"100%\"\n />\n <VisuallyHidden>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.title',\n defaultMessage: 'Strapi Dashboard',\n })}\n </span>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.workplace',\n defaultMessage: 'Workplace',\n })}\n </span>\n </VisuallyHidden>\n </BrandIconWrapper>\n </Box>\n );\n};\n","import * as React from 'react';\n\nimport {\n Tooltip,\n TooltipProps as DSTooltipProps,\n Badge,\n BadgeProps,\n AccessibleIcon,\n} from '@strapi/design-system';\nimport { NavLink as RouterLink, LinkProps } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\n/* -------------------------------------------------------------------------------------------------\n * Link\n * -----------------------------------------------------------------------------------------------*/\nconst MainNavLinkWrapper = styled(RouterLink)`\n text-decoration: none;\n display: flex;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral500};\n position: relative;\n width: fit-content;\n padding-block: 0.6rem;\n padding-inline: 0.6rem;\n\n &:hover {\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n &.active {\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n background: ${({ theme }) => theme.colors.primary100};\n }\n`;\n\nconst LinkImpl = ({ children, ...props }: LinkProps) => {\n return <MainNavLinkWrapper {...props}>{children}</MainNavLinkWrapper>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tooltip\n * -----------------------------------------------------------------------------------------------*/\nconst TooltipImpl = ({ children, label, position = 'right' }: NavLink.TooltipProps) => {\n return (\n <Tooltip side={position} label={label} delayDuration={0}>\n <span>{children}</span>\n </Tooltip>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Icon\n * -----------------------------------------------------------------------------------------------*/\nconst IconImpl = ({ label, children }: { label: string; children: React.ReactNode }) => {\n if (!children) {\n return null;\n }\n return <AccessibleIcon label={label}>{children}</AccessibleIcon>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Badge\n * -----------------------------------------------------------------------------------------------*/\nconst CustomBadge = styled(Badge)`\n /* override default badge styles to change the border radius of the Base element in the Design System */\n border-radius: ${({ theme }) => theme.spaces[10]};\n height: 2rem;\n`;\n\nconst BadgeImpl = ({ children, label, ...props }: NavLink.NavBadgeProps) => {\n if (!children) {\n return null;\n }\n return (\n <CustomBadge\n position=\"absolute\"\n top=\"-0.8rem\"\n left=\"1.7rem\"\n aria-label={label}\n active={false}\n {...props}\n >\n {children}\n </CustomBadge>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst NavLink = {\n Link: LinkImpl,\n Tooltip: TooltipImpl,\n Icon: IconImpl,\n Badge: BadgeImpl,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace NavLink {\n export interface NavBadgeProps extends BadgeProps {\n children: React.ReactNode;\n label: string;\n }\n\n export interface TooltipProps {\n children: React.ReactNode;\n label?: string;\n position?: DSTooltipProps['side'];\n }\n}\n\nexport { NavLink };\n","import * as React from 'react';\n\nimport { Flex, Menu, ButtonProps, VisuallyHidden, Avatar } from '@strapi/design-system';\nimport { SignOut } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../../features/Auth';\n\nexport interface NavUserProps extends ButtonProps {\n initials: string;\n children?: React.ReactNode;\n}\n\nconst MenuTrigger = styled(Menu.Trigger)`\n height: ${({ theme }) => theme.spaces[7]};\n width: ${({ theme }) => theme.spaces[7]};\n border: none;\n border-radius: 50%;\n // Removes inherited 16px padding\n padding: 0;\n // Prevent empty pixel from appearing below the main nav\n overflow: hidden;\n`;\n\nconst MenuContent = styled(Menu.Content)`\n left: ${({ theme }) => theme.spaces[3]};\n`;\n\nconst MenuItem = styled(Menu.Item)`\n & > span {\n width: 100%;\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[3]};\n justify-content: space-between;\n }\n`;\n\nconst MenuItemDanger = styled(MenuItem)`\n &:hover {\n ${({ theme }) => `\n background: ${theme.colors.danger100};\n `}\n }\n`;\n\nexport const NavUser = ({ children, initials, ...props }: NavUserProps) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const logout = useAuth('Logout', (state) => state.logout);\n const handleProfile = () => {\n navigate('/me');\n };\n const handleLogout = () => {\n logout();\n navigate('/auth/login');\n };\n\n return (\n <Flex\n justifyContent=\"center\"\n padding={3}\n borderStyle=\"solid\"\n borderWidth=\"1px 0 0 0\"\n borderColor=\"neutral150\"\n {...props}\n >\n <Menu.Root>\n <MenuTrigger endIcon={null} fullWidth justifyContent=\"center\">\n <Avatar.Item delayMs={0} fallback={initials} />\n <VisuallyHidden tag=\"span\">{children}</VisuallyHidden>\n </MenuTrigger>\n <MenuContent popoverPlacement=\"top-center\" zIndex={3}>\n <MenuItem onSelect={handleProfile}>\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </MenuItem>\n\n <MenuItemDanger onSelect={handleLogout} color=\"danger600\">\n {formatMessage({\n id: 'app.components.LeftMenu.logout',\n defaultMessage: 'Logout',\n })}\n <SignOut />\n </MenuItemDanger>\n </MenuContent>\n </Menu.Root>\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport { Divider, Flex, FlexComponent, useCollator } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useAuth } from '../features/Auth';\nimport { useTracking } from '../features/Tracking';\nimport { Menu, MenuItem } from '../hooks/useMenu';\nimport { getDisplayName } from '../utils/users';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavLink } from './MainNav/NavLink';\nimport { NavUser } from './MainNav/NavUser';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n overflow-y: auto;\n`;\n\ninterface LeftMenuProps extends Pick<Menu, 'generalSectionLinks' | 'pluginsSectionLinks'> {}\n\nconst LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }: LeftMenuProps) => {\n const user = useAuth('AuthenticatedApp', (state) => state.user);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const userDisplayName = getDisplayName(user);\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const initials = userDisplayName\n .split(' ')\n .map((name) => name.substring(0, 1))\n .join('')\n .substring(0, 2);\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n return (\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <NavListWrapper tag=\"ul\" gap={3} direction=\"column\" flex={1} paddingTop={3} paddingBottom={3}>\n {listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? (\n <Lightning fill=\"warning500\" />\n ) : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n return (\n <Flex tag=\"li\" key={link.to}>\n <NavLink.Tooltip label={labelValue}>\n <NavLink.Link\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.Link>\n </NavLink.Tooltip>\n </Flex>\n );\n })\n : null}\n </NavListWrapper>\n <NavUser initials={initials}>{userDisplayName}</NavUser>\n </MainNav>\n );\n};\n\nexport { LeftMenu };\n","import * as React from 'react';\n\nimport { produce } from 'immer';\n\nimport { Page } from '../components/PageHelpers';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/**\n * TODO: this isn't great, and we really should focus on fixing this.\n */\nconst PluginsInitializer = ({ children }: { children: React.ReactNode }) => {\n const appPlugins = useStrapiApp('PluginsInitializer', (state) => state.plugins);\n const [{ plugins }, dispatch] = React.useReducer<React.Reducer<State, Action>, State>(\n reducer,\n initialState,\n () => init(appPlugins)\n );\n const setPlugin = React.useRef((pluginId: string) => {\n dispatch({ type: 'SET_PLUGIN_READY', pluginId });\n });\n\n const hasApluginNotReady = Object.keys(plugins).some(\n (plugin) => plugins[plugin].isReady === false\n );\n\n /**\n *\n * I have spent some time trying to understand what is happening here, and wanted to\n * leave that knowledge for my future me:\n *\n * `initializer` is an undocumented property of the `registerPlugin` API. At the time\n * of writing it seems only to be used by the i18n plugin.\n *\n * How does it work?\n *\n * Every plugin that has an `initializer` component defined, receives the\n * `setPlugin` function as a component prop. In the case of i18n the plugin fetches locales\n * first and calls `setPlugin` with `pluginId` once they are loaded, which then triggers the\n * reducer of the admin app defined above.\n *\n * Once all plugins are set to `isReady: true` the app renders.\n *\n * This API is used to block rendering of the admin app. We should remove that in v5 completely\n * and make sure plugins can inject data into the global store before they are initialized, to avoid\n * having a new prop-callback based communication channel between plugins and the core admin app.\n *\n */\n\n if (hasApluginNotReady) {\n const initializers = Object.keys(plugins).reduce((acc, current) => {\n const InitializerComponent = plugins[current].initializer;\n\n if (InitializerComponent) {\n const key = plugins[current].pluginId;\n\n acc.push(<InitializerComponent key={key} setPlugin={setPlugin.current} />);\n }\n\n return acc;\n }, [] as React.ReactNode[]);\n\n return (\n <>\n {initializers}\n <Page.Loading />\n </>\n );\n }\n\n return children;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n plugins: StrapiAppContextValue['plugins'];\n}\n\nconst initialState: State = {\n plugins: {},\n};\n\ntype SetPluginReadyAction = {\n type: 'SET_PLUGIN_READY';\n pluginId: string;\n};\n\ntype Action = SetPluginReadyAction;\n\nconst reducer: React.Reducer<State, Action> = (state = initialState, action: Action): State =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_PLUGIN_READY': {\n draftState.plugins[action.pluginId].isReady = true;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * Init state\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (plugins: State['plugins']): State => {\n return {\n plugins,\n };\n};\n\nexport { PluginsInitializer };\n","import * as React from 'react';\n\nimport { Cog, ShoppingCart, House } from '@strapi/icons';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useTypedSelector } from '../core/store/hooks';\nimport { useAuth, AuthContextValue } from '../features/Auth';\nimport { StrapiAppContextValue, useStrapiApp } from '../features/StrapiApp';\n\n/* -------------------------------------------------------------------------------------------------\n * useMenu\n * -----------------------------------------------------------------------------------------------*/\n\nexport type MenuItem = Omit<StrapiAppContextValue['menu'][number], 'Component'>;\n\nexport interface Menu {\n generalSectionLinks: MenuItem[];\n pluginsSectionLinks: MenuItem[];\n isLoading: boolean;\n}\n\nconst useMenu = (shouldUpdateStrapi: boolean) => {\n const checkUserHasPermissions = useAuth('useMenu', (state) => state.checkUserHasPermissions);\n const menu = useStrapiApp('useMenu', (state) => state.menu);\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [menuWithUserPermissions, setMenuWithUserPermissions] = React.useState<Menu>({\n generalSectionLinks: [\n {\n icon: House,\n intlLabel: {\n id: 'global.home',\n defaultMessage: 'Home',\n },\n to: '/',\n permissions: [],\n position: 0,\n },\n {\n icon: ShoppingCart,\n intlLabel: {\n id: 'global.marketplace',\n defaultMessage: 'Marketplace',\n },\n to: '/marketplace',\n permissions: permissions.marketplace?.main ?? [],\n position: 7,\n },\n {\n icon: Cog,\n intlLabel: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n to: '/settings',\n // Permissions of this link are retrieved in the init phase\n // using the settings menu\n permissions: [],\n notificationsCount: 0,\n position: 9,\n },\n ],\n pluginsSectionLinks: [],\n isLoading: true,\n });\n const generalSectionLinksRef = React.useRef(menuWithUserPermissions.generalSectionLinks);\n\n React.useEffect(() => {\n async function applyMenuPermissions() {\n const authorizedPluginSectionLinks = await getPluginSectionLinks(\n menu,\n checkUserHasPermissions\n );\n\n const authorizedGeneralSectionLinks = await getGeneralLinks(\n generalSectionLinksRef.current,\n shouldUpdateStrapi,\n checkUserHasPermissions\n );\n\n setMenuWithUserPermissions((state) => ({\n ...state,\n generalSectionLinks: authorizedGeneralSectionLinks,\n pluginsSectionLinks: authorizedPluginSectionLinks,\n isLoading: false,\n }));\n }\n\n applyMenuPermissions();\n }, [\n setMenuWithUserPermissions,\n generalSectionLinksRef,\n menu,\n permissions,\n shouldUpdateStrapi,\n checkUserHasPermissions,\n ]);\n\n return menuWithUserPermissions;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\nconst getGeneralLinks = async (\n generalSectionRawLinks: MenuItem[],\n shouldUpdateStrapi: boolean = false,\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const generalSectionLinksPermissions = await Promise.all(\n generalSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedGeneralSectionLinks = generalSectionRawLinks.filter(\n (_, index) => generalSectionLinksPermissions[index].length > 0\n );\n\n const settingsLinkIndex = authorizedGeneralSectionLinks.findIndex(\n (obj) => obj.to === '/settings'\n );\n\n if (settingsLinkIndex === -1) {\n return [];\n }\n\n const authorizedGeneralLinksClone = cloneDeep(authorizedGeneralSectionLinks);\n\n authorizedGeneralLinksClone[settingsLinkIndex].notificationsCount = shouldUpdateStrapi ? 1 : 0;\n\n return authorizedGeneralLinksClone;\n};\n\nconst getPluginSectionLinks = async (\n pluginsSectionRawLinks: MenuItem[],\n checkUserHasPermissions: AuthContextValue['checkUserHasPermissions']\n) => {\n const pluginSectionLinksPermissions = await Promise.all(\n pluginsSectionRawLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedPluginSectionLinks = pluginsSectionRawLinks.filter(\n (_, index) => pluginSectionLinksPermissions[index].length > 0\n );\n\n return authorizedPluginSectionLinks;\n};\n\nexport { useMenu };\n","import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { Outlet } from 'react-router-dom';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { GuidedTourModal } from '../components/GuidedTour/Modal';\nimport { useGuidedTour } from '../components/GuidedTour/Provider';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useOnce } from '../hooks/useOnce';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const setGuidedTourVisibility = useGuidedTour(\n 'AdminLayout',\n (state) => state.setGuidedTourVisibility\n );\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n const userRoles = useAuth('AuthenticatedApp', (state) => state.user?.roles);\n\n React.useEffect(() => {\n if (userRoles) {\n const isUserSuperAdmin = userRoles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin && appInfo?.autoReload) {\n setGuidedTourVisibility(true);\n }\n }\n }, [userRoles, appInfo?.autoReload, setGuidedTourVisibility]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n /**\n * Make sure the event is only send once after accessing the admin panel\n * and not at runtime for example when regenerating the permissions with the ctb\n * or with i18n\n */\n useOnce(() => {\n trackUsage('didAccessAuthenticatedAdministration');\n });\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex alignItems=\"flex-start\">\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n />\n <Box flex={1}>\n <Outlet />\n <GuidedTourModal />\n </Box>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["GuidedTourModal","guidedTour","useGuidedTour","state","currentStep","guidedTourState","setCurrentStep","setStepState","isGuidedTourVisible","setSkipped","formatMessage","useIntl","trackUsage","useTracking","stepData","get","LAYOUT_DATA","sectionKeys","Object","keys","sectionName","stepName","split","sectionIndex","indexOf","stepIndex","hasSectionAfter","length","hasStepAfter","handleCtaClick","trackingEvent","handleSkip","_jsx","Portal","ModalWrapper","onClick","padding","justifyContent","FocusTrap","onEscape","_jsxs","Flex","direction","alignItems","background","width","shadow","hasRadius","gap","role","aria-modal","e","stopPropagation","IconButton","withTooltip","label","id","defaultMessage","Cross","Box","paddingLeft","paddingRight","paddingBottom","GuidedTourStepper","title","undefined","cta","onCtaClick","GuidedTourContent","content","Button","variant","styled","theme","colors","neutral800","children","hasSectionBefore","hasStepsBefore","nextSectionIndex","_Fragment","marginRight","minWidth","VerticalDivider","STATES","IS_DONE","minHeight","Typography","textColor","Number","IS_ACTIVE","paddingTop","fontWeight","tag","target","LinkButton","NavLink","endIcon","ArrowRight","to","documentationLink","DocumentationLink","b","Bold","p","Paragraph","light","Light","ul","List","li","ListItem","rel","href","LiStyled","MainNavWrapper","neutral150","MainNav","props","height","position","top","zIndex","BrandIconWrapper","borderRadius","NavBrand","logos","menu","useConfiguration","img","src","custom","url","default","alt","VisuallyHidden","span","MainNavLinkWrapper","RouterLink","neutral0","neutral500","neutral600","neutral100","primary600","primary100","LinkImpl","TooltipImpl","Tooltip","side","delayDuration","IconImpl","AccessibleIcon","CustomBadge","Badge","spaces","BadgeImpl","left","aria-label","active","Link","Icon","MenuTrigger","Menu","Trigger","MenuContent","Content","MenuItem","Item","MenuItemDanger","danger100","NavUser","initials","navigate","useNavigate","logout","useAuth","handleProfile","handleLogout","borderStyle","borderWidth","borderColor","Root","fullWidth","Avatar","delayMs","fallback","popoverPlacement","onSelect","color","SignOut","sortLinks","links","sort","a","positionA","positionB","NavLinkBadgeCounter","NavLinkBadgeLock","NavListWrapper","LeftMenu","generalSectionLinks","pluginsSectionLinks","user","pathname","useLocation","userDisplayName","getDisplayName","locale","formatter","useCollator","sensitivity","map","name","substring","join","handleClickOnLink","destination","from","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","Divider","flex","link","LinkIcon","icon","badgeContentLock","licenseOnly","Lightning","fill","badgeContentNumeric","notificationsCount","toString","labelValue","backgroundColor","PluginsInitializer","appPlugins","useStrapiApp","plugins","dispatch","React","useReducer","reducer","initialState","init","setPlugin","useRef","pluginId","type","hasApluginNotReady","some","plugin","isReady","initializers","reduce","acc","current","InitializerComponent","initializer","key","push","Page","Loading","action","produce","draftState","useMenu","shouldUpdateStrapi","checkUserHasPermissions","permissions","useTypedSelector","admin_app","menuWithUserPermissions","setMenuWithUserPermissions","useState","House","ShoppingCart","marketplace","main","Cog","isLoading","generalSectionLinksRef","useEffect","applyMenuPermissions","authorizedPluginSectionLinks","getPluginSectionLinks","authorizedGeneralSectionLinks","getGeneralLinks","generalSectionRawLinks","generalSectionLinksPermissions","Promise","all","filter","_","index","settingsLinkIndex","findIndex","obj","authorizedGeneralLinksClone","cloneDeep","pluginsSectionRawLinks","pluginSectionLinksPermissions","version","strapiVersion","packageInfo","AdminLayout","setGuidedTourVisibility","userInfo","userId","setUserId","showReleaseNotification","data","appInfo","isLoadingAppInfo","useInformationQuery","tagName","setTagName","fetch","then","res","ok","response","json","tag_name","Error","catch","userRoles","roles","isUserSuperAdmin","find","code","autoReload","hashAdminUserEmail","isLoadingMenu","checkLatestStrapiVersion","useOnce","AppInfoProvider","latestStrapiReleaseTag","NpsSurvey","DndProvider","backend","HTML5Backend","SkipToContent","Outlet","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { version } from '@strapi/admin/package.json';
3
+ import packageInfo from '@strapi/admin/package.json';
4
4
  import { Flex, Portal, FocusTrap, IconButton, Box, Button, Typography, LinkButton, VisuallyHidden, Badge, Tooltip, AccessibleIcon, Menu, Avatar, useCollator, Divider, SkipToContent } from '@strapi/design-system';
5
5
  import { DndProvider } from 'react-dnd';
6
6
  import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -14,7 +14,7 @@ import { styled } from 'styled-components';
14
14
  import { m as useGuidedTour, c as useTracking, w as useConfiguration, u as useAuth, q as useStrapiApp, P as Page, b as useTypedSelector, v as AppInfoProvider } from './Theme-C3oHrQcy.mjs';
15
15
  import { L as LAYOUT_DATA, V as VerticalDivider, S as STATES, N as Number } from './Ornaments-DlP663hn.mjs';
16
16
  import { g as getDisplayName, h as hashAdminUserEmail } from './users-B3iOAYG-.mjs';
17
- import { N as NpsSurvey } from './index-BM8-DG5K.mjs';
17
+ import { N as NpsSurvey } from './index-C3BO0YZa.mjs';
18
18
  import { produce } from 'immer';
19
19
  import { P as PrivateRoute } from './PrivateRoute-KL_RhoV8.mjs';
20
20
  import cloneDeep from 'lodash/cloneDeep';
@@ -821,6 +821,7 @@ const getPluginSectionLinks = async (pluginsSectionRawLinks, checkUserHasPermiss
821
821
  return authorizedPluginSectionLinks;
822
822
  };
823
823
 
824
+ const { version: strapiVersion } = packageInfo;
824
825
  const AdminLayout = ()=>{
825
826
  const setGuidedTourVisibility = useGuidedTour('AdminLayout', (state)=>state.setGuidedTourVisibility);
826
827
  const { formatMessage } = useIntl();
@@ -828,7 +829,7 @@ const AdminLayout = ()=>{
828
829
  const [userId, setUserId] = React.useState();
829
830
  const { showReleaseNotification } = useConfiguration('AuthenticatedApp');
830
831
  const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();
831
- const [tagName, setTagName] = React.useState(version);
832
+ const [tagName, setTagName] = React.useState(strapiVersion);
832
833
  React.useEffect(()=>{
833
834
  if (showReleaseNotification) {
834
835
  fetch('https://api.github.com/repos/strapi/strapi/releases/latest').then(async (res)=>{
@@ -871,7 +872,7 @@ const AdminLayout = ()=>{
871
872
  userInfo
872
873
  ]);
873
874
  const { trackUsage } = useTracking();
874
- const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks } = useMenu(checkLatestStrapiVersion(version, tagName));
875
+ const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
875
876
  /**
876
877
  * Make sure the event is only send once after accessing the admin panel
877
878
  * and not at runtime for example when regenerating the permissions with the ctb
@@ -888,7 +889,7 @@ const AdminLayout = ()=>{
888
889
  ...appInfo,
889
890
  userId: userId,
890
891
  latestStrapiReleaseTag: tagName,
891
- shouldUpdateStrapi: checkLatestStrapiVersion(version, tagName),
892
+ shouldUpdateStrapi: checkLatestStrapiVersion(strapiVersion, tagName),
892
893
  children: [
893
894
  /*#__PURE__*/ jsx(NpsSurvey, {}),
894
895
  /*#__PURE__*/ jsx(PluginsInitializer, {
@@ -939,4 +940,4 @@ const checkLatestStrapiVersion = (currentPackageVersion, latestPublishedVersion
939
940
  };
940
941
 
941
942
  export { AdminLayout, PrivateAdminLayout };
942
- //# sourceMappingURL=AuthenticatedLayout-C9eZ12Ue.mjs.map
943
+ //# sourceMappingURL=AuthenticatedLayout-jDyinb04.mjs.map