@wordpress/block-editor 17.1.0 → 17.2.1-next.v.202609171837.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 (541) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +214 -214
  3. package/build/autocompleters/block.cjs.map +2 -2
  4. package/build/components/alignment-control/ui.cjs.map +2 -2
  5. package/build/components/background-image-control/index.cjs +1 -1
  6. package/build/components/background-image-control/index.cjs.map +2 -2
  7. package/build/components/block-alignment-control/ui.cjs +21 -7
  8. package/build/components/block-alignment-control/ui.cjs.map +3 -3
  9. package/build/components/block-alignment-control/use-available-alignments.cjs +60 -13
  10. package/build/components/block-alignment-control/use-available-alignments.cjs.map +2 -2
  11. package/build/components/block-allowed-blocks/allowed-blocks-control.cjs.map +2 -2
  12. package/build/components/block-bindings/attribute-control.cjs +30 -30
  13. package/build/components/block-bindings/attribute-control.cjs.map +3 -3
  14. package/build/components/block-bindings/source-fields-list.cjs +27 -32
  15. package/build/components/block-bindings/source-fields-list.cjs.map +3 -3
  16. package/build/components/block-canvas/index.cjs.map +2 -2
  17. package/build/components/block-card/index.cjs +1 -2
  18. package/build/components/block-card/index.cjs.map +3 -3
  19. package/build/components/block-edit/edit.cjs.map +2 -2
  20. package/build/components/block-heading-level-dropdown/index.cjs.map +2 -2
  21. package/build/components/block-icon/index.cjs.map +2 -2
  22. package/build/components/block-inspector/edit-contents.cjs.map +2 -2
  23. package/build/components/block-inspector/index.cjs +27 -8
  24. package/build/components/block-inspector/index.cjs.map +3 -3
  25. package/build/components/block-keyboard-shortcuts/index.cjs.map +2 -2
  26. package/build/components/block-list/block-html.cjs +1 -12
  27. package/build/components/block-list/block-html.cjs.map +3 -3
  28. package/build/components/block-list/block.cjs +2 -4
  29. package/build/components/block-list/block.cjs.map +2 -2
  30. package/build/components/block-list/layout.cjs +1 -1
  31. package/build/components/block-list/layout.cjs.map +2 -2
  32. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  33. package/build/components/block-lock/modal.cjs +1 -3
  34. package/build/components/block-lock/modal.cjs.map +2 -2
  35. package/build/components/block-parent-selector/index.cjs +8 -5
  36. package/build/components/block-parent-selector/index.cjs.map +2 -2
  37. package/build/components/block-popover/index.cjs.map +2 -2
  38. package/build/components/block-rename/modal.cjs.map +2 -2
  39. package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +2 -2
  40. package/build/components/block-styles/utils.cjs.map +2 -2
  41. package/build/components/block-switcher/index.cjs.map +2 -2
  42. package/build/components/block-toolbar/edit-section-button.cjs.map +2 -2
  43. package/build/components/block-toolbar/index.cjs +6 -4
  44. package/build/components/block-toolbar/index.cjs.map +2 -2
  45. package/build/components/block-toolbar/switch-section-style.cjs.map +2 -2
  46. package/build/components/block-variation-transforms/index.cjs +28 -18
  47. package/build/components/block-variation-transforms/index.cjs.map +3 -3
  48. package/build/components/block-visibility/modal.cjs.map +2 -2
  49. package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
  50. package/build/components/border-radius-control/index.cjs.map +2 -2
  51. package/build/components/color-palette/with-color-context.cjs.map +2 -2
  52. package/build/components/colors/with-colors.cjs.map +2 -2
  53. package/build/components/colors-gradients/control.cjs.map +2 -2
  54. package/build/components/contrast-checker/index.cjs.map +2 -2
  55. package/build/components/date-format-picker/index.cjs.map +2 -2
  56. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
  57. package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
  58. package/build/components/font-sizes/with-font-sizes.cjs.map +2 -2
  59. package/build/components/global-styles/background-panel.cjs +1 -1
  60. package/build/components/global-styles/background-panel.cjs.map +2 -2
  61. package/build/components/global-styles/border-panel.cjs +1 -1
  62. package/build/components/global-styles/border-panel.cjs.map +2 -2
  63. package/build/components/global-styles/color-gradient-dropdown-item.cjs +1 -1
  64. package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +2 -2
  65. package/build/components/global-styles/color-panel.cjs +1 -1
  66. package/build/components/global-styles/color-panel.cjs.map +2 -2
  67. package/build/components/global-styles/dimensions-panel.cjs +1 -1
  68. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  69. package/build/components/global-styles/filters-panel.cjs +1 -1
  70. package/build/components/global-styles/filters-panel.cjs.map +2 -2
  71. package/build/components/global-styles/hooks.cjs +1 -0
  72. package/build/components/global-styles/hooks.cjs.map +2 -2
  73. package/build/components/global-styles/inheritance/index.cjs +3 -3
  74. package/build/components/global-styles/inheritance/index.cjs.map +2 -2
  75. package/build/components/global-styles/inherited-value-context.cjs +0 -5
  76. package/build/components/global-styles/inherited-value-context.cjs.map +2 -2
  77. package/build/components/global-styles/state-control-badges.cjs +0 -1
  78. package/build/components/global-styles/state-control-badges.cjs.map +2 -2
  79. package/build/components/global-styles/state-control.cjs +6 -4
  80. package/build/components/global-styles/state-control.cjs.map +2 -2
  81. package/build/components/global-styles/text-shadow-panel.cjs +254 -0
  82. package/build/components/global-styles/text-shadow-panel.cjs.map +7 -0
  83. package/build/components/global-styles/typography-panel.cjs +46 -5
  84. package/build/components/global-styles/typography-panel.cjs.map +2 -2
  85. package/build/components/global-styles/typography-utils.cjs.map +2 -2
  86. package/build/components/global-styles/utils.cjs.map +2 -2
  87. package/build/components/html-element-control/index.cjs.map +3 -3
  88. package/build/components/iframe/index.cjs.map +2 -2
  89. package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
  90. package/build/components/image-size-control/index.cjs.map +3 -3
  91. package/build/components/inner-blocks/index.cjs +6 -1
  92. package/build/components/inner-blocks/index.cjs.map +2 -2
  93. package/build/components/inner-content/index.cjs.map +2 -2
  94. package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs +4 -23
  95. package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs.map +2 -2
  96. package/build/components/inserter/block-patterns-tab/utils.cjs +26 -0
  97. package/build/components/inserter/block-patterns-tab/utils.cjs.map +2 -2
  98. package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
  99. package/build/components/inserter/hooks/use-insertion-point.cjs.map +2 -2
  100. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  101. package/build/components/inserter/media-tab/media-panel.cjs.map +2 -2
  102. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  103. package/build/components/inserter-list-item/index.cjs.map +2 -2
  104. package/build/components/inspector-controls/list-view-content-popover.cjs.map +2 -2
  105. package/build/components/link-control/search-results.cjs.map +2 -2
  106. package/build/components/link-control/use-search-handler.cjs +3 -0
  107. package/build/components/link-control/use-search-handler.cjs.map +2 -2
  108. package/build/components/list-view/branch.cjs.map +2 -2
  109. package/build/components/list-view/drop-indicator.cjs.map +2 -2
  110. package/build/components/list-view/index.cjs.map +2 -2
  111. package/build/components/list-view/use-list-view-drop-zone.cjs.map +2 -2
  112. package/build/components/list-view/utils.cjs.map +2 -2
  113. package/build/components/media-replace-flow/index.cjs +4 -1
  114. package/build/components/media-replace-flow/index.cjs.map +2 -2
  115. package/build/components/plain-text/index.cjs +1 -2
  116. package/build/components/plain-text/index.cjs.map +3 -3
  117. package/build/components/preset-input-control/index.cjs.map +2 -2
  118. package/build/components/provider/index.cjs +3 -1
  119. package/build/components/provider/index.cjs.map +2 -2
  120. package/build/components/provider/use-block-sync.cjs.map +2 -2
  121. package/build/components/publish-date-time-picker/index.cjs.map +2 -2
  122. package/build/components/resizable-box-popover/index.cjs +1 -1
  123. package/build/components/resizable-box-popover/index.cjs.map +1 -1
  124. package/build/components/resolution-tool/index.cjs.map +3 -3
  125. package/build/components/rich-text/event-listeners/enter.cjs +8 -22
  126. package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
  127. package/build/components/rich-text/format-edit.cjs.map +2 -2
  128. package/build/components/rich-text/index.cjs +20 -0
  129. package/build/components/rich-text/index.cjs.map +2 -2
  130. package/build/components/rich-text/multiline.cjs +10 -2
  131. package/build/components/rich-text/multiline.cjs.map +2 -2
  132. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.cjs.map +2 -2
  133. package/build/components/typewriter/index.cjs.map +2 -2
  134. package/build/components/use-block-commands/index.cjs.map +2 -2
  135. package/build/components/writing-flow/index.cjs +3 -0
  136. package/build/components/writing-flow/index.cjs.map +2 -2
  137. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  138. package/build/components/writing-flow/use-selection-observer.cjs +5 -3
  139. package/build/components/writing-flow/use-selection-observer.cjs.map +2 -2
  140. package/build/hooks/align.cjs +3 -5
  141. package/build/hooks/align.cjs.map +2 -2
  142. package/build/hooks/background.cjs.map +2 -2
  143. package/build/hooks/block-bindings.cjs.map +2 -2
  144. package/build/hooks/border.cjs.map +2 -2
  145. package/build/hooks/contrast-checker.cjs.map +2 -2
  146. package/build/hooks/dimensions.cjs.map +2 -2
  147. package/build/hooks/duotone.cjs.map +2 -2
  148. package/build/hooks/elements.cjs.map +2 -2
  149. package/build/hooks/fit-text.cjs.map +2 -2
  150. package/build/hooks/gap.cjs +2 -1
  151. package/build/hooks/gap.cjs.map +3 -3
  152. package/build/hooks/index.cjs +4 -2
  153. package/build/hooks/index.cjs.map +3 -3
  154. package/build/hooks/layout-child.cjs.map +2 -2
  155. package/build/hooks/layout.cjs +15 -14
  156. package/build/hooks/layout.cjs.map +3 -3
  157. package/build/hooks/position.cjs +3 -31
  158. package/build/hooks/position.cjs.map +2 -2
  159. package/build/hooks/states.cjs +3 -2
  160. package/build/hooks/states.cjs.map +2 -2
  161. package/build/hooks/text-shadow.cjs +100 -0
  162. package/build/hooks/text-shadow.cjs.map +7 -0
  163. package/build/hooks/typography.cjs +30 -6
  164. package/build/hooks/typography.cjs.map +2 -2
  165. package/build/hooks/utils.cjs +24 -2
  166. package/build/hooks/utils.cjs.map +2 -2
  167. package/build/layouts/grid.cjs.map +2 -2
  168. package/build/layouts/utils.cjs +7 -2
  169. package/build/layouts/utils.cjs.map +2 -2
  170. package/build/private-apis.cjs +9 -6
  171. package/build/private-apis.cjs.map +2 -2
  172. package/build/store/actions.cjs +26 -4
  173. package/build/store/actions.cjs.map +3 -3
  174. package/build/store/private-selectors.cjs.map +2 -2
  175. package/build/store/reducer.cjs.map +2 -2
  176. package/build/store/selectors.cjs.map +2 -2
  177. package/build/utils/get-font-styles-and-weights.cjs.map +2 -2
  178. package/build/utils/transform-styles/index.cjs.map +1 -1
  179. package/build-module/autocompleters/block.mjs.map +2 -2
  180. package/build-module/components/alignment-control/ui.mjs.map +2 -2
  181. package/build-module/components/background-image-control/index.mjs +2 -2
  182. package/build-module/components/background-image-control/index.mjs.map +2 -2
  183. package/build-module/components/block-alignment-control/ui.mjs +21 -7
  184. package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
  185. package/build-module/components/block-alignment-control/use-available-alignments.mjs +56 -13
  186. package/build-module/components/block-alignment-control/use-available-alignments.mjs.map +2 -2
  187. package/build-module/components/block-allowed-blocks/allowed-blocks-control.mjs.map +2 -2
  188. package/build-module/components/block-bindings/attribute-control.mjs +31 -32
  189. package/build-module/components/block-bindings/attribute-control.mjs.map +2 -2
  190. package/build-module/components/block-bindings/source-fields-list.mjs +25 -30
  191. package/build-module/components/block-bindings/source-fields-list.mjs.map +2 -2
  192. package/build-module/components/block-canvas/index.mjs.map +2 -2
  193. package/build-module/components/block-card/index.mjs +3 -8
  194. package/build-module/components/block-card/index.mjs.map +2 -2
  195. package/build-module/components/block-edit/edit.mjs.map +2 -2
  196. package/build-module/components/block-heading-level-dropdown/index.mjs.map +2 -2
  197. package/build-module/components/block-icon/index.mjs.map +2 -2
  198. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  199. package/build-module/components/block-inspector/index.mjs +29 -10
  200. package/build-module/components/block-inspector/index.mjs.map +2 -2
  201. package/build-module/components/block-keyboard-shortcuts/index.mjs.map +2 -2
  202. package/build-module/components/block-list/block-html.mjs +1 -2
  203. package/build-module/components/block-list/block-html.mjs.map +2 -2
  204. package/build-module/components/block-list/block.mjs +2 -4
  205. package/build-module/components/block-list/block.mjs.map +2 -2
  206. package/build-module/components/block-list/layout.mjs +1 -1
  207. package/build-module/components/block-list/layout.mjs.map +2 -2
  208. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  209. package/build-module/components/block-lock/modal.mjs +1 -3
  210. package/build-module/components/block-lock/modal.mjs.map +2 -2
  211. package/build-module/components/block-parent-selector/index.mjs +8 -5
  212. package/build-module/components/block-parent-selector/index.mjs.map +2 -2
  213. package/build-module/components/block-popover/index.mjs.map +2 -2
  214. package/build-module/components/block-rename/modal.mjs.map +2 -2
  215. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
  216. package/build-module/components/block-styles/utils.mjs.map +2 -2
  217. package/build-module/components/block-switcher/index.mjs.map +2 -2
  218. package/build-module/components/block-toolbar/edit-section-button.mjs.map +2 -2
  219. package/build-module/components/block-toolbar/index.mjs +6 -4
  220. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  221. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  222. package/build-module/components/block-variation-transforms/index.mjs +30 -21
  223. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  224. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  225. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  226. package/build-module/components/border-radius-control/index.mjs.map +2 -2
  227. package/build-module/components/color-palette/with-color-context.mjs.map +2 -2
  228. package/build-module/components/colors/with-colors.mjs.map +2 -2
  229. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  230. package/build-module/components/contrast-checker/index.mjs.map +2 -2
  231. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  232. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +2 -2
  233. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  234. package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
  235. package/build-module/components/font-sizes/with-font-sizes.mjs.map +2 -2
  236. package/build-module/components/global-styles/background-panel.mjs +2 -2
  237. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  238. package/build-module/components/global-styles/border-panel.mjs +2 -2
  239. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  240. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +2 -2
  241. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
  242. package/build-module/components/global-styles/color-panel.mjs +2 -2
  243. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  244. package/build-module/components/global-styles/dimensions-panel.mjs +2 -2
  245. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  246. package/build-module/components/global-styles/filters-panel.mjs +2 -2
  247. package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
  248. package/build-module/components/global-styles/hooks.mjs +1 -0
  249. package/build-module/components/global-styles/hooks.mjs.map +2 -2
  250. package/build-module/components/global-styles/inheritance/index.mjs +2 -2
  251. package/build-module/components/global-styles/inheritance/index.mjs.map +2 -2
  252. package/build-module/components/global-styles/inherited-value-context.mjs +0 -5
  253. package/build-module/components/global-styles/inherited-value-context.mjs.map +2 -2
  254. package/build-module/components/global-styles/state-control-badges.mjs +0 -1
  255. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  256. package/build-module/components/global-styles/state-control.mjs +6 -4
  257. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  258. package/build-module/components/global-styles/text-shadow-panel.mjs +224 -0
  259. package/build-module/components/global-styles/text-shadow-panel.mjs.map +7 -0
  260. package/build-module/components/global-styles/typography-panel.mjs +47 -6
  261. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  262. package/build-module/components/global-styles/typography-utils.mjs.map +2 -2
  263. package/build-module/components/global-styles/utils.mjs.map +2 -2
  264. package/build-module/components/html-element-control/index.mjs +2 -2
  265. package/build-module/components/html-element-control/index.mjs.map +2 -2
  266. package/build-module/components/iframe/index.mjs.map +2 -2
  267. package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
  268. package/build-module/components/image-size-control/index.mjs +2 -2
  269. package/build-module/components/image-size-control/index.mjs.map +2 -2
  270. package/build-module/components/inner-blocks/index.mjs +6 -1
  271. package/build-module/components/inner-blocks/index.mjs.map +2 -2
  272. package/build-module/components/inner-content/index.mjs.map +2 -2
  273. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs +6 -24
  274. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs.map +2 -2
  275. package/build-module/components/inserter/block-patterns-tab/utils.mjs +25 -0
  276. package/build-module/components/inserter/block-patterns-tab/utils.mjs.map +2 -2
  277. package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
  278. package/build-module/components/inserter/hooks/use-insertion-point.mjs.map +2 -2
  279. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  280. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  281. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  282. package/build-module/components/inserter-list-item/index.mjs.map +2 -2
  283. package/build-module/components/inspector-controls/list-view-content-popover.mjs.map +2 -2
  284. package/build-module/components/link-control/search-results.mjs.map +2 -2
  285. package/build-module/components/link-control/use-search-handler.mjs +3 -0
  286. package/build-module/components/link-control/use-search-handler.mjs.map +2 -2
  287. package/build-module/components/list-view/branch.mjs.map +2 -2
  288. package/build-module/components/list-view/drop-indicator.mjs.map +2 -2
  289. package/build-module/components/list-view/index.mjs.map +2 -2
  290. package/build-module/components/list-view/use-list-view-drop-zone.mjs.map +2 -2
  291. package/build-module/components/list-view/utils.mjs.map +2 -2
  292. package/build-module/components/media-replace-flow/index.mjs +4 -1
  293. package/build-module/components/media-replace-flow/index.mjs.map +2 -2
  294. package/build-module/components/plain-text/index.mjs +1 -2
  295. package/build-module/components/plain-text/index.mjs.map +2 -2
  296. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  297. package/build-module/components/provider/index.mjs +3 -1
  298. package/build-module/components/provider/index.mjs.map +2 -2
  299. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  300. package/build-module/components/publish-date-time-picker/index.mjs.map +2 -2
  301. package/build-module/components/resizable-box-popover/index.mjs +1 -1
  302. package/build-module/components/resizable-box-popover/index.mjs.map +1 -1
  303. package/build-module/components/resolution-tool/index.mjs +2 -2
  304. package/build-module/components/resolution-tool/index.mjs.map +2 -2
  305. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -22
  306. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  307. package/build-module/components/rich-text/format-edit.mjs.map +2 -2
  308. package/build-module/components/rich-text/index.mjs +21 -0
  309. package/build-module/components/rich-text/index.mjs.map +2 -2
  310. package/build-module/components/rich-text/multiline.mjs +11 -3
  311. package/build-module/components/rich-text/multiline.mjs.map +2 -2
  312. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.mjs.map +2 -2
  313. package/build-module/components/typewriter/index.mjs.map +2 -2
  314. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  315. package/build-module/components/writing-flow/index.mjs +3 -0
  316. package/build-module/components/writing-flow/index.mjs.map +2 -2
  317. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  318. package/build-module/components/writing-flow/use-selection-observer.mjs +5 -3
  319. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  320. package/build-module/hooks/align.mjs +6 -6
  321. package/build-module/hooks/align.mjs.map +2 -2
  322. package/build-module/hooks/background.mjs.map +2 -2
  323. package/build-module/hooks/block-bindings.mjs.map +2 -2
  324. package/build-module/hooks/border.mjs.map +2 -2
  325. package/build-module/hooks/contrast-checker.mjs.map +2 -2
  326. package/build-module/hooks/dimensions.mjs.map +2 -2
  327. package/build-module/hooks/duotone.mjs.map +2 -2
  328. package/build-module/hooks/elements.mjs.map +2 -2
  329. package/build-module/hooks/fit-text.mjs.map +2 -2
  330. package/build-module/hooks/gap.mjs +2 -1
  331. package/build-module/hooks/gap.mjs.map +2 -2
  332. package/build-module/hooks/index.mjs +4 -2
  333. package/build-module/hooks/index.mjs.map +2 -2
  334. package/build-module/hooks/layout-child.mjs.map +2 -2
  335. package/build-module/hooks/layout.mjs +6 -5
  336. package/build-module/hooks/layout.mjs.map +2 -2
  337. package/build-module/hooks/position.mjs +5 -33
  338. package/build-module/hooks/position.mjs.map +2 -2
  339. package/build-module/hooks/states.mjs +3 -2
  340. package/build-module/hooks/states.mjs.map +2 -2
  341. package/build-module/hooks/text-shadow.mjs +65 -0
  342. package/build-module/hooks/text-shadow.mjs.map +7 -0
  343. package/build-module/hooks/typography.mjs +30 -6
  344. package/build-module/hooks/typography.mjs.map +2 -2
  345. package/build-module/hooks/utils.mjs +24 -2
  346. package/build-module/hooks/utils.mjs.map +2 -2
  347. package/build-module/layouts/grid.mjs.map +2 -2
  348. package/build-module/layouts/utils.mjs +5 -1
  349. package/build-module/layouts/utils.mjs.map +2 -2
  350. package/build-module/private-apis.mjs +6 -2
  351. package/build-module/private-apis.mjs.map +2 -2
  352. package/build-module/store/actions.mjs +28 -5
  353. package/build-module/store/actions.mjs.map +3 -3
  354. package/build-module/store/private-selectors.mjs.map +2 -2
  355. package/build-module/store/reducer.mjs.map +2 -2
  356. package/build-module/store/selectors.mjs.map +2 -2
  357. package/build-module/utils/get-font-styles-and-weights.mjs.map +2 -2
  358. package/build-module/utils/transform-styles/index.mjs.map +1 -1
  359. package/build-style/content-rtl.css +7 -2
  360. package/build-style/content.css +7 -2
  361. package/build-style/style-rtl.css +90 -25
  362. package/build-style/style.css +92 -25
  363. package/package.json +42 -43
  364. package/src/autocompleters/block.jsx +4 -4
  365. package/src/components/alignment-control/ui.jsx +1 -1
  366. package/src/components/background-image-control/index.jsx +3 -3
  367. package/src/components/block-alignment-control/test/index.jsdom.test.jsx +267 -0
  368. package/src/components/block-alignment-control/ui.jsx +47 -9
  369. package/src/components/block-alignment-control/use-available-alignments.js +106 -20
  370. package/src/components/block-allowed-blocks/allowed-blocks-control.jsx +1 -1
  371. package/src/components/block-bindings/attribute-control.jsx +27 -29
  372. package/src/components/block-bindings/source-fields-list.jsx +22 -32
  373. package/src/components/block-bindings/test/attribute-control.jsdom.test.jsx +115 -0
  374. package/src/components/block-canvas/index.jsx +1 -1
  375. package/src/components/block-card/index.jsx +5 -11
  376. package/src/components/block-card/style.scss +1 -0
  377. package/src/components/block-edit/edit.jsx +1 -1
  378. package/src/components/block-heading-level-dropdown/index.jsx +1 -1
  379. package/src/components/block-icon/index.jsx +1 -1
  380. package/src/components/block-icon/test/index.browser.test.jsx +74 -0
  381. package/src/components/block-inspector/edit-contents.jsx +2 -2
  382. package/src/components/block-inspector/index.jsx +46 -15
  383. package/src/components/block-inspector/style.scss +16 -0
  384. package/src/components/block-keyboard-shortcuts/index.jsx +2 -2
  385. package/src/components/block-list/block-html.jsx +2 -3
  386. package/src/components/block-list/block.jsx +7 -5
  387. package/src/components/block-list/content.scss +3 -2
  388. package/src/components/block-list/layout.jsx +4 -1
  389. package/src/components/block-list/test/layout.jsdom.test.js +40 -0
  390. package/src/components/block-list/use-block-props/index.js +1 -1
  391. package/src/components/block-lock/modal.jsx +2 -3
  392. package/src/components/block-lock/style.scss +1 -1
  393. package/src/components/block-mover/style.scss +0 -13
  394. package/src/components/block-parent-selector/index.jsx +12 -6
  395. package/src/components/block-patterns-list/style.scss +1 -1
  396. package/src/components/block-popover/index.jsx +1 -1
  397. package/src/components/block-rename/modal.jsx +3 -3
  398. package/src/components/block-settings-menu/block-settings-dropdown.jsx +1 -1
  399. package/src/components/block-styles/utils.js +1 -1
  400. package/src/components/block-switcher/index.jsx +3 -3
  401. package/src/components/block-toolbar/edit-section-button.jsx +2 -2
  402. package/src/components/block-toolbar/index.jsx +8 -4
  403. package/src/components/block-toolbar/switch-section-style.jsx +1 -1
  404. package/src/components/block-variation-transforms/index.jsx +24 -23
  405. package/src/components/block-variation-transforms/test/index.jsdom.test.jsx +93 -0
  406. package/src/components/block-visibility/modal.jsx +7 -7
  407. package/src/components/block-visibility/style.scss +1 -1
  408. package/src/components/block-visibility/viewport-visibility-info.jsx +5 -7
  409. package/src/components/border-radius-control/index.jsx +2 -2
  410. package/src/components/border-radius-control/test/index.jsdom.test.jsx +0 -22
  411. package/src/components/border-radius-control/test/select.browser.test.js +30 -0
  412. package/src/components/color-palette/with-color-context.jsx +1 -1
  413. package/src/components/colors/with-colors.jsx +1 -1
  414. package/src/components/colors-gradients/control.jsx +2 -2
  415. package/src/components/colors-gradients/test/{control.jsdom.test.jsx → control.browser.test.jsx} +6 -9
  416. package/src/components/contrast-checker/index.jsx +2 -2
  417. package/src/components/date-format-picker/index.jsx +2 -2
  418. package/src/components/dimensions-tool/aspect-ratio-tool.jsx +4 -4
  419. package/src/components/dimensions-tool/test/index.jsdom.test.jsx +17 -11
  420. package/src/components/dimensions-tool/width-height-tool.jsx +2 -2
  421. package/src/components/font-sizes/with-font-sizes.jsx +2 -3
  422. package/src/components/global-styles/background-panel.jsx +2 -2
  423. package/src/components/global-styles/border-panel.jsx +2 -2
  424. package/src/components/global-styles/color-gradient-dropdown-item.jsx +3 -3
  425. package/src/components/global-styles/color-panel.jsx +3 -3
  426. package/src/components/global-styles/dimensions-panel.jsx +6 -6
  427. package/src/components/global-styles/filters-panel.jsx +2 -2
  428. package/src/components/global-styles/hooks.js +1 -0
  429. package/src/components/global-styles/inheritance/index.jsx +9 -6
  430. package/src/components/global-styles/inheritance/test/{index.jsdom.test.jsx → index.browser.test.jsx} +34 -28
  431. package/src/components/global-styles/inherited-value-context.js +1 -9
  432. package/src/components/global-styles/state-control-badges.jsx +0 -1
  433. package/src/components/global-styles/state-control.jsx +12 -3
  434. package/src/components/global-styles/style.scss +68 -0
  435. package/src/components/global-styles/test/{color-panel.jsdom.test.jsx → color-panel.browser.test.jsx} +53 -54
  436. package/src/components/global-styles/test/inherited-value-context-core.jsdom.test.js +17 -26
  437. package/src/components/global-styles/test/{typography-panel-core.jsdom.test.jsx → typography-panel-core.browser.test.jsx} +84 -39
  438. package/src/components/global-styles/test/{typography-panel.jsdom.test.jsx → typography-panel.browser.test.jsx} +80 -122
  439. package/src/components/global-styles/text-shadow-panel.tsx +257 -0
  440. package/src/components/global-styles/typography-panel.jsx +52 -13
  441. package/src/components/global-styles/typography-utils.js +2 -2
  442. package/src/components/global-styles/utils.js +1 -1
  443. package/src/components/html-element-control/index.jsx +2 -2
  444. package/src/components/iframe/index.jsx +1 -1
  445. package/src/components/iframe/use-scale-canvas.js +1 -1
  446. package/src/components/image-size-control/index.jsx +2 -2
  447. package/src/components/inner-blocks/index.jsx +9 -1
  448. package/src/components/inner-content/index.jsx +1 -1
  449. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +7 -33
  450. package/src/components/inserter/block-patterns-tab/utils.js +44 -0
  451. package/src/components/inserter/hooks/use-block-types-state.js +2 -2
  452. package/src/components/inserter/hooks/use-insertion-point.js +1 -1
  453. package/src/components/inserter/hooks/use-patterns-state.js +1 -1
  454. package/src/components/inserter/media-tab/media-panel.jsx +9 -9
  455. package/src/components/inserter/media-tab/media-preview.jsx +1 -1
  456. package/src/components/inserter-list-item/index.jsx +1 -1
  457. package/src/components/inserter-list-item/style.scss +2 -2
  458. package/src/components/inspector-controls/list-view-content-popover.jsx +1 -1
  459. package/src/components/link-control/search-results.jsx +1 -1
  460. package/src/components/link-control/style.scss +1 -1
  461. package/src/components/link-control/test/index.jsdom.test.jsx +38 -110
  462. package/src/components/link-control/test/keyboard-selection.browser.test.js +110 -0
  463. package/src/components/link-control/use-search-handler.js +8 -3
  464. package/src/components/list-view/branch.jsx +1 -1
  465. package/src/components/list-view/drop-indicator.jsx +3 -3
  466. package/src/components/list-view/index.jsx +1 -1
  467. package/src/components/list-view/style.scss +1 -9
  468. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  469. package/src/components/list-view/utils.js +1 -1
  470. package/src/components/media-replace-flow/index.jsx +4 -1
  471. package/src/components/navigable-toolbar/test/index.browser.test.js +6 -7
  472. package/src/components/plain-text/README.md +3 -2
  473. package/src/components/plain-text/content.scss +0 -1
  474. package/src/components/plain-text/index.jsx +2 -3
  475. package/src/components/plain-text/style.scss +4 -0
  476. package/src/components/preset-input-control/index.jsx +2 -2
  477. package/src/components/preset-input-control/test/index.jsdom.test.jsx +0 -56
  478. package/src/components/preset-input-control/test/interaction.browser.test.js +63 -0
  479. package/src/components/provider/index.jsx +5 -3
  480. package/src/components/provider/use-block-sync.js +5 -5
  481. package/src/components/publish-date-time-picker/index.jsx +1 -1
  482. package/src/components/resizable-box-popover/index.jsx +1 -1
  483. package/src/components/resolution-tool/index.jsx +2 -2
  484. package/src/components/responsive-block-control/style.scss +1 -2
  485. package/src/components/responsive-block-control/test/index.jsdom.test.jsx +2 -2
  486. package/src/components/rich-text/event-listeners/enter.js +16 -23
  487. package/src/components/rich-text/format-edit.jsx +1 -1
  488. package/src/components/rich-text/index.jsx +39 -2
  489. package/src/components/rich-text/multiline.jsx +11 -3
  490. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  491. package/src/components/spacing-sizes-control/test/index.jsdom.test.jsx +0 -21
  492. package/src/components/spacing-sizes-control/test/select.browser.test.js +58 -0
  493. package/src/components/typewriter/index.jsx +1 -1
  494. package/src/components/url-input/test/fixtures/validated-input-control-deprecation.js +1 -1
  495. package/src/components/use-block-commands/index.js +1 -1
  496. package/src/components/use-block-drop-zone/test/index.js +2 -2
  497. package/src/components/writing-flow/index.jsx +8 -0
  498. package/src/components/writing-flow/use-clipboard-handler.js +1 -1
  499. package/src/components/writing-flow/use-selection-observer.js +15 -6
  500. package/src/content.scss +1 -0
  501. package/src/hooks/align.jsx +22 -6
  502. package/src/hooks/background.jsx +1 -1
  503. package/src/hooks/block-bindings.jsx +1 -1
  504. package/src/hooks/block-hooks.scss +0 -6
  505. package/src/hooks/border.jsx +2 -2
  506. package/src/hooks/contrast-checker.js +1 -1
  507. package/src/hooks/dimensions.jsx +2 -2
  508. package/src/hooks/duotone.jsx +3 -3
  509. package/src/hooks/elements.jsx +3 -3
  510. package/src/hooks/fit-text.jsx +1 -1
  511. package/src/hooks/gap.js +2 -4
  512. package/src/hooks/index.js +3 -1
  513. package/src/hooks/layout-child.jsx +3 -4
  514. package/src/hooks/layout.jsx +17 -18
  515. package/src/hooks/position.jsx +5 -36
  516. package/src/hooks/states.jsx +6 -2
  517. package/src/hooks/test/layout.jsdom.test.js +44 -1
  518. package/src/hooks/text-shadow.ts +105 -0
  519. package/src/hooks/typography.jsx +58 -30
  520. package/src/hooks/utils.jsx +23 -1
  521. package/src/layouts/grid.jsx +2 -2
  522. package/src/layouts/test/flex.jsdom.test.jsx +4 -3
  523. package/src/layouts/test/utils.js +48 -1
  524. package/src/layouts/utils.js +19 -0
  525. package/src/private-apis.js +4 -0
  526. package/src/store/actions.js +50 -10
  527. package/src/store/private-selectors.js +5 -5
  528. package/src/store/reducer.js +6 -6
  529. package/src/store/selectors.js +3 -3
  530. package/src/store/test/actions.jsdom.test.js +60 -0
  531. package/src/style.scss +1 -0
  532. package/src/utils/get-font-styles-and-weights.ts +1 -1
  533. package/src/utils/transform-styles/index.ts +1 -1
  534. package/build/hooks/cross-origin-isolation.cjs +0 -56
  535. package/build/hooks/cross-origin-isolation.cjs.map +0 -7
  536. package/build-module/hooks/cross-origin-isolation.mjs +0 -54
  537. package/build-module/hooks/cross-origin-isolation.mjs.map +0 -7
  538. package/src/components/block-icon/test/__snapshots__/index.jsdom.test.jsx.snap +0 -27
  539. package/src/components/block-icon/test/index.jsdom.test.jsx +0 -67
  540. package/src/hooks/cross-origin-isolation.js +0 -73
  541. package/src/hooks/test/cross-origin-isolation.jsdom.test.js +0 -173
@@ -1,13 +1,9 @@
1
1
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { act, render, renderHook, screen } from '@testing-library/react';
3
- import userEvent from '@testing-library/user-event';
4
- import { click, render as renderAriakit } from '@ariakit/test/react';
2
+ import { userEvent } from 'vitest/browser';
3
+ import { screen } from '@testing-library/react';
4
+ import { render, renderHook } from 'vitest-browser-react';
5
5
  import TypographyPanel, { useHasTypographyPanel } from '../typography-panel';
6
6
 
7
- globalThis.wpVitest.mockMatchMedia();
8
-
9
- globalThis.wpVitest.mockResizeObserver();
10
-
11
7
  // The inheritance treatment sits behind the
12
8
  // `gutenberg-global-styles-inheritance-ui` experiment. Turn it on so these
13
9
  // tests exercise the inheriting path. The off path lives in
@@ -20,27 +16,6 @@ afterEach( () => {
20
16
  delete window.__experimentalGlobalStylesInheritanceUI;
21
17
  } );
22
18
 
23
- /**
24
- * Render helper that flushes async state effects from Ariakit-based
25
- * controls (CustomSelectControl, FontAppearanceControl, FontFamily) so
26
- * tests don't trip the strict `console.error` rule on
27
- * "An update to %s inside a test was not wrapped in act(...)".
28
- *
29
- * The first microtask flush handles Ariakit's `useLayoutEffect`-driven
30
- * state updates that cannot be wrapped by `render()`'s implicit act.
31
- *
32
- * @param {React.ReactElement} ui React element to render.
33
- * @return {ReturnType<typeof render>} The settled `render()` result, including `container`, `rerender`, etc.
34
- */
35
- async function renderAndSettle( ui ) {
36
- let result;
37
- // eslint-disable-next-line testing-library/no-unnecessary-act -- Ariakit `useLayoutEffect` chains in CustomSelect / FontAppearance / FontFamily emit state updates outside RTL's implicit act, so we must wrap render explicitly.
38
- await act( async () => {
39
- result = render( ui );
40
- } );
41
- return result;
42
- }
43
-
44
19
  /**
45
20
  * Renders `TypographyPanel` with sensible defaults so tests only pass the
46
21
  * props they actually care about (usually `value` and `inheritedValue`).
@@ -48,27 +23,8 @@ async function renderAndSettle( ui ) {
48
23
  * @param {Object} props Props to override the defaults.
49
24
  * @return {ReturnType<typeof render>} The `render()` result.
50
25
  */
51
- function renderPanel( props ) {
52
- return render(
53
- <TypographyPanel
54
- value={ {} }
55
- settings={ baseSettings }
56
- onChange={ () => {} }
57
- panelId="test-panel"
58
- { ...props }
59
- />
60
- );
61
- }
62
-
63
- /**
64
- * Async variant of `renderPanel` for controls (Ariakit-based) that need
65
- * their effects flushed. See `renderAndSettle`.
66
- *
67
- * @param {Object} props Props to override the defaults.
68
- * @return {Promise<ReturnType<typeof render>>} The settled `render()` result.
69
- */
70
- function renderPanelAndSettle( props ) {
71
- return renderAndSettle(
26
+ async function renderPanel( props ) {
27
+ return await render(
72
28
  <TypographyPanel
73
29
  value={ {} }
74
30
  settings={ baseSettings }
@@ -135,7 +91,7 @@ const settingsWithFonts = {
135
91
  };
136
92
 
137
93
  describe( 'TypographyPanel — inheritedValue round-trip', () => {
138
- it( 'renders a numeric leaf from `inheritedValue` as the control value when `value` is empty', () => {
94
+ it( 'renders a numeric leaf from `inheritedValue` as the control value when `value` is empty', async () => {
139
95
  // LineHeightControl uses the local-then-inherited pattern: the
140
96
  // inherited value is rendered as the control's value (so the
141
97
  // numeric stepper increments from the inherited base) and an
@@ -145,13 +101,13 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
145
101
  typography: { lineHeight: '1.7' },
146
102
  };
147
103
 
148
- renderPanel( { inheritedValue } );
104
+ await renderPanel( { inheritedValue } );
149
105
 
150
106
  const lineHeightInput = screen.getByLabelText( /line height/i );
151
107
  expect( lineHeightInput ).toHaveValue( 1.7 );
152
108
  } );
153
109
 
154
- it( 'renders an integer leaf from `inheritedValue` as placeholder when `value` is empty', () => {
110
+ it( 'renders an integer leaf from `inheritedValue` as placeholder when `value` is empty', async () => {
155
111
  // Placeholder-capable controls communicate the inherited value
156
112
  // via the native `placeholder` attribute rather than as the
157
113
  // rendered `value`, so users can distinguish local values from
@@ -160,7 +116,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
160
116
  typography: { textColumns: 3 },
161
117
  };
162
118
 
163
- renderPanel( { inheritedValue } );
119
+ await renderPanel( { inheritedValue } );
164
120
 
165
121
  const columnsInput = screen.getByLabelText( /columns/i );
166
122
  // No locally-set value; the rendered value is empty.
@@ -170,7 +126,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
170
126
  expect( columnsInput ).toHaveAttribute( 'placeholder', '3' );
171
127
  } );
172
128
 
173
- it( 'renders a locally-set integer leaf as the value, with no placeholder, even when `inheritedValue` also defines it', () => {
129
+ it( 'renders a locally-set integer leaf as the value, with no placeholder, even when `inheritedValue` also defines it', async () => {
174
130
  // Local override wins over the inherited value, and there is
175
131
  // no placeholder treatment because the user has committed a
176
132
  // value of their own.
@@ -181,18 +137,18 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
181
137
  typography: { textColumns: 5 },
182
138
  };
183
139
 
184
- renderPanel( { value, inheritedValue } );
140
+ await renderPanel( { value, inheritedValue } );
185
141
 
186
142
  const columnsInput = screen.getByLabelText( /columns/i );
187
143
  expect( columnsInput ).toHaveValue( 5 );
188
144
  expect( columnsInput ).not.toHaveAttribute( 'placeholder' );
189
145
  } );
190
146
 
191
- it( 'shows no placeholder for an integer leaf when `inheritedValue` also omits it', () => {
147
+ it( 'shows no placeholder for an integer leaf when `inheritedValue` also omits it', async () => {
192
148
  // Without an inherited value, there is nothing to communicate
193
149
  // as a placeholder; the input renders as an ordinary empty
194
150
  // NumberControl.
195
- renderPanel( { inheritedValue: {} } );
151
+ await renderPanel( { inheritedValue: {} } );
196
152
 
197
153
  const columnsInput = screen.getByLabelText( /columns/i );
198
154
  expect( columnsInput ).toHaveValue( null );
@@ -202,13 +158,13 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
202
158
  it( 'commits a local override on user input without copying the inherited value into other paths', async () => {
203
159
  // A local commit writes only the path the user touched. The
204
160
  // inherited value is never copied into local attributes by typing.
205
- const user = userEvent.setup();
161
+ const user = userEvent;
206
162
  const onChange = vi.fn();
207
163
  const inheritedValue = {
208
164
  typography: { textColumns: 3, lineHeight: '1.7' },
209
165
  };
210
166
 
211
- renderPanel( { inheritedValue, onChange } );
167
+ await renderPanel( { inheritedValue, onChange } );
212
168
 
213
169
  const columnsInput = screen.getByLabelText( /columns/i );
214
170
  await user.type( columnsInput, '2' );
@@ -230,7 +186,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
230
186
  expect( lastCall.typography ).not.toHaveProperty( 'lineHeight' );
231
187
  } );
232
188
 
233
- it( 'returns to placeholder rendering after a local override is reset', () => {
189
+ it( 'returns to placeholder rendering after a local override is reset', async () => {
234
190
  // Reset clears the local attribute so the inherited value
235
191
  // re-surfaces via placeholder. We simulate the reset by
236
192
  // re-rendering with `value` cleared (the same effect
@@ -240,7 +196,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
240
196
  typography: { textColumns: 3 },
241
197
  };
242
198
 
243
- const { rerender } = renderPanel( {
199
+ const { rerender } = await renderPanel( {
244
200
  value: { typography: { textColumns: 5 } },
245
201
  inheritedValue,
246
202
  } );
@@ -252,7 +208,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
252
208
  );
253
209
 
254
210
  // Reset: local value cleared.
255
- rerender(
211
+ await rerender(
256
212
  <TypographyPanel
257
213
  value={ {} }
258
214
  inheritedValue={ inheritedValue }
@@ -268,7 +224,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
268
224
  expect( columnsInput ).toHaveAttribute( 'placeholder', '3' );
269
225
  } );
270
226
 
271
- it( 'renders a locally-set numeric leaf as the value, with no placeholder, even when `inheritedValue` also defines it', () => {
227
+ it( 'renders a locally-set numeric leaf as the value, with no placeholder, even when `inheritedValue` also defines it', async () => {
272
228
  // Local values remain the source of truth when both local and
273
229
  // inherited values are present.
274
230
  const inheritedValue = {
@@ -278,13 +234,13 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
278
234
  typography: { lineHeight: '1.4' },
279
235
  };
280
236
 
281
- renderPanel( { value, inheritedValue } );
237
+ await renderPanel( { value, inheritedValue } );
282
238
 
283
239
  const lineHeightInput = screen.getByLabelText( /line height/i );
284
240
  expect( lineHeightInput ).toHaveValue( 1.4 );
285
241
  } );
286
242
 
287
- it( 'renders a unit-string leaf from `inheritedValue` as the control value when `value` is empty', () => {
243
+ it( 'renders a unit-string leaf from `inheritedValue` as the control value when `value` is empty', async () => {
288
244
  // LetterSpacingControl uses the local-then-inherited pattern: the
289
245
  // inherited value is rendered as the control's value (so the unit
290
246
  // parses from it rather than sitting behind a default px unit) and an
@@ -294,7 +250,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
294
250
  typography: { letterSpacing: '0.5px' },
295
251
  };
296
252
 
297
- renderPanel( { inheritedValue } );
253
+ await renderPanel( { inheritedValue } );
298
254
 
299
255
  const letterSpacingInput = screen.getByLabelText( /letter spacing/i );
300
256
  expect( letterSpacingInput ).toHaveValue( 0.5 );
@@ -308,7 +264,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
308
264
  );
309
265
  } );
310
266
 
311
- it( 'renders a locally-set unit-string leaf as the value, with no placeholder, even when `inheritedValue` also defines it', () => {
267
+ it( 'renders a locally-set unit-string leaf as the value, with no placeholder, even when `inheritedValue` also defines it', async () => {
312
268
  const inheritedValue = {
313
269
  typography: { letterSpacing: '0.5px' },
314
270
  };
@@ -316,14 +272,14 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
316
272
  typography: { letterSpacing: '2px' },
317
273
  };
318
274
 
319
- renderPanel( { value, inheritedValue } );
275
+ await renderPanel( { value, inheritedValue } );
320
276
 
321
277
  const letterSpacingInput = screen.getByLabelText( /letter spacing/i );
322
278
  expect( letterSpacingInput ).toHaveValue( 2 );
323
279
  expect( letterSpacingInput ).not.toHaveAttribute( 'placeholder' );
324
280
  } );
325
281
 
326
- it( 'value for one input does not leak when other inputs are committed', () => {
282
+ it( 'value for one input does not leak when other inputs are committed', async () => {
327
283
  // A locally-set lineHeight should not affect the inherited value
328
284
  // rendering for letterSpacing, and vice versa. Each control's
329
285
  // local/inherited resolution is computed independently from its own
@@ -335,7 +291,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
335
291
  typography: { lineHeight: '1.4' },
336
292
  };
337
293
 
338
- renderPanel( { value, inheritedValue } );
294
+ await renderPanel( { value, inheritedValue } );
339
295
 
340
296
  // lineHeight: locally-set, not at-rest.
341
297
  const lineHeightInput = screen.getByLabelText( /line height/i );
@@ -346,24 +302,24 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
346
302
  expect( letterSpacingInput ).toHaveValue( 0.5 );
347
303
  } );
348
304
 
349
- it( 'falls back to `value` when `inheritedValue` is omitted (pre-feature behaviour is preserved)', () => {
305
+ it( 'falls back to `value` when `inheritedValue` is omitted (pre-feature behaviour is preserved)', async () => {
350
306
  // The `inheritedValue = value` default keeps call sites that
351
307
  // have not yet opted into separate inherited data on the existing
352
308
  // code path: no placeholder, no local-value regression.
353
- renderPanel( { value: { typography: { lineHeight: '1.9' } } } );
309
+ await renderPanel( { value: { typography: { lineHeight: '1.9' } } } );
354
310
 
355
311
  expect( screen.getByLabelText( /line height/i ) ).toHaveValue( 1.9 );
356
312
  } );
357
313
 
358
- it( 'renders nothing for a leaf when both `value` and `inheritedValue` omit it', () => {
359
- renderPanel( { inheritedValue: {} } );
314
+ it( 'renders nothing for a leaf when both `value` and `inheritedValue` omit it', async () => {
315
+ await renderPanel( { inheritedValue: {} } );
360
316
 
361
317
  // An empty NumberControl input has no `value` attribute applied;
362
318
  // RTL returns `null` (not `0`, not the empty string) for that case.
363
319
  expect( screen.getByLabelText( /line height/i ) ).toHaveValue( null );
364
320
  } );
365
321
 
366
- it( 'accepts a `var:preset|font-size|…` leaf in `inheritedValue` without throwing', () => {
322
+ it( 'accepts a `var:preset|font-size|…` leaf in `inheritedValue` without throwing', async () => {
367
323
  // This verifies the panel accepts preset-shaped inherited values
368
324
  // at its prop boundary and renders the Font size control. The
369
325
  // decoded value flows through the panel's internal `decodeValue`
@@ -374,9 +330,9 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
374
330
  typography: { fontSize: 'var:preset|font-size|large' },
375
331
  };
376
332
 
377
- expect( () => {
378
- renderPanel( { inheritedValue } );
379
- } ).not.toThrow();
333
+ await expect(
334
+ renderPanel( { inheritedValue } )
335
+ ).resolves.toBeDefined();
380
336
 
381
337
  // The Font size ToolsPanelItem label is rendered in the DOM.
382
338
  expect( screen.getAllByText( /font size/i ).length ).toBeGreaterThan(
@@ -390,7 +346,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
390
346
  typography: { textDecoration: 'underline' },
391
347
  };
392
348
 
393
- await renderPanelAndSettle( { inheritedValue } );
349
+ await renderPanel( { inheritedValue } );
394
350
 
395
351
  // The inherited option is rendered as the pressed one.
396
352
  // `TextDecorationControl` uses `isDeselectable=true` so the
@@ -423,7 +379,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
423
379
  },
424
380
  };
425
381
 
426
- await renderPanelAndSettle( {
382
+ await renderPanel( {
427
383
  inheritedValue,
428
384
  settings: settingsWithFonts,
429
385
  onChange,
@@ -439,13 +395,13 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
439
395
  // inherited value to the local payload. The interceptor
440
396
  // bypasses the inner ToggleGroupControl's equality
441
397
  // short-circuit which would otherwise emit `undefined`.
442
- const user = userEvent.setup();
398
+ const user = userEvent;
443
399
  const onChange = vi.fn();
444
400
  const inheritedValue = {
445
401
  typography: { textDecoration: 'underline' },
446
402
  };
447
403
 
448
- await renderPanelAndSettle( { inheritedValue, onChange } );
404
+ await renderPanel( { inheritedValue, onChange } );
449
405
 
450
406
  // Click the already-preselected "Underline" option (a
451
407
  // button under `isDeselectable` ToggleGroupControl).
@@ -474,7 +430,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
474
430
  typography: { textDecoration: 'line-through' },
475
431
  };
476
432
 
477
- await renderPanelAndSettle( {
433
+ await renderPanel( {
478
434
  value,
479
435
  inheritedValue,
480
436
  } );
@@ -494,7 +450,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
494
450
  typography: { textIndent: '2rem' },
495
451
  };
496
452
 
497
- await renderPanelAndSettle( { inheritedValue } );
453
+ await renderPanel( { inheritedValue } );
498
454
 
499
455
  // `TextIndentControl` in `withSlider` mode renders both a
500
456
  // UnitControl number input AND a RangeControl slider with
@@ -518,7 +474,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
518
474
  typography: { textIndent: '4rem' },
519
475
  };
520
476
 
521
- await renderPanelAndSettle( { value, inheritedValue } );
477
+ await renderPanel( { value, inheritedValue } );
522
478
 
523
479
  const indentInput = screen.getByRole( 'spinbutton', {
524
480
  name: /line indent/i,
@@ -535,7 +491,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
535
491
  typography: { fontStyle: 'italic', fontWeight: '700' },
536
492
  };
537
493
 
538
- await renderPanelAndSettle( {
494
+ await renderPanel( {
539
495
  inheritedValue,
540
496
  settings: settingsWithFonts,
541
497
  onChange,
@@ -552,7 +508,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
552
508
  typography: { fontFamily: 'Georgia, serif' },
553
509
  };
554
510
 
555
- await renderPanelAndSettle( {
511
+ await renderPanel( {
556
512
  inheritedValue,
557
513
  settings: settingsWithFonts,
558
514
  onChange,
@@ -566,12 +522,12 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
566
522
  // These tests cover preset decoding and explicit-empty values at
567
523
  // the panel render boundary.
568
524
 
569
- it( 'decodes a preset fontSize for placeholder display, never leaking the raw preset string', () => {
525
+ it( 'decodes a preset fontSize for placeholder display, never leaking the raw preset string', async () => {
570
526
  const inheritedValue = {
571
527
  typography: { fontSize: 'var:preset|font-size|large' },
572
528
  };
573
529
 
574
- const { container } = renderPanel( { inheritedValue } );
530
+ const { container } = await renderPanel( { inheritedValue } );
575
531
 
576
532
  // The decoded human-readable value (`24px`, from the
577
533
  // `large` preset in `baseSettings`) is what reaches the
@@ -587,7 +543,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
587
543
 
588
544
  it.each( [ '', null ] )(
589
545
  'does not render the at-rest placeholder cue when inheritedValue.typography.lineHeight is explicit-empty (%p)',
590
- ( emptyValue ) => {
546
+ async ( emptyValue ) => {
591
547
  // Note on `{}` empty-object: the resolver
592
548
  // (`resolveStyle` →
593
549
  // `pickLayerRootContribution`) drops `{}` at the
@@ -604,7 +560,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
604
560
  typography: { lineHeight: emptyValue },
605
561
  };
606
562
 
607
- renderPanel( { inheritedValue } );
563
+ await renderPanel( { inheritedValue } );
608
564
 
609
565
  const lineHeightInput = screen.getByLabelText( /line height/i );
610
566
  expect( lineHeightInput ).toHaveValue( null );
@@ -626,13 +582,13 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
626
582
  typography: { fontSize: 'var:preset|font-size|large' },
627
583
  };
628
584
 
629
- await renderPanelAndSettle( { inheritedValue, onChange } );
585
+ await renderPanel( { inheritedValue, onChange } );
630
586
 
631
587
  expect( onChange ).not.toHaveBeenCalled();
632
588
  } );
633
589
  } );
634
590
 
635
- it( 'treats local zero values as local overrides instead of inherited placeholders', () => {
591
+ it( 'treats local zero values as local overrides instead of inherited placeholders', async () => {
636
592
  const inheritedValue = {
637
593
  typography: { lineHeight: '2', textColumns: 3 },
638
594
  };
@@ -640,7 +596,7 @@ describe( 'TypographyPanel — inheritedValue round-trip', () => {
640
596
  typography: { lineHeight: 0, textColumns: 0 },
641
597
  };
642
598
 
643
- renderPanel( { value, inheritedValue } );
599
+ await renderPanel( { value, inheritedValue } );
644
600
 
645
601
  const lineHeightInput = screen.getByLabelText( /line height/i );
646
602
  expect( lineHeightInput ).toHaveValue( 0 );
@@ -675,15 +631,15 @@ const settingsWithColors = ( overrides = {} ) => ( {
675
631
  describe( 'useHasTypographyPanel', () => {
676
632
  // After moving top-level text color into TypographyPanel, text color
677
633
  // alone should be enough to open the panel.
678
- it( 'should be true when only text color is enabled', () => {
679
- const { result } = renderHook( () =>
634
+ it( 'should be true when only text color is enabled', async () => {
635
+ const { result } = await renderHook( () =>
680
636
  useHasTypographyPanel( settingsWithColors( { text: true } ) )
681
637
  );
682
638
  expect( result.current ).toBeTruthy();
683
639
  } );
684
640
 
685
- it( 'should be true when only font family is enabled', () => {
686
- const { result } = renderHook( () =>
641
+ it( 'should be true when only font family is enabled', async () => {
642
+ const { result } = await renderHook( () =>
687
643
  useHasTypographyPanel( {
688
644
  typography: {
689
645
  fontFamilies: {
@@ -695,27 +651,29 @@ describe( 'useHasTypographyPanel', () => {
695
651
  expect( result.current ).toBeTruthy();
696
652
  } );
697
653
 
698
- it( 'should be true when only line height is enabled', () => {
699
- const { result } = renderHook( () =>
654
+ it( 'should be true when only line height is enabled', async () => {
655
+ const { result } = await renderHook( () =>
700
656
  useHasTypographyPanel( { typography: { lineHeight: true } } )
701
657
  );
702
658
  expect( result.current ).toBeTruthy();
703
659
  } );
704
660
 
705
- it( 'should be false when no typography or text color controls are enabled', () => {
706
- const { result } = renderHook( () => useHasTypographyPanel( {} ) );
661
+ it( 'should be false when no typography or text color controls are enabled', async () => {
662
+ const { result } = await renderHook( () =>
663
+ useHasTypographyPanel( {} )
664
+ );
707
665
  expect( result.current ).toBeFalsy();
708
666
  } );
709
667
 
710
- it( 'should be false when text color is enabled but no colors or custom support exist', () => {
711
- const { result } = renderHook( () =>
668
+ it( 'should be false when text color is enabled but no colors or custom support exist', async () => {
669
+ const { result } = await renderHook( () =>
712
670
  useHasTypographyPanel( { color: { text: true } } )
713
671
  );
714
672
  expect( result.current ).toBeFalsy();
715
673
  } );
716
674
 
717
- it( 'should be true when text color is enabled with custom colors support', () => {
718
- const { result } = renderHook( () =>
675
+ it( 'should be true when text color is enabled with custom colors support', async () => {
676
+ const { result } = await renderHook( () =>
719
677
  useHasTypographyPanel( { color: { text: true, custom: true } } )
720
678
  );
721
679
  expect( result.current ).toBeTruthy();
@@ -751,7 +709,7 @@ const DUPLICATE_PALETTE_SETTINGS = {
751
709
 
752
710
  // Helper: open the text Color dropdown and return the rendered swatches.
753
711
  async function openTextColorDropdown() {
754
- await click(
712
+ await userEvent.click(
755
713
  screen.getByRole( 'button', { name: /Color/, expanded: false } )
756
714
  );
757
715
  // `findAllByRole` waits for the Popover/portal content to appear.
@@ -762,7 +720,7 @@ describe( 'TypographyPanel — duplicate-hex preset slug identity', () => {
762
720
  it( 'commits the inherited preset slug when accepting the preselected inherited color', async () => {
763
721
  const onChange = vi.fn();
764
722
 
765
- await renderAriakit(
723
+ await render(
766
724
  <TypographyPanel
767
725
  value={ {} }
768
726
  inheritedValue={ {
@@ -779,14 +737,14 @@ describe( 'TypographyPanel — duplicate-hex preset slug identity', () => {
779
737
  // activating it is the "accept inherited value" gesture. The commit
780
738
  // must carry the inherited slug, not re-encode the shared #000 hex
781
739
  // to whichever duplicate appears first in the palette.
782
- await click( swatches[ 1 ] );
740
+ await userEvent.click( swatches[ 1 ] );
783
741
 
784
742
  const result = onChange.mock.calls[ 0 ][ 0 ];
785
743
  expect( result?.color?.text ).toBe( 'var:preset|color|dark-text' );
786
744
  } );
787
745
 
788
746
  it( 'marks only the local preset as selected when another preset shares its hex', async () => {
789
- await renderAriakit(
747
+ await render(
790
748
  <TypographyPanel
791
749
  value={ { color: { text: 'var:preset|color|dark-text' } } }
792
750
  settings={ DUPLICATE_PALETTE_SETTINGS }
@@ -808,7 +766,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
808
766
  const onChange = vi.fn();
809
767
  const sharedRef = 'var:preset|color|dark-background';
810
768
 
811
- await renderAriakit(
769
+ await render(
812
770
  <TypographyPanel
813
771
  value={ {} }
814
772
  inheritedValue={ {
@@ -823,7 +781,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
823
781
 
824
782
  const swatches = await openTextColorDropdown();
825
783
  // swatch[0] = 'dark-background', swatch[1] = 'dark-text'
826
- await click( swatches[ 1 ] );
784
+ await userEvent.click( swatches[ 1 ] );
827
785
 
828
786
  const result = onChange.mock.calls[ 0 ][ 0 ];
829
787
  expect( result?.color?.text ).toBe( 'var:preset|color|dark-text' );
@@ -836,7 +794,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
836
794
  it( 'does NOT sync the link color when text and link have different raw refs, even if their decoded hex values match', async () => {
837
795
  const onChange = vi.fn();
838
796
 
839
- await renderAriakit(
797
+ await render(
840
798
  <TypographyPanel
841
799
  value={ {} }
842
800
  inheritedValue={ {
@@ -855,7 +813,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
855
813
  );
856
814
 
857
815
  const swatches = await openTextColorDropdown();
858
- await click( swatches[ 1 ] );
816
+ await userEvent.click( swatches[ 1 ] );
859
817
 
860
818
  const result = onChange.mock.calls[ 0 ][ 0 ];
861
819
  expect( result?.color?.text ).toBe( 'var:preset|color|dark-text' );
@@ -871,7 +829,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
871
829
  // track the text color.
872
830
  const onChange = vi.fn();
873
831
 
874
- await renderAriakit(
832
+ await render(
875
833
  <TypographyPanel
876
834
  value={ {
877
835
  elements: {
@@ -889,7 +847,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
889
847
 
890
848
  const swatches = await openTextColorDropdown();
891
849
  // swatch[0] = 'dark-background'
892
- await click( swatches[ 0 ] );
850
+ await userEvent.click( swatches[ 0 ] );
893
851
 
894
852
  const result = onChange.mock.calls[ 0 ][ 0 ];
895
853
  expect( result?.color?.text ).toBe(
@@ -921,7 +879,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
921
879
  },
922
880
  };
923
881
 
924
- await renderAriakit(
882
+ await render(
925
883
  <TypographyPanel
926
884
  value={ {
927
885
  color: { text: sharedRef },
@@ -936,7 +894,7 @@ describe( 'TypographyPanel — setTextColor link sync', () => {
936
894
 
937
895
  const swatches = await openTextColorDropdown();
938
896
  // swatch[1] = 'red'
939
- await click( swatches[ 1 ] );
897
+ await userEvent.click( swatches[ 1 ] );
940
898
 
941
899
  const result = onChange.mock.calls[ 0 ][ 0 ];
942
900
  expect( result?.color?.text ).toBe( 'var:preset|color|red' );
@@ -959,8 +917,8 @@ describe( 'TypographyPanel layout className preserved regardless of inheritance
959
917
  return control.closest( '.components-tools-panel-item' );
960
918
  };
961
919
 
962
- it( 'keeps the single-column layout class when showInheritanceLabelIndicators is false (regression)', () => {
963
- renderPanel( {
920
+ it( 'keeps the single-column layout class when showInheritanceLabelIndicators is false (regression)', async () => {
921
+ await renderPanel( {
964
922
  showInheritanceLabelIndicators: false,
965
923
  value: {},
966
924
  inheritedValue,
@@ -980,8 +938,8 @@ describe( 'TypographyPanel layout className preserved regardless of inheritance
980
938
  );
981
939
  } );
982
940
 
983
- it( 'folds the single-column layout class together with the inherited treatment when indicators are on', () => {
984
- renderPanel( {
941
+ it( 'folds the single-column layout class together with the inherited treatment when indicators are on', async () => {
942
+ await renderPanel( {
985
943
  showInheritanceLabelIndicators: true,
986
944
  value: {},
987
945
  inheritedValue,