@wordpress/edit-site 4.9.0 → 4.12.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 (199) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/add-new-template/add-custom-generic-template-modal.js +84 -0
  3. package/build/components/add-new-template/add-custom-generic-template-modal.js.map +1 -0
  4. package/build/components/add-new-template/add-custom-template-modal.js +82 -61
  5. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  6. package/build/components/add-new-template/new-template.js +94 -81
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/add-new-template/utils.js +574 -57
  9. package/build/components/add-new-template/utils.js.map +1 -1
  10. package/build/components/block-editor/index.js +1 -3
  11. package/build/components/block-editor/index.js.map +1 -1
  12. package/build/components/code-editor/index.js +17 -4
  13. package/build/components/code-editor/index.js.map +1 -1
  14. package/build/components/editor/index.js +16 -0
  15. package/build/components/editor/index.js.map +1 -1
  16. package/build/components/error-boundary/index.js +6 -0
  17. package/build/components/error-boundary/index.js.map +1 -1
  18. package/build/components/global-styles/dimensions-panel.js +191 -21
  19. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  20. package/build/components/global-styles/global-styles-provider.js +4 -2
  21. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  22. package/build/components/global-styles/hooks.js +11 -2
  23. package/build/components/global-styles/hooks.js.map +1 -1
  24. package/build/components/global-styles/screen-color-palette.js +13 -17
  25. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  26. package/build/components/global-styles/screen-colors.js +59 -7
  27. package/build/components/global-styles/screen-colors.js.map +1 -1
  28. package/build/components/global-styles/screen-heading-color.js +157 -0
  29. package/build/components/global-styles/screen-heading-color.js.map +1 -0
  30. package/build/components/global-styles/screen-link-color.js +48 -14
  31. package/build/components/global-styles/screen-link-color.js.map +1 -1
  32. package/build/components/global-styles/screen-typography-element.js +4 -0
  33. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +5 -0
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/global-styles/typography-panel.js +73 -12
  37. package/build/components/global-styles/typography-panel.js.map +1 -1
  38. package/build/components/global-styles/typography-utils.js +217 -0
  39. package/build/components/global-styles/typography-utils.js.map +1 -0
  40. package/build/components/global-styles/ui.js +11 -0
  41. package/build/components/global-styles/ui.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +298 -61
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +49 -3
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/header/index.js +22 -10
  47. package/build/components/header/index.js.map +1 -1
  48. package/build/components/header/undo-redo/redo.js +2 -1
  49. package/build/components/header/undo-redo/redo.js.map +1 -1
  50. package/build/components/keyboard-shortcut-help-modal/index.js +1 -3
  51. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  52. package/build/components/list/actions/index.js +1 -1
  53. package/build/components/list/actions/index.js.map +1 -1
  54. package/build/components/save-button/index.js +2 -3
  55. package/build/components/save-button/index.js.map +1 -1
  56. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js +2 -2
  57. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  58. package/build/components/sidebar/template-card/template-actions.js +1 -1
  59. package/build/components/sidebar/template-card/template-actions.js.map +1 -1
  60. package/build/components/template-details/edit-template-title.js +11 -3
  61. package/build/components/template-details/edit-template-title.js.map +1 -1
  62. package/build/components/template-details/index.js +2 -21
  63. package/build/components/template-details/index.js.map +1 -1
  64. package/build/components/template-details/template-areas.js +1 -1
  65. package/build/components/template-details/template-areas.js.map +1 -1
  66. package/build/components/template-part-converter/convert-to-template-part.js +4 -1
  67. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  68. package/build/hooks/index.js +2 -0
  69. package/build/hooks/index.js.map +1 -1
  70. package/build/hooks/template-part-edit.js +86 -0
  71. package/build/hooks/template-part-edit.js.map +1 -0
  72. package/build/store/selectors.js +4 -1
  73. package/build/store/selectors.js.map +1 -1
  74. package/build-module/components/add-new-template/add-custom-generic-template-modal.js +77 -0
  75. package/build-module/components/add-new-template/add-custom-generic-template-modal.js.map +1 -0
  76. package/build-module/components/add-new-template/add-custom-template-modal.js +82 -61
  77. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  78. package/build-module/components/add-new-template/new-template.js +96 -84
  79. package/build-module/components/add-new-template/new-template.js.map +1 -1
  80. package/build-module/components/add-new-template/utils.js +555 -50
  81. package/build-module/components/add-new-template/utils.js.map +1 -1
  82. package/build-module/components/block-editor/index.js +1 -2
  83. package/build-module/components/block-editor/index.js.map +1 -1
  84. package/build-module/components/code-editor/index.js +18 -5
  85. package/build-module/components/code-editor/index.js.map +1 -1
  86. package/build-module/components/editor/index.js +16 -0
  87. package/build-module/components/editor/index.js.map +1 -1
  88. package/build-module/components/error-boundary/index.js +5 -0
  89. package/build-module/components/error-boundary/index.js.map +1 -1
  90. package/build-module/components/global-styles/dimensions-panel.js +191 -22
  91. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  92. package/build-module/components/global-styles/global-styles-provider.js +4 -2
  93. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  94. package/build-module/components/global-styles/hooks.js +11 -2
  95. package/build-module/components/global-styles/hooks.js.map +1 -1
  96. package/build-module/components/global-styles/screen-color-palette.js +14 -19
  97. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  98. package/build-module/components/global-styles/screen-colors.js +59 -7
  99. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  100. package/build-module/components/global-styles/screen-heading-color.js +143 -0
  101. package/build-module/components/global-styles/screen-heading-color.js.map +1 -0
  102. package/build-module/components/global-styles/screen-link-color.js +47 -14
  103. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  104. package/build-module/components/global-styles/screen-typography-element.js +4 -0
  105. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  106. package/build-module/components/global-styles/screen-typography.js +5 -0
  107. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  108. package/build-module/components/global-styles/typography-panel.js +74 -13
  109. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  110. package/build-module/components/global-styles/typography-utils.js +204 -0
  111. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  112. package/build-module/components/global-styles/ui.js +10 -0
  113. package/build-module/components/global-styles/ui.js.map +1 -1
  114. package/build-module/components/global-styles/use-global-styles-output.js +294 -69
  115. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  116. package/build-module/components/global-styles/utils.js +47 -4
  117. package/build-module/components/global-styles/utils.js.map +1 -1
  118. package/build-module/components/header/index.js +25 -12
  119. package/build-module/components/header/index.js.map +1 -1
  120. package/build-module/components/header/undo-redo/redo.js +3 -2
  121. package/build-module/components/header/undo-redo/redo.js.map +1 -1
  122. package/build-module/components/keyboard-shortcut-help-modal/index.js +1 -2
  123. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  124. package/build-module/components/list/actions/index.js +1 -1
  125. package/build-module/components/list/actions/index.js.map +1 -1
  126. package/build-module/components/save-button/index.js +3 -4
  127. package/build-module/components/save-button/index.js.map +1 -1
  128. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js +3 -3
  129. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  130. package/build-module/components/sidebar/template-card/template-actions.js +1 -1
  131. package/build-module/components/sidebar/template-card/template-actions.js.map +1 -1
  132. package/build-module/components/template-details/edit-template-title.js +12 -3
  133. package/build-module/components/template-details/edit-template-title.js.map +1 -1
  134. package/build-module/components/template-details/index.js +3 -22
  135. package/build-module/components/template-details/index.js.map +1 -1
  136. package/build-module/components/template-details/template-areas.js +1 -1
  137. package/build-module/components/template-details/template-areas.js.map +1 -1
  138. package/build-module/components/template-part-converter/convert-to-template-part.js +3 -1
  139. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  140. package/build-module/hooks/index.js +1 -0
  141. package/build-module/hooks/index.js.map +1 -1
  142. package/build-module/hooks/template-part-edit.js +67 -0
  143. package/build-module/hooks/template-part-edit.js.map +1 -0
  144. package/build-module/store/selectors.js +5 -2
  145. package/build-module/store/selectors.js.map +1 -1
  146. package/build-style/style-rtl.css +55 -48
  147. package/build-style/style.css +55 -48
  148. package/package.json +29 -29
  149. package/src/components/add-new-template/add-custom-generic-template-modal.js +97 -0
  150. package/src/components/add-new-template/add-custom-template-modal.js +93 -68
  151. package/src/components/add-new-template/new-template.js +126 -95
  152. package/src/components/add-new-template/style.scss +41 -8
  153. package/src/components/add-new-template/utils.js +622 -80
  154. package/src/components/block-editor/index.js +0 -2
  155. package/src/components/code-editor/index.js +15 -5
  156. package/src/components/editor/index.js +11 -0
  157. package/src/components/error-boundary/index.js +5 -0
  158. package/src/components/global-styles/dimensions-panel.js +214 -24
  159. package/src/components/global-styles/global-styles-provider.js +8 -9
  160. package/src/components/global-styles/hooks.js +18 -0
  161. package/src/components/global-styles/screen-color-palette.js +25 -27
  162. package/src/components/global-styles/screen-colors.js +55 -7
  163. package/src/components/global-styles/screen-heading-color.js +201 -0
  164. package/src/components/global-styles/screen-link-color.js +65 -23
  165. package/src/components/global-styles/screen-typography-element.js +4 -0
  166. package/src/components/global-styles/screen-typography.js +6 -0
  167. package/src/components/global-styles/style.scss +14 -11
  168. package/src/components/global-styles/test/typography-utils.js +130 -0
  169. package/src/components/global-styles/test/use-global-styles-output.js +296 -2
  170. package/src/components/global-styles/typography-panel.js +85 -16
  171. package/src/components/global-styles/typography-utils.js +228 -0
  172. package/src/components/global-styles/ui.js +13 -0
  173. package/src/components/global-styles/use-global-styles-output.js +387 -89
  174. package/src/components/global-styles/utils.js +43 -2
  175. package/src/components/header/index.js +37 -13
  176. package/src/components/header/style.scss +5 -3
  177. package/src/components/header/undo-redo/redo.js +6 -2
  178. package/src/components/keyboard-shortcut-help-modal/index.js +1 -2
  179. package/src/components/keyboard-shortcut-help-modal/style.scss +0 -5
  180. package/src/components/list/actions/index.js +3 -1
  181. package/src/components/list/style.scss +0 -8
  182. package/src/components/save-button/index.js +10 -13
  183. package/src/components/sidebar/navigation-menu-sidebar/navigation-menu.js +1 -5
  184. package/src/components/sidebar/style.scss +4 -0
  185. package/src/components/sidebar/template-card/template-actions.js +3 -1
  186. package/src/components/template-details/edit-template-title.js +10 -2
  187. package/src/components/template-details/index.js +7 -22
  188. package/src/components/template-details/template-areas.js +3 -1
  189. package/src/components/template-part-converter/convert-to-template-part.js +3 -1
  190. package/src/components/test/error-boundary.js +38 -0
  191. package/src/hooks/index.js +1 -0
  192. package/src/hooks/template-part-edit.js +82 -0
  193. package/src/store/selectors.js +11 -5
  194. package/src/style.scss +0 -1
  195. package/build/components/edit-template-part-menu-button/index.js +0 -90
  196. package/build/components/edit-template-part-menu-button/index.js.map +0 -1
  197. package/build-module/components/edit-template-part-menu-button/index.js +0 -72
  198. package/build-module/components/edit-template-part-menu-button/index.js.map +0 -1
  199. package/src/components/edit-template-part-menu-button/index.js +0 -82
@@ -0,0 +1,201 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { sprintf, __ } from '@wordpress/i18n';
5
+ import {
6
+ __experimentalToggleGroupControl as ToggleGroupControl,
7
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption,
8
+ } from '@wordpress/components';
9
+ import { __experimentalColorGradientControl as ColorGradientControl } from '@wordpress/block-editor';
10
+ import { useState } from '@wordpress/element';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import ScreenHeader from './header';
16
+ import {
17
+ getSupportedGlobalStylesPanels,
18
+ useSetting,
19
+ useStyle,
20
+ useColorsPerOrigin,
21
+ useGradientsPerOrigin,
22
+ } from './hooks';
23
+
24
+ function ScreenHeadingColor( { name } ) {
25
+ const [ selectedLevel, setCurrentTab ] = useState( 'heading' );
26
+
27
+ const supports = getSupportedGlobalStylesPanels( name );
28
+ const [ solids ] = useSetting( 'color.palette', name );
29
+ const [ gradients ] = useSetting( 'color.gradients', name );
30
+ const [ areCustomSolidsEnabled ] = useSetting( 'color.custom', name );
31
+ const [ areCustomGradientsEnabled ] = useSetting(
32
+ 'color.customGradient',
33
+ name
34
+ );
35
+ const [ isTextEnabled ] = useSetting( 'color.text', name );
36
+ const [ isBackgroundEnabled ] = useSetting( 'color.background', name );
37
+
38
+ const colorsPerOrigin = useColorsPerOrigin( name );
39
+ const gradientsPerOrigin = useGradientsPerOrigin( name );
40
+
41
+ const hasTextColor =
42
+ supports.includes( 'color' ) &&
43
+ isTextEnabled &&
44
+ ( solids.length > 0 || areCustomSolidsEnabled );
45
+
46
+ const hasBackgroundColor =
47
+ supports.includes( 'backgroundColor' ) &&
48
+ isBackgroundEnabled &&
49
+ ( solids.length > 0 || areCustomSolidsEnabled );
50
+ const hasGradientColor =
51
+ supports.includes( 'background' ) &&
52
+ ( gradients.length > 0 || areCustomGradientsEnabled );
53
+
54
+ const [ color, setColor ] = useStyle(
55
+ 'elements.' + selectedLevel + '.color.text',
56
+ name
57
+ );
58
+ const [ userColor ] = useStyle(
59
+ 'elements.' + selectedLevel + '.color.text',
60
+ name,
61
+ 'user'
62
+ );
63
+
64
+ const [ backgroundColor, setBackgroundColor ] = useStyle(
65
+ 'elements.' + selectedLevel + '.color.background',
66
+ name
67
+ );
68
+ const [ userBackgroundColor ] = useStyle(
69
+ 'elements.' + selectedLevel + '.color.background',
70
+ name,
71
+ 'user'
72
+ );
73
+ const [ gradient, setGradient ] = useStyle(
74
+ 'elements.' + selectedLevel + '.color.gradient',
75
+ name
76
+ );
77
+ const [ userGradient ] = useStyle(
78
+ 'elements.' + selectedLevel + '.color.gradient',
79
+ name,
80
+ 'user'
81
+ );
82
+
83
+ if ( ! hasTextColor && ! hasBackgroundColor && ! hasGradientColor ) {
84
+ return null;
85
+ }
86
+
87
+ let backgroundSettings = {};
88
+ if ( hasBackgroundColor ) {
89
+ backgroundSettings = {
90
+ colorValue: backgroundColor,
91
+ onColorChange: setBackgroundColor,
92
+ };
93
+ if ( backgroundColor ) {
94
+ backgroundSettings.clearable =
95
+ backgroundColor === userBackgroundColor;
96
+ }
97
+ }
98
+
99
+ let gradientSettings = {};
100
+ if ( hasGradientColor ) {
101
+ gradientSettings = {
102
+ gradientValue: gradient,
103
+ onGradientChange: setGradient,
104
+ };
105
+ if ( gradient ) {
106
+ gradientSettings.clearable = gradient === userGradient;
107
+ }
108
+ }
109
+
110
+ const controlProps = {
111
+ ...backgroundSettings,
112
+ ...gradientSettings,
113
+ };
114
+
115
+ return (
116
+ <>
117
+ <ScreenHeader
118
+ title={ __( 'Headings' ) }
119
+ description={ __(
120
+ 'Set the default color used for headings across the site.'
121
+ ) }
122
+ />
123
+ <div className="edit-site-global-styles-screen-heading-color">
124
+ <h4>{ __( 'Select heading level' ) }</h4>
125
+
126
+ <ToggleGroupControl
127
+ label={ __( 'Select heading level' ) }
128
+ hideLabelFromVision={ true }
129
+ value={ selectedLevel }
130
+ onChange={ setCurrentTab }
131
+ isBlock
132
+ >
133
+ <ToggleGroupControlOption
134
+ value="heading"
135
+ /* translators: 'All' refers to selecting all heading levels
136
+ and applying the same style to h1-h6. */
137
+ label={ __( 'All' ) }
138
+ />
139
+ <ToggleGroupControlOption value="h1" label={ __( 'H1' ) } />
140
+ <ToggleGroupControlOption value="h2" label={ __( 'H2' ) } />
141
+ <ToggleGroupControlOption value="h3" label={ __( 'H3' ) } />
142
+ <ToggleGroupControlOption value="h4" label={ __( 'H4' ) } />
143
+ <ToggleGroupControlOption value="h5" label={ __( 'H5' ) } />
144
+ <ToggleGroupControlOption value="h6" label={ __( 'H6' ) } />
145
+ </ToggleGroupControl>
146
+ </div>
147
+ { hasTextColor && (
148
+ <div className="edit-site-global-styles-screen-heading-color">
149
+ <h4>
150
+ { selectedLevel === 'heading'
151
+ ? __( 'Text color for all heading levels' )
152
+ : sprintf(
153
+ /* translators: %s: heading level (h1-h6) */
154
+ __( 'Text color for %s' ),
155
+ selectedLevel.toUpperCase()
156
+ ) }
157
+ </h4>
158
+ <ColorGradientControl
159
+ className="edit-site-screen-heading-text-color__control"
160
+ colors={ colorsPerOrigin }
161
+ disableCustomColors={ ! areCustomSolidsEnabled }
162
+ __experimentalHasMultipleOrigins
163
+ showTitle={ false }
164
+ enableAlpha
165
+ __experimentalIsRenderedInSidebar
166
+ colorValue={ color }
167
+ onColorChange={ setColor }
168
+ clearable={ color === userColor }
169
+ />
170
+ </div>
171
+ ) }
172
+ { hasBackgroundColor && (
173
+ <div className="edit-site-global-styles-screen-heading-color">
174
+ <h4>
175
+ { selectedLevel === 'heading'
176
+ ? __( 'Background color for all heading levels' )
177
+ : sprintf(
178
+ /* translators: %s: heading level (h1-h6) */
179
+ __( 'Background color for %s' ),
180
+ selectedLevel.toUpperCase()
181
+ ) }
182
+ </h4>
183
+ <ColorGradientControl
184
+ className="edit-site-screen-heading-background-color__control"
185
+ colors={ colorsPerOrigin }
186
+ gradients={ gradientsPerOrigin }
187
+ disableCustomColors={ ! areCustomSolidsEnabled }
188
+ disableCustomGradients={ ! areCustomGradientsEnabled }
189
+ __experimentalHasMultipleOrigins
190
+ showTitle={ false }
191
+ enableAlpha
192
+ __experimentalIsRenderedInSidebar
193
+ { ...controlProps }
194
+ />
195
+ </div>
196
+ ) }
197
+ </>
198
+ );
199
+ }
200
+
201
+ export default ScreenHeadingColor;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { __experimentalColorGradientControl as ColorGradientControl } from '@wordpress/block-editor';
6
-
6
+ import { TabPanel } from '@wordpress/components';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
@@ -29,40 +29,82 @@ function ScreenLinkColor( { name } ) {
29
29
  isLinkEnabled &&
30
30
  ( solids.length > 0 || areCustomSolidsEnabled );
31
31
 
32
- const [ linkColor, setLinkColor ] = useStyle(
33
- 'elements.link.color.text',
34
- name
35
- );
36
- const [ userLinkColor ] = useStyle(
37
- 'elements.link.color.text',
38
- name,
39
- 'user'
40
- );
32
+ const pseudoStates = {
33
+ default: {
34
+ label: __( 'Default' ),
35
+ value: useStyle( 'elements.link.color.text', name )[ 0 ],
36
+ handler: useStyle( 'elements.link.color.text', name )[ 1 ],
37
+ userValue: useStyle(
38
+ 'elements.link.color.text',
39
+ name,
40
+ 'user'
41
+ )[ 0 ],
42
+ },
43
+ hover: {
44
+ label: __( 'Hover' ),
45
+ value: useStyle( 'elements.link.:hover.color.text', name )[ 0 ],
46
+ handler: useStyle( 'elements.link.:hover.color.text', name )[ 1 ],
47
+ userValue: useStyle(
48
+ 'elements.link.:hover.color.text',
49
+ name,
50
+ 'user'
51
+ )[ 0 ],
52
+ },
53
+ };
41
54
 
42
55
  if ( ! hasLinkColor ) {
43
56
  return null;
44
57
  }
45
58
 
59
+ const tabs = Object.entries( pseudoStates ).map(
60
+ ( [ selector, config ] ) => {
61
+ return {
62
+ name: selector,
63
+ title: config.label,
64
+ className: `color-text-${ selector }`,
65
+ };
66
+ }
67
+ );
68
+
46
69
  return (
47
70
  <>
48
71
  <ScreenHeader
49
72
  title={ __( 'Links' ) }
50
73
  description={ __(
51
- 'Set the default color used for links across the site.'
74
+ 'Set the colors used for links across the site.'
52
75
  ) }
53
76
  />
54
- <ColorGradientControl
55
- className="edit-site-screen-link-color__control"
56
- colors={ colorsPerOrigin }
57
- disableCustomColors={ ! areCustomSolidsEnabled }
58
- __experimentalHasMultipleOrigins
59
- showTitle={ false }
60
- enableAlpha
61
- __experimentalIsRenderedInSidebar
62
- colorValue={ linkColor }
63
- onColorChange={ setLinkColor }
64
- clearable={ linkColor === userLinkColor }
65
- />
77
+
78
+ <TabPanel tabs={ tabs }>
79
+ { ( tab ) => {
80
+ const pseudoSelectorConfig =
81
+ pseudoStates[ tab.name ] ?? null;
82
+
83
+ if ( ! pseudoSelectorConfig ) {
84
+ return null;
85
+ }
86
+
87
+ return (
88
+ <>
89
+ <ColorGradientControl
90
+ className="edit-site-screen-link-color__control"
91
+ colors={ colorsPerOrigin }
92
+ disableCustomColors={ ! areCustomSolidsEnabled }
93
+ __experimentalHasMultipleOrigins
94
+ showTitle={ false }
95
+ enableAlpha
96
+ __experimentalIsRenderedInSidebar
97
+ colorValue={ pseudoSelectorConfig.value }
98
+ onColorChange={ pseudoSelectorConfig.handler }
99
+ clearable={
100
+ pseudoSelectorConfig.value ===
101
+ pseudoSelectorConfig.userValue
102
+ }
103
+ />
104
+ </>
105
+ );
106
+ } }
107
+ </TabPanel>
66
108
  </>
67
109
  );
68
110
  }
@@ -18,6 +18,10 @@ const elements = {
18
18
  description: __( 'Manage the fonts and typography used on the links.' ),
19
19
  title: __( 'Links' ),
20
20
  },
21
+ heading: {
22
+ description: __( 'Manage the fonts and typography used on headings.' ),
23
+ title: __( 'Headings' ),
24
+ },
21
25
  button: {
22
26
  description: __( 'Manage the fonts and typography used on buttons.' ),
23
27
  title: __( 'Buttons' ),
@@ -104,6 +104,12 @@ function ScreenTypography( { name } ) {
104
104
  element="link"
105
105
  label={ __( 'Links' ) }
106
106
  />
107
+ <Item
108
+ name={ name }
109
+ parentMenu={ parentMenu }
110
+ element="heading"
111
+ label={ __( 'Headings' ) }
112
+ />
107
113
  <Item
108
114
  name={ name }
109
115
  parentMenu={ parentMenu }
@@ -21,6 +21,11 @@
21
21
  border-radius: $radius-block-ui;
22
22
  }
23
23
 
24
+ .edit-site-typography-panel__half-width-control {
25
+ width: calc((100% - #{$grid-unit-30}) / 2);
26
+ }
27
+
28
+ .edit-site-global-styles-screen-heading-color,
24
29
  .edit-site-global-styles-screen-typography {
25
30
  margin: $grid-unit-20;
26
31
  }
@@ -41,6 +46,7 @@
41
46
  .component-color-indicator {
42
47
  // Show a diagonal line (crossed out) for empty swatches.
43
48
  background: linear-gradient(-45deg, transparent 48%, $gray-300 48%, $gray-300 52%, transparent 52%);
49
+ flex-shrink: 0;
44
50
  }
45
51
  }
46
52
 
@@ -66,19 +72,9 @@
66
72
  margin: 0;
67
73
  }
68
74
 
69
- .edit-site-screen-color-palette-toggle.edit-site-screen-color-palette-toggle {
70
- margin-right: $grid-unit-20;
71
- margin-left: $grid-unit-20;
72
- width: unset;
73
- .components-toggle-group-control {
74
- min-height: $grid-unit-40;
75
- }
76
- }
77
-
78
75
  .edit-site-screen-text-color__control,
79
76
  .edit-site-screen-link-color__control,
80
- .edit-site-screen-button-color__control,
81
- .edit-site-screen-background-color__control {
77
+ .edit-site-screen-button-color__control {
82
78
  padding: $grid-unit-20;
83
79
  }
84
80
 
@@ -111,4 +107,11 @@
111
107
  .edit-site-global-styles__color-indicator-wrapper {
112
108
  // Match the height of the rest of the icons (24px).
113
109
  height: $grid-unit * 3;
110
+ flex-shrink: 0;
111
+ }
112
+
113
+ .edit-site-global-styles__color-label {
114
+ white-space: nowrap;
115
+ overflow: hidden;
116
+ text-overflow: ellipsis;
114
117
  }
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { getTypographyFontSizeValue } from '../typography-utils';
5
+
6
+ describe( 'typography utils', () => {
7
+ describe( 'getTypographyFontSizeValue', () => {
8
+ it( 'should return the expected values', () => {
9
+ [
10
+ // Default return non-fluid value.
11
+ {
12
+ preset: {
13
+ size: '28px',
14
+ },
15
+ typographySettings: undefined,
16
+ expected: '28px',
17
+ },
18
+ // Should return non-fluid value when fluid is `false`.
19
+ {
20
+ preset: {
21
+ size: '28px',
22
+ fluid: false,
23
+ },
24
+ typographySettings: {
25
+ fluid: true,
26
+ },
27
+ expected: '28px',
28
+ },
29
+ // Should return fluid value.
30
+ {
31
+ preset: {
32
+ size: '1.75rem',
33
+ },
34
+ typographySettings: {
35
+ fluid: true,
36
+ },
37
+ expected:
38
+ 'clamp(1.3125rem, 1.3125rem + ((1vw - 0.48rem) * 2.524), 2.625rem)',
39
+ },
40
+ // Should return default fluid values with empty fluid array.
41
+ {
42
+ preset: {
43
+ size: '28px',
44
+ fluid: [],
45
+ },
46
+ typographySettings: {
47
+ fluid: true,
48
+ },
49
+ expected:
50
+ 'clamp(21px, 1.3125rem + ((1vw - 7.68px) * 2.524), 42px)',
51
+ },
52
+
53
+ // Should return default fluid values with null values.
54
+ {
55
+ preset: {
56
+ size: '28px',
57
+ fluid: null,
58
+ },
59
+ typographySettings: {
60
+ fluid: true,
61
+ },
62
+ expected:
63
+ 'clamp(21px, 1.3125rem + ((1vw - 7.68px) * 2.524), 42px)',
64
+ },
65
+
66
+ // Should return size with invalid fluid units.
67
+ {
68
+ preset: {
69
+ size: '10em',
70
+ fluid: {
71
+ min: '20vw',
72
+ max: '50%',
73
+ },
74
+ },
75
+ typographySettings: {
76
+ fluid: true,
77
+ },
78
+ expected: '10em',
79
+ },
80
+ // Should return fluid clamp value.
81
+ {
82
+ preset: {
83
+ size: '28px',
84
+ fluid: {
85
+ min: '20px',
86
+ max: '50rem',
87
+ },
88
+ },
89
+ typographySettings: {
90
+ fluid: true,
91
+ },
92
+ expected:
93
+ 'clamp(20px, 1.25rem + ((1vw - 7.68px) * 93.75), 50rem)',
94
+ },
95
+ // Should return clamp value with default fluid max value.
96
+ {
97
+ preset: {
98
+ size: '28px',
99
+ fluid: {
100
+ min: '2.6rem',
101
+ },
102
+ },
103
+ typographySettings: {
104
+ fluid: true,
105
+ },
106
+ expected:
107
+ 'clamp(2.6rem, 2.6rem + ((1vw - 0.48rem) * 0.048), 42px)',
108
+ },
109
+ // Should return clamp value with default fluid min value.
110
+ {
111
+ preset: {
112
+ size: '28px',
113
+ fluid: {
114
+ max: '80px',
115
+ },
116
+ },
117
+ typographySettings: {
118
+ fluid: true,
119
+ },
120
+ expected:
121
+ 'clamp(21px, 1.3125rem + ((1vw - 7.68px) * 7.091), 80px)',
122
+ },
123
+ ].forEach( ( { preset, typographySettings, expected } ) => {
124
+ expect(
125
+ getTypographyFontSizeValue( preset, typographySettings )
126
+ ).toBe( expected );
127
+ } );
128
+ } );
129
+ } );
130
+ } );