@wordpress/edit-site 5.1.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE.md +1 -1
  3. package/build/components/add-new-template/add-custom-generic-template-modal.js +8 -10
  4. package/build/components/add-new-template/add-custom-generic-template-modal.js.map +1 -1
  5. package/build/components/add-new-template/add-custom-template-modal.js +0 -1
  6. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  7. package/build/components/add-new-template/new-template-part.js +5 -9
  8. package/build/components/add-new-template/new-template-part.js.map +1 -1
  9. package/build/components/app/index.js +2 -7
  10. package/build/components/app/index.js.map +1 -1
  11. package/build/components/block-editor/editor-canvas.js +0 -1
  12. package/build/components/block-editor/editor-canvas.js.map +1 -1
  13. package/build/components/block-editor/index.js +25 -59
  14. package/build/components/block-editor/index.js.map +1 -1
  15. package/build/components/block-editor/inserter-media-categories.js +237 -0
  16. package/build/components/block-editor/inserter-media-categories.js.map +1 -0
  17. package/build/components/block-editor/resize-handle.js +2 -1
  18. package/build/components/block-editor/resize-handle.js.map +1 -1
  19. package/build/components/canvas-spinner/index.js +20 -0
  20. package/build/components/canvas-spinner/index.js.map +1 -0
  21. package/build/components/create-template-part-modal/index.js +4 -2
  22. package/build/components/create-template-part-modal/index.js.map +1 -1
  23. package/build/components/editor/index.js +4 -2
  24. package/build/components/editor/index.js.map +1 -1
  25. package/build/components/error-boundary/index.js +2 -12
  26. package/build/components/error-boundary/index.js.map +1 -1
  27. package/build/components/error-boundary/warning.js +5 -28
  28. package/build/components/error-boundary/warning.js.map +1 -1
  29. package/build/components/global-styles/block-preview-panel.js +10 -4
  30. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  31. package/build/components/global-styles/border-panel.js +18 -9
  32. package/build/components/global-styles/border-panel.js.map +1 -1
  33. package/build/components/global-styles/color-palette-panel.js +13 -7
  34. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  35. package/build/components/global-styles/context-menu.js +47 -4
  36. package/build/components/global-styles/context-menu.js.map +1 -1
  37. package/build/components/global-styles/custom-css.js +65 -14
  38. package/build/components/global-styles/custom-css.js.map +1 -1
  39. package/build/components/global-styles/dimensions-panel.js +50 -27
  40. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  41. package/build/components/global-styles/global-styles-provider.js +13 -3
  42. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  43. package/build/components/global-styles/gradients-palette-panel.js +17 -11
  44. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  45. package/build/components/global-styles/hooks.js +21 -142
  46. package/build/components/global-styles/hooks.js.map +1 -1
  47. package/build/components/global-styles/index.js +0 -28
  48. package/build/components/global-styles/index.js.map +1 -1
  49. package/build/components/global-styles/palette.js +11 -4
  50. package/build/components/global-styles/palette.js.map +1 -1
  51. package/build/components/global-styles/preview.js +18 -15
  52. package/build/components/global-styles/preview.js.map +1 -1
  53. package/build/components/global-styles/screen-background-color.js +28 -13
  54. package/build/components/global-styles/screen-background-color.js.map +1 -1
  55. package/build/components/global-styles/screen-block-list.js +4 -1
  56. package/build/components/global-styles/screen-block-list.js.map +1 -1
  57. package/build/components/global-styles/screen-border.js +16 -4
  58. package/build/components/global-styles/screen-border.js.map +1 -1
  59. package/build/components/global-styles/screen-button-color.js +17 -9
  60. package/build/components/global-styles/screen-button-color.js.map +1 -1
  61. package/build/components/global-styles/screen-colors.js +59 -26
  62. package/build/components/global-styles/screen-colors.js.map +1 -1
  63. package/build/components/global-styles/screen-css.js +20 -8
  64. package/build/components/global-styles/screen-css.js.map +1 -1
  65. package/build/components/global-styles/screen-heading-color.js +24 -16
  66. package/build/components/global-styles/screen-heading-color.js.map +1 -1
  67. package/build/components/global-styles/screen-layout.js +9 -3
  68. package/build/components/global-styles/screen-layout.js.map +1 -1
  69. package/build/components/global-styles/screen-link-color.js +19 -11
  70. package/build/components/global-styles/screen-link-color.js.map +1 -1
  71. package/build/components/global-styles/screen-root.js +25 -9
  72. package/build/components/global-styles/screen-root.js.map +1 -1
  73. package/build/components/global-styles/screen-style-variations.js +8 -4
  74. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  75. package/build/components/global-styles/screen-text-color.js +15 -7
  76. package/build/components/global-styles/screen-text-color.js.map +1 -1
  77. package/build/components/global-styles/screen-typography.js +23 -11
  78. package/build/components/global-styles/screen-typography.js.map +1 -1
  79. package/build/components/global-styles/screen-variations.js +71 -0
  80. package/build/components/global-styles/screen-variations.js.map +1 -0
  81. package/build/components/global-styles/shadow-panel.js +196 -0
  82. package/build/components/global-styles/shadow-panel.js.map +1 -0
  83. package/build/components/global-styles/typography-panel.js +37 -22
  84. package/build/components/global-styles/typography-panel.js.map +1 -1
  85. package/build/components/global-styles/typography-preview.js +19 -9
  86. package/build/components/global-styles/typography-preview.js.map +1 -1
  87. package/build/components/global-styles/ui.js +139 -21
  88. package/build/components/global-styles/ui.js.map +1 -1
  89. package/build/components/global-styles/utils.js +8 -290
  90. package/build/components/global-styles/utils.js.map +1 -1
  91. package/build/components/global-styles/variations-panel.js +85 -0
  92. package/build/components/global-styles/variations-panel.js.map +1 -0
  93. package/build/components/global-styles-renderer/index.js +7 -5
  94. package/build/components/global-styles-renderer/index.js.map +1 -1
  95. package/build/components/header-edit-mode/document-actions/index.js +2 -2
  96. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  97. package/build/components/keyboard-shortcut-help-modal/index.js +0 -1
  98. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  99. package/build/components/layout/index.js +86 -15
  100. package/build/components/layout/index.js.map +1 -1
  101. package/build/components/list/actions/rename-menu-item.js +8 -11
  102. package/build/components/list/actions/rename-menu-item.js.map +1 -1
  103. package/build/components/{sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js → navigation-inspector/index.js} +3 -2
  104. package/build/components/navigation-inspector/index.js.map +1 -0
  105. package/build/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/navigation-menu.js +13 -15
  106. package/build/components/navigation-inspector/navigation-menu.js.map +1 -0
  107. package/build/components/sidebar/index.js +3 -1
  108. package/build/components/sidebar/index.js.map +1 -1
  109. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +3 -18
  110. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  111. package/build/components/sidebar-edit-mode/index.js +1 -14
  112. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  113. package/build/components/sidebar-navigation-screen/index.js +3 -2
  114. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  115. package/build/components/sidebar-navigation-screen-main/index.js +23 -1
  116. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  117. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +35 -0
  118. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -0
  119. package/build/components/sidebar-navigation-screen-templates/index.js +3 -8
  120. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  121. package/build/components/site-hub/index.js +11 -11
  122. package/build/components/site-hub/index.js.map +1 -1
  123. package/build/components/site-icon/index.js +1 -1
  124. package/build/components/site-icon/index.js.map +1 -1
  125. package/build/components/style-book/index.js +7 -4
  126. package/build/components/style-book/index.js.map +1 -1
  127. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +54 -0
  128. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -0
  129. package/build/components/template-details/edit-template-title.js +1 -0
  130. package/build/components/template-details/edit-template-title.js.map +1 -1
  131. package/build/components/template-details/template-part-area-selector.js +1 -0
  132. package/build/components/template-details/template-part-area-selector.js.map +1 -1
  133. package/build/components/template-part-converter/convert-to-template-part.js +5 -9
  134. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  135. package/build/experiments.js +19 -0
  136. package/build/experiments.js.map +1 -0
  137. package/build/hooks/push-changes-to-global-styles/index.js +68 -9
  138. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  139. package/build/index.js +53 -60
  140. package/build/index.js.map +1 -1
  141. package/build/store/reducer.js +1 -1
  142. package/build/store/reducer.js.map +1 -1
  143. package/build/store/selectors.js +7 -27
  144. package/build/store/selectors.js.map +1 -1
  145. package/build/store/utils.js +77 -0
  146. package/build/store/utils.js.map +1 -0
  147. package/build/utils/template-part-create.js +71 -0
  148. package/build/utils/template-part-create.js.map +1 -0
  149. package/build-module/components/add-new-template/add-custom-generic-template-modal.js +9 -11
  150. package/build-module/components/add-new-template/add-custom-generic-template-modal.js.map +1 -1
  151. package/build-module/components/add-new-template/add-custom-template-modal.js +0 -1
  152. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  153. package/build-module/components/add-new-template/new-template-part.js +5 -9
  154. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  155. package/build-module/components/app/index.js +2 -7
  156. package/build-module/components/app/index.js.map +1 -1
  157. package/build-module/components/block-editor/editor-canvas.js +0 -1
  158. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  159. package/build-module/components/block-editor/index.js +27 -57
  160. package/build-module/components/block-editor/index.js.map +1 -1
  161. package/build-module/components/block-editor/inserter-media-categories.js +225 -0
  162. package/build-module/components/block-editor/inserter-media-categories.js.map +1 -0
  163. package/build-module/components/block-editor/resize-handle.js +2 -1
  164. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  165. package/build-module/components/canvas-spinner/index.js +12 -0
  166. package/build-module/components/canvas-spinner/index.js.map +1 -0
  167. package/build-module/components/create-template-part-modal/index.js +5 -3
  168. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  169. package/build-module/components/editor/index.js +3 -2
  170. package/build-module/components/editor/index.js.map +1 -1
  171. package/build-module/components/error-boundary/index.js +2 -12
  172. package/build-module/components/error-boundary/index.js.map +1 -1
  173. package/build-module/components/error-boundary/warning.js +5 -28
  174. package/build-module/components/error-boundary/warning.js.map +1 -1
  175. package/build-module/components/global-styles/block-preview-panel.js +10 -4
  176. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  177. package/build-module/components/global-styles/border-panel.js +18 -11
  178. package/build-module/components/global-styles/border-panel.js.map +1 -1
  179. package/build-module/components/global-styles/color-palette-panel.js +11 -7
  180. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  181. package/build-module/components/global-styles/context-menu.js +46 -8
  182. package/build-module/components/global-styles/context-menu.js.map +1 -1
  183. package/build-module/components/global-styles/custom-css.js +61 -15
  184. package/build-module/components/global-styles/custom-css.js.map +1 -1
  185. package/build-module/components/global-styles/dimensions-panel.js +50 -28
  186. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  187. package/build-module/components/global-styles/global-styles-provider.js +7 -2
  188. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  189. package/build-module/components/global-styles/gradients-palette-panel.js +15 -11
  190. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  191. package/build-module/components/global-styles/hooks.js +23 -134
  192. package/build-module/components/global-styles/hooks.js.map +1 -1
  193. package/build-module/components/global-styles/index.js +0 -2
  194. package/build-module/components/global-styles/index.js.map +1 -1
  195. package/build-module/components/global-styles/palette.js +10 -5
  196. package/build-module/components/global-styles/palette.js.map +1 -1
  197. package/build-module/components/global-styles/preview.js +18 -14
  198. package/build-module/components/global-styles/preview.js.map +1 -1
  199. package/build-module/components/global-styles/screen-background-color.js +27 -15
  200. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  201. package/build-module/components/global-styles/screen-block-list.js +3 -1
  202. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  203. package/build-module/components/global-styles/screen-border.js +14 -4
  204. package/build-module/components/global-styles/screen-border.js.map +1 -1
  205. package/build-module/components/global-styles/screen-button-color.js +17 -11
  206. package/build-module/components/global-styles/screen-button-color.js.map +1 -1
  207. package/build-module/components/global-styles/screen-colors.js +56 -27
  208. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  209. package/build-module/components/global-styles/screen-css.js +21 -9
  210. package/build-module/components/global-styles/screen-css.js.map +1 -1
  211. package/build-module/components/global-styles/screen-heading-color.js +24 -18
  212. package/build-module/components/global-styles/screen-heading-color.js.map +1 -1
  213. package/build-module/components/global-styles/screen-layout.js +8 -3
  214. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  215. package/build-module/components/global-styles/screen-link-color.js +19 -13
  216. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  217. package/build-module/components/global-styles/screen-root.js +23 -9
  218. package/build-module/components/global-styles/screen-root.js.map +1 -1
  219. package/build-module/components/global-styles/screen-style-variations.js +5 -2
  220. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  221. package/build-module/components/global-styles/screen-text-color.js +15 -9
  222. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  223. package/build-module/components/global-styles/screen-typography.js +19 -10
  224. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  225. package/build-module/components/global-styles/screen-variations.js +54 -0
  226. package/build-module/components/global-styles/screen-variations.js.map +1 -0
  227. package/build-module/components/global-styles/shadow-panel.js +177 -0
  228. package/build-module/components/global-styles/shadow-panel.js.map +1 -0
  229. package/build-module/components/global-styles/typography-panel.js +37 -24
  230. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  231. package/build-module/components/global-styles/typography-preview.js +17 -9
  232. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  233. package/build-module/components/global-styles/ui.js +132 -22
  234. package/build-module/components/global-styles/ui.js.map +1 -1
  235. package/build-module/components/global-styles/utils.js +7 -277
  236. package/build-module/components/global-styles/utils.js.map +1 -1
  237. package/build-module/components/global-styles/variations-panel.js +68 -0
  238. package/build-module/components/global-styles/variations-panel.js.map +1 -0
  239. package/build-module/components/global-styles-renderer/index.js +5 -5
  240. package/build-module/components/global-styles-renderer/index.js.map +1 -1
  241. package/build-module/components/header-edit-mode/document-actions/index.js +2 -2
  242. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  243. package/build-module/components/keyboard-shortcut-help-modal/index.js +0 -1
  244. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  245. package/build-module/components/layout/index.js +86 -17
  246. package/build-module/components/layout/index.js.map +1 -1
  247. package/build-module/components/list/actions/rename-menu-item.js +9 -12
  248. package/build-module/components/list/actions/rename-menu-item.js.map +1 -1
  249. package/build-module/components/{sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js → navigation-inspector/index.js} +3 -2
  250. package/build-module/components/navigation-inspector/index.js.map +1 -0
  251. package/build-module/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/navigation-menu.js +13 -16
  252. package/build-module/components/navigation-inspector/navigation-menu.js.map +1 -0
  253. package/build-module/components/sidebar/index.js +2 -1
  254. package/build-module/components/sidebar/index.js.map +1 -1
  255. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +6 -21
  256. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  257. package/build-module/components/sidebar-edit-mode/index.js +1 -13
  258. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  259. package/build-module/components/sidebar-navigation-screen/index.js +3 -2
  260. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  261. package/build-module/components/sidebar-navigation-screen-main/index.js +22 -2
  262. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  263. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +23 -0
  264. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -0
  265. package/build-module/components/sidebar-navigation-screen-templates/index.js +4 -9
  266. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  267. package/build-module/components/site-hub/index.js +12 -11
  268. package/build-module/components/site-hub/index.js.map +1 -1
  269. package/build-module/components/site-icon/index.js +1 -1
  270. package/build-module/components/site-icon/index.js.map +1 -1
  271. package/build-module/components/style-book/index.js +8 -5
  272. package/build-module/components/style-book/index.js.map +1 -1
  273. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +43 -0
  274. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -0
  275. package/build-module/components/template-details/edit-template-title.js +1 -0
  276. package/build-module/components/template-details/edit-template-title.js.map +1 -1
  277. package/build-module/components/template-details/template-part-area-selector.js +1 -0
  278. package/build-module/components/template-details/template-part-area-selector.js.map +1 -1
  279. package/build-module/components/template-part-converter/convert-to-template-part.js +5 -9
  280. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  281. package/build-module/experiments.js +9 -0
  282. package/build-module/experiments.js.map +1 -0
  283. package/build-module/hooks/push-changes-to-global-styles/index.js +65 -6
  284. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  285. package/build-module/index.js +52 -60
  286. package/build-module/index.js.map +1 -1
  287. package/build-module/store/reducer.js +1 -1
  288. package/build-module/store/reducer.js.map +1 -1
  289. package/build-module/store/selectors.js +6 -26
  290. package/build-module/store/selectors.js.map +1 -1
  291. package/build-module/store/utils.js +66 -0
  292. package/build-module/store/utils.js.map +1 -0
  293. package/build-module/utils/template-part-create.js +53 -0
  294. package/build-module/utils/template-part-create.js.map +1 -0
  295. package/build-style/style-rtl.css +448 -278
  296. package/build-style/style.css +448 -278
  297. package/package.json +32 -30
  298. package/src/components/add-new-template/add-custom-generic-template-modal.js +20 -28
  299. package/src/components/add-new-template/add-custom-template-modal.js +0 -1
  300. package/src/components/add-new-template/new-template-part.js +12 -11
  301. package/src/components/add-new-template/style.scss +0 -4
  302. package/src/components/app/index.js +2 -2
  303. package/src/components/block-editor/editor-canvas.js +0 -1
  304. package/src/components/block-editor/index.js +21 -77
  305. package/src/components/block-editor/inserter-media-categories.js +247 -0
  306. package/src/components/block-editor/resize-handle.js +6 -2
  307. package/src/components/block-editor/style.scss +55 -7
  308. package/src/components/canvas-spinner/index.js +12 -0
  309. package/src/components/canvas-spinner/style.scss +7 -0
  310. package/src/components/create-template-part-modal/index.js +75 -67
  311. package/src/components/create-template-part-modal/style.scss +0 -10
  312. package/src/components/editor/index.js +5 -3
  313. package/src/components/error-boundary/index.js +2 -10
  314. package/src/components/error-boundary/warning.js +6 -35
  315. package/src/components/global-styles/README.md +1 -75
  316. package/src/components/global-styles/block-preview-panel.js +16 -4
  317. package/src/components/global-styles/border-panel.js +22 -16
  318. package/src/components/global-styles/color-palette-panel.js +10 -7
  319. package/src/components/global-styles/context-menu.js +117 -41
  320. package/src/components/global-styles/custom-css.js +76 -19
  321. package/src/components/global-styles/dimensions-panel.js +58 -31
  322. package/src/components/global-styles/global-styles-provider.js +6 -2
  323. package/src/components/global-styles/gradients-palette-panel.js +17 -11
  324. package/src/components/global-styles/hooks.js +31 -155
  325. package/src/components/global-styles/index.js +0 -2
  326. package/src/components/global-styles/palette.js +9 -5
  327. package/src/components/global-styles/preview.js +19 -13
  328. package/src/components/global-styles/screen-background-color.js +42 -19
  329. package/src/components/global-styles/screen-block-list.js +6 -1
  330. package/src/components/global-styles/screen-border.js +13 -5
  331. package/src/components/global-styles/screen-button-color.js +21 -19
  332. package/src/components/global-styles/screen-colors.js +66 -22
  333. package/src/components/global-styles/screen-css.js +30 -14
  334. package/src/components/global-styles/screen-heading-color.js +32 -27
  335. package/src/components/global-styles/screen-layout.js +7 -4
  336. package/src/components/global-styles/screen-link-color.js +34 -22
  337. package/src/components/global-styles/screen-root.js +24 -9
  338. package/src/components/global-styles/screen-style-variations.js +7 -2
  339. package/src/components/global-styles/screen-text-color.js +15 -15
  340. package/src/components/global-styles/screen-typography.js +34 -12
  341. package/src/components/global-styles/screen-variations.js +47 -0
  342. package/src/components/global-styles/shadow-panel.js +174 -0
  343. package/src/components/global-styles/style.scss +94 -1
  344. package/src/components/global-styles/typography-panel.js +58 -23
  345. package/src/components/global-styles/typography-preview.js +28 -9
  346. package/src/components/global-styles/ui.js +130 -17
  347. package/src/components/global-styles/utils.js +7 -330
  348. package/src/components/global-styles/variations-panel.js +78 -0
  349. package/src/components/global-styles-renderer/index.js +3 -4
  350. package/src/components/header-edit-mode/document-actions/index.js +1 -1
  351. package/src/components/keyboard-shortcut-help-modal/index.js +0 -1
  352. package/src/components/layout/index.js +116 -21
  353. package/src/components/layout/style.scss +29 -5
  354. package/src/components/list/actions/rename-menu-item.js +14 -23
  355. package/src/components/list/style.scss +0 -4
  356. package/src/components/{sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js → navigation-inspector/index.js} +3 -4
  357. package/src/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/navigation-menu.js +10 -12
  358. package/src/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/style.scss +4 -17
  359. package/src/components/sidebar/index.js +2 -0
  360. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +8 -32
  361. package/src/components/sidebar-edit-mode/index.js +0 -11
  362. package/src/components/sidebar-edit-mode/settings-header/style.scss +8 -0
  363. package/src/components/sidebar-navigation-item/style.scss +28 -3
  364. package/src/components/sidebar-navigation-screen/index.js +4 -3
  365. package/src/components/sidebar-navigation-screen/style.scss +2 -0
  366. package/src/components/sidebar-navigation-screen-main/index.js +23 -1
  367. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +25 -0
  368. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +12 -0
  369. package/src/components/sidebar-navigation-screen-templates/index.js +12 -19
  370. package/src/components/site-hub/index.js +120 -109
  371. package/src/components/site-hub/style.scss +7 -1
  372. package/src/components/site-icon/index.js +1 -1
  373. package/src/components/site-icon/style.scss +2 -2
  374. package/src/components/style-book/index.js +10 -5
  375. package/src/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +40 -0
  376. package/src/components/template-details/edit-template-title.js +1 -0
  377. package/src/components/template-details/template-part-area-selector.js +1 -0
  378. package/src/components/template-part-converter/convert-to-template-part.js +12 -10
  379. package/src/experiments.js +10 -0
  380. package/src/hooks/push-changes-to-global-styles/index.js +66 -8
  381. package/src/index.js +51 -59
  382. package/src/store/reducer.js +1 -1
  383. package/src/store/selectors.js +6 -26
  384. package/src/store/test/utils.js +181 -0
  385. package/src/store/utils.js +69 -0
  386. package/src/style.scss +4 -2
  387. package/src/utils/template-part-create.js +62 -0
  388. package/src/utils/test/template-part-create.js +63 -0
  389. package/build/components/global-styles/context.js +0 -22
  390. package/build/components/global-styles/context.js.map +0 -1
  391. package/build/components/global-styles/typography-utils.js +0 -92
  392. package/build/components/global-styles/typography-utils.js.map +0 -1
  393. package/build/components/global-styles/use-global-styles-output.js +0 -857
  394. package/build/components/global-styles/use-global-styles-output.js.map +0 -1
  395. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/index.js +0 -42
  396. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +0 -1
  397. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  398. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  399. package/build-module/components/global-styles/context.js +0 -12
  400. package/build-module/components/global-styles/context.js.map +0 -1
  401. package/build-module/components/global-styles/typography-utils.js +0 -84
  402. package/build-module/components/global-styles/typography-utils.js.map +0 -1
  403. package/build-module/components/global-styles/use-global-styles-output.js +0 -815
  404. package/build-module/components/global-styles/use-global-styles-output.js.map +0 -1
  405. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/index.js +0 -28
  406. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +0 -1
  407. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  408. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  409. package/src/components/global-styles/context.js +0 -15
  410. package/src/components/global-styles/test/typography-utils.js +0 -393
  411. package/src/components/global-styles/test/use-global-styles-output.js +0 -814
  412. package/src/components/global-styles/test/utils.js +0 -206
  413. package/src/components/global-styles/typography-utils.js +0 -87
  414. package/src/components/global-styles/use-global-styles-output.js +0 -936
  415. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/index.js +0 -37
@@ -1,6 +1,6 @@
1
1
  # Global Styles
2
2
 
3
- This folder contains all the necessary APIs to render the global styles UI and to manipulate the global styles data. It can be potentially extracted to its own package.
3
+ This folder contains the global styles UI.
4
4
 
5
5
  # Available public APIs
6
6
 
@@ -15,77 +15,3 @@ function MyComponent() {
15
15
  return <GlobalStylesUI />;
16
16
  }
17
17
  ```
18
-
19
- ## useGlobalStylesReset
20
-
21
- A React hook used to retrieve whether the Global Styles have been edited and a callback to reset to the default theme values.
22
-
23
- ```js
24
- import { useGlobalStylesReset } from './global-styles';
25
-
26
- function MyComponent() {
27
- const [ canReset, reset ] = useGlobalStylesReset();
28
-
29
- return canReset
30
- ? <Button onClick={ () => reset() }>Reset</Button>
31
- : null;
32
- }
33
- ```
34
-
35
- ## useGlobalStylesOutput
36
-
37
- A React hook used to retrieve the styles array and settings to provide for block editor instances based on the current global styles.
38
-
39
- ```js
40
- import { useGlobalStylesOutput } from './global-styles';
41
- import { BlockEditorProvider, BlockList } from '@wordpress/block-editor';
42
-
43
- function MyComponent() {
44
- const [ styles, settings ] = useGlobalStylesOutput();
45
-
46
- return <BlockEditorProvider settings={{
47
- styles,
48
- __experimentalFeatures: settings
49
- }}>
50
- <BlockList />
51
- </BlockEditorProvider>
52
- }
53
- ```
54
-
55
- ## useStyle
56
-
57
- A react hook used to retrieve the style applied to a given context.
58
-
59
- ```js
60
- import { useStyle } from './global-styles';
61
-
62
- function MyComponent() {
63
- // Text color for the site root.
64
- const [ color, setColor ] = useStyle( 'color.text' );
65
-
66
- // The user modified color for the core paragraph block.
67
- const [ pColor, setPColor ] = useStyle( 'color.text', 'core/paragraph', 'user' );
68
-
69
- return "Something";
70
- }
71
- ```
72
-
73
- ## useSetting
74
-
75
- A react hook used to retrieve the setting applied to a given context.
76
-
77
- ```js
78
- import { useSetting } from './global-styles';
79
-
80
- function MyComponent() {
81
- // The default color palette.
82
- const [ colorPalette, setColorPalette ] = useSetting( 'color.palette' );
83
-
84
- // The base (theme + core) color palette for the paragraph block,
85
- // ignoring user provided palette.
86
- // If the palette is not defined for the paragraph block, the root one is returned.
87
- const [ pColor, setPColor ] = useSetting( 'color.palette', 'core/paragraph', 'base' );
88
-
89
- return "Something";
90
- }
91
- ```
@@ -6,13 +6,25 @@ import { getBlockType, getBlockFromExample } from '@wordpress/blocks';
6
6
  import { useResizeObserver } from '@wordpress/compose';
7
7
  import { __experimentalSpacer as Spacer } from '@wordpress/components';
8
8
 
9
- const BlockPreviewPanel = ( { name } ) => {
9
+ const BlockPreviewPanel = ( { name, variation = '' } ) => {
10
10
  const [
11
11
  containerResizeListener,
12
12
  { width: containerWidth, height: containerHeight },
13
13
  ] = useResizeObserver();
14
14
  const blockExample = getBlockType( name )?.example;
15
- const blocks = blockExample && getBlockFromExample( name, blockExample );
15
+ const blockExampleWithVariation = {
16
+ ...blockExample,
17
+ attributes: {
18
+ ...blockExample?.attributes,
19
+ className: variation,
20
+ },
21
+ };
22
+ const blocks =
23
+ blockExample &&
24
+ getBlockFromExample(
25
+ name,
26
+ variation ? blockExampleWithVariation : blockExample
27
+ );
16
28
  const viewportWidth = blockExample?.viewportWidth || containerWidth;
17
29
  const minHeight = containerHeight;
18
30
 
@@ -24,8 +36,8 @@ const BlockPreviewPanel = ( { name } ) => {
24
36
  <BlockPreview
25
37
  blocks={ blocks }
26
38
  viewportWidth={ viewportWidth }
27
- __experimentalMinHeight={ minHeight }
28
- __experimentalStyles={ [
39
+ minHeight={ minHeight }
40
+ additionalStyles={ [
29
41
  {
30
42
  css: `
31
43
  body{
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __experimentalBorderRadiusControl as BorderRadiusControl } from '@wordpress/block-editor';
4
+ import {
5
+ __experimentalBorderRadiusControl as BorderRadiusControl,
6
+ experiments as blockEditorExperiments,
7
+ } from '@wordpress/block-editor';
5
8
  import {
6
9
  __experimentalBorderBoxControl as BorderBoxControl,
7
10
  __experimentalHasSplitBorders as hasSplitBorders,
@@ -15,12 +18,10 @@ import { __ } from '@wordpress/i18n';
15
18
  /**
16
19
  * Internal dependencies
17
20
  */
18
- import {
19
- getSupportedGlobalStylesPanels,
20
- useColorsPerOrigin,
21
- useSetting,
22
- useStyle,
23
- } from './hooks';
21
+ import { getSupportedGlobalStylesPanels, useColorsPerOrigin } from './hooks';
22
+ import { unlock } from '../../experiments';
23
+
24
+ const { useGlobalSetting, useGlobalStyle } = unlock( blockEditorExperiments );
24
25
 
25
26
  export function useHasBorderPanel( name ) {
26
27
  const controls = [
@@ -36,7 +37,7 @@ export function useHasBorderPanel( name ) {
36
37
  function useHasBorderColorControl( name ) {
37
38
  const supports = getSupportedGlobalStylesPanels( name );
38
39
  return (
39
- useSetting( 'border.color', name )[ 0 ] &&
40
+ useGlobalSetting( 'border.color', name )[ 0 ] &&
40
41
  supports.includes( 'borderColor' )
41
42
  );
42
43
  }
@@ -44,7 +45,7 @@ function useHasBorderColorControl( name ) {
44
45
  function useHasBorderRadiusControl( name ) {
45
46
  const supports = getSupportedGlobalStylesPanels( name );
46
47
  return (
47
- useSetting( 'border.radius', name )[ 0 ] &&
48
+ useGlobalSetting( 'border.radius', name )[ 0 ] &&
48
49
  supports.includes( 'borderRadius' )
49
50
  );
50
51
  }
@@ -52,7 +53,7 @@ function useHasBorderRadiusControl( name ) {
52
53
  function useHasBorderStyleControl( name ) {
53
54
  const supports = getSupportedGlobalStylesPanels( name );
54
55
  return (
55
- useSetting( 'border.style', name )[ 0 ] &&
56
+ useGlobalSetting( 'border.style', name )[ 0 ] &&
56
57
  supports.includes( 'borderStyle' )
57
58
  );
58
59
  }
@@ -60,7 +61,7 @@ function useHasBorderStyleControl( name ) {
60
61
  function useHasBorderWidthControl( name ) {
61
62
  const supports = getSupportedGlobalStylesPanels( name );
62
63
  return (
63
- useSetting( 'border.width', name )[ 0 ] &&
64
+ useGlobalSetting( 'border.width', name )[ 0 ] &&
64
65
  supports.includes( 'borderWidth' )
65
66
  );
66
67
  }
@@ -94,11 +95,16 @@ function applyAllFallbackStyles( border ) {
94
95
  return applyFallbackStyle( border );
95
96
  }
96
97
 
97
- export default function BorderPanel( { name } ) {
98
+ export default function BorderPanel( { name, variation = '' } ) {
99
+ const prefix = variation ? `variations.${ variation }.` : '';
98
100
  // To better reflect if the user has customized a value we need to
99
101
  // ensure the style value being checked is from the `user` origin.
100
- const [ userBorderStyles ] = useStyle( 'border', name, 'user' );
101
- const [ border, setBorder ] = useStyle( 'border', name );
102
+ const [ userBorderStyles ] = useGlobalStyle(
103
+ `${ prefix }border`,
104
+ name,
105
+ 'user'
106
+ );
107
+ const [ border, setBorder ] = useGlobalStyle( `${ prefix }border`, name );
102
108
  const colors = useColorsPerOrigin( name );
103
109
 
104
110
  const showBorderColor = useHasBorderColorControl( name );
@@ -107,8 +113,8 @@ export default function BorderPanel( { name } ) {
107
113
 
108
114
  // Border radius.
109
115
  const showBorderRadius = useHasBorderRadiusControl( name );
110
- const [ borderRadiusValues, setBorderRadius ] = useStyle(
111
- 'border.radius',
116
+ const [ borderRadiusValues, setBorderRadius ] = useGlobalStyle(
117
+ `${ prefix }border.radius`,
112
118
  name
113
119
  );
114
120
  const hasBorderRadius = () => {
@@ -6,37 +6,40 @@ import {
6
6
  __experimentalVStack as VStack,
7
7
  } from '@wordpress/components';
8
8
  import { __ } from '@wordpress/i18n';
9
+ import { experiments as blockEditorExperiments } from '@wordpress/block-editor';
9
10
 
10
11
  /**
11
12
  * Internal dependencies
12
13
  */
13
- import { useSetting } from './hooks';
14
+ import { unlock } from '../../experiments';
15
+
16
+ const { useGlobalSetting } = unlock( blockEditorExperiments );
14
17
 
15
18
  export default function ColorPalettePanel( { name } ) {
16
- const [ themeColors, setThemeColors ] = useSetting(
19
+ const [ themeColors, setThemeColors ] = useGlobalSetting(
17
20
  'color.palette.theme',
18
21
  name
19
22
  );
20
- const [ baseThemeColors ] = useSetting(
23
+ const [ baseThemeColors ] = useGlobalSetting(
21
24
  'color.palette.theme',
22
25
  name,
23
26
  'base'
24
27
  );
25
- const [ defaultColors, setDefaultColors ] = useSetting(
28
+ const [ defaultColors, setDefaultColors ] = useGlobalSetting(
26
29
  'color.palette.default',
27
30
  name
28
31
  );
29
- const [ baseDefaultColors ] = useSetting(
32
+ const [ baseDefaultColors ] = useGlobalSetting(
30
33
  'color.palette.default',
31
34
  name,
32
35
  'base'
33
36
  );
34
- const [ customColors, setCustomColors ] = useSetting(
37
+ const [ customColors, setCustomColors ] = useGlobalSetting(
35
38
  'color.palette.custom',
36
39
  name
37
40
  );
38
41
 
39
- const [ defaultPaletteEnabled ] = useSetting(
42
+ const [ defaultPaletteEnabled ] = useGlobalSetting(
40
43
  'color.defaultPalette',
41
44
  name
42
45
  );
@@ -1,9 +1,25 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
5
- import { typography, border, color, layout } from '@wordpress/icons';
6
- import { __ } from '@wordpress/i18n';
4
+ import {
5
+ __experimentalItemGroup as ItemGroup,
6
+ __experimentalHStack as HStack,
7
+ __experimentalSpacer as Spacer,
8
+ FlexItem,
9
+ CardBody,
10
+ CardDivider,
11
+ } from '@wordpress/components';
12
+ import {
13
+ typography,
14
+ border,
15
+ color,
16
+ layout,
17
+ chevronLeft,
18
+ chevronRight,
19
+ } from '@wordpress/icons';
20
+ import { isRTL, __ } from '@wordpress/i18n';
21
+ import { useSelect } from '@wordpress/data';
22
+ import { store as coreStore } from '@wordpress/core-data';
7
23
 
8
24
  /**
9
25
  * Internal dependencies
@@ -12,7 +28,10 @@ import { useHasBorderPanel } from './border-panel';
12
28
  import { useHasColorPanel } from './color-utils';
13
29
  import { useHasDimensionsPanel } from './dimensions-panel';
14
30
  import { useHasTypographyPanel } from './typography-panel';
31
+ import { useHasVariationsPanel } from './variations-panel';
15
32
  import { NavigationButtonAsItem } from './navigation-button';
33
+ import { IconWithCurrentColor } from './icon-with-current-color';
34
+ import { ScreenVariations } from './screen-variations';
16
35
 
17
36
  function ContextMenu( { name, parentMenu = '' } ) {
18
37
  const hasTypographyPanel = useHasTypographyPanel( name );
@@ -20,46 +39,103 @@ function ContextMenu( { name, parentMenu = '' } ) {
20
39
  const hasBorderPanel = useHasBorderPanel( name );
21
40
  const hasDimensionsPanel = useHasDimensionsPanel( name );
22
41
  const hasLayoutPanel = hasDimensionsPanel;
42
+ const hasVariationsPanel = useHasVariationsPanel( name, parentMenu );
43
+
44
+ const { canEditCSS } = useSelect( ( select ) => {
45
+ const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } =
46
+ select( coreStore );
47
+
48
+ const globalStylesId = __experimentalGetCurrentGlobalStylesId();
49
+ const globalStyles = globalStylesId
50
+ ? getEntityRecord( 'root', 'globalStyles', globalStylesId )
51
+ : undefined;
52
+
53
+ return {
54
+ canEditCSS:
55
+ !! globalStyles?._links?.[ 'wp:action-edit-css' ] ?? false,
56
+ };
57
+ }, [] );
58
+
59
+ const isBlocksPanel =
60
+ parentMenu.includes( 'blocks' ) &&
61
+ ! parentMenu.includes( 'variations' );
23
62
 
24
63
  return (
25
- <ItemGroup>
26
- { hasTypographyPanel && (
27
- <NavigationButtonAsItem
28
- icon={ typography }
29
- path={ parentMenu + '/typography' }
30
- aria-label={ __( 'Typography styles' ) }
31
- >
32
- { __( 'Typography' ) }
33
- </NavigationButtonAsItem>
34
- ) }
35
- { hasColorPanel && (
36
- <NavigationButtonAsItem
37
- icon={ color }
38
- path={ parentMenu + '/colors' }
39
- aria-label={ __( 'Colors styles' ) }
40
- >
41
- { __( 'Colors' ) }
42
- </NavigationButtonAsItem>
43
- ) }
44
- { hasBorderPanel && (
45
- <NavigationButtonAsItem
46
- icon={ border }
47
- path={ parentMenu + '/border' }
48
- aria-label={ __( 'Border styles' ) }
49
- >
50
- { __( 'Border' ) }
51
- </NavigationButtonAsItem>
52
- ) }
53
- { hasLayoutPanel && (
54
- <NavigationButtonAsItem
55
- icon={ layout }
56
- path={ parentMenu + '/layout' }
57
- aria-label={ __( 'Layout styles' ) }
58
- >
59
- { __( 'Layout' ) }
60
- </NavigationButtonAsItem>
61
- ) }
62
- </ItemGroup>
64
+ <>
65
+ <ItemGroup>
66
+ { hasTypographyPanel && (
67
+ <NavigationButtonAsItem
68
+ icon={ typography }
69
+ path={ parentMenu + '/typography' }
70
+ aria-label={ __( 'Typography styles' ) }
71
+ >
72
+ { __( 'Typography' ) }
73
+ </NavigationButtonAsItem>
74
+ ) }
75
+ { hasColorPanel && (
76
+ <NavigationButtonAsItem
77
+ icon={ color }
78
+ path={ parentMenu + '/colors' }
79
+ aria-label={ __( 'Colors styles' ) }
80
+ >
81
+ { __( 'Colors' ) }
82
+ </NavigationButtonAsItem>
83
+ ) }
84
+ { hasBorderPanel && (
85
+ <NavigationButtonAsItem
86
+ icon={ border }
87
+ path={ parentMenu + '/border' }
88
+ aria-label={ __( 'Border & shadow styles' ) }
89
+ >
90
+ { __( 'Border & Shadow' ) }
91
+ </NavigationButtonAsItem>
92
+ ) }
93
+ { hasLayoutPanel && (
94
+ <NavigationButtonAsItem
95
+ icon={ layout }
96
+ path={ parentMenu + '/layout' }
97
+ aria-label={ __( 'Layout styles' ) }
98
+ >
99
+ { __( 'Layout' ) }
100
+ </NavigationButtonAsItem>
101
+ ) }
102
+ { hasVariationsPanel && (
103
+ <ScreenVariations name={ name } path={ parentMenu } />
104
+ ) }
105
+ { isBlocksPanel && canEditCSS && (
106
+ <>
107
+ <CardDivider />
108
+ <CardBody>
109
+ <Spacer as="p" paddingTop={ 2 } marginBottom={ 4 }>
110
+ { __(
111
+ 'Add your own CSS to customize the block appearance.'
112
+ ) }
113
+ </Spacer>
114
+ <ItemGroup>
115
+ <NavigationButtonAsItem
116
+ path={ parentMenu + '/css' }
117
+ aria-label={ __( 'Additional block CSS' ) }
118
+ >
119
+ <HStack justify="space-between">
120
+ <FlexItem>
121
+ { __( 'Additional block CSS' ) }
122
+ </FlexItem>
123
+ <IconWithCurrentColor
124
+ icon={
125
+ isRTL()
126
+ ? chevronLeft
127
+ : chevronRight
128
+ }
129
+ />
130
+ </HStack>
131
+ </NavigationButtonAsItem>
132
+ </ItemGroup>
133
+ </CardBody>
134
+ <CardDivider />
135
+ </>
136
+ ) }
137
+ </ItemGroup>
138
+ </>
63
139
  );
64
140
  }
65
141
 
@@ -1,17 +1,37 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { TextareaControl, Panel, PanelBody } from '@wordpress/components';
4
+ import { useState } from '@wordpress/element';
5
+ import {
6
+ TextareaControl,
7
+ Panel,
8
+ PanelBody,
9
+ __experimentalVStack as VStack,
10
+ Tooltip,
11
+ Icon,
12
+ } from '@wordpress/components';
5
13
  import { __ } from '@wordpress/i18n';
14
+ import {
15
+ experiments as blockEditorExperiments,
16
+ transformStyles,
17
+ } from '@wordpress/block-editor';
18
+ import { info } from '@wordpress/icons';
6
19
 
7
20
  /**
8
21
  * Internal dependencies
9
22
  */
10
- import { useStyle } from './hooks';
23
+ import { unlock } from '../../experiments';
24
+ import Subtitle from './subtitle';
11
25
 
12
- function CustomCSSControl() {
13
- const [ customCSS, setCustomCSS ] = useStyle( 'css' );
14
- const [ themeCSS ] = useStyle( 'css', null, 'base' );
26
+ const { useGlobalStyle } = unlock( blockEditorExperiments );
27
+ function CustomCSSControl( { blockName } ) {
28
+ // If blockName is defined, we are customizing CSS at the block level:
29
+ // styles.blocks.blockName.css
30
+ const block = !! blockName ? blockName : null;
31
+
32
+ const [ customCSS, setCustomCSS ] = useGlobalStyle( 'css', block );
33
+ const [ themeCSS ] = useGlobalStyle( 'css', block, 'base' );
34
+ const [ cssError, setCSSError ] = useState( null );
15
35
  const ignoreThemeCustomCSS = '/* IgnoreThemeCustomCSS */';
16
36
 
17
37
  // If there is custom css from theme.json show it in the edit box
@@ -32,6 +52,33 @@ function CustomCSSControl() {
32
52
  return;
33
53
  }
34
54
  setCustomCSS( value );
55
+ if ( cssError ) {
56
+ const [ transformed ] = transformStyles(
57
+ [ { css: value } ],
58
+ '.editor-styles-wrapper'
59
+ );
60
+ if ( transformed ) {
61
+ setCSSError( null );
62
+ }
63
+ }
64
+ }
65
+
66
+ function handleOnBlur( event ) {
67
+ if ( ! event?.target?.value ) {
68
+ setCSSError( null );
69
+ return;
70
+ }
71
+
72
+ const [ transformed ] = transformStyles(
73
+ [ { css: event.target.value } ],
74
+ '.editor-styles-wrapper'
75
+ );
76
+
77
+ setCSSError(
78
+ transformed === null
79
+ ? __( 'There is an error with your CSS structure.' )
80
+ : null
81
+ );
35
82
  }
36
83
 
37
84
  const originalThemeCustomCSS =
@@ -41,20 +88,6 @@ function CustomCSSControl() {
41
88
 
42
89
  return (
43
90
  <>
44
- <TextareaControl
45
- __nextHasNoMarginBottom
46
- value={
47
- customCSS?.replace( ignoreThemeCustomCSS, '' ) ||
48
- themeCustomCSS
49
- }
50
- onChange={ ( value ) => handleOnChange( value ) }
51
- rows={ 15 }
52
- className="edit-site-global-styles__custom-css-input"
53
- spellCheck={ false }
54
- help={ __(
55
- "Enter your custom CSS in the textarea and preview in the editor. Changes won't take effect until you've saved the template."
56
- ) }
57
- />
58
91
  { originalThemeCustomCSS && (
59
92
  <Panel>
60
93
  <PanelBody
@@ -67,6 +100,30 @@ function CustomCSSControl() {
67
100
  </PanelBody>
68
101
  </Panel>
69
102
  ) }
103
+ <VStack spacing={ 3 }>
104
+ <Subtitle>{ __( 'ADDITIONAL CSS' ) }</Subtitle>
105
+ <TextareaControl
106
+ __nextHasNoMarginBottom
107
+ value={
108
+ customCSS?.replace( ignoreThemeCustomCSS, '' ) ||
109
+ themeCustomCSS
110
+ }
111
+ onChange={ ( value ) => handleOnChange( value ) }
112
+ onBlur={ handleOnBlur }
113
+ className="edit-site-global-styles__custom-css-input"
114
+ spellCheck={ false }
115
+ />
116
+ { cssError && (
117
+ <Tooltip text={ cssError }>
118
+ <div className="edit-site-global-styles__custom-css-validation-wrapper">
119
+ <Icon
120
+ icon={ info }
121
+ className="edit-site-global-styles__custom-css-validation-icon"
122
+ />
123
+ </div>
124
+ </Tooltip>
125
+ ) }
126
+ </VStack>
70
127
  </>
71
128
  );
72
129
  }