@wordpress/edit-site 4.19.0 → 5.1.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 (382) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +1 -0
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/index.js +8 -5
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/new-template-part.js +21 -6
  7. package/build/components/add-new-template/new-template-part.js.map +1 -1
  8. package/build/components/add-new-template/new-template.js +12 -8
  9. package/build/components/add-new-template/new-template.js.map +1 -1
  10. package/build/components/app/index.js +15 -30
  11. package/build/components/app/index.js.map +1 -1
  12. package/build/components/block-editor/editor-canvas.js +64 -0
  13. package/build/components/block-editor/editor-canvas.js.map +1 -0
  14. package/build/components/block-editor/index.js +62 -59
  15. package/build/components/block-editor/index.js.map +1 -1
  16. package/build/components/block-editor/resizable-editor.js +10 -44
  17. package/build/components/block-editor/resizable-editor.js.map +1 -1
  18. package/build/components/editor/index.js +76 -135
  19. package/build/components/editor/index.js.map +1 -1
  20. package/build/components/global-styles/block-preview-panel.js +57 -0
  21. package/build/components/global-styles/block-preview-panel.js.map +1 -0
  22. package/build/components/global-styles/border-panel.js +0 -1
  23. package/build/components/global-styles/border-panel.js.map +1 -1
  24. package/build/components/global-styles/context-menu.js +6 -2
  25. package/build/components/global-styles/context-menu.js.map +1 -1
  26. package/build/components/global-styles/custom-css.js +62 -0
  27. package/build/components/global-styles/custom-css.js.map +1 -0
  28. package/build/components/global-styles/dimensions-panel.js +2 -6
  29. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  30. package/build/components/global-styles/global-styles-provider.js +18 -4
  31. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  32. package/build/components/global-styles/hooks.js +5 -2
  33. package/build/components/global-styles/hooks.js.map +1 -1
  34. package/build/components/global-styles/palette.js +1 -1
  35. package/build/components/global-styles/palette.js.map +1 -1
  36. package/build/components/global-styles/screen-background-color.js +0 -1
  37. package/build/components/global-styles/screen-background-color.js.map +1 -1
  38. package/build/components/global-styles/screen-block-list.js +2 -1
  39. package/build/components/global-styles/screen-block-list.js.map +1 -1
  40. package/build/components/global-styles/screen-block.js +5 -1
  41. package/build/components/global-styles/screen-block.js.map +1 -1
  42. package/build/components/global-styles/screen-border.js +47 -0
  43. package/build/components/global-styles/screen-border.js.map +1 -0
  44. package/build/components/global-styles/screen-button-color.js +0 -2
  45. package/build/components/global-styles/screen-button-color.js.map +1 -1
  46. package/build/components/global-styles/screen-colors.js +5 -1
  47. package/build/components/global-styles/screen-colors.js.map +1 -1
  48. package/build/components/global-styles/screen-css.js +42 -0
  49. package/build/components/global-styles/screen-css.js.map +1 -0
  50. package/build/components/global-styles/screen-heading-color.js +1 -3
  51. package/build/components/global-styles/screen-heading-color.js.map +1 -1
  52. package/build/components/global-styles/screen-layout.js +4 -5
  53. package/build/components/global-styles/screen-layout.js.map +1 -1
  54. package/build/components/global-styles/screen-link-color.js +0 -1
  55. package/build/components/global-styles/screen-link-color.js.map +1 -1
  56. package/build/components/global-styles/screen-root.js +20 -2
  57. package/build/components/global-styles/screen-root.js.map +1 -1
  58. package/build/components/global-styles/screen-style-variations.js +3 -3
  59. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  60. package/build/components/global-styles/screen-text-color.js +0 -1
  61. package/build/components/global-styles/screen-text-color.js.map +1 -1
  62. package/build/components/global-styles/screen-typography.js +4 -0
  63. package/build/components/global-styles/screen-typography.js.map +1 -1
  64. package/build/components/global-styles/typography-utils.js +17 -5
  65. package/build/components/global-styles/typography-utils.js.map +1 -1
  66. package/build/components/global-styles/ui.js +50 -4
  67. package/build/components/global-styles/ui.js.map +1 -1
  68. package/build/components/global-styles/use-global-styles-output.js +5 -1
  69. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  70. package/build/components/global-styles/utils.js +14 -4
  71. package/build/components/global-styles/utils.js.map +1 -1
  72. package/build/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -8
  73. package/build/components/global-styles-renderer/index.js.map +1 -0
  74. package/build/components/header-edit-mode/document-actions/index.js +21 -45
  75. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  76. package/build/components/header-edit-mode/index.js +19 -12
  77. package/build/components/header-edit-mode/index.js.map +1 -1
  78. package/build/components/keyboard-shortcuts/index.js +11 -1
  79. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  80. package/build/components/layout/index.js +200 -0
  81. package/build/components/layout/index.js.map +1 -0
  82. package/build/components/list/header.js +5 -1
  83. package/build/components/list/header.js.map +1 -1
  84. package/build/components/list/index.js +4 -22
  85. package/build/components/list/index.js.map +1 -1
  86. package/build/components/navigate-to-link/index.js +1 -3
  87. package/build/components/navigate-to-link/index.js.map +1 -1
  88. package/build/components/routes/index.js +1 -1
  89. package/build/components/routes/index.js.map +1 -1
  90. package/build/components/sidebar/index.js +46 -0
  91. package/build/components/sidebar/index.js.map +1 -0
  92. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +24 -4
  93. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  94. package/build/components/sidebar-edit-mode/index.js +4 -2
  95. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  96. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js +10 -0
  97. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  98. package/build/components/sidebar-navigation-item/index.js +53 -0
  99. package/build/components/sidebar-navigation-item/index.js.map +1 -0
  100. package/build/components/sidebar-navigation-screen/index.js +49 -0
  101. package/build/components/sidebar-navigation-screen/index.js.map +1 -0
  102. package/build/components/sidebar-navigation-screen-main/index.js +46 -0
  103. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -0
  104. package/build/components/sidebar-navigation-screen-templates/index.js +169 -0
  105. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  106. package/build/components/site-hub/index.js +149 -0
  107. package/build/components/site-hub/index.js.map +1 -0
  108. package/build/components/site-icon/index.js +70 -0
  109. package/build/components/site-icon/index.js.map +1 -0
  110. package/build/components/style-book/index.js +173 -0
  111. package/build/components/style-book/index.js.map +1 -0
  112. package/build/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +5 -4
  113. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  114. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +53 -0
  115. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  116. package/build/components/use-edited-entity-record/index.js +60 -0
  117. package/build/components/use-edited-entity-record/index.js.map +1 -0
  118. package/build/hooks/index.js +2 -0
  119. package/build/hooks/index.js.map +1 -1
  120. package/build/hooks/push-changes-to-global-styles/index.js +144 -0
  121. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -0
  122. package/build/index.js +7 -45
  123. package/build/index.js.map +1 -1
  124. package/build/store/actions.js +93 -43
  125. package/build/store/actions.js.map +1 -1
  126. package/build/store/reducer.js +35 -107
  127. package/build/store/reducer.js.map +1 -1
  128. package/build/store/selectors.js +69 -78
  129. package/build/store/selectors.js.map +1 -1
  130. package/build-module/components/add-new-template/add-custom-template-modal.js +1 -0
  131. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  132. package/build-module/components/add-new-template/index.js +7 -5
  133. package/build-module/components/add-new-template/index.js.map +1 -1
  134. package/build-module/components/add-new-template/new-template-part.js +18 -6
  135. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  136. package/build-module/components/add-new-template/new-template.js +13 -9
  137. package/build-module/components/add-new-template/new-template.js.map +1 -1
  138. package/build-module/components/app/index.js +15 -28
  139. package/build-module/components/app/index.js.map +1 -1
  140. package/build-module/components/block-editor/editor-canvas.js +51 -0
  141. package/build-module/components/block-editor/editor-canvas.js.map +1 -0
  142. package/build-module/components/block-editor/index.js +62 -60
  143. package/build-module/components/block-editor/index.js.map +1 -1
  144. package/build-module/components/block-editor/resizable-editor.js +11 -40
  145. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  146. package/build-module/components/editor/index.js +75 -129
  147. package/build-module/components/editor/index.js.map +1 -1
  148. package/build-module/components/global-styles/block-preview-panel.js +46 -0
  149. package/build-module/components/global-styles/block-preview-panel.js.map +1 -0
  150. package/build-module/components/global-styles/border-panel.js +0 -1
  151. package/build-module/components/global-styles/border-panel.js.map +1 -1
  152. package/build-module/components/global-styles/context-menu.js +7 -3
  153. package/build-module/components/global-styles/context-menu.js.map +1 -1
  154. package/build-module/components/global-styles/custom-css.js +52 -0
  155. package/build-module/components/global-styles/custom-css.js.map +1 -0
  156. package/build-module/components/global-styles/dimensions-panel.js +3 -7
  157. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  158. package/build-module/components/global-styles/global-styles-provider.js +18 -4
  159. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  160. package/build-module/components/global-styles/hooks.js +5 -3
  161. package/build-module/components/global-styles/hooks.js.map +1 -1
  162. package/build-module/components/global-styles/palette.js +1 -1
  163. package/build-module/components/global-styles/palette.js.map +1 -1
  164. package/build-module/components/global-styles/screen-background-color.js +0 -1
  165. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  166. package/build-module/components/global-styles/screen-block-list.js +2 -1
  167. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  168. package/build-module/components/global-styles/screen-block.js +4 -1
  169. package/build-module/components/global-styles/screen-block.js.map +1 -1
  170. package/build-module/components/global-styles/screen-border.js +30 -0
  171. package/build-module/components/global-styles/screen-border.js.map +1 -0
  172. package/build-module/components/global-styles/screen-button-color.js +0 -2
  173. package/build-module/components/global-styles/screen-button-color.js.map +1 -1
  174. package/build-module/components/global-styles/screen-colors.js +4 -1
  175. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  176. package/build-module/components/global-styles/screen-css.js +28 -0
  177. package/build-module/components/global-styles/screen-css.js.map +1 -0
  178. package/build-module/components/global-styles/screen-heading-color.js +1 -3
  179. package/build-module/components/global-styles/screen-heading-color.js.map +1 -1
  180. package/build-module/components/global-styles/screen-layout.js +3 -4
  181. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  182. package/build-module/components/global-styles/screen-link-color.js +0 -1
  183. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  184. package/build-module/components/global-styles/screen-root.js +21 -3
  185. package/build-module/components/global-styles/screen-root.js.map +1 -1
  186. package/build-module/components/global-styles/screen-style-variations.js +2 -2
  187. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  188. package/build-module/components/global-styles/screen-text-color.js +0 -1
  189. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  190. package/build-module/components/global-styles/screen-typography.js +3 -0
  191. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  192. package/build-module/components/global-styles/typography-utils.js +17 -5
  193. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  194. package/build-module/components/global-styles/ui.js +48 -5
  195. package/build-module/components/global-styles/ui.js.map +1 -1
  196. package/build-module/components/global-styles/use-global-styles-output.js +5 -1
  197. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  198. package/build-module/components/global-styles/utils.js +13 -5
  199. package/build-module/components/global-styles/utils.js.map +1 -1
  200. package/build-module/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -7
  201. package/build-module/components/global-styles-renderer/index.js.map +1 -0
  202. package/build-module/components/header-edit-mode/document-actions/index.js +22 -43
  203. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  204. package/build-module/components/header-edit-mode/index.js +16 -11
  205. package/build-module/components/header-edit-mode/index.js.map +1 -1
  206. package/build-module/components/keyboard-shortcuts/index.js +10 -1
  207. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  208. package/build-module/components/layout/index.js +173 -0
  209. package/build-module/components/layout/index.js.map +1 -0
  210. package/build-module/components/list/header.js +5 -1
  211. package/build-module/components/list/header.js.map +1 -1
  212. package/build-module/components/list/index.js +4 -19
  213. package/build-module/components/list/index.js.map +1 -1
  214. package/build-module/components/navigate-to-link/index.js +1 -3
  215. package/build-module/components/navigate-to-link/index.js.map +1 -1
  216. package/build-module/components/routes/index.js +1 -1
  217. package/build-module/components/routes/index.js.map +1 -1
  218. package/build-module/components/sidebar/index.js +33 -0
  219. package/build-module/components/sidebar/index.js.map +1 -0
  220. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +27 -7
  221. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  222. package/build-module/components/sidebar-edit-mode/index.js +6 -4
  223. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  224. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js +11 -1
  225. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  226. package/build-module/components/sidebar-navigation-item/index.js +40 -0
  227. package/build-module/components/sidebar-navigation-item/index.js.map +1 -0
  228. package/build-module/components/sidebar-navigation-screen/index.js +39 -0
  229. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -0
  230. package/build-module/components/sidebar-navigation-screen-main/index.js +32 -0
  231. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -0
  232. package/build-module/components/sidebar-navigation-screen-templates/index.js +147 -0
  233. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  234. package/build-module/components/site-hub/index.js +126 -0
  235. package/build-module/components/site-hub/index.js.map +1 -0
  236. package/build-module/components/site-icon/index.js +55 -0
  237. package/build-module/components/site-icon/index.js.map +1 -0
  238. package/build-module/components/style-book/index.js +156 -0
  239. package/build-module/components/style-book/index.js.map +1 -0
  240. package/build-module/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +4 -3
  241. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  242. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +43 -0
  243. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  244. package/build-module/components/use-edited-entity-record/index.js +48 -0
  245. package/build-module/components/use-edited-entity-record/index.js.map +1 -0
  246. package/build-module/hooks/index.js +1 -0
  247. package/build-module/hooks/index.js.map +1 -1
  248. package/build-module/hooks/push-changes-to-global-styles/index.js +132 -0
  249. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -0
  250. package/build-module/index.js +9 -36
  251. package/build-module/index.js.map +1 -1
  252. package/build-module/store/actions.js +87 -42
  253. package/build-module/store/actions.js.map +1 -1
  254. package/build-module/store/reducer.js +35 -102
  255. package/build-module/store/reducer.js.map +1 -1
  256. package/build-module/store/selectors.js +60 -72
  257. package/build-module/store/selectors.js.map +1 -1
  258. package/build-style/style-rtl.css +549 -352
  259. package/build-style/style.css +549 -352
  260. package/package.json +33 -31
  261. package/src/components/add-new-template/add-custom-template-modal.js +1 -0
  262. package/src/components/add-new-template/index.js +6 -3
  263. package/src/components/add-new-template/new-template-part.js +15 -3
  264. package/src/components/add-new-template/new-template.js +14 -7
  265. package/src/components/add-new-template/style.scss +0 -4
  266. package/src/components/app/index.js +14 -43
  267. package/src/components/block-editor/editor-canvas.js +69 -0
  268. package/src/components/block-editor/index.js +100 -87
  269. package/src/components/block-editor/resizable-editor.js +9 -64
  270. package/src/components/block-editor/style.scss +25 -1
  271. package/src/components/code-editor/style.scss +1 -1
  272. package/src/components/editor/index.js +157 -238
  273. package/src/components/editor/style.scss +0 -22
  274. package/src/components/global-styles/block-preview-panel.js +44 -0
  275. package/src/components/global-styles/border-panel.js +0 -1
  276. package/src/components/global-styles/context-menu.js +11 -2
  277. package/src/components/global-styles/custom-css.js +74 -0
  278. package/src/components/global-styles/dimensions-panel.js +2 -5
  279. package/src/components/global-styles/global-styles-provider.js +50 -22
  280. package/src/components/global-styles/hooks.js +8 -3
  281. package/src/components/global-styles/palette.js +1 -1
  282. package/src/components/global-styles/screen-background-color.js +0 -1
  283. package/src/components/global-styles/screen-block-list.js +2 -1
  284. package/src/components/global-styles/screen-block.js +6 -1
  285. package/src/components/global-styles/screen-border.js +25 -0
  286. package/src/components/global-styles/screen-button-color.js +0 -2
  287. package/src/components/global-styles/screen-colors.js +5 -1
  288. package/src/components/global-styles/screen-css.js +33 -0
  289. package/src/components/global-styles/screen-heading-color.js +1 -3
  290. package/src/components/global-styles/screen-layout.js +2 -3
  291. package/src/components/global-styles/screen-link-color.js +0 -1
  292. package/src/components/global-styles/screen-root.js +37 -1
  293. package/src/components/global-styles/screen-style-variations.js +5 -2
  294. package/src/components/global-styles/screen-text-color.js +0 -1
  295. package/src/components/global-styles/screen-typography.js +3 -0
  296. package/src/components/global-styles/style.scss +31 -2
  297. package/src/components/global-styles/test/typography-utils.js +72 -23
  298. package/src/components/global-styles/typography-utils.js +24 -4
  299. package/src/components/global-styles/ui.js +47 -4
  300. package/src/components/global-styles/use-global-styles-output.js +5 -0
  301. package/src/components/global-styles/utils.js +18 -6
  302. package/src/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +3 -9
  303. package/src/components/header-edit-mode/document-actions/index.js +31 -45
  304. package/src/components/header-edit-mode/document-actions/style.scss +8 -1
  305. package/src/components/header-edit-mode/index.js +96 -78
  306. package/src/components/header-edit-mode/style.scss +6 -33
  307. package/src/components/keyboard-shortcuts/index.js +13 -0
  308. package/src/components/layout/index.js +235 -0
  309. package/src/components/layout/style.scss +183 -0
  310. package/src/components/list/header.js +5 -1
  311. package/src/components/list/index.js +12 -31
  312. package/src/components/list/style.scss +3 -4
  313. package/src/components/navigate-to-link/index.js +2 -8
  314. package/src/components/routes/index.js +1 -1
  315. package/src/components/sidebar/index.js +37 -0
  316. package/src/components/sidebar/style.scss +8 -0
  317. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +42 -7
  318. package/src/components/sidebar-edit-mode/index.js +4 -4
  319. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js +10 -0
  320. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/style.scss +21 -3
  321. package/src/components/sidebar-edit-mode/settings-header/style.scss +47 -34
  322. package/src/components/sidebar-edit-mode/style.scss +0 -13
  323. package/src/components/sidebar-navigation-item/index.js +51 -0
  324. package/src/components/sidebar-navigation-item/style.scss +17 -0
  325. package/src/components/sidebar-navigation-screen/index.js +55 -0
  326. package/src/components/sidebar-navigation-screen/style.scss +39 -0
  327. package/src/components/sidebar-navigation-screen-main/index.js +44 -0
  328. package/src/components/sidebar-navigation-screen-templates/index.js +163 -0
  329. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  330. package/src/components/site-hub/index.js +150 -0
  331. package/src/components/site-hub/style.scss +31 -0
  332. package/src/components/site-icon/index.js +56 -0
  333. package/src/components/site-icon/style.scss +10 -0
  334. package/src/components/style-book/index.js +193 -0
  335. package/src/components/style-book/style.scss +78 -0
  336. package/src/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +3 -3
  337. package/src/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +36 -0
  338. package/src/components/template-details/style.scss +4 -0
  339. package/src/components/use-edited-entity-record/index.js +37 -0
  340. package/src/hooks/index.js +1 -0
  341. package/src/hooks/push-changes-to-global-styles/index.js +162 -0
  342. package/src/hooks/push-changes-to-global-styles/style.scss +4 -0
  343. package/src/index.js +5 -53
  344. package/src/store/actions.js +93 -48
  345. package/src/store/reducer.js +29 -91
  346. package/src/store/selectors.js +61 -101
  347. package/src/store/test/actions.js +3 -15
  348. package/src/store/test/reducer.js +8 -192
  349. package/src/store/test/selectors.js +3 -42
  350. package/src/style.scss +21 -3
  351. package/build/components/editor/global-styles-renderer.js.map +0 -1
  352. package/build/components/navigation-sidebar/index.js +0 -62
  353. package/build/components/navigation-sidebar/index.js.map +0 -1
  354. package/build/components/navigation-sidebar/navigation-panel/constants.js +0 -77
  355. package/build/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  356. package/build/components/navigation-sidebar/navigation-panel/index.js +0 -152
  357. package/build/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  358. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  359. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  360. package/build/components/navigation-sidebar/navigation-toggle/index.js +0 -124
  361. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  362. package/build/components/url-query-controller/index.js.map +0 -1
  363. package/build-module/components/editor/global-styles-renderer.js.map +0 -1
  364. package/build-module/components/navigation-sidebar/index.js +0 -45
  365. package/build-module/components/navigation-sidebar/index.js.map +0 -1
  366. package/build-module/components/navigation-sidebar/navigation-panel/constants.js +0 -49
  367. package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  368. package/build-module/components/navigation-sidebar/navigation-panel/index.js +0 -131
  369. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  370. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -66
  371. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  372. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +0 -108
  373. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  374. package/build-module/components/url-query-controller/index.js.map +0 -1
  375. package/src/components/navigation-sidebar/index.js +0 -46
  376. package/src/components/navigation-sidebar/navigation-panel/constants.js +0 -94
  377. package/src/components/navigation-sidebar/navigation-panel/index.js +0 -142
  378. package/src/components/navigation-sidebar/navigation-panel/style.scss +0 -152
  379. package/src/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  380. package/src/components/navigation-sidebar/navigation-toggle/index.js +0 -114
  381. package/src/components/navigation-sidebar/navigation-toggle/style.scss +0 -71
  382. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +0 -65
@@ -0,0 +1,44 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { BlockPreview } from '@wordpress/block-editor';
5
+ import { getBlockType, getBlockFromExample } from '@wordpress/blocks';
6
+ import { useResizeObserver } from '@wordpress/compose';
7
+ import { __experimentalSpacer as Spacer } from '@wordpress/components';
8
+
9
+ const BlockPreviewPanel = ( { name } ) => {
10
+ const [
11
+ containerResizeListener,
12
+ { width: containerWidth, height: containerHeight },
13
+ ] = useResizeObserver();
14
+ const blockExample = getBlockType( name )?.example;
15
+ const blocks = blockExample && getBlockFromExample( name, blockExample );
16
+ const viewportWidth = blockExample?.viewportWidth || containerWidth;
17
+ const minHeight = containerHeight;
18
+
19
+ return ! blockExample ? null : (
20
+ <Spacer marginX={ 4 } marginBottom={ 4 }>
21
+ <div className="edit-site-global-styles__block-preview-panel">
22
+ { containerResizeListener }
23
+
24
+ <BlockPreview
25
+ blocks={ blocks }
26
+ viewportWidth={ viewportWidth }
27
+ __experimentalMinHeight={ minHeight }
28
+ __experimentalStyles={ [
29
+ {
30
+ css: `
31
+ body{
32
+ min-height:${ minHeight }px;
33
+ display:flex;align-items:center;justify-content:center;
34
+ }
35
+ `,
36
+ },
37
+ ] }
38
+ />
39
+ </div>
40
+ </Spacer>
41
+ );
42
+ };
43
+
44
+ export default BlockPreviewPanel;
@@ -184,7 +184,6 @@ export default function BorderPanel( { name } ) {
184
184
  popoverOffset={ 40 }
185
185
  popoverPlacement="left-start"
186
186
  value={ border }
187
- __experimentalHasMultipleOrigins={ true }
188
187
  __experimentalIsRenderedInSidebar={ true }
189
188
  size={ '__unstable-large' }
190
189
  />
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
5
- import { typography, color, layout } from '@wordpress/icons';
5
+ import { typography, border, color, layout } from '@wordpress/icons';
6
6
  import { __ } from '@wordpress/i18n';
7
7
 
8
8
  /**
@@ -19,7 +19,7 @@ function ContextMenu( { name, parentMenu = '' } ) {
19
19
  const hasColorPanel = useHasColorPanel( name );
20
20
  const hasBorderPanel = useHasBorderPanel( name );
21
21
  const hasDimensionsPanel = useHasDimensionsPanel( name );
22
- const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
22
+ const hasLayoutPanel = hasDimensionsPanel;
23
23
 
24
24
  return (
25
25
  <ItemGroup>
@@ -41,6 +41,15 @@ function ContextMenu( { name, parentMenu = '' } ) {
41
41
  { __( 'Colors' ) }
42
42
  </NavigationButtonAsItem>
43
43
  ) }
44
+ { hasBorderPanel && (
45
+ <NavigationButtonAsItem
46
+ icon={ border }
47
+ path={ parentMenu + '/border' }
48
+ aria-label={ __( 'Border styles' ) }
49
+ >
50
+ { __( 'Border' ) }
51
+ </NavigationButtonAsItem>
52
+ ) }
44
53
  { hasLayoutPanel && (
45
54
  <NavigationButtonAsItem
46
55
  icon={ layout }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { TextareaControl, Panel, PanelBody } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { useStyle } from './hooks';
11
+
12
+ function CustomCSSControl() {
13
+ const [ customCSS, setCustomCSS ] = useStyle( 'css' );
14
+ const [ themeCSS ] = useStyle( 'css', null, 'base' );
15
+ const ignoreThemeCustomCSS = '/* IgnoreThemeCustomCSS */';
16
+
17
+ // If there is custom css from theme.json show it in the edit box
18
+ // so the user can selectively overwrite it, rather than have the user CSS
19
+ // completely overwrite the theme CSS by default.
20
+ const themeCustomCSS =
21
+ ! customCSS && themeCSS
22
+ ? `/* ${ __(
23
+ 'Theme Custom CSS start'
24
+ ) } */\n${ themeCSS }\n/* ${ __( 'Theme Custom CSS end' ) } */`
25
+ : undefined;
26
+
27
+ function handleOnChange( value ) {
28
+ // If there is theme custom CSS, but the user clears the input box then save the
29
+ // ignoreThemeCustomCSS string so that the theme custom CSS is not re-applied.
30
+ if ( themeCSS && value === '' ) {
31
+ setCustomCSS( ignoreThemeCustomCSS );
32
+ return;
33
+ }
34
+ setCustomCSS( value );
35
+ }
36
+
37
+ const originalThemeCustomCSS =
38
+ themeCSS && customCSS && themeCustomCSS !== customCSS
39
+ ? themeCSS
40
+ : undefined;
41
+
42
+ return (
43
+ <>
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
+ { originalThemeCustomCSS && (
59
+ <Panel>
60
+ <PanelBody
61
+ title={ __( 'Original Theme Custom CSS' ) }
62
+ initialOpen={ false }
63
+ >
64
+ <pre className="edit-site-global-styles__custom-css-theme-css">
65
+ { originalThemeCustomCSS }
66
+ </pre>
67
+ </PanelBody>
68
+ </Panel>
69
+ ) }
70
+ </>
71
+ );
72
+ }
73
+
74
+ export default CustomCSSControl;
@@ -18,6 +18,7 @@ import {
18
18
  } from '@wordpress/components';
19
19
  import {
20
20
  __experimentalUseCustomSides as useCustomSides,
21
+ __experimentalHeightControl as HeightControl,
21
22
  __experimentalSpacingSizesControl as SpacingSizesControl,
22
23
  } from '@wordpress/block-editor';
23
24
  import { Icon, positionCenter, stretchWide } from '@wordpress/icons';
@@ -556,19 +557,15 @@ export default function DimensionsPanel( { name } ) {
556
557
  ) }
557
558
  { showMinHeightControl && (
558
559
  <ToolsPanelItem
559
- className="single-column"
560
560
  hasValue={ hasMinHeightValue }
561
561
  label={ __( 'Min. height' ) }
562
562
  onDeselect={ resetMinHeightValue }
563
563
  isShownByDefault={ true }
564
564
  >
565
- <UnitControl
565
+ <HeightControl
566
566
  label={ __( 'Min. height' ) }
567
567
  value={ minHeightValue }
568
568
  onChange={ setMinHeightValue }
569
- units={ units }
570
- min={ 0 }
571
- size={ '__unstable-large' }
572
569
  />
573
570
  </ToolsPanelItem>
574
571
  ) }
@@ -45,22 +45,44 @@ const cleanEmptyObject = ( object ) => {
45
45
  };
46
46
 
47
47
  function useGlobalStylesUserConfig() {
48
- const { globalStylesId, settings, styles } = useSelect( ( select ) => {
49
- const _globalStylesId =
50
- select( coreStore ).__experimentalGetCurrentGlobalStylesId();
51
- const record = _globalStylesId
52
- ? select( coreStore ).getEditedEntityRecord(
53
- 'root',
54
- 'globalStyles',
55
- _globalStylesId
56
- )
57
- : undefined;
58
- return {
59
- globalStylesId: _globalStylesId,
60
- settings: record?.settings,
61
- styles: record?.styles,
62
- };
63
- }, [] );
48
+ const { globalStylesId, isReady, settings, styles } = useSelect(
49
+ ( select ) => {
50
+ const { getEditedEntityRecord, hasFinishedResolution } =
51
+ select( coreStore );
52
+ const _globalStylesId =
53
+ select( coreStore ).__experimentalGetCurrentGlobalStylesId();
54
+ const record = _globalStylesId
55
+ ? getEditedEntityRecord(
56
+ 'root',
57
+ 'globalStyles',
58
+ _globalStylesId
59
+ )
60
+ : undefined;
61
+
62
+ let hasResolved = false;
63
+ if (
64
+ hasFinishedResolution(
65
+ '__experimentalGetCurrentGlobalStylesId'
66
+ )
67
+ ) {
68
+ hasResolved = _globalStylesId
69
+ ? hasFinishedResolution( 'getEditedEntityRecord', [
70
+ 'root',
71
+ 'globalStyles',
72
+ _globalStylesId,
73
+ ] )
74
+ : true;
75
+ }
76
+
77
+ return {
78
+ globalStylesId: _globalStylesId,
79
+ isReady: hasResolved,
80
+ settings: record?.settings,
81
+ styles: record?.styles,
82
+ };
83
+ },
84
+ []
85
+ );
64
86
 
65
87
  const { getEditedEntityRecord } = useSelect( coreStore );
66
88
  const { editEntityRecord } = useDispatch( coreStore );
@@ -72,7 +94,7 @@ function useGlobalStylesUserConfig() {
72
94
  }, [ settings, styles ] );
73
95
 
74
96
  const setConfig = useCallback(
75
- ( callback ) => {
97
+ ( callback, options = {} ) => {
76
98
  const record = getEditedEntityRecord(
77
99
  'root',
78
100
  'globalStyles',
@@ -83,15 +105,21 @@ function useGlobalStylesUserConfig() {
83
105
  settings: record?.settings ?? {},
84
106
  };
85
107
  const updatedConfig = callback( currentConfig );
86
- editEntityRecord( 'root', 'globalStyles', globalStylesId, {
87
- styles: cleanEmptyObject( updatedConfig.styles ) || {},
88
- settings: cleanEmptyObject( updatedConfig.settings ) || {},
89
- } );
108
+ editEntityRecord(
109
+ 'root',
110
+ 'globalStyles',
111
+ globalStylesId,
112
+ {
113
+ styles: cleanEmptyObject( updatedConfig.styles ) || {},
114
+ settings: cleanEmptyObject( updatedConfig.settings ) || {},
115
+ },
116
+ options
117
+ );
90
118
  },
91
119
  [ globalStylesId ]
92
120
  );
93
121
 
94
- return [ !! settings || !! styles, config, setConfig ];
122
+ return [ isReady, config, setConfig ];
95
123
  }
96
124
 
97
125
  function useGlobalStylesBaseConfig() {
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get, set, isEqual } from 'lodash';
4
+ import fastDeepEqual from 'fast-deep-equal/es6';
5
+ import { get, set } from 'lodash';
5
6
  import { colord, extend } from 'colord';
6
7
  import a11yPlugin from 'colord/plugins/a11y';
7
8
 
@@ -29,7 +30,7 @@ const EMPTY_CONFIG = { settings: {}, styles: {} };
29
30
 
30
31
  export const useGlobalStylesReset = () => {
31
32
  const { user: config, setUserConfig } = useContext( GlobalStylesContext );
32
- const canReset = !! config && ! isEqual( config, EMPTY_CONFIG );
33
+ const canReset = !! config && ! fastDeepEqual( config, EMPTY_CONFIG );
33
34
  return [
34
35
  canReset,
35
36
  useCallback(
@@ -137,7 +138,11 @@ export function useStyle( path, blockName, source = 'all' ) {
137
138
  result = getValueFromVariable(
138
139
  mergedConfig,
139
140
  blockName,
140
- get( userConfig, finalPath ) ?? get( baseConfig, finalPath )
141
+ // The stlyes.css path is allowed to be empty, so don't revert to base if undefined.
142
+ finalPath === 'styles.css'
143
+ ? get( userConfig, finalPath )
144
+ : get( userConfig, finalPath ) ??
145
+ get( baseConfig, finalPath )
141
146
  );
142
147
  break;
143
148
  case 'user':
@@ -49,7 +49,7 @@ function Palette( { name } ) {
49
49
 
50
50
  const screenPath = ! name
51
51
  ? '/colors/palette'
52
- : '/blocks/' + name + '/colors/palette';
52
+ : '/blocks/' + encodeURIComponent( name ) + '/colors/palette';
53
53
  const paletteButtonText =
54
54
  colors.length > 0
55
55
  ? sprintf(
@@ -96,7 +96,6 @@ function ScreenBackgroundColor( { name } ) {
96
96
  gradients={ gradientsPerOrigin }
97
97
  disableCustomColors={ ! areCustomSolidsEnabled }
98
98
  disableCustomGradients={ ! areCustomGradientsEnabled }
99
- __experimentalHasMultipleOrigins
100
99
  showTitle={ false }
101
100
  enableAlpha
102
101
  __experimentalIsRenderedInSidebar
@@ -68,7 +68,7 @@ function BlockMenuItem( { block } ) {
68
68
 
69
69
  return (
70
70
  <NavigationButtonAsItem
71
- path={ '/blocks/' + block.name }
71
+ path={ '/blocks/' + encodeURIComponent( block.name ) }
72
72
  aria-label={ navigationButtonLabel }
73
73
  >
74
74
  <HStack justify="flex-start">
@@ -129,6 +129,7 @@ function ScreenBlockList() {
129
129
  ) }
130
130
  />
131
131
  <SearchControl
132
+ __nextHasNoMarginBottom
132
133
  className="edit-site-block-types-search"
133
134
  onChange={ setFilterValue }
134
135
  value={ filterValue }
@@ -8,6 +8,7 @@ import { getBlockType } from '@wordpress/blocks';
8
8
  */
9
9
  import ContextMenu from './context-menu';
10
10
  import ScreenHeader from './header';
11
+ import BlockPreviewPanel from './block-preview-panel';
11
12
 
12
13
  function ScreenBlock( { name } ) {
13
14
  const blockType = getBlockType( name );
@@ -15,7 +16,11 @@ function ScreenBlock( { name } ) {
15
16
  return (
16
17
  <>
17
18
  <ScreenHeader title={ blockType.title } />
18
- <ContextMenu parentMenu={ '/blocks/' + name } name={ name } />
19
+ <BlockPreviewPanel name={ name } />
20
+ <ContextMenu
21
+ parentMenu={ '/blocks/' + encodeURIComponent( name ) }
22
+ name={ name }
23
+ />
19
24
  </>
20
25
  );
21
26
  }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import ScreenHeader from './header';
10
+ import BorderPanel, { useHasBorderPanel } from './border-panel';
11
+ import BlockPreviewPanel from './block-preview-panel';
12
+
13
+ function ScreenBorder( { name } ) {
14
+ const hasBorderPanel = useHasBorderPanel( name );
15
+
16
+ return (
17
+ <>
18
+ <ScreenHeader title={ __( 'Border' ) } />
19
+ <BlockPreviewPanel name={ name } />
20
+ { hasBorderPanel && <BorderPanel name={ name } /> }
21
+ </>
22
+ );
23
+ }
24
+
25
+ export default ScreenBorder;
@@ -70,7 +70,6 @@ function ScreenButtonColor( { name } ) {
70
70
  className="edit-site-screen-button-color__control"
71
71
  colors={ colorsPerOrigin }
72
72
  disableCustomColors={ ! areCustomSolidsEnabled }
73
- __experimentalHasMultipleOrigins
74
73
  showTitle={ false }
75
74
  enableAlpha
76
75
  __experimentalIsRenderedInSidebar
@@ -87,7 +86,6 @@ function ScreenButtonColor( { name } ) {
87
86
  className="edit-site-screen-button-color__control"
88
87
  colors={ colorsPerOrigin }
89
88
  disableCustomColors={ ! areCustomSolidsEnabled }
90
- __experimentalHasMultipleOrigins
91
89
  showTitle={ false }
92
90
  enableAlpha
93
91
  __experimentalIsRenderedInSidebar
@@ -20,6 +20,7 @@ import { NavigationButtonAsItem } from './navigation-button';
20
20
  import { getSupportedGlobalStylesPanels, useStyle } from './hooks';
21
21
  import Subtitle from './subtitle';
22
22
  import ColorIndicatorWrapper from './color-indicator-wrapper';
23
+ import BlockPreviewPanel from './block-preview-panel';
23
24
 
24
25
  function BackgroundColorItem( { name, parentMenu } ) {
25
26
  const supports = getSupportedGlobalStylesPanels( name );
@@ -174,7 +175,8 @@ function ButtonColorItem( { name, parentMenu } ) {
174
175
  }
175
176
 
176
177
  function ScreenColors( { name } ) {
177
- const parentMenu = name === undefined ? '' : '/blocks/' + name;
178
+ const parentMenu =
179
+ name === undefined ? '' : '/blocks/' + encodeURIComponent( name );
178
180
 
179
181
  return (
180
182
  <>
@@ -185,6 +187,8 @@ function ScreenColors( { name } ) {
185
187
  ) }
186
188
  />
187
189
 
190
+ <BlockPreviewPanel name={ name } />
191
+
188
192
  <div className="edit-site-global-styles-screen-colors">
189
193
  <VStack spacing={ 10 }>
190
194
  <Palette name={ name } />
@@ -0,0 +1,33 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { __experimentalVStack as VStack } from '@wordpress/components';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import ScreenHeader from './header';
11
+ import Subtitle from './subtitle';
12
+ import CustomCSSControl from './custom-css';
13
+
14
+ function ScreenCSS() {
15
+ return (
16
+ <>
17
+ <ScreenHeader
18
+ title={ __( 'CSS' ) }
19
+ description={ __(
20
+ 'Add your own CSS to customize the appearance and layout of your site.'
21
+ ) }
22
+ />
23
+ <div className="edit-site-global-styles-screen-css">
24
+ <VStack spacing={ 3 }>
25
+ <Subtitle>{ __( 'ADDITIONAL CSS' ) }</Subtitle>
26
+ <CustomCSSControl />
27
+ </VStack>
28
+ </div>
29
+ </>
30
+ );
31
+ }
32
+
33
+ export default ScreenCSS;
@@ -132,7 +132,7 @@ function ScreenHeadingColor( { name } ) {
132
132
  >
133
133
  <ToggleGroupControlOption
134
134
  value="heading"
135
- /* translators: 'All' refers to selecting all heading levels
135
+ /* translators: 'All' refers to selecting all heading levels
136
136
  and applying the same style to h1-h6. */
137
137
  label={ __( 'All' ) }
138
138
  />
@@ -159,7 +159,6 @@ function ScreenHeadingColor( { name } ) {
159
159
  className="edit-site-screen-heading-text-color__control"
160
160
  colors={ colorsPerOrigin }
161
161
  disableCustomColors={ ! areCustomSolidsEnabled }
162
- __experimentalHasMultipleOrigins
163
162
  showTitle={ false }
164
163
  enableAlpha
165
164
  __experimentalIsRenderedInSidebar
@@ -186,7 +185,6 @@ function ScreenHeadingColor( { name } ) {
186
185
  gradients={ gradientsPerOrigin }
187
186
  disableCustomColors={ ! areCustomSolidsEnabled }
188
187
  disableCustomGradients={ ! areCustomGradientsEnabled }
189
- __experimentalHasMultipleOrigins
190
188
  showTitle={ false }
191
189
  enableAlpha
192
190
  __experimentalIsRenderedInSidebar
@@ -6,19 +6,18 @@ import { __ } from '@wordpress/i18n';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import BorderPanel, { useHasBorderPanel } from './border-panel';
10
9
  import DimensionsPanel, { useHasDimensionsPanel } from './dimensions-panel';
11
10
  import ScreenHeader from './header';
11
+ import BlockPreviewPanel from './block-preview-panel';
12
12
 
13
13
  function ScreenLayout( { name } ) {
14
- const hasBorderPanel = useHasBorderPanel( name );
15
14
  const hasDimensionsPanel = useHasDimensionsPanel( name );
16
15
 
17
16
  return (
18
17
  <>
19
18
  <ScreenHeader title={ __( 'Layout' ) } />
19
+ <BlockPreviewPanel name={ name } />
20
20
  { hasDimensionsPanel && <DimensionsPanel name={ name } /> }
21
- { hasBorderPanel && <BorderPanel name={ name } /> }
22
21
  </>
23
22
  );
24
23
  }
@@ -90,7 +90,6 @@ function ScreenLinkColor( { name } ) {
90
90
  className="edit-site-screen-link-color__control"
91
91
  colors={ colorsPerOrigin }
92
92
  disableCustomColors={ ! areCustomSolidsEnabled }
93
- __experimentalHasMultipleOrigins
94
93
  showTitle={ false }
95
94
  enableAlpha
96
95
  __experimentalIsRenderedInSidebar
@@ -35,6 +35,8 @@ function ScreenRoot() {
35
35
  };
36
36
  }, [] );
37
37
 
38
+ const __experimentalGlobalStylesCustomCSS =
39
+ window?.__experimentalEnableGlobalStylesCustomCSS;
38
40
  return (
39
41
  <Card size="small">
40
42
  <CardBody>
@@ -75,7 +77,8 @@ function ScreenRoot() {
75
77
  paddingTop={ 2 }
76
78
  /*
77
79
  * 13px matches the text inset of the NavigationButton (12px padding, plus the width of the button's border).
78
- * This is an ad hoc override for this particular instance only and should be reconsidered before making into a pattern.
80
+ * This is an ad hoc override for this instance and the Addtional CSS option below. Other options for matching the
81
+ * the nav button inset should be looked at before reusing further.
79
82
  */
80
83
  paddingX="13px"
81
84
  marginBottom={ 4 }
@@ -98,6 +101,39 @@ function ScreenRoot() {
98
101
  </NavigationButtonAsItem>
99
102
  </ItemGroup>
100
103
  </CardBody>
104
+
105
+ { __experimentalGlobalStylesCustomCSS && (
106
+ <>
107
+ <CardDivider />
108
+ <CardBody>
109
+ <Spacer
110
+ as="p"
111
+ paddingTop={ 2 }
112
+ paddingX="13px"
113
+ marginBottom={ 4 }
114
+ >
115
+ { __(
116
+ 'Add your own CSS to customize the appearance and layout of your site.'
117
+ ) }
118
+ </Spacer>
119
+ <ItemGroup>
120
+ <NavigationButtonAsItem
121
+ path="/css"
122
+ aria-label={ __( 'Additional CSS' ) }
123
+ >
124
+ <HStack justify="space-between">
125
+ <FlexItem>{ __( 'Custom' ) }</FlexItem>
126
+ <IconWithCurrentColor
127
+ icon={
128
+ isRTL() ? chevronLeft : chevronRight
129
+ }
130
+ />
131
+ </HStack>
132
+ </NavigationButtonAsItem>
133
+ </ItemGroup>
134
+ </CardBody>
135
+ </>
136
+ ) }
101
137
  </Card>
102
138
  );
103
139
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEqual } from 'lodash';
5
4
  import classnames from 'classnames';
5
+ import fastDeepEqual from 'fast-deep-equal/es6';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -34,7 +34,10 @@ import StylesPreview from './preview';
34
34
  import ScreenHeader from './header';
35
35
 
36
36
  function compareVariations( a, b ) {
37
- return isEqual( a.styles, b.styles ) && isEqual( a.settings, b.settings );
37
+ return (
38
+ fastDeepEqual( a.styles, b.styles ) &&
39
+ fastDeepEqual( a.settings, b.settings )
40
+ );
38
41
  }
39
42
 
40
43
  function Variation( { variation } ) {
@@ -47,7 +47,6 @@ function ScreenTextColor( { name } ) {
47
47
  className="edit-site-screen-text-color__control"
48
48
  colors={ colorsPerOrigin }
49
49
  disableCustomColors={ ! areCustomSolidsEnabled }
50
- __experimentalHasMultipleOrigins
51
50
  showTitle={ false }
52
51
  enableAlpha
53
52
  __experimentalIsRenderedInSidebar
@@ -17,6 +17,7 @@ import { NavigationButtonAsItem } from './navigation-button';
17
17
  import { useStyle } from './hooks';
18
18
  import Subtitle from './subtitle';
19
19
  import TypographyPanel from './typography-panel';
20
+ import BlockPreviewPanel from './block-preview-panel';
20
21
 
21
22
  function Item( { name, parentMenu, element, label } ) {
22
23
  const hasSupport = ! name;
@@ -87,6 +88,8 @@ function ScreenTypography( { name } ) {
87
88
  ) }
88
89
  />
89
90
 
91
+ <BlockPreviewPanel name={ name } />
92
+
90
93
  { ! name && (
91
94
  <div className="edit-site-global-styles-screen-typography">
92
95
  <VStack spacing={ 3 }>