@strapi/content-manager 0.0.0-experimental.9df68962083938acba06546a7901c68a63266aec → 0.0.0-experimental.a13c58eec89ab119f0e381fb79c0252979e9c125

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 (205) hide show
  1. package/LICENSE +18 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-C-49MccQ.js → ComponentConfigurationPage-CB0JNNKL.js} +4 -4
  3. package/dist/_chunks/{ComponentConfigurationPage-C-49MccQ.js.map → ComponentConfigurationPage-CB0JNNKL.js.map} +1 -1
  4. package/dist/_chunks/{ComponentConfigurationPage-DmwmiFQy.mjs → ComponentConfigurationPage-CTCh51QS.mjs} +4 -4
  5. package/dist/_chunks/{ComponentConfigurationPage-DmwmiFQy.mjs.map → ComponentConfigurationPage-CTCh51QS.mjs.map} +1 -1
  6. package/dist/_chunks/{EditConfigurationPage-DjFJw56M.js → EditConfigurationPage-BxTVjxBG.js} +4 -4
  7. package/dist/_chunks/{EditConfigurationPage-DjFJw56M.js.map → EditConfigurationPage-BxTVjxBG.js.map} +1 -1
  8. package/dist/_chunks/{EditConfigurationPage-JT3E7NZy.mjs → EditConfigurationPage-CVyURlPG.mjs} +4 -4
  9. package/dist/_chunks/{EditConfigurationPage-JT3E7NZy.mjs.map → EditConfigurationPage-CVyURlPG.mjs.map} +1 -1
  10. package/dist/_chunks/{EditViewPage-zT3fBr4Y.js → EditViewPage-Cg78RUyS.js} +62 -11
  11. package/dist/_chunks/EditViewPage-Cg78RUyS.js.map +1 -0
  12. package/dist/_chunks/{EditViewPage-CPj61RMh.mjs → EditViewPage-M1OkTFHV.mjs} +63 -12
  13. package/dist/_chunks/EditViewPage-M1OkTFHV.mjs.map +1 -0
  14. package/dist/_chunks/{Field-Boxf9Ajp.js → Field-BQoMs_At.js} +271 -154
  15. package/dist/_chunks/Field-BQoMs_At.js.map +1 -0
  16. package/dist/_chunks/{Field-dha5VnIQ.mjs → Field-D1UGGscZ.mjs} +269 -152
  17. package/dist/_chunks/Field-D1UGGscZ.mjs.map +1 -0
  18. package/dist/_chunks/{Form-y5g1SRsh.js → Form-2uPHazrg.js} +36 -17
  19. package/dist/_chunks/Form-2uPHazrg.js.map +1 -0
  20. package/dist/_chunks/{Form-DHrru2AV.mjs → Form-JOjqloMg.mjs} +36 -17
  21. package/dist/_chunks/Form-JOjqloMg.mjs.map +1 -0
  22. package/dist/_chunks/{History-Bru_KoeP.mjs → History-D6LWunSa.mjs} +77 -62
  23. package/dist/_chunks/History-D6LWunSa.mjs.map +1 -0
  24. package/dist/_chunks/{History-CqN6K7SX.js → History-DoIdauuE.js} +76 -61
  25. package/dist/_chunks/History-DoIdauuE.js.map +1 -0
  26. package/dist/_chunks/{ListConfigurationPage-R_p-SbHZ.js → ListConfigurationPage-C1eYSCV7.js} +21 -9
  27. package/dist/_chunks/ListConfigurationPage-C1eYSCV7.js.map +1 -0
  28. package/dist/_chunks/{ListConfigurationPage-D8wGABj0.mjs → ListConfigurationPage-C8J_y4eX.mjs} +21 -9
  29. package/dist/_chunks/ListConfigurationPage-C8J_y4eX.mjs.map +1 -0
  30. package/dist/_chunks/{ListViewPage-pEw_zug9.js → ListViewPage-Nd8_ZHjF.js} +86 -46
  31. package/dist/_chunks/ListViewPage-Nd8_ZHjF.js.map +1 -0
  32. package/dist/_chunks/{ListViewPage-SID6TRb9.mjs → ListViewPage-vkipJOxG.mjs} +84 -44
  33. package/dist/_chunks/ListViewPage-vkipJOxG.mjs.map +1 -0
  34. package/dist/_chunks/{NoContentTypePage-CJ7UXwrQ.mjs → NoContentTypePage-CAxkF2Vg.mjs} +2 -2
  35. package/dist/_chunks/{NoContentTypePage-CJ7UXwrQ.mjs.map → NoContentTypePage-CAxkF2Vg.mjs.map} +1 -1
  36. package/dist/_chunks/{NoContentTypePage-C5dcQojD.js → NoContentTypePage-CsI4DiJk.js} +2 -2
  37. package/dist/_chunks/{NoContentTypePage-C5dcQojD.js.map → NoContentTypePage-CsI4DiJk.js.map} +1 -1
  38. package/dist/_chunks/{NoPermissionsPage-BtPrImPP.js → NoPermissionsPage-D7c29n-i.js} +2 -2
  39. package/dist/_chunks/{NoPermissionsPage-BtPrImPP.js.map → NoPermissionsPage-D7c29n-i.js.map} +1 -1
  40. package/dist/_chunks/{NoPermissionsPage-B7syEq5E.mjs → NoPermissionsPage-DA5ACuoK.mjs} +2 -2
  41. package/dist/_chunks/{NoPermissionsPage-B7syEq5E.mjs.map → NoPermissionsPage-DA5ACuoK.mjs.map} +1 -1
  42. package/dist/_chunks/Preview-Bwo9ft4j.mjs +288 -0
  43. package/dist/_chunks/Preview-Bwo9ft4j.mjs.map +1 -0
  44. package/dist/_chunks/Preview-DLxVMS5f.js +307 -0
  45. package/dist/_chunks/Preview-DLxVMS5f.js.map +1 -0
  46. package/dist/_chunks/{Relations-B9Crnhnn.mjs → Relations-Bddj_dxS.mjs} +73 -37
  47. package/dist/_chunks/Relations-Bddj_dxS.mjs.map +1 -0
  48. package/dist/_chunks/{Relations-DjTQ5kGB.js → Relations-CdFEx0mp.js} +72 -36
  49. package/dist/_chunks/Relations-CdFEx0mp.js.map +1 -0
  50. package/dist/_chunks/{en-fbKQxLGn.js → en-CHOp_xJv.js} +27 -16
  51. package/dist/_chunks/{en-fbKQxLGn.js.map → en-CHOp_xJv.js.map} +1 -1
  52. package/dist/_chunks/{en-Ux26r5pl.mjs → en-D_BMf0hT.mjs} +27 -16
  53. package/dist/_chunks/{en-Ux26r5pl.mjs.map → en-D_BMf0hT.mjs.map} +1 -1
  54. package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
  55. package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
  56. package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
  57. package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
  58. package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
  59. package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
  60. package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
  61. package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
  62. package/dist/_chunks/{index-DVPWZkbS.js → index-CltLAahy.js} +1066 -658
  63. package/dist/_chunks/index-CltLAahy.js.map +1 -0
  64. package/dist/_chunks/{index-DJXJw9V5.mjs → index-DmNeuXH0.mjs} +1086 -679
  65. package/dist/_chunks/index-DmNeuXH0.mjs.map +1 -0
  66. package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
  67. package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
  68. package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
  69. package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
  70. package/dist/_chunks/{layout-Bau7ZfLV.mjs → layout-D63qmUOu.mjs} +25 -12
  71. package/dist/_chunks/layout-D63qmUOu.mjs.map +1 -0
  72. package/dist/_chunks/{layout-Dm6fbiQj.js → layout-DslPJR5e.js} +24 -11
  73. package/dist/_chunks/layout-DslPJR5e.js.map +1 -0
  74. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  75. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  76. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  77. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  78. package/dist/_chunks/{relations-CKnpRgrN.js → relations-B2h_O2Xw.js} +6 -7
  79. package/dist/_chunks/relations-B2h_O2Xw.js.map +1 -0
  80. package/dist/_chunks/{relations-BH_kBSJ0.mjs → relations-X3M9aO-m.mjs} +6 -7
  81. package/dist/_chunks/relations-X3M9aO-m.mjs.map +1 -0
  82. package/dist/_chunks/{usePrev-B9w_-eYc.js → useDebounce-CtcjDB3L.js} +14 -1
  83. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
  84. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
  85. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
  86. package/dist/admin/index.js +2 -1
  87. package/dist/admin/index.js.map +1 -1
  88. package/dist/admin/index.mjs +5 -4
  89. package/dist/admin/src/exports.d.ts +1 -1
  90. package/dist/admin/src/history/index.d.ts +3 -0
  91. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  92. package/dist/admin/src/hooks/useDocument.d.ts +32 -1
  93. package/dist/admin/src/index.d.ts +1 -0
  94. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
  95. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -0
  96. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +1 -1
  97. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
  98. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
  99. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
  100. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +4 -48
  101. package/dist/admin/src/pages/EditView/components/Header.d.ts +11 -11
  102. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
  103. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
  104. package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
  105. package/dist/admin/src/preview/constants.d.ts +1 -0
  106. package/dist/admin/src/preview/index.d.ts +4 -0
  107. package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
  108. package/dist/admin/src/preview/routes.d.ts +3 -0
  109. package/dist/admin/src/preview/services/preview.d.ts +3 -0
  110. package/dist/admin/src/services/api.d.ts +1 -1
  111. package/dist/admin/src/services/components.d.ts +2 -2
  112. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  113. package/dist/admin/src/services/documents.d.ts +19 -17
  114. package/dist/admin/src/services/init.d.ts +1 -1
  115. package/dist/admin/src/services/relations.d.ts +2 -2
  116. package/dist/admin/src/services/uid.d.ts +3 -3
  117. package/dist/admin/src/utils/validation.d.ts +4 -1
  118. package/dist/server/index.js +548 -261
  119. package/dist/server/index.js.map +1 -1
  120. package/dist/server/index.mjs +549 -262
  121. package/dist/server/index.mjs.map +1 -1
  122. package/dist/server/src/bootstrap.d.ts.map +1 -1
  123. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  124. package/dist/server/src/controllers/index.d.ts.map +1 -1
  125. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  126. package/dist/server/src/controllers/uid.d.ts.map +1 -1
  127. package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
  128. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  129. package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
  130. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
  131. package/dist/server/src/history/services/history.d.ts.map +1 -1
  132. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  133. package/dist/server/src/history/services/utils.d.ts +4 -4
  134. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  135. package/dist/server/src/index.d.ts +4 -4
  136. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  137. package/dist/server/src/preview/constants.d.ts +2 -0
  138. package/dist/server/src/preview/constants.d.ts.map +1 -0
  139. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  140. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  141. package/dist/server/src/preview/controllers/preview.d.ts +13 -0
  142. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  143. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  144. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  145. package/dist/server/src/preview/index.d.ts +4 -0
  146. package/dist/server/src/preview/index.d.ts.map +1 -0
  147. package/dist/server/src/preview/routes/index.d.ts +8 -0
  148. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  149. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  150. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  151. package/dist/server/src/preview/services/index.d.ts +15 -0
  152. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  153. package/dist/server/src/preview/services/preview-config.d.ts +30 -0
  154. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
  155. package/dist/server/src/preview/services/preview.d.ts +12 -0
  156. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  157. package/dist/server/src/preview/utils.d.ts +18 -0
  158. package/dist/server/src/preview/utils.d.ts.map +1 -0
  159. package/dist/server/src/routes/index.d.ts.map +1 -1
  160. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  161. package/dist/server/src/services/document-metadata.d.ts +8 -8
  162. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  163. package/dist/server/src/services/index.d.ts +4 -4
  164. package/dist/server/src/services/index.d.ts.map +1 -1
  165. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  166. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  167. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  168. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  169. package/dist/server/src/utils/index.d.ts +2 -0
  170. package/dist/server/src/utils/index.d.ts.map +1 -1
  171. package/dist/shared/contracts/collection-types.d.ts +3 -1
  172. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  173. package/dist/shared/contracts/index.d.ts +1 -0
  174. package/dist/shared/contracts/index.d.ts.map +1 -1
  175. package/dist/shared/contracts/preview.d.ts +27 -0
  176. package/dist/shared/contracts/preview.d.ts.map +1 -0
  177. package/dist/shared/index.js +4 -0
  178. package/dist/shared/index.js.map +1 -1
  179. package/dist/shared/index.mjs +4 -0
  180. package/dist/shared/index.mjs.map +1 -1
  181. package/package.json +13 -13
  182. package/dist/_chunks/EditViewPage-CPj61RMh.mjs.map +0 -1
  183. package/dist/_chunks/EditViewPage-zT3fBr4Y.js.map +0 -1
  184. package/dist/_chunks/Field-Boxf9Ajp.js.map +0 -1
  185. package/dist/_chunks/Field-dha5VnIQ.mjs.map +0 -1
  186. package/dist/_chunks/Form-DHrru2AV.mjs.map +0 -1
  187. package/dist/_chunks/Form-y5g1SRsh.js.map +0 -1
  188. package/dist/_chunks/History-Bru_KoeP.mjs.map +0 -1
  189. package/dist/_chunks/History-CqN6K7SX.js.map +0 -1
  190. package/dist/_chunks/ListConfigurationPage-D8wGABj0.mjs.map +0 -1
  191. package/dist/_chunks/ListConfigurationPage-R_p-SbHZ.js.map +0 -1
  192. package/dist/_chunks/ListViewPage-SID6TRb9.mjs.map +0 -1
  193. package/dist/_chunks/ListViewPage-pEw_zug9.js.map +0 -1
  194. package/dist/_chunks/Relations-B9Crnhnn.mjs.map +0 -1
  195. package/dist/_chunks/Relations-DjTQ5kGB.js.map +0 -1
  196. package/dist/_chunks/index-DJXJw9V5.mjs.map +0 -1
  197. package/dist/_chunks/index-DVPWZkbS.js.map +0 -1
  198. package/dist/_chunks/layout-Bau7ZfLV.mjs.map +0 -1
  199. package/dist/_chunks/layout-Dm6fbiQj.js.map +0 -1
  200. package/dist/_chunks/relations-BH_kBSJ0.mjs.map +0 -1
  201. package/dist/_chunks/relations-CKnpRgrN.js.map +0 -1
  202. package/dist/_chunks/usePrev-B9w_-eYc.js.map +0 -1
  203. package/dist/_chunks/usePrev-DH6iah0A.mjs +0 -16
  204. package/dist/_chunks/usePrev-DH6iah0A.mjs.map +0 -1
  205. 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-DVPWZkbS.js");
8
+ const index = require("./index-CltLAahy.js");
9
9
  const fractionalIndexing = require("fractional-indexing");
10
- const Relations = require("./Relations-DjTQ5kGB.js");
10
+ const Relations = require("./Relations-CdFEx0mp.js");
11
11
  const Icons = require("@strapi/icons");
12
12
  const styledComponents = require("styled-components");
13
13
  const ComponentIcon = require("./ComponentIcon-BXdiCGQp.js");
14
14
  const reactDndHtml5Backend = require("react-dnd-html5-backend");
15
15
  const useDragAndDrop = require("./useDragAndDrop-J0TUUbR6.js");
16
- const objects = require("./objects-gigeqt7s.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");
@@ -768,7 +768,7 @@ const ImageDialog = () => {
768
768
  const nodeImage = {
769
769
  ...expectedImage,
770
770
  alternativeText: expectedImage.alternativeText || expectedImage.name,
771
- url: usePrev.prefixFileUrlWithBackendUrl(image.url)
771
+ url: useDebounce.prefixFileUrlWithBackendUrl(image.url)
772
772
  };
773
773
  return nodeImage;
774
774
  });
@@ -894,20 +894,8 @@ const LinkContent = React__namespace.forwardRef(
894
894
  const [linkText, setLinkText] = React__namespace.useState(elementText);
895
895
  const [linkUrl, setLinkUrl] = React__namespace.useState(link.url);
896
896
  const linkInputRef = React__namespace.useRef(null);
897
- const [showRemoveButton, setShowRemoveButton] = React__namespace.useState(false);
897
+ const isLastInsertedLink = editor.lastInsertedLinkPath ? !slate.Path.equals(path, editor.lastInsertedLinkPath) : true;
898
898
  const [isSaveDisabled, setIsSaveDisabled] = React__namespace.useState(false);
899
- const handleOpenChange = (isOpen) => {
900
- if (isOpen) {
901
- setPopoverOpen(isOpen);
902
- setShowRemoveButton(isOpen);
903
- } else {
904
- setPopoverOpen(isOpen);
905
- if (link.url === "") {
906
- removeLink(editor);
907
- }
908
- slateReact.ReactEditor.focus(editor);
909
- }
910
- };
911
899
  const onLinkChange = (e) => {
912
900
  setIsSaveDisabled(false);
913
901
  setLinkUrl(e.target.value);
@@ -928,15 +916,33 @@ const LinkContent = React__namespace.forwardRef(
928
916
  editLink(editor, { url: linkUrl, text: linkText });
929
917
  setPopoverOpen(false);
930
918
  editor.lastInsertedLinkPath = null;
919
+ slateReact.ReactEditor.focus(editor);
920
+ };
921
+ const handleClose = () => {
922
+ if (link.url === "") {
923
+ removeLink(editor);
924
+ }
925
+ setPopoverOpen(false);
926
+ slateReact.ReactEditor.focus(editor);
931
927
  };
932
928
  React__namespace.useEffect(() => {
933
929
  if (popoverOpen)
934
930
  linkInputRef.current?.focus();
935
931
  }, [popoverOpen]);
936
932
  const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
937
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { onOpenChange: handleOpenChange, open: popoverOpen, children: [
938
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(StyledBaseLink, { ...attributes, ref: forwardedRef, href: link.url, color: "primary600", children }) }),
939
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, tag: "form", onSubmit: handleSave, direction: "column", gap: 4, children: [
933
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { open: popoverOpen, children: [
934
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
935
+ StyledBaseLink,
936
+ {
937
+ ...attributes,
938
+ ref: forwardedRef,
939
+ href: link.url,
940
+ onClick: () => setPopoverOpen(true),
941
+ color: "primary600",
942
+ children
943
+ }
944
+ ) }),
945
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { onPointerDownOutside: handleClose, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 4, children: [
940
946
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { width: "368px", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, alignItems: "stretch", children: [
941
947
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
942
948
  id: "components.Blocks.popover.text",
@@ -982,7 +988,7 @@ const LinkContent = React__namespace.forwardRef(
982
988
  {
983
989
  variant: "danger-light",
984
990
  onClick: () => removeLink(editor),
985
- $visible: showRemoveButton,
991
+ $visible: isLastInsertedLink,
986
992
  children: formatMessage({
987
993
  id: "components.Blocks.popover.remove",
988
994
  defaultMessage: "Remove"
@@ -990,11 +996,11 @@ const LinkContent = React__namespace.forwardRef(
990
996
  }
991
997
  ),
992
998
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
993
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: () => handleOpenChange(false), children: formatMessage({
999
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: handleClose, children: formatMessage({
994
1000
  id: "components.Blocks.popover.cancel",
995
1001
  defaultMessage: "Cancel"
996
1002
  }) }),
997
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: Boolean(inputNotDirty) || isSaveDisabled, children: formatMessage({
1003
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { disabled: Boolean(inputNotDirty) || isSaveDisabled, onClick: handleSave, children: formatMessage({
998
1004
  id: "components.Blocks.popover.save",
999
1005
  defaultMessage: "Save"
1000
1006
  }) })
@@ -1435,7 +1441,7 @@ const ToolbarButton = ({
1435
1441
  width: 7,
1436
1442
  height: 7,
1437
1443
  hasRadius: true,
1438
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { width: "1.2rem", height: "1.2rem", fill: disabled ? "neutral300" : enabledColor })
1444
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { fill: disabled ? "neutral300" : enabledColor })
1439
1445
  }
1440
1446
  )
1441
1447
  }
@@ -1580,6 +1586,26 @@ const ListButton = ({ block, format }) => {
1580
1586
  }
1581
1587
  return false;
1582
1588
  };
1589
+ const isListDisabled = () => {
1590
+ if (disabled) {
1591
+ return true;
1592
+ }
1593
+ if (!editor.selection) {
1594
+ return false;
1595
+ }
1596
+ const anchorNodeEntry = slate.Editor.above(editor, {
1597
+ at: editor.selection.anchor,
1598
+ match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
1599
+ });
1600
+ const focusNodeEntry = slate.Editor.above(editor, {
1601
+ at: editor.selection.focus,
1602
+ match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
1603
+ });
1604
+ if (!anchorNodeEntry || !focusNodeEntry) {
1605
+ return false;
1606
+ }
1607
+ return anchorNodeEntry[0] !== focusNodeEntry[0];
1608
+ };
1583
1609
  const toggleList = (format2) => {
1584
1610
  let currentListEntry;
1585
1611
  if (editor.selection) {
@@ -1613,7 +1639,7 @@ const ListButton = ({ block, format }) => {
1613
1639
  name: format,
1614
1640
  label: block.label,
1615
1641
  isActive: isListActive(),
1616
- disabled,
1642
+ disabled: isListDisabled(),
1617
1643
  handleClick: () => toggleList(format)
1618
1644
  }
1619
1645
  );
@@ -1757,6 +1783,7 @@ const DragItem = styledComponents.styled(designSystem.Flex)`
1757
1783
  }
1758
1784
  `;
1759
1785
  const DragIconButton = styledComponents.styled(designSystem.IconButton)`
1786
+ user-select: none;
1760
1787
  display: flex;
1761
1788
  align-items: center;
1762
1789
  justify-content: center;
@@ -1780,7 +1807,7 @@ const DragIconButton = styledComponents.styled(designSystem.IconButton)`
1780
1807
  }
1781
1808
  svg {
1782
1809
  height: auto;
1783
- width: ${({ theme }) => theme.spaces[3]};
1810
+ min-width: ${({ theme }) => theme.spaces[3]};
1784
1811
 
1785
1812
  path {
1786
1813
  fill: ${({ theme }) => theme.colors.neutral700};
@@ -1885,6 +1912,7 @@ const DragAndDropElement = ({
1885
1912
  DragIconButton,
1886
1913
  {
1887
1914
  tag: "div",
1915
+ contentEditable: false,
1888
1916
  role: "button",
1889
1917
  tabIndex: 0,
1890
1918
  withTooltip: false,
@@ -1897,7 +1925,7 @@ const DragAndDropElement = ({
1897
1925
  disabled,
1898
1926
  draggable: true,
1899
1927
  $dragHandleTopMargin: dragHandleTopMargin,
1900
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "neutral600" })
1928
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "primary500" })
1901
1929
  }
1902
1930
  ),
1903
1931
  children
@@ -2221,7 +2249,7 @@ const EditorLayout$1 = ({
2221
2249
  /* @__PURE__ */ jsxRuntime.jsx(
2222
2250
  CollapseIconButton,
2223
2251
  {
2224
- "aria-label": formatMessage({
2252
+ label: formatMessage({
2225
2253
  id: index.getTranslation("components.Blocks.collapse"),
2226
2254
  defaultMessage: "Collapse"
2227
2255
  }),
@@ -2560,7 +2588,7 @@ const BlocksEditor = React__namespace.forwardRef(
2560
2588
  !isExpandedMode && /* @__PURE__ */ jsxRuntime.jsx(
2561
2589
  ExpandIconButton,
2562
2590
  {
2563
- "aria-label": formatMessage({
2591
+ label: formatMessage({
2564
2592
  id: index.getTranslation("components.Blocks.expand"),
2565
2593
  defaultMessage: "Expand"
2566
2594
  }),
@@ -2626,30 +2654,27 @@ const createDefaultForm = (contentType, components = {}) => {
2626
2654
  const Initializer = ({ disabled, name: name2, onClick }) => {
2627
2655
  const { formatMessage } = reactIntl.useIntl();
2628
2656
  const field = strapiAdmin.useField(name2);
2629
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2630
- /* @__PURE__ */ jsxRuntime.jsx(
2631
- designSystem.Box,
2632
- {
2633
- tag: "button",
2634
- background: "neutral100",
2635
- borderColor: field.error ? "danger600" : "neutral200",
2636
- hasRadius: true,
2637
- disabled,
2638
- onClick,
2639
- paddingTop: 9,
2640
- paddingBottom: 9,
2641
- type: "button",
2642
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
2643
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, {}) }),
2644
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
2645
- id: index.getTranslation("components.empty-repeatable"),
2646
- defaultMessage: "No entry yet. Click on the button below to add one."
2647
- }) }) })
2648
- ] })
2649
- }
2650
- ),
2651
- field.error && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "pi", children: field.error })
2652
- ] });
2657
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
2658
+ designSystem.Box,
2659
+ {
2660
+ tag: "button",
2661
+ background: "neutral100",
2662
+ borderColor: field.error ? "danger600" : "neutral200",
2663
+ hasRadius: true,
2664
+ disabled,
2665
+ onClick,
2666
+ paddingTop: 9,
2667
+ paddingBottom: 9,
2668
+ type: "button",
2669
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
2670
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, {}) }),
2671
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
2672
+ id: index.getTranslation("components.empty-repeatable"),
2673
+ defaultMessage: "No entry yet. Click to add one."
2674
+ }) }) })
2675
+ ] })
2676
+ }
2677
+ ) });
2653
2678
  };
2654
2679
  const CircleIcon = styledComponents.styled(Icons.PlusCircle)`
2655
2680
  width: 2.4rem;
@@ -2667,6 +2692,7 @@ const NonRepeatableComponent = ({
2667
2692
  children,
2668
2693
  layout
2669
2694
  }) => {
2695
+ const { formatMessage } = reactIntl.useIntl();
2670
2696
  const { value } = strapiAdmin.useField(name2);
2671
2697
  const level = Relations.useComponent("NonRepeatableComponent", (state) => state.level);
2672
2698
  const isNested = level > 0;
@@ -2683,7 +2709,22 @@ const NonRepeatableComponent = ({
2683
2709
  children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: layout.map((row, index2) => {
2684
2710
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2685
2711
  const completeFieldName = `${name2}.${field.name}`;
2686
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2712
+ const translatedLabel = formatMessage({
2713
+ id: `content-manager.components.${attribute.component}.${field.name}`,
2714
+ defaultMessage: field.label
2715
+ });
2716
+ return /* @__PURE__ */ jsxRuntime.jsx(
2717
+ designSystem.Grid.Item,
2718
+ {
2719
+ col: size,
2720
+ s: 12,
2721
+ xs: 12,
2722
+ direction: "column",
2723
+ alignItems: "stretch",
2724
+ children: children({ ...field, label: translatedLabel, name: completeFieldName })
2725
+ },
2726
+ completeFieldName
2727
+ );
2687
2728
  }) }, index2);
2688
2729
  }) })
2689
2730
  }
@@ -2702,13 +2743,34 @@ const RepeatableComponent = ({
2702
2743
  const { search: searchString } = reactRouterDom.useLocation();
2703
2744
  const search = React__namespace.useMemo(() => new URLSearchParams(searchString), [searchString]);
2704
2745
  const { components } = index.useDoc();
2705
- const { value = [], error } = strapiAdmin.useField(name2);
2746
+ const {
2747
+ value = [],
2748
+ error,
2749
+ rawError
2750
+ } = strapiAdmin.useField(name2);
2706
2751
  const addFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.addFieldRow);
2707
2752
  const moveFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.moveFieldRow);
2708
2753
  const removeFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.removeFieldRow);
2709
2754
  const { max = Infinity } = attribute;
2710
2755
  const [collapseToOpen, setCollapseToOpen] = React__namespace.useState("");
2711
2756
  const [liveText, setLiveText] = React__namespace.useState("");
2757
+ React__namespace.useEffect(() => {
2758
+ const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;
2759
+ const hasNestedValue = value && Array.isArray(value) && value.length > 0;
2760
+ if (hasNestedErrors && hasNestedValue) {
2761
+ const errorOpenItems = rawError.map((_, idx) => {
2762
+ return value[idx] ? value[idx].__temp_key__ : null;
2763
+ }).filter((value2) => !!value2);
2764
+ if (errorOpenItems && errorOpenItems.length > 0) {
2765
+ setCollapseToOpen((collapseToOpen2) => {
2766
+ if (!errorOpenItems.includes(collapseToOpen2)) {
2767
+ return errorOpenItems[0];
2768
+ }
2769
+ return collapseToOpen2;
2770
+ });
2771
+ }
2772
+ }
2773
+ }, [rawError, value]);
2712
2774
  const componentTmpKeyWithFocussedField = React__namespace.useMemo(() => {
2713
2775
  if (search.has("field")) {
2714
2776
  const fieldParam = search.get("field");
@@ -2723,7 +2785,7 @@ const RepeatableComponent = ({
2723
2785
  }
2724
2786
  return void 0;
2725
2787
  }, [search, name2, value]);
2726
- const prevValue = usePrev.usePrev(value);
2788
+ const prevValue = useDebounce.usePrev(value);
2727
2789
  React__namespace.useEffect(() => {
2728
2790
  if (prevValue && prevValue.length < value.length) {
2729
2791
  setCollapseToOpen(value[value.length - 1].__temp_key__);
@@ -2861,7 +2923,26 @@ const RepeatableComponent = ({
2861
2923
  children: layout.map((row, index22) => {
2862
2924
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2863
2925
  const completeFieldName = `${nameWithIndex}.${field.name}`;
2864
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2926
+ const translatedLabel = formatMessage({
2927
+ id: `content-manager.components.${attribute.component}.${field.name}`,
2928
+ defaultMessage: field.label
2929
+ });
2930
+ return /* @__PURE__ */ jsxRuntime.jsx(
2931
+ designSystem.Grid.Item,
2932
+ {
2933
+ col: size,
2934
+ s: 12,
2935
+ xs: 12,
2936
+ direction: "column",
2937
+ alignItems: "stretch",
2938
+ children: children({
2939
+ ...field,
2940
+ label: translatedLabel,
2941
+ name: completeFieldName
2942
+ })
2943
+ },
2944
+ completeFieldName
2945
+ );
2865
2946
  }) }, index22);
2866
2947
  })
2867
2948
  }
@@ -2956,7 +3037,7 @@ const Component = ({
2956
3037
  /* @__PURE__ */ jsxRuntime.jsx(
2957
3038
  designSystem.IconButton,
2958
3039
  {
2959
- borderWidth: 0,
3040
+ variant: "ghost",
2960
3041
  onClick: onDeleteComponent,
2961
3042
  label: formatMessage({
2962
3043
  id: index.getTranslation("containers.Edit.delete"),
@@ -2969,7 +3050,7 @@ const Component = ({
2969
3050
  designSystem.IconButton,
2970
3051
  {
2971
3052
  ref: composedAccordionRefs,
2972
- borderWidth: 0,
3053
+ variant: "ghost",
2973
3054
  onClick: (e) => e.stopPropagation(),
2974
3055
  "data-handler-id": handlerId,
2975
3056
  label: formatMessage({
@@ -3039,7 +3120,7 @@ const ComponentInput = ({
3039
3120
  id: index.getTranslation("components.reset-entry"),
3040
3121
  defaultMessage: "Reset Entry"
3041
3122
  }),
3042
- borderWidth: 0,
3123
+ variant: "ghost",
3043
3124
  onClick: () => {
3044
3125
  field.onChange(name2, null);
3045
3126
  },
@@ -3068,11 +3149,8 @@ const AddComponentButton = ({
3068
3149
  onClick,
3069
3150
  disabled: isDisabled,
3070
3151
  background: "neutral0",
3071
- paddingTop: 3,
3072
- paddingBottom: 3,
3073
- paddingLeft: 4,
3074
- paddingRight: 4,
3075
3152
  style: { cursor: isDisabled ? "not-allowed" : "pointer" },
3153
+ variant: "tertiary",
3076
3154
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { tag: "span", gap: 2, children: [
3077
3155
  /* @__PURE__ */ jsxRuntime.jsx(StyledAddIcon, { "aria-hidden": true, $isOpen: isOpen, $hasError: hasError && !isOpen }),
3078
3156
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3101,10 +3179,11 @@ const StyledAddIcon = styledComponents.styled(Icons.PlusCircle)`
3101
3179
  }
3102
3180
  `;
3103
3181
  const AddComponentTitle = styledComponents.styled(designSystem.Typography)``;
3104
- const StyledButton = styledComponents.styled(designSystem.BaseButton)`
3182
+ const StyledButton = styledComponents.styled(designSystem.Button)`
3105
3183
  border-radius: 26px;
3106
3184
  border-color: ${({ theme }) => theme.colors.neutral150};
3107
3185
  box-shadow: ${({ theme }) => theme.shadows.filterShadow};
3186
+ height: 5rem;
3108
3187
 
3109
3188
  &:hover {
3110
3189
  ${AddComponentTitle} {
@@ -3116,7 +3195,7 @@ const StyledButton = styledComponents.styled(designSystem.BaseButton)`
3116
3195
  fill: ${({ theme }) => theme.colors.primary600};
3117
3196
  }
3118
3197
  > path {
3119
- fill: ${({ theme }) => theme.colors.neutral100};
3198
+ fill: ${({ theme }) => theme.colors.primary600};
3120
3199
  }
3121
3200
  }
3122
3201
  }
@@ -3247,18 +3326,6 @@ const NotAllowedInput = ({ hint, label, required, name: name2 }) => {
3247
3326
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
3248
3327
  ] });
3249
3328
  };
3250
- function useDebounce(value, delay) {
3251
- const [debouncedValue, setDebouncedValue] = React.useState(value);
3252
- React.useEffect(() => {
3253
- const handler = setTimeout(() => {
3254
- setDebouncedValue(value);
3255
- }, delay);
3256
- return () => {
3257
- clearTimeout(handler);
3258
- };
3259
- }, [value, delay]);
3260
- return debouncedValue;
3261
- }
3262
3329
  const uidApi = index.contentManagerApi.injectEndpoints({
3263
3330
  endpoints: (builder) => ({
3264
3331
  getDefaultUID: builder.query({
@@ -3293,7 +3360,10 @@ const uidApi = index.contentManagerApi.injectEndpoints({
3293
3360
  config: {
3294
3361
  params
3295
3362
  }
3296
- })
3363
+ }),
3364
+ providesTags: (_res, _error, params) => [
3365
+ { type: "UidAvailability", id: params.contentTypeUID }
3366
+ ]
3297
3367
  })
3298
3368
  })
3299
3369
  });
@@ -3305,8 +3375,10 @@ const UIDInput = React__namespace.forwardRef(
3305
3375
  const allFormValues = strapiAdmin.useForm("InputUID", (form) => form.values);
3306
3376
  const [availability, setAvailability] = React__namespace.useState();
3307
3377
  const [showRegenerate, setShowRegenerate] = React__namespace.useState(false);
3378
+ const isCloning = reactRouterDom.useMatch(index.CLONE_PATH) !== null;
3308
3379
  const field = strapiAdmin.useField(name2);
3309
- const debouncedValue = useDebounce(field.value, 300);
3380
+ const debouncedValue = useDebounce.useDebounce(field.value, 300);
3381
+ const hasChanged = debouncedValue !== field.initialValue;
3310
3382
  const { toggleNotification } = strapiAdmin.useNotification();
3311
3383
  const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
3312
3384
  const { formatMessage } = reactIntl.useIntl();
@@ -3382,8 +3454,9 @@ const UIDInput = React__namespace.forwardRef(
3382
3454
  params
3383
3455
  },
3384
3456
  {
3457
+ // Don't check availability if the value is empty or wasn't changed
3385
3458
  skip: !Boolean(
3386
- debouncedValue !== field.initialValue && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3459
+ (hasChanged || isCloning) && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3387
3460
  )
3388
3461
  }
3389
3462
  );
@@ -3412,6 +3485,7 @@ const UIDInput = React__namespace.forwardRef(
3412
3485
  const isLoading = isGeneratingDefaultUID || isGeneratingUID || isCheckingAvailability;
3413
3486
  const fieldRef = strapiAdmin.useFocusInputField(name2);
3414
3487
  const composedRefs = designSystem.useComposedRefs(ref, fieldRef);
3488
+ const shouldShowAvailability = (hasChanged || isCloning) && debouncedValue != null && availability && !showRegenerate;
3415
3489
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { hint, name: name2, error: field.error, required, children: [
3416
3490
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { action: labelAction, children: label }),
3417
3491
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3420,7 +3494,7 @@ const UIDInput = React__namespace.forwardRef(
3420
3494
  ref: composedRefs,
3421
3495
  disabled: props.disabled,
3422
3496
  endAction: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { position: "relative", gap: 1, children: [
3423
- availability && !showRegenerate && /* @__PURE__ */ jsxRuntime.jsxs(
3497
+ shouldShowAvailability && /* @__PURE__ */ jsxRuntime.jsxs(
3424
3498
  TextValidation,
3425
3499
  {
3426
3500
  alignItems: "center",
@@ -4254,7 +4328,7 @@ const EditorLayout = ({
4254
4328
  justifyContent: "flex-end",
4255
4329
  shrink: 0,
4256
4330
  width: "100%",
4257
- children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, children: [
4331
+ children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, variant: "tertiary", size: "M", children: [
4258
4332
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
4259
4333
  id: "components.Wysiwyg.collapse",
4260
4334
  defaultMessage: "Collapse"
@@ -4272,12 +4346,14 @@ const EditorLayout = ({
4272
4346
  ) }) });
4273
4347
  }
4274
4348
  return /* @__PURE__ */ jsxRuntime.jsx(
4275
- designSystem.Box,
4349
+ designSystem.Flex,
4276
4350
  {
4277
4351
  borderColor: error ? "danger600" : "neutral200",
4278
4352
  borderStyle: "solid",
4279
4353
  borderWidth: "1px",
4280
4354
  hasRadius: true,
4355
+ direction: "column",
4356
+ alignItems: "stretch",
4281
4357
  children
4282
4358
  }
4283
4359
  );
@@ -4288,11 +4364,19 @@ const ExpandWrapper = styledComponents.styled(designSystem.Flex)`
4288
4364
  const BoxWithBorder = styledComponents.styled(designSystem.Box)`
4289
4365
  border-right: 1px solid ${({ theme }) => theme.colors.neutral200};
4290
4366
  `;
4291
- const ExpandButton$1 = styledComponents.styled(designSystem.BaseButton)`
4367
+ const ExpandButton$1 = styledComponents.styled(designSystem.Button)`
4292
4368
  background-color: transparent;
4293
4369
  border: none;
4294
4370
  align-items: center;
4295
4371
 
4372
+ & > span {
4373
+ display: flex;
4374
+ justify-content: space-between;
4375
+ align-items: center;
4376
+ width: 100%;
4377
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4378
+ }
4379
+
4296
4380
  svg {
4297
4381
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
4298
4382
 
@@ -4559,40 +4643,28 @@ const quoteAndCodeHandler = (editor, markdownType) => {
4559
4643
  insertWithoutTextToEdit(editor, markdownType, line, contentLength);
4560
4644
  }
4561
4645
  };
4562
- const CustomIconButton = styledComponents.styled(designSystem.IconButton)`
4563
- padding: ${({ theme }) => theme.spaces[2]};
4564
-
4565
- svg {
4566
- width: 1.8rem;
4567
- height: 1.8rem;
4568
- }
4569
- `;
4570
- const CustomLinkIconButton = styledComponents.styled(CustomIconButton)`
4571
- svg {
4572
- width: 0.8rem;
4573
- height: 0.8rem;
4574
- }
4575
- `;
4576
4646
  const MainButtons = styledComponents.styled(designSystem.IconButtonGroup)`
4577
4647
  margin-left: ${({ theme }) => theme.spaces[4]};
4578
4648
  `;
4579
4649
  const MoreButton = styledComponents.styled(designSystem.IconButton)`
4580
4650
  margin: ${({ theme }) => `0 ${theme.spaces[2]}`};
4581
- padding: ${({ theme }) => theme.spaces[2]};
4582
-
4583
- svg {
4584
- width: 1.8rem;
4585
- height: 1.8rem;
4586
- }
4587
4651
  `;
4588
4652
  const IconButtonGroupMargin = styledComponents.styled(designSystem.IconButtonGroup)`
4589
4653
  margin-right: ${({ theme }) => `${theme.spaces[2]}`};
4590
4654
  `;
4591
- const ExpandButton = styledComponents.styled(designSystem.BaseButton)`
4655
+ const ExpandButton = styledComponents.styled(designSystem.Button)`
4592
4656
  background-color: transparent;
4593
4657
  border: none;
4594
4658
  align-items: center;
4595
4659
 
4660
+ & > span {
4661
+ display: flex;
4662
+ justify-content: space-between;
4663
+ align-items: center;
4664
+ width: 100%;
4665
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4666
+ }
4667
+
4596
4668
  svg {
4597
4669
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
4598
4670
  path {
@@ -4604,8 +4676,8 @@ const ExpandButton = styledComponents.styled(designSystem.BaseButton)`
4604
4676
  `;
4605
4677
  const WysiwygFooter = ({ onToggleExpand }) => {
4606
4678
  const { formatMessage } = reactIntl.useIntl();
4607
- 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: [
4608
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
4679
+ 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: [
4680
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: formatMessage({
4609
4681
  id: "components.WysiwygBottomControls.fullscreen",
4610
4682
  defaultMessage: "Expand"
4611
4683
  }) }),
@@ -4641,18 +4713,27 @@ const WysiwygNav = ({
4641
4713
  borderRadius: `0.4rem 0.4rem 0 0`,
4642
4714
  children: [
4643
4715
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
4644
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.SingleSelect, { disabled: true, placeholder: selectPlaceholder, "aria-label": selectPlaceholder, children: [
4645
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4646
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
4647
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h3", children: "h3" }),
4648
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h4", children: "h4" }),
4649
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h5", children: "h5" }),
4650
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h6", children: "h6" })
4651
- ] }) }),
4716
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(
4717
+ designSystem.SingleSelect,
4718
+ {
4719
+ disabled: true,
4720
+ placeholder: selectPlaceholder,
4721
+ "aria-label": selectPlaceholder,
4722
+ size: "S",
4723
+ children: [
4724
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4725
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
4726
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h3", children: "h3" }),
4727
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h4", children: "h4" }),
4728
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h5", children: "h5" }),
4729
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h6", children: "h6" })
4730
+ ]
4731
+ }
4732
+ ) }),
4652
4733
  /* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
4653
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4654
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Italic, {}) }),
4655
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Underline, {}) })
4734
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4735
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Italic, {}) }),
4736
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Underline, {}) })
4656
4737
  ] }),
4657
4738
  /* @__PURE__ */ jsxRuntime.jsx(MoreButton, { disabled: true, label: "More", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.More, {}) })
4658
4739
  ] }),
@@ -4679,6 +4760,7 @@ const WysiwygNav = ({
4679
4760
  placeholder: selectPlaceholder,
4680
4761
  "aria-label": selectPlaceholder,
4681
4762
  onChange: (value) => onActionClick(value, editorRef),
4763
+ size: "S",
4682
4764
  children: [
4683
4765
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4684
4766
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
@@ -4690,17 +4772,9 @@ const WysiwygNav = ({
4690
4772
  }
4691
4773
  ) }),
4692
4774
  /* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
4775
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { onClick: () => onActionClick("Bold", editorRef), label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4693
4776
  /* @__PURE__ */ jsxRuntime.jsx(
4694
- CustomIconButton,
4695
- {
4696
- onClick: () => onActionClick("Bold", editorRef),
4697
- label: "Bold",
4698
- name: "Bold",
4699
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {})
4700
- }
4701
- ),
4702
- /* @__PURE__ */ jsxRuntime.jsx(
4703
- CustomIconButton,
4777
+ designSystem.IconButton,
4704
4778
  {
4705
4779
  onClick: () => onActionClick("Italic", editorRef),
4706
4780
  label: "Italic",
@@ -4709,7 +4783,7 @@ const WysiwygNav = ({
4709
4783
  }
4710
4784
  ),
4711
4785
  /* @__PURE__ */ jsxRuntime.jsx(
4712
- CustomIconButton,
4786
+ designSystem.IconButton,
4713
4787
  {
4714
4788
  onClick: () => onActionClick("Underline", editorRef),
4715
4789
  label: "Underline",
@@ -4723,7 +4797,7 @@ const WysiwygNav = ({
4723
4797
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { sideOffset: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 2, children: [
4724
4798
  /* @__PURE__ */ jsxRuntime.jsxs(IconButtonGroupMargin, { children: [
4725
4799
  /* @__PURE__ */ jsxRuntime.jsx(
4726
- CustomIconButton,
4800
+ designSystem.IconButton,
4727
4801
  {
4728
4802
  onClick: () => onActionClick("Strikethrough", editorRef, handleTogglePopover),
4729
4803
  label: "Strikethrough",
@@ -4732,7 +4806,7 @@ const WysiwygNav = ({
4732
4806
  }
4733
4807
  ),
4734
4808
  /* @__PURE__ */ jsxRuntime.jsx(
4735
- CustomIconButton,
4809
+ designSystem.IconButton,
4736
4810
  {
4737
4811
  onClick: () => onActionClick("BulletList", editorRef, handleTogglePopover),
4738
4812
  label: "BulletList",
@@ -4741,7 +4815,7 @@ const WysiwygNav = ({
4741
4815
  }
4742
4816
  ),
4743
4817
  /* @__PURE__ */ jsxRuntime.jsx(
4744
- CustomIconButton,
4818
+ designSystem.IconButton,
4745
4819
  {
4746
4820
  onClick: () => onActionClick("NumberList", editorRef, handleTogglePopover),
4747
4821
  label: "NumberList",
@@ -4752,7 +4826,7 @@ const WysiwygNav = ({
4752
4826
  ] }),
4753
4827
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.IconButtonGroup, { children: [
4754
4828
  /* @__PURE__ */ jsxRuntime.jsx(
4755
- CustomIconButton,
4829
+ designSystem.IconButton,
4756
4830
  {
4757
4831
  onClick: () => onActionClick("Code", editorRef, handleTogglePopover),
4758
4832
  label: "Code",
@@ -4761,7 +4835,7 @@ const WysiwygNav = ({
4761
4835
  }
4762
4836
  ),
4763
4837
  /* @__PURE__ */ jsxRuntime.jsx(
4764
- CustomIconButton,
4838
+ designSystem.IconButton,
4765
4839
  {
4766
4840
  onClick: () => {
4767
4841
  handleTogglePopover();
@@ -4773,7 +4847,7 @@ const WysiwygNav = ({
4773
4847
  }
4774
4848
  ),
4775
4849
  /* @__PURE__ */ jsxRuntime.jsx(
4776
- CustomLinkIconButton,
4850
+ designSystem.IconButton,
4777
4851
  {
4778
4852
  onClick: () => onActionClick("Link", editorRef, handleTogglePopover),
4779
4853
  label: "Link",
@@ -4782,7 +4856,7 @@ const WysiwygNav = ({
4782
4856
  }
4783
4857
  ),
4784
4858
  /* @__PURE__ */ jsxRuntime.jsx(
4785
- CustomIconButton,
4859
+ designSystem.IconButton,
4786
4860
  {
4787
4861
  onClick: () => onActionClick("Quote", editorRef, handleTogglePopover),
4788
4862
  label: "Quote",
@@ -4860,7 +4934,7 @@ const Wysiwyg = React__namespace.forwardRef(
4860
4934
  const handleSelectAssets = (files) => {
4861
4935
  const formattedFiles = files.map((f) => ({
4862
4936
  alt: f.alternativeText || f.name,
4863
- url: usePrev.prefixFileUrlWithBackendUrl(f.url),
4937
+ url: useDebounce.prefixFileUrlWithBackendUrl(f.url),
4864
4938
  mime: f.mime
4865
4939
  }));
4866
4940
  insertFile(editorRef, formattedFiles);
@@ -4919,15 +4993,19 @@ const Wysiwyg = React__namespace.forwardRef(
4919
4993
  );
4920
4994
  const MemoizedWysiwyg = React__namespace.memo(Wysiwyg);
4921
4995
  const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
4922
- const { id } = index.useDoc();
4996
+ const { id, document: document2, collectionType } = index.useDoc();
4923
4997
  const isFormDisabled = strapiAdmin.useForm("InputRenderer", (state) => state.disabled);
4924
4998
  const isInDynamicZone = useDynamicZone("isInDynamicZone", (state) => state.isInDynamicZone);
4925
4999
  const canCreateFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canCreateFields);
4926
5000
  const canReadFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canReadFields);
4927
5001
  const canUpdateFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canUpdateFields);
4928
5002
  const canUserAction = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canUserAction);
4929
- const editableFields = id ? canUpdateFields : canCreateFields;
4930
- const readableFields = id ? canReadFields : canCreateFields;
5003
+ let idToCheck = id;
5004
+ if (collectionType === index.SINGLE_TYPES) {
5005
+ idToCheck = document2?.documentId;
5006
+ }
5007
+ const editableFields = idToCheck ? canUpdateFields : canCreateFields;
5008
+ const readableFields = idToCheck ? canReadFields : canCreateFields;
4931
5009
  const canUserReadField = canUserAction(props.name, readableFields, props.type);
4932
5010
  const canUserEditField = canUserAction(props.name, editableFields, props.type);
4933
5011
  const fields = strapiAdmin.useStrapiApp("InputRenderer", (app) => app.fields);
@@ -4938,6 +5016,7 @@ const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
4938
5016
  const {
4939
5017
  edit: { components }
4940
5018
  } = index.useDocLayout();
5019
+ const field = strapiAdmin.useField(props.name);
4941
5020
  if (!visible) {
4942
5021
  return null;
4943
5022
  }
@@ -4948,7 +5027,7 @@ const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
4948
5027
  if (attributeHasCustomFieldProperty(props.attribute)) {
4949
5028
  const CustomInput = lazyComponentStore[props.attribute.customField];
4950
5029
  if (CustomInput) {
4951
- return /* @__PURE__ */ jsxRuntime.jsx(CustomInput, { ...props, hint, disabled: fieldIsDisabled });
5030
+ return /* @__PURE__ */ jsxRuntime.jsx(CustomInput, { ...props, ...field, hint, disabled: fieldIsDisabled });
4952
5031
  }
4953
5032
  return /* @__PURE__ */ jsxRuntime.jsx(
4954
5033
  strapiAdmin.InputRenderer,
@@ -5018,7 +5097,9 @@ const useFieldHint = (hint = void 0, attribute) => {
5018
5097
  if (!maximum && !minimum) {
5019
5098
  return hint;
5020
5099
  }
5021
- const units = !["biginteger", "integer", "number"].includes(attribute.type) ? formatMessage(
5100
+ const units = !["biginteger", "integer", "number", "dynamiczone", "component"].includes(
5101
+ attribute.type
5102
+ ) ? formatMessage(
5022
5103
  {
5023
5104
  id: "content-manager.form.Input.hint.character.unit",
5024
5105
  defaultMessage: "{maxValue, plural, one { character} other { characters}}"
@@ -5107,12 +5188,20 @@ const DynamicComponent = ({
5107
5188
  React__namespace.useEffect(() => {
5108
5189
  dragPreviewRef(reactDndHtml5Backend.getEmptyImage(), { captureDraggingState: false });
5109
5190
  }, [dragPreviewRef, index$1]);
5191
+ const accordionValue = React__namespace.useId();
5192
+ const { value = [], rawError } = strapiAdmin.useField(`${name2}.${index$1}`);
5193
+ const [collapseToOpen, setCollapseToOpen] = React__namespace.useState("");
5194
+ React__namespace.useEffect(() => {
5195
+ if (rawError && value) {
5196
+ setCollapseToOpen(accordionValue);
5197
+ }
5198
+ }, [rawError, value, accordionValue]);
5110
5199
  const composedBoxRefs = designSystem.useComposedRefs(boxRef, dropRef);
5111
5200
  const accordionActions = disabled ? null : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5112
5201
  /* @__PURE__ */ jsxRuntime.jsx(
5113
5202
  designSystem.IconButton,
5114
5203
  {
5115
- borderWidth: 0,
5204
+ variant: "ghost",
5116
5205
  label: formatMessage(
5117
5206
  {
5118
5207
  id: index.getTranslation("components.DynamicZone.delete-label"),
@@ -5127,7 +5216,7 @@ const DynamicComponent = ({
5127
5216
  /* @__PURE__ */ jsxRuntime.jsx(
5128
5217
  designSystem.IconButton,
5129
5218
  {
5130
- borderWidth: 0,
5219
+ variant: "ghost",
5131
5220
  onClick: (e) => e.stopPropagation(),
5132
5221
  "data-handler-id": handlerId,
5133
5222
  ref: dragRef,
@@ -5172,10 +5261,9 @@ const DynamicComponent = ({
5172
5261
  ] })
5173
5262
  ] });
5174
5263
  const accordionTitle = title ? `${displayName} ${title}` : displayName;
5175
- const accordionValue = React__namespace.useId();
5176
5264
  return /* @__PURE__ */ jsxRuntime.jsxs(ComponentContainer, { tag: "li", width: "100%", children: [
5177
5265
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Rectangle, { background: "neutral200" }) }),
5178
- /* @__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: [
5266
+ /* @__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: [
5179
5267
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Header, { children: [
5180
5268
  /* @__PURE__ */ jsxRuntime.jsx(
5181
5269
  designSystem.Accordion.Trigger,
@@ -5186,10 +5274,39 @@ const DynamicComponent = ({
5186
5274
  ),
5187
5275
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Actions, { children: accordionActions })
5188
5276
  ] }),
5189
- /* @__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.Root, { gap: 4, children: row.map(({ size, ...field }) => {
5190
- const fieldName = `${name2}.${index$1}.${field.name}`;
5191
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, s: 12, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(MemoizedInputRenderer, { ...field, name: fieldName }) }, fieldName);
5192
- }) }, rowInd)) }) }) })
5277
+ /* @__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(
5278
+ designSystem.Grid.Item,
5279
+ {
5280
+ col: 12,
5281
+ s: 12,
5282
+ xs: 12,
5283
+ direction: "column",
5284
+ alignItems: "stretch",
5285
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
5286
+ const fieldName = `${name2}.${index$1}.${field.name}`;
5287
+ const fieldWithTranslatedLabel = {
5288
+ ...field,
5289
+ label: formatMessage({
5290
+ id: `content-manager.components.${componentUid}.${field.name}`,
5291
+ defaultMessage: field.label
5292
+ })
5293
+ };
5294
+ return /* @__PURE__ */ jsxRuntime.jsx(
5295
+ designSystem.Grid.Item,
5296
+ {
5297
+ col: size,
5298
+ s: 12,
5299
+ xs: 12,
5300
+ direction: "column",
5301
+ alignItems: "stretch",
5302
+ children: /* @__PURE__ */ jsxRuntime.jsx(MemoizedInputRenderer, { ...fieldWithTranslatedLabel, name: fieldName })
5303
+ },
5304
+ fieldName
5305
+ );
5306
+ }) })
5307
+ },
5308
+ rowInd
5309
+ )) }) }) }) })
5193
5310
  ] }) }) })
5194
5311
  ] });
5195
5312
  };
@@ -5381,7 +5498,7 @@ const DynamicZone = ({
5381
5498
  const handleRemoveComponent = (name22, currentIndex) => () => {
5382
5499
  removeFieldRow(name22, currentIndex);
5383
5500
  };
5384
- const hasError = error !== void 0 || dynamicDisplayedComponentsLength < min || dynamicDisplayedComponentsLength > max;
5501
+ const hasError = error !== void 0;
5385
5502
  const renderButtonLabel = () => {
5386
5503
  if (addComponentIsOpen) {
5387
5504
  return formatMessage({ id: "app.utils.close-label", defaultMessage: "Close" });
@@ -5495,4 +5612,4 @@ exports.transformDocument = transformDocument;
5495
5612
  exports.useDynamicZone = useDynamicZone;
5496
5613
  exports.useFieldHint = useFieldHint;
5497
5614
  exports.useLazyComponents = useLazyComponents;
5498
- //# sourceMappingURL=Field-Boxf9Ajp.js.map
5615
+ //# sourceMappingURL=Field-BQoMs_At.js.map