@wordpress/edit-site 4.19.0 → 5.0.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 (319) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +1 -0
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/index.js +8 -5
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/new-template-part.js +21 -6
  7. package/build/components/add-new-template/new-template-part.js.map +1 -1
  8. package/build/components/add-new-template/new-template.js +12 -8
  9. package/build/components/add-new-template/new-template.js.map +1 -1
  10. package/build/components/app/index.js +15 -30
  11. package/build/components/app/index.js.map +1 -1
  12. package/build/components/block-editor/editor-canvas.js +64 -0
  13. package/build/components/block-editor/editor-canvas.js.map +1 -0
  14. package/build/components/block-editor/index.js +61 -59
  15. package/build/components/block-editor/index.js.map +1 -1
  16. package/build/components/block-editor/resizable-editor.js +10 -44
  17. package/build/components/block-editor/resizable-editor.js.map +1 -1
  18. package/build/components/editor/index.js +80 -127
  19. package/build/components/editor/index.js.map +1 -1
  20. package/build/components/global-styles/block-preview-panel.js +42 -0
  21. package/build/components/global-styles/block-preview-panel.js.map +1 -0
  22. package/build/components/global-styles/context-menu.js +6 -2
  23. package/build/components/global-styles/context-menu.js.map +1 -1
  24. package/build/components/global-styles/custom-css.js +61 -0
  25. package/build/components/global-styles/custom-css.js.map +1 -0
  26. package/build/components/global-styles/dimensions-panel.js +2 -6
  27. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  28. package/build/components/global-styles/global-styles-provider.js +15 -2
  29. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  30. package/build/components/global-styles/hooks.js +5 -2
  31. package/build/components/global-styles/hooks.js.map +1 -1
  32. package/build/components/global-styles/palette.js +1 -1
  33. package/build/components/global-styles/palette.js.map +1 -1
  34. package/build/components/global-styles/screen-block-list.js +2 -1
  35. package/build/components/global-styles/screen-block-list.js.map +1 -1
  36. package/build/components/global-styles/screen-block.js +10 -2
  37. package/build/components/global-styles/screen-block.js.map +1 -1
  38. package/build/components/global-styles/screen-border.js +43 -0
  39. package/build/components/global-styles/screen-border.js.map +1 -0
  40. package/build/components/global-styles/screen-colors.js +1 -1
  41. package/build/components/global-styles/screen-colors.js.map +1 -1
  42. package/build/components/global-styles/screen-css.js +42 -0
  43. package/build/components/global-styles/screen-css.js.map +1 -0
  44. package/build/components/global-styles/screen-layout.js +0 -5
  45. package/build/components/global-styles/screen-layout.js.map +1 -1
  46. package/build/components/global-styles/screen-root.js +14 -1
  47. package/build/components/global-styles/screen-root.js.map +1 -1
  48. package/build/components/global-styles/screen-style-variations.js +3 -3
  49. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  50. package/build/components/global-styles/ui.js +50 -4
  51. package/build/components/global-styles/ui.js.map +1 -1
  52. package/build/components/global-styles/use-global-styles-output.js +5 -1
  53. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  54. package/build/components/global-styles/utils.js +3 -3
  55. package/build/components/global-styles/utils.js.map +1 -1
  56. package/build/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -8
  57. package/build/components/global-styles-renderer/index.js.map +1 -0
  58. package/build/components/header-edit-mode/document-actions/index.js +12 -5
  59. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  60. package/build/components/header-edit-mode/index.js +19 -12
  61. package/build/components/header-edit-mode/index.js.map +1 -1
  62. package/build/components/keyboard-shortcuts/index.js +11 -1
  63. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  64. package/build/components/layout/index.js +231 -0
  65. package/build/components/layout/index.js.map +1 -0
  66. package/build/components/list/header.js +5 -1
  67. package/build/components/list/header.js.map +1 -1
  68. package/build/components/list/index.js +4 -22
  69. package/build/components/list/index.js.map +1 -1
  70. package/build/components/navigate-to-link/index.js +1 -3
  71. package/build/components/navigate-to-link/index.js.map +1 -1
  72. package/build/components/routes/index.js +1 -1
  73. package/build/components/routes/index.js.map +1 -1
  74. package/build/components/sidebar/index.js +42 -0
  75. package/build/components/sidebar/index.js.map +1 -0
  76. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +24 -4
  77. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  78. package/build/components/sidebar-edit-mode/index.js +1 -1
  79. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-item/index.js +53 -0
  81. package/build/components/sidebar-navigation-item/index.js.map +1 -0
  82. package/build/components/sidebar-navigation-screen/index.js +49 -0
  83. package/build/components/sidebar-navigation-screen/index.js.map +1 -0
  84. package/build/components/sidebar-navigation-screen-main/index.js +76 -0
  85. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -0
  86. package/build/components/sidebar-navigation-screen-templates/index.js +188 -0
  87. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  88. package/build/components/site-icon/index.js +70 -0
  89. package/build/components/site-icon/index.js.map +1 -0
  90. package/build/components/site-title/index.js +55 -0
  91. package/build/components/site-title/index.js.map +1 -0
  92. package/build/components/style-book/index.js +173 -0
  93. package/build/components/style-book/index.js.map +1 -0
  94. package/build/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +5 -4
  95. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  96. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +53 -0
  97. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  98. package/build/index.js +2 -45
  99. package/build/index.js.map +1 -1
  100. package/build/store/actions.js +93 -43
  101. package/build/store/actions.js.map +1 -1
  102. package/build/store/reducer.js +35 -107
  103. package/build/store/reducer.js.map +1 -1
  104. package/build/store/selectors.js +69 -78
  105. package/build/store/selectors.js.map +1 -1
  106. package/build-module/components/add-new-template/add-custom-template-modal.js +1 -0
  107. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  108. package/build-module/components/add-new-template/index.js +7 -5
  109. package/build-module/components/add-new-template/index.js.map +1 -1
  110. package/build-module/components/add-new-template/new-template-part.js +18 -6
  111. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  112. package/build-module/components/add-new-template/new-template.js +13 -9
  113. package/build-module/components/add-new-template/new-template.js.map +1 -1
  114. package/build-module/components/app/index.js +15 -28
  115. package/build-module/components/app/index.js.map +1 -1
  116. package/build-module/components/block-editor/editor-canvas.js +51 -0
  117. package/build-module/components/block-editor/editor-canvas.js.map +1 -0
  118. package/build-module/components/block-editor/index.js +61 -60
  119. package/build-module/components/block-editor/index.js.map +1 -1
  120. package/build-module/components/block-editor/resizable-editor.js +11 -40
  121. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  122. package/build-module/components/editor/index.js +81 -124
  123. package/build-module/components/editor/index.js.map +1 -1
  124. package/build-module/components/global-styles/block-preview-panel.js +32 -0
  125. package/build-module/components/global-styles/block-preview-panel.js.map +1 -0
  126. package/build-module/components/global-styles/context-menu.js +7 -3
  127. package/build-module/components/global-styles/context-menu.js.map +1 -1
  128. package/build-module/components/global-styles/custom-css.js +51 -0
  129. package/build-module/components/global-styles/custom-css.js.map +1 -0
  130. package/build-module/components/global-styles/dimensions-panel.js +3 -7
  131. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  132. package/build-module/components/global-styles/global-styles-provider.js +15 -2
  133. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  134. package/build-module/components/global-styles/hooks.js +5 -3
  135. package/build-module/components/global-styles/hooks.js.map +1 -1
  136. package/build-module/components/global-styles/palette.js +1 -1
  137. package/build-module/components/global-styles/palette.js.map +1 -1
  138. package/build-module/components/global-styles/screen-block-list.js +2 -1
  139. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  140. package/build-module/components/global-styles/screen-block.js +8 -2
  141. package/build-module/components/global-styles/screen-block.js.map +1 -1
  142. package/build-module/components/global-styles/screen-border.js +27 -0
  143. package/build-module/components/global-styles/screen-border.js.map +1 -0
  144. package/build-module/components/global-styles/screen-colors.js +1 -1
  145. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  146. package/build-module/components/global-styles/screen-css.js +28 -0
  147. package/build-module/components/global-styles/screen-css.js.map +1 -0
  148. package/build-module/components/global-styles/screen-layout.js +0 -4
  149. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  150. package/build-module/components/global-styles/screen-root.js +14 -1
  151. package/build-module/components/global-styles/screen-root.js.map +1 -1
  152. package/build-module/components/global-styles/screen-style-variations.js +2 -2
  153. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  154. package/build-module/components/global-styles/ui.js +48 -5
  155. package/build-module/components/global-styles/ui.js.map +1 -1
  156. package/build-module/components/global-styles/use-global-styles-output.js +5 -1
  157. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  158. package/build-module/components/global-styles/utils.js +4 -4
  159. package/build-module/components/global-styles/utils.js.map +1 -1
  160. package/build-module/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -7
  161. package/build-module/components/global-styles-renderer/index.js.map +1 -0
  162. package/build-module/components/header-edit-mode/document-actions/index.js +13 -6
  163. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  164. package/build-module/components/header-edit-mode/index.js +16 -11
  165. package/build-module/components/header-edit-mode/index.js.map +1 -1
  166. package/build-module/components/keyboard-shortcuts/index.js +10 -1
  167. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  168. package/build-module/components/layout/index.js +203 -0
  169. package/build-module/components/layout/index.js.map +1 -0
  170. package/build-module/components/list/header.js +5 -1
  171. package/build-module/components/list/header.js.map +1 -1
  172. package/build-module/components/list/index.js +4 -19
  173. package/build-module/components/list/index.js.map +1 -1
  174. package/build-module/components/navigate-to-link/index.js +1 -3
  175. package/build-module/components/navigate-to-link/index.js.map +1 -1
  176. package/build-module/components/routes/index.js +1 -1
  177. package/build-module/components/routes/index.js.map +1 -1
  178. package/build-module/components/sidebar/index.js +30 -0
  179. package/build-module/components/sidebar/index.js.map +1 -0
  180. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +27 -7
  181. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  182. package/build-module/components/sidebar-edit-mode/index.js +3 -3
  183. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  184. package/build-module/components/sidebar-navigation-item/index.js +40 -0
  185. package/build-module/components/sidebar-navigation-item/index.js.map +1 -0
  186. package/build-module/components/sidebar-navigation-screen/index.js +39 -0
  187. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -0
  188. package/build-module/components/sidebar-navigation-screen-main/index.js +57 -0
  189. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -0
  190. package/build-module/components/sidebar-navigation-screen-templates/index.js +165 -0
  191. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  192. package/build-module/components/site-icon/index.js +55 -0
  193. package/build-module/components/site-icon/index.js.map +1 -0
  194. package/build-module/components/site-title/index.js +43 -0
  195. package/build-module/components/site-title/index.js.map +1 -0
  196. package/build-module/components/style-book/index.js +156 -0
  197. package/build-module/components/style-book/index.js.map +1 -0
  198. package/build-module/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +4 -3
  199. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  200. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +43 -0
  201. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  202. package/build-module/index.js +5 -36
  203. package/build-module/index.js.map +1 -1
  204. package/build-module/store/actions.js +87 -42
  205. package/build-module/store/actions.js.map +1 -1
  206. package/build-module/store/reducer.js +35 -102
  207. package/build-module/store/reducer.js.map +1 -1
  208. package/build-module/store/selectors.js +60 -72
  209. package/build-module/store/selectors.js.map +1 -1
  210. package/build-style/style-rtl.css +550 -346
  211. package/build-style/style.css +550 -346
  212. package/package.json +32 -31
  213. package/src/components/add-new-template/add-custom-template-modal.js +1 -0
  214. package/src/components/add-new-template/index.js +6 -3
  215. package/src/components/add-new-template/new-template-part.js +15 -3
  216. package/src/components/add-new-template/new-template.js +14 -7
  217. package/src/components/add-new-template/style.scss +0 -4
  218. package/src/components/app/index.js +14 -43
  219. package/src/components/block-editor/editor-canvas.js +69 -0
  220. package/src/components/block-editor/index.js +102 -87
  221. package/src/components/block-editor/resizable-editor.js +9 -64
  222. package/src/components/block-editor/style.scss +25 -1
  223. package/src/components/code-editor/style.scss +1 -1
  224. package/src/components/editor/index.js +170 -236
  225. package/src/components/editor/style.scss +0 -22
  226. package/src/components/global-styles/block-preview-panel.js +29 -0
  227. package/src/components/global-styles/context-menu.js +11 -2
  228. package/src/components/global-styles/custom-css.js +73 -0
  229. package/src/components/global-styles/dimensions-panel.js +2 -5
  230. package/src/components/global-styles/global-styles-provider.js +39 -17
  231. package/src/components/global-styles/hooks.js +8 -3
  232. package/src/components/global-styles/palette.js +1 -1
  233. package/src/components/global-styles/screen-block-list.js +2 -1
  234. package/src/components/global-styles/screen-block.js +9 -1
  235. package/src/components/global-styles/screen-border.js +23 -0
  236. package/src/components/global-styles/screen-colors.js +2 -1
  237. package/src/components/global-styles/screen-css.js +33 -0
  238. package/src/components/global-styles/screen-layout.js +0 -3
  239. package/src/components/global-styles/screen-root.js +30 -1
  240. package/src/components/global-styles/screen-style-variations.js +5 -2
  241. package/src/components/global-styles/style.scss +31 -2
  242. package/src/components/global-styles/ui.js +47 -4
  243. package/src/components/global-styles/use-global-styles-output.js +5 -0
  244. package/src/components/global-styles/utils.js +8 -5
  245. package/src/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +3 -9
  246. package/src/components/header-edit-mode/document-actions/index.js +14 -9
  247. package/src/components/header-edit-mode/document-actions/style.scss +8 -1
  248. package/src/components/header-edit-mode/index.js +96 -78
  249. package/src/components/header-edit-mode/style.scss +5 -33
  250. package/src/components/keyboard-shortcuts/index.js +13 -0
  251. package/src/components/layout/index.js +278 -0
  252. package/src/components/layout/style.scss +176 -0
  253. package/src/components/list/header.js +5 -1
  254. package/src/components/list/index.js +12 -31
  255. package/src/components/list/style.scss +10 -4
  256. package/src/components/navigate-to-link/index.js +2 -8
  257. package/src/components/routes/index.js +1 -1
  258. package/src/components/sidebar/index.js +34 -0
  259. package/src/components/sidebar/style.scss +8 -0
  260. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +42 -7
  261. package/src/components/sidebar-edit-mode/index.js +3 -3
  262. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/style.scss +21 -3
  263. package/src/components/sidebar-edit-mode/settings-header/style.scss +47 -34
  264. package/src/components/sidebar-edit-mode/style.scss +0 -13
  265. package/src/components/sidebar-navigation-item/index.js +51 -0
  266. package/src/components/sidebar-navigation-item/style.scss +17 -0
  267. package/src/components/sidebar-navigation-screen/index.js +55 -0
  268. package/src/components/sidebar-navigation-screen/style.scss +41 -0
  269. package/src/components/sidebar-navigation-screen-main/index.js +72 -0
  270. package/src/components/sidebar-navigation-screen-templates/index.js +181 -0
  271. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  272. package/src/components/site-icon/index.js +56 -0
  273. package/src/components/site-icon/style.scss +10 -0
  274. package/src/components/site-title/index.js +39 -0
  275. package/src/components/style-book/index.js +193 -0
  276. package/src/components/style-book/style.scss +78 -0
  277. package/src/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +3 -3
  278. package/src/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +36 -0
  279. package/src/components/template-details/style.scss +4 -0
  280. package/src/index.js +3 -53
  281. package/src/store/actions.js +93 -48
  282. package/src/store/reducer.js +29 -91
  283. package/src/store/selectors.js +61 -101
  284. package/src/store/test/actions.js +3 -15
  285. package/src/store/test/reducer.js +8 -192
  286. package/src/store/test/selectors.js +3 -42
  287. package/src/style.scss +19 -3
  288. package/build/components/editor/global-styles-renderer.js.map +0 -1
  289. package/build/components/navigation-sidebar/index.js +0 -62
  290. package/build/components/navigation-sidebar/index.js.map +0 -1
  291. package/build/components/navigation-sidebar/navigation-panel/constants.js +0 -77
  292. package/build/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  293. package/build/components/navigation-sidebar/navigation-panel/index.js +0 -152
  294. package/build/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  295. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  296. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  297. package/build/components/navigation-sidebar/navigation-toggle/index.js +0 -124
  298. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  299. package/build/components/url-query-controller/index.js.map +0 -1
  300. package/build-module/components/editor/global-styles-renderer.js.map +0 -1
  301. package/build-module/components/navigation-sidebar/index.js +0 -45
  302. package/build-module/components/navigation-sidebar/index.js.map +0 -1
  303. package/build-module/components/navigation-sidebar/navigation-panel/constants.js +0 -49
  304. package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  305. package/build-module/components/navigation-sidebar/navigation-panel/index.js +0 -131
  306. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  307. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -66
  308. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  309. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +0 -108
  310. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  311. package/build-module/components/url-query-controller/index.js.map +0 -1
  312. package/src/components/navigation-sidebar/index.js +0 -46
  313. package/src/components/navigation-sidebar/navigation-panel/constants.js +0 -94
  314. package/src/components/navigation-sidebar/navigation-panel/index.js +0 -142
  315. package/src/components/navigation-sidebar/navigation-panel/style.scss +0 -152
  316. package/src/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  317. package/src/components/navigation-sidebar/navigation-toggle/index.js +0 -114
  318. package/src/components/navigation-sidebar/navigation-toggle/style.scss +0 -71
  319. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +0 -65
@@ -1,39 +1,71 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { DropdownMenu, FlexItem, FlexBlock, Flex } from '@wordpress/components';
4
+ import {
5
+ DropdownMenu,
6
+ FlexItem,
7
+ FlexBlock,
8
+ Flex,
9
+ Button,
10
+ } from '@wordpress/components';
5
11
  import { __ } from '@wordpress/i18n';
6
- import { styles, moreVertical } from '@wordpress/icons';
7
- import { useDispatch } from '@wordpress/data';
12
+ import { styles, moreVertical, seen } from '@wordpress/icons';
13
+ import { useDispatch, useSelect } from '@wordpress/data';
8
14
  import { store as preferencesStore } from '@wordpress/preferences';
15
+ import { useState, useEffect } from '@wordpress/element';
9
16
 
10
17
  /**
11
18
  * Internal dependencies
12
19
  */
13
20
  import DefaultSidebar from './default-sidebar';
14
21
  import { GlobalStylesUI, useGlobalStylesReset } from '../global-styles';
22
+ import { store as editSiteStore } from '../../store';
15
23
 
16
24
  export default function GlobalStylesSidebar() {
17
25
  const [ canReset, onReset ] = useGlobalStylesReset();
18
26
  const { toggle } = useDispatch( preferencesStore );
19
-
27
+ const [ isStyleBookOpened, setIsStyleBookOpened ] = useState( false );
28
+ const editorMode = useSelect(
29
+ ( select ) => select( editSiteStore ).getEditorMode(),
30
+ []
31
+ );
32
+ useEffect( () => {
33
+ if ( editorMode !== 'visual' ) {
34
+ setIsStyleBookOpened( false );
35
+ }
36
+ }, [ editorMode ] );
20
37
  return (
21
38
  <DefaultSidebar
22
39
  className="edit-site-global-styles-sidebar"
23
40
  identifier="edit-site/global-styles"
24
41
  title={ __( 'Styles' ) }
25
42
  icon={ styles }
26
- closeLabel={ __( 'Close global styles sidebar' ) }
43
+ closeLabel={ __( 'Close Styles sidebar' ) }
27
44
  panelClassName="edit-site-global-styles-sidebar__panel"
28
45
  header={
29
46
  <Flex>
30
47
  <FlexBlock>
31
48
  <strong>{ __( 'Styles' ) }</strong>
32
49
  </FlexBlock>
50
+ <FlexItem>
51
+ <Button
52
+ icon={ seen }
53
+ label={
54
+ isStyleBookOpened
55
+ ? __( 'Close Style Book' )
56
+ : __( 'Open Style Book' )
57
+ }
58
+ isPressed={ isStyleBookOpened }
59
+ disabled={ editorMode !== 'visual' }
60
+ onClick={ () => {
61
+ setIsStyleBookOpened( ! isStyleBookOpened );
62
+ } }
63
+ />
64
+ </FlexItem>
33
65
  <FlexItem>
34
66
  <DropdownMenu
35
67
  icon={ moreVertical }
36
- label={ __( 'More Global Styles Actions' ) }
68
+ label={ __( 'More Styles actions' ) }
37
69
  controls={ [
38
70
  {
39
71
  title: __( 'Reset to defaults' ),
@@ -54,7 +86,10 @@ export default function GlobalStylesSidebar() {
54
86
  </Flex>
55
87
  }
56
88
  >
57
- <GlobalStylesUI />
89
+ <GlobalStylesUI
90
+ isStyleBookOpened={ isStyleBookOpened }
91
+ onCloseStyleBook={ () => setIsStyleBookOpened( false ) }
92
+ />
58
93
  </DefaultSidebar>
59
94
  );
60
95
  }
@@ -2,8 +2,8 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { createSlotFill, PanelBody } from '@wordpress/components';
5
- import { __ } from '@wordpress/i18n';
6
- import { cog } from '@wordpress/icons';
5
+ import { isRTL, __ } from '@wordpress/i18n';
6
+ import { drawerLeft, drawerRight } from '@wordpress/icons';
7
7
  import { useEffect, Fragment } from '@wordpress/element';
8
8
  import { useSelect, useDispatch } from '@wordpress/data';
9
9
  import { store as interfaceStore } from '@wordpress/interface';
@@ -78,7 +78,7 @@ export function SidebarComplementaryAreaFills() {
78
78
  <DefaultSidebar
79
79
  identifier={ sidebarName }
80
80
  title={ __( 'Settings' ) }
81
- icon={ cog }
81
+ icon={ isRTL() ? drawerLeft : drawerRight }
82
82
  closeLabel={ __( 'Close settings sidebar' ) }
83
83
  header={ <SettingsHeader sidebarName={ sidebarName } /> }
84
84
  headerClassName="edit-site-sidebar-edit-mode__panel-tabs"
@@ -11,8 +11,6 @@
11
11
  }
12
12
 
13
13
  .edit-site-navigation-inspector {
14
- padding: $grid-unit-20;
15
-
16
14
  .block-editor-list-view-leaf .block-editor-list-view-block-contents {
17
15
  white-space: normal;
18
16
  }
@@ -26,7 +24,6 @@
26
24
  }
27
25
  }
28
26
 
29
-
30
27
  .edit-site-navigation-inspector__placeholder {
31
28
  padding: $grid-unit-10;
32
29
  margin: $grid-unit-10;
@@ -39,3 +36,24 @@
39
36
  width: 50%;
40
37
  }
41
38
  }
39
+
40
+ .edit-site-navigation-inspector__empty-msg {
41
+ padding: 0 $grid-unit-10;
42
+ }
43
+
44
+ .edit-site-navigation-menu-sidebar__panel {
45
+ padding: $grid-unit-20;
46
+ }
47
+
48
+ .edit-site-navigation-sidebar__beta {
49
+ display: inline-flex;
50
+ margin-left: $grid-unit-10;
51
+ padding: 0 $grid-unit-10;
52
+ height: $grid-unit-30;
53
+ border-radius: $radius-block-ui;
54
+ background-color: $gray-900;
55
+ color: $white;
56
+ align-items: center;
57
+ font-size: $helptext-font-size;
58
+ line-height: 1;
59
+ }
@@ -25,56 +25,69 @@
25
25
  }
26
26
  }
27
27
 
28
+ // This tab style CSS is duplicated verbatim in
29
+ // /packages/components/src/tab-panel/style.scss
28
30
  .components-button.edit-site-sidebar-edit-mode__panel-tab {
31
+ position: relative;
29
32
  border-radius: 0;
30
33
  height: $grid-unit-60;
31
34
  background: transparent;
32
35
  border: none;
33
36
  box-shadow: none;
34
37
  cursor: pointer;
35
- display: inline-block;
36
- padding: 3px 15px; // Use padding to offset the is-active border, this benefits Windows High Contrast mode
38
+ padding: 3px $grid-unit-20; // Use padding to offset the is-active border, this benefits Windows High Contrast mode
37
39
  margin-left: 0;
38
40
  font-weight: 500;
39
41
 
40
- // This pseudo-element "duplicates" the tab label and sets the text to bold.
41
- // This ensures that the tab doesn't change width when selected.
42
- // See: https://github.com/WordPress/gutenberg/pull/9793
43
- &::after {
44
- content: attr(data-label);
45
- display: block;
46
- font-weight: 600;
47
- height: 0;
48
- overflow: hidden;
49
- speak: none;
50
- visibility: hidden;
42
+ &:focus:not(:disabled) {
43
+ position: relative;
44
+ box-shadow: none;
51
45
  }
52
46
 
53
- &.is-active {
54
- // The transparent shadow ensures no jumpiness when focus animates on an active tab.
55
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 0 -$border-width-tab 0 0 var(--wp-admin-theme-color);
56
- position: relative;
57
- z-index: z-index(".edit-post-sidebar__panel-tab.is-active");
47
+ // Tab indicator
48
+ &::after {
49
+ content: "";
50
+ position: absolute;
51
+ right: 0;
52
+ bottom: 0;
53
+ left: 0;
54
+ pointer-events: none;
58
55
 
59
- // This border appears in Windows High Contrast mode instead of the box-shadow.
60
- &::before {
61
- content: "";
62
- position: absolute;
63
- top: 0;
64
- bottom: 1px;
65
- right: 0;
66
- left: 0;
67
- border-bottom: $border-width-tab solid transparent;
68
- }
56
+ // Draw the indicator.
57
+ background: var(--wp-admin-theme-color);
58
+ height: calc(0 * var(--wp-admin-border-width-focus));
59
+ border-radius: 0;
60
+
61
+ // Animation
62
+ transition: all 0.1s linear;
63
+ @include reduce-motion("transition");
69
64
  }
70
65
 
71
- &:focus {
72
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
73
- position: relative;
74
- z-index: z-index(".edit-post-sidebar__panel-tab.is-active");
66
+ // Active.
67
+ &.is-active::after {
68
+ height: calc(1 * var(--wp-admin-border-width-focus));
69
+ }
70
+
71
+ // Focus.
72
+ &::before {
73
+ content: "";
74
+ position: absolute;
75
+ top: $grid-unit-15;
76
+ right: $grid-unit-15;
77
+ bottom: $grid-unit-15;
78
+ left: $grid-unit-15;
79
+ pointer-events: none;
80
+
81
+ // Draw the indicator.
82
+ box-shadow: 0 0 0 0 transparent;
83
+ border-radius: $radius-block-ui;
84
+
85
+ // Animation
86
+ transition: all 0.1s linear;
87
+ @include reduce-motion("transition");
75
88
  }
76
89
 
77
- &.is-active:focus {
78
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 0 -$border-width-tab 0 0 var(--wp-admin-theme-color);
90
+ &:focus-visible::before {
91
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
79
92
  }
80
93
  }
@@ -78,19 +78,6 @@
78
78
  padding: $grid-unit-20;
79
79
  }
80
80
 
81
- .edit-site-navigation-sidebar__beta {
82
- display: inline-flex;
83
- margin-left: $grid-unit-10;
84
- padding: 0 $grid-unit-10;
85
- height: $grid-unit-30;
86
- border-radius: $radius-block-ui;
87
- background-color: $gray-900;
88
- color: $white;
89
- align-items: center;
90
- font-size: $helptext-font-size;
91
- line-height: 1;
92
- }
93
-
94
81
  // Override the `hr` styles defined in the `ComplementaryArea` component
95
82
  // from the `@wordpress/interface` package.
96
83
  .edit-site-global-styles-sidebar hr {
@@ -0,0 +1,51 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ __experimentalItem as Item,
11
+ __experimentalHStack as HStack,
12
+ FlexBlock,
13
+ } from '@wordpress/components';
14
+ import { chevronRight, Icon } from '@wordpress/icons';
15
+
16
+ export default function SidebarNavigationItem( {
17
+ className,
18
+ icon,
19
+ withChevron = false,
20
+ children,
21
+ ...props
22
+ } ) {
23
+ return (
24
+ <Item
25
+ className={ classnames(
26
+ 'edit-site-sidebar-navigation-item',
27
+ className
28
+ ) }
29
+ { ...props }
30
+ >
31
+ { icon && (
32
+ <HStack justify="flex-start">
33
+ <Icon
34
+ style={ { fill: 'currentcolor' } }
35
+ icon={ icon }
36
+ size={ 24 }
37
+ />
38
+ <FlexBlock>{ children }</FlexBlock>
39
+ { withChevron && (
40
+ <Icon
41
+ style={ { fill: 'currentcolor' } }
42
+ icon={ chevronRight }
43
+ size={ 24 }
44
+ />
45
+ ) }
46
+ </HStack>
47
+ ) }
48
+ { ! icon && children }
49
+ </Item>
50
+ );
51
+ }
@@ -0,0 +1,17 @@
1
+ .edit-site-sidebar-navigation-item.components-item {
2
+ color: $gray-600;
3
+ border-width: $border-width-tab;
4
+
5
+ &:hover,
6
+ &:focus {
7
+ color: $white;
8
+ background: $gray-800;
9
+ border-width: $border-width-tab;
10
+ }
11
+
12
+ &[aria-current] {
13
+ color: $white;
14
+ background: var(--wp-admin-theme-color);
15
+ border-width: $border-width-tab;
16
+ }
17
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalHStack as HStack,
6
+ __experimentalVStack as VStack,
7
+ __experimentalNavigatorBackButton as NavigatorBackButton,
8
+ __experimentalNavigatorScreen as NavigatorScreen,
9
+ } from '@wordpress/components';
10
+ import { isRTL, __, sprintf } from '@wordpress/i18n';
11
+ import { chevronRight, chevronLeft } from '@wordpress/icons';
12
+
13
+ export default function SidebarNavigationScreen( {
14
+ path,
15
+ parentTitle,
16
+ title,
17
+ content,
18
+ } ) {
19
+ return (
20
+ <NavigatorScreen
21
+ className="edit-site-sidebar-navigation-screen"
22
+ path={ path }
23
+ >
24
+ <VStack spacing={ 2 }>
25
+ <HStack
26
+ spacing={ 4 }
27
+ justify="flex-start"
28
+ className="edit-site-sidebar-navigation-screen__title-icon"
29
+ >
30
+ { parentTitle ? (
31
+ <NavigatorBackButton
32
+ className="edit-site-sidebar-navigation-screen__back"
33
+ icon={ isRTL() ? chevronRight : chevronLeft }
34
+ aria-label={ sprintf(
35
+ /* translators: %s: previous page. */
36
+ __( 'Navigate to the previous view: %s' ),
37
+ parentTitle
38
+ ) }
39
+ />
40
+ ) : (
41
+ <div className="edit-site-sidebar-navigation-screen__icon-placeholder" />
42
+ ) }
43
+
44
+ <div className="edit-site-sidebar-navigation-screen__title">
45
+ { title }
46
+ </div>
47
+ </HStack>
48
+
49
+ <nav className="edit-site-sidebar-navigation-screen__content">
50
+ { content }
51
+ </nav>
52
+ </VStack>
53
+ </NavigatorScreen>
54
+ );
55
+ }
@@ -0,0 +1,41 @@
1
+ .edit-site-sidebar-navigation-screen {
2
+ display: flex;
3
+ flex-direction: column;
4
+ overflow-x: unset !important;
5
+ position: relative;
6
+ }
7
+
8
+ .edit-site-sidebar-navigation-screen__content {
9
+ margin: 0 $grid-unit-20 0 $button-size;
10
+ flex-grow: 1;
11
+ overflow-y: auto;
12
+ }
13
+
14
+ .edit-site-sidebar-navigation-screen__title-icon {
15
+ position: sticky;
16
+ top: 0;
17
+ background: $gray-900;
18
+ padding-top: $grid-unit-80;
19
+ box-shadow: 0 $grid-unit-10 $grid-unit-20 $gray-900;
20
+ margin-bottom: $grid-unit-10;
21
+ padding-bottom: $grid-unit-10;
22
+ padding-right: $grid-unit-20;
23
+ }
24
+
25
+ .edit-site-sidebar-navigation-screen__title {
26
+ font-size: calc(1.56 * 13px);
27
+ font-weight: 500;
28
+ flex-grow: 1;
29
+ }
30
+
31
+ .edit-site-sidebar-navigation-screen__back {
32
+ color: $gray-200;
33
+
34
+ &:hover {
35
+ color: $white;
36
+ }
37
+ }
38
+
39
+ .edit-site-sidebar-navigation-screen__icon-placeholder {
40
+ width: $button-size;
41
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalItemGroup as ItemGroup,
6
+ __experimentalHStack as HStack,
7
+ __experimentalNavigatorButton as NavigatorButton,
8
+ Button,
9
+ } from '@wordpress/components';
10
+ import { __ } from '@wordpress/i18n';
11
+ import { layout, symbolFilled } from '@wordpress/icons';
12
+ import { useDispatch } from '@wordpress/data';
13
+ import { useViewportMatch } from '@wordpress/compose';
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+ import SidebarNavigationScreen from '../sidebar-navigation-screen';
19
+ import SidebarNavigationItem from '../sidebar-navigation-item';
20
+ import { useLocation } from '../routes';
21
+ import { store as editSiteStore } from '../../store';
22
+ import getIsListPage from '../../utils/get-is-list-page';
23
+
24
+ export default function SidebarNavigationScreenMain() {
25
+ const { params } = useLocation();
26
+ const isListPage = getIsListPage( params );
27
+ const isEditorPage = ! isListPage;
28
+ const { __unstableSetCanvasMode } = useDispatch( editSiteStore );
29
+ const isMobileViewport = useViewportMatch( 'medium', '<' );
30
+
31
+ return (
32
+ <SidebarNavigationScreen
33
+ path="/"
34
+ title={
35
+ <HStack justify="space-between" style={ { minHeight: 36 } }>
36
+ <div>{ __( 'Design' ) }</div>
37
+ { ! isMobileViewport && isEditorPage && (
38
+ <Button
39
+ className="edit-site-layout__edit-button"
40
+ label={ __( 'Open the editor' ) }
41
+ onClick={ () => {
42
+ __unstableSetCanvasMode( 'edit' );
43
+ } }
44
+ >
45
+ { __( 'Edit' ) }
46
+ </Button>
47
+ ) }
48
+ </HStack>
49
+ }
50
+ content={
51
+ <ItemGroup>
52
+ <NavigatorButton
53
+ as={ SidebarNavigationItem }
54
+ path="/templates"
55
+ withChevron
56
+ icon={ layout }
57
+ >
58
+ { __( 'Templates' ) }
59
+ </NavigatorButton>
60
+ <NavigatorButton
61
+ as={ SidebarNavigationItem }
62
+ path="/template-parts"
63
+ withChevron
64
+ icon={ symbolFilled }
65
+ >
66
+ { __( 'Template Parts' ) }
67
+ </NavigatorButton>
68
+ </ItemGroup>
69
+ }
70
+ />
71
+ );
72
+ }
@@ -0,0 +1,181 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalItemGroup as ItemGroup,
6
+ __experimentalHStack as HStack,
7
+ Button,
8
+ } from '@wordpress/components';
9
+ import { __ } from '@wordpress/i18n';
10
+ import { useDispatch, useSelect } from '@wordpress/data';
11
+ import { useEntityRecords } from '@wordpress/core-data';
12
+ import { decodeEntities } from '@wordpress/html-entities';
13
+ import { useViewportMatch } from '@wordpress/compose';
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+ import SidebarNavigationScreen from '../sidebar-navigation-screen';
19
+ import { useLink } from '../routes/link';
20
+ import SidebarNavigationItem from '../sidebar-navigation-item';
21
+ import { useLocation } from '../routes';
22
+ import { store as editSiteStore } from '../../store';
23
+ import getIsListPage from '../../utils/get-is-list-page';
24
+ import AddNewTemplate from '../add-new-template';
25
+
26
+ function omit( object, keys ) {
27
+ return Object.fromEntries(
28
+ Object.entries( object ).filter( ( [ key ] ) => ! keys.includes( key ) )
29
+ );
30
+ }
31
+
32
+ const Item = ( { item } ) => {
33
+ const linkInfo = useLink( item.params );
34
+ const props = item.params
35
+ ? { ...omit( item, 'params' ), ...linkInfo }
36
+ : item;
37
+ return <SidebarNavigationItem { ...props } />;
38
+ };
39
+
40
+ const config = {
41
+ wp_template: {
42
+ path: '/templates',
43
+ labels: {
44
+ title: __( 'Templates' ),
45
+ loading: __( 'Loading templates' ),
46
+ notFound: __( 'No templates found' ),
47
+ manage: __( 'Manage all templates' ),
48
+ },
49
+ },
50
+ wp_template_part: {
51
+ path: '/template-parts',
52
+ labels: {
53
+ title: __( 'Template parts' ),
54
+ loading: __( 'Loading template parts' ),
55
+ notFound: __( 'No template parts found' ),
56
+ manage: __( 'Manage all template parts' ),
57
+ },
58
+ },
59
+ };
60
+
61
+ export default function SidebarNavigationScreenTemplates( {
62
+ postType = 'wp_template',
63
+ } ) {
64
+ const { params } = useLocation();
65
+ const { __unstableSetCanvasMode } = useDispatch( editSiteStore );
66
+ const isMobileViewport = useViewportMatch( 'medium', '<' );
67
+ const isListPage = getIsListPage( params );
68
+ const isEditorPage = ! isListPage;
69
+
70
+ // Ideally the URL params would be enough.
71
+ // Loading the editor should ideally redirect to the home page
72
+ // instead of fetching the edited entity here.
73
+ const { editedPostId, editedPostType } = useSelect( ( select ) => {
74
+ const { getEditedPostType, getEditedPostId } = select( editSiteStore );
75
+ return {
76
+ editedPostId: getEditedPostId(),
77
+ editedPostType: getEditedPostType(),
78
+ };
79
+ }, [] );
80
+
81
+ const { records: templates, isResolving: isLoading } = useEntityRecords(
82
+ 'postType',
83
+ postType,
84
+ {
85
+ per_page: -1,
86
+ }
87
+ );
88
+
89
+ let items = [];
90
+ if ( isLoading ) {
91
+ items = [
92
+ {
93
+ children: config[ postType ].labels.loading,
94
+ },
95
+ ];
96
+ } else if ( ! templates && ! isLoading ) {
97
+ items = [
98
+ {
99
+ children: config[ postType ].labels.notFound,
100
+ },
101
+ ];
102
+ } else {
103
+ items = templates?.map( ( template ) => ( {
104
+ params: {
105
+ postType,
106
+ postId: template.id,
107
+ },
108
+ children: decodeEntities(
109
+ template.title?.rendered || template.slug
110
+ ),
111
+ 'aria-current':
112
+ ( params.postType === postType &&
113
+ params.postId === template.id ) ||
114
+ // This is a special case for the home page.
115
+ ( editedPostId === template.id &&
116
+ editedPostType === postType &&
117
+ !! params.postId )
118
+ ? 'page'
119
+ : undefined,
120
+ } ) );
121
+ }
122
+
123
+ return (
124
+ <SidebarNavigationScreen
125
+ path={ config[ postType ].path }
126
+ parentTitle={ __( 'Design' ) }
127
+ title={
128
+ <HStack style={ { minHeight: 36 } } justify="space-between">
129
+ <div style={ { flexShrink: 0 } }>
130
+ { config[ postType ].labels.title }
131
+ </div>
132
+ { ! isMobileViewport && (
133
+ <HStack spacing={ 2 } justify="right">
134
+ <AddNewTemplate
135
+ templateType={ postType }
136
+ toggleProps={ {
137
+ className:
138
+ 'edit-site-sidebar-navigation-screen-templates__add-button',
139
+ } }
140
+ />
141
+ { isEditorPage && (
142
+ <Button
143
+ className="edit-site-layout__edit-button"
144
+ label={ __( 'Open the editor' ) }
145
+ onClick={ () => {
146
+ __unstableSetCanvasMode( 'edit' );
147
+ } }
148
+ >
149
+ { __( 'Edit' ) }
150
+ </Button>
151
+ ) }
152
+ </HStack>
153
+ ) }
154
+ </HStack>
155
+ }
156
+ content={
157
+ <>
158
+ <ItemGroup>
159
+ { items.map( ( item, index ) => (
160
+ <Item item={ item } key={ index } />
161
+ ) ) }
162
+
163
+ <SidebarNavigationItem
164
+ className="edit-site-sidebar-navigation-screen-templates__see-all"
165
+ { ...useLink( {
166
+ postType,
167
+ postId: undefined,
168
+ } ) }
169
+ aria-current={
170
+ params.postType === postType && ! params.postId
171
+ ? 'page'
172
+ : undefined
173
+ }
174
+ children={ config[ postType ].labels.manage }
175
+ />
176
+ </ItemGroup>
177
+ </>
178
+ }
179
+ />
180
+ );
181
+ }