@wordpress/global-styles-ui 1.1.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 (701) hide show
  1. package/LICENSE.md +788 -0
  2. package/README.md +48 -0
  3. package/build/background-panel.js +62 -0
  4. package/build/background-panel.js.map +7 -0
  5. package/build/block-preview-panel.js +90 -0
  6. package/build/block-preview-panel.js.map +7 -0
  7. package/build/color-indicator-wrapper.js +55 -0
  8. package/build/color-indicator-wrapper.js.map +7 -0
  9. package/build/color-palette-panel.js +123 -0
  10. package/build/color-palette-panel.js.map +7 -0
  11. package/build/color-preview.js +94 -0
  12. package/build/color-preview.js.map +7 -0
  13. package/build/color-variations.js +41 -0
  14. package/build/color-variations.js.map +7 -0
  15. package/build/confirm-reset-shadow-dialog.js +55 -0
  16. package/build/confirm-reset-shadow-dialog.js.map +7 -0
  17. package/build/context.js +37 -0
  18. package/build/context.js.map +7 -0
  19. package/build/dimensions-panel.js +89 -0
  20. package/build/dimensions-panel.js.map +7 -0
  21. package/build/font-families.js +114 -0
  22. package/build/font-families.js.map +7 -0
  23. package/build/font-family-item.js +48 -0
  24. package/build/font-family-item.js.map +7 -0
  25. package/build/font-library-modal/collection-font-variant.js +75 -0
  26. package/build/font-library-modal/collection-font-variant.js.map +7 -0
  27. package/build/font-library-modal/context.js +386 -0
  28. package/build/font-library-modal/context.js.map +7 -0
  29. package/build/font-library-modal/font-card.js +81 -0
  30. package/build/font-library-modal/font-card.js.map +7 -0
  31. package/build/font-library-modal/font-collection.js +510 -0
  32. package/build/font-library-modal/font-collection.js.map +7 -0
  33. package/build/font-library-modal/font-demo.js +111 -0
  34. package/build/font-library-modal/font-demo.js.map +7 -0
  35. package/build/font-library-modal/google-fonts-confirm-dialog.js +58 -0
  36. package/build/font-library-modal/google-fonts-confirm-dialog.js.map +7 -0
  37. package/build/font-library-modal/index.js +110 -0
  38. package/build/font-library-modal/index.js.map +7 -0
  39. package/build/font-library-modal/installed-fonts.js +453 -0
  40. package/build/font-library-modal/installed-fonts.js.map +7 -0
  41. package/build/font-library-modal/lib/inflate.js +2628 -0
  42. package/build/font-library-modal/lib/inflate.js.map +7 -0
  43. package/build/font-library-modal/lib/lib-font.browser.d.js +33 -0
  44. package/build/font-library-modal/lib/lib-font.browser.d.js.map +7 -0
  45. package/build/font-library-modal/lib/lib-font.browser.js +3788 -0
  46. package/build/font-library-modal/lib/lib-font.browser.js.map +7 -0
  47. package/build/font-library-modal/lib/unbrotli.js +3678 -0
  48. package/build/font-library-modal/lib/unbrotli.js.map +7 -0
  49. package/build/font-library-modal/library-font-details.js +63 -0
  50. package/build/font-library-modal/library-font-details.js.map +7 -0
  51. package/build/font-library-modal/library-font-variant.js +81 -0
  52. package/build/font-library-modal/library-font-variant.js.map +7 -0
  53. package/build/font-library-modal/resolvers.js +115 -0
  54. package/build/font-library-modal/resolvers.js.map +7 -0
  55. package/build/font-library-modal/types.js +17 -0
  56. package/build/font-library-modal/types.js.map +7 -0
  57. package/build/font-library-modal/upload-fonts.js +207 -0
  58. package/build/font-library-modal/upload-fonts.js.map +7 -0
  59. package/build/font-library-modal/utils/constants.js +49 -0
  60. package/build/font-library-modal/utils/constants.js.map +7 -0
  61. package/build/font-library-modal/utils/filter-fonts.js +39 -0
  62. package/build/font-library-modal/utils/filter-fonts.js.map +7 -0
  63. package/build/font-library-modal/utils/fonts-outline.js +51 -0
  64. package/build/font-library-modal/utils/fonts-outline.js.map +7 -0
  65. package/build/font-library-modal/utils/index.js +274 -0
  66. package/build/font-library-modal/utils/index.js.map +7 -0
  67. package/build/font-library-modal/utils/make-families-from-faces.js +45 -0
  68. package/build/font-library-modal/utils/make-families-from-faces.js.map +7 -0
  69. package/build/font-library-modal/utils/preview-styles.js +119 -0
  70. package/build/font-library-modal/utils/preview-styles.js.map +7 -0
  71. package/build/font-library-modal/utils/set-immutably.js +40 -0
  72. package/build/font-library-modal/utils/set-immutably.js.map +7 -0
  73. package/build/font-library-modal/utils/sort-font-faces.js +59 -0
  74. package/build/font-library-modal/utils/sort-font-faces.js.map +7 -0
  75. package/build/font-library-modal/utils/toggleFont.js +67 -0
  76. package/build/font-library-modal/utils/toggleFont.js.map +7 -0
  77. package/build/font-sizes/confirm-delete-font-size-dialog.js +60 -0
  78. package/build/font-sizes/confirm-delete-font-size-dialog.js.map +7 -0
  79. package/build/font-sizes/confirm-reset-font-sizes-dialog.js +55 -0
  80. package/build/font-sizes/confirm-reset-font-sizes-dialog.js.map +7 -0
  81. package/build/font-sizes/font-size-preview.js +50 -0
  82. package/build/font-sizes/font-size-preview.js.map +7 -0
  83. package/build/font-sizes/font-size.js +261 -0
  84. package/build/font-sizes/font-size.js.map +7 -0
  85. package/build/font-sizes/font-sizes-count.js +40 -0
  86. package/build/font-sizes/font-sizes-count.js.map +7 -0
  87. package/build/font-sizes/font-sizes.js +215 -0
  88. package/build/font-sizes/font-sizes.js.map +7 -0
  89. package/build/font-sizes/rename-font-size-dialog.js +96 -0
  90. package/build/font-sizes/rename-font-size-dialog.js.map +7 -0
  91. package/build/global-styles-ui.js +213 -0
  92. package/build/global-styles-ui.js.map +7 -0
  93. package/build/gradients-palette-panel.js +133 -0
  94. package/build/gradients-palette-panel.js.map +7 -0
  95. package/build/highlighted-colors.js +57 -0
  96. package/build/highlighted-colors.js.map +7 -0
  97. package/build/hooks.js +176 -0
  98. package/build/hooks.js.map +7 -0
  99. package/build/icon-with-current-color.js +56 -0
  100. package/build/icon-with-current-color.js.map +7 -0
  101. package/build/index.js +51 -0
  102. package/build/index.js.map +7 -0
  103. package/build/lock-unlock.js +35 -0
  104. package/build/lock-unlock.js.map +7 -0
  105. package/build/navigation-button.js +52 -0
  106. package/build/navigation-button.js.map +7 -0
  107. package/build/pagination/index.js +133 -0
  108. package/build/pagination/index.js.map +7 -0
  109. package/build/palette.js +93 -0
  110. package/build/palette.js.map +7 -0
  111. package/build/preset-colors.js +40 -0
  112. package/build/preset-colors.js.map +7 -0
  113. package/build/preview-colors.js +86 -0
  114. package/build/preview-colors.js.map +7 -0
  115. package/build/preview-hooks.js +60 -0
  116. package/build/preview-hooks.js.map +7 -0
  117. package/build/preview-styles.js +219 -0
  118. package/build/preview-styles.js.map +7 -0
  119. package/build/preview-typography.js +72 -0
  120. package/build/preview-typography.js.map +7 -0
  121. package/build/preview-wrapper.js +102 -0
  122. package/build/preview-wrapper.js.map +7 -0
  123. package/build/provider.js +54 -0
  124. package/build/provider.js.map +7 -0
  125. package/build/root-menu.js +72 -0
  126. package/build/root-menu.js.map +7 -0
  127. package/build/screen-background.js +58 -0
  128. package/build/screen-background.js.map +7 -0
  129. package/build/screen-block-list.js +160 -0
  130. package/build/screen-block-list.js.map +7 -0
  131. package/build/screen-block.js +316 -0
  132. package/build/screen-block.js.map +7 -0
  133. package/build/screen-color-palette.js +64 -0
  134. package/build/screen-color-palette.js.map +7 -0
  135. package/build/screen-colors.js +85 -0
  136. package/build/screen-colors.js.map +7 -0
  137. package/build/screen-css.js +68 -0
  138. package/build/screen-css.js.map +7 -0
  139. package/build/screen-header.js +61 -0
  140. package/build/screen-header.js.map +7 -0
  141. package/build/screen-layout.js +54 -0
  142. package/build/screen-layout.js.map +7 -0
  143. package/build/screen-revisions/index.js +147 -0
  144. package/build/screen-revisions/index.js.map +7 -0
  145. package/build/screen-revisions/revisions-buttons.js +198 -0
  146. package/build/screen-revisions/revisions-buttons.js.map +7 -0
  147. package/build/screen-revisions/types.js +17 -0
  148. package/build/screen-revisions/types.js.map +7 -0
  149. package/build/screen-revisions/use-global-styles-revisions.js +163 -0
  150. package/build/screen-revisions/use-global-styles-revisions.js.map +7 -0
  151. package/build/screen-root.js +134 -0
  152. package/build/screen-root.js.map +7 -0
  153. package/build/screen-shadows.js +49 -0
  154. package/build/screen-shadows.js.map +7 -0
  155. package/build/screen-style-variations.js +52 -0
  156. package/build/screen-style-variations.js.map +7 -0
  157. package/build/screen-typography-element.js +167 -0
  158. package/build/screen-typography-element.js.map +7 -0
  159. package/build/screen-typography.js +65 -0
  160. package/build/screen-typography.js.map +7 -0
  161. package/build/shadow-utils.js +125 -0
  162. package/build/shadow-utils.js.map +7 -0
  163. package/build/shadows-edit-panel.js +503 -0
  164. package/build/shadows-edit-panel.js.map +7 -0
  165. package/build/shadows-panel.js +203 -0
  166. package/build/shadows-panel.js.map +7 -0
  167. package/build/size-control/index.js +86 -0
  168. package/build/size-control/index.js.map +7 -0
  169. package/build/style-variations-container.js +130 -0
  170. package/build/style-variations-container.js.map +7 -0
  171. package/build/style-variations-content.js +52 -0
  172. package/build/style-variations-content.js.map +7 -0
  173. package/build/style-variations.js +41 -0
  174. package/build/style-variations.js.map +7 -0
  175. package/build/subtitle.js +33 -0
  176. package/build/subtitle.js.map +7 -0
  177. package/build/typography-elements.js +117 -0
  178. package/build/typography-elements.js.map +7 -0
  179. package/build/typography-example.js +79 -0
  180. package/build/typography-example.js.map +7 -0
  181. package/build/typography-panel.js +64 -0
  182. package/build/typography-panel.js.map +7 -0
  183. package/build/typography-preview.js +70 -0
  184. package/build/typography-preview.js.map +7 -0
  185. package/build/typography-variations.js +41 -0
  186. package/build/typography-variations.js.map +7 -0
  187. package/build/utils.js +210 -0
  188. package/build/utils.js.map +7 -0
  189. package/build/variations/variation.js +116 -0
  190. package/build/variations/variation.js.map +7 -0
  191. package/build/variations/variations-color.js +64 -0
  192. package/build/variations/variations-color.js.map +7 -0
  193. package/build/variations/variations-panel.js +69 -0
  194. package/build/variations/variations-panel.js.map +7 -0
  195. package/build/variations/variations-typography.js +80 -0
  196. package/build/variations/variations-typography.js.map +7 -0
  197. package/build/with-global-styles-provider.js +48 -0
  198. package/build/with-global-styles-provider.js.map +7 -0
  199. package/build-module/background-panel.js +38 -0
  200. package/build-module/background-panel.js.map +7 -0
  201. package/build-module/block-preview-panel.js +70 -0
  202. package/build-module/block-preview-panel.js.map +7 -0
  203. package/build-module/color-indicator-wrapper.js +25 -0
  204. package/build-module/color-indicator-wrapper.js.map +7 -0
  205. package/build-module/color-palette-panel.js +97 -0
  206. package/build-module/color-palette-panel.js.map +7 -0
  207. package/build-module/color-preview.js +70 -0
  208. package/build-module/color-preview.js.map +7 -0
  209. package/build-module/color-variations.js +7 -0
  210. package/build-module/color-variations.js.map +7 -0
  211. package/build-module/confirm-reset-shadow-dialog.js +35 -0
  212. package/build-module/confirm-reset-shadow-dialog.js.map +7 -0
  213. package/build-module/context.js +13 -0
  214. package/build-module/context.js.map +7 -0
  215. package/build-module/dimensions-panel.js +69 -0
  216. package/build-module/dimensions-panel.js.map +7 -0
  217. package/build-module/font-families.js +92 -0
  218. package/build-module/font-families.js.map +7 -0
  219. package/build-module/font-family-item.js +32 -0
  220. package/build-module/font-family-item.js.map +7 -0
  221. package/build-module/font-library-modal/collection-font-variant.js +45 -0
  222. package/build-module/font-library-modal/collection-font-variant.js.map +7 -0
  223. package/build-module/font-library-modal/context.js +382 -0
  224. package/build-module/font-library-modal/context.js.map +7 -0
  225. package/build-module/font-library-modal/font-card.js +57 -0
  226. package/build-module/font-library-modal/font-card.js.map +7 -0
  227. package/build-module/font-library-modal/font-collection.js +510 -0
  228. package/build-module/font-library-modal/font-collection.js.map +7 -0
  229. package/build-module/font-library-modal/font-demo.js +94 -0
  230. package/build-module/font-library-modal/font-demo.js.map +7 -0
  231. package/build-module/font-library-modal/google-fonts-confirm-dialog.js +45 -0
  232. package/build-module/font-library-modal/google-fonts-confirm-dialog.js.map +7 -0
  233. package/build-module/font-library-modal/index.js +83 -0
  234. package/build-module/font-library-modal/index.js.map +7 -0
  235. package/build-module/font-library-modal/installed-fonts.js +442 -0
  236. package/build-module/font-library-modal/installed-fonts.js.map +7 -0
  237. package/build-module/font-library-modal/lib/inflate.js +2636 -0
  238. package/build-module/font-library-modal/lib/inflate.js.map +7 -0
  239. package/build-module/font-library-modal/lib/lib-font.browser.d.js +9 -0
  240. package/build-module/font-library-modal/lib/lib-font.browser.d.js.map +7 -0
  241. package/build-module/font-library-modal/lib/lib-font.browser.js +3754 -0
  242. package/build-module/font-library-modal/lib/lib-font.browser.js.map +7 -0
  243. package/build-module/font-library-modal/lib/unbrotli.js +3686 -0
  244. package/build-module/font-library-modal/lib/unbrotli.js.map +7 -0
  245. package/build-module/font-library-modal/library-font-details.js +36 -0
  246. package/build-module/font-library-modal/library-font-details.js.map +7 -0
  247. package/build-module/font-library-modal/library-font-variant.js +51 -0
  248. package/build-module/font-library-modal/library-font-variant.js.map +7 -0
  249. package/build-module/font-library-modal/resolvers.js +76 -0
  250. package/build-module/font-library-modal/resolvers.js.map +7 -0
  251. package/build-module/font-library-modal/types.js +1 -0
  252. package/build-module/font-library-modal/types.js.map +7 -0
  253. package/build-module/font-library-modal/upload-fonts.js +187 -0
  254. package/build-module/font-library-modal/upload-fonts.js.map +7 -0
  255. package/build-module/font-library-modal/utils/constants.js +23 -0
  256. package/build-module/font-library-modal/utils/constants.js.map +7 -0
  257. package/build-module/font-library-modal/utils/filter-fonts.js +19 -0
  258. package/build-module/font-library-modal/utils/filter-fonts.js.map +7 -0
  259. package/build-module/font-library-modal/utils/fonts-outline.js +26 -0
  260. package/build-module/font-library-modal/utils/fonts-outline.js.map +7 -0
  261. package/build-module/font-library-modal/utils/index.js +238 -0
  262. package/build-module/font-library-modal/utils/index.js.map +7 -0
  263. package/build-module/font-library-modal/utils/make-families-from-faces.js +25 -0
  264. package/build-module/font-library-modal/utils/make-families-from-faces.js.map +7 -0
  265. package/build-module/font-library-modal/utils/preview-styles.js +92 -0
  266. package/build-module/font-library-modal/utils/preview-styles.js.map +7 -0
  267. package/build-module/font-library-modal/utils/set-immutably.js +16 -0
  268. package/build-module/font-library-modal/utils/set-immutably.js.map +7 -0
  269. package/build-module/font-library-modal/utils/sort-font-faces.js +35 -0
  270. package/build-module/font-library-modal/utils/sort-font-faces.js.map +7 -0
  271. package/build-module/font-library-modal/utils/toggleFont.js +43 -0
  272. package/build-module/font-library-modal/utils/toggleFont.js.map +7 -0
  273. package/build-module/font-sizes/confirm-delete-font-size-dialog.js +40 -0
  274. package/build-module/font-sizes/confirm-delete-font-size-dialog.js.map +7 -0
  275. package/build-module/font-sizes/confirm-reset-font-sizes-dialog.js +35 -0
  276. package/build-module/font-sizes/confirm-reset-font-sizes-dialog.js.map +7 -0
  277. package/build-module/font-sizes/font-size-preview.js +30 -0
  278. package/build-module/font-sizes/font-size-preview.js.map +7 -0
  279. package/build-module/font-sizes/font-size.js +241 -0
  280. package/build-module/font-sizes/font-size.js.map +7 -0
  281. package/build-module/font-sizes/font-sizes-count.js +25 -0
  282. package/build-module/font-sizes/font-sizes-count.js.map +7 -0
  283. package/build-module/font-sizes/font-sizes.js +200 -0
  284. package/build-module/font-sizes/font-sizes.js.map +7 -0
  285. package/build-module/font-sizes/rename-font-size-dialog.js +82 -0
  286. package/build-module/font-sizes/rename-font-size-dialog.js.map +7 -0
  287. package/build-module/global-styles-ui.js +182 -0
  288. package/build-module/global-styles-ui.js.map +7 -0
  289. package/build-module/gradients-palette-panel.js +118 -0
  290. package/build-module/gradients-palette-panel.js.map +7 -0
  291. package/build-module/highlighted-colors.js +37 -0
  292. package/build-module/highlighted-colors.js.map +7 -0
  293. package/build-module/hooks.js +144 -0
  294. package/build-module/hooks.js.map +7 -0
  295. package/build-module/icon-with-current-color.js +22 -0
  296. package/build-module/icon-with-current-color.js.map +7 -0
  297. package/build-module/index.js +13 -0
  298. package/build-module/index.js.map +7 -0
  299. package/build-module/lock-unlock.js +10 -0
  300. package/build-module/lock-unlock.js.map +7 -0
  301. package/build-module/navigation-button.js +32 -0
  302. package/build-module/navigation-button.js.map +7 -0
  303. package/build-module/pagination/index.js +107 -0
  304. package/build-module/pagination/index.js.map +7 -0
  305. package/build-module/palette.js +70 -0
  306. package/build-module/palette.js.map +7 -0
  307. package/build-module/preset-colors.js +20 -0
  308. package/build-module/preset-colors.js.map +7 -0
  309. package/build-module/preview-colors.js +59 -0
  310. package/build-module/preview-colors.js.map +7 -0
  311. package/build-module/preview-hooks.js +36 -0
  312. package/build-module/preview-hooks.js.map +7 -0
  313. package/build-module/preview-styles.js +193 -0
  314. package/build-module/preview-styles.js.map +7 -0
  315. package/build-module/preview-typography.js +42 -0
  316. package/build-module/preview-typography.js.map +7 -0
  317. package/build-module/preview-wrapper.js +86 -0
  318. package/build-module/preview-wrapper.js.map +7 -0
  319. package/build-module/provider.js +30 -0
  320. package/build-module/provider.js.map +7 -0
  321. package/build-module/root-menu.js +58 -0
  322. package/build-module/root-menu.js.map +7 -0
  323. package/build-module/screen-background.js +28 -0
  324. package/build-module/screen-background.js.map +7 -0
  325. package/build-module/screen-block-list.js +150 -0
  326. package/build-module/screen-block-list.js.map +7 -0
  327. package/build-module/screen-block.js +293 -0
  328. package/build-module/screen-block.js.map +7 -0
  329. package/build-module/screen-color-palette.js +34 -0
  330. package/build-module/screen-color-palette.js.map +7 -0
  331. package/build-module/screen-colors.js +55 -0
  332. package/build-module/screen-colors.js.map +7 -0
  333. package/build-module/screen-css.js +48 -0
  334. package/build-module/screen-css.js.map +7 -0
  335. package/build-module/screen-header.js +44 -0
  336. package/build-module/screen-header.js.map +7 -0
  337. package/build-module/screen-layout.js +24 -0
  338. package/build-module/screen-layout.js.map +7 -0
  339. package/build-module/screen-revisions/index.js +121 -0
  340. package/build-module/screen-revisions/index.js.map +7 -0
  341. package/build-module/screen-revisions/revisions-buttons.js +178 -0
  342. package/build-module/screen-revisions/revisions-buttons.js.map +7 -0
  343. package/build-module/screen-revisions/types.js +1 -0
  344. package/build-module/screen-revisions/types.js.map +7 -0
  345. package/build-module/screen-revisions/use-global-styles-revisions.js +145 -0
  346. package/build-module/screen-revisions/use-global-styles-revisions.js.map +7 -0
  347. package/build-module/screen-root.js +114 -0
  348. package/build-module/screen-root.js.map +7 -0
  349. package/build-module/screen-shadows.js +14 -0
  350. package/build-module/screen-shadows.js.map +7 -0
  351. package/build-module/screen-style-variations.js +32 -0
  352. package/build-module/screen-style-variations.js.map +7 -0
  353. package/build-module/screen-typography-element.js +141 -0
  354. package/build-module/screen-typography-element.js.map +7 -0
  355. package/build-module/screen-typography.js +35 -0
  356. package/build-module/screen-typography.js.map +7 -0
  357. package/build-module/shadow-utils.js +98 -0
  358. package/build-module/shadow-utils.js.map +7 -0
  359. package/build-module/shadows-edit-panel.js +502 -0
  360. package/build-module/shadows-edit-panel.js.map +7 -0
  361. package/build-module/shadows-panel.js +182 -0
  362. package/build-module/shadows-panel.js.map +7 -0
  363. package/build-module/size-control/index.js +72 -0
  364. package/build-module/size-control/index.js.map +7 -0
  365. package/build-module/style-variations-container.js +100 -0
  366. package/build-module/style-variations-container.js.map +7 -0
  367. package/build-module/style-variations-content.js +18 -0
  368. package/build-module/style-variations-content.js.map +7 -0
  369. package/build-module/style-variations.js +7 -0
  370. package/build-module/style-variations.js.map +7 -0
  371. package/build-module/subtitle.js +9 -0
  372. package/build-module/subtitle.js.map +7 -0
  373. package/build-module/typography-elements.js +102 -0
  374. package/build-module/typography-elements.js.map +7 -0
  375. package/build-module/typography-example.js +59 -0
  376. package/build-module/typography-example.js.map +7 -0
  377. package/build-module/typography-panel.js +44 -0
  378. package/build-module/typography-panel.js.map +7 -0
  379. package/build-module/typography-preview.js +50 -0
  380. package/build-module/typography-preview.js.map +7 -0
  381. package/build-module/typography-variations.js +7 -0
  382. package/build-module/typography-variations.js.map +7 -0
  383. package/build-module/utils.js +179 -0
  384. package/build-module/utils.js.map +7 -0
  385. package/build-module/variations/variation.js +86 -0
  386. package/build-module/variations/variation.js.map +7 -0
  387. package/build-module/variations/variations-color.js +37 -0
  388. package/build-module/variations/variations-color.js.map +7 -0
  389. package/build-module/variations/variations-panel.js +44 -0
  390. package/build-module/variations/variations-panel.js.map +7 -0
  391. package/build-module/variations/variations-typography.js +53 -0
  392. package/build-module/variations/variations-typography.js.map +7 -0
  393. package/build-module/with-global-styles-provider.js +24 -0
  394. package/build-module/with-global-styles-provider.js.map +7 -0
  395. package/build-style/style-rtl.css +717 -0
  396. package/build-style/style.css +718 -0
  397. package/build-types/background-panel.d.ts +10 -0
  398. package/build-types/background-panel.d.ts.map +1 -0
  399. package/build-types/block-preview-panel.d.ts +7 -0
  400. package/build-types/block-preview-panel.d.ts.map +1 -0
  401. package/build-types/color-indicator-wrapper.d.ts +7 -0
  402. package/build-types/color-indicator-wrapper.d.ts.map +1 -0
  403. package/build-types/color-palette-panel.d.ts +6 -0
  404. package/build-types/color-palette-panel.d.ts.map +1 -0
  405. package/build-types/color-preview.d.ts +2 -0
  406. package/build-types/color-preview.d.ts.map +1 -0
  407. package/build-types/color-variations.d.ts +27 -0
  408. package/build-types/color-variations.d.ts.map +1 -0
  409. package/build-types/confirm-reset-shadow-dialog.d.ts +10 -0
  410. package/build-types/confirm-reset-shadow-dialog.d.ts.map +1 -0
  411. package/build-types/context.d.ts +10 -0
  412. package/build-types/context.d.ts.map +1 -0
  413. package/build-types/dimensions-panel.d.ts +2 -0
  414. package/build-types/dimensions-panel.d.ts.map +1 -0
  415. package/build-types/font-families.d.ts +4 -0
  416. package/build-types/font-families.d.ts.map +1 -0
  417. package/build-types/font-family-item.d.ts +7 -0
  418. package/build-types/font-family-item.d.ts.map +1 -0
  419. package/build-types/font-library-modal/collection-font-variant.d.ts +4 -0
  420. package/build-types/font-library-modal/collection-font-variant.d.ts.map +1 -0
  421. package/build-types/font-library-modal/context.d.ts +7 -0
  422. package/build-types/font-library-modal/context.d.ts.map +1 -0
  423. package/build-types/font-library-modal/font-card.d.ts +9 -0
  424. package/build-types/font-library-modal/font-card.d.ts.map +1 -0
  425. package/build-types/font-library-modal/font-collection.d.ts +5 -0
  426. package/build-types/font-library-modal/font-collection.d.ts.map +1 -0
  427. package/build-types/font-library-modal/font-demo.d.ts +4 -0
  428. package/build-types/font-library-modal/font-demo.d.ts.map +1 -0
  429. package/build-types/font-library-modal/google-fonts-confirm-dialog.d.ts +3 -0
  430. package/build-types/font-library-modal/google-fonts-confirm-dialog.d.ts.map +1 -0
  431. package/build-types/font-library-modal/index.d.ts +6 -0
  432. package/build-types/font-library-modal/index.d.ts.map +1 -0
  433. package/build-types/font-library-modal/installed-fonts.d.ts +3 -0
  434. package/build-types/font-library-modal/installed-fonts.d.ts.map +1 -0
  435. package/build-types/font-library-modal/library-font-details.d.ts +6 -0
  436. package/build-types/font-library-modal/library-font-details.d.ts.map +1 -0
  437. package/build-types/font-library-modal/library-font-variant.d.ts +7 -0
  438. package/build-types/font-library-modal/library-font-variant.d.ts.map +1 -0
  439. package/build-types/font-library-modal/resolvers.d.ts +43 -0
  440. package/build-types/font-library-modal/resolvers.d.ts.map +1 -0
  441. package/build-types/font-library-modal/types.d.ts +133 -0
  442. package/build-types/font-library-modal/types.d.ts.map +1 -0
  443. package/build-types/font-library-modal/upload-fonts.d.ts +3 -0
  444. package/build-types/font-library-modal/upload-fonts.d.ts.map +1 -0
  445. package/build-types/font-library-modal/utils/constants.d.ts +4 -0
  446. package/build-types/font-library-modal/utils/constants.d.ts.map +1 -0
  447. package/build-types/font-library-modal/utils/filter-fonts.d.ts +25 -0
  448. package/build-types/font-library-modal/utils/filter-fonts.d.ts.map +1 -0
  449. package/build-types/font-library-modal/utils/fonts-outline.d.ts +7 -0
  450. package/build-types/font-library-modal/utils/fonts-outline.d.ts.map +1 -0
  451. package/build-types/font-library-modal/utils/index.d.ts +21 -0
  452. package/build-types/font-library-modal/utils/index.d.ts.map +1 -0
  453. package/build-types/font-library-modal/utils/make-families-from-faces.d.ts +6 -0
  454. package/build-types/font-library-modal/utils/make-families-from-faces.d.ts.map +1 -0
  455. package/build-types/font-library-modal/utils/preview-styles.d.ts +13 -0
  456. package/build-types/font-library-modal/utils/preview-styles.d.ts.map +1 -0
  457. package/build-types/font-library-modal/utils/set-immutably.d.ts +13 -0
  458. package/build-types/font-library-modal/utils/set-immutably.d.ts.map +1 -0
  459. package/build-types/font-library-modal/utils/sort-font-faces.d.ts +6 -0
  460. package/build-types/font-library-modal/utils/sort-font-faces.d.ts.map +1 -0
  461. package/build-types/font-library-modal/utils/toggleFont.d.ts +38 -0
  462. package/build-types/font-library-modal/utils/toggleFont.d.ts.map +1 -0
  463. package/build-types/font-sizes/confirm-delete-font-size-dialog.d.ts +10 -0
  464. package/build-types/font-sizes/confirm-delete-font-size-dialog.d.ts.map +1 -0
  465. package/build-types/font-sizes/confirm-reset-font-sizes-dialog.d.ts +10 -0
  466. package/build-types/font-sizes/confirm-reset-font-sizes-dialog.d.ts.map +1 -0
  467. package/build-types/font-sizes/font-size-preview.d.ts +7 -0
  468. package/build-types/font-sizes/font-size-preview.d.ts.map +1 -0
  469. package/build-types/font-sizes/font-size.d.ts +4 -0
  470. package/build-types/font-sizes/font-size.d.ts.map +1 -0
  471. package/build-types/font-sizes/font-sizes-count.d.ts +3 -0
  472. package/build-types/font-sizes/font-sizes-count.d.ts.map +1 -0
  473. package/build-types/font-sizes/font-sizes.d.ts +3 -0
  474. package/build-types/font-sizes/font-sizes.d.ts.map +1 -0
  475. package/build-types/font-sizes/rename-font-size-dialog.d.ts +9 -0
  476. package/build-types/font-sizes/rename-font-size-dialog.d.ts.map +1 -0
  477. package/build-types/global-styles-ui.d.ts +26 -0
  478. package/build-types/global-styles-ui.d.ts.map +1 -0
  479. package/build-types/gradients-palette-panel.d.ts +6 -0
  480. package/build-types/gradients-palette-panel.d.ts.map +1 -0
  481. package/build-types/highlighted-colors.d.ts +7 -0
  482. package/build-types/highlighted-colors.d.ts.map +1 -0
  483. package/build-types/hooks.d.ts +46 -0
  484. package/build-types/hooks.d.ts.map +1 -0
  485. package/build-types/icon-with-current-color.d.ts +9 -0
  486. package/build-types/icon-with-current-color.d.ts.map +1 -0
  487. package/build-types/index.d.ts +6 -0
  488. package/build-types/index.d.ts.map +1 -0
  489. package/build-types/lock-unlock.d.ts +2 -0
  490. package/build-types/lock-unlock.d.ts.map +1 -0
  491. package/build-types/navigation-button.d.ts +10 -0
  492. package/build-types/navigation-button.d.ts.map +1 -0
  493. package/build-types/pagination/index.d.ts +13 -0
  494. package/build-types/pagination/index.d.ts.map +1 -0
  495. package/build-types/palette.d.ts +6 -0
  496. package/build-types/palette.d.ts.map +1 -0
  497. package/build-types/preset-colors.d.ts +2 -0
  498. package/build-types/preset-colors.d.ts.map +1 -0
  499. package/build-types/preview-colors.d.ts +8 -0
  500. package/build-types/preview-colors.d.ts.map +1 -0
  501. package/build-types/preview-hooks.d.ts +9 -0
  502. package/build-types/preview-hooks.d.ts.map +1 -0
  503. package/build-types/preview-styles.d.ts +9 -0
  504. package/build-types/preview-styles.d.ts.map +1 -0
  505. package/build-types/preview-typography.d.ts +8 -0
  506. package/build-types/preview-typography.d.ts.map +1 -0
  507. package/build-types/preview-wrapper.d.ts +15 -0
  508. package/build-types/preview-wrapper.d.ts.map +1 -0
  509. package/build-types/provider.d.ts +15 -0
  510. package/build-types/provider.d.ts.map +1 -0
  511. package/build-types/root-menu.d.ts +3 -0
  512. package/build-types/root-menu.d.ts.map +1 -0
  513. package/build-types/screen-background.d.ts +3 -0
  514. package/build-types/screen-background.d.ts.map +1 -0
  515. package/build-types/screen-block-list.d.ts +4 -0
  516. package/build-types/screen-block-list.d.ts.map +1 -0
  517. package/build-types/screen-block.d.ts +7 -0
  518. package/build-types/screen-block.d.ts.map +1 -0
  519. package/build-types/screen-color-palette.d.ts +5 -0
  520. package/build-types/screen-color-palette.d.ts.map +1 -0
  521. package/build-types/screen-colors.d.ts +3 -0
  522. package/build-types/screen-colors.d.ts.map +1 -0
  523. package/build-types/screen-css.d.ts +3 -0
  524. package/build-types/screen-css.d.ts.map +1 -0
  525. package/build-types/screen-header.d.ts +8 -0
  526. package/build-types/screen-header.d.ts.map +1 -0
  527. package/build-types/screen-layout.d.ts +3 -0
  528. package/build-types/screen-layout.d.ts.map +1 -0
  529. package/build-types/screen-revisions/index.d.ts +6 -0
  530. package/build-types/screen-revisions/index.d.ts.map +1 -0
  531. package/build-types/screen-revisions/revisions-buttons.d.ts +23 -0
  532. package/build-types/screen-revisions/revisions-buttons.d.ts.map +1 -0
  533. package/build-types/screen-revisions/types.d.ts +17 -0
  534. package/build-types/screen-revisions/types.d.ts.map +1 -0
  535. package/build-types/screen-revisions/use-global-styles-revisions.d.ts +17 -0
  536. package/build-types/screen-revisions/use-global-styles-revisions.d.ts.map +1 -0
  537. package/build-types/screen-root.d.ts +3 -0
  538. package/build-types/screen-root.d.ts.map +1 -0
  539. package/build-types/screen-shadows.d.ts +3 -0
  540. package/build-types/screen-shadows.d.ts.map +1 -0
  541. package/build-types/screen-style-variations.d.ts +3 -0
  542. package/build-types/screen-style-variations.d.ts.map +1 -0
  543. package/build-types/screen-typography-element.d.ts +28 -0
  544. package/build-types/screen-typography-element.d.ts.map +1 -0
  545. package/build-types/screen-typography.d.ts +3 -0
  546. package/build-types/screen-typography.d.ts.map +1 -0
  547. package/build-types/shadow-utils.d.ts +126 -0
  548. package/build-types/shadow-utils.d.ts.map +1 -0
  549. package/build-types/shadows-edit-panel.d.ts +2 -0
  550. package/build-types/shadows-edit-panel.d.ts.map +1 -0
  551. package/build-types/shadows-panel.d.ts +3 -0
  552. package/build-types/shadows-panel.d.ts.map +1 -0
  553. package/build-types/size-control/index.d.ts +11 -0
  554. package/build-types/size-control/index.d.ts.map +1 -0
  555. package/build-types/stories/index.story.d.ts +6 -0
  556. package/build-types/stories/index.story.d.ts.map +1 -0
  557. package/build-types/style-variations-container.d.ts +6 -0
  558. package/build-types/style-variations-container.d.ts.map +1 -0
  559. package/build-types/style-variations-content.d.ts +2 -0
  560. package/build-types/style-variations-content.d.ts.map +1 -0
  561. package/build-types/style-variations.d.ts +25 -0
  562. package/build-types/style-variations.d.ts.map +1 -0
  563. package/build-types/subtitle.d.ts +7 -0
  564. package/build-types/subtitle.d.ts.map +1 -0
  565. package/build-types/test/shadow-utils.spec.d.ts +2 -0
  566. package/build-types/test/shadow-utils.spec.d.ts.map +1 -0
  567. package/build-types/test/utils.spec.d.ts +2 -0
  568. package/build-types/test/utils.spec.d.ts.map +1 -0
  569. package/build-types/typography-elements.d.ts +3 -0
  570. package/build-types/typography-elements.d.ts.map +1 -0
  571. package/build-types/typography-example.d.ts +7 -0
  572. package/build-types/typography-example.d.ts.map +1 -0
  573. package/build-types/typography-panel.d.ts +7 -0
  574. package/build-types/typography-panel.d.ts.map +1 -0
  575. package/build-types/typography-preview.d.ts +8 -0
  576. package/build-types/typography-preview.d.ts.map +1 -0
  577. package/build-types/typography-variations.d.ts +27 -0
  578. package/build-types/typography-variations.d.ts.map +1 -0
  579. package/build-types/utils.d.ts +63 -0
  580. package/build-types/utils.d.ts.map +1 -0
  581. package/build-types/variations/variation.d.ts +10 -0
  582. package/build-types/variations/variation.d.ts.map +1 -0
  583. package/build-types/variations/variations-color.d.ts +7 -0
  584. package/build-types/variations/variations-color.d.ts.map +1 -0
  585. package/build-types/variations/variations-panel.d.ts +13 -0
  586. package/build-types/variations/variations-panel.d.ts.map +1 -0
  587. package/build-types/variations/variations-typography.d.ts +7 -0
  588. package/build-types/variations/variations-typography.d.ts.map +1 -0
  589. package/build-types/with-global-styles-provider.d.ts +20 -0
  590. package/build-types/with-global-styles-provider.d.ts.map +1 -0
  591. package/package.json +67 -0
  592. package/src/README.md +99 -0
  593. package/src/background-panel.tsx +56 -0
  594. package/src/block-preview-panel.tsx +91 -0
  595. package/src/color-indicator-wrapper.tsx +34 -0
  596. package/src/color-palette-panel.tsx +111 -0
  597. package/src/color-preview.tsx +78 -0
  598. package/src/color-variations.tsx +35 -0
  599. package/src/confirm-reset-shadow-dialog.tsx +45 -0
  600. package/src/context.ts +21 -0
  601. package/src/dimensions-panel.tsx +85 -0
  602. package/src/font-families.tsx +127 -0
  603. package/src/font-family-item.tsx +52 -0
  604. package/src/font-library-modal/collection-font-variant.tsx +52 -0
  605. package/src/font-library-modal/context.tsx +591 -0
  606. package/src/font-library-modal/font-card.tsx +77 -0
  607. package/src/font-library-modal/font-collection.tsx +592 -0
  608. package/src/font-library-modal/font-demo.tsx +123 -0
  609. package/src/font-library-modal/google-fonts-confirm-dialog.tsx +57 -0
  610. package/src/font-library-modal/index.tsx +110 -0
  611. package/src/font-library-modal/installed-fonts.tsx +547 -0
  612. package/src/font-library-modal/lib/inflate.js +4112 -0
  613. package/src/font-library-modal/lib/lib-font.browser.d.ts +11 -0
  614. package/src/font-library-modal/lib/lib-font.browser.js +3861 -0
  615. package/src/font-library-modal/lib/unbrotli.js +2706 -0
  616. package/src/font-library-modal/library-font-details.tsx +46 -0
  617. package/src/font-library-modal/library-font-variant.tsx +67 -0
  618. package/src/font-library-modal/resolvers.tsx +100 -0
  619. package/src/font-library-modal/style.scss +222 -0
  620. package/src/font-library-modal/types.ts +176 -0
  621. package/src/font-library-modal/upload-fonts.tsx +269 -0
  622. package/src/font-library-modal/utils/constants.ts +23 -0
  623. package/src/font-library-modal/utils/filter-fonts.ts +47 -0
  624. package/src/font-library-modal/utils/fonts-outline.ts +33 -0
  625. package/src/font-library-modal/utils/index.ts +368 -0
  626. package/src/font-library-modal/utils/make-families-from-faces.ts +34 -0
  627. package/src/font-library-modal/utils/preview-styles.ts +167 -0
  628. package/src/font-library-modal/utils/set-immutably.ts +37 -0
  629. package/src/font-library-modal/utils/sort-font-faces.ts +46 -0
  630. package/src/font-library-modal/utils/toggleFont.ts +109 -0
  631. package/src/font-sizes/confirm-delete-font-size-dialog.tsx +51 -0
  632. package/src/font-sizes/confirm-reset-font-sizes-dialog.tsx +45 -0
  633. package/src/font-sizes/font-size-preview.tsx +47 -0
  634. package/src/font-sizes/font-size.tsx +289 -0
  635. package/src/font-sizes/font-sizes-count.tsx +37 -0
  636. package/src/font-sizes/font-sizes.tsx +265 -0
  637. package/src/font-sizes/rename-font-size-dialog.tsx +83 -0
  638. package/src/global-styles-ui.tsx +292 -0
  639. package/src/gradients-palette-panel.tsx +126 -0
  640. package/src/highlighted-colors.tsx +44 -0
  641. package/src/hooks.ts +251 -0
  642. package/src/icon-with-current-color.tsx +31 -0
  643. package/src/index.ts +7 -0
  644. package/src/lock-unlock.ts +10 -0
  645. package/src/navigation-button.tsx +53 -0
  646. package/src/pagination/index.tsx +107 -0
  647. package/src/pagination/style.scss +7 -0
  648. package/src/palette.tsx +101 -0
  649. package/src/preset-colors.tsx +18 -0
  650. package/src/preview-colors.tsx +68 -0
  651. package/src/preview-hooks.tsx +58 -0
  652. package/src/preview-styles.tsx +196 -0
  653. package/src/preview-typography.tsx +49 -0
  654. package/src/preview-wrapper.tsx +137 -0
  655. package/src/provider.tsx +54 -0
  656. package/src/root-menu.tsx +87 -0
  657. package/src/screen-background.tsx +37 -0
  658. package/src/screen-block-list.tsx +198 -0
  659. package/src/screen-block.tsx +370 -0
  660. package/src/screen-color-palette.tsx +47 -0
  661. package/src/screen-colors.tsx +67 -0
  662. package/src/screen-css.tsx +56 -0
  663. package/src/screen-header.tsx +56 -0
  664. package/src/screen-layout.tsx +34 -0
  665. package/src/screen-revisions/index.tsx +158 -0
  666. package/src/screen-revisions/revisions-buttons.tsx +259 -0
  667. package/src/screen-revisions/style.scss +194 -0
  668. package/src/screen-revisions/types.ts +18 -0
  669. package/src/screen-revisions/use-global-styles-revisions.tsx +204 -0
  670. package/src/screen-root.tsx +146 -0
  671. package/src/screen-shadows.tsx +13 -0
  672. package/src/screen-style-variations.tsx +36 -0
  673. package/src/screen-typography-element.tsx +127 -0
  674. package/src/screen-typography.tsx +41 -0
  675. package/src/shadow-utils.ts +167 -0
  676. package/src/shadows-edit-panel.tsx +559 -0
  677. package/src/shadows-panel.tsx +207 -0
  678. package/src/size-control/index.tsx +97 -0
  679. package/src/size-control/style.scss +7 -0
  680. package/src/stories/index.story.js +410 -0
  681. package/src/style-variations-container.tsx +153 -0
  682. package/src/style-variations-content.tsx +24 -0
  683. package/src/style-variations.tsx +33 -0
  684. package/src/style.scss +287 -0
  685. package/src/subtitle.tsx +17 -0
  686. package/src/test/shadow-utils.spec.js +251 -0
  687. package/src/test/utils.spec.js +59 -0
  688. package/src/typography-elements.tsx +113 -0
  689. package/src/typography-example.tsx +78 -0
  690. package/src/typography-panel.tsx +56 -0
  691. package/src/typography-preview.tsx +61 -0
  692. package/src/typography-variations.tsx +35 -0
  693. package/src/utils.ts +301 -0
  694. package/src/variations/style.scss +43 -0
  695. package/src/variations/variation.tsx +113 -0
  696. package/src/variations/variations-color.tsx +54 -0
  697. package/src/variations/variations-panel.tsx +79 -0
  698. package/src/variations/variations-typography.tsx +65 -0
  699. package/src/with-global-styles-provider.tsx +44 -0
  700. package/tsconfig.json +26 -0
  701. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,87 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
5
+ import {
6
+ background,
7
+ typography,
8
+ color,
9
+ layout,
10
+ shadow as shadowIcon,
11
+ } from '@wordpress/icons';
12
+ import { __ } from '@wordpress/i18n';
13
+ // @ts-expect-error: Not typed yet.
14
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
15
+ import type { GlobalStylesSettings } from '@wordpress/global-styles-engine';
16
+
17
+ /**
18
+ * Internal dependencies
19
+ */
20
+ import { NavigationButtonAsItem } from './navigation-button';
21
+ import { useSetting } from './hooks';
22
+ import { unlock } from './lock-unlock';
23
+
24
+ const {
25
+ useHasDimensionsPanel,
26
+ useHasTypographyPanel,
27
+ useHasColorPanel,
28
+ useSettingsForBlockElement,
29
+ useHasBackgroundPanel,
30
+ } = unlock( blockEditorPrivateApis );
31
+
32
+ function RootMenu() {
33
+ // Get the raw settings from our custom hook
34
+ const [ rawSettings ] = useSetting< GlobalStylesSettings >( '' );
35
+
36
+ // Process settings the same way as Gutenberg
37
+ const settings = useSettingsForBlockElement( rawSettings );
38
+
39
+ // Use the same panel detection logic as Gutenberg
40
+ const hasBackgroundPanel = useHasBackgroundPanel( rawSettings );
41
+ const hasTypographyPanel = useHasTypographyPanel( settings );
42
+ const hasColorPanel = useHasColorPanel( settings );
43
+ const hasShadowPanel = true; // Same as Gutenberg
44
+ const hasDimensionsPanel = useHasDimensionsPanel( settings );
45
+ const hasLayoutPanel = hasDimensionsPanel;
46
+
47
+ return (
48
+ <>
49
+ <ItemGroup>
50
+ { hasTypographyPanel && (
51
+ <NavigationButtonAsItem
52
+ icon={ typography }
53
+ path="/typography"
54
+ >
55
+ { __( 'Typography' ) }
56
+ </NavigationButtonAsItem>
57
+ ) }
58
+ { hasColorPanel && (
59
+ <NavigationButtonAsItem icon={ color } path="/colors">
60
+ { __( 'Colors' ) }
61
+ </NavigationButtonAsItem>
62
+ ) }
63
+ { hasBackgroundPanel && (
64
+ <NavigationButtonAsItem
65
+ icon={ background }
66
+ path="/background"
67
+ aria-label={ __( 'Background styles' ) }
68
+ >
69
+ { __( 'Background' ) }
70
+ </NavigationButtonAsItem>
71
+ ) }
72
+ { hasShadowPanel && (
73
+ <NavigationButtonAsItem icon={ shadowIcon } path="/shadows">
74
+ { __( 'Shadows' ) }
75
+ </NavigationButtonAsItem>
76
+ ) }
77
+ { hasLayoutPanel && (
78
+ <NavigationButtonAsItem icon={ layout } path="/layout">
79
+ { __( 'Layout' ) }
80
+ </NavigationButtonAsItem>
81
+ ) }
82
+ </ItemGroup>
83
+ </>
84
+ );
85
+ }
86
+
87
+ export default RootMenu;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ // @ts-expect-error: Not typed yet.
6
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
7
+ import { __experimentalText as Text } from '@wordpress/components';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import BackgroundPanel from './background-panel';
13
+ import { ScreenHeader } from './screen-header';
14
+ import { useSetting } from './hooks';
15
+ import { unlock } from './lock-unlock';
16
+
17
+ const { useHasBackgroundPanel } = unlock( blockEditorPrivateApis );
18
+
19
+ function ScreenBackground() {
20
+ const [ settings ] = useSetting( '' );
21
+ const hasBackgroundPanel = useHasBackgroundPanel( settings );
22
+ return (
23
+ <>
24
+ <ScreenHeader
25
+ title={ __( 'Background' ) }
26
+ description={
27
+ <Text>
28
+ { __( "Set styles for the site's background." ) }
29
+ </Text>
30
+ }
31
+ />
32
+ { hasBackgroundPanel && <BackgroundPanel /> }
33
+ </>
34
+ );
35
+ }
36
+
37
+ export default ScreenBackground;
@@ -0,0 +1,198 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ // @ts-expect-error: Not typed yet.
5
+ import { store as blocksStore } from '@wordpress/blocks';
6
+ import { __, sprintf, _n } from '@wordpress/i18n';
7
+ import {
8
+ FlexItem,
9
+ SearchControl,
10
+ __experimentalHStack as HStack,
11
+ __experimentalText as Text,
12
+ } from '@wordpress/components';
13
+ import { useSelect } from '@wordpress/data';
14
+ import {
15
+ useState,
16
+ useEffect,
17
+ useRef,
18
+ useDeferredValue,
19
+ memo,
20
+ } from '@wordpress/element';
21
+ import {
22
+ BlockIcon,
23
+ privateApis as blockEditorPrivateApis,
24
+ // @ts-expect-error: Not typed yet.
25
+ } from '@wordpress/block-editor';
26
+ import { useDebounce } from '@wordpress/compose';
27
+ import { speak } from '@wordpress/a11y';
28
+
29
+ /**
30
+ * Internal dependencies
31
+ */
32
+ import { useBlockVariations } from './variations/variations-panel';
33
+ import { ScreenHeader } from './screen-header';
34
+ import { NavigationButtonAsItem } from './navigation-button';
35
+ import { useSetting } from './hooks';
36
+ import { unlock } from './lock-unlock';
37
+
38
+ const {
39
+ useHasDimensionsPanel,
40
+ useHasTypographyPanel,
41
+ useHasBorderPanel,
42
+ useSettingsForBlockElement,
43
+ useHasColorPanel,
44
+ } = unlock( blockEditorPrivateApis );
45
+
46
+ function useSortedBlockTypes() {
47
+ const blockItems = useSelect(
48
+ ( select ) => select( blocksStore ).getBlockTypes(),
49
+ []
50
+ );
51
+ // Ensure core blocks are prioritized in the returned results,
52
+ // because third party blocks can be registered earlier than
53
+ // the core blocks (usually by using the `init` action),
54
+ // thus affecting the display order.
55
+ // We don't sort reusable blocks as they are handled differently.
56
+ const groupByType = ( blocks: any, block: any ) => {
57
+ const { core, noncore } = blocks;
58
+ const type = block.name.startsWith( 'core/' ) ? core : noncore;
59
+ type.push( block );
60
+ return blocks;
61
+ };
62
+ const { core: coreItems, noncore: nonCoreItems } = blockItems.reduce(
63
+ groupByType,
64
+ { core: [], noncore: [] }
65
+ );
66
+ return [ ...coreItems, ...nonCoreItems ];
67
+ }
68
+
69
+ export function useBlockHasGlobalStyles( blockName: string ) {
70
+ const [ rawSettings ] = useSetting( '', blockName );
71
+ const settings = useSettingsForBlockElement( rawSettings, blockName );
72
+ const hasTypographyPanel = useHasTypographyPanel( settings );
73
+ const hasColorPanel = useHasColorPanel( settings );
74
+ const hasBorderPanel = useHasBorderPanel( settings );
75
+ const hasDimensionsPanel = useHasDimensionsPanel( settings );
76
+ const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
77
+ const hasVariationsPanel = !! useBlockVariations( blockName )?.length;
78
+ const hasGlobalStyles =
79
+ hasTypographyPanel ||
80
+ hasColorPanel ||
81
+ hasLayoutPanel ||
82
+ hasVariationsPanel;
83
+ return hasGlobalStyles;
84
+ }
85
+
86
+ interface BlockMenuItemProps {
87
+ block: any;
88
+ }
89
+
90
+ function BlockMenuItem( { block }: BlockMenuItemProps ) {
91
+ const hasBlockMenuItem = useBlockHasGlobalStyles( block.name );
92
+ if ( ! hasBlockMenuItem ) {
93
+ return null;
94
+ }
95
+
96
+ return (
97
+ <NavigationButtonAsItem
98
+ path={ '/blocks/' + encodeURIComponent( block.name ) }
99
+ >
100
+ <HStack justify="flex-start">
101
+ <BlockIcon icon={ block.icon } />
102
+ <FlexItem>{ block.title }</FlexItem>
103
+ </HStack>
104
+ </NavigationButtonAsItem>
105
+ );
106
+ }
107
+
108
+ interface BlockListProps {
109
+ filterValue: string;
110
+ }
111
+
112
+ function BlockList( { filterValue }: BlockListProps ) {
113
+ const sortedBlockTypes = useSortedBlockTypes();
114
+ const debouncedSpeak = useDebounce( speak, 500 );
115
+ // @ts-expect-error - useSelect supports single argument calls
116
+ const { isMatchingSearchTerm } = useSelect( blocksStore );
117
+
118
+ const filteredBlockTypes = ! filterValue
119
+ ? sortedBlockTypes
120
+ : sortedBlockTypes.filter( ( blockType ) =>
121
+ isMatchingSearchTerm( blockType, filterValue )
122
+ );
123
+
124
+ const blockTypesListRef = useRef< HTMLDivElement >( null );
125
+
126
+ // Announce search results on change
127
+ useEffect( () => {
128
+ if ( ! filterValue ) {
129
+ return;
130
+ }
131
+ // We extract the results from the wrapper div's `ref` because
132
+ // filtered items can contain items that will eventually not
133
+ // render and there is no reliable way to detect when a child
134
+ // will return `null`.
135
+ // TODO: We should find a better way of handling this as it's
136
+ // fragile and depends on the number of rendered elements of `BlockMenuItem`,
137
+ // which is now one.
138
+ // @see https://github.com/WordPress/gutenberg/pull/39117#discussion_r816022116
139
+ const count = blockTypesListRef.current?.childElementCount || 0;
140
+ const resultsFoundMessage = sprintf(
141
+ /* translators: %d: number of results. */
142
+ _n( '%d result found.', '%d results found.', count ),
143
+ count
144
+ );
145
+ debouncedSpeak( resultsFoundMessage, 'polite' );
146
+ }, [ filterValue, debouncedSpeak ] );
147
+
148
+ return (
149
+ <div
150
+ ref={ blockTypesListRef }
151
+ className="global-styles-ui-block-types-item-list"
152
+ // By default, BlockMenuItem has a role=listitem so this div must have a list role.
153
+ role="list"
154
+ >
155
+ { filteredBlockTypes.length === 0 ? (
156
+ <Text align="center" as="p">
157
+ { __( 'No blocks found.' ) }
158
+ </Text>
159
+ ) : (
160
+ filteredBlockTypes.map( ( block ) => (
161
+ <BlockMenuItem
162
+ block={ block }
163
+ key={ 'menu-itemblock-' + block.name }
164
+ />
165
+ ) )
166
+ ) }
167
+ </div>
168
+ );
169
+ }
170
+
171
+ const MemoizedBlockList = memo( BlockList );
172
+
173
+ function ScreenBlockList() {
174
+ const [ filterValue, setFilterValue ] = useState( '' );
175
+ const deferredFilterValue = useDeferredValue( filterValue );
176
+
177
+ return (
178
+ <>
179
+ <ScreenHeader
180
+ title={ __( 'Blocks' ) }
181
+ description={ __(
182
+ 'Customize the appearance of specific blocks and for the whole site.'
183
+ ) }
184
+ />
185
+ <SearchControl
186
+ __nextHasNoMarginBottom
187
+ className="global-styles-ui-block-types-search"
188
+ onChange={ setFilterValue }
189
+ value={ filterValue }
190
+ label={ __( 'Search' ) }
191
+ placeholder={ __( 'Search' ) }
192
+ />
193
+ <MemoizedBlockList filterValue={ deferredFilterValue } />
194
+ </>
195
+ );
196
+ }
197
+
198
+ export default ScreenBlockList;
@@ -0,0 +1,370 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ // @ts-expect-error: Not typed yet.
5
+ import { getBlockType } from '@wordpress/blocks';
6
+ // @ts-expect-error: Not typed yet.
7
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
8
+ import { useMemo } from '@wordpress/element';
9
+ import { useSelect } from '@wordpress/data';
10
+ import { store as coreStore } from '@wordpress/core-data';
11
+ import {
12
+ PanelBody,
13
+ __experimentalVStack as VStack,
14
+ __experimentalHasSplitBorders as hasSplitBorders,
15
+ } from '@wordpress/components';
16
+ import { __, sprintf } from '@wordpress/i18n';
17
+ import type { GlobalStylesConfig } from '@wordpress/global-styles-engine';
18
+
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+ import { ScreenHeader } from './screen-header';
23
+ import BlockPreviewPanel from './block-preview-panel';
24
+ import { Subtitle } from './subtitle';
25
+ import {
26
+ useBlockVariations,
27
+ VariationsPanel,
28
+ } from './variations/variations-panel';
29
+ import { useStyle, useSetting } from './hooks';
30
+ import { unlock } from './lock-unlock';
31
+
32
+ // Initial control values.
33
+ const BACKGROUND_BLOCK_DEFAULT_VALUES = {
34
+ backgroundSize: 'cover',
35
+ backgroundPosition: '50% 50%', // used only when backgroundSize is 'contain'.
36
+ };
37
+
38
+ function applyFallbackStyle( border: any ) {
39
+ if ( ! border ) {
40
+ return border;
41
+ }
42
+
43
+ const hasColorOrWidth = border.color || border.width;
44
+
45
+ if ( ! border.style && hasColorOrWidth ) {
46
+ return { ...border, style: 'solid' };
47
+ }
48
+
49
+ if ( border.style && ! hasColorOrWidth ) {
50
+ return undefined;
51
+ }
52
+
53
+ return border;
54
+ }
55
+
56
+ function applyAllFallbackStyles( border: any ) {
57
+ if ( ! border ) {
58
+ return border;
59
+ }
60
+
61
+ if ( hasSplitBorders( border ) ) {
62
+ return {
63
+ top: applyFallbackStyle( border.top ),
64
+ right: applyFallbackStyle( border.right ),
65
+ bottom: applyFallbackStyle( border.bottom ),
66
+ left: applyFallbackStyle( border.left ),
67
+ };
68
+ }
69
+
70
+ return applyFallbackStyle( border );
71
+ }
72
+
73
+ const {
74
+ useHasDimensionsPanel,
75
+ useHasTypographyPanel,
76
+ useHasBorderPanel,
77
+ useSettingsForBlockElement,
78
+ useHasColorPanel,
79
+ useHasFiltersPanel,
80
+ useHasImageSettingsPanel,
81
+ useHasBackgroundPanel,
82
+ BackgroundPanel: StylesBackgroundPanel,
83
+ BorderPanel: StylesBorderPanel,
84
+ ColorPanel: StylesColorPanel,
85
+ TypographyPanel: StylesTypographyPanel,
86
+ DimensionsPanel: StylesDimensionsPanel,
87
+ FiltersPanel: StylesFiltersPanel,
88
+ ImageSettingsPanel,
89
+ AdvancedPanel: StylesAdvancedPanel,
90
+ } = unlock( blockEditorPrivateApis );
91
+
92
+ interface ScreenBlockProps {
93
+ name: string;
94
+ variation?: string;
95
+ }
96
+
97
+ function ScreenBlock( { name, variation }: ScreenBlockProps ) {
98
+ let prefixParts: string[] = [];
99
+ if ( variation ) {
100
+ prefixParts = [ 'variations', variation ].concat( prefixParts );
101
+ }
102
+ const prefix = prefixParts.join( '.' );
103
+
104
+ const [ style ] = useStyle( prefix, name, 'user', false );
105
+ const [ inheritedStyle, setStyle ] = useStyle(
106
+ prefix,
107
+ name,
108
+ 'merged',
109
+ false
110
+ );
111
+ const [ userSettings ] = useSetting( '', name, 'user' );
112
+ const [ rawSettings, setSettings ] = useSetting( '', name );
113
+ const settingsForBlockElement = useSettingsForBlockElement(
114
+ rawSettings,
115
+ name
116
+ );
117
+ const blockType = getBlockType( name );
118
+
119
+ // Only allow `blockGap` support if serialization has not been skipped, to be sure global spacing can be applied.
120
+ let disableBlockGap = false;
121
+ if (
122
+ settingsForBlockElement?.spacing?.blockGap &&
123
+ blockType?.supports?.spacing?.blockGap &&
124
+ ( blockType?.supports?.spacing?.__experimentalSkipSerialization ===
125
+ true ||
126
+ blockType?.supports?.spacing?.__experimentalSkipSerialization?.some?.(
127
+ ( spacingType: string ) => spacingType === 'blockGap'
128
+ ) )
129
+ ) {
130
+ disableBlockGap = true;
131
+ }
132
+
133
+ // Only allow `aspectRatio` support if the block is not the grouping block.
134
+ // The grouping block allows the user to use Group, Row and Stack variations,
135
+ // and it is highly likely that the user will not want to set an aspect ratio
136
+ // for all three at once. Until there is the ability to set a different aspect
137
+ // ratio for each variation, we disable the aspect ratio controls for the
138
+ // grouping block in global styles.
139
+ let disableAspectRatio = false;
140
+ if (
141
+ settingsForBlockElement?.dimensions?.aspectRatio &&
142
+ name === 'core/group'
143
+ ) {
144
+ disableAspectRatio = true;
145
+ }
146
+
147
+ const settings = useMemo( () => {
148
+ const updatedSettings = structuredClone( settingsForBlockElement );
149
+ if ( disableBlockGap ) {
150
+ updatedSettings.spacing.blockGap = false;
151
+ }
152
+ if ( disableAspectRatio ) {
153
+ updatedSettings.dimensions.aspectRatio = false;
154
+ }
155
+ return updatedSettings;
156
+ }, [ settingsForBlockElement, disableBlockGap, disableAspectRatio ] );
157
+
158
+ const blockVariations = useBlockVariations( name );
159
+ const hasBackgroundPanel = useHasBackgroundPanel( settings );
160
+ const hasTypographyPanel = useHasTypographyPanel( settings );
161
+ const hasColorPanel = useHasColorPanel( settings );
162
+ const hasBorderPanel = useHasBorderPanel( settings );
163
+ const hasDimensionsPanel = useHasDimensionsPanel( settings );
164
+ const hasFiltersPanel = useHasFiltersPanel( settings );
165
+ const hasImageSettingsPanel = useHasImageSettingsPanel(
166
+ name,
167
+ userSettings,
168
+ settings
169
+ );
170
+ const hasVariationsPanel = !! blockVariations?.length && ! variation;
171
+ const { canEditCSS } = useSelect( ( select ) => {
172
+ const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } =
173
+ select( coreStore );
174
+
175
+ const globalStylesId = __experimentalGetCurrentGlobalStylesId();
176
+ const globalStyles = globalStylesId
177
+ ? getEntityRecord( 'root', 'globalStyles', globalStylesId )
178
+ : undefined;
179
+
180
+ return {
181
+ canEditCSS: !! ( globalStyles as GlobalStylesConfig )?._links?.[
182
+ 'wp:action-edit-css'
183
+ ],
184
+ };
185
+ }, [] );
186
+ const currentBlockStyle = variation
187
+ ? blockVariations.find( ( s: any ) => s.name === variation )
188
+ : null;
189
+
190
+ // These intermediary objects are needed because the "layout" property is stored
191
+ // in settings rather than styles.
192
+ const inheritedStyleWithLayout = useMemo( () => {
193
+ return {
194
+ ...inheritedStyle,
195
+ layout: settings.layout,
196
+ };
197
+ }, [ inheritedStyle, settings.layout ] );
198
+ const styleWithLayout = useMemo( () => {
199
+ return {
200
+ ...style,
201
+ layout: userSettings.layout,
202
+ };
203
+ }, [ style, userSettings.layout ] );
204
+ const onChangeDimensions = ( newStyle: any ) => {
205
+ const updatedStyle = { ...newStyle };
206
+ delete updatedStyle.layout;
207
+ setStyle( updatedStyle );
208
+
209
+ if ( newStyle.layout !== userSettings.layout ) {
210
+ setSettings( {
211
+ ...userSettings,
212
+ layout: newStyle.layout,
213
+ } );
214
+ }
215
+ };
216
+ const onChangeLightbox = ( newSetting: any ) => {
217
+ // If the newSetting is undefined, this means that the user has deselected
218
+ // (reset) the lightbox setting.
219
+ if ( newSetting === undefined ) {
220
+ setSettings( {
221
+ ...rawSettings,
222
+ lightbox: undefined,
223
+ } );
224
+
225
+ // Otherwise, we simply set the lightbox setting to the new value but
226
+ // taking care of not overriding the other lightbox settings.
227
+ } else {
228
+ setSettings( {
229
+ ...rawSettings,
230
+ lightbox: {
231
+ ...rawSettings.lightbox,
232
+ ...newSetting,
233
+ },
234
+ } );
235
+ }
236
+ };
237
+ const onChangeBorders = ( newStyle: any ) => {
238
+ if ( ! newStyle?.border ) {
239
+ setStyle( newStyle );
240
+ return;
241
+ }
242
+
243
+ // As Global Styles can't conditionally generate styles based on if
244
+ // other style properties have been set, we need to force split
245
+ // border definitions for user set global border styles. Border
246
+ // radius is derived from the same property i.e. `border.radius` if
247
+ // it is a string that is used. The longhand border radii styles are
248
+ // only generated if that property is an object.
249
+ //
250
+ // For borders (color, style, and width) those are all properties on
251
+ // the `border` style property. This means if the theme.json defined
252
+ // split borders and the user condenses them into a flat border or
253
+ // vice-versa we'd get both sets of styles which would conflict.
254
+ const { radius, ...newBorder } = newStyle.border;
255
+ const border = applyAllFallbackStyles( newBorder );
256
+ const updatedBorder = ! hasSplitBorders( border )
257
+ ? {
258
+ top: border,
259
+ right: border,
260
+ bottom: border,
261
+ left: border,
262
+ }
263
+ : {
264
+ color: null,
265
+ style: null,
266
+ width: null,
267
+ ...border,
268
+ };
269
+
270
+ setStyle( { ...newStyle, border: { ...updatedBorder, radius } } );
271
+ };
272
+
273
+ return (
274
+ <>
275
+ <ScreenHeader
276
+ title={
277
+ variation ? currentBlockStyle?.label : blockType?.title
278
+ }
279
+ />
280
+ <BlockPreviewPanel name={ name } variation={ variation } />
281
+ { hasVariationsPanel && (
282
+ <div className="global-styles-ui-screen-variations">
283
+ <VStack spacing={ 3 }>
284
+ <Subtitle>{ __( 'Style Variations' ) }</Subtitle>
285
+ <VariationsPanel name={ name } />
286
+ </VStack>
287
+ </div>
288
+ ) }
289
+ { hasColorPanel && (
290
+ <StylesColorPanel
291
+ inheritedValue={ inheritedStyle }
292
+ value={ style }
293
+ onChange={ setStyle }
294
+ settings={ settings }
295
+ />
296
+ ) }
297
+ { hasBackgroundPanel && (
298
+ <StylesBackgroundPanel
299
+ inheritedValue={ inheritedStyle }
300
+ value={ style }
301
+ onChange={ setStyle }
302
+ settings={ settings }
303
+ defaultValues={ BACKGROUND_BLOCK_DEFAULT_VALUES }
304
+ />
305
+ ) }
306
+ { hasTypographyPanel && (
307
+ <StylesTypographyPanel
308
+ inheritedValue={ inheritedStyle }
309
+ value={ style }
310
+ onChange={ setStyle }
311
+ settings={ settings }
312
+ />
313
+ ) }
314
+ { hasDimensionsPanel && (
315
+ <StylesDimensionsPanel
316
+ inheritedValue={ inheritedStyleWithLayout }
317
+ value={ styleWithLayout }
318
+ onChange={ onChangeDimensions }
319
+ settings={ settings }
320
+ includeLayoutControls
321
+ />
322
+ ) }
323
+ { hasBorderPanel && (
324
+ <StylesBorderPanel
325
+ inheritedValue={ inheritedStyle }
326
+ value={ style }
327
+ onChange={ onChangeBorders }
328
+ settings={ settings }
329
+ />
330
+ ) }
331
+ { hasFiltersPanel && (
332
+ <StylesFiltersPanel
333
+ inheritedValue={ inheritedStyleWithLayout }
334
+ value={ styleWithLayout }
335
+ onChange={ setStyle }
336
+ settings={ settings }
337
+ includeLayoutControls
338
+ />
339
+ ) }
340
+ { hasImageSettingsPanel && (
341
+ <ImageSettingsPanel
342
+ onChange={ onChangeLightbox }
343
+ value={ userSettings }
344
+ inheritedValue={ settings }
345
+ />
346
+ ) }
347
+
348
+ { canEditCSS && (
349
+ <PanelBody title={ __( 'Advanced' ) } initialOpen={ false }>
350
+ <p>
351
+ { sprintf(
352
+ // translators: %s: is the name of a block e.g., 'Image' or 'Table'.
353
+ __(
354
+ 'Add your own CSS to customize the appearance of the %s block. You do not need to include a CSS selector, just add the property and value.'
355
+ ),
356
+ blockType?.title
357
+ ) }
358
+ </p>
359
+ <StylesAdvancedPanel
360
+ value={ style }
361
+ onChange={ setStyle }
362
+ inheritedValue={ inheritedStyle }
363
+ />
364
+ </PanelBody>
365
+ ) }
366
+ </>
367
+ );
368
+ }
369
+
370
+ export default ScreenBlock;