@wordpress/edit-site 5.33.0 → 5.34.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 (272) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-page/index.js +3 -0
  3. package/build/components/add-new-page/index.js.map +1 -1
  4. package/build/components/add-new-pattern/index.js +8 -7
  5. package/build/components/add-new-pattern/index.js.map +1 -1
  6. package/build/components/add-new-template/add-custom-generic-template-modal-content.js +3 -0
  7. package/build/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -1
  8. package/build/components/add-new-template/add-custom-template-modal-content.js +3 -1
  9. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  10. package/build/components/block-editor/resize-handle.js +20 -5
  11. package/build/components/block-editor/resize-handle.js.map +1 -1
  12. package/build/components/create-template-part-modal/index.js +3 -0
  13. package/build/components/create-template-part-modal/index.js.map +1 -1
  14. package/build/components/editor/index.js +28 -5
  15. package/build/components/editor/index.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/context.js +9 -3
  17. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/font-collection.js +7 -2
  19. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/installed-fonts.js +22 -20
  21. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js +6 -2
  23. package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +1 -1
  24. package/build/components/global-styles/style-variations-container.js +8 -2
  25. package/build/components/global-styles/style-variations-container.js.map +1 -1
  26. package/build/components/header-edit-mode/index.js +33 -49
  27. package/build/components/header-edit-mode/index.js.map +1 -1
  28. package/build/components/header-edit-mode/more-menu/index.js +3 -97
  29. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  30. package/build/components/keyboard-shortcuts/register.js +0 -49
  31. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  32. package/build/components/layout/index.js +7 -4
  33. package/build/components/layout/index.js.map +1 -1
  34. package/build/components/layout/router.js +9 -38
  35. package/build/components/layout/router.js.map +1 -1
  36. package/build/components/page-pages/index.js +4 -3
  37. package/build/components/page-pages/index.js.map +1 -1
  38. package/build/components/page-patterns/dataviews-pattern-actions.js +11 -7
  39. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  40. package/build/components/page-patterns/header.js +3 -1
  41. package/build/components/page-patterns/header.js.map +1 -1
  42. package/build/components/page-patterns/index.js +20 -49
  43. package/build/components/page-patterns/index.js.map +1 -1
  44. package/build/components/page-patterns/use-patterns.js +1 -0
  45. package/build/components/page-patterns/use-patterns.js.map +1 -1
  46. package/build/components/page-templates/hooks.js.map +1 -0
  47. package/build/components/{page-templates-template-parts → page-templates}/index.js +67 -80
  48. package/build/components/page-templates/index.js.map +1 -0
  49. package/build/components/pattern-modal/duplicate.js +7 -5
  50. package/build/components/pattern-modal/duplicate.js.map +1 -1
  51. package/build/components/plugin-template-setting-panel/index.js +9 -0
  52. package/build/components/plugin-template-setting-panel/index.js.map +1 -1
  53. package/build/components/resizable-frame/index.js +9 -6
  54. package/build/components/resizable-frame/index.js.map +1 -1
  55. package/build/components/sidebar-edit-mode/index.js +3 -2
  56. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  57. package/build/components/sidebar-edit-mode/page-panels/index.js +40 -9
  58. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  59. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +24 -17
  60. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  61. package/build/components/sidebar-edit-mode/template-panel/index.js +2 -5
  62. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  63. package/build/components/sidebar-navigation-screen-page/index.js +39 -8
  64. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  65. package/build/components/sidebar-navigation-screen-pattern/index.js +6 -13
  66. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  67. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -1
  68. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  69. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  70. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  71. package/build/components/sidebar-navigation-screen-patterns/category-item.js +3 -2
  72. package/build/components/sidebar-navigation-screen-patterns/category-item.js.map +1 -1
  73. package/build/components/sidebar-navigation-screen-patterns/index.js +34 -28
  74. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  75. package/build/components/sidebar-navigation-screen-template/index.js +1 -1
  76. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-templates-browse/content.js +3 -3
  78. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  79. package/build/components/sidebar-navigation-screen-templates-browse/index.js +5 -35
  80. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  81. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +0 -8
  82. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  83. package/build/components/template-actions/index.js +1 -1
  84. package/build/components/template-actions/index.js.map +1 -1
  85. package/build/deprecated.js +55 -0
  86. package/build/deprecated.js.map +1 -0
  87. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +35 -4
  88. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  89. package/build/index.js +18 -18
  90. package/build/index.js.map +1 -1
  91. package/build/utils/constants.js +1 -2
  92. package/build/utils/constants.js.map +1 -1
  93. package/build-module/components/add-new-page/index.js +3 -0
  94. package/build-module/components/add-new-page/index.js.map +1 -1
  95. package/build-module/components/add-new-pattern/index.js +8 -7
  96. package/build-module/components/add-new-pattern/index.js.map +1 -1
  97. package/build-module/components/add-new-template/add-custom-generic-template-modal-content.js +3 -0
  98. package/build-module/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -1
  99. package/build-module/components/add-new-template/add-custom-template-modal-content.js +3 -1
  100. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  101. package/build-module/components/block-editor/resize-handle.js +21 -6
  102. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  103. package/build-module/components/create-template-part-modal/index.js +3 -0
  104. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  105. package/build-module/components/editor/index.js +28 -5
  106. package/build-module/components/editor/index.js.map +1 -1
  107. package/build-module/components/global-styles/font-library-modal/context.js +9 -3
  108. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  109. package/build-module/components/global-styles/font-library-modal/font-collection.js +7 -2
  110. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  111. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +22 -20
  112. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  113. package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js +6 -2
  114. package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +1 -1
  115. package/build-module/components/global-styles/style-variations-container.js +8 -2
  116. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  117. package/build-module/components/header-edit-mode/index.js +39 -55
  118. package/build-module/components/header-edit-mode/index.js.map +1 -1
  119. package/build-module/components/header-edit-mode/more-menu/index.js +5 -99
  120. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  121. package/build-module/components/keyboard-shortcuts/register.js +0 -49
  122. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  123. package/build-module/components/layout/index.js +7 -4
  124. package/build-module/components/layout/index.js.map +1 -1
  125. package/build-module/components/layout/router.js +9 -38
  126. package/build-module/components/layout/router.js.map +1 -1
  127. package/build-module/components/page-pages/index.js +5 -4
  128. package/build-module/components/page-pages/index.js.map +1 -1
  129. package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -7
  130. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  131. package/build-module/components/page-patterns/header.js +3 -1
  132. package/build-module/components/page-patterns/header.js.map +1 -1
  133. package/build-module/components/page-patterns/index.js +22 -51
  134. package/build-module/components/page-patterns/index.js.map +1 -1
  135. package/build-module/components/page-patterns/use-patterns.js +1 -0
  136. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  137. package/build-module/components/page-templates/hooks.js.map +1 -0
  138. package/build-module/components/{page-templates-template-parts → page-templates}/index.js +67 -80
  139. package/build-module/components/page-templates/index.js.map +1 -0
  140. package/build-module/components/pattern-modal/duplicate.js +7 -5
  141. package/build-module/components/pattern-modal/duplicate.js.map +1 -1
  142. package/build-module/components/plugin-template-setting-panel/index.js +8 -0
  143. package/build-module/components/plugin-template-setting-panel/index.js.map +1 -1
  144. package/build-module/components/resizable-frame/index.js +9 -6
  145. package/build-module/components/resizable-frame/index.js.map +1 -1
  146. package/build-module/components/sidebar-edit-mode/index.js +4 -3
  147. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  148. package/build-module/components/sidebar-edit-mode/page-panels/index.js +43 -12
  149. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  150. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +25 -17
  151. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  152. package/build-module/components/sidebar-edit-mode/template-panel/index.js +3 -6
  153. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  154. package/build-module/components/sidebar-navigation-screen-page/index.js +40 -9
  155. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  156. package/build-module/components/sidebar-navigation-screen-pattern/index.js +6 -13
  157. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  158. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -1
  159. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  160. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  161. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  162. package/build-module/components/sidebar-navigation-screen-patterns/category-item.js +3 -2
  163. package/build-module/components/sidebar-navigation-screen-patterns/category-item.js.map +1 -1
  164. package/build-module/components/sidebar-navigation-screen-patterns/index.js +35 -29
  165. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  166. package/build-module/components/sidebar-navigation-screen-template/index.js +1 -1
  167. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  168. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +3 -3
  169. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  170. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +5 -35
  171. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  172. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +0 -8
  173. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  174. package/build-module/components/template-actions/index.js +1 -1
  175. package/build-module/components/template-actions/index.js.map +1 -1
  176. package/build-module/deprecated.js +45 -0
  177. package/build-module/deprecated.js.map +1 -0
  178. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +34 -4
  179. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  180. package/build-module/index.js +2 -4
  181. package/build-module/index.js.map +1 -1
  182. package/build-module/utils/constants.js +0 -1
  183. package/build-module/utils/constants.js.map +1 -1
  184. package/build-style/style-rtl.css +79 -125
  185. package/build-style/style.css +79 -125
  186. package/package.json +42 -42
  187. package/src/components/add-new-page/index.js +7 -1
  188. package/src/components/add-new-pattern/index.js +15 -12
  189. package/src/components/add-new-template/add-custom-generic-template-modal-content.js +3 -0
  190. package/src/components/add-new-template/add-custom-template-modal-content.js +3 -1
  191. package/src/components/block-editor/resize-handle.js +30 -11
  192. package/src/components/block-editor/style.scss +10 -15
  193. package/src/components/create-template-part-modal/index.js +3 -0
  194. package/src/components/editor/index.js +42 -3
  195. package/src/components/editor/style.scss +6 -1
  196. package/src/components/global-styles/font-library-modal/context.js +9 -3
  197. package/src/components/global-styles/font-library-modal/font-collection.js +31 -12
  198. package/src/components/global-styles/font-library-modal/installed-fonts.js +82 -54
  199. package/src/components/global-styles/font-library-modal/style.scss +17 -0
  200. package/src/components/global-styles/font-library-modal/utils/sort-font-faces.js +6 -2
  201. package/src/components/global-styles/style-variations-container.js +11 -2
  202. package/src/components/header-edit-mode/index.js +56 -76
  203. package/src/components/header-edit-mode/more-menu/index.js +8 -145
  204. package/src/components/header-edit-mode/style.scss +13 -85
  205. package/src/components/keyboard-shortcuts/register.js +0 -58
  206. package/src/components/layout/index.js +11 -2
  207. package/src/components/layout/router.js +9 -49
  208. package/src/components/page-pages/index.js +14 -4
  209. package/src/components/page-pages/style.scss +11 -0
  210. package/src/components/page-patterns/dataviews-pattern-actions.js +8 -9
  211. package/src/components/page-patterns/header.js +3 -1
  212. package/src/components/page-patterns/index.js +17 -76
  213. package/src/components/page-patterns/style.scss +14 -1
  214. package/src/components/page-patterns/use-patterns.js +1 -0
  215. package/src/components/{page-templates-template-parts → page-templates}/index.js +23 -46
  216. package/src/components/{page-templates-template-parts → page-templates}/style.scss +2 -2
  217. package/src/components/pattern-modal/duplicate.js +4 -3
  218. package/src/components/plugin-template-setting-panel/index.js +8 -0
  219. package/src/components/resizable-frame/index.js +4 -3
  220. package/src/components/sidebar-edit-mode/index.js +13 -2
  221. package/src/components/sidebar-edit-mode/page-panels/index.js +49 -21
  222. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +31 -19
  223. package/src/components/sidebar-edit-mode/template-panel/index.js +2 -12
  224. package/src/components/sidebar-navigation-screen-page/index.js +48 -9
  225. package/src/components/sidebar-navigation-screen-pattern/index.js +6 -11
  226. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -1
  227. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  228. package/src/components/sidebar-navigation-screen-patterns/category-item.js +2 -1
  229. package/src/components/sidebar-navigation-screen-patterns/index.js +30 -38
  230. package/src/components/sidebar-navigation-screen-template/index.js +1 -1
  231. package/src/components/sidebar-navigation-screen-templates-browse/content.js +3 -3
  232. package/src/components/sidebar-navigation-screen-templates-browse/index.js +7 -39
  233. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +0 -4
  234. package/src/components/template-actions/index.js +1 -1
  235. package/src/deprecated.js +42 -0
  236. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +69 -16
  237. package/src/index.js +2 -9
  238. package/src/style.scss +1 -5
  239. package/src/utils/constants.js +1 -1
  240. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js +0 -59
  241. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +0 -1
  242. package/build/components/header-edit-mode/tools-more-menu-group/index.js +0 -23
  243. package/build/components/header-edit-mode/tools-more-menu-group/index.js.map +0 -1
  244. package/build/components/keyboard-shortcuts/edit-mode.js +0 -56
  245. package/build/components/keyboard-shortcuts/edit-mode.js.map +0 -1
  246. package/build/components/page-templates-template-parts/add-new-template-part.js +0 -65
  247. package/build/components/page-templates-template-parts/add-new-template-part.js.map +0 -1
  248. package/build/components/page-templates-template-parts/hooks.js.map +0 -1
  249. package/build/components/page-templates-template-parts/index.js.map +0 -1
  250. package/build/components/sidebar-edit-mode/page-panels/page-status.js +0 -188
  251. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +0 -1
  252. package/build-module/components/header-edit-mode/more-menu/copy-content-menu-item.js +0 -52
  253. package/build-module/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +0 -1
  254. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js +0 -16
  255. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js.map +0 -1
  256. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -49
  257. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +0 -1
  258. package/build-module/components/page-templates-template-parts/add-new-template-part.js +0 -57
  259. package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +0 -1
  260. package/build-module/components/page-templates-template-parts/hooks.js.map +0 -1
  261. package/build-module/components/page-templates-template-parts/index.js.map +0 -1
  262. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +0 -180
  263. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +0 -1
  264. package/src/components/header-edit-mode/more-menu/copy-content-menu-item.js +0 -51
  265. package/src/components/header-edit-mode/tools-more-menu-group/index.js +0 -16
  266. package/src/components/keyboard-shortcuts/edit-mode.js +0 -59
  267. package/src/components/page-templates-template-parts/add-new-template-part.js +0 -62
  268. package/src/components/sidebar-edit-mode/page-panels/page-status.js +0 -249
  269. package/src/components/sidebar-edit-mode/page-panels/style.scss +0 -34
  270. /package/build/components/{page-templates-template-parts → page-templates}/hooks.js +0 -0
  271. /package/build-module/components/{page-templates-template-parts → page-templates}/hooks.js +0 -0
  272. /package/src/components/{page-templates-template-parts → page-templates}/hooks.js +0 -0
@@ -31,7 +31,6 @@
31
31
  display: block;
32
32
  width: 100%;
33
33
  height: 100%;
34
- background: $white;
35
34
  }
36
35
 
37
36
  .edit-site-visual-editor__editor-canvas {
@@ -106,39 +105,35 @@
106
105
 
107
106
  &::after {
108
107
  position: absolute;
109
- top: $grid-unit-30;
108
+ top: $grid-unit-20;
110
109
  left: $grid-unit-05;
111
110
  right: 0;
112
- bottom: $grid-unit-30;
111
+ bottom: $grid-unit-20;
113
112
  content: "";
114
113
  width: $grid-unit-05;
115
- background: $gray-600;
114
+ background-color: rgba($gray-700, 0.4);
116
115
  border-radius: $radius-block-ui;
117
116
  }
118
117
 
119
118
  &.is-left {
120
- left: -$grid-unit-20;
119
+ // Subtract half of the handle width to properly center.
120
+ left: -$grid-unit-20 - math.div($grid-unit-05, 2);
121
121
  }
122
122
 
123
123
  &.is-right {
124
- right: -$grid-unit-20;
124
+ // Subtract half of the handle width to properly center.
125
+ right: -$grid-unit-20 - math.div($grid-unit-05, 2);
125
126
  }
126
127
 
127
128
  &:hover,
129
+ &:focus,
128
130
  &:active {
129
131
  opacity: 1;
130
- &.is-variation-default::after {
131
- background: $gray-400;
132
- }
133
- &.is-variation-separator::after {
134
- background: var(--wp-admin-theme-color);
132
+ &::after {
133
+ background-color: var(--wp-admin-theme-color);
135
134
  }
136
135
  }
137
136
 
138
- &:focus::after {
139
- box-shadow: 0 0 0 1px $gray-800, 0 0 0 calc(var(--wp-admin-border-width-focus) + 1px) var(--wp-admin-theme-color);
140
- }
141
-
142
137
  &.is-variation-separator:focus::after {
143
138
  border-radius: $radius-block-ui;
144
139
  box-shadow: inset 0 0 0 2px var(--wp-admin-theme-color);
@@ -127,6 +127,7 @@ export function CreateTemplatePartModalContents( {
127
127
  >
128
128
  <VStack spacing="4">
129
129
  <TextControl
130
+ __next40pxDefaultSize
130
131
  __nextHasNoMarginBottom
131
132
  label={ __( 'Name' ) }
132
133
  value={ title }
@@ -174,6 +175,7 @@ export function CreateTemplatePartModalContents( {
174
175
  </BaseControl>
175
176
  <HStack justify="right">
176
177
  <Button
178
+ __next40pxDefaultSize
177
179
  variant="tertiary"
178
180
  onClick={ () => {
179
181
  closeModal();
@@ -182,6 +184,7 @@ export function CreateTemplatePartModalContents( {
182
184
  { __( 'Cancel' ) }
183
185
  </Button>
184
186
  <Button
187
+ __next40pxDefaultSize
185
188
  variant="primary"
186
189
  type="submit"
187
190
  aria-disabled={ ! title || isSubmitting }
@@ -34,6 +34,8 @@ import {
34
34
  } from '@wordpress/editor';
35
35
  import { __, sprintf } from '@wordpress/i18n';
36
36
  import { store as coreDataStore } from '@wordpress/core-data';
37
+ import { privateApis as blockLibraryPrivateApis } from '@wordpress/block-library';
38
+ import { useState, useCallback } from '@wordpress/element';
37
39
 
38
40
  /**
39
41
  * Internal dependencies
@@ -44,7 +46,6 @@ import {
44
46
  } from '../sidebar-edit-mode';
45
47
  import CodeEditor from '../code-editor';
46
48
  import Header from '../header-edit-mode';
47
- import KeyboardShortcutsEditMode from '../keyboard-shortcuts/edit-mode';
48
49
  import WelcomeGuide from '../welcome-guide';
49
50
  import StartTemplateOptions from '../start-template-options';
50
51
  import { store as editSiteStore } from '../../store';
@@ -66,8 +67,11 @@ const {
66
67
  InterfaceSkeleton,
67
68
  ComplementaryArea,
68
69
  interfaceStore,
70
+ SavePublishPanels,
69
71
  } = unlock( editorPrivateApis );
70
72
 
73
+ const { BlockKeyboardShortcuts } = unlock( blockLibraryPrivateApis );
74
+
71
75
  const interfaceLabels = {
72
76
  /* translators: accessibility text for the editor content landmark region. */
73
77
  body: __( 'Editor content' ),
@@ -187,6 +191,22 @@ export default function Editor( { isLoading, onClick } ) {
187
191
  const { closeGeneralSidebar } = useDispatch( editSiteStore );
188
192
 
189
193
  const settings = useSpecificEditorSettings();
194
+
195
+ // Local state for save panel.
196
+ // Note 'truthy' callback implies an open panel.
197
+ const [ entitiesSavedStatesCallback, setEntitiesSavedStatesCallback ] =
198
+ useState( false );
199
+
200
+ const closeEntitiesSavedStates = useCallback(
201
+ ( arg ) => {
202
+ if ( typeof entitiesSavedStatesCallback === 'function' ) {
203
+ entitiesSavedStatesCallback( arg );
204
+ }
205
+ setEntitiesSavedStatesCallback( false );
206
+ },
207
+ [ entitiesSavedStatesCallback ]
208
+ );
209
+
190
210
  const isReady =
191
211
  ! isLoading &&
192
212
  ( ( postWithTemplate && !! contextPost && !! editedPost ) ||
@@ -221,6 +241,8 @@ export default function Editor( { isLoading, onClick } ) {
221
241
  'edit-site-editor__interface-skeleton',
222
242
  {
223
243
  'show-icon-labels': showIconLabels,
244
+ 'is-entity-save-view-open':
245
+ !! entitiesSavedStatesCallback,
224
246
  }
225
247
  ) }
226
248
  header={
@@ -247,11 +269,28 @@ export default function Editor( { isLoading, onClick } ) {
247
269
  ease: [ 0.6, 0, 0.4, 1 ],
248
270
  } }
249
271
  >
250
- <Header />
272
+ <Header
273
+ setEntitiesSavedStatesCallback={
274
+ setEntitiesSavedStatesCallback
275
+ }
276
+ />
251
277
  </motion.div>
252
278
  ) }
253
279
  </AnimatePresence>
254
280
  }
281
+ actions={
282
+ <SavePublishPanels
283
+ closeEntitiesSavedStates={
284
+ closeEntitiesSavedStates
285
+ }
286
+ isEntitiesSavedStatesOpen={
287
+ entitiesSavedStatesCallback
288
+ }
289
+ setEntitiesSavedStatesCallback={
290
+ setEntitiesSavedStatesCallback
291
+ }
292
+ />
293
+ }
255
294
  notices={ <EditorSnackbars /> }
256
295
  content={
257
296
  <>
@@ -275,9 +314,9 @@ export default function Editor( { isLoading, onClick } ) {
275
314
  ) }
276
315
  { isEditMode && (
277
316
  <>
278
- <KeyboardShortcutsEditMode />
279
317
  <EditorKeyboardShortcutsRegister />
280
318
  <EditorKeyboardShortcuts />
319
+ <BlockKeyboardShortcuts />
281
320
  </>
282
321
  ) }
283
322
  </>
@@ -22,11 +22,16 @@
22
22
  justify-content: center;
23
23
  }
24
24
 
25
+ // Adjust the position of the notices when breadcrumbs are present
26
+ .edit-site .has-block-breadcrumbs.is-full-canvas .components-editor-notices__snackbar {
27
+ bottom: 40px;
28
+ }
29
+
25
30
  // Adjust the position of the notices
26
31
  .edit-site .components-editor-notices__snackbar {
27
32
  position: absolute;
28
33
  right: 0;
29
- bottom: 40px;
34
+ bottom: 16px;
30
35
  padding-left: 16px;
31
36
  padding-right: 16px;
32
37
  }
@@ -496,11 +496,15 @@ function FontLibraryProvider( { children } ) {
496
496
 
497
497
  const loadFontFaceAsset = async ( fontFace ) => {
498
498
  // If the font doesn't have a src, don't load it.
499
- if ( ! fontFace.src ) return;
499
+ if ( ! fontFace.src ) {
500
+ return;
501
+ }
500
502
  // Get the src of the font.
501
503
  const src = getDisplaySrcFromFontFace( fontFace.src );
502
504
  // If the font is already loaded, don't load it again.
503
- if ( ! src || loadedFontUrls.has( src ) ) return;
505
+ if ( ! src || loadedFontUrls.has( src ) ) {
506
+ return;
507
+ }
504
508
  // Load the font in the browser.
505
509
  loadFontFaceInBrowser( fontFace, src, 'document' );
506
510
  // Add the font to the loaded fonts list.
@@ -518,7 +522,9 @@ function FontLibraryProvider( { children } ) {
518
522
  const hasData = !! collections.find(
519
523
  ( collection ) => collection.slug === slug
520
524
  )?.font_families;
521
- if ( hasData ) return;
525
+ if ( hasData ) {
526
+ return;
527
+ }
522
528
  const response = await fetchFontCollection( slug );
523
529
  const updatedCollections = collections.map( ( collection ) =>
524
530
  collection.slug === slug
@@ -332,18 +332,37 @@ function FontCollection( { slug } ) {
332
332
  ) }
333
333
 
334
334
  <div className="font-library-modal__fonts-grid__main">
335
- { items.map( ( font ) => (
336
- <FontCard
337
- key={ font.font_family_settings.slug }
338
- font={ font.font_family_settings }
339
- navigatorPath={ '/fontFamily' }
340
- onClick={ () => {
341
- setSelectedFont(
342
- font.font_family_settings
343
- );
344
- } }
345
- />
346
- ) ) }
335
+ { /*
336
+ * Disable reason: The `list` ARIA role is redundant but
337
+ * Safari+VoiceOver won't announce the list otherwise.
338
+ */
339
+ /* eslint-disable jsx-a11y/no-redundant-roles */ }
340
+ <ul
341
+ role="list"
342
+ className="font-library-modal__fonts-list"
343
+ >
344
+ { items.map( ( font ) => (
345
+ <li
346
+ key={
347
+ font.font_family_settings.slug
348
+ }
349
+ className="font-library-modal__fonts-list-item"
350
+ >
351
+ <FontCard
352
+ font={
353
+ font.font_family_settings
354
+ }
355
+ navigatorPath={ '/fontFamily' }
356
+ onClick={ () => {
357
+ setSelectedFont(
358
+ font.font_family_settings
359
+ );
360
+ } }
361
+ />
362
+ </li>
363
+ ) ) }
364
+ </ul>
365
+ { /* eslint-enable jsx-a11y/no-redundant-roles */ }{ ' ' }
347
366
  </div>
348
367
  </NavigatorScreen>
349
368
 
@@ -126,66 +126,94 @@ function InstalledFonts() {
126
126
  }
127
127
  >
128
128
  <NavigatorScreen path="/">
129
- { notice && (
130
- <>
131
- <Spacer margin={ 1 } />
129
+ <VStack spacing="8">
130
+ { notice && (
132
131
  <Notice
133
132
  status={ notice.type }
134
133
  onRemove={ () => setNotice( null ) }
135
134
  >
136
135
  { notice.message }
137
136
  </Notice>
138
- <Spacer margin={ 1 } />
139
- </>
140
- ) }
141
- { baseCustomFonts.length > 0 && (
142
- <>
143
- <Text className="font-library-modal__subtitle">
144
- { __( 'Installed Fonts' ) }
145
- </Text>
146
- <Spacer margin={ 2 } />
147
- { baseCustomFonts.map( ( font ) => (
148
- <FontCard
149
- font={ font }
150
- key={ font.slug }
151
- navigatorPath={ '/fontFamily' }
152
- variantsText={ getFontCardVariantsText(
153
- font
154
- ) }
155
- onClick={ () => {
156
- handleSetLibraryFontSelected(
157
- font
158
- );
159
- } }
160
- />
161
- ) ) }
162
- <Spacer margin={ 8 } />
163
- </>
164
- ) }
165
-
166
- { baseThemeFonts.length > 0 && (
167
- <>
168
- <Text className="font-library-modal__subtitle">
169
- { __( 'Theme Fonts' ) }
170
- </Text>
171
- <Spacer margin={ 2 } />
172
- { baseThemeFonts.map( ( font ) => (
173
- <FontCard
174
- font={ font }
175
- key={ font.slug }
176
- navigatorPath={ '/fontFamily' }
177
- variantsText={ getFontCardVariantsText(
178
- font
179
- ) }
180
- onClick={ () => {
181
- handleSetLibraryFontSelected(
182
- font
183
- );
184
- } }
185
- />
186
- ) ) }
187
- </>
188
- ) }
137
+ ) }
138
+ { baseCustomFonts.length > 0 && (
139
+ <VStack>
140
+ <h2 className="font-library-modal__fonts-title">
141
+ { __( 'Installed Fonts' ) }
142
+ </h2>
143
+ { /*
144
+ * Disable reason: The `list` ARIA role is redundant but
145
+ * Safari+VoiceOver won't announce the list otherwise.
146
+ */
147
+ /* eslint-disable jsx-a11y/no-redundant-roles */ }
148
+ <ul
149
+ role="list"
150
+ className="font-library-modal__fonts-list"
151
+ >
152
+ { baseCustomFonts.map( ( font ) => (
153
+ <li
154
+ key={ font.slug }
155
+ className="font-library-modal__fonts-list-item"
156
+ >
157
+ <FontCard
158
+ font={ font }
159
+ navigatorPath={
160
+ '/fontFamily'
161
+ }
162
+ variantsText={ getFontCardVariantsText(
163
+ font
164
+ ) }
165
+ onClick={ () => {
166
+ handleSetLibraryFontSelected(
167
+ font
168
+ );
169
+ } }
170
+ />
171
+ </li>
172
+ ) ) }
173
+ </ul>
174
+ { /* eslint-enable jsx-a11y/no-redundant-roles */ }
175
+ </VStack>
176
+ ) }
177
+ { baseThemeFonts.length > 0 && (
178
+ <VStack>
179
+ <h2 className="font-library-modal__fonts-title">
180
+ { __( 'Theme Fonts' ) }
181
+ </h2>
182
+ { /*
183
+ * Disable reason: The `list` ARIA role is redundant but
184
+ * Safari+VoiceOver won't announce the list otherwise.
185
+ */
186
+ /* eslint-disable jsx-a11y/no-redundant-roles */ }
187
+ <ul
188
+ role="list"
189
+ className="font-library-modal__fonts-list"
190
+ >
191
+ { baseThemeFonts.map( ( font ) => (
192
+ <li
193
+ key={ font.slug }
194
+ className="font-library-modal__fonts-list-item"
195
+ >
196
+ <FontCard
197
+ font={ font }
198
+ navigatorPath={
199
+ '/fontFamily'
200
+ }
201
+ variantsText={ getFontCardVariantsText(
202
+ font
203
+ ) }
204
+ onClick={ () => {
205
+ handleSetLibraryFontSelected(
206
+ font
207
+ );
208
+ } }
209
+ />
210
+ </li>
211
+ ) ) }
212
+ </ul>
213
+ { /* eslint-enable jsx-a11y/no-redundant-roles */ }
214
+ </VStack>
215
+ ) }
216
+ </VStack>
189
217
  </NavigatorScreen>
190
218
 
191
219
  <NavigatorScreen path="/fontFamily">
@@ -66,6 +66,23 @@ $footer-height: 70px;
66
66
  margin-bottom: 0;
67
67
  }
68
68
 
69
+ .font-library-modal__fonts-title {
70
+ text-transform: uppercase;
71
+ font-size: 11px;
72
+ font-weight: 600;
73
+ margin-top: 0;
74
+ margin-bottom: 0;
75
+ }
76
+
77
+ .font-library-modal__fonts-list {
78
+ margin-top: 0;
79
+ margin-bottom: 0;
80
+ }
81
+
82
+ .font-library-modal__fonts-list-item {
83
+ margin-bottom: 0;
84
+ }
85
+
69
86
  .font-library-modal__font-card {
70
87
  border: 1px solid $gray-200;
71
88
  width: 100%;
@@ -16,8 +16,12 @@ function getNumericFontWeight( value ) {
16
16
  export function sortFontFaces( faces ) {
17
17
  return faces.sort( ( a, b ) => {
18
18
  // Ensure 'normal' fontStyle is always first
19
- if ( a.fontStyle === 'normal' && b.fontStyle !== 'normal' ) return -1;
20
- if ( b.fontStyle === 'normal' && a.fontStyle !== 'normal' ) return 1;
19
+ if ( a.fontStyle === 'normal' && b.fontStyle !== 'normal' ) {
20
+ return -1;
21
+ }
22
+ if ( b.fontStyle === 'normal' && a.fontStyle !== 'normal' ) {
23
+ return 1;
24
+ }
21
25
 
22
26
  // If both fontStyles are the same, sort by fontWeight
23
27
  if ( a.fontStyle === b.fontStyle ) {
@@ -12,6 +12,7 @@ import { __ } from '@wordpress/i18n';
12
12
  */
13
13
  import PreviewStyles from './preview-styles';
14
14
  import Variation from './variations/variation';
15
+ import { isVariationWithSingleProperty } from '../../hooks/use-theme-style-variations/use-theme-style-variations-by-property';
15
16
 
16
17
  export default function StyleVariationsContainer( { gap = 2 } ) {
17
18
  const variations = useSelect( ( select ) => {
@@ -20,6 +21,14 @@ export default function StyleVariationsContainer( { gap = 2 } ) {
20
21
  ).__experimentalGetCurrentThemeGlobalStylesVariations();
21
22
  }, [] );
22
23
 
24
+ // Filter out variations that are of single property type, i.e. color or typography variations.
25
+ const multiplePropertyVariations = variations?.filter( ( variation ) => {
26
+ return (
27
+ ! isVariationWithSingleProperty( variation, 'color' ) &&
28
+ ! isVariationWithSingleProperty( variation, 'typography' )
29
+ );
30
+ } );
31
+
23
32
  const withEmptyVariation = useMemo( () => {
24
33
  return [
25
34
  {
@@ -27,13 +36,13 @@ export default function StyleVariationsContainer( { gap = 2 } ) {
27
36
  settings: {},
28
37
  styles: {},
29
38
  },
30
- ...( variations ?? [] ).map( ( variation ) => ( {
39
+ ...( multiplePropertyVariations ?? [] ).map( ( variation ) => ( {
31
40
  ...variation,
32
41
  settings: variation.settings ?? {},
33
42
  styles: variation.styles ?? {},
34
43
  } ) ),
35
44
  ];
36
- }, [ variations ] );
45
+ }, [ multiplePropertyVariations ] );
37
46
 
38
47
  return (
39
48
  <Grid