@wordpress/components 28.10.0 → 28.12.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 (680) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/build/autocomplete/autocompleter-ui.js +2 -6
  3. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  4. package/build/autocomplete/autocompleter-ui.native.js +2 -4
  5. package/build/autocomplete/autocompleter-ui.native.js.map +1 -1
  6. package/build/autocomplete/index.js +4 -5
  7. package/build/autocomplete/index.js.map +1 -1
  8. package/build/base-control/types.js.map +1 -1
  9. package/build/border-box-control/border-box-control/component.js +1 -0
  10. package/build/border-box-control/border-box-control/component.js.map +1 -1
  11. package/build/border-box-control/border-box-control/hook.js +6 -0
  12. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  13. package/build/border-control/border-control/component.js +1 -0
  14. package/build/border-control/border-control/component.js.map +1 -1
  15. package/build/border-control/border-control/hook.js +6 -0
  16. package/build/border-control/border-control/hook.js.map +1 -1
  17. package/build/border-control/border-control-dropdown/component.js +13 -13
  18. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  19. package/build/color-palette/index.js +1 -1
  20. package/build/color-palette/index.js.map +1 -1
  21. package/build/color-palette/index.native.js +1 -2
  22. package/build/color-palette/index.native.js.map +1 -1
  23. package/build/color-picker/index.native.js +0 -1
  24. package/build/color-picker/index.native.js.map +1 -1
  25. package/build/composite/legacy/index.js +5 -2
  26. package/build/composite/legacy/index.js.map +1 -1
  27. package/build/custom-gradient-picker/gradient-bar/control-points.js +1 -1
  28. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  29. package/build/date-time/date/index.js +0 -1
  30. package/build/date-time/date/index.js.map +1 -1
  31. package/build/font-size-picker/index.native.js +6 -6
  32. package/build/font-size-picker/index.native.js.map +1 -1
  33. package/build/form-file-upload/index.js +5 -1
  34. package/build/form-file-upload/index.js.map +1 -1
  35. package/build/form-token-field/index.js +0 -3
  36. package/build/form-token-field/index.js.map +1 -1
  37. package/build/form-token-field/suggestions-list.js +7 -3
  38. package/build/form-token-field/suggestions-list.js.map +1 -1
  39. package/build/form-token-field/token.js +1 -0
  40. package/build/form-token-field/token.js.map +1 -1
  41. package/build/guide/page-control.js +1 -0
  42. package/build/guide/page-control.js.map +1 -1
  43. package/build/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
  44. package/build/menu/checkbox-item.js.map +1 -0
  45. package/build/{dropdown-menu-v2 → menu}/context.js +2 -2
  46. package/build/menu/context.js.map +1 -0
  47. package/build/{dropdown-menu-v2 → menu}/group-label.js +5 -5
  48. package/build/menu/group-label.js.map +1 -0
  49. package/build/{dropdown-menu-v2 → menu}/group.js +5 -5
  50. package/build/menu/group.js.map +1 -0
  51. package/build/{dropdown-menu-v2 → menu}/index.js +38 -38
  52. package/build/menu/index.js.map +1 -0
  53. package/build/{dropdown-menu-v2 → menu}/item-help-text.js +3 -3
  54. package/build/menu/item-help-text.js.map +1 -0
  55. package/build/{dropdown-menu-v2 → menu}/item-label.js +3 -3
  56. package/build/menu/item-label.js.map +1 -0
  57. package/build/{dropdown-menu-v2 → menu}/item.js +7 -7
  58. package/build/menu/item.js.map +1 -0
  59. package/build/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
  60. package/build/menu/radio-item.js.map +1 -0
  61. package/build/{dropdown-menu-v2 → menu}/separator.js +6 -6
  62. package/build/menu/separator.js.map +1 -0
  63. package/build/menu/styles.js +150 -0
  64. package/build/menu/styles.js.map +1 -0
  65. package/build/menu/types.js.map +1 -0
  66. package/build/menu/use-temporary-focus-visible-fix.js.map +1 -0
  67. package/build/menu-item/index.js +1 -0
  68. package/build/menu-item/index.js.map +1 -1
  69. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  70. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  71. package/build/mobile/bottom-sheet/range-cell.native.js +1 -1
  72. package/build/mobile/bottom-sheet/range-cell.native.js.map +1 -1
  73. package/build/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  74. package/build/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  75. package/build/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  76. package/build/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  77. package/build/mobile/bottom-sheet-select-control/index.native.js +2 -2
  78. package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  79. package/build/mobile/color-settings/index.native.js +1 -3
  80. package/build/mobile/color-settings/index.native.js.map +1 -1
  81. package/build/mobile/color-settings/picker-screen.native.js +1 -3
  82. package/build/mobile/color-settings/picker-screen.native.js.map +1 -1
  83. package/build/mobile/image/index.native.js +1 -3
  84. package/build/mobile/image/index.native.js.map +1 -1
  85. package/build/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  86. package/build/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  87. package/build/mobile/link-picker/link-picker-results.native.js +2 -5
  88. package/build/mobile/link-picker/link-picker-results.native.js.map +1 -1
  89. package/build/mobile/link-picker/link-picker-screen.native.js +1 -3
  90. package/build/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  91. package/build/mobile/link-settings/index.native.js +6 -18
  92. package/build/mobile/link-settings/index.native.js.map +1 -1
  93. package/build/mobile/link-settings/link-settings-screen.native.js +1 -3
  94. package/build/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  95. package/build/mobile/segmented-control/index.native.js +2 -6
  96. package/build/mobile/segmented-control/index.native.js.map +1 -1
  97. package/build/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  98. package/build/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  99. package/build/navigation/index.js +1 -2
  100. package/build/navigation/index.js.map +1 -1
  101. package/build/navigation/item/use-navigation-tree-item.js +2 -2
  102. package/build/navigation/item/use-navigation-tree-item.js.map +1 -1
  103. package/build/navigation/menu/menu-title-search.js +2 -2
  104. package/build/navigation/menu/menu-title-search.js.map +1 -1
  105. package/build/navigation/menu/use-navigation-tree-menu.js +2 -2
  106. package/build/navigation/menu/use-navigation-tree-menu.js.map +1 -1
  107. package/build/notice/index.js +2 -0
  108. package/build/notice/index.js.map +1 -1
  109. package/build/palette-edit/index.js +9 -2
  110. package/build/palette-edit/index.js.map +1 -1
  111. package/build/palette-edit/styles.js +13 -28
  112. package/build/palette-edit/styles.js.map +1 -1
  113. package/build/panel/body.js +1 -0
  114. package/build/panel/body.js.map +1 -1
  115. package/build/popover/index.js +4 -1
  116. package/build/popover/index.js.map +1 -1
  117. package/build/private-apis.js +4 -4
  118. package/build/private-apis.js.map +1 -1
  119. package/build/radio-group/index.js +3 -1
  120. package/build/radio-group/index.js.map +1 -1
  121. package/build/radio-group/radio.js +6 -0
  122. package/build/radio-group/radio.js.map +1 -1
  123. package/build/radio-group/types.js.map +1 -1
  124. package/build/sandbox/index.js +3 -6
  125. package/build/sandbox/index.js.map +1 -1
  126. package/build/sandbox/index.native.js +1 -3
  127. package/build/sandbox/index.native.js.map +1 -1
  128. package/build/search-control/index.native.js +1 -3
  129. package/build/search-control/index.native.js.map +1 -1
  130. package/build/slot-fill/bubbles-virtually/slot.js +1 -2
  131. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  132. package/build/slot-fill/fill.js +3 -6
  133. package/build/slot-fill/fill.js.map +1 -1
  134. package/build/snackbar/index.js +2 -1
  135. package/build/snackbar/index.js.map +1 -1
  136. package/build/spacer/hook.js +5 -3
  137. package/build/spacer/hook.js.map +1 -1
  138. package/build/tab-panel/index.js +4 -1
  139. package/build/tab-panel/index.js.map +1 -1
  140. package/build/tabs/index.js +48 -113
  141. package/build/tabs/index.js.map +1 -1
  142. package/build/tabs/styles.js +12 -12
  143. package/build/tabs/styles.js.map +1 -1
  144. package/build/tabs/tab.js +23 -6
  145. package/build/tabs/tab.js.map +1 -1
  146. package/build/tabs/tablist.js +37 -14
  147. package/build/tabs/tablist.js.map +1 -1
  148. package/build/tabs/types.js.map +1 -1
  149. package/build/toggle-group-control/toggle-group-control/component.js +3 -2
  150. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  151. package/build/toolbar/toolbar/index.js +3 -0
  152. package/build/toolbar/toolbar/index.js.map +1 -1
  153. package/build/tools-panel/tools-panel-header/component.js +1 -1
  154. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  155. package/build/tools-panel/tools-panel-item/hook.js +0 -2
  156. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  157. package/build/tooltip/index.native.js +5 -15
  158. package/build/tooltip/index.native.js.map +1 -1
  159. package/build/unit-control/index.native.js +2 -6
  160. package/build/unit-control/index.native.js.map +1 -1
  161. package/build/utils/deprecated-36px-size.js +27 -0
  162. package/build/utils/deprecated-36px-size.js.map +1 -0
  163. package/build/utils/element-rect.js +13 -2
  164. package/build/utils/element-rect.js.map +1 -1
  165. package/build/utils/hooks/use-animated-offset-rect.js +3 -2
  166. package/build/utils/hooks/use-animated-offset-rect.js.map +1 -1
  167. package/build/utils/hooks/use-update-effect.js +0 -2
  168. package/build/utils/hooks/use-update-effect.js.map +1 -1
  169. package/build-module/autocomplete/autocompleter-ui.js +2 -6
  170. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  171. package/build-module/autocomplete/autocompleter-ui.native.js +2 -4
  172. package/build-module/autocomplete/autocompleter-ui.native.js.map +1 -1
  173. package/build-module/autocomplete/index.js +4 -5
  174. package/build-module/autocomplete/index.js.map +1 -1
  175. package/build-module/base-control/types.js.map +1 -1
  176. package/build-module/border-box-control/border-box-control/component.js +1 -0
  177. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  178. package/build-module/border-box-control/border-box-control/hook.js +6 -0
  179. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  180. package/build-module/border-control/border-control/component.js +1 -0
  181. package/build-module/border-control/border-control/component.js.map +1 -1
  182. package/build-module/border-control/border-control/hook.js +7 -0
  183. package/build-module/border-control/border-control/hook.js.map +1 -1
  184. package/build-module/border-control/border-control-dropdown/component.js +13 -13
  185. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  186. package/build-module/color-palette/index.js +1 -1
  187. package/build-module/color-palette/index.js.map +1 -1
  188. package/build-module/color-palette/index.native.js +1 -2
  189. package/build-module/color-palette/index.native.js.map +1 -1
  190. package/build-module/color-picker/index.native.js +0 -1
  191. package/build-module/color-picker/index.native.js.map +1 -1
  192. package/build-module/composite/legacy/index.js +5 -2
  193. package/build-module/composite/legacy/index.js.map +1 -1
  194. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +1 -1
  195. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  196. package/build-module/date-time/date/index.js +0 -1
  197. package/build-module/date-time/date/index.js.map +1 -1
  198. package/build-module/font-size-picker/index.native.js +7 -7
  199. package/build-module/font-size-picker/index.native.js.map +1 -1
  200. package/build-module/form-file-upload/index.js +5 -1
  201. package/build-module/form-file-upload/index.js.map +1 -1
  202. package/build-module/form-token-field/index.js +0 -3
  203. package/build-module/form-token-field/index.js.map +1 -1
  204. package/build-module/form-token-field/suggestions-list.js +7 -3
  205. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  206. package/build-module/form-token-field/token.js +1 -0
  207. package/build-module/form-token-field/token.js.map +1 -1
  208. package/build-module/guide/page-control.js +1 -0
  209. package/build-module/guide/page-control.js.map +1 -1
  210. package/build-module/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
  211. package/build-module/menu/checkbox-item.js.map +1 -0
  212. package/build-module/{dropdown-menu-v2 → menu}/context.js +1 -1
  213. package/build-module/menu/context.js.map +1 -0
  214. package/build-module/{dropdown-menu-v2 → menu}/group-label.js +5 -5
  215. package/build-module/menu/group-label.js.map +1 -0
  216. package/build-module/menu/group.js +21 -0
  217. package/build-module/menu/group.js.map +1 -0
  218. package/build-module/{dropdown-menu-v2 → menu}/index.js +46 -46
  219. package/build-module/menu/index.js.map +1 -0
  220. package/build-module/{dropdown-menu-v2 → menu}/item-help-text.js +2 -2
  221. package/build-module/menu/item-help-text.js.map +1 -0
  222. package/build-module/{dropdown-menu-v2 → menu}/item-label.js +2 -2
  223. package/build-module/menu/item-label.js.map +1 -0
  224. package/build-module/{dropdown-menu-v2 → menu}/item.js +7 -7
  225. package/build-module/menu/item.js.map +1 -0
  226. package/build-module/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
  227. package/build-module/menu/radio-item.js.map +1 -0
  228. package/build-module/menu/separator.js +22 -0
  229. package/build-module/menu/separator.js.map +1 -0
  230. package/build-module/menu/styles.js +143 -0
  231. package/build-module/menu/styles.js.map +1 -0
  232. package/build-module/menu/types.js.map +1 -0
  233. package/build-module/menu/use-temporary-focus-visible-fix.js.map +1 -0
  234. package/build-module/menu-item/index.js +1 -0
  235. package/build-module/menu-item/index.js.map +1 -1
  236. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  237. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  238. package/build-module/mobile/bottom-sheet/range-cell.native.js +1 -1
  239. package/build-module/mobile/bottom-sheet/range-cell.native.js.map +1 -1
  240. package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  241. package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  242. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  243. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  244. package/build-module/mobile/bottom-sheet-select-control/index.native.js +2 -2
  245. package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  246. package/build-module/mobile/color-settings/index.native.js +1 -3
  247. package/build-module/mobile/color-settings/index.native.js.map +1 -1
  248. package/build-module/mobile/color-settings/picker-screen.native.js +1 -3
  249. package/build-module/mobile/color-settings/picker-screen.native.js.map +1 -1
  250. package/build-module/mobile/image/index.native.js +1 -3
  251. package/build-module/mobile/image/index.native.js.map +1 -1
  252. package/build-module/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  253. package/build-module/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  254. package/build-module/mobile/link-picker/link-picker-results.native.js +2 -5
  255. package/build-module/mobile/link-picker/link-picker-results.native.js.map +1 -1
  256. package/build-module/mobile/link-picker/link-picker-screen.native.js +1 -3
  257. package/build-module/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  258. package/build-module/mobile/link-settings/index.native.js +6 -18
  259. package/build-module/mobile/link-settings/index.native.js.map +1 -1
  260. package/build-module/mobile/link-settings/link-settings-screen.native.js +1 -3
  261. package/build-module/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  262. package/build-module/mobile/segmented-control/index.native.js +2 -6
  263. package/build-module/mobile/segmented-control/index.native.js.map +1 -1
  264. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  265. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  266. package/build-module/navigation/index.js +1 -2
  267. package/build-module/navigation/index.js.map +1 -1
  268. package/build-module/navigation/item/use-navigation-tree-item.js +2 -2
  269. package/build-module/navigation/item/use-navigation-tree-item.js.map +1 -1
  270. package/build-module/navigation/menu/menu-title-search.js +2 -2
  271. package/build-module/navigation/menu/menu-title-search.js.map +1 -1
  272. package/build-module/navigation/menu/use-navigation-tree-menu.js +2 -2
  273. package/build-module/navigation/menu/use-navigation-tree-menu.js.map +1 -1
  274. package/build-module/notice/index.js +2 -0
  275. package/build-module/notice/index.js.map +1 -1
  276. package/build-module/palette-edit/index.js +11 -4
  277. package/build-module/palette-edit/index.js.map +1 -1
  278. package/build-module/palette-edit/styles.js +13 -29
  279. package/build-module/palette-edit/styles.js.map +1 -1
  280. package/build-module/panel/body.js +1 -0
  281. package/build-module/panel/body.js.map +1 -1
  282. package/build-module/popover/index.js +4 -1
  283. package/build-module/popover/index.js.map +1 -1
  284. package/build-module/private-apis.js +3 -3
  285. package/build-module/private-apis.js.map +1 -1
  286. package/build-module/radio-group/index.js +3 -1
  287. package/build-module/radio-group/index.js.map +1 -1
  288. package/build-module/radio-group/radio.js +6 -0
  289. package/build-module/radio-group/radio.js.map +1 -1
  290. package/build-module/radio-group/types.js.map +1 -1
  291. package/build-module/sandbox/index.js +3 -6
  292. package/build-module/sandbox/index.js.map +1 -1
  293. package/build-module/sandbox/index.native.js +1 -3
  294. package/build-module/sandbox/index.native.js.map +1 -1
  295. package/build-module/search-control/index.native.js +1 -3
  296. package/build-module/search-control/index.native.js.map +1 -1
  297. package/build-module/slot-fill/bubbles-virtually/slot.js +1 -2
  298. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  299. package/build-module/slot-fill/fill.js +3 -6
  300. package/build-module/slot-fill/fill.js.map +1 -1
  301. package/build-module/snackbar/index.js +2 -1
  302. package/build-module/snackbar/index.js.map +1 -1
  303. package/build-module/spacer/hook.js +5 -3
  304. package/build-module/spacer/hook.js.map +1 -1
  305. package/build-module/tab-panel/index.js +4 -1
  306. package/build-module/tab-panel/index.js.map +1 -1
  307. package/build-module/tabs/index.js +47 -112
  308. package/build-module/tabs/index.js.map +1 -1
  309. package/build-module/tabs/styles.js +11 -11
  310. package/build-module/tabs/styles.js.map +1 -1
  311. package/build-module/tabs/tab.js +21 -6
  312. package/build-module/tabs/tab.js.map +1 -1
  313. package/build-module/tabs/tablist.js +37 -14
  314. package/build-module/tabs/tablist.js.map +1 -1
  315. package/build-module/tabs/types.js.map +1 -1
  316. package/build-module/toggle-group-control/toggle-group-control/component.js +3 -2
  317. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  318. package/build-module/toolbar/toolbar/index.js +3 -0
  319. package/build-module/toolbar/toolbar/index.js.map +1 -1
  320. package/build-module/tools-panel/tools-panel-header/component.js +1 -1
  321. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  322. package/build-module/tools-panel/tools-panel-item/hook.js +0 -2
  323. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  324. package/build-module/tooltip/index.native.js +5 -15
  325. package/build-module/tooltip/index.native.js.map +1 -1
  326. package/build-module/unit-control/index.native.js +2 -6
  327. package/build-module/unit-control/index.native.js.map +1 -1
  328. package/build-module/utils/deprecated-36px-size.js +19 -0
  329. package/build-module/utils/deprecated-36px-size.js.map +1 -0
  330. package/build-module/utils/element-rect.js +13 -2
  331. package/build-module/utils/element-rect.js.map +1 -1
  332. package/build-module/utils/hooks/use-animated-offset-rect.js +3 -2
  333. package/build-module/utils/hooks/use-animated-offset-rect.js.map +1 -1
  334. package/build-module/utils/hooks/use-update-effect.js +0 -2
  335. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  336. package/build-style/style-rtl.css +21 -35
  337. package/build-style/style.css +21 -35
  338. package/build-types/animate/stories/index.story.d.ts.map +1 -1
  339. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  340. package/build-types/autocomplete/index.d.ts.map +1 -1
  341. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  342. package/build-types/base-control/types.d.ts +3 -0
  343. package/build-types/base-control/types.d.ts.map +1 -1
  344. package/build-types/border-box-control/border-box-control/component.d.ts +1 -0
  345. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  346. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  347. package/build-types/border-control/border-control/component.d.ts +1 -0
  348. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  349. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  350. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  351. package/build-types/border-control/stories/index.story.d.ts.map +1 -1
  352. package/build-types/button/stories/index.story.d.ts.map +1 -1
  353. package/build-types/card/stories/index.story.d.ts.map +1 -1
  354. package/build-types/composite/legacy/index.d.ts.map +1 -1
  355. package/build-types/composite/stories/index.story.d.ts.map +1 -1
  356. package/build-types/confirm-dialog/stories/index.story.d.ts.map +1 -1
  357. package/build-types/date-time/date/index.d.ts.map +1 -1
  358. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  359. package/build-types/draggable/stories/index.story.d.ts.map +1 -1
  360. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  361. package/build-types/external-link/stories/index.story.d.ts.map +1 -1
  362. package/build-types/form-file-upload/index.d.ts.map +1 -1
  363. package/build-types/form-token-field/index.d.ts.map +1 -1
  364. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  365. package/build-types/form-token-field/token.d.ts.map +1 -1
  366. package/build-types/guide/page-control.d.ts.map +1 -1
  367. package/build-types/heading/stories/index.story.d.ts.map +1 -1
  368. package/build-types/item-group/stories/index.story.d.ts +1 -1
  369. package/build-types/item-group/stories/index.story.d.ts.map +1 -1
  370. package/build-types/keyboard-shortcuts/stories/index.story.d.ts.map +1 -1
  371. package/build-types/lock-unlock.d.ts +2 -2
  372. package/build-types/menu/checkbox-item.d.ts +3 -0
  373. package/build-types/menu/checkbox-item.d.ts.map +1 -0
  374. package/build-types/menu/context.d.ts +6 -0
  375. package/build-types/menu/context.d.ts.map +1 -0
  376. package/build-types/menu/group-label.d.ts +3 -0
  377. package/build-types/menu/group-label.d.ts.map +1 -0
  378. package/build-types/menu/group.d.ts +3 -0
  379. package/build-types/menu/group.d.ts.map +1 -0
  380. package/build-types/menu/index.d.ts +40 -0
  381. package/build-types/menu/index.d.ts.map +1 -0
  382. package/build-types/{dropdown-menu-v2 → menu}/item-help-text.d.ts +1 -1
  383. package/build-types/menu/item-help-text.d.ts.map +1 -0
  384. package/build-types/{dropdown-menu-v2 → menu}/item-label.d.ts +1 -1
  385. package/build-types/menu/item-label.d.ts.map +1 -0
  386. package/build-types/menu/item.d.ts +3 -0
  387. package/build-types/menu/item.d.ts.map +1 -0
  388. package/build-types/menu/radio-item.d.ts +3 -0
  389. package/build-types/menu/radio-item.d.ts.map +1 -0
  390. package/build-types/menu/separator.d.ts +3 -0
  391. package/build-types/menu/separator.d.ts.map +1 -0
  392. package/build-types/menu/stories/index.story.d.ts +16 -0
  393. package/build-types/menu/stories/index.story.d.ts.map +1 -0
  394. package/build-types/{dropdown-menu-v2 → menu}/styles.d.ts +13 -13
  395. package/build-types/menu/styles.d.ts.map +1 -0
  396. package/build-types/menu/test/index.d.ts.map +1 -0
  397. package/build-types/{dropdown-menu-v2 → menu}/types.d.ts +22 -21
  398. package/build-types/menu/types.d.ts.map +1 -0
  399. package/build-types/menu/use-temporary-focus-visible-fix.d.ts.map +1 -0
  400. package/build-types/menu-item/index.d.ts.map +1 -1
  401. package/build-types/modal/stories/index.story.d.ts.map +1 -1
  402. package/build-types/navigable-container/stories/navigable-menu.story.d.ts.map +1 -1
  403. package/build-types/navigable-container/stories/tabbable-container.story.d.ts.map +1 -1
  404. package/build-types/navigation/index.d.ts.map +1 -1
  405. package/build-types/navigator/stories/index.story.d.ts.map +1 -1
  406. package/build-types/notice/index.d.ts.map +1 -1
  407. package/build-types/notice/stories/index.story.d.ts.map +1 -1
  408. package/build-types/palette-edit/index.d.ts.map +1 -1
  409. package/build-types/palette-edit/styles.d.ts +0 -256
  410. package/build-types/palette-edit/styles.d.ts.map +1 -1
  411. package/build-types/panel/body.d.ts.map +1 -1
  412. package/build-types/panel/stories/index.story.d.ts.map +1 -1
  413. package/build-types/popover/index.d.ts.map +1 -1
  414. package/build-types/popover/stories/index.story.d.ts.map +1 -1
  415. package/build-types/progress-bar/stories/index.story.d.ts.map +1 -1
  416. package/build-types/radio-group/index.d.ts.map +1 -1
  417. package/build-types/radio-group/radio.d.ts +4 -2
  418. package/build-types/radio-group/radio.d.ts.map +1 -1
  419. package/build-types/radio-group/stories/index.story.d.ts.map +1 -1
  420. package/build-types/radio-group/types.d.ts +5 -1
  421. package/build-types/radio-group/types.d.ts.map +1 -1
  422. package/build-types/resizable-box/stories/index.story.d.ts.map +1 -1
  423. package/build-types/sandbox/index.d.ts.map +1 -1
  424. package/build-types/sandbox/stories/index.story.d.ts.map +1 -1
  425. package/build-types/scroll-lock/stories/index.story.d.ts.map +1 -1
  426. package/build-types/shortcut/stories/index.story.d.ts.map +1 -1
  427. package/build-types/slot-fill/bubbles-virtually/slot.d.ts.map +1 -1
  428. package/build-types/slot-fill/fill.d.ts.map +1 -1
  429. package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
  430. package/build-types/snackbar/index.d.ts.map +1 -1
  431. package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
  432. package/build-types/snackbar/stories/list.story.d.ts.map +1 -1
  433. package/build-types/spacer/hook.d.ts.map +1 -1
  434. package/build-types/spinner/stories/index.story.d.ts.map +1 -1
  435. package/build-types/tab-panel/index.d.ts.map +1 -1
  436. package/build-types/tab-panel/stories/index.story.d.ts.map +1 -1
  437. package/build-types/tabs/index.d.ts +21 -8
  438. package/build-types/tabs/index.d.ts.map +1 -1
  439. package/build-types/tabs/stories/index.story.d.ts +1 -1
  440. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  441. package/build-types/tabs/styles.d.ts +6 -3
  442. package/build-types/tabs/styles.d.ts.map +1 -1
  443. package/build-types/tabs/tab.d.ts +0 -3
  444. package/build-types/tabs/tab.d.ts.map +1 -1
  445. package/build-types/tabs/tablist.d.ts.map +1 -1
  446. package/build-types/tabs/types.d.ts +85 -48
  447. package/build-types/tabs/types.d.ts.map +1 -1
  448. package/build-types/text/stories/index.story.d.ts.map +1 -1
  449. package/build-types/text-highlight/stories/index.story.d.ts.map +1 -1
  450. package/build-types/theme/stories/index.story.d.ts.map +1 -1
  451. package/build-types/tip/stories/index.story.d.ts.map +1 -1
  452. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  453. package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
  454. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  455. package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
  456. package/build-types/tree-grid/stories/index.story.d.ts.map +1 -1
  457. package/build-types/truncate/stories/index.story.d.ts.map +1 -1
  458. package/build-types/utils/deprecated-36px-size.d.ts +6 -0
  459. package/build-types/utils/deprecated-36px-size.d.ts.map +1 -0
  460. package/build-types/utils/element-rect.d.ts +1 -1
  461. package/build-types/utils/element-rect.d.ts.map +1 -1
  462. package/build-types/utils/hooks/use-animated-offset-rect.d.ts +8 -1
  463. package/build-types/utils/hooks/use-animated-offset-rect.d.ts.map +1 -1
  464. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  465. package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
  466. package/package.json +21 -20
  467. package/src/alignment-matrix-control/README.md +1 -2
  468. package/src/angle-picker-control/README.md +1 -2
  469. package/src/animate/stories/index.story.tsx +2 -1
  470. package/src/autocomplete/autocompleter-ui.native.js +2 -4
  471. package/src/autocomplete/autocompleter-ui.tsx +2 -6
  472. package/src/autocomplete/index.tsx +4 -5
  473. package/src/base-control/README.md +58 -47
  474. package/src/base-control/docs-manifest.json +12 -0
  475. package/src/base-control/stories/index.story.tsx +4 -0
  476. package/src/base-control/types.ts +3 -0
  477. package/src/border-box-control/border-box-control/README.md +1 -0
  478. package/src/border-box-control/border-box-control/component.tsx +1 -0
  479. package/src/border-box-control/border-box-control/hook.ts +7 -0
  480. package/src/border-box-control/stories/index.story.tsx +1 -0
  481. package/src/border-box-control/test/index.tsx +1 -0
  482. package/src/border-control/border-control/README.md +1 -0
  483. package/src/border-control/border-control/component.tsx +1 -0
  484. package/src/border-control/border-control/hook.ts +7 -1
  485. package/src/border-control/border-control-dropdown/component.tsx +25 -13
  486. package/src/border-control/stories/index.story.tsx +1 -0
  487. package/src/border-control/test/index.js +1 -0
  488. package/src/button/stories/index.story.tsx +2 -1
  489. package/src/card/stories/index.story.tsx +2 -1
  490. package/src/color-palette/index.native.js +1 -2
  491. package/src/color-palette/index.tsx +1 -1
  492. package/src/color-palette/style.scss +2 -4
  493. package/src/color-picker/index.native.js +0 -1
  494. package/src/composite/legacy/index.tsx +5 -2
  495. package/src/composite/stories/index.story.tsx +2 -1
  496. package/src/confirm-dialog/stories/index.story.tsx +2 -1
  497. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
  498. package/src/date-time/date/index.tsx +0 -1
  499. package/src/disabled/stories/index.story.tsx +2 -1
  500. package/src/draggable/stories/index.story.tsx +2 -1
  501. package/src/dropdown/stories/index.story.tsx +2 -1
  502. package/src/external-link/stories/index.story.tsx +2 -1
  503. package/src/font-size-picker/index.native.js +7 -7
  504. package/src/form-file-upload/index.tsx +7 -1
  505. package/src/form-token-field/index.tsx +0 -3
  506. package/src/form-token-field/style.scss +12 -13
  507. package/src/form-token-field/suggestions-list.tsx +6 -0
  508. package/src/form-token-field/token.tsx +1 -0
  509. package/src/guide/page-control.tsx +1 -0
  510. package/src/guide/style.scss +4 -6
  511. package/src/heading/stories/index.story.tsx +2 -1
  512. package/src/item-group/stories/index.story.tsx +8 -4
  513. package/src/keyboard-shortcuts/stories/index.story.tsx +2 -1
  514. package/src/{dropdown-menu-v2 → menu}/README.md +34 -34
  515. package/src/{dropdown-menu-v2 → menu}/checkbox-item.tsx +14 -14
  516. package/src/menu/context.tsx +13 -0
  517. package/src/{dropdown-menu-v2 → menu}/group-label.tsx +8 -8
  518. package/src/menu/group.tsx +26 -0
  519. package/src/{dropdown-menu-v2 → menu}/index.tsx +65 -70
  520. package/src/{dropdown-menu-v2 → menu}/item-help-text.tsx +3 -7
  521. package/src/{dropdown-menu-v2 → menu}/item-label.tsx +3 -7
  522. package/src/{dropdown-menu-v2 → menu}/item.tsx +13 -13
  523. package/src/{dropdown-menu-v2 → menu}/radio-item.tsx +14 -14
  524. package/src/menu/separator.tsx +27 -0
  525. package/src/menu/stories/index.story.tsx +543 -0
  526. package/src/{dropdown-menu-v2 → menu}/styles.ts +17 -17
  527. package/src/{dropdown-menu-v2 → menu}/test/index.tsx +145 -225
  528. package/src/{dropdown-menu-v2 → menu}/types.ts +24 -23
  529. package/src/menu-item/index.tsx +1 -0
  530. package/src/menu-item/test/__snapshots__/index.js.snap +4 -4
  531. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  532. package/src/mobile/bottom-sheet/range-cell.native.js +1 -1
  533. package/src/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  534. package/src/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  535. package/src/mobile/bottom-sheet-select-control/index.native.js +2 -2
  536. package/src/mobile/color-settings/index.native.js +1 -3
  537. package/src/mobile/color-settings/picker-screen.native.js +1 -3
  538. package/src/mobile/image/index.native.js +1 -3
  539. package/src/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  540. package/src/mobile/link-picker/link-picker-results.native.js +2 -5
  541. package/src/mobile/link-picker/link-picker-screen.native.js +1 -3
  542. package/src/mobile/link-settings/index.native.js +6 -18
  543. package/src/mobile/link-settings/link-settings-screen.native.js +1 -3
  544. package/src/mobile/segmented-control/index.native.js +2 -6
  545. package/src/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  546. package/src/modal/stories/index.story.tsx +2 -1
  547. package/src/navigable-container/stories/navigable-menu.story.tsx +2 -1
  548. package/src/navigable-container/stories/tabbable-container.story.tsx +2 -1
  549. package/src/navigation/index.tsx +1 -2
  550. package/src/navigation/item/use-navigation-tree-item.tsx +2 -2
  551. package/src/navigation/menu/menu-title-search.tsx +2 -2
  552. package/src/navigation/menu/use-navigation-tree-menu.tsx +2 -2
  553. package/src/navigator/stories/index.story.tsx +2 -1
  554. package/src/notice/index.tsx +2 -0
  555. package/src/notice/stories/index.story.tsx +7 -2
  556. package/src/notice/test/__snapshots__/index.tsx.snap +4 -4
  557. package/src/palette-edit/index.tsx +9 -5
  558. package/src/palette-edit/styles.ts +1 -67
  559. package/src/panel/body.tsx +1 -0
  560. package/src/panel/stories/index.story.tsx +2 -1
  561. package/src/popover/index.tsx +3 -0
  562. package/src/popover/stories/index.story.tsx +2 -1
  563. package/src/private-apis.ts +3 -3
  564. package/src/progress-bar/stories/index.story.tsx +2 -1
  565. package/src/radio-group/README.md +8 -8
  566. package/src/radio-group/index.tsx +2 -0
  567. package/src/radio-group/radio.tsx +7 -0
  568. package/src/radio-group/stories/index.story.tsx +16 -4
  569. package/src/radio-group/types.ts +6 -1
  570. package/src/resizable-box/stories/index.story.tsx +2 -1
  571. package/src/sandbox/index.native.js +1 -3
  572. package/src/sandbox/index.tsx +3 -6
  573. package/src/sandbox/stories/index.story.tsx +2 -1
  574. package/src/scroll-lock/stories/index.story.tsx +2 -1
  575. package/src/search-control/index.native.js +1 -3
  576. package/src/shortcut/stories/index.story.tsx +2 -1
  577. package/src/slot-fill/bubbles-virtually/slot.tsx +1 -2
  578. package/src/slot-fill/fill.ts +3 -6
  579. package/src/slot-fill/stories/index.story.tsx +2 -1
  580. package/src/snackbar/index.tsx +2 -1
  581. package/src/snackbar/stories/index.story.tsx +2 -1
  582. package/src/snackbar/stories/list.story.tsx +2 -1
  583. package/src/snackbar/style.scss +7 -16
  584. package/src/spacer/hook.ts +3 -2
  585. package/src/spinner/stories/index.story.tsx +2 -1
  586. package/src/tab-panel/index.tsx +3 -0
  587. package/src/tab-panel/stories/index.story.tsx +2 -1
  588. package/src/tab-panel/style.scss +1 -3
  589. package/src/tabs/README.md +63 -21
  590. package/src/tabs/index.tsx +112 -189
  591. package/src/tabs/stories/index.story.tsx +5 -2
  592. package/src/tabs/styles.ts +13 -5
  593. package/src/tabs/tab.tsx +23 -3
  594. package/src/tabs/tablist.tsx +44 -17
  595. package/src/tabs/test/index.tsx +131 -118
  596. package/src/tabs/types.ts +89 -49
  597. package/src/text/stories/index.story.tsx +2 -1
  598. package/src/text-highlight/stories/index.story.tsx +2 -1
  599. package/src/theme/stories/index.story.tsx +2 -1
  600. package/src/tip/stories/index.story.tsx +2 -1
  601. package/src/toggle-group-control/toggle-group-control/component.tsx +2 -1
  602. package/src/toolbar/toolbar/index.tsx +3 -0
  603. package/src/tools-panel/tools-panel-header/component.tsx +1 -1
  604. package/src/tools-panel/tools-panel-item/hook.ts +0 -2
  605. package/src/tooltip/index.native.js +5 -15
  606. package/src/tooltip/stories/index.story.tsx +2 -1
  607. package/src/tree-grid/stories/index.story.tsx +2 -1
  608. package/src/truncate/stories/index.story.tsx +2 -1
  609. package/src/unit-control/index.native.js +2 -6
  610. package/src/utils/deprecated-36px-size.ts +27 -0
  611. package/src/utils/element-rect.ts +14 -2
  612. package/src/utils/hooks/use-animated-offset-rect.ts +13 -1
  613. package/src/utils/hooks/use-update-effect.js +0 -2
  614. package/src/visually-hidden/stories/index.story.tsx +2 -1
  615. package/tsconfig.tsbuildinfo +1 -1
  616. package/build/dropdown-menu-v2/checkbox-item.js.map +0 -1
  617. package/build/dropdown-menu-v2/context.js.map +0 -1
  618. package/build/dropdown-menu-v2/group-label.js.map +0 -1
  619. package/build/dropdown-menu-v2/group.js.map +0 -1
  620. package/build/dropdown-menu-v2/index.js.map +0 -1
  621. package/build/dropdown-menu-v2/item-help-text.js.map +0 -1
  622. package/build/dropdown-menu-v2/item-label.js.map +0 -1
  623. package/build/dropdown-menu-v2/item.js.map +0 -1
  624. package/build/dropdown-menu-v2/radio-item.js.map +0 -1
  625. package/build/dropdown-menu-v2/separator.js.map +0 -1
  626. package/build/dropdown-menu-v2/styles.js +0 -150
  627. package/build/dropdown-menu-v2/styles.js.map +0 -1
  628. package/build/dropdown-menu-v2/types.js.map +0 -1
  629. package/build/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
  630. package/build-module/dropdown-menu-v2/checkbox-item.js.map +0 -1
  631. package/build-module/dropdown-menu-v2/context.js.map +0 -1
  632. package/build-module/dropdown-menu-v2/group-label.js.map +0 -1
  633. package/build-module/dropdown-menu-v2/group.js +0 -21
  634. package/build-module/dropdown-menu-v2/group.js.map +0 -1
  635. package/build-module/dropdown-menu-v2/index.js.map +0 -1
  636. package/build-module/dropdown-menu-v2/item-help-text.js.map +0 -1
  637. package/build-module/dropdown-menu-v2/item-label.js.map +0 -1
  638. package/build-module/dropdown-menu-v2/item.js.map +0 -1
  639. package/build-module/dropdown-menu-v2/radio-item.js.map +0 -1
  640. package/build-module/dropdown-menu-v2/separator.js +0 -22
  641. package/build-module/dropdown-menu-v2/separator.js.map +0 -1
  642. package/build-module/dropdown-menu-v2/styles.js +0 -143
  643. package/build-module/dropdown-menu-v2/styles.js.map +0 -1
  644. package/build-module/dropdown-menu-v2/types.js.map +0 -1
  645. package/build-module/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
  646. package/build-types/dropdown-menu-v2/checkbox-item.d.ts +0 -3
  647. package/build-types/dropdown-menu-v2/checkbox-item.d.ts.map +0 -1
  648. package/build-types/dropdown-menu-v2/context.d.ts +0 -6
  649. package/build-types/dropdown-menu-v2/context.d.ts.map +0 -1
  650. package/build-types/dropdown-menu-v2/group-label.d.ts +0 -3
  651. package/build-types/dropdown-menu-v2/group-label.d.ts.map +0 -1
  652. package/build-types/dropdown-menu-v2/group.d.ts +0 -3
  653. package/build-types/dropdown-menu-v2/group.d.ts.map +0 -1
  654. package/build-types/dropdown-menu-v2/index.d.ts +0 -40
  655. package/build-types/dropdown-menu-v2/index.d.ts.map +0 -1
  656. package/build-types/dropdown-menu-v2/item-help-text.d.ts.map +0 -1
  657. package/build-types/dropdown-menu-v2/item-label.d.ts.map +0 -1
  658. package/build-types/dropdown-menu-v2/item.d.ts +0 -3
  659. package/build-types/dropdown-menu-v2/item.d.ts.map +0 -1
  660. package/build-types/dropdown-menu-v2/radio-item.d.ts +0 -3
  661. package/build-types/dropdown-menu-v2/radio-item.d.ts.map +0 -1
  662. package/build-types/dropdown-menu-v2/separator.d.ts +0 -3
  663. package/build-types/dropdown-menu-v2/separator.d.ts.map +0 -1
  664. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +0 -16
  665. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +0 -1
  666. package/build-types/dropdown-menu-v2/styles.d.ts.map +0 -1
  667. package/build-types/dropdown-menu-v2/test/index.d.ts.map +0 -1
  668. package/build-types/dropdown-menu-v2/types.d.ts.map +0 -1
  669. package/build-types/dropdown-menu-v2/use-temporary-focus-visible-fix.d.ts.map +0 -1
  670. package/src/dropdown-menu-v2/context.tsx +0 -13
  671. package/src/dropdown-menu-v2/group.tsx +0 -26
  672. package/src/dropdown-menu-v2/separator.tsx +0 -27
  673. package/src/dropdown-menu-v2/stories/index.story.tsx +0 -639
  674. /package/build/{dropdown-menu-v2 → menu}/types.js +0 -0
  675. /package/build/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
  676. /package/build-module/{dropdown-menu-v2 → menu}/types.js +0 -0
  677. /package/build-module/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
  678. /package/build-types/{dropdown-menu-v2 → menu}/test/index.d.ts +0 -0
  679. /package/build-types/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.d.ts +0 -0
  680. /package/src/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.ts +0 -0
@@ -7,44 +7,44 @@ import { forwardRef, useContext } from '@wordpress/element';
7
7
  * Internal dependencies
8
8
  */
9
9
  import type { WordPressComponentProps } from '../context';
10
- import type { DropdownMenuItemProps } from './types';
10
+ import type { MenuItemProps } from './types';
11
11
  import * as Styled from './styles';
12
- import { DropdownMenuContext } from './context';
12
+ import { MenuContext } from './context';
13
13
  import { useTemporaryFocusVisibleFix } from './use-temporary-focus-visible-fix';
14
14
 
15
- export const DropdownMenuItem = forwardRef<
15
+ export const MenuItem = forwardRef<
16
16
  HTMLDivElement,
17
- WordPressComponentProps< DropdownMenuItemProps, 'div', false >
18
- >( function DropdownMenuItem(
17
+ WordPressComponentProps< MenuItemProps, 'div', false >
18
+ >( function MenuItem(
19
19
  { prefix, suffix, children, onBlur, hideOnClick = true, ...props },
20
20
  ref
21
21
  ) {
22
22
  // TODO: Remove when https://github.com/ariakit/ariakit/issues/4083 is fixed
23
23
  const focusVisibleFixProps = useTemporaryFocusVisibleFix( { onBlur } );
24
- const dropdownMenuContext = useContext( DropdownMenuContext );
24
+ const menuContext = useContext( MenuContext );
25
25
 
26
26
  return (
27
- <Styled.DropdownMenuItem
27
+ <Styled.MenuItem
28
28
  ref={ ref }
29
29
  { ...props }
30
30
  { ...focusVisibleFixProps }
31
31
  accessibleWhenDisabled
32
32
  hideOnClick={ hideOnClick }
33
- store={ dropdownMenuContext?.store }
33
+ store={ menuContext?.store }
34
34
  >
35
35
  <Styled.ItemPrefixWrapper>{ prefix }</Styled.ItemPrefixWrapper>
36
36
 
37
- <Styled.DropdownMenuItemContentWrapper>
38
- <Styled.DropdownMenuItemChildrenWrapper>
37
+ <Styled.MenuItemContentWrapper>
38
+ <Styled.MenuItemChildrenWrapper>
39
39
  { children }
40
- </Styled.DropdownMenuItemChildrenWrapper>
40
+ </Styled.MenuItemChildrenWrapper>
41
41
 
42
42
  { suffix && (
43
43
  <Styled.ItemSuffixWrapper>
44
44
  { suffix }
45
45
  </Styled.ItemSuffixWrapper>
46
46
  ) }
47
- </Styled.DropdownMenuItemContentWrapper>
48
- </Styled.DropdownMenuItem>
47
+ </Styled.MenuItemContentWrapper>
48
+ </Styled.MenuItem>
49
49
  );
50
50
  } );
@@ -13,8 +13,8 @@ import { Icon } from '@wordpress/icons';
13
13
  * Internal dependencies
14
14
  */
15
15
  import type { WordPressComponentProps } from '../context';
16
- import { DropdownMenuContext } from './context';
17
- import type { DropdownMenuRadioItemProps } from './types';
16
+ import { MenuContext } from './context';
17
+ import type { MenuRadioItemProps } from './types';
18
18
  import * as Styled from './styles';
19
19
  import { SVG, Circle } from '@wordpress/primitives';
20
20
  import { useTemporaryFocusVisibleFix } from './use-temporary-focus-visible-fix';
@@ -25,28 +25,28 @@ const radioCheck = (
25
25
  </SVG>
26
26
  );
27
27
 
28
- export const DropdownMenuRadioItem = forwardRef<
28
+ export const MenuRadioItem = forwardRef<
29
29
  HTMLDivElement,
30
- WordPressComponentProps< DropdownMenuRadioItemProps, 'div', false >
31
- >( function DropdownMenuRadioItem(
30
+ WordPressComponentProps< MenuRadioItemProps, 'div', false >
31
+ >( function MenuRadioItem(
32
32
  { suffix, children, onBlur, hideOnClick = false, ...props },
33
33
  ref
34
34
  ) {
35
35
  // TODO: Remove when https://github.com/ariakit/ariakit/issues/4083 is fixed
36
36
  const focusVisibleFixProps = useTemporaryFocusVisibleFix( { onBlur } );
37
- const dropdownMenuContext = useContext( DropdownMenuContext );
37
+ const menuContext = useContext( MenuContext );
38
38
 
39
39
  return (
40
- <Styled.DropdownMenuRadioItem
40
+ <Styled.MenuRadioItem
41
41
  ref={ ref }
42
42
  { ...props }
43
43
  { ...focusVisibleFixProps }
44
44
  accessibleWhenDisabled
45
45
  hideOnClick={ hideOnClick }
46
- store={ dropdownMenuContext?.store }
46
+ store={ menuContext?.store }
47
47
  >
48
48
  <Ariakit.MenuItemCheck
49
- store={ dropdownMenuContext?.store }
49
+ store={ menuContext?.store }
50
50
  render={ <Styled.ItemPrefixWrapper /> }
51
51
  // Override some ariakit inline styles
52
52
  style={ { width: 'auto', height: 'auto' } }
@@ -54,17 +54,17 @@ export const DropdownMenuRadioItem = forwardRef<
54
54
  <Icon icon={ radioCheck } size={ 24 } />
55
55
  </Ariakit.MenuItemCheck>
56
56
 
57
- <Styled.DropdownMenuItemContentWrapper>
58
- <Styled.DropdownMenuItemChildrenWrapper>
57
+ <Styled.MenuItemContentWrapper>
58
+ <Styled.MenuItemChildrenWrapper>
59
59
  { children }
60
- </Styled.DropdownMenuItemChildrenWrapper>
60
+ </Styled.MenuItemChildrenWrapper>
61
61
 
62
62
  { suffix && (
63
63
  <Styled.ItemSuffixWrapper>
64
64
  { suffix }
65
65
  </Styled.ItemSuffixWrapper>
66
66
  ) }
67
- </Styled.DropdownMenuItemContentWrapper>
68
- </Styled.DropdownMenuRadioItem>
67
+ </Styled.MenuItemContentWrapper>
68
+ </Styled.MenuRadioItem>
69
69
  );
70
70
  } );
@@ -0,0 +1,27 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { forwardRef, useContext } from '@wordpress/element';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import type { WordPressComponentProps } from '../context';
10
+ import { MenuContext } from './context';
11
+ import type { MenuSeparatorProps } from './types';
12
+ import * as Styled from './styles';
13
+
14
+ export const MenuSeparator = forwardRef<
15
+ HTMLHRElement,
16
+ WordPressComponentProps< MenuSeparatorProps, 'hr', false >
17
+ >( function MenuSeparator( props, ref ) {
18
+ const menuContext = useContext( MenuContext );
19
+ return (
20
+ <Styled.MenuSeparator
21
+ ref={ ref }
22
+ { ...props }
23
+ store={ menuContext?.store }
24
+ variant={ menuContext?.variant }
25
+ />
26
+ );
27
+ } );
@@ -0,0 +1,543 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { Meta, StoryFn } from '@storybook/react';
5
+ import { css } from '@emotion/react';
6
+
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { customLink, formatCapitalize } from '@wordpress/icons';
11
+ import { useState, useMemo, useContext } from '@wordpress/element';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { useCx } from '../../utils';
17
+ import { Menu } from '..';
18
+ import Icon from '../../icon';
19
+ import Button from '../../button';
20
+ import Modal from '../../modal';
21
+ import { createSlotFill, Provider as SlotFillProvider } from '../../slot-fill';
22
+ import { ContextSystemProvider } from '../../context';
23
+
24
+ const meta: Meta< typeof Menu > = {
25
+ id: 'components-experimental-menu',
26
+ title: 'Components (Experimental)/Actions/Menu',
27
+ component: Menu,
28
+ subcomponents: {
29
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
30
+ Item: Menu.Item,
31
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
32
+ CheckboxItem: Menu.CheckboxItem,
33
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
34
+ Group: Menu.Group,
35
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
36
+ GroupLabel: Menu.GroupLabel,
37
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
38
+ Separator: Menu.Separator,
39
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
40
+ Context: Menu.Context,
41
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
42
+ RadioItem: Menu.RadioItem,
43
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
44
+ ItemLabel: Menu.ItemLabel,
45
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
46
+ ItemHelpText: Menu.ItemHelpText,
47
+ },
48
+ argTypes: {
49
+ children: { control: { type: null } },
50
+ trigger: { control: { type: null } },
51
+ },
52
+ tags: [ 'status-private' ],
53
+ parameters: {
54
+ actions: { argTypesRegex: '^on.*' },
55
+ controls: { expanded: true },
56
+ docs: {
57
+ canvas: { sourceState: 'shown' },
58
+ source: { excludeDecorators: true },
59
+ },
60
+ },
61
+ };
62
+ export default meta;
63
+
64
+ export const Default: StoryFn< typeof Menu > = ( props ) => (
65
+ <Menu { ...props }>
66
+ <Menu.Item>
67
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
68
+ </Menu.Item>
69
+ <Menu.Item>
70
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
71
+ <Menu.ItemHelpText>Help text</Menu.ItemHelpText>
72
+ </Menu.Item>
73
+ <Menu.Item>
74
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
75
+ <Menu.ItemHelpText>
76
+ The menu item help text is automatically truncated when there
77
+ are more than two lines of text
78
+ </Menu.ItemHelpText>
79
+ </Menu.Item>
80
+ <Menu.Item hideOnClick={ false }>
81
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
82
+ <Menu.ItemHelpText>
83
+ This item doesn&apos;t close the menu on click
84
+ </Menu.ItemHelpText>
85
+ </Menu.Item>
86
+ <Menu.Item disabled>Disabled item</Menu.Item>
87
+ <Menu.Separator />
88
+ <Menu.Group>
89
+ <Menu.GroupLabel>Group label</Menu.GroupLabel>
90
+ <Menu.Item prefix={ <Icon icon={ customLink } size={ 24 } /> }>
91
+ <Menu.ItemLabel>With prefix</Menu.ItemLabel>
92
+ </Menu.Item>
93
+ <Menu.Item suffix="⌘S">With suffix</Menu.Item>
94
+ <Menu.Item
95
+ disabled
96
+ prefix={ <Icon icon={ formatCapitalize } size={ 24 } /> }
97
+ suffix="⌥⌘T"
98
+ >
99
+ <Menu.ItemLabel>Disabled with prefix and suffix</Menu.ItemLabel>
100
+ <Menu.ItemHelpText>And help text</Menu.ItemHelpText>
101
+ </Menu.Item>
102
+ </Menu.Group>
103
+ </Menu>
104
+ );
105
+ Default.args = {
106
+ trigger: (
107
+ <Button __next40pxDefaultSize variant="secondary">
108
+ Open menu
109
+ </Button>
110
+ ),
111
+ };
112
+
113
+ export const WithSubmenu: StoryFn< typeof Menu > = ( props ) => (
114
+ <Menu { ...props }>
115
+ <Menu.Item>Level 1 item</Menu.Item>
116
+ <Menu
117
+ trigger={
118
+ <Menu.Item suffix="Suffix">
119
+ <Menu.ItemLabel>
120
+ Submenu trigger item with a long label
121
+ </Menu.ItemLabel>
122
+ </Menu.Item>
123
+ }
124
+ >
125
+ <Menu.Item>
126
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
127
+ </Menu.Item>
128
+ <Menu.Item>
129
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
130
+ </Menu.Item>
131
+ <Menu
132
+ trigger={
133
+ <Menu.Item>
134
+ <Menu.ItemLabel>Submenu trigger</Menu.ItemLabel>
135
+ </Menu.Item>
136
+ }
137
+ >
138
+ <Menu.Item>
139
+ <Menu.ItemLabel>Level 3 item</Menu.ItemLabel>
140
+ </Menu.Item>
141
+ <Menu.Item>
142
+ <Menu.ItemLabel>Level 3 item</Menu.ItemLabel>
143
+ </Menu.Item>
144
+ </Menu>
145
+ </Menu>
146
+ </Menu>
147
+ );
148
+ WithSubmenu.args = {
149
+ ...Default.args,
150
+ };
151
+
152
+ export const WithCheckboxes: StoryFn< typeof Menu > = ( props ) => {
153
+ const [ isAChecked, setAChecked ] = useState( false );
154
+ const [ isBChecked, setBChecked ] = useState( true );
155
+ const [ multipleCheckboxesValue, setMultipleCheckboxesValue ] = useState<
156
+ string[]
157
+ >( [ 'b' ] );
158
+
159
+ const onMultipleCheckboxesCheckedChange: React.ComponentProps<
160
+ typeof Menu.CheckboxItem
161
+ >[ 'onChange' ] = ( e ) => {
162
+ setMultipleCheckboxesValue( ( prevValues ) => {
163
+ if ( prevValues.includes( e.target.value ) ) {
164
+ return prevValues.filter( ( val ) => val !== e.target.value );
165
+ }
166
+ return [ ...prevValues, e.target.value ];
167
+ } );
168
+ };
169
+
170
+ return (
171
+ <Menu { ...props }>
172
+ <Menu.Group>
173
+ <Menu.GroupLabel>
174
+ Single selection, uncontrolled
175
+ </Menu.GroupLabel>
176
+ <Menu.CheckboxItem
177
+ name="checkbox-individual-uncontrolled-a"
178
+ value="a"
179
+ suffix="⌥⌘T"
180
+ >
181
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
182
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
183
+ </Menu.CheckboxItem>
184
+ <Menu.CheckboxItem
185
+ name="checkbox-individual-uncontrolled-b"
186
+ value="b"
187
+ defaultChecked
188
+ >
189
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
190
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
191
+ </Menu.CheckboxItem>
192
+ </Menu.Group>
193
+ <Menu.Separator />
194
+ <Menu.Group>
195
+ <Menu.GroupLabel>Single selection, controlled</Menu.GroupLabel>
196
+ <Menu.CheckboxItem
197
+ name="checkbox-individual-controlled-a"
198
+ value="a"
199
+ checked={ isAChecked }
200
+ onChange={ ( e ) => setAChecked( e.target.checked ) }
201
+ >
202
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
203
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
204
+ </Menu.CheckboxItem>
205
+ <Menu.CheckboxItem
206
+ name="checkbox-individual-controlled-b"
207
+ value="b"
208
+ checked={ isBChecked }
209
+ onChange={ ( e ) => setBChecked( e.target.checked ) }
210
+ >
211
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
212
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
213
+ </Menu.CheckboxItem>
214
+ </Menu.Group>
215
+ <Menu.Separator />
216
+ <Menu.Group>
217
+ <Menu.GroupLabel>
218
+ Multiple selection, uncontrolled
219
+ </Menu.GroupLabel>
220
+ <Menu.CheckboxItem
221
+ name="checkbox-multiple-uncontrolled"
222
+ value="a"
223
+ >
224
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
225
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
226
+ </Menu.CheckboxItem>
227
+ <Menu.CheckboxItem
228
+ name="checkbox-multiple-uncontrolled"
229
+ value="b"
230
+ defaultChecked
231
+ >
232
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
233
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
234
+ </Menu.CheckboxItem>
235
+ </Menu.Group>
236
+ <Menu.Separator />
237
+ <Menu.Group>
238
+ <Menu.GroupLabel>
239
+ Multiple selection, controlled
240
+ </Menu.GroupLabel>
241
+ <Menu.CheckboxItem
242
+ name="checkbox-multiple-controlled"
243
+ value="a"
244
+ checked={ multipleCheckboxesValue.includes( 'a' ) }
245
+ onChange={ onMultipleCheckboxesCheckedChange }
246
+ >
247
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
248
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
249
+ </Menu.CheckboxItem>
250
+ <Menu.CheckboxItem
251
+ name="checkbox-multiple-controlled"
252
+ value="b"
253
+ checked={ multipleCheckboxesValue.includes( 'b' ) }
254
+ onChange={ onMultipleCheckboxesCheckedChange }
255
+ >
256
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
257
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
258
+ </Menu.CheckboxItem>
259
+ </Menu.Group>
260
+ </Menu>
261
+ );
262
+ };
263
+ WithCheckboxes.args = {
264
+ ...Default.args,
265
+ };
266
+
267
+ export const WithRadios: StoryFn< typeof Menu > = ( props ) => {
268
+ const [ radioValue, setRadioValue ] = useState( 'two' );
269
+ const onRadioChange: React.ComponentProps<
270
+ typeof Menu.RadioItem
271
+ >[ 'onChange' ] = ( e ) => setRadioValue( e.target.value );
272
+
273
+ return (
274
+ <Menu { ...props }>
275
+ <Menu.Group>
276
+ <Menu.GroupLabel>Uncontrolled</Menu.GroupLabel>
277
+ <Menu.RadioItem name="radio-uncontrolled" value="one">
278
+ <Menu.ItemLabel>Radio item 1</Menu.ItemLabel>
279
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
280
+ </Menu.RadioItem>
281
+ <Menu.RadioItem
282
+ name="radio-uncontrolled"
283
+ value="two"
284
+ defaultChecked
285
+ >
286
+ <Menu.ItemLabel>Radio item 2</Menu.ItemLabel>
287
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
288
+ </Menu.RadioItem>
289
+ </Menu.Group>
290
+ <Menu.Separator />
291
+ <Menu.Group>
292
+ <Menu.GroupLabel>Controlled</Menu.GroupLabel>
293
+ <Menu.RadioItem
294
+ name="radio-controlled"
295
+ value="one"
296
+ checked={ radioValue === 'one' }
297
+ onChange={ onRadioChange }
298
+ >
299
+ <Menu.ItemLabel>Radio item 1</Menu.ItemLabel>
300
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
301
+ </Menu.RadioItem>
302
+ <Menu.RadioItem
303
+ name="radio-controlled"
304
+ value="two"
305
+ checked={ radioValue === 'two' }
306
+ onChange={ onRadioChange }
307
+ >
308
+ <Menu.ItemLabel>Radio item 2</Menu.ItemLabel>
309
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
310
+ </Menu.RadioItem>
311
+ </Menu.Group>
312
+ </Menu>
313
+ );
314
+ };
315
+ WithRadios.args = {
316
+ ...Default.args,
317
+ };
318
+
319
+ const modalOnTopOfMenuPopover = css`
320
+ && {
321
+ z-index: 1000000;
322
+ }
323
+ `;
324
+
325
+ // For more examples with `Modal`, check https://ariakit.org/examples/menu-wordpress-modal
326
+ export const WithModals: StoryFn< typeof Menu > = ( props ) => {
327
+ const [ isOuterModalOpen, setOuterModalOpen ] = useState( false );
328
+ const [ isInnerModalOpen, setInnerModalOpen ] = useState( false );
329
+
330
+ const cx = useCx();
331
+ const modalOverlayClassName = cx( modalOnTopOfMenuPopover );
332
+
333
+ return (
334
+ <>
335
+ <Menu { ...props }>
336
+ <Menu.Item
337
+ onClick={ () => setOuterModalOpen( true ) }
338
+ hideOnClick={ false }
339
+ >
340
+ <Menu.ItemLabel>Open outer modal</Menu.ItemLabel>
341
+ </Menu.Item>
342
+ <Menu.Item
343
+ onClick={ () => setInnerModalOpen( true ) }
344
+ hideOnClick={ false }
345
+ >
346
+ <Menu.ItemLabel>Open inner modal</Menu.ItemLabel>
347
+ </Menu.Item>
348
+ { isInnerModalOpen && (
349
+ <Modal
350
+ onRequestClose={ () => setInnerModalOpen( false ) }
351
+ overlayClassName={ modalOverlayClassName }
352
+ >
353
+ Modal&apos;s contents
354
+ <button onClick={ () => setInnerModalOpen( false ) }>
355
+ Close
356
+ </button>
357
+ </Modal>
358
+ ) }
359
+ </Menu>
360
+ { isOuterModalOpen && (
361
+ <Modal
362
+ onRequestClose={ () => setOuterModalOpen( false ) }
363
+ overlayClassName={ modalOverlayClassName }
364
+ >
365
+ Modal&apos;s contents
366
+ <button onClick={ () => setOuterModalOpen( false ) }>
367
+ Close
368
+ </button>
369
+ </Modal>
370
+ ) }
371
+ </>
372
+ );
373
+ };
374
+ WithModals.args = {
375
+ ...Default.args,
376
+ };
377
+
378
+ const ExampleSlotFill = createSlotFill( 'Example' );
379
+
380
+ const Slot = () => {
381
+ const menuContext = useContext( Menu.Context );
382
+
383
+ // Forwarding the content of the slot so that it can be used by the fill
384
+ const fillProps = useMemo(
385
+ () => ( {
386
+ forwardedContext: [
387
+ [ Menu.Context.Provider, { value: menuContext } ],
388
+ ],
389
+ } ),
390
+ [ menuContext ]
391
+ );
392
+
393
+ return (
394
+ <ExampleSlotFill.Slot
395
+ fillProps={ fillProps }
396
+ bubblesVirtually
397
+ style={ { display: 'contents' } }
398
+ />
399
+ );
400
+ };
401
+
402
+ type ForwardedContextTuple< P = {} > = [
403
+ React.ComponentType< React.PropsWithChildren< P > >,
404
+ P,
405
+ ];
406
+
407
+ const Fill = ( { children }: { children: React.ReactNode } ) => {
408
+ const innerMarkup = <>{ children }</>;
409
+
410
+ return (
411
+ <ExampleSlotFill.Fill>
412
+ { ( fillProps: { forwardedContext?: ForwardedContextTuple[] } ) => {
413
+ const { forwardedContext = [] } = fillProps;
414
+
415
+ return forwardedContext.reduce(
416
+ ( inner: JSX.Element, [ Provider, props ] ) => (
417
+ <Provider { ...props }>{ inner }</Provider>
418
+ ),
419
+ innerMarkup
420
+ );
421
+ } }
422
+ </ExampleSlotFill.Fill>
423
+ );
424
+ };
425
+
426
+ export const WithSlotFill: StoryFn< typeof Menu > = ( props ) => {
427
+ return (
428
+ <SlotFillProvider>
429
+ <Menu { ...props }>
430
+ <Menu.Item>
431
+ <Menu.ItemLabel>Item</Menu.ItemLabel>
432
+ </Menu.Item>
433
+ <Slot />
434
+ </Menu>
435
+
436
+ <Fill>
437
+ <Menu.Item>
438
+ <Menu.ItemLabel>Item from fill</Menu.ItemLabel>
439
+ </Menu.Item>
440
+ <Menu
441
+ trigger={
442
+ <Menu.Item>
443
+ <Menu.ItemLabel>Submenu from fill</Menu.ItemLabel>
444
+ </Menu.Item>
445
+ }
446
+ >
447
+ <Menu.Item>
448
+ <Menu.ItemLabel>Submenu item from fill</Menu.ItemLabel>
449
+ </Menu.Item>
450
+ </Menu>
451
+ </Fill>
452
+ </SlotFillProvider>
453
+ );
454
+ };
455
+ WithSlotFill.args = {
456
+ ...Default.args,
457
+ };
458
+
459
+ const toolbarVariantContextValue = {
460
+ Menu: {
461
+ variant: 'toolbar',
462
+ },
463
+ };
464
+ export const ToolbarVariant: StoryFn< typeof Menu > = ( props ) => (
465
+ // TODO: add toolbar
466
+ <ContextSystemProvider value={ toolbarVariantContextValue }>
467
+ <Menu { ...props }>
468
+ <Menu.Item>
469
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
470
+ </Menu.Item>
471
+ <Menu.Item>
472
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
473
+ </Menu.Item>
474
+ <Menu.Separator />
475
+ <Menu
476
+ trigger={
477
+ <Menu.Item>
478
+ <Menu.ItemLabel>Submenu trigger</Menu.ItemLabel>
479
+ </Menu.Item>
480
+ }
481
+ >
482
+ <Menu.Item>
483
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
484
+ </Menu.Item>
485
+ </Menu>
486
+ </Menu>
487
+ </ContextSystemProvider>
488
+ );
489
+ ToolbarVariant.args = {
490
+ ...Default.args,
491
+ };
492
+
493
+ export const InsideModal: StoryFn< typeof Menu > = ( props ) => {
494
+ const [ isModalOpen, setModalOpen ] = useState( false );
495
+ return (
496
+ <>
497
+ <Button
498
+ onClick={ () => setModalOpen( true ) }
499
+ __next40pxDefaultSize
500
+ variant="secondary"
501
+ >
502
+ Open modal
503
+ </Button>
504
+ { isModalOpen && (
505
+ <Modal onRequestClose={ () => setModalOpen( false ) }>
506
+ <Menu { ...props }>
507
+ <Menu.Item>
508
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
509
+ </Menu.Item>
510
+ <Menu.Item>
511
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
512
+ </Menu.Item>
513
+ <Menu.Separator />
514
+ <Menu
515
+ trigger={
516
+ <Menu.Item>
517
+ <Menu.ItemLabel>
518
+ Submenu trigger
519
+ </Menu.ItemLabel>
520
+ </Menu.Item>
521
+ }
522
+ >
523
+ <Menu.Item>
524
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
525
+ </Menu.Item>
526
+ </Menu>
527
+ </Menu>
528
+ <Button onClick={ () => setModalOpen( false ) }>
529
+ Close modal
530
+ </Button>
531
+ </Modal>
532
+ ) }
533
+ </>
534
+ );
535
+ };
536
+ InsideModal.args = {
537
+ ...Default.args,
538
+ };
539
+ InsideModal.parameters = {
540
+ docs: {
541
+ source: { type: 'code' },
542
+ },
543
+ };