@wordpress/components 25.14.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 (568) hide show
  1. package/CHANGELOG.md +51 -0
  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-style-picker/component.js +1 -1
  9. package/build/border-control/border-control-style-picker/component.js.map +1 -1
  10. package/build/box-control/index.js +1 -1
  11. package/build/box-control/index.js.map +1 -1
  12. package/build/box-control/linked-button.js +1 -1
  13. package/build/box-control/linked-button.js.map +1 -1
  14. package/build/button/index.js +1 -1
  15. package/build/button/index.js.map +1 -1
  16. package/build/color-palette/index.native.js +11 -7
  17. package/build/color-palette/index.native.js.map +1 -1
  18. package/build/color-picker/color-copy-button.js +1 -1
  19. package/build/color-picker/color-copy-button.js.map +1 -1
  20. package/build/context/wordpress-component.js.map +1 -1
  21. package/build/custom-select-control-v2/index.js +11 -10
  22. package/build/custom-select-control-v2/index.js.map +1 -1
  23. package/build/date-time/date/styles.js +8 -8
  24. package/build/date-time/date/styles.js.map +1 -1
  25. package/build/dropdown-menu-v2/index.js +205 -159
  26. package/build/dropdown-menu-v2/index.js.map +1 -1
  27. package/build/dropdown-menu-v2/styles.js +86 -77
  28. package/build/dropdown-menu-v2/styles.js.map +1 -1
  29. package/build/dropdown-menu-v2/types.js.map +1 -1
  30. package/build/duotone-picker/duotone-picker.js +4 -3
  31. package/build/duotone-picker/duotone-picker.js.map +1 -1
  32. package/build/font-size-picker/index.js +4 -2
  33. package/build/font-size-picker/index.js.map +1 -1
  34. package/build/font-size-picker/index.native.js +6 -3
  35. package/build/font-size-picker/index.native.js.map +1 -1
  36. package/build/form-token-field/index.js +10 -5
  37. package/build/form-token-field/index.js.map +1 -1
  38. package/build/form-token-field/token.js +1 -0
  39. package/build/form-token-field/token.js.map +1 -1
  40. package/build/gradient-picker/index.js +3 -2
  41. package/build/gradient-picker/index.js.map +1 -1
  42. package/build/index.native.js +20 -3
  43. package/build/index.native.js.map +1 -1
  44. package/build/input-control/styles/input-control-styles.js +32 -29
  45. package/build/input-control/styles/input-control-styles.js.map +1 -1
  46. package/build/input-control/types.js.map +1 -1
  47. package/build/lock-unlock.js +18 -0
  48. package/build/lock-unlock.js.map +1 -0
  49. package/build/mobile/bottom-sheet/index.native.js +8 -0
  50. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  51. package/build/mobile/color-settings/palette.screen.native.js +8 -4
  52. package/build/mobile/color-settings/palette.screen.native.js.map +1 -1
  53. package/build/mobile/global-styles-context/utils.native.js +26 -13
  54. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  55. package/build/mobile/image/constants.js +12 -0
  56. package/build/mobile/image/constants.js.map +1 -0
  57. package/build/mobile/image/index.native.js +26 -18
  58. package/build/mobile/image/index.native.js.map +1 -1
  59. package/build/mobile/keyboard-aware-flat-list/index.android.js +40 -8
  60. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  61. package/build/mobile/keyboard-aware-flat-list/index.ios.js +44 -68
  62. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  63. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +39 -0
  64. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  65. package/build/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -29
  66. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  67. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js +93 -0
  68. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  69. package/build/mobile/utils/get-px-from-css-unit.native.js +302 -0
  70. package/build/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  71. package/build/modal/index.js +18 -13
  72. package/build/modal/index.js.map +1 -1
  73. package/build/navigation/menu/menu-title.js +1 -1
  74. package/build/navigation/menu/menu-title.js.map +1 -1
  75. package/build/navigator/navigator-provider/component.js +13 -15
  76. package/build/navigator/navigator-provider/component.js.map +1 -1
  77. package/build/navigator/navigator-screen/component.js +23 -63
  78. package/build/navigator/navigator-screen/component.js.map +1 -1
  79. package/build/navigator/styles.js +52 -0
  80. package/build/navigator/styles.js.map +1 -0
  81. package/build/number-control/index.js +4 -8
  82. package/build/number-control/index.js.map +1 -1
  83. package/build/number-control/types.js.map +1 -1
  84. package/build/palette-edit/index.js +15 -54
  85. package/build/palette-edit/index.js.map +1 -1
  86. package/build/private-apis.js +11 -26
  87. package/build/private-apis.js.map +1 -1
  88. package/build/private-apis.native.js +21 -0
  89. package/build/private-apis.native.js.map +1 -0
  90. package/build/radio-control/index.js +1 -0
  91. package/build/radio-control/index.js.map +1 -1
  92. package/build/range-control/index.js +1 -1
  93. package/build/range-control/index.js.map +1 -1
  94. package/build/select-control/styles/select-control-styles.js +15 -25
  95. package/build/select-control/styles/select-control-styles.js.map +1 -1
  96. package/build/slot-fill/index.js +3 -2
  97. package/build/slot-fill/index.js.map +1 -1
  98. package/build/slot-fill/types.js.map +1 -1
  99. package/build/snackbar/types.js.map +1 -1
  100. package/build/tabs/styles.js +3 -3
  101. package/build/tabs/styles.js.map +1 -1
  102. package/build/tabs/tabpanel.js +9 -7
  103. package/build/tabs/tabpanel.js.map +1 -1
  104. package/build/toggle-group-control/toggle-group-control/component.js +4 -4
  105. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  106. package/build/toggle-group-control/toggle-group-control/styles.js +29 -15
  107. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  108. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  109. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  110. package/build/tools-panel/tools-panel/component.js +3 -1
  111. package/build/tools-panel/tools-panel/component.js.map +1 -1
  112. package/build/tools-panel/tools-panel-header/component.js +9 -8
  113. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  114. package/build/tools-panel/types.js.map +1 -1
  115. package/build/tooltip/index.js +34 -10
  116. package/build/tooltip/index.js.map +1 -1
  117. package/build/tooltip/types.js.map +1 -1
  118. package/build/truncate/hook.js +10 -4
  119. package/build/truncate/hook.js.map +1 -1
  120. package/build/truncate/types.js.map +1 -1
  121. package/build/unit-control/index.js +1 -1
  122. package/build/unit-control/index.js.map +1 -1
  123. package/build/utils/strings.js +34 -3
  124. package/build/utils/strings.js.map +1 -1
  125. package/build-module/base-control/index.js +16 -12
  126. package/build-module/base-control/index.js.map +1 -1
  127. package/build-module/border-box-control/border-box-control-linked-button/component.js +1 -1
  128. package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  129. package/build-module/border-control/border-control-style-picker/component.js +1 -1
  130. package/build-module/border-control/border-control-style-picker/component.js.map +1 -1
  131. package/build-module/box-control/index.js +1 -1
  132. package/build-module/box-control/index.js.map +1 -1
  133. package/build-module/box-control/linked-button.js +1 -1
  134. package/build-module/box-control/linked-button.js.map +1 -1
  135. package/build-module/button/index.js +1 -1
  136. package/build-module/button/index.js.map +1 -1
  137. package/build-module/color-palette/index.native.js +11 -7
  138. package/build-module/color-palette/index.native.js.map +1 -1
  139. package/build-module/color-picker/color-copy-button.js +1 -1
  140. package/build-module/color-picker/color-copy-button.js.map +1 -1
  141. package/build-module/context/wordpress-component.js.map +1 -1
  142. package/build-module/custom-select-control-v2/index.js +11 -10
  143. package/build-module/custom-select-control-v2/index.js.map +1 -1
  144. package/build-module/date-time/date/styles.js +8 -8
  145. package/build-module/date-time/date/styles.js.map +1 -1
  146. package/build-module/dropdown-menu-v2/index.js +201 -154
  147. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  148. package/build-module/dropdown-menu-v2/styles.js +68 -61
  149. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  150. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  151. package/build-module/duotone-picker/duotone-picker.js +4 -3
  152. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  153. package/build-module/font-size-picker/index.js +4 -2
  154. package/build-module/font-size-picker/index.js.map +1 -1
  155. package/build-module/font-size-picker/index.native.js +5 -2
  156. package/build-module/font-size-picker/index.native.js.map +1 -1
  157. package/build-module/form-token-field/index.js +10 -5
  158. package/build-module/form-token-field/index.js.map +1 -1
  159. package/build-module/form-token-field/token.js +1 -0
  160. package/build-module/form-token-field/token.js.map +1 -1
  161. package/build-module/gradient-picker/index.js +3 -2
  162. package/build-module/gradient-picker/index.js.map +1 -1
  163. package/build-module/index.native.js +6 -1
  164. package/build-module/index.native.js.map +1 -1
  165. package/build-module/input-control/styles/input-control-styles.js +31 -29
  166. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  167. package/build-module/input-control/types.js.map +1 -1
  168. package/build-module/lock-unlock.js +9 -0
  169. package/build-module/lock-unlock.js.map +1 -0
  170. package/build-module/mobile/bottom-sheet/index.native.js +9 -1
  171. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  172. package/build-module/mobile/color-settings/palette.screen.native.js +8 -4
  173. package/build-module/mobile/color-settings/palette.screen.native.js.map +1 -1
  174. package/build-module/mobile/global-styles-context/utils.native.js +25 -13
  175. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  176. package/build-module/mobile/image/constants.js +5 -0
  177. package/build-module/mobile/image/constants.js.map +1 -0
  178. package/build-module/mobile/image/index.native.js +25 -16
  179. package/build-module/mobile/image/index.native.js.map +1 -1
  180. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +40 -6
  181. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  182. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +46 -68
  183. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  184. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +33 -0
  185. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  186. package/build-module/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +21 -27
  187. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  188. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js +86 -0
  189. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  190. package/build-module/mobile/utils/get-px-from-css-unit.native.js +294 -0
  191. package/build-module/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  192. package/build-module/modal/index.js +18 -13
  193. package/build-module/modal/index.js.map +1 -1
  194. package/build-module/navigation/menu/menu-title.js +1 -1
  195. package/build-module/navigation/menu/menu-title.js.map +1 -1
  196. package/build-module/navigator/navigator-provider/component.js +3 -16
  197. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  198. package/build-module/navigator/navigator-screen/component.js +16 -70
  199. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  200. package/build-module/navigator/styles.js +47 -0
  201. package/build-module/navigator/styles.js.map +1 -0
  202. package/build-module/number-control/index.js +4 -8
  203. package/build-module/number-control/index.js.map +1 -1
  204. package/build-module/number-control/types.js.map +1 -1
  205. package/build-module/palette-edit/index.js +15 -51
  206. package/build-module/palette-edit/index.js.map +1 -1
  207. package/build-module/private-apis.js +10 -23
  208. package/build-module/private-apis.js.map +1 -1
  209. package/build-module/private-apis.native.js +14 -0
  210. package/build-module/private-apis.native.js.map +1 -0
  211. package/build-module/radio-control/index.js +1 -0
  212. package/build-module/radio-control/index.js.map +1 -1
  213. package/build-module/range-control/index.js +1 -1
  214. package/build-module/range-control/index.js.map +1 -1
  215. package/build-module/select-control/styles/select-control-styles.js +15 -25
  216. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  217. package/build-module/slot-fill/index.js +3 -2
  218. package/build-module/slot-fill/index.js.map +1 -1
  219. package/build-module/slot-fill/types.js.map +1 -1
  220. package/build-module/snackbar/types.js.map +1 -1
  221. package/build-module/tabs/styles.js +3 -3
  222. package/build-module/tabs/styles.js.map +1 -1
  223. package/build-module/tabs/tabpanel.js +9 -7
  224. package/build-module/tabs/tabpanel.js.map +1 -1
  225. package/build-module/toggle-group-control/toggle-group-control/component.js +4 -4
  226. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  227. package/build-module/toggle-group-control/toggle-group-control/styles.js +29 -15
  228. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  229. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  230. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  231. package/build-module/tools-panel/tools-panel/component.js +3 -1
  232. package/build-module/tools-panel/tools-panel/component.js.map +1 -1
  233. package/build-module/tools-panel/tools-panel-header/component.js +9 -8
  234. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  235. package/build-module/tools-panel/types.js.map +1 -1
  236. package/build-module/tooltip/index.js +34 -12
  237. package/build-module/tooltip/index.js.map +1 -1
  238. package/build-module/tooltip/types.js.map +1 -1
  239. package/build-module/truncate/hook.js +10 -4
  240. package/build-module/truncate/hook.js.map +1 -1
  241. package/build-module/truncate/types.js.map +1 -1
  242. package/build-module/unit-control/index.js +1 -1
  243. package/build-module/unit-control/index.js.map +1 -1
  244. package/build-module/utils/strings.js +32 -2
  245. package/build-module/utils/strings.js.map +1 -1
  246. package/build-style/style-rtl.css +29 -5
  247. package/build-style/style.css +29 -5
  248. package/build-types/base-control/index.d.ts +3 -27
  249. package/build-types/base-control/index.d.ts.map +1 -1
  250. package/build-types/base-control/stories/index.story.d.ts +4 -1
  251. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  252. package/build-types/border-box-control/border-box-control/hook.d.ts +4 -4
  253. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +6 -6
  254. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +4 -4
  255. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +4 -4
  256. package/build-types/border-box-control/stories/index.story.d.ts +1 -1
  257. package/build-types/border-control/border-control/hook.d.ts +4 -4
  258. package/build-types/border-control/border-control-dropdown/hook.d.ts +4 -4
  259. package/build-types/border-control/border-control-style-picker/hook.d.ts +4 -4
  260. package/build-types/border-control/stories/index.story.d.ts +6 -6
  261. package/build-types/box-control/stories/index.story.d.ts +42 -42
  262. package/build-types/box-control/styles/box-control-styles.d.ts +1 -1
  263. package/build-types/button/deprecated.d.ts +3 -3
  264. package/build-types/card/card/hook.d.ts +4 -4
  265. package/build-types/card/card-body/hook.d.ts +4 -4
  266. package/build-types/card/card-divider/hook.d.ts +4 -4
  267. package/build-types/card/card-footer/hook.d.ts +4 -4
  268. package/build-types/card/card-header/hook.d.ts +4 -4
  269. package/build-types/card/card-media/hook.d.ts +4 -4
  270. package/build-types/color-palette/styles.d.ts +2 -2
  271. package/build-types/color-picker/component.d.ts +2 -2
  272. package/build-types/color-picker/stories/index.story.d.ts +1 -1
  273. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  274. package/build-types/color-picker/styles.d.ts +3 -3
  275. package/build-types/composite/test/index.d.ts.map +1 -0
  276. package/build-types/context/wordpress-component.d.ts +3 -3
  277. package/build-types/context/wordpress-component.d.ts.map +1 -1
  278. package/build-types/custom-select-control-v2/index.d.ts +3 -2
  279. package/build-types/custom-select-control-v2/index.d.ts.map +1 -1
  280. package/build-types/custom-select-control-v2/stories/index.story.d.ts +4 -3
  281. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -1
  282. package/build-types/date-time/date/styles.d.ts +3 -3
  283. package/build-types/date-time/date-time/styles.d.ts +1 -1
  284. package/build-types/date-time/time/styles.d.ts +4 -4
  285. package/build-types/dropdown/index.d.ts +1 -1
  286. package/build-types/dropdown/index.d.ts.map +1 -1
  287. package/build-types/dropdown/stories/index.story.d.ts +3 -3
  288. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  289. package/build-types/dropdown-menu/index.d.ts +1 -1
  290. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  291. package/build-types/dropdown-menu/stories/index.story.d.ts +2 -2
  292. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  293. package/build-types/dropdown-menu-v2/index.d.ts +18 -15
  294. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  295. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +7 -2
  296. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +1 -1
  297. package/build-types/dropdown-menu-v2/styles.d.ts +77 -23
  298. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  299. package/build-types/dropdown-menu-v2/types.d.ts +89 -173
  300. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  301. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
  302. package/build-types/elevation/hook.d.ts +4 -4
  303. package/build-types/flex/flex/hook.d.ts +4 -4
  304. package/build-types/flex/flex-block/hook.d.ts +4 -4
  305. package/build-types/flex/flex-item/hook.d.ts +4 -4
  306. package/build-types/focal-point-picker/stories/index.story.d.ts +4 -4
  307. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  308. package/build-types/font-size-picker/index.d.ts.map +1 -1
  309. package/build-types/font-size-picker/styles.d.ts +1 -1
  310. package/build-types/form-token-field/index.d.ts.map +1 -1
  311. package/build-types/form-token-field/token.d.ts.map +1 -1
  312. package/build-types/grid/hook.d.ts +4 -4
  313. package/build-types/h-stack/hook.d.ts +4 -4
  314. package/build-types/heading/component.d.ts +1 -1
  315. package/build-types/heading/hook.d.ts +4 -4
  316. package/build-types/input-control/styles/input-control-styles.d.ts +11 -0
  317. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  318. package/build-types/input-control/types.d.ts +1 -1
  319. package/build-types/input-control/types.d.ts.map +1 -1
  320. package/build-types/item-group/item/hook.d.ts +4 -4
  321. package/build-types/item-group/item-group/hook.d.ts +4 -4
  322. package/build-types/lock-unlock.d.ts +3 -0
  323. package/build-types/lock-unlock.d.ts.map +1 -0
  324. package/build-types/menu-item/index.d.ts +1 -1
  325. package/build-types/menu-item/stories/index.story.d.ts +4 -4
  326. package/build-types/mobile/image/constants.d.ts +5 -0
  327. package/build-types/mobile/image/constants.d.ts.map +1 -0
  328. package/build-types/modal/index.d.ts.map +1 -1
  329. package/build-types/navigation/styles/navigation-styles.d.ts +3 -3
  330. package/build-types/navigator/navigator-back-button/hook.d.ts +6 -6
  331. package/build-types/navigator/navigator-button/hook.d.ts +6 -6
  332. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  333. package/build-types/navigator/navigator-screen/component.d.ts +1 -7
  334. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  335. package/build-types/navigator/styles.d.ts +9 -0
  336. package/build-types/navigator/styles.d.ts.map +1 -0
  337. package/build-types/number-control/index.d.ts +1 -1
  338. package/build-types/number-control/index.d.ts.map +1 -1
  339. package/build-types/number-control/stories/index.story.d.ts +1 -1
  340. package/build-types/number-control/types.d.ts +1 -1
  341. package/build-types/palette-edit/index.d.ts +3 -8
  342. package/build-types/palette-edit/index.d.ts.map +1 -1
  343. package/build-types/palette-edit/styles.d.ts +3 -3
  344. package/build-types/popover/index.d.ts +1 -1
  345. package/build-types/popover/index.d.ts.map +1 -1
  346. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  347. package/build-types/private-apis.d.ts +0 -1
  348. package/build-types/private-apis.d.ts.map +1 -1
  349. package/build-types/radio-control/index.d.ts.map +1 -1
  350. package/build-types/range-control/index.d.ts +1 -1
  351. package/build-types/range-control/styles/range-control-styles.d.ts +1 -1
  352. package/build-types/resizable-box/index.d.ts +1 -1
  353. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  354. package/build-types/resizable-box/stories/index.story.d.ts +2 -2
  355. package/build-types/scrollable/hook.d.ts +4 -4
  356. package/build-types/search-control/index.d.ts +1 -1
  357. package/build-types/search-control/stories/index.story.d.ts +2 -2
  358. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  359. package/build-types/slot-fill/index.d.ts +1 -1
  360. package/build-types/slot-fill/index.d.ts.map +1 -1
  361. package/build-types/slot-fill/types.d.ts +4 -0
  362. package/build-types/slot-fill/types.d.ts.map +1 -1
  363. package/build-types/snackbar/index.d.ts +2 -2
  364. package/build-types/snackbar/stories/index.story.d.ts +0 -3
  365. package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
  366. package/build-types/snackbar/types.d.ts +1 -1
  367. package/build-types/snackbar/types.d.ts.map +1 -1
  368. package/build-types/spacer/hook.d.ts +4 -4
  369. package/build-types/surface/hook.d.ts +4 -4
  370. package/build-types/tabs/styles.d.ts.map +1 -1
  371. package/build-types/tabs/tabpanel.d.ts +1 -1
  372. package/build-types/tabs/tabpanel.d.ts.map +1 -1
  373. package/build-types/text/hook.d.ts +4 -4
  374. package/build-types/text-control/index.d.ts +1 -1
  375. package/build-types/textarea-control/index.d.ts +1 -1
  376. package/build-types/toggle-control/stories/index.story.d.ts +2 -2
  377. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +1 -1
  378. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +1 -1
  379. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  380. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +2 -2
  381. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  382. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  383. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +1 -1
  384. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  385. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  386. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  387. package/build-types/toolbar/toolbar-button/index.d.ts +3 -3
  388. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  389. package/build-types/tools-panel/tools-panel/hook.d.ts +5 -4
  390. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  391. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  392. package/build-types/tools-panel/tools-panel-header/hook.d.ts +5 -4
  393. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  394. package/build-types/tools-panel/tools-panel-item/hook.d.ts +4 -4
  395. package/build-types/tools-panel/types.d.ts +9 -0
  396. package/build-types/tools-panel/types.d.ts.map +1 -1
  397. package/build-types/tooltip/index.d.ts +1 -1
  398. package/build-types/tooltip/index.d.ts.map +1 -1
  399. package/build-types/tooltip/stories/index.story.d.ts +10 -1
  400. package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
  401. package/build-types/tooltip/types.d.ts +3 -0
  402. package/build-types/tooltip/types.d.ts.map +1 -1
  403. package/build-types/truncate/hook.d.ts +5 -5
  404. package/build-types/truncate/hook.d.ts.map +1 -1
  405. package/build-types/truncate/types.d.ts +4 -0
  406. package/build-types/truncate/types.d.ts.map +1 -1
  407. package/build-types/unit-control/index.d.ts +1 -1
  408. package/build-types/unit-control/styles/unit-control-styles.d.ts +1 -1
  409. package/build-types/utils/strings.d.ts +14 -2
  410. package/build-types/utils/strings.d.ts.map +1 -1
  411. package/build-types/v-stack/hook.d.ts +4 -4
  412. package/build-types/v-stack/stories/index.story.d.ts +1 -1
  413. package/package.json +20 -21
  414. package/src/alignment-matrix-control/test/index.tsx +10 -16
  415. package/src/base-control/index.tsx +21 -16
  416. package/src/border-box-control/border-box-control-linked-button/component.tsx +1 -1
  417. package/src/border-control/border-control-style-picker/component.tsx +1 -1
  418. package/src/box-control/index.tsx +1 -1
  419. package/src/box-control/linked-button.tsx +1 -1
  420. package/src/button/README.md +32 -6
  421. package/src/button/index.tsx +1 -1
  422. package/src/button-group/README.md +0 -6
  423. package/src/card/card/README.md +1 -1
  424. package/src/checkbox-control/README.md +1 -9
  425. package/src/color-palette/index.native.js +18 -7
  426. package/src/color-picker/color-copy-button.tsx +1 -1
  427. package/src/combobox-control/README.md +0 -6
  428. package/src/composite/test/index.tsx +576 -0
  429. package/src/context/wordpress-component.ts +11 -6
  430. package/src/custom-select-control/README.md +0 -6
  431. package/src/custom-select-control-v2/index.tsx +13 -12
  432. package/src/date-time/date/styles.ts +3 -3
  433. package/src/dropdown-menu/README.md +0 -5
  434. package/src/dropdown-menu-v2/README.md +75 -136
  435. package/src/dropdown-menu-v2/index.tsx +321 -231
  436. package/src/dropdown-menu-v2/stories/index.story.tsx +522 -126
  437. package/src/dropdown-menu-v2/styles.ts +226 -151
  438. package/src/dropdown-menu-v2/test/index.tsx +480 -188
  439. package/src/dropdown-menu-v2/types.ts +98 -184
  440. package/src/duotone-picker/duotone-picker.tsx +7 -3
  441. package/src/font-size-picker/index.native.js +8 -2
  442. package/src/font-size-picker/index.tsx +4 -2
  443. package/src/form-toggle/README.md +0 -6
  444. package/src/form-token-field/index.tsx +11 -7
  445. package/src/form-token-field/test/index.tsx +97 -0
  446. package/src/form-token-field/token.tsx +1 -0
  447. package/src/gradient-picker/index.tsx +2 -2
  448. package/src/index.native.js +6 -1
  449. package/src/input-control/styles/input-control-styles.tsx +10 -8
  450. package/src/input-control/types.ts +1 -1
  451. package/src/lock-unlock.js +10 -0
  452. package/src/menu-group/README.md +0 -8
  453. package/src/menu-items-choice/README.md +0 -7
  454. package/src/mobile/bottom-sheet/index.native.js +15 -1
  455. package/src/mobile/color-settings/palette.screen.native.js +7 -5
  456. package/src/mobile/global-styles-context/test/fixtures/theme.native.js +0 -20
  457. package/src/mobile/global-styles-context/utils.native.js +28 -19
  458. package/src/mobile/image/constants.js +1 -0
  459. package/src/mobile/image/index.native.js +55 -18
  460. package/src/mobile/image/style.native.scss +35 -9
  461. package/src/mobile/keyboard-aware-flat-list/index.android.js +50 -5
  462. package/src/mobile/keyboard-aware-flat-list/index.ios.js +65 -91
  463. package/src/mobile/keyboard-aware-flat-list/test/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +27 -25
  464. package/src/mobile/keyboard-aware-flat-list/test/use-scroll.native.js +71 -0
  465. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +41 -0
  466. package/src/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -27
  467. package/src/mobile/keyboard-aware-flat-list/use-scroll.native.js +100 -0
  468. package/src/mobile/utils/get-px-from-css-unit.native.js +329 -0
  469. package/src/mobile/utils/test/get-px-from-css-unit.native.js +172 -0
  470. package/src/modal/README.md +0 -6
  471. package/src/modal/index.tsx +18 -16
  472. package/src/modal/test/index.tsx +90 -1
  473. package/src/navigation/menu/menu-title.tsx +1 -1
  474. package/src/navigator/navigator-provider/component.tsx +3 -4
  475. package/src/navigator/navigator-screen/component.tsx +15 -93
  476. package/src/navigator/styles.ts +71 -0
  477. package/src/navigator/test/index.tsx +0 -64
  478. package/src/notice/README.md +0 -6
  479. package/src/number-control/README.md +2 -2
  480. package/src/number-control/index.tsx +4 -8
  481. package/src/number-control/types.ts +1 -1
  482. package/src/palette-edit/index.tsx +15 -58
  483. package/src/palette-edit/test/index.tsx +1 -75
  484. package/src/panel/README.md +0 -6
  485. package/src/private-apis.native.js +13 -0
  486. package/src/private-apis.ts +12 -37
  487. package/src/radio-control/README.md +0 -6
  488. package/src/radio-control/index.tsx +4 -1
  489. package/src/radio-control/style.scss +29 -2
  490. package/src/radio-group/README.md +0 -6
  491. package/src/range-control/README.md +1 -9
  492. package/src/range-control/index.tsx +1 -1
  493. package/src/search-control/README.md +0 -6
  494. package/src/select-control/README.md +0 -6
  495. package/src/select-control/styles/select-control-styles.ts +10 -28
  496. package/src/slot-fill/index.tsx +5 -2
  497. package/src/slot-fill/types.ts +5 -0
  498. package/src/snackbar/README.md +0 -6
  499. package/src/snackbar/stories/index.story.tsx +7 -5
  500. package/src/snackbar/style.scss +4 -3
  501. package/src/snackbar/types.ts +2 -1
  502. package/src/spacer/README.md +0 -2
  503. package/src/tab-panel/README.md +0 -5
  504. package/src/tab-panel/test/index.tsx +39 -56
  505. package/src/tabs/styles.ts +7 -1
  506. package/src/tabs/tabpanel.tsx +7 -6
  507. package/src/tabs/test/index.tsx +56 -0
  508. package/src/text-control/README.md +0 -6
  509. package/src/textarea-control/README.md +0 -6
  510. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +12 -16
  511. package/src/toggle-group-control/test/index.tsx +58 -45
  512. package/src/toggle-group-control/toggle-group-control/component.tsx +5 -4
  513. package/src/toggle-group-control/toggle-group-control/styles.ts +13 -19
  514. package/src/toggle-group-control/toggle-group-control-option/README.md +1 -1
  515. package/src/toggle-group-control/toggle-group-control-option-base/README.md +1 -1
  516. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +3 -2
  517. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  518. package/src/toolbar/toolbar/README.md +0 -6
  519. package/src/tools-panel/test/index.tsx +12 -20
  520. package/src/tools-panel/tools-panel/README.md +7 -0
  521. package/src/tools-panel/tools-panel/component.tsx +2 -0
  522. package/src/tools-panel/tools-panel-header/README.md +7 -0
  523. package/src/tools-panel/tools-panel-header/component.tsx +20 -13
  524. package/src/tools-panel/types.ts +9 -0
  525. package/src/tooltip/README.md +4 -0
  526. package/src/tooltip/index.tsx +48 -10
  527. package/src/tooltip/stories/index.story.tsx +18 -1
  528. package/src/tooltip/test/index.tsx +404 -254
  529. package/src/tooltip/types.ts +4 -0
  530. package/src/tree-grid/README.md +0 -4
  531. package/src/truncate/README.md +8 -0
  532. package/src/truncate/hook.ts +17 -10
  533. package/src/truncate/test/index.tsx +54 -27
  534. package/src/truncate/types.ts +4 -0
  535. package/src/unit-control/index.tsx +1 -1
  536. package/src/utils/strings.ts +30 -2
  537. package/src/utils/test/strings.js +96 -1
  538. package/tsconfig.tsbuildinfo +1 -1
  539. package/build/dropdown-menu-v2-ariakit/index.js +0 -256
  540. package/build/dropdown-menu-v2-ariakit/index.js.map +0 -1
  541. package/build/dropdown-menu-v2-ariakit/styles.js +0 -180
  542. package/build/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  543. package/build/dropdown-menu-v2-ariakit/types.js +0 -6
  544. package/build/dropdown-menu-v2-ariakit/types.js.map +0 -1
  545. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  546. package/build-module/dropdown-menu-v2-ariakit/index.js +0 -237
  547. package/build-module/dropdown-menu-v2-ariakit/index.js.map +0 -1
  548. package/build-module/dropdown-menu-v2-ariakit/styles.js +0 -165
  549. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  550. package/build-module/dropdown-menu-v2-ariakit/types.js +0 -2
  551. package/build-module/dropdown-menu-v2-ariakit/types.js.map +0 -1
  552. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  553. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +0 -20
  554. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +0 -1
  555. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts +0 -16
  556. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +0 -1
  557. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +0 -96
  558. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +0 -1
  559. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts.map +0 -1
  560. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +0 -168
  561. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +0 -1
  562. package/src/dropdown-menu-v2-ariakit/README.md +0 -331
  563. package/src/dropdown-menu-v2-ariakit/index.tsx +0 -383
  564. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +0 -617
  565. package/src/dropdown-menu-v2-ariakit/styles.ts +0 -345
  566. package/src/dropdown-menu-v2-ariakit/test/index.tsx +0 -1108
  567. package/src/dropdown-menu-v2-ariakit/types.ts +0 -179
  568. /package/build-types/{dropdown-menu-v2-ariakit → composite}/test/index.d.ts +0 -0
@@ -1,24 +1,46 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
4
+ // eslint-disable-next-line no-restricted-imports
5
+ import type * as Ariakit from '@ariakit/react';
6
+ import type { Placement } from '@floating-ui/react-dom';
5
7
 
6
- export type DropdownMenuProps = {
8
+ export interface DropdownMenuContext {
9
+ /**
10
+ * The ariakit store shared across all DropdownMenu subcomponents.
11
+ */
12
+ store: Ariakit.MenuStore;
13
+ /**
14
+ * The variant used by the underlying menu popover.
15
+ */
16
+ variant?: 'toolbar';
17
+ }
18
+
19
+ export interface DropdownMenuProps {
20
+ /**
21
+ * The trigger button.
22
+ */
23
+ trigger: React.ReactElement;
24
+ /**
25
+ * The contents of the dropdown.
26
+ */
27
+ children?: React.ReactNode;
7
28
  /**
8
29
  * The open state of the dropdown menu when it is initially rendered. Use when
9
- * you do not need to control its open state.
30
+ * not wanting to control its open state.
10
31
  *
32
+ * @default false
11
33
  */
12
- defaultOpen?: DropdownMenuPrimitive.DropdownMenuProps[ 'defaultOpen' ];
34
+ defaultOpen?: boolean;
13
35
  /**
14
36
  * The controlled open state of the dropdown menu. Must be used in conjunction
15
37
  * with `onOpenChange`.
16
38
  */
17
- open?: DropdownMenuPrimitive.DropdownMenuProps[ 'open' ];
39
+ open?: boolean;
18
40
  /**
19
41
  * Event handler called when the open state of the dropdown menu changes.
20
42
  */
21
- onOpenChange?: DropdownMenuPrimitive.DropdownMenuProps[ 'onOpenChange' ];
43
+ onOpenChange?: ( open: boolean ) => void;
22
44
  /**
23
45
  * The modality of the dropdown menu. When set to true, interaction with
24
46
  * outside elements will be disabled and only menu content will be visible to
@@ -26,240 +48,132 @@ export type DropdownMenuProps = {
26
48
  *
27
49
  * @default true
28
50
  */
29
- modal?: DropdownMenuPrimitive.DropdownMenuProps[ 'modal' ];
51
+ modal?: boolean;
30
52
  /**
31
- * The preferred side of the trigger to render against when open.
32
- * Will be reversed when collisions occur and avoidCollisions is enabled.
53
+ * The placement of the dropdown menu popover.
33
54
  *
34
- * @default 'bottom'
55
+ * @default 'bottom-start' for root-level menus, 'right-start' for nested menus
35
56
  */
36
- side?: DropdownMenuPrimitive.DropdownMenuContentProps[ 'side' ];
57
+ placement?: Placement;
37
58
  /**
38
- * The distance in pixels from the trigger.
59
+ * The distance between the popover and the anchor element.
39
60
  *
40
- * @default 0
61
+ * @default 8 for root-level menus, 16 for nested menus
41
62
  */
42
- sideOffset?: DropdownMenuPrimitive.DropdownMenuContentProps[ 'sideOffset' ];
63
+ gutter?: number;
43
64
  /**
44
- * The preferred alignment against the trigger.
45
- * May change when collisions occur.
65
+ * The skidding of the popover along the anchor element. Can be set to
66
+ * negative values to make the popover shift to the opposite side.
46
67
  *
47
- * @default 'start'
68
+ * @default 0 for root-level menus, -8 for nested menus
48
69
  */
49
- align?: DropdownMenuPrimitive.DropdownMenuContentProps[ 'align' ];
70
+ shift?: number;
50
71
  /**
51
- * An offset in pixels from the "start" or "end" alignment options.
72
+ * Determines whether the menu popover will be hidden when the user presses
73
+ * the Escape key.
52
74
  *
53
- * @default 0
54
- */
55
- alignOffset?: DropdownMenuPrimitive.DropdownMenuContentProps[ 'alignOffset' ];
56
- /**
57
- * The trigger button.
58
- */
59
- trigger: React.ReactNode;
75
+ * @default `( event ) => { event.preventDefault(); return true; }`
76
+ */
77
+ hideOnEscape?:
78
+ | boolean
79
+ | ( (
80
+ event: KeyboardEvent | React.KeyboardEvent< Element >
81
+ ) => boolean );
82
+ }
83
+
84
+ export interface DropdownMenuGroupProps {
60
85
  /**
61
- * The contents of the dropdown
86
+ * The contents of the dropdown menu group.
62
87
  */
63
88
  children: React.ReactNode;
64
- };
89
+ }
65
90
 
66
- export type DropdownSubMenuTriggerProps = {
91
+ export interface DropdownMenuItemProps {
67
92
  /**
68
- * The contents of the item.
93
+ * The contents of the menu item.
69
94
  */
70
95
  children: React.ReactNode;
71
96
  /**
72
- * The contents of the item's prefix.
97
+ * The contents of the menu item's prefix.
73
98
  */
74
99
  prefix?: React.ReactNode;
75
100
  /**
76
- * The contents of the item's suffix.
77
- *
78
- * @default The standard chevron icon for a submenu trigger.
101
+ * The contents of the menu item's suffix.
79
102
  */
80
103
  suffix?: React.ReactNode;
81
- };
82
-
83
- export type DropdownSubMenuProps = {
84
104
  /**
85
- * The open state of the submenu when it is initially rendered. Use when you
86
- * do not need to control its open state.
87
- */
88
- defaultOpen?: DropdownMenuPrimitive.DropdownMenuSubProps[ 'defaultOpen' ];
89
- /**
90
- * The controlled open state of the submenu. Must be used in conjunction with
91
- * `onOpenChange`.
92
- */
93
- open?: DropdownMenuPrimitive.DropdownMenuSubProps[ 'open' ];
94
- /**
95
- * Event handler called when the open state of the submenu changes.
96
- */
97
- onOpenChange?: DropdownMenuPrimitive.DropdownMenuSubProps[ 'onOpenChange' ];
98
- /**
99
- * When `true`, prevents the user from interacting with the item.
100
- */
101
- disabled?: DropdownMenuPrimitive.DropdownMenuSubTriggerProps[ 'disabled' ];
102
- /**
103
- * Optional text used for typeahead purposes for the trigger. By default the typeahead
104
- * behavior will use the `.textContent` of the trigger. Use this when the content
105
- * is complex, or you have non-textual content inside.
106
- */
107
- textValue?: DropdownMenuPrimitive.DropdownMenuSubTriggerProps[ 'textValue' ];
108
- /**
109
- * The contents rendered inside the trigger. The trigger should be
110
- * an instance of the `DropdownSubMenuTriggerProps` component.
105
+ * Whether to hide the parent menu when the item is clicked.
106
+ *
107
+ * @default true
111
108
  */
112
- trigger: React.ReactNode;
109
+ hideOnClick?: boolean;
113
110
  /**
114
- * The contents of the dropdown sub menu
111
+ * Determines if the element is disabled.
115
112
  */
116
- children: React.ReactNode;
117
- };
113
+ disabled?: boolean;
114
+ }
118
115
 
119
- export type DropdownMenuItemProps = {
116
+ export interface DropdownMenuCheckboxItemProps
117
+ extends Omit< DropdownMenuItemProps, 'prefix' | 'hideOnClick' > {
120
118
  /**
121
- * When true, prevents the user from interacting with the item.
119
+ * Whether to hide the dropdown menu when the item is clicked.
122
120
  *
123
121
  * @default false
124
122
  */
125
- disabled?: DropdownMenuPrimitive.DropdownMenuItemProps[ 'disabled' ];
123
+ hideOnClick?: boolean;
126
124
  /**
127
- * Event handler called when the user selects an item (via mouse or keyboard).
128
- * Calling `event.preventDefault` in this handler will prevent the dropdown
129
- * menu from closing when selecting that item.
125
+ * The checkbox menu item's name.
130
126
  */
131
- onSelect?: DropdownMenuPrimitive.DropdownMenuItemProps[ 'onSelect' ];
127
+ name: string;
132
128
  /**
133
- * Optional text used for typeahead purposes. By default the typeahead
134
- * behavior will use the `.textContent` of the item. Use this when the content
135
- * is complex, or you have non-textual content inside.
129
+ * The checkbox item's value, useful when using multiple checkbox menu items
130
+ * associated to the same `name`.
136
131
  */
137
- textValue?: DropdownMenuPrimitive.DropdownMenuItemProps[ 'textValue' ];
132
+ value?: string;
138
133
  /**
139
- * The contents of the item
134
+ * The controlled checked state of the checkbox menu item.
140
135
  */
141
- children: React.ReactNode;
136
+ checked?: boolean;
142
137
  /**
143
- * The contents of the item's prefix
138
+ * The checked state of the checkbox menu item when it is initially rendered.
139
+ * Use when not wanting to control its checked state.
144
140
  */
145
- prefix?: React.ReactNode;
141
+ defaultChecked?: boolean;
146
142
  /**
147
- * The contents of the item's suffix
143
+ * Event handler called when the checked state of the checkbox menu item changes.
148
144
  */
149
- suffix?: React.ReactNode;
150
- };
145
+ onChange?: ( event: React.ChangeEvent< HTMLInputElement > ) => void;
146
+ }
151
147
 
152
- export type DropdownMenuCheckboxItemProps = {
148
+ export interface DropdownMenuRadioItemProps
149
+ extends Omit< DropdownMenuItemProps, 'prefix' | 'hideOnClick' > {
153
150
  /**
154
- * The controlled checked state of the item.
155
- * Must be used in conjunction with `onCheckedChange`.
151
+ * Whether to hide the dropdown menu when the item is clicked.
156
152
  *
157
153
  * @default false
158
154
  */
159
- checked?: DropdownMenuPrimitive.DropdownMenuCheckboxItemProps[ 'checked' ];
160
- /**
161
- * Event handler called when the checked state changes.
162
- */
163
- onCheckedChange?: DropdownMenuPrimitive.DropdownMenuCheckboxItemProps[ 'onCheckedChange' ];
155
+ hideOnClick?: boolean;
164
156
  /**
165
- * When `true`, prevents the user from interacting with the item.
157
+ * The radio item's name.
166
158
  */
167
- disabled?: DropdownMenuPrimitive.DropdownMenuCheckboxItemProps[ 'disabled' ];
159
+ name: string;
168
160
  /**
169
- * Event handler called when the user selects an item (via mouse or keyboard).
170
- * Calling `event.preventDefault` in this handler will prevent the dropdown
171
- * menu from closing when selecting that item.
161
+ * The radio item's value.
172
162
  */
173
- onSelect?: DropdownMenuPrimitive.DropdownMenuCheckboxItemProps[ 'onSelect' ];
163
+ value: string | number;
174
164
  /**
175
- * Optional text used for typeahead purposes. By default the typeahead
176
- * behavior will use the `.textContent` of the item. Use this when the content
177
- * is complex, or you have non-textual content inside.
165
+ * The controlled checked state of the radio menu item.
178
166
  */
179
- textValue?: DropdownMenuPrimitive.DropdownMenuCheckboxItemProps[ 'textValue' ];
167
+ checked?: boolean;
180
168
  /**
181
- * The contents of the checkbox item
169
+ * The checked state of the radio menu item when it is initially rendered.
170
+ * Use when not wanting to control its checked state.
182
171
  */
183
- children: React.ReactNode;
172
+ defaultChecked?: boolean;
184
173
  /**
185
- * The contents of the checkbox item's suffix
174
+ * Event handler called when the checked radio menu item changes.
186
175
  */
187
- suffix?: React.ReactNode;
188
- };
189
-
190
- export type DropdownMenuRadioGroupProps = {
191
- /**
192
- * The value of the selected item in the group.
193
- */
194
- value?: DropdownMenuPrimitive.DropdownMenuRadioGroupProps[ 'value' ];
195
- /**
196
- * Event handler called when the value changes.
197
- */
198
- onValueChange?: DropdownMenuPrimitive.DropdownMenuRadioGroupProps[ 'onValueChange' ];
199
- /**
200
- * The contents of the radio group
201
- */
202
- children: React.ReactNode;
203
- };
204
-
205
- export type DropdownMenuRadioItemProps = {
206
- /**
207
- * The unique value of the item.
208
- */
209
- value: DropdownMenuPrimitive.DropdownMenuRadioItemProps[ 'value' ];
210
- /**
211
- * When `true`, prevents the user from interacting with the item.
212
- */
213
- disabled?: DropdownMenuPrimitive.DropdownMenuRadioItemProps[ 'disabled' ];
214
- /**
215
- * Event handler called when the user selects an item (via mouse or keyboard).
216
- * Calling `event.preventDefault` in this handler will prevent the dropdown
217
- * menu from closing when selecting that item.
218
- */
219
- onSelect?: DropdownMenuPrimitive.DropdownMenuRadioItemProps[ 'onSelect' ];
220
- /**
221
- * Optional text used for typeahead purposes. By default the typeahead
222
- * behavior will use the `.textContent` of the item. Use this when the content
223
- * is complex, or you have non-textual content inside.
224
- */
225
- textValue?: DropdownMenuPrimitive.DropdownMenuRadioItemProps[ 'textValue' ];
226
- /**
227
- * The contents of the radio item
228
- */
229
- children: React.ReactNode;
230
- /**
231
- * The contents of the radio item's suffix
232
- */
233
- suffix?: React.ReactNode;
234
- };
235
-
236
- export type DropdownMenuLabelProps = {
237
- /**
238
- * The contents of the label
239
- */
240
- children: React.ReactNode;
241
- };
242
-
243
- export type DropdownMenuGroupProps = {
244
- /**
245
- * The contents of the group
246
- */
247
- children: React.ReactNode;
248
- };
249
-
250
- export type DropdownMenuSeparatorProps = {};
251
-
252
- export type DropdownMenuInternalContext = {
253
- /**
254
- * This variant can be used to change the appearance of the component in
255
- * specific contexts, ie. when rendered inside the `Toolbar` component.
256
- */
257
- variant?: 'toolbar';
258
- };
176
+ onChange?: ( event: React.ChangeEvent< HTMLInputElement > ) => void;
177
+ }
259
178
 
260
- export type DropdownMenuPrivateContext = Pick<
261
- DropdownMenuInternalContext,
262
- 'variant'
263
- > & {
264
- portalContainer?: HTMLElement | null;
265
- };
179
+ export interface DropdownMenuSeparatorProps {}
@@ -91,7 +91,7 @@ function DuotonePicker( {
91
91
  />
92
92
  );
93
93
 
94
- const options = duotonePalette.map( ( { colors, slug, name } ) => {
94
+ const duotoneOptions = duotonePalette.map( ( { colors, slug, name } ) => {
95
95
  const style = {
96
96
  background: getGradientFromCSSColors( colors, '135deg' ),
97
97
  color: 'transparent',
@@ -155,11 +155,15 @@ function DuotonePicker( {
155
155
  }
156
156
  }
157
157
 
158
+ const options = unsetable
159
+ ? [ unsetOption, ...duotoneOptions ]
160
+ : duotoneOptions;
161
+
158
162
  return (
159
163
  <CircularOptionPicker
160
164
  { ...otherProps }
161
165
  { ...metaProps }
162
- options={ unsetable ? [ unsetOption, ...options ] : options }
166
+ options={ options }
163
167
  actions={
164
168
  !! clearable && (
165
169
  <CircularOptionPicker.ButtonAction
@@ -170,7 +174,7 @@ function DuotonePicker( {
170
174
  )
171
175
  }
172
176
  >
173
- <Spacer paddingTop={ 4 }>
177
+ <Spacer paddingTop={ options.length === 0 ? 0 : 4 }>
174
178
  <VStack spacing={ 3 }>
175
179
  { ! disableCustomColors && ! disableCustomDuotone && (
176
180
  <CustomDuotoneBar
@@ -11,11 +11,11 @@ import { useState } from '@wordpress/element';
11
11
  import { Icon, chevronRight, check } from '@wordpress/icons';
12
12
  import { __, sprintf } from '@wordpress/i18n';
13
13
  import { BottomSheet } from '@wordpress/components';
14
- import { getPxFromCssUnit } from '@wordpress/block-editor';
15
14
 
16
15
  /**
17
16
  * Internal dependencies
18
17
  */
18
+ import { default as getPxFromCssUnit } from '../mobile/utils/get-px-from-css-unit';
19
19
  import { default as UnitControl, useCustomUnits } from '../unit-control';
20
20
  import styles from './style.scss';
21
21
 
@@ -62,6 +62,12 @@ function FontSizePicker( {
62
62
  availableUnits: [ 'px', 'em', 'rem' ],
63
63
  } );
64
64
 
65
+ const accessibilityLabel = sprintf(
66
+ // translators: %1$s: Font size name e.g. Small
67
+ __( 'Font Size, %1$s' ),
68
+ selectedOption.name
69
+ );
70
+
65
71
  return (
66
72
  <BottomSheet.SubSheet
67
73
  navigationButton={
@@ -80,7 +86,7 @@ function FontSizePicker( {
80
86
  }
81
87
  onPress={ openSubSheet }
82
88
  accessibilityRole={ 'button' }
83
- accessibilityLabel={ selectedOption.name }
89
+ accessibilityLabel={ accessibilityLabel }
84
90
  accessibilityHint={ sprintf(
85
91
  // translators: %s: Select control button label e.g. Small
86
92
  __( 'Navigates to select %s' ),
@@ -123,6 +123,7 @@ const UnforwardedFontSizePicker = (
123
123
  );
124
124
  const isValueUnitRelative =
125
125
  !! valueUnit && [ 'em', 'rem' ].includes( valueUnit );
126
+ const isDisabled = value === undefined;
126
127
 
127
128
  return (
128
129
  <Container ref={ ref } className="components-font-size-picker">
@@ -153,7 +154,7 @@ const UnforwardedFontSizePicker = (
153
154
  );
154
155
  } }
155
156
  isPressed={ showCustomValueControl }
156
- isSmall
157
+ size="small"
157
158
  />
158
159
  ) }
159
160
  </Header>
@@ -276,7 +277,8 @@ const UnforwardedFontSizePicker = (
276
277
  { withReset && (
277
278
  <FlexItem>
278
279
  <Button
279
- disabled={ value === undefined }
280
+ disabled={ isDisabled }
281
+ __experimentalIsFocusable
280
282
  onClick={ () => {
281
283
  onChange?.( undefined );
282
284
  } }
@@ -4,12 +4,6 @@ FormToggle switches a single setting on or off.
4
4
 
5
5
  ![On and off FormToggles. The top toggle is on, while the bottom toggle is off.](https://wordpress.org/gutenberg/files/2019/01/Toggle.jpg)
6
6
 
7
- ## Table of contents
8
-
9
- 1. [Design guidelines](#design-guidelines)
10
- 2. [Development guidelines](#development-guidelines)
11
- 3. [Related components](#related-components)
12
-
13
7
  ## Design guidelines
14
8
 
15
9
  ### Usage
@@ -177,13 +177,17 @@ export function FormTokenField( props: FormTokenFieldProps ) {
177
177
  setInputOffsetFromEnd( 0 );
178
178
  setIsActive( false );
179
179
 
180
- // If `__experimentalExpandOnFocus` is true, don't close the suggestions list when
181
- // the user clicks on it (`tokensAndInput` will be the element that caused the blur).
182
- const shouldKeepSuggestionsExpanded =
183
- ! __experimentalExpandOnFocus ||
184
- ( __experimentalExpandOnFocus &&
185
- event.relatedTarget === tokensAndInput.current );
186
- setIsExpanded( shouldKeepSuggestionsExpanded );
180
+ if ( __experimentalExpandOnFocus ) {
181
+ // If `__experimentalExpandOnFocus` is true, don't close the suggestions list when
182
+ // the user clicks on it (`tokensAndInput` will be the element that caused the blur).
183
+ const hasFocusWithin =
184
+ event.relatedTarget === tokensAndInput.current;
185
+ setIsExpanded( hasFocusWithin );
186
+ } else {
187
+ // Else collapse the suggestion list. This will result in the suggestion list closing
188
+ // after a suggestion has been submitted since that causes a blur.
189
+ setIsExpanded( false );
190
+ }
187
191
 
188
192
  setSelectedSuggestionIndex( -1 );
189
193
  setSelectedSuggestionScroll( false );
@@ -741,6 +741,103 @@ describe( 'FormTokenField', () => {
741
741
  ] );
742
742
  } );
743
743
 
744
+ it( 'should render suggestions after a selection is made when the `__experimentalExpandOnFocus` prop is set to `true`', async () => {
745
+ const user = userEvent.setup();
746
+
747
+ const onFocusSpy = jest.fn();
748
+
749
+ const suggestions = [ 'Green', 'Emerald', 'Seaweed' ];
750
+
751
+ render(
752
+ <>
753
+ <FormTokenFieldWithState
754
+ onFocus={ onFocusSpy }
755
+ suggestions={ suggestions }
756
+ __experimentalExpandOnFocus
757
+ />
758
+ </>
759
+ );
760
+
761
+ const input = screen.getByRole( 'combobox' );
762
+
763
+ await user.type( input, 'ee' );
764
+
765
+ expectVisibleSuggestionsToBe( screen.getByRole( 'listbox' ), [
766
+ 'Green',
767
+ 'Seaweed',
768
+ ] );
769
+
770
+ // Select the first suggestion ("Green")
771
+ await user.keyboard( '[ArrowDown][Enter]' );
772
+
773
+ expect( screen.getByRole( 'listbox' ) ).toBeVisible();
774
+ } );
775
+
776
+ it( 'should not render suggestions after a selection is made when the `__experimentalExpandOnFocus` prop is set to `false` or not defined', async () => {
777
+ const user = userEvent.setup();
778
+
779
+ const onFocusSpy = jest.fn();
780
+
781
+ const suggestions = [ 'Green', 'Emerald', 'Seaweed' ];
782
+
783
+ render(
784
+ <>
785
+ <FormTokenFieldWithState
786
+ onFocus={ onFocusSpy }
787
+ suggestions={ suggestions }
788
+ />
789
+ </>
790
+ );
791
+
792
+ const input = screen.getByRole( 'combobox' );
793
+
794
+ await user.type( input, 'ee' );
795
+
796
+ expectVisibleSuggestionsToBe( screen.getByRole( 'listbox' ), [
797
+ 'Green',
798
+ 'Seaweed',
799
+ ] );
800
+
801
+ // Select the first suggestion ("Green")
802
+ await user.keyboard( '[ArrowDown][Enter]' );
803
+
804
+ expect( screen.queryByRole( 'listbox' ) ).not.toBeInTheDocument();
805
+ } );
806
+
807
+ it( 'should not render suggestions after the input is blurred', async () => {
808
+ const user = userEvent.setup();
809
+
810
+ const onFocusSpy = jest.fn();
811
+
812
+ const suggestions = [ 'Green', 'Emerald', 'Seaweed' ];
813
+
814
+ render(
815
+ <>
816
+ <FormTokenFieldWithState
817
+ onFocus={ onFocusSpy }
818
+ suggestions={ suggestions }
819
+ />
820
+ </>
821
+ );
822
+
823
+ const input = screen.getByRole( 'combobox' );
824
+
825
+ await user.type( input, 'ee' );
826
+
827
+ expectVisibleSuggestionsToBe( screen.getByRole( 'listbox' ), [
828
+ 'Green',
829
+ 'Seaweed',
830
+ ] );
831
+
832
+ // Select the first suggestion ("Green")
833
+ await user.keyboard( '[ArrowDown][Enter]' );
834
+
835
+ // Click the body, blurring the input.
836
+ await user.click( document.body );
837
+
838
+ expect( screen.queryByRole( 'listbox' ) ).not.toBeInTheDocument();
839
+ } );
840
+
744
841
  it( 'should not render suggestions if the text input is not matching any of the suggestions', async () => {
745
842
  const user = userEvent.setup();
746
843
 
@@ -74,6 +74,7 @@ export default function Token( {
74
74
  className="components-form-token-field__remove-token"
75
75
  icon={ closeSmall }
76
76
  onClick={ ! disabled ? onClick : undefined }
77
+ disabled={ disabled }
77
78
  label={ messages.remove }
78
79
  aria-describedby={ `components-form-token-field__token-text-${ instanceId }` }
79
80
  />
@@ -44,9 +44,9 @@ function SingleOrigin( {
44
44
  ...additionalProps
45
45
  }: PickerProps< GradientObject > ) {
46
46
  const gradientOptions = useMemo( () => {
47
- return gradients.map( ( { gradient, name }, index ) => (
47
+ return gradients.map( ( { gradient, name, slug }, index ) => (
48
48
  <CircularOptionPicker.Option
49
- key={ gradient }
49
+ key={ slug }
50
50
  value={ gradient }
51
51
  isSelected={ value === gradient }
52
52
  tooltipText={
@@ -107,7 +107,8 @@ export { default as LinkSettings } from './mobile/link-settings';
107
107
  export { default as LinkSettingsScreen } from './mobile/link-settings/link-settings-screen';
108
108
  export { default as LinkSettingsNavigation } from './mobile/link-settings/link-settings-navigation';
109
109
  export { default as SegmentedControl } from './mobile/segmented-control';
110
- export { default as Image, IMAGE_DEFAULT_FOCAL_POINT } from './mobile/image';
110
+ export { default as Image } from './mobile/image';
111
+ export { IMAGE_DEFAULT_FOCAL_POINT } from './mobile/image/constants';
111
112
  export { default as ImageEditingButton } from './mobile/image/image-editing-button';
112
113
  export { setClipboard, getClipboard } from './mobile/clipboard';
113
114
  export { default as AudioPlayer } from './mobile/audio-player';
@@ -121,6 +122,7 @@ export {
121
122
  ALIGNMENT_BREAKPOINTS,
122
123
  alignmentHelpers,
123
124
  } from './mobile/utils/alignments';
125
+ export { default as getPxFromCssUnit } from './mobile/utils/get-px-from-css-unit';
124
126
 
125
127
  // Hooks.
126
128
  export {
@@ -141,3 +143,6 @@ export {
141
143
  useMobileGlobalStylesColors,
142
144
  useEditorColorScheme,
143
145
  } from './mobile/global-styles-context/utils';
146
+
147
+ // Private APIs.
148
+ export { privateApis } from './private-apis';