@wordpress/edit-site 5.18.1-next.5a1d1283.0 → 5.19.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 (425) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +62 -1
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-template/index.js +3 -2
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/new-template.js +6 -1
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/add-new-template/utils.js +6 -1
  9. package/build/components/add-new-template/utils.js.map +1 -1
  10. package/build/components/app/index.js +2 -7
  11. package/build/components/app/index.js.map +1 -1
  12. package/build/components/block-editor/back-button.js +3 -2
  13. package/build/components/block-editor/back-button.js.map +1 -1
  14. package/build/components/block-editor/editor-canvas.js +20 -16
  15. package/build/components/block-editor/editor-canvas.js.map +1 -1
  16. package/build/components/block-editor/site-editor-canvas.js +1 -3
  17. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  18. package/build/components/block-editor/use-site-editor-settings.js +8 -4
  19. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  20. package/build/components/canvas-loader/index.js +18 -1
  21. package/build/components/canvas-loader/index.js.map +1 -1
  22. package/build/components/editor/index.js +3 -8
  23. package/build/components/editor/index.js.map +1 -1
  24. package/build/components/global-styles/dimensions-panel.js +5 -4
  25. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  26. package/build/components/global-styles/font-families.js +68 -0
  27. package/build/components/global-styles/font-families.js.map +1 -0
  28. package/build/components/global-styles/font-family-item.js +47 -0
  29. package/build/components/global-styles/font-family-item.js.map +1 -0
  30. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +31 -0
  31. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
  32. package/build/components/global-styles/font-library-modal/context.js +285 -0
  33. package/build/components/global-styles/font-library-modal/context.js.map +1 -0
  34. package/build/components/global-styles/font-library-modal/font-card.js +58 -0
  35. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -0
  36. package/build/components/global-styles/font-library-modal/font-demo.js +69 -0
  37. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -0
  38. package/build/components/global-styles/font-library-modal/font-variant.js +51 -0
  39. package/build/components/global-styles/font-library-modal/font-variant.js.map +1 -0
  40. package/build/components/global-styles/font-library-modal/fonts-grid.js +54 -0
  41. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
  42. package/build/components/global-styles/font-library-modal/index.js +47 -0
  43. package/build/components/global-styles/font-library-modal/index.js.map +1 -0
  44. package/build/components/global-styles/font-library-modal/installed-fonts.js +128 -0
  45. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
  46. package/build/components/global-styles/font-library-modal/library-font-card.js +44 -0
  47. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
  48. package/build/components/global-styles/font-library-modal/library-font-details.js +43 -0
  49. package/build/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
  50. package/build/components/global-styles/font-library-modal/library-font-variant.js +59 -0
  51. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
  52. package/build/components/global-styles/font-library-modal/local-fonts.js +143 -0
  53. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
  54. package/build/components/global-styles/font-library-modal/resolvers.js +37 -0
  55. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -0
  56. package/build/components/global-styles/font-library-modal/tab-layout.js +45 -0
  57. package/build/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
  58. package/build/components/global-styles/font-library-modal/utils/constants.js +37 -0
  59. package/build/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
  60. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
  61. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
  62. package/build/components/global-styles/font-library-modal/utils/index.js +205 -0
  63. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -0
  64. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js +22 -0
  65. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
  66. package/build/components/global-styles/font-library-modal/utils/toggleFont.js +92 -0
  67. package/build/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
  68. package/build/components/global-styles/global-styles-provider.js +7 -12
  69. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  70. package/build/components/global-styles/screen-block.js +34 -21
  71. package/build/components/global-styles/screen-block.js.map +1 -1
  72. package/build/components/global-styles/screen-revisions/index.js +1 -3
  73. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  74. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  75. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  76. package/build/components/global-styles/screen-typography.js +4 -72
  77. package/build/components/global-styles/screen-typography.js.map +1 -1
  78. package/build/components/global-styles/style-variations-container.js +3 -5
  79. package/build/components/global-styles/style-variations-container.js.map +1 -1
  80. package/build/components/global-styles/typogrphy-elements.js +96 -0
  81. package/build/components/global-styles/typogrphy-elements.js.map +1 -0
  82. package/build/components/page-patterns/duplicate-menu-item.js +52 -16
  83. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  84. package/build/components/page-patterns/grid-item.js +46 -20
  85. package/build/components/page-patterns/grid-item.js.map +1 -1
  86. package/build/components/page-patterns/header.js +3 -7
  87. package/build/components/page-patterns/header.js.map +1 -1
  88. package/build/components/page-patterns/index.js +3 -3
  89. package/build/components/page-patterns/index.js.map +1 -1
  90. package/build/components/page-patterns/patterns-list.js +7 -7
  91. package/build/components/page-patterns/patterns-list.js.map +1 -1
  92. package/build/components/page-patterns/rename-menu-item.js +6 -5
  93. package/build/components/page-patterns/rename-menu-item.js.map +1 -1
  94. package/build/components/page-patterns/search-items.js +8 -2
  95. package/build/components/page-patterns/search-items.js.map +1 -1
  96. package/build/components/page-patterns/use-patterns.js +53 -27
  97. package/build/components/page-patterns/use-patterns.js.map +1 -1
  98. package/build/components/page-patterns/utils.js +1 -20
  99. package/build/components/page-patterns/utils.js.map +1 -1
  100. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +33 -24
  101. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  102. package/build/components/sidebar-edit-mode/page-panels/hooks.js +64 -0
  103. package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
  104. package/build/components/sidebar-edit-mode/page-panels/index.js +1 -4
  105. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  106. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
  107. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  108. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +56 -0
  109. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
  110. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +91 -0
  111. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
  112. package/build/components/sidebar-edit-mode/template-panel/index.js +11 -9
  113. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  114. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +6 -4
  115. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  116. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +211 -0
  117. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
  118. package/build/components/sidebar-navigation-screen/index.js +6 -4
  119. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  120. package/build/components/sidebar-navigation-screen-details-footer/index.js +32 -4
  121. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  122. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
  123. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
  124. package/build/components/sidebar-navigation-screen-global-styles/index.js +4 -31
  125. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  126. package/build/components/sidebar-navigation-screen-page/index.js +3 -3
  127. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  128. package/build/components/sidebar-navigation-screen-pattern/index.js +18 -8
  129. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
  131. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-patterns/index.js +7 -35
  133. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  134. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
  135. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  136. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -1
  137. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-template/index.js +2 -2
  139. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-templates/index.js +1 -1
  141. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  142. package/build/components/template-actions/index.js +7 -4
  143. package/build/components/template-actions/index.js.map +1 -1
  144. package/build/components/template-actions/rename-menu-item.js +3 -2
  145. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  146. package/build/components/welcome-guide/styles.js +2 -2
  147. package/build/components/welcome-guide/styles.js.map +1 -1
  148. package/build/hooks/push-changes-to-global-styles/index.js +5 -37
  149. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  150. package/build/store/actions.js +29 -6
  151. package/build/store/actions.js.map +1 -1
  152. package/build/utils/constants.js +45 -2
  153. package/build/utils/constants.js.map +1 -1
  154. package/build/utils/is-template-removable.js +6 -1
  155. package/build/utils/is-template-removable.js.map +1 -1
  156. package/build/utils/is-template-revertable.js +6 -1
  157. package/build/utils/is-template-revertable.js.map +1 -1
  158. package/build-module/components/add-new-pattern/index.js +66 -5
  159. package/build-module/components/add-new-pattern/index.js.map +1 -1
  160. package/build-module/components/add-new-template/index.js +3 -2
  161. package/build-module/components/add-new-template/index.js.map +1 -1
  162. package/build-module/components/add-new-template/new-template.js +6 -1
  163. package/build-module/components/add-new-template/new-template.js.map +1 -1
  164. package/build-module/components/add-new-template/utils.js +6 -1
  165. package/build-module/components/add-new-template/utils.js.map +1 -1
  166. package/build-module/components/app/index.js +2 -7
  167. package/build-module/components/app/index.js.map +1 -1
  168. package/build-module/components/block-editor/back-button.js +3 -2
  169. package/build-module/components/block-editor/back-button.js.map +1 -1
  170. package/build-module/components/block-editor/editor-canvas.js +21 -17
  171. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  172. package/build-module/components/block-editor/site-editor-canvas.js +3 -5
  173. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  174. package/build-module/components/block-editor/use-site-editor-settings.js +8 -4
  175. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  176. package/build-module/components/canvas-loader/index.js +18 -1
  177. package/build-module/components/canvas-loader/index.js.map +1 -1
  178. package/build-module/components/editor/index.js +3 -8
  179. package/build-module/components/editor/index.js.map +1 -1
  180. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  181. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  182. package/build-module/components/global-styles/font-families.js +58 -0
  183. package/build-module/components/global-styles/font-families.js.map +1 -0
  184. package/build-module/components/global-styles/font-family-item.js +40 -0
  185. package/build-module/components/global-styles/font-family-item.js.map +1 -0
  186. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +23 -0
  187. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
  188. package/build-module/components/global-styles/font-library-modal/context.js +276 -0
  189. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -0
  190. package/build-module/components/global-styles/font-library-modal/font-card.js +49 -0
  191. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -0
  192. package/build-module/components/global-styles/font-library-modal/font-demo.js +62 -0
  193. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -0
  194. package/build-module/components/global-styles/font-library-modal/font-variant.js +42 -0
  195. package/build-module/components/global-styles/font-library-modal/font-variant.js.map +1 -0
  196. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +47 -0
  197. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
  198. package/build-module/components/global-styles/font-library-modal/index.js +38 -0
  199. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -0
  200. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +120 -0
  201. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
  202. package/build-module/components/global-styles/font-library-modal/library-font-card.js +36 -0
  203. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
  204. package/build-module/components/global-styles/font-library-modal/library-font-details.js +34 -0
  205. package/build-module/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
  206. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +50 -0
  207. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
  208. package/build-module/components/global-styles/font-library-modal/local-fonts.js +135 -0
  209. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
  210. package/build-module/components/global-styles/font-library-modal/resolvers.js +28 -0
  211. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -0
  212. package/build-module/components/global-styles/font-library-modal/tab-layout.js +37 -0
  213. package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
  214. package/build-module/components/global-styles/font-library-modal/utils/constants.js +26 -0
  215. package/build-module/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
  216. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +52 -0
  217. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
  218. package/build-module/components/global-styles/font-library-modal/utils/index.js +190 -0
  219. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -0
  220. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js +16 -0
  221. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
  222. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js +86 -0
  223. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
  224. package/build-module/components/global-styles/global-styles-provider.js +7 -12
  225. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  226. package/build-module/components/global-styles/screen-block.js +34 -21
  227. package/build-module/components/global-styles/screen-block.js.map +1 -1
  228. package/build-module/components/global-styles/screen-revisions/index.js +1 -3
  229. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  230. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  231. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  232. package/build-module/components/global-styles/screen-typography.js +6 -74
  233. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  234. package/build-module/components/global-styles/style-variations-container.js +3 -5
  235. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  236. package/build-module/components/global-styles/typogrphy-elements.js +87 -0
  237. package/build-module/components/global-styles/typogrphy-elements.js.map +1 -0
  238. package/build-module/components/page-patterns/duplicate-menu-item.js +51 -16
  239. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  240. package/build-module/components/page-patterns/grid-item.js +47 -21
  241. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  242. package/build-module/components/page-patterns/header.js +3 -7
  243. package/build-module/components/page-patterns/header.js.map +1 -1
  244. package/build-module/components/page-patterns/index.js +3 -3
  245. package/build-module/components/page-patterns/index.js.map +1 -1
  246. package/build-module/components/page-patterns/patterns-list.js +7 -7
  247. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  248. package/build-module/components/page-patterns/rename-menu-item.js +6 -5
  249. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
  250. package/build-module/components/page-patterns/search-items.js +8 -2
  251. package/build-module/components/page-patterns/search-items.js.map +1 -1
  252. package/build-module/components/page-patterns/use-patterns.js +54 -28
  253. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  254. package/build-module/components/page-patterns/utils.js +0 -11
  255. package/build-module/components/page-patterns/utils.js.map +1 -1
  256. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +34 -27
  257. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  258. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +54 -0
  259. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
  260. package/build-module/components/sidebar-edit-mode/page-panels/index.js +1 -4
  261. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  262. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
  263. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  264. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +49 -0
  265. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
  266. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +85 -0
  267. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
  268. package/build-module/components/sidebar-edit-mode/template-panel/index.js +12 -10
  269. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  270. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +8 -6
  271. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  272. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +202 -0
  273. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
  274. package/build-module/components/sidebar-navigation-screen/index.js +6 -4
  275. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  276. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +32 -5
  277. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  278. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
  279. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
  280. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -33
  281. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  282. package/build-module/components/sidebar-navigation-screen-page/index.js +3 -3
  283. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  284. package/build-module/components/sidebar-navigation-screen-pattern/index.js +19 -9
  285. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  286. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
  287. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  288. package/build-module/components/sidebar-navigation-screen-patterns/index.js +10 -38
  289. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  290. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
  291. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  292. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -2
  293. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  294. package/build-module/components/sidebar-navigation-screen-template/index.js +2 -2
  295. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  296. package/build-module/components/sidebar-navigation-screen-templates/index.js +1 -1
  297. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  298. package/build-module/components/template-actions/index.js +7 -4
  299. package/build-module/components/template-actions/index.js.map +1 -1
  300. package/build-module/components/template-actions/rename-menu-item.js +3 -2
  301. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  302. package/build-module/components/welcome-guide/styles.js +2 -2
  303. package/build-module/components/welcome-guide/styles.js.map +1 -1
  304. package/build-module/hooks/push-changes-to-global-styles/index.js +5 -37
  305. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  306. package/build-module/store/actions.js +30 -7
  307. package/build-module/store/actions.js.map +1 -1
  308. package/build-module/utils/constants.js +35 -1
  309. package/build-module/utils/constants.js.map +1 -1
  310. package/build-module/utils/is-template-removable.js +6 -1
  311. package/build-module/utils/is-template-removable.js.map +1 -1
  312. package/build-module/utils/is-template-revertable.js +6 -1
  313. package/build-module/utils/is-template-revertable.js.map +1 -1
  314. package/build-style/style-rtl.css +244 -37
  315. package/build-style/style.css +244 -37
  316. package/lib/inflate.js +4082 -0
  317. package/lib/lib-font.browser.js +3831 -0
  318. package/lib/unbrotli.js +2679 -0
  319. package/package.json +40 -40
  320. package/src/components/add-new-pattern/index.js +83 -5
  321. package/src/components/add-new-template/index.js +3 -2
  322. package/src/components/add-new-template/new-template.js +6 -1
  323. package/src/components/add-new-template/utils.js +12 -3
  324. package/src/components/app/index.js +9 -12
  325. package/src/components/block-editor/back-button.js +6 -2
  326. package/src/components/block-editor/editor-canvas.js +31 -19
  327. package/src/components/block-editor/site-editor-canvas.js +2 -10
  328. package/src/components/block-editor/style.scss +88 -1
  329. package/src/components/block-editor/use-site-editor-settings.js +26 -19
  330. package/src/components/canvas-loader/index.js +12 -1
  331. package/src/components/canvas-loader/style.scss +1 -1
  332. package/src/components/editor/index.js +3 -8
  333. package/src/components/global-styles/dimensions-panel.js +8 -4
  334. package/src/components/global-styles/font-families.js +71 -0
  335. package/src/components/global-styles/font-family-item.js +44 -0
  336. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +33 -0
  337. package/src/components/global-styles/font-library-modal/context.js +347 -0
  338. package/src/components/global-styles/font-library-modal/font-card.js +70 -0
  339. package/src/components/global-styles/font-library-modal/font-demo.js +57 -0
  340. package/src/components/global-styles/font-library-modal/font-variant.js +53 -0
  341. package/src/components/global-styles/font-library-modal/fonts-grid.js +55 -0
  342. package/src/components/global-styles/font-library-modal/index.js +42 -0
  343. package/src/components/global-styles/font-library-modal/installed-fonts.js +174 -0
  344. package/src/components/global-styles/font-library-modal/library-font-card.js +40 -0
  345. package/src/components/global-styles/font-library-modal/library-font-details.js +46 -0
  346. package/src/components/global-styles/font-library-modal/library-font-variant.js +54 -0
  347. package/src/components/global-styles/font-library-modal/local-fonts.js +160 -0
  348. package/src/components/global-styles/font-library-modal/resolvers.js +29 -0
  349. package/src/components/global-styles/font-library-modal/style.scss +113 -0
  350. package/src/components/global-styles/font-library-modal/tab-layout.js +50 -0
  351. package/src/components/global-styles/font-library-modal/utils/constants.js +31 -0
  352. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
  353. package/src/components/global-styles/font-library-modal/utils/index.js +213 -0
  354. package/src/components/global-styles/font-library-modal/utils/make-families-from-faces.js +15 -0
  355. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +53 -0
  356. package/src/components/global-styles/font-library-modal/utils/test/getFontFaceVariantName.spec.js +30 -0
  357. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +240 -0
  358. package/src/components/global-styles/font-library-modal/utils/test/getPreviewStyle.spec.js +121 -0
  359. package/src/components/global-styles/font-library-modal/utils/test/isUrlEncoded.spec.js +31 -0
  360. package/src/components/global-styles/font-library-modal/utils/test/makeFamiliesFromFaces.spec.js +57 -0
  361. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +62 -0
  362. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFaces.spec.js +56 -0
  363. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFamilies.spec.js +108 -0
  364. package/src/components/global-styles/font-library-modal/utils/test/setUIValuesNeeded.spec.js +41 -0
  365. package/src/components/global-styles/font-library-modal/utils/test/toggleFont.spec.js +141 -0
  366. package/src/components/global-styles/font-library-modal/utils/toggleFont.js +90 -0
  367. package/src/components/global-styles/global-styles-provider.js +2 -7
  368. package/src/components/global-styles/screen-block.js +42 -20
  369. package/src/components/global-styles/screen-revisions/index.js +0 -2
  370. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  371. package/src/components/global-styles/screen-typography.js +7 -95
  372. package/src/components/global-styles/style-variations-container.js +0 -2
  373. package/src/components/global-styles/typogrphy-elements.js +110 -0
  374. package/src/components/list/style.scss +2 -0
  375. package/src/components/page-patterns/duplicate-menu-item.js +63 -20
  376. package/src/components/page-patterns/grid-item.js +77 -30
  377. package/src/components/page-patterns/header.js +3 -12
  378. package/src/components/page-patterns/index.js +3 -3
  379. package/src/components/page-patterns/patterns-list.js +7 -7
  380. package/src/components/page-patterns/rename-menu-item.js +18 -7
  381. package/src/components/page-patterns/search-items.js +14 -2
  382. package/src/components/page-patterns/style.scss +1 -5
  383. package/src/components/page-patterns/use-patterns.js +67 -33
  384. package/src/components/page-patterns/utils.js +0 -19
  385. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +47 -33
  386. package/src/components/sidebar-edit-mode/page-panels/hooks.js +83 -0
  387. package/src/components/sidebar-edit-mode/page-panels/index.js +0 -4
  388. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  389. package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +44 -0
  390. package/src/components/sidebar-edit-mode/page-panels/style.scss +41 -10
  391. package/src/components/sidebar-edit-mode/page-panels/swap-template-button.js +82 -0
  392. package/src/components/sidebar-edit-mode/template-panel/index.js +28 -24
  393. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +19 -15
  394. package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +270 -0
  395. package/src/components/sidebar-navigation-screen/index.js +4 -9
  396. package/src/components/sidebar-navigation-screen/style.scss +7 -1
  397. package/src/components/sidebar-navigation-screen-details-footer/index.js +38 -10
  398. package/src/components/sidebar-navigation-screen-details-footer/style.scss +10 -3
  399. package/src/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +2 -0
  400. package/src/components/sidebar-navigation-screen-global-styles/index.js +6 -44
  401. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +0 -4
  402. package/src/components/sidebar-navigation-screen-page/index.js +3 -3
  403. package/src/components/sidebar-navigation-screen-pattern/index.js +20 -7
  404. package/src/components/sidebar-navigation-screen-pattern/style.scss +0 -3
  405. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +46 -13
  406. package/src/components/sidebar-navigation-screen-patterns/index.js +14 -49
  407. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +48 -6
  408. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -5
  409. package/src/components/sidebar-navigation-screen-template/index.js +2 -4
  410. package/src/components/sidebar-navigation-screen-templates/index.js +1 -1
  411. package/src/components/template-actions/index.js +14 -8
  412. package/src/components/template-actions/rename-menu-item.js +15 -4
  413. package/src/components/welcome-guide/styles.js +2 -2
  414. package/src/hooks/push-changes-to-global-styles/index.js +6 -49
  415. package/src/store/actions.js +39 -13
  416. package/src/style.scss +1 -1
  417. package/src/utils/constants.js +38 -3
  418. package/src/utils/is-template-removable.js +8 -1
  419. package/src/utils/is-template-revertable.js +8 -1
  420. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -30
  421. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
  422. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -23
  423. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
  424. package/src/components/sidebar-navigation-screen-global-styles/style.scss +0 -12
  425. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -24
@@ -0,0 +1,110 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __, sprintf } 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 { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { NavigationButtonAsItem } from './navigation-button';
17
+ import Subtitle from './subtitle';
18
+
19
+ import { unlock } from '../../lock-unlock';
20
+ const { useGlobalStyle } = unlock( blockEditorPrivateApis );
21
+
22
+ function ElementItem( { parentMenu, element, label } ) {
23
+ const prefix =
24
+ element === 'text' || ! element ? '' : `elements.${ element }.`;
25
+ const extraStyles =
26
+ element === 'link'
27
+ ? {
28
+ textDecoration: 'underline',
29
+ }
30
+ : {};
31
+ const [ fontFamily ] = useGlobalStyle( prefix + 'typography.fontFamily' );
32
+ const [ fontStyle ] = useGlobalStyle( prefix + 'typography.fontStyle' );
33
+ const [ fontWeight ] = useGlobalStyle( prefix + 'typography.fontWeight' );
34
+ const [ letterSpacing ] = useGlobalStyle(
35
+ prefix + 'typography.letterSpacing'
36
+ );
37
+ const [ backgroundColor ] = useGlobalStyle( prefix + 'color.background' );
38
+ const [ gradientValue ] = useGlobalStyle( prefix + 'color.gradient' );
39
+ const [ color ] = useGlobalStyle( prefix + 'color.text' );
40
+
41
+ const navigationButtonLabel = sprintf(
42
+ // translators: %s: is a subset of Typography, e.g., 'text' or 'links'.
43
+ __( 'Typography %s styles' ),
44
+ label
45
+ );
46
+
47
+ return (
48
+ <NavigationButtonAsItem
49
+ path={ parentMenu + '/typography/' + element }
50
+ aria-label={ navigationButtonLabel }
51
+ >
52
+ <HStack justify="flex-start">
53
+ <FlexItem
54
+ className="edit-site-global-styles-screen-typography__indicator"
55
+ style={ {
56
+ fontFamily: fontFamily ?? 'serif',
57
+ background: gradientValue ?? backgroundColor,
58
+ color,
59
+ fontStyle,
60
+ fontWeight,
61
+ letterSpacing,
62
+ ...extraStyles,
63
+ } }
64
+ >
65
+ { __( 'Aa' ) }
66
+ </FlexItem>
67
+ <FlexItem>{ label }</FlexItem>
68
+ </HStack>
69
+ </NavigationButtonAsItem>
70
+ );
71
+ }
72
+
73
+ function TypographyElements() {
74
+ const parentMenu = '';
75
+
76
+ return (
77
+ <VStack spacing={ 3 }>
78
+ <Subtitle level={ 3 }>{ __( 'Elements' ) }</Subtitle>
79
+ <ItemGroup isBordered isSeparated>
80
+ <ElementItem
81
+ parentMenu={ parentMenu }
82
+ element="text"
83
+ label={ __( 'Text' ) }
84
+ />
85
+ <ElementItem
86
+ parentMenu={ parentMenu }
87
+ element="link"
88
+ label={ __( 'Links' ) }
89
+ />
90
+ <ElementItem
91
+ parentMenu={ parentMenu }
92
+ element="heading"
93
+ label={ __( 'Headings' ) }
94
+ />
95
+ <ElementItem
96
+ parentMenu={ parentMenu }
97
+ element="caption"
98
+ label={ __( 'Captions' ) }
99
+ />
100
+ <ElementItem
101
+ parentMenu={ parentMenu }
102
+ element="button"
103
+ label={ __( 'Buttons' ) }
104
+ />
105
+ </ItemGroup>
106
+ </VStack>
107
+ );
108
+ }
109
+
110
+ export default TypographyElements;
@@ -130,6 +130,8 @@
130
130
  }
131
131
 
132
132
  .edit-site-list__rename-modal {
133
+ // The rename dropdown popover is open at the same time as the rename modal. The latter has to be higher.
134
+ z-index: z-index(".edit-site-list__rename-modal");
133
135
  .components-base-control {
134
136
  @include break-medium() {
135
137
  width: $grid-unit * 40;
@@ -12,31 +12,30 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
12
12
  * Internal dependencies
13
13
  */
14
14
  import {
15
- TEMPLATE_PARTS,
16
- PATTERNS,
17
- SYNC_TYPES,
18
- USER_PATTERNS,
19
- USER_PATTERN_CATEGORY,
20
- } from './utils';
15
+ TEMPLATE_PART_POST_TYPE,
16
+ PATTERN_TYPES,
17
+ PATTERN_SYNC_TYPES,
18
+ } from '../../utils/constants';
21
19
  import {
22
20
  useExistingTemplateParts,
23
21
  getUniqueTemplatePartTitle,
24
22
  getCleanTemplatePartSlug,
25
23
  } from '../../utils/template-part-create';
26
24
  import { unlock } from '../../lock-unlock';
25
+ import usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';
27
26
 
28
27
  const { useHistory } = unlock( routerPrivateApis );
29
28
 
30
29
  function getPatternMeta( item ) {
31
- if ( item.type === PATTERNS ) {
32
- return { wp_pattern_sync_status: SYNC_TYPES.unsynced };
30
+ if ( item.type === PATTERN_TYPES.theme ) {
31
+ return { wp_pattern_sync_status: PATTERN_SYNC_TYPES.unsynced };
33
32
  }
34
33
 
35
- const syncStatus = item.reusableBlock.wp_pattern_sync_status;
36
- const isUnsynced = syncStatus === SYNC_TYPES.unsynced;
34
+ const syncStatus = item.patternBlock.wp_pattern_sync_status;
35
+ const isUnsynced = syncStatus === PATTERN_SYNC_TYPES.unsynced;
37
36
 
38
37
  return {
39
- ...item.reusableBlock.meta,
38
+ ...item.patternBlock.meta,
40
39
  wp_pattern_sync_status: isUnsynced ? syncStatus : undefined,
41
40
  };
42
41
  }
@@ -47,12 +46,13 @@ export default function DuplicateMenuItem( {
47
46
  label = __( 'Duplicate' ),
48
47
  onClose,
49
48
  } ) {
50
- const { saveEntityRecord } = useDispatch( coreStore );
49
+ const { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );
51
50
  const { createErrorNotice, createSuccessNotice } =
52
51
  useDispatch( noticesStore );
53
52
 
54
53
  const history = useHistory();
55
54
  const existingTemplateParts = useExistingTemplateParts();
55
+ const { patternCategories } = usePatternCategories();
56
56
 
57
57
  async function createTemplatePart() {
58
58
  try {
@@ -88,9 +88,9 @@ export default function DuplicateMenuItem( {
88
88
  );
89
89
 
90
90
  history.push( {
91
- postType: TEMPLATE_PARTS,
91
+ postType: TEMPLATE_PART_POST_TYPE,
92
92
  postId: result?.id,
93
- categoryType: TEMPLATE_PARTS,
93
+ categoryType: TEMPLATE_PART_POST_TYPE,
94
94
  categoryId,
95
95
  } );
96
96
 
@@ -111,14 +111,54 @@ export default function DuplicateMenuItem( {
111
111
  }
112
112
  }
113
113
 
114
+ async function findOrCreateTerm( term ) {
115
+ try {
116
+ const newTerm = await saveEntityRecord(
117
+ 'taxonomy',
118
+ 'wp_pattern_category',
119
+ {
120
+ name: term.label,
121
+ slug: term.name,
122
+ description: term.description,
123
+ },
124
+ {
125
+ throwOnError: true,
126
+ }
127
+ );
128
+ invalidateResolution( 'getUserPatternCategories' );
129
+ return newTerm.id;
130
+ } catch ( error ) {
131
+ if ( error.code !== 'term_exists' ) {
132
+ throw error;
133
+ }
134
+
135
+ return error.data.term_id;
136
+ }
137
+ }
138
+
139
+ async function getCategories( categories ) {
140
+ const terms = categories.map( ( category ) => {
141
+ const fullCategory = patternCategories.find(
142
+ ( cat ) => cat.name === category
143
+ );
144
+ if ( fullCategory.id ) {
145
+ return fullCategory.id;
146
+ }
147
+ return findOrCreateTerm( fullCategory );
148
+ } );
149
+
150
+ return Promise.all( terms );
151
+ }
152
+
114
153
  async function createPattern() {
115
154
  try {
116
- const isThemePattern = item.type === PATTERNS;
155
+ const isThemePattern = item.type === PATTERN_TYPES.theme;
117
156
  const title = sprintf(
118
157
  /* translators: %s: Existing pattern title */
119
158
  __( '%s (Copy)' ),
120
159
  item.title
121
160
  );
161
+ const categories = await getCategories( item.categories );
122
162
 
123
163
  const result = await saveEntityRecord(
124
164
  'postType',
@@ -126,10 +166,11 @@ export default function DuplicateMenuItem( {
126
166
  {
127
167
  content: isThemePattern
128
168
  ? item.content
129
- : item.reusableBlock.content,
169
+ : item.patternBlock.content,
130
170
  meta: getPatternMeta( item ),
131
171
  status: 'publish',
132
172
  title,
173
+ wp_pattern_category: categories,
133
174
  },
134
175
  { throwOnError: true }
135
176
  );
@@ -147,9 +188,9 @@ export default function DuplicateMenuItem( {
147
188
  );
148
189
 
149
190
  history.push( {
150
- categoryType: USER_PATTERNS,
151
- categoryId: USER_PATTERN_CATEGORY,
152
- postType: USER_PATTERNS,
191
+ categoryType: PATTERN_TYPES.theme,
192
+ categoryId,
193
+ postType: PATTERN_TYPES.user,
153
194
  postId: result?.id,
154
195
  } );
155
196
 
@@ -169,7 +210,9 @@ export default function DuplicateMenuItem( {
169
210
  }
170
211
 
171
212
  const createItem =
172
- item.type === TEMPLATE_PARTS ? createTemplatePart : createPattern;
213
+ item.type === TEMPLATE_PART_POST_TYPE
214
+ ? createTemplatePart
215
+ : createPattern;
173
216
 
174
217
  return <MenuItem onClick={ createItem }>{ label }</MenuItem>;
175
218
  }
@@ -2,11 +2,16 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
+ import downloadjs from 'downloadjs';
6
+ import { paramCase as kebabCase } from 'change-case';
5
7
 
6
8
  /**
7
9
  * WordPress dependencies
8
10
  */
9
- import { BlockPreview } from '@wordpress/block-editor';
11
+ import {
12
+ BlockPreview,
13
+ privateApis as blockEditorPrivateApis,
14
+ } from '@wordpress/block-editor';
10
15
  import {
11
16
  Button,
12
17
  __experimentalConfirmDialog as ConfirmDialog,
@@ -38,15 +43,23 @@ import { store as reusableBlocksStore } from '@wordpress/reusable-blocks';
38
43
  */
39
44
  import RenameMenuItem from './rename-menu-item';
40
45
  import DuplicateMenuItem from './duplicate-menu-item';
41
- import { PATTERNS, TEMPLATE_PARTS, USER_PATTERNS, SYNC_TYPES } from './utils';
46
+ import {
47
+ PATTERN_TYPES,
48
+ TEMPLATE_PART_POST_TYPE,
49
+ PATTERN_SYNC_TYPES,
50
+ } from '../../utils/constants';
42
51
  import { store as editSiteStore } from '../../store';
43
52
  import { useLink } from '../routes/link';
53
+ import { unlock } from '../../lock-unlock';
54
+
55
+ const { useGlobalStyle } = unlock( blockEditorPrivateApis );
44
56
 
45
57
  const templatePartIcons = { header, footer, uncategorized };
46
58
 
47
59
  function GridItem( { categoryId, item, ...props } ) {
48
60
  const descriptionId = useId();
49
61
  const [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );
62
+ const [ backgroundColor ] = useGlobalStyle( 'color.background' );
50
63
 
51
64
  const { removeTemplate } = useDispatch( editSiteStore );
52
65
  const { __experimentalDeleteReusableBlock } =
@@ -54,9 +67,9 @@ function GridItem( { categoryId, item, ...props } ) {
54
67
  const { createErrorNotice, createSuccessNotice } =
55
68
  useDispatch( noticesStore );
56
69
 
57
- const isUserPattern = item.type === USER_PATTERNS;
58
- const isNonUserPattern = item.type === PATTERNS;
59
- const isTemplatePart = item.type === TEMPLATE_PARTS;
70
+ const isUserPattern = item.type === PATTERN_TYPES.user;
71
+ const isNonUserPattern = item.type === PATTERN_TYPES.theme;
72
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
60
73
 
61
74
  const { onClick } = useLink( {
62
75
  postType: item.type,
@@ -97,6 +110,20 @@ function GridItem( { categoryId, item, ...props } ) {
97
110
  };
98
111
  const deleteItem = () =>
99
112
  isTemplatePart ? removeTemplate( item ) : deletePattern();
113
+ const exportAsJSON = () => {
114
+ const json = {
115
+ __file: item.type,
116
+ title: item.title,
117
+ content: item.patternBlock.content.raw,
118
+ syncStatus: item.patternBlock.wp_pattern_sync_status,
119
+ };
120
+
121
+ return downloadjs(
122
+ JSON.stringify( json, null, 2 ),
123
+ `${ kebabCase( item.title ) }.json`,
124
+ 'application/json'
125
+ );
126
+ };
100
127
 
101
128
  // Only custom patterns or custom template parts can be renamed or deleted.
102
129
  const isCustomPattern =
@@ -119,9 +146,13 @@ function GridItem( { categoryId, item, ...props } ) {
119
146
  );
120
147
  }
121
148
 
122
- const itemIcon =
123
- templatePartIcons[ categoryId ] ||
124
- ( item.syncStatus === SYNC_TYPES.full ? symbol : undefined );
149
+ let itemIcon;
150
+ if ( ! isUserPattern && templatePartIcons[ categoryId ] ) {
151
+ itemIcon = templatePartIcons[ categoryId ];
152
+ } else {
153
+ itemIcon =
154
+ item.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;
155
+ }
125
156
 
126
157
  const confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );
127
158
  const confirmPrompt = hasThemeFile
@@ -132,6 +163,10 @@ function GridItem( { categoryId, item, ...props } ) {
132
163
  item.title
133
164
  );
134
165
 
166
+ const additionalStyles = ! backgroundColor
167
+ ? [ { css: 'body { background: #fff; }' } ]
168
+ : undefined;
169
+
135
170
  return (
136
171
  <li className={ patternClassNames }>
137
172
  <button
@@ -140,8 +175,12 @@ function GridItem( { categoryId, item, ...props } ) {
140
175
  // @see https://reakit.io/docs/composite/#performance.
141
176
  id={ `edit-site-patterns-${ item.name }` }
142
177
  { ...props }
143
- onClick={ item.type !== PATTERNS ? onClick : undefined }
144
- aria-disabled={ item.type !== PATTERNS ? 'false' : 'true' }
178
+ onClick={
179
+ item.type !== PATTERN_TYPES.theme ? onClick : undefined
180
+ }
181
+ aria-disabled={
182
+ item.type !== PATTERN_TYPES.theme ? 'false' : 'true'
183
+ }
145
184
  aria-label={ item.title }
146
185
  aria-describedby={
147
186
  ariaDescriptions.length
@@ -154,8 +193,14 @@ function GridItem( { categoryId, item, ...props } ) {
154
193
  : undefined
155
194
  }
156
195
  >
157
- { isEmpty && __( 'Empty pattern' ) }
158
- { ! isEmpty && <BlockPreview blocks={ item.blocks } /> }
196
+ { isEmpty && isTemplatePart && __( 'Empty template part' ) }
197
+ { isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }
198
+ { ! isEmpty && (
199
+ <BlockPreview
200
+ blocks={ item.blocks }
201
+ additionalStyles={ additionalStyles }
202
+ />
203
+ ) }
159
204
  </button>
160
205
  { ariaDescriptions.map( ( ariaDescription, index ) => (
161
206
  <div
@@ -178,21 +223,19 @@ function GridItem( { categoryId, item, ...props } ) {
178
223
  >
179
224
  { itemIcon && ! isNonUserPattern && (
180
225
  <Tooltip
181
- position="top center"
226
+ placement="top"
182
227
  text={ __(
183
228
  'Editing this pattern will also update anywhere it is used'
184
229
  ) }
185
230
  >
186
- <span>
187
- <Icon
188
- className="edit-site-patterns__pattern-icon"
189
- icon={ itemIcon }
190
- />
191
- </span>
231
+ <Icon
232
+ className="edit-site-patterns__pattern-icon"
233
+ icon={ itemIcon }
234
+ />
192
235
  </Tooltip>
193
236
  ) }
194
237
  <Flex as="span" gap={ 0 } justify="left">
195
- { item.type === PATTERNS ? (
238
+ { item.type === PATTERN_TYPES.theme ? (
196
239
  item.title
197
240
  ) : (
198
241
  <Heading level={ 5 }>
@@ -207,14 +250,16 @@ function GridItem( { categoryId, item, ...props } ) {
207
250
  </Button>
208
251
  </Heading>
209
252
  ) }
210
- { item.type === PATTERNS && (
253
+ { item.type === PATTERN_TYPES.theme && (
211
254
  <Tooltip
212
- position="top center"
255
+ placement="top"
213
256
  text={ __( 'This pattern cannot be edited.' ) }
214
257
  >
215
- <span className="edit-site-patterns__pattern-lock-icon">
216
- <Icon icon={ lockSmall } size={ 24 } />
217
- </span>
258
+ <Icon
259
+ className="edit-site-patterns__pattern-lock-icon"
260
+ icon={ lockSmall }
261
+ size={ 24 }
262
+ />
218
263
  </Tooltip>
219
264
  ) }
220
265
  </Flex>
@@ -245,12 +290,14 @@ function GridItem( { categoryId, item, ...props } ) {
245
290
  categoryId={ categoryId }
246
291
  item={ item }
247
292
  onClose={ onClose }
248
- label={
249
- isNonUserPattern
250
- ? __( 'Copy to My patterns' )
251
- : __( 'Duplicate' )
252
- }
293
+ label={ __( 'Duplicate' ) }
253
294
  />
295
+ { item.type === PATTERN_TYPES.user && (
296
+ <MenuItem onClick={ () => exportAsJSON() }>
297
+ { __( 'Export as JSON' ) }
298
+ </MenuItem>
299
+ ) }
300
+
254
301
  { isCustomPattern && (
255
302
  <MenuItem
256
303
  isDestructive={ ! hasThemeFile }
@@ -6,7 +6,6 @@ import {
6
6
  __experimentalHeading as Heading,
7
7
  __experimentalText as Text,
8
8
  } from '@wordpress/components';
9
- import { __ } from '@wordpress/i18n';
10
9
  import { store as editorStore } from '@wordpress/editor';
11
10
  import { useSelect } from '@wordpress/data';
12
11
 
@@ -14,12 +13,7 @@ import { useSelect } from '@wordpress/data';
14
13
  * Internal dependencies
15
14
  */
16
15
  import usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';
17
- import {
18
- USER_PATTERN_CATEGORY,
19
- USER_PATTERNS,
20
- TEMPLATE_PARTS,
21
- PATTERNS,
22
- } from './utils';
16
+ import { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES } from '../../utils/constants';
23
17
 
24
18
  export default function PatternsHeader( {
25
19
  categoryId,
@@ -35,16 +29,13 @@ export default function PatternsHeader( {
35
29
  );
36
30
 
37
31
  let title, description;
38
- if ( categoryId === USER_PATTERN_CATEGORY && type === USER_PATTERNS ) {
39
- title = __( 'My Patterns' );
40
- description = '';
41
- } else if ( type === TEMPLATE_PARTS ) {
32
+ if ( type === TEMPLATE_PART_POST_TYPE ) {
42
33
  const templatePartArea = templatePartAreas.find(
43
34
  ( area ) => area.area === categoryId
44
35
  );
45
36
  title = templatePartArea?.label;
46
37
  description = templatePartArea?.description;
47
- } else if ( type === PATTERNS ) {
38
+ } else if ( type === PATTERN_TYPES.theme ) {
48
39
  const patternCategory = patternCategories.find(
49
40
  ( category ) => category.name === categoryId
50
41
  );
@@ -8,7 +8,7 @@ import { getQueryArgs } from '@wordpress/url';
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
- import { DEFAULT_CATEGORY, DEFAULT_TYPE } from './utils';
11
+ import { PATTERN_DEFAULT_CATEGORY, PATTERN_TYPES } from '../../utils/constants';
12
12
  import Page from '../page';
13
13
  import PatternsList from './patterns-list';
14
14
  import usePatternSettings from './use-pattern-settings';
@@ -18,8 +18,8 @@ const { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis );
18
18
 
19
19
  export default function PagePatterns() {
20
20
  const { categoryType, categoryId } = getQueryArgs( window.location.href );
21
- const type = categoryType || DEFAULT_TYPE;
22
- const category = categoryId || DEFAULT_CATEGORY;
21
+ const type = categoryType || PATTERN_TYPES.user;
22
+ const category = categoryId || PATTERN_DEFAULT_CATEGORY;
23
23
  const settings = usePatternSettings();
24
24
 
25
25
  // Wrap everything in a block editor provider.
@@ -27,23 +27,23 @@ import usePatterns from './use-patterns';
27
27
  import SidebarButton from '../sidebar-button';
28
28
  import useDebouncedInput from '../../utils/use-debounced-input';
29
29
  import { unlock } from '../../lock-unlock';
30
- import { SYNC_TYPES, USER_PATTERN_CATEGORY, PATTERNS } from './utils';
30
+ import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../../utils/constants';
31
31
  import Pagination from './pagination';
32
32
 
33
33
  const { useLocation, useHistory } = unlock( routerPrivateApis );
34
34
 
35
35
  const SYNC_FILTERS = {
36
36
  all: __( 'All' ),
37
- [ SYNC_TYPES.full ]: __( 'Synced' ),
38
- [ SYNC_TYPES.unsynced ]: __( 'Standard' ),
37
+ [ PATTERN_SYNC_TYPES.full ]: __( 'Synced' ),
38
+ [ PATTERN_SYNC_TYPES.unsynced ]: __( 'Standard' ),
39
39
  };
40
40
 
41
41
  const SYNC_DESCRIPTIONS = {
42
42
  all: '',
43
- [ SYNC_TYPES.full ]: __(
43
+ [ PATTERN_SYNC_TYPES.full ]: __(
44
44
  'Patterns that are kept in sync across the site.'
45
45
  ),
46
- [ SYNC_TYPES.unsynced ]: __(
46
+ [ PATTERN_SYNC_TYPES.unsynced ]: __(
47
47
  'Patterns that can be changed freely without affecting the site.'
48
48
  ),
49
49
  };
@@ -64,7 +64,7 @@ export default function PatternsList( { categoryId, type } ) {
64
64
  const deferredSyncedFilter = useDeferredValue( syncFilter );
65
65
 
66
66
  const isUncategorizedThemePatterns =
67
- type === PATTERNS && categoryId === 'uncategorized';
67
+ type === PATTERN_TYPES.theme && categoryId === 'uncategorized';
68
68
 
69
69
  const { patterns, isResolving } = usePatterns(
70
70
  type,
@@ -155,7 +155,7 @@ export default function PatternsList( { categoryId, type } ) {
155
155
  __nextHasNoMarginBottom
156
156
  />
157
157
  </FlexBlock>
158
- { categoryId === USER_PATTERN_CATEGORY && (
158
+ { type === PATTERN_TYPES.theme && (
159
159
  <ToggleGroupControl
160
160
  className="edit-site-patterns__sync-status-filter"
161
161
  hideLabelFromVision
@@ -18,7 +18,7 @@ import { store as noticesStore } from '@wordpress/notices';
18
18
  /**
19
19
  * Internal dependencies
20
20
  */
21
- import { TEMPLATE_PARTS } from './utils';
21
+ import { TEMPLATE_PART_POST_TYPE } from '../../utils/constants';
22
22
 
23
23
  export default function RenameMenuItem( { item, onClose } ) {
24
24
  const [ title, setTitle ] = useState( () => item.title );
@@ -29,7 +29,7 @@ export default function RenameMenuItem( { item, onClose } ) {
29
29
  const { createSuccessNotice, createErrorNotice } =
30
30
  useDispatch( noticesStore );
31
31
 
32
- if ( item.type === TEMPLATE_PARTS && ! item.isCustom ) {
32
+ if ( item.type === TEMPLATE_PART_POST_TYPE && ! item.isCustom ) {
33
33
  return null;
34
34
  }
35
35
 
@@ -49,14 +49,25 @@ export default function RenameMenuItem( { item, onClose } ) {
49
49
  throwOnError: true,
50
50
  } );
51
51
 
52
- createSuccessNotice( __( 'Entity renamed.' ), {
53
- type: 'snackbar',
54
- } );
52
+ createSuccessNotice(
53
+ item.type === TEMPLATE_PART_POST_TYPE
54
+ ? __( 'Template part renamed.' )
55
+ : __( 'Pattern renamed.' ),
56
+ {
57
+ type: 'snackbar',
58
+ }
59
+ );
55
60
  } catch ( error ) {
61
+ const fallbackErrorMessage =
62
+ item.type === TEMPLATE_PART_POST_TYPE
63
+ ? __(
64
+ 'An error occurred while reverting the template part.'
65
+ )
66
+ : __( 'An error occurred while reverting the pattern.' );
56
67
  const errorMessage =
57
68
  error.message && error.code !== 'unknown_error'
58
69
  ? error.message
59
- : __( 'An error occurred while renaming the entity.' );
70
+ : fallbackErrorMessage;
60
71
 
61
72
  createErrorNotice( errorMessage, { type: 'snackbar' } );
62
73
  }
@@ -79,7 +90,7 @@ export default function RenameMenuItem( { item, onClose } ) {
79
90
  setIsModalOpen( false );
80
91
  onClose();
81
92
  } }
82
- overlayClassName="edit-site-list__rename_modal"
93
+ overlayClassName="edit-site-list__rename-modal"
83
94
  >
84
95
  <form onSubmit={ onRename }>
85
96
  <VStack spacing="5">
@@ -4,6 +4,11 @@
4
4
  import removeAccents from 'remove-accents';
5
5
  import { noCase } from 'change-case';
6
6
 
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';
11
+
7
12
  // Default search helpers.
8
13
  const defaultGetName = ( item ) => item.name || '';
9
14
  const defaultGetTitle = ( item ) => item.title;
@@ -84,7 +89,10 @@ const removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {
84
89
  */
85
90
  export const searchItems = ( items = [], searchInput = '', config = {} ) => {
86
91
  const normalizedSearchTerms = getNormalizedSearchTerms( searchInput );
87
- const onlyFilterByCategory = ! normalizedSearchTerms.length;
92
+ // Filter patterns by category: the default category indicates that all patterns will be shown.
93
+ const onlyFilterByCategory =
94
+ config.categoryId !== PATTERN_DEFAULT_CATEGORY &&
95
+ ! normalizedSearchTerms.length;
88
96
  const searchRankConfig = { ...config, onlyFilterByCategory };
89
97
 
90
98
  // If we aren't filtering on search terms, matching on category is satisfactory.
@@ -131,7 +139,11 @@ function getItemSearchRank( item, searchTerm, config ) {
131
139
  onlyFilterByCategory,
132
140
  } = config;
133
141
 
134
- let rank = hasCategory( item, categoryId ) ? 1 : 0;
142
+ let rank =
143
+ categoryId === PATTERN_DEFAULT_CATEGORY ||
144
+ hasCategory( item, categoryId )
145
+ ? 1
146
+ : 0;
135
147
 
136
148
  // If an item doesn't belong to the current category or we don't have
137
149
  // search terms to filter by, return the initial rank value.