@wordpress/components 25.13.0 → 25.15.1-next.79a6196f.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 (743) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/CONTRIBUTING.md +57 -115
  3. package/LICENSE.md +1 -1
  4. package/build/base-control/index.js +17 -13
  5. package/build/base-control/index.js.map +1 -1
  6. package/build/border-box-control/border-box-control-linked-button/component.js +1 -1
  7. package/build/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  8. package/build/border-control/border-control-dropdown/component.js +4 -2
  9. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  10. package/build/border-control/border-control-dropdown/hook.js +3 -2
  11. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  12. package/build/border-control/border-control-style-picker/component.js +1 -1
  13. package/build/border-control/border-control-style-picker/component.js.map +1 -1
  14. package/build/border-control/styles.js +17 -17
  15. package/build/border-control/styles.js.map +1 -1
  16. package/build/box-control/index.js +1 -1
  17. package/build/box-control/index.js.map +1 -1
  18. package/build/box-control/linked-button.js +1 -1
  19. package/build/box-control/linked-button.js.map +1 -1
  20. package/build/button/index.js +1 -1
  21. package/build/button/index.js.map +1 -1
  22. package/build/checkbox-control/index.js +1 -1
  23. package/build/checkbox-control/index.js.map +1 -1
  24. package/build/checkbox-control/types.js.map +1 -1
  25. package/build/color-palette/index.native.js +11 -7
  26. package/build/color-palette/index.native.js.map +1 -1
  27. package/build/color-picker/color-copy-button.js +1 -1
  28. package/build/color-picker/color-copy-button.js.map +1 -1
  29. package/build/context/wordpress-component.js.map +1 -1
  30. package/build/custom-select-control-v2/index.js +11 -10
  31. package/build/custom-select-control-v2/index.js.map +1 -1
  32. package/build/date-time/date/styles.js +8 -8
  33. package/build/date-time/date/styles.js.map +1 -1
  34. package/build/date-time/time/timezone.js +11 -2
  35. package/build/date-time/time/timezone.js.map +1 -1
  36. package/build/dimension-control/index.js +2 -0
  37. package/build/dimension-control/index.js.map +1 -1
  38. package/build/dimension-control/types.js.map +1 -1
  39. package/build/dropdown-menu-v2/index.js +205 -159
  40. package/build/dropdown-menu-v2/index.js.map +1 -1
  41. package/build/dropdown-menu-v2/styles.js +86 -77
  42. package/build/dropdown-menu-v2/styles.js.map +1 -1
  43. package/build/dropdown-menu-v2/types.js.map +1 -1
  44. package/build/duotone-picker/duotone-picker.js +4 -3
  45. package/build/duotone-picker/duotone-picker.js.map +1 -1
  46. package/build/focal-point-picker/controls.js +5 -1
  47. package/build/focal-point-picker/controls.js.map +1 -1
  48. package/build/focal-point-picker/index.js +2 -0
  49. package/build/focal-point-picker/index.js.map +1 -1
  50. package/build/focal-point-picker/styles/focal-point-picker-style.js +15 -15
  51. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  52. package/build/focal-point-picker/types.js.map +1 -1
  53. package/build/font-size-picker/font-size-picker-select.js +2 -0
  54. package/build/font-size-picker/font-size-picker-select.js.map +1 -1
  55. package/build/font-size-picker/font-size-picker-toggle-group.js +2 -0
  56. package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  57. package/build/font-size-picker/index.js +10 -3
  58. package/build/font-size-picker/index.js.map +1 -1
  59. package/build/font-size-picker/index.native.js +6 -3
  60. package/build/font-size-picker/index.native.js.map +1 -1
  61. package/build/font-size-picker/types.js.map +1 -1
  62. package/build/form-token-field/index.js +10 -5
  63. package/build/form-token-field/index.js.map +1 -1
  64. package/build/form-token-field/token.js +1 -0
  65. package/build/form-token-field/token.js.map +1 -1
  66. package/build/gradient-picker/index.js +3 -2
  67. package/build/gradient-picker/index.js.map +1 -1
  68. package/build/index.native.js +20 -19
  69. package/build/index.native.js.map +1 -1
  70. package/build/input-control/styles/input-control-styles.js +32 -29
  71. package/build/input-control/styles/input-control-styles.js.map +1 -1
  72. package/build/input-control/types.js.map +1 -1
  73. package/build/lock-unlock.js +18 -0
  74. package/build/lock-unlock.js.map +1 -0
  75. package/build/mobile/bottom-sheet/index.native.js +8 -0
  76. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  77. package/build/mobile/color-settings/palette.screen.native.js +8 -4
  78. package/build/mobile/color-settings/palette.screen.native.js.map +1 -1
  79. package/build/mobile/global-styles-context/utils.native.js +39 -13
  80. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  81. package/build/mobile/image/constants.js +12 -0
  82. package/build/mobile/image/constants.js.map +1 -0
  83. package/build/mobile/image/index.native.js +26 -18
  84. package/build/mobile/image/index.native.js.map +1 -1
  85. package/build/mobile/keyboard-aware-flat-list/index.android.js +40 -8
  86. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  87. package/build/mobile/keyboard-aware-flat-list/index.ios.js +44 -68
  88. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  89. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +39 -0
  90. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  91. package/build/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -29
  92. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  93. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js +93 -0
  94. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  95. package/build/mobile/utils/get-px-from-css-unit.native.js +302 -0
  96. package/build/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  97. package/build/modal/index.js +18 -13
  98. package/build/modal/index.js.map +1 -1
  99. package/build/navigation/menu/menu-title.js +1 -1
  100. package/build/navigation/menu/menu-title.js.map +1 -1
  101. package/build/navigator/navigator-provider/component.js +13 -15
  102. package/build/navigator/navigator-provider/component.js.map +1 -1
  103. package/build/navigator/navigator-screen/component.js +23 -63
  104. package/build/navigator/navigator-screen/component.js.map +1 -1
  105. package/build/navigator/styles.js +52 -0
  106. package/build/navigator/styles.js.map +1 -0
  107. package/build/number-control/index.js +4 -8
  108. package/build/number-control/index.js.map +1 -1
  109. package/build/number-control/types.js.map +1 -1
  110. package/build/palette-edit/index.js +15 -34
  111. package/build/palette-edit/index.js.map +1 -1
  112. package/build/private-apis.js +11 -26
  113. package/build/private-apis.js.map +1 -1
  114. package/build/private-apis.native.js +21 -0
  115. package/build/private-apis.native.js.map +1 -0
  116. package/build/query-controls/author-select.js +3 -1
  117. package/build/query-controls/author-select.js.map +1 -1
  118. package/build/query-controls/category-select.js +3 -1
  119. package/build/query-controls/category-select.js.map +1 -1
  120. package/build/query-controls/index.js +6 -1
  121. package/build/query-controls/index.js.map +1 -1
  122. package/build/query-controls/types.js.map +1 -1
  123. package/build/radio-control/index.js +1 -0
  124. package/build/radio-control/index.js.map +1 -1
  125. package/build/range-control/index.js +1 -1
  126. package/build/range-control/index.js.map +1 -1
  127. package/build/select-control/styles/select-control-styles.js +15 -25
  128. package/build/select-control/styles/select-control-styles.js.map +1 -1
  129. package/build/slot-fill/index.js +3 -2
  130. package/build/slot-fill/index.js.map +1 -1
  131. package/build/slot-fill/types.js.map +1 -1
  132. package/build/snackbar/types.js.map +1 -1
  133. package/build/tabs/index.js +18 -1
  134. package/build/tabs/index.js.map +1 -1
  135. package/build/tabs/styles.js +3 -3
  136. package/build/tabs/styles.js.map +1 -1
  137. package/build/tabs/tab.js +2 -2
  138. package/build/tabs/tab.js.map +1 -1
  139. package/build/tabs/tabpanel.js +11 -8
  140. package/build/tabs/tabpanel.js.map +1 -1
  141. package/build/tabs/types.js.map +1 -1
  142. package/build/toggle-group-control/toggle-group-control/component.js +4 -4
  143. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  144. package/build/toggle-group-control/toggle-group-control/styles.js +29 -15
  145. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  146. package/build/toggle-group-control/toggle-group-control/utils.js +17 -17
  147. package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  148. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  149. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  150. package/build/tools-panel/tools-panel/component.js +3 -1
  151. package/build/tools-panel/tools-panel/component.js.map +1 -1
  152. package/build/tools-panel/tools-panel-header/component.js +9 -8
  153. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  154. package/build/tools-panel/tools-panel-item/hook.js +11 -11
  155. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  156. package/build/tools-panel/types.js.map +1 -1
  157. package/build/tooltip/index.js +34 -10
  158. package/build/tooltip/index.js.map +1 -1
  159. package/build/tooltip/types.js.map +1 -1
  160. package/build/truncate/hook.js +10 -4
  161. package/build/truncate/hook.js.map +1 -1
  162. package/build/truncate/types.js.map +1 -1
  163. package/build/unit-control/index.js +1 -1
  164. package/build/unit-control/index.js.map +1 -1
  165. package/build/utils/strings.js +34 -3
  166. package/build/utils/strings.js.map +1 -1
  167. package/build-module/base-control/index.js +16 -12
  168. package/build-module/base-control/index.js.map +1 -1
  169. package/build-module/border-box-control/border-box-control-linked-button/component.js +1 -1
  170. package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  171. package/build-module/border-control/border-control-dropdown/component.js +4 -2
  172. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  173. package/build-module/border-control/border-control-dropdown/hook.js +3 -2
  174. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  175. package/build-module/border-control/border-control-style-picker/component.js +1 -1
  176. package/build-module/border-control/border-control-style-picker/component.js.map +1 -1
  177. package/build-module/border-control/styles.js +17 -17
  178. package/build-module/border-control/styles.js.map +1 -1
  179. package/build-module/box-control/index.js +1 -1
  180. package/build-module/box-control/index.js.map +1 -1
  181. package/build-module/box-control/linked-button.js +1 -1
  182. package/build-module/box-control/linked-button.js.map +1 -1
  183. package/build-module/button/index.js +1 -1
  184. package/build-module/button/index.js.map +1 -1
  185. package/build-module/checkbox-control/index.js +1 -1
  186. package/build-module/checkbox-control/index.js.map +1 -1
  187. package/build-module/checkbox-control/types.js.map +1 -1
  188. package/build-module/color-palette/index.native.js +11 -7
  189. package/build-module/color-palette/index.native.js.map +1 -1
  190. package/build-module/color-picker/color-copy-button.js +1 -1
  191. package/build-module/color-picker/color-copy-button.js.map +1 -1
  192. package/build-module/context/wordpress-component.js.map +1 -1
  193. package/build-module/custom-select-control-v2/index.js +11 -10
  194. package/build-module/custom-select-control-v2/index.js.map +1 -1
  195. package/build-module/date-time/date/styles.js +8 -8
  196. package/build-module/date-time/date/styles.js.map +1 -1
  197. package/build-module/date-time/time/timezone.js +11 -2
  198. package/build-module/date-time/time/timezone.js.map +1 -1
  199. package/build-module/dimension-control/index.js +2 -0
  200. package/build-module/dimension-control/index.js.map +1 -1
  201. package/build-module/dimension-control/types.js.map +1 -1
  202. package/build-module/dropdown-menu-v2/index.js +201 -154
  203. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  204. package/build-module/dropdown-menu-v2/styles.js +68 -61
  205. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  206. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  207. package/build-module/duotone-picker/duotone-picker.js +4 -3
  208. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  209. package/build-module/focal-point-picker/controls.js +5 -1
  210. package/build-module/focal-point-picker/controls.js.map +1 -1
  211. package/build-module/focal-point-picker/index.js +2 -0
  212. package/build-module/focal-point-picker/index.js.map +1 -1
  213. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +15 -15
  214. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  215. package/build-module/focal-point-picker/types.js.map +1 -1
  216. package/build-module/font-size-picker/font-size-picker-select.js +2 -0
  217. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
  218. package/build-module/font-size-picker/font-size-picker-toggle-group.js +2 -0
  219. package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  220. package/build-module/font-size-picker/index.js +10 -3
  221. package/build-module/font-size-picker/index.js.map +1 -1
  222. package/build-module/font-size-picker/index.native.js +5 -2
  223. package/build-module/font-size-picker/index.native.js.map +1 -1
  224. package/build-module/font-size-picker/types.js.map +1 -1
  225. package/build-module/form-token-field/index.js +10 -5
  226. package/build-module/form-token-field/index.js.map +1 -1
  227. package/build-module/form-token-field/token.js +1 -0
  228. package/build-module/form-token-field/token.js.map +1 -1
  229. package/build-module/gradient-picker/index.js +3 -2
  230. package/build-module/gradient-picker/index.js.map +1 -1
  231. package/build-module/index.native.js +6 -3
  232. package/build-module/index.native.js.map +1 -1
  233. package/build-module/input-control/styles/input-control-styles.js +31 -29
  234. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  235. package/build-module/input-control/types.js.map +1 -1
  236. package/build-module/lock-unlock.js +9 -0
  237. package/build-module/lock-unlock.js.map +1 -0
  238. package/build-module/mobile/bottom-sheet/index.native.js +9 -1
  239. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  240. package/build-module/mobile/color-settings/palette.screen.native.js +8 -4
  241. package/build-module/mobile/color-settings/palette.screen.native.js.map +1 -1
  242. package/build-module/mobile/global-styles-context/utils.native.js +38 -13
  243. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  244. package/build-module/mobile/image/constants.js +5 -0
  245. package/build-module/mobile/image/constants.js.map +1 -0
  246. package/build-module/mobile/image/index.native.js +25 -16
  247. package/build-module/mobile/image/index.native.js.map +1 -1
  248. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +40 -6
  249. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  250. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +46 -68
  251. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  252. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +33 -0
  253. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  254. package/build-module/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +21 -27
  255. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  256. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js +86 -0
  257. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  258. package/build-module/mobile/utils/get-px-from-css-unit.native.js +294 -0
  259. package/build-module/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  260. package/build-module/modal/index.js +18 -13
  261. package/build-module/modal/index.js.map +1 -1
  262. package/build-module/navigation/menu/menu-title.js +1 -1
  263. package/build-module/navigation/menu/menu-title.js.map +1 -1
  264. package/build-module/navigator/navigator-provider/component.js +3 -16
  265. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  266. package/build-module/navigator/navigator-screen/component.js +16 -70
  267. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  268. package/build-module/navigator/styles.js +47 -0
  269. package/build-module/navigator/styles.js.map +1 -0
  270. package/build-module/number-control/index.js +4 -8
  271. package/build-module/number-control/index.js.map +1 -1
  272. package/build-module/number-control/types.js.map +1 -1
  273. package/build-module/palette-edit/index.js +14 -33
  274. package/build-module/palette-edit/index.js.map +1 -1
  275. package/build-module/private-apis.js +10 -23
  276. package/build-module/private-apis.js.map +1 -1
  277. package/build-module/private-apis.native.js +14 -0
  278. package/build-module/private-apis.native.js.map +1 -0
  279. package/build-module/query-controls/author-select.js +3 -1
  280. package/build-module/query-controls/author-select.js.map +1 -1
  281. package/build-module/query-controls/category-select.js +3 -1
  282. package/build-module/query-controls/category-select.js.map +1 -1
  283. package/build-module/query-controls/index.js +6 -1
  284. package/build-module/query-controls/index.js.map +1 -1
  285. package/build-module/query-controls/types.js.map +1 -1
  286. package/build-module/radio-control/index.js +1 -0
  287. package/build-module/radio-control/index.js.map +1 -1
  288. package/build-module/range-control/index.js +1 -1
  289. package/build-module/range-control/index.js.map +1 -1
  290. package/build-module/select-control/styles/select-control-styles.js +15 -25
  291. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  292. package/build-module/slot-fill/index.js +3 -2
  293. package/build-module/slot-fill/index.js.map +1 -1
  294. package/build-module/slot-fill/types.js.map +1 -1
  295. package/build-module/snackbar/types.js.map +1 -1
  296. package/build-module/tabs/index.js +18 -1
  297. package/build-module/tabs/index.js.map +1 -1
  298. package/build-module/tabs/styles.js +3 -3
  299. package/build-module/tabs/styles.js.map +1 -1
  300. package/build-module/tabs/tab.js +2 -2
  301. package/build-module/tabs/tab.js.map +1 -1
  302. package/build-module/tabs/tabpanel.js +11 -8
  303. package/build-module/tabs/tabpanel.js.map +1 -1
  304. package/build-module/tabs/types.js.map +1 -1
  305. package/build-module/toggle-group-control/toggle-group-control/component.js +4 -4
  306. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  307. package/build-module/toggle-group-control/toggle-group-control/styles.js +29 -15
  308. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  309. package/build-module/toggle-group-control/toggle-group-control/utils.js +17 -17
  310. package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  311. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  312. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  313. package/build-module/tools-panel/tools-panel/component.js +3 -1
  314. package/build-module/tools-panel/tools-panel/component.js.map +1 -1
  315. package/build-module/tools-panel/tools-panel-header/component.js +9 -8
  316. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  317. package/build-module/tools-panel/tools-panel-item/hook.js +11 -11
  318. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  319. package/build-module/tools-panel/types.js.map +1 -1
  320. package/build-module/tooltip/index.js +34 -12
  321. package/build-module/tooltip/index.js.map +1 -1
  322. package/build-module/tooltip/types.js.map +1 -1
  323. package/build-module/truncate/hook.js +10 -4
  324. package/build-module/truncate/hook.js.map +1 -1
  325. package/build-module/truncate/types.js.map +1 -1
  326. package/build-module/unit-control/index.js +1 -1
  327. package/build-module/unit-control/index.js.map +1 -1
  328. package/build-module/utils/strings.js +32 -2
  329. package/build-module/utils/strings.js.map +1 -1
  330. package/build-style/style-rtl.css +30 -6
  331. package/build-style/style.css +30 -6
  332. package/build-types/base-control/index.d.ts +3 -27
  333. package/build-types/base-control/index.d.ts.map +1 -1
  334. package/build-types/base-control/stories/index.story.d.ts +4 -1
  335. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  336. package/build-types/border-box-control/border-box-control/hook.d.ts +4 -4
  337. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +6 -6
  338. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +4 -4
  339. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +4 -4
  340. package/build-types/border-box-control/stories/index.story.d.ts +1 -1
  341. package/build-types/border-control/border-control/hook.d.ts +4 -4
  342. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  343. package/build-types/border-control/border-control-dropdown/hook.d.ts +5 -4
  344. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  345. package/build-types/border-control/border-control-style-picker/hook.d.ts +4 -4
  346. package/build-types/border-control/stories/index.story.d.ts +6 -6
  347. package/build-types/border-control/styles.d.ts +1 -1
  348. package/build-types/border-control/styles.d.ts.map +1 -1
  349. package/build-types/box-control/stories/index.story.d.ts +42 -42
  350. package/build-types/box-control/styles/box-control-styles.d.ts +1 -1
  351. package/build-types/button/deprecated.d.ts +3 -3
  352. package/build-types/card/card/hook.d.ts +4 -4
  353. package/build-types/card/card-body/hook.d.ts +4 -4
  354. package/build-types/card/card-divider/hook.d.ts +4 -4
  355. package/build-types/card/card-footer/hook.d.ts +4 -4
  356. package/build-types/card/card-header/hook.d.ts +4 -4
  357. package/build-types/card/card-media/hook.d.ts +4 -4
  358. package/build-types/checkbox-control/index.d.ts.map +1 -1
  359. package/build-types/checkbox-control/types.d.ts +3 -2
  360. package/build-types/checkbox-control/types.d.ts.map +1 -1
  361. package/build-types/color-palette/styles.d.ts +2 -2
  362. package/build-types/color-picker/component.d.ts +2 -2
  363. package/build-types/color-picker/stories/index.story.d.ts +1 -1
  364. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  365. package/build-types/color-picker/styles.d.ts +3 -3
  366. package/build-types/composite/test/index.d.ts.map +1 -0
  367. package/build-types/context/wordpress-component.d.ts +3 -3
  368. package/build-types/context/wordpress-component.d.ts.map +1 -1
  369. package/build-types/custom-select-control-v2/index.d.ts +3 -2
  370. package/build-types/custom-select-control-v2/index.d.ts.map +1 -1
  371. package/build-types/custom-select-control-v2/stories/index.story.d.ts +4 -3
  372. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -1
  373. package/build-types/date-time/date/styles.d.ts +3 -3
  374. package/build-types/date-time/date-time/styles.d.ts +1 -1
  375. package/build-types/date-time/time/styles.d.ts +4 -4
  376. package/build-types/date-time/time/timezone.d.ts.map +1 -1
  377. package/build-types/dimension-control/index.d.ts.map +1 -1
  378. package/build-types/dimension-control/types.d.ts +6 -0
  379. package/build-types/dimension-control/types.d.ts.map +1 -1
  380. package/build-types/dropdown/index.d.ts +1 -1
  381. package/build-types/dropdown/index.d.ts.map +1 -1
  382. package/build-types/dropdown/stories/index.story.d.ts +3 -3
  383. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  384. package/build-types/dropdown-menu/index.d.ts +1 -1
  385. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  386. package/build-types/dropdown-menu/stories/index.story.d.ts +2 -2
  387. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  388. package/build-types/dropdown-menu-v2/index.d.ts +18 -15
  389. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  390. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +7 -2
  391. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +1 -1
  392. package/build-types/dropdown-menu-v2/styles.d.ts +77 -23
  393. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  394. package/build-types/dropdown-menu-v2/types.d.ts +89 -173
  395. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  396. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
  397. package/build-types/elevation/hook.d.ts +4 -4
  398. package/build-types/flex/flex/hook.d.ts +4 -4
  399. package/build-types/flex/flex-block/hook.d.ts +4 -4
  400. package/build-types/flex/flex-item/hook.d.ts +4 -4
  401. package/build-types/focal-point-picker/controls.d.ts +1 -1
  402. package/build-types/focal-point-picker/controls.d.ts.map +1 -1
  403. package/build-types/focal-point-picker/index.d.ts +1 -1
  404. package/build-types/focal-point-picker/index.d.ts.map +1 -1
  405. package/build-types/focal-point-picker/stories/index.story.d.ts +8 -4
  406. package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
  407. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  408. package/build-types/focal-point-picker/types.d.ts +7 -0
  409. package/build-types/focal-point-picker/types.d.ts.map +1 -1
  410. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -1
  411. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -1
  412. package/build-types/font-size-picker/index.d.ts.map +1 -1
  413. package/build-types/font-size-picker/styles.d.ts +1 -1
  414. package/build-types/font-size-picker/types.d.ts +8 -1
  415. package/build-types/font-size-picker/types.d.ts.map +1 -1
  416. package/build-types/form-token-field/index.d.ts.map +1 -1
  417. package/build-types/form-token-field/token.d.ts.map +1 -1
  418. package/build-types/grid/hook.d.ts +4 -4
  419. package/build-types/h-stack/hook.d.ts +4 -4
  420. package/build-types/heading/component.d.ts +1 -1
  421. package/build-types/heading/hook.d.ts +4 -4
  422. package/build-types/input-control/styles/input-control-styles.d.ts +11 -0
  423. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  424. package/build-types/input-control/types.d.ts +1 -1
  425. package/build-types/input-control/types.d.ts.map +1 -1
  426. package/build-types/item-group/item/hook.d.ts +4 -4
  427. package/build-types/item-group/item-group/hook.d.ts +4 -4
  428. package/build-types/lock-unlock.d.ts +3 -0
  429. package/build-types/lock-unlock.d.ts.map +1 -0
  430. package/build-types/menu-item/index.d.ts +1 -1
  431. package/build-types/menu-item/stories/index.story.d.ts +4 -4
  432. package/build-types/mobile/image/constants.d.ts +5 -0
  433. package/build-types/mobile/image/constants.d.ts.map +1 -0
  434. package/build-types/modal/index.d.ts.map +1 -1
  435. package/build-types/navigation/styles/navigation-styles.d.ts +3 -3
  436. package/build-types/navigator/navigator-back-button/hook.d.ts +6 -6
  437. package/build-types/navigator/navigator-button/hook.d.ts +6 -6
  438. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  439. package/build-types/navigator/navigator-screen/component.d.ts +1 -7
  440. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  441. package/build-types/navigator/styles.d.ts +9 -0
  442. package/build-types/navigator/styles.d.ts.map +1 -0
  443. package/build-types/number-control/index.d.ts +1 -1
  444. package/build-types/number-control/index.d.ts.map +1 -1
  445. package/build-types/number-control/stories/index.story.d.ts +1 -1
  446. package/build-types/number-control/types.d.ts +1 -1
  447. package/build-types/palette-edit/index.d.ts +2 -2
  448. package/build-types/palette-edit/index.d.ts.map +1 -1
  449. package/build-types/palette-edit/styles.d.ts +3 -3
  450. package/build-types/popover/index.d.ts +1 -1
  451. package/build-types/popover/index.d.ts.map +1 -1
  452. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  453. package/build-types/private-apis.d.ts +0 -1
  454. package/build-types/private-apis.d.ts.map +1 -1
  455. package/build-types/query-controls/author-select.d.ts +1 -1
  456. package/build-types/query-controls/author-select.d.ts.map +1 -1
  457. package/build-types/query-controls/category-select.d.ts +1 -1
  458. package/build-types/query-controls/category-select.d.ts.map +1 -1
  459. package/build-types/query-controls/index.d.ts +1 -1
  460. package/build-types/query-controls/index.d.ts.map +1 -1
  461. package/build-types/query-controls/types.d.ts +9 -0
  462. package/build-types/query-controls/types.d.ts.map +1 -1
  463. package/build-types/radio-control/index.d.ts.map +1 -1
  464. package/build-types/range-control/index.d.ts +1 -1
  465. package/build-types/range-control/styles/range-control-styles.d.ts +1 -1
  466. package/build-types/resizable-box/index.d.ts +1 -1
  467. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  468. package/build-types/resizable-box/stories/index.story.d.ts +2 -2
  469. package/build-types/scrollable/hook.d.ts +4 -4
  470. package/build-types/search-control/index.d.ts +1 -1
  471. package/build-types/search-control/stories/index.story.d.ts +2 -2
  472. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  473. package/build-types/slot-fill/index.d.ts +1 -1
  474. package/build-types/slot-fill/index.d.ts.map +1 -1
  475. package/build-types/slot-fill/types.d.ts +4 -0
  476. package/build-types/slot-fill/types.d.ts.map +1 -1
  477. package/build-types/snackbar/index.d.ts +2 -2
  478. package/build-types/snackbar/stories/index.story.d.ts +0 -3
  479. package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
  480. package/build-types/snackbar/types.d.ts +1 -1
  481. package/build-types/snackbar/types.d.ts.map +1 -1
  482. package/build-types/spacer/hook.d.ts +4 -4
  483. package/build-types/surface/hook.d.ts +4 -4
  484. package/build-types/tabs/index.d.ts +2 -2
  485. package/build-types/tabs/index.d.ts.map +1 -1
  486. package/build-types/tabs/styles.d.ts.map +1 -1
  487. package/build-types/tabs/tab.d.ts +2 -1
  488. package/build-types/tabs/tab.d.ts.map +1 -1
  489. package/build-types/tabs/tabpanel.d.ts +3 -2
  490. package/build-types/tabs/tabpanel.d.ts.map +1 -1
  491. package/build-types/tabs/types.d.ts +8 -3
  492. package/build-types/tabs/types.d.ts.map +1 -1
  493. package/build-types/text/hook.d.ts +4 -4
  494. package/build-types/text-control/index.d.ts +1 -1
  495. package/build-types/textarea-control/index.d.ts +1 -1
  496. package/build-types/toggle-control/stories/index.story.d.ts +2 -2
  497. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +1 -1
  498. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +1 -1
  499. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  500. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +2 -2
  501. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  502. package/build-types/toggle-group-control/toggle-group-control/utils.d.ts.map +1 -1
  503. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  504. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +1 -1
  505. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  506. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  507. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  508. package/build-types/toolbar/toolbar-button/index.d.ts +3 -3
  509. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  510. package/build-types/tools-panel/tools-panel/hook.d.ts +5 -4
  511. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  512. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  513. package/build-types/tools-panel/tools-panel-header/hook.d.ts +5 -4
  514. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  515. package/build-types/tools-panel/tools-panel-item/hook.d.ts +4 -4
  516. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  517. package/build-types/tools-panel/types.d.ts +9 -0
  518. package/build-types/tools-panel/types.d.ts.map +1 -1
  519. package/build-types/tooltip/index.d.ts +1 -1
  520. package/build-types/tooltip/index.d.ts.map +1 -1
  521. package/build-types/tooltip/stories/index.story.d.ts +10 -1
  522. package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
  523. package/build-types/tooltip/types.d.ts +3 -0
  524. package/build-types/tooltip/types.d.ts.map +1 -1
  525. package/build-types/truncate/hook.d.ts +5 -5
  526. package/build-types/truncate/hook.d.ts.map +1 -1
  527. package/build-types/truncate/types.d.ts +4 -0
  528. package/build-types/truncate/types.d.ts.map +1 -1
  529. package/build-types/unit-control/index.d.ts +1 -1
  530. package/build-types/unit-control/styles/unit-control-styles.d.ts +1 -1
  531. package/build-types/utils/strings.d.ts +14 -2
  532. package/build-types/utils/strings.d.ts.map +1 -1
  533. package/build-types/v-stack/hook.d.ts +4 -4
  534. package/build-types/v-stack/stories/index.story.d.ts +1 -1
  535. package/package.json +20 -21
  536. package/src/alignment-matrix-control/test/index.tsx +10 -16
  537. package/src/base-control/index.tsx +21 -16
  538. package/src/border-box-control/border-box-control-linked-button/component.tsx +1 -1
  539. package/src/border-control/border-control-dropdown/component.tsx +3 -1
  540. package/src/border-control/border-control-dropdown/hook.ts +3 -2
  541. package/src/border-control/border-control-style-picker/component.tsx +1 -1
  542. package/src/border-control/styles.ts +2 -9
  543. package/src/box-control/index.tsx +1 -1
  544. package/src/box-control/linked-button.tsx +1 -1
  545. package/src/button/README.md +32 -6
  546. package/src/button/index.tsx +1 -1
  547. package/src/button-group/README.md +0 -6
  548. package/src/card/card/README.md +1 -1
  549. package/src/checkbox-control/README.md +3 -10
  550. package/src/checkbox-control/index.tsx +8 -6
  551. package/src/checkbox-control/test/__snapshots__/index.tsx.snap +3 -8
  552. package/src/checkbox-control/test/index.tsx +7 -0
  553. package/src/checkbox-control/types.ts +3 -2
  554. package/src/color-palette/index.native.js +18 -7
  555. package/src/color-picker/color-copy-button.tsx +1 -1
  556. package/src/combobox-control/README.md +0 -6
  557. package/src/composite/test/index.tsx +576 -0
  558. package/src/context/wordpress-component.ts +11 -6
  559. package/src/custom-select-control/README.md +0 -6
  560. package/src/custom-select-control/test/index.js +367 -35
  561. package/src/custom-select-control-v2/index.tsx +13 -12
  562. package/src/date-time/date/styles.ts +3 -3
  563. package/src/date-time/time/timezone.tsx +15 -3
  564. package/src/dimension-control/index.tsx +2 -0
  565. package/src/dimension-control/test/__snapshots__/index.test.js.snap +2 -2
  566. package/src/dimension-control/types.ts +6 -0
  567. package/src/dropdown-menu/README.md +0 -5
  568. package/src/dropdown-menu-v2/README.md +75 -136
  569. package/src/dropdown-menu-v2/index.tsx +321 -231
  570. package/src/dropdown-menu-v2/stories/index.story.tsx +522 -126
  571. package/src/dropdown-menu-v2/styles.ts +226 -151
  572. package/src/dropdown-menu-v2/test/index.tsx +480 -188
  573. package/src/dropdown-menu-v2/types.ts +98 -184
  574. package/src/duotone-picker/duotone-picker.tsx +7 -3
  575. package/src/focal-point-picker/controls.tsx +4 -0
  576. package/src/focal-point-picker/index.tsx +2 -0
  577. package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
  578. package/src/focal-point-picker/types.ts +7 -0
  579. package/src/font-size-picker/font-size-picker-select.tsx +2 -0
  580. package/src/font-size-picker/font-size-picker-toggle-group.tsx +9 -1
  581. package/src/font-size-picker/index.native.js +8 -2
  582. package/src/font-size-picker/index.tsx +15 -5
  583. package/src/font-size-picker/types.ts +8 -1
  584. package/src/form-toggle/README.md +0 -6
  585. package/src/form-toggle/style.scss +4 -2
  586. package/src/form-token-field/index.tsx +11 -7
  587. package/src/form-token-field/test/index.tsx +97 -0
  588. package/src/form-token-field/token.tsx +1 -0
  589. package/src/gradient-picker/index.tsx +2 -2
  590. package/src/index.native.js +6 -3
  591. package/src/input-control/styles/input-control-styles.tsx +10 -8
  592. package/src/input-control/types.ts +1 -1
  593. package/src/lock-unlock.js +10 -0
  594. package/src/menu-group/README.md +0 -8
  595. package/src/menu-items-choice/README.md +0 -7
  596. package/src/mobile/bottom-sheet/index.native.js +15 -1
  597. package/src/mobile/color-settings/palette.screen.native.js +7 -5
  598. package/src/mobile/global-styles-context/test/fixtures/theme.native.js +0 -20
  599. package/src/mobile/global-styles-context/test/utils.native.js +22 -0
  600. package/src/mobile/global-styles-context/utils.native.js +42 -19
  601. package/src/mobile/image/constants.js +1 -0
  602. package/src/mobile/image/index.native.js +55 -18
  603. package/src/mobile/image/style.native.scss +35 -9
  604. package/src/mobile/keyboard-aware-flat-list/index.android.js +50 -5
  605. package/src/mobile/keyboard-aware-flat-list/index.ios.js +65 -91
  606. package/src/mobile/keyboard-aware-flat-list/test/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +27 -25
  607. package/src/mobile/keyboard-aware-flat-list/test/use-scroll.native.js +71 -0
  608. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +41 -0
  609. package/src/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -27
  610. package/src/mobile/keyboard-aware-flat-list/use-scroll.native.js +100 -0
  611. package/src/mobile/link-settings/style.native.scss +0 -17
  612. package/src/mobile/utils/get-px-from-css-unit.native.js +329 -0
  613. package/src/mobile/utils/test/get-px-from-css-unit.native.js +172 -0
  614. package/src/modal/README.md +0 -6
  615. package/src/modal/index.tsx +18 -16
  616. package/src/modal/test/index.tsx +90 -1
  617. package/src/navigation/menu/menu-title.tsx +1 -1
  618. package/src/navigator/navigator-provider/component.tsx +3 -4
  619. package/src/navigator/navigator-screen/component.tsx +15 -93
  620. package/src/navigator/styles.ts +71 -0
  621. package/src/navigator/test/index.tsx +0 -64
  622. package/src/notice/README.md +0 -6
  623. package/src/number-control/README.md +2 -2
  624. package/src/number-control/index.tsx +4 -8
  625. package/src/number-control/types.ts +1 -1
  626. package/src/palette-edit/index.tsx +14 -43
  627. package/src/palette-edit/style.scss +2 -2
  628. package/src/panel/README.md +0 -6
  629. package/src/private-apis.native.js +13 -0
  630. package/src/private-apis.ts +12 -37
  631. package/src/query-controls/author-select.tsx +2 -0
  632. package/src/query-controls/category-select.tsx +2 -0
  633. package/src/query-controls/index.tsx +6 -1
  634. package/src/query-controls/types.ts +9 -0
  635. package/src/radio-control/README.md +0 -6
  636. package/src/radio-control/index.tsx +4 -1
  637. package/src/radio-control/style.scss +29 -2
  638. package/src/radio-group/README.md +0 -6
  639. package/src/range-control/README.md +1 -9
  640. package/src/range-control/index.tsx +1 -1
  641. package/src/search-control/README.md +1 -5
  642. package/src/select-control/README.md +0 -6
  643. package/src/select-control/styles/select-control-styles.ts +10 -28
  644. package/src/slot-fill/index.tsx +5 -2
  645. package/src/slot-fill/types.ts +5 -0
  646. package/src/snackbar/README.md +0 -6
  647. package/src/snackbar/stories/index.story.tsx +7 -5
  648. package/src/snackbar/style.scss +4 -3
  649. package/src/snackbar/types.ts +2 -1
  650. package/src/spacer/README.md +0 -2
  651. package/src/spinner/README.md +2 -0
  652. package/src/tab-panel/README.md +0 -5
  653. package/src/tab-panel/test/index.tsx +39 -56
  654. package/src/tabs/README.md +4 -4
  655. package/src/tabs/index.tsx +22 -1
  656. package/src/tabs/stories/index.story.tsx +48 -48
  657. package/src/tabs/styles.ts +7 -1
  658. package/src/tabs/tab.tsx +3 -3
  659. package/src/tabs/tabpanel.tsx +13 -8
  660. package/src/tabs/test/index.tsx +236 -106
  661. package/src/tabs/types.ts +8 -3
  662. package/src/text-control/README.md +0 -6
  663. package/src/textarea-control/README.md +0 -6
  664. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +12 -16
  665. package/src/toggle-group-control/test/index.tsx +107 -41
  666. package/src/toggle-group-control/toggle-group-control/component.tsx +5 -4
  667. package/src/toggle-group-control/toggle-group-control/styles.ts +13 -19
  668. package/src/toggle-group-control/toggle-group-control/utils.ts +15 -20
  669. package/src/toggle-group-control/toggle-group-control-option/README.md +1 -1
  670. package/src/toggle-group-control/toggle-group-control-option-base/README.md +1 -1
  671. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +3 -2
  672. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  673. package/src/toolbar/toolbar/README.md +0 -6
  674. package/src/tools-panel/test/index.tsx +12 -20
  675. package/src/tools-panel/tools-panel/README.md +7 -0
  676. package/src/tools-panel/tools-panel/component.tsx +2 -0
  677. package/src/tools-panel/tools-panel-header/README.md +7 -0
  678. package/src/tools-panel/tools-panel-header/component.tsx +20 -13
  679. package/src/tools-panel/tools-panel-item/hook.ts +10 -21
  680. package/src/tools-panel/types.ts +9 -0
  681. package/src/tooltip/README.md +4 -0
  682. package/src/tooltip/index.tsx +48 -10
  683. package/src/tooltip/stories/index.story.tsx +18 -1
  684. package/src/tooltip/test/index.tsx +404 -254
  685. package/src/tooltip/types.ts +4 -0
  686. package/src/tree-grid/README.md +0 -4
  687. package/src/truncate/README.md +8 -0
  688. package/src/truncate/hook.ts +17 -10
  689. package/src/truncate/test/index.tsx +54 -27
  690. package/src/truncate/types.ts +4 -0
  691. package/src/unit-control/index.tsx +1 -1
  692. package/src/utils/strings.ts +30 -2
  693. package/src/utils/test/strings.js +96 -1
  694. package/tsconfig.tsbuildinfo +1 -1
  695. package/build/dropdown-menu-v2-ariakit/index.js +0 -256
  696. package/build/dropdown-menu-v2-ariakit/index.js.map +0 -1
  697. package/build/dropdown-menu-v2-ariakit/styles.js +0 -180
  698. package/build/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  699. package/build/dropdown-menu-v2-ariakit/types.js +0 -6
  700. package/build/dropdown-menu-v2-ariakit/types.js.map +0 -1
  701. package/build/mobile/inserter-button/index.native.js +0 -98
  702. package/build/mobile/inserter-button/index.native.js.map +0 -1
  703. package/build/mobile/inserter-button/sparkles.js +0 -23
  704. package/build/mobile/inserter-button/sparkles.js.map +0 -1
  705. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  706. package/build/mobile/link-settings/image-link-destinations-screen.native.js +0 -119
  707. package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
  708. package/build-module/dropdown-menu-v2-ariakit/index.js +0 -237
  709. package/build-module/dropdown-menu-v2-ariakit/index.js.map +0 -1
  710. package/build-module/dropdown-menu-v2-ariakit/styles.js +0 -165
  711. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  712. package/build-module/dropdown-menu-v2-ariakit/types.js +0 -2
  713. package/build-module/dropdown-menu-v2-ariakit/types.js.map +0 -1
  714. package/build-module/mobile/inserter-button/index.native.js +0 -89
  715. package/build-module/mobile/inserter-button/index.native.js.map +0 -1
  716. package/build-module/mobile/inserter-button/sparkles.js +0 -15
  717. package/build-module/mobile/inserter-button/sparkles.js.map +0 -1
  718. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  719. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js +0 -110
  720. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
  721. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +0 -20
  722. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +0 -1
  723. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts +0 -16
  724. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +0 -1
  725. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +0 -96
  726. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +0 -1
  727. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts.map +0 -1
  728. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +0 -168
  729. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +0 -1
  730. package/build-types/mobile/inserter-button/sparkles.d.ts +0 -3
  731. package/build-types/mobile/inserter-button/sparkles.d.ts.map +0 -1
  732. package/src/dropdown-menu-v2-ariakit/README.md +0 -331
  733. package/src/dropdown-menu-v2-ariakit/index.tsx +0 -383
  734. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +0 -617
  735. package/src/dropdown-menu-v2-ariakit/styles.ts +0 -333
  736. package/src/dropdown-menu-v2-ariakit/test/index.tsx +0 -1108
  737. package/src/dropdown-menu-v2-ariakit/types.ts +0 -179
  738. package/src/mobile/inserter-button/README.md +0 -62
  739. package/src/mobile/inserter-button/index.native.js +0 -116
  740. package/src/mobile/inserter-button/sparkles.js +0 -15
  741. package/src/mobile/inserter-button/style.native.scss +0 -72
  742. package/src/mobile/link-settings/image-link-destinations-screen.native.js +0 -152
  743. /package/build-types/{dropdown-menu-v2-ariakit → composite}/test/index.d.ts +0 -0
@@ -2,12 +2,12 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { render, screen, waitFor } from '@testing-library/react';
5
- import userEvent from '@testing-library/user-event';
5
+ import { press, click } from '@ariakit/test';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { useState } from '@wordpress/element';
10
+ import { useEffect, useState } from '@wordpress/element';
11
11
 
12
12
  /**
13
13
  * Internal dependencies
@@ -16,7 +16,7 @@ import Tabs from '..';
16
16
  import type { TabsProps } from '../types';
17
17
 
18
18
  type Tab = {
19
- id: string;
19
+ tabId: string;
20
20
  title: string;
21
21
  content: React.ReactNode;
22
22
  tab: {
@@ -30,19 +30,19 @@ type Tab = {
30
30
 
31
31
  const TABS: Tab[] = [
32
32
  {
33
- id: 'alpha',
33
+ tabId: 'alpha',
34
34
  title: 'Alpha',
35
35
  content: 'Selected tab: Alpha',
36
36
  tab: { className: 'alpha-class' },
37
37
  },
38
38
  {
39
- id: 'beta',
39
+ tabId: 'beta',
40
40
  title: 'Beta',
41
41
  content: 'Selected tab: Beta',
42
42
  tab: { className: 'beta-class' },
43
43
  },
44
44
  {
45
- id: 'gamma',
45
+ tabId: 'gamma',
46
46
  title: 'Gamma',
47
47
  content: 'Selected tab: Gamma',
48
48
  tab: { className: 'gamma-class' },
@@ -52,7 +52,7 @@ const TABS: Tab[] = [
52
52
  const TABS_WITH_DELTA: Tab[] = [
53
53
  ...TABS,
54
54
  {
55
- id: 'delta',
55
+ tabId: 'delta',
56
56
  title: 'Delta',
57
57
  content: 'Selected tab: Delta',
58
58
  tab: { className: 'delta-class' },
@@ -70,8 +70,8 @@ const UncontrolledTabs = ( {
70
70
  <Tabs.TabList>
71
71
  { tabs.map( ( tabObj ) => (
72
72
  <Tabs.Tab
73
- key={ tabObj.id }
74
- id={ tabObj.id }
73
+ key={ tabObj.tabId }
74
+ tabId={ tabObj.tabId }
75
75
  className={ tabObj.tab.className }
76
76
  disabled={ tabObj.tab.disabled }
77
77
  >
@@ -81,8 +81,8 @@ const UncontrolledTabs = ( {
81
81
  </Tabs.TabList>
82
82
  { tabs.map( ( tabObj ) => (
83
83
  <Tabs.TabPanel
84
- key={ tabObj.id }
85
- id={ tabObj.id }
84
+ key={ tabObj.tabId }
85
+ tabId={ tabObj.tabId }
86
86
  focusable={ tabObj.tabpanel?.focusable }
87
87
  >
88
88
  { tabObj.content }
@@ -102,6 +102,10 @@ const ControlledTabs = ( {
102
102
  string | undefined | null
103
103
  >( props.selectedTabId );
104
104
 
105
+ useEffect( () => {
106
+ setSelectedTabId( props.selectedTabId );
107
+ }, [ props.selectedTabId ] );
108
+
105
109
  return (
106
110
  <Tabs
107
111
  { ...props }
@@ -114,8 +118,8 @@ const ControlledTabs = ( {
114
118
  <Tabs.TabList>
115
119
  { tabs.map( ( tabObj ) => (
116
120
  <Tabs.Tab
117
- key={ tabObj.id }
118
- id={ tabObj.id }
121
+ key={ tabObj.tabId }
122
+ tabId={ tabObj.tabId }
119
123
  className={ tabObj.tab.className }
120
124
  disabled={ tabObj.tab.disabled }
121
125
  >
@@ -124,7 +128,7 @@ const ControlledTabs = ( {
124
128
  ) ) }
125
129
  </Tabs.TabList>
126
130
  { tabs.map( ( tabObj ) => (
127
- <Tabs.TabPanel key={ tabObj.id } id={ tabObj.id }>
131
+ <Tabs.TabPanel key={ tabObj.tabId } tabId={ tabObj.tabId }>
128
132
  { tabObj.content }
129
133
  </Tabs.TabPanel>
130
134
  ) ) }
@@ -184,28 +188,24 @@ describe( 'Tabs', () => {
184
188
  } );
185
189
  describe( 'Focus Behavior', () => {
186
190
  it( 'should focus on the related TabPanel when pressing the Tab key', async () => {
187
- const user = userEvent.setup();
188
-
189
191
  render( <UncontrolledTabs tabs={ TABS } /> );
190
192
 
191
193
  const selectedTabPanel = await screen.findByRole( 'tabpanel' );
192
194
 
193
195
  // Tab should initially focus the first tab in the tablist, which
194
196
  // is Alpha.
195
- await user.keyboard( '[Tab]' );
197
+ await press.Tab();
196
198
  expect(
197
199
  await screen.findByRole( 'tab', { name: 'Alpha' } )
198
200
  ).toHaveFocus();
199
201
 
200
202
  // By default the tabpanel should receive focus
201
- await user.keyboard( '[Tab]' );
203
+ await press.Tab();
202
204
  expect( selectedTabPanel ).toHaveFocus();
203
205
  } );
204
206
  it( 'should not focus on the related TabPanel when pressing the Tab key if `focusable: false` is set', async () => {
205
- const user = userEvent.setup();
206
-
207
207
  const TABS_WITH_ALPHA_FOCUSABLE_FALSE = TABS.map( ( tabObj ) =>
208
- tabObj.id === 'alpha'
208
+ tabObj.tabId === 'alpha'
209
209
  ? {
210
210
  ...tabObj,
211
211
  content: (
@@ -229,13 +229,13 @@ describe( 'Tabs', () => {
229
229
 
230
230
  // Tab should initially focus the first tab in the tablist, which
231
231
  // is Alpha.
232
- await user.keyboard( '[Tab]' );
232
+ await press.Tab();
233
233
  expect(
234
234
  await screen.findByRole( 'tab', { name: 'Alpha' } )
235
235
  ).toHaveFocus();
236
236
  // Because the alpha tabpanel is set to `focusable: false`, pressing
237
237
  // the Tab key should focus the button, not the tabpanel
238
- await user.keyboard( '[Tab]' );
238
+ await press.Tab();
239
239
  expect( alphaButton ).toHaveFocus();
240
240
  } );
241
241
  } );
@@ -258,7 +258,6 @@ describe( 'Tabs', () => {
258
258
 
259
259
  describe( 'Tab Activation', () => {
260
260
  it( 'defaults to automatic tab activation (pointer clicks)', async () => {
261
- const user = userEvent.setup();
262
261
  const mockOnSelect = jest.fn();
263
262
 
264
263
  render(
@@ -273,7 +272,7 @@ describe( 'Tabs', () => {
273
272
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
274
273
 
275
274
  // Click on Beta, make sure beta is the selected tab
276
- await user.click( screen.getByRole( 'tab', { name: 'Beta' } ) );
275
+ await click( screen.getByRole( 'tab', { name: 'Beta' } ) );
277
276
 
278
277
  expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
279
278
  expect(
@@ -282,7 +281,7 @@ describe( 'Tabs', () => {
282
281
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'beta' );
283
282
 
284
283
  // Click on Alpha, make sure beta is the selected tab
285
- await user.click( screen.getByRole( 'tab', { name: 'Alpha' } ) );
284
+ await click( screen.getByRole( 'tab', { name: 'Alpha' } ) );
286
285
 
287
286
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
288
287
  expect(
@@ -292,7 +291,6 @@ describe( 'Tabs', () => {
292
291
  } );
293
292
 
294
293
  it( 'defaults to automatic tab activation (arrow keys)', async () => {
295
- const user = userEvent.setup();
296
294
  const mockOnSelect = jest.fn();
297
295
 
298
296
  render(
@@ -307,12 +305,12 @@ describe( 'Tabs', () => {
307
305
  // Tab to focus the tablist. Make sure alpha is focused.
308
306
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
309
307
  expect( await getSelectedTab() ).not.toHaveFocus();
310
- await user.keyboard( '[Tab]' );
308
+ await press.Tab();
311
309
  expect( await getSelectedTab() ).toHaveFocus();
312
310
 
313
311
  // Navigate forward with arrow keys and make sure the Beta tab is
314
312
  // selected automatically.
315
- await user.keyboard( '[ArrowRight]' );
313
+ await press.ArrowRight();
316
314
  expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
317
315
  expect( await getSelectedTab() ).toHaveFocus();
318
316
  expect( mockOnSelect ).toHaveBeenCalledTimes( 2 );
@@ -320,7 +318,7 @@ describe( 'Tabs', () => {
320
318
 
321
319
  // Navigate backwards with arrow keys. Make sure alpha is
322
320
  // selected automatically.
323
- await user.keyboard( '[ArrowLeft]' );
321
+ await press.ArrowLeft();
324
322
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
325
323
  expect( await getSelectedTab() ).toHaveFocus();
326
324
  expect( mockOnSelect ).toHaveBeenCalledTimes( 3 );
@@ -328,7 +326,6 @@ describe( 'Tabs', () => {
328
326
  } );
329
327
 
330
328
  it( 'wraps around the last/first tab when using arrow keys', async () => {
331
- const user = userEvent.setup();
332
329
  const mockOnSelect = jest.fn();
333
330
 
334
331
  render(
@@ -341,12 +338,12 @@ describe( 'Tabs', () => {
341
338
  // Tab to focus the tablist. Make sure Alpha is focused.
342
339
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
343
340
  expect( await getSelectedTab() ).not.toHaveFocus();
344
- await user.keyboard( '[Tab]' );
341
+ await press.Tab();
345
342
  expect( await getSelectedTab() ).toHaveFocus();
346
343
 
347
344
  // Navigate backwards with arrow keys and make sure that the Gamma tab
348
345
  // (the last tab) is selected automatically.
349
- await user.keyboard( '[ArrowLeft]' );
346
+ await press.ArrowLeft();
350
347
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
351
348
  expect( await getSelectedTab() ).toHaveFocus();
352
349
  expect( mockOnSelect ).toHaveBeenCalledTimes( 2 );
@@ -354,7 +351,7 @@ describe( 'Tabs', () => {
354
351
 
355
352
  // Navigate forward with arrow keys. Make sure alpha (the first tab) is
356
353
  // selected automatically.
357
- await user.keyboard( '[ArrowRight]' );
354
+ await press.ArrowRight();
358
355
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
359
356
  expect( await getSelectedTab() ).toHaveFocus();
360
357
  expect( mockOnSelect ).toHaveBeenCalledTimes( 3 );
@@ -362,7 +359,6 @@ describe( 'Tabs', () => {
362
359
  } );
363
360
 
364
361
  it( 'should not move tab selection when pressing the up/down arrow keys, unless the orientation is changed to `vertical`', async () => {
365
- const user = userEvent.setup();
366
362
  const mockOnSelect = jest.fn();
367
363
 
368
364
  const { rerender } = render(
@@ -377,18 +373,18 @@ describe( 'Tabs', () => {
377
373
  // Tab to focus the tablist. Make sure alpha is focused.
378
374
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
379
375
  expect( await getSelectedTab() ).not.toHaveFocus();
380
- await user.keyboard( '[Tab]' );
376
+ await press.Tab();
381
377
  expect( await getSelectedTab() ).toHaveFocus();
382
378
 
383
379
  // Press the arrow up key, nothing happens.
384
- await user.keyboard( '[ArrowUp]' );
380
+ await press.ArrowUp();
385
381
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
386
382
  expect( await getSelectedTab() ).toHaveFocus();
387
383
  expect( mockOnSelect ).toHaveBeenCalledTimes( 1 );
388
384
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
389
385
 
390
386
  // Press the arrow down key, nothing happens
391
- await user.keyboard( '[ArrowDown]' );
387
+ await press.ArrowDown();
392
388
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
393
389
  expect( await getSelectedTab() ).toHaveFocus();
394
390
  expect( mockOnSelect ).toHaveBeenCalledTimes( 1 );
@@ -415,7 +411,7 @@ describe( 'Tabs', () => {
415
411
 
416
412
  // Navigate forward with arrow keys and make sure the Beta tab is
417
413
  // selected automatically.
418
- await user.keyboard( '[ArrowDown]' );
414
+ await press.ArrowDown();
419
415
  expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
420
416
  expect( await getSelectedTab() ).toHaveFocus();
421
417
  expect( mockOnSelect ).toHaveBeenCalledTimes( 2 );
@@ -423,7 +419,7 @@ describe( 'Tabs', () => {
423
419
 
424
420
  // Navigate backwards with arrow keys. Make sure alpha is
425
421
  // selected automatically.
426
- await user.keyboard( '[ArrowUp]' );
422
+ await press.ArrowUp();
427
423
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
428
424
  expect( await getSelectedTab() ).toHaveFocus();
429
425
  expect( mockOnSelect ).toHaveBeenCalledTimes( 3 );
@@ -431,7 +427,7 @@ describe( 'Tabs', () => {
431
427
 
432
428
  // Navigate backwards with arrow keys. Make sure alpha is
433
429
  // selected automatically.
434
- await user.keyboard( '[ArrowUp]' );
430
+ await press.ArrowUp();
435
431
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
436
432
  expect( await getSelectedTab() ).toHaveFocus();
437
433
  expect( mockOnSelect ).toHaveBeenCalledTimes( 4 );
@@ -439,7 +435,7 @@ describe( 'Tabs', () => {
439
435
 
440
436
  // Navigate backwards with arrow keys. Make sure alpha is
441
437
  // selected automatically.
442
- await user.keyboard( '[ArrowDown]' );
438
+ await press.ArrowDown();
443
439
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
444
440
  expect( await getSelectedTab() ).toHaveFocus();
445
441
  expect( mockOnSelect ).toHaveBeenCalledTimes( 5 );
@@ -447,11 +443,10 @@ describe( 'Tabs', () => {
447
443
  } );
448
444
 
449
445
  it( 'should move focus on a tab even if disabled with arrow key, but not with pointer clicks', async () => {
450
- const user = userEvent.setup();
451
446
  const mockOnSelect = jest.fn();
452
447
 
453
448
  const TABS_WITH_DELTA_DISABLED = TABS_WITH_DELTA.map( ( tabObj ) =>
454
- tabObj.id === 'delta'
449
+ tabObj.tabId === 'delta'
455
450
  ? {
456
451
  ...tabObj,
457
452
  tab: {
@@ -477,7 +472,7 @@ describe( 'Tabs', () => {
477
472
  // Tab to focus the tablist. Make sure Alpha is focused.
478
473
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
479
474
  expect( await getSelectedTab() ).not.toHaveFocus();
480
- await user.keyboard( '[Tab]' );
475
+ await press.Tab();
481
476
  expect( await getSelectedTab() ).toHaveFocus();
482
477
  // Confirm onSelect has not been re-called
483
478
  expect( mockOnSelect ).toHaveBeenCalledTimes( 1 );
@@ -487,7 +482,9 @@ describe( 'Tabs', () => {
487
482
  // it was the tab that was last selected before delta. Therefore, the
488
483
  // `mockOnSelect` function gets called only twice (and not three times)
489
484
  // - it will receive focus, when using arrow keys
490
- await user.keyboard( '[ArrowRight][ArrowRight][ArrowRight]' );
485
+ await press.ArrowRight();
486
+ await press.ArrowRight();
487
+ await press.ArrowRight();
491
488
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
492
489
  expect(
493
490
  screen.getByRole( 'tab', { name: 'Delta' } )
@@ -498,7 +495,7 @@ describe( 'Tabs', () => {
498
495
  // Navigate backwards with arrow keys. The gamma tab receives focus.
499
496
  // The `mockOnSelect` callback doesn't fire, since the gamma tab was
500
497
  // already selected.
501
- await user.keyboard( '[ArrowLeft]' );
498
+ await press.ArrowLeft();
502
499
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
503
500
  expect( await getSelectedTab() ).toHaveFocus();
504
501
  expect( mockOnSelect ).toHaveBeenCalledTimes( 3 );
@@ -506,37 +503,26 @@ describe( 'Tabs', () => {
506
503
  // Click on the disabled tab. Compared to using arrow keys to move the
507
504
  // focus, disabled tabs ignore pointer clicks — and therefore, they don't
508
505
  // receive focus, nor they cause the `mockOnSelect` function to fire.
509
- await user.click( screen.getByRole( 'tab', { name: 'Delta' } ) );
506
+ await click( screen.getByRole( 'tab', { name: 'Delta' } ) );
510
507
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
511
508
  expect( await getSelectedTab() ).toHaveFocus();
512
509
  expect( mockOnSelect ).toHaveBeenCalledTimes( 3 );
513
510
  } );
514
511
 
515
512
  it( 'should not focus the next tab when the Tab key is pressed', async () => {
516
- const user = userEvent.setup();
517
-
518
513
  render( <UncontrolledTabs tabs={ TABS } /> );
519
514
 
520
515
  // Tab should initially focus the first tab in the tablist, which
521
516
  // is Alpha.
522
- await user.keyboard( '[Tab]' );
517
+ await press.Tab();
523
518
  expect(
524
519
  await screen.findByRole( 'tab', { name: 'Alpha' } )
525
520
  ).toHaveFocus();
526
521
 
527
- // This assertion ensures the component has had time to fully
528
- // render, preventing flakiness.
529
- // see https://github.com/WordPress/gutenberg/pull/55950
530
- await waitFor( () =>
531
- expect(
532
- screen.getByRole( 'tab', { name: 'Beta' } )
533
- ).toHaveAttribute( 'tabindex', '-1' )
534
- );
535
-
536
522
  // Because all other tabs should have `tabindex=-1`, pressing Tab
537
523
  // should NOT move the focus to the next tab, which is Beta.
538
524
  // Instead, focus should go to the currently selected tabpanel (alpha).
539
- await user.keyboard( '[Tab]' );
525
+ await press.Tab();
540
526
  expect(
541
527
  await screen.findByRole( 'tabpanel', {
542
528
  name: 'Alpha',
@@ -545,7 +531,6 @@ describe( 'Tabs', () => {
545
531
  } );
546
532
 
547
533
  it( 'switches to manual tab activation when the `selectOnMove` prop is set to `false`', async () => {
548
- const user = userEvent.setup();
549
534
  const mockOnSelect = jest.fn();
550
535
 
551
536
  render(
@@ -563,7 +548,7 @@ describe( 'Tabs', () => {
563
548
 
564
549
  // Click on Alpha and make sure it is selected.
565
550
  // onSelect shouldn't fire since the selected tab didn't change.
566
- await user.click( screen.getByRole( 'tab', { name: 'Alpha' } ) );
551
+ await click( screen.getByRole( 'tab', { name: 'Alpha' } ) );
567
552
  expect(
568
553
  await screen.findByRole( 'tab', { name: 'Alpha' } )
569
554
  ).toHaveFocus();
@@ -574,13 +559,13 @@ describe( 'Tabs', () => {
574
559
  // that the tab selection happens only when pressing the spacebar
575
560
  // or enter key. onSelect shouldn't fire since the selected tab
576
561
  // didn't change.
577
- await user.keyboard( '[ArrowRight]' );
562
+ await press.ArrowRight();
578
563
  expect(
579
564
  await screen.findByRole( 'tab', { name: 'Beta' } )
580
565
  ).toHaveFocus();
581
566
  expect( mockOnSelect ).toHaveBeenCalledTimes( 1 );
582
567
 
583
- await user.keyboard( '[Enter]' );
568
+ await press.Enter();
584
569
  expect( mockOnSelect ).toHaveBeenCalledTimes( 2 );
585
570
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'beta' );
586
571
 
@@ -588,7 +573,7 @@ describe( 'Tabs', () => {
588
573
  // focused, but that tab selection happens only when pressing the
589
574
  // spacebar or enter key. onSelect shouldn't fire since the selected
590
575
  // tab didn't change.
591
- await user.keyboard( '[ArrowRight]' );
576
+ await press.ArrowRight();
592
577
  expect(
593
578
  await screen.findByRole( 'tab', { name: 'Gamma' } )
594
579
  ).toHaveFocus();
@@ -597,7 +582,7 @@ describe( 'Tabs', () => {
597
582
  screen.getByRole( 'tab', { name: 'Gamma' } )
598
583
  ).toHaveFocus();
599
584
 
600
- await user.keyboard( '[Space]' );
585
+ await press.Space();
601
586
  expect( mockOnSelect ).toHaveBeenCalledTimes( 3 );
602
587
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'gamma' );
603
588
  } );
@@ -623,7 +608,7 @@ describe( 'Tabs', () => {
623
608
  } );
624
609
  it( 'should not load any tab if the active tab is removed and there are no enabled tabs', async () => {
625
610
  const TABS_WITH_BETA_GAMMA_DISABLED = TABS.map( ( tabObj ) =>
626
- tabObj.id !== 'alpha'
611
+ tabObj.tabId !== 'alpha'
627
612
  ? {
628
613
  ...tabObj,
629
614
  tab: {
@@ -700,7 +685,6 @@ describe( 'Tabs', () => {
700
685
  } );
701
686
 
702
687
  it( 'should fall back to the tab associated to `initialTabId` if the currently active tab is removed', async () => {
703
- const user = userEvent.setup();
704
688
  const mockOnSelect = jest.fn();
705
689
 
706
690
  const { rerender } = render(
@@ -713,9 +697,7 @@ describe( 'Tabs', () => {
713
697
 
714
698
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
715
699
 
716
- await user.click(
717
- screen.getByRole( 'tab', { name: 'Alpha' } )
718
- );
700
+ await click( screen.getByRole( 'tab', { name: 'Alpha' } ) );
719
701
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
720
702
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
721
703
 
@@ -731,7 +713,6 @@ describe( 'Tabs', () => {
731
713
  } );
732
714
 
733
715
  it( 'should fall back to the tab associated to `initialTabId` if the currently active tab becomes disabled', async () => {
734
- const user = userEvent.setup();
735
716
  const mockOnSelect = jest.fn();
736
717
 
737
718
  const { rerender } = render(
@@ -744,14 +725,12 @@ describe( 'Tabs', () => {
744
725
 
745
726
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
746
727
 
747
- await user.click(
748
- screen.getByRole( 'tab', { name: 'Alpha' } )
749
- );
728
+ await click( screen.getByRole( 'tab', { name: 'Alpha' } ) );
750
729
  expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
751
730
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
752
731
 
753
732
  const TABS_WITH_ALPHA_DISABLED = TABS.map( ( tabObj ) =>
754
- tabObj.id === 'alpha'
733
+ tabObj.tabId === 'alpha'
755
734
  ? {
756
735
  ...tabObj,
757
736
  tab: {
@@ -822,12 +801,11 @@ describe( 'Tabs', () => {
822
801
 
823
802
  describe( 'Disabled tab', () => {
824
803
  it( 'should disable the tab when `disabled` is `true`', async () => {
825
- const user = userEvent.setup();
826
804
  const mockOnSelect = jest.fn();
827
805
 
828
806
  const TABS_WITH_DELTA_DISABLED = TABS_WITH_DELTA.map(
829
807
  ( tabObj ) =>
830
- tabObj.id === 'delta'
808
+ tabObj.tabId === 'delta'
831
809
  ? {
832
810
  ...tabObj,
833
811
  tab: {
@@ -853,20 +831,15 @@ describe( 'Tabs', () => {
853
831
  expect( mockOnSelect ).toHaveBeenCalledTimes( 1 );
854
832
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
855
833
 
834
+ // Move focus to the tablist, make sure alpha is focused.
835
+ await press.Tab();
836
+ expect(
837
+ screen.getByRole( 'tab', { name: 'Alpha' } )
838
+ ).toHaveFocus();
839
+
856
840
  // onSelect should not be called since the disabled tab is
857
841
  // highlighted, but not selected.
858
- await user.keyboard( '[Tab]' );
859
-
860
- // This assertion ensures focus has time to move to the first
861
- // tab before the test proceeds, preventing flakiness.
862
- // see https://github.com/WordPress/gutenberg/pull/55950
863
- await waitFor( () =>
864
- expect(
865
- screen.getByRole( 'tab', { name: 'Alpha' } )
866
- ).toHaveFocus()
867
- );
868
-
869
- await user.keyboard( '[ArrowLeft]' );
842
+ await press.ArrowLeft();
870
843
  expect( mockOnSelect ).toHaveBeenCalledTimes( 1 );
871
844
 
872
845
  // Delta (which is disabled) has focus
@@ -880,7 +853,7 @@ describe( 'Tabs', () => {
880
853
 
881
854
  it( 'should select first enabled tab when the initial tab is disabled', async () => {
882
855
  const TABS_WITH_ALPHA_DISABLED = TABS.map( ( tabObj ) =>
883
- tabObj.id === 'alpha'
856
+ tabObj.tabId === 'alpha'
884
857
  ? {
885
858
  ...tabObj,
886
859
  tab: {
@@ -909,7 +882,7 @@ describe( 'Tabs', () => {
909
882
 
910
883
  it( 'should select first enabled tab when the tab associated to `initialTabId` is disabled', async () => {
911
884
  const TABS_ONLY_GAMMA_ENABLED = TABS.map( ( tabObj ) =>
912
- tabObj.id !== 'gamma'
885
+ tabObj.tabId !== 'gamma'
913
886
  ? {
914
887
  ...tabObj,
915
888
  tab: {
@@ -951,7 +924,7 @@ describe( 'Tabs', () => {
951
924
  expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
952
925
 
953
926
  const TABS_WITH_ALPHA_DISABLED = TABS.map( ( tabObj ) =>
954
- tabObj.id === 'alpha'
927
+ tabObj.tabId === 'alpha'
955
928
  ? {
956
929
  ...tabObj,
957
930
  tab: {
@@ -998,7 +971,7 @@ describe( 'Tabs', () => {
998
971
  expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
999
972
 
1000
973
  const TABS_WITH_GAMMA_DISABLED = TABS.map( ( tabObj ) =>
1001
- tabObj.id === 'gamma'
974
+ tabObj.tabId === 'gamma'
1002
975
  ? {
1003
976
  ...tabObj,
1004
977
  tab: {
@@ -1067,14 +1040,10 @@ describe( 'Tabs', () => {
1067
1040
  />
1068
1041
  );
1069
1042
 
1070
- // No tab should be selected i.e. it doesn't fall back to first tab.
1071
- // `waitFor` is needed here to prevent testing library from
1072
- // throwing a 'not wrapped in `act()`' error.
1073
- await waitFor( () =>
1074
- expect(
1075
- screen.queryByRole( 'tab', { selected: true } )
1076
- ).not.toBeInTheDocument()
1077
- );
1043
+ expect(
1044
+ screen.queryByRole( 'tab', { selected: true } )
1045
+ ).not.toBeInTheDocument();
1046
+
1078
1047
  // No tabpanel should be rendered either
1079
1048
  expect( screen.queryByRole( 'tabpanel' ) ).not.toBeInTheDocument();
1080
1049
  } );
@@ -1086,7 +1055,7 @@ describe( 'Tabs', () => {
1086
1055
  // Remove beta
1087
1056
  rerender(
1088
1057
  <ControlledTabs
1089
- tabs={ TABS.filter( ( tab ) => tab.id !== 'beta' ) }
1058
+ tabs={ TABS.filter( ( tab ) => tab.tabId !== 'beta' ) }
1090
1059
  selectedTabId="beta"
1091
1060
  />
1092
1061
  );
@@ -1120,7 +1089,7 @@ describe( 'Tabs', () => {
1120
1089
  it( 'should not render any tab if `selectedTabId` refers to a disabled tab', async () => {
1121
1090
  const TABS_WITH_DELTA_WITH_BETA_DISABLED = TABS_WITH_DELTA.map(
1122
1091
  ( tabObj ) =>
1123
- tabObj.id === 'beta'
1092
+ tabObj.tabId === 'beta'
1124
1093
  ? {
1125
1094
  ...tabObj,
1126
1095
  tab: {
@@ -1157,7 +1126,7 @@ describe( 'Tabs', () => {
1157
1126
  expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
1158
1127
 
1159
1128
  const TABS_WITH_BETA_DISABLED = TABS.map( ( tabObj ) =>
1160
- tabObj.id === 'beta'
1129
+ tabObj.tabId === 'beta'
1161
1130
  ? {
1162
1131
  ...tabObj,
1163
1132
  tab: {
@@ -1203,5 +1172,166 @@ describe( 'Tabs', () => {
1203
1172
  ).not.toBeInTheDocument();
1204
1173
  } );
1205
1174
  } );
1175
+
1176
+ describe( 'When `selectOnMove` is `true`', () => {
1177
+ it( 'should automatically select a newly focused tab', async () => {
1178
+ render( <ControlledTabs tabs={ TABS } selectedTabId="beta" /> );
1179
+
1180
+ await press.Tab();
1181
+
1182
+ // Tab key should focus the currently selected tab, which is Beta.
1183
+ expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
1184
+ expect( await getSelectedTab() ).toHaveFocus();
1185
+
1186
+ // Arrow keys should select and move focus to the next tab.
1187
+ await press.ArrowRight();
1188
+ expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
1189
+ expect( await getSelectedTab() ).toHaveFocus();
1190
+ } );
1191
+ it( 'should automatically update focus when the selected tab is changed by the controlling component', async () => {
1192
+ const { rerender } = render(
1193
+ <ControlledTabs tabs={ TABS } selectedTabId="beta" />
1194
+ );
1195
+
1196
+ // Tab key should focus the currently selected tab, which is Beta.
1197
+ await press.Tab();
1198
+ expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
1199
+ expect( await getSelectedTab() ).toHaveFocus();
1200
+
1201
+ rerender(
1202
+ <ControlledTabs tabs={ TABS } selectedTabId="gamma" />
1203
+ );
1204
+
1205
+ // When the selected tab is changed, it should automatically receive focus.
1206
+ expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
1207
+ expect( await getSelectedTab() ).toHaveFocus();
1208
+ } );
1209
+ } );
1210
+ describe( 'When `selectOnMove` is `false`', () => {
1211
+ it( 'should apply focus without automatically changing the selected tab', async () => {
1212
+ render(
1213
+ <ControlledTabs
1214
+ tabs={ TABS }
1215
+ selectedTabId="beta"
1216
+ selectOnMove={ false }
1217
+ />
1218
+ );
1219
+
1220
+ expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
1221
+
1222
+ // Tab key should focus the currently selected tab, which is Beta.
1223
+ await press.Tab();
1224
+ expect(
1225
+ await screen.findByRole( 'tab', { name: 'Beta' } )
1226
+ ).toHaveFocus();
1227
+
1228
+ // Arrow key should move focus but not automatically change the selected tab.
1229
+ await press.ArrowRight();
1230
+ expect(
1231
+ screen.getByRole( 'tab', { name: 'Gamma' } )
1232
+ ).toHaveFocus();
1233
+ expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
1234
+
1235
+ // Pressing the spacebar should select the focused tab.
1236
+ await press.Space();
1237
+ expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
1238
+
1239
+ // Arrow key should move focus but not automatically change the selected tab.
1240
+ await press.ArrowRight();
1241
+ expect(
1242
+ screen.getByRole( 'tab', { name: 'Alpha' } )
1243
+ ).toHaveFocus();
1244
+ expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
1245
+
1246
+ // Pressing the enter/return should select the focused tab.
1247
+ await press.Enter();
1248
+ expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
1249
+ } );
1250
+ it( 'should not automatically update focus when the selected tab is changed by the controlling component', async () => {
1251
+ const { rerender } = render(
1252
+ <ControlledTabs
1253
+ tabs={ TABS }
1254
+ selectedTabId="beta"
1255
+ selectOnMove={ false }
1256
+ />
1257
+ );
1258
+
1259
+ expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
1260
+
1261
+ // Tab key should focus the currently selected tab, which is Beta.
1262
+ await press.Tab();
1263
+ expect( await getSelectedTab() ).toHaveFocus();
1264
+
1265
+ rerender(
1266
+ <ControlledTabs
1267
+ tabs={ TABS }
1268
+ selectedTabId="gamma"
1269
+ selectOnMove={ false }
1270
+ />
1271
+ );
1272
+
1273
+ // When the selected tab is changed, it should not automatically receive focus.
1274
+ expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
1275
+ expect(
1276
+ screen.getByRole( 'tab', { name: 'Beta' } )
1277
+ ).toHaveFocus();
1278
+ } );
1279
+ } );
1280
+ } );
1281
+ it( 'should associate each `Tab` with the correct `TabPanel`, even if they are not rendered in the same order', async () => {
1282
+ const TABS_WITH_DELTA_REVERSED = [ ...TABS_WITH_DELTA ].reverse();
1283
+
1284
+ render(
1285
+ <Tabs>
1286
+ <Tabs.TabList>
1287
+ { TABS_WITH_DELTA.map( ( tabObj ) => (
1288
+ <Tabs.Tab
1289
+ key={ tabObj.tabId }
1290
+ tabId={ tabObj.tabId }
1291
+ className={ tabObj.tab.className }
1292
+ disabled={ tabObj.tab.disabled }
1293
+ >
1294
+ { tabObj.title }
1295
+ </Tabs.Tab>
1296
+ ) ) }
1297
+ </Tabs.TabList>
1298
+ { TABS_WITH_DELTA_REVERSED.map( ( tabObj ) => (
1299
+ <Tabs.TabPanel
1300
+ key={ tabObj.tabId }
1301
+ tabId={ tabObj.tabId }
1302
+ focusable={ tabObj.tabpanel?.focusable }
1303
+ >
1304
+ { tabObj.content }
1305
+ </Tabs.TabPanel>
1306
+ ) ) }
1307
+ </Tabs>
1308
+ );
1309
+
1310
+ // Alpha is the initially selected tab,and should render the correct tabpanel
1311
+ expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
1312
+ expect( screen.getByRole( 'tabpanel' ) ).toHaveTextContent(
1313
+ 'Selected tab: Alpha'
1314
+ );
1315
+
1316
+ // Select Beta, make sure the correct tabpanel is rendered
1317
+ await click( screen.getByRole( 'tab', { name: 'Beta' } ) );
1318
+ expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
1319
+ expect( screen.getByRole( 'tabpanel' ) ).toHaveTextContent(
1320
+ 'Selected tab: Beta'
1321
+ );
1322
+
1323
+ // Select Gamma, make sure the correct tabpanel is rendered
1324
+ await click( screen.getByRole( 'tab', { name: 'Gamma' } ) );
1325
+ expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
1326
+ expect( screen.getByRole( 'tabpanel' ) ).toHaveTextContent(
1327
+ 'Selected tab: Gamma'
1328
+ );
1329
+
1330
+ // Select Delta, make sure the correct tabpanel is rendered
1331
+ await click( screen.getByRole( 'tab', { name: 'Delta' } ) );
1332
+ expect( await getSelectedTab() ).toHaveTextContent( 'Delta' );
1333
+ expect( screen.getByRole( 'tabpanel' ) ).toHaveTextContent(
1334
+ 'Selected tab: Delta'
1335
+ );
1206
1336
  } );
1207
1337
  } );