@primer/react-brand 0.68.0-rc.5bd56cbb → 0.68.0-rc.b6d410ef

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 (476) hide show
  1. package/esm/ActionMenu/ActionMenu.d.ts.map +1 -1
  2. package/esm/ActionMenu/ActionMenu.js +1 -4
  3. package/esm/ActionMenu/ActionMenu.js.map +1 -1
  4. package/esm/ActionMenu/ActionMenu.module-BAeHTqHw.css +1 -0
  5. package/esm/ActionMenu/ActionMenu.module.js +2 -1
  6. package/esm/ActionMenu/ActionMenu.module.js.map +1 -1
  7. package/esm/AnchorNav/AnchorNav.d.ts.map +1 -1
  8. package/esm/AnchorNav/AnchorNav.js +0 -2
  9. package/esm/AnchorNav/AnchorNav.js.map +1 -1
  10. package/esm/Button/Button.d.ts +3 -3
  11. package/esm/Button/Button.d.ts.map +1 -1
  12. package/esm/Button/Button.js +43 -44
  13. package/esm/Button/Button.js.map +1 -1
  14. package/esm/Button/Button.module-Byz3R1qi.css +1 -0
  15. package/esm/Button/Button.module.js +4 -6
  16. package/esm/Button/Button.module.js.map +1 -1
  17. package/esm/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  18. package/esm/ButtonGroup/ButtonGroup.js +1 -2
  19. package/esm/ButtonGroup/ButtonGroup.js.map +1 -1
  20. package/esm/Hero/{Hero.module-b8OFm8Ci.css → Hero.module-DvYo_AtL.css} +1 -1
  21. package/esm/Hero/Hero.module.js +1 -1
  22. package/esm/Hero/Hero.module.js.map +1 -1
  23. package/esm/Hero/sub-components/HeroPrimaryAction.js +1 -1
  24. package/esm/Hero/sub-components/HeroPrimaryAction.js.map +1 -1
  25. package/esm/Icon/Icon.module-UyYnXhrw.css +1 -0
  26. package/esm/Icon/Icon.module.js +1 -1
  27. package/esm/Icon/Icon.module.js.map +1 -1
  28. package/esm/LogoSuite/LogoSuite.js +1 -1
  29. package/esm/LogoSuite/LogoSuite.js.map +1 -1
  30. package/esm/Pillar/Pillar.d.ts +4 -0
  31. package/esm/Pillar/Pillar.d.ts.map +1 -1
  32. package/esm/Pillar/Pillar.js +7 -7
  33. package/esm/Pillar/Pillar.js.map +1 -1
  34. package/esm/Pillar/Pillar.module-BM_qcCVC.css +1 -0
  35. package/esm/Pillar/Pillar.module.js +2 -1
  36. package/esm/Pillar/Pillar.module.js.map +1 -1
  37. package/esm/PricingOptions/PricingOptions.js +1 -1
  38. package/esm/PricingOptions/PricingOptions.js.map +1 -1
  39. package/esm/SectionIntroStacked/SectionIntroStacked.d.ts.map +1 -1
  40. package/esm/SectionIntroStacked/SectionIntroStacked.js +60 -59
  41. package/esm/SectionIntroStacked/SectionIntroStacked.js.map +1 -1
  42. package/esm/SectionIntroStacked/SectionIntroStacked.module-Cr7kUqTH.css +1 -0
  43. package/esm/SectionIntroStacked/SectionIntroStacked.module.js +1 -1
  44. package/esm/SectionIntroStacked/SectionIntroStacked.module.js.map +1 -1
  45. package/esm/Stack/Stack.js +1 -1
  46. package/esm/SubNav/SubNav.d.ts.map +1 -1
  47. package/esm/SubNav/SubNav.js +1 -2
  48. package/esm/SubNav/SubNav.js.map +1 -1
  49. package/esm/SubdomainNavBar/SubdomainNavBar.d.ts.map +1 -1
  50. package/esm/SubdomainNavBar/SubdomainNavBar.js +0 -2
  51. package/esm/SubdomainNavBar/SubdomainNavBar.js.map +1 -1
  52. package/esm/Tiles/Tiles.d.ts.map +1 -1
  53. package/esm/Tiles/Tiles.js +37 -36
  54. package/esm/Tiles/Tiles.js.map +1 -1
  55. package/esm/Tiles/Tiles.module-DVK0nMCy.css +1 -0
  56. package/esm/Tiles/Tiles.module.js +1 -1
  57. package/esm/Tiles/Tiles.module.js.map +1 -1
  58. package/esm/component-helpers/shared.module-CrdMh7Vf.css +1 -0
  59. package/esm/component-helpers/shared.module.js +5 -0
  60. package/esm/component-helpers/shared.module.js.map +1 -0
  61. package/esm/forms/Checkbox/Checkbox.module-CtRGEfSq.css +1 -0
  62. package/esm/forms/Checkbox/Checkbox.module.js +1 -1
  63. package/esm/forms/Checkbox/Checkbox.module.js.map +1 -1
  64. package/esm/forms/ControlGroup/ControlGroup.module-XDWDqxx9.css +1 -0
  65. package/esm/forms/ControlGroup/ControlGroup.module.js +1 -1
  66. package/esm/forms/ControlGroup/ControlGroup.module.js.map +1 -1
  67. package/esm/forms/FormControl/{FormControl.module-UQqb_zPR.css → FormControl.module-CSNT689n.css} +1 -1
  68. package/esm/forms/FormControl/FormControl.module.js +1 -1
  69. package/esm/forms/FormControl/FormControl.module.js.map +1 -1
  70. package/esm/forms/Radio/Radio.module-B470XLdO.css +1 -0
  71. package/esm/forms/Radio/Radio.module.js +1 -1
  72. package/esm/forms/Radio/Radio.module.js.map +1 -1
  73. package/esm/forms/Select/Select.module-CRuV5AGO.css +1 -0
  74. package/esm/forms/Select/Select.module.js +1 -1
  75. package/esm/forms/Select/Select.module.js.map +1 -1
  76. package/esm/forms/TextInput/TextInput.module-CrmcmO_m.css +1 -0
  77. package/esm/forms/TextInput/TextInput.module.js +1 -1
  78. package/esm/forms/TextInput/TextInput.module.js.map +1 -1
  79. package/esm/forms/Textarea/{Textarea.module-CdUlSjWq.css → Textarea.module-C4pwTMjB.css} +1 -1
  80. package/esm/forms/Textarea/Textarea.module.js +1 -1
  81. package/esm/forms/Textarea/Textarea.module.js.map +1 -1
  82. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes-kII0kqk3.css +1 -0
  83. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/size/size-SXubYfUg.css +1 -0
  84. package/esm/recipes/FlexTemplate/FlexTemplate.types.d.ts +5 -5
  85. package/esm/recipes/FlexTemplate/FlexTemplate.types.d.ts.map +1 -1
  86. package/esm/recipes/Flexsuite/Category/FlexSuiteSecurityCategory/FlexSuiteSecurityCategory.content.d.ts +9 -0
  87. package/esm/recipes/Flexsuite/Category/FlexSuiteSecurityCategory/FlexSuiteSecurityCategory.content.d.ts.map +1 -1
  88. package/esm/recipes/Flexsuite/Category/FlexSuiteSecurityCategory/FlexSuiteSecurityCategory.d.ts.map +1 -1
  89. package/esm/river/River/River.d.ts.map +1 -1
  90. package/esm/river/River/River.js +46 -45
  91. package/esm/river/River/River.js.map +1 -1
  92. package/esm/river/RiverAccordion/RiverAccordion.d.ts.map +1 -1
  93. package/esm/river/RiverAccordion/RiverAccordion.js +74 -65
  94. package/esm/river/RiverAccordion/RiverAccordion.js.map +1 -1
  95. package/esm/river/RiverAccordion/RiverAccordion.module-nlZZH3O7.css +1 -0
  96. package/esm/river/RiverAccordion/RiverAccordion.module.js +3 -2
  97. package/esm/river/RiverAccordion/RiverAccordion.module.js.map +1 -1
  98. package/esm/river/RiverBreakout/RiverBreakout.d.ts.map +1 -1
  99. package/esm/river/RiverBreakout/RiverBreakout.js +21 -20
  100. package/esm/river/RiverBreakout/RiverBreakout.js.map +1 -1
  101. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts.map +1 -1
  102. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js +114 -113
  103. package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js.map +1 -1
  104. package/esm/river/river-shared.module-D0AV93uz.css +1 -0
  105. package/esm/river/river-shared.module.js +1 -1
  106. package/esm/river/river-shared.module.js.map +1 -1
  107. package/lib/Button/Button.d.ts +3 -3
  108. package/lib/Pillar/Pillar.d.ts +4 -0
  109. package/lib/css/main.css +430 -330
  110. package/lib/design-tokens/css/tokens/base/colors/color-scales-with-modes.css +1 -1
  111. package/lib/design-tokens/css/tokens/base/colors/light.css +1 -1
  112. package/lib/design-tokens/css/tokens/base/size/size.css +1 -1
  113. package/lib/design-tokens/css/tokens/base/typography/typography.css +1 -1
  114. package/lib/design-tokens/css/tokens/functional/animation/base.css +1 -1
  115. package/lib/design-tokens/css/tokens/functional/colors/global-with-modes.css +1 -1
  116. package/lib/design-tokens/css/tokens/functional/colors/global.css +1 -1
  117. package/lib/design-tokens/css/tokens/functional/components/accordion/colors-with-modes.css +1 -1
  118. package/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css +1 -1
  119. package/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css +1 -1
  120. package/lib/design-tokens/css/tokens/functional/components/bento/base.css +1 -1
  121. package/lib/design-tokens/css/tokens/functional/components/blinking-cursor/colors-with-modes.css +1 -1
  122. package/lib/design-tokens/css/tokens/functional/components/breadcrumbs/colors-with-modes.css +1 -1
  123. package/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes.css +43 -47
  124. package/lib/design-tokens/css/tokens/functional/components/card/base.css +1 -1
  125. package/lib/design-tokens/css/tokens/functional/components/card/colors-with-modes.css +1 -1
  126. package/lib/design-tokens/css/tokens/functional/components/card/colors.css +1 -1
  127. package/lib/design-tokens/css/tokens/functional/components/comparison-table/colors-with-modes.css +1 -1
  128. package/lib/design-tokens/css/tokens/functional/components/comparison-table/comparison-table.css +1 -1
  129. package/lib/design-tokens/css/tokens/functional/components/control/colors-with-modes.css +51 -19
  130. package/lib/design-tokens/css/tokens/functional/components/cta-banner/colors-with-modes.css +1 -1
  131. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/colors-with-modes.css +1 -1
  132. package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/eyebrow-banner.css +1 -1
  133. package/lib/design-tokens/css/tokens/functional/components/faq/base.css +1 -1
  134. package/lib/design-tokens/css/tokens/functional/components/faq/colors-with-modes.css +1 -1
  135. package/lib/design-tokens/css/tokens/functional/components/faq/colors.css +1 -1
  136. package/lib/design-tokens/css/tokens/functional/components/faq/faq.css +1 -1
  137. package/lib/design-tokens/css/tokens/functional/components/footer/colors-with-modes.css +1 -1
  138. package/lib/design-tokens/css/tokens/functional/components/footer/colors.css +1 -1
  139. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/base.css +1 -1
  140. package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/colors-with-modes.css +1 -1
  141. package/lib/design-tokens/css/tokens/functional/components/grid/colors-with-modes.css +1 -1
  142. package/lib/design-tokens/css/tokens/functional/components/grid/colors.css +1 -1
  143. package/lib/design-tokens/css/tokens/functional/components/grid/grid.css +1 -1
  144. package/lib/design-tokens/css/tokens/functional/components/hero/base.css +1 -1
  145. package/lib/design-tokens/css/tokens/functional/components/icon/colors-with-modes.css +1 -1
  146. package/lib/design-tokens/css/tokens/functional/components/icon/colors.css +1 -1
  147. package/lib/design-tokens/css/tokens/functional/components/ide/base.css +1 -1
  148. package/lib/design-tokens/css/tokens/functional/components/ide/colors-with-modes.css +1 -1
  149. package/lib/design-tokens/css/tokens/functional/components/image/base.css +1 -1
  150. package/lib/design-tokens/css/tokens/functional/components/inline-link/base.css +1 -1
  151. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors-with-modes.css +1 -1
  152. package/lib/design-tokens/css/tokens/functional/components/inline-link/colors.css +1 -1
  153. package/lib/design-tokens/css/tokens/functional/components/label/colors-with-modes.css +1 -1
  154. package/lib/design-tokens/css/tokens/functional/components/label/colors.css +1 -1
  155. package/lib/design-tokens/css/tokens/functional/components/link/colors-with-modes.css +1 -1
  156. package/lib/design-tokens/css/tokens/functional/components/link/colors.css +1 -1
  157. package/lib/design-tokens/css/tokens/functional/components/logosuite/base.css +1 -1
  158. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors-with-modes.css +1 -1
  159. package/lib/design-tokens/css/tokens/functional/components/logosuite/colors.css +1 -1
  160. package/lib/design-tokens/css/tokens/functional/components/pagination/colors-with-modes.css +1 -1
  161. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors-with-modes.css +1 -1
  162. package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors.css +1 -1
  163. package/lib/design-tokens/css/tokens/functional/components/pricing-options/pricing-options.css +1 -1
  164. package/lib/design-tokens/css/tokens/functional/components/prose/base.css +1 -1
  165. package/lib/design-tokens/css/tokens/functional/components/prose/colors-with-modes.css +1 -1
  166. package/lib/design-tokens/css/tokens/functional/components/river/base.css +1 -1
  167. package/lib/design-tokens/css/tokens/functional/components/river/river.css +1 -1
  168. package/lib/design-tokens/css/tokens/functional/components/river-story-scroll/colors-with-modes.css +1 -1
  169. package/lib/design-tokens/css/tokens/functional/components/section/section.css +1 -1
  170. package/lib/design-tokens/css/tokens/functional/components/statistic/base.css +1 -1
  171. package/lib/design-tokens/css/tokens/functional/components/sub-nav/base.css +1 -1
  172. package/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes.css +1 -1
  173. package/lib/design-tokens/css/tokens/functional/components/subdomain-nav-bar/colors-with-modes.css +1 -1
  174. package/lib/design-tokens/css/tokens/functional/components/tabs/base.css +1 -1
  175. package/lib/design-tokens/css/tokens/functional/components/tabs/colors-with-modes.css +1 -1
  176. package/lib/design-tokens/css/tokens/functional/components/tabs/colors.css +1 -1
  177. package/lib/design-tokens/css/tokens/functional/components/testimonial/base.css +1 -1
  178. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css +1 -1
  179. package/lib/design-tokens/css/tokens/functional/components/testimonial/colors.css +1 -1
  180. package/lib/design-tokens/css/tokens/functional/components/tiles/colors-with-modes.css +1 -1
  181. package/lib/design-tokens/css/tokens/functional/components/timeline/base.css +1 -1
  182. package/lib/design-tokens/css/tokens/functional/components/timeline/colors-with-modes.css +1 -1
  183. package/lib/design-tokens/css/tokens/functional/components/timeline/colors.css +1 -1
  184. package/lib/design-tokens/css/tokens/functional/components/token/colors-with-modes.css +1 -1
  185. package/lib/design-tokens/css/tokens/functional/components/token/colors.css +1 -1
  186. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors-with-modes.css +1 -1
  187. package/lib/design-tokens/css/tokens/functional/components/tooltip/colors.css +1 -1
  188. package/lib/design-tokens/css/tokens/functional/components/video-player/base.css +1 -1
  189. package/lib/design-tokens/css/tokens/functional/components/video-player/colors-with-modes.css +1 -1
  190. package/lib/design-tokens/css/tokens/functional/size/border.css +1 -1
  191. package/lib/design-tokens/css/tokens/functional/size/breakpoints.css +1 -1
  192. package/lib/design-tokens/css/tokens/functional/size/size-coarse.css +1 -1
  193. package/lib/design-tokens/css/tokens/functional/size/size-fine.css +1 -1
  194. package/lib/design-tokens/css/tokens/functional/size/size.css +2 -2
  195. package/lib/design-tokens/css/tokens/functional/size/viewport.css +1 -1
  196. package/lib/design-tokens/css/tokens/functional/typography/typography-responsive.css +1 -1
  197. package/lib/design-tokens/css/tokens/functional/typography/typography.css +1 -1
  198. package/lib/design-tokens/js/module/tokens/base/colors/light.js +1 -1
  199. package/lib/design-tokens/js/module/tokens/base/size/size.js +1 -1
  200. package/lib/design-tokens/js/module/tokens/base/typography/typography.js +1 -1
  201. package/lib/design-tokens/js/module/tokens/functional/animation/base.js +1 -1
  202. package/lib/design-tokens/js/module/tokens/functional/colors/global.js +1 -1
  203. package/lib/design-tokens/js/module/tokens/functional/components/bento/base.js +1 -1
  204. package/lib/design-tokens/js/module/tokens/functional/components/card/base.js +1 -1
  205. package/lib/design-tokens/js/module/tokens/functional/components/card/colors.js +1 -1
  206. package/lib/design-tokens/js/module/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  207. package/lib/design-tokens/js/module/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  208. package/lib/design-tokens/js/module/tokens/functional/components/faq/base.js +1 -1
  209. package/lib/design-tokens/js/module/tokens/functional/components/faq/colors.js +1 -1
  210. package/lib/design-tokens/js/module/tokens/functional/components/faq/faq.js +1 -1
  211. package/lib/design-tokens/js/module/tokens/functional/components/footer/colors.js +1 -1
  212. package/lib/design-tokens/js/module/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  213. package/lib/design-tokens/js/module/tokens/functional/components/grid/colors.js +1 -1
  214. package/lib/design-tokens/js/module/tokens/functional/components/grid/grid.js +1 -1
  215. package/lib/design-tokens/js/module/tokens/functional/components/hero/base.js +1 -1
  216. package/lib/design-tokens/js/module/tokens/functional/components/icon/colors.js +1 -1
  217. package/lib/design-tokens/js/module/tokens/functional/components/ide/base.js +1 -1
  218. package/lib/design-tokens/js/module/tokens/functional/components/image/base.js +1 -1
  219. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/base.js +1 -1
  220. package/lib/design-tokens/js/module/tokens/functional/components/inline-link/colors.js +1 -1
  221. package/lib/design-tokens/js/module/tokens/functional/components/label/colors.js +1 -1
  222. package/lib/design-tokens/js/module/tokens/functional/components/link/colors.js +1 -1
  223. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/base.js +1 -1
  224. package/lib/design-tokens/js/module/tokens/functional/components/logosuite/colors.js +1 -1
  225. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/colors.js +1 -1
  226. package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  227. package/lib/design-tokens/js/module/tokens/functional/components/prose/base.js +1 -1
  228. package/lib/design-tokens/js/module/tokens/functional/components/river/base.js +1 -1
  229. package/lib/design-tokens/js/module/tokens/functional/components/river/river.js +1 -1
  230. package/lib/design-tokens/js/module/tokens/functional/components/section/section.js +1 -1
  231. package/lib/design-tokens/js/module/tokens/functional/components/statistic/base.js +1 -1
  232. package/lib/design-tokens/js/module/tokens/functional/components/sub-nav/base.js +1 -1
  233. package/lib/design-tokens/js/module/tokens/functional/components/tabs/base.js +1 -1
  234. package/lib/design-tokens/js/module/tokens/functional/components/tabs/colors.js +1 -1
  235. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/base.js +1 -1
  236. package/lib/design-tokens/js/module/tokens/functional/components/testimonial/colors.js +1 -1
  237. package/lib/design-tokens/js/module/tokens/functional/components/timeline/base.js +1 -1
  238. package/lib/design-tokens/js/module/tokens/functional/components/timeline/colors.js +1 -1
  239. package/lib/design-tokens/js/module/tokens/functional/components/token/colors.js +1 -1
  240. package/lib/design-tokens/js/module/tokens/functional/components/tooltip/colors.js +1 -1
  241. package/lib/design-tokens/js/module/tokens/functional/components/video-player/base.js +1 -1
  242. package/lib/design-tokens/js/module/tokens/functional/size/border.js +1 -1
  243. package/lib/design-tokens/js/module/tokens/functional/size/breakpoints.js +1 -1
  244. package/lib/design-tokens/js/module/tokens/functional/size/size-coarse.js +1 -1
  245. package/lib/design-tokens/js/module/tokens/functional/size/size-fine.js +1 -1
  246. package/lib/design-tokens/js/module/tokens/functional/size/size.js +2 -2
  247. package/lib/design-tokens/js/module/tokens/functional/size/viewport.js +1 -1
  248. package/lib/design-tokens/js/module/tokens/functional/typography/typography-responsive.js +1 -1
  249. package/lib/design-tokens/js/module/tokens/functional/typography/typography.js +1 -1
  250. package/lib/design-tokens/js/tokens/base/colors/light.js +1 -1
  251. package/lib/design-tokens/js/tokens/base/size/size.js +1 -1
  252. package/lib/design-tokens/js/tokens/base/typography/typography.js +1 -1
  253. package/lib/design-tokens/js/tokens/functional/animation/base.js +1 -1
  254. package/lib/design-tokens/js/tokens/functional/colors/global.js +1 -1
  255. package/lib/design-tokens/js/tokens/functional/components/bento/base.js +1 -1
  256. package/lib/design-tokens/js/tokens/functional/components/card/base.js +1 -1
  257. package/lib/design-tokens/js/tokens/functional/components/card/colors.js +1 -1
  258. package/lib/design-tokens/js/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  259. package/lib/design-tokens/js/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  260. package/lib/design-tokens/js/tokens/functional/components/faq/base.js +1 -1
  261. package/lib/design-tokens/js/tokens/functional/components/faq/colors.js +1 -1
  262. package/lib/design-tokens/js/tokens/functional/components/faq/faq.js +1 -1
  263. package/lib/design-tokens/js/tokens/functional/components/footer/colors.js +1 -1
  264. package/lib/design-tokens/js/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  265. package/lib/design-tokens/js/tokens/functional/components/grid/colors.js +1 -1
  266. package/lib/design-tokens/js/tokens/functional/components/grid/grid.js +1 -1
  267. package/lib/design-tokens/js/tokens/functional/components/hero/base.js +1 -1
  268. package/lib/design-tokens/js/tokens/functional/components/icon/colors.js +1 -1
  269. package/lib/design-tokens/js/tokens/functional/components/ide/base.js +1 -1
  270. package/lib/design-tokens/js/tokens/functional/components/image/base.js +1 -1
  271. package/lib/design-tokens/js/tokens/functional/components/inline-link/base.js +1 -1
  272. package/lib/design-tokens/js/tokens/functional/components/inline-link/colors.js +1 -1
  273. package/lib/design-tokens/js/tokens/functional/components/label/colors.js +1 -1
  274. package/lib/design-tokens/js/tokens/functional/components/link/colors.js +1 -1
  275. package/lib/design-tokens/js/tokens/functional/components/logosuite/base.js +1 -1
  276. package/lib/design-tokens/js/tokens/functional/components/logosuite/colors.js +1 -1
  277. package/lib/design-tokens/js/tokens/functional/components/pricing-options/colors.js +1 -1
  278. package/lib/design-tokens/js/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  279. package/lib/design-tokens/js/tokens/functional/components/prose/base.js +1 -1
  280. package/lib/design-tokens/js/tokens/functional/components/river/base.js +1 -1
  281. package/lib/design-tokens/js/tokens/functional/components/river/river.js +1 -1
  282. package/lib/design-tokens/js/tokens/functional/components/section/section.js +1 -1
  283. package/lib/design-tokens/js/tokens/functional/components/statistic/base.js +1 -1
  284. package/lib/design-tokens/js/tokens/functional/components/sub-nav/base.js +1 -1
  285. package/lib/design-tokens/js/tokens/functional/components/tabs/base.js +1 -1
  286. package/lib/design-tokens/js/tokens/functional/components/tabs/colors.js +1 -1
  287. package/lib/design-tokens/js/tokens/functional/components/testimonial/base.js +1 -1
  288. package/lib/design-tokens/js/tokens/functional/components/testimonial/colors.js +1 -1
  289. package/lib/design-tokens/js/tokens/functional/components/timeline/base.js +1 -1
  290. package/lib/design-tokens/js/tokens/functional/components/timeline/colors.js +1 -1
  291. package/lib/design-tokens/js/tokens/functional/components/token/colors.js +1 -1
  292. package/lib/design-tokens/js/tokens/functional/components/tooltip/colors.js +1 -1
  293. package/lib/design-tokens/js/tokens/functional/components/video-player/base.js +1 -1
  294. package/lib/design-tokens/js/tokens/functional/size/border.js +1 -1
  295. package/lib/design-tokens/js/tokens/functional/size/breakpoints.js +1 -1
  296. package/lib/design-tokens/js/tokens/functional/size/size-coarse.js +1 -1
  297. package/lib/design-tokens/js/tokens/functional/size/size-fine.js +1 -1
  298. package/lib/design-tokens/js/tokens/functional/size/size.js +2 -2
  299. package/lib/design-tokens/js/tokens/functional/size/viewport.js +1 -1
  300. package/lib/design-tokens/js/tokens/functional/typography/typography-responsive.js +1 -1
  301. package/lib/design-tokens/js/tokens/functional/typography/typography.js +1 -1
  302. package/lib/design-tokens/scss/tokens/base/colors/light.scss +1 -1
  303. package/lib/design-tokens/scss/tokens/base/size/size.scss +1 -1
  304. package/lib/design-tokens/scss/tokens/base/typography/typography.scss +1 -1
  305. package/lib/design-tokens/scss/tokens/functional/animation/base.scss +1 -1
  306. package/lib/design-tokens/scss/tokens/functional/colors/global.scss +1 -1
  307. package/lib/design-tokens/scss/tokens/functional/components/bento/base.scss +1 -1
  308. package/lib/design-tokens/scss/tokens/functional/components/card/base.scss +1 -1
  309. package/lib/design-tokens/scss/tokens/functional/components/card/colors.scss +1 -1
  310. package/lib/design-tokens/scss/tokens/functional/components/comparison-table/comparison-table.scss +1 -1
  311. package/lib/design-tokens/scss/tokens/functional/components/eyebrow-banner/eyebrow-banner.scss +1 -1
  312. package/lib/design-tokens/scss/tokens/functional/components/faq/base.scss +1 -1
  313. package/lib/design-tokens/scss/tokens/functional/components/faq/colors.scss +1 -1
  314. package/lib/design-tokens/scss/tokens/functional/components/faq/faq.scss +1 -1
  315. package/lib/design-tokens/scss/tokens/functional/components/footer/colors.scss +1 -1
  316. package/lib/design-tokens/scss/tokens/functional/components/frosted-glass-vfx/base.scss +1 -1
  317. package/lib/design-tokens/scss/tokens/functional/components/grid/colors.scss +1 -1
  318. package/lib/design-tokens/scss/tokens/functional/components/grid/grid.scss +1 -1
  319. package/lib/design-tokens/scss/tokens/functional/components/hero/base.scss +1 -1
  320. package/lib/design-tokens/scss/tokens/functional/components/icon/colors.scss +1 -1
  321. package/lib/design-tokens/scss/tokens/functional/components/ide/base.scss +1 -1
  322. package/lib/design-tokens/scss/tokens/functional/components/image/base.scss +1 -1
  323. package/lib/design-tokens/scss/tokens/functional/components/inline-link/base.scss +1 -1
  324. package/lib/design-tokens/scss/tokens/functional/components/inline-link/colors.scss +1 -1
  325. package/lib/design-tokens/scss/tokens/functional/components/label/colors.scss +1 -1
  326. package/lib/design-tokens/scss/tokens/functional/components/link/colors.scss +1 -1
  327. package/lib/design-tokens/scss/tokens/functional/components/logosuite/base.scss +1 -1
  328. package/lib/design-tokens/scss/tokens/functional/components/logosuite/colors.scss +1 -1
  329. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/colors.scss +1 -1
  330. package/lib/design-tokens/scss/tokens/functional/components/pricing-options/pricing-options.scss +1 -1
  331. package/lib/design-tokens/scss/tokens/functional/components/prose/base.scss +1 -1
  332. package/lib/design-tokens/scss/tokens/functional/components/river/base.scss +1 -1
  333. package/lib/design-tokens/scss/tokens/functional/components/river/river.scss +1 -1
  334. package/lib/design-tokens/scss/tokens/functional/components/section/section.scss +1 -1
  335. package/lib/design-tokens/scss/tokens/functional/components/statistic/base.scss +1 -1
  336. package/lib/design-tokens/scss/tokens/functional/components/sub-nav/base.scss +1 -1
  337. package/lib/design-tokens/scss/tokens/functional/components/tabs/base.scss +1 -1
  338. package/lib/design-tokens/scss/tokens/functional/components/tabs/colors.scss +1 -1
  339. package/lib/design-tokens/scss/tokens/functional/components/testimonial/base.scss +1 -1
  340. package/lib/design-tokens/scss/tokens/functional/components/testimonial/colors.scss +1 -1
  341. package/lib/design-tokens/scss/tokens/functional/components/timeline/base.scss +1 -1
  342. package/lib/design-tokens/scss/tokens/functional/components/timeline/colors.scss +1 -1
  343. package/lib/design-tokens/scss/tokens/functional/components/token/colors.scss +1 -1
  344. package/lib/design-tokens/scss/tokens/functional/components/tooltip/colors.scss +1 -1
  345. package/lib/design-tokens/scss/tokens/functional/components/video-player/base.scss +1 -1
  346. package/lib/design-tokens/scss/tokens/functional/size/border.scss +1 -1
  347. package/lib/design-tokens/scss/tokens/functional/size/breakpoints.scss +1 -1
  348. package/lib/design-tokens/scss/tokens/functional/size/size-coarse.scss +1 -1
  349. package/lib/design-tokens/scss/tokens/functional/size/size-fine.scss +1 -1
  350. package/lib/design-tokens/scss/tokens/functional/size/size.scss +2 -2
  351. package/lib/design-tokens/scss/tokens/functional/size/viewport.scss +1 -1
  352. package/lib/design-tokens/scss/tokens/functional/typography/typography-responsive.scss +1 -1
  353. package/lib/design-tokens/scss/tokens/functional/typography/typography.scss +1 -1
  354. package/lib/design-tokens/ts/tokens/base/colors/light.d.ts +1 -1
  355. package/lib/design-tokens/ts/tokens/base/colors/light.js +1 -1
  356. package/lib/design-tokens/ts/tokens/base/size/size.d.ts +1 -1
  357. package/lib/design-tokens/ts/tokens/base/size/size.js +1 -1
  358. package/lib/design-tokens/ts/tokens/base/typography/typography.d.ts +1 -1
  359. package/lib/design-tokens/ts/tokens/base/typography/typography.js +1 -1
  360. package/lib/design-tokens/ts/tokens/functional/animation/base.d.ts +1 -1
  361. package/lib/design-tokens/ts/tokens/functional/animation/base.js +1 -1
  362. package/lib/design-tokens/ts/tokens/functional/colors/global.d.ts +1 -1
  363. package/lib/design-tokens/ts/tokens/functional/colors/global.js +1 -1
  364. package/lib/design-tokens/ts/tokens/functional/components/bento/base.d.ts +1 -1
  365. package/lib/design-tokens/ts/tokens/functional/components/bento/base.js +1 -1
  366. package/lib/design-tokens/ts/tokens/functional/components/card/base.d.ts +1 -1
  367. package/lib/design-tokens/ts/tokens/functional/components/card/base.js +1 -1
  368. package/lib/design-tokens/ts/tokens/functional/components/card/colors.d.ts +1 -1
  369. package/lib/design-tokens/ts/tokens/functional/components/card/colors.js +1 -1
  370. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.d.ts +1 -1
  371. package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.js +1 -1
  372. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.d.ts +1 -1
  373. package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
  374. package/lib/design-tokens/ts/tokens/functional/components/faq/base.d.ts +1 -1
  375. package/lib/design-tokens/ts/tokens/functional/components/faq/base.js +1 -1
  376. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.d.ts +1 -1
  377. package/lib/design-tokens/ts/tokens/functional/components/faq/colors.js +1 -1
  378. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.d.ts +1 -1
  379. package/lib/design-tokens/ts/tokens/functional/components/faq/faq.js +1 -1
  380. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.d.ts +1 -1
  381. package/lib/design-tokens/ts/tokens/functional/components/footer/colors.js +1 -1
  382. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.d.ts +1 -1
  383. package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
  384. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.d.ts +1 -1
  385. package/lib/design-tokens/ts/tokens/functional/components/grid/colors.js +1 -1
  386. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.d.ts +1 -1
  387. package/lib/design-tokens/ts/tokens/functional/components/grid/grid.js +1 -1
  388. package/lib/design-tokens/ts/tokens/functional/components/hero/base.d.ts +1 -1
  389. package/lib/design-tokens/ts/tokens/functional/components/hero/base.js +1 -1
  390. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.d.ts +1 -1
  391. package/lib/design-tokens/ts/tokens/functional/components/icon/colors.js +1 -1
  392. package/lib/design-tokens/ts/tokens/functional/components/ide/base.d.ts +1 -1
  393. package/lib/design-tokens/ts/tokens/functional/components/ide/base.js +1 -1
  394. package/lib/design-tokens/ts/tokens/functional/components/image/base.d.ts +1 -1
  395. package/lib/design-tokens/ts/tokens/functional/components/image/base.js +1 -1
  396. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.d.ts +1 -1
  397. package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.js +1 -1
  398. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.d.ts +1 -1
  399. package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.js +1 -1
  400. package/lib/design-tokens/ts/tokens/functional/components/label/colors.d.ts +1 -1
  401. package/lib/design-tokens/ts/tokens/functional/components/label/colors.js +1 -1
  402. package/lib/design-tokens/ts/tokens/functional/components/link/colors.d.ts +1 -1
  403. package/lib/design-tokens/ts/tokens/functional/components/link/colors.js +1 -1
  404. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.d.ts +1 -1
  405. package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.js +1 -1
  406. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.d.ts +1 -1
  407. package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.js +1 -1
  408. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.d.ts +1 -1
  409. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.js +1 -1
  410. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.d.ts +1 -1
  411. package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.js +1 -1
  412. package/lib/design-tokens/ts/tokens/functional/components/prose/base.d.ts +1 -1
  413. package/lib/design-tokens/ts/tokens/functional/components/prose/base.js +1 -1
  414. package/lib/design-tokens/ts/tokens/functional/components/river/base.d.ts +1 -1
  415. package/lib/design-tokens/ts/tokens/functional/components/river/base.js +1 -1
  416. package/lib/design-tokens/ts/tokens/functional/components/river/river.d.ts +1 -1
  417. package/lib/design-tokens/ts/tokens/functional/components/river/river.js +1 -1
  418. package/lib/design-tokens/ts/tokens/functional/components/section/section.d.ts +1 -1
  419. package/lib/design-tokens/ts/tokens/functional/components/section/section.js +1 -1
  420. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.d.ts +1 -1
  421. package/lib/design-tokens/ts/tokens/functional/components/statistic/base.js +1 -1
  422. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.d.ts +1 -1
  423. package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.js +1 -1
  424. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.d.ts +1 -1
  425. package/lib/design-tokens/ts/tokens/functional/components/tabs/base.js +1 -1
  426. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.d.ts +1 -1
  427. package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.js +1 -1
  428. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.d.ts +1 -1
  429. package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.js +1 -1
  430. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.d.ts +1 -1
  431. package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.js +1 -1
  432. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.d.ts +1 -1
  433. package/lib/design-tokens/ts/tokens/functional/components/timeline/base.js +1 -1
  434. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.d.ts +1 -1
  435. package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.js +1 -1
  436. package/lib/design-tokens/ts/tokens/functional/components/token/colors.d.ts +1 -1
  437. package/lib/design-tokens/ts/tokens/functional/components/token/colors.js +1 -1
  438. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.d.ts +1 -1
  439. package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.js +1 -1
  440. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.d.ts +1 -1
  441. package/lib/design-tokens/ts/tokens/functional/components/video-player/base.js +1 -1
  442. package/lib/design-tokens/ts/tokens/functional/size/border.d.ts +1 -1
  443. package/lib/design-tokens/ts/tokens/functional/size/border.js +1 -1
  444. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.d.ts +1 -1
  445. package/lib/design-tokens/ts/tokens/functional/size/breakpoints.js +1 -1
  446. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.d.ts +1 -1
  447. package/lib/design-tokens/ts/tokens/functional/size/size-coarse.js +1 -1
  448. package/lib/design-tokens/ts/tokens/functional/size/size-fine.d.ts +1 -1
  449. package/lib/design-tokens/ts/tokens/functional/size/size-fine.js +1 -1
  450. package/lib/design-tokens/ts/tokens/functional/size/size.d.ts +1 -1
  451. package/lib/design-tokens/ts/tokens/functional/size/size.js +2 -2
  452. package/lib/design-tokens/ts/tokens/functional/size/viewport.d.ts +1 -1
  453. package/lib/design-tokens/ts/tokens/functional/size/viewport.js +1 -1
  454. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.d.ts +1 -1
  455. package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.js +1 -1
  456. package/lib/design-tokens/ts/tokens/functional/typography/typography.d.ts +1 -1
  457. package/lib/design-tokens/ts/tokens/functional/typography/typography.js +1 -1
  458. package/lib/index.js +1 -1
  459. package/lib/recipes/FlexTemplate/FlexTemplate.types.d.ts +5 -5
  460. package/lib/recipes/Flexsuite/Category/FlexSuiteSecurityCategory/FlexSuiteSecurityCategory.content.d.ts +9 -0
  461. package/package.json +1 -1
  462. package/esm/ActionMenu/ActionMenu.module-Km0HNn_2.css +0 -1
  463. package/esm/Button/Button.module-ryfDlr26.css +0 -1
  464. package/esm/Icon/Icon.module-C1_lP1JO.css +0 -1
  465. package/esm/Pillar/Pillar.module-Cpx4mbRH.css +0 -1
  466. package/esm/SectionIntroStacked/SectionIntroStacked.module-DvJXKMKX.css +0 -1
  467. package/esm/Tiles/Tiles.module-D7UJKhKM.css +0 -1
  468. package/esm/forms/Checkbox/Checkbox.module-DTWn-eCl.css +0 -1
  469. package/esm/forms/ControlGroup/ControlGroup.module-B7ITrHM_.css +0 -1
  470. package/esm/forms/Radio/Radio.module-C_NUEyme.css +0 -1
  471. package/esm/forms/Select/Select.module-q1LyPHa8.css +0 -1
  472. package/esm/forms/TextInput/TextInput.module-zPnaJdhX.css +0 -1
  473. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes-Wg6T_h7K.css +0 -1
  474. package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/size/size-Dr6y-7jl.css +0 -1
  475. package/esm/river/RiverAccordion/RiverAccordion.module-DrtqdEOQ.css +0 -1
  476. package/esm/river/river-shared.module-Cc5R8-Kl.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ActionMenu.d.ts","sourceRoot":"","sources":["../../src/ActionMenu/ActionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAQZ,iBAAiB,EAGjB,YAAY,EAEb,MAAM,OAAO,CAAA;AACd,OAAO,EAAS,WAAW,EAAgC,MAAM,KAAK,CAAA;AAMtE,OAAO,EAA6B,KAAK,IAAI,EAAC,MAAM,wBAAwB,CAAA;AAG5E,OAAO,EAAY,KAAK,gBAAgB,EAAY,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAEnD;;GAEG;AACH,OAAO,+GAA+G,CAAA;AAuBtH,eAAO,MAAM,sBAAsB,EAU9B,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;AAE/B,eAAO,MAAM,eAAe,8BAA+B,CAAA;AAE3D,eAAO,MAAM,qBAAqB,sCAAuC,CAAA;AACzE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,EACJ,YAAY,CAAC,qBAAqB,CAAC,GACnC,YAAY,CAAC,sBAAsB,CAAC,GACpC,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACrF;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACpC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IAItB,QAAQ,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACnC;;;;OAIG;IACH,IAAI,CAAC,EAAE,qBAAqB,CAAA;CAC7B,GAAG,SAAS,CAAC,cAAc,CAAC,CAAA;AAE7B,KAAK,qBAAqB,GAAG;IAC3B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAA;CAC5E,CAAA;AAID,eAAO,MAAM,oBAAoB,QAAO,qBAEvC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAIxD,CAAA;AAgMD,KAAK,qBAAqB,GAAG,iBAAiB,CAC5C,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,IAAI,GAAG,UAAU,GAAG,SAAS,CAAC,CAClH,GAAG;IACF,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;IACrC,aAAa,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAA;CAClD,CAAA;AAkFD,KAAK,uBAAuB,GAAG;IAC7B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;CAC5D,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;AAErD,KAAK,yBAAyB,GAAG,uBAAuB,GAAG;IACzD,EAAE,EAAE,GAAG,CAAA;CACR,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC,CAAA;AAGlF,KAAK,0BAA0B,GAAG,uBAAuB,GAAG;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC,CAAA;AAoI9E,KAAK,sBAAsB,GAAG,iBAAiB,CAC7C,SAAS,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CACrE,GAAG;IACF,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B,CAAA;AAkBD;;;GAGG;AACH,eAAO,MAAM,UAAU;IAjhBrB;;OAEG;cAEC,YAAY,CAAC,qBAAqB,CAAC,GACnC,YAAY,CAAC,sBAAsB,CAAC,GACpC,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;IACrF;;OAEG;eACQ,OAAO;IAClB;;OAEG;WACI,OAAO;IACd;;;OAGG;eACQ,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI;IACrC;;;;OAIG;uBACgB,QAAQ,GAAG,MAAM;IACpC;;OAEG;oBACa,MAAM;IACtB;;OAEG;oBACa,OAAO,GAAG,KAAK;IAC/B;;OAEG;WACI,eAAe;eAIX,gBAAgB,CAAC,MAAM,CAAC;IACnC;;;;OAIG;WACI,qBAAqB;;+IAiCzB,eAAe;;;8IAoTjB,yBAAyB,GAAG,0BAA0B;;;;;;;;;CAkJvD,CAAA"}
1
+ {"version":3,"file":"ActionMenu.d.ts","sourceRoot":"","sources":["../../src/ActionMenu/ActionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAQZ,iBAAiB,EAGjB,YAAY,EAEb,MAAM,OAAO,CAAA;AACd,OAAO,EAAS,WAAW,EAAgC,MAAM,KAAK,CAAA;AAMtE,OAAO,EAA6B,KAAK,IAAI,EAAC,MAAM,wBAAwB,CAAA;AAG5E,OAAO,EAAY,KAAK,gBAAgB,EAAY,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAEnD;;GAEG;AACH,OAAO,+GAA+G,CAAA;AAuBtH,eAAO,MAAM,sBAAsB,EAU9B,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;AAE/B,eAAO,MAAM,eAAe,8BAA+B,CAAA;AAE3D,eAAO,MAAM,qBAAqB,sCAAuC,CAAA;AACzE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,EACJ,YAAY,CAAC,qBAAqB,CAAC,GACnC,YAAY,CAAC,sBAAsB,CAAC,GACpC,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACrF;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACpC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IAItB,QAAQ,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACnC;;;;OAIG;IACH,IAAI,CAAC,EAAE,qBAAqB,CAAA;CAC7B,GAAG,SAAS,CAAC,cAAc,CAAC,CAAA;AAE7B,KAAK,qBAAqB,GAAG;IAC3B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAA;CAC5E,CAAA;AAID,eAAO,MAAM,oBAAoB,QAAO,qBAEvC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAIxD,CAAA;AAgMD,KAAK,qBAAqB,GAAG,iBAAiB,CAC5C,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,IAAI,GAAG,UAAU,GAAG,SAAS,CAAC,CAClH,GAAG;IACF,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;IACrC,aAAa,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAA;CAClD,CAAA;AA+ED,KAAK,uBAAuB,GAAG;IAC7B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;CAC5D,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;AAErD,KAAK,yBAAyB,GAAG,uBAAuB,GAAG;IACzD,EAAE,EAAE,GAAG,CAAA;CACR,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC,CAAA;AAGlF,KAAK,0BAA0B,GAAG,uBAAuB,GAAG;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC,CAAA;AAoI9E,KAAK,sBAAsB,GAAG,iBAAiB,CAC7C,SAAS,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CACrE,GAAG;IACF,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B,CAAA;AAkBD;;;GAGG;AACH,eAAO,MAAM,UAAU;IA9gBrB;;OAEG;cAEC,YAAY,CAAC,qBAAqB,CAAC,GACnC,YAAY,CAAC,sBAAsB,CAAC,GACpC,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;IACrF;;OAEG;eACQ,OAAO;IAClB;;OAEG;WACI,OAAO;IACd;;;OAGG;eACQ,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI;IACrC;;;;OAIG;uBACgB,QAAQ,GAAG,MAAM;IACpC;;OAEG;oBACa,MAAM;IACtB;;OAEG;oBACa,OAAO,GAAG,KAAK;IAC/B;;OAEG;WACI,eAAe;eAIX,gBAAgB,CAAC,MAAM,CAAC;IACnC;;;;OAIG;WACI,qBAAqB;;+IAiCzB,eAAe;;;8IAiTjB,yBAAyB,GAAG,0BAA0B;;;;;;;;;CAkJvD,CAAA"}
@@ -147,7 +147,6 @@ var O = {
147
147
  href: n,
148
148
  className: e(d["ActionMenu__innerButton--split-button"], d[`ActionMenu__innerButton--${h}`], d[`ActionMenu__innerButton--${u}`], c && d["ActionMenu__innerButton--disabled"]),
149
149
  variant: h,
150
- hasArrow: !1,
151
150
  "aria-disabled": c,
152
151
  "data-testid": s || O.button,
153
152
  size: u,
@@ -161,7 +160,6 @@ var O = {
161
160
  as: "button",
162
161
  className: d["ActionMenu__innerButton--split-button"],
163
162
  variant: h,
164
- hasArrow: !1,
165
163
  "aria-haspopup": "true",
166
164
  "aria-label": "Menu",
167
165
  size: u,
@@ -169,12 +167,11 @@ var O = {
169
167
  onClick: p,
170
168
  disabled: c,
171
169
  ...g,
172
- children: /* @__PURE__ */ w(i, {})
170
+ children: /* @__PURE__ */ w(i, { className: d["ActionMenu__inner-button-dropdown-icon"] })
173
171
  })]
174
172
  }) : /* @__PURE__ */ w(a, {
175
173
  ref: _,
176
174
  className: e(d.ActionMenu__button, d[`ActionMenu__button--${u}`], o),
177
- hasArrow: !1,
178
175
  "aria-haspopup": "true",
179
176
  "aria-expanded": l ? "true" : "false",
180
177
  disabled: c,
@@ -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 hasArrow={false}\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 hasArrow={false}\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 />\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 hasArrow={false}\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}\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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"}
@@ -0,0 +1 @@
1
+ .Primer_Brand__ActionMenu-module__ActionMenu___xLxGU{--focus-outline-width:3px;position:relative}.Primer_Brand__ActionMenu-module__ActionMenu--disabled___UsizV{cursor:not-allowed}.Primer_Brand__ActionMenu-module__ActionMenu__button___vFLAF{height:auto}.Primer_Brand__ActionMenu-module__ActionMenu__button--default___heDoV{--brand-borderRadius-medium:var(--brand-borderRadius-full)}.Primer_Brand__ActionMenu-module__ActionMenu__button--small___UAUPB{padding:calc(var(--base-size-4) / 2) var(--base-size-12)}.Primer_Brand__ActionMenu-module__ActionMenu__button--medium___n5ovs{padding:calc(var(--base-size-8) + 2px) var(--base-size-28)}.Primer_Brand__ActionMenu-module__ActionMenu__button___vFLAF>span:first-of-type{max-width:200px;overflow:hidden}.Primer_Brand__ActionMenu-module__ActionMenu__button--split-button___2Grop{border-radius:var(--brand-borderRadius-medium);border:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);background-color:var(--brand-color-canvas-default);padding:0;display:inline-flex}.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:first-child,.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:first-child:hover{z-index:1;border-top-right-radius:0;border-bottom-right-radius:0;position:relative}.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:first-child:before,.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:hover:first-child:before{content:"";top:calc(var(--base-size-2) / -2);right:calc(var(--base-size-2) * -1);width:var(--brand-borderWidth-thin);height:calc(100% + var(--base-size-2));background-color:var(--brand-color-border-muted);position:absolute}.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--subtle___9VQgI.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:before{top:calc(var(--base-size-2) * -1);height:calc(100% + var(--base-size-4))}.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--subtle___9VQgI.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:active:first-child:before{width:0}.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--medium___C2bJi.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc,.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:last-child{padding:var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal)}.Primer_Brand__ActionMenu-module__ActionMenu__inner-button-dropdown-icon___IGvTk{vertical-align:middle!important}.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc:last-child{z-index:0;border-top-left-radius:0;border-bottom-left-radius:0;position:relative}.Primer_Brand__ActionMenu-module__ActionMenu__innerButton--disabled___WrkOb{cursor:not-allowed;pointer-events:none}.Primer_Brand__ActionMenu-module__ActionMenu__menu___BEldF{z-index:100;padding:var(--base-size-12);visibility:hidden;background-color:var(--brand-color-canvas-default);border:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);border-radius:var(--brand-borderRadius-large);min-width:min-content;max-height:460px;position:absolute;overflow-y:auto;box-shadow:0 100px 80px #00000003,0 41px 33px #00000005,0 22px 17px #00000005,0 12px 10px #00000008,0 6px 5px #0000000a,0 2px 2px #00000012}.Primer_Brand__ActionMenu-module__ActionMenu__menu--small___xbb8m{padding:var(--base-size-8)}.Primer_Brand__ActionMenu-module__ActionMenu__menu--medium___3QqgD{padding:var(--base-size-12)}.Primer_Brand__ActionMenu-module__ActionMenu__menu--visible___QzhaX{visibility:visible}.Primer_Brand__ActionMenu-module__ActionMenu__menu--pos-outside-bottom___KAAm0{animation:.189s var(--brand-animation-easing-glide) 0s 1 normal none running Primer_Brand__ActionMenu-module__overlay-appear-outside-bottom___egiij}.Primer_Brand__ActionMenu-module__ActionMenu__menu--pos-outside-top___4TZek{animation:.189s var(--brand-animation-easing-glide) 0s 1 normal none running Primer_Brand__ActionMenu-module__overlay-appear-outside-top____Ko4E}@keyframes Primer_Brand__ActionMenu-module__overlay-appear-outside-bottom___egiij{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes Primer_Brand__ActionMenu-module__overlay-appear-outside-top____Ko4E{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.Primer_Brand__ActionMenu-module__ActionMenu__menu--medium___3QqgD.Primer_Brand__ActionMenu-module__ActionMenu__menu--pos-outside-bottom___KAAm0{margin-block-start:var(--base-size-8)}.Primer_Brand__ActionMenu-module__ActionMenu__menu--medium___3QqgD.Primer_Brand__ActionMenu-module__ActionMenu__menu--pos-outside-top___4TZek{margin-block-start:calc(var(--base-size-8) * -1)}.Primer_Brand__ActionMenu-module__ActionMenu__menu--small___xbb8m.Primer_Brand__ActionMenu-module__ActionMenu__menu--pos-outside-bottom___KAAm0{margin-block-start:var(--base-size-4)}.Primer_Brand__ActionMenu-module__ActionMenu__menu--small___xbb8m.Primer_Brand__ActionMenu-module__ActionMenu__menu--pos-outside-top___4TZek{margin-block-start:calc(var(--base-size-4) * -1)}.Primer_Brand__ActionMenu-module__ActionMenu__menu___BEldF::-webkit-scrollbar{width:var(--base-size-12)}.Primer_Brand__ActionMenu-module__ActionMenu__menu___BEldF::-webkit-scrollbar-track{border-left:1px solid var(--brand-color-border-muted);border-top-right-radius:var(--brand-borderRadius-large);border-bottom-right-radius:var(--brand-borderRadius-large)}.Primer_Brand__ActionMenu-module__ActionMenu__menu___BEldF::-webkit-scrollbar-thumb{border-radius:var(--brand-borderRadius-medium);border:1px solid var(--brand-color-border-default);background-color:var(--brand-ActionMenu-color-scrollbar-thumb-bg)}.Primer_Brand__ActionMenu-module__ActionMenu__item___2FZw4{border-radius:var(--brand-borderRadius-medium);flex:1 0 auto;grid-template-columns:min-content 1fr;grid-template-areas:"leadingVisual text";align-items:center;list-style:none;display:grid}.Primer_Brand__ActionMenu-module__ActionMenu__item-anchor___dX7CI{grid-template-columns:subgrid;grid-template-rows:subgrid;grid-gap:var(--base-size-8);align-items:center;gap:var(--base-size-8);color:var(--brand-color-text-default);grid-area:1/1/-1/-1;-webkit-text-decoration:none;text-decoration:none;display:grid}.Primer_Brand__ActionMenu-module__ActionMenu__item-anchor--disabled___Lx1Az{pointer-events:none;cursor:not-allowed}.Primer_Brand__ActionMenu-module__ActionMenu__item-anchor___dX7CI:focus-visible{box-shadow:none;outline:none}.Primer_Brand__ActionMenu-module__ActionMenu__item___2FZw4:has(.Primer_Brand__ActionMenu-module__ActionMenu__item-anchor___dX7CI:focus-visible){box-shadow:0 0 0 var(--focus-outline-width) var(--brand-color-focus);outline:none;transition:none}.Primer_Brand__ActionMenu-module__ActionMenu__item--medium___YWN8M{padding:var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal);min-height:var(--brand-control-medium-size)}.Primer_Brand__ActionMenu-module__ActionMenu__item--medium___YWN8M:has(.Primer_Brand__ActionMenu-module__ActionMenu__item-anchor___dX7CI){padding:0}.Primer_Brand__ActionMenu-module__ActionMenu__item--medium___YWN8M .Primer_Brand__ActionMenu-module__ActionMenu__item-anchor___dX7CI{padding:var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal)}.Primer_Brand__ActionMenu-module__ActionMenu__item--small___MOwms{padding:var(--base-size-8) var(--brand-control-small-paddingInline-condensed)}.Primer_Brand__ActionMenu-module__ActionMenu__item___2FZw4[aria-disabled=true]{cursor:not-allowed}.Primer_Brand__ActionMenu-module__ActionMenu__item___2FZw4:hover:not(.Primer_Brand__ActionMenu-module__ActionMenu__item___2FZw4[aria-disabled=true]){cursor:pointer;background-color:var(--brand-ActionMenu-color-item-hover)}.Primer_Brand__ActionMenu-module__ActionMenu__item--selection-type-single___Us_p_{padding-right:var(--base-size-48)}.Primer_Brand__ActionMenu-module__ActionMenu__item___2FZw4:focus-visible{box-shadow:0 0 0 var(--focus-outline-width) var(--brand-color-focus);outline:none;transition:none}.Primer_Brand__ActionMenu-module__ActionMenu__item-leadingVisual___WSTdj{min-width:var(--base-size-16);margin-right:var(--brand-control-medium-gap);color:var(--brand-color-text-default);pointer-events:none;grid-area:leadingVisual;display:flex}.Primer_Brand__ActionMenu-module__ActionMenu__item-text___agGYz{grid-area:text;width:max-content;display:grid}.Primer_Brand__ActionMenu-module__ActionMenu__item-text___agGYz>span{line-height:var(--brand-control-medium-lineBoxHeight)}.Primer_Brand__ActionMenu-module__ActionMenu__item-icon___2a7ve{fill:var(--brand-color-text-default)}.Primer_Brand__ActionMenu-module__ActionMenu__item-content--disabled___rRo6_{color:var(--base-color-scale-gray-3)}.Primer_Brand__ActionMenu-module__ActionMenu__item-icon--disabled___BjIIo{fill:var(--base-color-scale-gray-3)}@media (forced-colors:active){.Primer_Brand__ActionMenu-module__ActionMenu__item___2FZw4:focus-visible{outline:var(--brand-borderWidth-thick) solid Highlight;outline-offset:var(--base-size-2)}}@media (prefers-reduced-motion:reduce){.Primer_Brand__ActionMenu-module__ActionMenu___xLxGU,.Primer_Brand__ActionMenu-module__ActionMenu___xLxGU:before,.Primer_Brand__ActionMenu-module__ActionMenu___xLxGU:after,.Primer_Brand__ActionMenu-module__ActionMenu___xLxGU *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@@ -1,4 +1,4 @@
1
- import './ActionMenu.module-Km0HNn_2.css';var e = {
1
+ import './ActionMenu.module-BAeHTqHw.css';var e = {
2
2
  ActionMenu: "Primer_Brand__ActionMenu-module__ActionMenu___xLxGU",
3
3
  "ActionMenu--disabled": "Primer_Brand__ActionMenu-module__ActionMenu--disabled___UsizV",
4
4
  ActionMenu__button: "Primer_Brand__ActionMenu-module__ActionMenu__button___vFLAF",
@@ -9,6 +9,7 @@ import './ActionMenu.module-Km0HNn_2.css';var e = {
9
9
  "ActionMenu__innerButton--split-button": "Primer_Brand__ActionMenu-module__ActionMenu__innerButton--split-button___JwpBc",
10
10
  "ActionMenu__innerButton--subtle": "Primer_Brand__ActionMenu-module__ActionMenu__innerButton--subtle___9VQgI",
11
11
  "ActionMenu__innerButton--medium": "Primer_Brand__ActionMenu-module__ActionMenu__innerButton--medium___C2bJi",
12
+ "ActionMenu__inner-button-dropdown-icon": "Primer_Brand__ActionMenu-module__ActionMenu__inner-button-dropdown-icon___IGvTk",
12
13
  "ActionMenu__innerButton--disabled": "Primer_Brand__ActionMenu-module__ActionMenu__innerButton--disabled___WrkOb",
13
14
  ActionMenu__menu: "Primer_Brand__ActionMenu-module__ActionMenu__menu___BEldF",
14
15
  "ActionMenu__menu--small": "Primer_Brand__ActionMenu-module__ActionMenu__menu--small___xbb8m",
@@ -1 +1 @@
1
- {"version":3,"file":"ActionMenu.module.js","names":[],"sources":["../../src/ActionMenu/ActionMenu.module.css"],"sourcesContent":[".ActionMenu {\n --focus-outline-width: 3px;\n position: relative;\n}\n\n.ActionMenu--disabled {\n cursor: not-allowed;\n}\n\n.ActionMenu__button {\n height: auto;\n}\n\n.ActionMenu__button--default {\n /* avoid specificity issues */\n --brand-borderRadius-medium: var(--brand-borderRadius-full);\n}\n\n.ActionMenu__button--small {\n padding: calc(var(--base-size-4) / 2) var(--base-size-12);\n}\n\n.ActionMenu__button--medium {\n padding: calc(var(--base-size-8) + 2px) var(--base-size-28);\n}\n\n.ActionMenu__button > span:first-of-type {\n max-width: 200px;\n overflow: hidden;\n}\n\n.ActionMenu__button--split-button {\n display: inline-flex;\n padding: 0;\n border-radius: var(--brand-borderRadius-medium);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n background-color: var(--brand-color-canvas-default);\n}\n\n.ActionMenu__innerButton--split-button:first-child,\n.ActionMenu__innerButton--split-button:first-child:hover {\n position: relative;\n z-index: 1;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.ActionMenu__innerButton--split-button:first-child::before,\n.ActionMenu__innerButton--split-button:hover:first-child::before {\n content: '';\n position: absolute;\n top: calc(var(--base-size-2) / -2);\n right: calc(var(--base-size-2) * -1);\n width: var(--brand-borderWidth-thin);\n height: calc(100% + var(--base-size-2));\n background-color: var(--brand-color-border-muted);\n}\n\n.ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button::before {\n top: calc(var(--base-size-2) * -1);\n height: calc(100% + var(--base-size-4));\n}\n\n.ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button:active:first-child::before {\n width: 0;\n}\n\n.ActionMenu__innerButton--medium.ActionMenu__innerButton--split-button,\n.ActionMenu__innerButton--split-button:last-child {\n padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal); /* Override the default button padding */\n}\n\n.ActionMenu__innerButton--split-button:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n position: relative;\n z-index: 0;\n}\n\n.ActionMenu__innerButton--disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.ActionMenu__menu {\n position: absolute;\n z-index: 100;\n padding: var(--base-size-12);\n min-width: min-content;\n visibility: hidden;\n background-color: var(--brand-color-canvas-default);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n border-radius: var(--brand-borderRadius-large);\n max-height: 460px;\n overflow-y: auto;\n box-shadow: 0px 100px 80px rgba(0, 0, 0, 0.01), 0px 41px 33px rgba(0, 0, 0, 0.02), 0px 22px 17px rgba(0, 0, 0, 0.02),\n 0px 12px 10px rgba(0, 0, 0, 0.03), 0px 6px 5px rgba(0, 0, 0, 0.04), 0px 2px 2px rgba(0, 0, 0, 0.07);\n}\n\n.ActionMenu__menu--small {\n padding: var(--base-size-8);\n}\n\n.ActionMenu__menu--medium {\n padding: var(--base-size-12);\n}\n\n.ActionMenu__menu--visible {\n visibility: visible;\n}\n\n.ActionMenu__menu--pos-outside-bottom {\n animation: 189ms var(--brand-animation-easing-glide) 0s 1 normal none running overlay-appear-outside-bottom;\n}\n\n.ActionMenu__menu--pos-outside-top {\n animation: 189ms var(--brand-animation-easing-glide) 0s 1 normal none running overlay-appear-outside-top;\n}\n\n@keyframes overlay-appear-outside-bottom {\n 0% {\n opacity: 0;\n transform: translateY(-10px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes overlay-appear-outside-top {\n 0% {\n opacity: 0;\n transform: translateY(10px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.ActionMenu__menu--medium.ActionMenu__menu--pos-outside-bottom {\n margin-block-start: var(--base-size-8);\n}\n\n.ActionMenu__menu--medium.ActionMenu__menu--pos-outside-top {\n margin-block-start: calc(var(--base-size-8) * -1);\n}\n\n.ActionMenu__menu--small.ActionMenu__menu--pos-outside-bottom {\n margin-block-start: var(--base-size-4);\n}\n\n.ActionMenu__menu--small.ActionMenu__menu--pos-outside-top {\n margin-block-start: calc(var(--base-size-4) * -1);\n}\n\n.ActionMenu__menu::-webkit-scrollbar {\n width: var(--base-size-12);\n}\n\n.ActionMenu__menu::-webkit-scrollbar-track {\n border-left: 1px solid var(--brand-color-border-muted);\n border-top-right-radius: var(--brand-borderRadius-large);\n border-bottom-right-radius: var(--brand-borderRadius-large);\n}\n\n.ActionMenu__menu::-webkit-scrollbar-thumb {\n border-radius: var(--brand-borderRadius-medium);\n border: 1px solid var(--brand-color-border-default);\n background-color: var(--brand-ActionMenu-color-scrollbar-thumb-bg);\n}\n\n.ActionMenu__item {\n flex: 1 0 auto;\n display: grid;\n align-items: center;\n grid-template-areas: 'leadingVisual text';\n grid-template-columns: min-content 1fr;\n list-style: none;\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.ActionMenu__item-anchor {\n display: grid;\n grid-template-columns: subgrid;\n grid-template-rows: subgrid;\n grid-column: 1 / -1;\n grid-row: 1 / -1;\n align-items: center;\n gap: var(--base-size-8);\n text-decoration: none;\n color: var(--brand-color-text-default);\n}\n\n.ActionMenu__item-anchor--disabled {\n pointer-events: none;\n cursor: not-allowed;\n}\n\n.ActionMenu__item-anchor:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n.ActionMenu__item:has(.ActionMenu__item-anchor:focus-visible) {\n outline: none;\n box-shadow: 0 0 0 var(--focus-outline-width) var(--brand-color-focus);\n transition: none;\n}\n\n.ActionMenu__item--medium {\n padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal);\n min-height: var(--brand-control-medium-size);\n}\n\n.ActionMenu__item--medium:has(.ActionMenu__item-anchor) {\n padding: 0;\n}\n\n.ActionMenu__item--medium .ActionMenu__item-anchor {\n padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal);\n}\n\n.ActionMenu__item--small {\n padding: var(--base-size-8) var(--brand-control-small-paddingInline-condensed);\n}\n\n.ActionMenu__item[aria-disabled='true'] {\n cursor: not-allowed;\n}\n\n.ActionMenu__item:hover:not(.ActionMenu__item[aria-disabled='true']) {\n cursor: pointer;\n background-color: var(--brand-ActionMenu-color-item-hover);\n}\n\n.ActionMenu__item--selection-type-single {\n padding-right: var(--base-size-48);\n}\n\n.ActionMenu__item:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--focus-outline-width) var(--brand-color-focus);\n transition: none;\n}\n\n.ActionMenu__item-leadingVisual {\n display: flex;\n min-width: var(--base-size-16);\n margin-right: var(--brand-control-medium-gap);\n color: var(--brand-color-text-default);\n pointer-events: none;\n grid-area: leadingVisual / leadingVisual;\n}\n\n.ActionMenu__item-text {\n grid-area: text / text;\n /* display grid collapses the text line box height for optical alignment */\n display: grid;\n width: max-content;\n}\n\n.ActionMenu__item-text > span {\n line-height: var(--brand-control-medium-lineBoxHeight);\n}\n\n.ActionMenu__item-icon {\n fill: var(--brand-color-text-default);\n}\n\n.ActionMenu__item-content--disabled {\n color: var(--base-color-scale-gray-3);\n}\n\n.ActionMenu__item-icon--disabled {\n fill: var(--base-color-scale-gray-3);\n}\n\n@media (forced-colors: active) {\n .ActionMenu__item:focus-visible {\n outline: var(--brand-borderWidth-thick) solid Highlight;\n outline-offset: var(--base-size-2);\n }\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n .ActionMenu,\n .ActionMenu::before,\n .ActionMenu::after,\n .ActionMenu * {\n animation: none !important;\n transition: none !important;\n scroll-behavior: auto !important;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"ActionMenu.module.js","names":[],"sources":["../../src/ActionMenu/ActionMenu.module.css"],"sourcesContent":[".ActionMenu {\n --focus-outline-width: 3px;\n position: relative;\n}\n\n.ActionMenu--disabled {\n cursor: not-allowed;\n}\n\n.ActionMenu__button {\n height: auto;\n}\n\n.ActionMenu__button--default {\n /* avoid specificity issues */\n --brand-borderRadius-medium: var(--brand-borderRadius-full);\n}\n\n.ActionMenu__button--small {\n padding: calc(var(--base-size-4) / 2) var(--base-size-12);\n}\n\n.ActionMenu__button--medium {\n padding: calc(var(--base-size-8) + 2px) var(--base-size-28);\n}\n\n.ActionMenu__button > span:first-of-type {\n max-width: 200px;\n overflow: hidden;\n}\n\n.ActionMenu__button--split-button {\n display: inline-flex;\n padding: 0;\n border-radius: var(--brand-borderRadius-medium);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n background-color: var(--brand-color-canvas-default);\n}\n\n.ActionMenu__innerButton--split-button:first-child,\n.ActionMenu__innerButton--split-button:first-child:hover {\n position: relative;\n z-index: 1;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.ActionMenu__innerButton--split-button:first-child::before,\n.ActionMenu__innerButton--split-button:hover:first-child::before {\n content: '';\n position: absolute;\n top: calc(var(--base-size-2) / -2);\n right: calc(var(--base-size-2) * -1);\n width: var(--brand-borderWidth-thin);\n height: calc(100% + var(--base-size-2));\n background-color: var(--brand-color-border-muted);\n}\n\n.ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button::before {\n top: calc(var(--base-size-2) * -1);\n height: calc(100% + var(--base-size-4));\n}\n\n.ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button:active:first-child::before {\n width: 0;\n}\n\n.ActionMenu__innerButton--medium.ActionMenu__innerButton--split-button,\n.ActionMenu__innerButton--split-button:last-child {\n padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal); /* Override the default button padding */\n}\n\n.ActionMenu__inner-button-dropdown-icon {\n vertical-align: middle !important;\n}\n\n.ActionMenu__innerButton--split-button:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n position: relative;\n z-index: 0;\n}\n\n.ActionMenu__innerButton--disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.ActionMenu__menu {\n position: absolute;\n z-index: 100;\n padding: var(--base-size-12);\n min-width: min-content;\n visibility: hidden;\n background-color: var(--brand-color-canvas-default);\n border: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);\n border-radius: var(--brand-borderRadius-large);\n max-height: 460px;\n overflow-y: auto;\n box-shadow: 0px 100px 80px rgba(0, 0, 0, 0.01), 0px 41px 33px rgba(0, 0, 0, 0.02), 0px 22px 17px rgba(0, 0, 0, 0.02),\n 0px 12px 10px rgba(0, 0, 0, 0.03), 0px 6px 5px rgba(0, 0, 0, 0.04), 0px 2px 2px rgba(0, 0, 0, 0.07);\n}\n\n.ActionMenu__menu--small {\n padding: var(--base-size-8);\n}\n\n.ActionMenu__menu--medium {\n padding: var(--base-size-12);\n}\n\n.ActionMenu__menu--visible {\n visibility: visible;\n}\n\n.ActionMenu__menu--pos-outside-bottom {\n animation: 189ms var(--brand-animation-easing-glide) 0s 1 normal none running overlay-appear-outside-bottom;\n}\n\n.ActionMenu__menu--pos-outside-top {\n animation: 189ms var(--brand-animation-easing-glide) 0s 1 normal none running overlay-appear-outside-top;\n}\n\n@keyframes overlay-appear-outside-bottom {\n 0% {\n opacity: 0;\n transform: translateY(-10px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes overlay-appear-outside-top {\n 0% {\n opacity: 0;\n transform: translateY(10px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.ActionMenu__menu--medium.ActionMenu__menu--pos-outside-bottom {\n margin-block-start: var(--base-size-8);\n}\n\n.ActionMenu__menu--medium.ActionMenu__menu--pos-outside-top {\n margin-block-start: calc(var(--base-size-8) * -1);\n}\n\n.ActionMenu__menu--small.ActionMenu__menu--pos-outside-bottom {\n margin-block-start: var(--base-size-4);\n}\n\n.ActionMenu__menu--small.ActionMenu__menu--pos-outside-top {\n margin-block-start: calc(var(--base-size-4) * -1);\n}\n\n.ActionMenu__menu::-webkit-scrollbar {\n width: var(--base-size-12);\n}\n\n.ActionMenu__menu::-webkit-scrollbar-track {\n border-left: 1px solid var(--brand-color-border-muted);\n border-top-right-radius: var(--brand-borderRadius-large);\n border-bottom-right-radius: var(--brand-borderRadius-large);\n}\n\n.ActionMenu__menu::-webkit-scrollbar-thumb {\n border-radius: var(--brand-borderRadius-medium);\n border: 1px solid var(--brand-color-border-default);\n background-color: var(--brand-ActionMenu-color-scrollbar-thumb-bg);\n}\n\n.ActionMenu__item {\n flex: 1 0 auto;\n display: grid;\n align-items: center;\n grid-template-areas: 'leadingVisual text';\n grid-template-columns: min-content 1fr;\n list-style: none;\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.ActionMenu__item-anchor {\n display: grid;\n grid-template-columns: subgrid;\n grid-template-rows: subgrid;\n grid-column: 1 / -1;\n grid-row: 1 / -1;\n align-items: center;\n gap: var(--base-size-8);\n text-decoration: none;\n color: var(--brand-color-text-default);\n}\n\n.ActionMenu__item-anchor--disabled {\n pointer-events: none;\n cursor: not-allowed;\n}\n\n.ActionMenu__item-anchor:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n.ActionMenu__item:has(.ActionMenu__item-anchor:focus-visible) {\n outline: none;\n box-shadow: 0 0 0 var(--focus-outline-width) var(--brand-color-focus);\n transition: none;\n}\n\n.ActionMenu__item--medium {\n padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal);\n min-height: var(--brand-control-medium-size);\n}\n\n.ActionMenu__item--medium:has(.ActionMenu__item-anchor) {\n padding: 0;\n}\n\n.ActionMenu__item--medium .ActionMenu__item-anchor {\n padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal);\n}\n\n.ActionMenu__item--small {\n padding: var(--base-size-8) var(--brand-control-small-paddingInline-condensed);\n}\n\n.ActionMenu__item[aria-disabled='true'] {\n cursor: not-allowed;\n}\n\n.ActionMenu__item:hover:not(.ActionMenu__item[aria-disabled='true']) {\n cursor: pointer;\n background-color: var(--brand-ActionMenu-color-item-hover);\n}\n\n.ActionMenu__item--selection-type-single {\n padding-right: var(--base-size-48);\n}\n\n.ActionMenu__item:focus-visible {\n outline: none;\n box-shadow: 0 0 0 var(--focus-outline-width) var(--brand-color-focus);\n transition: none;\n}\n\n.ActionMenu__item-leadingVisual {\n display: flex;\n min-width: var(--base-size-16);\n margin-right: var(--brand-control-medium-gap);\n color: var(--brand-color-text-default);\n pointer-events: none;\n grid-area: leadingVisual / leadingVisual;\n}\n\n.ActionMenu__item-text {\n grid-area: text / text;\n /* display grid collapses the text line box height for optical alignment */\n display: grid;\n width: max-content;\n}\n\n.ActionMenu__item-text > span {\n line-height: var(--brand-control-medium-lineBoxHeight);\n}\n\n.ActionMenu__item-icon {\n fill: var(--brand-color-text-default);\n}\n\n.ActionMenu__item-content--disabled {\n color: var(--base-color-scale-gray-3);\n}\n\n.ActionMenu__item-icon--disabled {\n fill: var(--base-color-scale-gray-3);\n}\n\n@media (forced-colors: active) {\n .ActionMenu__item:focus-visible {\n outline: var(--brand-borderWidth-thick) solid Highlight;\n outline-offset: var(--base-size-2);\n }\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n .ActionMenu,\n .ActionMenu::before,\n .ActionMenu::after,\n .ActionMenu * {\n animation: none !important;\n transition: none !important;\n scroll-behavior: auto !important;\n }\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AnchorNav.d.ts","sourceRoot":"","sources":["../../src/AnchorNav/AnchorNav.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0D,MAAM,OAAO,CAAA;AAI9E,OAAO,EAAS,eAAe,EAAO,MAAM,KAAK,CAAA;AAKjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAEnD;;GAEG;AACH,OAAO,8GAA8G,CAAA;AAwBrH,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG;IACpD;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC3B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;AAEzC,iBAAS,aAAa,CAAC,EAAC,QAAQ,EAAE,oBAA4B,EAAE,eAAuB,EAAE,GAAG,IAAI,EAAC,EAAE,cAAc,2CAiOhH;AAED,KAAK,gCAAgC,GAAG;IACtC;;OAEG;IACH,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC/B,CAAA;AAED,KAAK,kBAAkB,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG;IACvD;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,mBAAmB,CAAC,EAAE,gCAAgC,CAAA;IACtD,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,sBAAsB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CACrD,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAA;AAE/D,iBAAS,WAAW,CAAC,EACnB,SAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,mBAA4C,EAC5C,sBAAsB,EACtB,GAAG,IAAI,EACR,EAAE,kBAAkB,2CAuEpB;AAED,KAAK,oBAAoB,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,GAC7D,eAAe,CAAA;AAEjB,iBAAS,UAAU,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAqB,EAAE,IAAc,EAAE,GAAG,IAAI,EAAC,EAAE,oBAAoB,2CAezG;AAED,iBAAS,mBAAmB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAqB,EAAE,IAAc,EAAE,GAAG,IAAI,EAAC,EAAE,oBAAoB,2CAelH;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;CAKpB,CAAA"}
1
+ {"version":3,"file":"AnchorNav.d.ts","sourceRoot":"","sources":["../../src/AnchorNav/AnchorNav.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0D,MAAM,OAAO,CAAA;AAI9E,OAAO,EAAS,eAAe,EAAO,MAAM,KAAK,CAAA;AAKjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAEnD;;GAEG;AACH,OAAO,8GAA8G,CAAA;AAwBrH,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG;IACpD;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC3B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;AAEzC,iBAAS,aAAa,CAAC,EAAC,QAAQ,EAAE,oBAA4B,EAAE,eAAuB,EAAE,GAAG,IAAI,EAAC,EAAE,cAAc,2CAiOhH;AAED,KAAK,gCAAgC,GAAG;IACtC;;OAEG;IACH,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC/B,CAAA;AAED,KAAK,kBAAkB,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG;IACvD;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,mBAAmB,CAAC,EAAE,gCAAgC,CAAA;IACtD,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,sBAAsB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CACrD,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAA;AAE/D,iBAAS,WAAW,CAAC,EACnB,SAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,mBAA4C,EAC5C,sBAAsB,EACtB,GAAG,IAAI,EACR,EAAE,kBAAkB,2CAuEpB;AAED,KAAK,oBAAoB,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,GAC7D,eAAe,CAAA;AAEjB,iBAAS,UAAU,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAqB,EAAE,IAAc,EAAE,GAAG,IAAI,EAAC,EAAE,oBAAoB,2CAczG;AAED,iBAAS,mBAAmB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAqB,EAAE,IAAc,EAAE,GAAG,IAAI,EAAC,EAAE,oBAAoB,2CAclH;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;CAKpB,CAAA"}
@@ -193,7 +193,6 @@ function x({ children: t, href: n, variant: r = "secondary", size: i = "small",
193
193
  variant: r,
194
194
  className: e(c["AnchorNav-action"]),
195
195
  href: n,
196
- hasArrow: !1,
197
196
  "data-testid": v.action,
198
197
  size: i,
199
198
  ...o,
@@ -206,7 +205,6 @@ function S({ children: t, href: n, variant: r = "secondary", size: i = "small",
206
205
  variant: r,
207
206
  className: e(c["AnchorNav-action"]),
208
207
  href: n,
209
- hasArrow: !1,
210
208
  "data-testid": v.secondaryAction,
211
209
  size: i,
212
210
  ...o,
@@ -1 +1 @@
1
- {"version":3,"file":"AnchorNav.js","names":[],"sources":["../../src/AnchorNav/AnchorNav.tsx"],"sourcesContent":["import {clsx} from 'clsx'\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {ChevronDownIcon, ChevronUpIcon} from '@primer/octicons-react'\nimport {useId} from '../hooks/useId'\n\nimport {Button, ButtonBaseProps, Text} from '../'\nimport {useWindowSize} from '../hooks/useWindowSize'\nimport {useKeyboardEscape} from '../hooks/useKeyboardEscape'\nimport {useExpandedMenu} from './useExpandedMenu'\n\nimport type {BaseProps} from '../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './AnchorNav.module.css'\n\nconst testIds = {\n root: 'AnchorNav',\n get menuButton() {\n return `${this.root}-menu-button`\n },\n get menuLinks() {\n return `${this.root}-menu-links`\n },\n get action() {\n return `${this.root}-action`\n },\n get secondaryAction() {\n return `${this.root}-secondary-action`\n },\n get navSpacer() {\n return `${this.root}-nav-spacer`\n },\n}\n\nexport type AnchorNavProps = BaseProps<HTMLElement> & {\n /**\n * Accepts all of `AnchorNav.Item` and `AnchorNav.Action` child components.\n */\n children: React.ReactNode[]\n /**\n * Enable the idle state background color, which is transparent by default.\n */\n enableDefaultBgColor?: boolean\n /**\n * When true, the anchor nav will hide until it is sticky.\n */\n hideUntilSticky?: boolean\n} & React.ComponentPropsWithoutRef<'nav'>\n\nfunction AnchorNavBase({children, enableDefaultBgColor = false, hideUntilSticky = false, ...rest}: AnchorNavProps) {\n const [menuOpen, setMenuOpen] = useState(false)\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false)\n const [currentActiveNavItem, setCurrentActiveNavItem] = useState<string | null>()\n const [intersectionEntry, setIntersectionEntry] = useState<IntersectionObserverEntry>()\n const [initialYOffset, setInitialYOffset] = useState<undefined | number>()\n const [navShouldFix, setNavShouldFix] = useState<boolean>(false)\n const [navHeight, setNavHeight] = useState<number>(0)\n\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const rootRef = useRef<HTMLElement | null>(null)\n const linkContainerRef = useRef<HTMLDivElement | null>(null)\n const innerContainerRef = useRef<HTMLDivElement | null>(null)\n\n const {isLarge} = useWindowSize()\n const idForLinkContainer = useId()\n\n const closeMenuCallback = useCallback(() => setMenuOpen(false), [setMenuOpen])\n const toggleMenuCallback = useCallback(() => setMenuOpen(!menuOpen), [menuOpen])\n\n const ValidChildren = useMemo(\n () =>\n React.Children.toArray(children).filter(\n (child: React.ReactNode): boolean => React.isValidElement(child) && typeof child.type !== 'string',\n ),\n [children],\n )\n\n useEffect(() => {\n if (initialYOffset === undefined && intersectionEntry) {\n setInitialYOffset(intersectionEntry.boundingClientRect.y + window.scrollY)\n }\n }, [initialYOffset, intersectionEntry])\n\n const handleIntersectionUpdate = ([nextEntry]: IntersectionObserverEntry[]): void => {\n setIntersectionEntry(nextEntry)\n }\n\n useKeyboardEscape(closeMenuCallback)\n useExpandedMenu(menuOpen, linkContainerRef, innerContainerRef, !isLarge, closeMenuCallback)\n\n useEffect(() => {\n if (wrapperRef.current) {\n const height = wrapperRef.current.offsetHeight\n setNavHeight(height)\n }\n }, [isLarge])\n\n useEffect(() => {\n const queryResult = window.matchMedia('(prefers-reduced-motion: reduce)')\n\n setPrefersReducedMotion(queryResult.matches)\n }, [])\n\n useEffect(() => {\n const handler = () => {\n if (initialYOffset) {\n const isPastInitialYOffset = window.pageYOffset > initialYOffset\n setNavShouldFix(isPastInitialYOffset)\n }\n }\n // eslint-disable-next-line github/prefer-observers\n window.addEventListener('scroll', handler)\n return () => {\n window.removeEventListener('scroll', handler)\n }\n }, [initialYOffset])\n\n useEffect(() => {\n const node = hideUntilSticky ? wrapperRef.current : rootRef.current\n\n const supportsIntersectionObserver = !!window.IntersectionObserver\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!supportsIntersectionObserver || !node) return\n\n const topOfWindow = '0px 0px -100%'\n const observerParams = {threshold: 0, root: null, rootMargin: topOfWindow}\n const observer = new IntersectionObserver(handleIntersectionUpdate, observerParams)\n\n observer.observe(node)\n\n return () => observer.disconnect()\n }, [hideUntilSticky])\n\n const handleMenuToggle = useCallback(\n event => {\n event?.preventDefault()\n toggleMenuCallback()\n },\n [toggleMenuCallback],\n )\n\n const handleUpdateToCurrentActiveNavItem = useCallback(\n (id: string | null) => {\n setCurrentActiveNavItem(id)\n },\n [setCurrentActiveNavItem],\n )\n\n const numLinks = ValidChildren.filter(child => React.isValidElement(child) && child.type === NavLinkBase).length\n const Links = ValidChildren.map((child, index) => {\n if (React.isValidElement<AnchorNavLinkProps>(child) && child.type === NavLinkBase) {\n const defaultProps: AnchorNavLinkProps = {\n href: child.props.href,\n toggleMenuCallback,\n prefersReducedMotion,\n updateCurrentActiveNav: handleUpdateToCurrentActiveNavItem,\n alignment: numLinks < 4 ? 'start' : 'center',\n }\n return React.cloneElement(child, {\n isActive: index === 0,\n ...defaultProps,\n })\n }\n\n return null\n })\n .filter(Boolean)\n .slice(0, 5)\n\n const Action = ValidChildren.reduce<React.ReactElement<AnchorNavActionProps>[]>((acc, child) => {\n if (React.isValidElement<AnchorNavActionProps>(child) && child.type === ActionBase) {\n acc.push(React.cloneElement(child))\n }\n return acc\n }, [])\n\n const SecondaryAction = ValidChildren.reduce<React.ReactElement<AnchorNavActionProps>[]>((acc, child) => {\n if (React.isValidElement<AnchorNavActionProps>(child) && child.type === SecondaryActionBase) {\n acc.push(React.cloneElement(child))\n }\n return acc\n }, [])\n\n const hasLargerSizeActions =\n Action.some(action => action.props.size && action.props.size !== 'small') ||\n SecondaryAction.some(action => action.props.size && action.props.size !== 'small')\n\n /* On page load, the rootMargin positions and/or thresholds of the IntersectionObserver\n * may not be met depending on the position of the AnchorNav on the page.\n * The following useEffect ensures that the first link always marked as the active link, until\n * the observer kicks in. Without this, the active link is undefined.\n */\n useEffect(() => {\n if (!currentActiveNavItem && Links.length > 0) {\n setCurrentActiveNavItem(Links[0]?.props.children as string)\n }\n }, [currentActiveNavItem, Links])\n\n const hasTwoActions = Action.length > 0 && SecondaryAction.length > 0\n\n return (\n <div ref={wrapperRef}>\n <nav\n ref={rootRef}\n aria-label=\"Anchored navigation\"\n data-sticky={navShouldFix.toString()}\n className={clsx(\n styles.AnchorNav,\n hideUntilSticky && styles['AnchorNav--hide-until-sticky'],\n navShouldFix && styles['AnchorNav--stuck'],\n menuOpen && styles['AnchorNav--expanded'],\n enableDefaultBgColor && styles['AnchorNav--with-default-background-color'],\n )}\n {...rest}\n >\n <div\n ref={innerContainerRef}\n className={clsx(\n styles['AnchorNav-inner-container'],\n menuOpen && styles['AnchorNav-inner-container--expanded'],\n )}\n >\n <button\n onClick={handleMenuToggle}\n className={clsx(styles['AnchorNav-menu-button'])}\n aria-expanded={menuOpen}\n aria-controls={idForLinkContainer}\n data-testid={testIds.menuButton}\n >\n {menuOpen ? (\n <ChevronUpIcon size={16} className={styles['AnchorNav-menu-button-arrow']} fill=\"currentcolor\" />\n ) : (\n <ChevronDownIcon size={16} className={styles['AnchorNav-menu-button-arrow']} fill=\"currentcolor\" />\n )}\n <span className=\"visually-hidden\">Anchor navigation menu. Currently selected: </span>\n <Text as=\"span\" className={clsx(styles['AnchorNav-link-label'])}>\n {currentActiveNavItem}\n </Text>\n </button>\n {/**Replace with unique ids and test ids */}\n <div\n id={idForLinkContainer}\n data-testid={testIds.menuLinks}\n className={styles['AnchorNav-link-container']}\n ref={linkContainerRef}\n >\n {Links}\n </div>\n <span\n data-forward-focus=\"true\"\n className={clsx(\n styles['AnchorNav__actionsContainer'],\n hasLargerSizeActions && styles['AnchorNav__actionsContainer--no-offset'],\n hasTwoActions && styles['AnchorNav__actionsContainer--multiple'],\n )}\n >\n {Action.length && SecondaryAction.length && React.isValidElement<AnchorNavActionProps>(Action[0])\n ? React.cloneElement(Action[0], {\n variant: 'primary',\n })\n : Action}\n {SecondaryAction}\n </span>\n </div>\n <span\n className={clsx(menuOpen && styles['AnchorNav-overlay--expanded'])}\n onClick={closeMenuCallback}\n aria-hidden\n />\n </nav>\n {navShouldFix && <div style={{height: navHeight}} aria-hidden=\"true\" data-testid={testIds.navSpacer} />}\n </div>\n )\n}\n\ntype AnchorNavLinkIntersectionOptions = {\n /**\n * The area of the element that should trigger the next linked section to be highlighted.\n */\n rootMargin: 'start' | 'middle'\n}\n\ntype AnchorNavLinkProps = BaseProps<HTMLAnchorElement> & {\n /**\n * Optional text alignment for the link. Defaults to 'start' if there are less than 4 links, otherwise 'center'.\n */\n alignment?: 'start' | 'center'\n /**\n * Required path or location for the anchor to link to.\n */\n href: string\n /**\n * Optional boolean to indicate if the link is the current active link.\n * Typically doesn't need to be sset unless custom animation is being used.\n */\n isActive?: boolean // internal prop, not exposed in docs\n toggleMenuCallback?: () => void // internal prop, not exposed in docs\n intersectionOptions?: AnchorNavLinkIntersectionOptions // internal prop, not exposed in docs\n prefersReducedMotion?: boolean // internal prop, not exposed in docs\n updateCurrentActiveNav?: (id: string | null) => void // internal prop, not exposed in docs\n} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>\n\nfunction NavLinkBase({\n alignment = 'start',\n children,\n href,\n isActive,\n toggleMenuCallback,\n prefersReducedMotion,\n intersectionOptions = {rootMargin: 'middle'},\n updateCurrentActiveNav,\n ...rest\n}: AnchorNavLinkProps) {\n const {isLarge} = useWindowSize()\n const [intersectionEntry, setIntersectionEntry] = useState<IntersectionObserverEntry>()\n\n const isAnchor = /^#/.test(href)\n const anchoredContentIsVisible = !!intersectionEntry?.isIntersecting\n\n const handleIntersectionUpdate = ([nextEntry]: IntersectionObserverEntry[]): void => {\n setIntersectionEntry(nextEntry)\n }\n\n useEffect(() => {\n const node = document.querySelector(isAnchor ? href : `#${href}`)\n\n const supportsIntersectionObserver = !!window.IntersectionObserver\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!supportsIntersectionObserver || !node) return\n\n const rootMarginTop = '0px'\n const rootMarginCenter = '-50% 0% -50% 0%'\n\n const rootMargin = intersectionOptions.rootMargin === 'start' ? rootMarginTop : rootMarginCenter\n\n const observerParams = {threshold: intersectionOptions.rootMargin === 'start' ? 0.4 : 0, root: null, rootMargin}\n\n const observer = new IntersectionObserver(handleIntersectionUpdate, observerParams)\n\n observer.observe(node)\n\n return () => observer.disconnect()\n }, [href, intersectionOptions.rootMargin, isAnchor])\n\n // updates root AnchorNav to notify of active section\n useEffect(() => {\n if (anchoredContentIsVisible && updateCurrentActiveNav && typeof children === 'string') {\n updateCurrentActiveNav(children)\n }\n }, [anchoredContentIsVisible, children, updateCurrentActiveNav])\n\n const handleClick = useCallback(() => {\n if (toggleMenuCallback && !isLarge) {\n toggleMenuCallback()\n }\n }, [isLarge, toggleMenuCallback])\n\n return (\n <a\n className={clsx(\n styles['AnchorNav-link'],\n styles[`AnchorNav-link--${alignment}`],\n anchoredContentIsVisible && styles['AnchorNav-link--is-active'],\n )}\n href={isAnchor ? href : `#${href}`}\n aria-current={anchoredContentIsVisible && 'true'}\n data-first={isActive}\n data-active={anchoredContentIsVisible ? 'true' : 'false'}\n onClick={handleClick}\n {...rest}\n >\n <Text\n as=\"span\"\n className={clsx(\n styles['AnchorNav-link-label'],\n anchoredContentIsVisible && styles['AnchorNav-link-label--is-active'],\n )}\n >\n {children}\n </Text>\n </a>\n )\n}\n\ntype AnchorNavActionProps = {\n /**\n * Required path or location for the action button to link to.\n */\n href: string\n} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> &\n ButtonBaseProps\n\nfunction ActionBase({children, href, variant = 'secondary', size = 'small', ...rest}: AnchorNavActionProps) {\n return (\n <Button\n as=\"a\"\n variant={variant}\n className={clsx(styles['AnchorNav-action'])}\n href={href}\n hasArrow={false}\n data-testid={testIds.action}\n size={size}\n {...rest}\n >\n {children}\n </Button>\n )\n}\n\nfunction SecondaryActionBase({children, href, variant = 'secondary', size = 'small', ...rest}: AnchorNavActionProps) {\n return (\n <Button\n as=\"a\"\n variant={variant}\n className={clsx(styles['AnchorNav-action'])}\n href={href}\n hasArrow={false}\n data-testid={testIds.secondaryAction}\n size={size}\n {...rest}\n >\n {children}\n </Button>\n )\n}\n\n/**\n * AnchorNav allows users to navigate to different sections of a page.\n * @see https://primer.style/brand/components/AnchorNav\n */\nexport const AnchorNav = Object.assign(AnchorNavBase, {\n Link: NavLinkBase,\n Action: ActionBase,\n SecondaryAction: SecondaryActionBase,\n testIds,\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"AnchorNav.js","names":[],"sources":["../../src/AnchorNav/AnchorNav.tsx"],"sourcesContent":["import {clsx} from 'clsx'\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {ChevronDownIcon, ChevronUpIcon} from '@primer/octicons-react'\nimport {useId} from '../hooks/useId'\n\nimport {Button, ButtonBaseProps, Text} from '../'\nimport {useWindowSize} from '../hooks/useWindowSize'\nimport {useKeyboardEscape} from '../hooks/useKeyboardEscape'\nimport {useExpandedMenu} from './useExpandedMenu'\n\nimport type {BaseProps} from '../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './AnchorNav.module.css'\n\nconst testIds = {\n root: 'AnchorNav',\n get menuButton() {\n return `${this.root}-menu-button`\n },\n get menuLinks() {\n return `${this.root}-menu-links`\n },\n get action() {\n return `${this.root}-action`\n },\n get secondaryAction() {\n return `${this.root}-secondary-action`\n },\n get navSpacer() {\n return `${this.root}-nav-spacer`\n },\n}\n\nexport type AnchorNavProps = BaseProps<HTMLElement> & {\n /**\n * Accepts all of `AnchorNav.Item` and `AnchorNav.Action` child components.\n */\n children: React.ReactNode[]\n /**\n * Enable the idle state background color, which is transparent by default.\n */\n enableDefaultBgColor?: boolean\n /**\n * When true, the anchor nav will hide until it is sticky.\n */\n hideUntilSticky?: boolean\n} & React.ComponentPropsWithoutRef<'nav'>\n\nfunction AnchorNavBase({children, enableDefaultBgColor = false, hideUntilSticky = false, ...rest}: AnchorNavProps) {\n const [menuOpen, setMenuOpen] = useState(false)\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false)\n const [currentActiveNavItem, setCurrentActiveNavItem] = useState<string | null>()\n const [intersectionEntry, setIntersectionEntry] = useState<IntersectionObserverEntry>()\n const [initialYOffset, setInitialYOffset] = useState<undefined | number>()\n const [navShouldFix, setNavShouldFix] = useState<boolean>(false)\n const [navHeight, setNavHeight] = useState<number>(0)\n\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const rootRef = useRef<HTMLElement | null>(null)\n const linkContainerRef = useRef<HTMLDivElement | null>(null)\n const innerContainerRef = useRef<HTMLDivElement | null>(null)\n\n const {isLarge} = useWindowSize()\n const idForLinkContainer = useId()\n\n const closeMenuCallback = useCallback(() => setMenuOpen(false), [setMenuOpen])\n const toggleMenuCallback = useCallback(() => setMenuOpen(!menuOpen), [menuOpen])\n\n const ValidChildren = useMemo(\n () =>\n React.Children.toArray(children).filter(\n (child: React.ReactNode): boolean => React.isValidElement(child) && typeof child.type !== 'string',\n ),\n [children],\n )\n\n useEffect(() => {\n if (initialYOffset === undefined && intersectionEntry) {\n setInitialYOffset(intersectionEntry.boundingClientRect.y + window.scrollY)\n }\n }, [initialYOffset, intersectionEntry])\n\n const handleIntersectionUpdate = ([nextEntry]: IntersectionObserverEntry[]): void => {\n setIntersectionEntry(nextEntry)\n }\n\n useKeyboardEscape(closeMenuCallback)\n useExpandedMenu(menuOpen, linkContainerRef, innerContainerRef, !isLarge, closeMenuCallback)\n\n useEffect(() => {\n if (wrapperRef.current) {\n const height = wrapperRef.current.offsetHeight\n setNavHeight(height)\n }\n }, [isLarge])\n\n useEffect(() => {\n const queryResult = window.matchMedia('(prefers-reduced-motion: reduce)')\n\n setPrefersReducedMotion(queryResult.matches)\n }, [])\n\n useEffect(() => {\n const handler = () => {\n if (initialYOffset) {\n const isPastInitialYOffset = window.pageYOffset > initialYOffset\n setNavShouldFix(isPastInitialYOffset)\n }\n }\n // eslint-disable-next-line github/prefer-observers\n window.addEventListener('scroll', handler)\n return () => {\n window.removeEventListener('scroll', handler)\n }\n }, [initialYOffset])\n\n useEffect(() => {\n const node = hideUntilSticky ? wrapperRef.current : rootRef.current\n\n const supportsIntersectionObserver = !!window.IntersectionObserver\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!supportsIntersectionObserver || !node) return\n\n const topOfWindow = '0px 0px -100%'\n const observerParams = {threshold: 0, root: null, rootMargin: topOfWindow}\n const observer = new IntersectionObserver(handleIntersectionUpdate, observerParams)\n\n observer.observe(node)\n\n return () => observer.disconnect()\n }, [hideUntilSticky])\n\n const handleMenuToggle = useCallback(\n event => {\n event?.preventDefault()\n toggleMenuCallback()\n },\n [toggleMenuCallback],\n )\n\n const handleUpdateToCurrentActiveNavItem = useCallback(\n (id: string | null) => {\n setCurrentActiveNavItem(id)\n },\n [setCurrentActiveNavItem],\n )\n\n const numLinks = ValidChildren.filter(child => React.isValidElement(child) && child.type === NavLinkBase).length\n const Links = ValidChildren.map((child, index) => {\n if (React.isValidElement<AnchorNavLinkProps>(child) && child.type === NavLinkBase) {\n const defaultProps: AnchorNavLinkProps = {\n href: child.props.href,\n toggleMenuCallback,\n prefersReducedMotion,\n updateCurrentActiveNav: handleUpdateToCurrentActiveNavItem,\n alignment: numLinks < 4 ? 'start' : 'center',\n }\n return React.cloneElement(child, {\n isActive: index === 0,\n ...defaultProps,\n })\n }\n\n return null\n })\n .filter(Boolean)\n .slice(0, 5)\n\n const Action = ValidChildren.reduce<React.ReactElement<AnchorNavActionProps>[]>((acc, child) => {\n if (React.isValidElement<AnchorNavActionProps>(child) && child.type === ActionBase) {\n acc.push(React.cloneElement(child))\n }\n return acc\n }, [])\n\n const SecondaryAction = ValidChildren.reduce<React.ReactElement<AnchorNavActionProps>[]>((acc, child) => {\n if (React.isValidElement<AnchorNavActionProps>(child) && child.type === SecondaryActionBase) {\n acc.push(React.cloneElement(child))\n }\n return acc\n }, [])\n\n const hasLargerSizeActions =\n Action.some(action => action.props.size && action.props.size !== 'small') ||\n SecondaryAction.some(action => action.props.size && action.props.size !== 'small')\n\n /* On page load, the rootMargin positions and/or thresholds of the IntersectionObserver\n * may not be met depending on the position of the AnchorNav on the page.\n * The following useEffect ensures that the first link always marked as the active link, until\n * the observer kicks in. Without this, the active link is undefined.\n */\n useEffect(() => {\n if (!currentActiveNavItem && Links.length > 0) {\n setCurrentActiveNavItem(Links[0]?.props.children as string)\n }\n }, [currentActiveNavItem, Links])\n\n const hasTwoActions = Action.length > 0 && SecondaryAction.length > 0\n\n return (\n <div ref={wrapperRef}>\n <nav\n ref={rootRef}\n aria-label=\"Anchored navigation\"\n data-sticky={navShouldFix.toString()}\n className={clsx(\n styles.AnchorNav,\n hideUntilSticky && styles['AnchorNav--hide-until-sticky'],\n navShouldFix && styles['AnchorNav--stuck'],\n menuOpen && styles['AnchorNav--expanded'],\n enableDefaultBgColor && styles['AnchorNav--with-default-background-color'],\n )}\n {...rest}\n >\n <div\n ref={innerContainerRef}\n className={clsx(\n styles['AnchorNav-inner-container'],\n menuOpen && styles['AnchorNav-inner-container--expanded'],\n )}\n >\n <button\n onClick={handleMenuToggle}\n className={clsx(styles['AnchorNav-menu-button'])}\n aria-expanded={menuOpen}\n aria-controls={idForLinkContainer}\n data-testid={testIds.menuButton}\n >\n {menuOpen ? (\n <ChevronUpIcon size={16} className={styles['AnchorNav-menu-button-arrow']} fill=\"currentcolor\" />\n ) : (\n <ChevronDownIcon size={16} className={styles['AnchorNav-menu-button-arrow']} fill=\"currentcolor\" />\n )}\n <span className=\"visually-hidden\">Anchor navigation menu. Currently selected: </span>\n <Text as=\"span\" className={clsx(styles['AnchorNav-link-label'])}>\n {currentActiveNavItem}\n </Text>\n </button>\n {/**Replace with unique ids and test ids */}\n <div\n id={idForLinkContainer}\n data-testid={testIds.menuLinks}\n className={styles['AnchorNav-link-container']}\n ref={linkContainerRef}\n >\n {Links}\n </div>\n <span\n data-forward-focus=\"true\"\n className={clsx(\n styles['AnchorNav__actionsContainer'],\n hasLargerSizeActions && styles['AnchorNav__actionsContainer--no-offset'],\n hasTwoActions && styles['AnchorNav__actionsContainer--multiple'],\n )}\n >\n {Action.length && SecondaryAction.length && React.isValidElement<AnchorNavActionProps>(Action[0])\n ? React.cloneElement(Action[0], {\n variant: 'primary',\n })\n : Action}\n {SecondaryAction}\n </span>\n </div>\n <span\n className={clsx(menuOpen && styles['AnchorNav-overlay--expanded'])}\n onClick={closeMenuCallback}\n aria-hidden\n />\n </nav>\n {navShouldFix && <div style={{height: navHeight}} aria-hidden=\"true\" data-testid={testIds.navSpacer} />}\n </div>\n )\n}\n\ntype AnchorNavLinkIntersectionOptions = {\n /**\n * The area of the element that should trigger the next linked section to be highlighted.\n */\n rootMargin: 'start' | 'middle'\n}\n\ntype AnchorNavLinkProps = BaseProps<HTMLAnchorElement> & {\n /**\n * Optional text alignment for the link. Defaults to 'start' if there are less than 4 links, otherwise 'center'.\n */\n alignment?: 'start' | 'center'\n /**\n * Required path or location for the anchor to link to.\n */\n href: string\n /**\n * Optional boolean to indicate if the link is the current active link.\n * Typically doesn't need to be sset unless custom animation is being used.\n */\n isActive?: boolean // internal prop, not exposed in docs\n toggleMenuCallback?: () => void // internal prop, not exposed in docs\n intersectionOptions?: AnchorNavLinkIntersectionOptions // internal prop, not exposed in docs\n prefersReducedMotion?: boolean // internal prop, not exposed in docs\n updateCurrentActiveNav?: (id: string | null) => void // internal prop, not exposed in docs\n} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>\n\nfunction NavLinkBase({\n alignment = 'start',\n children,\n href,\n isActive,\n toggleMenuCallback,\n prefersReducedMotion,\n intersectionOptions = {rootMargin: 'middle'},\n updateCurrentActiveNav,\n ...rest\n}: AnchorNavLinkProps) {\n const {isLarge} = useWindowSize()\n const [intersectionEntry, setIntersectionEntry] = useState<IntersectionObserverEntry>()\n\n const isAnchor = /^#/.test(href)\n const anchoredContentIsVisible = !!intersectionEntry?.isIntersecting\n\n const handleIntersectionUpdate = ([nextEntry]: IntersectionObserverEntry[]): void => {\n setIntersectionEntry(nextEntry)\n }\n\n useEffect(() => {\n const node = document.querySelector(isAnchor ? href : `#${href}`)\n\n const supportsIntersectionObserver = !!window.IntersectionObserver\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!supportsIntersectionObserver || !node) return\n\n const rootMarginTop = '0px'\n const rootMarginCenter = '-50% 0% -50% 0%'\n\n const rootMargin = intersectionOptions.rootMargin === 'start' ? rootMarginTop : rootMarginCenter\n\n const observerParams = {threshold: intersectionOptions.rootMargin === 'start' ? 0.4 : 0, root: null, rootMargin}\n\n const observer = new IntersectionObserver(handleIntersectionUpdate, observerParams)\n\n observer.observe(node)\n\n return () => observer.disconnect()\n }, [href, intersectionOptions.rootMargin, isAnchor])\n\n // updates root AnchorNav to notify of active section\n useEffect(() => {\n if (anchoredContentIsVisible && updateCurrentActiveNav && typeof children === 'string') {\n updateCurrentActiveNav(children)\n }\n }, [anchoredContentIsVisible, children, updateCurrentActiveNav])\n\n const handleClick = useCallback(() => {\n if (toggleMenuCallback && !isLarge) {\n toggleMenuCallback()\n }\n }, [isLarge, toggleMenuCallback])\n\n return (\n <a\n className={clsx(\n styles['AnchorNav-link'],\n styles[`AnchorNav-link--${alignment}`],\n anchoredContentIsVisible && styles['AnchorNav-link--is-active'],\n )}\n href={isAnchor ? href : `#${href}`}\n aria-current={anchoredContentIsVisible && 'true'}\n data-first={isActive}\n data-active={anchoredContentIsVisible ? 'true' : 'false'}\n onClick={handleClick}\n {...rest}\n >\n <Text\n as=\"span\"\n className={clsx(\n styles['AnchorNav-link-label'],\n anchoredContentIsVisible && styles['AnchorNav-link-label--is-active'],\n )}\n >\n {children}\n </Text>\n </a>\n )\n}\n\ntype AnchorNavActionProps = {\n /**\n * Required path or location for the action button to link to.\n */\n href: string\n} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> &\n ButtonBaseProps\n\nfunction ActionBase({children, href, variant = 'secondary', size = 'small', ...rest}: AnchorNavActionProps) {\n return (\n <Button\n as=\"a\"\n variant={variant}\n className={clsx(styles['AnchorNav-action'])}\n href={href}\n data-testid={testIds.action}\n size={size}\n {...rest}\n >\n {children}\n </Button>\n )\n}\n\nfunction SecondaryActionBase({children, href, variant = 'secondary', size = 'small', ...rest}: AnchorNavActionProps) {\n return (\n <Button\n as=\"a\"\n variant={variant}\n className={clsx(styles['AnchorNav-action'])}\n href={href}\n data-testid={testIds.secondaryAction}\n size={size}\n {...rest}\n >\n {children}\n </Button>\n )\n}\n\n/**\n * AnchorNav allows users to navigate to different sections of a page.\n * @see https://primer.style/brand/components/AnchorNav\n */\nexport const AnchorNav = Object.assign(AnchorNavBase, {\n Link: NavLinkBase,\n Action: ActionBase,\n SecondaryAction: SecondaryActionBase,\n testIds,\n})\n"],"mappings":"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"}
@@ -2,11 +2,11 @@ import React, { ReactElement } from 'react';
2
2
  import type { Icon } from '@primer/octicons-react';
3
3
  import type { BaseProps } from '../component-helpers';
4
4
  import '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes.css';
5
- export declare const ButtonVariants: readonly ["primary", "secondary", "subtle", "accent"];
5
+ export declare const ButtonVariants: readonly ["primary", "secondary", "subtle"];
6
6
  export declare const ButtonSizes: readonly ["small", "medium", "large"];
7
7
  export declare const defaultButtonVariant: "secondary";
8
8
  export declare const defaultButtonSize: "medium";
9
- type ButtonVariant = (typeof ButtonVariants)[number];
9
+ export type ButtonVariant = (typeof ButtonVariants)[number];
10
10
  export type ButtonBaseProps = {
11
11
  /**
12
12
  * The leading visual appears before the button content
@@ -26,6 +26,7 @@ export type ButtonBaseProps = {
26
26
  size?: (typeof ButtonSizes)[number];
27
27
  /**
28
28
  * A flag to show/hide the arrow icon
29
+ * @deprecated The hasArrow prop is deprecated and will be removed in a future release.
29
30
  */
30
31
  hasArrow?: boolean;
31
32
  /**
@@ -45,5 +46,4 @@ export declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps<Re
45
46
  readonly expandableArrow: string;
46
47
  };
47
48
  };
48
- export {};
49
49
  //# sourceMappingURL=Button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAoC,YAAY,EAAC,MAAM,OAAO,CAAA;AAC5E,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,wBAAwB,CAAA;AAIhD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAInD,OAAO,0GAA0G,CAAA;AAGjH,eAAO,MAAM,cAAc,uDAAwD,CAAA;AACnF,eAAO,MAAM,WAAW,uCAAwC,CAAA;AAEhE,eAAO,MAAM,oBAAoB,aAAoB,CAAA;AACrD,eAAO,MAAM,iBAAiB,UAAiB,CAAA;AAE/C,KAAK,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAEpD,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAID,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IACpE,EAAE,CAAC,EAAE,CAAC,CAAA;CACP,GAAG,eAAe,GACjB,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAenC,eAAO,MAAM,OAAO,+JAgKnB,CAAA;AAED,eAAO,MAAM,MAAM;;;;;;;CAAoC,CAAA"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAoC,YAAY,EAAC,MAAM,OAAO,CAAA;AAC5E,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,wBAAwB,CAAA;AAIhD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAInD,OAAO,0GAA0G,CAAA;AAGjH,eAAO,MAAM,cAAc,6CAA8C,CAAA;AACzE,eAAO,MAAM,WAAW,uCAAwC,CAAA;AAEhE,eAAO,MAAM,oBAAoB,aAAoB,CAAA;AACrD,eAAO,MAAM,iBAAiB,UAAiB,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IACpE,EAAE,CAAC,EAAE,CAAC,CAAA;CACP,GAAG,eAAe,GACjB,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAenC,eAAO,MAAM,OAAO,+JAgKnB,CAAA;AAED,eAAO,MAAM,MAAM;;;;;;;CAAoC,CAAA"}
@@ -2,7 +2,7 @@ import e from "../node_modules/clsx/dist/clsx.js";
2
2
  import { useAnimation as t } from "../animation/useAnimation.js";
3
3
  import { Text as n } from "../Text/Text.js";
4
4
  import { ExpandableArrow as r } from "../ExpandableArrow/ExpandableArrow.js";
5
- import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes-Wg6T_h7K.css';/* empty css */
5
+ import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes-kII0kqk3.css';/* empty css */
6
6
  import i from "./Button.module.js";
7
7
  import a, { forwardRef as o, useCallback as s } from "react";
8
8
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -10,13 +10,12 @@ import { jsx as c, jsxs as l } from "react/jsx-runtime";
10
10
  var u = [
11
11
  "primary",
12
12
  "secondary",
13
- "subtle",
14
- "accent"
13
+ "subtle"
15
14
  ], d = [
16
15
  "small",
17
16
  "medium",
18
17
  "large"
19
- ], f = u[1], p = d[1], m = ["subtle"], h = {
18
+ ], f = u[1], p = d[1], m = {
20
19
  root: "Button",
21
20
  get leadingVisual() {
22
21
  return `${this.root}-leading-visual`;
@@ -27,39 +26,39 @@ var u = [
27
26
  get expandableArrow() {
28
27
  return `${this.root}-expandable-arrow`;
29
28
  }
30
- }, g = o(({ animate: o, as: u, variant: d = f, size: g = p, hasArrow: _, block: v = !1, className: y, children: b, disabled: x, "aria-disabled": S, onMouseEnter: C, onMouseLeave: w, onFocus: T, onBlur: E, leadingVisual: D, trailingVisual: O, style: k, ...A }, j) => {
31
- let [M, N] = a.useState(!1), [P, F] = a.useState(!1), I = u || "button", L = x || S === "true" || typeof S == "boolean" && S === !0, { classes: R, styles: z } = t(o), B = m.includes(d) ? _ !== !1 : !!_, V = s((e) => {
29
+ }, h = o(({ animate: o, as: u, variant: d = f, size: h = p, hasArrow: g, block: _ = !1, className: v, children: y, disabled: b, "aria-disabled": x, onMouseEnter: S, onMouseLeave: C, onFocus: w, onBlur: T, leadingVisual: E, trailingVisual: D, style: O, ...k }, A) => {
30
+ let [j, M] = a.useState(!1), [N, P] = a.useState(!1), F = u || "button", I = b || x === "true" || typeof x == "boolean" && x === !0, { classes: L, styles: R } = t(o), z = !!g, B = s((e) => {
32
31
  if (a.isValidElement(e)) return e;
33
32
  if (typeof e == "function") return a.createElement(e);
34
- }, []), H = V(D), U = V(O), W = s((e) => {
35
- L || (N(!0), C?.(e));
36
- }, [L, C]), G = s((e) => {
37
- L || (N(!1), w?.(e));
38
- }, [L, w]), K = s((e) => {
39
- L || (F(!0), T?.(e));
40
- }, [L, T]), q = s((e) => {
41
- L || (F(!1), E?.(e));
42
- }, [L, E]);
43
- return /* @__PURE__ */ l(I, {
44
- ref: j,
45
- className: e(i.Button, i[`Button--${d}`], i[`Button--size-${g}`], v && i["Button--block"], L && i["Button--disabled"], R, y),
46
- onMouseEnter: W,
47
- onMouseLeave: G,
48
- onFocus: K,
49
- onBlur: q,
50
- disabled: L && I === "button" || void 0,
51
- "aria-disabled": L && I !== "button" || void 0,
33
+ }, []), V = B(E), H = B(D), U = s((e) => {
34
+ I || (M(!0), S?.(e));
35
+ }, [I, S]), W = s((e) => {
36
+ I || (M(!1), C?.(e));
37
+ }, [I, C]), G = s((e) => {
38
+ I || (P(!0), w?.(e));
39
+ }, [I, w]), K = s((e) => {
40
+ I || (P(!1), T?.(e));
41
+ }, [I, T]);
42
+ return /* @__PURE__ */ l(F, {
43
+ ref: A,
44
+ className: e(i.Button, i[`Button--${d}`], i[`Button--size-${h}`], _ && i["Button--block"], I && i["Button--disabled"], L, v),
45
+ onMouseEnter: U,
46
+ onMouseLeave: W,
47
+ onFocus: G,
48
+ onBlur: K,
49
+ disabled: I && F === "button" || void 0,
50
+ "aria-disabled": I && F !== "button" || void 0,
52
51
  style: {
53
- ...z,
54
- ...k
52
+ ...R,
53
+ ...O
55
54
  },
56
- ...A,
55
+ ...k,
57
56
  children: [
58
- a.isValidElement(H) && /* @__PURE__ */ c("span", {
57
+ a.isValidElement(V) && /* @__PURE__ */ c("span", {
59
58
  className: i["Button__leading-visual"],
60
- "data-testid": h.leadingVisual,
61
- children: a.cloneElement(H, {
62
- className: e(i["Button__icon-visual"], L && i["Button__icon-visual--disabled"]),
59
+ "data-testid": m.leadingVisual,
60
+ children: a.cloneElement(V, {
61
+ className: e(i["Button__icon-visual"], I && i["Button__icon-visual--disabled"]),
63
62
  "aria-hidden": "true",
64
63
  focusable: "false"
65
64
  })
@@ -68,34 +67,34 @@ var u = [
68
67
  className: i.Button__text,
69
68
  children: /* @__PURE__ */ c(n, {
70
69
  as: "span",
71
- size: g === "small" ? "100" : g === "medium" ? "200" : "400",
70
+ size: h === "small" ? "100" : h === "medium" ? "200" : "400",
72
71
  weight: "medium",
73
- className: e(i["Button--label"], i[`Button--label-${g}`], i[`Button--label-${d}`], L && i["Button-label--disabled"]),
74
- children: b
72
+ className: e(i["Button--label"], i[`Button--label-${h}`], i[`Button--label-${d}`], I && i["Button-label--disabled"]),
73
+ children: y
75
74
  })
76
75
  }),
77
- !O && B && /* @__PURE__ */ c("span", {
76
+ !D && z && /* @__PURE__ */ c("span", {
78
77
  className: e(i["Button__trailing-visual"]),
79
78
  children: /* @__PURE__ */ c(r, {
80
79
  hidden: !0,
81
- className: e(i["Button-arrow"], L && i["Button-arrow--disabled"]),
82
- expanded: !L && (M || P),
83
- "data-testid": h.expandableArrow
80
+ className: e(i["Button-arrow"], I && i["Button-arrow--disabled"]),
81
+ expanded: !I && (j || N),
82
+ "data-testid": m.expandableArrow
84
83
  })
85
84
  }),
86
- a.isValidElement(U) && /* @__PURE__ */ c("span", {
85
+ a.isValidElement(H) && /* @__PURE__ */ c("span", {
87
86
  className: e(i["Button__trailing-visual"]),
88
- "data-testid": h.trailingVisual,
89
- children: a.cloneElement(U, {
90
- className: e(i["Button__icon-visual"], L && i["Button__icon-visual--disabled"]),
87
+ "data-testid": m.trailingVisual,
88
+ children: a.cloneElement(H, {
89
+ className: e(i["Button__icon-visual"], I && i["Button__icon-visual--disabled"]),
91
90
  "aria-hidden": "true",
92
91
  focusable: "false"
93
92
  })
94
93
  })
95
94
  ]
96
95
  });
97
- }), _ = Object.assign(g, { testIds: h });
96
+ }), g = Object.assign(h, { testIds: m });
98
97
  //#endregion
99
- export { _ as Button, d as ButtonSizes, u as ButtonVariants, g as _Button, p as defaultButtonSize, f as defaultButtonVariant };
98
+ export { g as Button, d as ButtonSizes, u as ButtonVariants, h as _Button, p as defaultButtonSize, f as defaultButtonVariant };
100
99
 
101
100
  //# sourceMappingURL=Button.js.map