@primer/components 0.0.0-2021983515 → 0.0.0-2022530194733

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 (596) hide show
  1. package/CHANGELOG.md +105 -492
  2. package/README.md +16 -16
  3. package/codemods/lib/modifyProps.js +7 -9
  4. package/codemods/lib/prettify.js +1 -1
  5. package/codemods/lib/replaceImportSource.js +5 -5
  6. package/dist/browser.esm.js +889 -1279
  7. package/dist/browser.esm.js.map +1 -1
  8. package/dist/browser.umd.js +839 -1234
  9. package/dist/browser.umd.js.map +1 -1
  10. package/index.d.ts +940 -0
  11. package/lib/AvatarPair.js +5 -6
  12. package/lib/AvatarStack.js +10 -10
  13. package/lib/BaseStyles.js +19 -18
  14. package/lib/BorderBox.js +5 -4
  15. package/lib/Box.js +2 -2
  16. package/lib/BranchName.js +1 -1
  17. package/lib/{Breadcrumbs.js → Breadcrumb.js} +23 -33
  18. package/lib/Button/Button.js +3 -3
  19. package/lib/Button/ButtonClose.js +4 -4
  20. package/lib/Button/ButtonDanger.js +2 -2
  21. package/lib/Button/ButtonInvisible.js +3 -3
  22. package/lib/Button/ButtonOutline.js +2 -2
  23. package/lib/Button/ButtonPrimary.js +2 -2
  24. package/lib/Button/ButtonTableList.js +1 -1
  25. package/lib/CircleBadge.js +1 -1
  26. package/lib/CircleOcticon.js +7 -9
  27. package/lib/CounterLabel.js +2 -2
  28. package/lib/Dialog.js +14 -13
  29. package/lib/Dropdown.js +2 -2
  30. package/lib/DropdownStyles.js +6 -6
  31. package/lib/FilterList.js +1 -1
  32. package/lib/Flash.js +1 -1
  33. package/lib/Flex.js +0 -3
  34. package/lib/Grid.js +3 -4
  35. package/lib/Header.js +2 -3
  36. package/lib/Label.js +4 -4
  37. package/lib/Link.js +12 -1
  38. package/lib/Overlay.js +36 -126
  39. package/lib/Pagehead.js +1 -1
  40. package/lib/Pagination/Pagination.js +2 -3
  41. package/lib/Popover.js +3 -3
  42. package/lib/Portal/Portal.js +12 -20
  43. package/lib/Position.js +27 -46
  44. package/lib/ProgressBar.js +1 -1
  45. package/lib/SelectMenu/SelectMenu.js +4 -4
  46. package/lib/SelectMenu/SelectMenuContext.js +1 -1
  47. package/lib/SelectMenu/SelectMenuDivider.js +3 -3
  48. package/lib/SelectMenu/SelectMenuFilter.js +6 -6
  49. package/lib/SelectMenu/SelectMenuFooter.js +3 -3
  50. package/lib/SelectMenu/SelectMenuHeader.js +2 -2
  51. package/lib/SelectMenu/SelectMenuItem.js +4 -4
  52. package/lib/SelectMenu/SelectMenuList.js +3 -3
  53. package/lib/SelectMenu/SelectMenuLoadingAnimation.js +15 -4
  54. package/lib/SelectMenu/SelectMenuModal.js +7 -7
  55. package/lib/SelectMenu/SelectMenuTab.js +3 -3
  56. package/lib/SelectMenu/SelectMenuTabPanel.js +3 -3
  57. package/lib/SelectMenu/SelectMenuTabs.js +2 -2
  58. package/lib/SelectMenu/hooks/useKeyboardNav.js +0 -2
  59. package/lib/SideNav.js +12 -20
  60. package/lib/StateLabel.js +4 -4
  61. package/lib/SubNav.js +3 -5
  62. package/lib/TabNav.js +3 -3
  63. package/lib/TextInput.js +59 -22
  64. package/lib/ThemeProvider.js +15 -32
  65. package/lib/Timeline.js +29 -24
  66. package/lib/Tooltip.js +1 -2
  67. package/lib/UnderlineNav.js +2 -2
  68. package/lib/behaviors/anchoredPosition.js +9 -17
  69. package/lib/behaviors/focusTrap.js +14 -32
  70. package/lib/behaviors/focusZone.js +148 -218
  71. package/lib/constants.js +2 -3
  72. package/lib/hooks/index.js +1 -9
  73. package/lib/hooks/useAnchoredPosition.js +4 -11
  74. package/lib/hooks/useDialog.js +1 -1
  75. package/lib/hooks/useFocusTrap.js +8 -26
  76. package/lib/hooks/useFocusZone.js +7 -7
  77. package/lib/hooks/useMouseIntent.js +58 -0
  78. package/lib/hooks/useOnEscapePress.js +10 -53
  79. package/lib/hooks/useOnOutsideClick.js +35 -62
  80. package/lib/hooks/useOpenAndCloseFocus.js +3 -8
  81. package/lib/hooks/useOverlay.js +19 -9
  82. package/lib/hooks/useSafeTimeout.js +0 -1
  83. package/lib/index.js +12 -112
  84. package/lib/polyfills/eventListenerSignal.js +1 -6
  85. package/lib/stories/Button.stories.js +114 -0
  86. package/lib/stories/Overlay.stories.js +102 -0
  87. package/lib/stories/Portal.stories.js +108 -0
  88. package/lib/stories/ThemeProvider.stories.js +95 -0
  89. package/lib/stories/useAnchoredPosition.stories.js +349 -0
  90. package/lib/stories/useFocusTrap.stories.js +278 -0
  91. package/lib/stories/useFocusZone.stories.js +490 -0
  92. package/lib/theme-preval.js +2057 -5148
  93. package/lib/utils/deprecate.js +2 -3
  94. package/lib/utils/isNumeric.js +0 -1
  95. package/lib/utils/iterateFocusableElements.js +1 -1
  96. package/lib/utils/test-deprecations.js +0 -1
  97. package/lib/utils/test-matchers.js +12 -3
  98. package/lib/utils/testing.js +4 -4
  99. package/lib/utils/theme.js +1 -1
  100. package/lib/utils/{types/AriaRole.js → types.js} +0 -0
  101. package/lib/utils/uniqueId.js +0 -1
  102. package/lib-esm/AvatarPair.js +5 -6
  103. package/lib-esm/AvatarStack.js +11 -11
  104. package/lib-esm/BaseStyles.js +16 -16
  105. package/lib-esm/BorderBox.js +3 -5
  106. package/lib-esm/Box.js +2 -2
  107. package/lib-esm/BranchName.js +1 -1
  108. package/lib-esm/{Breadcrumbs.js → Breadcrumb.js} +22 -32
  109. package/lib-esm/Button/Button.js +1 -1
  110. package/lib-esm/Button/ButtonClose.js +2 -2
  111. package/lib-esm/Button/ButtonInvisible.js +1 -1
  112. package/lib-esm/Button/ButtonTableList.js +1 -1
  113. package/lib-esm/CircleBadge.js +1 -1
  114. package/lib-esm/CircleOcticon.js +6 -9
  115. package/lib-esm/CounterLabel.js +2 -2
  116. package/lib-esm/Dialog.js +12 -10
  117. package/lib-esm/Dropdown.js +2 -2
  118. package/lib-esm/DropdownStyles.js +6 -6
  119. package/lib-esm/FilterList.js +1 -1
  120. package/lib-esm/Flash.js +1 -1
  121. package/lib-esm/Flex.js +0 -4
  122. package/lib-esm/Grid.js +2 -5
  123. package/lib-esm/Header.js +0 -1
  124. package/lib-esm/Label.js +2 -2
  125. package/lib-esm/Link.js +12 -1
  126. package/lib-esm/Overlay.js +38 -119
  127. package/lib-esm/Pagehead.js +1 -1
  128. package/lib-esm/Pagination/Pagination.js +2 -3
  129. package/lib-esm/Popover.js +3 -3
  130. package/lib-esm/Portal/Portal.js +12 -19
  131. package/lib-esm/Portal/index.js +1 -1
  132. package/lib-esm/Position.js +20 -45
  133. package/lib-esm/ProgressBar.js +1 -1
  134. package/lib-esm/SelectMenu/SelectMenu.js +3 -3
  135. package/lib-esm/SelectMenu/SelectMenuContext.js +1 -1
  136. package/lib-esm/SelectMenu/SelectMenuDivider.js +1 -1
  137. package/lib-esm/SelectMenu/SelectMenuFilter.js +4 -4
  138. package/lib-esm/SelectMenu/SelectMenuFooter.js +1 -1
  139. package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
  140. package/lib-esm/SelectMenu/SelectMenuItem.js +2 -2
  141. package/lib-esm/SelectMenu/SelectMenuList.js +1 -1
  142. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +10 -5
  143. package/lib-esm/SelectMenu/SelectMenuModal.js +5 -5
  144. package/lib-esm/SelectMenu/SelectMenuTab.js +1 -1
  145. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +1 -1
  146. package/lib-esm/SelectMenu/hooks/useKeyboardNav.js +0 -2
  147. package/lib-esm/SideNav.js +7 -16
  148. package/lib-esm/StateLabel.js +4 -4
  149. package/lib-esm/SubNav.js +4 -7
  150. package/lib-esm/TabNav.js +4 -5
  151. package/lib-esm/TextInput.js +49 -22
  152. package/lib-esm/ThemeProvider.js +16 -31
  153. package/lib-esm/Timeline.js +24 -19
  154. package/lib-esm/Tooltip.js +1 -2
  155. package/lib-esm/UnderlineNav.js +3 -4
  156. package/lib-esm/behaviors/anchoredPosition.js +9 -17
  157. package/lib-esm/behaviors/focusTrap.js +14 -32
  158. package/lib-esm/behaviors/focusZone.js +148 -213
  159. package/lib-esm/constants.js +1 -2
  160. package/lib-esm/hooks/index.js +1 -2
  161. package/lib-esm/hooks/useAnchoredPosition.js +5 -10
  162. package/lib-esm/hooks/useDialog.js +1 -1
  163. package/lib-esm/hooks/useFocusTrap.js +8 -25
  164. package/lib-esm/hooks/useFocusZone.js +5 -5
  165. package/lib-esm/hooks/useMouseIntent.js +50 -0
  166. package/lib-esm/hooks/useOnEscapePress.js +10 -53
  167. package/lib-esm/hooks/useOnOutsideClick.js +37 -62
  168. package/lib-esm/hooks/useOpenAndCloseFocus.js +3 -8
  169. package/lib-esm/hooks/useOverlay.js +18 -9
  170. package/lib-esm/hooks/useSafeTimeout.js +0 -1
  171. package/lib-esm/index.js +10 -22
  172. package/lib-esm/polyfills/eventListenerSignal.js +1 -6
  173. package/lib-esm/stories/Button.stories.js +79 -0
  174. package/lib-esm/stories/Overlay.stories.js +80 -0
  175. package/lib-esm/stories/Portal.stories.js +72 -0
  176. package/lib-esm/stories/ThemeProvider.stories.js +76 -0
  177. package/lib-esm/stories/useAnchoredPosition.stories.js +311 -0
  178. package/lib-esm/stories/useFocusTrap.stories.js +234 -0
  179. package/lib-esm/stories/useFocusZone.stories.js +445 -0
  180. package/lib-esm/theme-preval.js +2057 -5148
  181. package/lib-esm/utils/deprecate.js +2 -3
  182. package/lib-esm/utils/isNumeric.js +0 -1
  183. package/lib-esm/utils/iterateFocusableElements.js +1 -1
  184. package/lib-esm/utils/test-deprecations.js +1 -1
  185. package/lib-esm/utils/test-matchers.js +11 -3
  186. package/lib-esm/utils/testing.js +6 -6
  187. package/lib-esm/utils/theme.js +1 -1
  188. package/lib-esm/utils/{test-helpers.d.ts → types.js} +0 -0
  189. package/lib-esm/utils/uniqueId.js +0 -1
  190. package/package.json +95 -103
  191. package/codemods/__tests__/deprecateUtilityComponents.js +0 -200
  192. package/codemods/__tests__/removeSystemProps.js +0 -225
  193. package/codemods/deprecateUtilityComponents.js +0 -111
  194. package/codemods/removeSystemProps.js +0 -312
  195. package/lib/ActionList/Divider.d.ts +0 -9
  196. package/lib/ActionList/Divider.js +0 -40
  197. package/lib/ActionList/Group.d.ts +0 -28
  198. package/lib/ActionList/Group.js +0 -35
  199. package/lib/ActionList/Header.d.ts +0 -29
  200. package/lib/ActionList/Header.js +0 -51
  201. package/lib/ActionList/Item.d.ts +0 -92
  202. package/lib/ActionList/Item.js +0 -288
  203. package/lib/ActionList/List.d.ts +0 -88
  204. package/lib/ActionList/List.js +0 -199
  205. package/lib/ActionList/index.d.ts +0 -17
  206. package/lib/ActionList/index.js +0 -29
  207. package/lib/ActionMenu.d.ts +0 -40
  208. package/lib/ActionMenu.js +0 -103
  209. package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +0 -62
  210. package/lib/AnchoredOverlay/AnchoredOverlay.js +0 -124
  211. package/lib/AnchoredOverlay/index.d.ts +0 -2
  212. package/lib/AnchoredOverlay/index.js +0 -13
  213. package/lib/Autocomplete/Autocomplete.d.ts +0 -40
  214. package/lib/Autocomplete/Autocomplete.js +0 -68
  215. package/lib/Autocomplete/AutocompleteContext.d.ts +0 -17
  216. package/lib/Autocomplete/AutocompleteContext.js +0 -11
  217. package/lib/Autocomplete/AutocompleteInput.d.ts +0 -9
  218. package/lib/Autocomplete/AutocompleteInput.js +0 -150
  219. package/lib/Autocomplete/AutocompleteMenu.d.ts +0 -71
  220. package/lib/Autocomplete/AutocompleteMenu.js +0 -223
  221. package/lib/Autocomplete/AutocompleteOverlay.d.ts +0 -17
  222. package/lib/Autocomplete/AutocompleteOverlay.js +0 -69
  223. package/lib/Autocomplete/index.d.ts +0 -2
  224. package/lib/Autocomplete/index.js +0 -15
  225. package/lib/Avatar.d.ts +0 -15
  226. package/lib/AvatarPair.d.ts +0 -8
  227. package/lib/AvatarStack.d.ts +0 -8
  228. package/lib/BaseStyles.d.ts +0 -14
  229. package/lib/BorderBox.d.ts +0 -7
  230. package/lib/Box.d.ts +0 -6
  231. package/lib/BranchName.d.ts +0 -6
  232. package/lib/Breadcrumbs.d.ts +0 -40
  233. package/lib/Button/Button.d.ts +0 -284
  234. package/lib/Button/ButtonBase.d.ts +0 -12
  235. package/lib/Button/ButtonClose.d.ts +0 -321
  236. package/lib/Button/ButtonDanger.d.ts +0 -284
  237. package/lib/Button/ButtonGroup.d.ts +0 -4
  238. package/lib/Button/ButtonInvisible.d.ts +0 -284
  239. package/lib/Button/ButtonOutline.d.ts +0 -284
  240. package/lib/Button/ButtonPrimary.d.ts +0 -284
  241. package/lib/Button/ButtonStyles.d.ts +0 -2
  242. package/lib/Button/ButtonTableList.d.ts +0 -6
  243. package/lib/Button/index.d.ts +0 -16
  244. package/lib/Caret.d.ts +0 -21
  245. package/lib/CircleBadge.d.ts +0 -25
  246. package/lib/CircleOcticon.d.ts +0 -391
  247. package/lib/CounterLabel.d.ts +0 -8
  248. package/lib/Details.d.ts +0 -6
  249. package/lib/Dialog/ConfirmationDialog.d.ts +0 -44
  250. package/lib/Dialog/ConfirmationDialog.js +0 -191
  251. package/lib/Dialog/Dialog.d.ts +0 -167
  252. package/lib/Dialog/Dialog.js +0 -304
  253. package/lib/Dialog.d.ts +0 -406
  254. package/lib/Dropdown.d.ts +0 -1262
  255. package/lib/DropdownMenu/DropdownButton.d.ts +0 -323
  256. package/lib/DropdownMenu/DropdownButton.js +0 -31
  257. package/lib/DropdownMenu/DropdownMenu.d.ts +0 -43
  258. package/lib/DropdownMenu/DropdownMenu.js +0 -94
  259. package/lib/DropdownMenu/index.d.ts +0 -4
  260. package/lib/DropdownMenu/index.js +0 -21
  261. package/lib/DropdownStyles.d.ts +0 -3
  262. package/lib/FilterList.d.ts +0 -321
  263. package/lib/FilteredActionList/FilteredActionList.d.ts +0 -16
  264. package/lib/FilteredActionList/FilteredActionList.js +0 -137
  265. package/lib/FilteredActionList/index.d.ts +0 -2
  266. package/lib/FilteredActionList/index.js +0 -13
  267. package/lib/FilteredSearch.d.ts +0 -6
  268. package/lib/Flash.d.ts +0 -9
  269. package/lib/Flex.d.ts +0 -7
  270. package/lib/FormGroup.d.ts +0 -12
  271. package/lib/Grid.d.ts +0 -7
  272. package/lib/Header.d.ts +0 -24
  273. package/lib/Heading.d.ts +0 -6
  274. package/lib/Label.d.ts +0 -11
  275. package/lib/LabelGroup.d.ts +0 -6
  276. package/lib/Link.d.ts +0 -10
  277. package/lib/Overlay.d.ts +0 -63
  278. package/lib/Pagehead.d.ts +0 -6
  279. package/lib/Pagination/Pagination.d.ts +0 -24
  280. package/lib/Pagination/index.d.ts +0 -3
  281. package/lib/Pagination/model.d.ts +0 -26
  282. package/lib/PointerBox.d.ts +0 -11
  283. package/lib/Popover.d.ts +0 -21
  284. package/lib/Portal/Portal.d.ts +0 -25
  285. package/lib/Portal/index.d.ts +0 -4
  286. package/lib/Position.d.ts +0 -34
  287. package/lib/ProgressBar.d.ts +0 -21
  288. package/lib/SelectMenu/SelectMenu.d.ts +0 -1832
  289. package/lib/SelectMenu/SelectMenuContext.d.ts +0 -8
  290. package/lib/SelectMenu/SelectMenuDivider.d.ts +0 -6
  291. package/lib/SelectMenu/SelectMenuFilter.d.ts +0 -9
  292. package/lib/SelectMenu/SelectMenuFooter.d.ts +0 -6
  293. package/lib/SelectMenu/SelectMenuHeader.d.ts +0 -11
  294. package/lib/SelectMenu/SelectMenuItem.d.ts +0 -15
  295. package/lib/SelectMenu/SelectMenuList.d.ts +0 -6
  296. package/lib/SelectMenu/SelectMenuLoadingAnimation.d.ts +0 -7
  297. package/lib/SelectMenu/SelectMenuModal.d.ts +0 -15
  298. package/lib/SelectMenu/SelectMenuTab.d.ts +0 -14
  299. package/lib/SelectMenu/SelectMenuTabPanel.d.ts +0 -13
  300. package/lib/SelectMenu/SelectMenuTabs.d.ts +0 -11
  301. package/lib/SelectMenu/hooks/useKeyboardNav.d.ts +0 -2
  302. package/lib/SelectMenu/index.d.ts +0 -2
  303. package/lib/SelectPanel/SelectPanel.d.ts +0 -25
  304. package/lib/SelectPanel/SelectPanel.js +0 -147
  305. package/lib/SelectPanel/index.d.ts +0 -2
  306. package/lib/SelectPanel/index.js +0 -13
  307. package/lib/SideNav.d.ts +0 -31
  308. package/lib/Spinner.d.ts +0 -17
  309. package/lib/Spinner.js +0 -60
  310. package/lib/StateLabel.d.ts +0 -16
  311. package/lib/StyledOcticon.d.ts +0 -12
  312. package/lib/SubNav.d.ts +0 -32
  313. package/lib/TabNav.d.ts +0 -20
  314. package/lib/Text.d.ts +0 -6
  315. package/lib/TextInput.d.ts +0 -14
  316. package/lib/TextInputWithTokens.d.ts +0 -323
  317. package/lib/TextInputWithTokens.js +0 -244
  318. package/lib/ThemeProvider.d.ts +0 -26
  319. package/lib/Timeline.d.ts +0 -407
  320. package/lib/Token/IssueLabelToken.d.ts +0 -14
  321. package/lib/Token/IssueLabelToken.js +0 -144
  322. package/lib/Token/ProfileToken.d.ts +0 -7
  323. package/lib/Token/ProfileToken.js +0 -53
  324. package/lib/Token/Token.d.ts +0 -15
  325. package/lib/Token/Token.js +0 -94
  326. package/lib/Token/TokenBase.d.ts +0 -17
  327. package/lib/Token/TokenBase.js +0 -108
  328. package/lib/Token/_RemoveTokenButton.d.ts +0 -12
  329. package/lib/Token/_RemoveTokenButton.js +0 -77
  330. package/lib/Token/_TokenTextContainer.d.ts +0 -3
  331. package/lib/Token/_TokenTextContainer.js +0 -28
  332. package/lib/Token/index.d.ts +0 -3
  333. package/lib/Token/index.js +0 -31
  334. package/lib/Tooltip.d.ts +0 -18
  335. package/lib/Truncate.d.ts +0 -11
  336. package/lib/UnderlineNav.d.ts +0 -25
  337. package/lib/_TextInputWrapper.d.ts +0 -10
  338. package/lib/_TextInputWrapper.js +0 -51
  339. package/lib/_UnstyledTextInput.d.ts +0 -2
  340. package/lib/_UnstyledTextInput.js +0 -20
  341. package/lib/behaviors/anchoredPosition.d.ts +0 -89
  342. package/lib/behaviors/focusTrap.d.ts +0 -12
  343. package/lib/behaviors/focusZone.d.ts +0 -137
  344. package/lib/constants.d.ts +0 -20
  345. package/lib/hooks/index.d.ts +0 -11
  346. package/lib/hooks/useAnchoredPosition.d.ts +0 -20
  347. package/lib/hooks/useCombinedRefs.d.ts +0 -10
  348. package/lib/hooks/useCombinedRefs.js +0 -49
  349. package/lib/hooks/useDetails.d.ts +0 -17
  350. package/lib/hooks/useDialog.d.ts +0 -16
  351. package/lib/hooks/useFocusTrap.d.ts +0 -32
  352. package/lib/hooks/useFocusZone.d.ts +0 -23
  353. package/lib/hooks/useOnEscapePress.d.ts +0 -23
  354. package/lib/hooks/useOnOutsideClick.d.ts +0 -8
  355. package/lib/hooks/useOpenAndCloseFocus.d.ts +0 -8
  356. package/lib/hooks/useOverlay.d.ts +0 -15
  357. package/lib/hooks/useProvidedRefOrCreate.d.ts +0 -10
  358. package/lib/hooks/useProvidedStateOrCreate.d.ts +0 -10
  359. package/lib/hooks/useProvidedStateOrCreate.js +0 -27
  360. package/lib/hooks/useRenderForcingRef.d.ts +0 -8
  361. package/lib/hooks/useRenderForcingRef.js +0 -25
  362. package/lib/hooks/useResizeObserver.d.ts +0 -1
  363. package/lib/hooks/useResizeObserver.js +0 -20
  364. package/lib/hooks/useSafeTimeout.d.ts +0 -12
  365. package/lib/hooks/useScrollFlash.d.ts +0 -6
  366. package/lib/hooks/useScrollFlash.js +0 -29
  367. package/lib/index.d.ts +0 -114
  368. package/lib/polyfills/eventListenerSignal.d.ts +0 -6
  369. package/lib/sx.d.ts +0 -6
  370. package/lib/theme-preval.d.ts +0 -49
  371. package/lib/theme.d.ts +0 -2
  372. package/lib/utils/deprecate.d.ts +0 -18
  373. package/lib/utils/isNumeric.d.ts +0 -1
  374. package/lib/utils/iterateFocusableElements.d.ts +0 -42
  375. package/lib/utils/scrollIntoViewingArea.d.ts +0 -1
  376. package/lib/utils/scrollIntoViewingArea.js +0 -39
  377. package/lib/utils/ssr.d.ts +0 -1
  378. package/lib/utils/ssr.js +0 -19
  379. package/lib/utils/test-deprecations.d.ts +0 -1
  380. package/lib/utils/test-helpers.d.ts +0 -0
  381. package/lib/utils/test-helpers.js +0 -9
  382. package/lib/utils/test-matchers.d.ts +0 -1
  383. package/lib/utils/testing.d.ts +0 -1028
  384. package/lib/utils/theme.d.ts +0 -9
  385. package/lib/utils/types/AriaRole.d.ts +0 -4
  386. package/lib/utils/types/ComponentProps.d.ts +0 -9
  387. package/lib/utils/types/ComponentProps.js +0 -1
  388. package/lib/utils/types/Flatten.d.ts +0 -4
  389. package/lib/utils/types/Flatten.js +0 -1
  390. package/lib/utils/types/Merge.d.ts +0 -19
  391. package/lib/utils/types/Merge.js +0 -1
  392. package/lib/utils/types/index.d.ts +0 -4
  393. package/lib/utils/types/index.js +0 -57
  394. package/lib/utils/uniqueId.d.ts +0 -1
  395. package/lib/utils/userAgent.d.ts +0 -1
  396. package/lib-esm/ActionList/Divider.d.ts +0 -9
  397. package/lib-esm/ActionList/Divider.js +0 -23
  398. package/lib-esm/ActionList/Group.d.ts +0 -28
  399. package/lib-esm/ActionList/Group.js +0 -24
  400. package/lib-esm/ActionList/Header.d.ts +0 -29
  401. package/lib-esm/ActionList/Header.js +0 -33
  402. package/lib-esm/ActionList/Item.d.ts +0 -92
  403. package/lib-esm/ActionList/Item.js +0 -253
  404. package/lib-esm/ActionList/List.d.ts +0 -88
  405. package/lib-esm/ActionList/List.js +0 -181
  406. package/lib-esm/ActionList/index.d.ts +0 -17
  407. package/lib-esm/ActionList/index.js +0 -18
  408. package/lib-esm/ActionMenu.d.ts +0 -40
  409. package/lib-esm/ActionMenu.js +0 -82
  410. package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +0 -62
  411. package/lib-esm/AnchoredOverlay/AnchoredOverlay.js +0 -104
  412. package/lib-esm/AnchoredOverlay/index.d.ts +0 -2
  413. package/lib-esm/AnchoredOverlay/index.js +0 -1
  414. package/lib-esm/Autocomplete/Autocomplete.d.ts +0 -40
  415. package/lib-esm/Autocomplete/Autocomplete.js +0 -47
  416. package/lib-esm/Autocomplete/AutocompleteContext.d.ts +0 -17
  417. package/lib-esm/Autocomplete/AutocompleteContext.js +0 -2
  418. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +0 -9
  419. package/lib-esm/Autocomplete/AutocompleteInput.js +0 -131
  420. package/lib-esm/Autocomplete/AutocompleteMenu.d.ts +0 -71
  421. package/lib-esm/Autocomplete/AutocompleteMenu.js +0 -204
  422. package/lib-esm/Autocomplete/AutocompleteOverlay.d.ts +0 -17
  423. package/lib-esm/Autocomplete/AutocompleteOverlay.js +0 -51
  424. package/lib-esm/Autocomplete/index.d.ts +0 -2
  425. package/lib-esm/Autocomplete/index.js +0 -1
  426. package/lib-esm/Avatar.d.ts +0 -15
  427. package/lib-esm/AvatarPair.d.ts +0 -8
  428. package/lib-esm/AvatarStack.d.ts +0 -8
  429. package/lib-esm/BaseStyles.d.ts +0 -14
  430. package/lib-esm/BorderBox.d.ts +0 -7
  431. package/lib-esm/Box.d.ts +0 -6
  432. package/lib-esm/BranchName.d.ts +0 -6
  433. package/lib-esm/Breadcrumbs.d.ts +0 -40
  434. package/lib-esm/Button/Button.d.ts +0 -284
  435. package/lib-esm/Button/ButtonBase.d.ts +0 -12
  436. package/lib-esm/Button/ButtonClose.d.ts +0 -321
  437. package/lib-esm/Button/ButtonDanger.d.ts +0 -284
  438. package/lib-esm/Button/ButtonGroup.d.ts +0 -4
  439. package/lib-esm/Button/ButtonInvisible.d.ts +0 -284
  440. package/lib-esm/Button/ButtonOutline.d.ts +0 -284
  441. package/lib-esm/Button/ButtonPrimary.d.ts +0 -284
  442. package/lib-esm/Button/ButtonStyles.d.ts +0 -2
  443. package/lib-esm/Button/ButtonTableList.d.ts +0 -6
  444. package/lib-esm/Button/index.d.ts +0 -16
  445. package/lib-esm/Caret.d.ts +0 -21
  446. package/lib-esm/CircleBadge.d.ts +0 -25
  447. package/lib-esm/CircleOcticon.d.ts +0 -391
  448. package/lib-esm/CounterLabel.d.ts +0 -8
  449. package/lib-esm/Details.d.ts +0 -6
  450. package/lib-esm/Dialog/ConfirmationDialog.d.ts +0 -44
  451. package/lib-esm/Dialog/ConfirmationDialog.js +0 -169
  452. package/lib-esm/Dialog/Dialog.d.ts +0 -167
  453. package/lib-esm/Dialog/Dialog.js +0 -274
  454. package/lib-esm/Dialog.d.ts +0 -406
  455. package/lib-esm/Dropdown.d.ts +0 -1262
  456. package/lib-esm/DropdownMenu/DropdownButton.d.ts +0 -323
  457. package/lib-esm/DropdownMenu/DropdownButton.js +0 -16
  458. package/lib-esm/DropdownMenu/DropdownMenu.d.ts +0 -43
  459. package/lib-esm/DropdownMenu/DropdownMenu.js +0 -77
  460. package/lib-esm/DropdownMenu/index.d.ts +0 -4
  461. package/lib-esm/DropdownMenu/index.js +0 -2
  462. package/lib-esm/DropdownStyles.d.ts +0 -3
  463. package/lib-esm/FilterList.d.ts +0 -321
  464. package/lib-esm/FilteredActionList/FilteredActionList.d.ts +0 -16
  465. package/lib-esm/FilteredActionList/FilteredActionList.js +0 -109
  466. package/lib-esm/FilteredActionList/index.d.ts +0 -2
  467. package/lib-esm/FilteredActionList/index.js +0 -1
  468. package/lib-esm/FilteredSearch.d.ts +0 -6
  469. package/lib-esm/Flash.d.ts +0 -9
  470. package/lib-esm/Flex.d.ts +0 -7
  471. package/lib-esm/FormGroup.d.ts +0 -12
  472. package/lib-esm/Grid.d.ts +0 -7
  473. package/lib-esm/Header.d.ts +0 -24
  474. package/lib-esm/Heading.d.ts +0 -6
  475. package/lib-esm/Label.d.ts +0 -11
  476. package/lib-esm/LabelGroup.d.ts +0 -6
  477. package/lib-esm/Link.d.ts +0 -10
  478. package/lib-esm/Overlay.d.ts +0 -63
  479. package/lib-esm/Pagehead.d.ts +0 -6
  480. package/lib-esm/Pagination/Pagination.d.ts +0 -24
  481. package/lib-esm/Pagination/index.d.ts +0 -3
  482. package/lib-esm/Pagination/model.d.ts +0 -26
  483. package/lib-esm/PointerBox.d.ts +0 -11
  484. package/lib-esm/Popover.d.ts +0 -21
  485. package/lib-esm/Portal/Portal.d.ts +0 -25
  486. package/lib-esm/Portal/index.d.ts +0 -4
  487. package/lib-esm/Position.d.ts +0 -34
  488. package/lib-esm/ProgressBar.d.ts +0 -21
  489. package/lib-esm/SelectMenu/SelectMenu.d.ts +0 -1832
  490. package/lib-esm/SelectMenu/SelectMenuContext.d.ts +0 -8
  491. package/lib-esm/SelectMenu/SelectMenuDivider.d.ts +0 -6
  492. package/lib-esm/SelectMenu/SelectMenuFilter.d.ts +0 -9
  493. package/lib-esm/SelectMenu/SelectMenuFooter.d.ts +0 -6
  494. package/lib-esm/SelectMenu/SelectMenuHeader.d.ts +0 -11
  495. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +0 -15
  496. package/lib-esm/SelectMenu/SelectMenuList.d.ts +0 -6
  497. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.d.ts +0 -7
  498. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +0 -15
  499. package/lib-esm/SelectMenu/SelectMenuTab.d.ts +0 -14
  500. package/lib-esm/SelectMenu/SelectMenuTabPanel.d.ts +0 -13
  501. package/lib-esm/SelectMenu/SelectMenuTabs.d.ts +0 -11
  502. package/lib-esm/SelectMenu/hooks/useKeyboardNav.d.ts +0 -2
  503. package/lib-esm/SelectMenu/index.d.ts +0 -2
  504. package/lib-esm/SelectPanel/SelectPanel.d.ts +0 -25
  505. package/lib-esm/SelectPanel/SelectPanel.js +0 -127
  506. package/lib-esm/SelectPanel/index.d.ts +0 -2
  507. package/lib-esm/SelectPanel/index.js +0 -1
  508. package/lib-esm/SideNav.d.ts +0 -31
  509. package/lib-esm/Spinner.d.ts +0 -17
  510. package/lib-esm/Spinner.js +0 -46
  511. package/lib-esm/StateLabel.d.ts +0 -16
  512. package/lib-esm/StyledOcticon.d.ts +0 -12
  513. package/lib-esm/SubNav.d.ts +0 -32
  514. package/lib-esm/TabNav.d.ts +0 -20
  515. package/lib-esm/Text.d.ts +0 -6
  516. package/lib-esm/TextInput.d.ts +0 -14
  517. package/lib-esm/TextInputWithTokens.d.ts +0 -323
  518. package/lib-esm/TextInputWithTokens.js +0 -219
  519. package/lib-esm/ThemeProvider.d.ts +0 -26
  520. package/lib-esm/Timeline.d.ts +0 -407
  521. package/lib-esm/Token/IssueLabelToken.d.ts +0 -14
  522. package/lib-esm/Token/IssueLabelToken.js +0 -124
  523. package/lib-esm/Token/ProfileToken.d.ts +0 -7
  524. package/lib-esm/Token/ProfileToken.js +0 -33
  525. package/lib-esm/Token/Token.d.ts +0 -15
  526. package/lib-esm/Token/Token.js +0 -73
  527. package/lib-esm/Token/TokenBase.d.ts +0 -17
  528. package/lib-esm/Token/TokenBase.js +0 -87
  529. package/lib-esm/Token/_RemoveTokenButton.d.ts +0 -12
  530. package/lib-esm/Token/_RemoveTokenButton.js +0 -60
  531. package/lib-esm/Token/_TokenTextContainer.d.ts +0 -3
  532. package/lib-esm/Token/_TokenTextContainer.js +0 -15
  533. package/lib-esm/Token/index.d.ts +0 -3
  534. package/lib-esm/Token/index.js +0 -3
  535. package/lib-esm/Tooltip.d.ts +0 -18
  536. package/lib-esm/Truncate.d.ts +0 -11
  537. package/lib-esm/UnderlineNav.d.ts +0 -25
  538. package/lib-esm/_TextInputWrapper.d.ts +0 -10
  539. package/lib-esm/_TextInputWrapper.js +0 -31
  540. package/lib-esm/_UnstyledTextInput.d.ts +0 -2
  541. package/lib-esm/_UnstyledTextInput.js +0 -7
  542. package/lib-esm/behaviors/anchoredPosition.d.ts +0 -89
  543. package/lib-esm/behaviors/focusTrap.d.ts +0 -12
  544. package/lib-esm/behaviors/focusZone.d.ts +0 -137
  545. package/lib-esm/constants.d.ts +0 -20
  546. package/lib-esm/hooks/index.d.ts +0 -11
  547. package/lib-esm/hooks/useAnchoredPosition.d.ts +0 -20
  548. package/lib-esm/hooks/useCombinedRefs.d.ts +0 -10
  549. package/lib-esm/hooks/useCombinedRefs.js +0 -36
  550. package/lib-esm/hooks/useDetails.d.ts +0 -17
  551. package/lib-esm/hooks/useDialog.d.ts +0 -16
  552. package/lib-esm/hooks/useFocusTrap.d.ts +0 -32
  553. package/lib-esm/hooks/useFocusZone.d.ts +0 -23
  554. package/lib-esm/hooks/useOnEscapePress.d.ts +0 -23
  555. package/lib-esm/hooks/useOnOutsideClick.d.ts +0 -8
  556. package/lib-esm/hooks/useOpenAndCloseFocus.d.ts +0 -8
  557. package/lib-esm/hooks/useOverlay.d.ts +0 -15
  558. package/lib-esm/hooks/useProvidedRefOrCreate.d.ts +0 -10
  559. package/lib-esm/hooks/useProvidedStateOrCreate.d.ts +0 -10
  560. package/lib-esm/hooks/useProvidedStateOrCreate.js +0 -20
  561. package/lib-esm/hooks/useRenderForcingRef.d.ts +0 -8
  562. package/lib-esm/hooks/useRenderForcingRef.js +0 -18
  563. package/lib-esm/hooks/useResizeObserver.d.ts +0 -1
  564. package/lib-esm/hooks/useResizeObserver.js +0 -10
  565. package/lib-esm/hooks/useSafeTimeout.d.ts +0 -12
  566. package/lib-esm/hooks/useScrollFlash.d.ts +0 -6
  567. package/lib-esm/hooks/useScrollFlash.js +0 -22
  568. package/lib-esm/index.d.ts +0 -114
  569. package/lib-esm/polyfills/eventListenerSignal.d.ts +0 -6
  570. package/lib-esm/sx.d.ts +0 -6
  571. package/lib-esm/theme-preval.d.ts +0 -49
  572. package/lib-esm/theme.d.ts +0 -2
  573. package/lib-esm/utils/deprecate.d.ts +0 -18
  574. package/lib-esm/utils/isNumeric.d.ts +0 -1
  575. package/lib-esm/utils/iterateFocusableElements.d.ts +0 -42
  576. package/lib-esm/utils/scrollIntoViewingArea.d.ts +0 -1
  577. package/lib-esm/utils/scrollIntoViewingArea.js +0 -30
  578. package/lib-esm/utils/ssr.d.ts +0 -1
  579. package/lib-esm/utils/ssr.js +0 -1
  580. package/lib-esm/utils/test-deprecations.d.ts +0 -1
  581. package/lib-esm/utils/test-helpers.js +0 -7
  582. package/lib-esm/utils/test-matchers.d.ts +0 -1
  583. package/lib-esm/utils/testing.d.ts +0 -1028
  584. package/lib-esm/utils/theme.d.ts +0 -9
  585. package/lib-esm/utils/types/AriaRole.d.ts +0 -4
  586. package/lib-esm/utils/types/AriaRole.js +0 -1
  587. package/lib-esm/utils/types/ComponentProps.d.ts +0 -9
  588. package/lib-esm/utils/types/ComponentProps.js +0 -1
  589. package/lib-esm/utils/types/Flatten.d.ts +0 -4
  590. package/lib-esm/utils/types/Flatten.js +0 -1
  591. package/lib-esm/utils/types/Merge.d.ts +0 -19
  592. package/lib-esm/utils/types/Merge.js +0 -1
  593. package/lib-esm/utils/types/index.d.ts +0 -4
  594. package/lib-esm/utils/types/index.js +0 -4
  595. package/lib-esm/utils/uniqueId.d.ts +0 -1
  596. package/lib-esm/utils/userAgent.d.ts +0 -1
@@ -0,0 +1,76 @@
1
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
2
+ import React from 'react';
3
+ import { ThemeProvider, BaseStyles, BorderBox, themeGet, useTheme } from '..';
4
+ import { createGlobalStyle } from 'styled-components';
5
+ export default {
6
+ title: 'Generic behaviors/ThemeProvider',
7
+ component: ThemeProvider,
8
+ argTypes: {
9
+ theme: {
10
+ table: {
11
+ disable: true
12
+ }
13
+ }
14
+ }
15
+ };
16
+ const GlobalStyle = createGlobalStyle`
17
+ body {
18
+ background-color: ${themeGet('colors.bg.canvas')};
19
+ }
20
+ `;
21
+
22
+ function ActiveColorScheme() {
23
+ const {
24
+ colorScheme
25
+ } = useTheme();
26
+ return /*#__PURE__*/React.createElement("span", null, "Active color scheme: ", colorScheme);
27
+ }
28
+
29
+ ActiveColorScheme.displayName = "ActiveColorScheme";
30
+ export const Default = args => {
31
+ return /*#__PURE__*/React.createElement(ThemeProvider, args, /*#__PURE__*/React.createElement(GlobalStyle, null), /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(ActiveColorScheme, null)));
32
+ };
33
+ Default.displayName = "Default";
34
+ Default.args = {
35
+ colorMode: 'day',
36
+ dayScheme: 'light',
37
+ nightScheme: 'dark'
38
+ };
39
+
40
+ function NightMode() {
41
+ return /*#__PURE__*/React.createElement(ThemeProvider, {
42
+ colorMode: "night"
43
+ }, /*#__PURE__*/React.createElement(BorderBox, {
44
+ my: 3,
45
+ p: 3,
46
+ color: "text.primary",
47
+ bg: "bg.canvas"
48
+ }, "Always night mode (", /*#__PURE__*/React.createElement(ActiveColorScheme, null), ")"));
49
+ }
50
+
51
+ NightMode.displayName = "NightMode";
52
+
53
+ function InverseMode() {
54
+ const {
55
+ resolvedColorMode
56
+ } = useTheme();
57
+ return /*#__PURE__*/React.createElement(ThemeProvider, {
58
+ colorMode: resolvedColorMode === 'day' ? 'night' : 'day'
59
+ }, /*#__PURE__*/React.createElement(BorderBox, {
60
+ my: 3,
61
+ p: 3,
62
+ color: "text.primary",
63
+ bg: "bg.canvas"
64
+ }, "Always inverse of parent mode (", /*#__PURE__*/React.createElement(ActiveColorScheme, null), ")"));
65
+ }
66
+
67
+ InverseMode.displayName = "InverseMode";
68
+ export const Nested = args => {
69
+ return /*#__PURE__*/React.createElement(ThemeProvider, args, /*#__PURE__*/React.createElement(GlobalStyle, null), /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(ActiveColorScheme, null), /*#__PURE__*/React.createElement(NightMode, null), /*#__PURE__*/React.createElement(InverseMode, null)));
70
+ };
71
+ Nested.displayName = "Nested";
72
+ Nested.args = {
73
+ colorMode: 'day',
74
+ dayScheme: 'light',
75
+ nightScheme: 'dark_dimmed'
76
+ };
@@ -0,0 +1,311 @@
1
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
2
+ import React from 'react';
3
+ import { BaseStyles, Box, ButtonPrimary, Position, Relative, ThemeProvider } from '..';
4
+ import { useAnchoredPosition } from '../hooks/useAnchoredPosition';
5
+ import styled from 'styled-components';
6
+ import { get } from '../constants';
7
+ import Portal, { registerPortalRoot } from '../Portal';
8
+ import Button from '../Button';
9
+ export default {
10
+ title: 'Hooks/useAnchoredPosition',
11
+ decorators: [// Note: For some reason, if you use <BaseStyles><Story /></BaseStyles>,
12
+ // the component gets unmounted from the root every time a control changes!
13
+ Story => {
14
+ return /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(BaseStyles, null, Story()));
15
+ }],
16
+ argTypes: {
17
+ anchorX: {
18
+ control: {
19
+ type: 'range',
20
+ min: 0,
21
+ max: 500
22
+ }
23
+ },
24
+ anchorY: {
25
+ control: {
26
+ type: 'range',
27
+ min: 0,
28
+ max: 500
29
+ }
30
+ },
31
+ anchorWidth: {
32
+ control: {
33
+ type: 'range',
34
+ min: 50,
35
+ max: 500
36
+ }
37
+ },
38
+ anchorHeight: {
39
+ control: {
40
+ type: 'range',
41
+ min: 50,
42
+ max: 500
43
+ }
44
+ },
45
+ floatWidth: {
46
+ control: {
47
+ type: 'range',
48
+ min: 50,
49
+ max: 500
50
+ }
51
+ },
52
+ floatHeight: {
53
+ control: {
54
+ type: 'range',
55
+ min: 50,
56
+ max: 500
57
+ }
58
+ },
59
+ anchorPosition: {
60
+ control: {
61
+ type: 'inline-radio',
62
+ options: ['inside', 'outside']
63
+ }
64
+ },
65
+ anchorSide: {
66
+ control: {
67
+ type: 'inline-radio',
68
+ options: ['top', 'bottom', 'left', 'right', 'center']
69
+ },
70
+ description: 'note'
71
+ },
72
+ anchorAlignment: {
73
+ control: {
74
+ type: 'inline-radio',
75
+ options: ['first', 'center', 'last']
76
+ }
77
+ },
78
+ anchorOffset: {
79
+ control: {
80
+ type: 'range',
81
+ min: -100,
82
+ max: 100
83
+ }
84
+ },
85
+ alignmentOffset: {
86
+ control: {
87
+ type: 'range',
88
+ min: -100,
89
+ max: 100
90
+ }
91
+ },
92
+ allowOutOfBounds: {
93
+ control: {
94
+ type: 'boolean'
95
+ }
96
+ }
97
+ }
98
+ };
99
+ const Float = styled(Position).withConfig({
100
+ displayName: "useAnchoredPositionstories__Float",
101
+ componentId: "sc-18cdzou-0"
102
+ })(["position:absolute;border:1px solid ", ";border-radius:", ";background-color:", ";display:flex;flex-direction:column;text-align:center;font-size:", ";font-weight:", ";padding:", ";"], get('colors.black'), get('radii.2'), get('colors.orange.3'), get('fontSizes.3'), get('fontWeights.bold'), get('space.3'));
103
+ const Anchor = styled(Position).withConfig({
104
+ displayName: "useAnchoredPositionstories__Anchor",
105
+ componentId: "sc-18cdzou-1"
106
+ })(["position:absolute;border:1px solid ", ";border-radius:", ";background-color:", ";display:flex;flex-direction:column;text-align:center;font-size:", ";font-weight:", ";padding:", ";"], get('colors.black'), get('radii.2'), get('colors.blue.3'), get('fontSizes.3'), get('fontWeights.bold'), get('space.3')); // eslint-disable-next-line @typescript-eslint/no-explicit-any
107
+
108
+ export const UseAnchoredPosition = args => {
109
+ var _args$anchorPosition, _args$anchorSide, _args$anchorAlignment, _parseInt, _parseInt2, _args$allowOutOfBound, _args$anchorY, _args$anchorX, _position$top, _position$left, _args$floatWidth, _args$floatHeight;
110
+
111
+ const {
112
+ floatingElementRef,
113
+ anchorElementRef,
114
+ position
115
+ } = useAnchoredPosition({
116
+ side: `${(_args$anchorPosition = args.anchorPosition) !== null && _args$anchorPosition !== void 0 ? _args$anchorPosition : 'outside'}-${(_args$anchorSide = args.anchorSide) !== null && _args$anchorSide !== void 0 ? _args$anchorSide : 'bottom'}`,
117
+ align: (_args$anchorAlignment = args.anchorAlignment) !== null && _args$anchorAlignment !== void 0 ? _args$anchorAlignment : 'start',
118
+ anchorOffset: args.anchorOffset && ((_parseInt = parseInt(args.anchorOffset, 10)) !== null && _parseInt !== void 0 ? _parseInt : undefined),
119
+ alignmentOffset: args.alignmentOffset && ((_parseInt2 = parseInt(args.alignmentOffset, 10)) !== null && _parseInt2 !== void 0 ? _parseInt2 : undefined),
120
+ allowOutOfBounds: (_args$allowOutOfBound = args.allowOutOfBounds) !== null && _args$allowOutOfBound !== void 0 ? _args$allowOutOfBound : undefined
121
+ }, [args]);
122
+ return /*#__PURE__*/React.createElement(Relative, {
123
+ m: 2
124
+ }, /*#__PURE__*/React.createElement(Anchor, {
125
+ top: (_args$anchorY = args.anchorY) !== null && _args$anchorY !== void 0 ? _args$anchorY : 0,
126
+ left: (_args$anchorX = args.anchorX) !== null && _args$anchorX !== void 0 ? _args$anchorX : 0,
127
+ width: args.anchorWidth,
128
+ height: args.anchorHeight,
129
+ ref: anchorElementRef
130
+ }, "Anchor Element"), /*#__PURE__*/React.createElement(Float, {
131
+ top: (_position$top = position === null || position === void 0 ? void 0 : position.top) !== null && _position$top !== void 0 ? _position$top : 0,
132
+ left: (_position$left = position === null || position === void 0 ? void 0 : position.left) !== null && _position$left !== void 0 ? _position$left : 0,
133
+ width: (_args$floatWidth = args.floatWidth) !== null && _args$floatWidth !== void 0 ? _args$floatWidth : 150,
134
+ height: (_args$floatHeight = args.floatHeight) !== null && _args$floatHeight !== void 0 ? _args$floatHeight : 150,
135
+ ref: floatingElementRef
136
+ }, "Floating element"));
137
+ };
138
+ UseAnchoredPosition.displayName = "UseAnchoredPosition";
139
+ export const CenteredOnScreen = () => {
140
+ var _position$top2, _position$left2;
141
+
142
+ const {
143
+ floatingElementRef,
144
+ anchorElementRef,
145
+ position
146
+ } = useAnchoredPosition({
147
+ side: 'inside-center',
148
+ align: 'center'
149
+ }); // The outer Position element simply fills all available space
150
+
151
+ return /*#__PURE__*/React.createElement(Position, {
152
+ ref: anchorElementRef,
153
+ position: "absolute",
154
+ top: 0,
155
+ bottom: 0,
156
+ left: 0,
157
+ right: 0
158
+ }, /*#__PURE__*/React.createElement(Float, {
159
+ ref: floatingElementRef,
160
+ top: (_position$top2 = position === null || position === void 0 ? void 0 : position.top) !== null && _position$top2 !== void 0 ? _position$top2 : 0,
161
+ left: (_position$left2 = position === null || position === void 0 ? void 0 : position.left) !== null && _position$left2 !== void 0 ? _position$left2 : 0
162
+ }, /*#__PURE__*/React.createElement("p", null, "Screen-Centered Floating Element "), /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("small", null, /*#__PURE__*/React.createElement("em", null, "(Controls are ignored for this story)")))));
163
+ };
164
+ CenteredOnScreen.displayName = "CenteredOnScreen";
165
+ export const ComplexAncestry = () => {
166
+ var _position$top3, _position$left3;
167
+
168
+ const [recalculateSignal, setRecalculateSignal] = React.useState(0);
169
+ const {
170
+ floatingElementRef,
171
+ anchorElementRef,
172
+ position
173
+ } = useAnchoredPosition({
174
+ side: 'outside-bottom',
175
+ align: 'start'
176
+ }, [recalculateSignal]);
177
+ const onRecalculateClick = React.useCallback(() => {
178
+ setRecalculateSignal(recalculateSignal + 1);
179
+ }, [recalculateSignal]); // The outer Position element simply fills all available space
180
+
181
+ const space = 2;
182
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Box, {
183
+ m: space,
184
+ p: space,
185
+ sx: {
186
+ border: '1px solid #000',
187
+ backgroundColor: 'blue.1',
188
+ height: '440px',
189
+ overflow: 'auto',
190
+ position: 'relative'
191
+ }
192
+ }, "Clipping container - this element has ", /*#__PURE__*/React.createElement("code", null, "overflow"), " set to something other than ", /*#__PURE__*/React.createElement("code", null, "visible"), /*#__PURE__*/React.createElement(Box, {
193
+ m: space,
194
+ p: space,
195
+ sx: {
196
+ border: '1px solid #000',
197
+ backgroundColor: 'blue.2',
198
+ position: 'relative'
199
+ }
200
+ }, "Relatively positioned parent, but fluid height, so not the clipping parent.", /*#__PURE__*/React.createElement(Box, {
201
+ m: space,
202
+ p: space,
203
+ sx: {
204
+ border: '1px solid #000',
205
+ backgroundColor: 'blue.3',
206
+ position: 'static',
207
+ overflow: 'hidden'
208
+ }
209
+ }, "Floating element container. Position=static and overflow=hidden to show that overflow-hidden on a statically-positioned element will not have any effect.", /*#__PURE__*/React.createElement(Float, {
210
+ top: (_position$top3 = position === null || position === void 0 ? void 0 : position.top) !== null && _position$top3 !== void 0 ? _position$top3 : 0,
211
+ left: (_position$left3 = position === null || position === void 0 ? void 0 : position.left) !== null && _position$left3 !== void 0 ? _position$left3 : 0,
212
+ width: 150,
213
+ height: 220,
214
+ ref: floatingElementRef
215
+ }, "Floating element"))), /*#__PURE__*/React.createElement(Box, {
216
+ m: space,
217
+ p: space,
218
+ backgroundColor: "blue.3",
219
+ sx: {
220
+ border: '1px solid #000',
221
+ height: '2000px'
222
+ }
223
+ }, "Anchor element container. This element is really tall to demonstrate behavior within a scrollable clipping container.", /*#__PURE__*/React.createElement(Box, {
224
+ width: "200px",
225
+ backgroundColor: "orange.3",
226
+ height: 60,
227
+ ref: anchorElementRef,
228
+ sx: {
229
+ border: '1px solid #000'
230
+ },
231
+ m: space,
232
+ p: space
233
+ }, "Anchor Element"))), /*#__PURE__*/React.createElement(Button, {
234
+ onClick: onRecalculateClick
235
+ }, "Click to recalculate floating position"));
236
+ };
237
+ const Nav = styled('nav').withConfig({
238
+ displayName: "useAnchoredPositionstories__Nav",
239
+ componentId: "sc-18cdzou-2"
240
+ })(["width:300px;padding:", ";position:relative;overflow:hidden;border-right:1px solid ", ";"], get('space.3'), get('colors.border.gray'));
241
+ const Main = styled('main').withConfig({
242
+ displayName: "useAnchoredPositionstories__Main",
243
+ componentId: "sc-18cdzou-3"
244
+ })(["display:flex;position:absolute;top:0;left:0;right:0;bottom:0;"]);
245
+ /*
246
+
247
+ There are a few "gotchas" to take note of from this example. See the
248
+ documentation for more info.
249
+
250
+ 1. The portal's root (<Main> in this example) needs to be large enough
251
+ to include ANY space that the overlay might need to take. By default,
252
+ elements are not rendered at full height! Notice how <Main> uses
253
+ top, left, right, and bottom all set to 0 to achieve a full-size box.
254
+
255
+ 2. The positioning routine needs to know the size of the overlay before
256
+ calculating its position! Therefore, we use visibility: hidden to
257
+ prevent showing a single frame of the overlay being positioned at
258
+ (0, 0).
259
+
260
+ */
261
+
262
+ export const WithPortal = () => {
263
+ var _position$top4, _position$left4;
264
+
265
+ const [showMenu, setShowMenu] = React.useState(false);
266
+ const mainRef = React.useRef(null); // Calculate the position of the menu
267
+
268
+ const {
269
+ floatingElementRef,
270
+ anchorElementRef,
271
+ position
272
+ } = useAnchoredPosition({
273
+ side: 'outside-bottom',
274
+ align: 'start'
275
+ }, [showMenu]); // Register <Main> as the Portal root
276
+
277
+ React.useEffect(() => {
278
+ if (mainRef.current) {
279
+ registerPortalRoot(mainRef.current);
280
+ }
281
+ }, [mainRef]); // Toggles rendering the menu when the button is clicked
282
+
283
+ const toggleMenu = React.useCallback(() => {
284
+ setShowMenu(!showMenu);
285
+ }, [showMenu]);
286
+ return /*#__PURE__*/React.createElement(Main, {
287
+ ref: mainRef
288
+ }, /*#__PURE__*/React.createElement(Nav, null, /*#__PURE__*/React.createElement("h2", null, "The nav bar!"), /*#__PURE__*/React.createElement("p", null, "This \u201Cnav bar\u201D has a width of 300px and is ", /*#__PURE__*/React.createElement("code", null, "position:relative"), " with", ' ', /*#__PURE__*/React.createElement("code", null, "overflow:hidden"), ", meaning that its children cannot overflow this container. Using <Portal> with ", /*#__PURE__*/React.createElement("code", null, "useAnchoredPosition"), ", we can break out of this contraint."), /*#__PURE__*/React.createElement(Box, {
289
+ sx: {
290
+ textAlign: 'right'
291
+ }
292
+ }, /*#__PURE__*/React.createElement(ButtonPrimary, {
293
+ onClick: toggleMenu,
294
+ ref: anchorElementRef
295
+ }, "Show the overlay!"), showMenu && /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(Float, {
296
+ ref: floatingElementRef,
297
+ top: (_position$top4 = position === null || position === void 0 ? void 0 : position.top) !== null && _position$top4 !== void 0 ? _position$top4 : 0,
298
+ left: (_position$left4 = position === null || position === void 0 ? void 0 : position.left) !== null && _position$left4 !== void 0 ? _position$left4 : 0,
299
+ width: 250,
300
+ height: 400,
301
+ sx: {
302
+ visibility: position ? 'visible' : 'hidden'
303
+ }
304
+ }, "An un-constrained overlay!")))), /*#__PURE__*/React.createElement(Box, {
305
+ sx: {
306
+ flexGrow: 1
307
+ },
308
+ p: 3
309
+ }, /*#__PURE__*/React.createElement("h1", null, "The body!"), /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("em", null, "Note: The controls below have no effect in this story."))));
310
+ };
311
+ WithPortal.displayName = "WithPortal";
@@ -0,0 +1,234 @@
1
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
2
+ import React, { useCallback, useEffect } from 'react';
3
+ import styled, { createGlobalStyle } from 'styled-components';
4
+ import { BaseStyles, BorderBox, Button, Flash, Text, ThemeProvider } from '..';
5
+ import { useFocusTrap } from '../hooks/useFocusTrap';
6
+ import Flex from '../Flex';
7
+ import { themeGet } from '@styled-system/theme-get';
8
+ export default {
9
+ title: 'Hooks/useFocusTrap',
10
+ decorators: [Story => {
11
+ return /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(Story, null)));
12
+ }]
13
+ }; // NOTE: the below styles are solely intended as a visual aid for
14
+ // this Storybook story, but they're not recommended for a real site!
15
+
16
+ const HelperGlobalStyling = createGlobalStyle`
17
+ *:focus {
18
+ outline: 2px solid ${themeGet('colors.blue.3')} !important;
19
+ }
20
+ [data-focus-trap='active'] {
21
+ background-color: ${themeGet('colors.green.2')}
22
+ }
23
+ [data-focus-trap='suspended'] {
24
+ background-color: ${themeGet('colors.yellow.2')}
25
+ }
26
+ `;
27
+ const MarginButton = styled(Button).withConfig({
28
+ displayName: "useFocusTrapstories__MarginButton",
29
+ componentId: "sc-12zkn1e-0"
30
+ })(["margin:", " 0;"], themeGet('space.1'));
31
+ export const FocusTrap = () => {
32
+ const [trapEnabled, setTrapEnabled] = React.useState(false);
33
+ const {
34
+ containerRef
35
+ } = useFocusTrap({
36
+ disabled: !trapEnabled
37
+ });
38
+ const spaceListener = React.useCallback(event => {
39
+ if (event.key === ' ') {
40
+ setTrapEnabled(!trapEnabled);
41
+ }
42
+ }, [trapEnabled]);
43
+ useEffect(() => {
44
+ document.addEventListener('keypress', spaceListener);
45
+ return () => {
46
+ document.removeEventListener('keypress', spaceListener);
47
+ };
48
+ }, [spaceListener]);
49
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HelperGlobalStyling, null), /*#__PURE__*/React.createElement(Flex, {
50
+ flexDirection: "column",
51
+ alignItems: "flex-start"
52
+ }, /*#__PURE__*/React.createElement(MarginButton, null, "Apple"), /*#__PURE__*/React.createElement(MarginButton, null, "Banana"), /*#__PURE__*/React.createElement(MarginButton, null, "Cantaloupe"), /*#__PURE__*/React.createElement(BorderBox, {
53
+ borderColor: "gray.5",
54
+ ref: containerRef,
55
+ m: 4,
56
+ p: 4
57
+ }, /*#__PURE__*/React.createElement("strong", null, "Trap zone! Press SPACE to ", trapEnabled ? 'deactivate' : 'activate', "."), /*#__PURE__*/React.createElement(Flex, {
58
+ flexDirection: "column",
59
+ alignItems: "flex-start"
60
+ }, /*#__PURE__*/React.createElement(MarginButton, null, "Durian"), /*#__PURE__*/React.createElement(MarginButton, null, "Elderberry"), /*#__PURE__*/React.createElement(MarginButton, null, "Fig"))), /*#__PURE__*/React.createElement(MarginButton, null, "Grapefruit"), /*#__PURE__*/React.createElement(MarginButton, null, "Honeydew"), /*#__PURE__*/React.createElement(MarginButton, null, "Jackfruit")));
61
+ };
62
+ export const CustomInitialFocus = () => {
63
+ const [trapEnabled, setTrapEnabled] = React.useState(false);
64
+ const {
65
+ containerRef,
66
+ initialFocusRef
67
+ } = useFocusTrap({
68
+ disabled: !trapEnabled
69
+ });
70
+ const spaceListener = React.useCallback(event => {
71
+ if (event.key === ' ') {
72
+ setTrapEnabled(!trapEnabled);
73
+ }
74
+ }, [trapEnabled]);
75
+ useEffect(() => {
76
+ document.addEventListener('keypress', spaceListener);
77
+ return () => {
78
+ document.removeEventListener('keypress', spaceListener);
79
+ };
80
+ }, [spaceListener]);
81
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HelperGlobalStyling, null), /*#__PURE__*/React.createElement(Flex, {
82
+ flexDirection: "column",
83
+ alignItems: "flex-start"
84
+ }, /*#__PURE__*/React.createElement(Flash, {
85
+ mb: 3
86
+ }, "This story is the same as the `Focus Trap` story, except, when the trap zone is activated, the \u201CElderberry\u201D button will receive the initial focus (if the trap zone container does not already have focus)."), /*#__PURE__*/React.createElement(MarginButton, null, "Apple"), /*#__PURE__*/React.createElement(MarginButton, null, "Banana"), /*#__PURE__*/React.createElement(MarginButton, null, "Cantaloupe"), /*#__PURE__*/React.createElement(BorderBox, {
87
+ borderColor: "gray.5",
88
+ ref: containerRef,
89
+ m: 4,
90
+ p: 4
91
+ }, /*#__PURE__*/React.createElement("strong", null, "Trap zone! Press SPACE to ", trapEnabled ? 'deactivate' : 'activate', "."), /*#__PURE__*/React.createElement(Flex, {
92
+ flexDirection: "column",
93
+ alignItems: "flex-start"
94
+ }, /*#__PURE__*/React.createElement(MarginButton, null, "Durian"), /*#__PURE__*/React.createElement(MarginButton, {
95
+ ref: initialFocusRef
96
+ }, "Elderberry"), /*#__PURE__*/React.createElement(MarginButton, null, "Fig"))), /*#__PURE__*/React.createElement(MarginButton, null, "Grapefruit"), /*#__PURE__*/React.createElement(MarginButton, null, "Honeydew"), /*#__PURE__*/React.createElement(MarginButton, null, "Jackfruit")));
97
+ };
98
+
99
+ function useKeyPressListener(key, handler, capture = false) {
100
+ const listener = useCallback(event => {
101
+ if (event.key === key) {
102
+ handler();
103
+ }
104
+ }, [key, handler]);
105
+ useEffect(() => {
106
+ document.addEventListener('keypress', listener, {
107
+ capture
108
+ });
109
+ return () => {
110
+ document.removeEventListener('keypress', listener, {
111
+ capture
112
+ });
113
+ };
114
+ }, [listener, capture]);
115
+ }
116
+
117
+ function ToggleableButton({
118
+ name
119
+ }) {
120
+ const [showButton, setShowButton] = React.useState(true);
121
+ const key = name.substr(0, 1).toLowerCase();
122
+ useKeyPressListener(key, useCallback(() => setShowButton(!showButton), [showButton]));
123
+ return /*#__PURE__*/React.createElement("span", null, showButton ? /*#__PURE__*/React.createElement(MarginButton, null, name) : /*#__PURE__*/React.createElement(React.Fragment, null, name, " (Hidden) - "), "Press ", key, " to toggle");
124
+ }
125
+
126
+ ToggleableButton.displayName = "ToggleableButton";
127
+ export const DynamicFocusTrapContents = () => {
128
+ const [trapEnabled, setTrapEnabled] = React.useState(false);
129
+ const {
130
+ containerRef
131
+ } = useFocusTrap({
132
+ disabled: !trapEnabled
133
+ });
134
+ useKeyPressListener(' ', useCallback(() => setTrapEnabled(!trapEnabled), [trapEnabled]));
135
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HelperGlobalStyling, null), /*#__PURE__*/React.createElement(Flex, {
136
+ flexDirection: "column",
137
+ alignItems: "flex-start"
138
+ }, /*#__PURE__*/React.createElement(MarginButton, null, "Apple"), /*#__PURE__*/React.createElement(MarginButton, null, "Banana"), /*#__PURE__*/React.createElement(MarginButton, null, "Cantaloupe"), /*#__PURE__*/React.createElement(BorderBox, {
139
+ borderColor: "gray.5",
140
+ ref: containerRef,
141
+ m: 4,
142
+ p: 4
143
+ }, /*#__PURE__*/React.createElement("strong", null, "Trap zone! Press SPACE to ", trapEnabled ? 'deactivate' : 'activate', "."), /*#__PURE__*/React.createElement(Flex, {
144
+ flexDirection: "column",
145
+ alignItems: "flex-start"
146
+ }, /*#__PURE__*/React.createElement(ToggleableButton, {
147
+ name: "Durian"
148
+ }), /*#__PURE__*/React.createElement(ToggleableButton, {
149
+ name: "Elderberry"
150
+ }), /*#__PURE__*/React.createElement(ToggleableButton, {
151
+ name: "Fig"
152
+ }))), /*#__PURE__*/React.createElement(MarginButton, null, "Grapefruit"), /*#__PURE__*/React.createElement(MarginButton, null, "Honeydew"), /*#__PURE__*/React.createElement(MarginButton, null, "Jackfruit")));
153
+ };
154
+ export const MultipleFocusTraps = () => {
155
+ const [trapEnabled1, setTrapEnabled1] = React.useState(false);
156
+ const [trapEnabled2, setTrapEnabled2] = React.useState(false);
157
+ const {
158
+ containerRef: containerRef1
159
+ } = useFocusTrap({
160
+ disabled: !trapEnabled1
161
+ });
162
+ const {
163
+ containerRef: containerRef2
164
+ } = useFocusTrap({
165
+ disabled: !trapEnabled2
166
+ });
167
+ const keyListener = React.useCallback(event => {
168
+ if (event.key === '1') {
169
+ setTrapEnabled1(!trapEnabled1);
170
+ }
171
+
172
+ if (event.key === '2') {
173
+ setTrapEnabled2(!trapEnabled2);
174
+ }
175
+ }, [trapEnabled1, trapEnabled2]);
176
+ useEffect(() => {
177
+ document.addEventListener('keydown', keyListener, {
178
+ capture: true
179
+ });
180
+ return () => {
181
+ document.removeEventListener('keydown', keyListener, {
182
+ capture: true
183
+ });
184
+ };
185
+ }, [keyListener]);
186
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HelperGlobalStyling, null), /*#__PURE__*/React.createElement(Flex, {
187
+ flexDirection: "column",
188
+ alignItems: "flex-start"
189
+ }, /*#__PURE__*/React.createElement(Flash, {
190
+ mb: 3
191
+ }, "This story demonstrates the global nature of focus traps. When a focus trap is enabled, if there is already an active focus trap, it becomes suspended and pushed onto a stack. Once the newly-active focus trap is disabled, the most recently-suspended trap will reactivate. Suspended focus traps can be disabled, causing them to be removed from the stack of suspended traps."), /*#__PURE__*/React.createElement(BorderBox, {
192
+ p: 2,
193
+ mb: 3
194
+ }, "Legend", /*#__PURE__*/React.createElement(Flex, {
195
+ flexDirection: "row"
196
+ }, /*#__PURE__*/React.createElement(BorderBox, {
197
+ width: 40,
198
+ height: 22,
199
+ mr: 2,
200
+ borderColor: "gray.5"
201
+ }), /*#__PURE__*/React.createElement(Text, null, " - Inactive")), /*#__PURE__*/React.createElement(Flex, {
202
+ flexDirection: "row"
203
+ }, /*#__PURE__*/React.createElement(BorderBox, {
204
+ width: 40,
205
+ height: 22,
206
+ mr: 2,
207
+ borderColor: "gray.5",
208
+ backgroundColor: "yellow.2"
209
+ }), /*#__PURE__*/React.createElement(Text, null, " - Suspended")), /*#__PURE__*/React.createElement(Flex, {
210
+ flexDirection: "row"
211
+ }, /*#__PURE__*/React.createElement(BorderBox, {
212
+ width: 40,
213
+ height: 22,
214
+ mr: 2,
215
+ borderColor: "gray.5",
216
+ backgroundColor: "green.2"
217
+ }), /*#__PURE__*/React.createElement(Text, null, " - Active"))), /*#__PURE__*/React.createElement(MarginButton, null, "Apple"), /*#__PURE__*/React.createElement(MarginButton, null, "Banana"), /*#__PURE__*/React.createElement(MarginButton, null, "Cantaloupe"), /*#__PURE__*/React.createElement(BorderBox, {
218
+ borderColor: "gray.5",
219
+ ref: containerRef1,
220
+ m: 2,
221
+ p: 2
222
+ }, /*#__PURE__*/React.createElement("strong", null, "Trap zone (", trapEnabled1 ? 'enabled' : 'disabled', ")! Press ", /*#__PURE__*/React.createElement("code", null, "1"), " to toggle."), /*#__PURE__*/React.createElement(Flex, {
223
+ flexDirection: "column",
224
+ alignItems: "flex-start"
225
+ }, /*#__PURE__*/React.createElement(MarginButton, null, "Durian"), /*#__PURE__*/React.createElement(MarginButton, null, "Elderberry"), /*#__PURE__*/React.createElement(MarginButton, null, "Fig"))), /*#__PURE__*/React.createElement(MarginButton, null, "Grapefruit"), /*#__PURE__*/React.createElement(MarginButton, null, "Honeydew"), /*#__PURE__*/React.createElement(MarginButton, null, "Jackfruit"), /*#__PURE__*/React.createElement(BorderBox, {
226
+ borderColor: "gray.5",
227
+ ref: containerRef2,
228
+ m: 2,
229
+ p: 2
230
+ }, /*#__PURE__*/React.createElement("strong", null, "Trap zone (", trapEnabled2 ? 'enabled' : 'disabled', ")! Press ", /*#__PURE__*/React.createElement("code", null, "2"), " to toggle."), /*#__PURE__*/React.createElement(Flex, {
231
+ flexDirection: "column",
232
+ alignItems: "flex-start"
233
+ }, /*#__PURE__*/React.createElement(MarginButton, null, "Kiwi"), /*#__PURE__*/React.createElement(MarginButton, null, "Lemon"), /*#__PURE__*/React.createElement(MarginButton, null, "Mango"))), /*#__PURE__*/React.createElement(MarginButton, null, "Nectarine"), /*#__PURE__*/React.createElement(MarginButton, null, "Orange"), /*#__PURE__*/React.createElement(MarginButton, null, "Peach")));
234
+ };