@wordpress/edit-site 6.3.0 → 6.5.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 (334) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/add-new-pattern/index.js +14 -3
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-post/index.js +2 -1
  5. package/build/components/add-new-post/index.js.map +1 -1
  6. package/build/components/add-new-template/index.js +3 -1
  7. package/build/components/add-new-template/index.js.map +1 -1
  8. package/build/components/add-new-template/utils.js +2 -2
  9. package/build/components/add-new-template/utils.js.map +1 -1
  10. package/build/components/block-editor/use-site-editor-settings.js +1 -82
  11. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  12. package/build/components/editor/index.js +71 -20
  13. package/build/components/editor/index.js.map +1 -1
  14. package/build/components/global-styles/block-preview-panel.js +14 -5
  15. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  16. package/build/components/global-styles/font-families.js +40 -22
  17. package/build/components/global-styles/font-families.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/context.js +0 -5
  19. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/font-collection.js +25 -5
  21. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/index.js +5 -12
  23. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/installed-fonts.js +78 -15
  25. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/upload-fonts.js +2 -3
  27. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  28. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +39 -0
  29. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
  30. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +39 -0
  31. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
  32. package/build/components/global-styles/font-sizes/font-size-preview.js +44 -0
  33. package/build/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
  34. package/build/components/global-styles/font-sizes/font-size.js +213 -0
  35. package/build/components/global-styles/font-sizes/font-size.js.map +1 -0
  36. package/build/components/global-styles/font-sizes/font-sizes-count.js +50 -0
  37. package/build/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
  38. package/build/components/global-styles/font-sizes/font-sizes.js +163 -0
  39. package/build/components/global-styles/font-sizes/font-sizes.js.map +1 -0
  40. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js +67 -0
  41. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
  42. package/build/components/global-styles/screen-block.js +10 -8
  43. package/build/components/global-styles/screen-block.js.map +1 -1
  44. package/build/components/global-styles/screen-style-variations.js +2 -2
  45. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  46. package/build/components/global-styles/screen-typeset.js +40 -0
  47. package/build/components/global-styles/screen-typeset.js.map +1 -0
  48. package/build/components/global-styles/screen-typography-element.js +14 -0
  49. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  50. package/build/components/global-styles/screen-typography.js +5 -6
  51. package/build/components/global-styles/screen-typography.js.map +1 -1
  52. package/build/components/global-styles/shadows-edit-panel.js +50 -59
  53. package/build/components/global-styles/shadows-edit-panel.js.map +1 -1
  54. package/build/components/global-styles/size-control/index.js +85 -0
  55. package/build/components/global-styles/size-control/index.js.map +1 -0
  56. package/build/components/global-styles/style-variations-container.js +3 -0
  57. package/build/components/global-styles/style-variations-container.js.map +1 -1
  58. package/build/components/global-styles/typeset-button.js +97 -0
  59. package/build/components/global-styles/typeset-button.js.map +1 -0
  60. package/build/components/global-styles/typeset.js +80 -0
  61. package/build/components/global-styles/typeset.js.map +1 -0
  62. package/build/components/global-styles/ui.js +12 -0
  63. package/build/components/global-styles/ui.js.map +1 -1
  64. package/build/components/global-styles/utils.js +10 -1
  65. package/build/components/global-styles/utils.js.map +1 -1
  66. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  67. package/build/components/global-styles/variations/variations-typography.js +1 -1
  68. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  69. package/build/components/layout/index.js +6 -0
  70. package/build/components/layout/index.js.map +1 -1
  71. package/build/components/layout/router.js +14 -6
  72. package/build/components/layout/router.js.map +1 -1
  73. package/build/components/page-patterns/fields.js +230 -0
  74. package/build/components/page-patterns/fields.js.map +1 -0
  75. package/build/components/page-patterns/header.js +1 -1
  76. package/build/components/page-patterns/header.js.map +1 -1
  77. package/build/components/page-patterns/index.js +21 -227
  78. package/build/components/page-patterns/index.js.map +1 -1
  79. package/build/components/page-patterns/use-patterns.js +26 -1
  80. package/build/components/page-patterns/use-patterns.js.map +1 -1
  81. package/build/components/page-templates/fields.js +169 -0
  82. package/build/components/page-templates/fields.js.map +1 -0
  83. package/build/components/page-templates/index.js +38 -198
  84. package/build/components/page-templates/index.js.map +1 -1
  85. package/build/components/post-edit/index.js +117 -0
  86. package/build/components/post-edit/index.js.map +1 -0
  87. package/build/components/post-fields/index.js +318 -0
  88. package/build/components/post-fields/index.js.map +1 -0
  89. package/build/components/post-list/index.js +339 -0
  90. package/build/components/post-list/index.js.map +1 -0
  91. package/build/components/posts-app/router.js +3 -3
  92. package/build/components/posts-app/router.js.map +1 -1
  93. package/build/components/sidebar-dataviews/add-new-view.js +2 -2
  94. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  95. package/build/components/sidebar-dataviews/dataview-item.js +2 -3
  96. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  97. package/build/components/sidebar-dataviews/default-views.js +103 -91
  98. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  99. package/build/components/sidebar-dataviews/index.js +2 -2
  100. package/build/components/sidebar-dataviews/index.js.map +1 -1
  101. package/build/components/sidebar-navigation-screen-global-styles/content.js +64 -0
  102. package/build/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
  103. package/build/components/sidebar-navigation-screen-global-styles/index.js +2 -47
  104. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  105. package/build/components/site-hub/index.js +6 -3
  106. package/build/components/site-hub/index.js.map +1 -1
  107. package/build/components/style-book/index.js +22 -25
  108. package/build/components/style-book/index.js.map +1 -1
  109. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  110. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  111. package/build/hooks/push-changes-to-global-styles/index.js +3 -4
  112. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  113. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -4
  114. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  115. package/build/index.js +4 -2
  116. package/build/index.js.map +1 -1
  117. package/build/store/selectors.js +34 -6
  118. package/build/store/selectors.js.map +1 -1
  119. package/build/utils/get-filtered-template-parts.js +64 -0
  120. package/build/utils/get-filtered-template-parts.js.map +1 -0
  121. package/build-module/components/add-new-pattern/index.js +14 -3
  122. package/build-module/components/add-new-pattern/index.js.map +1 -1
  123. package/build-module/components/add-new-post/index.js +2 -1
  124. package/build-module/components/add-new-post/index.js.map +1 -1
  125. package/build-module/components/add-new-template/index.js +3 -1
  126. package/build-module/components/add-new-template/index.js.map +1 -1
  127. package/build-module/components/add-new-template/utils.js +2 -2
  128. package/build-module/components/add-new-template/utils.js.map +1 -1
  129. package/build-module/components/block-editor/use-site-editor-settings.js +1 -82
  130. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  131. package/build-module/components/editor/index.js +73 -22
  132. package/build-module/components/editor/index.js.map +1 -1
  133. package/build-module/components/global-styles/block-preview-panel.js +14 -5
  134. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  135. package/build-module/components/global-styles/font-families.js +42 -24
  136. package/build-module/components/global-styles/font-families.js.map +1 -1
  137. package/build-module/components/global-styles/font-library-modal/context.js +0 -5
  138. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  139. package/build-module/components/global-styles/font-library-modal/font-collection.js +26 -6
  140. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  141. package/build-module/components/global-styles/font-library-modal/index.js +5 -12
  142. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  143. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +81 -18
  144. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  145. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +2 -3
  146. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  147. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +32 -0
  148. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
  149. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +32 -0
  150. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
  151. package/build-module/components/global-styles/font-sizes/font-size-preview.js +37 -0
  152. package/build-module/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
  153. package/build-module/components/global-styles/font-sizes/font-size.js +207 -0
  154. package/build-module/components/global-styles/font-sizes/font-size.js.map +1 -0
  155. package/build-module/components/global-styles/font-sizes/font-sizes-count.js +43 -0
  156. package/build-module/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
  157. package/build-module/components/global-styles/font-sizes/font-sizes.js +157 -0
  158. package/build-module/components/global-styles/font-sizes/font-sizes.js.map +1 -0
  159. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js +61 -0
  160. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
  161. package/build-module/components/global-styles/screen-block.js +10 -8
  162. package/build-module/components/global-styles/screen-block.js.map +1 -1
  163. package/build-module/components/global-styles/screen-style-variations.js +2 -2
  164. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  165. package/build-module/components/global-styles/screen-typeset.js +34 -0
  166. package/build-module/components/global-styles/screen-typeset.js.map +1 -0
  167. package/build-module/components/global-styles/screen-typography-element.js +14 -0
  168. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  169. package/build-module/components/global-styles/screen-typography.js +5 -6
  170. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  171. package/build-module/components/global-styles/shadows-edit-panel.js +51 -60
  172. package/build-module/components/global-styles/shadows-edit-panel.js.map +1 -1
  173. package/build-module/components/global-styles/size-control/index.js +79 -0
  174. package/build-module/components/global-styles/size-control/index.js.map +1 -0
  175. package/build-module/components/global-styles/style-variations-container.js +3 -0
  176. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  177. package/build-module/components/global-styles/typeset-button.js +89 -0
  178. package/build-module/components/global-styles/typeset-button.js.map +1 -0
  179. package/build-module/components/global-styles/typeset.js +71 -0
  180. package/build-module/components/global-styles/typeset.js.map +1 -0
  181. package/build-module/components/global-styles/ui.js +12 -0
  182. package/build-module/components/global-styles/ui.js.map +1 -1
  183. package/build-module/components/global-styles/utils.js +10 -1
  184. package/build-module/components/global-styles/utils.js.map +1 -1
  185. package/build-module/components/global-styles/variations/variations-color.js +1 -1
  186. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  187. package/build-module/components/global-styles/variations/variations-typography.js +1 -2
  188. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  189. package/build-module/components/layout/index.js +6 -0
  190. package/build-module/components/layout/index.js.map +1 -1
  191. package/build-module/components/layout/router.js +14 -6
  192. package/build-module/components/layout/router.js.map +1 -1
  193. package/build-module/components/page-patterns/fields.js +223 -0
  194. package/build-module/components/page-patterns/fields.js.map +1 -0
  195. package/build-module/components/page-patterns/header.js +1 -1
  196. package/build-module/components/page-patterns/header.js.map +1 -1
  197. package/build-module/components/page-patterns/index.js +24 -230
  198. package/build-module/components/page-patterns/index.js.map +1 -1
  199. package/build-module/components/page-patterns/use-patterns.js +26 -1
  200. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  201. package/build-module/components/page-templates/fields.js +160 -0
  202. package/build-module/components/page-templates/fields.js.map +1 -0
  203. package/build-module/components/page-templates/index.js +39 -199
  204. package/build-module/components/page-templates/index.js.map +1 -1
  205. package/build-module/components/post-edit/index.js +110 -0
  206. package/build-module/components/post-edit/index.js.map +1 -0
  207. package/build-module/components/post-fields/index.js +310 -0
  208. package/build-module/components/post-fields/index.js.map +1 -0
  209. package/build-module/components/post-list/index.js +333 -0
  210. package/build-module/components/post-list/index.js.map +1 -0
  211. package/build-module/components/posts-app/router.js +3 -3
  212. package/build-module/components/posts-app/router.js.map +1 -1
  213. package/build-module/components/sidebar-dataviews/add-new-view.js +2 -2
  214. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  215. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -3
  216. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  217. package/build-module/components/sidebar-dataviews/default-views.js +102 -90
  218. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  219. package/build-module/components/sidebar-dataviews/index.js +5 -5
  220. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  221. package/build-module/components/sidebar-navigation-screen-global-styles/content.js +57 -0
  222. package/build-module/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
  223. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +2 -47
  224. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  225. package/build-module/components/site-hub/index.js +7 -4
  226. package/build-module/components/site-hub/index.js.map +1 -1
  227. package/build-module/components/style-book/index.js +23 -26
  228. package/build-module/components/style-book/index.js.map +1 -1
  229. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  230. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  231. package/build-module/hooks/push-changes-to-global-styles/index.js +3 -4
  232. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  233. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -3
  234. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  235. package/build-module/index.js +4 -2
  236. package/build-module/index.js.map +1 -1
  237. package/build-module/store/selectors.js +35 -7
  238. package/build-module/store/selectors.js.map +1 -1
  239. package/build-module/utils/get-filtered-template-parts.js +57 -0
  240. package/build-module/utils/get-filtered-template-parts.js.map +1 -0
  241. package/build-style/posts-rtl.css +749 -492
  242. package/build-style/posts.css +749 -492
  243. package/build-style/style-rtl.css +956 -613
  244. package/build-style/style.css +956 -613
  245. package/package.json +41 -41
  246. package/src/components/add-new-pattern/index.js +16 -5
  247. package/src/components/add-new-post/index.js +2 -1
  248. package/src/components/add-new-template/index.js +4 -1
  249. package/src/components/add-new-template/style.scss +4 -6
  250. package/src/components/add-new-template/utils.js +10 -6
  251. package/src/components/block-editor/use-site-editor-settings.js +15 -111
  252. package/src/components/editor/index.js +80 -22
  253. package/src/components/editor/style.scss +59 -1
  254. package/src/components/global-styles/block-preview-panel.js +22 -9
  255. package/src/components/global-styles/font-families.js +65 -32
  256. package/src/components/global-styles/font-library-modal/context.js +0 -5
  257. package/src/components/global-styles/font-library-modal/font-collection.js +34 -10
  258. package/src/components/global-styles/font-library-modal/index.js +6 -9
  259. package/src/components/global-styles/font-library-modal/installed-fonts.js +115 -16
  260. package/src/components/global-styles/font-library-modal/style.scss +9 -0
  261. package/src/components/global-styles/font-library-modal/upload-fonts.js +2 -2
  262. package/src/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +43 -0
  263. package/src/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +37 -0
  264. package/src/components/global-styles/font-sizes/font-size-preview.js +43 -0
  265. package/src/components/global-styles/font-sizes/font-size.js +250 -0
  266. package/src/components/global-styles/font-sizes/font-sizes-count.js +40 -0
  267. package/src/components/global-styles/font-sizes/font-sizes.js +263 -0
  268. package/src/components/global-styles/font-sizes/rename-font-size-dialog.js +70 -0
  269. package/src/components/global-styles/screen-block.js +12 -14
  270. package/src/components/global-styles/screen-style-variations.js +2 -2
  271. package/src/components/global-styles/screen-typeset.js +42 -0
  272. package/src/components/global-styles/screen-typography-element.js +14 -0
  273. package/src/components/global-styles/screen-typography.js +7 -6
  274. package/src/components/global-styles/shadows-edit-panel.js +66 -73
  275. package/src/components/global-styles/size-control/index.js +86 -0
  276. package/src/components/global-styles/style-variations-container.js +4 -0
  277. package/src/components/global-styles/style.scss +17 -10
  278. package/src/components/global-styles/typeset-button.js +93 -0
  279. package/src/components/global-styles/typeset.js +73 -0
  280. package/src/components/global-styles/ui.js +15 -0
  281. package/src/components/global-styles/utils.js +13 -1
  282. package/src/components/global-styles/variations/variations-color.js +1 -1
  283. package/src/components/global-styles/variations/variations-typography.js +1 -2
  284. package/src/components/layout/index.js +11 -0
  285. package/src/components/layout/router.js +13 -5
  286. package/src/components/layout/style.scss +34 -8
  287. package/src/components/page-patterns/fields.js +251 -0
  288. package/src/components/page-patterns/header.js +1 -1
  289. package/src/components/page-patterns/index.js +24 -246
  290. package/src/components/page-patterns/style.scss +82 -85
  291. package/src/components/page-patterns/use-patterns.js +31 -1
  292. package/src/components/page-templates/fields.js +157 -0
  293. package/src/components/page-templates/index.js +46 -192
  294. package/src/components/page-templates/style.scss +19 -8
  295. package/src/components/post-edit/index.js +115 -0
  296. package/src/components/post-edit/style.scss +9 -0
  297. package/src/components/post-fields/index.js +357 -0
  298. package/src/components/post-list/index.js +386 -0
  299. package/src/components/{posts-app → post-list}/style.scss +12 -9
  300. package/src/components/posts-app/router.js +3 -3
  301. package/src/components/sidebar-dataviews/add-new-view.js +2 -4
  302. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  303. package/src/components/sidebar-dataviews/default-views.js +116 -104
  304. package/src/components/sidebar-dataviews/index.js +4 -3
  305. package/src/components/sidebar-navigation-screen-global-styles/content.js +55 -0
  306. package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -55
  307. package/src/components/site-hub/index.js +11 -2
  308. package/src/components/site-icon/style.scss +4 -1
  309. package/src/components/style-book/index.js +27 -32
  310. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  311. package/src/hooks/push-changes-to-global-styles/index.js +3 -4
  312. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -3
  313. package/src/index.js +6 -2
  314. package/src/posts.scss +1 -1
  315. package/src/store/selectors.js +53 -14
  316. package/src/store/test/selectors.js +1 -26
  317. package/src/style.scss +2 -1
  318. package/src/utils/get-filtered-template-parts.js +61 -0
  319. package/src/utils/test/get-filtered-template-parts.js +127 -0
  320. package/build/components/global-styles/screen-background.js +0 -36
  321. package/build/components/global-styles/screen-background.js.map +0 -1
  322. package/build/components/posts-app/posts-list.js +0 -568
  323. package/build/components/posts-app/posts-list.js.map +0 -1
  324. package/build/utils/clone-deep.js +0 -15
  325. package/build/utils/clone-deep.js.map +0 -1
  326. package/build-module/components/global-styles/screen-background.js +0 -30
  327. package/build-module/components/global-styles/screen-background.js.map +0 -1
  328. package/build-module/components/posts-app/posts-list.js +0 -560
  329. package/build-module/components/posts-app/posts-list.js.map +0 -1
  330. package/build-module/utils/clone-deep.js +0 -9
  331. package/build-module/utils/clone-deep.js.map +0 -1
  332. package/src/components/global-styles/screen-background.js +0 -29
  333. package/src/components/posts-app/posts-list.js +0 -651
  334. package/src/utils/clone-deep.js +0 -8
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __ } from '@wordpress/i18n';
4
+ import { __, _x } from '@wordpress/i18n';
5
5
  import {
6
+ __experimentalText as Text,
6
7
  __experimentalItemGroup as ItemGroup,
7
8
  __experimentalVStack as VStack,
8
9
  Button,
@@ -25,8 +26,14 @@ import { unlock } from '../../lock-unlock';
25
26
  const { useGlobalSetting } = unlock( blockEditorPrivateApis );
26
27
 
27
28
  function FontFamilies() {
28
- const { modalTabOpen, setModalTabOpen } = useContext( FontLibraryContext );
29
+ const { baseCustomFonts, modalTabOpen, setModalTabOpen } =
30
+ useContext( FontLibraryContext );
29
31
  const [ fontFamilies ] = useGlobalSetting( 'typography.fontFamilies' );
32
+ const [ baseFontFamilies ] = useGlobalSetting(
33
+ 'typography.fontFamilies',
34
+ undefined,
35
+ 'base'
36
+ );
30
37
  const themeFonts = fontFamilies?.theme
31
38
  ? fontFamilies.theme
32
39
  .map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )
@@ -39,6 +46,11 @@ function FontFamilies() {
39
46
  : [];
40
47
  const hasFonts = 0 < customFonts.length || 0 < themeFonts.length;
41
48
 
49
+ const hasInstalledFonts =
50
+ hasFonts ||
51
+ baseFontFamilies?.theme?.length > 0 ||
52
+ baseCustomFonts?.length > 0;
53
+
42
54
  return (
43
55
  <>
44
56
  { !! modalTabOpen && (
@@ -48,48 +60,69 @@ function FontFamilies() {
48
60
  />
49
61
  ) }
50
62
 
51
- <VStack spacing={ 2 }>
52
- <Subtitle level={ 3 }>{ __( 'Fonts' ) }</Subtitle>
53
- { hasFonts ? (
54
- <>
55
- <ItemGroup isBordered isSeparated>
56
- { customFonts.map( ( font ) => (
63
+ <VStack spacing={ 4 }>
64
+ { themeFonts.length > 0 && (
65
+ <VStack>
66
+ <Subtitle level={ 3 }>
67
+ {
68
+ /* translators: Heading for a list of fonts provided by the theme. */
69
+ _x( 'Theme', 'font source' )
70
+ }
71
+ </Subtitle>
72
+ <ItemGroup size="large" isBordered isSeparated>
73
+ { themeFonts.map( ( font ) => (
57
74
  <FontFamilyItem
58
75
  key={ font.slug }
59
76
  font={ font }
60
77
  />
61
78
  ) ) }
62
- { themeFonts.map( ( font ) => (
79
+ </ItemGroup>
80
+ </VStack>
81
+ ) }
82
+ { customFonts.length > 0 && (
83
+ <VStack>
84
+ <Subtitle level={ 3 }>
85
+ {
86
+ /* translators: Heading for a list of fonts installed by the user. */
87
+ _x( 'Custom', 'font source' )
88
+ }
89
+ </Subtitle>
90
+ <ItemGroup size="large" isBordered isSeparated>
91
+ { customFonts.map( ( font ) => (
63
92
  <FontFamilyItem
64
93
  key={ font.slug }
65
94
  font={ font }
66
95
  />
67
96
  ) ) }
68
97
  </ItemGroup>
69
- <Button
70
- className="edit-site-global-styles-font-families__manage-fonts"
71
- variant="secondary"
72
- __next40pxDefaultSize
73
- onClick={ () =>
74
- setModalTabOpen( 'installed-fonts' )
75
- }
76
- >
77
- { __( 'Manage fonts' ) }
78
- </Button>
79
- </>
80
- ) : (
81
- <>
82
- { __( 'No fonts installed.' ) }
83
- <Button
84
- className="edit-site-global-styles-font-families__add-fonts"
85
- variant="secondary"
86
- __next40pxDefaultSize
87
- onClick={ () => setModalTabOpen( 'upload-fonts' ) }
88
- >
89
- { __( 'Add fonts' ) }
90
- </Button>
91
- </>
98
+ </VStack>
99
+ ) }
100
+ { ! hasFonts && (
101
+ <VStack>
102
+ <Subtitle level={ 3 }>{ __( 'Fonts' ) }</Subtitle>
103
+ <Text as="p">
104
+ { hasInstalledFonts
105
+ ? __( 'No fonts activated.' )
106
+ : __( 'No fonts installed.' ) }
107
+ </Text>
108
+ </VStack>
92
109
  ) }
110
+ <Button
111
+ className="edit-site-global-styles-font-families__manage-fonts"
112
+ variant="secondary"
113
+ __next40pxDefaultSize
114
+ onClick={ () => {
115
+ setModalTabOpen(
116
+ hasInstalledFonts
117
+ ? 'installed-fonts'
118
+ : 'upload-fonts'
119
+ );
120
+ } }
121
+ >
122
+ { hasInstalledFonts
123
+ ? __( 'Manage fonts' )
124
+ : __( 'Add fonts' ) }
125
+ </Button>
93
126
  </VStack>
94
127
  </>
95
128
  );
@@ -54,7 +54,6 @@ function FontLibraryProvider( { children } ) {
54
54
 
55
55
  const [ isInstalling, setIsInstalling ] = useState( false );
56
56
  const [ refreshKey, setRefreshKey ] = useState( 0 );
57
- const [ notice, setNotice ] = useState( null );
58
57
 
59
58
  const refreshLibrary = () => {
60
59
  setRefreshKey( Date.now() );
@@ -139,8 +138,6 @@ function FontLibraryProvider( { children } ) {
139
138
  }, [ modalTabOpen ] );
140
139
 
141
140
  const handleSetLibraryFontSelected = ( font ) => {
142
- setNotice( null );
143
-
144
141
  // If font is null, reset the selected font
145
142
  if ( ! font ) {
146
143
  setLibraryFontSelected( null );
@@ -527,8 +524,6 @@ function FontLibraryProvider( { children } ) {
527
524
  modalTabOpen,
528
525
  setModalTabOpen,
529
526
  refreshLibrary,
530
- notice,
531
- setNotice,
532
527
  saveFontFamilies,
533
528
  isResolvingLibrary,
534
529
  isInstalling,
@@ -25,6 +25,7 @@ import {
25
25
  DropdownMenu,
26
26
  SearchControl,
27
27
  ProgressBar,
28
+ CheckboxControl,
28
29
  } from '@wordpress/components';
29
30
  import { debounce } from '@wordpress/compose';
30
31
  import { sprintf, __, _x } from '@wordpress/i18n';
@@ -62,20 +63,15 @@ function FontCollection( { slug } ) {
62
63
  };
63
64
 
64
65
  const [ selectedFont, setSelectedFont ] = useState( null );
66
+ const [ notice, setNotice ] = useState( false );
65
67
  const [ fontsToInstall, setFontsToInstall ] = useState( [] );
66
68
  const [ page, setPage ] = useState( 1 );
67
69
  const [ filters, setFilters ] = useState( {} );
68
70
  const [ renderConfirmDialog, setRenderConfirmDialog ] = useState(
69
71
  requiresPermission && ! getGoogleFontsPermissionFromStorage()
70
72
  );
71
- const {
72
- collections,
73
- getFontCollection,
74
- installFonts,
75
- isInstalling,
76
- notice,
77
- setNotice,
78
- } = useContext( FontLibraryContext );
73
+ const { collections, getFontCollection, installFonts, isInstalling } =
74
+ useContext( FontLibraryContext );
79
75
  const selectedCollection = collections.find(
80
76
  ( collection ) => collection.slug === slug
81
77
  );
@@ -115,8 +111,7 @@ function FontCollection( { slug } ) {
115
111
 
116
112
  useEffect( () => {
117
113
  setSelectedFont( null );
118
- setNotice( null );
119
- }, [ slug, setNotice ] );
114
+ }, [ slug ] );
120
115
 
121
116
  useEffect( () => {
122
117
  // If the selected fonts change, reset the selected fonts to install
@@ -175,6 +170,25 @@ function FontCollection( { slug } ) {
175
170
  setFontsToInstall( [] );
176
171
  };
177
172
 
173
+ const selectFontCount =
174
+ fontsToInstall.length > 0 ? fontsToInstall[ 0 ]?.fontFace?.length : 0;
175
+
176
+ // Check if any fonts are selected.
177
+ const isIndeterminate =
178
+ selectFontCount > 0 &&
179
+ selectFontCount !== selectedFont?.fontFace?.length;
180
+
181
+ // Check if all fonts are selected.
182
+ const isSelectAllChecked =
183
+ selectFontCount === selectedFont?.fontFace?.length;
184
+
185
+ // Toggle select all fonts.
186
+ const toggleSelectAll = () => {
187
+ const newFonts = isSelectAllChecked ? [] : [ selectedFont ];
188
+
189
+ setFontsToInstall( newFonts );
190
+ };
191
+
178
192
  const handleInstall = async () => {
179
193
  setNotice( null );
180
194
 
@@ -301,6 +315,8 @@ function FontCollection( { slug } ) {
301
315
  </FlexItem>
302
316
  <FlexItem>
303
317
  <SelectControl
318
+ __nextHasNoMarginBottom
319
+ __next40pxDefaultSize
304
320
  label={ __( 'Category' ) }
305
321
  value={ filters.category }
306
322
  onChange={ handleCategoryFilter }
@@ -400,6 +416,14 @@ function FontCollection( { slug } ) {
400
416
  { __( 'Select font variants to install.' ) }
401
417
  </Text>
402
418
  <Spacer margin={ 4 } />
419
+ <CheckboxControl
420
+ className="font-library-modal__select-all"
421
+ label={ __( 'Select all' ) }
422
+ checked={ isSelectAllChecked }
423
+ onChange={ toggleSelectAll }
424
+ indeterminate={ isIndeterminate }
425
+ __nextHasNoMarginBottom
426
+ />
403
427
  <VStack spacing={ 0 }>
404
428
  <Spacer margin={ 8 } />
405
429
  { getSortedFontFaces( selectedFont ).map(
@@ -44,10 +44,12 @@ function FontLibraryModal( {
44
44
  onRequestClose,
45
45
  defaultTabId = 'installed-fonts',
46
46
  } ) {
47
- const { collections, setNotice } = useContext( FontLibraryContext );
47
+ const { collections } = useContext( FontLibraryContext );
48
48
  const canUserCreate = useSelect( ( select ) => {
49
- const { canUser } = select( coreStore );
50
- return canUser( 'create', 'font-families' );
49
+ return select( coreStore ).canUser( 'create', {
50
+ kind: 'postType',
51
+ name: 'wp_font_family',
52
+ } );
51
53
  }, [] );
52
54
 
53
55
  const tabs = [ DEFAULT_TAB ];
@@ -57,11 +59,6 @@ function FontLibraryModal( {
57
59
  tabs.push( ...tabsFromCollections( collections || [] ) );
58
60
  }
59
61
 
60
- // Reset notice when new tab is selected.
61
- const onSelect = () => {
62
- setNotice( null );
63
- };
64
-
65
62
  return (
66
63
  <Modal
67
64
  title={ __( 'Fonts' ) }
@@ -70,7 +67,7 @@ function FontLibraryModal( {
70
67
  className="font-library-modal"
71
68
  >
72
69
  <div className="font-library-modal__tabs">
73
- <Tabs defaultTabId={ defaultTabId } onSelect={ onSelect }>
70
+ <Tabs defaultTabId={ defaultTabId }>
74
71
  <Tabs.TabList>
75
72
  { tabs.map( ( { id, title } ) => (
76
73
  <Tabs.Tab key={ id } tabId={ id }>
@@ -16,11 +16,12 @@ import {
16
16
  Flex,
17
17
  Notice,
18
18
  ProgressBar,
19
+ CheckboxControl,
19
20
  } from '@wordpress/components';
20
21
  import { useEntityRecord, store as coreStore } from '@wordpress/core-data';
21
22
  import { useSelect } from '@wordpress/data';
22
23
  import { useContext, useEffect, useState } from '@wordpress/element';
23
- import { __, sprintf } from '@wordpress/i18n';
24
+ import { __, _x, sprintf } from '@wordpress/i18n';
24
25
  import { chevronLeft } from '@wordpress/icons';
25
26
  import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
26
27
 
@@ -31,7 +32,12 @@ import { FontLibraryContext } from './context';
31
32
  import FontCard from './font-card';
32
33
  import LibraryFontVariant from './library-font-variant';
33
34
  import { sortFontFaces } from './utils/sort-font-faces';
34
- import { setUIValuesNeeded } from './utils';
35
+ import {
36
+ setUIValuesNeeded,
37
+ loadFontFaceInBrowser,
38
+ unloadFontFaceInBrowser,
39
+ getDisplaySrcFromFontFace,
40
+ } from './utils';
35
41
  import { unlock } from '../../../lock-unlock';
36
42
 
37
43
  const { useGlobalSetting } = unlock( blockEditorPrivateApis );
@@ -47,11 +53,13 @@ function InstalledFonts() {
47
53
  isInstalling,
48
54
  saveFontFamilies,
49
55
  getFontFacesActivated,
50
- notice,
51
- setNotice,
52
- fontFamilies,
53
56
  } = useContext( FontLibraryContext );
57
+
58
+ const [ fontFamilies, setFontFamilies ] = useGlobalSetting(
59
+ 'typography.fontFamilies'
60
+ );
54
61
  const [ isConfirmDeleteOpen, setIsConfirmDeleteOpen ] = useState( false );
62
+ const [ notice, setNotice ] = useState( false );
55
63
  const [ baseFontFamilies ] = useGlobalSetting(
56
64
  'typography.fontFamilies',
57
65
  undefined,
@@ -61,7 +69,6 @@ function InstalledFonts() {
61
69
  const { __experimentalGetCurrentGlobalStylesId } = select( coreStore );
62
70
  return __experimentalGetCurrentGlobalStylesId();
63
71
  } );
64
-
65
72
  const globalStyles = useEntityRecord(
66
73
  'root',
67
74
  'globalStyles',
@@ -93,7 +100,11 @@ function InstalledFonts() {
93
100
  const { canUser } = select( coreStore );
94
101
  return (
95
102
  customFontFamilyId &&
96
- canUser( 'delete', 'font-families', customFontFamilyId )
103
+ canUser( 'delete', {
104
+ kind: 'postType',
105
+ name: 'wp_font_family',
106
+ id: customFontFamilyId,
107
+ } )
97
108
  );
98
109
  },
99
110
  [ customFontFamilyId ]
@@ -108,6 +119,24 @@ function InstalledFonts() {
108
119
  setIsConfirmDeleteOpen( true );
109
120
  };
110
121
 
122
+ const handleUpdate = async () => {
123
+ setNotice( null );
124
+ try {
125
+ await saveFontFamilies( fontFamilies );
126
+ setNotice( {
127
+ type: 'success',
128
+ message: __( 'Font family updated successfully.' ),
129
+ } );
130
+ } catch ( error ) {
131
+ setNotice( {
132
+ type: 'error',
133
+ message:
134
+ __( 'There was an error updating the font family. ' ) +
135
+ error.message,
136
+ } );
137
+ }
138
+ };
139
+
111
140
  const getFontFacesToDisplay = ( font ) => {
112
141
  if ( ! font ) {
113
142
  return [];
@@ -144,6 +173,56 @@ function InstalledFonts() {
144
173
  refreshLibrary();
145
174
  }, [] );
146
175
 
176
+ // Get activated fonts count.
177
+ const activeFontsCount = libraryFontSelected
178
+ ? getFontFacesActivated(
179
+ libraryFontSelected.slug,
180
+ libraryFontSelected.source
181
+ ).length
182
+ : 0;
183
+
184
+ const selectedFontsCount =
185
+ libraryFontSelected?.fontFace?.length ??
186
+ ( libraryFontSelected?.fontFamily ? 1 : 0 );
187
+
188
+ // Check if any fonts are selected.
189
+ const isIndeterminate =
190
+ activeFontsCount > 0 && activeFontsCount !== selectedFontsCount;
191
+
192
+ // Check if all fonts are selected.
193
+ const isSelectAllChecked = activeFontsCount === selectedFontsCount;
194
+
195
+ // Toggle select all fonts.
196
+ const toggleSelectAll = () => {
197
+ const initialFonts =
198
+ fontFamilies?.[ libraryFontSelected.source ]?.filter(
199
+ ( f ) => f.slug !== libraryFontSelected.slug
200
+ ) ?? [];
201
+ const newFonts = isSelectAllChecked
202
+ ? initialFonts
203
+ : [ ...initialFonts, libraryFontSelected ];
204
+
205
+ setFontFamilies( {
206
+ ...fontFamilies,
207
+ [ libraryFontSelected.source ]: newFonts,
208
+ } );
209
+
210
+ if ( libraryFontSelected.fontFace ) {
211
+ libraryFontSelected.fontFace.forEach( ( face ) => {
212
+ if ( isSelectAllChecked ) {
213
+ unloadFontFaceInBrowser( face, 'all' );
214
+ } else {
215
+ loadFontFaceInBrowser(
216
+ face,
217
+ getDisplaySrcFromFontFace( face?.src ),
218
+ 'all'
219
+ );
220
+ }
221
+ } );
222
+ }
223
+ };
224
+
225
+ const hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0;
147
226
  return (
148
227
  <div className="font-library-modal__tabpanel-layout">
149
228
  { isResolvingLibrary && (
@@ -169,10 +248,18 @@ function InstalledFonts() {
169
248
  { notice.message }
170
249
  </Notice>
171
250
  ) }
172
- { baseCustomFonts.length > 0 && (
251
+ { ! hasFonts && (
252
+ <Text as="p">
253
+ { __( 'No fonts installed.' ) }
254
+ </Text>
255
+ ) }
256
+ { baseThemeFonts.length > 0 && (
173
257
  <VStack>
174
258
  <h2 className="font-library-modal__fonts-title">
175
- { __( 'Installed Fonts' ) }
259
+ {
260
+ /* translators: Heading for a list of fonts provided by the theme. */
261
+ _x( 'Theme', 'font source' )
262
+ }
176
263
  </h2>
177
264
  { /*
178
265
  * Disable reason: The `list` ARIA role is redundant but
@@ -183,7 +270,7 @@ function InstalledFonts() {
183
270
  role="list"
184
271
  className="font-library-modal__fonts-list"
185
272
  >
186
- { baseCustomFonts.map( ( font ) => (
273
+ { baseThemeFonts.map( ( font ) => (
187
274
  <li
188
275
  key={ font.slug }
189
276
  className="font-library-modal__fonts-list-item"
@@ -195,6 +282,7 @@ function InstalledFonts() {
195
282
  font
196
283
  ) }
197
284
  onClick={ () => {
285
+ setNotice( null );
198
286
  handleSetLibraryFontSelected(
199
287
  font
200
288
  );
@@ -206,10 +294,13 @@ function InstalledFonts() {
206
294
  { /* eslint-enable jsx-a11y/no-redundant-roles */ }
207
295
  </VStack>
208
296
  ) }
209
- { baseThemeFonts.length > 0 && (
297
+ { baseCustomFonts.length > 0 && (
210
298
  <VStack>
211
299
  <h2 className="font-library-modal__fonts-title">
212
- { __( 'Theme Fonts' ) }
300
+ {
301
+ /* translators: Heading for a list of fonts installed by the user. */
302
+ _x( 'Custom', 'font source' )
303
+ }
213
304
  </h2>
214
305
  { /*
215
306
  * Disable reason: The `list` ARIA role is redundant but
@@ -220,7 +311,7 @@ function InstalledFonts() {
220
311
  role="list"
221
312
  className="font-library-modal__fonts-list"
222
313
  >
223
- { baseThemeFonts.map( ( font ) => (
314
+ { baseCustomFonts.map( ( font ) => (
224
315
  <li
225
316
  key={ font.slug }
226
317
  className="font-library-modal__fonts-list-item"
@@ -232,6 +323,7 @@ function InstalledFonts() {
232
323
  font
233
324
  ) }
234
325
  onClick={ () => {
326
+ setNotice( null );
235
327
  handleSetLibraryFontSelected(
236
328
  font
237
329
  );
@@ -264,6 +356,7 @@ function InstalledFonts() {
264
356
  size="small"
265
357
  onClick={ () => {
266
358
  handleSetLibraryFontSelected( null );
359
+ setNotice( null );
267
360
  } }
268
361
  label={ __( 'Back' ) }
269
362
  />
@@ -295,6 +388,14 @@ function InstalledFonts() {
295
388
  </Text>
296
389
  <Spacer margin={ 4 } />
297
390
  <VStack spacing={ 0 }>
391
+ <CheckboxControl
392
+ className="font-library-modal__select-all"
393
+ label={ __( 'Select all' ) }
394
+ checked={ isSelectAllChecked }
395
+ onChange={ toggleSelectAll }
396
+ indeterminate={ isIndeterminate }
397
+ __nextHasNoMarginBottom
398
+ />
298
399
  <Spacer margin={ 8 } />
299
400
  { getFontFacesToDisplay(
300
401
  libraryFontSelected
@@ -325,9 +426,7 @@ function InstalledFonts() {
325
426
  ) }
326
427
  <Button
327
428
  variant="primary"
328
- onClick={ () => {
329
- saveFontFamilies( fontFamilies );
330
- } }
429
+ onClick={ handleUpdate }
331
430
  disabled={ ! fontFamiliesHasChanges }
332
431
  accessibleWhenDisabled
333
432
  >
@@ -69,6 +69,7 @@ $footer-height: 70px;
69
69
  color: $gray-900;
70
70
  }
71
71
 
72
+ // TODO: See if this can be removed after https://github.com/WordPress/gutenberg/issues/38730
72
73
  .font-library-modal__tabpanel-layout .components-base-control__field {
73
74
  margin-bottom: 0;
74
75
  }
@@ -186,3 +187,11 @@ button.font-library-modal__upload-area {
186
187
  justify-content: center;
187
188
  }
188
189
  }
190
+
191
+ .font-library-modal__select-all {
192
+ padding: $grid-unit-20 $grid-unit-20 $grid-unit-20 $grid-unit-20 + $border-width;
193
+
194
+ .components-checkbox-control__label {
195
+ padding-left: $grid-unit-20;
196
+ }
197
+ }
@@ -25,9 +25,9 @@ import makeFamiliesFromFaces from './utils/make-families-from-faces';
25
25
  import { loadFontFaceInBrowser } from './utils';
26
26
 
27
27
  function UploadFonts() {
28
- const { installFonts, notice, setNotice } =
29
- useContext( FontLibraryContext );
28
+ const { installFonts } = useContext( FontLibraryContext );
30
29
  const [ isUploading, setIsUploading ] = useState( false );
30
+ const [ notice, setNotice ] = useState( false );
31
31
 
32
32
  const handleDropZone = ( files ) => {
33
33
  handleFilesUpload( files );
@@ -0,0 +1,43 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';
5
+ import { __, sprintf } from '@wordpress/i18n';
6
+
7
+ function ConfirmDeleteFontSizeDialog( {
8
+ fontSize,
9
+ isOpen,
10
+ toggleOpen,
11
+ handleRemoveFontSize,
12
+ } ) {
13
+ const handleConfirm = async () => {
14
+ toggleOpen();
15
+ handleRemoveFontSize( fontSize );
16
+ };
17
+
18
+ const handleCancel = () => {
19
+ toggleOpen();
20
+ };
21
+
22
+ return (
23
+ <ConfirmDialog
24
+ isOpen={ isOpen }
25
+ cancelButtonText={ __( 'Cancel' ) }
26
+ confirmButtonText={ __( 'Delete' ) }
27
+ onCancel={ handleCancel }
28
+ onConfirm={ handleConfirm }
29
+ size="medium"
30
+ >
31
+ { fontSize &&
32
+ sprintf(
33
+ /* translators: %s: Name of the font size preset. */
34
+ __(
35
+ 'Are you sure you want to delete "%s" font size preset?'
36
+ ),
37
+ fontSize.name
38
+ ) }
39
+ </ConfirmDialog>
40
+ );
41
+ }
42
+
43
+ export default ConfirmDeleteFontSizeDialog;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+
7
+ function ConfirmResetFontSizesDialog( {
8
+ text,
9
+ confirmButtonText,
10
+ isOpen,
11
+ toggleOpen,
12
+ onConfirm,
13
+ } ) {
14
+ const handleConfirm = async () => {
15
+ toggleOpen();
16
+ onConfirm();
17
+ };
18
+
19
+ const handleCancel = () => {
20
+ toggleOpen();
21
+ };
22
+
23
+ return (
24
+ <ConfirmDialog
25
+ isOpen={ isOpen }
26
+ cancelButtonText={ __( 'Cancel' ) }
27
+ confirmButtonText={ confirmButtonText }
28
+ onCancel={ handleCancel }
29
+ onConfirm={ handleConfirm }
30
+ size="medium"
31
+ >
32
+ { text }
33
+ </ConfirmDialog>
34
+ );
35
+ }
36
+
37
+ export default ConfirmResetFontSizesDialog;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ getComputedFluidTypographyValue,
6
+ privateApis as blockEditorPrivateApis,
7
+ } from '@wordpress/block-editor';
8
+ import { __ } from '@wordpress/i18n';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { unlock } from '../../../lock-unlock';
14
+ const { useGlobalStyle } = unlock( blockEditorPrivateApis );
15
+
16
+ function FontSizePreview( { fontSize } ) {
17
+ const [ font ] = useGlobalStyle( 'typography' );
18
+
19
+ const input =
20
+ fontSize?.fluid?.min && fontSize?.fluid?.max
21
+ ? {
22
+ minimumFontSize: fontSize.fluid.min,
23
+ maximumFontSize: fontSize.fluid.max,
24
+ }
25
+ : {
26
+ fontSize: fontSize.size,
27
+ };
28
+
29
+ const computedFontSize = getComputedFluidTypographyValue( input );
30
+ return (
31
+ <div
32
+ className="edit-site-typography-preview"
33
+ style={ {
34
+ fontSize: computedFontSize,
35
+ fontFamily: font?.fontFamily ?? 'serif',
36
+ } }
37
+ >
38
+ { __( 'Aa' ) }
39
+ </div>
40
+ );
41
+ }
42
+
43
+ export default FontSizePreview;