@wordpress/edit-site 5.14.0 → 5.15.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 (341) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-page/index.js +1 -6
  3. package/build/components/add-new-page/index.js.map +1 -1
  4. package/build/components/add-new-pattern/index.js +21 -7
  5. package/build/components/add-new-pattern/index.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +10 -8
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/block-editor/constants.js +1 -1
  9. package/build/components/block-editor/constants.js.map +1 -1
  10. package/build/components/block-editor/editor-canvas.js +1 -1
  11. package/build/components/block-editor/editor-canvas.js.map +1 -1
  12. package/build/components/block-editor/index.js +0 -4
  13. package/build/components/block-editor/index.js.map +1 -1
  14. package/build/components/block-editor/use-site-editor-settings.js +87 -13
  15. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  16. package/build/components/code-editor/index.js +60 -28
  17. package/build/components/code-editor/index.js.map +1 -1
  18. package/build/components/create-pattern-modal/index.js +7 -3
  19. package/build/components/create-pattern-modal/index.js.map +1 -1
  20. package/build/components/editor/index.js +1 -1
  21. package/build/components/editor/index.js.map +1 -1
  22. package/build/components/header-edit-mode/index.js +13 -9
  23. package/build/components/header-edit-mode/index.js.map +1 -1
  24. package/build/components/layout/index.js +8 -3
  25. package/build/components/layout/index.js.map +1 -1
  26. package/build/components/page-actions/index.js +2 -2
  27. package/build/components/page-actions/index.js.map +1 -1
  28. package/build/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +8 -16
  29. package/build/components/page-actions/trash-page-menu-item.js.map +1 -0
  30. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -5
  31. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  32. package/build/components/page-patterns/duplicate-menu-item.js +163 -0
  33. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -0
  34. package/build/components/page-patterns/grid-item.js +83 -58
  35. package/build/components/page-patterns/grid-item.js.map +1 -1
  36. package/build/components/page-patterns/grid.js +5 -18
  37. package/build/components/page-patterns/grid.js.map +1 -1
  38. package/build/components/page-patterns/header.js +69 -0
  39. package/build/components/page-patterns/header.js.map +1 -0
  40. package/build/components/page-patterns/index.js +3 -1
  41. package/build/components/page-patterns/index.js.map +1 -1
  42. package/build/components/page-patterns/pagination.js +63 -0
  43. package/build/components/page-patterns/pagination.js.map +1 -0
  44. package/build/components/page-patterns/patterns-list.js +95 -30
  45. package/build/components/page-patterns/patterns-list.js.map +1 -1
  46. package/build/components/page-patterns/rename-menu-item.js +109 -0
  47. package/build/components/page-patterns/rename-menu-item.js.map +1 -0
  48. package/build/components/page-patterns/use-patterns.js +102 -121
  49. package/build/components/page-patterns/use-patterns.js.map +1 -1
  50. package/build/components/page-template-parts/add-new-template-part.js +74 -0
  51. package/build/components/page-template-parts/add-new-template-part.js.map +1 -0
  52. package/build/components/page-template-parts/index.js +2 -23
  53. package/build/components/page-template-parts/index.js.map +1 -1
  54. package/build/components/resizable-frame/index.js +78 -36
  55. package/build/components/resizable-frame/index.js.map +1 -1
  56. package/build/components/save-panel/index.js +5 -5
  57. package/build/components/save-panel/index.js.map +1 -1
  58. package/build/components/sidebar-edit-mode/page-panels/page-content.js +4 -3
  59. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  60. package/build/components/sidebar-edit-mode/page-panels/page-status.js +3 -8
  61. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  62. package/build/components/sidebar-navigation-screen/index.js +14 -8
  63. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  64. package/build/components/sidebar-navigation-screen-main/index.js +4 -2
  65. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  66. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +45 -0
  67. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  68. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +4 -4
  69. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  70. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  71. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  72. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  73. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  74. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +4 -3
  75. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  76. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  77. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -1
  78. package/build/components/sidebar-navigation-screen-page/index.js +2 -3
  79. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-screen-page/status-label.js +1 -34
  81. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-pages/index.js +33 -25
  83. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-pattern/index.js +9 -7
  85. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  86. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  87. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  88. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  89. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  90. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -3
  91. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  92. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +5 -2
  93. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  94. package/build/components/sidebar-navigation-screen-patterns/index.js +72 -51
  95. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  96. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  97. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  98. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +11 -1
  99. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  100. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +20 -9
  101. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  102. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  103. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  104. package/build/components/site-hub/index.js +24 -11
  105. package/build/components/site-hub/index.js.map +1 -1
  106. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +10 -5
  107. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  108. package/build/components/sync-state-with-url/use-sync-path-with-url.js +15 -12
  109. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  110. package/build/components/template-actions/index.js +3 -1
  111. package/build/components/template-actions/index.js.map +1 -1
  112. package/build/components/template-actions/rename-menu-item.js +12 -8
  113. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  114. package/build/components/use-edited-entity-record/index.js +6 -1
  115. package/build/components/use-edited-entity-record/index.js.map +1 -1
  116. package/build/hooks/commands/use-common-commands.js +78 -20
  117. package/build/hooks/commands/use-common-commands.js.map +1 -1
  118. package/build/hooks/push-changes-to-global-styles/index.js +56 -10
  119. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  120. package/build/store/private-actions.js +7 -1
  121. package/build/store/private-actions.js.map +1 -1
  122. package/build/utils/normalize-record-key.js +19 -0
  123. package/build/utils/normalize-record-key.js.map +1 -0
  124. package/build/utils/use-activate-theme.js +1 -1
  125. package/build/utils/use-activate-theme.js.map +1 -1
  126. package/build-module/components/add-new-page/index.js +1 -6
  127. package/build-module/components/add-new-page/index.js.map +1 -1
  128. package/build-module/components/add-new-pattern/index.js +19 -7
  129. package/build-module/components/add-new-pattern/index.js.map +1 -1
  130. package/build-module/components/add-new-template/utils.js +9 -6
  131. package/build-module/components/add-new-template/utils.js.map +1 -1
  132. package/build-module/components/block-editor/constants.js +1 -1
  133. package/build-module/components/block-editor/constants.js.map +1 -1
  134. package/build-module/components/block-editor/editor-canvas.js +1 -1
  135. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  136. package/build-module/components/block-editor/index.js +0 -4
  137. package/build-module/components/block-editor/index.js.map +1 -1
  138. package/build-module/components/block-editor/use-site-editor-settings.js +89 -14
  139. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  140. package/build-module/components/code-editor/index.js +62 -30
  141. package/build-module/components/code-editor/index.js.map +1 -1
  142. package/build-module/components/create-pattern-modal/index.js +6 -3
  143. package/build-module/components/create-pattern-modal/index.js.map +1 -1
  144. package/build-module/components/editor/index.js +1 -1
  145. package/build-module/components/editor/index.js.map +1 -1
  146. package/build-module/components/header-edit-mode/index.js +13 -9
  147. package/build-module/components/header-edit-mode/index.js.map +1 -1
  148. package/build-module/components/layout/index.js +8 -3
  149. package/build-module/components/layout/index.js.map +1 -1
  150. package/build-module/components/page-actions/index.js +2 -2
  151. package/build-module/components/page-actions/index.js.map +1 -1
  152. package/build-module/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +8 -17
  153. package/build-module/components/page-actions/trash-page-menu-item.js.map +1 -0
  154. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -3
  155. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  156. package/build-module/components/page-patterns/duplicate-menu-item.js +147 -0
  157. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -0
  158. package/build-module/components/page-patterns/grid-item.js +84 -64
  159. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  160. package/build-module/components/page-patterns/grid.js +5 -17
  161. package/build-module/components/page-patterns/grid.js.map +1 -1
  162. package/build-module/components/page-patterns/header.js +54 -0
  163. package/build-module/components/page-patterns/header.js.map +1 -0
  164. package/build-module/components/page-patterns/index.js +3 -1
  165. package/build-module/components/page-patterns/index.js.map +1 -1
  166. package/build-module/components/page-patterns/pagination.js +54 -0
  167. package/build-module/components/page-patterns/pagination.js.map +1 -0
  168. package/build-module/components/page-patterns/patterns-list.js +96 -33
  169. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  170. package/build-module/components/page-patterns/rename-menu-item.js +97 -0
  171. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -0
  172. package/build-module/components/page-patterns/use-patterns.js +103 -122
  173. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  174. package/build-module/components/page-template-parts/add-new-template-part.js +58 -0
  175. package/build-module/components/page-template-parts/add-new-template-part.js.map +1 -0
  176. package/build-module/components/page-template-parts/index.js +3 -22
  177. package/build-module/components/page-template-parts/index.js.map +1 -1
  178. package/build-module/components/resizable-frame/index.js +79 -39
  179. package/build-module/components/resizable-frame/index.js.map +1 -1
  180. package/build-module/components/save-panel/index.js +5 -5
  181. package/build-module/components/save-panel/index.js.map +1 -1
  182. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +5 -2
  183. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  184. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +3 -8
  185. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  186. package/build-module/components/sidebar-navigation-screen/index.js +15 -9
  187. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  188. package/build-module/components/sidebar-navigation-screen-main/index.js +4 -3
  189. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  190. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +33 -0
  191. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  192. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +4 -4
  193. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  194. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  195. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  196. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  197. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  198. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +4 -3
  199. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  200. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  201. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -1
  202. package/build-module/components/sidebar-navigation-screen-page/index.js +2 -3
  203. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  204. package/build-module/components/sidebar-navigation-screen-page/status-label.js +1 -32
  205. package/build-module/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  206. package/build-module/components/sidebar-navigation-screen-pages/index.js +33 -25
  207. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  208. package/build-module/components/sidebar-navigation-screen-pattern/index.js +8 -7
  209. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  210. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  211. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  212. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  213. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  214. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -3
  215. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  216. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +4 -2
  217. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  218. package/build-module/components/sidebar-navigation-screen-patterns/index.js +76 -53
  219. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  220. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  221. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  222. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +10 -1
  223. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  224. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +18 -9
  225. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  226. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  227. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  228. package/build-module/components/site-hub/index.js +24 -11
  229. package/build-module/components/site-hub/index.js.map +1 -1
  230. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +7 -5
  231. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  232. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +16 -12
  233. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  234. package/build-module/components/template-actions/index.js +2 -1
  235. package/build-module/components/template-actions/index.js.map +1 -1
  236. package/build-module/components/template-actions/rename-menu-item.js +11 -8
  237. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  238. package/build-module/components/use-edited-entity-record/index.js +3 -1
  239. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  240. package/build-module/hooks/commands/use-common-commands.js +74 -20
  241. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  242. package/build-module/hooks/push-changes-to-global-styles/index.js +57 -10
  243. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  244. package/build-module/store/private-actions.js +7 -1
  245. package/build-module/store/private-actions.js.map +1 -1
  246. package/build-module/utils/normalize-record-key.js +12 -0
  247. package/build-module/utils/normalize-record-key.js.map +1 -0
  248. package/build-module/utils/use-activate-theme.js +1 -1
  249. package/build-module/utils/use-activate-theme.js.map +1 -1
  250. package/build-style/style-rtl.css +221 -63
  251. package/build-style/style.css +221 -63
  252. package/package.json +39 -40
  253. package/src/components/add-new-page/index.js +0 -3
  254. package/src/components/add-new-pattern/index.js +23 -12
  255. package/src/components/add-new-template/utils.js +9 -6
  256. package/src/components/block-editor/constants.js +5 -1
  257. package/src/components/block-editor/editor-canvas.js +1 -1
  258. package/src/components/block-editor/index.js +0 -4
  259. package/src/components/block-editor/use-site-editor-settings.js +99 -20
  260. package/src/components/canvas-spinner/style.scss +14 -0
  261. package/src/components/code-editor/index.js +51 -33
  262. package/src/components/create-pattern-modal/index.js +5 -2
  263. package/src/components/editor/index.js +2 -2
  264. package/src/components/header-edit-mode/document-actions/style.scss +4 -0
  265. package/src/components/header-edit-mode/index.js +29 -22
  266. package/src/components/layout/index.js +16 -2
  267. package/src/components/layout/style.scss +2 -1
  268. package/src/components/page-actions/index.js +2 -2
  269. package/src/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +9 -22
  270. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +12 -3
  271. package/src/components/page-patterns/duplicate-menu-item.js +196 -0
  272. package/src/components/page-patterns/grid-item.js +189 -133
  273. package/src/components/page-patterns/grid.js +3 -20
  274. package/src/components/page-patterns/header.js +69 -0
  275. package/src/components/page-patterns/index.js +6 -1
  276. package/src/components/page-patterns/pagination.js +80 -0
  277. package/src/components/page-patterns/patterns-list.js +160 -72
  278. package/src/components/page-patterns/rename-menu-item.js +115 -0
  279. package/src/components/page-patterns/style.scss +140 -30
  280. package/src/components/page-patterns/use-patterns.js +102 -172
  281. package/src/components/page-template-parts/add-new-template-part.js +57 -0
  282. package/src/components/page-template-parts/index.js +3 -22
  283. package/src/components/resizable-frame/index.js +102 -34
  284. package/src/components/resizable-frame/style.scss +9 -9
  285. package/src/components/save-panel/index.js +10 -4
  286. package/src/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  287. package/src/components/sidebar-edit-mode/page-panels/page-status.js +2 -5
  288. package/src/components/sidebar-navigation-item/style.scss +5 -12
  289. package/src/components/sidebar-navigation-screen/index.js +14 -7
  290. package/src/components/sidebar-navigation-screen/style.scss +14 -0
  291. package/src/components/sidebar-navigation-screen-main/index.js +44 -40
  292. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +34 -0
  293. package/src/components/sidebar-navigation-screen-navigation-menu/index.js +4 -3
  294. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  295. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +1 -1
  296. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +15 -5
  297. package/src/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  298. package/src/components/sidebar-navigation-screen-page/index.js +3 -3
  299. package/src/components/sidebar-navigation-screen-page/status-label.js +1 -35
  300. package/src/components/sidebar-navigation-screen-pages/index.js +39 -29
  301. package/src/components/sidebar-navigation-screen-pattern/index.js +5 -2
  302. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
  303. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +2 -1
  304. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +12 -2
  305. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +5 -2
  306. package/src/components/sidebar-navigation-screen-patterns/index.js +103 -98
  307. package/src/components/sidebar-navigation-screen-patterns/style.scss +20 -0
  308. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +7 -6
  309. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +9 -0
  310. package/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +31 -9
  311. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -1
  312. package/src/components/site-hub/index.js +45 -28
  313. package/src/components/site-hub/style.scss +13 -0
  314. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +8 -2
  315. package/src/components/sync-state-with-url/use-sync-path-with-url.js +73 -66
  316. package/src/components/template-actions/index.js +2 -1
  317. package/src/components/template-actions/rename-menu-item.js +17 -10
  318. package/src/components/use-edited-entity-record/index.js +6 -1
  319. package/src/hooks/commands/use-common-commands.js +56 -23
  320. package/src/hooks/push-changes-to-global-styles/index.js +63 -9
  321. package/src/store/private-actions.js +5 -1
  322. package/src/style.scss +10 -12
  323. package/src/utils/normalize-record-key.js +11 -0
  324. package/src/utils/use-activate-theme.js +1 -1
  325. package/build/components/code-editor/code-editor-text-area.js +0 -96
  326. package/build/components/code-editor/code-editor-text-area.js.map +0 -1
  327. package/build/components/keyboard-shortcuts/index.js +0 -148
  328. package/build/components/keyboard-shortcuts/index.js.map +0 -1
  329. package/build/components/page-actions/delete-page-menu-item.js.map +0 -1
  330. package/build/components/page-content-focus-manager/constants.js +0 -9
  331. package/build/components/page-content-focus-manager/constants.js.map +0 -1
  332. package/build-module/components/code-editor/code-editor-text-area.js +0 -84
  333. package/build-module/components/code-editor/code-editor-text-area.js.map +0 -1
  334. package/build-module/components/keyboard-shortcuts/index.js +0 -132
  335. package/build-module/components/keyboard-shortcuts/index.js.map +0 -1
  336. package/build-module/components/page-actions/delete-page-menu-item.js.map +0 -1
  337. package/build-module/components/page-content-focus-manager/constants.js +0 -2
  338. package/build-module/components/page-content-focus-manager/constants.js.map +0 -1
  339. package/src/components/code-editor/code-editor-text-area.js +0 -84
  340. package/src/components/keyboard-shortcuts/index.js +0 -137
  341. package/src/components/page-content-focus-manager/constants.js +0 -5
@@ -0,0 +1,196 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { MenuItem } from '@wordpress/components';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { useDispatch } from '@wordpress/data';
7
+ import { __, sprintf } from '@wordpress/i18n';
8
+ import { store as noticesStore } from '@wordpress/notices';
9
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import {
15
+ TEMPLATE_PARTS,
16
+ PATTERNS,
17
+ SYNC_TYPES,
18
+ USER_PATTERNS,
19
+ USER_PATTERN_CATEGORY,
20
+ } from './utils';
21
+ import {
22
+ useExistingTemplateParts,
23
+ getUniqueTemplatePartTitle,
24
+ getCleanTemplatePartSlug,
25
+ } from '../../utils/template-part-create';
26
+ import { unlock } from '../../lock-unlock';
27
+
28
+ const { useHistory } = unlock( routerPrivateApis );
29
+
30
+ function getPatternMeta( item ) {
31
+ if ( item.type === PATTERNS ) {
32
+ return { wp_pattern_sync_status: SYNC_TYPES.unsynced };
33
+ }
34
+
35
+ const syncStatus = item.reusableBlock.wp_pattern_sync_status;
36
+ const isUnsynced = syncStatus === SYNC_TYPES.unsynced;
37
+
38
+ return {
39
+ ...item.reusableBlock.meta,
40
+ wp_pattern_sync_status: isUnsynced ? syncStatus : undefined,
41
+ };
42
+ }
43
+
44
+ export default function DuplicateMenuItem( {
45
+ categoryId,
46
+ item,
47
+ label = __( 'Duplicate' ),
48
+ onClose,
49
+ } ) {
50
+ const { saveEntityRecord } = useDispatch( coreStore );
51
+ const { createErrorNotice, createSuccessNotice } =
52
+ useDispatch( noticesStore );
53
+
54
+ const history = useHistory();
55
+ const existingTemplateParts = useExistingTemplateParts();
56
+
57
+ async function createTemplatePart() {
58
+ try {
59
+ const copiedTitle = sprintf(
60
+ /* translators: %s: Existing template part title */
61
+ __( '%s (Copy)' ),
62
+ item.title
63
+ );
64
+ const title = getUniqueTemplatePartTitle(
65
+ copiedTitle,
66
+ existingTemplateParts
67
+ );
68
+ const slug = getCleanTemplatePartSlug( title );
69
+ const { area, content } = item.templatePart;
70
+
71
+ const result = await saveEntityRecord(
72
+ 'postType',
73
+ 'wp_template_part',
74
+ { slug, title, content, area },
75
+ { throwOnError: true }
76
+ );
77
+
78
+ createSuccessNotice(
79
+ sprintf(
80
+ // translators: %s: The new template part's title e.g. 'Call to action (copy)'.
81
+ __( '"%s" created.' ),
82
+ title
83
+ ),
84
+ {
85
+ type: 'snackbar',
86
+ id: 'edit-site-patterns-success',
87
+ actions: [
88
+ {
89
+ label: __( 'Edit' ),
90
+ onClick: () =>
91
+ history.push( {
92
+ postType: TEMPLATE_PARTS,
93
+ postId: result?.id,
94
+ categoryType: TEMPLATE_PARTS,
95
+ categoryId,
96
+ } ),
97
+ },
98
+ ],
99
+ }
100
+ );
101
+
102
+ onClose();
103
+ } catch ( error ) {
104
+ const errorMessage =
105
+ error.message && error.code !== 'unknown_error'
106
+ ? error.message
107
+ : __(
108
+ 'An error occurred while creating the template part.'
109
+ );
110
+
111
+ createErrorNotice( errorMessage, {
112
+ type: 'snackbar',
113
+ id: 'edit-site-patterns-error',
114
+ } );
115
+ onClose();
116
+ }
117
+ }
118
+
119
+ async function createPattern() {
120
+ try {
121
+ const isThemePattern = item.type === PATTERNS;
122
+ const title = sprintf(
123
+ /* translators: %s: Existing pattern title */
124
+ __( '%s (Copy)' ),
125
+ item.title
126
+ );
127
+
128
+ const result = await saveEntityRecord(
129
+ 'postType',
130
+ 'wp_block',
131
+ {
132
+ content: isThemePattern
133
+ ? item.content
134
+ : item.reusableBlock.content,
135
+ meta: getPatternMeta( item ),
136
+ status: 'publish',
137
+ title,
138
+ },
139
+ { throwOnError: true }
140
+ );
141
+
142
+ const actionLabel = isThemePattern
143
+ ? __( 'View my patterns' )
144
+ : __( 'Edit' );
145
+
146
+ const newLocation = isThemePattern
147
+ ? {
148
+ categoryType: USER_PATTERNS,
149
+ categoryId: USER_PATTERN_CATEGORY,
150
+ path: '/patterns',
151
+ }
152
+ : {
153
+ categoryType: USER_PATTERNS,
154
+ categoryId: USER_PATTERN_CATEGORY,
155
+ postType: USER_PATTERNS,
156
+ postId: result?.id,
157
+ };
158
+
159
+ createSuccessNotice(
160
+ sprintf(
161
+ // translators: %s: The new pattern's title e.g. 'Call to action (copy)'.
162
+ __( '"%s" added to my patterns.' ),
163
+ title
164
+ ),
165
+ {
166
+ type: 'snackbar',
167
+ id: 'edit-site-patterns-success',
168
+ actions: [
169
+ {
170
+ label: actionLabel,
171
+ onClick: () => history.push( newLocation ),
172
+ },
173
+ ],
174
+ }
175
+ );
176
+
177
+ onClose();
178
+ } catch ( error ) {
179
+ const errorMessage =
180
+ error.message && error.code !== 'unknown_error'
181
+ ? error.message
182
+ : __( 'An error occurred while creating the pattern.' );
183
+
184
+ createErrorNotice( errorMessage, {
185
+ type: 'snackbar',
186
+ id: 'edit-site-patterns-error',
187
+ } );
188
+ onClose();
189
+ }
190
+ }
191
+
192
+ const createItem =
193
+ item.type === TEMPLATE_PARTS ? createTemplatePart : createPattern;
194
+
195
+ return <MenuItem onClick={ createItem }>{ label }</MenuItem>;
196
+ }
@@ -8,86 +8,103 @@ import classnames from 'classnames';
8
8
  */
9
9
  import { BlockPreview } from '@wordpress/block-editor';
10
10
  import {
11
+ Button,
11
12
  __experimentalConfirmDialog as ConfirmDialog,
12
13
  DropdownMenu,
13
14
  MenuGroup,
14
15
  MenuItem,
16
+ __experimentalHeading as Heading,
15
17
  __experimentalHStack as HStack,
16
- __unstableCompositeItem as CompositeItem,
17
18
  Tooltip,
18
19
  Flex,
19
20
  } from '@wordpress/components';
20
21
  import { useDispatch } from '@wordpress/data';
21
- import { useState, useId } from '@wordpress/element';
22
+ import { useState, useId, memo } from '@wordpress/element';
22
23
  import { __, sprintf } from '@wordpress/i18n';
23
24
  import {
24
25
  Icon,
25
26
  header,
26
27
  footer,
27
- symbolFilled,
28
+ symbolFilled as uncategorized,
29
+ symbol,
28
30
  moreHorizontal,
29
31
  lockSmall,
30
32
  } from '@wordpress/icons';
31
33
  import { store as noticesStore } from '@wordpress/notices';
32
34
  import { store as reusableBlocksStore } from '@wordpress/reusable-blocks';
33
- import { DELETE, BACKSPACE } from '@wordpress/keycodes';
34
35
 
35
36
  /**
36
37
  * Internal dependencies
37
38
  */
38
- import { PATTERNS, USER_PATTERNS } from './utils';
39
+ import RenameMenuItem from './rename-menu-item';
40
+ import DuplicateMenuItem from './duplicate-menu-item';
41
+ import { PATTERNS, TEMPLATE_PARTS, USER_PATTERNS, SYNC_TYPES } from './utils';
42
+ import { store as editSiteStore } from '../../store';
39
43
  import { useLink } from '../routes/link';
40
44
 
41
- const THEME_PATTERN_TOOLTIP = __( 'Theme patterns cannot be edited.' );
45
+ const templatePartIcons = { header, footer, uncategorized };
42
46
 
43
- export default function GridItem( { categoryId, composite, icon, item } ) {
47
+ function GridItem( { categoryId, item, ...props } ) {
44
48
  const descriptionId = useId();
45
49
  const [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );
46
50
 
51
+ const { removeTemplate } = useDispatch( editSiteStore );
47
52
  const { __experimentalDeleteReusableBlock } =
48
53
  useDispatch( reusableBlocksStore );
49
54
  const { createErrorNotice, createSuccessNotice } =
50
55
  useDispatch( noticesStore );
51
56
 
57
+ const isUserPattern = item.type === USER_PATTERNS;
58
+ const isNonUserPattern = item.type === PATTERNS;
59
+ const isTemplatePart = item.type === TEMPLATE_PARTS;
60
+
52
61
  const { onClick } = useLink( {
53
62
  postType: item.type,
54
- postId: item.type === USER_PATTERNS ? item.id : item.name,
63
+ postId: isUserPattern ? item.id : item.name,
55
64
  categoryId,
56
65
  categoryType: item.type,
57
66
  } );
58
67
 
59
- const onKeyDown = ( event ) => {
60
- if ( DELETE === event.keyCode || BACKSPACE === event.keyCode ) {
61
- setIsDeleteDialogOpen( true );
62
- }
63
- };
64
-
65
68
  const isEmpty = ! item.blocks?.length;
66
69
  const patternClassNames = classnames( 'edit-site-patterns__pattern', {
67
70
  'is-placeholder': isEmpty,
68
71
  } );
69
72
  const previewClassNames = classnames( 'edit-site-patterns__preview', {
70
- 'is-inactive': item.type === PATTERNS,
73
+ 'is-inactive': isNonUserPattern,
71
74
  } );
72
75
 
73
76
  const deletePattern = async () => {
74
77
  try {
75
78
  await __experimentalDeleteReusableBlock( item.id );
76
- createSuccessNotice( __( 'Pattern successfully deleted.' ), {
77
- type: 'snackbar',
78
- } );
79
+ createSuccessNotice(
80
+ sprintf(
81
+ // translators: %s: The pattern's title e.g. 'Call to action'.
82
+ __( '"%s" deleted.' ),
83
+ item.title
84
+ ),
85
+ { type: 'snackbar', id: 'edit-site-patterns-success' }
86
+ );
79
87
  } catch ( error ) {
80
88
  const errorMessage =
81
89
  error.message && error.code !== 'unknown_error'
82
90
  ? error.message
83
91
  : __( 'An error occurred while deleting the pattern.' );
84
- createErrorNotice( errorMessage, { type: 'snackbar' } );
92
+ createErrorNotice( errorMessage, {
93
+ type: 'snackbar',
94
+ id: 'edit-site-patterns-error',
95
+ } );
85
96
  }
86
97
  };
98
+ const deleteItem = () =>
99
+ isTemplatePart ? removeTemplate( item ) : deletePattern();
87
100
 
88
- const isUserPattern = item.type === USER_PATTERNS;
101
+ // Only custom patterns or custom template parts can be renamed or deleted.
102
+ const isCustomPattern =
103
+ isUserPattern || ( isTemplatePart && item.isCustom );
104
+ const hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;
89
105
  const ariaDescriptions = [];
90
- if ( isUserPattern ) {
106
+
107
+ if ( isCustomPattern ) {
91
108
  // User patterns don't have descriptions, but can be edited and deleted, so include some help text.
92
109
  ariaDescriptions.push(
93
110
  __( 'Press Enter to edit, or Delete to delete the pattern.' )
@@ -95,134 +112,173 @@ export default function GridItem( { categoryId, composite, icon, item } ) {
95
112
  } else if ( item.description ) {
96
113
  ariaDescriptions.push( item.description );
97
114
  }
98
- if ( item.type === PATTERNS ) {
99
- ariaDescriptions.push( THEME_PATTERN_TOOLTIP );
100
- }
101
115
 
102
- let itemIcon = icon;
103
- if ( categoryId === 'header' ) {
104
- itemIcon = header;
105
- } else if ( categoryId === 'footer' ) {
106
- itemIcon = footer;
107
- } else if ( categoryId === 'uncategorized' ) {
108
- itemIcon = symbolFilled;
116
+ if ( isNonUserPattern ) {
117
+ ariaDescriptions.push(
118
+ __( 'Theme & plugin patterns cannot be edited.' )
119
+ );
109
120
  }
110
121
 
122
+ const itemIcon =
123
+ templatePartIcons[ categoryId ] ||
124
+ ( item.syncStatus === SYNC_TYPES.full ? symbol : undefined );
125
+
126
+ const confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );
127
+ const confirmPrompt = hasThemeFile
128
+ ? __( 'Are you sure you want to clear these customizations?' )
129
+ : sprintf(
130
+ // translators: %s: The pattern or template part's title e.g. 'Call to action'.
131
+ __( 'Are you sure you want to delete "%s"?' ),
132
+ item.title
133
+ );
134
+
111
135
  return (
112
- <>
113
- <div className={ patternClassNames }>
114
- <CompositeItem
115
- className={ previewClassNames }
116
- role="option"
117
- as="div"
118
- { ...composite }
119
- onClick={ item.type !== PATTERNS ? onClick : undefined }
120
- onKeyDown={ isUserPattern ? onKeyDown : undefined }
121
- aria-label={ item.title }
122
- aria-describedby={
123
- ariaDescriptions.length
124
- ? ariaDescriptions
125
- .map(
126
- ( _, index ) =>
127
- `${ descriptionId }-${ index }`
128
- )
129
- .join( ' ' )
130
- : undefined
131
- }
136
+ <li className={ patternClassNames }>
137
+ <button
138
+ className={ previewClassNames }
139
+ // Even though still incomplete, passing ids helps performance.
140
+ // @see https://reakit.io/docs/composite/#performance.
141
+ id={ `edit-site-patterns-${ item.name }` }
142
+ { ...props }
143
+ onClick={ item.type !== PATTERNS ? onClick : undefined }
144
+ aria-disabled={ item.type !== PATTERNS ? 'false' : 'true' }
145
+ aria-label={ item.title }
146
+ aria-describedby={
147
+ ariaDescriptions.length
148
+ ? ariaDescriptions
149
+ .map(
150
+ ( _, index ) =>
151
+ `${ descriptionId }-${ index }`
152
+ )
153
+ .join( ' ' )
154
+ : undefined
155
+ }
156
+ >
157
+ { isEmpty && __( 'Empty pattern' ) }
158
+ { ! isEmpty && <BlockPreview blocks={ item.blocks } /> }
159
+ </button>
160
+ { ariaDescriptions.map( ( ariaDescription, index ) => (
161
+ <div
162
+ key={ index }
163
+ hidden
164
+ id={ `${ descriptionId }-${ index }` }
132
165
  >
133
- { isEmpty && __( 'Empty pattern' ) }
134
- { ! isEmpty && <BlockPreview blocks={ item.blocks } /> }
135
- </CompositeItem>
136
- { ariaDescriptions.map( ( ariaDescription, index ) => (
137
- <div
138
- key={ index }
139
- hidden
140
- id={ `${ descriptionId }-${ index }` }
141
- >
142
- { ariaDescription }
143
- </div>
144
- ) ) }
166
+ { ariaDescription }
167
+ </div>
168
+ ) ) }
169
+ <HStack
170
+ className="edit-site-patterns__footer"
171
+ justify="space-between"
172
+ >
145
173
  <HStack
146
- aria-hidden="true"
147
- className="edit-site-patterns__footer"
148
- justify="space-between"
174
+ alignment="center"
175
+ justify="left"
176
+ spacing={ 3 }
177
+ className="edit-site-patterns__pattern-title"
149
178
  >
150
- <HStack
151
- alignment="center"
152
- justify="left"
153
- spacing={ 3 }
154
- className="edit-site-patterns__pattern-title"
155
- >
156
- { icon && (
157
- <Icon
158
- className="edit-site-patterns__pattern-icon"
159
- icon={ itemIcon }
160
- />
161
- ) }
162
- <Flex as="span" gap={ 0 } justify="left">
163
- { item.title }
164
- { item.type === PATTERNS && (
165
- <Tooltip
166
- position="top center"
167
- text={ __(
168
- 'Theme patterns cannot be edited.'
169
- ) }
170
- >
171
- <span className="edit-site-patterns__pattern-lock-icon">
172
- <Icon
173
- style={ { fill: 'currentcolor' } }
174
- icon={ lockSmall }
175
- size={ 24 }
176
- />
177
- </span>
178
- </Tooltip>
179
+ { itemIcon && ! isNonUserPattern && (
180
+ <Tooltip
181
+ position="top center"
182
+ text={ __(
183
+ 'Editing this pattern will also update anywhere it is used'
179
184
  ) }
180
- </Flex>
181
- </HStack>
182
- { item.type === USER_PATTERNS && (
183
- <DropdownMenu
184
- icon={ moreHorizontal }
185
- label={ __( 'Actions' ) }
186
- className="edit-site-patterns__dropdown"
187
- popoverProps={ { placement: 'bottom-end' } }
188
- toggleProps={ {
189
- className: 'edit-site-patterns__button',
190
- isSmall: true,
191
- describedBy: sprintf(
192
- /* translators: %s: pattern name */
193
- __( 'Action menu for %s pattern' ),
194
- item.title
195
- ),
196
- // The dropdown menu is not focusable using the
197
- // keyboard as this would interfere with the grid's
198
- // roving tab index system. Instead, keyboard users
199
- // use keyboard shortcuts to trigger actions.
200
- tabIndex: -1,
201
- } }
202
185
  >
203
- { () => (
204
- <MenuGroup>
205
- <MenuItem
206
- onClick={ () =>
207
- setIsDeleteDialogOpen( true )
208
- }
209
- >
210
- { __( 'Delete' ) }
211
- </MenuItem>
212
- </MenuGroup>
213
- ) }
214
- </DropdownMenu>
186
+ <span>
187
+ <Icon
188
+ className="edit-site-patterns__pattern-icon"
189
+ icon={ itemIcon }
190
+ />
191
+ </span>
192
+ </Tooltip>
215
193
  ) }
194
+ <Flex as="span" gap={ 0 } justify="left">
195
+ { item.type === PATTERNS ? (
196
+ item.title
197
+ ) : (
198
+ <Heading level={ 5 }>
199
+ <Button
200
+ variant="link"
201
+ onClick={ onClick }
202
+ // Required for the grid's roving tab index system.
203
+ // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
204
+ tabIndex="-1"
205
+ >
206
+ { item.title }
207
+ </Button>
208
+ </Heading>
209
+ ) }
210
+ { item.type === PATTERNS && (
211
+ <Tooltip
212
+ position="top center"
213
+ text={ __( 'This pattern cannot be edited.' ) }
214
+ >
215
+ <span className="edit-site-patterns__pattern-lock-icon">
216
+ <Icon icon={ lockSmall } size={ 24 } />
217
+ </span>
218
+ </Tooltip>
219
+ ) }
220
+ </Flex>
216
221
  </HStack>
217
- </div>
222
+ <DropdownMenu
223
+ icon={ moreHorizontal }
224
+ label={ __( 'Actions' ) }
225
+ className="edit-site-patterns__dropdown"
226
+ popoverProps={ { placement: 'bottom-end' } }
227
+ toggleProps={ {
228
+ className: 'edit-site-patterns__button',
229
+ isSmall: true,
230
+ describedBy: sprintf(
231
+ /* translators: %s: pattern name */
232
+ __( 'Action menu for %s pattern' ),
233
+ item.title
234
+ ),
235
+ } }
236
+ >
237
+ { ( { onClose } ) => (
238
+ <MenuGroup>
239
+ { isCustomPattern && ! hasThemeFile && (
240
+ <RenameMenuItem
241
+ item={ item }
242
+ onClose={ onClose }
243
+ />
244
+ ) }
245
+ <DuplicateMenuItem
246
+ categoryId={ categoryId }
247
+ item={ item }
248
+ onClose={ onClose }
249
+ label={
250
+ isNonUserPattern
251
+ ? __( 'Copy to My patterns' )
252
+ : __( 'Duplicate' )
253
+ }
254
+ />
255
+ { isCustomPattern && (
256
+ <MenuItem
257
+ onClick={ () =>
258
+ setIsDeleteDialogOpen( true )
259
+ }
260
+ >
261
+ { hasThemeFile
262
+ ? __( 'Clear customizations' )
263
+ : __( 'Delete' ) }
264
+ </MenuItem>
265
+ ) }
266
+ </MenuGroup>
267
+ ) }
268
+ </DropdownMenu>
269
+ </HStack>
270
+
218
271
  { isDeleteDialogOpen && (
219
272
  <ConfirmDialog
220
- onConfirm={ deletePattern }
273
+ confirmButtonText={ confirmButtonText }
274
+ onConfirm={ deleteItem }
221
275
  onCancel={ () => setIsDeleteDialogOpen( false ) }
222
276
  >
223
- { __( 'Are you sure you want to delete this pattern?' ) }
277
+ { confirmPrompt }
224
278
  </ConfirmDialog>
225
279
  ) }
226
- </>
280
+ </li>
227
281
  );
228
282
  }
283
+
284
+ export default memo( GridItem );
@@ -1,39 +1,22 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- __unstableComposite as Composite,
6
- __unstableUseCompositeState as useCompositeState,
7
- } from '@wordpress/components';
8
-
9
1
  /**
10
2
  * Internal dependencies
11
3
  */
12
4
  import GridItem from './grid-item';
13
5
 
14
- export default function Grid( { categoryId, label, icon, items } ) {
15
- const composite = useCompositeState( { orientation: 'vertical' } );
16
-
6
+ export default function Grid( { categoryId, items, ...props } ) {
17
7
  if ( ! items?.length ) {
18
8
  return null;
19
9
  }
20
10
 
21
11
  return (
22
- <Composite
23
- { ...composite }
24
- role="listbox"
25
- className="edit-site-patterns__grid"
26
- aria-label={ label }
27
- >
12
+ <ul role="listbox" className="edit-site-patterns__grid" { ...props }>
28
13
  { items.map( ( item ) => (
29
14
  <GridItem
30
15
  key={ item.name }
31
- icon={ icon }
32
16
  item={ item }
33
17
  categoryId={ categoryId }
34
- composite={ composite }
35
18
  />
36
19
  ) ) }
37
- </Composite>
20
+ </ul>
38
21
  );
39
22
  }