@wordpress/edit-site 5.28.2 → 5.29.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 (258) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +18 -8
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/block-editor/use-site-editor-settings.js +2 -1
  5. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  6. package/build/components/code-editor/index.js +3 -2
  7. package/build/components/code-editor/index.js.map +1 -1
  8. package/build/components/editor/index.js +4 -4
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor-canvas-container/index.js +1 -1
  11. package/build/components/editor-canvas-container/index.js.map +1 -1
  12. package/build/components/global-styles/block-preview-panel.js +2 -2
  13. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  15. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/font-collection.js +84 -7
  17. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  19. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/installed-fonts.js +10 -7
  21. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  22. package/build/components/header-edit-mode/document-tools/index.js +1 -2
  23. package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
  24. package/build/components/header-edit-mode/index.js +3 -1
  25. package/build/components/header-edit-mode/index.js.map +1 -1
  26. package/build/components/header-edit-mode/more-menu/index.js +7 -4
  27. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  28. package/build/components/keyboard-shortcuts/edit-mode.js +0 -13
  29. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  30. package/build/components/keyboard-shortcuts/register.js +0 -18
  31. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  32. package/build/components/layout/index.js +8 -4
  33. package/build/components/layout/index.js.map +1 -1
  34. package/build/components/layout/router.js +26 -5
  35. package/build/components/layout/router.js.map +1 -1
  36. package/build/components/page-patterns/dataviews-pattern-actions.js +25 -8
  37. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  38. package/build/components/page-patterns/header.js +2 -1
  39. package/build/components/page-patterns/header.js.map +1 -1
  40. package/build/components/page-patterns/index.js +0 -1
  41. package/build/components/page-patterns/index.js.map +1 -1
  42. package/build/components/page-patterns/use-patterns.js +10 -5
  43. package/build/components/page-patterns/use-patterns.js.map +1 -1
  44. package/build/components/page-templates-template-parts/index.js +1 -0
  45. package/build/components/page-templates-template-parts/index.js.map +1 -1
  46. package/build/components/save-button/index.js +2 -1
  47. package/build/components/save-button/index.js.map +1 -1
  48. package/build/components/sidebar/index.js +5 -2
  49. package/build/components/sidebar/index.js.map +1 -1
  50. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  51. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  52. package/build/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  53. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  54. package/build/components/sidebar-edit-mode/template-panel/index.js +48 -5
  55. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  56. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  57. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  58. package/build/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  59. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  60. package/build/components/sidebar-navigation-screen-pages/index.js +3 -1
  61. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  62. package/build/components/style-book/index.js +2 -0
  63. package/build/components/style-book/index.js.map +1 -1
  64. package/build/hooks/commands/use-edit-mode-commands.js +3 -171
  65. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  66. package/build/hooks/index.js +0 -1
  67. package/build/hooks/index.js.map +1 -1
  68. package/build/hooks/push-changes-to-global-styles/index.js +4 -5
  69. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  70. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +91 -0
  71. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  72. package/build/store/actions.js +19 -50
  73. package/build/store/actions.js.map +1 -1
  74. package/build/store/private-actions.js +3 -1
  75. package/build/store/private-actions.js.map +1 -1
  76. package/build/utils/clone-deep.js +15 -0
  77. package/build/utils/clone-deep.js.map +1 -0
  78. package/build-module/components/add-new-pattern/index.js +18 -8
  79. package/build-module/components/add-new-pattern/index.js.map +1 -1
  80. package/build-module/components/block-editor/use-site-editor-settings.js +2 -1
  81. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  82. package/build-module/components/code-editor/index.js +3 -2
  83. package/build-module/components/code-editor/index.js.map +1 -1
  84. package/build-module/components/editor/index.js +4 -4
  85. package/build-module/components/editor/index.js.map +1 -1
  86. package/build-module/components/editor-canvas-container/index.js +2 -2
  87. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  88. package/build-module/components/global-styles/block-preview-panel.js +2 -2
  89. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  90. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  91. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  92. package/build-module/components/global-styles/font-library-modal/font-collection.js +87 -10
  93. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  94. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  95. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  96. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +11 -8
  97. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  98. package/build-module/components/header-edit-mode/document-tools/index.js +1 -2
  99. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
  100. package/build-module/components/header-edit-mode/index.js +3 -1
  101. package/build-module/components/header-edit-mode/index.js.map +1 -1
  102. package/build-module/components/header-edit-mode/more-menu/index.js +6 -3
  103. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  104. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -13
  105. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  106. package/build-module/components/keyboard-shortcuts/register.js +0 -18
  107. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  108. package/build-module/components/layout/index.js +9 -5
  109. package/build-module/components/layout/index.js.map +1 -1
  110. package/build-module/components/layout/router.js +26 -5
  111. package/build-module/components/layout/router.js.map +1 -1
  112. package/build-module/components/page-patterns/dataviews-pattern-actions.js +25 -8
  113. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  114. package/build-module/components/page-patterns/header.js +2 -1
  115. package/build-module/components/page-patterns/header.js.map +1 -1
  116. package/build-module/components/page-patterns/index.js +0 -1
  117. package/build-module/components/page-patterns/index.js.map +1 -1
  118. package/build-module/components/page-patterns/use-patterns.js +10 -5
  119. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  120. package/build-module/components/page-templates-template-parts/index.js +1 -0
  121. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  122. package/build-module/components/save-button/index.js +2 -1
  123. package/build-module/components/save-button/index.js.map +1 -1
  124. package/build-module/components/sidebar/index.js +5 -2
  125. package/build-module/components/sidebar/index.js.map +1 -1
  126. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  127. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  128. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  129. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  130. package/build-module/components/sidebar-edit-mode/template-panel/index.js +50 -7
  131. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  132. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  133. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  134. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  135. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  136. package/build-module/components/sidebar-navigation-screen-pages/index.js +3 -1
  137. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  138. package/build-module/components/style-book/index.js +2 -0
  139. package/build-module/components/style-book/index.js.map +1 -1
  140. package/build-module/hooks/commands/use-edit-mode-commands.js +4 -172
  141. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  142. package/build-module/hooks/index.js +0 -1
  143. package/build-module/hooks/index.js.map +1 -1
  144. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -3
  145. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  146. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +82 -0
  147. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  148. package/build-module/store/actions.js +19 -50
  149. package/build-module/store/actions.js.map +1 -1
  150. package/build-module/store/private-actions.js +3 -1
  151. package/build-module/store/private-actions.js.map +1 -1
  152. package/build-module/utils/clone-deep.js +9 -0
  153. package/build-module/utils/clone-deep.js.map +1 -0
  154. package/build-style/style-rtl.css +46 -209
  155. package/build-style/style.css +46 -209
  156. package/package.json +43 -42
  157. package/src/components/add-new-pattern/index.js +27 -11
  158. package/src/components/block-editor/use-site-editor-settings.js +1 -0
  159. package/src/components/code-editor/index.js +3 -2
  160. package/src/components/editor/index.js +11 -7
  161. package/src/components/editor-canvas-container/index.js +2 -5
  162. package/src/components/{test → error-boundary/test}/error-boundary.js +7 -5
  163. package/src/components/global-styles/block-preview-panel.js +2 -2
  164. package/src/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  165. package/src/components/global-styles/font-library-modal/font-collection.js +118 -13
  166. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  167. package/src/components/global-styles/font-library-modal/installed-fonts.js +25 -23
  168. package/src/components/global-styles/font-library-modal/style.scss +2 -5
  169. package/src/components/global-styles/screen-revisions/style.scss +2 -2
  170. package/src/components/global-styles/style.scss +1 -1
  171. package/src/components/header-edit-mode/document-tools/index.js +1 -2
  172. package/src/components/header-edit-mode/index.js +1 -1
  173. package/src/components/header-edit-mode/more-menu/index.js +8 -3
  174. package/src/components/keyboard-shortcuts/edit-mode.js +0 -11
  175. package/src/components/keyboard-shortcuts/register.js +0 -19
  176. package/src/components/layout/index.js +47 -32
  177. package/src/components/layout/router.js +31 -2
  178. package/src/components/layout/style.scss +7 -0
  179. package/src/components/page-patterns/dataviews-pattern-actions.js +41 -10
  180. package/src/components/page-patterns/header.js +1 -0
  181. package/src/components/page-patterns/index.js +0 -1
  182. package/src/components/page-patterns/style.scss +8 -180
  183. package/src/components/page-patterns/use-patterns.js +13 -5
  184. package/src/components/page-templates-template-parts/index.js +1 -0
  185. package/src/components/page-templates-template-parts/style.scss +6 -0
  186. package/src/components/save-button/index.js +2 -1
  187. package/src/components/save-hub/style.scss +1 -1
  188. package/src/components/sidebar/index.js +8 -3
  189. package/src/components/sidebar-button/style.scss +1 -1
  190. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +5 -7
  191. package/src/components/sidebar-edit-mode/style.scss +4 -0
  192. package/src/components/sidebar-edit-mode/template-panel/hooks.js +37 -24
  193. package/src/components/sidebar-edit-mode/template-panel/index.js +76 -18
  194. package/src/components/sidebar-edit-mode/template-panel/style.scss +5 -14
  195. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +1 -12
  196. package/src/components/sidebar-navigation-screen-global-styles/index.js +4 -1
  197. package/src/components/sidebar-navigation-screen-pages/index.js +10 -6
  198. package/src/components/style-book/index.js +5 -1
  199. package/src/hooks/commands/use-edit-mode-commands.js +3 -184
  200. package/src/hooks/index.js +0 -1
  201. package/src/hooks/push-changes-to-global-styles/index.js +1 -4
  202. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +964 -0
  203. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +92 -0
  204. package/src/store/actions.js +21 -85
  205. package/src/store/private-actions.js +4 -0
  206. package/src/store/test/actions.js +0 -75
  207. package/src/style.scss +1 -6
  208. package/src/utils/clone-deep.js +8 -0
  209. package/build/components/global-styles/font-library-modal/fonts-grid.js +0 -57
  210. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
  211. package/build/components/header-edit-mode/mode-switcher/index.js +0 -62
  212. package/build/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  213. package/build/components/page-patterns/duplicate-menu-item.js +0 -93
  214. package/build/components/page-patterns/duplicate-menu-item.js.map +0 -1
  215. package/build/components/page-patterns/grid-item.js +0 -223
  216. package/build/components/page-patterns/grid-item.js.map +0 -1
  217. package/build/components/page-patterns/grid.js +0 -31
  218. package/build/components/page-patterns/grid.js.map +0 -1
  219. package/build/components/page-patterns/no-patterns.js +0 -18
  220. package/build/components/page-patterns/no-patterns.js.map +0 -1
  221. package/build/components/page-patterns/patterns-list.js +0 -168
  222. package/build/components/page-patterns/patterns-list.js.map +0 -1
  223. package/build/components/page-patterns/rename-menu-item.js +0 -105
  224. package/build/components/page-patterns/rename-menu-item.js.map +0 -1
  225. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -83
  226. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  227. package/build/hooks/navigation-menu-edit.js +0 -82
  228. package/build/hooks/navigation-menu-edit.js.map +0 -1
  229. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +0 -50
  230. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
  231. package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -56
  232. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  233. package/build-module/components/page-patterns/duplicate-menu-item.js +0 -85
  234. package/build-module/components/page-patterns/duplicate-menu-item.js.map +0 -1
  235. package/build-module/components/page-patterns/grid-item.js +0 -215
  236. package/build-module/components/page-patterns/grid-item.js.map +0 -1
  237. package/build-module/components/page-patterns/grid.js +0 -23
  238. package/build-module/components/page-patterns/grid.js.map +0 -1
  239. package/build-module/components/page-patterns/no-patterns.js +0 -11
  240. package/build-module/components/page-patterns/no-patterns.js.map +0 -1
  241. package/build-module/components/page-patterns/patterns-list.js +0 -160
  242. package/build-module/components/page-patterns/patterns-list.js.map +0 -1
  243. package/build-module/components/page-patterns/rename-menu-item.js +0 -98
  244. package/build-module/components/page-patterns/rename-menu-item.js.map +0 -1
  245. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -76
  246. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  247. package/build-module/hooks/navigation-menu-edit.js +0 -75
  248. package/build-module/hooks/navigation-menu-edit.js.map +0 -1
  249. package/src/components/global-styles/font-library-modal/fonts-grid.js +0 -59
  250. package/src/components/header-edit-mode/mode-switcher/index.js +0 -60
  251. package/src/components/page-patterns/duplicate-menu-item.js +0 -105
  252. package/src/components/page-patterns/grid-item.js +0 -331
  253. package/src/components/page-patterns/grid.js +0 -22
  254. package/src/components/page-patterns/no-patterns.js +0 -12
  255. package/src/components/page-patterns/patterns-list.js +0 -229
  256. package/src/components/page-patterns/rename-menu-item.js +0 -132
  257. package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -89
  258. package/src/hooks/navigation-menu-edit.js +0 -92
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { Children, cloneElement, useState, useMemo } from '@wordpress/element';
4
+ import { Children, cloneElement, useState } from '@wordpress/element';
5
5
  import {
6
6
  Button,
7
7
  privateApis as componentsPrivateApis,
@@ -82,10 +82,6 @@ function EditorCanvasContainer( {
82
82
 
83
83
  const focusOnMountRef = useFocusOnMount( 'firstElement' );
84
84
  const sectionFocusReturnRef = useFocusReturn();
85
- const title = useMemo(
86
- () => getEditorCanvasContainerTitle( editorCanvasContainerView ),
87
- [ editorCanvasContainerView ]
88
- );
89
85
 
90
86
  function onCloseContainer() {
91
87
  setIsListViewOpened( showListViewByDefault );
@@ -119,6 +115,7 @@ function EditorCanvasContainer( {
119
115
  return null;
120
116
  }
121
117
 
118
+ const title = getEditorCanvasContainerTitle( editorCanvasContainerView );
122
119
  const shouldShowCloseButton = onClose || closeButtonLabel;
123
120
 
124
121
  return (
@@ -1,15 +1,17 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render } from '@testing-library/react';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
9
  import * as wpHooks from '@wordpress/hooks';
10
+
5
11
  /**
6
12
  * Internal dependencies
7
13
  */
8
- import ErrorBoundary from '../error-boundary';
9
- /**
10
- * External dependencies
11
- */
12
- import { render } from '@testing-library/react';
14
+ import ErrorBoundary from '../index';
13
15
 
14
16
  const theError = new Error( 'Kaboom' );
15
17
 
@@ -28,7 +28,7 @@ const BlockPreviewPanel = ( { name, variation = '' } ) => {
28
28
  }, [ name, blockExample, variation ] );
29
29
 
30
30
  const viewportWidth = blockExample?.viewportWidth ?? null;
31
- const previewHeight = '150px';
31
+ const previewHeight = 150;
32
32
 
33
33
  if ( ! blockExample ) {
34
34
  return null;
@@ -48,7 +48,7 @@ const BlockPreviewPanel = ( { name, variation = '' } ) => {
48
48
  {
49
49
  css: `
50
50
  body{
51
- min-height:${ previewHeight };
51
+ min-height:${ previewHeight }px;
52
52
  display:flex;align-items:center;justify-content:center;
53
53
  }
54
54
  `,
@@ -48,7 +48,7 @@ function CollectionFontDetails( {
48
48
  />
49
49
  ) ) }
50
50
  </VStack>
51
- <Spacer margin={ 8 } />
51
+ <Spacer margin={ 16 } />
52
52
  </>
53
53
  );
54
54
  }
@@ -1,11 +1,18 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useContext, useEffect, useState, useMemo } from '@wordpress/element';
4
+ import {
5
+ useContext,
6
+ useEffect,
7
+ useState,
8
+ useMemo,
9
+ createInterpolateElement,
10
+ } from '@wordpress/element';
5
11
  import {
6
12
  __experimentalSpacer as Spacer,
7
13
  __experimentalInputControl as InputControl,
8
14
  __experimentalText as Text,
15
+ __experimentalHStack as HStack,
9
16
  SelectControl,
10
17
  Spinner,
11
18
  Icon,
@@ -14,7 +21,7 @@ import {
14
21
  Button,
15
22
  } from '@wordpress/components';
16
23
  import { debounce } from '@wordpress/compose';
17
- import { __, _x } from '@wordpress/i18n';
24
+ import { sprintf, __, _x } from '@wordpress/i18n';
18
25
  import { search, closeSmall } from '@wordpress/icons';
19
26
 
20
27
  /**
@@ -22,7 +29,6 @@ import { search, closeSmall } from '@wordpress/icons';
22
29
  */
23
30
  import TabPanelLayout from './tab-panel-layout';
24
31
  import { FontLibraryContext } from './context';
25
- import FontsGrid from './fonts-grid';
26
32
  import FontCard from './font-card';
27
33
  import filterFonts from './utils/filter-fonts';
28
34
  import CollectionFontDetails from './collection-font-details';
@@ -48,6 +54,7 @@ function FontCollection( { slug } ) {
48
54
 
49
55
  const [ selectedFont, setSelectedFont ] = useState( null );
50
56
  const [ fontsToInstall, setFontsToInstall ] = useState( [] );
57
+ const [ page, setPage ] = useState( 1 );
51
58
  const [ filters, setFilters ] = useState( {} );
52
59
  const [ renderConfirmDialog, setRenderConfirmDialog ] = useState(
53
60
  requiresPermission && ! getGoogleFontsPermissionFromStorage()
@@ -109,22 +116,34 @@ function FontCollection( { slug } ) {
109
116
  [ collectionFonts, filters ]
110
117
  );
111
118
 
119
+ // NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px
120
+ // The height of each font family item is 61px.
121
+ const pageSize = Math.floor( ( window.innerHeight - 417 ) / 61 );
122
+ const totalPages = Math.ceil( fonts.length / pageSize );
123
+ const itemsStart = ( page - 1 ) * pageSize;
124
+ const itemsLimit = page * pageSize;
125
+ const items = fonts.slice( itemsStart, itemsLimit );
126
+
112
127
  const handleCategoryFilter = ( category ) => {
113
128
  setFilters( { ...filters, category } );
129
+ setPage( 1 );
114
130
  };
115
131
 
116
132
  const handleUpdateSearchInput = ( value ) => {
117
133
  setFilters( { ...filters, search: value } );
134
+ setPage( 1 );
118
135
  };
119
136
 
120
137
  const debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );
121
138
 
122
139
  const resetFilters = () => {
123
140
  setFilters( {} );
141
+ setPage( 1 );
124
142
  };
125
143
 
126
144
  const resetSearch = () => {
127
145
  setFilters( { ...filters, search: '' } );
146
+ setPage( 1 );
128
147
  };
129
148
 
130
149
  const handleUnselectFont = () => {
@@ -186,6 +205,24 @@ function FontCollection( { slug } ) {
186
205
  resetFontsToInstall();
187
206
  };
188
207
 
208
+ let footerComponent = null;
209
+ if ( selectedFont ) {
210
+ footerComponent = (
211
+ <InstallFooter
212
+ handleInstall={ handleInstall }
213
+ isDisabled={ fontsToInstall.length === 0 }
214
+ />
215
+ );
216
+ } else if ( ! renderConfirmDialog && totalPages > 1 ) {
217
+ footerComponent = (
218
+ <PaginationFooter
219
+ page={ page }
220
+ totalPages={ totalPages }
221
+ setPage={ setPage }
222
+ />
223
+ );
224
+ }
225
+
189
226
  return (
190
227
  <TabPanelLayout
191
228
  title={
@@ -198,12 +235,7 @@ function FontCollection( { slug } ) {
198
235
  }
199
236
  notice={ notice }
200
237
  handleBack={ !! selectedFont && handleUnselectFont }
201
- footer={
202
- <Footer
203
- handleInstall={ handleInstall }
204
- isDisabled={ fontsToInstall.length === 0 }
205
- />
206
- }
238
+ footer={ footerComponent }
207
239
  >
208
240
  { renderConfirmDialog && (
209
241
  <>
@@ -275,8 +307,8 @@ function FontCollection( { slug } ) {
275
307
  ) }
276
308
 
277
309
  { ! renderConfirmDialog && ! selectedFont && (
278
- <FontsGrid>
279
- { fonts.map( ( font ) => (
310
+ <div className="font-library-modal__fonts-grid__main">
311
+ { items.map( ( font ) => (
280
312
  <FontCard
281
313
  key={ font.font_family_settings.slug }
282
314
  font={ font.font_family_settings }
@@ -285,13 +317,86 @@ function FontCollection( { slug } ) {
285
317
  } }
286
318
  />
287
319
  ) ) }
288
- </FontsGrid>
320
+ </div>
289
321
  ) }
290
322
  </TabPanelLayout>
291
323
  );
292
324
  }
293
325
 
294
- function Footer( { handleInstall, isDisabled } ) {
326
+ function PaginationFooter( { page, totalPages, setPage } ) {
327
+ return (
328
+ <Flex justify="center">
329
+ <Button
330
+ label={ __( 'First page' ) }
331
+ size="compact"
332
+ onClick={ () => setPage( 1 ) }
333
+ disabled={ page === 1 }
334
+ __experimentalIsFocusable
335
+ >
336
+ <span>«</span>
337
+ </Button>
338
+ <Button
339
+ label={ __( 'Previous page' ) }
340
+ size="compact"
341
+ onClick={ () => setPage( page - 1 ) }
342
+ disabled={ page === 1 }
343
+ __experimentalIsFocusable
344
+ >
345
+ <span>‹</span>
346
+ </Button>
347
+ <HStack justify="flex-start" expanded={ false } spacing={ 2 }>
348
+ { createInterpolateElement(
349
+ sprintf(
350
+ // translators: %s: Total number of pages.
351
+ _x( 'Page <CurrenPageControl /> of %s', 'paging' ),
352
+ totalPages
353
+ ),
354
+ {
355
+ CurrenPageControl: (
356
+ <SelectControl
357
+ aria-label={ __( 'Current page' ) }
358
+ value={ page }
359
+ options={ [ ...Array( totalPages ) ].map(
360
+ ( e, i ) => {
361
+ return {
362
+ label: i + 1,
363
+ value: i + 1,
364
+ };
365
+ }
366
+ ) }
367
+ onChange={ ( newPage ) =>
368
+ setPage( parseInt( newPage ) )
369
+ }
370
+ size={ 'compact' }
371
+ __nextHasNoMarginBottom
372
+ />
373
+ ),
374
+ }
375
+ ) }
376
+ </HStack>
377
+ <Button
378
+ label={ __( 'Next page' ) }
379
+ size="compact"
380
+ onClick={ () => setPage( page + 1 ) }
381
+ disabled={ page === totalPages }
382
+ __experimentalIsFocusable
383
+ >
384
+ <span>›</span>
385
+ </Button>
386
+ <Button
387
+ label={ __( 'Last page' ) }
388
+ size="compact"
389
+ onClick={ () => setPage( totalPages ) }
390
+ disabled={ page === totalPages }
391
+ __experimentalIsFocusable
392
+ >
393
+ <span>»</span>
394
+ </Button>
395
+ </Flex>
396
+ );
397
+ }
398
+
399
+ function InstallFooter( { handleInstall, isDisabled } ) {
295
400
  const { isInstalling } = useContext( FontLibraryContext );
296
401
 
297
402
  return (
@@ -24,7 +24,7 @@ function GoogleFontsConfirmDialog() {
24
24
  <div className="font-library__google-fonts-confirm">
25
25
  <Card>
26
26
  <CardBody>
27
- <Text as="h3">Connect to Google Fonts</Text>
27
+ <Text as="h3">{ __( 'Connect to Google Fonts' ) }</Text>
28
28
  <Spacer margin={ 6 } />
29
29
  <Text as="p">
30
30
  { __(
@@ -7,6 +7,7 @@ import {
7
7
  privateApis as componentsPrivateApis,
8
8
  __experimentalHStack as HStack,
9
9
  __experimentalSpacer as Spacer,
10
+ __experimentalText as Text,
10
11
  Button,
11
12
  Spinner,
12
13
  FlexItem,
@@ -17,7 +18,6 @@ import {
17
18
  */
18
19
  import TabPanelLayout from './tab-panel-layout';
19
20
  import { FontLibraryContext } from './context';
20
- import FontsGrid from './fonts-grid';
21
21
  import LibraryFontDetails from './library-font-details';
22
22
  import LibraryFontCard from './library-font-card';
23
23
  import ConfirmDeleteDialog from './confirm-delete-dialog';
@@ -123,36 +123,38 @@ function InstalledFonts() {
123
123
  ) }
124
124
  { baseCustomFonts.length > 0 && (
125
125
  <>
126
- <FontsGrid>
127
- { baseCustomFonts.map( ( font ) => (
128
- <LibraryFontCard
129
- font={ font }
130
- key={ font.slug }
131
- onClick={ () => {
132
- handleSelectFont( font );
133
- } }
134
- />
135
- ) ) }
136
- </FontsGrid>
126
+ { baseCustomFonts.map( ( font ) => (
127
+ <LibraryFontCard
128
+ font={ font }
129
+ key={ font.slug }
130
+ onClick={ () => {
131
+ handleSelectFont( font );
132
+ } }
133
+ />
134
+ ) ) }
137
135
  <Spacer margin={ 8 } />
138
136
  </>
139
137
  ) }
140
138
 
141
139
  { baseThemeFonts.length > 0 && (
142
140
  <>
143
- <FontsGrid title={ __( 'Theme Fonts' ) }>
144
- { baseThemeFonts.map( ( font ) => (
145
- <LibraryFontCard
146
- font={ font }
147
- key={ font.slug }
148
- onClick={ () => {
149
- handleSelectFont( font );
150
- } }
151
- />
152
- ) ) }
153
- </FontsGrid>
141
+ <Text className="font-library-modal__subtitle">
142
+ { __( 'Theme Fonts' ) }
143
+ </Text>
144
+
145
+ <Spacer margin={ 2 } />
146
+ { baseThemeFonts.map( ( font ) => (
147
+ <LibraryFontCard
148
+ font={ font }
149
+ key={ font.slug }
150
+ onClick={ () => {
151
+ handleSelectFont( font );
152
+ } }
153
+ />
154
+ ) ) }
154
155
  </>
155
156
  ) }
157
+ <Spacer margin={ 16 } />
156
158
  </>
157
159
  ) }
158
160
 
@@ -36,11 +36,8 @@
36
36
  }
37
37
  }
38
38
 
39
- .font-library-modal__fonts-grid {
40
- .font-library-modal__fonts-grid__main {
41
- display: flex;
42
- flex-direction: column;
43
- }
39
+ .font-library-modal__tabpanel-layout .components-base-control__field {
40
+ margin-bottom: 0;
44
41
  }
45
42
 
46
43
  .font-library-modal__font-card {
@@ -49,7 +49,7 @@
49
49
  outline: 3px solid transparent;
50
50
  outline-offset: -2px;
51
51
 
52
- color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
52
+ color: var(--wp-admin-theme-color);
53
53
  background: rgba(var(--wp-admin-theme-color--rgb), 0.04);
54
54
 
55
55
  .edit-site-global-styles-screen-revisions__revision-button {
@@ -61,7 +61,7 @@
61
61
  }
62
62
 
63
63
  &::before {
64
- background: var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
64
+ background: var(--wp-admin-theme-color);
65
65
  }
66
66
 
67
67
  .edit-site-global-styles-screen-revisions__changes > li,
@@ -173,7 +173,7 @@
173
173
  }
174
174
 
175
175
  .edit-site-global-styles-screen-css-help-link {
176
- display: block;
176
+ display: inline-block;
177
177
  margin-top: $grid-unit-10;
178
178
  }
179
179
  .edit-site-global-styles-screen-variations {
@@ -15,7 +15,6 @@ import {
15
15
  /**
16
16
  * Internal dependencies
17
17
  */
18
- import { store as editSiteStore } from '../../../store';
19
18
  import { unlock } from '../../../lock-unlock';
20
19
 
21
20
  const { DocumentTools: EditorDocumentTools } = unlock( editorPrivateApis );
@@ -26,7 +25,7 @@ export default function DocumentTools( {
26
25
  isDistractionFree,
27
26
  } ) {
28
27
  const { isVisualMode } = useSelect( ( select ) => {
29
- const { getEditorMode } = select( editSiteStore );
28
+ const { getEditorMode } = select( editorStore );
30
29
 
31
30
  return {
32
31
  isVisualMode: getEditorMode() === 'visual',
@@ -206,7 +206,7 @@ export default function HeaderEditMode() {
206
206
  </div>
207
207
  ) }
208
208
  <PostViewLink />
209
- <SaveButton />
209
+ <SaveButton size="compact" />
210
210
  { ! isDistractionFree && (
211
211
  <PinnedItems.Slot scope="core/edit-site" />
212
212
  ) }
@@ -16,6 +16,10 @@ import {
16
16
  store as preferencesStore,
17
17
  } from '@wordpress/preferences';
18
18
  import { store as coreStore } from '@wordpress/core-data';
19
+ import {
20
+ store as editorStore,
21
+ privateApis as editorPrivateApis,
22
+ } from '@wordpress/editor';
19
23
 
20
24
  /**
21
25
  * Internal dependencies
@@ -32,8 +36,9 @@ import ToolsMoreMenuGroup from '../tools-more-menu-group';
32
36
  import SiteExport from './site-export';
33
37
  import WelcomeGuideMenuItem from './welcome-guide-menu-item';
34
38
  import CopyContentMenuItem from './copy-content-menu-item';
35
- import ModeSwitcher from '../mode-switcher';
36
- import { store as editSiteStore } from '../../../store';
39
+ import { unlock } from '../../../lock-unlock';
40
+
41
+ const { ModeSwitcher } = unlock( editorPrivateApis );
37
42
 
38
43
  export default function MoreMenu( { showIconLabels } ) {
39
44
  const { openModal } = useDispatch( interfaceStore );
@@ -42,7 +47,7 @@ export default function MoreMenu( { showIconLabels } ) {
42
47
  return select( coreStore ).getCurrentTheme().is_block_theme;
43
48
  }, [] );
44
49
 
45
- const { toggleDistractionFree } = useDispatch( editSiteStore );
50
+ const { toggleDistractionFree } = useDispatch( editorStore );
46
51
 
47
52
  const turnOffDistractionFree = () => {
48
53
  setPreference( 'core', 'distractionFree', false );
@@ -15,7 +15,6 @@ import { SIDEBAR_BLOCK } from '../sidebar-edit-mode/constants';
15
15
  import { STORE_NAME } from '../../store/constants';
16
16
 
17
17
  function KeyboardShortcutsEditMode() {
18
- const { getEditorMode } = useSelect( editSiteStore );
19
18
  const isBlockInspectorOpen = useSelect(
20
19
  ( select ) =>
21
20
  select( interfaceStore ).getActiveComplementaryArea(
@@ -23,8 +22,6 @@ function KeyboardShortcutsEditMode() {
23
22
  ) === SIDEBAR_BLOCK,
24
23
  []
25
24
  );
26
- const { switchEditorMode, toggleDistractionFree } =
27
- useDispatch( editSiteStore );
28
25
  const { enableComplementaryArea, disableComplementaryArea } =
29
26
  useDispatch( interfaceStore );
30
27
  const { replaceBlocks } = useDispatch( blockEditorStore );
@@ -71,10 +68,6 @@ function KeyboardShortcutsEditMode() {
71
68
  }
72
69
  } );
73
70
 
74
- useShortcut( 'core/edit-site/toggle-mode', () => {
75
- switchEditorMode( getEditorMode() === 'visual' ? 'text' : 'visual' );
76
- } );
77
-
78
71
  useShortcut( 'core/edit-site/transform-heading-to-paragraph', ( event ) =>
79
72
  handleTextLevelShortcut( event, 0 )
80
73
  );
@@ -89,10 +82,6 @@ function KeyboardShortcutsEditMode() {
89
82
  );
90
83
  } );
91
84
 
92
- useShortcut( 'core/edit-site/toggle-distraction-free', () => {
93
- toggleDistractionFree();
94
- } );
95
-
96
85
  return null;
97
86
  }
98
87
 
@@ -75,15 +75,6 @@ function KeyboardShortcutsRegister() {
75
75
  },
76
76
  ],
77
77
  } );
78
- registerShortcut( {
79
- name: 'core/edit-site/toggle-mode',
80
- category: 'global',
81
- description: __( 'Switch between visual editor and code editor.' ),
82
- keyCombination: {
83
- modifier: 'secondary',
84
- character: 'm',
85
- },
86
- } );
87
78
 
88
79
  registerShortcut( {
89
80
  name: 'core/edit-site/transform-heading-to-paragraph',
@@ -106,16 +97,6 @@ function KeyboardShortcutsRegister() {
106
97
  },
107
98
  } );
108
99
  } );
109
-
110
- registerShortcut( {
111
- name: 'core/edit-site/toggle-distraction-free',
112
- category: 'global',
113
- description: __( 'Toggle distraction free mode.' ),
114
- keyCombination: {
115
- modifier: 'primaryShift',
116
- character: '\\',
117
- },
118
- } );
119
100
  }, [ registerShortcut ] );
120
101
 
121
102
  return null;
@@ -28,7 +28,6 @@ import {
28
28
  import { store as preferencesStore } from '@wordpress/preferences';
29
29
  import {
30
30
  privateApis as blockEditorPrivateApis,
31
- useBlockCommands,
32
31
  store as blockEditorStore,
33
32
  } from '@wordpress/block-editor';
34
33
  import { privateApis as coreCommandsPrivateApis } from '@wordpress/core-commands';
@@ -66,7 +65,6 @@ export default function Layout() {
66
65
  useCommands();
67
66
  useEditModeCommands();
68
67
  useCommonCommands();
69
- useBlockCommands();
70
68
 
71
69
  const isMobileViewport = useViewportMatch( 'medium', '<' );
72
70
 
@@ -251,47 +249,64 @@ export default function Layout() {
251
249
  The NavigableRegion must always be rendered and not use
252
250
  `inert` otherwise `useNavigateRegions` will fail.
253
251
  */ }
254
- <NavigableRegion
255
- ariaLabel={ __( 'Navigation' ) }
256
- className="edit-site-layout__sidebar-region"
257
- >
258
- <AnimatePresence>
259
- { canvasMode === 'view' && (
260
- <motion.div
261
- initial={ { opacity: 0 } }
262
- animate={ { opacity: 1 } }
263
- exit={ { opacity: 0 } }
264
- transition={ {
265
- type: 'tween',
266
- duration:
267
- // Disable transition in mobile to emulate a full page transition.
268
- disableMotion || isMobileViewport
269
- ? 0
270
- : ANIMATION_DURATION,
271
- ease: 'easeOut',
272
- } }
273
- className="edit-site-layout__sidebar"
274
- >
275
- <Sidebar />
276
- </motion.div>
277
- ) }
278
- </AnimatePresence>
279
- </NavigableRegion>
252
+ { ( ! isMobileViewport ||
253
+ ( isMobileViewport && ! areas.mobile ) ) && (
254
+ <NavigableRegion
255
+ ariaLabel={ __( 'Navigation' ) }
256
+ className="edit-site-layout__sidebar-region"
257
+ >
258
+ <AnimatePresence>
259
+ { canvasMode === 'view' && (
260
+ <motion.div
261
+ initial={ { opacity: 0 } }
262
+ animate={ { opacity: 1 } }
263
+ exit={ { opacity: 0 } }
264
+ transition={ {
265
+ type: 'tween',
266
+ duration:
267
+ // Disable transition in mobile to emulate a full page transition.
268
+ disableMotion ||
269
+ isMobileViewport
270
+ ? 0
271
+ : ANIMATION_DURATION,
272
+ ease: 'easeOut',
273
+ } }
274
+ className="edit-site-layout__sidebar"
275
+ >
276
+ <Sidebar />
277
+ </motion.div>
278
+ ) }
279
+ </AnimatePresence>
280
+ </NavigableRegion>
281
+ ) }
280
282
 
281
283
  <SavePanel />
282
284
 
283
- { areas.content && canvasMode !== 'edit' && (
285
+ { isMobileViewport && areas.mobile && (
284
286
  <div
285
- className="edit-site-layout__area"
287
+ className="edit-site-layout__mobile"
286
288
  style={ {
287
289
  maxWidth: widths?.content,
288
290
  } }
289
291
  >
290
- { areas.content }
292
+ { areas.mobile }
291
293
  </div>
292
294
  ) }
293
295
 
294
- { areas.preview && (
296
+ { ! isMobileViewport &&
297
+ areas.content &&
298
+ canvasMode !== 'edit' && (
299
+ <div
300
+ className="edit-site-layout__area"
301
+ style={ {
302
+ maxWidth: widths?.content,
303
+ } }
304
+ >
305
+ { areas.content }
306
+ </div>
307
+ ) }
308
+
309
+ { ! isMobileViewport && areas.preview && (
295
310
  <div className="edit-site-layout__canvas-container">
296
311
  { canvasResizer }
297
312
  { !! canvasSize.width && (