@strapi/content-manager 0.0.0-experimental.826f263c58b6886b849d3f03b81f7a530bc51c91 → 0.0.0-experimental.8c83c87960f2f5ddf95ae2f0acf849052f4a9ab4

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 (223) hide show
  1. package/LICENSE +18 -3
  2. package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -1
  3. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -1
  4. package/dist/_chunks/{ComponentConfigurationPage-CR5XdR33.mjs → ComponentConfigurationPage-BgCLcjXO.mjs} +4 -4
  5. package/dist/_chunks/{ComponentConfigurationPage-CR5XdR33.mjs.map → ComponentConfigurationPage-BgCLcjXO.mjs.map} +1 -1
  6. package/dist/_chunks/{ComponentConfigurationPage-DJcn1DrO.js → ComponentConfigurationPage-DywpTZeV.js} +5 -6
  7. package/dist/_chunks/{ComponentConfigurationPage-DJcn1DrO.js.map → ComponentConfigurationPage-DywpTZeV.js.map} +1 -1
  8. package/dist/_chunks/{ComponentIcon-BXdiCGQp.js → ComponentIcon-CRbtQEUV.js} +2 -3
  9. package/dist/_chunks/{ComponentIcon-BXdiCGQp.js.map → ComponentIcon-CRbtQEUV.js.map} +1 -1
  10. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -1
  11. package/dist/_chunks/{EditConfigurationPage-DmCIb4kD.mjs → EditConfigurationPage-BNjOAHNS.mjs} +4 -4
  12. package/dist/_chunks/{EditConfigurationPage-DmCIb4kD.mjs.map → EditConfigurationPage-BNjOAHNS.mjs.map} +1 -1
  13. package/dist/_chunks/{EditConfigurationPage-tDtWj7R2.js → EditConfigurationPage-CxRlP5if.js} +5 -6
  14. package/dist/_chunks/{EditConfigurationPage-tDtWj7R2.js.map → EditConfigurationPage-CxRlP5if.js.map} +1 -1
  15. package/dist/_chunks/{EditViewPage-CoQEnFlC.js → EditViewPage-BRewdTqE.js} +101 -51
  16. package/dist/_chunks/EditViewPage-BRewdTqE.js.map +1 -0
  17. package/dist/_chunks/{EditViewPage-DvaV7U9b.mjs → EditViewPage-CD_hqc1J.mjs} +102 -51
  18. package/dist/_chunks/EditViewPage-CD_hqc1J.mjs.map +1 -0
  19. package/dist/_chunks/{Field-Cz_J9551.mjs → Field-BPkQ-3Ku.mjs} +631 -279
  20. package/dist/_chunks/Field-BPkQ-3Ku.mjs.map +1 -0
  21. package/dist/_chunks/{Field-ZdrmmQ4Y.js → Field-DwvmENVf.js} +634 -283
  22. package/dist/_chunks/Field-DwvmENVf.js.map +1 -0
  23. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
  24. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
  25. package/dist/_chunks/{Form-Bpig5rch.js → Form-C_Gwv8P_.js} +55 -38
  26. package/dist/_chunks/Form-C_Gwv8P_.js.map +1 -0
  27. package/dist/_chunks/{Form-Dxmihyw8.mjs → Form-Czi0cf_2.mjs} +55 -37
  28. package/dist/_chunks/Form-Czi0cf_2.mjs.map +1 -0
  29. package/dist/_chunks/{History-BfX6XmZK.js → History-C1TKAig-.js} +175 -129
  30. package/dist/_chunks/History-C1TKAig-.js.map +1 -0
  31. package/dist/_chunks/{History-BZP8n7KT.mjs → History-CIQHyi4T.mjs} +176 -129
  32. package/dist/_chunks/History-CIQHyi4T.mjs.map +1 -0
  33. package/dist/_chunks/{ListConfigurationPage-B3CXj8PY.js → ListConfigurationPage-D-NGRLYu.js} +62 -51
  34. package/dist/_chunks/ListConfigurationPage-D-NGRLYu.js.map +1 -0
  35. package/dist/_chunks/{ListConfigurationPage-DxKuVkKz.mjs → ListConfigurationPage-DcZsfyEL.mjs} +63 -52
  36. package/dist/_chunks/ListConfigurationPage-DcZsfyEL.mjs.map +1 -0
  37. package/dist/_chunks/{ListViewPage-D5D3tVPq.mjs → ListViewPage-C10McTK1.mjs} +152 -128
  38. package/dist/_chunks/ListViewPage-C10McTK1.mjs.map +1 -0
  39. package/dist/_chunks/{ListViewPage-Bk9VO__I.js → ListViewPage-xv5IQoZp.js} +155 -132
  40. package/dist/_chunks/ListViewPage-xv5IQoZp.js.map +1 -0
  41. package/dist/_chunks/{NoContentTypePage-DnMeuQCj.mjs → NoContentTypePage-CPc0Cd3S.mjs} +2 -2
  42. package/dist/_chunks/{NoContentTypePage-DnMeuQCj.mjs.map → NoContentTypePage-CPc0Cd3S.mjs.map} +1 -1
  43. package/dist/_chunks/{NoContentTypePage-DsB2F7Z1.js → NoContentTypePage-Dzw5Yj5u.js} +2 -2
  44. package/dist/_chunks/{NoContentTypePage-DsB2F7Z1.js.map → NoContentTypePage-Dzw5Yj5u.js.map} +1 -1
  45. package/dist/_chunks/{NoPermissionsPage-BQDM64_b.js → NoPermissionsPage-DAe5CDCC.js} +2 -2
  46. package/dist/_chunks/{NoPermissionsPage-BQDM64_b.js.map → NoPermissionsPage-DAe5CDCC.js.map} +1 -1
  47. package/dist/_chunks/{NoPermissionsPage-OyoME_Tf.mjs → NoPermissionsPage-wfPBh2_0.mjs} +2 -2
  48. package/dist/_chunks/{NoPermissionsPage-OyoME_Tf.mjs.map → NoPermissionsPage-wfPBh2_0.mjs.map} +1 -1
  49. package/dist/_chunks/Preview-B7LyGT_b.js +290 -0
  50. package/dist/_chunks/Preview-B7LyGT_b.js.map +1 -0
  51. package/dist/_chunks/Preview-BVFFm7uB.mjs +272 -0
  52. package/dist/_chunks/Preview-BVFFm7uB.mjs.map +1 -0
  53. package/dist/_chunks/{Relations-B6B3A3mb.js → Relations-BmYR1AjY.js} +76 -43
  54. package/dist/_chunks/Relations-BmYR1AjY.js.map +1 -0
  55. package/dist/_chunks/{Relations-BOYZmuWy.mjs → Relations-JPhWxk-s.mjs} +76 -42
  56. package/dist/_chunks/Relations-JPhWxk-s.mjs.map +1 -0
  57. package/dist/_chunks/{en-BN1bvFK7.js → en-BK8Xyl5I.js} +35 -18
  58. package/dist/_chunks/{en-BN1bvFK7.js.map → en-BK8Xyl5I.js.map} +1 -1
  59. package/dist/_chunks/{en-Dzv55oQw.mjs → en-Dtk_ot79.mjs} +35 -18
  60. package/dist/_chunks/{en-Dzv55oQw.mjs.map → en-Dtk_ot79.mjs.map} +1 -1
  61. package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
  62. package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
  63. package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
  64. package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
  65. package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
  66. package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
  67. package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
  68. package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
  69. package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
  70. package/dist/_chunks/{index-DzN3kBgx.js → index-C2Q_PLWj.js} +1165 -880
  71. package/dist/_chunks/index-C2Q_PLWj.js.map +1 -0
  72. package/dist/_chunks/{index-VHviNMeW.mjs → index-DLIkNVnQ.mjs} +1185 -900
  73. package/dist/_chunks/index-DLIkNVnQ.mjs.map +1 -0
  74. package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
  75. package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
  76. package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
  77. package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
  78. package/dist/_chunks/{layout-b91XRlD2.js → layout-7AsWJzZJ.js} +41 -24
  79. package/dist/_chunks/layout-7AsWJzZJ.js.map +1 -0
  80. package/dist/_chunks/{layout-CPn1PM6x.mjs → layout-qE8qkNH_.mjs} +42 -24
  81. package/dist/_chunks/layout-qE8qkNH_.mjs.map +1 -0
  82. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  83. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  84. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  85. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  86. package/dist/_chunks/{relations-BsqxS6tR.mjs → relations-BjHH_1Am.mjs} +6 -7
  87. package/dist/_chunks/relations-BjHH_1Am.mjs.map +1 -0
  88. package/dist/_chunks/{relations-CA7IYmcP.js → relations-EifVzf_2.js} +6 -7
  89. package/dist/_chunks/relations-EifVzf_2.js.map +1 -0
  90. package/dist/_chunks/{usePrev-B9w_-eYc.js → useDebounce-CtcjDB3L.js} +14 -1
  91. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
  92. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
  93. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
  94. package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
  95. package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js.map → useDragAndDrop-BMtgCYzL.js.map} +1 -1
  96. package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
  97. package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs.map → useDragAndDrop-DJ6jqvZN.mjs.map} +1 -1
  98. package/dist/admin/index.js +2 -1
  99. package/dist/admin/index.js.map +1 -1
  100. package/dist/admin/index.mjs +8 -7
  101. package/dist/admin/src/exports.d.ts +1 -1
  102. package/dist/admin/src/history/components/VersionInputRenderer.d.ts +1 -1
  103. package/dist/admin/src/history/index.d.ts +3 -0
  104. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  105. package/dist/admin/src/hooks/useDocument.d.ts +32 -1
  106. package/dist/admin/src/index.d.ts +1 -0
  107. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
  108. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +8 -3
  109. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +2 -2
  110. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +4 -0
  111. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
  112. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
  113. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
  114. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +6 -58
  115. package/dist/admin/src/pages/EditView/components/Header.d.ts +11 -11
  116. package/dist/admin/src/pages/ListView/components/BulkActions/Actions.d.ts +3 -30
  117. package/dist/admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +2 -2
  118. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
  119. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
  120. package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
  121. package/dist/admin/src/preview/constants.d.ts +1 -0
  122. package/dist/admin/src/preview/index.d.ts +4 -0
  123. package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
  124. package/dist/admin/src/preview/routes.d.ts +3 -0
  125. package/dist/admin/src/preview/services/preview.d.ts +3 -0
  126. package/dist/admin/src/router.d.ts +1 -1
  127. package/dist/admin/src/services/api.d.ts +1 -1
  128. package/dist/admin/src/services/components.d.ts +2 -2
  129. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  130. package/dist/admin/src/services/documents.d.ts +19 -20
  131. package/dist/admin/src/services/init.d.ts +1 -1
  132. package/dist/admin/src/services/relations.d.ts +2 -2
  133. package/dist/admin/src/services/uid.d.ts +3 -3
  134. package/dist/admin/src/utils/validation.d.ts +4 -1
  135. package/dist/server/index.js +616 -299
  136. package/dist/server/index.js.map +1 -1
  137. package/dist/server/index.mjs +616 -298
  138. package/dist/server/index.mjs.map +1 -1
  139. package/dist/server/src/bootstrap.d.ts.map +1 -1
  140. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  141. package/dist/server/src/controllers/index.d.ts.map +1 -1
  142. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  143. package/dist/server/src/controllers/uid.d.ts.map +1 -1
  144. package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
  145. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  146. package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
  147. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
  148. package/dist/server/src/history/services/history.d.ts.map +1 -1
  149. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  150. package/dist/server/src/history/services/utils.d.ts +4 -4
  151. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  152. package/dist/server/src/index.d.ts +4 -4
  153. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  154. package/dist/server/src/preview/constants.d.ts +2 -0
  155. package/dist/server/src/preview/constants.d.ts.map +1 -0
  156. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  157. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  158. package/dist/server/src/preview/controllers/preview.d.ts +13 -0
  159. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  160. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  161. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  162. package/dist/server/src/preview/index.d.ts +4 -0
  163. package/dist/server/src/preview/index.d.ts.map +1 -0
  164. package/dist/server/src/preview/routes/index.d.ts +8 -0
  165. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  166. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  167. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  168. package/dist/server/src/preview/services/index.d.ts +16 -0
  169. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  170. package/dist/server/src/preview/services/preview-config.d.ts +32 -0
  171. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
  172. package/dist/server/src/preview/services/preview.d.ts +12 -0
  173. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  174. package/dist/server/src/preview/utils.d.ts +19 -0
  175. package/dist/server/src/preview/utils.d.ts.map +1 -0
  176. package/dist/server/src/register.d.ts.map +1 -1
  177. package/dist/server/src/routes/index.d.ts.map +1 -1
  178. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  179. package/dist/server/src/services/document-metadata.d.ts +8 -8
  180. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  181. package/dist/server/src/services/index.d.ts +4 -4
  182. package/dist/server/src/services/index.d.ts.map +1 -1
  183. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  184. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  185. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  186. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  187. package/dist/server/src/utils/index.d.ts +2 -0
  188. package/dist/server/src/utils/index.d.ts.map +1 -1
  189. package/dist/shared/contracts/collection-types.d.ts +3 -1
  190. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  191. package/dist/shared/contracts/index.d.ts +1 -0
  192. package/dist/shared/contracts/index.d.ts.map +1 -1
  193. package/dist/shared/contracts/preview.d.ts +27 -0
  194. package/dist/shared/contracts/preview.d.ts.map +1 -0
  195. package/dist/shared/index.js +4 -0
  196. package/dist/shared/index.js.map +1 -1
  197. package/dist/shared/index.mjs +4 -0
  198. package/dist/shared/index.mjs.map +1 -1
  199. package/package.json +15 -15
  200. package/dist/_chunks/EditViewPage-CoQEnFlC.js.map +0 -1
  201. package/dist/_chunks/EditViewPage-DvaV7U9b.mjs.map +0 -1
  202. package/dist/_chunks/Field-Cz_J9551.mjs.map +0 -1
  203. package/dist/_chunks/Field-ZdrmmQ4Y.js.map +0 -1
  204. package/dist/_chunks/Form-Bpig5rch.js.map +0 -1
  205. package/dist/_chunks/Form-Dxmihyw8.mjs.map +0 -1
  206. package/dist/_chunks/History-BZP8n7KT.mjs.map +0 -1
  207. package/dist/_chunks/History-BfX6XmZK.js.map +0 -1
  208. package/dist/_chunks/ListConfigurationPage-B3CXj8PY.js.map +0 -1
  209. package/dist/_chunks/ListConfigurationPage-DxKuVkKz.mjs.map +0 -1
  210. package/dist/_chunks/ListViewPage-Bk9VO__I.js.map +0 -1
  211. package/dist/_chunks/ListViewPage-D5D3tVPq.mjs.map +0 -1
  212. package/dist/_chunks/Relations-B6B3A3mb.js.map +0 -1
  213. package/dist/_chunks/Relations-BOYZmuWy.mjs.map +0 -1
  214. package/dist/_chunks/index-DzN3kBgx.js.map +0 -1
  215. package/dist/_chunks/index-VHviNMeW.mjs.map +0 -1
  216. package/dist/_chunks/layout-CPn1PM6x.mjs.map +0 -1
  217. package/dist/_chunks/layout-b91XRlD2.js.map +0 -1
  218. package/dist/_chunks/relations-BsqxS6tR.mjs.map +0 -1
  219. package/dist/_chunks/relations-CA7IYmcP.js.map +0 -1
  220. package/dist/_chunks/usePrev-B9w_-eYc.js.map +0 -1
  221. package/dist/_chunks/usePrev-DH6iah0A.mjs +0 -16
  222. package/dist/_chunks/usePrev-DH6iah0A.mjs.map +0 -1
  223. package/strapi-server.js +0 -3
@@ -5,19 +5,19 @@ const strapiAdmin = require("@strapi/admin/strapi-admin");
5
5
  const designSystem = require("@strapi/design-system");
6
6
  const pipe$1 = require("lodash/fp/pipe");
7
7
  const reactIntl = require("react-intl");
8
- const index = require("./index-DzN3kBgx.js");
8
+ const index = require("./index-C2Q_PLWj.js");
9
9
  const fractionalIndexing = require("fractional-indexing");
10
- const Relations = require("./Relations-B6B3A3mb.js");
10
+ const Relations = require("./Relations-BmYR1AjY.js");
11
11
  const Icons = require("@strapi/icons");
12
12
  const styledComponents = require("styled-components");
13
- const ComponentIcon = require("./ComponentIcon-BXdiCGQp.js");
13
+ const ComponentIcon = require("./ComponentIcon-CRbtQEUV.js");
14
14
  const reactDndHtml5Backend = require("react-dnd-html5-backend");
15
- const useDragAndDrop = require("./useDragAndDrop-J0TUUbR6.js");
16
- const objects = require("./objects-gigeqt7s.js");
15
+ const useDragAndDrop = require("./useDragAndDrop-BMtgCYzL.js");
16
+ const objects = require("./objects-BcXOv6_9.js");
17
17
  const slate = require("slate");
18
18
  const slateHistory = require("slate-history");
19
19
  const slateReact = require("slate-react");
20
- const usePrev = require("./usePrev-B9w_-eYc.js");
20
+ const useDebounce = require("./useDebounce-CtcjDB3L.js");
21
21
  const Toolbar = require("@radix-ui/react-toolbar");
22
22
  const reactRouterDom = require("react-router-dom");
23
23
  const CodeMirror = require("codemirror5");
@@ -37,8 +37,7 @@ require("highlight.js/styles/solarized-dark.css");
37
37
  require("codemirror5/addon/display/placeholder");
38
38
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
39
39
  function _interopNamespace(e) {
40
- if (e && e.__esModule)
41
- return e;
40
+ if (e && e.__esModule) return e;
42
41
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
43
42
  if (e) {
44
43
  for (const k in e) {
@@ -194,6 +193,220 @@ const useLazyComponents = (componentUids = []) => {
194
193
  }, []);
195
194
  return { isLazyLoading: loading, lazyComponentStore, cleanup };
196
195
  };
196
+ const codeLanguages = [
197
+ {
198
+ value: "asm",
199
+ label: "Assembly"
200
+ },
201
+ {
202
+ value: "bash",
203
+ label: "Bash"
204
+ },
205
+ {
206
+ value: "c",
207
+ label: "C"
208
+ },
209
+ {
210
+ value: "clojure",
211
+ label: "Clojure"
212
+ },
213
+ {
214
+ value: "cobol",
215
+ label: "COBOL"
216
+ },
217
+ {
218
+ value: "cpp",
219
+ label: "C++"
220
+ },
221
+ {
222
+ value: "csharp",
223
+ label: "C#"
224
+ },
225
+ {
226
+ value: "css",
227
+ label: "CSS"
228
+ },
229
+ {
230
+ value: "dart",
231
+ label: "Dart"
232
+ },
233
+ {
234
+ value: "dockerfile",
235
+ label: "Dockerfile"
236
+ },
237
+ {
238
+ value: "elixir",
239
+ label: "Elixir"
240
+ },
241
+ {
242
+ value: "erlang",
243
+ label: "Erlang"
244
+ },
245
+ {
246
+ value: "fortran",
247
+ label: "Fortran"
248
+ },
249
+ {
250
+ value: "fsharp",
251
+ label: "F#"
252
+ },
253
+ {
254
+ value: "go",
255
+ label: "Go"
256
+ },
257
+ {
258
+ value: "graphql",
259
+ label: "GraphQL"
260
+ },
261
+ {
262
+ value: "groovy",
263
+ label: "Groovy"
264
+ },
265
+ {
266
+ value: "haskell",
267
+ label: "Haskell"
268
+ },
269
+ {
270
+ value: "haxe",
271
+ label: "Haxe"
272
+ },
273
+ {
274
+ value: "html",
275
+ label: "HTML"
276
+ },
277
+ {
278
+ value: "ini",
279
+ label: "INI"
280
+ },
281
+ {
282
+ value: "java",
283
+ label: "Java"
284
+ },
285
+ {
286
+ value: "javascript",
287
+ label: "JavaScript"
288
+ },
289
+ {
290
+ value: "jsx",
291
+ label: "JavaScript (React)"
292
+ },
293
+ {
294
+ value: "json",
295
+ label: "JSON"
296
+ },
297
+ {
298
+ value: "julia",
299
+ label: "Julia"
300
+ },
301
+ {
302
+ value: "kotlin",
303
+ label: "Kotlin"
304
+ },
305
+ {
306
+ value: "latex",
307
+ label: "LaTeX"
308
+ },
309
+ {
310
+ value: "lua",
311
+ label: "Lua"
312
+ },
313
+ {
314
+ value: "markdown",
315
+ label: "Markdown"
316
+ },
317
+ {
318
+ value: "matlab",
319
+ label: "MATLAB"
320
+ },
321
+ {
322
+ value: "makefile",
323
+ label: "Makefile"
324
+ },
325
+ {
326
+ value: "objectivec",
327
+ label: "Objective-C"
328
+ },
329
+ {
330
+ value: "perl",
331
+ label: "Perl"
332
+ },
333
+ {
334
+ value: "php",
335
+ label: "PHP"
336
+ },
337
+ {
338
+ value: "plaintext",
339
+ label: "Plain text"
340
+ },
341
+ {
342
+ value: "powershell",
343
+ label: "PowerShell"
344
+ },
345
+ {
346
+ value: "python",
347
+ label: "Python"
348
+ },
349
+ {
350
+ value: "r",
351
+ label: "R"
352
+ },
353
+ {
354
+ value: "ruby",
355
+ label: "Ruby"
356
+ },
357
+ {
358
+ value: "rust",
359
+ label: "Rust"
360
+ },
361
+ {
362
+ value: "sas",
363
+ label: "SAS"
364
+ },
365
+ {
366
+ value: "scala",
367
+ label: "Scala"
368
+ },
369
+ {
370
+ value: "scheme",
371
+ label: "Scheme"
372
+ },
373
+ {
374
+ value: "shell",
375
+ label: "Shell"
376
+ },
377
+ {
378
+ value: "sql",
379
+ label: "SQL"
380
+ },
381
+ {
382
+ value: "stata",
383
+ label: "Stata"
384
+ },
385
+ {
386
+ value: "swift",
387
+ label: "Swift"
388
+ },
389
+ {
390
+ value: "typescript",
391
+ label: "TypeScript"
392
+ },
393
+ {
394
+ value: "tsx",
395
+ label: "TypeScript (React)"
396
+ },
397
+ {
398
+ value: "vbnet",
399
+ label: "VB.NET"
400
+ },
401
+ {
402
+ value: "xml",
403
+ label: "XML"
404
+ },
405
+ {
406
+ value: "yaml",
407
+ label: "YAML"
408
+ }
409
+ ];
197
410
  const baseHandleConvert = (editor, attributesToSet) => {
198
411
  const [_, lastNodePath] = slate.Editor.last(editor, []);
199
412
  slate.Transforms.unwrapNodes(editor, {
@@ -264,6 +477,7 @@ const CodeBlock = styledComponents.styled.pre`
264
477
  overflow: auto;
265
478
  padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};
266
479
  flex-shrink: 1;
480
+
267
481
  & > code {
268
482
  font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,
269
483
  monospace;
@@ -272,10 +486,62 @@ const CodeBlock = styledComponents.styled.pre`
272
486
  max-width: 100%;
273
487
  }
274
488
  `;
489
+ const CodeEditor = (props) => {
490
+ const { editor } = useBlocksEditorContext("ImageDialog");
491
+ const editorIsFocused = slateReact.useFocused();
492
+ const imageIsSelected = slateReact.useSelected();
493
+ const { formatMessage } = reactIntl.useIntl();
494
+ const [isSelectOpen, setIsSelectOpen] = React__namespace.useState(false);
495
+ const shouldDisplayLanguageSelect = editorIsFocused && imageIsSelected || isSelectOpen;
496
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { position: "relative", width: "100%", children: [
497
+ /* @__PURE__ */ jsxRuntime.jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: props.children }) }),
498
+ shouldDisplayLanguageSelect && /* @__PURE__ */ jsxRuntime.jsx(
499
+ designSystem.Box,
500
+ {
501
+ position: "absolute",
502
+ background: "neutral0",
503
+ borderColor: "neutral150",
504
+ borderStyle: "solid",
505
+ borderWidth: "0.5px",
506
+ shadow: "tableShadow",
507
+ top: "100%",
508
+ marginTop: 1,
509
+ right: 0,
510
+ padding: 1,
511
+ hasRadius: true,
512
+ children: /* @__PURE__ */ jsxRuntime.jsx(
513
+ designSystem.SingleSelect,
514
+ {
515
+ onChange: (open) => {
516
+ slate.Transforms.setNodes(
517
+ editor,
518
+ { language: open.toString() },
519
+ { match: (node) => !slate.Editor.isEditor(node) && node.type === "code" }
520
+ );
521
+ },
522
+ value: props.element.type === "code" && props.element.language || "plaintext",
523
+ onOpenChange: (open) => {
524
+ setIsSelectOpen(open);
525
+ if (!open) {
526
+ slateReact.ReactEditor.focus(editor);
527
+ }
528
+ },
529
+ onCloseAutoFocus: (e) => e.preventDefault(),
530
+ "aria-label": formatMessage({
531
+ id: "components.Blocks.blocks.code.languageLabel",
532
+ defaultMessage: "Select a language"
533
+ }),
534
+ children: codeLanguages.map(({ value, label }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value, children: label }, value))
535
+ }
536
+ )
537
+ }
538
+ )
539
+ ] });
540
+ };
275
541
  const codeBlocks = {
276
542
  code: {
277
- renderElement: (props) => /* @__PURE__ */ jsxRuntime.jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: props.children }) }),
278
- icon: Icons.Code,
543
+ renderElement: (props) => /* @__PURE__ */ jsxRuntime.jsx(CodeEditor, { ...props }),
544
+ icon: Icons.CodeBlock,
279
545
  label: {
280
546
  id: "components.Blocks.blocks.code",
281
547
  defaultMessage: "Code block"
@@ -283,7 +549,7 @@ const codeBlocks = {
283
549
  matchNode: (node) => node.type === "code",
284
550
  isInBlocksSelector: true,
285
551
  handleConvert(editor) {
286
- baseHandleConvert(editor, { type: "code" });
552
+ baseHandleConvert(editor, { type: "code", language: "plaintext" });
287
553
  },
288
554
  handleEnterKey(editor) {
289
555
  pressEnterTwiceToExit(editor);
@@ -464,8 +730,7 @@ const ImageDialog = () => {
464
730
  const [isOpen, setIsOpen] = React__namespace.useState(true);
465
731
  const { editor } = useBlocksEditorContext("ImageDialog");
466
732
  const components = strapiAdmin.useStrapiApp("ImageDialog", (state) => state.components);
467
- if (!components || !isOpen)
468
- return null;
733
+ if (!components || !isOpen) return null;
469
734
  const MediaLibraryDialog = components["media-library"];
470
735
  const insertImages = (images) => {
471
736
  slate.Transforms.unwrapNodes(editor, {
@@ -474,14 +739,12 @@ const ImageDialog = () => {
474
739
  });
475
740
  const nodeEntryBeingReplaced = slate.Editor.above(editor, {
476
741
  match(node) {
477
- if (slate.Editor.isEditor(node))
478
- return false;
742
+ if (slate.Editor.isEditor(node)) return false;
479
743
  const isInlineNode = ["text", "link"].includes(node.type);
480
744
  return !isInlineNode;
481
745
  }
482
746
  });
483
- if (!nodeEntryBeingReplaced)
484
- return;
747
+ if (!nodeEntryBeingReplaced) return;
485
748
  const [, pathToInsert] = nodeEntryBeingReplaced;
486
749
  slate.Transforms.removeNodes(editor);
487
750
  const nodesToInsert = images.map((image) => {
@@ -501,7 +764,7 @@ const ImageDialog = () => {
501
764
  const nodeImage = {
502
765
  ...expectedImage,
503
766
  alternativeText: expectedImage.alternativeText || expectedImage.name,
504
- url: usePrev.prefixFileUrlWithBackendUrl(image.url)
767
+ url: useDebounce.prefixFileUrlWithBackendUrl(image.url)
505
768
  };
506
769
  return nodeImage;
507
770
  });
@@ -623,18 +886,12 @@ const LinkContent = React__namespace.forwardRef(
623
886
  const [popoverOpen, setPopoverOpen] = React__namespace.useState(
624
887
  editor.lastInsertedLinkPath ? slate.Path.equals(path, editor.lastInsertedLinkPath) : false
625
888
  );
626
- const linkRef = React__namespace.useRef(null);
627
889
  const elementText = link.children.map((child) => child.text).join("");
628
890
  const [linkText, setLinkText] = React__namespace.useState(elementText);
629
891
  const [linkUrl, setLinkUrl] = React__namespace.useState(link.url);
630
892
  const linkInputRef = React__namespace.useRef(null);
631
- const [showRemoveButton, setShowRemoveButton] = React__namespace.useState(false);
893
+ const isLastInsertedLink = editor.lastInsertedLinkPath ? !slate.Path.equals(path, editor.lastInsertedLinkPath) : true;
632
894
  const [isSaveDisabled, setIsSaveDisabled] = React__namespace.useState(false);
633
- const handleOpenEditPopover = (e) => {
634
- e.preventDefault();
635
- setPopoverOpen(true);
636
- setShowRemoveButton(true);
637
- };
638
895
  const onLinkChange = (e) => {
639
896
  setIsSaveDisabled(false);
640
897
  setLinkUrl(e.target.value);
@@ -655,33 +912,32 @@ const LinkContent = React__namespace.forwardRef(
655
912
  editLink(editor, { url: linkUrl, text: linkText });
656
913
  setPopoverOpen(false);
657
914
  editor.lastInsertedLinkPath = null;
915
+ slateReact.ReactEditor.focus(editor);
658
916
  };
659
- const handleDismiss = () => {
660
- setPopoverOpen(false);
917
+ const handleClose = () => {
661
918
  if (link.url === "") {
662
919
  removeLink(editor);
663
920
  }
921
+ setPopoverOpen(false);
664
922
  slateReact.ReactEditor.focus(editor);
665
923
  };
666
- const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
667
- const composedRefs = designSystem.useComposedRefs(linkRef, forwardedRef);
668
924
  React__namespace.useEffect(() => {
669
- if (popoverOpen)
670
- linkInputRef.current?.focus();
925
+ if (popoverOpen) linkInputRef.current?.focus();
671
926
  }, [popoverOpen]);
672
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
673
- /* @__PURE__ */ jsxRuntime.jsx(
927
+ const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
928
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { open: popoverOpen, children: [
929
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
674
930
  StyledBaseLink,
675
931
  {
676
932
  ...attributes,
677
- ref: composedRefs,
933
+ ref: forwardedRef,
678
934
  href: link.url,
679
- onClick: handleOpenEditPopover,
935
+ onClick: () => setPopoverOpen(true),
680
936
  color: "primary600",
681
937
  children
682
938
  }
683
- ),
684
- popoverOpen && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover, { source: linkRef, onDismiss: handleDismiss, padding: 4, contentEditable: false, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { tag: "form", onSubmit: handleSave, direction: "column", gap: 4, children: [
939
+ ) }),
940
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { onPointerDownOutside: handleClose, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 4, children: [
685
941
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { width: "368px", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, alignItems: "stretch", children: [
686
942
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
687
943
  id: "components.Blocks.popover.text",
@@ -727,7 +983,7 @@ const LinkContent = React__namespace.forwardRef(
727
983
  {
728
984
  variant: "danger-light",
729
985
  onClick: () => removeLink(editor),
730
- $visible: showRemoveButton,
986
+ $visible: isLastInsertedLink,
731
987
  children: formatMessage({
732
988
  id: "components.Blocks.popover.remove",
733
989
  defaultMessage: "Remove"
@@ -735,11 +991,11 @@ const LinkContent = React__namespace.forwardRef(
735
991
  }
736
992
  ),
737
993
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
738
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: handleDismiss, children: formatMessage({
994
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: handleClose, children: formatMessage({
739
995
  id: "components.Blocks.popover.cancel",
740
996
  defaultMessage: "Cancel"
741
997
  }) }),
742
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: Boolean(inputNotDirty) || isSaveDisabled, children: formatMessage({
998
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { disabled: Boolean(inputNotDirty) || isSaveDisabled, onClick: handleSave, children: formatMessage({
743
999
  id: "components.Blocks.popover.save",
744
1000
  defaultMessage: "Save"
745
1001
  }) })
@@ -821,8 +1077,7 @@ const isText$1 = (node) => {
821
1077
  return slate.Node.isNode(node) && !slate.Editor.isEditor(node) && node.type === "text";
822
1078
  };
823
1079
  const handleBackspaceKeyOnList = (editor, event) => {
824
- if (!editor.selection)
825
- return;
1080
+ if (!editor.selection) return;
826
1081
  const [currentListItem, currentListItemPath] = slate.Editor.parent(editor, editor.selection.anchor);
827
1082
  const [currentList, currentListPath] = slate.Editor.parent(editor, currentListItemPath);
828
1083
  const isListEmpty = currentList.children.length === 1 && isText$1(currentListItem.children[0]) && currentListItem.children[0].text === "";
@@ -931,8 +1186,7 @@ const handleEnterKeyOnList = (editor) => {
931
1186
  };
932
1187
  const handleConvertToList = (editor, format) => {
933
1188
  const convertedPath = baseHandleConvert(editor, { type: "list-item" });
934
- if (!convertedPath)
935
- return;
1189
+ if (!convertedPath) return;
936
1190
  slate.Transforms.wrapNodes(editor, { type: "list", format, children: [] }, { at: convertedPath });
937
1191
  };
938
1192
  const handleTabOnList = (editor) => {
@@ -944,8 +1198,7 @@ const handleTabOnList = (editor) => {
944
1198
  }
945
1199
  const [currentListItem, currentListItemPath] = currentListItemEntry;
946
1200
  const [currentList] = slate.Editor.parent(editor, currentListItemPath);
947
- if (currentListItem === currentList.children[0])
948
- return;
1201
+ if (currentListItem === currentList.children[0]) return;
949
1202
  const currentListItemIndex = currentList.children.findIndex((item) => item === currentListItem);
950
1203
  const previousNode = currentList.children[currentListItemIndex - 1];
951
1204
  if (previousNode.type === "list") {
@@ -1180,7 +1433,7 @@ const ToolbarButton = ({
1180
1433
  width: 7,
1181
1434
  height: 7,
1182
1435
  hasRadius: true,
1183
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { width: "1.2rem", height: "1.2rem", fill: disabled ? "neutral300" : enabledColor })
1436
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { fill: disabled ? "neutral300" : enabledColor })
1184
1437
  }
1185
1438
  )
1186
1439
  }
@@ -1312,8 +1565,7 @@ const isListNode = (node) => {
1312
1565
  const ListButton = ({ block, format }) => {
1313
1566
  const { editor, disabled, blocks } = useBlocksEditorContext("ListButton");
1314
1567
  const isListActive = () => {
1315
- if (!editor.selection)
1316
- return false;
1568
+ if (!editor.selection) return false;
1317
1569
  const currentListEntry = slate.Editor.above(editor, {
1318
1570
  match: (node) => !slate.Editor.isEditor(node) && node.type === "list",
1319
1571
  at: editor.selection.anchor
@@ -1325,6 +1577,26 @@ const ListButton = ({ block, format }) => {
1325
1577
  }
1326
1578
  return false;
1327
1579
  };
1580
+ const isListDisabled = () => {
1581
+ if (disabled) {
1582
+ return true;
1583
+ }
1584
+ if (!editor.selection) {
1585
+ return false;
1586
+ }
1587
+ const anchorNodeEntry = slate.Editor.above(editor, {
1588
+ at: editor.selection.anchor,
1589
+ match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
1590
+ });
1591
+ const focusNodeEntry = slate.Editor.above(editor, {
1592
+ at: editor.selection.focus,
1593
+ match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
1594
+ });
1595
+ if (!anchorNodeEntry || !focusNodeEntry) {
1596
+ return false;
1597
+ }
1598
+ return anchorNodeEntry[0] !== focusNodeEntry[0];
1599
+ };
1328
1600
  const toggleList = (format2) => {
1329
1601
  let currentListEntry;
1330
1602
  if (editor.selection) {
@@ -1358,7 +1630,7 @@ const ListButton = ({ block, format }) => {
1358
1630
  name: format,
1359
1631
  label: block.label,
1360
1632
  isActive: isListActive(),
1361
- disabled,
1633
+ disabled: isListDisabled(),
1362
1634
  handleClick: () => toggleList(format)
1363
1635
  }
1364
1636
  );
@@ -1367,8 +1639,7 @@ const LinkButton = ({ disabled }) => {
1367
1639
  const { editor } = useBlocksEditorContext("LinkButton");
1368
1640
  const isLinkActive = () => {
1369
1641
  const { selection } = editor;
1370
- if (!selection)
1371
- return false;
1642
+ if (!selection) return false;
1372
1643
  const [match] = Array.from(
1373
1644
  slate.Editor.nodes(editor, {
1374
1645
  at: slate.Editor.unhangRange(editor, selection),
@@ -1502,6 +1773,7 @@ const DragItem = styledComponents.styled(designSystem.Flex)`
1502
1773
  }
1503
1774
  `;
1504
1775
  const DragIconButton = styledComponents.styled(designSystem.IconButton)`
1776
+ user-select: none;
1505
1777
  display: flex;
1506
1778
  align-items: center;
1507
1779
  justify-content: center;
@@ -1525,7 +1797,7 @@ const DragIconButton = styledComponents.styled(designSystem.IconButton)`
1525
1797
  }
1526
1798
  svg {
1527
1799
  height: auto;
1528
- width: ${({ theme }) => theme.spaces[3]};
1800
+ min-width: ${({ theme }) => theme.spaces[3]};
1529
1801
 
1530
1802
  path {
1531
1803
  fill: ${({ theme }) => theme.colors.neutral700};
@@ -1573,8 +1845,7 @@ const DragAndDropElement = ({
1573
1845
  displayedValue: children
1574
1846
  },
1575
1847
  onDropItem(currentIndex, newIndex) {
1576
- if (newIndex)
1577
- handleMoveBlock(newIndex, currentIndex);
1848
+ if (newIndex) handleMoveBlock(newIndex, currentIndex);
1578
1849
  }
1579
1850
  });
1580
1851
  const composedBoxRefs = designSystem.useComposedRefs(blockRef, dropRef);
@@ -1630,6 +1901,7 @@ const DragAndDropElement = ({
1630
1901
  DragIconButton,
1631
1902
  {
1632
1903
  tag: "div",
1904
+ contentEditable: false,
1633
1905
  role: "button",
1634
1906
  tabIndex: 0,
1635
1907
  withTooltip: false,
@@ -1642,7 +1914,7 @@ const DragAndDropElement = ({
1642
1914
  disabled,
1643
1915
  draggable: true,
1644
1916
  $dragHandleTopMargin: dragHandleTopMargin,
1645
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "neutral600" })
1917
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "primary500" })
1646
1918
  }
1647
1919
  ),
1648
1920
  children
@@ -1717,8 +1989,7 @@ const BlocksContent = ({ placeholder, ariaLabelId }) => {
1717
1989
  [modifiers2]
1718
1990
  );
1719
1991
  const handleMoveBlocks = (editor2, event) => {
1720
- if (!editor2.selection)
1721
- return;
1992
+ if (!editor2.selection) return;
1722
1993
  const start = slate.Range.start(editor2.selection);
1723
1994
  const currentIndex = [start.path[0]];
1724
1995
  let newIndexPosition = 0;
@@ -1855,8 +2126,7 @@ const BlocksContent = ({ placeholder, ariaLabelId }) => {
1855
2126
  }
1856
2127
  };
1857
2128
  const handleScrollSelectionIntoView = () => {
1858
- if (!editor.selection)
1859
- return;
2129
+ if (!editor.selection) return;
1860
2130
  const domRange = slateReact.ReactEditor.toDOMRange(editor, editor.selection);
1861
2131
  const domRect = domRange.getBoundingClientRect();
1862
2132
  const blocksInput = blocksRef.current;
@@ -1966,7 +2236,7 @@ const EditorLayout$1 = ({
1966
2236
  /* @__PURE__ */ jsxRuntime.jsx(
1967
2237
  CollapseIconButton,
1968
2238
  {
1969
- "aria-label": formatMessage({
2239
+ label: formatMessage({
1970
2240
  id: index.getTranslation("components.Blocks.collapse"),
1971
2241
  defaultMessage: "Collapse"
1972
2242
  }),
@@ -2050,8 +2320,7 @@ const InlineCode = styledComponents.styled.code`
2050
2320
  `;
2051
2321
  const baseCheckIsActive = (editor, name2) => {
2052
2322
  const marks = slate.Editor.marks(editor);
2053
- if (!marks)
2054
- return false;
2323
+ if (!marks) return false;
2055
2324
  return Boolean(marks[name2]);
2056
2325
  };
2057
2326
  const baseHandleToggle = (editor, name2) => {
@@ -2305,7 +2574,7 @@ const BlocksEditor = React__namespace.forwardRef(
2305
2574
  !isExpandedMode && /* @__PURE__ */ jsxRuntime.jsx(
2306
2575
  ExpandIconButton,
2307
2576
  {
2308
- "aria-label": formatMessage({
2577
+ label: formatMessage({
2309
2578
  id: index.getTranslation("components.Blocks.expand"),
2310
2579
  defaultMessage: "Expand"
2311
2580
  }),
@@ -2371,47 +2640,44 @@ const createDefaultForm = (contentType, components = {}) => {
2371
2640
  const Initializer = ({ disabled, name: name2, onClick }) => {
2372
2641
  const { formatMessage } = reactIntl.useIntl();
2373
2642
  const field = strapiAdmin.useField(name2);
2374
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2375
- /* @__PURE__ */ jsxRuntime.jsx(
2376
- designSystem.Box,
2377
- {
2378
- tag: "button",
2379
- background: "neutral100",
2380
- borderColor: field.error ? "danger600" : "neutral200",
2381
- hasRadius: true,
2382
- disabled,
2383
- onClick,
2384
- paddingTop: 9,
2385
- paddingBottom: 9,
2386
- type: "button",
2387
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
2388
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, {}) }),
2389
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
2390
- id: index.getTranslation("components.empty-repeatable"),
2391
- defaultMessage: "No entry yet. Click on the button below to add one."
2392
- }) }) })
2393
- ] })
2394
- }
2395
- ),
2396
- field.error && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "pi", children: field.error })
2397
- ] });
2643
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
2644
+ designSystem.Box,
2645
+ {
2646
+ tag: "button",
2647
+ background: disabled ? "neutral150" : "neutral100",
2648
+ borderColor: field.error ? "danger600" : "neutral200",
2649
+ hasRadius: true,
2650
+ disabled,
2651
+ onClick,
2652
+ paddingTop: 9,
2653
+ paddingBottom: 9,
2654
+ type: "button",
2655
+ style: { cursor: disabled ? "not-allowed" : "pointer" },
2656
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
2657
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", color: disabled ? "neutral500" : "primary600", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.PlusCircle, { width: "3.2rem", height: "3.2rem" }) }),
2658
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(
2659
+ designSystem.Typography,
2660
+ {
2661
+ textColor: disabled ? "neutral600" : "primary600",
2662
+ variant: "pi",
2663
+ fontWeight: "bold",
2664
+ children: formatMessage({
2665
+ id: index.getTranslation("components.empty-repeatable"),
2666
+ defaultMessage: "No entry yet. Click to add one."
2667
+ })
2668
+ }
2669
+ ) })
2670
+ ] })
2671
+ }
2672
+ ) });
2398
2673
  };
2399
- const CircleIcon = styledComponents.styled(Icons.PlusCircle)`
2400
- width: 2.4rem;
2401
- height: 2.4rem;
2402
- > circle {
2403
- fill: ${({ theme }) => theme.colors.primary200};
2404
- }
2405
- > path {
2406
- fill: ${({ theme }) => theme.colors.primary600};
2407
- }
2408
- `;
2409
2674
  const NonRepeatableComponent = ({
2410
2675
  attribute,
2411
2676
  name: name2,
2412
2677
  children,
2413
2678
  layout
2414
2679
  }) => {
2680
+ const { formatMessage } = reactIntl.useIntl();
2415
2681
  const { value } = strapiAdmin.useField(name2);
2416
2682
  const level = Relations.useComponent("NonRepeatableComponent", (state) => state.level);
2417
2683
  const isNested = level > 0;
@@ -2426,9 +2692,24 @@ const NonRepeatableComponent = ({
2426
2692
  hasRadius: isNested,
2427
2693
  borderColor: isNested ? "neutral200" : void 0,
2428
2694
  children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: layout.map((row, index2) => {
2429
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: row.map(({ size, ...field }) => {
2695
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2430
2696
  const completeFieldName = `${name2}.${field.name}`;
2431
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2697
+ const translatedLabel = formatMessage({
2698
+ id: `content-manager.components.${attribute.component}.${field.name}`,
2699
+ defaultMessage: field.label
2700
+ });
2701
+ return /* @__PURE__ */ jsxRuntime.jsx(
2702
+ designSystem.Grid.Item,
2703
+ {
2704
+ col: size,
2705
+ s: 12,
2706
+ xs: 12,
2707
+ direction: "column",
2708
+ alignItems: "stretch",
2709
+ children: children({ ...field, label: translatedLabel, name: completeFieldName })
2710
+ },
2711
+ completeFieldName
2712
+ );
2432
2713
  }) }, index2);
2433
2714
  }) })
2434
2715
  }
@@ -2447,13 +2728,34 @@ const RepeatableComponent = ({
2447
2728
  const { search: searchString } = reactRouterDom.useLocation();
2448
2729
  const search = React__namespace.useMemo(() => new URLSearchParams(searchString), [searchString]);
2449
2730
  const { components } = index.useDoc();
2450
- const { value = [], error } = strapiAdmin.useField(name2);
2731
+ const {
2732
+ value = [],
2733
+ error,
2734
+ rawError
2735
+ } = strapiAdmin.useField(name2);
2451
2736
  const addFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.addFieldRow);
2452
2737
  const moveFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.moveFieldRow);
2453
2738
  const removeFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.removeFieldRow);
2454
2739
  const { max = Infinity } = attribute;
2455
2740
  const [collapseToOpen, setCollapseToOpen] = React__namespace.useState("");
2456
2741
  const [liveText, setLiveText] = React__namespace.useState("");
2742
+ React__namespace.useEffect(() => {
2743
+ const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;
2744
+ const hasNestedValue = value && Array.isArray(value) && value.length > 0;
2745
+ if (hasNestedErrors && hasNestedValue) {
2746
+ const errorOpenItems = rawError.map((_, idx) => {
2747
+ return value[idx] ? value[idx].__temp_key__ : null;
2748
+ }).filter((value2) => !!value2);
2749
+ if (errorOpenItems && errorOpenItems.length > 0) {
2750
+ setCollapseToOpen((collapseToOpen2) => {
2751
+ if (!errorOpenItems.includes(collapseToOpen2)) {
2752
+ return errorOpenItems[0];
2753
+ }
2754
+ return collapseToOpen2;
2755
+ });
2756
+ }
2757
+ }
2758
+ }, [rawError, value]);
2457
2759
  const componentTmpKeyWithFocussedField = React__namespace.useMemo(() => {
2458
2760
  if (search.has("field")) {
2459
2761
  const fieldParam = search.get("field");
@@ -2468,7 +2770,7 @@ const RepeatableComponent = ({
2468
2770
  }
2469
2771
  return void 0;
2470
2772
  }, [search, name2, value]);
2471
- const prevValue = usePrev.usePrev(value);
2773
+ const prevValue = useDebounce.usePrev(value);
2472
2774
  React__namespace.useEffect(() => {
2473
2775
  if (prevValue && prevValue.length < value.length) {
2474
2776
  setCollapseToOpen(value[value.length - 1].__temp_key__);
@@ -2604,9 +2906,28 @@ const RepeatableComponent = ({
2604
2906
  onGrabItem: handleGrabItem,
2605
2907
  __temp_key__: key,
2606
2908
  children: layout.map((row, index22) => {
2607
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: row.map(({ size, ...field }) => {
2909
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2608
2910
  const completeFieldName = `${nameWithIndex}.${field.name}`;
2609
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2911
+ const translatedLabel = formatMessage({
2912
+ id: `content-manager.components.${attribute.component}.${field.name}`,
2913
+ defaultMessage: field.label
2914
+ });
2915
+ return /* @__PURE__ */ jsxRuntime.jsx(
2916
+ designSystem.Grid.Item,
2917
+ {
2918
+ col: size,
2919
+ s: 12,
2920
+ xs: 12,
2921
+ direction: "column",
2922
+ alignItems: "stretch",
2923
+ children: children({
2924
+ ...field,
2925
+ label: translatedLabel,
2926
+ name: completeFieldName
2927
+ })
2928
+ },
2929
+ completeFieldName
2930
+ );
2610
2931
  }) }, index22);
2611
2932
  })
2612
2933
  }
@@ -2651,7 +2972,7 @@ const TextButtonCustom = styledComponents.styled(designSystem.TextButton)`
2651
2972
  }
2652
2973
 
2653
2974
  @media (prefers-reduced-motion: no-preference) {
2654
- transition: background-color 120ms ${(props) => props.theme.easings.easeOutQuad};
2975
+ transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};
2655
2976
  }
2656
2977
  `;
2657
2978
  const Component = ({
@@ -2701,7 +3022,7 @@ const Component = ({
2701
3022
  /* @__PURE__ */ jsxRuntime.jsx(
2702
3023
  designSystem.IconButton,
2703
3024
  {
2704
- borderWidth: 0,
3025
+ variant: "ghost",
2705
3026
  onClick: onDeleteComponent,
2706
3027
  label: formatMessage({
2707
3028
  id: index.getTranslation("containers.Edit.delete"),
@@ -2714,7 +3035,7 @@ const Component = ({
2714
3035
  designSystem.IconButton,
2715
3036
  {
2716
3037
  ref: composedAccordionRefs,
2717
- borderWidth: 0,
3038
+ variant: "ghost",
2718
3039
  onClick: (e) => e.stopPropagation(),
2719
3040
  "data-handler-id": handlerId,
2720
3041
  label: formatMessage({
@@ -2784,7 +3105,7 @@ const ComponentInput = ({
2784
3105
  id: index.getTranslation("components.reset-entry"),
2785
3106
  defaultMessage: "Reset Entry"
2786
3107
  }),
2787
- borderWidth: 0,
3108
+ variant: "ghost",
2788
3109
  onClick: () => {
2789
3110
  field.onChange(name2, null);
2790
3111
  },
@@ -2813,11 +3134,8 @@ const AddComponentButton = ({
2813
3134
  onClick,
2814
3135
  disabled: isDisabled,
2815
3136
  background: "neutral0",
2816
- paddingTop: 3,
2817
- paddingBottom: 3,
2818
- paddingLeft: 4,
2819
- paddingRight: 4,
2820
3137
  style: { cursor: isDisabled ? "not-allowed" : "pointer" },
3138
+ variant: "tertiary",
2821
3139
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { tag: "span", gap: 2, children: [
2822
3140
  /* @__PURE__ */ jsxRuntime.jsx(StyledAddIcon, { "aria-hidden": true, $isOpen: isOpen, $hasError: hasError && !isOpen }),
2823
3141
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2846,10 +3164,11 @@ const StyledAddIcon = styledComponents.styled(Icons.PlusCircle)`
2846
3164
  }
2847
3165
  `;
2848
3166
  const AddComponentTitle = styledComponents.styled(designSystem.Typography)``;
2849
- const StyledButton = styledComponents.styled(designSystem.BaseButton)`
3167
+ const StyledButton = styledComponents.styled(designSystem.Button)`
2850
3168
  border-radius: 26px;
2851
3169
  border-color: ${({ theme }) => theme.colors.neutral150};
2852
3170
  box-shadow: ${({ theme }) => theme.shadows.filterShadow};
3171
+ height: 5rem;
2853
3172
 
2854
3173
  &:hover {
2855
3174
  ${AddComponentTitle} {
@@ -2861,7 +3180,7 @@ const StyledButton = styledComponents.styled(designSystem.BaseButton)`
2861
3180
  fill: ${({ theme }) => theme.colors.primary600};
2862
3181
  }
2863
3182
  > path {
2864
- fill: ${({ theme }) => theme.colors.neutral100};
3183
+ fill: ${({ theme }) => theme.colors.primary600};
2865
3184
  }
2866
3185
  }
2867
3186
  }
@@ -2919,7 +3238,7 @@ const ComponentBox = styledComponents.styled(designSystem.Flex)`
2919
3238
  cursor: pointer;
2920
3239
 
2921
3240
  @media (prefers-reduced-motion: no-preference) {
2922
- transition: color 120ms ${(props) => props.theme.easings.easeOutQuad};
3241
+ transition: color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};
2923
3242
  }
2924
3243
 
2925
3244
  &:focus,
@@ -2992,18 +3311,6 @@ const NotAllowedInput = ({ hint, label, required, name: name2 }) => {
2992
3311
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
2993
3312
  ] });
2994
3313
  };
2995
- function useDebounce(value, delay) {
2996
- const [debouncedValue, setDebouncedValue] = React.useState(value);
2997
- React.useEffect(() => {
2998
- const handler = setTimeout(() => {
2999
- setDebouncedValue(value);
3000
- }, delay);
3001
- return () => {
3002
- clearTimeout(handler);
3003
- };
3004
- }, [value, delay]);
3005
- return debouncedValue;
3006
- }
3007
3314
  const uidApi = index.contentManagerApi.injectEndpoints({
3008
3315
  endpoints: (builder) => ({
3009
3316
  getDefaultUID: builder.query({
@@ -3038,7 +3345,10 @@ const uidApi = index.contentManagerApi.injectEndpoints({
3038
3345
  config: {
3039
3346
  params
3040
3347
  }
3041
- })
3348
+ }),
3349
+ providesTags: (_res, _error, params) => [
3350
+ { type: "UidAvailability", id: params.contentTypeUID }
3351
+ ]
3042
3352
  })
3043
3353
  })
3044
3354
  });
@@ -3050,8 +3360,10 @@ const UIDInput = React__namespace.forwardRef(
3050
3360
  const allFormValues = strapiAdmin.useForm("InputUID", (form) => form.values);
3051
3361
  const [availability, setAvailability] = React__namespace.useState();
3052
3362
  const [showRegenerate, setShowRegenerate] = React__namespace.useState(false);
3363
+ const isCloning = reactRouterDom.useMatch(index.CLONE_PATH) !== null;
3053
3364
  const field = strapiAdmin.useField(name2);
3054
- const debouncedValue = useDebounce(field.value, 300);
3365
+ const debouncedValue = useDebounce.useDebounce(field.value, 300);
3366
+ const hasChanged = debouncedValue !== field.initialValue;
3055
3367
  const { toggleNotification } = strapiAdmin.useNotification();
3056
3368
  const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
3057
3369
  const { formatMessage } = reactIntl.useIntl();
@@ -3127,8 +3439,9 @@ const UIDInput = React__namespace.forwardRef(
3127
3439
  params
3128
3440
  },
3129
3441
  {
3442
+ // Don't check availability if the value is empty or wasn't changed
3130
3443
  skip: !Boolean(
3131
- debouncedValue !== field.initialValue && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3444
+ (hasChanged || isCloning) && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3132
3445
  )
3133
3446
  }
3134
3447
  );
@@ -3157,6 +3470,7 @@ const UIDInput = React__namespace.forwardRef(
3157
3470
  const isLoading = isGeneratingDefaultUID || isGeneratingUID || isCheckingAvailability;
3158
3471
  const fieldRef = strapiAdmin.useFocusInputField(name2);
3159
3472
  const composedRefs = designSystem.useComposedRefs(ref, fieldRef);
3473
+ const shouldShowAvailability = (hasChanged || isCloning) && debouncedValue != null && availability && !showRegenerate;
3160
3474
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { hint, name: name2, error: field.error, required, children: [
3161
3475
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { action: labelAction, children: label }),
3162
3476
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3165,7 +3479,7 @@ const UIDInput = React__namespace.forwardRef(
3165
3479
  ref: composedRefs,
3166
3480
  disabled: props.disabled,
3167
3481
  endAction: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { position: "relative", gap: 1, children: [
3168
- availability && !showRegenerate && /* @__PURE__ */ jsxRuntime.jsxs(
3482
+ shouldShowAvailability && /* @__PURE__ */ jsxRuntime.jsxs(
3169
3483
  TextValidation,
3170
3484
  {
3171
3485
  alignItems: "center",
@@ -3454,8 +3768,7 @@ const Wrapper = styledComponents.styled.div`
3454
3768
  `;
3455
3769
  var listRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/, emptyListRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]|[*+-]|(\d+)[.)])(\s*)$/, unorderedListRE = /[*+-]\s/;
3456
3770
  function newlineAndIndentContinueMarkdownList(cm) {
3457
- if (cm.getOption("disableInput"))
3458
- return CodeMirror__default.default.Pass;
3771
+ if (cm.getOption("disableInput")) return CodeMirror__default.default.Pass;
3459
3772
  var ranges = cm.listSelections(), replacements = [];
3460
3773
  for (var i = 0; i < ranges.length; i++) {
3461
3774
  var pos = ranges[i].head;
@@ -3489,8 +3802,7 @@ function newlineAndIndentContinueMarkdownList(cm) {
3489
3802
  var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(">") >= 0);
3490
3803
  var bullet = numbered ? parseInt(match[3], 10) + 1 + match[4] : match[2].replace("x", " ");
3491
3804
  replacements[i] = "\n" + indent + bullet + after;
3492
- if (numbered)
3493
- incrementRemainingMarkdownListNumbers(cm, pos);
3805
+ if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);
3494
3806
  }
3495
3807
  }
3496
3808
  cm.replaceSelections(replacements);
@@ -3508,10 +3820,8 @@ function incrementRemainingMarkdownListNumbers(cm, pos) {
3508
3820
  var newNumber = parseInt(startItem[3], 10) + lookAhead - skipCount;
3509
3821
  var nextNumber = parseInt(nextItem[3], 10), itemNumber = nextNumber;
3510
3822
  if (startIndent === nextIndent && !isNaN(nextNumber)) {
3511
- if (newNumber === nextNumber)
3512
- itemNumber = nextNumber + 1;
3513
- if (newNumber > nextNumber)
3514
- itemNumber = newNumber + 1;
3823
+ if (newNumber === nextNumber) itemNumber = nextNumber + 1;
3824
+ if (newNumber > nextNumber) itemNumber = newNumber + 1;
3515
3825
  cm.replaceRange(
3516
3826
  nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),
3517
3827
  {
@@ -3524,10 +3834,8 @@ function incrementRemainingMarkdownListNumbers(cm, pos) {
3524
3834
  }
3525
3835
  );
3526
3836
  } else {
3527
- if (startIndent.length > nextIndent.length)
3528
- return;
3529
- if (startIndent.length < nextIndent.length && lookAhead === 1)
3530
- return;
3837
+ if (startIndent.length > nextIndent.length) return;
3838
+ if (startIndent.length < nextIndent.length && lookAhead === 1) return;
3531
3839
  skipCount += 1;
3532
3840
  }
3533
3841
  }
@@ -3999,7 +4307,7 @@ const EditorLayout = ({
3999
4307
  justifyContent: "flex-end",
4000
4308
  shrink: 0,
4001
4309
  width: "100%",
4002
- children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, children: [
4310
+ children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, variant: "tertiary", size: "M", children: [
4003
4311
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
4004
4312
  id: "components.Wysiwyg.collapse",
4005
4313
  defaultMessage: "Collapse"
@@ -4017,12 +4325,14 @@ const EditorLayout = ({
4017
4325
  ) }) });
4018
4326
  }
4019
4327
  return /* @__PURE__ */ jsxRuntime.jsx(
4020
- designSystem.Box,
4328
+ designSystem.Flex,
4021
4329
  {
4022
4330
  borderColor: error ? "danger600" : "neutral200",
4023
4331
  borderStyle: "solid",
4024
4332
  borderWidth: "1px",
4025
4333
  hasRadius: true,
4334
+ direction: "column",
4335
+ alignItems: "stretch",
4026
4336
  children
4027
4337
  }
4028
4338
  );
@@ -4033,11 +4343,19 @@ const ExpandWrapper = styledComponents.styled(designSystem.Flex)`
4033
4343
  const BoxWithBorder = styledComponents.styled(designSystem.Box)`
4034
4344
  border-right: 1px solid ${({ theme }) => theme.colors.neutral200};
4035
4345
  `;
4036
- const ExpandButton$1 = styledComponents.styled(designSystem.BaseButton)`
4346
+ const ExpandButton$1 = styledComponents.styled(designSystem.Button)`
4037
4347
  background-color: transparent;
4038
4348
  border: none;
4039
4349
  align-items: center;
4040
4350
 
4351
+ & > span {
4352
+ display: flex;
4353
+ justify-content: space-between;
4354
+ align-items: center;
4355
+ width: 100%;
4356
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4357
+ }
4358
+
4041
4359
  svg {
4042
4360
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
4043
4361
 
@@ -4304,42 +4622,28 @@ const quoteAndCodeHandler = (editor, markdownType) => {
4304
4622
  insertWithoutTextToEdit(editor, markdownType, line, contentLength);
4305
4623
  }
4306
4624
  };
4307
- const CustomIconButton = styledComponents.styled(designSystem.IconButton)`
4308
- padding: ${({ theme }) => theme.spaces[2]};
4309
- /* Trick to prevent the outline from overflowing because of the general outline-offset */
4310
- outline-offset: -2px !important;
4311
-
4312
- svg {
4313
- width: 1.8rem;
4314
- height: 1.8rem;
4315
- }
4316
- `;
4317
- const CustomLinkIconButton = styledComponents.styled(CustomIconButton)`
4318
- svg {
4319
- width: 0.8rem;
4320
- height: 0.8rem;
4321
- }
4322
- `;
4323
4625
  const MainButtons = styledComponents.styled(designSystem.IconButtonGroup)`
4324
4626
  margin-left: ${({ theme }) => theme.spaces[4]};
4325
4627
  `;
4326
4628
  const MoreButton = styledComponents.styled(designSystem.IconButton)`
4327
4629
  margin: ${({ theme }) => `0 ${theme.spaces[2]}`};
4328
- padding: ${({ theme }) => theme.spaces[2]};
4329
-
4330
- svg {
4331
- width: 1.8rem;
4332
- height: 1.8rem;
4333
- }
4334
4630
  `;
4335
4631
  const IconButtonGroupMargin = styledComponents.styled(designSystem.IconButtonGroup)`
4336
4632
  margin-right: ${({ theme }) => `${theme.spaces[2]}`};
4337
4633
  `;
4338
- const ExpandButton = styledComponents.styled(designSystem.BaseButton)`
4634
+ const ExpandButton = styledComponents.styled(designSystem.Button)`
4339
4635
  background-color: transparent;
4340
4636
  border: none;
4341
4637
  align-items: center;
4342
4638
 
4639
+ & > span {
4640
+ display: flex;
4641
+ justify-content: space-between;
4642
+ align-items: center;
4643
+ width: 100%;
4644
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4645
+ }
4646
+
4343
4647
  svg {
4344
4648
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
4345
4649
  path {
@@ -4351,8 +4655,8 @@ const ExpandButton = styledComponents.styled(designSystem.BaseButton)`
4351
4655
  `;
4352
4656
  const WysiwygFooter = ({ onToggleExpand }) => {
4353
4657
  const { formatMessage } = reactIntl.useIntl();
4354
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, children: [
4355
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
4658
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, variant: "tertiary", size: "M", children: [
4659
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: formatMessage({
4356
4660
  id: "components.WysiwygBottomControls.fullscreen",
4357
4661
  defaultMessage: "Expand"
4358
4662
  }) }),
@@ -4374,7 +4678,7 @@ const WysiwygNav = ({
4374
4678
  id: "components.Wysiwyg.selectOptions.title",
4375
4679
  defaultMessage: "Add a title"
4376
4680
  });
4377
- const buttonMoreRef = React__namespace.useRef(null);
4681
+ React__namespace.useRef(null);
4378
4682
  const handleTogglePopover = () => {
4379
4683
  setVisiblePopover((prev) => !prev);
4380
4684
  };
@@ -4388,18 +4692,27 @@ const WysiwygNav = ({
4388
4692
  borderRadius: `0.4rem 0.4rem 0 0`,
4389
4693
  children: [
4390
4694
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
4391
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.SingleSelect, { disabled: true, placeholder: selectPlaceholder, "aria-label": selectPlaceholder, children: [
4392
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4393
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
4394
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h3", children: "h3" }),
4395
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h4", children: "h4" }),
4396
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h5", children: "h5" }),
4397
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h6", children: "h6" })
4398
- ] }) }),
4695
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(
4696
+ designSystem.SingleSelect,
4697
+ {
4698
+ disabled: true,
4699
+ placeholder: selectPlaceholder,
4700
+ "aria-label": selectPlaceholder,
4701
+ size: "S",
4702
+ children: [
4703
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4704
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
4705
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h3", children: "h3" }),
4706
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h4", children: "h4" }),
4707
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h5", children: "h5" }),
4708
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h6", children: "h6" })
4709
+ ]
4710
+ }
4711
+ ) }),
4399
4712
  /* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
4400
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4401
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Italic, {}) }),
4402
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Underline, {}) })
4713
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4714
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Italic, {}) }),
4715
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Underline, {}) })
4403
4716
  ] }),
4404
4717
  /* @__PURE__ */ jsxRuntime.jsx(MoreButton, { disabled: true, label: "More", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.More, {}) })
4405
4718
  ] }),
@@ -4426,6 +4739,7 @@ const WysiwygNav = ({
4426
4739
  placeholder: selectPlaceholder,
4427
4740
  "aria-label": selectPlaceholder,
4428
4741
  onChange: (value) => onActionClick(value, editorRef),
4742
+ size: "S",
4429
4743
  children: [
4430
4744
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4431
4745
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
@@ -4437,17 +4751,9 @@ const WysiwygNav = ({
4437
4751
  }
4438
4752
  ) }),
4439
4753
  /* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
4754
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { onClick: () => onActionClick("Bold", editorRef), label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4440
4755
  /* @__PURE__ */ jsxRuntime.jsx(
4441
- CustomIconButton,
4442
- {
4443
- onClick: () => onActionClick("Bold", editorRef),
4444
- label: "Bold",
4445
- name: "Bold",
4446
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {})
4447
- }
4448
- ),
4449
- /* @__PURE__ */ jsxRuntime.jsx(
4450
- CustomIconButton,
4756
+ designSystem.IconButton,
4451
4757
  {
4452
4758
  onClick: () => onActionClick("Italic", editorRef),
4453
4759
  label: "Italic",
@@ -4456,7 +4762,7 @@ const WysiwygNav = ({
4456
4762
  }
4457
4763
  ),
4458
4764
  /* @__PURE__ */ jsxRuntime.jsx(
4459
- CustomIconButton,
4765
+ designSystem.IconButton,
4460
4766
  {
4461
4767
  onClick: () => onActionClick("Underline", editorRef),
4462
4768
  label: "Underline",
@@ -4465,79 +4771,81 @@ const WysiwygNav = ({
4465
4771
  }
4466
4772
  )
4467
4773
  ] }),
4468
- /* @__PURE__ */ jsxRuntime.jsx(MoreButton, { ref: buttonMoreRef, onClick: handleTogglePopover, label: "More", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.More, {}) }),
4469
- visiblePopover && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover, { onDismiss: handleTogglePopover, centered: true, source: buttonMoreRef, spacing: 4, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
4470
- /* @__PURE__ */ jsxRuntime.jsxs(IconButtonGroupMargin, { children: [
4471
- /* @__PURE__ */ jsxRuntime.jsx(
4472
- CustomIconButton,
4473
- {
4474
- onClick: () => onActionClick("Strikethrough", editorRef, handleTogglePopover),
4475
- label: "Strikethrough",
4476
- name: "Strikethrough",
4477
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.StrikeThrough, {})
4478
- }
4479
- ),
4480
- /* @__PURE__ */ jsxRuntime.jsx(
4481
- CustomIconButton,
4482
- {
4483
- onClick: () => onActionClick("BulletList", editorRef, handleTogglePopover),
4484
- label: "BulletList",
4485
- name: "BulletList",
4486
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.BulletList, {})
4487
- }
4488
- ),
4489
- /* @__PURE__ */ jsxRuntime.jsx(
4490
- CustomIconButton,
4491
- {
4492
- onClick: () => onActionClick("NumberList", editorRef, handleTogglePopover),
4493
- label: "NumberList",
4494
- name: "NumberList",
4495
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.NumberList, {})
4496
- }
4497
- )
4498
- ] }),
4499
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.IconButtonGroup, { children: [
4500
- /* @__PURE__ */ jsxRuntime.jsx(
4501
- CustomIconButton,
4502
- {
4503
- onClick: () => onActionClick("Code", editorRef, handleTogglePopover),
4504
- label: "Code",
4505
- name: "Code",
4506
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Code, {})
4507
- }
4508
- ),
4509
- /* @__PURE__ */ jsxRuntime.jsx(
4510
- CustomIconButton,
4511
- {
4512
- onClick: () => {
4513
- handleTogglePopover();
4514
- onToggleMediaLib();
4515
- },
4516
- label: "Image",
4517
- name: "Image",
4518
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Image, {})
4519
- }
4520
- ),
4521
- /* @__PURE__ */ jsxRuntime.jsx(
4522
- CustomLinkIconButton,
4523
- {
4524
- onClick: () => onActionClick("Link", editorRef, handleTogglePopover),
4525
- label: "Link",
4526
- name: "Link",
4527
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Link, {})
4528
- }
4529
- ),
4530
- /* @__PURE__ */ jsxRuntime.jsx(
4531
- CustomIconButton,
4532
- {
4533
- onClick: () => onActionClick("Quote", editorRef, handleTogglePopover),
4534
- label: "Quote",
4535
- name: "Quote",
4536
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Quotes, {})
4537
- }
4538
- )
4539
- ] })
4540
- ] }) })
4774
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { children: [
4775
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(MoreButton, { label: "More", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.More, {}) }) }),
4776
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { sideOffset: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 2, children: [
4777
+ /* @__PURE__ */ jsxRuntime.jsxs(IconButtonGroupMargin, { children: [
4778
+ /* @__PURE__ */ jsxRuntime.jsx(
4779
+ designSystem.IconButton,
4780
+ {
4781
+ onClick: () => onActionClick("Strikethrough", editorRef, handleTogglePopover),
4782
+ label: "Strikethrough",
4783
+ name: "Strikethrough",
4784
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.StrikeThrough, {})
4785
+ }
4786
+ ),
4787
+ /* @__PURE__ */ jsxRuntime.jsx(
4788
+ designSystem.IconButton,
4789
+ {
4790
+ onClick: () => onActionClick("BulletList", editorRef, handleTogglePopover),
4791
+ label: "BulletList",
4792
+ name: "BulletList",
4793
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.BulletList, {})
4794
+ }
4795
+ ),
4796
+ /* @__PURE__ */ jsxRuntime.jsx(
4797
+ designSystem.IconButton,
4798
+ {
4799
+ onClick: () => onActionClick("NumberList", editorRef, handleTogglePopover),
4800
+ label: "NumberList",
4801
+ name: "NumberList",
4802
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.NumberList, {})
4803
+ }
4804
+ )
4805
+ ] }),
4806
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.IconButtonGroup, { children: [
4807
+ /* @__PURE__ */ jsxRuntime.jsx(
4808
+ designSystem.IconButton,
4809
+ {
4810
+ onClick: () => onActionClick("Code", editorRef, handleTogglePopover),
4811
+ label: "Code",
4812
+ name: "Code",
4813
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Code, {})
4814
+ }
4815
+ ),
4816
+ /* @__PURE__ */ jsxRuntime.jsx(
4817
+ designSystem.IconButton,
4818
+ {
4819
+ onClick: () => {
4820
+ handleTogglePopover();
4821
+ onToggleMediaLib();
4822
+ },
4823
+ label: "Image",
4824
+ name: "Image",
4825
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Image, {})
4826
+ }
4827
+ ),
4828
+ /* @__PURE__ */ jsxRuntime.jsx(
4829
+ designSystem.IconButton,
4830
+ {
4831
+ onClick: () => onActionClick("Link", editorRef, handleTogglePopover),
4832
+ label: "Link",
4833
+ name: "Link",
4834
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Link, {})
4835
+ }
4836
+ ),
4837
+ /* @__PURE__ */ jsxRuntime.jsx(
4838
+ designSystem.IconButton,
4839
+ {
4840
+ onClick: () => onActionClick("Quote", editorRef, handleTogglePopover),
4841
+ label: "Quote",
4842
+ name: "Quote",
4843
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Quotes, {})
4844
+ }
4845
+ )
4846
+ ] })
4847
+ ] }) })
4848
+ ] })
4541
4849
  ] }),
4542
4850
  onTogglePreviewMode && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: onTogglePreviewMode, variant: "tertiary", children: formatMessage({
4543
4851
  id: "components.Wysiwyg.ToggleMode.preview-mode",
@@ -4605,7 +4913,7 @@ const Wysiwyg = React__namespace.forwardRef(
4605
4913
  const handleSelectAssets = (files) => {
4606
4914
  const formattedFiles = files.map((f) => ({
4607
4915
  alt: f.alternativeText || f.name,
4608
- url: usePrev.prefixFileUrlWithBackendUrl(f.url),
4916
+ url: useDebounce.prefixFileUrlWithBackendUrl(f.url),
4609
4917
  mime: f.mime
4610
4918
  }));
4611
4919
  insertFile(editorRef, formattedFiles);
@@ -4664,15 +4972,19 @@ const Wysiwyg = React__namespace.forwardRef(
4664
4972
  );
4665
4973
  const MemoizedWysiwyg = React__namespace.memo(Wysiwyg);
4666
4974
  const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
4667
- const { id } = index.useDoc();
4975
+ const { id, document: document2, collectionType } = index.useDoc();
4668
4976
  const isFormDisabled = strapiAdmin.useForm("InputRenderer", (state) => state.disabled);
4669
4977
  const isInDynamicZone = useDynamicZone("isInDynamicZone", (state) => state.isInDynamicZone);
4670
4978
  const canCreateFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canCreateFields);
4671
4979
  const canReadFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canReadFields);
4672
4980
  const canUpdateFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canUpdateFields);
4673
4981
  const canUserAction = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canUserAction);
4674
- const editableFields = id ? canUpdateFields : canCreateFields;
4675
- const readableFields = id ? canReadFields : canCreateFields;
4982
+ let idToCheck = id;
4983
+ if (collectionType === index.SINGLE_TYPES) {
4984
+ idToCheck = document2?.documentId;
4985
+ }
4986
+ const editableFields = idToCheck ? canUpdateFields : canCreateFields;
4987
+ const readableFields = idToCheck ? canReadFields : canCreateFields;
4676
4988
  const canUserReadField = canUserAction(props.name, readableFields, props.type);
4677
4989
  const canUserEditField = canUserAction(props.name, editableFields, props.type);
4678
4990
  const fields = strapiAdmin.useStrapiApp("InputRenderer", (app) => app.fields);
@@ -4683,6 +4995,7 @@ const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
4683
4995
  const {
4684
4996
  edit: { components }
4685
4997
  } = index.useDocLayout();
4998
+ const field = strapiAdmin.useField(props.name);
4686
4999
  if (!visible) {
4687
5000
  return null;
4688
5001
  }
@@ -4693,7 +5006,7 @@ const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
4693
5006
  if (attributeHasCustomFieldProperty(props.attribute)) {
4694
5007
  const CustomInput = lazyComponentStore[props.attribute.customField];
4695
5008
  if (CustomInput) {
4696
- return /* @__PURE__ */ jsxRuntime.jsx(CustomInput, { ...props, hint, disabled: fieldIsDisabled });
5009
+ return /* @__PURE__ */ jsxRuntime.jsx(CustomInput, { ...props, ...field, hint, disabled: fieldIsDisabled });
4697
5010
  }
4698
5011
  return /* @__PURE__ */ jsxRuntime.jsx(
4699
5012
  strapiAdmin.InputRenderer,
@@ -4763,7 +5076,9 @@ const useFieldHint = (hint = void 0, attribute) => {
4763
5076
  if (!maximum && !minimum) {
4764
5077
  return hint;
4765
5078
  }
4766
- const units = !["biginteger", "integer", "number"].includes(attribute.type) ? formatMessage(
5079
+ const units = !["biginteger", "integer", "number", "dynamiczone", "component"].includes(
5080
+ attribute.type
5081
+ ) ? formatMessage(
4767
5082
  {
4768
5083
  id: "content-manager.form.Input.hint.character.unit",
4769
5084
  defaultMessage: "{maxValue, plural, one { character} other { characters}}"
@@ -4852,12 +5167,20 @@ const DynamicComponent = ({
4852
5167
  React__namespace.useEffect(() => {
4853
5168
  dragPreviewRef(reactDndHtml5Backend.getEmptyImage(), { captureDraggingState: false });
4854
5169
  }, [dragPreviewRef, index$1]);
5170
+ const accordionValue = React__namespace.useId();
5171
+ const { value = [], rawError } = strapiAdmin.useField(`${name2}.${index$1}`);
5172
+ const [collapseToOpen, setCollapseToOpen] = React__namespace.useState("");
5173
+ React__namespace.useEffect(() => {
5174
+ if (rawError && value) {
5175
+ setCollapseToOpen(accordionValue);
5176
+ }
5177
+ }, [rawError, value, accordionValue]);
4855
5178
  const composedBoxRefs = designSystem.useComposedRefs(boxRef, dropRef);
4856
5179
  const accordionActions = disabled ? null : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4857
5180
  /* @__PURE__ */ jsxRuntime.jsx(
4858
5181
  designSystem.IconButton,
4859
5182
  {
4860
- borderWidth: 0,
5183
+ variant: "ghost",
4861
5184
  label: formatMessage(
4862
5185
  {
4863
5186
  id: index.getTranslation("components.DynamicZone.delete-label"),
@@ -4872,7 +5195,7 @@ const DynamicComponent = ({
4872
5195
  /* @__PURE__ */ jsxRuntime.jsx(
4873
5196
  designSystem.IconButton,
4874
5197
  {
4875
- borderWidth: 0,
5198
+ variant: "ghost",
4876
5199
  onClick: (e) => e.stopPropagation(),
4877
5200
  "data-handler-id": handlerId,
4878
5201
  ref: dragRef,
@@ -4917,10 +5240,9 @@ const DynamicComponent = ({
4917
5240
  ] })
4918
5241
  ] });
4919
5242
  const accordionTitle = title ? `${displayName} ${title}` : displayName;
4920
- const accordionValue = React__namespace.useId();
4921
5243
  return /* @__PURE__ */ jsxRuntime.jsxs(ComponentContainer, { tag: "li", width: "100%", children: [
4922
5244
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Rectangle, { background: "neutral200" }) }),
4923
- /* @__PURE__ */ jsxRuntime.jsx(StyledBox, { ref: composedBoxRefs, hasRadius: true, children: isDragging ? /* @__PURE__ */ jsxRuntime.jsx(Preview, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: accordionValue, children: [
5245
+ /* @__PURE__ */ jsxRuntime.jsx(StyledBox, { ref: composedBoxRefs, hasRadius: true, children: isDragging ? /* @__PURE__ */ jsxRuntime.jsx(Preview, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Root, { value: collapseToOpen, onValueChange: setCollapseToOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: accordionValue, children: [
4924
5246
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Header, { children: [
4925
5247
  /* @__PURE__ */ jsxRuntime.jsx(
4926
5248
  designSystem.Accordion.Trigger,
@@ -4931,10 +5253,39 @@ const DynamicComponent = ({
4931
5253
  ),
4932
5254
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Actions, { children: accordionActions })
4933
5255
  ] }),
4934
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(AccordionContentRadius, { background: "neutral0", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingLeft: 6, paddingRight: 6, paddingTop: 6, paddingBottom: 6, children: components[componentUid]?.layout?.map((row, rowInd) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: row.map(({ size, ...field }) => {
4935
- const fieldName = `${name2}.${index$1}.${field.name}`;
4936
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: size, s: 12, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(MemoizedInputRenderer, { ...field, name: fieldName }) }, fieldName);
4937
- }) }, rowInd)) }) }) })
5256
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(AccordionContentRadius, { background: "neutral0", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingLeft: 6, paddingRight: 6, paddingTop: 6, paddingBottom: 6, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: components[componentUid]?.layout?.map((row, rowInd) => /* @__PURE__ */ jsxRuntime.jsx(
5257
+ designSystem.Grid.Item,
5258
+ {
5259
+ col: 12,
5260
+ s: 12,
5261
+ xs: 12,
5262
+ direction: "column",
5263
+ alignItems: "stretch",
5264
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
5265
+ const fieldName = `${name2}.${index$1}.${field.name}`;
5266
+ const fieldWithTranslatedLabel = {
5267
+ ...field,
5268
+ label: formatMessage({
5269
+ id: `content-manager.components.${componentUid}.${field.name}`,
5270
+ defaultMessage: field.label
5271
+ })
5272
+ };
5273
+ return /* @__PURE__ */ jsxRuntime.jsx(
5274
+ designSystem.Grid.Item,
5275
+ {
5276
+ col: size,
5277
+ s: 12,
5278
+ xs: 12,
5279
+ direction: "column",
5280
+ alignItems: "stretch",
5281
+ children: /* @__PURE__ */ jsxRuntime.jsx(MemoizedInputRenderer, { ...fieldWithTranslatedLabel, name: fieldName })
5282
+ },
5283
+ fieldName
5284
+ );
5285
+ }) })
5286
+ },
5287
+ rowInd
5288
+ )) }) }) }) })
4938
5289
  ] }) }) })
4939
5290
  ] });
4940
5291
  };
@@ -5126,7 +5477,7 @@ const DynamicZone = ({
5126
5477
  const handleRemoveComponent = (name22, currentIndex) => () => {
5127
5478
  removeFieldRow(name22, currentIndex);
5128
5479
  };
5129
- const hasError = error !== void 0 || dynamicDisplayedComponentsLength < min || dynamicDisplayedComponentsLength > max;
5480
+ const hasError = error !== void 0;
5130
5481
  const renderButtonLabel = () => {
5131
5482
  if (addComponentIsOpen) {
5132
5483
  return formatMessage({ id: "app.utils.close-label", defaultMessage: "Close" });
@@ -5240,4 +5591,4 @@ exports.transformDocument = transformDocument;
5240
5591
  exports.useDynamicZone = useDynamicZone;
5241
5592
  exports.useFieldHint = useFieldHint;
5242
5593
  exports.useLazyComponents = useLazyComponents;
5243
- //# sourceMappingURL=Field-ZdrmmQ4Y.js.map
5594
+ //# sourceMappingURL=Field-DwvmENVf.js.map