@wordpress/edit-site 3.0.8 → 3.0.12

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 (258) hide show
  1. package/build/components/add-new-template/index.js +49 -0
  2. package/build/components/add-new-template/index.js.map +1 -0
  3. package/build/components/add-new-template/new-template-part.js +95 -0
  4. package/build/components/add-new-template/new-template-part.js.map +1 -0
  5. package/build/components/add-new-template/new-template.js +133 -0
  6. package/build/components/add-new-template/new-template.js.map +1 -0
  7. package/build/components/block-editor/index.js +3 -1
  8. package/build/components/block-editor/index.js.map +1 -1
  9. package/build/components/create-template-part-modal/index.js +115 -0
  10. package/build/components/create-template-part-modal/index.js.map +1 -0
  11. package/build/components/editor/index.js +20 -16
  12. package/build/components/editor/index.js.map +1 -1
  13. package/build/components/global-styles/color-palette-panel.js +29 -6
  14. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  15. package/build/components/global-styles/global-styles-provider.js +9 -47
  16. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  17. package/build/components/global-styles/gradients-palette-panel.js +56 -0
  18. package/build/components/global-styles/gradients-palette-panel.js.map +1 -0
  19. package/build/components/global-styles/hooks.js +29 -27
  20. package/build/components/global-styles/hooks.js.map +1 -1
  21. package/build/components/global-styles/palette.js +11 -5
  22. package/build/components/global-styles/palette.js.map +1 -1
  23. package/build/components/global-styles/screen-background-color.js +2 -1
  24. package/build/components/global-styles/screen-background-color.js.map +1 -1
  25. package/build/components/global-styles/screen-block-list.js +9 -1
  26. package/build/components/global-styles/screen-block-list.js.map +1 -1
  27. package/build/components/global-styles/screen-color-palette.js +23 -3
  28. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  29. package/build/components/global-styles/screen-link-color.js +2 -1
  30. package/build/components/global-styles/screen-link-color.js.map +1 -1
  31. package/build/components/global-styles/screen-text-color.js +2 -1
  32. package/build/components/global-styles/screen-text-color.js.map +1 -1
  33. package/build/components/global-styles/screen-typography-element.js +54 -0
  34. package/build/components/global-styles/screen-typography-element.js.map +1 -0
  35. package/build/components/global-styles/screen-typography.js +74 -6
  36. package/build/components/global-styles/screen-typography.js.map +1 -1
  37. package/build/components/global-styles/typography-panel.js +28 -8
  38. package/build/components/global-styles/typography-panel.js.map +1 -1
  39. package/build/components/global-styles/ui.js +12 -0
  40. package/build/components/global-styles/ui.js.map +1 -1
  41. package/build/components/global-styles/use-global-styles-output.js +2 -2
  42. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  43. package/build/components/global-styles/utils.js +1 -1
  44. package/build/components/global-styles/utils.js.map +1 -1
  45. package/build/components/header/index.js +1 -5
  46. package/build/components/header/index.js.map +1 -1
  47. package/build/components/keyboard-shortcuts/index.js +26 -0
  48. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  49. package/build/components/list/actions/index.js +104 -0
  50. package/build/components/list/actions/index.js.map +1 -0
  51. package/build/components/list/actions/rename-menu-item.js +112 -0
  52. package/build/components/list/actions/rename-menu-item.js.map +1 -0
  53. package/build/components/list/added-by.js +180 -0
  54. package/build/components/list/added-by.js.map +1 -0
  55. package/build/components/list/header.js +50 -0
  56. package/build/components/list/header.js.map +1 -0
  57. package/build/components/list/index.js +102 -0
  58. package/build/components/list/index.js.map +1 -0
  59. package/build/components/list/table.js +114 -0
  60. package/build/components/list/table.js.map +1 -0
  61. package/build/components/list/use-register-shortcuts.js +52 -0
  62. package/build/components/list/use-register-shortcuts.js.map +1 -0
  63. package/build/components/navigation-sidebar/index.js +26 -10
  64. package/build/components/navigation-sidebar/index.js.map +1 -1
  65. package/build/components/navigation-sidebar/navigation-panel/index.js +42 -44
  66. package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  67. package/build/components/navigation-sidebar/navigation-toggle/index.js +5 -17
  68. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  69. package/build/components/template-details/index.js +3 -2
  70. package/build/components/template-details/index.js.map +1 -1
  71. package/build/components/template-part-converter/convert-to-template-part.js +20 -84
  72. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  73. package/build/components/welcome-guide/editor.js +58 -0
  74. package/build/components/welcome-guide/editor.js.map +1 -0
  75. package/build/components/welcome-guide/image.js +27 -0
  76. package/build/components/welcome-guide/image.js.map +1 -0
  77. package/build/components/welcome-guide/index.js +49 -0
  78. package/build/components/welcome-guide/index.js.map +1 -0
  79. package/build/components/welcome-guide/styles.js +83 -0
  80. package/build/components/welcome-guide/styles.js.map +1 -0
  81. package/build/index.js +36 -6
  82. package/build/index.js.map +1 -1
  83. package/build/plugins/index.js +4 -2
  84. package/build/plugins/index.js.map +1 -1
  85. package/build/plugins/welcome-guide-menu-item.js +39 -0
  86. package/build/plugins/welcome-guide-menu-item.js.map +1 -0
  87. package/build/store/actions.js +50 -24
  88. package/build/store/actions.js.map +1 -1
  89. package/build/store/defaults.js +4 -1
  90. package/build/store/defaults.js.map +1 -1
  91. package/build/store/selectors.js +25 -5
  92. package/build/store/selectors.js.map +1 -1
  93. package/build/utils/is-template-removable.js +21 -0
  94. package/build/utils/is-template-removable.js.map +1 -0
  95. package/build-module/components/add-new-template/index.js +36 -0
  96. package/build-module/components/add-new-template/index.js.map +1 -0
  97. package/build-module/components/add-new-template/new-template-part.js +79 -0
  98. package/build-module/components/add-new-template/new-template-part.js.map +1 -0
  99. package/build-module/components/add-new-template/new-template.js +114 -0
  100. package/build-module/components/add-new-template/new-template.js.map +1 -0
  101. package/build-module/components/block-editor/index.js +2 -1
  102. package/build-module/components/block-editor/index.js.map +1 -1
  103. package/build-module/components/create-template-part-modal/index.js +102 -0
  104. package/build-module/components/create-template-part-modal/index.js.map +1 -0
  105. package/build-module/components/editor/index.js +19 -17
  106. package/build-module/components/editor/index.js.map +1 -1
  107. package/build-module/components/global-styles/color-palette-panel.js +29 -7
  108. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  109. package/build-module/components/global-styles/global-styles-provider.js +10 -43
  110. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  111. package/build-module/components/global-styles/gradients-palette-panel.js +46 -0
  112. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -0
  113. package/build-module/components/global-styles/hooks.js +30 -28
  114. package/build-module/components/global-styles/hooks.js.map +1 -1
  115. package/build-module/components/global-styles/palette.js +12 -5
  116. package/build-module/components/global-styles/palette.js.map +1 -1
  117. package/build-module/components/global-styles/screen-background-color.js +2 -1
  118. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  119. package/build-module/components/global-styles/screen-block-list.js +7 -1
  120. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  121. package/build-module/components/global-styles/screen-color-palette.js +22 -3
  122. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  123. package/build-module/components/global-styles/screen-link-color.js +2 -1
  124. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  125. package/build-module/components/global-styles/screen-text-color.js +2 -1
  126. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  127. package/build-module/components/global-styles/screen-typography-element.js +41 -0
  128. package/build-module/components/global-styles/screen-typography-element.js.map +1 -0
  129. package/build-module/components/global-styles/screen-typography.js +70 -6
  130. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  131. package/build-module/components/global-styles/typography-panel.js +28 -8
  132. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  133. package/build-module/components/global-styles/ui.js +11 -0
  134. package/build-module/components/global-styles/ui.js.map +1 -1
  135. package/build-module/components/global-styles/use-global-styles-output.js +2 -2
  136. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  137. package/build-module/components/global-styles/utils.js +1 -1
  138. package/build-module/components/global-styles/utils.js.map +1 -1
  139. package/build-module/components/header/index.js +1 -3
  140. package/build-module/components/header/index.js.map +1 -1
  141. package/build-module/components/keyboard-shortcuts/index.js +26 -0
  142. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  143. package/build-module/components/list/actions/index.js +85 -0
  144. package/build-module/components/list/actions/index.js.map +1 -0
  145. package/build-module/components/list/actions/rename-menu-item.js +101 -0
  146. package/build-module/components/list/actions/rename-menu-item.js.map +1 -0
  147. package/build-module/components/list/added-by.js +166 -0
  148. package/build-module/components/list/added-by.js.map +1 -0
  149. package/build-module/components/list/header.js +37 -0
  150. package/build-module/components/list/header.js.map +1 -0
  151. package/build-module/components/list/index.js +81 -0
  152. package/build-module/components/list/index.js.map +1 -0
  153. package/build-module/components/list/table.js +98 -0
  154. package/build-module/components/list/table.js.map +1 -0
  155. package/build-module/components/list/use-register-shortcuts.js +41 -0
  156. package/build-module/components/list/use-register-shortcuts.js.map +1 -0
  157. package/build-module/components/navigation-sidebar/index.js +26 -10
  158. package/build-module/components/navigation-sidebar/index.js.map +1 -1
  159. package/build-module/components/navigation-sidebar/navigation-panel/index.js +41 -44
  160. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  161. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +6 -18
  162. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  163. package/build-module/components/template-details/index.js +3 -2
  164. package/build-module/components/template-details/index.js.map +1 -1
  165. package/build-module/components/template-part-converter/convert-to-template-part.js +20 -84
  166. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  167. package/build-module/components/welcome-guide/editor.js +45 -0
  168. package/build-module/components/welcome-guide/editor.js.map +1 -0
  169. package/build-module/components/welcome-guide/image.js +19 -0
  170. package/build-module/components/welcome-guide/image.js.map +1 -0
  171. package/build-module/components/welcome-guide/index.js +35 -0
  172. package/build-module/components/welcome-guide/index.js.map +1 -0
  173. package/build-module/components/welcome-guide/styles.js +69 -0
  174. package/build-module/components/welcome-guide/styles.js.map +1 -0
  175. package/build-module/index.js +28 -3
  176. package/build-module/index.js.map +1 -1
  177. package/build-module/plugins/index.js +3 -2
  178. package/build-module/plugins/index.js.map +1 -1
  179. package/build-module/plugins/welcome-guide-menu-item.js +27 -0
  180. package/build-module/plugins/welcome-guide-menu-item.js.map +1 -0
  181. package/build-module/store/actions.js +51 -25
  182. package/build-module/store/actions.js.map +1 -1
  183. package/build-module/store/defaults.js +4 -1
  184. package/build-module/store/defaults.js.map +1 -1
  185. package/build-module/store/selectors.js +21 -3
  186. package/build-module/store/selectors.js.map +1 -1
  187. package/build-module/utils/is-template-removable.js +14 -0
  188. package/build-module/utils/is-template-removable.js.map +1 -0
  189. package/build-style/style-rtl.css +468 -33
  190. package/build-style/style.css +468 -33
  191. package/package.json +10 -8
  192. package/src/components/add-new-template/index.js +30 -0
  193. package/src/components/add-new-template/new-template-part.js +81 -0
  194. package/src/components/add-new-template/new-template.js +136 -0
  195. package/src/components/add-new-template/style.scss +11 -0
  196. package/src/components/block-editor/index.js +2 -0
  197. package/src/components/create-template-part-modal/index.js +132 -0
  198. package/src/components/{template-part-converter → create-template-part-modal}/style.scss +9 -9
  199. package/src/components/editor/index.js +22 -15
  200. package/src/components/editor/style.scss +8 -0
  201. package/src/components/global-styles/color-palette-panel.js +64 -7
  202. package/src/components/global-styles/global-styles-provider.js +7 -36
  203. package/src/components/global-styles/gradients-palette-panel.js +79 -0
  204. package/src/components/global-styles/hooks.js +59 -27
  205. package/src/components/global-styles/palette.js +30 -10
  206. package/src/components/global-styles/screen-background-color.js +1 -0
  207. package/src/components/global-styles/screen-block-list.js +11 -1
  208. package/src/components/global-styles/screen-color-palette.js +30 -3
  209. package/src/components/global-styles/screen-link-color.js +1 -0
  210. package/src/components/global-styles/screen-text-color.js +1 -0
  211. package/src/components/global-styles/screen-typography-element.js +39 -0
  212. package/src/components/global-styles/screen-typography.js +84 -3
  213. package/src/components/global-styles/style.scss +33 -0
  214. package/src/components/global-styles/test/use-global-styles-output.js +3 -3
  215. package/src/components/global-styles/test/utils.js +1 -1
  216. package/src/components/global-styles/typography-panel.js +37 -7
  217. package/src/components/global-styles/ui.js +9 -0
  218. package/src/components/global-styles/use-global-styles-output.js +2 -2
  219. package/src/components/global-styles/utils.js +1 -1
  220. package/src/components/header/index.js +0 -6
  221. package/src/components/keyboard-shortcuts/index.js +32 -0
  222. package/src/components/list/actions/index.js +95 -0
  223. package/src/components/list/actions/rename-menu-item.js +134 -0
  224. package/src/components/list/added-by.js +179 -0
  225. package/src/components/list/header.js +34 -0
  226. package/src/components/list/index.js +96 -0
  227. package/src/components/list/style.scss +208 -0
  228. package/src/components/list/table.js +121 -0
  229. package/src/components/list/use-register-shortcuts.js +45 -0
  230. package/src/components/navigation-sidebar/index.js +24 -8
  231. package/src/components/navigation-sidebar/navigation-panel/index.js +57 -51
  232. package/src/components/navigation-sidebar/navigation-panel/style.scss +4 -2
  233. package/src/components/navigation-sidebar/navigation-toggle/index.js +24 -36
  234. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +2 -0
  235. package/src/components/sidebar/style.scss +2 -1
  236. package/src/components/template-details/index.js +3 -2
  237. package/src/components/template-part-converter/convert-to-template-part.js +20 -140
  238. package/src/components/welcome-guide/editor.js +63 -0
  239. package/src/components/welcome-guide/image.js +11 -0
  240. package/src/components/welcome-guide/index.js +33 -0
  241. package/src/components/welcome-guide/style.scss +37 -0
  242. package/src/components/welcome-guide/styles.js +116 -0
  243. package/src/index.js +31 -3
  244. package/src/plugins/index.js +3 -1
  245. package/src/plugins/welcome-guide-menu-item.js +35 -0
  246. package/src/store/actions.js +85 -35
  247. package/src/store/defaults.js +4 -1
  248. package/src/store/selectors.js +22 -4
  249. package/src/store/test/actions.js +0 -30
  250. package/src/store/test/selectors.js +24 -0
  251. package/src/style.scss +9 -6
  252. package/src/utils/is-template-removable.js +13 -0
  253. package/build/components/header/navigation-link/index.js +0 -87
  254. package/build/components/header/navigation-link/index.js.map +0 -1
  255. package/build-module/components/header/navigation-link/index.js +0 -74
  256. package/build-module/components/header/navigation-link/index.js.map +0 -1
  257. package/src/components/header/navigation-link/index.js +0 -71
  258. package/src/components/header/navigation-link/style.scss +0 -69
@@ -2,9 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import {
5
- get,
6
- cloneDeep,
7
- set,
8
5
  mergeWith,
9
6
  pickBy,
10
7
  isEmpty,
@@ -23,7 +20,6 @@ import { store as coreStore } from '@wordpress/core-data';
23
20
  /**
24
21
  * Internal dependencies
25
22
  */
26
- import { PRESET_METADATA } from './utils';
27
23
  import { GlobalStylesContext } from './context';
28
24
 
29
25
  function mergeTreesCustomizer( _, srcValue ) {
@@ -39,29 +35,6 @@ function mergeBaseAndUserConfigs( base, user ) {
39
35
  return mergeWith( {}, base, user, mergeTreesCustomizer );
40
36
  }
41
37
 
42
- function addUserOriginToSettings( settingsToAdd ) {
43
- const newSettings = cloneDeep( settingsToAdd );
44
- PRESET_METADATA.forEach( ( { path } ) => {
45
- const presetData = get( newSettings, path );
46
- if ( presetData ) {
47
- set( newSettings, path, {
48
- user: presetData,
49
- } );
50
- }
51
- } );
52
- return newSettings;
53
- }
54
-
55
- function removeUserOriginFromSettings( settingsToRemove ) {
56
- const newSettings = cloneDeep( settingsToRemove );
57
- PRESET_METADATA.forEach( ( { path } ) => {
58
- const presetData = get( newSettings, path );
59
- if ( presetData ) {
60
- set( newSettings, path, ( presetData ?? {} ).user );
61
- }
62
- } );
63
- return newSettings;
64
- }
65
38
  const cleanEmptyObject = ( object ) => {
66
39
  if ( ! isObject( object ) || Array.isArray( object ) ) {
67
40
  return object;
@@ -97,7 +70,7 @@ function useGlobalStylesUserConfig() {
97
70
 
98
71
  const config = useMemo( () => {
99
72
  return {
100
- settings: addUserOriginToSettings( settings ?? {} ),
73
+ settings: settings ?? {},
101
74
  styles: styles ?? {},
102
75
  };
103
76
  }, [ settings, styles ] );
@@ -111,15 +84,12 @@ function useGlobalStylesUserConfig() {
111
84
  );
112
85
  const currentConfig = {
113
86
  styles: record?.styles ?? {},
114
- settings: addUserOriginToSettings( record?.settings ?? {} ),
87
+ settings: record?.settings ?? {},
115
88
  };
116
89
  const updatedConfig = callback( currentConfig );
117
90
  editEntityRecord( 'root', 'globalStyles', globalStylesId, {
118
91
  styles: cleanEmptyObject( updatedConfig.styles ) || {},
119
- settings:
120
- cleanEmptyObject(
121
- removeUserOriginFromSettings( updatedConfig.settings )
122
- ) || {},
92
+ settings: cleanEmptyObject( updatedConfig.settings ) || {},
123
93
  } );
124
94
  },
125
95
  [ globalStylesId ]
@@ -135,7 +105,7 @@ function useGlobalStylesBaseConfig() {
135
105
  ).__experimentalGetCurrentThemeBaseGlobalStyles();
136
106
  }, [] );
137
107
 
138
- return baseConfig;
108
+ return [ !! baseConfig, baseConfig ];
139
109
  }
140
110
 
141
111
  function useGlobalStylesContext() {
@@ -144,7 +114,7 @@ function useGlobalStylesContext() {
144
114
  userConfig,
145
115
  setUserConfig,
146
116
  ] = useGlobalStylesUserConfig();
147
- const baseConfig = useGlobalStylesBaseConfig();
117
+ const [ isBaseConfigReady, baseConfig ] = useGlobalStylesBaseConfig();
148
118
  const mergedConfig = useMemo( () => {
149
119
  if ( ! baseConfig || ! userConfig ) {
150
120
  return {};
@@ -153,7 +123,7 @@ function useGlobalStylesContext() {
153
123
  }, [ userConfig, baseConfig ] );
154
124
  const context = useMemo( () => {
155
125
  return {
156
- isReady: isUserConfigReady,
126
+ isReady: isUserConfigReady && isBaseConfigReady,
157
127
  user: userConfig,
158
128
  base: baseConfig,
159
129
  merged: mergedConfig,
@@ -165,6 +135,7 @@ function useGlobalStylesContext() {
165
135
  baseConfig,
166
136
  setUserConfig,
167
137
  isUserConfigReady,
138
+ isBaseConfigReady,
168
139
  ] );
169
140
 
170
141
  return context;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalVStack as VStack,
6
+ __experimentalPaletteEdit as PaletteEdit,
7
+ } from '@wordpress/components';
8
+ import { __ } from '@wordpress/i18n';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { useSetting } from './hooks';
14
+
15
+ export default function GradientPalettePanel( { name } ) {
16
+ const [ themeGradients, setThemeGradients ] = useSetting(
17
+ 'color.gradients.theme',
18
+ name
19
+ );
20
+ const [ baseThemeGradients ] = useSetting(
21
+ 'color.gradients.theme',
22
+ name,
23
+ 'base'
24
+ );
25
+ const [ defaultGradients, setDefaultGradients ] = useSetting(
26
+ 'color.gradients.default',
27
+ name
28
+ );
29
+ const [ baseDefaultGradients ] = useSetting(
30
+ 'color.gradients.default',
31
+ name,
32
+ 'base'
33
+ );
34
+ const [ customGradients, setCustomGradients ] = useSetting(
35
+ 'color.gradients.custom',
36
+ name
37
+ );
38
+
39
+ const [ defaultPaletteEnabled ] = useSetting(
40
+ 'color.defaultGradients',
41
+ name
42
+ );
43
+ return (
44
+ <VStack
45
+ className="edit-site-global-styles-gradient-palette-panel"
46
+ spacing={ 10 }
47
+ >
48
+ { !! themeGradients && !! themeGradients.length && (
49
+ <PaletteEdit
50
+ canReset={ themeGradients !== baseThemeGradients }
51
+ canOnlyChangeValues
52
+ gradients={ themeGradients }
53
+ onChange={ setThemeGradients }
54
+ paletteLabel={ __( 'Theme' ) }
55
+ />
56
+ ) }
57
+ { !! defaultGradients &&
58
+ !! defaultGradients.length &&
59
+ !! defaultPaletteEnabled && (
60
+ <PaletteEdit
61
+ canReset={ defaultGradients !== baseDefaultGradients }
62
+ canOnlyChangeValues
63
+ gradients={ defaultGradients }
64
+ onChange={ setDefaultGradients }
65
+ paletteLabel={ __( 'Default' ) }
66
+ />
67
+ ) }
68
+ <PaletteEdit
69
+ gradients={ customGradients }
70
+ onChange={ setCustomGradients }
71
+ paletteLabel={ __( 'Custom' ) }
72
+ emptyMessage={ __(
73
+ 'Custom gradients are empty! Add some gradients to create your own palette.'
74
+ ) }
75
+ slugPrefix="custom-"
76
+ />
77
+ </VStack>
78
+ );
79
+ }
@@ -6,7 +6,7 @@ import { get, cloneDeep, set, isEqual, has } from 'lodash';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { __ } from '@wordpress/i18n';
9
+ import { _x } from '@wordpress/i18n';
10
10
  import { useContext, useCallback, useMemo } from '@wordpress/element';
11
11
  import {
12
12
  getBlockType,
@@ -49,7 +49,7 @@ export function useSetting( path, blockName, source = 'all' ) {
49
49
  setUserConfig( ( currentConfig ) => {
50
50
  const newUserConfig = cloneDeep( currentConfig );
51
51
  const pathToSet = PATHS_WITH_MERGE[ path ]
52
- ? fullPath + '.user'
52
+ ? fullPath + '.custom'
53
53
  : fullPath;
54
54
  set( newUserConfig, pathToSet, newValue );
55
55
 
@@ -65,7 +65,7 @@ export function useSetting( path, blockName, source = 'all' ) {
65
65
  const getSettingValue = ( configToUse ) => {
66
66
  const result = get( configToUse, currentPath );
67
67
  if ( PATHS_WITH_MERGE[ path ] ) {
68
- return result?.user ?? result?.theme ?? result?.core;
68
+ return result?.custom ?? result?.theme ?? result?.default;
69
69
  }
70
70
  return result;
71
71
  };
@@ -218,57 +218,89 @@ export function getSupportedGlobalStylesPanels( name ) {
218
218
  }
219
219
 
220
220
  export function useColorsPerOrigin( name ) {
221
- const [ userColors ] = useSetting( 'color.palette.user', name );
221
+ const [ customColors ] = useSetting( 'color.palette.custom', name );
222
222
  const [ themeColors ] = useSetting( 'color.palette.theme', name );
223
- const [ coreColors ] = useSetting( 'color.palette.core', name );
223
+ const [ defaultColors ] = useSetting( 'color.palette.default', name );
224
+ const [ shouldDisplayDefaultColors ] = useSetting( 'color.defaultPalette' );
225
+
224
226
  return useMemo( () => {
225
227
  const result = [];
226
- if ( coreColors && coreColors.length ) {
228
+ if ( themeColors && themeColors.length ) {
227
229
  result.push( {
228
- name: __( 'Core' ),
229
- colors: coreColors,
230
+ name: _x(
231
+ 'Theme',
232
+ 'Indicates this palette comes from the theme.'
233
+ ),
234
+ colors: themeColors,
230
235
  } );
231
236
  }
232
- if ( themeColors && themeColors.length ) {
237
+ if (
238
+ shouldDisplayDefaultColors &&
239
+ defaultColors &&
240
+ defaultColors.length
241
+ ) {
233
242
  result.push( {
234
- name: __( 'Theme' ),
235
- colors: themeColors,
243
+ name: _x(
244
+ 'Default',
245
+ 'Indicates this palette comes from WordPress.'
246
+ ),
247
+ colors: defaultColors,
236
248
  } );
237
249
  }
238
- if ( userColors && userColors.length ) {
250
+ if ( customColors && customColors.length ) {
239
251
  result.push( {
240
- name: __( 'User' ),
241
- colors: userColors,
252
+ name: _x(
253
+ 'Custom',
254
+ 'Indicates this palette is created by the user.'
255
+ ),
256
+ colors: customColors,
242
257
  } );
243
258
  }
244
259
  return result;
245
- }, [ userColors, themeColors, coreColors ] );
260
+ }, [ customColors, themeColors, defaultColors ] );
246
261
  }
247
262
 
248
263
  export function useGradientsPerOrigin( name ) {
249
- const [ userGradients ] = useSetting( 'color.gradients.user', name );
264
+ const [ customGradients ] = useSetting( 'color.gradients.custom', name );
250
265
  const [ themeGradients ] = useSetting( 'color.gradients.theme', name );
251
- const [ coreGradients ] = useSetting( 'color.gradients.core', name );
266
+ const [ defaultGradients ] = useSetting( 'color.gradients.default', name );
267
+ const [ shouldDisplayDefaultGradients ] = useSetting(
268
+ 'color.defaultGradients'
269
+ );
270
+
252
271
  return useMemo( () => {
253
272
  const result = [];
254
- if ( coreGradients && coreGradients.length ) {
273
+ if ( themeGradients && themeGradients.length ) {
255
274
  result.push( {
256
- name: __( 'Core' ),
257
- gradients: coreGradients,
275
+ name: _x(
276
+ 'Theme',
277
+ 'Indicates this palette comes from the theme.'
278
+ ),
279
+ gradients: themeGradients,
258
280
  } );
259
281
  }
260
- if ( themeGradients && themeGradients.length ) {
282
+ if (
283
+ shouldDisplayDefaultGradients &&
284
+ defaultGradients &&
285
+ defaultGradients.length
286
+ ) {
261
287
  result.push( {
262
- name: __( 'Theme' ),
263
- gradients: themeGradients,
288
+ name: _x(
289
+ 'Default',
290
+ 'Indicates this palette comes from WordPress.'
291
+ ),
292
+ gradients: defaultGradients,
264
293
  } );
265
294
  }
266
- if ( userGradients && userGradients.length ) {
295
+ if ( customGradients && customGradients.length ) {
267
296
  result.push( {
268
- name: __( 'User' ),
269
- gradients: userGradients,
297
+ name: _x(
298
+ 'Custom',
299
+ 'Indicates this palette is created by the user.'
300
+ ),
301
+ gradients: customGradients,
270
302
  } );
271
303
  }
272
304
  return result;
273
- }, [ userGradients, themeGradients, coreGradients ] );
305
+ }, [ customGradients, themeGradients, defaultGradients ] );
274
306
  }
@@ -11,6 +11,7 @@ import {
11
11
  ColorIndicator,
12
12
  } from '@wordpress/components';
13
13
  import { __, _n, sprintf } from '@wordpress/i18n';
14
+ import { useMemo } from '@wordpress/element';
14
15
 
15
16
  /**
16
17
  * Internal dependencies
@@ -22,18 +23,43 @@ import { useSetting } from './hooks';
22
23
  const EMPTY_COLORS = [];
23
24
 
24
25
  function Palette( { name } ) {
25
- const [ colorsSetting ] = useSetting( 'color.palette.user', name );
26
- const colors = colorsSetting || EMPTY_COLORS;
26
+ const [ customColors ] = useSetting( 'color.palette.custom' );
27
+ const [ themeColors ] = useSetting( 'color.palette.theme' );
28
+ const [ defaultColors ] = useSetting( 'color.palette.default' );
29
+
30
+ const [ defaultPaletteEnabled ] = useSetting(
31
+ 'color.defaultPalette',
32
+ name
33
+ );
34
+ const colors = useMemo(
35
+ () => [
36
+ ...( customColors || EMPTY_COLORS ),
37
+ ...( themeColors || EMPTY_COLORS ),
38
+ ...( defaultColors && defaultPaletteEnabled
39
+ ? defaultColors
40
+ : EMPTY_COLORS ),
41
+ ],
42
+ [ customColors, themeColors, defaultColors, defaultPaletteEnabled ]
43
+ );
44
+
27
45
  const screenPath = ! name
28
46
  ? '/colors/palette'
29
47
  : '/blocks/' + name + '/colors/palette';
48
+ const paletteButtonText =
49
+ colors.length > 0
50
+ ? sprintf(
51
+ // Translators: %d: Number of palette colors.
52
+ _n( '%d color', '%d colors', colors.length ),
53
+ colors.length
54
+ )
55
+ : __( 'Add custom colors' );
30
56
 
31
57
  return (
32
58
  <VStack spacing={ 3 }>
33
59
  <Subtitle>{ __( 'Palette' ) }</Subtitle>
34
60
  <ItemGroup isBordered isSeparated>
35
61
  <NavigationButton path={ screenPath }>
36
- <HStack>
62
+ <HStack isReversed={ colors.length === 0 }>
37
63
  <FlexBlock>
38
64
  <ZStack isLayered={ false } offset={ -8 }>
39
65
  { colors.slice( 0, 5 ).map( ( { color } ) => (
@@ -44,13 +70,7 @@ function Palette( { name } ) {
44
70
  ) ) }
45
71
  </ZStack>
46
72
  </FlexBlock>
47
- <FlexItem>
48
- { sprintf(
49
- // Translators: %d: Number of palette colors.
50
- _n( '%d color', '%d colors', colors.length ),
51
- colors.length
52
- ) }
53
- </FlexItem>
73
+ <FlexItem>{ paletteButtonText }</FlexItem>
54
74
  </HStack>
55
75
  </NavigationButton>
56
76
  </ItemGroup>
@@ -104,6 +104,7 @@ function ScreenBackgroundColor( { name } ) {
104
104
  disableCustomGradients={ ! areCustomGradientsEnabled }
105
105
  __experimentalHasMultipleOrigins
106
106
  showTitle={ false }
107
+ enableAlpha
107
108
  />
108
109
  </>
109
110
  );
@@ -3,6 +3,11 @@
3
3
  */
4
4
  import { getBlockTypes } from '@wordpress/blocks';
5
5
  import { __ } from '@wordpress/i18n';
6
+ import {
7
+ FlexItem,
8
+ __experimentalHStack as HStack,
9
+ } from '@wordpress/components';
10
+ import { BlockIcon } from '@wordpress/block-editor';
6
11
 
7
12
  /**
8
13
  * Internal dependencies
@@ -29,7 +34,12 @@ function BlockMenuItem( { block } ) {
29
34
 
30
35
  return (
31
36
  <NavigationButton path={ '/blocks/' + block.name }>
32
- { block.title }
37
+ <HStack justify="flex-start">
38
+ <FlexItem>
39
+ <BlockIcon icon={ block.icon } />
40
+ </FlexItem>
41
+ <FlexItem>{ block.title }</FlexItem>
42
+ </HStack>
33
43
  </NavigationButton>
34
44
  );
35
45
  }
@@ -2,26 +2,53 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
+ import {
6
+ __experimentalToggleGroupControl as ToggleGroupControl,
7
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption,
8
+ } from '@wordpress/components';
9
+ import { useState } from '@wordpress/element';
5
10
 
6
11
  /**
7
12
  * Internal dependencies
8
13
  */
9
14
  import ColorPalettePanel from './color-palette-panel';
15
+ import GradientPalettePanel from './gradients-palette-panel';
10
16
  import ScreenHeader from './header';
11
17
 
12
18
  function ScreenColorPalette( { name } ) {
19
+ const [ currentTab, setCurrentTab ] = useState( 'solid' );
13
20
  const parentMenu = name === undefined ? '' : '/blocks/' + name;
14
21
 
15
22
  return (
16
23
  <>
17
24
  <ScreenHeader
18
25
  back={ parentMenu + '/colors' }
19
- title={ __( 'Color Palette' ) }
26
+ title={ __( 'Palette' ) }
20
27
  description={ __(
21
- 'Color palettes are used to provide default color options for blocks and various design tools. Here you can edit the colors with their labels.'
28
+ 'Palettes are used to provide default color options for blocks and various design tools. Here you can edit the colors with their labels.'
22
29
  ) }
23
30
  />
24
- <ColorPalettePanel name={ name } />
31
+ <ToggleGroupControl
32
+ className="edit-site-screen-color-palette-toggle"
33
+ value={ currentTab }
34
+ onChange={ setCurrentTab }
35
+ label={ __( 'Select palette type' ) }
36
+ hideLabelFromVision
37
+ isBlock
38
+ >
39
+ <ToggleGroupControlOption
40
+ value="solid"
41
+ label={ __( 'Solid' ) }
42
+ />
43
+ <ToggleGroupControlOption
44
+ value="gradient"
45
+ label={ __( 'Gradient' ) }
46
+ />
47
+ </ToggleGroupControl>
48
+ { currentTab === 'solid' && <ColorPalettePanel name={ name } /> }
49
+ { currentTab === 'gradient' && (
50
+ <GradientPalettePanel name={ name } />
51
+ ) }
25
52
  </>
26
53
  );
27
54
  }
@@ -70,6 +70,7 @@ function ScreenLinkColor( { name } ) {
70
70
  disableCustomColors={ ! areCustomSolidsEnabled }
71
71
  __experimentalHasMultipleOrigins
72
72
  showTitle={ false }
73
+ enableAlpha
73
74
  />
74
75
  </>
75
76
  );
@@ -62,6 +62,7 @@ function ScreenTextColor( { name } ) {
62
62
  disableCustomColors={ ! areCustomSolidsEnabled }
63
63
  __experimentalHasMultipleOrigins
64
64
  showTitle={ false }
65
+ enableAlpha
65
66
  />
66
67
  </>
67
68
  );
@@ -0,0 +1,39 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import TypographyPanel from './typography-panel';
10
+ import ScreenHeader from './header';
11
+
12
+ const elements = {
13
+ text: {
14
+ description: __( 'Manage the fonts used on the site.' ),
15
+ title: __( 'Text' ),
16
+ },
17
+ link: {
18
+ description: __( 'Manage the fonts and typography used on the links.' ),
19
+ title: __( 'Links' ),
20
+ },
21
+ };
22
+
23
+ function ScreenTypographyElement( { name, element } ) {
24
+ const parentMenu =
25
+ name === undefined ? '/typography' : '/blocks/' + name + '/typography';
26
+
27
+ return (
28
+ <>
29
+ <ScreenHeader
30
+ back={ parentMenu }
31
+ title={ elements[ element ].title }
32
+ description={ elements[ element ].description }
33
+ />
34
+ <TypographyPanel name={ name } element={ element } />
35
+ </>
36
+ );
37
+ }
38
+
39
+ export default ScreenTypographyElement;
@@ -2,12 +2,69 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
+ import {
6
+ __experimentalItemGroup as ItemGroup,
7
+ __experimentalVStack as VStack,
8
+ __experimentalHStack as HStack,
9
+ FlexItem,
10
+ } from '@wordpress/components';
5
11
 
6
12
  /**
7
13
  * Internal dependencies
8
14
  */
9
- import TypographyPanel from './typography-panel';
10
15
  import ScreenHeader from './header';
16
+ import NavigationButton from './navigation-button';
17
+ import { useStyle } from './hooks';
18
+ import Subtitle from './subtitle';
19
+ import TypographyPanel from './typography-panel';
20
+
21
+ function Item( { name, parentMenu, element, label } ) {
22
+ const hasSupport = ! name;
23
+ const prefix =
24
+ element === 'text' || ! element ? '' : `elements.${ element }.`;
25
+ const extraStyles =
26
+ element === 'link'
27
+ ? {
28
+ textDecoration: 'underline',
29
+ }
30
+ : {};
31
+ const [ fontFamily ] = useStyle( prefix + 'typography.fontFamily', name );
32
+ const [ fontStyle ] = useStyle( prefix + 'typography.fontStyle', name );
33
+ const [ fontWeight ] = useStyle( prefix + 'typography.fontWeight', name );
34
+ const [ letterSpacing ] = useStyle(
35
+ prefix + 'typography.letterSpacing',
36
+ name
37
+ );
38
+ const [ backgroundColor ] = useStyle( prefix + 'color.background', name );
39
+ const [ gradientValue ] = useStyle( prefix + 'color.gradient', name );
40
+ const [ color ] = useStyle( prefix + 'color.text', name );
41
+
42
+ if ( ! hasSupport ) {
43
+ return null;
44
+ }
45
+
46
+ return (
47
+ <NavigationButton path={ parentMenu + '/typography/' + element }>
48
+ <HStack justify="flex-start">
49
+ <FlexItem
50
+ className="edit-site-global-styles-screen-typography__indicator"
51
+ style={ {
52
+ fontFamily: fontFamily ?? 'serif',
53
+ background: gradientValue ?? backgroundColor,
54
+ color,
55
+ fontStyle,
56
+ fontWeight,
57
+ letterSpacing,
58
+ ...extraStyles,
59
+ } }
60
+ >
61
+ { __( 'Aa' ) }
62
+ </FlexItem>
63
+ <FlexItem>{ label }</FlexItem>
64
+ </HStack>
65
+ </NavigationButton>
66
+ );
67
+ }
11
68
 
12
69
  function ScreenTypography( { name } ) {
13
70
  const parentMenu = name === undefined ? '' : '/blocks/' + name;
@@ -18,10 +75,34 @@ function ScreenTypography( { name } ) {
18
75
  back={ parentMenu ? parentMenu : '/' }
19
76
  title={ __( 'Typography' ) }
20
77
  description={ __(
21
- 'Manage the fonts used on the website and the default aspect of different global elements.'
78
+ 'Manage the typography settings for different elements.'
22
79
  ) }
23
80
  />
24
- <TypographyPanel name={ name } />
81
+
82
+ { ! name && (
83
+ <div className="edit-site-global-styles-screen-typography">
84
+ <VStack spacing={ 3 }>
85
+ <Subtitle>{ __( 'Elements' ) }</Subtitle>
86
+ <ItemGroup isBordered isSeparated>
87
+ <Item
88
+ name={ name }
89
+ parentMenu={ parentMenu }
90
+ element="text"
91
+ label={ __( 'Text' ) }
92
+ />
93
+ <Item
94
+ name={ name }
95
+ parentMenu={ parentMenu }
96
+ element="link"
97
+ label={ __( 'Links' ) }
98
+ />
99
+ </ItemGroup>
100
+ </VStack>
101
+ </div>
102
+ ) }
103
+
104
+ { /* no typogrpahy elements support yet for blocks */ }
105
+ { !! name && <TypographyPanel name={ name } element="text" /> }
25
106
  </>
26
107
  );
27
108
  }