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