@primer/components 0.0.0-2021102995710 → 0.0.0-202110303104

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 (427) hide show
  1. package/CHANGELOG.md +4 -90
  2. package/dist/browser.esm.js +774 -718
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +772 -716
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/ActionList/Divider.jsx +29 -0
  7. package/lib/ActionList/Group.jsx +23 -0
  8. package/lib/ActionList/Header.jsx +66 -0
  9. package/lib/ActionList/Item.js +52 -27
  10. package/lib/ActionList/Item.jsx +311 -0
  11. package/lib/ActionList/List.jsx +138 -0
  12. package/lib/ActionList/index.js +12 -23
  13. package/lib/ActionList2/Description.jsx +29 -0
  14. package/lib/ActionList2/Divider.jsx +22 -0
  15. package/lib/ActionList2/Group.d.ts +2 -28
  16. package/lib/ActionList2/Group.js +6 -55
  17. package/lib/ActionList2/Group.jsx +25 -0
  18. package/lib/ActionList2/Header.jsx +36 -0
  19. package/lib/ActionList2/Item.jsx +174 -0
  20. package/lib/ActionList2/LinkItem.jsx +28 -0
  21. package/lib/ActionList2/List.d.ts +1 -1
  22. package/lib/ActionList2/List.js +2 -1
  23. package/lib/ActionList2/List.jsx +41 -0
  24. package/lib/ActionList2/Selection.jsx +50 -0
  25. package/lib/ActionList2/Visuals.jsx +48 -0
  26. package/lib/ActionList2/index.js +23 -41
  27. package/lib/ActionMenu.jsx +73 -0
  28. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +100 -0
  29. package/lib/AnchoredOverlay/index.js +4 -12
  30. package/lib/Autocomplete/Autocomplete.d.ts +3 -3
  31. package/lib/Autocomplete/Autocomplete.jsx +100 -0
  32. package/lib/Autocomplete/AutocompleteContext.jsx +5 -0
  33. package/lib/Autocomplete/AutocompleteInput.d.ts +3 -3
  34. package/lib/Autocomplete/AutocompleteInput.jsx +113 -0
  35. package/lib/Autocomplete/AutocompleteMenu.jsx +190 -0
  36. package/lib/Autocomplete/AutocompleteOverlay.jsx +55 -0
  37. package/lib/Autocomplete/index.js +7 -14
  38. package/lib/Avatar.jsx +34 -0
  39. package/lib/AvatarPair.jsx +29 -0
  40. package/lib/AvatarStack.jsx +151 -0
  41. package/lib/BaseStyles.jsx +65 -0
  42. package/lib/BorderBox.jsx +18 -0
  43. package/lib/Box.jsx +10 -0
  44. package/lib/BranchName.jsx +20 -0
  45. package/lib/Breadcrumbs.d.ts +7 -8
  46. package/lib/Breadcrumbs.js +12 -7
  47. package/lib/Breadcrumbs.jsx +74 -0
  48. package/lib/Button/Button.d.ts +3 -2
  49. package/lib/Button/Button.js +6 -2
  50. package/lib/Button/Button.jsx +60 -0
  51. package/lib/Button/ButtonBase.d.ts +8 -5
  52. package/lib/Button/ButtonBase.js +5 -1
  53. package/lib/Button/ButtonBase.jsx +36 -0
  54. package/lib/Button/ButtonClose.d.ts +46 -3
  55. package/lib/Button/ButtonClose.js +1 -1
  56. package/lib/Button/ButtonClose.jsx +55 -0
  57. package/lib/Button/ButtonDanger.d.ts +3 -2
  58. package/lib/Button/ButtonDanger.js +6 -2
  59. package/lib/Button/ButtonDanger.jsx +63 -0
  60. package/lib/Button/ButtonGroup.jsx +55 -0
  61. package/lib/Button/ButtonInvisible.d.ts +3 -2
  62. package/lib/Button/ButtonInvisible.js +6 -2
  63. package/lib/Button/ButtonInvisible.jsx +52 -0
  64. package/lib/Button/ButtonOutline.d.ts +3 -2
  65. package/lib/Button/ButtonOutline.js +6 -2
  66. package/lib/Button/ButtonOutline.jsx +63 -0
  67. package/lib/Button/ButtonPrimary.d.ts +3 -2
  68. package/lib/Button/ButtonPrimary.js +6 -2
  69. package/lib/Button/ButtonPrimary.jsx +62 -0
  70. package/lib/Button/ButtonStyles.jsx +37 -0
  71. package/lib/Button/ButtonTableList.d.ts +2 -1
  72. package/lib/Button/ButtonTableList.js +1 -1
  73. package/lib/Button/ButtonTableList.jsx +49 -0
  74. package/lib/Button/index.js +21 -70
  75. package/lib/Caret.jsx +93 -0
  76. package/lib/CircleBadge.d.ts +5 -4
  77. package/lib/CircleBadge.js +1 -1
  78. package/lib/CircleBadge.jsx +43 -0
  79. package/lib/CircleOcticon.d.ts +1 -1
  80. package/lib/CircleOcticon.jsx +21 -0
  81. package/lib/CounterLabel.d.ts +2 -1
  82. package/lib/CounterLabel.js +1 -1
  83. package/lib/CounterLabel.jsx +44 -0
  84. package/lib/Details.jsx +21 -0
  85. package/lib/Dialog/ConfirmationDialog.jsx +146 -0
  86. package/lib/Dialog/Dialog.d.ts +9 -5
  87. package/lib/Dialog/Dialog.js +11 -17
  88. package/lib/Dialog/Dialog.jsx +273 -0
  89. package/lib/Dialog.d.ts +5 -4
  90. package/lib/Dialog.js +1 -1
  91. package/lib/Dialog.jsx +131 -0
  92. package/lib/Dropdown.d.ts +99 -10
  93. package/lib/Dropdown.js +3 -3
  94. package/lib/Dropdown.jsx +134 -0
  95. package/lib/DropdownMenu/DropdownButton.d.ts +47 -3
  96. package/lib/DropdownMenu/DropdownButton.js +1 -3
  97. package/lib/DropdownMenu/DropdownButton.jsx +14 -0
  98. package/lib/DropdownMenu/DropdownMenu.jsx +70 -0
  99. package/lib/DropdownMenu/index.js +6 -20
  100. package/lib/DropdownStyles.js +18 -26
  101. package/lib/EmojiPicker/EmojiPicker.d.ts +15 -0
  102. package/lib/EmojiPicker/EmojiPicker.js +205 -0
  103. package/lib/EmojiPicker/EmojiPicker.jsx +125 -0
  104. package/lib/EmojiPicker/EmojiPickerAnchor.d.ts +0 -0
  105. package/lib/EmojiPicker/EmojiPickerAnchor.js +1 -0
  106. package/lib/EmojiPicker/EmojiPickerAnchor.jsx +1 -0
  107. package/lib/EmojiPicker/EmojiPickerPanel.d.ts +3 -0
  108. package/lib/EmojiPicker/EmojiPickerPanel.js +18 -0
  109. package/lib/EmojiPicker/EmojiPickerPanel.jsx +10 -0
  110. package/lib/EmojiPicker/data.d.ts +9 -0
  111. package/lib/EmojiPicker/data.js +7254 -0
  112. package/lib/EmojiPicker/index.d.ts +2 -0
  113. package/lib/EmojiPicker/index.js +8 -0
  114. package/lib/FilterList.d.ts +303 -264
  115. package/lib/FilterList.js +6 -2
  116. package/lib/FilterList.jsx +63 -0
  117. package/lib/FilteredActionList/FilteredActionList.jsx +100 -0
  118. package/lib/FilteredActionList/index.js +4 -12
  119. package/lib/FilteredSearch.d.ts +2 -1
  120. package/lib/FilteredSearch.js +1 -1
  121. package/lib/FilteredSearch.jsx +29 -0
  122. package/lib/Flash.d.ts +2 -1
  123. package/lib/Flash.js +1 -1
  124. package/lib/Flash.jsx +70 -0
  125. package/lib/Flex.jsx +15 -0
  126. package/lib/FormGroup.d.ts +5 -4
  127. package/lib/FormGroup.js +2 -2
  128. package/lib/FormGroup.jsx +25 -0
  129. package/lib/Grid.jsx +15 -0
  130. package/lib/Header.d.ts +7 -6
  131. package/lib/Header.js +4 -4
  132. package/lib/Header.jsx +90 -0
  133. package/lib/Heading.jsx +21 -0
  134. package/lib/Label.d.ts +2 -1
  135. package/lib/Label.js +3 -2
  136. package/lib/Label.jsx +84 -0
  137. package/lib/LabelGroup.d.ts +2 -1
  138. package/lib/LabelGroup.js +1 -1
  139. package/lib/LabelGroup.jsx +19 -0
  140. package/lib/Link.d.ts +2 -1
  141. package/lib/Link.js +1 -1
  142. package/lib/Link.jsx +38 -0
  143. package/lib/NewButton/button-counter.jsx +14 -0
  144. package/lib/NewButton/button.js +42 -34
  145. package/lib/NewButton/button.jsx +278 -0
  146. package/lib/NewButton/index.js +5 -12
  147. package/lib/NewButton/types.js +2 -1
  148. package/lib/Overlay.d.ts +11 -14
  149. package/lib/Overlay.js +4 -3
  150. package/lib/Overlay.jsx +156 -0
  151. package/lib/Pagehead.d.ts +2 -1
  152. package/lib/Pagehead.js +1 -1
  153. package/lib/Pagehead.jsx +18 -0
  154. package/lib/Pagination/Pagination.js +1 -1
  155. package/lib/Pagination/Pagination.jsx +163 -0
  156. package/lib/Pagination/index.js +6 -12
  157. package/lib/Pagination/model.jsx +174 -0
  158. package/lib/PointerBox.jsx +25 -0
  159. package/lib/Popover.d.ts +5 -4
  160. package/lib/Popover.js +5 -4
  161. package/lib/Popover.jsx +210 -0
  162. package/lib/Portal/Portal.jsx +79 -0
  163. package/lib/Portal/index.js +5 -16
  164. package/lib/Position.d.ts +4 -4
  165. package/lib/Position.jsx +46 -0
  166. package/lib/ProgressBar.jsx +39 -0
  167. package/lib/SelectMenu/SelectMenu.d.ts +189 -21
  168. package/lib/SelectMenu/SelectMenu.js +3 -1
  169. package/lib/SelectMenu/SelectMenu.jsx +114 -0
  170. package/lib/SelectMenu/SelectMenuContext.jsx +5 -0
  171. package/lib/SelectMenu/SelectMenuDivider.d.ts +2 -1
  172. package/lib/SelectMenu/SelectMenuDivider.js +1 -1
  173. package/lib/SelectMenu/SelectMenuDivider.jsx +43 -0
  174. package/lib/SelectMenu/SelectMenuFilter.js +1 -1
  175. package/lib/SelectMenu/SelectMenuFilter.jsx +59 -0
  176. package/lib/SelectMenu/SelectMenuFooter.d.ts +2 -1
  177. package/lib/SelectMenu/SelectMenuFooter.js +1 -1
  178. package/lib/SelectMenu/SelectMenuFooter.jsx +46 -0
  179. package/lib/SelectMenu/SelectMenuHeader.d.ts +2 -1
  180. package/lib/SelectMenu/SelectMenuHeader.js +1 -1
  181. package/lib/SelectMenu/SelectMenuHeader.jsx +44 -0
  182. package/lib/SelectMenu/SelectMenuItem.d.ts +3 -2
  183. package/lib/SelectMenu/SelectMenuItem.js +1 -1
  184. package/lib/SelectMenu/SelectMenuItem.jsx +143 -0
  185. package/lib/SelectMenu/SelectMenuList.d.ts +2 -1
  186. package/lib/SelectMenu/SelectMenuList.js +1 -1
  187. package/lib/SelectMenu/SelectMenuList.jsx +60 -0
  188. package/lib/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  189. package/lib/SelectMenu/SelectMenuLoadingAnimation.js +1 -3
  190. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +21 -0
  191. package/lib/SelectMenu/SelectMenuModal.d.ts +3 -2
  192. package/lib/SelectMenu/SelectMenuModal.js +1 -1
  193. package/lib/SelectMenu/SelectMenuModal.jsx +119 -0
  194. package/lib/SelectMenu/SelectMenuTab.d.ts +2 -1
  195. package/lib/SelectMenu/SelectMenuTab.js +1 -1
  196. package/lib/SelectMenu/SelectMenuTab.jsx +93 -0
  197. package/lib/SelectMenu/SelectMenuTabPanel.d.ts +2 -1
  198. package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
  199. package/lib/SelectMenu/SelectMenuTabPanel.jsx +43 -0
  200. package/lib/SelectMenu/SelectMenuTabs.d.ts +2 -1
  201. package/lib/SelectMenu/SelectMenuTabs.js +1 -1
  202. package/lib/SelectMenu/SelectMenuTabs.jsx +58 -0
  203. package/lib/SelectMenu/hooks/useKeyboardNav.js +80 -96
  204. package/lib/SelectMenu/index.js +7 -14
  205. package/lib/SelectPanel/SelectPanel.jsx +105 -0
  206. package/lib/SelectPanel/index.js +4 -12
  207. package/lib/SideNav.d.ts +8 -11
  208. package/lib/SideNav.js +15 -8
  209. package/lib/SideNav.jsx +177 -0
  210. package/lib/Spinner.jsx +35 -0
  211. package/lib/StateLabel.d.ts +2 -1
  212. package/lib/StateLabel.js +5 -6
  213. package/lib/StateLabel.jsx +94 -0
  214. package/lib/StyledOcticon.d.ts +2 -1
  215. package/lib/StyledOcticon.js +3 -1
  216. package/lib/StyledOcticon.jsx +20 -0
  217. package/lib/SubNav.d.ts +11 -5
  218. package/lib/SubNav.js +12 -7
  219. package/lib/SubNav.jsx +104 -0
  220. package/lib/TabNav.d.ts +4 -3
  221. package/lib/TabNav.js +2 -2
  222. package/lib/TabNav.jsx +60 -0
  223. package/lib/Text.jsx +14 -0
  224. package/lib/TextInput.jsx +23 -0
  225. package/lib/TextInputWithTokens.d.ts +3 -3
  226. package/lib/TextInputWithTokens.jsx +218 -0
  227. package/lib/ThemeProvider.jsx +130 -0
  228. package/lib/Timeline.d.ts +393 -19
  229. package/lib/Timeline.js +13 -16
  230. package/lib/Timeline.jsx +124 -0
  231. package/lib/Token/AvatarToken.jsx +54 -0
  232. package/lib/Token/IssueLabelToken.jsx +125 -0
  233. package/lib/Token/Token.d.ts +1 -1
  234. package/lib/Token/Token.jsx +103 -0
  235. package/lib/Token/TokenBase.jsx +88 -0
  236. package/lib/Token/_RemoveTokenButton.jsx +108 -0
  237. package/lib/Token/_TokenTextContainer.jsx +49 -0
  238. package/lib/Token/index.js +11 -30
  239. package/lib/Tooltip.d.ts +2 -1
  240. package/lib/Tooltip.js +1 -1
  241. package/lib/Tooltip.jsx +246 -0
  242. package/lib/Truncate.d.ts +2 -1
  243. package/lib/Truncate.js +3 -1
  244. package/lib/Truncate.jsx +27 -0
  245. package/lib/UnderlineNav.d.ts +3 -2
  246. package/lib/UnderlineNav.js +2 -2
  247. package/lib/UnderlineNav.jsx +90 -0
  248. package/lib/_TextInputWrapper.jsx +120 -0
  249. package/lib/_UnstyledTextInput.jsx +22 -0
  250. package/lib/behaviors/anchoredPosition.js +205 -234
  251. package/lib/behaviors/focusTrap.js +121 -157
  252. package/lib/behaviors/focusZone.js +434 -509
  253. package/lib/behaviors/scrollIntoViewingArea.js +18 -35
  254. package/lib/constants.js +39 -43
  255. package/lib/drafts.js +20 -30
  256. package/lib/hooks/index.js +16 -60
  257. package/lib/hooks/useAnchoredPosition.js +32 -40
  258. package/lib/hooks/useCombinedRefs.js +32 -36
  259. package/lib/hooks/useDetails.jsx +39 -0
  260. package/lib/hooks/useDialog.js +72 -96
  261. package/lib/hooks/useFocusTrap.js +43 -60
  262. package/lib/hooks/useFocusZone.js +54 -50
  263. package/lib/hooks/useOnEscapePress.js +25 -36
  264. package/lib/hooks/useOnOutsideClick.jsx +61 -0
  265. package/lib/hooks/useOpenAndCloseFocus.js +22 -34
  266. package/lib/hooks/useOverlay.jsx +15 -0
  267. package/lib/hooks/useProvidedRefOrCreate.js +10 -14
  268. package/lib/hooks/useProvidedStateOrCreate.js +13 -16
  269. package/lib/hooks/useRenderForcingRef.js +13 -17
  270. package/lib/hooks/useResizeObserver.js +15 -18
  271. package/lib/hooks/useSafeTimeout.js +22 -30
  272. package/lib/hooks/useScrollFlash.js +16 -23
  273. package/lib/index.d.ts +2 -2
  274. package/lib/index.js +165 -652
  275. package/lib/polyfills/eventListenerSignal.js +37 -45
  276. package/lib/sx.js +10 -22
  277. package/lib/theme-preval.js +64 -3169
  278. package/lib/theme.js +3 -12
  279. package/lib/utils/create-slots.jsx +65 -0
  280. package/lib/utils/deprecate.jsx +59 -0
  281. package/lib/utils/isNumeric.jsx +7 -0
  282. package/lib/utils/iterateFocusableElements.js +63 -85
  283. package/lib/utils/ssr.jsx +6 -0
  284. package/lib/utils/test-deprecations.jsx +20 -0
  285. package/lib/utils/test-helpers.jsx +8 -0
  286. package/lib/utils/test-matchers.jsx +100 -0
  287. package/lib/utils/testing.d.ts +61 -28
  288. package/lib/utils/testing.js +0 -29
  289. package/lib/utils/testing.jsx +206 -0
  290. package/lib/utils/theme.js +33 -47
  291. package/lib/utils/types/AriaRole.js +2 -1
  292. package/lib/utils/types/ComponentProps.js +2 -1
  293. package/lib/utils/types/Flatten.js +2 -1
  294. package/lib/utils/types/KeyPaths.js +2 -1
  295. package/lib/utils/types/MandateProps.js +16 -1
  296. package/lib/utils/types/Merge.js +2 -1
  297. package/lib/utils/types/index.js +16 -69
  298. package/lib/utils/uniqueId.js +5 -8
  299. package/lib/utils/use-force-update.js +8 -14
  300. package/lib/utils/useIsomorphicLayoutEffect.js +8 -11
  301. package/lib/utils/userAgent.js +8 -12
  302. package/lib-esm/ActionList/Item.js +53 -28
  303. package/lib-esm/ActionList2/Group.d.ts +2 -28
  304. package/lib-esm/ActionList2/Group.js +5 -52
  305. package/lib-esm/ActionList2/List.d.ts +1 -1
  306. package/lib-esm/ActionList2/List.js +2 -1
  307. package/lib-esm/Autocomplete/Autocomplete.d.ts +3 -3
  308. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +3 -3
  309. package/lib-esm/Breadcrumbs.d.ts +7 -8
  310. package/lib-esm/Breadcrumbs.js +13 -8
  311. package/lib-esm/Button/Button.d.ts +3 -2
  312. package/lib-esm/Button/Button.js +2 -2
  313. package/lib-esm/Button/ButtonBase.d.ts +8 -5
  314. package/lib-esm/Button/ButtonBase.js +3 -1
  315. package/lib-esm/Button/ButtonClose.d.ts +46 -3
  316. package/lib-esm/Button/ButtonClose.js +2 -2
  317. package/lib-esm/Button/ButtonDanger.d.ts +3 -2
  318. package/lib-esm/Button/ButtonDanger.js +2 -2
  319. package/lib-esm/Button/ButtonInvisible.d.ts +3 -2
  320. package/lib-esm/Button/ButtonInvisible.js +2 -2
  321. package/lib-esm/Button/ButtonOutline.d.ts +3 -2
  322. package/lib-esm/Button/ButtonOutline.js +2 -2
  323. package/lib-esm/Button/ButtonPrimary.d.ts +3 -2
  324. package/lib-esm/Button/ButtonPrimary.js +2 -2
  325. package/lib-esm/Button/ButtonTableList.d.ts +2 -1
  326. package/lib-esm/Button/ButtonTableList.js +2 -2
  327. package/lib-esm/CircleBadge.d.ts +5 -4
  328. package/lib-esm/CircleBadge.js +2 -2
  329. package/lib-esm/CircleOcticon.d.ts +1 -1
  330. package/lib-esm/CounterLabel.d.ts +2 -1
  331. package/lib-esm/CounterLabel.js +2 -2
  332. package/lib-esm/Dialog/Dialog.d.ts +9 -5
  333. package/lib-esm/Dialog/Dialog.js +12 -12
  334. package/lib-esm/Dialog.d.ts +5 -4
  335. package/lib-esm/Dialog.js +2 -2
  336. package/lib-esm/Dropdown.d.ts +99 -10
  337. package/lib-esm/Dropdown.js +4 -4
  338. package/lib-esm/DropdownMenu/DropdownButton.d.ts +47 -3
  339. package/lib-esm/DropdownMenu/DropdownButton.js +1 -3
  340. package/lib-esm/EmojiPicker/EmojiPicker.d.ts +15 -0
  341. package/lib-esm/EmojiPicker/EmojiPicker.js +184 -0
  342. package/lib-esm/EmojiPicker/EmojiPickerAnchor.d.ts +0 -0
  343. package/lib-esm/EmojiPicker/EmojiPickerAnchor.js +0 -0
  344. package/lib-esm/EmojiPicker/EmojiPickerPanel.d.ts +3 -0
  345. package/lib-esm/EmojiPicker/EmojiPickerPanel.js +8 -0
  346. package/lib-esm/EmojiPicker/data.d.ts +9 -0
  347. package/lib-esm/EmojiPicker/data.js +5434 -0
  348. package/lib-esm/EmojiPicker/index.d.ts +2 -0
  349. package/lib-esm/EmojiPicker/index.js +1 -0
  350. package/lib-esm/FilterList.d.ts +303 -264
  351. package/lib-esm/FilterList.js +7 -3
  352. package/lib-esm/FilteredSearch.d.ts +2 -1
  353. package/lib-esm/FilteredSearch.js +2 -2
  354. package/lib-esm/Flash.d.ts +2 -1
  355. package/lib-esm/Flash.js +2 -2
  356. package/lib-esm/FormGroup.d.ts +5 -4
  357. package/lib-esm/FormGroup.js +3 -3
  358. package/lib-esm/Header.d.ts +7 -6
  359. package/lib-esm/Header.js +5 -5
  360. package/lib-esm/Label.d.ts +2 -1
  361. package/lib-esm/Label.js +4 -3
  362. package/lib-esm/LabelGroup.d.ts +2 -1
  363. package/lib-esm/LabelGroup.js +2 -2
  364. package/lib-esm/Link.d.ts +2 -1
  365. package/lib-esm/Link.js +2 -2
  366. package/lib-esm/NewButton/button.js +42 -31
  367. package/lib-esm/Overlay.d.ts +11 -14
  368. package/lib-esm/Overlay.js +3 -2
  369. package/lib-esm/Pagehead.d.ts +2 -1
  370. package/lib-esm/Pagehead.js +2 -2
  371. package/lib-esm/Pagination/Pagination.js +2 -2
  372. package/lib-esm/Popover.d.ts +5 -4
  373. package/lib-esm/Popover.js +5 -4
  374. package/lib-esm/Position.d.ts +4 -4
  375. package/lib-esm/SelectMenu/SelectMenu.d.ts +189 -21
  376. package/lib-esm/SelectMenu/SelectMenu.js +2 -1
  377. package/lib-esm/SelectMenu/SelectMenuDivider.d.ts +2 -1
  378. package/lib-esm/SelectMenu/SelectMenuDivider.js +2 -2
  379. package/lib-esm/SelectMenu/SelectMenuFilter.js +2 -2
  380. package/lib-esm/SelectMenu/SelectMenuFooter.d.ts +2 -1
  381. package/lib-esm/SelectMenu/SelectMenuFooter.js +2 -2
  382. package/lib-esm/SelectMenu/SelectMenuHeader.d.ts +2 -1
  383. package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
  384. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +3 -2
  385. package/lib-esm/SelectMenu/SelectMenuItem.js +2 -2
  386. package/lib-esm/SelectMenu/SelectMenuList.d.ts +2 -1
  387. package/lib-esm/SelectMenu/SelectMenuList.js +2 -2
  388. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  389. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +2 -3
  390. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +3 -2
  391. package/lib-esm/SelectMenu/SelectMenuModal.js +2 -2
  392. package/lib-esm/SelectMenu/SelectMenuTab.d.ts +2 -1
  393. package/lib-esm/SelectMenu/SelectMenuTab.js +2 -2
  394. package/lib-esm/SelectMenu/SelectMenuTabPanel.d.ts +2 -1
  395. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +2 -2
  396. package/lib-esm/SelectMenu/SelectMenuTabs.d.ts +2 -1
  397. package/lib-esm/SelectMenu/SelectMenuTabs.js +2 -2
  398. package/lib-esm/SideNav.d.ts +8 -11
  399. package/lib-esm/SideNav.js +16 -8
  400. package/lib-esm/StateLabel.d.ts +2 -1
  401. package/lib-esm/StateLabel.js +6 -7
  402. package/lib-esm/StyledOcticon.d.ts +2 -1
  403. package/lib-esm/StyledOcticon.js +2 -1
  404. package/lib-esm/SubNav.d.ts +11 -5
  405. package/lib-esm/SubNav.js +13 -8
  406. package/lib-esm/TabNav.d.ts +4 -3
  407. package/lib-esm/TabNav.js +3 -3
  408. package/lib-esm/TextInputWithTokens.d.ts +3 -3
  409. package/lib-esm/Timeline.d.ts +393 -19
  410. package/lib-esm/Timeline.js +13 -12
  411. package/lib-esm/Token/Token.d.ts +1 -1
  412. package/lib-esm/Tooltip.d.ts +2 -1
  413. package/lib-esm/Tooltip.js +2 -2
  414. package/lib-esm/Truncate.d.ts +2 -1
  415. package/lib-esm/Truncate.js +2 -1
  416. package/lib-esm/UnderlineNav.d.ts +3 -2
  417. package/lib-esm/UnderlineNav.js +3 -3
  418. package/lib-esm/index.d.ts +2 -2
  419. package/lib-esm/index.js +1 -1
  420. package/lib-esm/theme-preval.js +366 -512
  421. package/lib-esm/utils/testing.d.ts +61 -28
  422. package/lib-esm/utils/testing.js +0 -24
  423. package/package.json +5 -4
  424. package/lib/Checkbox.d.ts +0 -29
  425. package/lib/Checkbox.js +0 -64
  426. package/lib-esm/Checkbox.d.ts +0 -29
  427. package/lib-esm/Checkbox.js +0 -44
@@ -1,101 +1,85 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _react = require("react");
9
-
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
10
4
  // adapted from details-menu web component https://github.com/github/details-menu-element
11
5
  function useKeyboardNav(details, open, setOpen) {
12
- const handleKeyDown = (0, _react.useCallback)(event => {
13
- const closeDetails = () => {
14
- setOpen(false);
15
- const summary = details.current.querySelector('summary');
16
- if (summary) summary.focus();
17
- };
18
-
19
- const openDetails = () => {
20
- setOpen(true);
21
- };
22
-
23
- const focusItem = next => {
24
- const options = Array.from(details.current.querySelectorAll('[role^="menuitem"]:not([hidden]):not([disabled]):not([aria-disabled="true"])'));
25
- const selected = document.activeElement;
26
- const index = options.indexOf(selected);
27
- const found = next ? options[index + 1] : options[index - 1];
28
- const def = next ? options[0] : options[options.length - 1];
29
- return found || def;
30
- };
31
-
32
- const isMenuItem = el => {
33
- const role = el.getAttribute('role');
34
- return role === 'menuitem' || role === 'menuitemcheckbox' || role === 'menuitemradio';
35
- };
36
-
37
- if (!(event instanceof KeyboardEvent)) return;
38
- const isSummaryFocused = event.target instanceof Element && event.target.tagName === 'SUMMARY';
39
-
40
- switch (event.key) {
41
- case 'Escape':
42
- if (open) {
43
- closeDetails(details);
44
- event.preventDefault();
45
- event.stopPropagation();
6
+ const handleKeyDown = react_1.useCallback(event => {
7
+ const closeDetails = () => {
8
+ setOpen(false);
9
+ const summary = details.current.querySelector('summary');
10
+ if (summary)
11
+ summary.focus();
12
+ };
13
+ const openDetails = () => {
14
+ setOpen(true);
15
+ };
16
+ const focusItem = next => {
17
+ const options = Array.from(details.current.querySelectorAll('[role^="menuitem"]:not([hidden]):not([disabled]):not([aria-disabled="true"])'));
18
+ const selected = document.activeElement;
19
+ const index = options.indexOf(selected);
20
+ const found = next ? options[index + 1] : options[index - 1];
21
+ const def = next ? options[0] : options[options.length - 1];
22
+ return found || def;
23
+ };
24
+ const isMenuItem = el => {
25
+ const role = el.getAttribute('role');
26
+ return role === 'menuitem' || role === 'menuitemcheckbox' || role === 'menuitemradio';
27
+ };
28
+ if (!(event instanceof KeyboardEvent))
29
+ return;
30
+ const isSummaryFocused = event.target instanceof Element && event.target.tagName === 'SUMMARY';
31
+ switch (event.key) {
32
+ case 'Escape':
33
+ if (open) {
34
+ closeDetails(details);
35
+ event.preventDefault();
36
+ event.stopPropagation();
37
+ }
38
+ break;
39
+ case 'ArrowDown':
40
+ {
41
+ if (isSummaryFocused && !open) {
42
+ openDetails(details);
43
+ }
44
+ const target = focusItem(true);
45
+ if (target)
46
+ target.focus();
47
+ event.preventDefault();
48
+ }
49
+ break;
50
+ case 'ArrowUp':
51
+ {
52
+ if (isSummaryFocused && !open) {
53
+ openDetails();
54
+ }
55
+ const target = focusItem(false);
56
+ if (target)
57
+ target.focus();
58
+ event.preventDefault();
59
+ }
60
+ break;
61
+ case ' ':
62
+ case 'Enter':
63
+ {
64
+ const selected = document.activeElement;
65
+ if (selected && isMenuItem(selected) && selected.closest('details') === details) {
66
+ event.preventDefault();
67
+ event.stopPropagation();
68
+ selected.click();
69
+ }
70
+ }
71
+ break;
72
+ default:
46
73
  }
47
-
48
- break;
49
-
50
- case 'ArrowDown':
51
- {
52
- if (isSummaryFocused && !open) {
53
- openDetails(details);
54
- }
55
-
56
- const target = focusItem(true);
57
- if (target) target.focus();
58
- event.preventDefault();
59
- }
60
- break;
61
-
62
- case 'ArrowUp':
63
- {
64
- if (isSummaryFocused && !open) {
65
- openDetails();
66
- }
67
-
68
- const target = focusItem(false);
69
- if (target) target.focus();
70
- event.preventDefault();
71
- }
72
- break;
73
-
74
- case ' ':
75
- case 'Enter':
76
- {
77
- const selected = document.activeElement;
78
-
79
- if (selected && isMenuItem(selected) && selected.closest('details') === details) {
80
- event.preventDefault();
81
- event.stopPropagation();
82
- selected.click();
83
- }
84
- }
85
- break;
86
-
87
- default:
88
- }
89
- }, [details, open, setOpen]);
90
- (0, _react.useEffect)(() => {
91
- const current = details.current;
92
- if (!current) return;
93
- current.addEventListener('keydown', handleKeyDown);
94
- return () => {
95
- current.removeEventListener('keydown', handleKeyDown);
96
- };
97
- }, [details, handleKeyDown]);
74
+ }, [details, open, setOpen]);
75
+ react_1.useEffect(() => {
76
+ const current = details.current;
77
+ if (!current)
78
+ return;
79
+ current.addEventListener('keydown', handleKeyDown);
80
+ return () => {
81
+ current.removeEventListener('keydown', handleKeyDown);
82
+ };
83
+ }, [details, handleKeyDown]);
98
84
  }
99
-
100
- var _default = useKeyboardNav;
101
- exports.default = _default;
85
+ exports.default = useKeyboardNav;
@@ -1,15 +1,8 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _SelectMenu.default;
10
- }
11
- });
12
-
13
- var _SelectMenu = _interopRequireDefault(require("./SelectMenu"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = void 0;
7
+ var SelectMenu_1 = require("./SelectMenu");
8
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(SelectMenu_1).default; } });
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.SelectPanel = void 0;
23
+ const react_1 = __importStar(require("react"));
24
+ const FilteredActionList_1 = require("../FilteredActionList");
25
+ const DropdownMenu_1 = require("../DropdownMenu");
26
+ const AnchoredOverlay_1 = require("../AnchoredOverlay");
27
+ const useProvidedStateOrCreate_1 = require("../hooks/useProvidedStateOrCreate");
28
+ const hooks_1 = require("../hooks");
29
+ function isMultiSelectVariant(selected) {
30
+ return Array.isArray(selected);
31
+ }
32
+ const focusZoneSettings = {
33
+ // Let FilteredActionList handle focus zone
34
+ disabled: true
35
+ };
36
+ function SelectPanel({ open, onOpenChange, renderAnchor = props => <DropdownMenu_1.DropdownButton {...props}/>, anchorRef: externalAnchorRef, placeholder, selected, onSelectedChange, filterValue: externalFilterValue, onFilterChange: externalOnFilterChange, items, textInputProps, overlayProps, sx, ...listProps }) {
37
+ const [filterValue, setInternalFilterValue] = useProvidedStateOrCreate_1.useProvidedStateOrCreate(externalFilterValue, undefined, '');
38
+ const onFilterChange = react_1.useCallback((value, e) => {
39
+ externalOnFilterChange(value, e);
40
+ setInternalFilterValue(value);
41
+ }, [externalOnFilterChange, setInternalFilterValue]);
42
+ const anchorRef = hooks_1.useProvidedRefOrCreate(externalAnchorRef);
43
+ const onOpen = react_1.useCallback(gesture => onOpenChange(true, gesture), [onOpenChange]);
44
+ const onClose = react_1.useCallback((gesture) => {
45
+ onOpenChange(false, gesture);
46
+ }, [onOpenChange]);
47
+ const renderMenuAnchor = react_1.useMemo(() => {
48
+ if (renderAnchor === null) {
49
+ return null;
50
+ }
51
+ const selectedItems = Array.isArray(selected) ? selected : [...(selected ? [selected] : [])];
52
+ return (props) => {
53
+ return renderAnchor({
54
+ ...props,
55
+ children: selectedItems.length ? selectedItems.map(item => item.text).join(', ') : placeholder
56
+ });
57
+ };
58
+ }, [placeholder, renderAnchor, selected]);
59
+ const itemsToRender = react_1.useMemo(() => {
60
+ return items.map(item => {
61
+ const isItemSelected = isMultiSelectVariant(selected) ? selected.includes(item) : selected === item;
62
+ return {
63
+ ...item,
64
+ role: 'option',
65
+ selected: 'selected' in item && item.selected === undefined ? undefined : isItemSelected,
66
+ onAction: (itemFromAction, event) => {
67
+ item.onAction?.(itemFromAction, event);
68
+ if (event.defaultPrevented) {
69
+ return;
70
+ }
71
+ if (isMultiSelectVariant(selected)) {
72
+ const otherSelectedItems = selected.filter(selectedItem => selectedItem !== item);
73
+ const newSelectedItems = selected.includes(item) ? otherSelectedItems : [...otherSelectedItems, item];
74
+ const multiSelectOnChange = onSelectedChange;
75
+ multiSelectOnChange(newSelectedItems);
76
+ return;
77
+ }
78
+ // single select
79
+ const singleSelectOnChange = onSelectedChange;
80
+ singleSelectOnChange(item === selected ? undefined : item);
81
+ onClose('selection');
82
+ }
83
+ };
84
+ });
85
+ }, [onClose, onSelectedChange, items, selected]);
86
+ const inputRef = react_1.default.useRef(null);
87
+ const focusTrapSettings = {
88
+ initialFocusRef: inputRef
89
+ };
90
+ const extendedTextInputProps = react_1.useMemo(() => {
91
+ return {
92
+ sx: { m: 2 },
93
+ contrast: true,
94
+ ...textInputProps
95
+ };
96
+ }, [textInputProps]);
97
+ return (<AnchoredOverlay_1.AnchoredOverlay renderAnchor={renderMenuAnchor} anchorRef={anchorRef} open={open} onOpen={onOpen} onClose={onClose} overlayProps={overlayProps} focusTrapSettings={focusTrapSettings} focusZoneSettings={focusZoneSettings}>
98
+ <FilteredActionList_1.FilteredActionList filterValue={filterValue} onFilterChange={onFilterChange} {...listProps} role="listbox" items={itemsToRender} selectionVariant={isMultiSelectVariant(selected) ? 'multiple' : 'single'} textInputProps={extendedTextInputProps} inputRef={inputRef}
99
+ // inheriting height and maxHeight ensures that the FilteredActionList is never taller
100
+ // than the Overlay (which would break scrolling the items)
101
+ sx={{ ...sx, height: 'inherit', maxHeight: 'inherit' }}/>
102
+ </AnchoredOverlay_1.AnchoredOverlay>);
103
+ }
104
+ exports.SelectPanel = SelectPanel;
105
+ SelectPanel.displayName = 'SelectPanel';
@@ -1,13 +1,5 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "SelectPanel", {
7
- enumerable: true,
8
- get: function () {
9
- return _SelectPanel.SelectPanel;
10
- }
11
- });
12
-
13
- var _SelectPanel = require("./SelectPanel");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectPanel = void 0;
4
+ var SelectPanel_1 = require("./SelectPanel");
5
+ Object.defineProperty(exports, "SelectPanel", { enumerable: true, get: function () { return SelectPanel_1.SelectPanel; } });
package/lib/SideNav.d.ts CHANGED
@@ -1,17 +1,14 @@
1
1
  /// <reference types="hoist-non-react-statics" />
2
+ /// <reference types="react" />
2
3
  import * as History from 'history';
4
+ import Box from './Box';
3
5
  import { ComponentProps } from './utils/types';
4
- import React from 'react';
5
- import { SxProp } from './sx';
6
6
  declare type SideNavBaseProps = {
7
7
  variant?: 'lightweight' | 'normal';
8
8
  bordered?: boolean;
9
- className?: string;
10
- children?: React.ReactNode;
11
- 'aria-label'?: string;
12
- };
13
- declare function SideNavBase({ variant, className, bordered, children, 'aria-label': ariaLabel }: SideNavBaseProps): JSX.Element;
14
- declare const SideNav: import("styled-components").StyledComponent<typeof SideNavBase, any, SxProp, never>;
9
+ } & ComponentProps<typeof Box>;
10
+ declare function SideNavBase({ variant, className, bordered, children, ...props }: SideNavBaseProps): JSX.Element;
11
+ declare const SideNav: import("styled-components").StyledComponent<typeof SideNavBase, any, {}, never>;
15
12
  declare type StyledSideNavLinkProps = {
16
13
  to?: History.LocationDescriptor;
17
14
  selected?: boolean;
@@ -21,14 +18,14 @@ declare const SideNavLink: import("styled-components").StyledComponent<"a", any,
21
18
  hoverColor?: string | undefined;
22
19
  muted?: boolean | undefined;
23
20
  underline?: boolean | undefined;
24
- } & SxProp & StyledSideNavLinkProps, never>;
21
+ } & import("./constants").SystemCommonProps & import("./sx").SxProp & import("./constants").SystemTypographyProps & StyledSideNavLinkProps, never>;
25
22
  export declare type SideNavProps = ComponentProps<typeof SideNav>;
26
23
  export declare type SideNavLinkProps = ComponentProps<typeof SideNavLink>;
27
- declare const _default: string & import("styled-components").StyledComponentBase<typeof SideNavBase, any, SxProp, never> & import("hoist-non-react-statics").NonReactStatics<typeof SideNavBase, {}> & {
24
+ declare const _default: string & import("styled-components").StyledComponentBase<typeof SideNavBase, any, {}, never> & import("hoist-non-react-statics").NonReactStatics<typeof SideNavBase, {}> & {
28
25
  Link: import("styled-components").StyledComponent<"a", any, {
29
26
  hoverColor?: string | undefined;
30
27
  muted?: boolean | undefined;
31
28
  underline?: boolean | undefined;
32
- } & SxProp & StyledSideNavLinkProps, never>;
29
+ } & import("./constants").SystemCommonProps & import("./sx").SxProp & import("./constants").SystemTypographyProps & StyledSideNavLinkProps, never>;
33
30
  };
34
31
  export default _default;
package/lib/SideNav.js CHANGED
@@ -25,32 +25,39 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
25
 
26
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
27
 
28
- // eslint-disable-next-line import/no-namespace
28
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
29
+
29
30
  function SideNavBase({
30
31
  variant,
31
32
  className,
32
33
  bordered,
33
34
  children,
34
- 'aria-label': ariaLabel
35
+ ...props
35
36
  }) {
36
37
  const variantClassName = variant === 'lightweight' ? 'lightweight' : 'normal';
37
38
  const newClassName = (0, _classnames.default)(className, `variant-${variantClassName}`);
38
- return /*#__PURE__*/_react.default.createElement(_Box.default, {
39
- borderWidth: bordered ? '1px' : 0,
39
+
40
+ if (!bordered) {
41
+ props = { ...props,
42
+ borderWidth: 0
43
+ };
44
+ }
45
+
46
+ return /*#__PURE__*/_react.default.createElement(_Box.default, _extends({
47
+ borderWidth: "1px",
40
48
  borderStyle: "solid",
41
49
  borderColor: "border.default",
42
50
  borderRadius: 2,
43
51
  as: "nav",
44
- className: newClassName,
45
- "aria-label": ariaLabel
46
- }, children);
52
+ className: newClassName
53
+ }, props), children);
47
54
  }
48
55
 
49
56
  SideNavBase.displayName = "SideNavBase";
50
57
  const SideNav = (0, _styledComponents.default)(SideNavBase).withConfig({
51
58
  displayName: "SideNav",
52
59
  componentId: "sc-15k667c-0"
53
- })(["background-color:", ";", " ", ";"], (0, _constants.get)('colors.canvas.subtle'), props => props.bordered && (0, _styledComponents.css)(["& > &{border-left:0;border-right:0;border-bottom:0;}"]), _sx.default);
60
+ })(["background-color:", ";", " ", ";", ";"], (0, _constants.get)('colors.canvas.subtle'), props => props.bordered && (0, _styledComponents.css)(["& > &{border-left:0;border-right:0;border-bottom:0;}"]), _constants.COMMON, _sx.default);
54
61
  // used for variant normal hover, focus pseudo selectors
55
62
  const CommonAccessibilityVariantNormalStyles = (0, _styledComponents.css)(["background-color:", ";outline:none;text-decoration:none;"], (0, _constants.get)('colors.neutral.subtle')); // used for light weight hover, focus pseudo selectors
56
63
 
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const constants_1 = require("./constants");
26
+ const styled_components_1 = __importStar(require("styled-components"));
27
+ const Box_1 = __importDefault(require("./Box"));
28
+ const Link_1 = __importDefault(require("./Link"));
29
+ const react_1 = __importDefault(require("react"));
30
+ const classnames_1 = __importDefault(require("classnames"));
31
+ const sx_1 = __importDefault(require("./sx"));
32
+ function SideNavBase({ variant, className, bordered, children, ...props }) {
33
+ const variantClassName = variant === 'lightweight' ? 'lightweight' : 'normal';
34
+ const newClassName = classnames_1.default(className, `variant-${variantClassName}`);
35
+ if (!bordered) {
36
+ props = { ...props, borderWidth: 0 };
37
+ }
38
+ return (<Box_1.default borderWidth="1px" borderStyle="solid" borderColor="border.default" borderRadius={2} as="nav" className={newClassName} {...props}>
39
+ {children}
40
+ </Box_1.default>);
41
+ }
42
+ const SideNav = styled_components_1.default(SideNavBase) `
43
+ background-color: ${constants_1.get('colors.canvas.subtle')};
44
+
45
+ ${props => props.bordered &&
46
+ styled_components_1.css `
47
+ // Remove duplicate borders from nested SideNavs
48
+ & > & {
49
+ border-left: 0;
50
+ border-right: 0;
51
+ border-bottom: 0;
52
+ }
53
+ `}
54
+
55
+ ${constants_1.COMMON};
56
+ ${sx_1.default};
57
+ `;
58
+ // used for variant normal hover, focus pseudo selectors
59
+ const CommonAccessibilityVariantNormalStyles = styled_components_1.css `
60
+ background-color: ${constants_1.get('colors.neutral.subtle')};
61
+ outline: none;
62
+ text-decoration: none;
63
+ `;
64
+ // used for light weight hover, focus pseudo selectors
65
+ const CommonAccessibilityVariantLightWeightStyles = styled_components_1.css `
66
+ color: ${constants_1.get('colors.fg.default')};
67
+ text-decoration: none;
68
+ outline: none;
69
+ `;
70
+ const SideNavLink = styled_components_1.default(Link_1.default).attrs(props => {
71
+ const isReactRouter = typeof props.to === 'string';
72
+ if (isReactRouter || props.selected) {
73
+ // according to their docs, NavLink supports aria-current:
74
+ // https://reacttraining.com/react-router/web/api/NavLink/aria-current-string
75
+ return { 'aria-current': 'page' };
76
+ }
77
+ else {
78
+ return {};
79
+ }
80
+ }) `
81
+ position: relative;
82
+ display: block;
83
+ ${props => props.variant === 'full' &&
84
+ styled_components_1.css `
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: space-between;
88
+ `}
89
+ width: 100%;
90
+ text-align: left;
91
+ font-size: ${constants_1.get('fontSizes.1')};
92
+
93
+ & > ${SideNav} {
94
+ border-bottom: none;
95
+ }
96
+
97
+ ${SideNav}.variant-normal > & {
98
+ color: ${constants_1.get('colors.fg.default')};
99
+ padding: ${constants_1.get('space.3')};
100
+ border: 0;
101
+ border-top: ${constants_1.get('borderWidths.1')} solid ${constants_1.get('colors.border.muted')};
102
+
103
+ &:first-child {
104
+ border-top: 0;
105
+ border-top-right-radius: ${constants_1.get('radii.2')};
106
+ border-top-left-radius: ${constants_1.get('radii.2')};
107
+ }
108
+
109
+ &:last-child {
110
+ border-bottom-right-radius: ${constants_1.get('radii.2')};
111
+ border-bottom-left-radius: ${constants_1.get('radii.2')};
112
+ }
113
+
114
+ // Bar on the left
115
+ &::before {
116
+ position: absolute;
117
+ top: 0;
118
+ bottom: 0;
119
+ left: 0;
120
+ z-index: 1;
121
+ width: 3px;
122
+ pointer-events: none;
123
+ content: '';
124
+ }
125
+
126
+ &:hover {
127
+ ${CommonAccessibilityVariantNormalStyles}
128
+ }
129
+
130
+ &:focus {
131
+ ${CommonAccessibilityVariantNormalStyles}
132
+ box-shadow: ${constants_1.get('shadows.primer.shadow.focus')};
133
+ z-index: 1;
134
+ }
135
+
136
+ &[aria-current='page'],
137
+ &[aria-selected='true'] {
138
+ background-color: ${constants_1.get('colors.sidenav.selectedBg')};
139
+
140
+ // Bar on the left
141
+ &::before {
142
+ background-color: ${constants_1.get('colors.primer.border.active')};
143
+ }
144
+ }
145
+ }
146
+
147
+ ${SideNav}.variant-lightweight > & {
148
+ padding: ${constants_1.get('space.1')} 0;
149
+ color: ${constants_1.get('colors.accent.fg')};
150
+
151
+ &:hover {
152
+ ${CommonAccessibilityVariantLightWeightStyles}
153
+ }
154
+
155
+ &:focus {
156
+ ${CommonAccessibilityVariantLightWeightStyles}
157
+ box-shadow: ${constants_1.get('shadows.primer.shadow.focus')};
158
+ z-index: 1;
159
+ }
160
+
161
+ &[aria-current='page'],
162
+ &[aria-selected='true'] {
163
+ color: ${constants_1.get('colors.fg.default')};
164
+ font-weight: ${constants_1.get('fontWeights.semibold')};
165
+ }
166
+ }
167
+
168
+ ${sx_1.default};
169
+ `;
170
+ SideNav.defaultProps = {
171
+ variant: 'normal'
172
+ };
173
+ SideNavLink.defaultProps = {
174
+ variant: 'normal'
175
+ };
176
+ SideNavLink.displayName = 'SideNav.Link';
177
+ exports.default = Object.assign(SideNav, { Link: SideNavLink });
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ const constants_1 = require("./constants");
9
+ const sx_1 = __importDefault(require("./sx"));
10
+ const sizeMap = {
11
+ small: '16px',
12
+ medium: '32px',
13
+ large: '64px'
14
+ };
15
+ function Spinner({ size: sizeKey = 'medium', ...props }) {
16
+ const size = sizeMap[sizeKey];
17
+ return (<svg height={size} width={size} viewBox="0 0 16 16" fill="none" {...props}>
18
+ <circle cx="8" cy="8" r="7" stroke="currentColor" strokeOpacity="0.25" strokeWidth="2" vectorEffect="non-scaling-stroke"/>
19
+ <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" strokeWidth="2" strokeLinecap="round" vectorEffect="non-scaling-stroke"/>
20
+ </svg>);
21
+ }
22
+ const StyledSpinner = styled_components_1.default(Spinner) `
23
+ @keyframes rotate-keyframes {
24
+ 100% {
25
+ transform: rotate(360deg);
26
+ }
27
+ }
28
+
29
+ animation: rotate-keyframes 1s linear infinite;
30
+
31
+ ${constants_1.COMMON}
32
+ ${sx_1.default}
33
+ `;
34
+ StyledSpinner.displayName = 'Spinner';
35
+ exports.default = StyledSpinner;
@@ -1,10 +1,11 @@
1
1
  /// <reference types="react" />
2
+ import { SystemCommonProps } from './constants';
2
3
  import { SxProp } from './sx';
3
4
  import { ComponentProps } from './utils/types';
4
5
  declare const StateLabelBase: import("styled-components").StyledComponent<"span", any, {
5
6
  variant?: "small" | "normal" | undefined;
6
7
  status?: "issueClosed" | "pullClosed" | "pullMerged" | "issueOpened" | "pullOpened" | "draft" | "issueDraft" | undefined;
7
- } & SxProp, never>;
8
+ } & SystemCommonProps & SxProp, never>;
8
9
  export declare type StateLabelProps = ComponentProps<typeof StateLabelBase>;
9
10
  declare function StateLabel({ children, status, variant: variantProp, ...rest }: StateLabelProps): JSX.Element;
10
11
  declare namespace StateLabel {