@primer/components 31.2.0-rc.6afeaa37 → 31.2.0-rc.76ed571d

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 (375) hide show
  1. package/.github/workflows/ci.yml +5 -2
  2. package/.github/workflows/release.yml +1 -0
  3. package/.github/workflows/release_canary.yml +1 -0
  4. package/CHANGELOG.md +4 -0
  5. package/dist/browser.esm.js +209 -209
  6. package/dist/browser.esm.js.map +1 -1
  7. package/dist/browser.umd.js +195 -195
  8. package/dist/browser.umd.js.map +1 -1
  9. package/docs/content/ActionList2.mdx +14 -8
  10. package/docs/content/StateLabel.md +5 -4
  11. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +2 -2
  12. package/lib/ActionList/Divider.jsx +29 -0
  13. package/lib/ActionList/Group.jsx +23 -0
  14. package/lib/ActionList/Header.jsx +66 -0
  15. package/lib/ActionList/Item.jsx +301 -0
  16. package/lib/ActionList/List.jsx +138 -0
  17. package/lib/ActionList/index.js +12 -23
  18. package/lib/ActionList2/Description.jsx +30 -0
  19. package/lib/ActionList2/Divider.jsx +22 -0
  20. package/lib/ActionList2/Group.jsx +25 -0
  21. package/lib/ActionList2/Header.jsx +36 -0
  22. package/lib/ActionList2/Item.jsx +174 -0
  23. package/lib/ActionList2/LinkItem.jsx +28 -0
  24. package/lib/ActionList2/List.jsx +41 -0
  25. package/lib/ActionList2/Selection.jsx +36 -0
  26. package/lib/ActionList2/Visuals.jsx +48 -0
  27. package/lib/ActionList2/index.js +23 -41
  28. package/lib/ActionMenu.jsx +73 -0
  29. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +100 -0
  30. package/lib/AnchoredOverlay/index.js +4 -12
  31. package/lib/Autocomplete/Autocomplete.d.ts +28 -28
  32. package/lib/Autocomplete/Autocomplete.jsx +100 -0
  33. package/lib/Autocomplete/AutocompleteContext.jsx +5 -0
  34. package/lib/Autocomplete/AutocompleteInput.d.ts +28 -28
  35. package/lib/Autocomplete/AutocompleteInput.jsx +113 -0
  36. package/lib/Autocomplete/AutocompleteMenu.jsx +190 -0
  37. package/lib/Autocomplete/AutocompleteOverlay.jsx +55 -0
  38. package/lib/Autocomplete/index.js +7 -14
  39. package/lib/Avatar.jsx +34 -0
  40. package/lib/AvatarPair.jsx +29 -0
  41. package/lib/AvatarStack.jsx +151 -0
  42. package/lib/BaseStyles.jsx +65 -0
  43. package/lib/BorderBox.jsx +18 -0
  44. package/lib/Box.jsx +10 -0
  45. package/lib/BranchName.jsx +20 -0
  46. package/lib/Breadcrumbs.jsx +74 -0
  47. package/lib/Button/Button.d.ts +25 -25
  48. package/lib/Button/Button.jsx +60 -0
  49. package/lib/Button/ButtonBase.jsx +36 -0
  50. package/lib/Button/ButtonClose.d.ts +45 -45
  51. package/lib/Button/ButtonClose.jsx +55 -0
  52. package/lib/Button/ButtonDanger.d.ts +25 -25
  53. package/lib/Button/ButtonDanger.jsx +63 -0
  54. package/lib/Button/ButtonGroup.jsx +55 -0
  55. package/lib/Button/ButtonInvisible.d.ts +25 -25
  56. package/lib/Button/ButtonInvisible.jsx +52 -0
  57. package/lib/Button/ButtonOutline.d.ts +25 -25
  58. package/lib/Button/ButtonOutline.jsx +63 -0
  59. package/lib/Button/ButtonPrimary.d.ts +25 -25
  60. package/lib/Button/ButtonPrimary.jsx +62 -0
  61. package/lib/Button/ButtonStyles.jsx +37 -0
  62. package/lib/Button/ButtonTableList.jsx +49 -0
  63. package/lib/Button/index.js +21 -70
  64. package/lib/Caret.jsx +93 -0
  65. package/lib/CircleBadge.jsx +43 -0
  66. package/lib/CircleOcticon.d.ts +42 -42
  67. package/lib/CircleOcticon.jsx +21 -0
  68. package/lib/CounterLabel.jsx +44 -0
  69. package/lib/Details.jsx +21 -0
  70. package/lib/Dialog/ConfirmationDialog.jsx +146 -0
  71. package/lib/Dialog/Dialog.js +1 -0
  72. package/lib/Dialog/Dialog.jsx +273 -0
  73. package/lib/Dialog.d.ts +45 -45
  74. package/lib/Dialog.jsx +131 -0
  75. package/lib/Dropdown.d.ts +176 -176
  76. package/lib/Dropdown.jsx +134 -0
  77. package/lib/DropdownMenu/DropdownButton.d.ts +46 -46
  78. package/lib/DropdownMenu/DropdownButton.jsx +14 -0
  79. package/lib/DropdownMenu/DropdownMenu.jsx +70 -0
  80. package/lib/DropdownMenu/index.js +6 -20
  81. package/lib/DropdownStyles.js +18 -26
  82. package/lib/FilterList.d.ts +42 -42
  83. package/lib/FilterList.jsx +63 -0
  84. package/lib/FilteredActionList/FilteredActionList.jsx +100 -0
  85. package/lib/FilteredActionList/index.js +4 -12
  86. package/lib/FilteredSearch.jsx +29 -0
  87. package/lib/Flash.jsx +70 -0
  88. package/lib/Flex.jsx +15 -0
  89. package/lib/FormGroup.jsx +25 -0
  90. package/lib/Grid.jsx +15 -0
  91. package/lib/Header.jsx +90 -0
  92. package/lib/Heading.jsx +21 -0
  93. package/lib/Label.jsx +84 -0
  94. package/lib/LabelGroup.jsx +19 -0
  95. package/lib/Link.jsx +38 -0
  96. package/lib/NewButton/button-counter.d.ts +6 -0
  97. package/lib/NewButton/button-counter.js +31 -0
  98. package/lib/NewButton/button-counter.jsx +14 -0
  99. package/lib/NewButton/button.d.ts +13 -0
  100. package/lib/NewButton/button.js +316 -0
  101. package/lib/NewButton/button.jsx +278 -0
  102. package/lib/NewButton/index.d.ts +14 -0
  103. package/lib/NewButton/index.js +8 -0
  104. package/lib/NewButton/types.d.ts +32 -0
  105. package/lib/NewButton/types.js +2 -0
  106. package/lib/Overlay.jsx +156 -0
  107. package/lib/Pagehead.jsx +18 -0
  108. package/lib/Pagination/Pagination.jsx +163 -0
  109. package/lib/Pagination/index.js +6 -12
  110. package/lib/Pagination/model.jsx +174 -0
  111. package/lib/PointerBox.jsx +25 -0
  112. package/lib/Popover.jsx +210 -0
  113. package/lib/Portal/Portal.jsx +79 -0
  114. package/lib/Portal/index.js +5 -16
  115. package/lib/Position.d.ts +4 -4
  116. package/lib/Position.jsx +46 -0
  117. package/lib/ProgressBar.jsx +39 -0
  118. package/lib/SelectMenu/SelectMenu.d.ts +246 -246
  119. package/lib/SelectMenu/SelectMenu.jsx +114 -0
  120. package/lib/SelectMenu/SelectMenuContext.jsx +5 -0
  121. package/lib/SelectMenu/SelectMenuDivider.jsx +43 -0
  122. package/lib/SelectMenu/SelectMenuFilter.jsx +59 -0
  123. package/lib/SelectMenu/SelectMenuFooter.jsx +46 -0
  124. package/lib/SelectMenu/SelectMenuHeader.jsx +44 -0
  125. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  126. package/lib/SelectMenu/SelectMenuItem.jsx +143 -0
  127. package/lib/SelectMenu/SelectMenuList.jsx +60 -0
  128. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +21 -0
  129. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  130. package/lib/SelectMenu/SelectMenuModal.jsx +119 -0
  131. package/lib/SelectMenu/SelectMenuTab.jsx +93 -0
  132. package/lib/SelectMenu/SelectMenuTabPanel.jsx +43 -0
  133. package/lib/SelectMenu/SelectMenuTabs.jsx +58 -0
  134. package/lib/SelectMenu/hooks/useKeyboardNav.js +80 -96
  135. package/lib/SelectMenu/index.js +7 -14
  136. package/lib/SelectPanel/SelectPanel.jsx +105 -0
  137. package/lib/SelectPanel/index.js +4 -12
  138. package/lib/SideNav.jsx +177 -0
  139. package/lib/Spinner.jsx +35 -0
  140. package/lib/StateLabel.d.ts +1 -1
  141. package/lib/StateLabel.js +6 -1
  142. package/lib/StateLabel.jsx +94 -0
  143. package/lib/StyledOcticon.jsx +20 -0
  144. package/lib/SubNav.jsx +104 -0
  145. package/lib/TabNav.jsx +60 -0
  146. package/lib/Text.jsx +14 -0
  147. package/lib/TextInput.jsx +23 -0
  148. package/lib/TextInputWithTokens.d.ts +28 -28
  149. package/lib/TextInputWithTokens.jsx +218 -0
  150. package/lib/ThemeProvider.jsx +130 -0
  151. package/lib/Timeline.d.ts +43 -43
  152. package/lib/Timeline.jsx +124 -0
  153. package/lib/Token/AvatarToken.d.ts +1 -1
  154. package/lib/Token/AvatarToken.jsx +54 -0
  155. package/lib/Token/IssueLabelToken.d.ts +1 -1
  156. package/lib/Token/IssueLabelToken.jsx +125 -0
  157. package/lib/Token/Token.d.ts +1 -1
  158. package/lib/Token/Token.jsx +103 -0
  159. package/lib/Token/TokenBase.jsx +88 -0
  160. package/lib/Token/_RemoveTokenButton.jsx +108 -0
  161. package/lib/Token/_TokenTextContainer.jsx +49 -0
  162. package/lib/Token/index.js +11 -30
  163. package/lib/Tooltip.jsx +246 -0
  164. package/lib/Truncate.jsx +27 -0
  165. package/lib/UnderlineNav.jsx +90 -0
  166. package/lib/_TextInputWrapper.jsx +120 -0
  167. package/lib/_UnstyledTextInput.jsx +22 -0
  168. package/lib/__tests__/ActionList.test.jsx +49 -0
  169. package/lib/__tests__/ActionList.types.test.jsx +45 -0
  170. package/lib/__tests__/ActionList2.test.jsx +46 -0
  171. package/lib/__tests__/ActionMenu.test.jsx +124 -0
  172. package/lib/__tests__/AnchoredOverlay.test.jsx +121 -0
  173. package/lib/__tests__/Autocomplete.test.jsx +299 -0
  174. package/lib/__tests__/Avatar.test.jsx +42 -0
  175. package/lib/__tests__/AvatarStack.test.jsx +43 -0
  176. package/lib/__tests__/BorderBox.test.jsx +36 -0
  177. package/lib/__tests__/Box.test.jsx +41 -0
  178. package/lib/__tests__/BranchName.test.jsx +27 -0
  179. package/lib/__tests__/Breadcrumbs.test.jsx +28 -0
  180. package/lib/__tests__/BreadcrumbsItem.test.jsx +31 -0
  181. package/lib/__tests__/Button.test.jsx +100 -0
  182. package/lib/__tests__/Caret.test.jsx +37 -0
  183. package/lib/__tests__/CircleBadge.test.jsx +55 -0
  184. package/lib/__tests__/CircleOcticon.test.jsx +45 -0
  185. package/lib/__tests__/ConfirmationDialog.test.jsx +119 -0
  186. package/lib/__tests__/CounterLabel.test.jsx +36 -0
  187. package/lib/__tests__/Details.test.jsx +85 -0
  188. package/lib/__tests__/Dialog.test.jsx +139 -0
  189. package/lib/__tests__/Dropdown.test.jsx +49 -0
  190. package/lib/__tests__/DropdownMenu.test.jsx +119 -0
  191. package/lib/__tests__/FilterList.test.jsx +27 -0
  192. package/lib/__tests__/FilterListItem.test.jsx +31 -0
  193. package/lib/__tests__/FilteredSearch.test.jsx +27 -0
  194. package/lib/__tests__/Flash.test.jsx +36 -0
  195. package/lib/__tests__/Flex.test.jsx +51 -0
  196. package/lib/__tests__/FormGroup.test.jsx +36 -0
  197. package/lib/__tests__/Grid.test.jsx +69 -0
  198. package/lib/__tests__/Header.test.jsx +45 -0
  199. package/lib/__tests__/Heading.test.jsx +71 -0
  200. package/lib/__tests__/KeyPaths.types.test.js +5 -8
  201. package/lib/__tests__/Label.test.jsx +33 -0
  202. package/lib/__tests__/LabelGroup.test.jsx +29 -0
  203. package/lib/__tests__/Link.test.jsx +43 -0
  204. package/lib/__tests__/Merge.types.test.js +13 -19
  205. package/lib/__tests__/NewButton.test.d.ts +1 -0
  206. package/lib/__tests__/NewButton.test.js +86 -0
  207. package/lib/__tests__/NewButton.test.jsx +55 -0
  208. package/lib/__tests__/Overlay.test.jsx +105 -0
  209. package/lib/__tests__/Pagehead.test.jsx +25 -0
  210. package/lib/__tests__/Pagination/Pagination.test.jsx +32 -0
  211. package/lib/__tests__/Pagination/PaginationModel.test.jsx +118 -0
  212. package/lib/__tests__/PointerBox.test.jsx +33 -0
  213. package/lib/__tests__/Popover.test.jsx +58 -0
  214. package/lib/__tests__/Portal.test.jsx +102 -0
  215. package/lib/__tests__/Position.test.jsx +96 -0
  216. package/lib/__tests__/ProgressBar.test.jsx +38 -0
  217. package/lib/__tests__/SelectMenu.test.jsx +120 -0
  218. package/lib/__tests__/SelectPanel.test.jsx +48 -0
  219. package/lib/__tests__/SideNav.test.jsx +55 -0
  220. package/lib/__tests__/Spinner.test.jsx +41 -0
  221. package/lib/__tests__/StateLabel.test.jsx +46 -0
  222. package/lib/__tests__/StyledOcticon.test.jsx +28 -0
  223. package/lib/__tests__/SubNav.test.jsx +47 -0
  224. package/lib/__tests__/SubNavLink.test.jsx +31 -0
  225. package/lib/__tests__/TabNav.test.jsx +32 -0
  226. package/lib/__tests__/Text.test.jsx +71 -0
  227. package/lib/__tests__/TextInput.test.jsx +45 -0
  228. package/lib/__tests__/TextInputWithTokens.test.jsx +302 -0
  229. package/lib/__tests__/ThemeProvider.test.jsx +314 -0
  230. package/lib/__tests__/Timeline.test.jsx +51 -0
  231. package/lib/__tests__/Token.test.jsx +93 -0
  232. package/lib/__tests__/Tooltip.test.jsx +46 -0
  233. package/lib/__tests__/Truncate.test.jsx +41 -0
  234. package/lib/__tests__/UnderlineNav.test.jsx +53 -0
  235. package/lib/__tests__/UnderlineNavLink.test.jsx +31 -0
  236. package/lib/__tests__/behaviors/anchoredPosition.test.js +229 -376
  237. package/lib/__tests__/behaviors/focusTrap.test.jsx +184 -0
  238. package/lib/__tests__/behaviors/focusZone.test.jsx +406 -0
  239. package/lib/__tests__/behaviors/iterateFocusableElements.test.jsx +58 -0
  240. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +145 -216
  241. package/lib/__tests__/filterObject.test.js +48 -27
  242. package/lib/__tests__/hooks/useAnchoredPosition.test.jsx +29 -0
  243. package/lib/__tests__/hooks/useOnEscapePress.test.jsx +19 -0
  244. package/lib/__tests__/hooks/useOnOutsideClick.test.jsx +63 -0
  245. package/lib/__tests__/hooks/useOpenAndCloseFocus.test.jsx +61 -0
  246. package/lib/__tests__/hooks/useProvidedStateOrCreate.test.jsx +56 -0
  247. package/lib/__tests__/theme.test.js +33 -34
  248. package/lib/__tests__/themeGet.test.js +12 -23
  249. package/lib/__tests__/useSafeTimeout.test.jsx +36 -0
  250. package/lib/__tests__/utils/createSlots.test.jsx +57 -0
  251. package/lib/behaviors/anchoredPosition.js +205 -234
  252. package/lib/behaviors/focusTrap.js +121 -157
  253. package/lib/behaviors/focusZone.js +434 -509
  254. package/lib/behaviors/scrollIntoViewingArea.js +18 -35
  255. package/lib/constants.js +39 -43
  256. package/lib/{unreleased.d.ts → drafts.d.ts} +2 -1
  257. package/lib/drafts.js +21 -0
  258. package/lib/hooks/index.js +16 -60
  259. package/lib/hooks/useAnchoredPosition.js +32 -40
  260. package/lib/hooks/useCombinedRefs.js +32 -36
  261. package/lib/hooks/useDetails.jsx +39 -0
  262. package/lib/hooks/useDialog.js +72 -96
  263. package/lib/hooks/useFocusTrap.js +43 -60
  264. package/lib/hooks/useFocusZone.js +54 -50
  265. package/lib/hooks/useOnEscapePress.js +25 -36
  266. package/lib/hooks/useOnOutsideClick.jsx +61 -0
  267. package/lib/hooks/useOpenAndCloseFocus.js +22 -34
  268. package/lib/hooks/useOverlay.jsx +15 -0
  269. package/lib/hooks/useProvidedRefOrCreate.js +10 -14
  270. package/lib/hooks/useProvidedStateOrCreate.js +13 -16
  271. package/lib/hooks/useRenderForcingRef.js +13 -17
  272. package/lib/hooks/useResizeObserver.js +15 -18
  273. package/lib/hooks/useSafeTimeout.js +22 -30
  274. package/lib/hooks/useScrollFlash.js +16 -23
  275. package/lib/index.d.ts +2 -0
  276. package/lib/index.js +163 -636
  277. package/lib/polyfills/eventListenerSignal.js +37 -45
  278. package/lib/stories/ActionList2.stories.js +3 -2
  279. package/lib/stories/NewButton.stories.js +230 -0
  280. package/lib/sx.js +10 -22
  281. package/lib/theme-preval.js +64 -3023
  282. package/lib/theme.js +3 -12
  283. package/lib/utils/create-slots.jsx +65 -0
  284. package/lib/utils/deprecate.jsx +59 -0
  285. package/lib/utils/isNumeric.jsx +7 -0
  286. package/lib/utils/iterateFocusableElements.js +63 -85
  287. package/lib/utils/ssr.jsx +6 -0
  288. package/lib/utils/test-deprecations.jsx +20 -0
  289. package/lib/utils/test-helpers.jsx +8 -0
  290. package/lib/utils/test-matchers.jsx +100 -0
  291. package/lib/utils/testing.jsx +206 -0
  292. package/lib/utils/theme.js +33 -47
  293. package/lib/utils/types/AriaRole.js +2 -1
  294. package/lib/utils/types/ComponentProps.js +2 -1
  295. package/lib/utils/types/Flatten.js +2 -1
  296. package/lib/utils/types/KeyPaths.js +2 -1
  297. package/lib/utils/types/MandateProps.js +16 -1
  298. package/lib/utils/types/Merge.js +2 -1
  299. package/lib/utils/types/index.js +16 -69
  300. package/lib/utils/uniqueId.js +5 -8
  301. package/lib/utils/use-force-update.js +8 -14
  302. package/lib/utils/useIsomorphicLayoutEffect.js +8 -11
  303. package/lib/utils/userAgent.js +8 -12
  304. package/lib-esm/Autocomplete/Autocomplete.d.ts +28 -28
  305. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +28 -28
  306. package/lib-esm/Button/Button.d.ts +25 -25
  307. package/lib-esm/Button/ButtonClose.d.ts +45 -45
  308. package/lib-esm/Button/ButtonDanger.d.ts +25 -25
  309. package/lib-esm/Button/ButtonInvisible.d.ts +25 -25
  310. package/lib-esm/Button/ButtonOutline.d.ts +25 -25
  311. package/lib-esm/Button/ButtonPrimary.d.ts +25 -25
  312. package/lib-esm/CircleOcticon.d.ts +42 -42
  313. package/lib-esm/Dialog/Dialog.js +1 -0
  314. package/lib-esm/Dialog.d.ts +45 -45
  315. package/lib-esm/Dropdown.d.ts +176 -176
  316. package/lib-esm/DropdownMenu/DropdownButton.d.ts +46 -46
  317. package/lib-esm/FilterList.d.ts +42 -42
  318. package/lib-esm/NewButton/button-counter.d.ts +6 -0
  319. package/lib-esm/NewButton/button-counter.js +18 -0
  320. package/lib-esm/NewButton/button.d.ts +13 -0
  321. package/lib-esm/NewButton/button.js +298 -0
  322. package/lib-esm/NewButton/index.d.ts +14 -0
  323. package/lib-esm/NewButton/index.js +5 -0
  324. package/lib-esm/NewButton/types.d.ts +32 -0
  325. package/lib-esm/NewButton/types.js +1 -0
  326. package/lib-esm/Position.d.ts +4 -4
  327. package/lib-esm/SelectMenu/SelectMenu.d.ts +246 -246
  328. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  329. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  330. package/lib-esm/StateLabel.d.ts +1 -1
  331. package/lib-esm/StateLabel.js +7 -2
  332. package/lib-esm/TextInputWithTokens.d.ts +28 -28
  333. package/lib-esm/Timeline.d.ts +43 -43
  334. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  335. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  336. package/lib-esm/Token/Token.d.ts +1 -1
  337. package/lib-esm/__tests__/NewButton.test.d.ts +1 -0
  338. package/lib-esm/__tests__/NewButton.test.js +76 -0
  339. package/lib-esm/{unreleased.d.ts → drafts.d.ts} +2 -1
  340. package/lib-esm/{unreleased.js → drafts.js} +3 -2
  341. package/lib-esm/index.d.ts +2 -0
  342. package/lib-esm/index.js +1 -0
  343. package/lib-esm/stories/ActionList2.stories.js +3 -3
  344. package/lib-esm/stories/NewButton.stories.js +178 -0
  345. package/package-lock.json +7 -7
  346. package/package.json +4 -3
  347. package/script/build +1 -1
  348. package/src/Dialog/Dialog.tsx +1 -0
  349. package/src/NewButton/button-counter.tsx +15 -0
  350. package/src/NewButton/button.tsx +279 -0
  351. package/src/NewButton/index.ts +10 -0
  352. package/src/NewButton/types.ts +36 -0
  353. package/src/StateLabel.tsx +14 -2
  354. package/src/__tests__/NewButton.test.tsx +64 -0
  355. package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +1 -0
  356. package/src/__tests__/__snapshots__/CircleBadge.test.tsx.snap +1 -0
  357. package/src/__tests__/__snapshots__/CircleOcticon.test.tsx.snap +1 -0
  358. package/src/__tests__/__snapshots__/Dialog.test.tsx.snap +1 -0
  359. package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +1 -0
  360. package/src/__tests__/__snapshots__/NewButton.test.tsx.snap +182 -0
  361. package/src/__tests__/__snapshots__/SelectMenu.test.tsx.snap +4 -0
  362. package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +1 -0
  363. package/src/__tests__/__snapshots__/StateLabel.test.tsx.snap +13 -6
  364. package/src/__tests__/__snapshots__/StyledOcticon.test.tsx.snap +1 -0
  365. package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +66 -0
  366. package/src/__tests__/__snapshots__/Token.test.tsx.snap +17 -0
  367. package/src/{unreleased.ts → drafts.ts} +2 -1
  368. package/src/index.ts +2 -0
  369. package/src/stories/ActionList2.stories.tsx +12 -9
  370. package/src/stories/NewButton.stories.tsx +201 -0
  371. package/stats.html +1 -1
  372. package/tsconfig.base.json +20 -0
  373. package/tsconfig.build.json +2 -2
  374. package/tsconfig.json +4 -17
  375. package/lib/unreleased.js +0 -18
@@ -199,6 +199,7 @@ exports[`Token components AvatarToken renders all sizes 1`] = `
199
199
  style={
200
200
  Object {
201
201
  "display": "inline-block",
202
+ "overflow": "visible",
202
203
  "userSelect": "none",
203
204
  "verticalAlign": "text-bottom",
204
205
  }
@@ -409,6 +410,7 @@ exports[`Token components AvatarToken renders all sizes 2`] = `
409
410
  style={
410
411
  Object {
411
412
  "display": "inline-block",
413
+ "overflow": "visible",
412
414
  "userSelect": "none",
413
415
  "verticalAlign": "text-bottom",
414
416
  }
@@ -619,6 +621,7 @@ exports[`Token components AvatarToken renders all sizes 3`] = `
619
621
  style={
620
622
  Object {
621
623
  "display": "inline-block",
624
+ "overflow": "visible",
622
625
  "userSelect": "none",
623
626
  "verticalAlign": "text-bottom",
624
627
  }
@@ -829,6 +832,7 @@ exports[`Token components AvatarToken renders all sizes 4`] = `
829
832
  style={
830
833
  Object {
831
834
  "display": "inline-block",
835
+ "overflow": "visible",
832
836
  "userSelect": "none",
833
837
  "verticalAlign": "text-bottom",
834
838
  }
@@ -1251,6 +1255,7 @@ exports[`Token components AvatarToken renders with a remove button 1`] = `
1251
1255
  style={
1252
1256
  Object {
1253
1257
  "display": "inline-block",
1258
+ "overflow": "visible",
1254
1259
  "userSelect": "none",
1255
1260
  "verticalAlign": "text-bottom",
1256
1261
  }
@@ -1427,6 +1432,7 @@ exports[`Token components IssueLabelToken renders all sizes 1`] = `
1427
1432
  style={
1428
1433
  Object {
1429
1434
  "display": "inline-block",
1435
+ "overflow": "visible",
1430
1436
  "userSelect": "none",
1431
1437
  "verticalAlign": "text-bottom",
1432
1438
  }
@@ -1603,6 +1609,7 @@ exports[`Token components IssueLabelToken renders all sizes 2`] = `
1603
1609
  style={
1604
1610
  Object {
1605
1611
  "display": "inline-block",
1612
+ "overflow": "visible",
1606
1613
  "userSelect": "none",
1607
1614
  "verticalAlign": "text-bottom",
1608
1615
  }
@@ -1779,6 +1786,7 @@ exports[`Token components IssueLabelToken renders all sizes 3`] = `
1779
1786
  style={
1780
1787
  Object {
1781
1788
  "display": "inline-block",
1789
+ "overflow": "visible",
1782
1790
  "userSelect": "none",
1783
1791
  "verticalAlign": "text-bottom",
1784
1792
  }
@@ -1955,6 +1963,7 @@ exports[`Token components IssueLabelToken renders all sizes 4`] = `
1955
1963
  style={
1956
1964
  Object {
1957
1965
  "display": "inline-block",
1966
+ "overflow": "visible",
1958
1967
  "userSelect": "none",
1959
1968
  "verticalAlign": "text-bottom",
1960
1969
  }
@@ -2214,6 +2223,7 @@ exports[`Token components IssueLabelToken renders custom fill color 1`] = `
2214
2223
  style={
2215
2224
  Object {
2216
2225
  "display": "inline-block",
2226
+ "overflow": "visible",
2217
2227
  "userSelect": "none",
2218
2228
  "verticalAlign": "text-bottom",
2219
2229
  }
@@ -2390,6 +2400,7 @@ exports[`Token components IssueLabelToken renders default fill color 1`] = `
2390
2400
  style={
2391
2401
  Object {
2392
2402
  "display": "inline-block",
2403
+ "overflow": "visible",
2393
2404
  "userSelect": "none",
2394
2405
  "verticalAlign": "text-bottom",
2395
2406
  }
@@ -2679,6 +2690,7 @@ exports[`Token components IssueLabelToken renders with a remove button 1`] = `
2679
2690
  style={
2680
2691
  Object {
2681
2692
  "display": "inline-block",
2693
+ "overflow": "visible",
2682
2694
  "userSelect": "none",
2683
2695
  "verticalAlign": "text-bottom",
2684
2696
  }
@@ -2845,6 +2857,7 @@ exports[`Token components Token renders all sizes 1`] = `
2845
2857
  style={
2846
2858
  Object {
2847
2859
  "display": "inline-block",
2860
+ "overflow": "visible",
2848
2861
  "userSelect": "none",
2849
2862
  "verticalAlign": "text-bottom",
2850
2863
  }
@@ -3011,6 +3024,7 @@ exports[`Token components Token renders all sizes 2`] = `
3011
3024
  style={
3012
3025
  Object {
3013
3026
  "display": "inline-block",
3027
+ "overflow": "visible",
3014
3028
  "userSelect": "none",
3015
3029
  "verticalAlign": "text-bottom",
3016
3030
  }
@@ -3177,6 +3191,7 @@ exports[`Token components Token renders all sizes 3`] = `
3177
3191
  style={
3178
3192
  Object {
3179
3193
  "display": "inline-block",
3194
+ "overflow": "visible",
3180
3195
  "userSelect": "none",
3181
3196
  "verticalAlign": "text-bottom",
3182
3197
  }
@@ -3343,6 +3358,7 @@ exports[`Token components Token renders all sizes 4`] = `
3343
3358
  style={
3344
3359
  Object {
3345
3360
  "display": "inline-block",
3361
+ "overflow": "visible",
3346
3362
  "userSelect": "none",
3347
3363
  "verticalAlign": "text-bottom",
3348
3364
  }
@@ -3782,6 +3798,7 @@ exports[`Token components Token renders with a remove button 1`] = `
3782
3798
  style={
3783
3799
  Object {
3784
3800
  "display": "inline-block",
3801
+ "overflow": "visible",
3785
3802
  "userSelect": "none",
3786
3803
  "verticalAlign": "text-bottom",
3787
3804
  }
@@ -2,8 +2,9 @@
2
2
  * api yet (not in main bundle). We don't recommend using it in production.
3
3
  *
4
4
  * But, they are published on npm and you can import them for experimentation/feedback.
5
- * example: import {ActionList} from '@primer/components/unreleased
5
+ * example: import {ActionList} from '@primer/components/drafts
6
6
  */
7
7
 
8
8
  // Components
9
9
  export * from './ActionList2'
10
+ export * from './NewButton'
package/src/index.ts CHANGED
@@ -52,6 +52,8 @@ export {
52
52
  ButtonClose,
53
53
  ButtonGroup
54
54
  } from './Button'
55
+ export {NewButton} from './NewButton'
56
+ export type {NewButtonProps} from './NewButton'
55
57
  export type {
56
58
  ButtonProps,
57
59
  ButtonDangerProps,
@@ -13,7 +13,7 @@ import {
13
13
  LinkIcon,
14
14
  LawIcon,
15
15
  StarIcon,
16
- GitForkIcon,
16
+ RepoForkedIcon,
17
17
  AlertIcon,
18
18
  TableIcon,
19
19
  PeopleIcon,
@@ -112,7 +112,7 @@ export function WithIcon(): JSX.Element {
112
112
  </ActionList.Item>
113
113
  <ActionList.Item>
114
114
  <ActionList.LeadingVisual>
115
- <GitForkIcon />
115
+ <RepoForkedIcon />
116
116
  </ActionList.LeadingVisual>
117
117
  3 forks
118
118
  </ActionList.Item>
@@ -241,7 +241,7 @@ SingleSelectListStory.storyName = 'Single Select'
241
241
  export function MultiSelectListStory(): JSX.Element {
242
242
  const [assignees, setAssignees] = React.useState(users.slice(0, 2))
243
243
 
244
- const toggleAssignee = assignee => {
244
+ const toggleAssignee = (assignee: typeof users[number]) => {
245
245
  const assigneeIndex = assignees.findIndex(a => a.login === assignee.login)
246
246
 
247
247
  if (assigneeIndex === -1) setAssignees([...assignees, assignee])
@@ -307,7 +307,7 @@ DisabledStory.storyName = 'Disabled Items'
307
307
  export function GroupsStory(): JSX.Element {
308
308
  const [assignees, setAssignees] = React.useState(users.slice(0, 1))
309
309
 
310
- const toggleAssignee = assignee => {
310
+ const toggleAssignee = (assignee: typeof users[number]) => {
311
311
  const assigneeIndex = assignees.findIndex(a => a.login === assignee.login)
312
312
 
313
313
  if (assigneeIndex === -1) setAssignees([...assignees, assignee])
@@ -635,7 +635,8 @@ export function DOMPropsStory(): JSX.Element {
635
635
  <h1>Simple List</h1>
636
636
  <ErsatzOverlay>
637
637
  <ActionList>
638
- <ActionList.Item id="something" onClick={event => alert(`Id is '${event.target.id}'`)}>
638
+ {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}
639
+ <ActionList.Item id="something" onClick={(event: any) => alert(`Id is '${event.target.id}'`)}>
639
640
  Has an id
640
641
  </ActionList.Item>
641
642
  </ActionList>
@@ -901,7 +902,7 @@ export function NestedChildren(): JSX.Element {
901
902
  }
902
903
  NestedChildren.storyName = 'Nested Children'
903
904
 
904
- const ReviewerDescription = ({user}) => {
905
+ const ReviewerDescription = ({user}: {user: typeof users[number]}) => {
905
906
  const usersRecentlyEditedFile = users.slice(0, 2)
906
907
 
907
908
  if (usersRecentlyEditedFile.find(u => u.login === user.login)) {
@@ -938,7 +939,7 @@ export function ChildWithInternalState(): JSX.Element {
938
939
  }
939
940
  ChildWithInternalState.storyName = 'Child with internal state'
940
941
 
941
- const StatefulChild = props => {
942
+ const StatefulChild: React.FC = props => {
942
943
  const [nameVisible, setNameVisibility] = React.useState(false)
943
944
  const toggle = () => {
944
945
  setNameVisibility(!nameVisible)
@@ -1206,7 +1207,9 @@ const repos = [
1206
1207
  export function AsyncListStory(): JSX.Element {
1207
1208
  const [results, setResults] = React.useState(repos.slice(0, 6))
1208
1209
  const [loading, setLoading] = React.useState(false)
1209
- const filter = async event => {
1210
+
1211
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1212
+ const filter = async (event: any) => {
1210
1213
  setLoading(true)
1211
1214
  const filteredResults = await filterSlowly(event.target.value)
1212
1215
  setResults(filteredResults)
@@ -1244,7 +1247,7 @@ export function AsyncListStory(): JSX.Element {
1244
1247
  }
1245
1248
  AsyncListStory.storyName = 'Async List Options'
1246
1249
 
1247
- const filterSlowly = async query => {
1250
+ const filterSlowly = async (query: string) => {
1248
1251
  // sleep for 1s before returning results
1249
1252
  await new Promise(resolve => setTimeout(resolve, 1000))
1250
1253
  return await repos.filter(name => name.includes(query))
@@ -0,0 +1,201 @@
1
+ import React, {useState} from 'react'
2
+ import {NewButton as Button, NewButtonProps as ButtonProps} from '../NewButton'
3
+ import {BaseStyles, ThemeProvider} from '..'
4
+ import {Meta} from '@storybook/react'
5
+ import {XIcon, SearchIcon, EyeIcon, EyeClosedIcon, TriangleDownIcon} from '@primer/octicons-react'
6
+ import Box from '../Box'
7
+
8
+ export default {
9
+ title: 'Composite components/New Button',
10
+
11
+ decorators: [
12
+ Story => {
13
+ return (
14
+ <ThemeProvider>
15
+ <BaseStyles>
16
+ <Story />
17
+ </BaseStyles>
18
+ </ThemeProvider>
19
+ )
20
+ }
21
+ ],
22
+ argTypes: {
23
+ size: {
24
+ control: {
25
+ type: 'radio',
26
+ options: ['small', 'medium', 'large']
27
+ }
28
+ }
29
+ }
30
+ } as Meta
31
+
32
+ export const defaultButton = ({size = 'medium', ...args}: ButtonProps) => {
33
+ return (
34
+ <Button size={size} {...args}>
35
+ Default
36
+ </Button>
37
+ )
38
+ }
39
+
40
+ export const primaryButton = (args: ButtonProps) => {
41
+ return (
42
+ <Button {...args} variant="primary">
43
+ Primary
44
+ </Button>
45
+ )
46
+ }
47
+
48
+ export const dangerButton = (args: ButtonProps) => {
49
+ return (
50
+ <Button {...args} variant="danger">
51
+ Danger
52
+ </Button>
53
+ )
54
+ }
55
+
56
+ export const invisibleButton = (args: ButtonProps) => {
57
+ return (
58
+ <Button {...args} variant="invisible">
59
+ Invisible
60
+ </Button>
61
+ )
62
+ }
63
+
64
+ export const iconBeforeButton = (args: ButtonProps) => {
65
+ return (
66
+ <Button leadingIcon={SearchIcon} {...args}>
67
+ Before
68
+ </Button>
69
+ )
70
+ }
71
+
72
+ export const iconButton = ({...args}: ButtonProps) => {
73
+ return (
74
+ <>
75
+ <Box mb={2}>
76
+ <Button icon={XIcon} {...args}>
77
+ Close
78
+ </Button>
79
+ </Box>
80
+ <Box mb={2}>
81
+ <Button icon={XIcon} {...args} variant="invisible">
82
+ Close
83
+ </Button>
84
+ </Box>
85
+ <Box mb={2}>
86
+ <Button icon={XIcon} {...args} variant="danger">
87
+ Close
88
+ </Button>
89
+ </Box>
90
+ <Box mb={2}>
91
+ <Button icon={XIcon} {...args} variant="primary">
92
+ Close
93
+ </Button>
94
+ </Box>
95
+ <Box mb={2}>
96
+ <Button icon={XIcon} {...args} variant="outline">
97
+ Close
98
+ </Button>
99
+ </Box>
100
+ </>
101
+ )
102
+ }
103
+
104
+ export const WatchCounterButton = ({...args}: ButtonProps) => {
105
+ const [count, setCount] = useState(0)
106
+ return (
107
+ <>
108
+ <Box mb={2}>
109
+ <Button onClick={() => setCount(count + 1)} {...args}>
110
+ Watch
111
+ <Button.Counter>{count}</Button.Counter>
112
+ </Button>
113
+ </Box>
114
+ <Box mb={2}>
115
+ <Button onClick={() => setCount(count + 1)} {...args} variant="primary">
116
+ Watch
117
+ <Button.Counter>{count}</Button.Counter>
118
+ </Button>
119
+ </Box>
120
+ <Box mb={2}>
121
+ <Button onClick={() => setCount(count + 1)} {...args} variant="invisible">
122
+ Watch
123
+ <Button.Counter>{count}</Button.Counter>
124
+ </Button>
125
+ </Box>
126
+ <Box mb={2}>
127
+ <Button onClick={() => setCount(count + 1)} {...args} variant="danger">
128
+ Watch
129
+ <Button.Counter>{count}</Button.Counter>
130
+ </Button>
131
+ </Box>
132
+ <Box mb={2}>
133
+ <Button onClick={() => setCount(count + 1)} {...args} variant="outline">
134
+ Watch
135
+ <Button.Counter>{count}</Button.Counter>
136
+ </Button>
137
+ </Box>
138
+ </>
139
+ )
140
+ }
141
+
142
+ export const WatchIconButton = ({...args}: ButtonProps) => {
143
+ const [watching, setWatching] = useState(false)
144
+ const icon = watching ? EyeClosedIcon : () => <EyeIcon />
145
+ return (
146
+ <Button onClick={() => setWatching(!watching)} trailingIcon={icon} {...args}>
147
+ Watch
148
+ </Button>
149
+ )
150
+ }
151
+
152
+ export const caretButton = ({...args}: ButtonProps) => {
153
+ return (
154
+ <Button trailingIcon={TriangleDownIcon} {...args}>
155
+ Dropdown
156
+ </Button>
157
+ )
158
+ }
159
+
160
+ export const blockButton = ({...args}: ButtonProps) => {
161
+ return (
162
+ <Button {...args} sx={{width: '100%'}}>
163
+ Block
164
+ </Button>
165
+ )
166
+ }
167
+
168
+ export const disabledButton = ({...args}: ButtonProps) => {
169
+ return (
170
+ <>
171
+ <Box mb={2}>
172
+ <Button disabled {...args}>
173
+ Disabled
174
+ </Button>
175
+ </Box>
176
+ <Box mb={2}>
177
+ <Button disabled variant="danger" {...args}>
178
+ Disabled
179
+ </Button>
180
+ </Box>
181
+ <Box mb={2}>
182
+ <Button disabled variant="invisible" {...args}>
183
+ Disabled
184
+ </Button>
185
+ </Box>
186
+ <Box mb={2}>
187
+ <Button disabled variant="primary" {...args}>
188
+ Disabled
189
+ </Button>
190
+ </Box>
191
+ <Box mb={2}>
192
+ <Button disabled variant="outline" {...args}>
193
+ Disabled
194
+ </Button>
195
+ </Box>
196
+ <Box mb={2}>
197
+ <Button disabled icon={() => <XIcon />} {...args}></Button>
198
+ </Box>
199
+ </>
200
+ )
201
+ }