@wordpress/edit-site 5.29.0 → 5.31.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 (511) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/actions/index.js +3 -5
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/block-editor/editor-canvas.js +18 -6
  5. package/build/components/block-editor/editor-canvas.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +1 -1
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +1 -15
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  11. package/build/components/global-styles/font-families.js +1 -1
  12. package/build/components/global-styles/font-families.js.map +1 -1
  13. package/build/components/global-styles/font-library-modal/collection-font-variant.js +2 -2
  14. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  15. package/build/components/global-styles/font-library-modal/context.js +70 -59
  16. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  17. package/build/components/global-styles/font-library-modal/font-card.js +10 -15
  18. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
  19. package/build/components/global-styles/font-library-modal/font-collection.js +121 -78
  20. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  21. package/build/components/global-styles/font-library-modal/font-demo.js +29 -8
  22. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +3 -2
  24. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  25. package/build/components/global-styles/font-library-modal/index.js +19 -6
  26. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  27. package/build/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  28. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  30. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/upload-fonts.js +51 -23
  32. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  33. package/build/components/global-styles/font-library-modal/utils/index.js +39 -5
  34. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  35. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -1
  36. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  37. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  38. package/build/components/global-styles/header.js +2 -2
  39. package/build/components/global-styles/header.js.map +1 -1
  40. package/build/components/global-styles/highlighted-colors.js +50 -0
  41. package/build/components/global-styles/highlighted-colors.js.map +1 -0
  42. package/build/components/global-styles/hooks.js +50 -1
  43. package/build/components/global-styles/hooks.js.map +1 -1
  44. package/build/components/global-styles/preview-colors.js +62 -0
  45. package/build/components/global-styles/preview-colors.js.map +1 -0
  46. package/build/components/global-styles/preview-iframe.js +130 -0
  47. package/build/components/global-styles/preview-iframe.js.map +1 -0
  48. package/build/components/global-styles/preview-styles.js +163 -0
  49. package/build/components/global-styles/preview-styles.js.map +1 -0
  50. package/build/components/global-styles/screen-block-list.js +1 -1
  51. package/build/components/global-styles/screen-block-list.js.map +1 -1
  52. package/build/components/global-styles/screen-block.js +1 -1
  53. package/build/components/global-styles/screen-block.js.map +1 -1
  54. package/build/components/global-styles/screen-colors.js +3 -2
  55. package/build/components/global-styles/screen-colors.js.map +1 -1
  56. package/build/components/global-styles/screen-revisions/index.js +2 -2
  57. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  58. package/build/components/global-styles/screen-root.js +2 -2
  59. package/build/components/global-styles/screen-root.js.map +1 -1
  60. package/build/components/global-styles/screen-typography.js +5 -2
  61. package/build/components/global-styles/screen-typography.js.map +1 -1
  62. package/build/components/global-styles/style-variations-container.js +12 -84
  63. package/build/components/global-styles/style-variations-container.js.map +1 -1
  64. package/build/components/global-styles/{typogrphy-elements.js → typography-elements.js} +4 -2
  65. package/build/components/global-styles/typography-elements.js.map +1 -0
  66. package/build/components/global-styles/typography-example.js +67 -0
  67. package/build/components/global-styles/typography-example.js.map +1 -0
  68. package/build/components/global-styles/typography-preview.js +3 -1
  69. package/build/components/global-styles/typography-preview.js.map +1 -1
  70. package/build/components/global-styles/ui.js +27 -2
  71. package/build/components/global-styles/ui.js.map +1 -1
  72. package/build/components/global-styles/utils.js +22 -0
  73. package/build/components/global-styles/utils.js.map +1 -1
  74. package/build/components/global-styles/variations/variation.js +90 -0
  75. package/build/components/global-styles/variations/variation.js.map +1 -0
  76. package/build/components/global-styles/variations/variations-color.js +35 -0
  77. package/build/components/global-styles/variations/variations-color.js.map +1 -0
  78. package/build/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  79. package/build/components/global-styles/variations/variations-panel.js.map +1 -0
  80. package/build/components/global-styles/variations/variations-typography.js +54 -0
  81. package/build/components/global-styles/variations/variations-typography.js.map +1 -0
  82. package/build/components/header-edit-mode/index.js +14 -12
  83. package/build/components/header-edit-mode/index.js.map +1 -1
  84. package/build/components/header-edit-mode/more-menu/index.js +10 -2
  85. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  86. package/build/components/keyboard-shortcut-help-modal/config.js +6 -0
  87. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  88. package/build/components/keyboard-shortcuts/global.js +17 -3
  89. package/build/components/keyboard-shortcuts/global.js.map +1 -1
  90. package/build/components/layout/index.js +4 -1
  91. package/build/components/layout/index.js.map +1 -1
  92. package/build/components/layout/router.js +2 -5
  93. package/build/components/layout/router.js.map +1 -1
  94. package/build/components/page-pages/index.js +6 -11
  95. package/build/components/page-pages/index.js.map +1 -1
  96. package/build/components/page-patterns/delete-category-menu-item.js +6 -1
  97. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -1
  98. package/build/components/page-patterns/index.js +15 -18
  99. package/build/components/page-patterns/index.js.map +1 -1
  100. package/build/components/page-patterns/use-patterns.js +9 -9
  101. package/build/components/page-patterns/use-patterns.js.map +1 -1
  102. package/build/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -61
  103. package/build/components/page-templates-template-parts/hooks.js.map +1 -0
  104. package/build/components/page-templates-template-parts/index.js +25 -22
  105. package/build/components/page-templates-template-parts/index.js.map +1 -1
  106. package/build/components/resizable-frame/index.js +2 -1
  107. package/build/components/resizable-frame/index.js.map +1 -1
  108. package/build/components/revisions/index.js.map +1 -1
  109. package/build/components/save-panel/index.js +31 -11
  110. package/build/components/save-panel/index.js.map +1 -1
  111. package/build/components/sidebar/index.js +3 -4
  112. package/build/components/sidebar/index.js.map +1 -1
  113. package/build/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  114. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  115. package/build/components/sidebar-dataviews/dataview-item.js +2 -2
  116. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  117. package/build/components/sidebar-dataviews/default-views.js +4 -2
  118. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  119. package/build/components/sidebar-dataviews/index.js +4 -3
  120. package/build/components/sidebar-dataviews/index.js.map +1 -1
  121. package/build/components/sidebar-edit-mode/page-panels/index.js +2 -2
  122. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  123. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  124. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +3 -1
  125. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  126. package/build/components/sidebar-edit-mode/sidebar-card/index.js +12 -6
  127. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -1
  128. package/build/components/sidebar-edit-mode/template-panel/index.js +23 -3
  129. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-global-styles/index.js +13 -1
  131. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-main/index.js +1 -2
  133. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  134. package/build/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +4 -5
  135. package/build/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  136. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  137. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  139. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  141. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  142. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  143. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  144. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +2 -2
  145. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  146. package/build/components/sidebar-navigation-screen-template/index.js +7 -3
  147. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  148. package/build/components/sidebar-navigation-screen-templates-browse/content.js +6 -6
  149. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  150. package/build/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  151. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  152. package/build/components/start-template-options/index.js.map +1 -1
  153. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  154. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  155. package/build/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  156. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  157. package/build/components/template-actions/index.js +44 -27
  158. package/build/components/template-actions/index.js.map +1 -1
  159. package/build/components/welcome-guide/editor.js +11 -2
  160. package/build/components/welcome-guide/editor.js.map +1 -1
  161. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +78 -0
  162. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  163. package/build/utils/constants.js +5 -3
  164. package/build/utils/constants.js.map +1 -1
  165. package/build/utils/get-is-list-page.js +1 -1
  166. package/build/utils/get-is-list-page.js.map +1 -1
  167. package/build/utils/math.js +98 -0
  168. package/build/utils/math.js.map +1 -0
  169. package/build-module/components/actions/index.js +4 -6
  170. package/build-module/components/actions/index.js.map +1 -1
  171. package/build-module/components/block-editor/editor-canvas.js +18 -6
  172. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  173. package/build-module/components/block-editor/use-site-editor-settings.js +1 -1
  174. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  175. package/build-module/components/editor/index.js +2 -16
  176. package/build-module/components/editor/index.js.map +1 -1
  177. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  178. package/build-module/components/global-styles/font-families.js +1 -1
  179. package/build-module/components/global-styles/font-families.js.map +1 -1
  180. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +4 -4
  181. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  182. package/build-module/components/global-styles/font-library-modal/context.js +72 -61
  183. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  184. package/build-module/components/global-styles/font-library-modal/font-card.js +11 -16
  185. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -1
  186. package/build-module/components/global-styles/font-library-modal/font-collection.js +124 -81
  187. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  188. package/build-module/components/global-styles/font-library-modal/font-demo.js +30 -9
  189. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  190. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +4 -3
  191. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  192. package/build-module/components/global-styles/font-library-modal/index.js +19 -6
  193. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  194. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  195. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  196. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +4 -4
  197. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  198. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +52 -24
  199. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  200. package/build-module/components/global-styles/font-library-modal/utils/index.js +38 -5
  201. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  202. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -1
  203. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  204. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  205. package/build-module/components/global-styles/header.js +2 -2
  206. package/build-module/components/global-styles/header.js.map +1 -1
  207. package/build-module/components/global-styles/highlighted-colors.js +43 -0
  208. package/build-module/components/global-styles/highlighted-colors.js.map +1 -0
  209. package/build-module/components/global-styles/hooks.js +48 -1
  210. package/build-module/components/global-styles/hooks.js.map +1 -1
  211. package/build-module/components/global-styles/preview-colors.js +54 -0
  212. package/build-module/components/global-styles/preview-colors.js.map +1 -0
  213. package/build-module/components/global-styles/preview-iframe.js +123 -0
  214. package/build-module/components/global-styles/preview-iframe.js.map +1 -0
  215. package/build-module/components/global-styles/preview-styles.js +155 -0
  216. package/build-module/components/global-styles/preview-styles.js.map +1 -0
  217. package/build-module/components/global-styles/screen-block-list.js +1 -1
  218. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  219. package/build-module/components/global-styles/screen-block.js +1 -1
  220. package/build-module/components/global-styles/screen-block.js.map +1 -1
  221. package/build-module/components/global-styles/screen-colors.js +3 -2
  222. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  223. package/build-module/components/global-styles/screen-revisions/index.js +2 -2
  224. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  225. package/build-module/components/global-styles/screen-root.js +2 -2
  226. package/build-module/components/global-styles/screen-root.js.map +1 -1
  227. package/build-module/components/global-styles/screen-typography.js +5 -2
  228. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  229. package/build-module/components/global-styles/style-variations-container.js +13 -85
  230. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  231. package/build-module/components/global-styles/{typogrphy-elements.js → typography-elements.js} +4 -2
  232. package/build-module/components/global-styles/typography-elements.js.map +1 -0
  233. package/build-module/components/global-styles/typography-example.js +60 -0
  234. package/build-module/components/global-styles/typography-example.js.map +1 -0
  235. package/build-module/components/global-styles/typography-preview.js +3 -1
  236. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  237. package/build-module/components/global-styles/ui.js +27 -2
  238. package/build-module/components/global-styles/ui.js.map +1 -1
  239. package/build-module/components/global-styles/utils.js +21 -0
  240. package/build-module/components/global-styles/utils.js.map +1 -1
  241. package/build-module/components/global-styles/variations/variation.js +82 -0
  242. package/build-module/components/global-styles/variations/variation.js.map +1 -0
  243. package/build-module/components/global-styles/variations/variations-color.js +27 -0
  244. package/build-module/components/global-styles/variations/variations-color.js.map +1 -0
  245. package/build-module/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  246. package/build-module/components/global-styles/variations/variations-panel.js.map +1 -0
  247. package/build-module/components/global-styles/variations/variations-typography.js +46 -0
  248. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -0
  249. package/build-module/components/header-edit-mode/index.js +15 -13
  250. package/build-module/components/header-edit-mode/index.js.map +1 -1
  251. package/build-module/components/header-edit-mode/more-menu/index.js +13 -5
  252. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  253. package/build-module/components/keyboard-shortcut-help-modal/config.js +6 -0
  254. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  255. package/build-module/components/keyboard-shortcuts/global.js +17 -3
  256. package/build-module/components/keyboard-shortcuts/global.js.map +1 -1
  257. package/build-module/components/layout/index.js +4 -1
  258. package/build-module/components/layout/index.js.map +1 -1
  259. package/build-module/components/layout/router.js +2 -5
  260. package/build-module/components/layout/router.js.map +1 -1
  261. package/build-module/components/page-pages/index.js +7 -12
  262. package/build-module/components/page-pages/index.js.map +1 -1
  263. package/build-module/components/page-patterns/delete-category-menu-item.js +6 -1
  264. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -1
  265. package/build-module/components/page-patterns/index.js +16 -19
  266. package/build-module/components/page-patterns/index.js.map +1 -1
  267. package/build-module/components/page-patterns/use-patterns.js +9 -9
  268. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  269. package/build-module/components/{list/added-by.js → page-templates-template-parts/hooks.js} +2 -59
  270. package/build-module/components/page-templates-template-parts/hooks.js.map +1 -0
  271. package/build-module/components/page-templates-template-parts/index.js +25 -22
  272. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  273. package/build-module/components/resizable-frame/index.js +2 -1
  274. package/build-module/components/resizable-frame/index.js.map +1 -1
  275. package/build-module/components/revisions/index.js.map +1 -1
  276. package/build-module/components/save-panel/index.js +31 -11
  277. package/build-module/components/save-panel/index.js.map +1 -1
  278. package/build-module/components/sidebar/index.js +3 -4
  279. package/build-module/components/sidebar/index.js.map +1 -1
  280. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  281. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  282. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -2
  283. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  284. package/build-module/components/sidebar-dataviews/default-views.js +6 -4
  285. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  286. package/build-module/components/sidebar-dataviews/index.js +4 -3
  287. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  288. package/build-module/components/sidebar-edit-mode/page-panels/index.js +3 -3
  289. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  290. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  291. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +4 -2
  292. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  293. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +13 -7
  294. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -1
  295. package/build-module/components/sidebar-edit-mode/template-panel/index.js +24 -4
  296. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  297. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +14 -2
  298. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  299. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -2
  300. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  301. package/build-module/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  302. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  303. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  304. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  305. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  306. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  307. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  308. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  309. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  310. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  311. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  312. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  313. package/build-module/components/sidebar-navigation-screen-template/index.js +6 -2
  314. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  315. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +5 -5
  316. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  317. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  318. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  319. package/build-module/components/start-template-options/index.js.map +1 -1
  320. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  321. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  322. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  323. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  324. package/build-module/components/template-actions/index.js +44 -27
  325. package/build-module/components/template-actions/index.js.map +1 -1
  326. package/build-module/components/welcome-guide/editor.js +11 -2
  327. package/build-module/components/welcome-guide/editor.js.map +1 -1
  328. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +76 -1
  329. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  330. package/build-module/utils/constants.js +4 -2
  331. package/build-module/utils/constants.js.map +1 -1
  332. package/build-module/utils/get-is-list-page.js +1 -1
  333. package/build-module/utils/get-is-list-page.js.map +1 -1
  334. package/build-module/utils/math.js +92 -0
  335. package/build-module/utils/math.js.map +1 -0
  336. package/build-style/style-rtl.css +196 -315
  337. package/build-style/style.css +196 -315
  338. package/package.json +42 -42
  339. package/src/components/actions/index.js +4 -6
  340. package/src/components/block-editor/editor-canvas.js +20 -6
  341. package/src/components/block-editor/style.scss +0 -3
  342. package/src/components/block-editor/use-site-editor-settings.js +0 -2
  343. package/src/components/editor/index.js +0 -20
  344. package/src/components/global-styles/color-palette-panel.js +0 -1
  345. package/src/components/global-styles/font-families.js +1 -1
  346. package/src/components/global-styles/font-library-modal/collection-font-variant.js +5 -5
  347. package/src/components/global-styles/font-library-modal/context.js +136 -107
  348. package/src/components/global-styles/font-library-modal/font-card.js +11 -26
  349. package/src/components/global-styles/font-library-modal/font-collection.js +298 -218
  350. package/src/components/global-styles/font-library-modal/font-demo.js +38 -4
  351. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +9 -2
  352. package/src/components/global-styles/font-library-modal/index.js +23 -16
  353. package/src/components/global-styles/font-library-modal/installed-fonts.js +243 -114
  354. package/src/components/global-styles/font-library-modal/library-font-variant.js +5 -5
  355. package/src/components/global-styles/font-library-modal/style.scss +27 -11
  356. package/src/components/global-styles/font-library-modal/upload-fonts.js +70 -27
  357. package/src/components/global-styles/font-library-modal/utils/index.js +45 -5
  358. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +6 -1
  359. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +7 -18
  360. package/src/components/global-styles/gradients-palette-panel.js +2 -2
  361. package/src/components/global-styles/header.js +2 -2
  362. package/src/components/global-styles/highlighted-colors.js +39 -0
  363. package/src/components/global-styles/hooks.js +68 -1
  364. package/src/components/global-styles/preview-colors.js +61 -0
  365. package/src/components/global-styles/preview-iframe.js +152 -0
  366. package/src/components/global-styles/preview-styles.js +185 -0
  367. package/src/components/global-styles/screen-block-list.js +1 -1
  368. package/src/components/global-styles/screen-block.js +4 -1
  369. package/src/components/global-styles/screen-colors.js +3 -2
  370. package/src/components/global-styles/screen-revisions/index.js +5 -2
  371. package/src/components/global-styles/screen-root.js +2 -2
  372. package/src/components/global-styles/screen-typography.js +8 -2
  373. package/src/components/global-styles/style-variations-container.js +14 -92
  374. package/src/components/global-styles/style.scss +4 -35
  375. package/src/components/global-styles/{typogrphy-elements.js → typography-elements.js} +5 -1
  376. package/src/components/global-styles/typography-example.js +64 -0
  377. package/src/components/global-styles/typography-preview.js +3 -1
  378. package/src/components/global-styles/ui.js +26 -2
  379. package/src/components/global-styles/utils.js +37 -0
  380. package/src/components/global-styles/variations/style.scss +38 -0
  381. package/src/components/global-styles/variations/variation.js +93 -0
  382. package/src/components/global-styles/variations/variations-color.js +34 -0
  383. package/src/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  384. package/src/components/global-styles/variations/variations-typography.js +63 -0
  385. package/src/components/header-edit-mode/index.js +21 -27
  386. package/src/components/header-edit-mode/more-menu/index.js +17 -8
  387. package/src/components/header-edit-mode/style.scss +4 -0
  388. package/src/components/keyboard-shortcut-help-modal/config.js +4 -0
  389. package/src/components/keyboard-shortcuts/global.js +16 -4
  390. package/src/components/layout/index.js +5 -0
  391. package/src/components/layout/router.js +2 -7
  392. package/src/components/page-pages/index.js +8 -13
  393. package/src/components/page-patterns/delete-category-menu-item.js +7 -0
  394. package/src/components/page-patterns/index.js +23 -24
  395. package/src/components/page-patterns/use-patterns.js +17 -10
  396. package/src/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -66
  397. package/src/components/page-templates-template-parts/index.js +34 -25
  398. package/src/components/page-templates-template-parts/style.scss +48 -0
  399. package/src/components/resizable-frame/index.js +1 -0
  400. package/src/components/revisions/index.js +1 -1
  401. package/src/components/save-panel/index.js +56 -27
  402. package/src/components/sidebar/index.js +3 -4
  403. package/src/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  404. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  405. package/src/components/sidebar-dataviews/default-views.js +14 -4
  406. package/src/components/sidebar-dataviews/index.js +4 -3
  407. package/src/components/sidebar-edit-mode/page-panels/index.js +2 -2
  408. package/src/components/sidebar-edit-mode/page-panels/page-status.js +1 -1
  409. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  410. package/src/components/sidebar-edit-mode/sidebar-card/index.js +30 -11
  411. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +10 -11
  412. package/src/components/sidebar-edit-mode/template-panel/index.js +25 -6
  413. package/src/components/sidebar-navigation-screen/style.scss +10 -1
  414. package/src/components/sidebar-navigation-screen-global-styles/index.js +35 -2
  415. package/src/components/sidebar-navigation-screen-main/index.js +0 -2
  416. package/src/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  417. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +11 -9
  418. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -2
  419. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +6 -3
  420. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +1 -1
  421. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +1 -1
  422. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  423. package/src/components/sidebar-navigation-screen-template/index.js +7 -2
  424. package/src/components/sidebar-navigation-screen-templates-browse/content.js +5 -5
  425. package/src/components/sidebar-navigation-screen-templates-browse/index.js +5 -3
  426. package/src/components/start-template-options/index.js +1 -1
  427. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  428. package/src/components/sync-state-with-url/use-sync-path-with-url.js +3 -19
  429. package/src/components/template-actions/index.js +63 -46
  430. package/src/components/welcome-guide/editor.js +9 -6
  431. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +173 -0
  432. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +85 -1
  433. package/src/style.scss +2 -3
  434. package/src/utils/constants.js +4 -2
  435. package/src/utils/get-is-list-page.js +1 -1
  436. package/src/utils/math.js +93 -0
  437. package/build/components/global-styles/font-library-modal/collection-font-details.js +0 -50
  438. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  439. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -30
  440. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  441. package/build/components/global-styles/font-library-modal/library-font-card.js +0 -39
  442. package/build/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  443. package/build/components/global-styles/font-library-modal/tab-panel-layout.js +0 -67
  444. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  445. package/build/components/global-styles/preview.js +0 -271
  446. package/build/components/global-styles/preview.js.map +0 -1
  447. package/build/components/global-styles/typogrphy-elements.js.map +0 -1
  448. package/build/components/global-styles/variations-panel.js.map +0 -1
  449. package/build/components/list/added-by.js.map +0 -1
  450. package/build/components/list/header.js +0 -55
  451. package/build/components/list/header.js.map +0 -1
  452. package/build/components/list/index.js +0 -80
  453. package/build/components/list/index.js.map +0 -1
  454. package/build/components/list/table.js +0 -94
  455. package/build/components/list/table.js.map +0 -1
  456. package/build/components/list/use-register-shortcuts.js +0 -51
  457. package/build/components/list/use-register-shortcuts.js.map +0 -1
  458. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +0 -50
  459. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  460. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +0 -36
  461. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  462. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  463. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -36
  464. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  465. package/build/components/sidebar-navigation-screen-templates/index.js +0 -132
  466. package/build/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  467. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +0 -42
  468. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  469. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -23
  470. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  471. package/build-module/components/global-styles/font-library-modal/library-font-card.js +0 -31
  472. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  473. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js +0 -60
  474. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  475. package/build-module/components/global-styles/preview.js +0 -264
  476. package/build-module/components/global-styles/preview.js.map +0 -1
  477. package/build-module/components/global-styles/typogrphy-elements.js.map +0 -1
  478. package/build-module/components/global-styles/variations-panel.js.map +0 -1
  479. package/build-module/components/list/added-by.js.map +0 -1
  480. package/build-module/components/list/header.js +0 -47
  481. package/build-module/components/list/header.js.map +0 -1
  482. package/build-module/components/list/index.js +0 -72
  483. package/build-module/components/list/index.js.map +0 -1
  484. package/build-module/components/list/table.js +0 -86
  485. package/build-module/components/list/table.js.map +0 -1
  486. package/build-module/components/list/use-register-shortcuts.js +0 -45
  487. package/build-module/components/list/use-register-shortcuts.js.map +0 -1
  488. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +0 -42
  489. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  490. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +0 -29
  491. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  492. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  493. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -27
  494. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  495. package/build-module/components/sidebar-navigation-screen-templates/index.js +0 -124
  496. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  497. package/src/components/global-styles/font-library-modal/collection-font-details.js +0 -56
  498. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -33
  499. package/src/components/global-styles/font-library-modal/library-font-card.js +0 -34
  500. package/src/components/global-styles/font-library-modal/tab-panel-layout.js +0 -85
  501. package/src/components/global-styles/preview.js +0 -327
  502. package/src/components/list/header.js +0 -48
  503. package/src/components/list/index.js +0 -87
  504. package/src/components/list/style.scss +0 -188
  505. package/src/components/list/table.js +0 -140
  506. package/src/components/list/use-register-shortcuts.js +0 -49
  507. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +0 -49
  508. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +0 -34
  509. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -22
  510. package/src/components/sidebar-navigation-screen-templates/index.js +0 -156
  511. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -9
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { _n, sprintf } from '@wordpress/i18n';
5
5
  import {
6
+ __experimentalUseNavigator as useNavigator,
6
7
  __experimentalText as Text,
7
8
  Button,
8
9
  Flex,
@@ -14,46 +15,30 @@ import {
14
15
  * Internal dependencies
15
16
  */
16
17
  import FontDemo from './font-demo';
17
- import { getFamilyPreviewStyle } from './utils/preview-styles';
18
18
  import { chevronRight } from '@wordpress/icons';
19
19
 
20
- function FontCard( { font, onClick, variantsText } ) {
21
- const fakeFontFace = {
22
- fontStyle: 'normal',
23
- fontWeight: '400',
24
- fontFamily: font.fontFamily,
25
- fake: true,
26
- };
27
-
28
- const displayFontFace =
29
- font.fontFace && font.fontFace.length
30
- ? font?.fontFace?.find(
31
- ( face ) =>
32
- face.fontStyle === 'normal' && face.fontWeight === '400'
33
- ) || font.fontFace[ 0 ]
34
- : fakeFontFace;
35
-
36
- const demoStyle = getFamilyPreviewStyle( font );
37
-
20
+ function FontCard( { font, onClick, variantsText, navigatorPath } ) {
38
21
  const variantsCount = font.fontFace?.length || 1;
39
22
 
40
23
  const style = {
41
24
  cursor: !! onClick ? 'pointer' : 'default',
42
25
  };
43
26
 
27
+ const navigator = useNavigator();
28
+
44
29
  return (
45
30
  <Button
46
- onClick={ onClick }
31
+ onClick={ () => {
32
+ onClick();
33
+ if ( navigatorPath ) {
34
+ navigator.goTo( navigatorPath );
35
+ }
36
+ } }
47
37
  style={ style }
48
38
  className="font-library-modal__font-card"
49
39
  >
50
40
  <Flex justify="space-between" wrap={ false }>
51
- <FontDemo
52
- customPreviewUrl={ font.preview }
53
- fontFace={ displayFontFace }
54
- text={ font.name }
55
- style={ demoStyle }
56
- />
41
+ <FontDemo font={ font } />
57
42
  <Flex justify="flex-end">
58
43
  <FlexItem>
59
44
  <Text className="font-library-modal__font-card__count">
@@ -10,46 +10,55 @@ import {
10
10
  } from '@wordpress/element';
11
11
  import {
12
12
  __experimentalSpacer as Spacer,
13
- __experimentalInputControl as InputControl,
14
13
  __experimentalText as Text,
15
14
  __experimentalHStack as HStack,
15
+ __experimentalVStack as VStack,
16
+ __experimentalNavigatorProvider as NavigatorProvider,
17
+ __experimentalNavigatorScreen as NavigatorScreen,
18
+ __experimentalNavigatorToParentButton as NavigatorToParentButton,
19
+ __experimentalHeading as Heading,
20
+ Notice,
16
21
  SelectControl,
17
22
  Spinner,
18
- Icon,
19
23
  FlexItem,
20
24
  Flex,
21
25
  Button,
26
+ DropdownMenu,
27
+ SearchControl,
22
28
  } from '@wordpress/components';
23
29
  import { debounce } from '@wordpress/compose';
24
30
  import { sprintf, __, _x } from '@wordpress/i18n';
25
- import { search, closeSmall } from '@wordpress/icons';
31
+ import { moreVertical, chevronLeft } from '@wordpress/icons';
26
32
 
27
33
  /**
28
34
  * Internal dependencies
29
35
  */
30
- import TabPanelLayout from './tab-panel-layout';
31
36
  import { FontLibraryContext } from './context';
32
37
  import FontCard from './font-card';
33
38
  import filterFonts from './utils/filter-fonts';
34
- import CollectionFontDetails from './collection-font-details';
35
39
  import { toggleFont } from './utils/toggleFont';
36
- import { getFontsOutline } from './utils/fonts-outline';
40
+ import {
41
+ getFontsOutline,
42
+ isFontFontFaceInOutline,
43
+ } from './utils/fonts-outline';
37
44
  import GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';
38
45
  import { downloadFontFaceAssets } from './utils';
46
+ import { sortFontFaces } from './utils/sort-font-faces';
47
+ import CollectionFontVariant from './collection-font-variant';
39
48
 
40
49
  const DEFAULT_CATEGORY = {
41
50
  slug: 'all',
42
51
  name: _x( 'All', 'font categories' ),
43
52
  };
53
+
54
+ const LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';
55
+ const MIN_WINDOW_HEIGHT = 500;
56
+
44
57
  function FontCollection( { slug } ) {
45
58
  const requiresPermission = slug === 'google-fonts';
46
59
 
47
60
  const getGoogleFontsPermissionFromStorage = () => {
48
- return (
49
- window.localStorage.getItem(
50
- 'wp-font-library-google-fonts-permission'
51
- ) === 'true'
52
- );
61
+ return window.localStorage.getItem( LOCAL_STORAGE_ITEM ) === 'true';
53
62
  };
54
63
 
55
64
  const [ selectedFont, setSelectedFont ] = useState( null );
@@ -59,8 +68,14 @@ function FontCollection( { slug } ) {
59
68
  const [ renderConfirmDialog, setRenderConfirmDialog ] = useState(
60
69
  requiresPermission && ! getGoogleFontsPermissionFromStorage()
61
70
  );
62
- const { collections, getFontCollection, installFont, notice, setNotice } =
63
- useContext( FontLibraryContext );
71
+ const {
72
+ collections,
73
+ getFontCollection,
74
+ installFonts,
75
+ isInstalling,
76
+ notice,
77
+ setNotice,
78
+ } = useContext( FontLibraryContext );
64
79
  const selectedCollection = collections.find(
65
80
  ( collection ) => collection.slug === slug
66
81
  );
@@ -76,6 +91,11 @@ function FontCollection( { slug } ) {
76
91
  return () => window.removeEventListener( 'storage', handleStorage );
77
92
  }, [ slug, requiresPermission ] );
78
93
 
94
+ const revokeAccess = () => {
95
+ window.localStorage.setItem( LOCAL_STORAGE_ITEM, 'false' );
96
+ window.dispatchEvent( new Event( 'storage' ) );
97
+ };
98
+
79
99
  useEffect( () => {
80
100
  const fetchFontCollection = async () => {
81
101
  try {
@@ -118,7 +138,8 @@ function FontCollection( { slug } ) {
118
138
 
119
139
  // NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px
120
140
  // The height of each font family item is 61px.
121
- const pageSize = Math.floor( ( window.innerHeight - 417 ) / 61 );
141
+ const windowHeight = Math.max( window.innerHeight, MIN_WINDOW_HEIGHT );
142
+ const pageSize = Math.floor( ( windowHeight - 417 ) / 61 );
122
143
  const totalPages = Math.ceil( fonts.length / pageSize );
123
144
  const itemsStart = ( page - 1 ) * pageSize;
124
145
  const itemsLimit = page * pageSize;
@@ -141,15 +162,6 @@ function FontCollection( { slug } ) {
141
162
  setPage( 1 );
142
163
  };
143
164
 
144
- const resetSearch = () => {
145
- setFilters( { ...filters, search: '' } );
146
- setPage( 1 );
147
- };
148
-
149
- const handleUnselectFont = () => {
150
- setSelectedFont( null );
151
- };
152
-
153
165
  const handleToggleVariant = ( font, face ) => {
154
166
  const newFontsToInstall = toggleFont( font, face, fontsToInstall );
155
167
  setFontsToInstall( newFontsToInstall );
@@ -191,7 +203,7 @@ function FontCollection( { slug } ) {
191
203
  }
192
204
 
193
205
  try {
194
- await installFont( fontFamily );
206
+ await installFonts( [ fontFamily ] );
195
207
  setNotice( {
196
208
  type: 'success',
197
209
  message: __( 'Fonts were installed successfully.' ),
@@ -205,212 +217,280 @@ function FontCollection( { slug } ) {
205
217
  resetFontsToInstall();
206
218
  };
207
219
 
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 }
220
+ const getSortedFontFaces = ( fontFamily ) => {
221
+ if ( ! fontFamily ) {
222
+ return [];
223
+ }
224
+ if ( ! fontFamily.fontFace || ! fontFamily.fontFace.length ) {
225
+ return [
226
+ {
227
+ fontFamily: fontFamily.fontFamily,
228
+ fontStyle: 'normal',
229
+ fontWeight: '400',
230
+ },
231
+ ];
232
+ }
233
+ return sortFontFaces( fontFamily.fontFace );
234
+ };
235
+
236
+ if ( renderConfirmDialog ) {
237
+ return <GoogleFontsConfirmDialog />;
238
+ }
239
+
240
+ const ActionsComponent = () => {
241
+ if ( slug !== 'google-fonts' || renderConfirmDialog || selectedFont ) {
242
+ return null;
243
+ }
244
+ return (
245
+ <DropdownMenu
246
+ icon={ moreVertical }
247
+ label={ __( 'Actions' ) }
248
+ popoverProps={ {
249
+ position: 'bottom left',
250
+ } }
251
+ controls={ [
252
+ {
253
+ title: __( 'Revoke access to Google Fonts' ),
254
+ onClick: revokeAccess,
255
+ },
256
+ ] }
222
257
  />
223
258
  );
224
- }
259
+ };
225
260
 
226
261
  return (
227
- <TabPanelLayout
228
- title={
229
- ! selectedFont ? selectedCollection.name : selectedFont.name
230
- }
231
- description={
232
- ! selectedFont
233
- ? selectedCollection.description
234
- : __( 'Select font variants to install.' )
235
- }
236
- notice={ notice }
237
- handleBack={ !! selectedFont && handleUnselectFont }
238
- footer={ footerComponent }
239
- >
240
- { renderConfirmDialog && (
241
- <>
242
- <Spacer margin={ 8 } />
243
- <GoogleFontsConfirmDialog />
244
- </>
245
- ) }
262
+ <div className="font-library-modal__tabpanel-layout">
263
+ <NavigatorProvider
264
+ initialPath="/"
265
+ className="font-library-modal__tabpanel-layout"
266
+ >
267
+ <NavigatorScreen path="/">
268
+ <HStack justify="space-between">
269
+ <VStack>
270
+ <Heading level={ 2 } size={ 13 }>
271
+ { selectedCollection.name }
272
+ </Heading>
273
+ <Text>{ selectedCollection.description }</Text>
274
+ </VStack>
275
+ <ActionsComponent />
276
+ </HStack>
277
+ <Spacer margin={ 4 } />
278
+ <Flex>
279
+ <FlexItem>
280
+ <SearchControl
281
+ className="font-library-modal__search"
282
+ value={ filters.search }
283
+ placeholder={ __( 'Font name…' ) }
284
+ label={ __( 'Search' ) }
285
+ onChange={ debouncedUpdateSearchInput }
286
+ __nextHasNoMarginBottom
287
+ hideLabelFromVision={ false }
288
+ />
289
+ </FlexItem>
290
+ <FlexItem>
291
+ <SelectControl
292
+ label={ __( 'Category' ) }
293
+ value={ filters.category }
294
+ onChange={ handleCategoryFilter }
295
+ >
296
+ { categories &&
297
+ categories.map( ( category ) => (
298
+ <option
299
+ value={ category.slug }
300
+ key={ category.slug }
301
+ >
302
+ { category.name }
303
+ </option>
304
+ ) ) }
305
+ </SelectControl>
306
+ </FlexItem>
307
+ </Flex>
308
+
309
+ <Spacer margin={ 4 } />
310
+
311
+ { ! selectedCollection?.font_families && ! notice && (
312
+ <Spinner />
313
+ ) }
314
+
315
+ { !! selectedCollection?.font_families?.length &&
316
+ ! fonts.length && (
317
+ <Text>
318
+ { __(
319
+ 'No fonts found. Try with a different search term'
320
+ ) }
321
+ </Text>
322
+ ) }
246
323
 
247
- { ! renderConfirmDialog && ! selectedFont && (
248
- <Flex>
249
- <FlexItem>
250
- <InputControl
251
- value={ filters.search }
252
- placeholder={ __( 'Font name…' ) }
253
- label={ __( 'Search' ) }
254
- onChange={ debouncedUpdateSearchInput }
255
- prefix={ <Icon icon={ search } /> }
256
- suffix={
257
- filters?.search ? (
258
- <Icon
259
- icon={ closeSmall }
260
- onClick={ resetSearch }
261
- />
262
- ) : null
263
- }
324
+ <div className="font-library-modal__fonts-grid__main">
325
+ { items.map( ( font ) => (
326
+ <FontCard
327
+ key={ font.font_family_settings.slug }
328
+ font={ font.font_family_settings }
329
+ navigatorPath={ '/fontFamily' }
330
+ onClick={ () => {
331
+ setSelectedFont(
332
+ font.font_family_settings
333
+ );
334
+ } }
335
+ />
336
+ ) ) }
337
+ </div>
338
+ </NavigatorScreen>
339
+
340
+ <NavigatorScreen path="/fontFamily">
341
+ <Flex justify="flex-start">
342
+ <NavigatorToParentButton
343
+ icon={ chevronLeft }
344
+ size="small"
345
+ onClick={ () => {
346
+ setSelectedFont( null );
347
+ setNotice( null );
348
+ } }
349
+ label={ __( 'Back' ) }
264
350
  />
265
- </FlexItem>
266
- <FlexItem>
267
- <SelectControl
268
- label={ __( 'Category' ) }
269
- value={ filters.category }
270
- onChange={ handleCategoryFilter }
351
+ <Heading
352
+ level={ 2 }
353
+ size={ 13 }
354
+ className="edit-site-global-styles-header"
271
355
  >
272
- { categories &&
273
- categories.map( ( category ) => (
274
- <option
275
- value={ category.slug }
276
- key={ category.slug }
277
- >
278
- { category.name }
279
- </option>
280
- ) ) }
281
- </SelectControl>
282
- </FlexItem>
356
+ { selectedFont?.name }
357
+ </Heading>
358
+ </Flex>
359
+ { notice && (
360
+ <>
361
+ <Spacer margin={ 1 } />
362
+ <Notice
363
+ status={ notice.type }
364
+ onRemove={ () => setNotice( null ) }
365
+ >
366
+ { notice.message }
367
+ </Notice>
368
+ <Spacer margin={ 1 } />
369
+ </>
370
+ ) }
371
+ <Spacer margin={ 4 } />
372
+ <Text> { __( 'Select font variants to install.' ) } </Text>
373
+ <Spacer margin={ 4 } />
374
+ <VStack spacing={ 0 }>
375
+ <Spacer margin={ 8 } />
376
+ { getSortedFontFaces( selectedFont ).map(
377
+ ( face, i ) => (
378
+ <CollectionFontVariant
379
+ font={ selectedFont }
380
+ face={ face }
381
+ key={ `face${ i }` }
382
+ handleToggleVariant={ handleToggleVariant }
383
+ selected={ isFontFontFaceInOutline(
384
+ selectedFont.slug,
385
+ selectedFont.fontFace ? face : null, // If the font has no fontFace, we want to check if the font is in the outline
386
+ fontToInstallOutline
387
+ ) }
388
+ />
389
+ )
390
+ ) }
391
+ </VStack>
392
+ <Spacer margin={ 16 } />
393
+ </NavigatorScreen>
394
+ </NavigatorProvider>
395
+
396
+ { selectedFont && (
397
+ <Flex
398
+ justify="flex-end"
399
+ className="font-library-modal__tabpanel-layout__footer"
400
+ >
401
+ <Button
402
+ variant="primary"
403
+ onClick={ handleInstall }
404
+ isBusy={ isInstalling }
405
+ disabled={ fontsToInstall.length === 0 || isInstalling }
406
+ __experimentalIsFocusable
407
+ >
408
+ { __( 'Install' ) }
409
+ </Button>
283
410
  </Flex>
284
411
  ) }
285
412
 
286
- <Spacer margin={ 4 } />
287
- { ! renderConfirmDialog &&
288
- ! selectedCollection?.font_families &&
289
- ! notice && <Spinner /> }
290
-
291
- { ! renderConfirmDialog &&
292
- !! selectedCollection?.font_families?.length &&
293
- ! fonts.length && (
294
- <Text>
295
- { __(
296
- 'No fonts found. Try with a different search term'
413
+ { ! selectedFont && (
414
+ <Flex
415
+ justify="center"
416
+ className="font-library-modal__tabpanel-layout__footer"
417
+ >
418
+ <Button
419
+ label={ __( 'First page' ) }
420
+ size="compact"
421
+ onClick={ () => setPage( 1 ) }
422
+ disabled={ page === 1 }
423
+ __experimentalIsFocusable
424
+ >
425
+ <span>«</span>
426
+ </Button>
427
+ <Button
428
+ label={ __( 'Previous page' ) }
429
+ size="compact"
430
+ onClick={ () => setPage( page - 1 ) }
431
+ disabled={ page === 1 }
432
+ __experimentalIsFocusable
433
+ >
434
+ <span>‹</span>
435
+ </Button>
436
+ <HStack
437
+ justify="flex-start"
438
+ expanded={ false }
439
+ spacing={ 2 }
440
+ >
441
+ { createInterpolateElement(
442
+ sprintf(
443
+ // translators: %s: Total number of pages.
444
+ _x(
445
+ 'Page <CurrentPageControl /> of %s',
446
+ 'paging'
447
+ ),
448
+ totalPages
449
+ ),
450
+ {
451
+ CurrentPageControl: (
452
+ <SelectControl
453
+ aria-label={ __( 'Current page' ) }
454
+ value={ page }
455
+ options={ [
456
+ ...Array( totalPages ),
457
+ ].map( ( e, i ) => {
458
+ return {
459
+ label: i + 1,
460
+ value: i + 1,
461
+ };
462
+ } ) }
463
+ onChange={ ( newPage ) =>
464
+ setPage( parseInt( newPage ) )
465
+ }
466
+ size={ 'compact' }
467
+ __nextHasNoMarginBottom
468
+ />
469
+ ),
470
+ }
297
471
  ) }
298
- </Text>
299
- ) }
300
-
301
- { ! renderConfirmDialog && selectedFont && (
302
- <CollectionFontDetails
303
- font={ selectedFont }
304
- handleToggleVariant={ handleToggleVariant }
305
- fontToInstallOutline={ fontToInstallOutline }
306
- />
307
- ) }
308
-
309
- { ! renderConfirmDialog && ! selectedFont && (
310
- <div className="font-library-modal__fonts-grid__main">
311
- { items.map( ( font ) => (
312
- <FontCard
313
- key={ font.font_family_settings.slug }
314
- font={ font.font_family_settings }
315
- onClick={ () => {
316
- setSelectedFont( font.font_family_settings );
317
- } }
318
- />
319
- ) ) }
320
- </div>
472
+ </HStack>
473
+ <Button
474
+ label={ __( 'Next page' ) }
475
+ size="compact"
476
+ onClick={ () => setPage( page + 1 ) }
477
+ disabled={ page === totalPages }
478
+ __experimentalIsFocusable
479
+ >
480
+ <span>›</span>
481
+ </Button>
482
+ <Button
483
+ label={ __( 'Last page' ) }
484
+ size="compact"
485
+ onClick={ () => setPage( totalPages ) }
486
+ disabled={ page === totalPages }
487
+ __experimentalIsFocusable
488
+ >
489
+ <span>»</span>
490
+ </Button>
491
+ </Flex>
321
492
  ) }
322
- </TabPanelLayout>
323
- );
324
- }
325
-
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 } ) {
400
- const { isInstalling } = useContext( FontLibraryContext );
401
-
402
- return (
403
- <Flex justify="flex-end">
404
- <Button
405
- variant="primary"
406
- onClick={ handleInstall }
407
- isBusy={ isInstalling }
408
- disabled={ isDisabled || isInstalling }
409
- __experimentalIsFocusable
410
- >
411
- { __( 'Install' ) }
412
- </Button>
413
- </Flex>
493
+ </div>
414
494
  );
415
495
  }
416
496