@primer/react-brand 0.71.1-rc.ee7cd7e2 → 0.72.0-rc.68373c92

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 (373) hide show
  1. package/docs/components/ActionMenu/index.md +8 -8
  2. package/docs/index.md +2 -2
  3. package/esm/ActionMenu/ActionMenu.d.ts +3 -1
  4. package/esm/ActionMenu/ActionMenu.d.ts.map +1 -1
  5. package/esm/ActionMenu/ActionMenu.js +62 -47
  6. package/esm/ActionMenu/ActionMenu.js.map +1 -1
  7. package/lib/ActionMenu/ActionMenu.d.ts +3 -1
  8. package/lib/css/main.css +68 -68
  9. package/lib/design-tokens/css/tokens/base/colors/color-scales-with-modes.css +1 -1
  10. package/lib/design-tokens/css/tokens/base/colors/light.css +1 -1
  11. package/lib/design-tokens/css/tokens/base/size/size.css +1 -1
  12. package/lib/design-tokens/css/tokens/base/typography/typography.css +1 -1
  13. package/lib/design-tokens/css/tokens/functional/animation/base.css +1 -1
  14. package/lib/design-tokens/css/tokens/functional/colors/global-with-modes.css +1 -1
  15. package/lib/design-tokens/css/tokens/functional/colors/global.css +1 -1
  16. package/lib/design-tokens/css/tokens/functional/components/accordion/colors-with-modes.css +1 -1
  17. package/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css +1 -1
  18. package/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css +1 -1
  19. package/lib/design-tokens/css/tokens/functional/components/bento/base.css +1 -1
  20. package/lib/design-tokens/css/tokens/functional/components/blinking-cursor/colors-with-modes.css +1 -1
  21. package/lib/design-tokens/css/tokens/functional/components/breadcrumbs/colors-with-modes.css +1 -1
  22. package/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes.css +1 -1
  23. package/lib/design-tokens/css/tokens/functional/components/card/base.css +1 -1
  24. package/lib/design-tokens/css/tokens/functional/components/card/colors-with-modes.css +1 -1
  25. package/lib/design-tokens/css/tokens/functional/components/card/colors.css +1 -1
  26. package/lib/design-tokens/css/tokens/functional/components/comparison-table/colors-with-modes.css +1 -1
  27. package/lib/design-tokens/css/tokens/functional/components/comparison-table/comparison-table.css +1 -1
  28. package/lib/design-tokens/css/tokens/functional/components/control/colors-with-modes.css +1 -1
  29. package/lib/design-tokens/css/tokens/functional/components/cta-banner/colors-with-modes.css +1 -1
  30. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/colors-with-modes.css +1 -1
  31. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/eyebrow-banner.css +1 -1
  32. package/lib/design-tokens/css/tokens/functional/components/faq/base.css +1 -1
  33. package/lib/design-tokens/css/tokens/functional/components/faq/colors-with-modes.css +1 -1
  34. package/lib/design-tokens/css/tokens/functional/components/faq/colors.css +1 -1
  35. package/lib/design-tokens/css/tokens/functional/components/faq/faq.css +1 -1
  36. package/lib/design-tokens/css/tokens/functional/components/footer/colors-with-modes.css +1 -1
  37. package/lib/design-tokens/css/tokens/functional/components/footer/colors.css +1 -1
  38. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/base.css +1 -1
  39. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/colors-with-modes.css +1 -1
  40. package/lib/design-tokens/css/tokens/functional/components/grid/colors-with-modes.css +1 -1
  41. package/lib/design-tokens/css/tokens/functional/components/grid/colors.css +1 -1
  42. package/lib/design-tokens/css/tokens/functional/components/grid/grid.css +1 -1
  43. package/lib/design-tokens/css/tokens/functional/components/hero/base.css +1 -1
  44. package/lib/design-tokens/css/tokens/functional/components/icon/colors-with-modes.css +1 -1
  45. package/lib/design-tokens/css/tokens/functional/components/icon/colors.css +1 -1
  46. package/lib/design-tokens/css/tokens/functional/components/ide/base.css +1 -1
  47. package/lib/design-tokens/css/tokens/functional/components/ide/colors-with-modes.css +1 -1
  48. package/lib/design-tokens/css/tokens/functional/components/image/base.css +1 -1
  49. package/lib/design-tokens/css/tokens/functional/components/inline-link/base.css +1 -1
  50. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors-with-modes.css +1 -1
  51. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors.css +1 -1
  52. package/lib/design-tokens/css/tokens/functional/components/label/colors-with-modes.css +1 -1
  53. package/lib/design-tokens/css/tokens/functional/components/label/colors.css +1 -1
  54. package/lib/design-tokens/css/tokens/functional/components/link/colors-with-modes.css +1 -1
  55. package/lib/design-tokens/css/tokens/functional/components/link/colors.css +1 -1
  56. package/lib/design-tokens/css/tokens/functional/components/logosuite/base.css +1 -1
  57. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors-with-modes.css +1 -1
  58. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors.css +1 -1
  59. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors-with-modes.css +1 -1
  60. package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors.css +1 -1
  61. package/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes.css +1 -1
  62. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors-with-modes.css +1 -1
  63. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors.css +1 -1
  64. package/lib/design-tokens/css/tokens/functional/components/pricing-options/pricing-options.css +1 -1
  65. package/lib/design-tokens/css/tokens/functional/components/prose/base.css +1 -1
  66. package/lib/design-tokens/css/tokens/functional/components/prose/colors-with-modes.css +1 -1
  67. package/lib/design-tokens/css/tokens/functional/components/river/base.css +1 -1
  68. package/lib/design-tokens/css/tokens/functional/components/river/river.css +1 -1
  69. package/lib/design-tokens/css/tokens/functional/components/river-story-scroll/colors-with-modes.css +1 -1
  70. package/lib/design-tokens/css/tokens/functional/components/section/section.css +1 -1
  71. package/lib/design-tokens/css/tokens/functional/components/statistic/base.css +1 -1
  72. package/lib/design-tokens/css/tokens/functional/components/sub-nav/base.css +1 -1
  73. package/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes.css +1 -1
  74. package/lib/design-tokens/css/tokens/functional/components/subdomain-nav-bar/colors-with-modes.css +1 -1
  75. package/lib/design-tokens/css/tokens/functional/components/tabs/base.css +1 -1
  76. package/lib/design-tokens/css/tokens/functional/components/tabs/colors-with-modes.css +1 -1
  77. package/lib/design-tokens/css/tokens/functional/components/tabs/colors.css +1 -1
  78. package/lib/design-tokens/css/tokens/functional/components/testimonial/base.css +1 -1
  79. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css +1 -1
  80. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors.css +1 -1
  81. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes.css +1 -1
  82. package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors.css +1 -1
  83. package/lib/design-tokens/css/tokens/functional/components/tiles/colors-with-modes.css +1 -1
  84. package/lib/design-tokens/css/tokens/functional/components/timeline/base.css +1 -1
  85. package/lib/design-tokens/css/tokens/functional/components/timeline/colors-with-modes.css +1 -1
  86. package/lib/design-tokens/css/tokens/functional/components/timeline/colors.css +1 -1
  87. package/lib/design-tokens/css/tokens/functional/components/token/colors-with-modes.css +1 -1
  88. package/lib/design-tokens/css/tokens/functional/components/token/colors.css +1 -1
  89. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors-with-modes.css +1 -1
  90. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors.css +1 -1
  91. package/lib/design-tokens/css/tokens/functional/components/video-player/base.css +1 -1
  92. package/lib/design-tokens/css/tokens/functional/components/video-player/colors-with-modes.css +1 -1
  93. package/lib/design-tokens/css/tokens/functional/size/border.css +1 -1
  94. package/lib/design-tokens/css/tokens/functional/size/breakpoints.css +1 -1
  95. package/lib/design-tokens/css/tokens/functional/size/size-coarse.css +1 -1
  96. package/lib/design-tokens/css/tokens/functional/size/size-fine.css +1 -1
  97. package/lib/design-tokens/css/tokens/functional/size/size.css +1 -1
  98. package/lib/design-tokens/css/tokens/functional/size/viewport.css +1 -1
  99. package/lib/design-tokens/css/tokens/functional/typography/typography-responsive.css +1 -1
  100. package/lib/design-tokens/css/tokens/functional/typography/typography.css +1 -1
  101. package/lib/design-tokens/js/module/tokens/base/colors/light.js +1 -1
  102. package/lib/design-tokens/js/module/tokens/base/size/size.js +1 -1
  103. package/lib/design-tokens/js/module/tokens/base/typography/typography.js +1 -1
  104. package/lib/design-tokens/js/module/tokens/functional/animation/base.js +1 -1
  105. package/lib/design-tokens/js/module/tokens/functional/colors/global.js +1 -1
  106. package/lib/design-tokens/js/module/tokens/functional/components/bento/base.js +1 -1
  107. package/lib/design-tokens/js/module/tokens/functional/components/card/base.js +1 -1
  108. package/lib/design-tokens/js/module/tokens/functional/components/card/colors.js +1 -1
  109. package/lib/design-tokens/js/module/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  110. package/lib/design-tokens/js/module/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  111. package/lib/design-tokens/js/module/tokens/functional/components/faq/base.js +1 -1
  112. package/lib/design-tokens/js/module/tokens/functional/components/faq/colors.js +1 -1
  113. package/lib/design-tokens/js/module/tokens/functional/components/faq/faq.js +1 -1
  114. package/lib/design-tokens/js/module/tokens/functional/components/footer/colors.js +1 -1
  115. package/lib/design-tokens/js/module/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  116. package/lib/design-tokens/js/module/tokens/functional/components/grid/colors.js +1 -1
  117. package/lib/design-tokens/js/module/tokens/functional/components/grid/grid.js +1 -1
  118. package/lib/design-tokens/js/module/tokens/functional/components/hero/base.js +1 -1
  119. package/lib/design-tokens/js/module/tokens/functional/components/icon/colors.js +1 -1
  120. package/lib/design-tokens/js/module/tokens/functional/components/ide/base.js +1 -1
  121. package/lib/design-tokens/js/module/tokens/functional/components/image/base.js +1 -1
  122. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/base.js +1 -1
  123. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/colors.js +1 -1
  124. package/lib/design-tokens/js/module/tokens/functional/components/label/colors.js +1 -1
  125. package/lib/design-tokens/js/module/tokens/functional/components/link/colors.js +1 -1
  126. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/base.js +1 -1
  127. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/colors.js +1 -1
  128. package/lib/design-tokens/js/module/tokens/functional/components/media-playlist/colors.js +1 -1
  129. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/colors.js +1 -1
  130. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  131. package/lib/design-tokens/js/module/tokens/functional/components/prose/base.js +1 -1
  132. package/lib/design-tokens/js/module/tokens/functional/components/river/base.js +1 -1
  133. package/lib/design-tokens/js/module/tokens/functional/components/river/river.js +1 -1
  134. package/lib/design-tokens/js/module/tokens/functional/components/section/section.js +1 -1
  135. package/lib/design-tokens/js/module/tokens/functional/components/statistic/base.js +1 -1
  136. package/lib/design-tokens/js/module/tokens/functional/components/sub-nav/base.js +1 -1
  137. package/lib/design-tokens/js/module/tokens/functional/components/tabs/base.js +1 -1
  138. package/lib/design-tokens/js/module/tokens/functional/components/tabs/colors.js +1 -1
  139. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/base.js +1 -1
  140. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/colors.js +1 -1
  141. package/lib/design-tokens/js/module/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  142. package/lib/design-tokens/js/module/tokens/functional/components/timeline/base.js +1 -1
  143. package/lib/design-tokens/js/module/tokens/functional/components/timeline/colors.js +1 -1
  144. package/lib/design-tokens/js/module/tokens/functional/components/token/colors.js +1 -1
  145. package/lib/design-tokens/js/module/tokens/functional/components/tooltip/colors.js +1 -1
  146. package/lib/design-tokens/js/module/tokens/functional/components/video-player/base.js +1 -1
  147. package/lib/design-tokens/js/module/tokens/functional/size/border.js +1 -1
  148. package/lib/design-tokens/js/module/tokens/functional/size/breakpoints.js +1 -1
  149. package/lib/design-tokens/js/module/tokens/functional/size/size-coarse.js +1 -1
  150. package/lib/design-tokens/js/module/tokens/functional/size/size-fine.js +1 -1
  151. package/lib/design-tokens/js/module/tokens/functional/size/size.js +1 -1
  152. package/lib/design-tokens/js/module/tokens/functional/size/viewport.js +1 -1
  153. package/lib/design-tokens/js/module/tokens/functional/typography/typography-responsive.js +1 -1
  154. package/lib/design-tokens/js/module/tokens/functional/typography/typography.js +1 -1
  155. package/lib/design-tokens/js/tokens/base/colors/light.js +1 -1
  156. package/lib/design-tokens/js/tokens/base/size/size.js +1 -1
  157. package/lib/design-tokens/js/tokens/base/typography/typography.js +1 -1
  158. package/lib/design-tokens/js/tokens/functional/animation/base.js +1 -1
  159. package/lib/design-tokens/js/tokens/functional/colors/global.js +1 -1
  160. package/lib/design-tokens/js/tokens/functional/components/bento/base.js +1 -1
  161. package/lib/design-tokens/js/tokens/functional/components/card/base.js +1 -1
  162. package/lib/design-tokens/js/tokens/functional/components/card/colors.js +1 -1
  163. package/lib/design-tokens/js/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  164. package/lib/design-tokens/js/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  165. package/lib/design-tokens/js/tokens/functional/components/faq/base.js +1 -1
  166. package/lib/design-tokens/js/tokens/functional/components/faq/colors.js +1 -1
  167. package/lib/design-tokens/js/tokens/functional/components/faq/faq.js +1 -1
  168. package/lib/design-tokens/js/tokens/functional/components/footer/colors.js +1 -1
  169. package/lib/design-tokens/js/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  170. package/lib/design-tokens/js/tokens/functional/components/grid/colors.js +1 -1
  171. package/lib/design-tokens/js/tokens/functional/components/grid/grid.js +1 -1
  172. package/lib/design-tokens/js/tokens/functional/components/hero/base.js +1 -1
  173. package/lib/design-tokens/js/tokens/functional/components/icon/colors.js +1 -1
  174. package/lib/design-tokens/js/tokens/functional/components/ide/base.js +1 -1
  175. package/lib/design-tokens/js/tokens/functional/components/image/base.js +1 -1
  176. package/lib/design-tokens/js/tokens/functional/components/inline-link/base.js +1 -1
  177. package/lib/design-tokens/js/tokens/functional/components/inline-link/colors.js +1 -1
  178. package/lib/design-tokens/js/tokens/functional/components/label/colors.js +1 -1
  179. package/lib/design-tokens/js/tokens/functional/components/link/colors.js +1 -1
  180. package/lib/design-tokens/js/tokens/functional/components/logosuite/base.js +1 -1
  181. package/lib/design-tokens/js/tokens/functional/components/logosuite/colors.js +1 -1
  182. package/lib/design-tokens/js/tokens/functional/components/media-playlist/colors.js +1 -1
  183. package/lib/design-tokens/js/tokens/functional/components/pricing-options/colors.js +1 -1
  184. package/lib/design-tokens/js/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  185. package/lib/design-tokens/js/tokens/functional/components/prose/base.js +1 -1
  186. package/lib/design-tokens/js/tokens/functional/components/river/base.js +1 -1
  187. package/lib/design-tokens/js/tokens/functional/components/river/river.js +1 -1
  188. package/lib/design-tokens/js/tokens/functional/components/section/section.js +1 -1
  189. package/lib/design-tokens/js/tokens/functional/components/statistic/base.js +1 -1
  190. package/lib/design-tokens/js/tokens/functional/components/sub-nav/base.js +1 -1
  191. package/lib/design-tokens/js/tokens/functional/components/tabs/base.js +1 -1
  192. package/lib/design-tokens/js/tokens/functional/components/tabs/colors.js +1 -1
  193. package/lib/design-tokens/js/tokens/functional/components/testimonial/base.js +1 -1
  194. package/lib/design-tokens/js/tokens/functional/components/testimonial/colors.js +1 -1
  195. package/lib/design-tokens/js/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  196. package/lib/design-tokens/js/tokens/functional/components/timeline/base.js +1 -1
  197. package/lib/design-tokens/js/tokens/functional/components/timeline/colors.js +1 -1
  198. package/lib/design-tokens/js/tokens/functional/components/token/colors.js +1 -1
  199. package/lib/design-tokens/js/tokens/functional/components/tooltip/colors.js +1 -1
  200. package/lib/design-tokens/js/tokens/functional/components/video-player/base.js +1 -1
  201. package/lib/design-tokens/js/tokens/functional/size/border.js +1 -1
  202. package/lib/design-tokens/js/tokens/functional/size/breakpoints.js +1 -1
  203. package/lib/design-tokens/js/tokens/functional/size/size-coarse.js +1 -1
  204. package/lib/design-tokens/js/tokens/functional/size/size-fine.js +1 -1
  205. package/lib/design-tokens/js/tokens/functional/size/size.js +1 -1
  206. package/lib/design-tokens/js/tokens/functional/size/viewport.js +1 -1
  207. package/lib/design-tokens/js/tokens/functional/typography/typography-responsive.js +1 -1
  208. package/lib/design-tokens/js/tokens/functional/typography/typography.js +1 -1
  209. package/lib/design-tokens/scss/tokens/base/colors/light.scss +1 -1
  210. package/lib/design-tokens/scss/tokens/base/size/size.scss +1 -1
  211. package/lib/design-tokens/scss/tokens/base/typography/typography.scss +1 -1
  212. package/lib/design-tokens/scss/tokens/functional/animation/base.scss +1 -1
  213. package/lib/design-tokens/scss/tokens/functional/colors/global.scss +1 -1
  214. package/lib/design-tokens/scss/tokens/functional/components/bento/base.scss +1 -1
  215. package/lib/design-tokens/scss/tokens/functional/components/card/base.scss +1 -1
  216. package/lib/design-tokens/scss/tokens/functional/components/card/colors.scss +1 -1
  217. package/lib/design-tokens/scss/tokens/functional/components/comparison-table/comparison-table.scss +1 -1
  218. package/lib/design-tokens/scss/tokens/functional/components/eyebrow-banner/eyebrow-banner.scss +1 -1
  219. package/lib/design-tokens/scss/tokens/functional/components/faq/base.scss +1 -1
  220. package/lib/design-tokens/scss/tokens/functional/components/faq/colors.scss +1 -1
  221. package/lib/design-tokens/scss/tokens/functional/components/faq/faq.scss +1 -1
  222. package/lib/design-tokens/scss/tokens/functional/components/footer/colors.scss +1 -1
  223. package/lib/design-tokens/scss/tokens/functional/components/frosted-glass-vfx/base.scss +1 -1
  224. package/lib/design-tokens/scss/tokens/functional/components/grid/colors.scss +1 -1
  225. package/lib/design-tokens/scss/tokens/functional/components/grid/grid.scss +1 -1
  226. package/lib/design-tokens/scss/tokens/functional/components/hero/base.scss +1 -1
  227. package/lib/design-tokens/scss/tokens/functional/components/icon/colors.scss +1 -1
  228. package/lib/design-tokens/scss/tokens/functional/components/ide/base.scss +1 -1
  229. package/lib/design-tokens/scss/tokens/functional/components/image/base.scss +1 -1
  230. package/lib/design-tokens/scss/tokens/functional/components/inline-link/base.scss +1 -1
  231. package/lib/design-tokens/scss/tokens/functional/components/inline-link/colors.scss +1 -1
  232. package/lib/design-tokens/scss/tokens/functional/components/label/colors.scss +1 -1
  233. package/lib/design-tokens/scss/tokens/functional/components/link/colors.scss +1 -1
  234. package/lib/design-tokens/scss/tokens/functional/components/logosuite/base.scss +1 -1
  235. package/lib/design-tokens/scss/tokens/functional/components/logosuite/colors.scss +1 -1
  236. package/lib/design-tokens/scss/tokens/functional/components/media-playlist/colors.scss +1 -1
  237. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/colors.scss +1 -1
  238. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/pricing-options.scss +1 -1
  239. package/lib/design-tokens/scss/tokens/functional/components/prose/base.scss +1 -1
  240. package/lib/design-tokens/scss/tokens/functional/components/river/base.scss +1 -1
  241. package/lib/design-tokens/scss/tokens/functional/components/river/river.scss +1 -1
  242. package/lib/design-tokens/scss/tokens/functional/components/section/section.scss +1 -1
  243. package/lib/design-tokens/scss/tokens/functional/components/statistic/base.scss +1 -1
  244. package/lib/design-tokens/scss/tokens/functional/components/sub-nav/base.scss +1 -1
  245. package/lib/design-tokens/scss/tokens/functional/components/tabs/base.scss +1 -1
  246. package/lib/design-tokens/scss/tokens/functional/components/tabs/colors.scss +1 -1
  247. package/lib/design-tokens/scss/tokens/functional/components/testimonial/base.scss +1 -1
  248. package/lib/design-tokens/scss/tokens/functional/components/testimonial/colors.scss +1 -1
  249. package/lib/design-tokens/scss/tokens/functional/components/text-cursor-animation/colors.scss +1 -1
  250. package/lib/design-tokens/scss/tokens/functional/components/timeline/base.scss +1 -1
  251. package/lib/design-tokens/scss/tokens/functional/components/timeline/colors.scss +1 -1
  252. package/lib/design-tokens/scss/tokens/functional/components/token/colors.scss +1 -1
  253. package/lib/design-tokens/scss/tokens/functional/components/tooltip/colors.scss +1 -1
  254. package/lib/design-tokens/scss/tokens/functional/components/video-player/base.scss +1 -1
  255. package/lib/design-tokens/scss/tokens/functional/size/border.scss +1 -1
  256. package/lib/design-tokens/scss/tokens/functional/size/breakpoints.scss +1 -1
  257. package/lib/design-tokens/scss/tokens/functional/size/size-coarse.scss +1 -1
  258. package/lib/design-tokens/scss/tokens/functional/size/size-fine.scss +1 -1
  259. package/lib/design-tokens/scss/tokens/functional/size/size.scss +1 -1
  260. package/lib/design-tokens/scss/tokens/functional/size/viewport.scss +1 -1
  261. package/lib/design-tokens/scss/tokens/functional/typography/typography-responsive.scss +1 -1
  262. package/lib/design-tokens/scss/tokens/functional/typography/typography.scss +1 -1
  263. package/lib/design-tokens/ts/tokens/base/colors/light.d.ts +1 -1
  264. package/lib/design-tokens/ts/tokens/base/colors/light.js +1 -1
  265. package/lib/design-tokens/ts/tokens/base/size/size.d.ts +1 -1
  266. package/lib/design-tokens/ts/tokens/base/size/size.js +1 -1
  267. package/lib/design-tokens/ts/tokens/base/typography/typography.d.ts +1 -1
  268. package/lib/design-tokens/ts/tokens/base/typography/typography.js +1 -1
  269. package/lib/design-tokens/ts/tokens/functional/animation/base.d.ts +1 -1
  270. package/lib/design-tokens/ts/tokens/functional/animation/base.js +1 -1
  271. package/lib/design-tokens/ts/tokens/functional/colors/global.d.ts +1 -1
  272. package/lib/design-tokens/ts/tokens/functional/colors/global.js +1 -1
  273. package/lib/design-tokens/ts/tokens/functional/components/bento/base.d.ts +1 -1
  274. package/lib/design-tokens/ts/tokens/functional/components/bento/base.js +1 -1
  275. package/lib/design-tokens/ts/tokens/functional/components/card/base.d.ts +1 -1
  276. package/lib/design-tokens/ts/tokens/functional/components/card/base.js +1 -1
  277. package/lib/design-tokens/ts/tokens/functional/components/card/colors.d.ts +1 -1
  278. package/lib/design-tokens/ts/tokens/functional/components/card/colors.js +1 -1
  279. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.d.ts +1 -1
  280. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  281. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.d.ts +1 -1
  282. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  283. package/lib/design-tokens/ts/tokens/functional/components/faq/base.d.ts +1 -1
  284. package/lib/design-tokens/ts/tokens/functional/components/faq/base.js +1 -1
  285. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.d.ts +1 -1
  286. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.js +1 -1
  287. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.d.ts +1 -1
  288. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.js +1 -1
  289. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.d.ts +1 -1
  290. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.js +1 -1
  291. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.d.ts +1 -1
  292. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  293. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.d.ts +1 -1
  294. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.js +1 -1
  295. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.d.ts +1 -1
  296. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.js +1 -1
  297. package/lib/design-tokens/ts/tokens/functional/components/hero/base.d.ts +1 -1
  298. package/lib/design-tokens/ts/tokens/functional/components/hero/base.js +1 -1
  299. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.d.ts +1 -1
  300. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.js +1 -1
  301. package/lib/design-tokens/ts/tokens/functional/components/ide/base.d.ts +1 -1
  302. package/lib/design-tokens/ts/tokens/functional/components/ide/base.js +1 -1
  303. package/lib/design-tokens/ts/tokens/functional/components/image/base.d.ts +1 -1
  304. package/lib/design-tokens/ts/tokens/functional/components/image/base.js +1 -1
  305. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.d.ts +1 -1
  306. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.js +1 -1
  307. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.d.ts +1 -1
  308. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.js +1 -1
  309. package/lib/design-tokens/ts/tokens/functional/components/label/colors.d.ts +1 -1
  310. package/lib/design-tokens/ts/tokens/functional/components/label/colors.js +1 -1
  311. package/lib/design-tokens/ts/tokens/functional/components/link/colors.d.ts +1 -1
  312. package/lib/design-tokens/ts/tokens/functional/components/link/colors.js +1 -1
  313. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.d.ts +1 -1
  314. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.js +1 -1
  315. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.d.ts +1 -1
  316. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.js +1 -1
  317. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.d.ts +1 -1
  318. package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.js +1 -1
  319. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.d.ts +1 -1
  320. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.js +1 -1
  321. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.d.ts +1 -1
  322. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  323. package/lib/design-tokens/ts/tokens/functional/components/prose/base.d.ts +1 -1
  324. package/lib/design-tokens/ts/tokens/functional/components/prose/base.js +1 -1
  325. package/lib/design-tokens/ts/tokens/functional/components/river/base.d.ts +1 -1
  326. package/lib/design-tokens/ts/tokens/functional/components/river/base.js +1 -1
  327. package/lib/design-tokens/ts/tokens/functional/components/river/river.d.ts +1 -1
  328. package/lib/design-tokens/ts/tokens/functional/components/river/river.js +1 -1
  329. package/lib/design-tokens/ts/tokens/functional/components/section/section.d.ts +1 -1
  330. package/lib/design-tokens/ts/tokens/functional/components/section/section.js +1 -1
  331. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.d.ts +1 -1
  332. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.js +1 -1
  333. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.d.ts +1 -1
  334. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.js +1 -1
  335. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.d.ts +1 -1
  336. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.js +1 -1
  337. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.d.ts +1 -1
  338. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.js +1 -1
  339. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.d.ts +1 -1
  340. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.js +1 -1
  341. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.d.ts +1 -1
  342. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.js +1 -1
  343. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.d.ts +1 -1
  344. package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.js +1 -1
  345. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.d.ts +1 -1
  346. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.js +1 -1
  347. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.d.ts +1 -1
  348. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.js +1 -1
  349. package/lib/design-tokens/ts/tokens/functional/components/token/colors.d.ts +1 -1
  350. package/lib/design-tokens/ts/tokens/functional/components/token/colors.js +1 -1
  351. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.d.ts +1 -1
  352. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.js +1 -1
  353. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.d.ts +1 -1
  354. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.js +1 -1
  355. package/lib/design-tokens/ts/tokens/functional/size/border.d.ts +1 -1
  356. package/lib/design-tokens/ts/tokens/functional/size/border.js +1 -1
  357. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.d.ts +1 -1
  358. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.js +1 -1
  359. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.d.ts +1 -1
  360. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.js +1 -1
  361. package/lib/design-tokens/ts/tokens/functional/size/size-fine.d.ts +1 -1
  362. package/lib/design-tokens/ts/tokens/functional/size/size-fine.js +1 -1
  363. package/lib/design-tokens/ts/tokens/functional/size/size.d.ts +1 -1
  364. package/lib/design-tokens/ts/tokens/functional/size/size.js +1 -1
  365. package/lib/design-tokens/ts/tokens/functional/size/viewport.d.ts +1 -1
  366. package/lib/design-tokens/ts/tokens/functional/size/viewport.js +1 -1
  367. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.d.ts +1 -1
  368. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.js +1 -1
  369. package/lib/design-tokens/ts/tokens/functional/typography/typography.d.ts +1 -1
  370. package/lib/design-tokens/ts/tokens/functional/typography/typography.js +1 -1
  371. package/lib/index.js +1 -1
  372. package/llms.txt +2 -2
  373. package/package.json +1 -1
@@ -64,9 +64,6 @@ render(<App />)
64
64
 
65
65
  In this `mode`, the `ActionMenu` can be shown as a split button with an action (left) and dropdown button (right) with an additional list of actions.
66
66
 
67
- > In split-button mode, each action must be rendered as a link element using the as="a" prop, including the main button
68
- > and all menu items.
69
-
70
67
  ```jsx
71
68
  <ActionMenu mode="split-button">
72
69
  <ActionMenu.Button variant="subtle" as="a" href="#location-for-link" leadingVisual={<StarIcon />}>
@@ -129,11 +126,14 @@ In this `mode`, the `ActionMenu` can be shown as a split button with an action (
129
126
 
130
127
  ### ActionMenu.Button `Required`
131
128
 
132
- | name | type | default | required | description |
133
- | ----------- | -------------- | ------- | -------- | ---------------------------------- |
134
- | `className` | `string` | | | Sets a custom class on the element |
135
- | `children` | `ReactElement` | | | |
136
- | `id` | `string` | | | Sets a custom `id` |
129
+ | name | type | default | required | description |
130
+ | --------------- | -------------------------------------- | ----------- | -------- | ------------------------------------------------ |
131
+ | `className` | `string` | | | Sets a custom class on the element |
132
+ | `children` | `ReactElement` | | | |
133
+ | `id` | `string` | | | Sets a custom `id` |
134
+ | `variant` | `'primary' \| 'secondary' \| 'subtle'` | | `false` | Sets the button styling variation |
135
+ | `onClick` | `(event: MouseEvent) => void` | `undefined` | `false` | Handles activation of the button |
136
+ | `leadingVisual` | `ReactElement` | `undefined` | `false` | Renders a leading visual before the button label |
137
137
 
138
138
  ### ActionMenu.Overlay `Required`
139
139
 
package/docs/index.md CHANGED
@@ -1,6 +1,6 @@
1
- # Primer Brand docs (v0.71.1-rc.ee7cd7e2)
1
+ # Primer Brand docs (v0.72.0-rc.68373c92)
2
2
 
3
- These docs are bundled with `@primer/react-brand@0.71.1-rc.ee7cd7e2` and match your installed version.
3
+ These docs are bundled with `@primer/react-brand@0.72.0-rc.68373c92` and match your installed version.
4
4
 
5
5
  New here? Start with [Getting started](getting-started/index.md) for installation, global
6
6
  stylesheet and font setup. Component directories are named after their import (e.g.
@@ -59,9 +59,11 @@ export type ActionMenuProps = {
59
59
  type ActionMenuContextType = {
60
60
  size?: ActionMenuSizes;
61
61
  setSize?: React.Dispatch<React.SetStateAction<ActionMenuSizes | undefined>>;
62
+ onMenuToggle?: () => void;
62
63
  };
63
64
  export declare const useActionMenuContext: () => ActionMenuContextType;
64
- export declare const ActionMenuProvider: React.FC<ActionMenuProps>;
65
+ type ActionMenuProviderProps = ActionMenuProps & Pick<ActionMenuContextType, 'onMenuToggle'>;
66
+ export declare const ActionMenuProvider: React.FC<ActionMenuProviderProps>;
65
67
  type ActionMenuButtonProps = PropsWithChildren<BaseProps<HTMLButtonElement> & Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'disabled' | 'onClick'>> & {
66
68
  as?: ButtonProps<'a'>['as'];
67
69
  href?: ButtonProps<'a'>['href'];
@@ -1 +1 @@
1
- {"version":3,"file":"ActionMenu.d.ts","sourceRoot":"","sources":["../../src/ActionMenu/ActionMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionMenu.d.ts","sourceRoot":"","sources":["../../src/ActionMenu/ActionMenu.tsx"],"names":[],"mappings":"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"}
@@ -38,12 +38,13 @@ var O = {
38
38
  "outside-bottom",
39
39
  "outside-left",
40
40
  "outside-right"
41
- ], A = ["small", "medium"], j = ["default", "split-button"], M = f.createContext({}), N = () => f.useContext(M), P = ({ size: e, children: t }) => {
42
- let [n, r] = S(e);
41
+ ], A = ["small", "medium"], j = ["default", "split-button"], M = f.createContext({}), N = () => f.useContext(M), P = ({ size: e, children: t, onMenuToggle: n }) => {
42
+ let [r, i] = S(e);
43
43
  return /* @__PURE__ */ w(M.Provider, {
44
44
  value: {
45
- size: n,
46
- setSize: r
45
+ size: r,
46
+ setSize: i,
47
+ onMenuToggle: n
47
48
  },
48
49
  children: t
49
50
  });
@@ -110,7 +111,6 @@ var O = {
110
111
  allowOutOfBounds: !0,
111
112
  side: _
112
113
  }, [k]), { Button: V, Overlay: H } = p.toArray(r).reduce((t, n) => (g(n) && n.type === I ? t.Button = m(n, {
113
- onClick: F,
114
114
  ref: M,
115
115
  className: e(n.props.className, d[`ActionMenu__button--${C}`], k),
116
116
  menuOpen: k,
@@ -133,6 +133,7 @@ var O = {
133
133
  })), t), {});
134
134
  return /* @__PURE__ */ w(P, {
135
135
  size: h,
136
+ onMenuToggle: F,
136
137
  children: /* @__PURE__ */ T("div", {
137
138
  id: N,
138
139
  className: e(d.ActionMenu, a && d["ActionMenu--disabled"]),
@@ -140,51 +141,65 @@ var O = {
140
141
  children: [V, k ? H : null]
141
142
  })
142
143
  });
143
- }), I = h(({ as: t, href: n, children: r, className: o, "data-testid": s, disabled: c, menuOpen: l, size: u, _mode: f = "default", onClick: p, leadingVisual: m, variant: h = "primary", ...g }, _) => f === "split-button" ? /* @__PURE__ */ T("div", {
144
- className: e(d.ActionMenu__button, d[`ActionMenu__button--${u}`], o),
145
- children: [/* @__PURE__ */ w(a, {
146
- as: t,
147
- href: n,
148
- className: e(d["ActionMenu__innerButton--split-button"], d[`ActionMenu__innerButton--${h}`], d[`ActionMenu__innerButton--${u}`], c && d["ActionMenu__innerButton--disabled"]),
149
- variant: h,
150
- "aria-disabled": c,
151
- "data-testid": s || O.button,
152
- size: u,
153
- leadingVisual: m,
144
+ }), I = h(({ as: t, href: n, id: r, children: o, className: s, "data-testid": c, disabled: l, menuOpen: u, size: f, _mode: p = "default", onClick: m, leadingVisual: h, variant: g, ..._ }, y) => {
145
+ let { onMenuToggle: b } = N(), x = v((e) => {
146
+ m?.(e), e.defaultPrevented || b?.();
147
+ }, [m, b]);
148
+ if (p === "split-button") {
149
+ let p = g ?? "primary";
150
+ return /* @__PURE__ */ T("div", {
151
+ className: e(d.ActionMenu__button, d[`ActionMenu__button--${f}`], s),
152
+ children: [/* @__PURE__ */ w(a, {
153
+ as: t,
154
+ href: n,
155
+ className: e(d["ActionMenu__innerButton--split-button"], d[`ActionMenu__innerButton--${p}`], d[`ActionMenu__innerButton--${f}`], l && d["ActionMenu__innerButton--disabled"]),
156
+ variant: p,
157
+ "aria-disabled": l,
158
+ "data-testid": c || O.button,
159
+ size: f,
160
+ leadingVisual: h,
161
+ onClick: m,
162
+ ..._,
163
+ children: /* @__PURE__ */ w("span", {
164
+ className: d["ActionMenu__button-text"],
165
+ children: o
166
+ })
167
+ }), /* @__PURE__ */ w(a, {
168
+ ref: y,
169
+ id: r,
170
+ as: "button",
171
+ className: d["ActionMenu__innerButton--split-button"],
172
+ variant: p,
173
+ "aria-haspopup": "true",
174
+ "aria-label": "Menu",
175
+ size: f,
176
+ "aria-expanded": u ? "true" : "false",
177
+ onClick: b,
178
+ disabled: l,
179
+ children: /* @__PURE__ */ w(i, { className: d["ActionMenu__inner-button-dropdown-icon"] })
180
+ })]
181
+ });
182
+ }
183
+ return /* @__PURE__ */ w(a, {
184
+ ref: y,
185
+ id: r,
186
+ className: e(d.ActionMenu__button, d[`ActionMenu__button--${f}`], s),
187
+ "aria-haspopup": "true",
188
+ "aria-expanded": u ? "true" : "false",
189
+ disabled: l,
190
+ "data-testid": c || O.button,
191
+ size: f,
192
+ variant: g,
193
+ leadingVisual: h,
194
+ trailingVisual: /* @__PURE__ */ w(i, {}),
195
+ onClick: x,
196
+ ..._,
154
197
  children: /* @__PURE__ */ w("span", {
155
198
  className: d["ActionMenu__button-text"],
156
- children: r
199
+ children: o
157
200
  })
158
- }), /* @__PURE__ */ w(a, {
159
- ref: _,
160
- as: "button",
161
- className: d["ActionMenu__innerButton--split-button"],
162
- variant: h,
163
- "aria-haspopup": "true",
164
- "aria-label": "Menu",
165
- size: u,
166
- "aria-expanded": l ? "true" : "false",
167
- onClick: p,
168
- disabled: c,
169
- ...g,
170
- children: /* @__PURE__ */ w(i, { className: d["ActionMenu__inner-button-dropdown-icon"] })
171
- })]
172
- }) : /* @__PURE__ */ w(a, {
173
- ref: _,
174
- className: e(d.ActionMenu__button, d[`ActionMenu__button--${u}`], o),
175
- "aria-haspopup": "true",
176
- "aria-expanded": l ? "true" : "false",
177
- disabled: c,
178
- "data-testid": s || O.button,
179
- size: u,
180
- trailingVisual: /* @__PURE__ */ w(i, {}),
181
- onClick: p,
182
- ...g,
183
- children: /* @__PURE__ */ w("span", {
184
- className: d["ActionMenu__button-text"],
185
- children: r
186
- })
187
- })), L = {
201
+ });
202
+ }), L = {
188
203
  none: "menuitem",
189
204
  single: "menuitemradio",
190
205
  link: "menuitem"
@@ -1 +1 @@
1
- {"version":3,"file":"ActionMenu.js","names":[],"sources":["../../src/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, {\n Children,\n isValidElement,\n cloneElement,\n useRef,\n useCallback,\n useState,\n useEffect,\n PropsWithChildren,\n forwardRef,\n memo,\n ReactElement,\n useMemo,\n} from 'react'\nimport {Button, ButtonProps, Text, ThemeProvider, useTheme} from '../'\nimport {useAnchoredPosition} from '../hooks/useAnchoredPosition'\nimport {useOnClickOutside} from '../hooks/useOnClickOutside'\nimport {useKeyboardEscape} from '../hooks/useKeyboardEscape'\n\nimport {clsx} from 'clsx'\nimport {CheckIcon, ChevronDownIcon, type Icon} from '@primer/octicons-react'\nimport {useId} from '../hooks/useId'\n\nimport {FocusKeys, type PositionSettings, focusZone} from '@primer/behaviors'\nimport type {BaseProps} from '../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './ActionMenu.module.css'\n\nconst testIds = {\n root: 'ActionMenu',\n get button() {\n return `${this.root}-button`\n },\n get overlay() {\n return `${this.root}-overlay`\n },\n get list() {\n return `${this.root}-list`\n },\n get item() {\n return `${this.root}-list-item`\n },\n}\n\n// primer behaviors doesn't export these values, recreating manually\n// https://github.com/primer/behaviors/blob/main/src/anchored-position.ts#L5\nexport const actionMenuOverlaySides = [\n 'inside-top',\n 'inside-bottom',\n 'inside-left',\n 'inside-right',\n 'inside-center',\n 'outside-top',\n 'outside-bottom',\n 'outside-left',\n 'outside-right',\n] as PositionSettings['side'][]\n\nexport const ActionMenuSizes = ['small', 'medium'] as const\n\nexport const ActionMenuButtonModes = ['default', 'split-button'] as const\nexport type ActionMenuButtonModes = (typeof ActionMenuButtonModes)[number]\n\nexport type ActionMenuSizes = (typeof ActionMenuSizes)[number]\n\nexport type ActionMenuProps = {\n /**\n * The content of the ActionMenu. Must be an ActionMenu.Button and an ActionMenu.Overlay\n */\n children:\n | ReactElement<ActionMenuButtonProps>\n | ReactElement<ActionMenuOverlayProps>\n | Array<ReactElement<ActionMenuButtonProps> | ReactElement<ActionMenuOverlayProps>>\n /**\n * Determines whether the ActionMenu is disabled\n */\n disabled?: boolean\n /**\n * Determines whether the ActionMenu is open by default\n */\n open?: boolean\n /**\n * Callback that is called when an item is selected.\n * The value of the selected item is passed as an argument.\n */\n onSelect?: (newValue: string) => void\n /**\n * The selection variant of the ActionMenu.\n * - `single`: Only one item can be selected at a time. Menu items as a menuitemradio.\n * - `none`: No items can be selected. Menu items as a menuitem.\n */\n selectionVariant?: 'single' | 'none'\n /**\n * Test id for the ActionMenu\n */\n 'data-testid'?: string\n /**\n * Horizontal alignment of the menu relative to the bottom of the button\n */\n menuAlignment?: 'start' | 'end'\n /**\n * Size configuratin of the ActionMenu\n */\n size?: ActionMenuSizes\n /*\n * Side the menu overlay appears\n */\n menuSide?: PositionSettings['side']\n /**\n * Alternative behavior for the button and menu items\n * - `default`: The button and menu items behave as a standard button and menu item.\n * - `split-button`: The button behaves as a split button, and the menu items behave as links.\n */\n mode?: ActionMenuButtonModes\n} & BaseProps<HTMLDivElement>\n\ntype ActionMenuContextType = {\n size?: ActionMenuSizes\n setSize?: React.Dispatch<React.SetStateAction<ActionMenuSizes | undefined>>\n}\n\nconst ActionMenuContext = React.createContext<ActionMenuContextType>({})\n\nexport const useActionMenuContext = (): ActionMenuContextType => {\n return React.useContext(ActionMenuContext)\n}\n\nexport const ActionMenuProvider: React.FC<ActionMenuProps> = ({size, children}) => {\n const [currentSize, setSize] = useState(size)\n\n return <ActionMenuContext.Provider value={{size: currentSize, setSize}}>{children}</ActionMenuContext.Provider>\n}\n\nconst _ActionMenuRoot = memo(\n ({\n id,\n children,\n 'data-testid': testId,\n disabled,\n open = false,\n selectionVariant = 'none',\n menuAlignment = 'end',\n size = 'medium',\n menuSide,\n onSelect,\n mode = 'default',\n }: ActionMenuProps) => {\n const [showMenu, setShowMenu] = useState(open)\n const floatingElementRef = useRef<HTMLUListElement>(null)\n const anchorElementRef = useRef<HTMLButtonElement>(null)\n const instanceId = useId(id)\n\n useOnClickOutside(floatingElementRef, () => setShowMenu(false), anchorElementRef)\n\n const closeMenuCallback = useCallback(() => {\n setShowMenu(false)\n }, [])\n\n useKeyboardEscape(closeMenuCallback)\n\n const toggleMenu = useCallback(() => {\n setShowMenu(!showMenu)\n }, [showMenu])\n\n const handleOnSelect = useCallback(\n (newValue: string) => {\n if (onSelect) onSelect(newValue)\n toggleMenu()\n },\n [onSelect, toggleMenu],\n )\n\n const handleItemSelection = useCallback(\n (newValue: string) => {\n handleOnSelect(newValue)\n toggleMenu()\n anchorElementRef.current?.focus()\n },\n [handleOnSelect, toggleMenu, anchorElementRef],\n )\n\n useEffect(() => {\n if (showMenu && floatingElementRef.current) {\n const floatingElement = floatingElementRef.current\n const isSplitLayout = mode === 'split-button'\n const splitLayoutFilter = isSplitLayout ? element => element.tagName === 'A' : undefined\n\n focusZone(floatingElementRef.current, {\n bindKeys: FocusKeys.ArrowVertical,\n focusableElementFilter: splitLayoutFilter,\n focusInStrategy: isSplitLayout ? 'first' : undefined,\n })\n\n // enter selects item\n floatingElement.addEventListener('keydown', event => {\n if (event.key === 'Enter') {\n const target = event.target as HTMLElement\n\n // Get the proper element containing the data-value\n const targetElement = target.tagName === 'A' ? target.closest('li') : target\n\n if (!targetElement || targetElement.getAttribute('aria-disabled') === 'true') return\n\n const value = targetElement.getAttribute('data-value')\n if (value) {\n handleOnSelect(value)\n setShowMenu(false)\n setTimeout(() => {\n anchorElementRef.current?.focus()\n }, 10)\n }\n }\n })\n\n const targetSelector = isSplitLayout ? 'a' : 'li'\n\n // focusses first item\n const firstItem = floatingElementRef.current.querySelector(targetSelector)\n if (firstItem) {\n setTimeout(() => {\n firstItem.focus()\n }, 10)\n }\n\n const lastItem =\n floatingElement.querySelectorAll(targetSelector)[floatingElement.querySelectorAll(targetSelector).length - 1]\n lastItem.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowDown') {\n keyboardEvent.preventDefault()\n firstItem?.focus()\n }\n })\n\n firstItem?.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowUp') {\n keyboardEvent.preventDefault()\n lastItem.focus()\n }\n })\n\n //on escape refocus\n floatingElement.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'Escape') {\n anchorElementRef.current?.focus()\n }\n })\n }\n }, [showMenu, floatingElementRef, mode, handleItemSelection, toggleMenu, handleOnSelect])\n\n // Calculate the position of the menu\n const {position} = useAnchoredPosition(\n {\n floatingElementRef,\n anchorElementRef,\n align: menuAlignment,\n allowOutOfBounds: true,\n side: menuSide,\n },\n [showMenu],\n )\n\n const {Button: SelectButton, Overlay: SelectOverlay} = Children.toArray(children).reduce<{\n Button?: ReactElement<ActionMenuButtonProps>\n Overlay?: ReactElement<ActionMenuOverlayProps>\n }>((acc, child) => {\n if (isValidElement<ActionMenuButtonProps>(child) && child.type === ActionMenuButton) {\n acc.Button = cloneElement(child, {\n onClick: toggleMenu,\n ref: anchorElementRef as React.RefObject<HTMLButtonElement>,\n className: clsx(child.props.className, styles[`ActionMenu__button--${mode}`], showMenu),\n menuOpen: showMenu,\n disabled,\n id: `${instanceId}-button`,\n size,\n _mode: mode,\n })\n } else if (isValidElement<ActionMenuOverlayProps>(child) && child.type === ActionMenuOverlay) {\n acc.Overlay = cloneElement(child, {\n ref: floatingElementRef as React.RefObject<HTMLUListElement>,\n className: clsx(\n styles.ActionMenu__menu,\n position && styles['ActionMenu__menu--visible'],\n position && styles[`ActionMenu__menu--pos-${position.anchorSide}`],\n styles[`ActionMenu__menu--${size}`],\n mode === 'split-button' && 'ActionMenu__menu--split',\n ),\n style: {\n top: `${position?.top ?? 0}px`,\n left: `${position?.left ?? 0}px`,\n },\n id: `${instanceId}-menu`,\n children: Children.map(child.props.children, item => {\n if (isValidElement<ActionMenuItemBaseProps>(item)) {\n return cloneElement(item, {\n handler: handleItemSelection,\n type: mode === 'split-button' ? 'link' : selectionVariant,\n })\n }\n return item\n }),\n })\n }\n return acc\n }, {})\n\n return (\n <ActionMenuProvider size={size}>\n <div\n id={instanceId}\n className={clsx(styles.ActionMenu, disabled && styles['ActionMenu--disabled'])}\n data-testid={testId || testIds.root}\n >\n {SelectButton}\n {showMenu ? SelectOverlay : null}\n </div>\n </ActionMenuProvider>\n )\n },\n)\n\ntype ActionMenuButtonProps = PropsWithChildren<\n BaseProps<HTMLButtonElement> & Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'disabled' | 'onClick'>\n> & {\n as?: ButtonProps<'a'>['as']\n href?: ButtonProps<'a'>['href']\n menuOpen?: boolean\n 'data-testid'?: string\n size?: ActionMenuSizes\n _mode?: ActionMenuButtonModes\n variant?: ButtonProps<'a'>['variant']\n leadingVisual?: ButtonProps<'a'>['leadingVisual']\n}\n\nconst ActionMenuButton = forwardRef<HTMLButtonElement, ActionMenuButtonProps>(\n (\n {\n as,\n href,\n children,\n className,\n 'data-testid': testId,\n disabled,\n menuOpen,\n size,\n _mode = 'default',\n onClick,\n leadingVisual,\n variant = 'primary',\n ...props\n },\n ref,\n ) => {\n if (_mode === 'split-button') {\n return (\n <div className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}>\n <Button\n as={as}\n href={href}\n className={clsx(\n styles['ActionMenu__innerButton--split-button'],\n styles[`ActionMenu__innerButton--${variant}`],\n styles[`ActionMenu__innerButton--${size}`],\n disabled && styles['ActionMenu__innerButton--disabled'],\n )}\n variant={variant}\n aria-disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n leadingVisual={leadingVisual}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n <Button\n ref={ref}\n as=\"button\"\n className={styles['ActionMenu__innerButton--split-button']}\n variant={variant}\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\n size={size}\n aria-expanded={menuOpen ? 'true' : 'false'}\n onClick={onClick}\n disabled={disabled}\n {...props}\n >\n <ChevronDownIcon className={styles['ActionMenu__inner-button-dropdown-icon']} />\n </Button>\n </div>\n )\n }\n\n return (\n <Button\n ref={ref}\n className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen ? 'true' : 'false'}\n disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n trailingVisual={<ChevronDownIcon />}\n onClick={onClick}\n {...props}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n )\n },\n)\n\ntype ActionMenuItemBaseProps = {\n handler?: (newValue: string) => void\n type?: 'none' | 'single' | 'link'\n disabled?: boolean\n size?: ActionMenuSizes\n leadingVisual?: React.ReactElement | React.ReactNode | Icon\n} & PropsWithChildren<React.HTMLProps<HTMLLIElement>>\n\ntype ActionMenuItemAnchorProps = ActionMenuItemBaseProps & {\n as: 'a'\n} & Omit<React.HTMLProps<HTMLAnchorElement>, keyof ActionMenuItemBaseProps | 'as'>\n\n// Type for when 'as' is not set or is anything other than 'a'\ntype ActionMenuItemDefaultProps = ActionMenuItemBaseProps & {\n as?: string\n value?: string\n selected?: boolean\n} & Omit<React.HTMLProps<HTMLLIElement>, keyof ActionMenuItemBaseProps | 'as'>\n\nconst roleTypeMap = {\n none: 'menuitem',\n single: 'menuitemradio',\n link: 'menuitem',\n}\n\nconst ActionMenuItem = ({\n as,\n children,\n className,\n disabled,\n handler,\n selected,\n type,\n value,\n onClick,\n onKeyDown,\n leadingVisual: LeadingVisual,\n ...props\n}: ActionMenuItemAnchorProps | ActionMenuItemDefaultProps) => {\n const {size} = useActionMenuContext()\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n onClick?.(e)\n\n if (!disabled) {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onClick],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLLIElement>) => {\n onKeyDown?.(e)\n\n if (!disabled && e.key === 'Enter') {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onKeyDown],\n )\n\n const liProps = useMemo<React.HTMLProps<HTMLLIElement> & {'data-value': unknown}>(\n () => ({\n className: clsx(\n styles.ActionMenu__item,\n type === 'single' && styles[`ActionMenu__item--selection-type-${type}`],\n size && styles[`ActionMenu__item--${size}`],\n className,\n ),\n role: roleTypeMap[type || 'single'],\n 'aria-disabled': disabled,\n tabIndex: -1,\n 'data-value': value,\n ...props,\n }),\n [props, type, size, className, disabled, value],\n )\n\n const contents = useMemo(\n () => (\n <>\n {React.isValidElement<{width?: number; height?: number}>(LeadingVisual)\n ? React.cloneElement(LeadingVisual, {\n width: LeadingVisual.props.width || 20,\n height: LeadingVisual.props.width || 20,\n })\n : null}\n {type === 'single' && (\n <span className={styles['ActionMenu__item-leadingVisual']}>\n {selected && (\n <CheckIcon\n className={clsx(styles['ActionMenu__item-icon'], disabled && styles['ActionMenu__item-icon--disabled'])}\n size={16}\n />\n )}\n </span>\n )}\n\n <span className={styles['ActionMenu__item-text']}>\n <Text\n variant={disabled ? 'muted' : 'default'}\n size={size === 'medium' ? '200' : '100'}\n className={clsx(disabled && styles['ActionMenu__item-content--disabled'])}\n >\n {children}\n </Text>\n </span>\n </>\n ),\n [LeadingVisual, children, selected, disabled, size, type],\n )\n\n if (as === 'a') {\n return (\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n // Intentionally not calling handle[Click/KeyDown] here so as to not call the handler\n onClick={onClick}\n onKeyDown={onKeyDown}\n >\n <a\n className={clsx(styles['ActionMenu__item-anchor'], disabled && styles['ActionMenu__item--disabled'])}\n href={props.href}\n >\n {contents}\n </a>\n </li>\n )\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n aria-checked={type === 'none' ? undefined : selected ? 'true' : 'false'}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {contents}\n </li>\n )\n}\n\ntype ActionMenuOverlayProps = PropsWithChildren<\n BaseProps<HTMLUListElement> & React.HTMLAttributes<HTMLUListElement>\n> & {\n 'aria-label': string\n id?: string\n 'data-testid'?: string\n menuOpen?: boolean\n style?: React.CSSProperties\n}\n\nconst ActionMenuOverlay = forwardRef<HTMLUListElement, ActionMenuOverlayProps>(\n ({children, className, 'data-testid': testId, menuOpen, ...rest}, ref) => {\n const {colorMode: defaultColorMode} = useTheme()\n\n const colorMode = className?.includes('ActionMenu__menu--split') ? 'light' : defaultColorMode\n\n return (\n <ThemeProvider colorMode={colorMode}>\n <ul ref={ref} className={clsx(className)} role=\"menu\" data-testid={testId || testIds.list} {...rest}>\n {children}\n </ul>\n </ThemeProvider>\n )\n },\n)\n\n/**\n * Use ActionMenu to display a list of actions or selections that expand through a trigger button.\n * @see https://primer.style/brand/components/ActionMenu\n */\nexport const ActionMenu = Object.assign(_ActionMenuRoot, {\n Button: ActionMenuButton,\n Item: ActionMenuItem,\n Overlay: ActionMenuOverlay,\n testIds,\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActionMenu.js","names":[],"sources":["../../src/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, {\n Children,\n isValidElement,\n cloneElement,\n useRef,\n useCallback,\n useState,\n useEffect,\n PropsWithChildren,\n forwardRef,\n memo,\n ReactElement,\n useMemo,\n} from 'react'\nimport {Button, ButtonProps, Text, ThemeProvider, useTheme} from '../'\nimport {useAnchoredPosition} from '../hooks/useAnchoredPosition'\nimport {useOnClickOutside} from '../hooks/useOnClickOutside'\nimport {useKeyboardEscape} from '../hooks/useKeyboardEscape'\n\nimport {clsx} from 'clsx'\nimport {CheckIcon, ChevronDownIcon, type Icon} from '@primer/octicons-react'\nimport {useId} from '../hooks/useId'\n\nimport {FocusKeys, type PositionSettings, focusZone} from '@primer/behaviors'\nimport type {BaseProps} from '../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './ActionMenu.module.css'\n\nconst testIds = {\n root: 'ActionMenu',\n get button() {\n return `${this.root}-button`\n },\n get overlay() {\n return `${this.root}-overlay`\n },\n get list() {\n return `${this.root}-list`\n },\n get item() {\n return `${this.root}-list-item`\n },\n}\n\n// primer behaviors doesn't export these values, recreating manually\n// https://github.com/primer/behaviors/blob/main/src/anchored-position.ts#L5\nexport const actionMenuOverlaySides = [\n 'inside-top',\n 'inside-bottom',\n 'inside-left',\n 'inside-right',\n 'inside-center',\n 'outside-top',\n 'outside-bottom',\n 'outside-left',\n 'outside-right',\n] as PositionSettings['side'][]\n\nexport const ActionMenuSizes = ['small', 'medium'] as const\n\nexport const ActionMenuButtonModes = ['default', 'split-button'] as const\nexport type ActionMenuButtonModes = (typeof ActionMenuButtonModes)[number]\n\nexport type ActionMenuSizes = (typeof ActionMenuSizes)[number]\n\nexport type ActionMenuProps = {\n /**\n * The content of the ActionMenu. Must be an ActionMenu.Button and an ActionMenu.Overlay\n */\n children:\n | ReactElement<ActionMenuButtonProps>\n | ReactElement<ActionMenuOverlayProps>\n | Array<ReactElement<ActionMenuButtonProps> | ReactElement<ActionMenuOverlayProps>>\n /**\n * Determines whether the ActionMenu is disabled\n */\n disabled?: boolean\n /**\n * Determines whether the ActionMenu is open by default\n */\n open?: boolean\n /**\n * Callback that is called when an item is selected.\n * The value of the selected item is passed as an argument.\n */\n onSelect?: (newValue: string) => void\n /**\n * The selection variant of the ActionMenu.\n * - `single`: Only one item can be selected at a time. Menu items as a menuitemradio.\n * - `none`: No items can be selected. Menu items as a menuitem.\n */\n selectionVariant?: 'single' | 'none'\n /**\n * Test id for the ActionMenu\n */\n 'data-testid'?: string\n /**\n * Horizontal alignment of the menu relative to the bottom of the button\n */\n menuAlignment?: 'start' | 'end'\n /**\n * Size configuratin of the ActionMenu\n */\n size?: ActionMenuSizes\n /*\n * Side the menu overlay appears\n */\n menuSide?: PositionSettings['side']\n /**\n * Alternative behavior for the button and menu items\n * - `default`: The button and menu items behave as a standard button and menu item.\n * - `split-button`: The button behaves as a split button, and the menu items behave as links.\n */\n mode?: ActionMenuButtonModes\n} & BaseProps<HTMLDivElement>\n\ntype ActionMenuContextType = {\n size?: ActionMenuSizes\n setSize?: React.Dispatch<React.SetStateAction<ActionMenuSizes | undefined>>\n onMenuToggle?: () => void\n}\n\nconst ActionMenuContext = React.createContext<ActionMenuContextType>({})\n\nexport const useActionMenuContext = (): ActionMenuContextType => {\n return React.useContext(ActionMenuContext)\n}\n\ntype ActionMenuProviderProps = ActionMenuProps & Pick<ActionMenuContextType, 'onMenuToggle'>\n\nexport const ActionMenuProvider: React.FC<ActionMenuProviderProps> = ({size, children, onMenuToggle}) => {\n const [currentSize, setSize] = useState(size)\n\n return (\n <ActionMenuContext.Provider value={{size: currentSize, setSize, onMenuToggle}}>\n {children}\n </ActionMenuContext.Provider>\n )\n}\n\nconst _ActionMenuRoot = memo(\n ({\n id,\n children,\n 'data-testid': testId,\n disabled,\n open = false,\n selectionVariant = 'none',\n menuAlignment = 'end',\n size = 'medium',\n menuSide,\n onSelect,\n mode = 'default',\n }: ActionMenuProps) => {\n const [showMenu, setShowMenu] = useState(open)\n const floatingElementRef = useRef<HTMLUListElement>(null)\n const anchorElementRef = useRef<HTMLButtonElement>(null)\n const instanceId = useId(id)\n\n useOnClickOutside(floatingElementRef, () => setShowMenu(false), anchorElementRef)\n\n const closeMenuCallback = useCallback(() => {\n setShowMenu(false)\n }, [])\n\n useKeyboardEscape(closeMenuCallback)\n\n const toggleMenu = useCallback(() => {\n setShowMenu(!showMenu)\n }, [showMenu])\n\n const handleOnSelect = useCallback(\n (newValue: string) => {\n if (onSelect) onSelect(newValue)\n toggleMenu()\n },\n [onSelect, toggleMenu],\n )\n\n const handleItemSelection = useCallback(\n (newValue: string) => {\n handleOnSelect(newValue)\n toggleMenu()\n anchorElementRef.current?.focus()\n },\n [handleOnSelect, toggleMenu, anchorElementRef],\n )\n\n useEffect(() => {\n if (showMenu && floatingElementRef.current) {\n const floatingElement = floatingElementRef.current\n const isSplitLayout = mode === 'split-button'\n const splitLayoutFilter = isSplitLayout ? element => element.tagName === 'A' : undefined\n\n focusZone(floatingElementRef.current, {\n bindKeys: FocusKeys.ArrowVertical,\n focusableElementFilter: splitLayoutFilter,\n focusInStrategy: isSplitLayout ? 'first' : undefined,\n })\n\n // enter selects item\n floatingElement.addEventListener('keydown', event => {\n if (event.key === 'Enter') {\n const target = event.target as HTMLElement\n\n // Get the proper element containing the data-value\n const targetElement = target.tagName === 'A' ? target.closest('li') : target\n\n if (!targetElement || targetElement.getAttribute('aria-disabled') === 'true') return\n\n const value = targetElement.getAttribute('data-value')\n if (value) {\n handleOnSelect(value)\n setShowMenu(false)\n setTimeout(() => {\n anchorElementRef.current?.focus()\n }, 10)\n }\n }\n })\n\n const targetSelector = isSplitLayout ? 'a' : 'li'\n\n // focusses first item\n const firstItem = floatingElementRef.current.querySelector(targetSelector)\n if (firstItem) {\n setTimeout(() => {\n firstItem.focus()\n }, 10)\n }\n\n const lastItem =\n floatingElement.querySelectorAll(targetSelector)[floatingElement.querySelectorAll(targetSelector).length - 1]\n lastItem.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowDown') {\n keyboardEvent.preventDefault()\n firstItem?.focus()\n }\n })\n\n firstItem?.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowUp') {\n keyboardEvent.preventDefault()\n lastItem.focus()\n }\n })\n\n //on escape refocus\n floatingElement.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'Escape') {\n anchorElementRef.current?.focus()\n }\n })\n }\n }, [showMenu, floatingElementRef, mode, handleItemSelection, toggleMenu, handleOnSelect])\n\n // Calculate the position of the menu\n const {position} = useAnchoredPosition(\n {\n floatingElementRef,\n anchorElementRef,\n align: menuAlignment,\n allowOutOfBounds: true,\n side: menuSide,\n },\n [showMenu],\n )\n\n const {Button: SelectButton, Overlay: SelectOverlay} = Children.toArray(children).reduce<{\n Button?: ReactElement<ActionMenuButtonProps>\n Overlay?: ReactElement<ActionMenuOverlayProps>\n }>((acc, child) => {\n if (isValidElement<ActionMenuButtonProps>(child) && child.type === ActionMenuButton) {\n acc.Button = cloneElement(child, {\n ref: anchorElementRef as React.RefObject<HTMLButtonElement>,\n className: clsx(child.props.className, styles[`ActionMenu__button--${mode}`], showMenu),\n menuOpen: showMenu,\n disabled,\n id: `${instanceId}-button`,\n size,\n _mode: mode,\n })\n } else if (isValidElement<ActionMenuOverlayProps>(child) && child.type === ActionMenuOverlay) {\n acc.Overlay = cloneElement(child, {\n ref: floatingElementRef as React.RefObject<HTMLUListElement>,\n className: clsx(\n styles.ActionMenu__menu,\n position && styles['ActionMenu__menu--visible'],\n position && styles[`ActionMenu__menu--pos-${position.anchorSide}`],\n styles[`ActionMenu__menu--${size}`],\n mode === 'split-button' && 'ActionMenu__menu--split',\n ),\n style: {\n top: `${position?.top ?? 0}px`,\n left: `${position?.left ?? 0}px`,\n },\n id: `${instanceId}-menu`,\n children: Children.map(child.props.children, item => {\n if (isValidElement<ActionMenuItemBaseProps>(item)) {\n return cloneElement(item, {\n handler: handleItemSelection,\n type: mode === 'split-button' ? 'link' : selectionVariant,\n })\n }\n return item\n }),\n })\n }\n return acc\n }, {})\n\n return (\n <ActionMenuProvider size={size} onMenuToggle={toggleMenu}>\n <div\n id={instanceId}\n className={clsx(styles.ActionMenu, disabled && styles['ActionMenu--disabled'])}\n data-testid={testId || testIds.root}\n >\n {SelectButton}\n {showMenu ? SelectOverlay : null}\n </div>\n </ActionMenuProvider>\n )\n },\n)\n\ntype ActionMenuButtonProps = PropsWithChildren<\n BaseProps<HTMLButtonElement> & Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'disabled' | 'onClick'>\n> & {\n as?: ButtonProps<'a'>['as']\n href?: ButtonProps<'a'>['href']\n menuOpen?: boolean\n 'data-testid'?: string\n size?: ActionMenuSizes\n _mode?: ActionMenuButtonModes\n variant?: ButtonProps<'a'>['variant']\n leadingVisual?: ButtonProps<'a'>['leadingVisual']\n}\n\nconst ActionMenuButton = forwardRef<HTMLButtonElement, ActionMenuButtonProps>(\n (\n {\n as,\n href,\n id,\n children,\n className,\n 'data-testid': testId,\n disabled,\n menuOpen,\n size,\n _mode = 'default',\n onClick,\n leadingVisual,\n variant,\n ...props\n },\n ref,\n ) => {\n const {onMenuToggle} = useActionMenuContext()\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event)\n\n if (!event.defaultPrevented) {\n onMenuToggle?.()\n }\n },\n [onClick, onMenuToggle],\n )\n\n if (_mode === 'split-button') {\n const splitButtonVariant = variant ?? 'primary'\n\n return (\n <div className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}>\n <Button\n as={as}\n href={href}\n className={clsx(\n styles['ActionMenu__innerButton--split-button'],\n styles[`ActionMenu__innerButton--${splitButtonVariant}`],\n styles[`ActionMenu__innerButton--${size}`],\n disabled && styles['ActionMenu__innerButton--disabled'],\n )}\n variant={splitButtonVariant}\n aria-disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n leadingVisual={leadingVisual}\n onClick={onClick}\n {...props}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n <Button\n ref={ref}\n id={id}\n as=\"button\"\n className={styles['ActionMenu__innerButton--split-button']}\n variant={splitButtonVariant}\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\n size={size}\n aria-expanded={menuOpen ? 'true' : 'false'}\n onClick={onMenuToggle}\n disabled={disabled}\n >\n <ChevronDownIcon className={styles['ActionMenu__inner-button-dropdown-icon']} />\n </Button>\n </div>\n )\n }\n\n return (\n <Button\n ref={ref}\n id={id}\n className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen ? 'true' : 'false'}\n disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n variant={variant}\n leadingVisual={leadingVisual}\n trailingVisual={<ChevronDownIcon />}\n onClick={handleClick}\n {...props}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n )\n },\n)\n\ntype ActionMenuItemBaseProps = {\n handler?: (newValue: string) => void\n type?: 'none' | 'single' | 'link'\n disabled?: boolean\n size?: ActionMenuSizes\n leadingVisual?: React.ReactElement | React.ReactNode | Icon\n} & PropsWithChildren<React.HTMLProps<HTMLLIElement>>\n\ntype ActionMenuItemAnchorProps = ActionMenuItemBaseProps & {\n as: 'a'\n} & Omit<React.HTMLProps<HTMLAnchorElement>, keyof ActionMenuItemBaseProps | 'as'>\n\n// Type for when 'as' is not set or is anything other than 'a'\ntype ActionMenuItemDefaultProps = ActionMenuItemBaseProps & {\n as?: string\n value?: string\n selected?: boolean\n} & Omit<React.HTMLProps<HTMLLIElement>, keyof ActionMenuItemBaseProps | 'as'>\n\nconst roleTypeMap = {\n none: 'menuitem',\n single: 'menuitemradio',\n link: 'menuitem',\n}\n\nconst ActionMenuItem = ({\n as,\n children,\n className,\n disabled,\n handler,\n selected,\n type,\n value,\n onClick,\n onKeyDown,\n leadingVisual: LeadingVisual,\n ...props\n}: ActionMenuItemAnchorProps | ActionMenuItemDefaultProps) => {\n const {size} = useActionMenuContext()\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n onClick?.(e)\n\n if (!disabled) {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onClick],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLLIElement>) => {\n onKeyDown?.(e)\n\n if (!disabled && e.key === 'Enter') {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onKeyDown],\n )\n\n const liProps = useMemo<React.HTMLProps<HTMLLIElement> & {'data-value': unknown}>(\n () => ({\n className: clsx(\n styles.ActionMenu__item,\n type === 'single' && styles[`ActionMenu__item--selection-type-${type}`],\n size && styles[`ActionMenu__item--${size}`],\n className,\n ),\n role: roleTypeMap[type || 'single'],\n 'aria-disabled': disabled,\n tabIndex: -1,\n 'data-value': value,\n ...props,\n }),\n [props, type, size, className, disabled, value],\n )\n\n const contents = useMemo(\n () => (\n <>\n {React.isValidElement<{width?: number; height?: number}>(LeadingVisual)\n ? React.cloneElement(LeadingVisual, {\n width: LeadingVisual.props.width || 20,\n height: LeadingVisual.props.width || 20,\n })\n : null}\n {type === 'single' && (\n <span className={styles['ActionMenu__item-leadingVisual']}>\n {selected && (\n <CheckIcon\n className={clsx(styles['ActionMenu__item-icon'], disabled && styles['ActionMenu__item-icon--disabled'])}\n size={16}\n />\n )}\n </span>\n )}\n\n <span className={styles['ActionMenu__item-text']}>\n <Text\n variant={disabled ? 'muted' : 'default'}\n size={size === 'medium' ? '200' : '100'}\n className={clsx(disabled && styles['ActionMenu__item-content--disabled'])}\n >\n {children}\n </Text>\n </span>\n </>\n ),\n [LeadingVisual, children, selected, disabled, size, type],\n )\n\n if (as === 'a') {\n return (\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n // Intentionally not calling handle[Click/KeyDown] here so as to not call the handler\n onClick={onClick}\n onKeyDown={onKeyDown}\n >\n <a\n className={clsx(styles['ActionMenu__item-anchor'], disabled && styles['ActionMenu__item--disabled'])}\n href={props.href}\n >\n {contents}\n </a>\n </li>\n )\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n aria-checked={type === 'none' ? undefined : selected ? 'true' : 'false'}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {contents}\n </li>\n )\n}\n\ntype ActionMenuOverlayProps = PropsWithChildren<\n BaseProps<HTMLUListElement> & React.HTMLAttributes<HTMLUListElement>\n> & {\n 'aria-label': string\n id?: string\n 'data-testid'?: string\n menuOpen?: boolean\n style?: React.CSSProperties\n}\n\nconst ActionMenuOverlay = forwardRef<HTMLUListElement, ActionMenuOverlayProps>(\n ({children, className, 'data-testid': testId, menuOpen, ...rest}, ref) => {\n const {colorMode: defaultColorMode} = useTheme()\n\n const colorMode = className?.includes('ActionMenu__menu--split') ? 'light' : defaultColorMode\n\n return (\n <ThemeProvider colorMode={colorMode}>\n <ul ref={ref} className={clsx(className)} role=\"menu\" data-testid={testId || testIds.list} {...rest}>\n {children}\n </ul>\n </ThemeProvider>\n )\n },\n)\n\n/**\n * Use ActionMenu to display a list of actions or selections that expand through a trigger button.\n * @see https://primer.style/brand/components/ActionMenu\n */\nexport const ActionMenu = Object.assign(_ActionMenuRoot, {\n Button: ActionMenuButton,\n Item: ActionMenuItem,\n Overlay: ActionMenuOverlay,\n testIds,\n})\n"],"mappings":"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"}
@@ -59,9 +59,11 @@ export type ActionMenuProps = {
59
59
  type ActionMenuContextType = {
60
60
  size?: ActionMenuSizes;
61
61
  setSize?: React.Dispatch<React.SetStateAction<ActionMenuSizes | undefined>>;
62
+ onMenuToggle?: () => void;
62
63
  };
63
64
  export declare const useActionMenuContext: () => ActionMenuContextType;
64
- export declare const ActionMenuProvider: React.FC<ActionMenuProps>;
65
+ type ActionMenuProviderProps = ActionMenuProps & Pick<ActionMenuContextType, 'onMenuToggle'>;
66
+ export declare const ActionMenuProvider: React.FC<ActionMenuProviderProps>;
65
67
  type ActionMenuButtonProps = PropsWithChildren<BaseProps<HTMLButtonElement> & Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'disabled' | 'onClick'>> & {
66
68
  as?: ButtonProps<'a'>['as'];
67
69
  href?: ButtonProps<'a'>['href'];