@wordpress/components 25.11.1-next.f8d8eceb.0 → 25.13.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 (317) hide show
  1. package/CHANGELOG.md +58 -1
  2. package/build/angle-picker-control/index.js +0 -1
  3. package/build/angle-picker-control/index.js.map +1 -1
  4. package/build/custom-select-control-v2/index.js +87 -0
  5. package/build/custom-select-control-v2/index.js.map +1 -0
  6. package/build/custom-select-control-v2/styles.js +85 -0
  7. package/build/custom-select-control-v2/styles.js.map +1 -0
  8. package/build/custom-select-control-v2/types.js +6 -0
  9. package/build/custom-select-control-v2/types.js.map +1 -0
  10. package/build/disclosure/index.js +37 -7
  11. package/build/disclosure/index.js.map +1 -1
  12. package/build/disclosure/types.js +6 -0
  13. package/build/disclosure/types.js.map +1 -0
  14. package/build/divider/component.js +5 -3
  15. package/build/divider/component.js.map +1 -1
  16. package/build/divider/types.js.map +1 -1
  17. package/build/dropdown-menu-v2-ariakit/index.js +74 -35
  18. package/build/dropdown-menu-v2-ariakit/index.js.map +1 -1
  19. package/build/dropdown-menu-v2-ariakit/styles.js +82 -59
  20. package/build/dropdown-menu-v2-ariakit/styles.js.map +1 -1
  21. package/build/dropdown-menu-v2-ariakit/types.js.map +1 -1
  22. package/build/form-token-field/index.js +6 -2
  23. package/build/form-token-field/index.js.map +1 -1
  24. package/build/form-token-field/token-input.js.map +1 -1
  25. package/build/form-token-field/types.js.map +1 -1
  26. package/build/gradient-picker/index.js +1 -1
  27. package/build/gradient-picker/index.js.map +1 -1
  28. package/build/heading/hook.js +6 -3
  29. package/build/heading/hook.js.map +1 -1
  30. package/build/heading/types.js.map +1 -1
  31. package/build/index.native.js +8 -1
  32. package/build/index.native.js.map +1 -1
  33. package/build/mobile/audio-player/index.native.js +8 -9
  34. package/build/mobile/audio-player/index.native.js.map +1 -1
  35. package/build/mobile/global-styles-context/utils.native.js +44 -3
  36. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  37. package/build/mobile/utils/alignments.native.js +1 -1
  38. package/build/mobile/utils/alignments.native.js.map +1 -1
  39. package/build/private-apis.js +3 -2
  40. package/build/private-apis.js.map +1 -1
  41. package/build/radio-group/context.js +22 -0
  42. package/build/radio-group/context.js.map +1 -0
  43. package/build/radio-group/index.js +27 -23
  44. package/build/radio-group/index.js.map +1 -1
  45. package/build/radio-group/radio.js +58 -0
  46. package/build/radio-group/radio.js.map +1 -0
  47. package/build/radio-group/types.js +6 -0
  48. package/build/radio-group/types.js.map +1 -0
  49. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  50. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  51. package/build/slot-fill/types.js.map +1 -1
  52. package/build/tabs/index.js +6 -4
  53. package/build/tabs/index.js.map +1 -1
  54. package/build/tabs/styles.js +14 -7
  55. package/build/tabs/styles.js.map +1 -1
  56. package/build/tabs/tab.js +5 -7
  57. package/build/tabs/tab.js.map +1 -1
  58. package/build/tabs/tablist.js +3 -5
  59. package/build/tabs/tablist.js.map +1 -1
  60. package/build/tabs/tabpanel.js +7 -10
  61. package/build/tabs/tabpanel.js.map +1 -1
  62. package/build/tabs/types.js.map +1 -1
  63. package/build/text/types.js.map +1 -1
  64. package/build/text-control/index.js +5 -1
  65. package/build/text-control/index.js.map +1 -1
  66. package/build/text-control/types.js.map +1 -1
  67. package/build/toggle-group-control/toggle-group-control/component.js +4 -2
  68. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  69. package/build/toggle-group-control/toggle-group-control/styles.js +13 -9
  70. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  71. package/build/toggle-group-control/types.js.map +1 -1
  72. package/build/tools-panel/tools-panel-item/hook.js +5 -1
  73. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  74. package/build-module/angle-picker-control/index.js +0 -1
  75. package/build-module/angle-picker-control/index.js.map +1 -1
  76. package/build-module/custom-select-control-v2/index.js +74 -0
  77. package/build-module/custom-select-control-v2/index.js.map +1 -0
  78. package/build-module/custom-select-control-v2/styles.js +71 -0
  79. package/build-module/custom-select-control-v2/styles.js.map +1 -0
  80. package/build-module/custom-select-control-v2/types.js +2 -0
  81. package/build-module/custom-select-control-v2/types.js.map +1 -0
  82. package/build-module/disclosure/index.js +33 -8
  83. package/build-module/disclosure/index.js.map +1 -1
  84. package/build-module/disclosure/types.js +2 -0
  85. package/build-module/disclosure/types.js.map +1 -0
  86. package/build-module/divider/component.js +3 -3
  87. package/build-module/divider/component.js.map +1 -1
  88. package/build-module/divider/types.js.map +1 -1
  89. package/build-module/dropdown-menu-v2-ariakit/index.js +72 -34
  90. package/build-module/dropdown-menu-v2-ariakit/index.js.map +1 -1
  91. package/build-module/dropdown-menu-v2-ariakit/styles.js +69 -40
  92. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +1 -1
  93. package/build-module/dropdown-menu-v2-ariakit/types.js.map +1 -1
  94. package/build-module/form-token-field/index.js +6 -2
  95. package/build-module/form-token-field/index.js.map +1 -1
  96. package/build-module/form-token-field/token-input.js.map +1 -1
  97. package/build-module/form-token-field/types.js.map +1 -1
  98. package/build-module/gradient-picker/index.js +1 -1
  99. package/build-module/gradient-picker/index.js.map +1 -1
  100. package/build-module/heading/hook.js +6 -3
  101. package/build-module/heading/hook.js.map +1 -1
  102. package/build-module/heading/types.js.map +1 -1
  103. package/build-module/index.native.js +1 -1
  104. package/build-module/index.native.js.map +1 -1
  105. package/build-module/mobile/audio-player/index.native.js +9 -10
  106. package/build-module/mobile/audio-player/index.native.js.map +1 -1
  107. package/build-module/mobile/global-styles-context/utils.native.js +43 -4
  108. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  109. package/build-module/mobile/utils/alignments.native.js +1 -1
  110. package/build-module/mobile/utils/alignments.native.js.map +1 -1
  111. package/build-module/private-apis.js +4 -3
  112. package/build-module/private-apis.js.map +1 -1
  113. package/build-module/radio-group/context.js +14 -0
  114. package/build-module/radio-group/context.js.map +1 -0
  115. package/build-module/radio-group/index.js +24 -23
  116. package/build-module/radio-group/index.js.map +1 -1
  117. package/build-module/radio-group/radio.js +46 -0
  118. package/build-module/radio-group/radio.js.map +1 -0
  119. package/build-module/radio-group/types.js +2 -0
  120. package/build-module/radio-group/types.js.map +1 -0
  121. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  122. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  123. package/build-module/slot-fill/types.js.map +1 -1
  124. package/build-module/tabs/index.js +7 -5
  125. package/build-module/tabs/index.js.map +1 -1
  126. package/build-module/tabs/styles.js +11 -5
  127. package/build-module/tabs/styles.js.map +1 -1
  128. package/build-module/tabs/tab.js +7 -9
  129. package/build-module/tabs/tab.js.map +1 -1
  130. package/build-module/tabs/tablist.js +3 -5
  131. package/build-module/tabs/tablist.js.map +1 -1
  132. package/build-module/tabs/tabpanel.js +9 -10
  133. package/build-module/tabs/tabpanel.js.map +1 -1
  134. package/build-module/tabs/types.js.map +1 -1
  135. package/build-module/text/types.js.map +1 -1
  136. package/build-module/text-control/index.js +6 -1
  137. package/build-module/text-control/index.js.map +1 -1
  138. package/build-module/text-control/types.js.map +1 -1
  139. package/build-module/toggle-group-control/toggle-group-control/component.js +4 -2
  140. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  141. package/build-module/toggle-group-control/toggle-group-control/styles.js +13 -9
  142. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  143. package/build-module/toggle-group-control/types.js.map +1 -1
  144. package/build-module/tools-panel/tools-panel-item/hook.js +6 -2
  145. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  146. package/build-style/style-rtl.css +52 -8
  147. package/build-style/style.css +52 -8
  148. package/build-types/angle-picker-control/index.d.ts.map +1 -1
  149. package/build-types/box-control/stories/index.story.d.ts +1944 -0
  150. package/build-types/box-control/stories/index.story.d.ts.map +1 -0
  151. package/build-types/card/card-divider/component.d.ts +1 -1
  152. package/build-types/card/card-divider/hook.d.ts +162 -162
  153. package/build-types/color-palette/styles.d.ts +4 -1
  154. package/build-types/color-palette/styles.d.ts.map +1 -1
  155. package/build-types/custom-select-control-v2/index.d.ts +6 -0
  156. package/build-types/custom-select-control-v2/index.d.ts.map +1 -0
  157. package/build-types/custom-select-control-v2/stories/index.story.d.ts +19 -0
  158. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -0
  159. package/build-types/custom-select-control-v2/styles.d.ts +47 -0
  160. package/build-types/custom-select-control-v2/styles.d.ts.map +1 -0
  161. package/build-types/custom-select-control-v2/types.d.ts +57 -0
  162. package/build-types/custom-select-control-v2/types.d.ts.map +1 -0
  163. package/build-types/date-time/date/styles.d.ts +4 -1
  164. package/build-types/date-time/date/styles.d.ts.map +1 -1
  165. package/build-types/disclosure/index.d.ts +7 -1
  166. package/build-types/disclosure/index.d.ts.map +1 -1
  167. package/build-types/disclosure/types.d.ts +12 -0
  168. package/build-types/disclosure/types.d.ts.map +1 -0
  169. package/build-types/divider/component.d.ts +5 -1
  170. package/build-types/divider/component.d.ts.map +1 -1
  171. package/build-types/divider/stories/index.story.d.ts.map +1 -1
  172. package/build-types/divider/styles.d.ts +1 -1
  173. package/build-types/divider/types.d.ts +2 -2
  174. package/build-types/divider/types.d.ts.map +1 -1
  175. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +11 -2
  176. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +1 -1
  177. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +1 -1
  178. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +26 -18
  179. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +1 -1
  180. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +1 -7
  181. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +1 -1
  182. package/build-types/form-token-field/index.d.ts.map +1 -1
  183. package/build-types/form-token-field/token-input.d.ts.map +1 -1
  184. package/build-types/form-token-field/types.d.ts +1 -1
  185. package/build-types/form-token-field/types.d.ts.map +1 -1
  186. package/build-types/heading/component.d.ts +4 -1
  187. package/build-types/heading/component.d.ts.map +1 -1
  188. package/build-types/heading/hook.d.ts.map +1 -1
  189. package/build-types/heading/types.d.ts +20 -1
  190. package/build-types/heading/types.d.ts.map +1 -1
  191. package/build-types/navigation/styles/navigation-styles.d.ts +4 -1
  192. package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -1
  193. package/build-types/palette-edit/styles.d.ts +4 -1
  194. package/build-types/palette-edit/styles.d.ts.map +1 -1
  195. package/build-types/private-apis.d.ts.map +1 -1
  196. package/build-types/radio-group/context.d.ts +10 -0
  197. package/build-types/radio-group/context.d.ts.map +1 -0
  198. package/build-types/radio-group/index.d.ts +7 -9
  199. package/build-types/radio-group/index.d.ts.map +1 -1
  200. package/build-types/radio-group/radio.d.ts +8 -0
  201. package/build-types/radio-group/radio.d.ts.map +1 -0
  202. package/build-types/radio-group/stories/index.story.d.ts +14 -0
  203. package/build-types/radio-group/stories/index.story.d.ts.map +1 -0
  204. package/build-types/radio-group/types.d.ts +40 -0
  205. package/build-types/radio-group/types.d.ts.map +1 -0
  206. package/build-types/slot-fill/bubbles-virtually/slot.d.ts +1 -1
  207. package/build-types/slot-fill/types.d.ts +16 -6
  208. package/build-types/slot-fill/types.d.ts.map +1 -1
  209. package/build-types/tabs/index.d.ts +4 -3
  210. package/build-types/tabs/index.d.ts.map +1 -1
  211. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  212. package/build-types/tabs/styles.d.ts +10 -0
  213. package/build-types/tabs/styles.d.ts.map +1 -1
  214. package/build-types/tabs/tab.d.ts +1 -1
  215. package/build-types/tabs/tab.d.ts.map +1 -1
  216. package/build-types/tabs/tablist.d.ts +1 -1
  217. package/build-types/tabs/tablist.d.ts.map +1 -1
  218. package/build-types/tabs/tabpanel.d.ts +4 -1
  219. package/build-types/tabs/tabpanel.d.ts.map +1 -1
  220. package/build-types/tabs/types.d.ts +7 -31
  221. package/build-types/tabs/types.d.ts.map +1 -1
  222. package/build-types/text/types.d.ts +15 -2
  223. package/build-types/text/types.d.ts.map +1 -1
  224. package/build-types/text-control/index.d.ts +2 -1
  225. package/build-types/text-control/index.d.ts.map +1 -1
  226. package/build-types/text-control/types.d.ts +6 -0
  227. package/build-types/text-control/types.d.ts.map +1 -1
  228. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +1 -0
  229. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  230. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +2 -2
  231. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  232. package/build-types/toggle-group-control/types.d.ts +6 -0
  233. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  234. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  235. package/package.json +19 -20
  236. package/src/angle-picker-control/index.tsx +0 -1
  237. package/src/box-control/stories/index.story.tsx +82 -0
  238. package/src/button/style.scss +10 -2
  239. package/src/combobox-control/README.md +1 -3
  240. package/src/custom-select-control-v2/README.md +73 -0
  241. package/src/custom-select-control-v2/index.tsx +99 -0
  242. package/src/custom-select-control-v2/stories/index.story.tsx +149 -0
  243. package/src/custom-select-control-v2/styles.ts +76 -0
  244. package/src/custom-select-control-v2/types.ts +63 -0
  245. package/src/disclosure/index.tsx +44 -0
  246. package/src/disclosure/types.tsx +10 -0
  247. package/src/divider/component.tsx +3 -3
  248. package/src/divider/stories/index.story.tsx +8 -0
  249. package/src/divider/types.ts +2 -2
  250. package/src/dropdown-menu/style.scss +4 -0
  251. package/src/dropdown-menu-v2-ariakit/README.md +19 -12
  252. package/src/dropdown-menu-v2-ariakit/index.tsx +116 -51
  253. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +205 -94
  254. package/src/dropdown-menu-v2-ariakit/styles.ts +153 -117
  255. package/src/dropdown-menu-v2-ariakit/test/index.tsx +5 -36
  256. package/src/dropdown-menu-v2-ariakit/types.ts +1 -8
  257. package/src/form-toggle/style.scss +37 -7
  258. package/src/form-token-field/index.tsx +11 -3
  259. package/src/form-token-field/token-input.tsx +1 -3
  260. package/src/form-token-field/types.ts +1 -0
  261. package/src/gradient-picker/index.tsx +1 -1
  262. package/src/heading/README.md +6 -1
  263. package/src/heading/hook.ts +6 -3
  264. package/src/heading/types.ts +23 -1
  265. package/src/index.native.js +1 -0
  266. package/src/mobile/audio-player/index.native.js +9 -13
  267. package/src/mobile/global-styles-context/utils.native.js +52 -3
  268. package/src/mobile/utils/alignments.native.js +1 -0
  269. package/src/navigable-container/README.md +1 -1
  270. package/src/private-apis.ts +4 -2
  271. package/src/radio-group/context.tsx +18 -0
  272. package/src/radio-group/index.tsx +65 -0
  273. package/src/radio-group/radio.tsx +55 -0
  274. package/src/radio-group/stories/index.story.tsx +90 -0
  275. package/src/radio-group/types.ts +39 -0
  276. package/src/slot-fill/README.md +1 -1
  277. package/src/slot-fill/bubbles-virtually/slot-fill-provider.tsx +1 -1
  278. package/src/slot-fill/types.ts +18 -6
  279. package/src/tabs/README.md +3 -33
  280. package/src/tabs/index.tsx +12 -2
  281. package/src/tabs/stories/index.story.tsx +17 -1
  282. package/src/tabs/styles.ts +16 -0
  283. package/src/tabs/tab.tsx +10 -10
  284. package/src/tabs/tablist.tsx +21 -20
  285. package/src/tabs/tabpanel.tsx +26 -25
  286. package/src/tabs/test/index.tsx +90 -16
  287. package/src/tabs/types.ts +7 -32
  288. package/src/text/README.md +5 -1
  289. package/src/text/types.ts +15 -2
  290. package/src/text-control/index.tsx +5 -1
  291. package/src/text-control/style.scss +5 -0
  292. package/src/text-control/types.ts +6 -0
  293. package/src/toggle-control/README.md +2 -2
  294. package/src/toggle-group-control/toggle-group-control/component.tsx +8 -2
  295. package/src/toggle-group-control/toggle-group-control/styles.ts +13 -4
  296. package/src/toggle-group-control/types.ts +6 -0
  297. package/src/toolbar/toolbar-button/style.scss +0 -5
  298. package/src/tools-panel/tools-panel-item/hook.ts +11 -2
  299. package/tsconfig.tsbuildinfo +1 -1
  300. package/build/radio-group/radio/index.js +0 -49
  301. package/build/radio-group/radio/index.js.map +0 -1
  302. package/build/radio-group/radio-context/index.js +0 -18
  303. package/build/radio-group/radio-context/index.js.map +0 -1
  304. package/build-module/radio-group/radio/index.js +0 -40
  305. package/build-module/radio-group/radio/index.js.map +0 -1
  306. package/build-module/radio-group/radio-context/index.js +0 -10
  307. package/build-module/radio-group/radio-context/index.js.map +0 -1
  308. package/build-types/radio-group/radio/index.d.ts +0 -7
  309. package/build-types/radio-group/radio/index.d.ts.map +0 -1
  310. package/build-types/radio-group/radio-context/index.d.ts +0 -6
  311. package/build-types/radio-group/radio-context/index.d.ts.map +0 -1
  312. package/src/box-control/stories/index.story.js +0 -75
  313. package/src/disclosure/index.js +0 -11
  314. package/src/radio-group/index.js +0 -51
  315. package/src/radio-group/radio/index.js +0 -40
  316. package/src/radio-group/radio-context/index.js +0 -11
  317. package/src/radio-group/stories/index.story.js +0 -83
@@ -2,28 +2,28 @@
2
2
  * External dependencies
3
3
  */
4
4
  import type { Meta, StoryFn } from '@storybook/react';
5
- import styled from '@emotion/styled';
6
5
  import { css } from '@emotion/react';
7
6
 
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
11
- import { wordpress } from '@wordpress/icons';
10
+ import { customLink, formatCapitalize } from '@wordpress/icons';
12
11
  import { useState, useMemo, useContext } from '@wordpress/element';
13
12
 
14
13
  /**
15
14
  * Internal dependencies
16
15
  */
17
- import { COLORS, useCx } from '../../utils';
16
+ import { useCx } from '../../utils';
18
17
  import {
19
18
  DropdownMenu,
20
19
  DropdownMenuItem,
21
20
  DropdownMenuCheckboxItem,
22
21
  DropdownMenuGroup,
23
- DropdownMenuGroupLabel,
24
22
  DropdownMenuSeparator,
25
23
  DropdownMenuContext,
26
24
  DropdownMenuRadioItem,
25
+ DropdownMenuItemLabel,
26
+ DropdownMenuItemHelpText,
27
27
  } from '..';
28
28
  import Icon from '../../icon';
29
29
  import Button from '../../button';
@@ -37,9 +37,24 @@ const meta: Meta< typeof DropdownMenu > = {
37
37
  subcomponents: {
38
38
  // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
39
39
  DropdownMenuItem,
40
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
41
+ DropdownMenuCheckboxItem,
42
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
43
+ DropdownMenuGroup,
44
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
45
+ DropdownMenuSeparator,
46
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
47
+ DropdownMenuContext,
48
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
49
+ DropdownMenuRadioItem,
50
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
51
+ DropdownMenuItemLabel,
52
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
53
+ DropdownMenuItemHelpText,
40
54
  },
41
55
  argTypes: {
42
56
  children: { control: { type: null } },
57
+ trigger: { control: { type: null } },
43
58
  },
44
59
  parameters: {
45
60
  actions: { argTypesRegex: '^on.*' },
@@ -64,54 +79,48 @@ const meta: Meta< typeof DropdownMenu > = {
64
79
  };
65
80
  export default meta;
66
81
 
67
- const ItemHelpText = styled.span`
68
- font-size: 12px;
69
- color: ${ COLORS.gray[ '700' ] };
70
-
71
- /* when the immediate parent item is hovered / focused */
72
- [data-active-item] > * > &,
73
- /* when the parent item is a submenu trigger and the submenu is open */
74
- [aria-expanded='true'] > &,
75
- /* when the parent item is disabled */
76
- [aria-disabled='true'] > & {
77
- color: inherit;
78
- }
79
- `;
80
-
81
82
  export const Default: StoryFn< typeof DropdownMenu > = ( props ) => (
82
83
  <DropdownMenu { ...props }>
83
- <DropdownMenuItem>Default item</DropdownMenuItem>
84
+ <DropdownMenuItem>
85
+ <DropdownMenuItemLabel>Label</DropdownMenuItemLabel>
86
+ </DropdownMenuItem>
87
+ <DropdownMenuItem>
88
+ <DropdownMenuItemLabel>Label</DropdownMenuItemLabel>
89
+ <DropdownMenuItemHelpText>Help text</DropdownMenuItemHelpText>
90
+ </DropdownMenuItem>
91
+ <DropdownMenuItem>
92
+ <DropdownMenuItemLabel>Label</DropdownMenuItemLabel>
93
+ <DropdownMenuItemHelpText>
94
+ The menu item help text is automatically truncated when there
95
+ are more than two lines of text
96
+ </DropdownMenuItemHelpText>
97
+ </DropdownMenuItem>
84
98
  <DropdownMenuItem hideOnClick={ false }>
85
- <div
86
- style={ {
87
- display: 'inline-flex',
88
- flexDirection: 'column',
89
- } }
90
- >
91
- Other item
92
- <ItemHelpText>
93
- Won&apos;t close the menu when clicked
94
- </ItemHelpText>
95
- </div>
99
+ <DropdownMenuItemLabel>Label</DropdownMenuItemLabel>
100
+ <DropdownMenuItemHelpText>
101
+ This item doesn&apos;t close the menu on click
102
+ </DropdownMenuItemHelpText>
96
103
  </DropdownMenuItem>
97
104
  <DropdownMenuItem disabled>Disabled item</DropdownMenuItem>
98
105
  <DropdownMenuSeparator />
99
106
  <DropdownMenuGroup>
100
- <DropdownMenuGroupLabel>Prefix and suffix</DropdownMenuGroupLabel>
101
107
  <DropdownMenuItem
102
- prefix={ <Icon icon={ wordpress } size={ 24 } /> }
108
+ prefix={ <Icon icon={ customLink } size={ 24 } /> }
103
109
  >
104
- With prefix
105
- </DropdownMenuItem>
106
- <DropdownMenuItem suffix={ <span>⌘S</span> }>
107
- With suffix
110
+ <DropdownMenuItemLabel>With prefix</DropdownMenuItemLabel>
108
111
  </DropdownMenuItem>
112
+ <DropdownMenuItem suffix={ '⌘S' }>With suffix</DropdownMenuItem>
109
113
  <DropdownMenuItem
110
114
  disabled
111
- prefix={ <Icon icon={ wordpress } size={ 24 } /> }
112
- suffix={ <span>⌥⌘T</span> }
115
+ prefix={ <Icon icon={ formatCapitalize } size={ 24 } /> }
116
+ suffix="⌥⌘T"
113
117
  >
114
- Disabled with prefix and suffix
118
+ <DropdownMenuItemLabel>
119
+ Disabled with prefix and suffix
120
+ </DropdownMenuItemLabel>
121
+ <DropdownMenuItemHelpText>
122
+ And help text
123
+ </DropdownMenuItemHelpText>
115
124
  </DropdownMenuItem>
116
125
  </DropdownMenuGroup>
117
126
  </DropdownMenu>
@@ -128,15 +137,35 @@ export const WithSubmenu: StoryFn< typeof DropdownMenu > = ( props ) => (
128
137
  <DropdownMenu { ...props }>
129
138
  <DropdownMenuItem>Level 1 item</DropdownMenuItem>
130
139
  <DropdownMenu
131
- trigger={ <DropdownMenuItem>Submenu trigger</DropdownMenuItem> }
140
+ trigger={
141
+ <DropdownMenuItem suffix="Suffix">
142
+ <DropdownMenuItemLabel>
143
+ Submenu trigger item with a long label
144
+ </DropdownMenuItemLabel>
145
+ </DropdownMenuItem>
146
+ }
132
147
  >
133
- <DropdownMenuItem>Level 2 item</DropdownMenuItem>
134
- <DropdownMenuItem>Level 2 item</DropdownMenuItem>
148
+ <DropdownMenuItem>
149
+ <DropdownMenuItemLabel>Level 2 item</DropdownMenuItemLabel>
150
+ </DropdownMenuItem>
151
+ <DropdownMenuItem>
152
+ <DropdownMenuItemLabel>Level 2 item</DropdownMenuItemLabel>
153
+ </DropdownMenuItem>
135
154
  <DropdownMenu
136
- trigger={ <DropdownMenuItem>Submenu trigger</DropdownMenuItem> }
155
+ trigger={
156
+ <DropdownMenuItem>
157
+ <DropdownMenuItemLabel>
158
+ Submenu trigger
159
+ </DropdownMenuItemLabel>
160
+ </DropdownMenuItem>
161
+ }
137
162
  >
138
- <DropdownMenuItem>Level 3 item</DropdownMenuItem>
139
- <DropdownMenuItem>Level 3 item</DropdownMenuItem>
163
+ <DropdownMenuItem>
164
+ <DropdownMenuItemLabel>Level 3 item</DropdownMenuItemLabel>
165
+ </DropdownMenuItem>
166
+ <DropdownMenuItem>
167
+ <DropdownMenuItemLabel>Level 3 item</DropdownMenuItemLabel>
168
+ </DropdownMenuItem>
140
169
  </DropdownMenu>
141
170
  </DropdownMenu>
142
171
  </DropdownMenu>
@@ -166,35 +195,45 @@ export const WithCheckboxes: StoryFn< typeof DropdownMenu > = ( props ) => {
166
195
  return (
167
196
  <DropdownMenu { ...props }>
168
197
  <DropdownMenuGroup>
169
- <DropdownMenuGroupLabel>
170
- Individual, uncontrolled checkboxes
171
- </DropdownMenuGroupLabel>
172
198
  <DropdownMenuCheckboxItem
173
199
  name="checkbox-individual-uncontrolled-a"
174
200
  value="a"
201
+ suffix="⌥⌘T"
175
202
  >
176
- Checkbox item A (initially unchecked)
203
+ <DropdownMenuItemLabel>
204
+ Checkbox item A
205
+ </DropdownMenuItemLabel>
206
+ <DropdownMenuItemHelpText>
207
+ Uncontrolled
208
+ </DropdownMenuItemHelpText>
177
209
  </DropdownMenuCheckboxItem>
178
210
  <DropdownMenuCheckboxItem
179
211
  name="checkbox-individual-uncontrolled-b"
180
212
  value="b"
181
213
  defaultChecked
182
214
  >
183
- Checkbox item B (initially checked)
215
+ <DropdownMenuItemLabel>
216
+ Checkbox item B
217
+ </DropdownMenuItemLabel>
218
+ <DropdownMenuItemHelpText>
219
+ Uncontrolled, initially checked
220
+ </DropdownMenuItemHelpText>
184
221
  </DropdownMenuCheckboxItem>
185
222
  </DropdownMenuGroup>
186
223
  <DropdownMenuSeparator />
187
224
  <DropdownMenuGroup>
188
- <DropdownMenuGroupLabel>
189
- Individual, controlled checkboxes
190
- </DropdownMenuGroupLabel>
191
225
  <DropdownMenuCheckboxItem
192
226
  name="checkbox-individual-controlled-a"
193
227
  value="a"
194
228
  checked={ isAChecked }
195
229
  onChange={ ( e ) => setAChecked( e.target.checked ) }
196
230
  >
197
- Checkbox item A
231
+ <DropdownMenuItemLabel>
232
+ Checkbox item A
233
+ </DropdownMenuItemLabel>
234
+ <DropdownMenuItemHelpText>
235
+ Controlled
236
+ </DropdownMenuItemHelpText>
198
237
  </DropdownMenuCheckboxItem>
199
238
  <DropdownMenuCheckboxItem
200
239
  name="checkbox-individual-controlled-b"
@@ -202,40 +241,54 @@ export const WithCheckboxes: StoryFn< typeof DropdownMenu > = ( props ) => {
202
241
  checked={ isBChecked }
203
242
  onChange={ ( e ) => setBChecked( e.target.checked ) }
204
243
  >
205
- Checkbox item B (initially checked)
244
+ <DropdownMenuItemLabel>
245
+ Checkbox item B
246
+ </DropdownMenuItemLabel>
247
+ <DropdownMenuItemHelpText>
248
+ Controlled, initially checked
249
+ </DropdownMenuItemHelpText>
206
250
  </DropdownMenuCheckboxItem>
207
251
  </DropdownMenuGroup>
208
252
  <DropdownMenuSeparator />
209
253
  <DropdownMenuGroup>
210
- <DropdownMenuGroupLabel>
211
- Multiple, uncontrolled checkboxes
212
- </DropdownMenuGroupLabel>
213
254
  <DropdownMenuCheckboxItem
214
255
  name="checkbox-multiple-uncontrolled"
215
256
  value="a"
216
257
  >
217
- Checkbox item A (initially unchecked)
258
+ <DropdownMenuItemLabel>
259
+ Checkbox item A
260
+ </DropdownMenuItemLabel>
261
+ <DropdownMenuItemHelpText>
262
+ Uncontrolled, multiple selection
263
+ </DropdownMenuItemHelpText>
218
264
  </DropdownMenuCheckboxItem>
219
265
  <DropdownMenuCheckboxItem
220
266
  name="checkbox-multiple-uncontrolled"
221
267
  value="b"
222
268
  defaultChecked
223
269
  >
224
- Checkbox item B (initially checked)
270
+ <DropdownMenuItemLabel>
271
+ Checkbox item B
272
+ </DropdownMenuItemLabel>
273
+ <DropdownMenuItemHelpText>
274
+ Uncontrolled, multiple selection, initially checked
275
+ </DropdownMenuItemHelpText>
225
276
  </DropdownMenuCheckboxItem>
226
277
  </DropdownMenuGroup>
227
278
  <DropdownMenuSeparator />
228
279
  <DropdownMenuGroup>
229
- <DropdownMenuGroupLabel>
230
- Multiple, controlled checkboxes
231
- </DropdownMenuGroupLabel>
232
280
  <DropdownMenuCheckboxItem
233
281
  name="checkbox-multiple-controlled"
234
282
  value="a"
235
283
  checked={ multipleCheckboxesValue.includes( 'a' ) }
236
284
  onChange={ onMultipleCheckboxesCheckedChange }
237
285
  >
238
- Checkbox item A (initially unchecked)
286
+ <DropdownMenuItemLabel>
287
+ Checkbox item A
288
+ </DropdownMenuItemLabel>
289
+ <DropdownMenuItemHelpText>
290
+ Controlled, multiple selection
291
+ </DropdownMenuItemHelpText>
239
292
  </DropdownMenuCheckboxItem>
240
293
  <DropdownMenuCheckboxItem
241
294
  name="checkbox-multiple-controlled"
@@ -243,7 +296,12 @@ export const WithCheckboxes: StoryFn< typeof DropdownMenu > = ( props ) => {
243
296
  checked={ multipleCheckboxesValue.includes( 'b' ) }
244
297
  onChange={ onMultipleCheckboxesCheckedChange }
245
298
  >
246
- Checkbox item B (initially checked)
299
+ <DropdownMenuItemLabel>
300
+ Checkbox item B
301
+ </DropdownMenuItemLabel>
302
+ <DropdownMenuItemHelpText>
303
+ Controlled, multiple selection, initially checked
304
+ </DropdownMenuItemHelpText>
247
305
  </DropdownMenuCheckboxItem>
248
306
  </DropdownMenuGroup>
249
307
  </DropdownMenu>
@@ -262,32 +320,35 @@ export const WithRadios: StoryFn< typeof DropdownMenu > = ( props ) => {
262
320
  return (
263
321
  <DropdownMenu { ...props }>
264
322
  <DropdownMenuGroup>
265
- <DropdownMenuGroupLabel>
266
- Uncontrolled radios
267
- </DropdownMenuGroupLabel>
268
323
  <DropdownMenuRadioItem name="radio-uncontrolled" value="one">
269
- Radio item 1
324
+ <DropdownMenuItemLabel>Radio item 1</DropdownMenuItemLabel>
325
+ <DropdownMenuItemHelpText>
326
+ Uncontrolled
327
+ </DropdownMenuItemHelpText>
270
328
  </DropdownMenuRadioItem>
271
329
  <DropdownMenuRadioItem
272
330
  name="radio-uncontrolled"
273
331
  value="two"
274
332
  defaultChecked
275
333
  >
276
- Radio item 2 (initially checked)
334
+ <DropdownMenuItemLabel>Radio item 2</DropdownMenuItemLabel>
335
+ <DropdownMenuItemHelpText>
336
+ Uncontrolled, initially checked
337
+ </DropdownMenuItemHelpText>
277
338
  </DropdownMenuRadioItem>
278
339
  </DropdownMenuGroup>
279
340
  <DropdownMenuSeparator />
280
341
  <DropdownMenuGroup>
281
- <DropdownMenuGroupLabel>
282
- Controlled radios
283
- </DropdownMenuGroupLabel>
284
342
  <DropdownMenuRadioItem
285
343
  name="radio-controlled"
286
344
  value="one"
287
345
  checked={ radioValue === 'one' }
288
346
  onChange={ onRadioChange }
289
347
  >
290
- Radio item 1
348
+ <DropdownMenuItemLabel>Radio item 1</DropdownMenuItemLabel>
349
+ <DropdownMenuItemHelpText>
350
+ Controlled
351
+ </DropdownMenuItemHelpText>
291
352
  </DropdownMenuRadioItem>
292
353
  <DropdownMenuRadioItem
293
354
  name="radio-controlled"
@@ -295,7 +356,10 @@ export const WithRadios: StoryFn< typeof DropdownMenu > = ( props ) => {
295
356
  checked={ radioValue === 'two' }
296
357
  onChange={ onRadioChange }
297
358
  >
298
- Radio item 2 (initially checked)
359
+ <DropdownMenuItemLabel>Radio item 2</DropdownMenuItemLabel>
360
+ <DropdownMenuItemHelpText>
361
+ Controlled, initially checked
362
+ </DropdownMenuItemHelpText>
299
363
  </DropdownMenuRadioItem>
300
364
  </DropdownMenuGroup>
301
365
  </DropdownMenu>
@@ -326,13 +390,17 @@ export const WithModals: StoryFn< typeof DropdownMenu > = ( props ) => {
326
390
  onClick={ () => setOuterModalOpen( true ) }
327
391
  hideOnClick={ false }
328
392
  >
329
- Open outer modal
393
+ <DropdownMenuItemLabel>
394
+ Open outer modal
395
+ </DropdownMenuItemLabel>
330
396
  </DropdownMenuItem>
331
397
  <DropdownMenuItem
332
398
  onClick={ () => setInnerModalOpen( true ) }
333
399
  hideOnClick={ false }
334
400
  >
335
- Open inner modal
401
+ <DropdownMenuItemLabel>
402
+ Open inner modal
403
+ </DropdownMenuItemLabel>
336
404
  </DropdownMenuItem>
337
405
  { isInnerModalOpen && (
338
406
  <Modal
@@ -382,7 +450,13 @@ const Slot = () => {
382
450
  [ dropdownMenuContext ]
383
451
  );
384
452
 
385
- return <ExampleSlotFill.Slot fillProps={ fillProps } bubblesVirtually />;
453
+ return (
454
+ <ExampleSlotFill.Slot
455
+ fillProps={ fillProps }
456
+ bubblesVirtually
457
+ style={ { display: 'contents' } }
458
+ />
459
+ );
386
460
  };
387
461
 
388
462
  type ForwardedContextTuple< P = {} > = [
@@ -413,18 +487,32 @@ export const WithSlotFill: StoryFn< typeof DropdownMenu > = ( props ) => {
413
487
  return (
414
488
  <SlotFillProvider>
415
489
  <DropdownMenu { ...props }>
416
- <DropdownMenuItem>Item</DropdownMenuItem>
490
+ <DropdownMenuItem>
491
+ <DropdownMenuItemLabel>Item</DropdownMenuItemLabel>
492
+ </DropdownMenuItem>
417
493
  <Slot />
418
494
  </DropdownMenu>
419
495
 
420
496
  <Fill>
421
- <DropdownMenuItem>Item from fill</DropdownMenuItem>
497
+ <DropdownMenuItem>
498
+ <DropdownMenuItemLabel>
499
+ Item from fill
500
+ </DropdownMenuItemLabel>
501
+ </DropdownMenuItem>
422
502
  <DropdownMenu
423
503
  trigger={
424
- <DropdownMenuItem>Submenu from fill</DropdownMenuItem>
504
+ <DropdownMenuItem>
505
+ <DropdownMenuItemLabel>
506
+ Submenu from fill
507
+ </DropdownMenuItemLabel>
508
+ </DropdownMenuItem>
425
509
  }
426
510
  >
427
- <DropdownMenuItem>Submenu item from fill</DropdownMenuItem>
511
+ <DropdownMenuItem>
512
+ <DropdownMenuItemLabel>
513
+ Submenu item from fill
514
+ </DropdownMenuItemLabel>
515
+ </DropdownMenuItem>
428
516
  </DropdownMenu>
429
517
  </Fill>
430
518
  </SlotFillProvider>
@@ -440,15 +528,28 @@ const toolbarVariantContextValue = {
440
528
  },
441
529
  };
442
530
  export const ToolbarVariant: StoryFn< typeof DropdownMenu > = ( props ) => (
531
+ // TODO: add toolbar
443
532
  <ContextSystemProvider value={ toolbarVariantContextValue }>
444
533
  <DropdownMenu { ...props }>
445
- <DropdownMenuItem>Level 1 item</DropdownMenuItem>
446
- <DropdownMenuItem>Level 1 item</DropdownMenuItem>
534
+ <DropdownMenuItem>
535
+ <DropdownMenuItemLabel>Level 1 item</DropdownMenuItemLabel>
536
+ </DropdownMenuItem>
537
+ <DropdownMenuItem>
538
+ <DropdownMenuItemLabel>Level 1 item</DropdownMenuItemLabel>
539
+ </DropdownMenuItem>
447
540
  <DropdownMenuSeparator />
448
541
  <DropdownMenu
449
- trigger={ <DropdownMenuItem>Submenu trigger</DropdownMenuItem> }
542
+ trigger={
543
+ <DropdownMenuItem>
544
+ <DropdownMenuItemLabel>
545
+ Submenu trigger
546
+ </DropdownMenuItemLabel>
547
+ </DropdownMenuItem>
548
+ }
450
549
  >
451
- <DropdownMenuItem>Level 2 item</DropdownMenuItem>
550
+ <DropdownMenuItem>
551
+ <DropdownMenuItemLabel>Level 2 item</DropdownMenuItemLabel>
552
+ </DropdownMenuItem>
452
553
  </DropdownMenu>
453
554
  </DropdownMenu>
454
555
  </ContextSystemProvider>
@@ -471,17 +572,31 @@ export const InsideModal: StoryFn< typeof DropdownMenu > = ( props ) => {
471
572
  { isModalOpen && (
472
573
  <Modal onRequestClose={ () => setModalOpen( false ) }>
473
574
  <DropdownMenu { ...props }>
474
- <DropdownMenuItem>Level 1 item</DropdownMenuItem>
475
- <DropdownMenuItem>Level 1 item</DropdownMenuItem>
575
+ <DropdownMenuItem>
576
+ <DropdownMenuItemLabel>
577
+ Level 1 item
578
+ </DropdownMenuItemLabel>
579
+ </DropdownMenuItem>
580
+ <DropdownMenuItem>
581
+ <DropdownMenuItemLabel>
582
+ Level 1 item
583
+ </DropdownMenuItemLabel>
584
+ </DropdownMenuItem>
476
585
  <DropdownMenuSeparator />
477
586
  <DropdownMenu
478
587
  trigger={
479
588
  <DropdownMenuItem>
480
- Submenu trigger
589
+ <DropdownMenuItemLabel>
590
+ Submenu trigger
591
+ </DropdownMenuItemLabel>
481
592
  </DropdownMenuItem>
482
593
  }
483
594
  >
484
- <DropdownMenuItem>Level 2 item</DropdownMenuItem>
595
+ <DropdownMenuItem>
596
+ <DropdownMenuItemLabel>
597
+ Level 2 item
598
+ </DropdownMenuItemLabel>
599
+ </DropdownMenuItem>
485
600
  </DropdownMenu>
486
601
  </DropdownMenu>
487
602
  <Button onClick={ () => setModalOpen( false ) }>
@@ -494,10 +609,6 @@ export const InsideModal: StoryFn< typeof DropdownMenu > = ( props ) => {
494
609
  };
495
610
  InsideModal.args = {
496
611
  ...Default.args,
497
- hideOnEscape: ( e ) => {
498
- e.stopPropagation();
499
- return true;
500
- },
501
612
  };
502
613
  InsideModal.parameters = {
503
614
  docs: {