@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
@@ -0,0 +1,250 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
5
+ import { __, sprintf } from '@wordpress/i18n';
6
+ import {
7
+ __experimentalSpacer as Spacer,
8
+ __experimentalUseNavigator as useNavigator,
9
+ __experimentalView as View,
10
+ __experimentalHStack as HStack,
11
+ __experimentalVStack as VStack,
12
+ privateApis as componentsPrivateApis,
13
+ Button,
14
+ FlexItem,
15
+ ToggleControl,
16
+ } from '@wordpress/components';
17
+ import { moreVertical } from '@wordpress/icons';
18
+ import { useState } from '@wordpress/element';
19
+
20
+ /**
21
+ * Internal dependencies
22
+ */
23
+ import { unlock } from '../../../lock-unlock';
24
+ const {
25
+ DropdownMenuV2: DropdownMenu,
26
+ DropdownMenuItemV2: DropdownMenuItem,
27
+ DropdownMenuItemLabelV2: DropdownMenuItemLabel,
28
+ } = unlock( componentsPrivateApis );
29
+ const { useGlobalSetting } = unlock( blockEditorPrivateApis );
30
+ import ScreenHeader from '../header';
31
+ import FontSizePreview from './font-size-preview';
32
+ import ConfirmDeleteFontSizeDialog from './confirm-delete-font-size-dialog';
33
+ import RenameFontSizeDialog from './rename-font-size-dialog';
34
+ import SizeControl from '../size-control';
35
+
36
+ function FontSize() {
37
+ const [ isDeleteConfirmOpen, setIsDeleteConfirmOpen ] = useState( false );
38
+ const [ isRenameDialogOpen, setIsRenameDialogOpen ] = useState( false );
39
+
40
+ const {
41
+ params: { origin, slug },
42
+ goBack,
43
+ goTo,
44
+ } = useNavigator();
45
+
46
+ const [ fontSizes, setFontSizes ] = useGlobalSetting(
47
+ 'typography.fontSizes'
48
+ );
49
+
50
+ // Get the font sizes from the origin, default to empty array.
51
+ const sizes = fontSizes[ origin ] ?? [];
52
+
53
+ // Get the font size by slug.
54
+ const fontSize = sizes.find( ( size ) => size.slug === slug );
55
+
56
+ // Whether fluid is true or an object, set it to true, otherwise false.
57
+ const isFluid = !! fontSize.fluid ?? false;
58
+
59
+ // Whether custom fluid values are used.
60
+ const isCustomFluid = typeof fontSize.fluid === 'object';
61
+
62
+ const handleNameChange = ( value ) => {
63
+ updateFontSize( 'name', value );
64
+ };
65
+
66
+ const handleFontSizeChange = ( value ) => {
67
+ updateFontSize( 'size', value );
68
+ };
69
+
70
+ const handleFluidChange = ( value ) => {
71
+ updateFontSize( 'fluid', value );
72
+ };
73
+
74
+ const handleCustomFluidValues = ( value ) => {
75
+ if ( value ) {
76
+ // If custom values are used, init the values with the current ones.
77
+ updateFontSize( 'fluid', {
78
+ min: fontSize.size,
79
+ max: fontSize.size,
80
+ } );
81
+ } else {
82
+ // If custom fluid values are disabled, set fluid to true.
83
+ updateFontSize( 'fluid', true );
84
+ }
85
+ };
86
+
87
+ const handleMinChange = ( value ) => {
88
+ updateFontSize( 'fluid', { ...fontSize.fluid, min: value } );
89
+ };
90
+
91
+ const handleMaxChange = ( value ) => {
92
+ updateFontSize( 'fluid', { ...fontSize.fluid, max: value } );
93
+ };
94
+
95
+ const updateFontSize = ( key, value ) => {
96
+ const newFontSizes = sizes.map( ( size ) => {
97
+ if ( size.slug === slug ) {
98
+ return { ...size, [ key ]: value }; // Create a new object with updated key
99
+ }
100
+ return size;
101
+ } );
102
+
103
+ setFontSizes( {
104
+ ...fontSizes,
105
+ [ origin ]: newFontSizes,
106
+ } );
107
+ };
108
+
109
+ const handleRemoveFontSize = () => {
110
+ // Navigate to the font sizes list.
111
+ goBack();
112
+
113
+ const newFontSizes = sizes.filter( ( size ) => size.slug !== slug );
114
+ setFontSizes( {
115
+ ...fontSizes,
116
+ [ origin ]: newFontSizes,
117
+ } );
118
+ };
119
+
120
+ const toggleDeleteConfirm = () => {
121
+ setIsDeleteConfirmOpen( ! isDeleteConfirmOpen );
122
+ };
123
+
124
+ const toggleRenameDialog = () => {
125
+ setIsRenameDialogOpen( ! isRenameDialogOpen );
126
+ };
127
+
128
+ return (
129
+ <>
130
+ <ConfirmDeleteFontSizeDialog
131
+ fontSize={ fontSize }
132
+ isOpen={ isDeleteConfirmOpen }
133
+ toggleOpen={ toggleDeleteConfirm }
134
+ handleRemoveFontSize={ handleRemoveFontSize }
135
+ />
136
+
137
+ { isRenameDialogOpen && (
138
+ <RenameFontSizeDialog
139
+ fontSize={ fontSize }
140
+ toggleOpen={ toggleRenameDialog }
141
+ handleRename={ handleNameChange }
142
+ />
143
+ ) }
144
+
145
+ <VStack spacing={ 4 }>
146
+ <HStack justify="space-between" align="flex-start">
147
+ <ScreenHeader
148
+ title={ fontSize.name }
149
+ description={ sprintf(
150
+ /* translators: %s: font size preset name. */
151
+ __( 'Manage the font size %s.' ),
152
+ fontSize.name
153
+ ) }
154
+ onBack={ () => goTo( '/typography/font-sizes/' ) }
155
+ />
156
+ { origin === 'custom' && (
157
+ <FlexItem>
158
+ <Spacer
159
+ marginTop={ 3 }
160
+ marginBottom={ 0 }
161
+ paddingX={ 4 }
162
+ >
163
+ <DropdownMenu
164
+ trigger={
165
+ <Button
166
+ size="small"
167
+ icon={ moreVertical }
168
+ label={ __( 'Font size options' ) }
169
+ />
170
+ }
171
+ >
172
+ <DropdownMenuItem
173
+ onClick={ toggleRenameDialog }
174
+ >
175
+ <DropdownMenuItemLabel>
176
+ { __( 'Rename' ) }
177
+ </DropdownMenuItemLabel>
178
+ </DropdownMenuItem>
179
+ <DropdownMenuItem
180
+ onClick={ toggleDeleteConfirm }
181
+ >
182
+ <DropdownMenuItemLabel>
183
+ { __( 'Delete' ) }
184
+ </DropdownMenuItemLabel>
185
+ </DropdownMenuItem>
186
+ </DropdownMenu>
187
+ </Spacer>
188
+ </FlexItem>
189
+ ) }
190
+ </HStack>
191
+
192
+ <View>
193
+ <Spacer paddingX={ 4 }>
194
+ <VStack spacing={ 4 }>
195
+ <FlexItem>
196
+ <FontSizePreview fontSize={ fontSize } />
197
+ </FlexItem>
198
+
199
+ <SizeControl
200
+ label={ __( 'Size' ) }
201
+ value={ ! isCustomFluid ? fontSize.size : '' }
202
+ onChange={ handleFontSizeChange }
203
+ disabled={ isCustomFluid }
204
+ />
205
+
206
+ <ToggleControl
207
+ label={ __( 'Fluid typography' ) }
208
+ help={ __(
209
+ 'Scale the font size dynamically to fit the screen or viewport.'
210
+ ) }
211
+ checked={ isFluid }
212
+ onChange={ handleFluidChange }
213
+ __nextHasNoMarginBottom
214
+ />
215
+
216
+ { isFluid && (
217
+ <ToggleControl
218
+ label={ __( 'Custom fluid values' ) }
219
+ help={ __(
220
+ 'Set custom min and max values for the fluid font size.'
221
+ ) }
222
+ checked={ isCustomFluid }
223
+ onChange={ handleCustomFluidValues }
224
+ __nextHasNoMarginBottom
225
+ />
226
+ ) }
227
+
228
+ { isCustomFluid && (
229
+ <>
230
+ <SizeControl
231
+ label={ __( 'Minimum' ) }
232
+ value={ fontSize.fluid?.min }
233
+ onChange={ handleMinChange }
234
+ />
235
+ <SizeControl
236
+ label={ __( 'Maximum' ) }
237
+ value={ fontSize.fluid?.max }
238
+ onChange={ handleMaxChange }
239
+ />
240
+ </>
241
+ ) }
242
+ </VStack>
243
+ </Spacer>
244
+ </View>
245
+ </VStack>
246
+ </>
247
+ );
248
+ }
249
+
250
+ export default FontSize;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __, isRTL } from '@wordpress/i18n';
5
+ import {
6
+ __experimentalItemGroup as ItemGroup,
7
+ __experimentalVStack as VStack,
8
+ __experimentalHStack as HStack,
9
+ FlexItem,
10
+ } from '@wordpress/components';
11
+ import { Icon, chevronLeft, chevronRight } from '@wordpress/icons';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import Subtitle from '../subtitle';
17
+ import { NavigationButtonAsItem } from '../navigation-button';
18
+
19
+ function FontSizes() {
20
+ return (
21
+ <VStack spacing={ 2 }>
22
+ <HStack justify="space-between">
23
+ <Subtitle level={ 3 }>{ __( 'Font Sizes' ) }</Subtitle>
24
+ </HStack>
25
+ <ItemGroup isBordered isSeparated>
26
+ <NavigationButtonAsItem
27
+ path="/typography/font-sizes/"
28
+ aria-label={ __( 'Edit font size presets' ) }
29
+ >
30
+ <HStack direction="row">
31
+ <FlexItem>{ __( 'Font size presets' ) }</FlexItem>
32
+ <Icon icon={ isRTL() ? chevronLeft : chevronRight } />
33
+ </HStack>
34
+ </NavigationButtonAsItem>
35
+ </ItemGroup>
36
+ </VStack>
37
+ );
38
+ }
39
+
40
+ export default FontSizes;
@@ -0,0 +1,263 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
5
+ import { __, sprintf, isRTL } from '@wordpress/i18n';
6
+ import {
7
+ privateApis as componentsPrivateApis,
8
+ __experimentalSpacer as Spacer,
9
+ __experimentalView as View,
10
+ __experimentalItemGroup as ItemGroup,
11
+ __experimentalVStack as VStack,
12
+ __experimentalHStack as HStack,
13
+ FlexItem,
14
+ FlexBlock,
15
+ Button,
16
+ } from '@wordpress/components';
17
+ import {
18
+ Icon,
19
+ plus,
20
+ moreVertical,
21
+ chevronLeft,
22
+ chevronRight,
23
+ } from '@wordpress/icons';
24
+ import { useState } from '@wordpress/element';
25
+
26
+ /**
27
+ * Internal dependencies
28
+ */
29
+ import { unlock } from '../../../lock-unlock';
30
+ const {
31
+ DropdownMenuV2: DropdownMenu,
32
+ DropdownMenuItemV2: DropdownMenuItem,
33
+ DropdownMenuItemLabelV2: DropdownMenuItemLabel,
34
+ } = unlock( componentsPrivateApis );
35
+ const { useGlobalSetting } = unlock( blockEditorPrivateApis );
36
+ import Subtitle from '../subtitle';
37
+ import { NavigationButtonAsItem } from '../navigation-button';
38
+ import { getNewIndexFromPresets } from '../utils';
39
+ import ScreenHeader from '../header';
40
+ import ConfirmResetFontSizesDialog from './confirm-reset-font-sizes-dialog';
41
+
42
+ function FontSizeGroup( {
43
+ label,
44
+ origin,
45
+ sizes,
46
+ handleAddFontSize,
47
+ handleResetFontSizes,
48
+ } ) {
49
+ const [ isResetDialogOpen, setIsResetDialogOpen ] = useState( false );
50
+
51
+ const toggleResetDialog = () => setIsResetDialogOpen( ! isResetDialogOpen );
52
+
53
+ const resetDialogText =
54
+ origin === 'custom'
55
+ ? __(
56
+ 'Are you sure you want to remove all custom font size presets?'
57
+ )
58
+ : __(
59
+ 'Are you sure you want to reset all font size presets to their default values?'
60
+ );
61
+
62
+ return (
63
+ <>
64
+ { isResetDialogOpen && (
65
+ <ConfirmResetFontSizesDialog
66
+ text={ resetDialogText }
67
+ confirmButtonText={
68
+ origin === 'custom' ? __( 'Remove' ) : __( 'Reset' )
69
+ }
70
+ isOpen={ isResetDialogOpen }
71
+ toggleOpen={ toggleResetDialog }
72
+ onConfirm={ handleResetFontSizes }
73
+ />
74
+ ) }
75
+ <VStack spacing={ 4 }>
76
+ <HStack justify="space-between" align="center">
77
+ <Subtitle level={ 3 }>{ label }</Subtitle>
78
+ <FlexItem>
79
+ { origin === 'custom' && (
80
+ <Button
81
+ label={ __( 'Add font size' ) }
82
+ icon={ plus }
83
+ size="small"
84
+ onClick={ handleAddFontSize }
85
+ />
86
+ ) }
87
+ { !! handleResetFontSizes && (
88
+ <DropdownMenu
89
+ trigger={
90
+ <Button
91
+ size="small"
92
+ icon={ moreVertical }
93
+ label={ __(
94
+ 'Font size presets options'
95
+ ) }
96
+ />
97
+ }
98
+ >
99
+ <DropdownMenuItem onClick={ toggleResetDialog }>
100
+ <DropdownMenuItemLabel>
101
+ { origin === 'custom'
102
+ ? __( 'Remove font size presets' )
103
+ : __( 'Reset font size presets' ) }
104
+ </DropdownMenuItemLabel>
105
+ </DropdownMenuItem>
106
+ </DropdownMenu>
107
+ ) }
108
+ </FlexItem>
109
+ </HStack>
110
+
111
+ { !! sizes.length && (
112
+ <ItemGroup isBordered isSeparated>
113
+ { sizes.map( ( size ) => (
114
+ <NavigationButtonAsItem
115
+ key={ size.slug }
116
+ path={ `/typography/font-sizes/${ origin }/${ size.slug }` }
117
+ >
118
+ <HStack direction="row">
119
+ <FlexItem className="edit-site-font-size__item">
120
+ { size.name }
121
+ </FlexItem>
122
+ <FlexItem>
123
+ <HStack justify="flex-end">
124
+ <FlexBlock className="edit-site-font-size__item edit-site-font-size__item-value">
125
+ { size.size }
126
+ </FlexBlock>
127
+ <Icon
128
+ icon={
129
+ isRTL()
130
+ ? chevronLeft
131
+ : chevronRight
132
+ }
133
+ />
134
+ </HStack>
135
+ </FlexItem>
136
+ </HStack>
137
+ </NavigationButtonAsItem>
138
+ ) ) }
139
+ </ItemGroup>
140
+ ) }
141
+ </VStack>
142
+ </>
143
+ );
144
+ }
145
+
146
+ function FontSizes() {
147
+ const [ themeFontSizes, setThemeFontSizes ] = useGlobalSetting(
148
+ 'typography.fontSizes.theme'
149
+ );
150
+
151
+ const [ baseThemeFontSizes ] = useGlobalSetting(
152
+ 'typography.fontSizes.theme',
153
+ null,
154
+ 'base'
155
+ );
156
+ const [ defaultFontSizes, setDefaultFontSizes ] = useGlobalSetting(
157
+ 'typography.fontSizes.default'
158
+ );
159
+
160
+ const [ baseDefaultFontSizes ] = useGlobalSetting(
161
+ 'typography.fontSizes.default',
162
+ null,
163
+ 'base'
164
+ );
165
+
166
+ const [ customFontSizes = [], setCustomFontSizes ] = useGlobalSetting(
167
+ 'typography.fontSizes.custom'
168
+ );
169
+
170
+ const [ defaultFontSizesEnabled ] = useGlobalSetting(
171
+ 'typography.defaultFontSizes'
172
+ );
173
+
174
+ const handleAddFontSize = () => {
175
+ const index = getNewIndexFromPresets( customFontSizes, 'custom-' );
176
+ const newFontSize = {
177
+ /* translators: %d: font size index */
178
+ name: sprintf( __( 'New Font Size %d' ), index ),
179
+ size: '16px',
180
+ slug: `custom-${ index }`,
181
+ };
182
+
183
+ setCustomFontSizes( [ ...customFontSizes, newFontSize ] );
184
+ };
185
+
186
+ const hasSameSizeValues = ( arr1, arr2 ) =>
187
+ arr1.map( ( item ) => item.size ).join( '' ) ===
188
+ arr2.map( ( item ) => item.size ).join( '' );
189
+
190
+ return (
191
+ <VStack spacing={ 2 }>
192
+ <ScreenHeader
193
+ title={ __( 'Font size presets' ) }
194
+ description={ __(
195
+ 'Create and edit the presets used for font sizes across the site.'
196
+ ) }
197
+ />
198
+
199
+ <View>
200
+ <Spacer paddingX={ 4 }>
201
+ <VStack spacing={ 8 }>
202
+ { !! themeFontSizes?.length && (
203
+ <FontSizeGroup
204
+ label={ __( 'Theme' ) }
205
+ origin="theme"
206
+ sizes={ themeFontSizes }
207
+ baseSizes={ baseThemeFontSizes }
208
+ handleAddFontSize={ handleAddFontSize }
209
+ handleResetFontSizes={
210
+ hasSameSizeValues(
211
+ themeFontSizes,
212
+ baseThemeFontSizes
213
+ )
214
+ ? null
215
+ : () =>
216
+ setThemeFontSizes(
217
+ baseThemeFontSizes
218
+ )
219
+ }
220
+ />
221
+ ) }
222
+
223
+ { defaultFontSizesEnabled &&
224
+ !! defaultFontSizes?.length && (
225
+ <FontSizeGroup
226
+ label={ __( 'Default' ) }
227
+ origin="default"
228
+ sizes={ defaultFontSizes }
229
+ baseSizes={ baseDefaultFontSizes }
230
+ handleAddFontSize={ handleAddFontSize }
231
+ handleResetFontSizes={
232
+ hasSameSizeValues(
233
+ defaultFontSizes,
234
+ baseDefaultFontSizes
235
+ )
236
+ ? null
237
+ : () =>
238
+ setDefaultFontSizes(
239
+ baseDefaultFontSizes
240
+ )
241
+ }
242
+ />
243
+ ) }
244
+
245
+ <FontSizeGroup
246
+ label={ __( 'Custom' ) }
247
+ origin="custom"
248
+ sizes={ customFontSizes }
249
+ handleAddFontSize={ handleAddFontSize }
250
+ handleResetFontSizes={
251
+ customFontSizes.length > 0
252
+ ? () => setCustomFontSizes( [] )
253
+ : null
254
+ }
255
+ />
256
+ </VStack>
257
+ </Spacer>
258
+ </View>
259
+ </VStack>
260
+ );
261
+ }
262
+
263
+ export default FontSizes;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalInputControl as InputControl,
6
+ __experimentalVStack as VStack,
7
+ __experimentalHStack as HStack,
8
+ Button,
9
+ Modal,
10
+ } from '@wordpress/components';
11
+ import { __ } from '@wordpress/i18n';
12
+ import { useState } from '@wordpress/element';
13
+
14
+ function RenameFontSizeDialog( { fontSize, toggleOpen, handleRename } ) {
15
+ const [ newName, setNewName ] = useState( fontSize.name );
16
+
17
+ const handleConfirm = () => {
18
+ // If the new name is not empty, call the handleRename function
19
+ if ( newName.trim() ) {
20
+ handleRename( newName );
21
+ }
22
+ toggleOpen();
23
+ };
24
+
25
+ return (
26
+ <Modal
27
+ onRequestClose={ toggleOpen }
28
+ focusOnMount="firstContentElement"
29
+ title={ __( 'Rename' ) }
30
+ size="small"
31
+ >
32
+ <form
33
+ onSubmit={ ( event ) => {
34
+ event.preventDefault();
35
+ handleConfirm();
36
+ toggleOpen();
37
+ } }
38
+ >
39
+ <VStack spacing="3">
40
+ <InputControl
41
+ __next40pxDefaultSize
42
+ autoComplete="off"
43
+ value={ newName }
44
+ onChange={ setNewName }
45
+ label={ __( 'Name' ) }
46
+ placeholder={ __( 'Font size preset name' ) }
47
+ />
48
+ <HStack justify="right">
49
+ <Button
50
+ __next40pxDefaultSize
51
+ variant="tertiary"
52
+ onClick={ toggleOpen }
53
+ >
54
+ { __( 'Cancel' ) }
55
+ </Button>
56
+ <Button
57
+ __next40pxDefaultSize
58
+ variant="primary"
59
+ type="submit"
60
+ >
61
+ { __( 'Save' ) }
62
+ </Button>
63
+ </HStack>
64
+ </VStack>
65
+ </form>
66
+ </Modal>
67
+ );
68
+ }
69
+
70
+ export default RenameFontSizeDialog;
@@ -84,6 +84,7 @@ const {
84
84
  FiltersPanel: StylesFiltersPanel,
85
85
  ImageSettingsPanel,
86
86
  AdvancedPanel: StylesAdvancedPanel,
87
+ useGlobalStyleLinks,
87
88
  } = unlock( blockEditorPrivateApis );
88
89
 
89
90
  function ScreenBlock( { name, variation } ) {
@@ -103,6 +104,7 @@ function ScreenBlock( { name, variation } ) {
103
104
  const [ rawSettings, setSettings ] = useGlobalSetting( '', name );
104
105
  const settings = useSettingsForBlockElement( rawSettings, name );
105
106
  const blockType = getBlockType( name );
107
+ const _links = useGlobalStyleLinks();
106
108
 
107
109
  // Only allow `blockGap` support if serialization has not been skipped, to be sure global spacing can be applied.
108
110
  if (
@@ -262,6 +264,16 @@ function ScreenBlock( { name, variation } ) {
262
264
  settings={ settings }
263
265
  />
264
266
  ) }
267
+ { hasBackgroundPanel && (
268
+ <StylesBackgroundPanel
269
+ inheritedValue={ inheritedStyle }
270
+ value={ style }
271
+ onChange={ setStyle }
272
+ settings={ settings }
273
+ defaultValues={ BACKGROUND_BLOCK_DEFAULT_VALUES }
274
+ themeFileURIs={ _links?.[ 'wp:theme-file' ] }
275
+ />
276
+ ) }
265
277
  { hasTypographyPanel && (
266
278
  <StylesTypographyPanel
267
279
  inheritedValue={ inheritedStyle }
@@ -304,20 +316,6 @@ function ScreenBlock( { name, variation } ) {
304
316
  />
305
317
  ) }
306
318
 
307
- { hasBackgroundPanel && (
308
- <StylesBackgroundPanel
309
- inheritedValue={ inheritedStyle }
310
- value={ style }
311
- onChange={ setStyle }
312
- settings={ settings }
313
- defaultValues={ BACKGROUND_BLOCK_DEFAULT_VALUES }
314
- defaultControls={
315
- blockType?.supports?.background
316
- ?.__experimentalDefaultControls
317
- }
318
- />
319
- ) }
320
-
321
319
  { canEditCSS && (
322
320
  <PanelBody title={ __( 'Advanced' ) } initialOpen={ false }>
323
321
  <p>
@@ -9,7 +9,7 @@ import { useZoomOut } from '@wordpress/block-editor';
9
9
  * Internal dependencies
10
10
  */
11
11
  import ScreenHeader from './header';
12
- import StyleVariationsContainer from './style-variations-container';
12
+ import SidebarNavigationScreenGlobalStylesContent from '../sidebar-navigation-screen-global-styles/content';
13
13
 
14
14
  function ScreenStyleVariations() {
15
15
  // Move to zoom out mode when this component is mounted
@@ -31,7 +31,7 @@ function ScreenStyleVariations() {
31
31
  className="edit-site-global-styles-screen-style-variations"
32
32
  >
33
33
  <CardBody>
34
- <StyleVariationsContainer />
34
+ <SidebarNavigationScreenGlobalStylesContent />
35
35
  </CardBody>
36
36
  </Card>
37
37
  </>