@wordpress/components 28.10.0 → 28.11.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 (576) hide show
  1. package/CHANGELOG.md +35 -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 +12 -12
  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-token-field/index.js +0 -3
  34. package/build/form-token-field/index.js.map +1 -1
  35. package/build/form-token-field/suggestions-list.js +7 -3
  36. package/build/form-token-field/suggestions-list.js.map +1 -1
  37. package/build/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
  38. package/build/menu/checkbox-item.js.map +1 -0
  39. package/build/{dropdown-menu-v2 → menu}/context.js +2 -2
  40. package/build/menu/context.js.map +1 -0
  41. package/build/{dropdown-menu-v2 → menu}/group-label.js +5 -5
  42. package/build/menu/group-label.js.map +1 -0
  43. package/build/{dropdown-menu-v2 → menu}/group.js +5 -5
  44. package/build/menu/group.js.map +1 -0
  45. package/build/{dropdown-menu-v2 → menu}/index.js +38 -38
  46. package/build/menu/index.js.map +1 -0
  47. package/build/{dropdown-menu-v2 → menu}/item-help-text.js +3 -3
  48. package/build/menu/item-help-text.js.map +1 -0
  49. package/build/{dropdown-menu-v2 → menu}/item-label.js +3 -3
  50. package/build/menu/item-label.js.map +1 -0
  51. package/build/{dropdown-menu-v2 → menu}/item.js +7 -7
  52. package/build/menu/item.js.map +1 -0
  53. package/build/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
  54. package/build/menu/radio-item.js.map +1 -0
  55. package/build/{dropdown-menu-v2 → menu}/separator.js +6 -6
  56. package/build/menu/separator.js.map +1 -0
  57. package/build/menu/styles.js +150 -0
  58. package/build/menu/styles.js.map +1 -0
  59. package/build/menu/types.js.map +1 -0
  60. package/build/menu/use-temporary-focus-visible-fix.js.map +1 -0
  61. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  62. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  63. package/build/mobile/bottom-sheet/range-cell.native.js +1 -1
  64. package/build/mobile/bottom-sheet/range-cell.native.js.map +1 -1
  65. package/build/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  66. package/build/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  67. package/build/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  68. package/build/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  69. package/build/mobile/bottom-sheet-select-control/index.native.js +2 -2
  70. package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  71. package/build/mobile/color-settings/index.native.js +1 -3
  72. package/build/mobile/color-settings/index.native.js.map +1 -1
  73. package/build/mobile/color-settings/picker-screen.native.js +1 -3
  74. package/build/mobile/color-settings/picker-screen.native.js.map +1 -1
  75. package/build/mobile/image/index.native.js +1 -3
  76. package/build/mobile/image/index.native.js.map +1 -1
  77. package/build/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  78. package/build/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  79. package/build/mobile/link-picker/link-picker-results.native.js +2 -5
  80. package/build/mobile/link-picker/link-picker-results.native.js.map +1 -1
  81. package/build/mobile/link-picker/link-picker-screen.native.js +1 -3
  82. package/build/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  83. package/build/mobile/link-settings/index.native.js +6 -18
  84. package/build/mobile/link-settings/index.native.js.map +1 -1
  85. package/build/mobile/link-settings/link-settings-screen.native.js +1 -3
  86. package/build/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  87. package/build/mobile/segmented-control/index.native.js +2 -6
  88. package/build/mobile/segmented-control/index.native.js.map +1 -1
  89. package/build/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  90. package/build/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  91. package/build/navigation/index.js +1 -2
  92. package/build/navigation/index.js.map +1 -1
  93. package/build/navigation/item/use-navigation-tree-item.js +2 -2
  94. package/build/navigation/item/use-navigation-tree-item.js.map +1 -1
  95. package/build/navigation/menu/menu-title-search.js +2 -2
  96. package/build/navigation/menu/menu-title-search.js.map +1 -1
  97. package/build/navigation/menu/use-navigation-tree-menu.js +2 -2
  98. package/build/navigation/menu/use-navigation-tree-menu.js.map +1 -1
  99. package/build/palette-edit/index.js +4 -2
  100. package/build/palette-edit/index.js.map +1 -1
  101. package/build/palette-edit/styles.js +13 -28
  102. package/build/palette-edit/styles.js.map +1 -1
  103. package/build/private-apis.js +4 -4
  104. package/build/private-apis.js.map +1 -1
  105. package/build/radio-group/index.js +3 -1
  106. package/build/radio-group/index.js.map +1 -1
  107. package/build/sandbox/index.js +3 -6
  108. package/build/sandbox/index.js.map +1 -1
  109. package/build/sandbox/index.native.js +1 -3
  110. package/build/sandbox/index.native.js.map +1 -1
  111. package/build/search-control/index.native.js +1 -3
  112. package/build/search-control/index.native.js.map +1 -1
  113. package/build/slot-fill/bubbles-virtually/slot.js +1 -2
  114. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  115. package/build/slot-fill/fill.js +3 -6
  116. package/build/slot-fill/fill.js.map +1 -1
  117. package/build/spacer/hook.js +5 -3
  118. package/build/spacer/hook.js.map +1 -1
  119. package/build/tab-panel/index.js +4 -1
  120. package/build/tab-panel/index.js.map +1 -1
  121. package/build/tabs/index.js +48 -113
  122. package/build/tabs/index.js.map +1 -1
  123. package/build/tabs/styles.js +12 -12
  124. package/build/tabs/styles.js.map +1 -1
  125. package/build/tabs/tab.js +23 -6
  126. package/build/tabs/tab.js.map +1 -1
  127. package/build/tabs/tablist.js +24 -12
  128. package/build/tabs/tablist.js.map +1 -1
  129. package/build/tabs/types.js.map +1 -1
  130. package/build/toggle-group-control/toggle-group-control/component.js +2 -1
  131. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  132. package/build/toolbar/toolbar/index.js +3 -0
  133. package/build/toolbar/toolbar/index.js.map +1 -1
  134. package/build/tools-panel/tools-panel-header/component.js +1 -1
  135. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  136. package/build/tools-panel/tools-panel-item/hook.js +0 -2
  137. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  138. package/build/tooltip/index.native.js +5 -15
  139. package/build/tooltip/index.native.js.map +1 -1
  140. package/build/unit-control/index.native.js +2 -6
  141. package/build/unit-control/index.native.js.map +1 -1
  142. package/build/utils/deprecated-36px-size.js +27 -0
  143. package/build/utils/deprecated-36px-size.js.map +1 -0
  144. package/build/utils/element-rect.js +13 -2
  145. package/build/utils/element-rect.js.map +1 -1
  146. package/build/utils/hooks/use-animated-offset-rect.js +3 -2
  147. package/build/utils/hooks/use-animated-offset-rect.js.map +1 -1
  148. package/build/utils/hooks/use-update-effect.js +0 -2
  149. package/build/utils/hooks/use-update-effect.js.map +1 -1
  150. package/build-module/autocomplete/autocompleter-ui.js +2 -6
  151. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  152. package/build-module/autocomplete/autocompleter-ui.native.js +2 -4
  153. package/build-module/autocomplete/autocompleter-ui.native.js.map +1 -1
  154. package/build-module/autocomplete/index.js +4 -5
  155. package/build-module/autocomplete/index.js.map +1 -1
  156. package/build-module/base-control/types.js.map +1 -1
  157. package/build-module/border-box-control/border-box-control/component.js +1 -0
  158. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  159. package/build-module/border-box-control/border-box-control/hook.js +6 -0
  160. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  161. package/build-module/border-control/border-control/component.js +1 -0
  162. package/build-module/border-control/border-control/component.js.map +1 -1
  163. package/build-module/border-control/border-control/hook.js +7 -0
  164. package/build-module/border-control/border-control/hook.js.map +1 -1
  165. package/build-module/border-control/border-control-dropdown/component.js +12 -12
  166. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  167. package/build-module/color-palette/index.js +1 -1
  168. package/build-module/color-palette/index.js.map +1 -1
  169. package/build-module/color-palette/index.native.js +1 -2
  170. package/build-module/color-palette/index.native.js.map +1 -1
  171. package/build-module/color-picker/index.native.js +0 -1
  172. package/build-module/color-picker/index.native.js.map +1 -1
  173. package/build-module/composite/legacy/index.js +5 -2
  174. package/build-module/composite/legacy/index.js.map +1 -1
  175. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +1 -1
  176. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  177. package/build-module/date-time/date/index.js +0 -1
  178. package/build-module/date-time/date/index.js.map +1 -1
  179. package/build-module/font-size-picker/index.native.js +7 -7
  180. package/build-module/font-size-picker/index.native.js.map +1 -1
  181. package/build-module/form-token-field/index.js +0 -3
  182. package/build-module/form-token-field/index.js.map +1 -1
  183. package/build-module/form-token-field/suggestions-list.js +7 -3
  184. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  185. package/build-module/{dropdown-menu-v2 → menu}/checkbox-item.js +8 -8
  186. package/build-module/menu/checkbox-item.js.map +1 -0
  187. package/build-module/{dropdown-menu-v2 → menu}/context.js +1 -1
  188. package/build-module/menu/context.js.map +1 -0
  189. package/build-module/{dropdown-menu-v2 → menu}/group-label.js +5 -5
  190. package/build-module/menu/group-label.js.map +1 -0
  191. package/build-module/menu/group.js +21 -0
  192. package/build-module/menu/group.js.map +1 -0
  193. package/build-module/{dropdown-menu-v2 → menu}/index.js +46 -46
  194. package/build-module/menu/index.js.map +1 -0
  195. package/build-module/{dropdown-menu-v2 → menu}/item-help-text.js +2 -2
  196. package/build-module/menu/item-help-text.js.map +1 -0
  197. package/build-module/{dropdown-menu-v2 → menu}/item-label.js +2 -2
  198. package/build-module/menu/item-label.js.map +1 -0
  199. package/build-module/{dropdown-menu-v2 → menu}/item.js +7 -7
  200. package/build-module/menu/item.js.map +1 -0
  201. package/build-module/{dropdown-menu-v2 → menu}/radio-item.js +8 -8
  202. package/build-module/menu/radio-item.js.map +1 -0
  203. package/build-module/menu/separator.js +22 -0
  204. package/build-module/menu/separator.js.map +1 -0
  205. package/build-module/menu/styles.js +143 -0
  206. package/build-module/menu/styles.js.map +1 -0
  207. package/build-module/menu/types.js.map +1 -0
  208. package/build-module/menu/use-temporary-focus-visible-fix.js.map +1 -0
  209. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  210. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  211. package/build-module/mobile/bottom-sheet/range-cell.native.js +1 -1
  212. package/build-module/mobile/bottom-sheet/range-cell.native.js.map +1 -1
  213. package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  214. package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  215. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  216. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  217. package/build-module/mobile/bottom-sheet-select-control/index.native.js +2 -2
  218. package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
  219. package/build-module/mobile/color-settings/index.native.js +1 -3
  220. package/build-module/mobile/color-settings/index.native.js.map +1 -1
  221. package/build-module/mobile/color-settings/picker-screen.native.js +1 -3
  222. package/build-module/mobile/color-settings/picker-screen.native.js.map +1 -1
  223. package/build-module/mobile/image/index.native.js +1 -3
  224. package/build-module/mobile/image/index.native.js.map +1 -1
  225. package/build-module/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  226. package/build-module/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  227. package/build-module/mobile/link-picker/link-picker-results.native.js +2 -5
  228. package/build-module/mobile/link-picker/link-picker-results.native.js.map +1 -1
  229. package/build-module/mobile/link-picker/link-picker-screen.native.js +1 -3
  230. package/build-module/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  231. package/build-module/mobile/link-settings/index.native.js +6 -18
  232. package/build-module/mobile/link-settings/index.native.js.map +1 -1
  233. package/build-module/mobile/link-settings/link-settings-screen.native.js +1 -3
  234. package/build-module/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  235. package/build-module/mobile/segmented-control/index.native.js +2 -6
  236. package/build-module/mobile/segmented-control/index.native.js.map +1 -1
  237. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  238. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  239. package/build-module/navigation/index.js +1 -2
  240. package/build-module/navigation/index.js.map +1 -1
  241. package/build-module/navigation/item/use-navigation-tree-item.js +2 -2
  242. package/build-module/navigation/item/use-navigation-tree-item.js.map +1 -1
  243. package/build-module/navigation/menu/menu-title-search.js +2 -2
  244. package/build-module/navigation/menu/menu-title-search.js.map +1 -1
  245. package/build-module/navigation/menu/use-navigation-tree-menu.js +2 -2
  246. package/build-module/navigation/menu/use-navigation-tree-menu.js.map +1 -1
  247. package/build-module/palette-edit/index.js +6 -4
  248. package/build-module/palette-edit/index.js.map +1 -1
  249. package/build-module/palette-edit/styles.js +13 -29
  250. package/build-module/palette-edit/styles.js.map +1 -1
  251. package/build-module/private-apis.js +3 -3
  252. package/build-module/private-apis.js.map +1 -1
  253. package/build-module/radio-group/index.js +3 -1
  254. package/build-module/radio-group/index.js.map +1 -1
  255. package/build-module/sandbox/index.js +3 -6
  256. package/build-module/sandbox/index.js.map +1 -1
  257. package/build-module/sandbox/index.native.js +1 -3
  258. package/build-module/sandbox/index.native.js.map +1 -1
  259. package/build-module/search-control/index.native.js +1 -3
  260. package/build-module/search-control/index.native.js.map +1 -1
  261. package/build-module/slot-fill/bubbles-virtually/slot.js +1 -2
  262. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  263. package/build-module/slot-fill/fill.js +3 -6
  264. package/build-module/slot-fill/fill.js.map +1 -1
  265. package/build-module/spacer/hook.js +5 -3
  266. package/build-module/spacer/hook.js.map +1 -1
  267. package/build-module/tab-panel/index.js +4 -1
  268. package/build-module/tab-panel/index.js.map +1 -1
  269. package/build-module/tabs/index.js +47 -112
  270. package/build-module/tabs/index.js.map +1 -1
  271. package/build-module/tabs/styles.js +11 -11
  272. package/build-module/tabs/styles.js.map +1 -1
  273. package/build-module/tabs/tab.js +21 -6
  274. package/build-module/tabs/tab.js.map +1 -1
  275. package/build-module/tabs/tablist.js +24 -12
  276. package/build-module/tabs/tablist.js.map +1 -1
  277. package/build-module/tabs/types.js.map +1 -1
  278. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -1
  279. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  280. package/build-module/toolbar/toolbar/index.js +3 -0
  281. package/build-module/toolbar/toolbar/index.js.map +1 -1
  282. package/build-module/tools-panel/tools-panel-header/component.js +1 -1
  283. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  284. package/build-module/tools-panel/tools-panel-item/hook.js +0 -2
  285. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  286. package/build-module/tooltip/index.native.js +5 -15
  287. package/build-module/tooltip/index.native.js.map +1 -1
  288. package/build-module/unit-control/index.native.js +2 -6
  289. package/build-module/unit-control/index.native.js.map +1 -1
  290. package/build-module/utils/deprecated-36px-size.js +19 -0
  291. package/build-module/utils/deprecated-36px-size.js.map +1 -0
  292. package/build-module/utils/element-rect.js +13 -2
  293. package/build-module/utils/element-rect.js.map +1 -1
  294. package/build-module/utils/hooks/use-animated-offset-rect.js +3 -2
  295. package/build-module/utils/hooks/use-animated-offset-rect.js.map +1 -1
  296. package/build-module/utils/hooks/use-update-effect.js +0 -2
  297. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  298. package/build-style/style-rtl.css +6 -6
  299. package/build-style/style.css +6 -6
  300. package/build-types/animate/stories/index.story.d.ts.map +1 -1
  301. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  302. package/build-types/autocomplete/index.d.ts.map +1 -1
  303. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  304. package/build-types/base-control/types.d.ts +3 -0
  305. package/build-types/base-control/types.d.ts.map +1 -1
  306. package/build-types/border-box-control/border-box-control/component.d.ts +1 -0
  307. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  308. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  309. package/build-types/border-control/border-control/component.d.ts +1 -0
  310. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  311. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  312. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  313. package/build-types/border-control/stories/index.story.d.ts.map +1 -1
  314. package/build-types/button/stories/index.story.d.ts.map +1 -1
  315. package/build-types/card/stories/index.story.d.ts.map +1 -1
  316. package/build-types/composite/legacy/index.d.ts.map +1 -1
  317. package/build-types/composite/stories/index.story.d.ts.map +1 -1
  318. package/build-types/date-time/date/index.d.ts.map +1 -1
  319. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  320. package/build-types/draggable/stories/index.story.d.ts.map +1 -1
  321. package/build-types/form-token-field/index.d.ts.map +1 -1
  322. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  323. package/build-types/item-group/stories/index.story.d.ts +1 -1
  324. package/build-types/item-group/stories/index.story.d.ts.map +1 -1
  325. package/build-types/keyboard-shortcuts/stories/index.story.d.ts.map +1 -1
  326. package/build-types/menu/checkbox-item.d.ts +3 -0
  327. package/build-types/menu/checkbox-item.d.ts.map +1 -0
  328. package/build-types/menu/context.d.ts +6 -0
  329. package/build-types/menu/context.d.ts.map +1 -0
  330. package/build-types/menu/group-label.d.ts +3 -0
  331. package/build-types/menu/group-label.d.ts.map +1 -0
  332. package/build-types/menu/group.d.ts +3 -0
  333. package/build-types/menu/group.d.ts.map +1 -0
  334. package/build-types/menu/index.d.ts +40 -0
  335. package/build-types/menu/index.d.ts.map +1 -0
  336. package/build-types/{dropdown-menu-v2 → menu}/item-help-text.d.ts +1 -1
  337. package/build-types/menu/item-help-text.d.ts.map +1 -0
  338. package/build-types/{dropdown-menu-v2 → menu}/item-label.d.ts +1 -1
  339. package/build-types/menu/item-label.d.ts.map +1 -0
  340. package/build-types/menu/item.d.ts +3 -0
  341. package/build-types/menu/item.d.ts.map +1 -0
  342. package/build-types/menu/radio-item.d.ts +3 -0
  343. package/build-types/menu/radio-item.d.ts.map +1 -0
  344. package/build-types/menu/separator.d.ts +3 -0
  345. package/build-types/menu/separator.d.ts.map +1 -0
  346. package/build-types/menu/stories/index.story.d.ts +16 -0
  347. package/build-types/menu/stories/index.story.d.ts.map +1 -0
  348. package/build-types/{dropdown-menu-v2 → menu}/styles.d.ts +13 -13
  349. package/build-types/menu/styles.d.ts.map +1 -0
  350. package/build-types/menu/test/index.d.ts.map +1 -0
  351. package/build-types/{dropdown-menu-v2 → menu}/types.d.ts +22 -21
  352. package/build-types/menu/types.d.ts.map +1 -0
  353. package/build-types/menu/use-temporary-focus-visible-fix.d.ts.map +1 -0
  354. package/build-types/navigable-container/stories/navigable-menu.story.d.ts.map +1 -1
  355. package/build-types/navigable-container/stories/tabbable-container.story.d.ts.map +1 -1
  356. package/build-types/navigation/index.d.ts.map +1 -1
  357. package/build-types/palette-edit/index.d.ts.map +1 -1
  358. package/build-types/palette-edit/styles.d.ts +0 -256
  359. package/build-types/palette-edit/styles.d.ts.map +1 -1
  360. package/build-types/panel/stories/index.story.d.ts.map +1 -1
  361. package/build-types/radio-group/index.d.ts.map +1 -1
  362. package/build-types/resizable-box/stories/index.story.d.ts.map +1 -1
  363. package/build-types/sandbox/index.d.ts.map +1 -1
  364. package/build-types/sandbox/stories/index.story.d.ts.map +1 -1
  365. package/build-types/scroll-lock/stories/index.story.d.ts.map +1 -1
  366. package/build-types/shortcut/stories/index.story.d.ts.map +1 -1
  367. package/build-types/slot-fill/bubbles-virtually/slot.d.ts.map +1 -1
  368. package/build-types/slot-fill/fill.d.ts.map +1 -1
  369. package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
  370. package/build-types/spacer/hook.d.ts.map +1 -1
  371. package/build-types/tab-panel/index.d.ts.map +1 -1
  372. package/build-types/tab-panel/stories/index.story.d.ts.map +1 -1
  373. package/build-types/tabs/index.d.ts +21 -8
  374. package/build-types/tabs/index.d.ts.map +1 -1
  375. package/build-types/tabs/stories/index.story.d.ts +1 -1
  376. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  377. package/build-types/tabs/styles.d.ts +6 -3
  378. package/build-types/tabs/styles.d.ts.map +1 -1
  379. package/build-types/tabs/tab.d.ts +0 -3
  380. package/build-types/tabs/tab.d.ts.map +1 -1
  381. package/build-types/tabs/tablist.d.ts.map +1 -1
  382. package/build-types/tabs/types.d.ts +85 -48
  383. package/build-types/tabs/types.d.ts.map +1 -1
  384. package/build-types/theme/stories/index.story.d.ts.map +1 -1
  385. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  386. package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
  387. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  388. package/build-types/utils/deprecated-36px-size.d.ts +6 -0
  389. package/build-types/utils/deprecated-36px-size.d.ts.map +1 -0
  390. package/build-types/utils/element-rect.d.ts +1 -1
  391. package/build-types/utils/element-rect.d.ts.map +1 -1
  392. package/build-types/utils/hooks/use-animated-offset-rect.d.ts +8 -1
  393. package/build-types/utils/hooks/use-animated-offset-rect.d.ts.map +1 -1
  394. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  395. package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
  396. package/package.json +20 -19
  397. package/src/alignment-matrix-control/README.md +1 -2
  398. package/src/angle-picker-control/README.md +1 -2
  399. package/src/animate/stories/index.story.tsx +2 -1
  400. package/src/autocomplete/autocompleter-ui.native.js +2 -4
  401. package/src/autocomplete/autocompleter-ui.tsx +2 -6
  402. package/src/autocomplete/index.tsx +4 -5
  403. package/src/base-control/README.md +58 -47
  404. package/src/base-control/docs-manifest.json +12 -0
  405. package/src/base-control/stories/index.story.tsx +4 -0
  406. package/src/base-control/types.ts +3 -0
  407. package/src/border-box-control/border-box-control/README.md +1 -0
  408. package/src/border-box-control/border-box-control/component.tsx +1 -0
  409. package/src/border-box-control/border-box-control/hook.ts +7 -0
  410. package/src/border-box-control/stories/index.story.tsx +1 -0
  411. package/src/border-box-control/test/index.tsx +1 -0
  412. package/src/border-control/border-control/README.md +1 -0
  413. package/src/border-control/border-control/component.tsx +1 -0
  414. package/src/border-control/border-control/hook.ts +7 -1
  415. package/src/border-control/border-control-dropdown/component.tsx +24 -12
  416. package/src/border-control/stories/index.story.tsx +1 -0
  417. package/src/border-control/test/index.js +1 -0
  418. package/src/button/stories/index.story.tsx +2 -1
  419. package/src/card/stories/index.story.tsx +2 -1
  420. package/src/color-palette/index.native.js +1 -2
  421. package/src/color-palette/index.tsx +1 -1
  422. package/src/color-palette/style.scss +2 -4
  423. package/src/color-picker/index.native.js +0 -1
  424. package/src/composite/legacy/index.tsx +5 -2
  425. package/src/composite/stories/index.story.tsx +2 -1
  426. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
  427. package/src/date-time/date/index.tsx +0 -1
  428. package/src/disabled/stories/index.story.tsx +2 -1
  429. package/src/draggable/stories/index.story.tsx +2 -1
  430. package/src/font-size-picker/index.native.js +7 -7
  431. package/src/form-token-field/index.tsx +0 -3
  432. package/src/form-token-field/style.scss +4 -1
  433. package/src/form-token-field/suggestions-list.tsx +6 -0
  434. package/src/item-group/stories/index.story.tsx +8 -4
  435. package/src/keyboard-shortcuts/stories/index.story.tsx +2 -1
  436. package/src/{dropdown-menu-v2 → menu}/README.md +34 -34
  437. package/src/{dropdown-menu-v2 → menu}/checkbox-item.tsx +14 -14
  438. package/src/menu/context.tsx +13 -0
  439. package/src/{dropdown-menu-v2 → menu}/group-label.tsx +8 -8
  440. package/src/menu/group.tsx +26 -0
  441. package/src/{dropdown-menu-v2 → menu}/index.tsx +65 -70
  442. package/src/{dropdown-menu-v2 → menu}/item-help-text.tsx +3 -7
  443. package/src/{dropdown-menu-v2 → menu}/item-label.tsx +3 -7
  444. package/src/{dropdown-menu-v2 → menu}/item.tsx +13 -13
  445. package/src/{dropdown-menu-v2 → menu}/radio-item.tsx +14 -14
  446. package/src/menu/separator.tsx +27 -0
  447. package/src/menu/stories/index.story.tsx +542 -0
  448. package/src/{dropdown-menu-v2 → menu}/styles.ts +17 -17
  449. package/src/{dropdown-menu-v2 → menu}/test/index.tsx +145 -225
  450. package/src/{dropdown-menu-v2 → menu}/types.ts +24 -23
  451. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +3 -5
  452. package/src/mobile/bottom-sheet/range-cell.native.js +1 -1
  453. package/src/mobile/bottom-sheet/stepper-cell/index.native.js +1 -1
  454. package/src/mobile/bottom-sheet/sub-sheet/index.native.js +1 -3
  455. package/src/mobile/bottom-sheet-select-control/index.native.js +2 -2
  456. package/src/mobile/color-settings/index.native.js +1 -3
  457. package/src/mobile/color-settings/picker-screen.native.js +1 -3
  458. package/src/mobile/image/index.native.js +1 -3
  459. package/src/mobile/keyboard-avoiding-view/index.ios.js +1 -3
  460. package/src/mobile/link-picker/link-picker-results.native.js +2 -5
  461. package/src/mobile/link-picker/link-picker-screen.native.js +1 -3
  462. package/src/mobile/link-settings/index.native.js +6 -18
  463. package/src/mobile/link-settings/link-settings-screen.native.js +1 -3
  464. package/src/mobile/segmented-control/index.native.js +2 -6
  465. package/src/mobile/utils/use-unit-converter-to-mobile.native.js +2 -6
  466. package/src/navigable-container/stories/navigable-menu.story.tsx +2 -1
  467. package/src/navigable-container/stories/tabbable-container.story.tsx +2 -1
  468. package/src/navigation/index.tsx +1 -2
  469. package/src/navigation/item/use-navigation-tree-item.tsx +2 -2
  470. package/src/navigation/menu/menu-title-search.tsx +2 -2
  471. package/src/navigation/menu/use-navigation-tree-menu.tsx +2 -2
  472. package/src/palette-edit/index.tsx +4 -5
  473. package/src/palette-edit/styles.ts +1 -67
  474. package/src/panel/stories/index.story.tsx +2 -1
  475. package/src/private-apis.ts +3 -3
  476. package/src/radio-group/index.tsx +2 -0
  477. package/src/resizable-box/stories/index.story.tsx +2 -1
  478. package/src/sandbox/index.native.js +1 -3
  479. package/src/sandbox/index.tsx +3 -6
  480. package/src/sandbox/stories/index.story.tsx +2 -1
  481. package/src/scroll-lock/stories/index.story.tsx +2 -1
  482. package/src/search-control/index.native.js +1 -3
  483. package/src/shortcut/stories/index.story.tsx +2 -1
  484. package/src/slot-fill/bubbles-virtually/slot.tsx +1 -2
  485. package/src/slot-fill/fill.ts +3 -6
  486. package/src/slot-fill/stories/index.story.tsx +2 -1
  487. package/src/spacer/hook.ts +3 -2
  488. package/src/tab-panel/index.tsx +3 -0
  489. package/src/tab-panel/stories/index.story.tsx +2 -1
  490. package/src/tab-panel/style.scss +1 -3
  491. package/src/tabs/README.md +63 -21
  492. package/src/tabs/index.tsx +112 -189
  493. package/src/tabs/stories/index.story.tsx +5 -2
  494. package/src/tabs/styles.ts +13 -5
  495. package/src/tabs/tab.tsx +23 -3
  496. package/src/tabs/tablist.tsx +31 -15
  497. package/src/tabs/test/index.tsx +131 -118
  498. package/src/tabs/types.ts +89 -49
  499. package/src/theme/stories/index.story.tsx +2 -1
  500. package/src/toggle-group-control/toggle-group-control/component.tsx +1 -0
  501. package/src/toolbar/toolbar/index.tsx +3 -0
  502. package/src/tools-panel/tools-panel-header/component.tsx +1 -1
  503. package/src/tools-panel/tools-panel-item/hook.ts +0 -2
  504. package/src/tooltip/index.native.js +5 -15
  505. package/src/unit-control/index.native.js +2 -6
  506. package/src/utils/deprecated-36px-size.ts +24 -0
  507. package/src/utils/element-rect.ts +14 -2
  508. package/src/utils/hooks/use-animated-offset-rect.ts +13 -1
  509. package/src/utils/hooks/use-update-effect.js +0 -2
  510. package/src/visually-hidden/stories/index.story.tsx +2 -1
  511. package/tsconfig.tsbuildinfo +1 -1
  512. package/build/dropdown-menu-v2/checkbox-item.js.map +0 -1
  513. package/build/dropdown-menu-v2/context.js.map +0 -1
  514. package/build/dropdown-menu-v2/group-label.js.map +0 -1
  515. package/build/dropdown-menu-v2/group.js.map +0 -1
  516. package/build/dropdown-menu-v2/index.js.map +0 -1
  517. package/build/dropdown-menu-v2/item-help-text.js.map +0 -1
  518. package/build/dropdown-menu-v2/item-label.js.map +0 -1
  519. package/build/dropdown-menu-v2/item.js.map +0 -1
  520. package/build/dropdown-menu-v2/radio-item.js.map +0 -1
  521. package/build/dropdown-menu-v2/separator.js.map +0 -1
  522. package/build/dropdown-menu-v2/styles.js +0 -150
  523. package/build/dropdown-menu-v2/styles.js.map +0 -1
  524. package/build/dropdown-menu-v2/types.js.map +0 -1
  525. package/build/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
  526. package/build-module/dropdown-menu-v2/checkbox-item.js.map +0 -1
  527. package/build-module/dropdown-menu-v2/context.js.map +0 -1
  528. package/build-module/dropdown-menu-v2/group-label.js.map +0 -1
  529. package/build-module/dropdown-menu-v2/group.js +0 -21
  530. package/build-module/dropdown-menu-v2/group.js.map +0 -1
  531. package/build-module/dropdown-menu-v2/index.js.map +0 -1
  532. package/build-module/dropdown-menu-v2/item-help-text.js.map +0 -1
  533. package/build-module/dropdown-menu-v2/item-label.js.map +0 -1
  534. package/build-module/dropdown-menu-v2/item.js.map +0 -1
  535. package/build-module/dropdown-menu-v2/radio-item.js.map +0 -1
  536. package/build-module/dropdown-menu-v2/separator.js +0 -22
  537. package/build-module/dropdown-menu-v2/separator.js.map +0 -1
  538. package/build-module/dropdown-menu-v2/styles.js +0 -143
  539. package/build-module/dropdown-menu-v2/styles.js.map +0 -1
  540. package/build-module/dropdown-menu-v2/types.js.map +0 -1
  541. package/build-module/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +0 -1
  542. package/build-types/dropdown-menu-v2/checkbox-item.d.ts +0 -3
  543. package/build-types/dropdown-menu-v2/checkbox-item.d.ts.map +0 -1
  544. package/build-types/dropdown-menu-v2/context.d.ts +0 -6
  545. package/build-types/dropdown-menu-v2/context.d.ts.map +0 -1
  546. package/build-types/dropdown-menu-v2/group-label.d.ts +0 -3
  547. package/build-types/dropdown-menu-v2/group-label.d.ts.map +0 -1
  548. package/build-types/dropdown-menu-v2/group.d.ts +0 -3
  549. package/build-types/dropdown-menu-v2/group.d.ts.map +0 -1
  550. package/build-types/dropdown-menu-v2/index.d.ts +0 -40
  551. package/build-types/dropdown-menu-v2/index.d.ts.map +0 -1
  552. package/build-types/dropdown-menu-v2/item-help-text.d.ts.map +0 -1
  553. package/build-types/dropdown-menu-v2/item-label.d.ts.map +0 -1
  554. package/build-types/dropdown-menu-v2/item.d.ts +0 -3
  555. package/build-types/dropdown-menu-v2/item.d.ts.map +0 -1
  556. package/build-types/dropdown-menu-v2/radio-item.d.ts +0 -3
  557. package/build-types/dropdown-menu-v2/radio-item.d.ts.map +0 -1
  558. package/build-types/dropdown-menu-v2/separator.d.ts +0 -3
  559. package/build-types/dropdown-menu-v2/separator.d.ts.map +0 -1
  560. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +0 -16
  561. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +0 -1
  562. package/build-types/dropdown-menu-v2/styles.d.ts.map +0 -1
  563. package/build-types/dropdown-menu-v2/test/index.d.ts.map +0 -1
  564. package/build-types/dropdown-menu-v2/types.d.ts.map +0 -1
  565. package/build-types/dropdown-menu-v2/use-temporary-focus-visible-fix.d.ts.map +0 -1
  566. package/src/dropdown-menu-v2/context.tsx +0 -13
  567. package/src/dropdown-menu-v2/group.tsx +0 -26
  568. package/src/dropdown-menu-v2/separator.tsx +0 -27
  569. package/src/dropdown-menu-v2/stories/index.story.tsx +0 -639
  570. /package/build/{dropdown-menu-v2 → menu}/types.js +0 -0
  571. /package/build/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
  572. /package/build-module/{dropdown-menu-v2 → menu}/types.js +0 -0
  573. /package/build-module/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.js +0 -0
  574. /package/build-types/{dropdown-menu-v2 → menu}/test/index.d.ts +0 -0
  575. /package/build-types/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.d.ts +0 -0
  576. /package/src/{dropdown-menu-v2 → menu}/use-temporary-focus-visible-fix.ts +0 -0
@@ -0,0 +1,542 @@
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
+ title: 'Components (Experimental)/Menu',
26
+ component: Menu,
27
+ subcomponents: {
28
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
29
+ Item: Menu.Item,
30
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
31
+ CheckboxItem: Menu.CheckboxItem,
32
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
33
+ Group: Menu.Group,
34
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
35
+ GroupLabel: Menu.GroupLabel,
36
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
37
+ Separator: Menu.Separator,
38
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
39
+ Context: Menu.Context,
40
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
41
+ RadioItem: Menu.RadioItem,
42
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
43
+ ItemLabel: Menu.ItemLabel,
44
+ // @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
45
+ ItemHelpText: Menu.ItemHelpText,
46
+ },
47
+ argTypes: {
48
+ children: { control: { type: null } },
49
+ trigger: { control: { type: null } },
50
+ },
51
+ tags: [ 'status-private' ],
52
+ parameters: {
53
+ actions: { argTypesRegex: '^on.*' },
54
+ controls: { expanded: true },
55
+ docs: {
56
+ canvas: { sourceState: 'shown' },
57
+ source: { excludeDecorators: true },
58
+ },
59
+ },
60
+ };
61
+ export default meta;
62
+
63
+ export const Default: StoryFn< typeof Menu > = ( props ) => (
64
+ <Menu { ...props }>
65
+ <Menu.Item>
66
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
67
+ </Menu.Item>
68
+ <Menu.Item>
69
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
70
+ <Menu.ItemHelpText>Help text</Menu.ItemHelpText>
71
+ </Menu.Item>
72
+ <Menu.Item>
73
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
74
+ <Menu.ItemHelpText>
75
+ The menu item help text is automatically truncated when there
76
+ are more than two lines of text
77
+ </Menu.ItemHelpText>
78
+ </Menu.Item>
79
+ <Menu.Item hideOnClick={ false }>
80
+ <Menu.ItemLabel>Label</Menu.ItemLabel>
81
+ <Menu.ItemHelpText>
82
+ This item doesn&apos;t close the menu on click
83
+ </Menu.ItemHelpText>
84
+ </Menu.Item>
85
+ <Menu.Item disabled>Disabled item</Menu.Item>
86
+ <Menu.Separator />
87
+ <Menu.Group>
88
+ <Menu.GroupLabel>Group label</Menu.GroupLabel>
89
+ <Menu.Item prefix={ <Icon icon={ customLink } size={ 24 } /> }>
90
+ <Menu.ItemLabel>With prefix</Menu.ItemLabel>
91
+ </Menu.Item>
92
+ <Menu.Item suffix="⌘S">With suffix</Menu.Item>
93
+ <Menu.Item
94
+ disabled
95
+ prefix={ <Icon icon={ formatCapitalize } size={ 24 } /> }
96
+ suffix="⌥⌘T"
97
+ >
98
+ <Menu.ItemLabel>Disabled with prefix and suffix</Menu.ItemLabel>
99
+ <Menu.ItemHelpText>And help text</Menu.ItemHelpText>
100
+ </Menu.Item>
101
+ </Menu.Group>
102
+ </Menu>
103
+ );
104
+ Default.args = {
105
+ trigger: (
106
+ <Button __next40pxDefaultSize variant="secondary">
107
+ Open menu
108
+ </Button>
109
+ ),
110
+ };
111
+
112
+ export const WithSubmenu: StoryFn< typeof Menu > = ( props ) => (
113
+ <Menu { ...props }>
114
+ <Menu.Item>Level 1 item</Menu.Item>
115
+ <Menu
116
+ trigger={
117
+ <Menu.Item suffix="Suffix">
118
+ <Menu.ItemLabel>
119
+ Submenu trigger item with a long label
120
+ </Menu.ItemLabel>
121
+ </Menu.Item>
122
+ }
123
+ >
124
+ <Menu.Item>
125
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
126
+ </Menu.Item>
127
+ <Menu.Item>
128
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
129
+ </Menu.Item>
130
+ <Menu
131
+ trigger={
132
+ <Menu.Item>
133
+ <Menu.ItemLabel>Submenu trigger</Menu.ItemLabel>
134
+ </Menu.Item>
135
+ }
136
+ >
137
+ <Menu.Item>
138
+ <Menu.ItemLabel>Level 3 item</Menu.ItemLabel>
139
+ </Menu.Item>
140
+ <Menu.Item>
141
+ <Menu.ItemLabel>Level 3 item</Menu.ItemLabel>
142
+ </Menu.Item>
143
+ </Menu>
144
+ </Menu>
145
+ </Menu>
146
+ );
147
+ WithSubmenu.args = {
148
+ ...Default.args,
149
+ };
150
+
151
+ export const WithCheckboxes: StoryFn< typeof Menu > = ( props ) => {
152
+ const [ isAChecked, setAChecked ] = useState( false );
153
+ const [ isBChecked, setBChecked ] = useState( true );
154
+ const [ multipleCheckboxesValue, setMultipleCheckboxesValue ] = useState<
155
+ string[]
156
+ >( [ 'b' ] );
157
+
158
+ const onMultipleCheckboxesCheckedChange: React.ComponentProps<
159
+ typeof Menu.CheckboxItem
160
+ >[ 'onChange' ] = ( e ) => {
161
+ setMultipleCheckboxesValue( ( prevValues ) => {
162
+ if ( prevValues.includes( e.target.value ) ) {
163
+ return prevValues.filter( ( val ) => val !== e.target.value );
164
+ }
165
+ return [ ...prevValues, e.target.value ];
166
+ } );
167
+ };
168
+
169
+ return (
170
+ <Menu { ...props }>
171
+ <Menu.Group>
172
+ <Menu.GroupLabel>
173
+ Single selection, uncontrolled
174
+ </Menu.GroupLabel>
175
+ <Menu.CheckboxItem
176
+ name="checkbox-individual-uncontrolled-a"
177
+ value="a"
178
+ suffix="⌥⌘T"
179
+ >
180
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
181
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
182
+ </Menu.CheckboxItem>
183
+ <Menu.CheckboxItem
184
+ name="checkbox-individual-uncontrolled-b"
185
+ value="b"
186
+ defaultChecked
187
+ >
188
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
189
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
190
+ </Menu.CheckboxItem>
191
+ </Menu.Group>
192
+ <Menu.Separator />
193
+ <Menu.Group>
194
+ <Menu.GroupLabel>Single selection, controlled</Menu.GroupLabel>
195
+ <Menu.CheckboxItem
196
+ name="checkbox-individual-controlled-a"
197
+ value="a"
198
+ checked={ isAChecked }
199
+ onChange={ ( e ) => setAChecked( e.target.checked ) }
200
+ >
201
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
202
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
203
+ </Menu.CheckboxItem>
204
+ <Menu.CheckboxItem
205
+ name="checkbox-individual-controlled-b"
206
+ value="b"
207
+ checked={ isBChecked }
208
+ onChange={ ( e ) => setBChecked( e.target.checked ) }
209
+ >
210
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
211
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
212
+ </Menu.CheckboxItem>
213
+ </Menu.Group>
214
+ <Menu.Separator />
215
+ <Menu.Group>
216
+ <Menu.GroupLabel>
217
+ Multiple selection, uncontrolled
218
+ </Menu.GroupLabel>
219
+ <Menu.CheckboxItem
220
+ name="checkbox-multiple-uncontrolled"
221
+ value="a"
222
+ >
223
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
224
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
225
+ </Menu.CheckboxItem>
226
+ <Menu.CheckboxItem
227
+ name="checkbox-multiple-uncontrolled"
228
+ value="b"
229
+ defaultChecked
230
+ >
231
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
232
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
233
+ </Menu.CheckboxItem>
234
+ </Menu.Group>
235
+ <Menu.Separator />
236
+ <Menu.Group>
237
+ <Menu.GroupLabel>
238
+ Multiple selection, controlled
239
+ </Menu.GroupLabel>
240
+ <Menu.CheckboxItem
241
+ name="checkbox-multiple-controlled"
242
+ value="a"
243
+ checked={ multipleCheckboxesValue.includes( 'a' ) }
244
+ onChange={ onMultipleCheckboxesCheckedChange }
245
+ >
246
+ <Menu.ItemLabel>Checkbox item A</Menu.ItemLabel>
247
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
248
+ </Menu.CheckboxItem>
249
+ <Menu.CheckboxItem
250
+ name="checkbox-multiple-controlled"
251
+ value="b"
252
+ checked={ multipleCheckboxesValue.includes( 'b' ) }
253
+ onChange={ onMultipleCheckboxesCheckedChange }
254
+ >
255
+ <Menu.ItemLabel>Checkbox item B</Menu.ItemLabel>
256
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
257
+ </Menu.CheckboxItem>
258
+ </Menu.Group>
259
+ </Menu>
260
+ );
261
+ };
262
+ WithCheckboxes.args = {
263
+ ...Default.args,
264
+ };
265
+
266
+ export const WithRadios: StoryFn< typeof Menu > = ( props ) => {
267
+ const [ radioValue, setRadioValue ] = useState( 'two' );
268
+ const onRadioChange: React.ComponentProps<
269
+ typeof Menu.RadioItem
270
+ >[ 'onChange' ] = ( e ) => setRadioValue( e.target.value );
271
+
272
+ return (
273
+ <Menu { ...props }>
274
+ <Menu.Group>
275
+ <Menu.GroupLabel>Uncontrolled</Menu.GroupLabel>
276
+ <Menu.RadioItem name="radio-uncontrolled" value="one">
277
+ <Menu.ItemLabel>Radio item 1</Menu.ItemLabel>
278
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
279
+ </Menu.RadioItem>
280
+ <Menu.RadioItem
281
+ name="radio-uncontrolled"
282
+ value="two"
283
+ defaultChecked
284
+ >
285
+ <Menu.ItemLabel>Radio item 2</Menu.ItemLabel>
286
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
287
+ </Menu.RadioItem>
288
+ </Menu.Group>
289
+ <Menu.Separator />
290
+ <Menu.Group>
291
+ <Menu.GroupLabel>Controlled</Menu.GroupLabel>
292
+ <Menu.RadioItem
293
+ name="radio-controlled"
294
+ value="one"
295
+ checked={ radioValue === 'one' }
296
+ onChange={ onRadioChange }
297
+ >
298
+ <Menu.ItemLabel>Radio item 1</Menu.ItemLabel>
299
+ <Menu.ItemHelpText>Initially unchecked</Menu.ItemHelpText>
300
+ </Menu.RadioItem>
301
+ <Menu.RadioItem
302
+ name="radio-controlled"
303
+ value="two"
304
+ checked={ radioValue === 'two' }
305
+ onChange={ onRadioChange }
306
+ >
307
+ <Menu.ItemLabel>Radio item 2</Menu.ItemLabel>
308
+ <Menu.ItemHelpText>Initially checked</Menu.ItemHelpText>
309
+ </Menu.RadioItem>
310
+ </Menu.Group>
311
+ </Menu>
312
+ );
313
+ };
314
+ WithRadios.args = {
315
+ ...Default.args,
316
+ };
317
+
318
+ const modalOnTopOfMenuPopover = css`
319
+ && {
320
+ z-index: 1000000;
321
+ }
322
+ `;
323
+
324
+ // For more examples with `Modal`, check https://ariakit.org/examples/menu-wordpress-modal
325
+ export const WithModals: StoryFn< typeof Menu > = ( props ) => {
326
+ const [ isOuterModalOpen, setOuterModalOpen ] = useState( false );
327
+ const [ isInnerModalOpen, setInnerModalOpen ] = useState( false );
328
+
329
+ const cx = useCx();
330
+ const modalOverlayClassName = cx( modalOnTopOfMenuPopover );
331
+
332
+ return (
333
+ <>
334
+ <Menu { ...props }>
335
+ <Menu.Item
336
+ onClick={ () => setOuterModalOpen( true ) }
337
+ hideOnClick={ false }
338
+ >
339
+ <Menu.ItemLabel>Open outer modal</Menu.ItemLabel>
340
+ </Menu.Item>
341
+ <Menu.Item
342
+ onClick={ () => setInnerModalOpen( true ) }
343
+ hideOnClick={ false }
344
+ >
345
+ <Menu.ItemLabel>Open inner modal</Menu.ItemLabel>
346
+ </Menu.Item>
347
+ { isInnerModalOpen && (
348
+ <Modal
349
+ onRequestClose={ () => setInnerModalOpen( false ) }
350
+ overlayClassName={ modalOverlayClassName }
351
+ >
352
+ Modal&apos;s contents
353
+ <button onClick={ () => setInnerModalOpen( false ) }>
354
+ Close
355
+ </button>
356
+ </Modal>
357
+ ) }
358
+ </Menu>
359
+ { isOuterModalOpen && (
360
+ <Modal
361
+ onRequestClose={ () => setOuterModalOpen( false ) }
362
+ overlayClassName={ modalOverlayClassName }
363
+ >
364
+ Modal&apos;s contents
365
+ <button onClick={ () => setOuterModalOpen( false ) }>
366
+ Close
367
+ </button>
368
+ </Modal>
369
+ ) }
370
+ </>
371
+ );
372
+ };
373
+ WithModals.args = {
374
+ ...Default.args,
375
+ };
376
+
377
+ const ExampleSlotFill = createSlotFill( 'Example' );
378
+
379
+ const Slot = () => {
380
+ const menuContext = useContext( Menu.Context );
381
+
382
+ // Forwarding the content of the slot so that it can be used by the fill
383
+ const fillProps = useMemo(
384
+ () => ( {
385
+ forwardedContext: [
386
+ [ Menu.Context.Provider, { value: menuContext } ],
387
+ ],
388
+ } ),
389
+ [ menuContext ]
390
+ );
391
+
392
+ return (
393
+ <ExampleSlotFill.Slot
394
+ fillProps={ fillProps }
395
+ bubblesVirtually
396
+ style={ { display: 'contents' } }
397
+ />
398
+ );
399
+ };
400
+
401
+ type ForwardedContextTuple< P = {} > = [
402
+ React.ComponentType< React.PropsWithChildren< P > >,
403
+ P,
404
+ ];
405
+
406
+ const Fill = ( { children }: { children: React.ReactNode } ) => {
407
+ const innerMarkup = <>{ children }</>;
408
+
409
+ return (
410
+ <ExampleSlotFill.Fill>
411
+ { ( fillProps: { forwardedContext?: ForwardedContextTuple[] } ) => {
412
+ const { forwardedContext = [] } = fillProps;
413
+
414
+ return forwardedContext.reduce(
415
+ ( inner: JSX.Element, [ Provider, props ] ) => (
416
+ <Provider { ...props }>{ inner }</Provider>
417
+ ),
418
+ innerMarkup
419
+ );
420
+ } }
421
+ </ExampleSlotFill.Fill>
422
+ );
423
+ };
424
+
425
+ export const WithSlotFill: StoryFn< typeof Menu > = ( props ) => {
426
+ return (
427
+ <SlotFillProvider>
428
+ <Menu { ...props }>
429
+ <Menu.Item>
430
+ <Menu.ItemLabel>Item</Menu.ItemLabel>
431
+ </Menu.Item>
432
+ <Slot />
433
+ </Menu>
434
+
435
+ <Fill>
436
+ <Menu.Item>
437
+ <Menu.ItemLabel>Item from fill</Menu.ItemLabel>
438
+ </Menu.Item>
439
+ <Menu
440
+ trigger={
441
+ <Menu.Item>
442
+ <Menu.ItemLabel>Submenu from fill</Menu.ItemLabel>
443
+ </Menu.Item>
444
+ }
445
+ >
446
+ <Menu.Item>
447
+ <Menu.ItemLabel>Submenu item from fill</Menu.ItemLabel>
448
+ </Menu.Item>
449
+ </Menu>
450
+ </Fill>
451
+ </SlotFillProvider>
452
+ );
453
+ };
454
+ WithSlotFill.args = {
455
+ ...Default.args,
456
+ };
457
+
458
+ const toolbarVariantContextValue = {
459
+ Menu: {
460
+ variant: 'toolbar',
461
+ },
462
+ };
463
+ export const ToolbarVariant: StoryFn< typeof Menu > = ( props ) => (
464
+ // TODO: add toolbar
465
+ <ContextSystemProvider value={ toolbarVariantContextValue }>
466
+ <Menu { ...props }>
467
+ <Menu.Item>
468
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
469
+ </Menu.Item>
470
+ <Menu.Item>
471
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
472
+ </Menu.Item>
473
+ <Menu.Separator />
474
+ <Menu
475
+ trigger={
476
+ <Menu.Item>
477
+ <Menu.ItemLabel>Submenu trigger</Menu.ItemLabel>
478
+ </Menu.Item>
479
+ }
480
+ >
481
+ <Menu.Item>
482
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
483
+ </Menu.Item>
484
+ </Menu>
485
+ </Menu>
486
+ </ContextSystemProvider>
487
+ );
488
+ ToolbarVariant.args = {
489
+ ...Default.args,
490
+ };
491
+
492
+ export const InsideModal: StoryFn< typeof Menu > = ( props ) => {
493
+ const [ isModalOpen, setModalOpen ] = useState( false );
494
+ return (
495
+ <>
496
+ <Button
497
+ onClick={ () => setModalOpen( true ) }
498
+ __next40pxDefaultSize
499
+ variant="secondary"
500
+ >
501
+ Open modal
502
+ </Button>
503
+ { isModalOpen && (
504
+ <Modal onRequestClose={ () => setModalOpen( false ) }>
505
+ <Menu { ...props }>
506
+ <Menu.Item>
507
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
508
+ </Menu.Item>
509
+ <Menu.Item>
510
+ <Menu.ItemLabel>Level 1 item</Menu.ItemLabel>
511
+ </Menu.Item>
512
+ <Menu.Separator />
513
+ <Menu
514
+ trigger={
515
+ <Menu.Item>
516
+ <Menu.ItemLabel>
517
+ Submenu trigger
518
+ </Menu.ItemLabel>
519
+ </Menu.Item>
520
+ }
521
+ >
522
+ <Menu.Item>
523
+ <Menu.ItemLabel>Level 2 item</Menu.ItemLabel>
524
+ </Menu.Item>
525
+ </Menu>
526
+ </Menu>
527
+ <Button onClick={ () => setModalOpen( false ) }>
528
+ Close modal
529
+ </Button>
530
+ </Modal>
531
+ ) }
532
+ </>
533
+ );
534
+ };
535
+ InsideModal.args = {
536
+ ...Default.args,
537
+ };
538
+ InsideModal.parameters = {
539
+ docs: {
540
+ source: { type: 'code' },
541
+ },
542
+ };
@@ -12,7 +12,7 @@ import { COLORS, font, rtl, CONFIG } from '../utils';
12
12
  import { space } from '../utils/space';
13
13
  import Icon from '../icon';
14
14
  import { Truncate } from '../truncate';
15
- import type { DropdownMenuContext } from './types';
15
+ import type { MenuContext } from './types';
16
16
 
17
17
  const ANIMATION_PARAMS = {
18
18
  SCALE_AMOUNT_OUTER: 0.82,
@@ -43,7 +43,7 @@ const TOOLBAR_VARIANT_BOX_SHADOW = `0 0 0 ${ CONFIG.borderWidth } ${ TOOLBAR_VAR
43
43
  const GRID_TEMPLATE_COLS = 'minmax( 0, max-content ) 1fr';
44
44
 
45
45
  export const MenuPopoverOuterWrapper = styled.div<
46
- Pick< DropdownMenuContext, 'variant' >
46
+ Pick< MenuContext, 'variant' >
47
47
  >`
48
48
  position: relative;
49
49
 
@@ -229,15 +229,15 @@ const baseItem = css`
229
229
  }
230
230
  `;
231
231
 
232
- export const DropdownMenuItem = styled( Ariakit.MenuItem )`
232
+ export const MenuItem = styled( Ariakit.MenuItem )`
233
233
  ${ baseItem };
234
234
  `;
235
235
 
236
- export const DropdownMenuCheckboxItem = styled( Ariakit.MenuItemCheckbox )`
236
+ export const MenuCheckboxItem = styled( Ariakit.MenuItemCheckbox )`
237
237
  ${ baseItem };
238
238
  `;
239
239
 
240
- export const DropdownMenuRadioItem = styled( Ariakit.MenuItemRadio )`
240
+ export const MenuRadioItem = styled( Ariakit.MenuItemRadio )`
241
241
  ${ baseItem };
242
242
  `;
243
243
 
@@ -249,14 +249,14 @@ export const ItemPrefixWrapper = styled.span`
249
249
  * Even when the item is not checked, occupy the same screen space to avoid
250
250
  * the space collapside when no items are checked.
251
251
  */
252
- ${ DropdownMenuCheckboxItem } > &,
253
- ${ DropdownMenuRadioItem } > & {
252
+ ${ MenuCheckboxItem } > &,
253
+ ${ MenuRadioItem } > & {
254
254
  /* Same width as the check icons */
255
255
  min-width: ${ space( 6 ) };
256
256
  }
257
257
 
258
- ${ DropdownMenuCheckboxItem } > &,
259
- ${ DropdownMenuRadioItem } > &,
258
+ ${ MenuCheckboxItem } > &,
259
+ ${ MenuRadioItem } > &,
260
260
  &:not( :empty ) {
261
261
  margin-inline-end: ${ space( 2 ) };
262
262
  }
@@ -278,7 +278,7 @@ export const ItemPrefixWrapper = styled.span`
278
278
  }
279
279
  `;
280
280
 
281
- export const DropdownMenuItemContentWrapper = styled.div`
281
+ export const MenuItemContentWrapper = styled.div`
282
282
  /*
283
283
  * Always occupy the second column, since the first column
284
284
  * is taken by the prefix wrapper (when displayed).
@@ -293,7 +293,7 @@ export const DropdownMenuItemContentWrapper = styled.div`
293
293
  pointer-events: none;
294
294
  `;
295
295
 
296
- export const DropdownMenuItemChildrenWrapper = styled.div`
296
+ export const MenuItemChildrenWrapper = styled.div`
297
297
  flex: 1;
298
298
 
299
299
  display: inline-flex;
@@ -324,12 +324,12 @@ export const ItemSuffixWrapper = styled.span`
324
324
  }
325
325
  `;
326
326
 
327
- export const DropdownMenuGroup = styled( Ariakit.MenuGroup )`
327
+ export const MenuGroup = styled( Ariakit.MenuGroup )`
328
328
  /* Ignore this element when calculating the layout. Useful for subgrid */
329
329
  display: contents;
330
330
  `;
331
331
 
332
- export const DropdownMenuGroupLabel = styled( Ariakit.MenuGroupLabel )`
332
+ export const MenuGroupLabel = styled( Ariakit.MenuGroupLabel )`
333
333
  /* Occupy the width of all grid columns (ie. full width) */
334
334
  grid-column: 1 / -1;
335
335
 
@@ -338,8 +338,8 @@ export const DropdownMenuGroupLabel = styled( Ariakit.MenuGroupLabel )`
338
338
  padding-inline: ${ ITEM_PADDING_INLINE };
339
339
  `;
340
340
 
341
- export const DropdownMenuSeparator = styled( Ariakit.MenuSeparator )<
342
- Pick< DropdownMenuContext, 'variant' >
341
+ export const MenuSeparator = styled( Ariakit.MenuSeparator )<
342
+ Pick< MenuContext, 'variant' >
343
343
  >`
344
344
  /* Occupy the width of all grid columns (ie. full width) */
345
345
  grid-column: 1 / -1;
@@ -370,13 +370,13 @@ export const SubmenuChevronIcon = styled( Icon )`
370
370
  ) };
371
371
  `;
372
372
 
373
- export const DropdownMenuItemLabel = styled( Truncate )`
373
+ export const MenuItemLabel = styled( Truncate )`
374
374
  font-size: ${ font( 'default.fontSize' ) };
375
375
  line-height: 20px;
376
376
  color: inherit;
377
377
  `;
378
378
 
379
- export const DropdownMenuItemHelpText = styled( Truncate )`
379
+ export const MenuItemHelpText = styled( Truncate )`
380
380
  font-size: ${ font( 'helpText.fontSize' ) };
381
381
  line-height: 16px;
382
382
  color: ${ LIGHTER_TEXT_COLOR };