@strapi/content-manager 0.0.0-experimental.62ce06180fe9a772eaeb3d43d238b26644f39f7c → 0.0.0-experimental.65ad956ae83ac65d866b9bb3e8c022c34b85468f

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 (127) hide show
  1. package/LICENSE +18 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-DErJQEVW.mjs → ComponentConfigurationPage-CpBFh6_r.mjs} +3 -3
  3. package/dist/_chunks/{ComponentConfigurationPage-DErJQEVW.mjs.map → ComponentConfigurationPage-CpBFh6_r.mjs.map} +1 -1
  4. package/dist/_chunks/{ComponentConfigurationPage-Cl7eB3s4.js → ComponentConfigurationPage-_zF8p6CY.js} +3 -3
  5. package/dist/_chunks/{ComponentConfigurationPage-Cl7eB3s4.js.map → ComponentConfigurationPage-_zF8p6CY.js.map} +1 -1
  6. package/dist/_chunks/{EditConfigurationPage-CBosWqQ7.mjs → EditConfigurationPage-CE_yavTi.mjs} +3 -3
  7. package/dist/_chunks/{EditConfigurationPage-CBosWqQ7.mjs.map → EditConfigurationPage-CE_yavTi.mjs.map} +1 -1
  8. package/dist/_chunks/{EditConfigurationPage-CyfFvH6-.js → EditConfigurationPage-_aG2DJSU.js} +3 -3
  9. package/dist/_chunks/{EditConfigurationPage-CyfFvH6-.js.map → EditConfigurationPage-_aG2DJSU.js.map} +1 -1
  10. package/dist/_chunks/{EditViewPage-ClIueJnM.mjs → EditViewPage-DeTn7rAF.mjs} +19 -8
  11. package/dist/_chunks/EditViewPage-DeTn7rAF.mjs.map +1 -0
  12. package/dist/_chunks/{EditViewPage-DxyAOItK.js → EditViewPage-G9uNzwYL.js} +19 -8
  13. package/dist/_chunks/EditViewPage-G9uNzwYL.js.map +1 -0
  14. package/dist/_chunks/{Field-BZBYmvaf.mjs → Field-CnCKhI1R.mjs} +463 -143
  15. package/dist/_chunks/Field-CnCKhI1R.mjs.map +1 -0
  16. package/dist/_chunks/{Field-C0Y_SR9e.js → Field-DDHUWEfV.js} +465 -145
  17. package/dist/_chunks/Field-DDHUWEfV.js.map +1 -0
  18. package/dist/_chunks/{Form-DwvGnISS.js → Form-DYETaKUX.js} +35 -16
  19. package/dist/_chunks/Form-DYETaKUX.js.map +1 -0
  20. package/dist/_chunks/{Form-jwRSC2kV.mjs → Form-IvVVwqRL.mjs} +35 -16
  21. package/dist/_chunks/Form-IvVVwqRL.mjs.map +1 -0
  22. package/dist/_chunks/{History-BgzAIj0G.mjs → History-BMunT-do.mjs} +44 -19
  23. package/dist/_chunks/History-BMunT-do.mjs.map +1 -0
  24. package/dist/_chunks/{History-Cda0Yjzz.js → History-CnZDctSO.js} +44 -19
  25. package/dist/_chunks/History-CnZDctSO.js.map +1 -0
  26. package/dist/_chunks/{ListConfigurationPage-C29EF97r.js → ListConfigurationPage-BynalOp8.js} +20 -8
  27. package/dist/_chunks/ListConfigurationPage-BynalOp8.js.map +1 -0
  28. package/dist/_chunks/{ListConfigurationPage-GH55qfoT.mjs → ListConfigurationPage-CDqkCxgV.mjs} +20 -8
  29. package/dist/_chunks/ListConfigurationPage-CDqkCxgV.mjs.map +1 -0
  30. package/dist/_chunks/{ListViewPage-CnRt0UT7.js → ListViewPage-I88Ouzoq.js} +56 -42
  31. package/dist/_chunks/ListViewPage-I88Ouzoq.js.map +1 -0
  32. package/dist/_chunks/{ListViewPage-QU03PFj1.mjs → ListViewPage-_5gS-DOF.mjs} +54 -40
  33. package/dist/_chunks/ListViewPage-_5gS-DOF.mjs.map +1 -0
  34. package/dist/_chunks/{NoContentTypePage-DFDjxByI.js → NoContentTypePage-BaWQ7HsA.js} +2 -2
  35. package/dist/_chunks/{NoContentTypePage-DFDjxByI.js.map → NoContentTypePage-BaWQ7HsA.js.map} +1 -1
  36. package/dist/_chunks/{NoContentTypePage-CPs2CnzH.mjs → NoContentTypePage-Dht-55hr.mjs} +2 -2
  37. package/dist/_chunks/{NoContentTypePage-CPs2CnzH.mjs.map → NoContentTypePage-Dht-55hr.mjs.map} +1 -1
  38. package/dist/_chunks/{NoPermissionsPage-ct58lcY0.mjs → NoPermissionsPage-Bs8D5W_v.mjs} +2 -2
  39. package/dist/_chunks/{NoPermissionsPage-ct58lcY0.mjs.map → NoPermissionsPage-Bs8D5W_v.mjs.map} +1 -1
  40. package/dist/_chunks/{NoPermissionsPage-BVHI-jv5.js → NoPermissionsPage-DCVUh5at.js} +2 -2
  41. package/dist/_chunks/{NoPermissionsPage-BVHI-jv5.js.map → NoPermissionsPage-DCVUh5at.js.map} +1 -1
  42. package/dist/_chunks/{Relations-BjpPPCKp.js → Relations-BPgFQeGj.js} +4 -4
  43. package/dist/_chunks/Relations-BPgFQeGj.js.map +1 -0
  44. package/dist/_chunks/{Relations-KMf5qEN0.mjs → Relations-Chdt5qWc.mjs} +4 -4
  45. package/dist/_chunks/Relations-Chdt5qWc.mjs.map +1 -0
  46. package/dist/_chunks/{en-fbKQxLGn.js → en-BVzUkPxZ.js} +10 -8
  47. package/dist/_chunks/{en-fbKQxLGn.js.map → en-BVzUkPxZ.js.map} +1 -1
  48. package/dist/_chunks/{en-Ux26r5pl.mjs → en-CPTj6CjC.mjs} +10 -8
  49. package/dist/_chunks/{en-Ux26r5pl.mjs.map → en-CPTj6CjC.mjs.map} +1 -1
  50. package/dist/_chunks/{index-D9ZwczCV.js → index-BhbLFX4l.js} +440 -199
  51. package/dist/_chunks/index-BhbLFX4l.js.map +1 -0
  52. package/dist/_chunks/{index-6kKXK7y8.mjs → index-D4UGPFZC.mjs} +447 -206
  53. package/dist/_chunks/index-D4UGPFZC.mjs.map +1 -0
  54. package/dist/_chunks/{layout-BJfBoBiF.js → layout-CYA7s0qO.js} +25 -12
  55. package/dist/_chunks/layout-CYA7s0qO.js.map +1 -0
  56. package/dist/_chunks/{layout-B1Z-9koY.mjs → layout-D4HI4_PS.mjs} +27 -14
  57. package/dist/_chunks/layout-D4HI4_PS.mjs.map +1 -0
  58. package/dist/_chunks/{relations-CgZg7Pyx.mjs → relations-1pXaYpBK.mjs} +2 -2
  59. package/dist/_chunks/{relations-CgZg7Pyx.mjs.map → relations-1pXaYpBK.mjs.map} +1 -1
  60. package/dist/_chunks/{relations-CMvjzyU3.js → relations-DDZ9OxNo.js} +2 -2
  61. package/dist/_chunks/{relations-CMvjzyU3.js.map → relations-DDZ9OxNo.js.map} +1 -1
  62. package/dist/_chunks/{usePrev-B9w_-eYc.js → useDebounce-CtcjDB3L.js} +14 -1
  63. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
  64. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
  65. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
  66. package/dist/admin/index.js +1 -1
  67. package/dist/admin/index.mjs +1 -1
  68. package/dist/admin/src/history/index.d.ts +3 -0
  69. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  70. package/dist/admin/src/index.d.ts +1 -0
  71. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -0
  72. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +4 -0
  73. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
  74. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
  75. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
  76. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +4 -48
  77. package/dist/admin/src/pages/EditView/components/Header.d.ts +10 -11
  78. package/dist/admin/src/services/api.d.ts +1 -1
  79. package/dist/admin/src/services/components.d.ts +2 -2
  80. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  81. package/dist/admin/src/services/documents.d.ts +19 -17
  82. package/dist/admin/src/services/init.d.ts +1 -1
  83. package/dist/admin/src/services/relations.d.ts +2 -2
  84. package/dist/admin/src/services/uid.d.ts +3 -3
  85. package/dist/admin/src/utils/validation.d.ts +4 -1
  86. package/dist/server/index.js +178 -105
  87. package/dist/server/index.js.map +1 -1
  88. package/dist/server/index.mjs +179 -106
  89. package/dist/server/index.mjs.map +1 -1
  90. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  91. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  92. package/dist/server/src/controllers/uid.d.ts.map +1 -1
  93. package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
  94. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
  95. package/dist/server/src/history/services/history.d.ts.map +1 -1
  96. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  97. package/dist/server/src/history/services/utils.d.ts +2 -1
  98. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  99. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  100. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  101. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  102. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  103. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  104. package/dist/shared/contracts/collection-types.d.ts +3 -1
  105. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  106. package/package.json +9 -9
  107. package/dist/_chunks/EditViewPage-ClIueJnM.mjs.map +0 -1
  108. package/dist/_chunks/EditViewPage-DxyAOItK.js.map +0 -1
  109. package/dist/_chunks/Field-BZBYmvaf.mjs.map +0 -1
  110. package/dist/_chunks/Field-C0Y_SR9e.js.map +0 -1
  111. package/dist/_chunks/Form-DwvGnISS.js.map +0 -1
  112. package/dist/_chunks/Form-jwRSC2kV.mjs.map +0 -1
  113. package/dist/_chunks/History-BgzAIj0G.mjs.map +0 -1
  114. package/dist/_chunks/History-Cda0Yjzz.js.map +0 -1
  115. package/dist/_chunks/ListConfigurationPage-C29EF97r.js.map +0 -1
  116. package/dist/_chunks/ListConfigurationPage-GH55qfoT.mjs.map +0 -1
  117. package/dist/_chunks/ListViewPage-CnRt0UT7.js.map +0 -1
  118. package/dist/_chunks/ListViewPage-QU03PFj1.mjs.map +0 -1
  119. package/dist/_chunks/Relations-BjpPPCKp.js.map +0 -1
  120. package/dist/_chunks/Relations-KMf5qEN0.mjs.map +0 -1
  121. package/dist/_chunks/index-6kKXK7y8.mjs.map +0 -1
  122. package/dist/_chunks/index-D9ZwczCV.js.map +0 -1
  123. package/dist/_chunks/layout-B1Z-9koY.mjs.map +0 -1
  124. package/dist/_chunks/layout-BJfBoBiF.js.map +0 -1
  125. package/dist/_chunks/usePrev-B9w_-eYc.js.map +0 -1
  126. package/dist/_chunks/usePrev-DH6iah0A.mjs +0 -16
  127. package/dist/_chunks/usePrev-DH6iah0A.mjs.map +0 -1
@@ -2,12 +2,12 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { useState, useEffect, useCallback, memo } from "react";
4
4
  import { useStrapiApp, createContext, useField, useNotification, useForm, useAPIErrorHandler, useQueryParams, useFocusInputField, InputRenderer as InputRenderer$1 } from "@strapi/admin/strapi-admin";
5
- import { Typography, Flex, Box, BaseLink, Button, Popover, Field, Tooltip, SingleSelect, SingleSelectOption, IconButton, useComposedRefs, Portal, FocusTrap, Divider, VisuallyHidden, Grid as Grid$1, Accordion, TextButton, BaseButton, TextInput, IconButtonGroup, Menu, MenuItem } from "@strapi/design-system";
5
+ import { Box, SingleSelect, SingleSelectOption, Typography, Flex, BaseLink, Button, Popover, Field, Tooltip, IconButton, useComposedRefs, Portal, FocusTrap, Divider, VisuallyHidden, Grid as Grid$1, Accordion, TextButton, TextInput, IconButtonGroup, Menu, MenuItem } from "@strapi/design-system";
6
6
  import pipe$1 from "lodash/fp/pipe";
7
7
  import { useIntl } from "react-intl";
8
- import { m as DOCUMENT_META_FIELDS, g as getTranslation, c as useDoc, e as contentManagerApi, d as buildValidParams, f as useDocumentRBAC, n as useDocLayout } from "./index-6kKXK7y8.mjs";
8
+ import { m as DOCUMENT_META_FIELDS, g as getTranslation, c as useDoc, e as contentManagerApi, n as CLONE_PATH, d as buildValidParams, f as useDocumentRBAC, o as useDocLayout } from "./index-D4UGPFZC.mjs";
9
9
  import { generateNKeysBetween } from "fractional-indexing";
10
- import { u as useComponent, C as ComponentProvider, M as MemoizedRelationsField } from "./Relations-KMf5qEN0.mjs";
10
+ import { u as useComponent, C as ComponentProvider, M as MemoizedRelationsField } from "./Relations-Chdt5qWc.mjs";
11
11
  import { Code, HeadingOne, HeadingTwo, HeadingThree, HeadingFour, HeadingFive, HeadingSix, Image as Image$1, NumberList, BulletList, Paragraph, Quotes, Link as Link$1, Drag, Collapse, Bold, Italic, Underline, StrikeThrough, Expand, PlusCircle, Plus, Trash, EyeStriked, CheckCircle, WarningCircle, Loader, ArrowClockwise, More } from "@strapi/icons";
12
12
  import { styled, css, keyframes } from "styled-components";
13
13
  import { C as ComponentIcon, a as COMPONENT_ICONS } from "./ComponentIcon-u4bIXTFY.mjs";
@@ -17,9 +17,9 @@ import { g as getIn } from "./objects-mKMAmfec.mjs";
17
17
  import { Editor as Editor$1, Transforms, Node, Element, Range, Path, Point, createEditor } from "slate";
18
18
  import { withHistory } from "slate-history";
19
19
  import { useFocused, useSelected, ReactEditor, Editable, useSlate, Slate, withReact } from "slate-react";
20
- import { p as prefixFileUrlWithBackendUrl, u as usePrev } from "./usePrev-DH6iah0A.mjs";
20
+ import { p as prefixFileUrlWithBackendUrl, u as usePrev, a as useDebounce } from "./useDebounce-DmuSJIF3.mjs";
21
21
  import * as Toolbar from "@radix-ui/react-toolbar";
22
- import { useLocation } from "react-router-dom";
22
+ import { useLocation, useMatch } from "react-router-dom";
23
23
  import CodeMirror from "codemirror5";
24
24
  import sanitizeHtml from "sanitize-html";
25
25
  import { getLanguage, highlight, highlightAuto } from "highlight.js";
@@ -160,6 +160,220 @@ const useLazyComponents = (componentUids = []) => {
160
160
  }, []);
161
161
  return { isLazyLoading: loading, lazyComponentStore, cleanup };
162
162
  };
163
+ const codeLanguages = [
164
+ {
165
+ value: "asm",
166
+ label: "Assembly"
167
+ },
168
+ {
169
+ value: "bash",
170
+ label: "Bash"
171
+ },
172
+ {
173
+ value: "c",
174
+ label: "C"
175
+ },
176
+ {
177
+ value: "clojure",
178
+ label: "Clojure"
179
+ },
180
+ {
181
+ value: "cobol",
182
+ label: "COBOL"
183
+ },
184
+ {
185
+ value: "cpp",
186
+ label: "C++"
187
+ },
188
+ {
189
+ value: "csharp",
190
+ label: "C#"
191
+ },
192
+ {
193
+ value: "css",
194
+ label: "CSS"
195
+ },
196
+ {
197
+ value: "dart",
198
+ label: "Dart"
199
+ },
200
+ {
201
+ value: "dockerfile",
202
+ label: "Dockerfile"
203
+ },
204
+ {
205
+ value: "elixir",
206
+ label: "Elixir"
207
+ },
208
+ {
209
+ value: "erlang",
210
+ label: "Erlang"
211
+ },
212
+ {
213
+ value: "fortran",
214
+ label: "Fortran"
215
+ },
216
+ {
217
+ value: "fsharp",
218
+ label: "F#"
219
+ },
220
+ {
221
+ value: "go",
222
+ label: "Go"
223
+ },
224
+ {
225
+ value: "graphql",
226
+ label: "GraphQL"
227
+ },
228
+ {
229
+ value: "groovy",
230
+ label: "Groovy"
231
+ },
232
+ {
233
+ value: "haskell",
234
+ label: "Haskell"
235
+ },
236
+ {
237
+ value: "haxe",
238
+ label: "Haxe"
239
+ },
240
+ {
241
+ value: "html",
242
+ label: "HTML"
243
+ },
244
+ {
245
+ value: "ini",
246
+ label: "INI"
247
+ },
248
+ {
249
+ value: "java",
250
+ label: "Java"
251
+ },
252
+ {
253
+ value: "javascript",
254
+ label: "JavaScript"
255
+ },
256
+ {
257
+ value: "jsx",
258
+ label: "JavaScript (React)"
259
+ },
260
+ {
261
+ value: "json",
262
+ label: "JSON"
263
+ },
264
+ {
265
+ value: "julia",
266
+ label: "Julia"
267
+ },
268
+ {
269
+ value: "kotlin",
270
+ label: "Kotlin"
271
+ },
272
+ {
273
+ value: "latex",
274
+ label: "LaTeX"
275
+ },
276
+ {
277
+ value: "lua",
278
+ label: "Lua"
279
+ },
280
+ {
281
+ value: "markdown",
282
+ label: "Markdown"
283
+ },
284
+ {
285
+ value: "matlab",
286
+ label: "MATLAB"
287
+ },
288
+ {
289
+ value: "makefile",
290
+ label: "Makefile"
291
+ },
292
+ {
293
+ value: "objectivec",
294
+ label: "Objective-C"
295
+ },
296
+ {
297
+ value: "perl",
298
+ label: "Perl"
299
+ },
300
+ {
301
+ value: "php",
302
+ label: "PHP"
303
+ },
304
+ {
305
+ value: "plaintext",
306
+ label: "Plain text"
307
+ },
308
+ {
309
+ value: "powershell",
310
+ label: "PowerShell"
311
+ },
312
+ {
313
+ value: "python",
314
+ label: "Python"
315
+ },
316
+ {
317
+ value: "r",
318
+ label: "R"
319
+ },
320
+ {
321
+ value: "ruby",
322
+ label: "Ruby"
323
+ },
324
+ {
325
+ value: "rust",
326
+ label: "Rust"
327
+ },
328
+ {
329
+ value: "sas",
330
+ label: "SAS"
331
+ },
332
+ {
333
+ value: "scala",
334
+ label: "Scala"
335
+ },
336
+ {
337
+ value: "scheme",
338
+ label: "Scheme"
339
+ },
340
+ {
341
+ value: "shell",
342
+ label: "Shell"
343
+ },
344
+ {
345
+ value: "sql",
346
+ label: "SQL"
347
+ },
348
+ {
349
+ value: "stata",
350
+ label: "Stata"
351
+ },
352
+ {
353
+ value: "swift",
354
+ label: "Swift"
355
+ },
356
+ {
357
+ value: "typescript",
358
+ label: "TypeScript"
359
+ },
360
+ {
361
+ value: "tsx",
362
+ label: "TypeScript (React)"
363
+ },
364
+ {
365
+ value: "vbnet",
366
+ label: "VB.NET"
367
+ },
368
+ {
369
+ value: "xml",
370
+ label: "XML"
371
+ },
372
+ {
373
+ value: "yaml",
374
+ label: "YAML"
375
+ }
376
+ ];
163
377
  const baseHandleConvert = (editor, attributesToSet) => {
164
378
  const [_, lastNodePath] = Editor$1.last(editor, []);
165
379
  Transforms.unwrapNodes(editor, {
@@ -230,6 +444,7 @@ const CodeBlock = styled.pre`
230
444
  overflow: auto;
231
445
  padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};
232
446
  flex-shrink: 1;
447
+
233
448
  & > code {
234
449
  font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,
235
450
  monospace;
@@ -238,9 +453,61 @@ const CodeBlock = styled.pre`
238
453
  max-width: 100%;
239
454
  }
240
455
  `;
456
+ const CodeEditor = (props) => {
457
+ const { editor } = useBlocksEditorContext("ImageDialog");
458
+ const editorIsFocused = useFocused();
459
+ const imageIsSelected = useSelected();
460
+ const { formatMessage } = useIntl();
461
+ const [isSelectOpen, setIsSelectOpen] = React.useState(false);
462
+ const shouldDisplayLanguageSelect = editorIsFocused && imageIsSelected || isSelectOpen;
463
+ return /* @__PURE__ */ jsxs(Box, { position: "relative", width: "100%", children: [
464
+ /* @__PURE__ */ jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsx("code", { children: props.children }) }),
465
+ shouldDisplayLanguageSelect && /* @__PURE__ */ jsx(
466
+ Box,
467
+ {
468
+ position: "absolute",
469
+ background: "neutral0",
470
+ borderColor: "neutral150",
471
+ borderStyle: "solid",
472
+ borderWidth: "0.5px",
473
+ shadow: "tableShadow",
474
+ top: "100%",
475
+ marginTop: 1,
476
+ right: 0,
477
+ padding: 1,
478
+ hasRadius: true,
479
+ children: /* @__PURE__ */ jsx(
480
+ SingleSelect,
481
+ {
482
+ onChange: (open) => {
483
+ Transforms.setNodes(
484
+ editor,
485
+ { language: open.toString() },
486
+ { match: (node) => !Editor$1.isEditor(node) && node.type === "code" }
487
+ );
488
+ },
489
+ value: props.element.type === "code" && props.element.language || "plaintext",
490
+ onOpenChange: (open) => {
491
+ setIsSelectOpen(open);
492
+ if (!open) {
493
+ ReactEditor.focus(editor);
494
+ }
495
+ },
496
+ onCloseAutoFocus: (e) => e.preventDefault(),
497
+ "aria-label": formatMessage({
498
+ id: "components.Blocks.blocks.code.languageLabel",
499
+ defaultMessage: "Select a language"
500
+ }),
501
+ children: codeLanguages.map(({ value, label }) => /* @__PURE__ */ jsx(SingleSelectOption, { value, children: label }, value))
502
+ }
503
+ )
504
+ }
505
+ )
506
+ ] });
507
+ };
241
508
  const codeBlocks = {
242
509
  code: {
243
- renderElement: (props) => /* @__PURE__ */ jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsx("code", { children: props.children }) }),
510
+ renderElement: (props) => /* @__PURE__ */ jsx(CodeEditor, { ...props }),
244
511
  icon: Code,
245
512
  label: {
246
513
  id: "components.Blocks.blocks.code",
@@ -249,7 +516,7 @@ const codeBlocks = {
249
516
  matchNode: (node) => node.type === "code",
250
517
  isInBlocksSelector: true,
251
518
  handleConvert(editor) {
252
- baseHandleConvert(editor, { type: "code" });
519
+ baseHandleConvert(editor, { type: "code", language: "plaintext" });
253
520
  },
254
521
  handleEnterKey(editor) {
255
522
  pressEnterTwiceToExit(editor);
@@ -593,20 +860,8 @@ const LinkContent = React.forwardRef(
593
860
  const [linkText, setLinkText] = React.useState(elementText);
594
861
  const [linkUrl, setLinkUrl] = React.useState(link.url);
595
862
  const linkInputRef = React.useRef(null);
596
- const [showRemoveButton, setShowRemoveButton] = React.useState(false);
863
+ const isLastInsertedLink = editor.lastInsertedLinkPath ? !Path.equals(path, editor.lastInsertedLinkPath) : true;
597
864
  const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);
598
- const handleOpenChange = (isOpen) => {
599
- if (isOpen) {
600
- setPopoverOpen(isOpen);
601
- setShowRemoveButton(isOpen);
602
- } else {
603
- setPopoverOpen(isOpen);
604
- if (link.url === "") {
605
- removeLink(editor);
606
- }
607
- ReactEditor.focus(editor);
608
- }
609
- };
610
865
  const onLinkChange = (e) => {
611
866
  setIsSaveDisabled(false);
612
867
  setLinkUrl(e.target.value);
@@ -627,15 +882,33 @@ const LinkContent = React.forwardRef(
627
882
  editLink(editor, { url: linkUrl, text: linkText });
628
883
  setPopoverOpen(false);
629
884
  editor.lastInsertedLinkPath = null;
885
+ ReactEditor.focus(editor);
886
+ };
887
+ const handleClose = () => {
888
+ if (link.url === "") {
889
+ removeLink(editor);
890
+ }
891
+ setPopoverOpen(false);
892
+ ReactEditor.focus(editor);
630
893
  };
631
894
  React.useEffect(() => {
632
895
  if (popoverOpen)
633
896
  linkInputRef.current?.focus();
634
897
  }, [popoverOpen]);
635
898
  const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
636
- return /* @__PURE__ */ jsxs(Popover.Root, { onOpenChange: handleOpenChange, open: popoverOpen, children: [
637
- /* @__PURE__ */ jsx(Popover.Trigger, { children: /* @__PURE__ */ jsx(StyledBaseLink, { ...attributes, ref: forwardedRef, href: link.url, color: "primary600", children }) }),
638
- /* @__PURE__ */ jsx(Popover.Content, { children: /* @__PURE__ */ jsxs(Flex, { padding: 4, tag: "form", onSubmit: handleSave, direction: "column", gap: 4, children: [
899
+ return /* @__PURE__ */ jsxs(Popover.Root, { open: popoverOpen, children: [
900
+ /* @__PURE__ */ jsx(Popover.Trigger, { children: /* @__PURE__ */ jsx(
901
+ StyledBaseLink,
902
+ {
903
+ ...attributes,
904
+ ref: forwardedRef,
905
+ href: link.url,
906
+ onClick: () => setPopoverOpen(true),
907
+ color: "primary600",
908
+ children
909
+ }
910
+ ) }),
911
+ /* @__PURE__ */ jsx(Popover.Content, { onPointerDownOutside: handleClose, children: /* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap: 4, children: [
639
912
  /* @__PURE__ */ jsx(Field.Root, { width: "368px", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 1, alignItems: "stretch", children: [
640
913
  /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
641
914
  id: "components.Blocks.popover.text",
@@ -681,7 +954,7 @@ const LinkContent = React.forwardRef(
681
954
  {
682
955
  variant: "danger-light",
683
956
  onClick: () => removeLink(editor),
684
- $visible: showRemoveButton,
957
+ $visible: isLastInsertedLink,
685
958
  children: formatMessage({
686
959
  id: "components.Blocks.popover.remove",
687
960
  defaultMessage: "Remove"
@@ -689,11 +962,11 @@ const LinkContent = React.forwardRef(
689
962
  }
690
963
  ),
691
964
  /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
692
- /* @__PURE__ */ jsx(Button, { variant: "tertiary", onClick: () => handleOpenChange(false), children: formatMessage({
965
+ /* @__PURE__ */ jsx(Button, { variant: "tertiary", onClick: handleClose, children: formatMessage({
693
966
  id: "components.Blocks.popover.cancel",
694
967
  defaultMessage: "Cancel"
695
968
  }) }),
696
- /* @__PURE__ */ jsx(Button, { type: "submit", disabled: Boolean(inputNotDirty) || isSaveDisabled, children: formatMessage({
969
+ /* @__PURE__ */ jsx(Button, { disabled: Boolean(inputNotDirty) || isSaveDisabled, onClick: handleSave, children: formatMessage({
697
970
  id: "components.Blocks.popover.save",
698
971
  defaultMessage: "Save"
699
972
  }) })
@@ -1134,7 +1407,7 @@ const ToolbarButton = ({
1134
1407
  width: 7,
1135
1408
  height: 7,
1136
1409
  hasRadius: true,
1137
- children: /* @__PURE__ */ jsx(Icon, { width: "1.2rem", height: "1.2rem", fill: disabled ? "neutral300" : enabledColor })
1410
+ children: /* @__PURE__ */ jsx(Icon, { fill: disabled ? "neutral300" : enabledColor })
1138
1411
  }
1139
1412
  )
1140
1413
  }
@@ -1279,6 +1552,26 @@ const ListButton = ({ block, format }) => {
1279
1552
  }
1280
1553
  return false;
1281
1554
  };
1555
+ const isListDisabled = () => {
1556
+ if (disabled) {
1557
+ return true;
1558
+ }
1559
+ if (!editor.selection) {
1560
+ return false;
1561
+ }
1562
+ const anchorNodeEntry = Editor$1.above(editor, {
1563
+ at: editor.selection.anchor,
1564
+ match: (node) => !Editor$1.isEditor(node) && node.type !== "text"
1565
+ });
1566
+ const focusNodeEntry = Editor$1.above(editor, {
1567
+ at: editor.selection.focus,
1568
+ match: (node) => !Editor$1.isEditor(node) && node.type !== "text"
1569
+ });
1570
+ if (!anchorNodeEntry || !focusNodeEntry) {
1571
+ return false;
1572
+ }
1573
+ return anchorNodeEntry[0] !== focusNodeEntry[0];
1574
+ };
1282
1575
  const toggleList = (format2) => {
1283
1576
  let currentListEntry;
1284
1577
  if (editor.selection) {
@@ -1312,7 +1605,7 @@ const ListButton = ({ block, format }) => {
1312
1605
  name: format,
1313
1606
  label: block.label,
1314
1607
  isActive: isListActive(),
1315
- disabled,
1608
+ disabled: isListDisabled(),
1316
1609
  handleClick: () => toggleList(format)
1317
1610
  }
1318
1611
  );
@@ -1456,6 +1749,7 @@ const DragItem = styled(Flex)`
1456
1749
  }
1457
1750
  `;
1458
1751
  const DragIconButton = styled(IconButton)`
1752
+ user-select: none;
1459
1753
  display: flex;
1460
1754
  align-items: center;
1461
1755
  justify-content: center;
@@ -1479,7 +1773,7 @@ const DragIconButton = styled(IconButton)`
1479
1773
  }
1480
1774
  svg {
1481
1775
  height: auto;
1482
- width: ${({ theme }) => theme.spaces[3]};
1776
+ min-width: ${({ theme }) => theme.spaces[3]};
1483
1777
 
1484
1778
  path {
1485
1779
  fill: ${({ theme }) => theme.colors.neutral700};
@@ -1584,6 +1878,7 @@ const DragAndDropElement = ({
1584
1878
  DragIconButton,
1585
1879
  {
1586
1880
  tag: "div",
1881
+ contentEditable: false,
1587
1882
  role: "button",
1588
1883
  tabIndex: 0,
1589
1884
  withTooltip: false,
@@ -1596,7 +1891,7 @@ const DragAndDropElement = ({
1596
1891
  disabled,
1597
1892
  draggable: true,
1598
1893
  $dragHandleTopMargin: dragHandleTopMargin,
1599
- children: /* @__PURE__ */ jsx(Drag, { color: "neutral600" })
1894
+ children: /* @__PURE__ */ jsx(Drag, { color: "primary500" })
1600
1895
  }
1601
1896
  ),
1602
1897
  children
@@ -1920,7 +2215,7 @@ const EditorLayout$1 = ({
1920
2215
  /* @__PURE__ */ jsx(
1921
2216
  CollapseIconButton,
1922
2217
  {
1923
- "aria-label": formatMessage({
2218
+ label: formatMessage({
1924
2219
  id: getTranslation("components.Blocks.collapse"),
1925
2220
  defaultMessage: "Collapse"
1926
2221
  }),
@@ -2259,7 +2554,7 @@ const BlocksEditor = React.forwardRef(
2259
2554
  !isExpandedMode && /* @__PURE__ */ jsx(
2260
2555
  ExpandIconButton,
2261
2556
  {
2262
- "aria-label": formatMessage({
2557
+ label: formatMessage({
2263
2558
  id: getTranslation("components.Blocks.expand"),
2264
2559
  defaultMessage: "Expand"
2265
2560
  }),
@@ -2325,30 +2620,27 @@ const createDefaultForm = (contentType, components = {}) => {
2325
2620
  const Initializer = ({ disabled, name: name2, onClick }) => {
2326
2621
  const { formatMessage } = useIntl();
2327
2622
  const field = useField(name2);
2328
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2329
- /* @__PURE__ */ jsx(
2330
- Box,
2331
- {
2332
- tag: "button",
2333
- background: "neutral100",
2334
- borderColor: field.error ? "danger600" : "neutral200",
2335
- hasRadius: true,
2336
- disabled,
2337
- onClick,
2338
- paddingTop: 9,
2339
- paddingBottom: 9,
2340
- type: "button",
2341
- children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, children: [
2342
- /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(CircleIcon, {}) }),
2343
- /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
2344
- id: getTranslation("components.empty-repeatable"),
2345
- defaultMessage: "No entry yet. Click on the button below to add one."
2346
- }) }) })
2347
- ] })
2348
- }
2349
- ),
2350
- field.error && /* @__PURE__ */ jsx(Typography, { textColor: "danger600", variant: "pi", children: field.error })
2351
- ] });
2623
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
2624
+ Box,
2625
+ {
2626
+ tag: "button",
2627
+ background: "neutral100",
2628
+ borderColor: field.error ? "danger600" : "neutral200",
2629
+ hasRadius: true,
2630
+ disabled,
2631
+ onClick,
2632
+ paddingTop: 9,
2633
+ paddingBottom: 9,
2634
+ type: "button",
2635
+ children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, children: [
2636
+ /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(CircleIcon, {}) }),
2637
+ /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
2638
+ id: getTranslation("components.empty-repeatable"),
2639
+ defaultMessage: "No entry yet. Click on the button below to add one."
2640
+ }) }) })
2641
+ ] })
2642
+ }
2643
+ ) });
2352
2644
  };
2353
2645
  const CircleIcon = styled(PlusCircle)`
2354
2646
  width: 2.4rem;
@@ -2382,7 +2674,18 @@ const NonRepeatableComponent = ({
2382
2674
  children: /* @__PURE__ */ jsx(Flex, { direction: "column", alignItems: "stretch", gap: 6, children: layout.map((row, index) => {
2383
2675
  return /* @__PURE__ */ jsx(Grid$1.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2384
2676
  const completeFieldName = `${name2}.${field.name}`;
2385
- return /* @__PURE__ */ jsx(Grid$1.Item, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2677
+ return /* @__PURE__ */ jsx(
2678
+ Grid$1.Item,
2679
+ {
2680
+ col: size,
2681
+ s: 12,
2682
+ xs: 12,
2683
+ direction: "column",
2684
+ alignItems: "stretch",
2685
+ children: children({ ...field, name: completeFieldName })
2686
+ },
2687
+ completeFieldName
2688
+ );
2386
2689
  }) }, index);
2387
2690
  }) })
2388
2691
  }
@@ -2560,7 +2863,18 @@ const RepeatableComponent = ({
2560
2863
  children: layout.map((row, index2) => {
2561
2864
  return /* @__PURE__ */ jsx(Grid$1.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2562
2865
  const completeFieldName = `${nameWithIndex}.${field.name}`;
2563
- return /* @__PURE__ */ jsx(Grid$1.Item, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2866
+ return /* @__PURE__ */ jsx(
2867
+ Grid$1.Item,
2868
+ {
2869
+ col: size,
2870
+ s: 12,
2871
+ xs: 12,
2872
+ direction: "column",
2873
+ alignItems: "stretch",
2874
+ children: children({ ...field, name: completeFieldName })
2875
+ },
2876
+ completeFieldName
2877
+ );
2564
2878
  }) }, index2);
2565
2879
  })
2566
2880
  }
@@ -2655,7 +2969,7 @@ const Component = ({
2655
2969
  /* @__PURE__ */ jsx(
2656
2970
  IconButton,
2657
2971
  {
2658
- borderWidth: 0,
2972
+ variant: "ghost",
2659
2973
  onClick: onDeleteComponent,
2660
2974
  label: formatMessage({
2661
2975
  id: getTranslation("containers.Edit.delete"),
@@ -2668,7 +2982,7 @@ const Component = ({
2668
2982
  IconButton,
2669
2983
  {
2670
2984
  ref: composedAccordionRefs,
2671
- borderWidth: 0,
2985
+ variant: "ghost",
2672
2986
  onClick: (e) => e.stopPropagation(),
2673
2987
  "data-handler-id": handlerId,
2674
2988
  label: formatMessage({
@@ -2738,7 +3052,7 @@ const ComponentInput = ({
2738
3052
  id: getTranslation("components.reset-entry"),
2739
3053
  defaultMessage: "Reset Entry"
2740
3054
  }),
2741
- borderWidth: 0,
3055
+ variant: "ghost",
2742
3056
  onClick: () => {
2743
3057
  field.onChange(name2, null);
2744
3058
  },
@@ -2767,11 +3081,8 @@ const AddComponentButton = ({
2767
3081
  onClick,
2768
3082
  disabled: isDisabled,
2769
3083
  background: "neutral0",
2770
- paddingTop: 3,
2771
- paddingBottom: 3,
2772
- paddingLeft: 4,
2773
- paddingRight: 4,
2774
3084
  style: { cursor: isDisabled ? "not-allowed" : "pointer" },
3085
+ variant: "tertiary",
2775
3086
  children: /* @__PURE__ */ jsxs(Flex, { tag: "span", gap: 2, children: [
2776
3087
  /* @__PURE__ */ jsx(StyledAddIcon, { "aria-hidden": true, $isOpen: isOpen, $hasError: hasError && !isOpen }),
2777
3088
  /* @__PURE__ */ jsx(
@@ -2800,10 +3111,11 @@ const StyledAddIcon = styled(PlusCircle)`
2800
3111
  }
2801
3112
  `;
2802
3113
  const AddComponentTitle = styled(Typography)``;
2803
- const StyledButton = styled(BaseButton)`
3114
+ const StyledButton = styled(Button)`
2804
3115
  border-radius: 26px;
2805
3116
  border-color: ${({ theme }) => theme.colors.neutral150};
2806
3117
  box-shadow: ${({ theme }) => theme.shadows.filterShadow};
3118
+ height: 5rem;
2807
3119
 
2808
3120
  &:hover {
2809
3121
  ${AddComponentTitle} {
@@ -2815,7 +3127,7 @@ const StyledButton = styled(BaseButton)`
2815
3127
  fill: ${({ theme }) => theme.colors.primary600};
2816
3128
  }
2817
3129
  > path {
2818
- fill: ${({ theme }) => theme.colors.neutral100};
3130
+ fill: ${({ theme }) => theme.colors.primary600};
2819
3131
  }
2820
3132
  }
2821
3133
  }
@@ -2946,18 +3258,6 @@ const NotAllowedInput = ({ hint, label, required, name: name2 }) => {
2946
3258
  /* @__PURE__ */ jsx(Field.Hint, {})
2947
3259
  ] });
2948
3260
  };
2949
- function useDebounce(value, delay) {
2950
- const [debouncedValue, setDebouncedValue] = useState(value);
2951
- useEffect(() => {
2952
- const handler = setTimeout(() => {
2953
- setDebouncedValue(value);
2954
- }, delay);
2955
- return () => {
2956
- clearTimeout(handler);
2957
- };
2958
- }, [value, delay]);
2959
- return debouncedValue;
2960
- }
2961
3261
  const uidApi = contentManagerApi.injectEndpoints({
2962
3262
  endpoints: (builder) => ({
2963
3263
  getDefaultUID: builder.query({
@@ -2992,7 +3292,10 @@ const uidApi = contentManagerApi.injectEndpoints({
2992
3292
  config: {
2993
3293
  params
2994
3294
  }
2995
- })
3295
+ }),
3296
+ providesTags: (_res, _error, params) => [
3297
+ { type: "UidAvailability", id: params.contentTypeUID }
3298
+ ]
2996
3299
  })
2997
3300
  })
2998
3301
  });
@@ -3004,8 +3307,10 @@ const UIDInput = React.forwardRef(
3004
3307
  const allFormValues = useForm("InputUID", (form) => form.values);
3005
3308
  const [availability, setAvailability] = React.useState();
3006
3309
  const [showRegenerate, setShowRegenerate] = React.useState(false);
3310
+ const isCloning = useMatch(CLONE_PATH) !== null;
3007
3311
  const field = useField(name2);
3008
3312
  const debouncedValue = useDebounce(field.value, 300);
3313
+ const hasChanged = debouncedValue !== field.initialValue;
3009
3314
  const { toggleNotification } = useNotification();
3010
3315
  const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
3011
3316
  const { formatMessage } = useIntl();
@@ -3081,8 +3386,9 @@ const UIDInput = React.forwardRef(
3081
3386
  params
3082
3387
  },
3083
3388
  {
3389
+ // Don't check availability if the value is empty or wasn't changed
3084
3390
  skip: !Boolean(
3085
- debouncedValue !== field.initialValue && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3391
+ (hasChanged || isCloning) && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3086
3392
  )
3087
3393
  }
3088
3394
  );
@@ -3111,6 +3417,7 @@ const UIDInput = React.forwardRef(
3111
3417
  const isLoading = isGeneratingDefaultUID || isGeneratingUID || isCheckingAvailability;
3112
3418
  const fieldRef = useFocusInputField(name2);
3113
3419
  const composedRefs = useComposedRefs(ref, fieldRef);
3420
+ const shouldShowAvailability = (hasChanged || isCloning) && debouncedValue != null && availability && !showRegenerate;
3114
3421
  return /* @__PURE__ */ jsxs(Field.Root, { hint, name: name2, error: field.error, required, children: [
3115
3422
  /* @__PURE__ */ jsx(Field.Label, { action: labelAction, children: label }),
3116
3423
  /* @__PURE__ */ jsx(
@@ -3119,7 +3426,7 @@ const UIDInput = React.forwardRef(
3119
3426
  ref: composedRefs,
3120
3427
  disabled: props.disabled,
3121
3428
  endAction: /* @__PURE__ */ jsxs(Flex, { position: "relative", gap: 1, children: [
3122
- availability && !showRegenerate && /* @__PURE__ */ jsxs(
3429
+ shouldShowAvailability && /* @__PURE__ */ jsxs(
3123
3430
  TextValidation,
3124
3431
  {
3125
3432
  alignItems: "center",
@@ -3953,7 +4260,7 @@ const EditorLayout = ({
3953
4260
  justifyContent: "flex-end",
3954
4261
  shrink: 0,
3955
4262
  width: "100%",
3956
- children: /* @__PURE__ */ jsxs(ExpandButton$1, { onClick: onCollapse, children: [
4263
+ children: /* @__PURE__ */ jsxs(ExpandButton$1, { onClick: onCollapse, variant: "tertiary", size: "M", children: [
3957
4264
  /* @__PURE__ */ jsx(Typography, { children: formatMessage({
3958
4265
  id: "components.Wysiwyg.collapse",
3959
4266
  defaultMessage: "Collapse"
@@ -3971,12 +4278,14 @@ const EditorLayout = ({
3971
4278
  ) }) });
3972
4279
  }
3973
4280
  return /* @__PURE__ */ jsx(
3974
- Box,
4281
+ Flex,
3975
4282
  {
3976
4283
  borderColor: error ? "danger600" : "neutral200",
3977
4284
  borderStyle: "solid",
3978
4285
  borderWidth: "1px",
3979
4286
  hasRadius: true,
4287
+ direction: "column",
4288
+ alignItems: "stretch",
3980
4289
  children
3981
4290
  }
3982
4291
  );
@@ -3987,11 +4296,19 @@ const ExpandWrapper = styled(Flex)`
3987
4296
  const BoxWithBorder = styled(Box)`
3988
4297
  border-right: 1px solid ${({ theme }) => theme.colors.neutral200};
3989
4298
  `;
3990
- const ExpandButton$1 = styled(BaseButton)`
4299
+ const ExpandButton$1 = styled(Button)`
3991
4300
  background-color: transparent;
3992
4301
  border: none;
3993
4302
  align-items: center;
3994
4303
 
4304
+ & > span {
4305
+ display: flex;
4306
+ justify-content: space-between;
4307
+ align-items: center;
4308
+ width: 100%;
4309
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4310
+ }
4311
+
3995
4312
  svg {
3996
4313
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
3997
4314
 
@@ -4258,40 +4575,28 @@ const quoteAndCodeHandler = (editor, markdownType) => {
4258
4575
  insertWithoutTextToEdit(editor, markdownType, line, contentLength);
4259
4576
  }
4260
4577
  };
4261
- const CustomIconButton = styled(IconButton)`
4262
- padding: ${({ theme }) => theme.spaces[2]};
4263
-
4264
- svg {
4265
- width: 1.8rem;
4266
- height: 1.8rem;
4267
- }
4268
- `;
4269
- const CustomLinkIconButton = styled(CustomIconButton)`
4270
- svg {
4271
- width: 0.8rem;
4272
- height: 0.8rem;
4273
- }
4274
- `;
4275
4578
  const MainButtons = styled(IconButtonGroup)`
4276
4579
  margin-left: ${({ theme }) => theme.spaces[4]};
4277
4580
  `;
4278
4581
  const MoreButton = styled(IconButton)`
4279
4582
  margin: ${({ theme }) => `0 ${theme.spaces[2]}`};
4280
- padding: ${({ theme }) => theme.spaces[2]};
4281
-
4282
- svg {
4283
- width: 1.8rem;
4284
- height: 1.8rem;
4285
- }
4286
4583
  `;
4287
4584
  const IconButtonGroupMargin = styled(IconButtonGroup)`
4288
4585
  margin-right: ${({ theme }) => `${theme.spaces[2]}`};
4289
4586
  `;
4290
- const ExpandButton = styled(BaseButton)`
4587
+ const ExpandButton = styled(Button)`
4291
4588
  background-color: transparent;
4292
4589
  border: none;
4293
4590
  align-items: center;
4294
4591
 
4592
+ & > span {
4593
+ display: flex;
4594
+ justify-content: space-between;
4595
+ align-items: center;
4596
+ width: 100%;
4597
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4598
+ }
4599
+
4295
4600
  svg {
4296
4601
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
4297
4602
  path {
@@ -4303,8 +4608,8 @@ const ExpandButton = styled(BaseButton)`
4303
4608
  `;
4304
4609
  const WysiwygFooter = ({ onToggleExpand }) => {
4305
4610
  const { formatMessage } = useIntl();
4306
- return /* @__PURE__ */ jsx(Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsx(Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, children: [
4307
- /* @__PURE__ */ jsx(Typography, { children: formatMessage({
4611
+ return /* @__PURE__ */ jsx(Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsx(Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, variant: "tertiary", size: "M", children: [
4612
+ /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: formatMessage({
4308
4613
  id: "components.WysiwygBottomControls.fullscreen",
4309
4614
  defaultMessage: "Expand"
4310
4615
  }) }),
@@ -4340,18 +4645,27 @@ const WysiwygNav = ({
4340
4645
  borderRadius: `0.4rem 0.4rem 0 0`,
4341
4646
  children: [
4342
4647
  /* @__PURE__ */ jsxs(Flex, { children: [
4343
- /* @__PURE__ */ jsx(Field.Root, { children: /* @__PURE__ */ jsxs(SingleSelect, { disabled: true, placeholder: selectPlaceholder, "aria-label": selectPlaceholder, children: [
4344
- /* @__PURE__ */ jsx(SingleSelectOption, { value: "h1", children: "h1" }),
4345
- /* @__PURE__ */ jsx(SingleSelectOption, { value: "h2", children: "h2" }),
4346
- /* @__PURE__ */ jsx(SingleSelectOption, { value: "h3", children: "h3" }),
4347
- /* @__PURE__ */ jsx(SingleSelectOption, { value: "h4", children: "h4" }),
4348
- /* @__PURE__ */ jsx(SingleSelectOption, { value: "h5", children: "h5" }),
4349
- /* @__PURE__ */ jsx(SingleSelectOption, { value: "h6", children: "h6" })
4350
- ] }) }),
4648
+ /* @__PURE__ */ jsx(Field.Root, { children: /* @__PURE__ */ jsxs(
4649
+ SingleSelect,
4650
+ {
4651
+ disabled: true,
4652
+ placeholder: selectPlaceholder,
4653
+ "aria-label": selectPlaceholder,
4654
+ size: "S",
4655
+ children: [
4656
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "h1", children: "h1" }),
4657
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "h2", children: "h2" }),
4658
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "h3", children: "h3" }),
4659
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "h4", children: "h4" }),
4660
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "h5", children: "h5" }),
4661
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "h6", children: "h6" })
4662
+ ]
4663
+ }
4664
+ ) }),
4351
4665
  /* @__PURE__ */ jsxs(MainButtons, { children: [
4352
- /* @__PURE__ */ jsx(CustomIconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsx(Bold, {}) }),
4353
- /* @__PURE__ */ jsx(CustomIconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsx(Italic, {}) }),
4354
- /* @__PURE__ */ jsx(CustomIconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsx(Underline, {}) })
4666
+ /* @__PURE__ */ jsx(IconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsx(Bold, {}) }),
4667
+ /* @__PURE__ */ jsx(IconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsx(Italic, {}) }),
4668
+ /* @__PURE__ */ jsx(IconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsx(Underline, {}) })
4355
4669
  ] }),
4356
4670
  /* @__PURE__ */ jsx(MoreButton, { disabled: true, label: "More", children: /* @__PURE__ */ jsx(More, {}) })
4357
4671
  ] }),
@@ -4378,6 +4692,7 @@ const WysiwygNav = ({
4378
4692
  placeholder: selectPlaceholder,
4379
4693
  "aria-label": selectPlaceholder,
4380
4694
  onChange: (value) => onActionClick(value, editorRef),
4695
+ size: "S",
4381
4696
  children: [
4382
4697
  /* @__PURE__ */ jsx(SingleSelectOption, { value: "h1", children: "h1" }),
4383
4698
  /* @__PURE__ */ jsx(SingleSelectOption, { value: "h2", children: "h2" }),
@@ -4389,17 +4704,9 @@ const WysiwygNav = ({
4389
4704
  }
4390
4705
  ) }),
4391
4706
  /* @__PURE__ */ jsxs(MainButtons, { children: [
4707
+ /* @__PURE__ */ jsx(IconButton, { onClick: () => onActionClick("Bold", editorRef), label: "Bold", name: "Bold", children: /* @__PURE__ */ jsx(Bold, {}) }),
4392
4708
  /* @__PURE__ */ jsx(
4393
- CustomIconButton,
4394
- {
4395
- onClick: () => onActionClick("Bold", editorRef),
4396
- label: "Bold",
4397
- name: "Bold",
4398
- children: /* @__PURE__ */ jsx(Bold, {})
4399
- }
4400
- ),
4401
- /* @__PURE__ */ jsx(
4402
- CustomIconButton,
4709
+ IconButton,
4403
4710
  {
4404
4711
  onClick: () => onActionClick("Italic", editorRef),
4405
4712
  label: "Italic",
@@ -4408,7 +4715,7 @@ const WysiwygNav = ({
4408
4715
  }
4409
4716
  ),
4410
4717
  /* @__PURE__ */ jsx(
4411
- CustomIconButton,
4718
+ IconButton,
4412
4719
  {
4413
4720
  onClick: () => onActionClick("Underline", editorRef),
4414
4721
  label: "Underline",
@@ -4422,7 +4729,7 @@ const WysiwygNav = ({
4422
4729
  /* @__PURE__ */ jsx(Popover.Content, { sideOffset: 12, children: /* @__PURE__ */ jsxs(Flex, { padding: 2, children: [
4423
4730
  /* @__PURE__ */ jsxs(IconButtonGroupMargin, { children: [
4424
4731
  /* @__PURE__ */ jsx(
4425
- CustomIconButton,
4732
+ IconButton,
4426
4733
  {
4427
4734
  onClick: () => onActionClick("Strikethrough", editorRef, handleTogglePopover),
4428
4735
  label: "Strikethrough",
@@ -4431,7 +4738,7 @@ const WysiwygNav = ({
4431
4738
  }
4432
4739
  ),
4433
4740
  /* @__PURE__ */ jsx(
4434
- CustomIconButton,
4741
+ IconButton,
4435
4742
  {
4436
4743
  onClick: () => onActionClick("BulletList", editorRef, handleTogglePopover),
4437
4744
  label: "BulletList",
@@ -4440,7 +4747,7 @@ const WysiwygNav = ({
4440
4747
  }
4441
4748
  ),
4442
4749
  /* @__PURE__ */ jsx(
4443
- CustomIconButton,
4750
+ IconButton,
4444
4751
  {
4445
4752
  onClick: () => onActionClick("NumberList", editorRef, handleTogglePopover),
4446
4753
  label: "NumberList",
@@ -4451,7 +4758,7 @@ const WysiwygNav = ({
4451
4758
  ] }),
4452
4759
  /* @__PURE__ */ jsxs(IconButtonGroup, { children: [
4453
4760
  /* @__PURE__ */ jsx(
4454
- CustomIconButton,
4761
+ IconButton,
4455
4762
  {
4456
4763
  onClick: () => onActionClick("Code", editorRef, handleTogglePopover),
4457
4764
  label: "Code",
@@ -4460,7 +4767,7 @@ const WysiwygNav = ({
4460
4767
  }
4461
4768
  ),
4462
4769
  /* @__PURE__ */ jsx(
4463
- CustomIconButton,
4770
+ IconButton,
4464
4771
  {
4465
4772
  onClick: () => {
4466
4773
  handleTogglePopover();
@@ -4472,7 +4779,7 @@ const WysiwygNav = ({
4472
4779
  }
4473
4780
  ),
4474
4781
  /* @__PURE__ */ jsx(
4475
- CustomLinkIconButton,
4782
+ IconButton,
4476
4783
  {
4477
4784
  onClick: () => onActionClick("Link", editorRef, handleTogglePopover),
4478
4785
  label: "Link",
@@ -4481,7 +4788,7 @@ const WysiwygNav = ({
4481
4788
  }
4482
4789
  ),
4483
4790
  /* @__PURE__ */ jsx(
4484
- CustomIconButton,
4791
+ IconButton,
4485
4792
  {
4486
4793
  onClick: () => onActionClick("Quote", editorRef, handleTogglePopover),
4487
4794
  label: "Quote",
@@ -4717,7 +5024,9 @@ const useFieldHint = (hint = void 0, attribute) => {
4717
5024
  if (!maximum && !minimum) {
4718
5025
  return hint;
4719
5026
  }
4720
- const units = !["biginteger", "integer", "number"].includes(attribute.type) ? formatMessage(
5027
+ const units = !["biginteger", "integer", "number", "dynamiczone", "component"].includes(
5028
+ attribute.type
5029
+ ) ? formatMessage(
4721
5030
  {
4722
5031
  id: "content-manager.form.Input.hint.character.unit",
4723
5032
  defaultMessage: "{maxValue, plural, one { character} other { characters}}"
@@ -4811,7 +5120,7 @@ const DynamicComponent = ({
4811
5120
  /* @__PURE__ */ jsx(
4812
5121
  IconButton,
4813
5122
  {
4814
- borderWidth: 0,
5123
+ variant: "ghost",
4815
5124
  label: formatMessage(
4816
5125
  {
4817
5126
  id: getTranslation("components.DynamicZone.delete-label"),
@@ -4826,7 +5135,7 @@ const DynamicComponent = ({
4826
5135
  /* @__PURE__ */ jsx(
4827
5136
  IconButton,
4828
5137
  {
4829
- borderWidth: 0,
5138
+ variant: "ghost",
4830
5139
  onClick: (e) => e.stopPropagation(),
4831
5140
  "data-handler-id": handlerId,
4832
5141
  ref: dragRef,
@@ -4887,7 +5196,18 @@ const DynamicComponent = ({
4887
5196
  ] }),
4888
5197
  /* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(AccordionContentRadius, { background: "neutral0", children: /* @__PURE__ */ jsx(Box, { paddingLeft: 6, paddingRight: 6, paddingTop: 6, paddingBottom: 6, children: components[componentUid]?.layout?.map((row, rowInd) => /* @__PURE__ */ jsx(Grid$1.Root, { gap: 4, children: row.map(({ size, ...field }) => {
4889
5198
  const fieldName = `${name2}.${index}.${field.name}`;
4890
- return /* @__PURE__ */ jsx(Grid$1.Item, { col: size, s: 12, xs: 12, children: /* @__PURE__ */ jsx(MemoizedInputRenderer, { ...field, name: fieldName }) }, fieldName);
5199
+ return /* @__PURE__ */ jsx(
5200
+ Grid$1.Item,
5201
+ {
5202
+ col: size,
5203
+ s: 12,
5204
+ xs: 12,
5205
+ direction: "column",
5206
+ alignItems: "stretch",
5207
+ children: /* @__PURE__ */ jsx(MemoizedInputRenderer, { ...field, name: fieldName })
5208
+ },
5209
+ fieldName
5210
+ );
4891
5211
  }) }, rowInd)) }) }) })
4892
5212
  ] }) }) })
4893
5213
  ] });
@@ -5080,7 +5400,7 @@ const DynamicZone = ({
5080
5400
  const handleRemoveComponent = (name22, currentIndex) => () => {
5081
5401
  removeFieldRow(name22, currentIndex);
5082
5402
  };
5083
- const hasError = error !== void 0 || dynamicDisplayedComponentsLength < min || dynamicDisplayedComponentsLength > max;
5403
+ const hasError = error !== void 0;
5084
5404
  const renderButtonLabel = () => {
5085
5405
  if (addComponentIsOpen) {
5086
5406
  return formatMessage({ id: "app.utils.close-label", defaultMessage: "Close" });
@@ -5196,4 +5516,4 @@ export {
5196
5516
  transformDocument as t,
5197
5517
  useLazyComponents as u
5198
5518
  };
5199
- //# sourceMappingURL=Field-BZBYmvaf.mjs.map
5519
+ //# sourceMappingURL=Field-CnCKhI1R.mjs.map