@primer/components 31.2.0-rc.fbb10090 → 31.2.0

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 (1117) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/browser.esm.js +649 -647
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +205 -203
  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.jsx +301 -0
  10. package/lib/ActionList/List.jsx +138 -0
  11. package/lib/ActionList/index.js +12 -23
  12. package/lib/ActionList2/Description.d.ts +12 -0
  13. package/lib/ActionList2/Description.js +53 -0
  14. package/lib/ActionList2/Description.jsx +30 -0
  15. package/lib/ActionList2/Divider.d.ts +5 -0
  16. package/lib/ActionList2/Divider.js +35 -0
  17. package/lib/ActionList2/Divider.jsx +22 -0
  18. package/lib/ActionList2/Group.d.ts +11 -0
  19. package/lib/ActionList2/Group.js +57 -0
  20. package/lib/ActionList2/Group.jsx +25 -0
  21. package/lib/ActionList2/Header.d.ts +26 -0
  22. package/lib/ActionList2/Header.js +55 -0
  23. package/lib/ActionList2/Header.jsx +36 -0
  24. package/lib/ActionList2/Item.d.ts +63 -0
  25. package/lib/ActionList2/Item.js +244 -0
  26. package/lib/ActionList2/Item.jsx +174 -0
  27. package/lib/ActionList2/LinkItem.d.ts +17 -0
  28. package/lib/ActionList2/LinkItem.js +57 -0
  29. package/lib/ActionList2/LinkItem.jsx +28 -0
  30. package/lib/ActionList2/List.d.ts +26 -0
  31. package/lib/ActionList2/List.js +59 -0
  32. package/lib/ActionList2/List.jsx +41 -0
  33. package/lib/ActionList2/Selection.d.ts +5 -0
  34. package/lib/ActionList2/Selection.js +70 -0
  35. package/lib/ActionList2/Selection.jsx +36 -0
  36. package/lib/ActionList2/Visuals.d.ts +9 -0
  37. package/lib/ActionList2/Visuals.js +90 -0
  38. package/lib/ActionList2/Visuals.jsx +48 -0
  39. package/lib/ActionList2/index.d.ts +36 -0
  40. package/lib/ActionList2/index.js +29 -0
  41. package/lib/ActionMenu.jsx +73 -0
  42. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +100 -0
  43. package/lib/AnchoredOverlay/index.js +4 -12
  44. package/lib/Autocomplete/Autocomplete.d.ts +28 -28
  45. package/lib/Autocomplete/Autocomplete.jsx +100 -0
  46. package/lib/Autocomplete/AutocompleteContext.jsx +5 -0
  47. package/lib/Autocomplete/AutocompleteInput.d.ts +28 -28
  48. package/lib/Autocomplete/AutocompleteInput.jsx +113 -0
  49. package/lib/Autocomplete/AutocompleteMenu.jsx +190 -0
  50. package/lib/Autocomplete/AutocompleteOverlay.jsx +55 -0
  51. package/lib/Autocomplete/index.js +7 -14
  52. package/lib/Avatar.jsx +34 -0
  53. package/lib/AvatarPair.jsx +29 -0
  54. package/{src/AvatarStack.tsx → lib/AvatarStack.jsx} +41 -49
  55. package/lib/BaseStyles.jsx +65 -0
  56. package/lib/BorderBox.jsx +18 -0
  57. package/lib/Box.jsx +10 -0
  58. package/lib/BranchName.jsx +20 -0
  59. package/lib/Breadcrumbs.jsx +74 -0
  60. package/lib/Button/Button.d.ts +25 -25
  61. package/lib/Button/Button.jsx +60 -0
  62. package/lib/Button/ButtonBase.jsx +36 -0
  63. package/lib/Button/ButtonClose.d.ts +45 -45
  64. package/lib/Button/ButtonClose.jsx +55 -0
  65. package/lib/Button/ButtonDanger.d.ts +25 -25
  66. package/lib/Button/ButtonDanger.jsx +63 -0
  67. package/lib/Button/ButtonGroup.jsx +55 -0
  68. package/lib/Button/ButtonInvisible.d.ts +25 -25
  69. package/lib/Button/ButtonInvisible.jsx +52 -0
  70. package/lib/Button/ButtonOutline.d.ts +25 -25
  71. package/lib/Button/ButtonOutline.jsx +63 -0
  72. package/lib/Button/ButtonPrimary.d.ts +25 -25
  73. package/lib/Button/ButtonPrimary.jsx +62 -0
  74. package/{src/Button/ButtonStyles.tsx → lib/Button/ButtonStyles.jsx} +8 -7
  75. package/lib/Button/ButtonTableList.jsx +49 -0
  76. package/lib/Button/index.js +21 -70
  77. package/lib/Caret.jsx +93 -0
  78. package/lib/CircleBadge.jsx +43 -0
  79. package/lib/CircleOcticon.d.ts +42 -42
  80. package/lib/CircleOcticon.jsx +21 -0
  81. package/lib/CounterLabel.jsx +44 -0
  82. package/lib/Details.jsx +21 -0
  83. package/lib/Dialog/ConfirmationDialog.jsx +146 -0
  84. package/lib/Dialog/Dialog.js +1 -0
  85. package/lib/Dialog/Dialog.jsx +273 -0
  86. package/lib/Dialog.d.ts +45 -45
  87. package/lib/Dialog.jsx +131 -0
  88. package/lib/Dropdown.d.ts +176 -176
  89. package/lib/Dropdown.jsx +134 -0
  90. package/lib/DropdownMenu/DropdownButton.d.ts +46 -46
  91. package/lib/DropdownMenu/DropdownButton.jsx +14 -0
  92. package/lib/DropdownMenu/DropdownMenu.jsx +70 -0
  93. package/lib/DropdownMenu/index.js +6 -20
  94. package/lib/DropdownStyles.js +18 -26
  95. package/lib/FilterList.d.ts +42 -42
  96. package/lib/FilterList.jsx +63 -0
  97. package/lib/FilteredActionList/FilteredActionList.jsx +100 -0
  98. package/lib/FilteredActionList/index.js +4 -12
  99. package/lib/FilteredSearch.jsx +29 -0
  100. package/lib/Flash.jsx +70 -0
  101. package/lib/Flex.jsx +15 -0
  102. package/lib/FormGroup.jsx +25 -0
  103. package/lib/Grid.jsx +15 -0
  104. package/lib/Header.jsx +90 -0
  105. package/lib/Heading.jsx +21 -0
  106. package/lib/Label.jsx +84 -0
  107. package/lib/LabelGroup.jsx +19 -0
  108. package/lib/Link.jsx +38 -0
  109. package/lib/NewButton/button-counter.d.ts +6 -0
  110. package/lib/NewButton/button-counter.js +31 -0
  111. package/lib/NewButton/button-counter.jsx +14 -0
  112. package/lib/NewButton/button.d.ts +13 -0
  113. package/lib/NewButton/button.js +316 -0
  114. package/lib/NewButton/button.jsx +278 -0
  115. package/lib/NewButton/index.d.ts +14 -0
  116. package/lib/NewButton/index.js +8 -0
  117. package/lib/NewButton/types.d.ts +32 -0
  118. package/lib/NewButton/types.js +2 -0
  119. package/lib/Overlay.js +3 -1
  120. package/lib/Overlay.jsx +156 -0
  121. package/lib/Pagehead.jsx +18 -0
  122. package/lib/Pagination/Pagination.jsx +163 -0
  123. package/lib/Pagination/index.js +6 -12
  124. package/lib/Pagination/model.jsx +174 -0
  125. package/lib/PointerBox.jsx +25 -0
  126. package/{src/Popover.tsx → lib/Popover.jsx} +54 -80
  127. package/lib/Portal/Portal.js +3 -2
  128. package/lib/Portal/Portal.jsx +79 -0
  129. package/lib/Portal/index.js +5 -16
  130. package/lib/Position.d.ts +4 -4
  131. package/lib/Position.jsx +46 -0
  132. package/lib/ProgressBar.jsx +39 -0
  133. package/lib/SelectMenu/SelectMenu.d.ts +246 -246
  134. package/lib/SelectMenu/SelectMenu.jsx +114 -0
  135. package/lib/SelectMenu/SelectMenuContext.jsx +5 -0
  136. package/lib/SelectMenu/SelectMenuDivider.jsx +43 -0
  137. package/lib/SelectMenu/SelectMenuFilter.jsx +59 -0
  138. package/lib/SelectMenu/SelectMenuFooter.jsx +46 -0
  139. package/lib/SelectMenu/SelectMenuHeader.jsx +44 -0
  140. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  141. package/lib/SelectMenu/SelectMenuItem.jsx +143 -0
  142. package/lib/SelectMenu/SelectMenuList.jsx +60 -0
  143. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +21 -0
  144. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  145. package/lib/SelectMenu/SelectMenuModal.jsx +119 -0
  146. package/lib/SelectMenu/SelectMenuTab.jsx +93 -0
  147. package/lib/SelectMenu/SelectMenuTabPanel.jsx +43 -0
  148. package/lib/SelectMenu/SelectMenuTabs.jsx +58 -0
  149. package/lib/SelectMenu/hooks/useKeyboardNav.js +80 -96
  150. package/lib/SelectMenu/index.js +7 -14
  151. package/lib/SelectPanel/SelectPanel.jsx +105 -0
  152. package/lib/SelectPanel/index.js +4 -12
  153. package/lib/SideNav.jsx +177 -0
  154. package/lib/Spinner.jsx +35 -0
  155. package/lib/StateLabel.d.ts +1 -1
  156. package/lib/StateLabel.js +6 -1
  157. package/lib/StateLabel.jsx +94 -0
  158. package/lib/StyledOcticon.jsx +20 -0
  159. package/lib/SubNav.jsx +104 -0
  160. package/lib/TabNav.jsx +60 -0
  161. package/lib/Text.jsx +14 -0
  162. package/lib/TextInput.jsx +23 -0
  163. package/lib/TextInputWithTokens.d.ts +28 -28
  164. package/lib/TextInputWithTokens.jsx +218 -0
  165. package/lib/ThemeProvider.jsx +130 -0
  166. package/lib/Timeline.d.ts +43 -43
  167. package/lib/Timeline.jsx +124 -0
  168. package/lib/Token/AvatarToken.d.ts +1 -1
  169. package/lib/Token/AvatarToken.jsx +54 -0
  170. package/lib/Token/IssueLabelToken.d.ts +1 -1
  171. package/lib/Token/IssueLabelToken.jsx +125 -0
  172. package/lib/Token/Token.d.ts +1 -1
  173. package/lib/Token/Token.jsx +103 -0
  174. package/lib/Token/TokenBase.jsx +88 -0
  175. package/lib/Token/_RemoveTokenButton.jsx +108 -0
  176. package/{src/Token/_TokenTextContainer.tsx → lib/Token/_TokenTextContainer.jsx} +9 -7
  177. package/lib/Token/index.js +11 -30
  178. package/{src/Tooltip.tsx → lib/Tooltip.jsx} +34 -51
  179. package/lib/Truncate.jsx +27 -0
  180. package/lib/UnderlineNav.jsx +90 -0
  181. package/lib/_TextInputWrapper.js +2 -2
  182. package/lib/_TextInputWrapper.jsx +120 -0
  183. package/lib/_UnstyledTextInput.jsx +22 -0
  184. package/lib/behaviors/anchoredPosition.js +205 -234
  185. package/lib/behaviors/focusTrap.js +121 -157
  186. package/lib/behaviors/focusZone.js +434 -509
  187. package/lib/behaviors/scrollIntoViewingArea.js +18 -35
  188. package/lib/constants.js +39 -43
  189. package/lib/drafts.d.ts +8 -0
  190. package/lib/drafts.js +21 -0
  191. package/lib/hooks/index.js +16 -60
  192. package/lib/hooks/useAnchoredPosition.js +32 -39
  193. package/lib/hooks/useCombinedRefs.d.ts +2 -2
  194. package/lib/hooks/useCombinedRefs.js +32 -38
  195. package/lib/hooks/useDetails.jsx +39 -0
  196. package/lib/hooks/useDialog.js +72 -96
  197. package/lib/hooks/useFocusTrap.js +43 -60
  198. package/lib/hooks/useFocusZone.js +54 -50
  199. package/lib/hooks/useOnEscapePress.js +25 -36
  200. package/lib/hooks/useOnOutsideClick.jsx +61 -0
  201. package/lib/hooks/useOpenAndCloseFocus.js +22 -34
  202. package/lib/hooks/useOverlay.jsx +15 -0
  203. package/lib/hooks/useProvidedRefOrCreate.js +10 -14
  204. package/lib/hooks/useProvidedStateOrCreate.js +13 -16
  205. package/lib/hooks/useRenderForcingRef.js +13 -17
  206. package/lib/hooks/useResizeObserver.js +15 -18
  207. package/lib/hooks/useSafeTimeout.js +22 -30
  208. package/lib/hooks/useScrollFlash.js +16 -23
  209. package/lib/index.d.ts +2 -0
  210. package/lib/index.js +163 -636
  211. package/lib/polyfills/eventListenerSignal.js +37 -45
  212. package/lib/sx.d.ts +2 -0
  213. package/lib/sx.js +10 -14
  214. package/lib/theme-preval.js +65 -2945
  215. package/lib/theme.js +3 -12
  216. package/lib/utils/create-slots.d.ts +17 -0
  217. package/lib/utils/create-slots.js +105 -0
  218. package/lib/utils/create-slots.jsx +65 -0
  219. package/lib/utils/deprecate.jsx +59 -0
  220. package/lib/utils/isNumeric.jsx +7 -0
  221. package/lib/utils/iterateFocusableElements.js +63 -85
  222. package/lib/utils/ssr.jsx +6 -0
  223. package/lib/utils/test-deprecations.jsx +20 -0
  224. package/{src/utils/test-helpers.tsx → lib/utils/test-helpers.jsx} +6 -5
  225. package/lib/utils/test-matchers.jsx +100 -0
  226. package/lib/utils/testing.d.ts +14 -1
  227. package/lib/utils/testing.jsx +206 -0
  228. package/lib/utils/theme.js +33 -47
  229. package/lib/utils/types/AriaRole.js +2 -1
  230. package/lib/utils/types/ComponentProps.js +2 -1
  231. package/lib/utils/types/Flatten.js +2 -1
  232. package/lib/utils/types/KeyPaths.d.ts +1 -1
  233. package/lib/utils/types/KeyPaths.js +2 -1
  234. package/lib/utils/types/MandateProps.js +16 -1
  235. package/lib/utils/types/Merge.js +2 -1
  236. package/lib/utils/types/index.js +16 -69
  237. package/lib/utils/uniqueId.js +5 -8
  238. package/lib/utils/use-force-update.d.ts +1 -0
  239. package/lib/utils/use-force-update.js +13 -0
  240. package/lib/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  241. package/lib/utils/useIsomorphicLayoutEffect.js +9 -0
  242. package/lib/utils/userAgent.js +8 -12
  243. package/lib-esm/ActionList2/Description.d.ts +12 -0
  244. package/lib-esm/ActionList2/Description.js +37 -0
  245. package/lib-esm/ActionList2/Divider.d.ts +5 -0
  246. package/lib-esm/ActionList2/Divider.js +23 -0
  247. package/lib-esm/ActionList2/Group.d.ts +11 -0
  248. package/lib-esm/ActionList2/Group.js +40 -0
  249. package/lib-esm/ActionList2/Header.d.ts +26 -0
  250. package/lib-esm/ActionList2/Header.js +44 -0
  251. package/lib-esm/ActionList2/Item.d.ts +63 -0
  252. package/lib-esm/ActionList2/Item.js +210 -0
  253. package/lib-esm/ActionList2/LinkItem.d.ts +17 -0
  254. package/lib-esm/ActionList2/LinkItem.js +43 -0
  255. package/lib-esm/ActionList2/List.d.ts +26 -0
  256. package/lib-esm/ActionList2/List.js +37 -0
  257. package/lib-esm/ActionList2/Selection.d.ts +5 -0
  258. package/lib-esm/ActionList2/Selection.js +52 -0
  259. package/lib-esm/ActionList2/Visuals.d.ts +9 -0
  260. package/lib-esm/ActionList2/Visuals.js +68 -0
  261. package/lib-esm/ActionList2/index.d.ts +36 -0
  262. package/lib-esm/ActionList2/index.js +33 -0
  263. package/lib-esm/Autocomplete/Autocomplete.d.ts +28 -28
  264. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +28 -28
  265. package/lib-esm/Button/Button.d.ts +25 -25
  266. package/lib-esm/Button/ButtonClose.d.ts +45 -45
  267. package/lib-esm/Button/ButtonDanger.d.ts +25 -25
  268. package/lib-esm/Button/ButtonInvisible.d.ts +25 -25
  269. package/lib-esm/Button/ButtonOutline.d.ts +25 -25
  270. package/lib-esm/Button/ButtonPrimary.d.ts +25 -25
  271. package/lib-esm/CircleOcticon.d.ts +42 -42
  272. package/lib-esm/Dialog/Dialog.js +1 -0
  273. package/lib-esm/Dialog.d.ts +45 -45
  274. package/lib-esm/Dropdown.d.ts +176 -176
  275. package/lib-esm/DropdownMenu/DropdownButton.d.ts +46 -46
  276. package/lib-esm/FilterList.d.ts +42 -42
  277. package/lib-esm/NewButton/button-counter.d.ts +6 -0
  278. package/lib-esm/NewButton/button-counter.js +18 -0
  279. package/lib-esm/NewButton/button.d.ts +13 -0
  280. package/lib-esm/NewButton/button.js +298 -0
  281. package/lib-esm/NewButton/index.d.ts +14 -0
  282. package/lib-esm/NewButton/index.js +5 -0
  283. package/lib-esm/NewButton/types.d.ts +32 -0
  284. package/lib-esm/NewButton/types.js +1 -0
  285. package/lib-esm/Overlay.js +2 -1
  286. package/lib-esm/Portal/Portal.js +2 -1
  287. package/lib-esm/Position.d.ts +4 -4
  288. package/lib-esm/SelectMenu/SelectMenu.d.ts +246 -246
  289. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  290. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  291. package/lib-esm/StateLabel.d.ts +1 -1
  292. package/lib-esm/StateLabel.js +7 -2
  293. package/lib-esm/TextInputWithTokens.d.ts +28 -28
  294. package/lib-esm/Timeline.d.ts +43 -43
  295. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  296. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  297. package/lib-esm/Token/Token.d.ts +1 -1
  298. package/lib-esm/_TextInputWrapper.js +2 -2
  299. package/lib-esm/drafts.d.ts +8 -0
  300. package/lib-esm/drafts.js +9 -0
  301. package/lib-esm/hooks/useAnchoredPosition.js +2 -1
  302. package/lib-esm/hooks/useCombinedRefs.d.ts +2 -2
  303. package/lib-esm/hooks/useCombinedRefs.js +3 -2
  304. package/lib-esm/hooks/useResizeObserver.js +2 -2
  305. package/lib-esm/index.d.ts +2 -0
  306. package/lib-esm/index.js +1 -0
  307. package/lib-esm/sx.d.ts +2 -0
  308. package/lib-esm/sx.js +3 -1
  309. package/lib-esm/theme-preval.js +81 -2
  310. package/lib-esm/utils/create-slots.d.ts +17 -0
  311. package/lib-esm/utils/create-slots.js +84 -0
  312. package/lib-esm/utils/testing.d.ts +14 -1
  313. package/lib-esm/utils/types/KeyPaths.d.ts +1 -1
  314. package/lib-esm/utils/use-force-update.d.ts +1 -0
  315. package/lib-esm/utils/use-force-update.js +6 -0
  316. package/lib-esm/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  317. package/lib-esm/utils/useIsomorphicLayoutEffect.js +3 -0
  318. package/package.json +9 -5
  319. package/.changeset/README.md +0 -8
  320. package/.changeset/config.json +0 -10
  321. package/.devcontainer/devcontainer.json +0 -8
  322. package/.eslintrc.json +0 -137
  323. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  324. package/.github/ISSUE_TEMPLATE/new_component_proposal_template.md +0 -41
  325. package/.github/dependabot.yml +0 -18
  326. package/.github/pull_request_template.md +0 -18
  327. package/.github/workflows/check_for_changeset.yml +0 -25
  328. package/.github/workflows/ci.yml +0 -31
  329. package/.github/workflows/deploy_preview.yml +0 -47
  330. package/.github/workflows/deploy_production.yml +0 -70
  331. package/.github/workflows/release.yml +0 -35
  332. package/.github/workflows/release_canary.yml +0 -70
  333. package/.github/workflows/release_candidate.yml +0 -60
  334. package/.github/workflows/size.yml +0 -13
  335. package/.github/workflows/stale.yml +0 -26
  336. package/.gitignore +0 -10
  337. package/.npmrc +0 -4
  338. package/.nvmrc +0 -1
  339. package/.storybook/main.js +0 -9
  340. package/.storybook/preview.js +0 -117
  341. package/.vscode/launch.json +0 -21
  342. package/.vscode/settings.json +0 -13
  343. package/@types/@styled-system/index.d.ts +0 -0
  344. package/@types/@styled-system/prop-types/index.d.ts +0 -1
  345. package/@types/@styled-system/props/index.d.ts +0 -1
  346. package/@types/jest-styled-components/index.d.ts +0 -1
  347. package/CODEOWNERS +0 -2
  348. package/babel-defines.js +0 -13
  349. package/babel.config.js +0 -39
  350. package/contributor-docs/CODE_OF_CONDUCT.md +0 -76
  351. package/contributor-docs/CONTRIBUTING.md +0 -274
  352. package/contributor-docs/adrs/adr-001-typescript.md +0 -23
  353. package/contributor-docs/adrs/adr-002-behavior-isolation.md +0 -108
  354. package/contributor-docs/adrs/adr-003-prop-norms.md +0 -72
  355. package/contributor-docs/behaviors.md +0 -132
  356. package/contributor-docs/component-contents-api-patterns.md +0 -316
  357. package/contributor-docs/principles.md +0 -39
  358. package/docs/.eslintrc +0 -0
  359. package/docs/.gitignore +0 -91
  360. package/docs/components/PropsList.js +0 -5
  361. package/docs/components/State.js +0 -9
  362. package/docs/components/constants.js +0 -34
  363. package/docs/components/index.js +0 -2
  364. package/docs/content/ActionList.mdx +0 -99
  365. package/docs/content/ActionMenu.mdx +0 -80
  366. package/docs/content/AnchoredOverlay.mdx +0 -37
  367. package/docs/content/Autocomplete.mdx +0 -657
  368. package/docs/content/Avatar.mdx +0 -33
  369. package/docs/content/AvatarStack.mdx +0 -37
  370. package/docs/content/BorderBox.md +0 -46
  371. package/docs/content/Box.md +0 -74
  372. package/docs/content/BranchName.md +0 -18
  373. package/docs/content/Breadcrumbs.md +0 -52
  374. package/docs/content/Buttons.md +0 -56
  375. package/docs/content/CircleBadge.md +0 -45
  376. package/docs/content/CircleOcticon.md +0 -18
  377. package/docs/content/CounterLabel.md +0 -32
  378. package/docs/content/Details.md +0 -105
  379. package/docs/content/Dialog.md +0 -108
  380. package/docs/content/Dialog2.mdx +0 -179
  381. package/docs/content/Dropdown.md +0 -72
  382. package/docs/content/DropdownMenu.mdx +0 -49
  383. package/docs/content/FilterList.md +0 -44
  384. package/docs/content/FilteredSearch.md +0 -39
  385. package/docs/content/Flash.md +0 -44
  386. package/docs/content/Flex.md +0 -58
  387. package/docs/content/FormGroup.md +0 -46
  388. package/docs/content/Grid.md +0 -59
  389. package/docs/content/Header.md +0 -79
  390. package/docs/content/Heading.md +0 -22
  391. package/docs/content/Label.md +0 -42
  392. package/docs/content/LabelGroup.md +0 -31
  393. package/docs/content/Link.md +0 -37
  394. package/docs/content/Overlay.mdx +0 -94
  395. package/docs/content/Pagehead.md +0 -27
  396. package/docs/content/Pagination.md +0 -187
  397. package/docs/content/PointerBox.md +0 -81
  398. package/docs/content/Popover.md +0 -137
  399. package/docs/content/Portal.mdx +0 -78
  400. package/docs/content/Position.md +0 -100
  401. package/docs/content/ProgressBar.mdx +0 -29
  402. package/docs/content/SelectMenu.md +0 -435
  403. package/docs/content/SelectPanel.mdx +0 -67
  404. package/docs/content/SideNav.md +0 -179
  405. package/docs/content/Spinner.mdx +0 -32
  406. package/docs/content/StateLabel.md +0 -35
  407. package/docs/content/StyledOcticon.md +0 -36
  408. package/docs/content/SubNav.md +0 -102
  409. package/docs/content/TabNav.md +0 -50
  410. package/docs/content/Text.md +0 -31
  411. package/docs/content/TextInput.md +0 -34
  412. package/docs/content/TextInputTokens.mdx +0 -89
  413. package/docs/content/TextInputWithTokens.mdx +0 -211
  414. package/docs/content/Timeline.md +0 -138
  415. package/docs/content/Token.mdx +0 -381
  416. package/docs/content/Tooltip.md +0 -41
  417. package/docs/content/Truncate.md +0 -64
  418. package/docs/content/UnderlineNav.md +0 -53
  419. package/docs/content/anchoredPosition.mdx +0 -163
  420. package/docs/content/core-concepts.md +0 -70
  421. package/docs/content/focusTrap.mdx +0 -103
  422. package/docs/content/focusZone.mdx +0 -145
  423. package/docs/content/getting-started.md +0 -138
  424. package/docs/content/index.md +0 -33
  425. package/docs/content/linting.md +0 -35
  426. package/docs/content/overriding-styles.mdx +0 -82
  427. package/docs/content/philosophy.md +0 -23
  428. package/docs/content/primer-theme.md +0 -89
  429. package/docs/content/ssr.mdx +0 -43
  430. package/docs/content/system-props.mdx +0 -37
  431. package/docs/content/theme-reference.md +0 -16
  432. package/docs/content/theming.md +0 -272
  433. package/docs/content/useOnEscapePress.mdx +0 -56
  434. package/docs/content/useOnOutsideClick.mdx +0 -57
  435. package/docs/content/useOpenAndCloseFocus.mdx +0 -49
  436. package/docs/content/useOverlay.mdx +0 -62
  437. package/docs/content/useSafeTimeout.mdx +0 -32
  438. package/docs/gatsby-config.js +0 -30
  439. package/docs/gatsby-node.js +0 -101
  440. package/docs/package-lock.json +0 -20756
  441. package/docs/package.json +0 -36
  442. package/docs/src/@primer/gatsby-theme-doctocat/components/hero.js +0 -23
  443. package/docs/src/@primer/gatsby-theme-doctocat/components/live-preview-wrapper.js +0 -41
  444. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +0 -56
  445. package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +0 -133
  446. package/docs/src/@primer/gatsby-theme-doctocat/primer-components-hero.svg +0 -1411
  447. package/docs/src/props.js +0 -77
  448. package/jest.config.js +0 -13
  449. package/lib/__tests__/ActionList.test.d.ts +0 -1
  450. package/lib/__tests__/ActionList.test.js +0 -69
  451. package/lib/__tests__/ActionList.types.test.d.ts +0 -6
  452. package/lib/__tests__/ActionList.types.test.js +0 -69
  453. package/lib/__tests__/ActionMenu.test.d.ts +0 -1
  454. package/lib/__tests__/ActionMenu.test.js +0 -151
  455. package/lib/__tests__/AnchoredOverlay.test.d.ts +0 -1
  456. package/lib/__tests__/AnchoredOverlay.test.js +0 -160
  457. package/lib/__tests__/Autocomplete.test.d.ts +0 -1
  458. package/lib/__tests__/Autocomplete.test.js +0 -528
  459. package/lib/__tests__/Avatar.test.d.ts +0 -1
  460. package/lib/__tests__/Avatar.test.js +0 -67
  461. package/lib/__tests__/AvatarStack.test.d.ts +0 -1
  462. package/lib/__tests__/AvatarStack.test.js +0 -71
  463. package/lib/__tests__/BorderBox.test.d.ts +0 -1
  464. package/lib/__tests__/BorderBox.test.js +0 -58
  465. package/lib/__tests__/Box.test.d.ts +0 -1
  466. package/lib/__tests__/Box.test.js +0 -78
  467. package/lib/__tests__/BranchName.test.d.ts +0 -1
  468. package/lib/__tests__/BranchName.test.js +0 -36
  469. package/lib/__tests__/Breadcrumbs.test.d.ts +0 -1
  470. package/lib/__tests__/Breadcrumbs.test.js +0 -37
  471. package/lib/__tests__/BreadcrumbsItem.test.d.ts +0 -1
  472. package/lib/__tests__/BreadcrumbsItem.test.js +0 -49
  473. package/lib/__tests__/Button.test.d.ts +0 -1
  474. package/lib/__tests__/Button.test.js +0 -143
  475. package/lib/__tests__/Caret.test.d.ts +0 -1
  476. package/lib/__tests__/Caret.test.js +0 -52
  477. package/lib/__tests__/CircleBadge.test.d.ts +0 -1
  478. package/lib/__tests__/CircleBadge.test.js +0 -83
  479. package/lib/__tests__/CircleOcticon.test.d.ts +0 -1
  480. package/lib/__tests__/CircleOcticon.test.js +0 -71
  481. package/lib/__tests__/ConfirmationDialog.test.d.ts +0 -1
  482. package/lib/__tests__/ConfirmationDialog.test.js +0 -134
  483. package/lib/__tests__/CounterLabel.test.d.ts +0 -1
  484. package/lib/__tests__/CounterLabel.test.js +0 -58
  485. package/lib/__tests__/Details.test.d.ts +0 -1
  486. package/lib/__tests__/Details.test.js +0 -117
  487. package/lib/__tests__/Dialog.test.d.ts +0 -1
  488. package/lib/__tests__/Dialog.test.js +0 -184
  489. package/lib/__tests__/Dropdown.test.d.ts +0 -1
  490. package/lib/__tests__/Dropdown.test.js +0 -63
  491. package/lib/__tests__/DropdownMenu.test.d.ts +0 -1
  492. package/lib/__tests__/DropdownMenu.test.js +0 -150
  493. package/lib/__tests__/FilterList.test.d.ts +0 -1
  494. package/lib/__tests__/FilterList.test.js +0 -36
  495. package/lib/__tests__/FilterListItem.test.d.ts +0 -1
  496. package/lib/__tests__/FilterListItem.test.js +0 -46
  497. package/lib/__tests__/FilteredSearch.test.d.ts +0 -1
  498. package/lib/__tests__/FilteredSearch.test.js +0 -36
  499. package/lib/__tests__/Flash.test.d.ts +0 -1
  500. package/lib/__tests__/Flash.test.js +0 -62
  501. package/lib/__tests__/Flex.test.d.ts +0 -1
  502. package/lib/__tests__/Flex.test.js +0 -74
  503. package/lib/__tests__/FormGroup.test.d.ts +0 -1
  504. package/lib/__tests__/FormGroup.test.js +0 -54
  505. package/lib/__tests__/Grid.test.d.ts +0 -1
  506. package/lib/__tests__/Grid.test.js +0 -104
  507. package/lib/__tests__/Header.test.d.ts +0 -1
  508. package/lib/__tests__/Header.test.js +0 -58
  509. package/lib/__tests__/Heading.test.d.ts +0 -1
  510. package/lib/__tests__/Heading.test.js +0 -109
  511. package/lib/__tests__/KeyPaths.types.test.d.ts +0 -10
  512. package/lib/__tests__/KeyPaths.types.test.js +0 -10
  513. package/lib/__tests__/Label.test.d.ts +0 -1
  514. package/lib/__tests__/Label.test.js +0 -46
  515. package/lib/__tests__/LabelGroup.test.d.ts +0 -1
  516. package/lib/__tests__/LabelGroup.test.js +0 -38
  517. package/lib/__tests__/Link.test.d.ts +0 -1
  518. package/lib/__tests__/Link.test.js +0 -70
  519. package/lib/__tests__/Merge.types.test.d.ts +0 -30
  520. package/lib/__tests__/Merge.types.test.js +0 -27
  521. package/lib/__tests__/Overlay.test.d.ts +0 -1
  522. package/lib/__tests__/Overlay.test.js +0 -145
  523. package/lib/__tests__/Pagehead.test.d.ts +0 -1
  524. package/lib/__tests__/Pagehead.test.js +0 -37
  525. package/lib/__tests__/Pagination/Pagination.test.d.ts +0 -1
  526. package/lib/__tests__/Pagination/Pagination.test.js +0 -47
  527. package/lib/__tests__/Pagination/PaginationModel.test.d.ts +0 -1
  528. package/lib/__tests__/Pagination/PaginationModel.test.js +0 -186
  529. package/lib/__tests__/PointerBox.test.d.ts +0 -1
  530. package/lib/__tests__/PointerBox.test.js +0 -46
  531. package/lib/__tests__/Popover.test.d.ts +0 -1
  532. package/lib/__tests__/Popover.test.js +0 -66
  533. package/lib/__tests__/Portal.test.d.ts +0 -1
  534. package/lib/__tests__/Portal.test.js +0 -124
  535. package/lib/__tests__/Position.test.d.ts +0 -1
  536. package/lib/__tests__/Position.test.js +0 -143
  537. package/lib/__tests__/ProgressBar.test.d.ts +0 -1
  538. package/lib/__tests__/ProgressBar.test.js +0 -68
  539. package/lib/__tests__/SelectMenu.test.d.ts +0 -1
  540. package/lib/__tests__/SelectMenu.test.js +0 -155
  541. package/lib/__tests__/SelectPanel.test.d.ts +0 -1
  542. package/lib/__tests__/SelectPanel.test.js +0 -80
  543. package/lib/__tests__/SideNav.test.d.ts +0 -1
  544. package/lib/__tests__/SideNav.test.js +0 -71
  545. package/lib/__tests__/Spinner.test.d.ts +0 -1
  546. package/lib/__tests__/Spinner.test.js +0 -53
  547. package/lib/__tests__/StateLabel.test.d.ts +0 -1
  548. package/lib/__tests__/StateLabel.test.js +0 -71
  549. package/lib/__tests__/StyledOcticon.test.d.ts +0 -1
  550. package/lib/__tests__/StyledOcticon.test.js +0 -40
  551. package/lib/__tests__/SubNav.test.d.ts +0 -1
  552. package/lib/__tests__/SubNav.test.js +0 -62
  553. package/lib/__tests__/SubNavLink.test.d.ts +0 -1
  554. package/lib/__tests__/SubNavLink.test.js +0 -49
  555. package/lib/__tests__/TabNav.test.d.ts +0 -1
  556. package/lib/__tests__/TabNav.test.js +0 -49
  557. package/lib/__tests__/Text.test.d.ts +0 -1
  558. package/lib/__tests__/Text.test.js +0 -105
  559. package/lib/__tests__/TextInput.test.d.ts +0 -1
  560. package/lib/__tests__/TextInput.test.js +0 -78
  561. package/lib/__tests__/TextInputWithTokens.test.d.ts +0 -1
  562. package/lib/__tests__/TextInputWithTokens.test.js +0 -581
  563. package/lib/__tests__/ThemeProvider.test.d.ts +0 -1
  564. package/lib/__tests__/ThemeProvider.test.js +0 -444
  565. package/lib/__tests__/Timeline.test.d.ts +0 -1
  566. package/lib/__tests__/Timeline.test.js +0 -75
  567. package/lib/__tests__/Token.test.d.ts +0 -1
  568. package/lib/__tests__/Token.test.js +0 -180
  569. package/lib/__tests__/Tooltip.test.d.ts +0 -1
  570. package/lib/__tests__/Tooltip.test.js +0 -69
  571. package/lib/__tests__/Truncate.test.d.ts +0 -1
  572. package/lib/__tests__/Truncate.test.js +0 -63
  573. package/lib/__tests__/UnderlineNav.test.d.ts +0 -1
  574. package/lib/__tests__/UnderlineNav.test.js +0 -72
  575. package/lib/__tests__/UnderlineNavLink.test.d.ts +0 -1
  576. package/lib/__tests__/UnderlineNavLink.test.js +0 -51
  577. package/lib/__tests__/behaviors/anchoredPosition.test.d.ts +0 -1
  578. package/lib/__tests__/behaviors/anchoredPosition.test.js +0 -390
  579. package/lib/__tests__/behaviors/focusTrap.test.d.ts +0 -1
  580. package/lib/__tests__/behaviors/focusTrap.test.js +0 -234
  581. package/lib/__tests__/behaviors/focusZone.test.d.ts +0 -1
  582. package/lib/__tests__/behaviors/focusZone.test.js +0 -570
  583. package/lib/__tests__/behaviors/iterateFocusableElements.test.d.ts +0 -1
  584. package/lib/__tests__/behaviors/iterateFocusableElements.test.js +0 -55
  585. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +0 -1
  586. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +0 -226
  587. package/lib/__tests__/filterObject.test.d.ts +0 -1
  588. package/lib/__tests__/filterObject.test.js +0 -30
  589. package/lib/__tests__/hooks/useAnchoredPosition.test.d.ts +0 -1
  590. package/lib/__tests__/hooks/useAnchoredPosition.test.js +0 -54
  591. package/lib/__tests__/hooks/useOnEscapePress.test.d.ts +0 -1
  592. package/lib/__tests__/hooks/useOnEscapePress.test.js +0 -32
  593. package/lib/__tests__/hooks/useOnOutsideClick.test.d.ts +0 -1
  594. package/lib/__tests__/hooks/useOnOutsideClick.test.js +0 -87
  595. package/lib/__tests__/hooks/useOpenAndCloseFocus.test.d.ts +0 -1
  596. package/lib/__tests__/hooks/useOpenAndCloseFocus.test.js +0 -60
  597. package/lib/__tests__/hooks/useProvidedStateOrCreate.test.d.ts +0 -1
  598. package/lib/__tests__/hooks/useProvidedStateOrCreate.test.js +0 -45
  599. package/lib/__tests__/theme.test.d.ts +0 -1
  600. package/lib/__tests__/theme.test.js +0 -36
  601. package/lib/__tests__/themeGet.test.d.ts +0 -1
  602. package/lib/__tests__/themeGet.test.js +0 -25
  603. package/lib/__tests__/useSafeTimeout.test.d.ts +0 -1
  604. package/lib/__tests__/useSafeTimeout.test.js +0 -45
  605. package/lib/stories/ActionList.stories.js +0 -454
  606. package/lib/stories/ActionMenu.stories.js +0 -350
  607. package/lib/stories/AnchoredOverlay.stories.js +0 -127
  608. package/lib/stories/Autocomplete.stories.js +0 -619
  609. package/lib/stories/AvatarStack.stories.js +0 -49
  610. package/lib/stories/Button.stories.js +0 -125
  611. package/lib/stories/ConfirmationDialog.stories.js +0 -111
  612. package/lib/stories/Dialog.stories.js +0 -265
  613. package/lib/stories/DropdownMenu.stories.js +0 -122
  614. package/lib/stories/IssueLabelToken.stories.js +0 -165
  615. package/lib/stories/Overlay.stories.js +0 -204
  616. package/lib/stories/Portal.stories.js +0 -104
  617. package/lib/stories/ProfileToken.stories.js +0 -162
  618. package/lib/stories/SelectPanel.stories.js +0 -399
  619. package/lib/stories/TextInputWithTokens.stories.js +0 -252
  620. package/lib/stories/ThemeProvider.stories.js +0 -102
  621. package/lib/stories/Token.stories.js +0 -159
  622. package/lib/stories/useAnchoredPosition.stories.js +0 -351
  623. package/lib/stories/useFocusTrap.stories.js +0 -356
  624. package/lib/stories/useFocusZone.stories.js +0 -599
  625. package/lib-esm/__tests__/ActionList.test.d.ts +0 -1
  626. package/lib-esm/__tests__/ActionList.test.js +0 -57
  627. package/lib-esm/__tests__/ActionList.types.test.d.ts +0 -6
  628. package/lib-esm/__tests__/ActionList.types.test.js +0 -45
  629. package/lib-esm/__tests__/ActionMenu.test.d.ts +0 -1
  630. package/lib-esm/__tests__/ActionMenu.test.js +0 -139
  631. package/lib-esm/__tests__/AnchoredOverlay.test.d.ts +0 -1
  632. package/lib-esm/__tests__/AnchoredOverlay.test.js +0 -134
  633. package/lib-esm/__tests__/Autocomplete.test.d.ts +0 -1
  634. package/lib-esm/__tests__/Autocomplete.test.js +0 -494
  635. package/lib-esm/__tests__/Avatar.test.d.ts +0 -1
  636. package/lib-esm/__tests__/Avatar.test.js +0 -56
  637. package/lib-esm/__tests__/AvatarStack.test.d.ts +0 -1
  638. package/lib-esm/__tests__/AvatarStack.test.js +0 -58
  639. package/lib-esm/__tests__/BorderBox.test.d.ts +0 -1
  640. package/lib-esm/__tests__/BorderBox.test.js +0 -47
  641. package/lib-esm/__tests__/Box.test.d.ts +0 -1
  642. package/lib-esm/__tests__/Box.test.js +0 -67
  643. package/lib-esm/__tests__/BranchName.test.d.ts +0 -1
  644. package/lib-esm/__tests__/BranchName.test.js +0 -26
  645. package/lib-esm/__tests__/Breadcrumbs.test.d.ts +0 -1
  646. package/lib-esm/__tests__/Breadcrumbs.test.js +0 -27
  647. package/lib-esm/__tests__/BreadcrumbsItem.test.d.ts +0 -1
  648. package/lib-esm/__tests__/BreadcrumbsItem.test.js +0 -39
  649. package/lib-esm/__tests__/Button.test.d.ts +0 -1
  650. package/lib-esm/__tests__/Button.test.js +0 -133
  651. package/lib-esm/__tests__/Caret.test.d.ts +0 -1
  652. package/lib-esm/__tests__/Caret.test.js +0 -42
  653. package/lib-esm/__tests__/CircleBadge.test.d.ts +0 -1
  654. package/lib-esm/__tests__/CircleBadge.test.js +0 -70
  655. package/lib-esm/__tests__/CircleOcticon.test.d.ts +0 -1
  656. package/lib-esm/__tests__/CircleOcticon.test.js +0 -59
  657. package/lib-esm/__tests__/ConfirmationDialog.test.d.ts +0 -1
  658. package/lib-esm/__tests__/ConfirmationDialog.test.js +0 -113
  659. package/lib-esm/__tests__/CounterLabel.test.d.ts +0 -1
  660. package/lib-esm/__tests__/CounterLabel.test.js +0 -47
  661. package/lib-esm/__tests__/Details.test.d.ts +0 -1
  662. package/lib-esm/__tests__/Details.test.js +0 -107
  663. package/lib-esm/__tests__/Dialog.test.d.ts +0 -1
  664. package/lib-esm/__tests__/Dialog.test.js +0 -171
  665. package/lib-esm/__tests__/Dropdown.test.d.ts +0 -1
  666. package/lib-esm/__tests__/Dropdown.test.js +0 -53
  667. package/lib-esm/__tests__/DropdownMenu.test.d.ts +0 -1
  668. package/lib-esm/__tests__/DropdownMenu.test.js +0 -137
  669. package/lib-esm/__tests__/FilterList.test.d.ts +0 -1
  670. package/lib-esm/__tests__/FilterList.test.js +0 -26
  671. package/lib-esm/__tests__/FilterListItem.test.d.ts +0 -1
  672. package/lib-esm/__tests__/FilterListItem.test.js +0 -36
  673. package/lib-esm/__tests__/FilteredSearch.test.d.ts +0 -1
  674. package/lib-esm/__tests__/FilteredSearch.test.js +0 -26
  675. package/lib-esm/__tests__/Flash.test.d.ts +0 -1
  676. package/lib-esm/__tests__/Flash.test.js +0 -51
  677. package/lib-esm/__tests__/Flex.test.d.ts +0 -1
  678. package/lib-esm/__tests__/Flex.test.js +0 -64
  679. package/lib-esm/__tests__/FormGroup.test.d.ts +0 -1
  680. package/lib-esm/__tests__/FormGroup.test.js +0 -44
  681. package/lib-esm/__tests__/Grid.test.d.ts +0 -1
  682. package/lib-esm/__tests__/Grid.test.js +0 -94
  683. package/lib-esm/__tests__/Header.test.d.ts +0 -1
  684. package/lib-esm/__tests__/Header.test.js +0 -48
  685. package/lib-esm/__tests__/Heading.test.d.ts +0 -1
  686. package/lib-esm/__tests__/Heading.test.js +0 -99
  687. package/lib-esm/__tests__/KeyPaths.types.test.d.ts +0 -10
  688. package/lib-esm/__tests__/KeyPaths.types.test.js +0 -3
  689. package/lib-esm/__tests__/Label.test.d.ts +0 -1
  690. package/lib-esm/__tests__/Label.test.js +0 -36
  691. package/lib-esm/__tests__/LabelGroup.test.d.ts +0 -1
  692. package/lib-esm/__tests__/LabelGroup.test.js +0 -26
  693. package/lib-esm/__tests__/Link.test.d.ts +0 -1
  694. package/lib-esm/__tests__/Link.test.js +0 -60
  695. package/lib-esm/__tests__/Merge.types.test.d.ts +0 -30
  696. package/lib-esm/__tests__/Merge.types.test.js +0 -14
  697. package/lib-esm/__tests__/Overlay.test.d.ts +0 -1
  698. package/lib-esm/__tests__/Overlay.test.js +0 -123
  699. package/lib-esm/__tests__/Pagehead.test.d.ts +0 -1
  700. package/lib-esm/__tests__/Pagehead.test.js +0 -26
  701. package/lib-esm/__tests__/Pagination/Pagination.test.d.ts +0 -1
  702. package/lib-esm/__tests__/Pagination/Pagination.test.js +0 -35
  703. package/lib-esm/__tests__/Pagination/PaginationModel.test.d.ts +0 -1
  704. package/lib-esm/__tests__/Pagination/PaginationModel.test.js +0 -182
  705. package/lib-esm/__tests__/PointerBox.test.d.ts +0 -1
  706. package/lib-esm/__tests__/PointerBox.test.js +0 -36
  707. package/lib-esm/__tests__/Popover.test.d.ts +0 -1
  708. package/lib-esm/__tests__/Popover.test.js +0 -53
  709. package/lib-esm/__tests__/Portal.test.d.ts +0 -1
  710. package/lib-esm/__tests__/Portal.test.js +0 -104
  711. package/lib-esm/__tests__/Position.test.d.ts +0 -1
  712. package/lib-esm/__tests__/Position.test.js +0 -133
  713. package/lib-esm/__tests__/ProgressBar.test.d.ts +0 -1
  714. package/lib-esm/__tests__/ProgressBar.test.js +0 -58
  715. package/lib-esm/__tests__/SelectMenu.test.d.ts +0 -1
  716. package/lib-esm/__tests__/SelectMenu.test.js +0 -145
  717. package/lib-esm/__tests__/SelectPanel.test.d.ts +0 -1
  718. package/lib-esm/__tests__/SelectPanel.test.js +0 -65
  719. package/lib-esm/__tests__/SideNav.test.d.ts +0 -1
  720. package/lib-esm/__tests__/SideNav.test.js +0 -60
  721. package/lib-esm/__tests__/Spinner.test.d.ts +0 -1
  722. package/lib-esm/__tests__/Spinner.test.js +0 -43
  723. package/lib-esm/__tests__/StateLabel.test.d.ts +0 -1
  724. package/lib-esm/__tests__/StateLabel.test.js +0 -61
  725. package/lib-esm/__tests__/StyledOcticon.test.d.ts +0 -1
  726. package/lib-esm/__tests__/StyledOcticon.test.js +0 -29
  727. package/lib-esm/__tests__/SubNav.test.d.ts +0 -1
  728. package/lib-esm/__tests__/SubNav.test.js +0 -50
  729. package/lib-esm/__tests__/SubNavLink.test.d.ts +0 -1
  730. package/lib-esm/__tests__/SubNavLink.test.js +0 -39
  731. package/lib-esm/__tests__/TabNav.test.d.ts +0 -1
  732. package/lib-esm/__tests__/TabNav.test.js +0 -39
  733. package/lib-esm/__tests__/Text.test.d.ts +0 -1
  734. package/lib-esm/__tests__/Text.test.js +0 -93
  735. package/lib-esm/__tests__/TextInput.test.d.ts +0 -1
  736. package/lib-esm/__tests__/TextInput.test.js +0 -68
  737. package/lib-esm/__tests__/TextInputWithTokens.test.d.ts +0 -1
  738. package/lib-esm/__tests__/TextInputWithTokens.test.js +0 -520
  739. package/lib-esm/__tests__/ThemeProvider.test.d.ts +0 -1
  740. package/lib-esm/__tests__/ThemeProvider.test.js +0 -408
  741. package/lib-esm/__tests__/Timeline.test.d.ts +0 -1
  742. package/lib-esm/__tests__/Timeline.test.js +0 -65
  743. package/lib-esm/__tests__/Token.test.d.ts +0 -1
  744. package/lib-esm/__tests__/Token.test.js +0 -166
  745. package/lib-esm/__tests__/Tooltip.test.d.ts +0 -1
  746. package/lib-esm/__tests__/Tooltip.test.js +0 -59
  747. package/lib-esm/__tests__/Truncate.test.d.ts +0 -1
  748. package/lib-esm/__tests__/Truncate.test.js +0 -53
  749. package/lib-esm/__tests__/UnderlineNav.test.d.ts +0 -1
  750. package/lib-esm/__tests__/UnderlineNav.test.js +0 -60
  751. package/lib-esm/__tests__/UnderlineNavLink.test.d.ts +0 -1
  752. package/lib-esm/__tests__/UnderlineNavLink.test.js +0 -41
  753. package/lib-esm/__tests__/behaviors/anchoredPosition.test.d.ts +0 -1
  754. package/lib-esm/__tests__/behaviors/anchoredPosition.test.js +0 -388
  755. package/lib-esm/__tests__/behaviors/focusTrap.test.d.ts +0 -1
  756. package/lib-esm/__tests__/behaviors/focusTrap.test.js +0 -227
  757. package/lib-esm/__tests__/behaviors/focusZone.test.d.ts +0 -1
  758. package/lib-esm/__tests__/behaviors/focusZone.test.js +0 -487
  759. package/lib-esm/__tests__/behaviors/iterateFocusableElements.test.d.ts +0 -1
  760. package/lib-esm/__tests__/behaviors/iterateFocusableElements.test.js +0 -48
  761. package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +0 -1
  762. package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.js +0 -224
  763. package/lib-esm/__tests__/filterObject.test.d.ts +0 -1
  764. package/lib-esm/__tests__/filterObject.test.js +0 -27
  765. package/lib-esm/__tests__/hooks/useAnchoredPosition.test.d.ts +0 -1
  766. package/lib-esm/__tests__/hooks/useAnchoredPosition.test.js +0 -46
  767. package/lib-esm/__tests__/hooks/useOnEscapePress.test.d.ts +0 -1
  768. package/lib-esm/__tests__/hooks/useOnEscapePress.test.js +0 -23
  769. package/lib-esm/__tests__/hooks/useOnOutsideClick.test.d.ts +0 -1
  770. package/lib-esm/__tests__/hooks/useOnOutsideClick.test.js +0 -68
  771. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.test.d.ts +0 -1
  772. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.test.js +0 -52
  773. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.test.d.ts +0 -1
  774. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.test.js +0 -36
  775. package/lib-esm/__tests__/theme.test.d.ts +0 -1
  776. package/lib-esm/__tests__/theme.test.js +0 -33
  777. package/lib-esm/__tests__/themeGet.test.d.ts +0 -1
  778. package/lib-esm/__tests__/themeGet.test.js +0 -22
  779. package/lib-esm/__tests__/useSafeTimeout.test.d.ts +0 -1
  780. package/lib-esm/__tests__/useSafeTimeout.test.js +0 -39
  781. package/lib-esm/stories/ActionList.stories.js +0 -395
  782. package/lib-esm/stories/ActionMenu.stories.js +0 -305
  783. package/lib-esm/stories/AnchoredOverlay.stories.js +0 -101
  784. package/lib-esm/stories/Autocomplete.stories.js +0 -560
  785. package/lib-esm/stories/AvatarStack.stories.js +0 -32
  786. package/lib-esm/stories/Button.stories.js +0 -86
  787. package/lib-esm/stories/ConfirmationDialog.stories.js +0 -86
  788. package/lib-esm/stories/Dialog.stories.js +0 -240
  789. package/lib-esm/stories/DropdownMenu.stories.js +0 -94
  790. package/lib-esm/stories/IssueLabelToken.stories.js +0 -139
  791. package/lib-esm/stories/Overlay.stories.js +0 -173
  792. package/lib-esm/stories/Portal.stories.js +0 -68
  793. package/lib-esm/stories/ProfileToken.stories.js +0 -136
  794. package/lib-esm/stories/SelectPanel.stories.js +0 -334
  795. package/lib-esm/stories/TextInputWithTokens.stories.js +0 -210
  796. package/lib-esm/stories/ThemeProvider.stories.js +0 -83
  797. package/lib-esm/stories/Token.stories.js +0 -133
  798. package/lib-esm/stories/useAnchoredPosition.stories.js +0 -313
  799. package/lib-esm/stories/useFocusTrap.stories.js +0 -309
  800. package/lib-esm/stories/useFocusZone.stories.js +0 -554
  801. package/migrating.md +0 -250
  802. package/now.json +0 -17
  803. package/package-lock.json +0 -66357
  804. package/rollup.config.js +0 -36
  805. package/script/build +0 -19
  806. package/script/build-storybook +0 -10
  807. package/script/setup +0 -12
  808. package/src/ActionList/Divider.tsx +0 -25
  809. package/src/ActionList/Group.tsx +0 -45
  810. package/src/ActionList/Header.tsx +0 -74
  811. package/src/ActionList/Item.tsx +0 -496
  812. package/src/ActionList/List.tsx +0 -258
  813. package/src/ActionList/index.ts +0 -21
  814. package/src/ActionMenu.tsx +0 -106
  815. package/src/AnchoredOverlay/AnchoredOverlay.tsx +0 -191
  816. package/src/AnchoredOverlay/index.ts +0 -2
  817. package/src/Autocomplete/Autocomplete.tsx +0 -103
  818. package/src/Autocomplete/AutocompleteContext.tsx +0 -19
  819. package/src/Autocomplete/AutocompleteInput.tsx +0 -179
  820. package/src/Autocomplete/AutocompleteMenu.tsx +0 -341
  821. package/src/Autocomplete/AutocompleteOverlay.tsx +0 -68
  822. package/src/Autocomplete/index.ts +0 -2
  823. package/src/Avatar.tsx +0 -46
  824. package/src/AvatarPair.tsx +0 -35
  825. package/src/BaseStyles.tsx +0 -53
  826. package/src/BorderBox.tsx +0 -18
  827. package/src/Box.tsx +0 -54
  828. package/src/BranchName.tsx +0 -19
  829. package/src/Breadcrumbs.tsx +0 -101
  830. package/src/Button/Button.tsx +0 -40
  831. package/src/Button/ButtonBase.tsx +0 -43
  832. package/src/Button/ButtonClose.tsx +0 -40
  833. package/src/Button/ButtonDanger.tsx +0 -43
  834. package/src/Button/ButtonGroup.tsx +0 -55
  835. package/src/Button/ButtonInvisible.tsx +0 -32
  836. package/src/Button/ButtonOutline.tsx +0 -43
  837. package/src/Button/ButtonPrimary.tsx +0 -41
  838. package/src/Button/ButtonTableList.tsx +0 -58
  839. package/src/Button/index.ts +0 -16
  840. package/src/Caret.tsx +0 -133
  841. package/src/CircleBadge.tsx +0 -55
  842. package/src/CircleOcticon.tsx +0 -37
  843. package/src/CounterLabel.tsx +0 -52
  844. package/src/Details.tsx +0 -23
  845. package/src/Dialog/ConfirmationDialog.tsx +0 -184
  846. package/src/Dialog/Dialog.tsx +0 -432
  847. package/src/Dialog.tsx +0 -149
  848. package/src/Dropdown.tsx +0 -158
  849. package/src/DropdownMenu/DropdownButton.tsx +0 -15
  850. package/src/DropdownMenu/DropdownMenu.tsx +0 -115
  851. package/src/DropdownMenu/index.ts +0 -4
  852. package/src/DropdownStyles.ts +0 -128
  853. package/src/FilterList.tsx +0 -81
  854. package/src/FilteredActionList/FilteredActionList.tsx +0 -142
  855. package/src/FilteredActionList/index.ts +0 -2
  856. package/src/FilteredSearch.tsx +0 -28
  857. package/src/Flash.tsx +0 -77
  858. package/src/Flex.tsx +0 -15
  859. package/src/FormGroup.tsx +0 -27
  860. package/src/Grid.tsx +0 -15
  861. package/src/Header.tsx +0 -84
  862. package/src/Heading.tsx +0 -21
  863. package/src/Label.tsx +0 -75
  864. package/src/LabelGroup.tsx +0 -18
  865. package/src/Link.tsx +0 -46
  866. package/src/Overlay.tsx +0 -197
  867. package/src/Pagehead.tsx +0 -17
  868. package/src/Pagination/Pagination.tsx +0 -214
  869. package/src/Pagination/index.ts +0 -4
  870. package/src/Pagination/model.tsx +0 -187
  871. package/src/PointerBox.tsx +0 -31
  872. package/src/Portal/Portal.tsx +0 -96
  873. package/src/Portal/index.ts +0 -5
  874. package/src/Position.tsx +0 -63
  875. package/src/ProgressBar.tsx +0 -52
  876. package/src/SelectMenu/SelectMenu.tsx +0 -125
  877. package/src/SelectMenu/SelectMenuContext.tsx +0 -9
  878. package/src/SelectMenu/SelectMenuDivider.tsx +0 -25
  879. package/src/SelectMenu/SelectMenuFilter.tsx +0 -51
  880. package/src/SelectMenu/SelectMenuFooter.tsx +0 -28
  881. package/src/SelectMenu/SelectMenuHeader.tsx +0 -50
  882. package/src/SelectMenu/SelectMenuItem.tsx +0 -137
  883. package/src/SelectMenu/SelectMenuList.tsx +0 -42
  884. package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +0 -24
  885. package/src/SelectMenu/SelectMenuModal.tsx +0 -121
  886. package/src/SelectMenu/SelectMenuTab.tsx +0 -88
  887. package/src/SelectMenu/SelectMenuTabPanel.tsx +0 -30
  888. package/src/SelectMenu/SelectMenuTabs.tsx +0 -44
  889. package/src/SelectMenu/hooks/useKeyboardNav.js +0 -90
  890. package/src/SelectMenu/index.ts +0 -15
  891. package/src/SelectPanel/SelectPanel.tsx +0 -173
  892. package/src/SelectPanel/index.ts +0 -2
  893. package/src/SideNav.tsx +0 -193
  894. package/src/Spinner.tsx +0 -59
  895. package/src/StateLabel.tsx +0 -102
  896. package/src/StyledOcticon.tsx +0 -24
  897. package/src/SubNav.tsx +0 -129
  898. package/src/TabNav.tsx +0 -77
  899. package/src/Text.tsx +0 -13
  900. package/src/TextInput.tsx +0 -68
  901. package/src/TextInputWithTokens.tsx +0 -351
  902. package/src/ThemeProvider.tsx +0 -176
  903. package/src/Timeline.tsx +0 -141
  904. package/src/Token/AvatarToken.tsx +0 -54
  905. package/src/Token/IssueLabelToken.tsx +0 -150
  906. package/src/Token/Token.tsx +0 -126
  907. package/src/Token/TokenBase.tsx +0 -129
  908. package/src/Token/_RemoveTokenButton.tsx +0 -111
  909. package/src/Token/index.ts +0 -3
  910. package/src/Truncate.tsx +0 -36
  911. package/src/UnderlineNav.tsx +0 -110
  912. package/src/_TextInputWrapper.tsx +0 -106
  913. package/src/_UnstyledTextInput.tsx +0 -19
  914. package/src/__tests__/.eslintrc.json +0 -11
  915. package/src/__tests__/ActionList.test.tsx +0 -53
  916. package/src/__tests__/ActionList.types.test.tsx +0 -51
  917. package/src/__tests__/ActionMenu.test.tsx +0 -136
  918. package/src/__tests__/AnchoredOverlay.test.tsx +0 -150
  919. package/src/__tests__/Autocomplete.test.tsx +0 -444
  920. package/src/__tests__/Avatar.test.tsx +0 -44
  921. package/src/__tests__/AvatarStack.test.tsx +0 -48
  922. package/src/__tests__/BorderBox.test.tsx +0 -43
  923. package/src/__tests__/Box.test.tsx +0 -42
  924. package/src/__tests__/BranchName.test.tsx +0 -26
  925. package/src/__tests__/Breadcrumbs.test.tsx +0 -27
  926. package/src/__tests__/BreadcrumbsItem.test.tsx +0 -31
  927. package/src/__tests__/Button.test.tsx +0 -128
  928. package/src/__tests__/Caret.test.tsx +0 -36
  929. package/src/__tests__/CircleBadge.test.tsx +0 -66
  930. package/src/__tests__/CircleOcticon.test.tsx +0 -50
  931. package/src/__tests__/ConfirmationDialog.test.tsx +0 -120
  932. package/src/__tests__/CounterLabel.test.tsx +0 -50
  933. package/src/__tests__/Details.test.tsx +0 -115
  934. package/src/__tests__/Dialog.test.tsx +0 -155
  935. package/src/__tests__/Dropdown.test.tsx +0 -53
  936. package/src/__tests__/DropdownMenu.test.tsx +0 -136
  937. package/src/__tests__/FilterList.test.tsx +0 -26
  938. package/src/__tests__/FilterListItem.test.tsx +0 -31
  939. package/src/__tests__/FilteredSearch.test.tsx +0 -26
  940. package/src/__tests__/Flash.test.tsx +0 -45
  941. package/src/__tests__/Flex.test.tsx +0 -58
  942. package/src/__tests__/FormGroup.test.tsx +0 -38
  943. package/src/__tests__/Grid.test.tsx +0 -82
  944. package/src/__tests__/Header.test.tsx +0 -49
  945. package/src/__tests__/Heading.test.tsx +0 -91
  946. package/src/__tests__/KeyPaths.types.test.ts +0 -13
  947. package/src/__tests__/Label.test.tsx +0 -34
  948. package/src/__tests__/LabelGroup.test.tsx +0 -30
  949. package/src/__tests__/Link.test.tsx +0 -47
  950. package/src/__tests__/Merge.types.test.ts +0 -39
  951. package/src/__tests__/Overlay.test.tsx +0 -103
  952. package/src/__tests__/Pagehead.test.tsx +0 -23
  953. package/src/__tests__/Pagination/Pagination.test.tsx +0 -30
  954. package/src/__tests__/Pagination/PaginationModel.test.tsx +0 -133
  955. package/src/__tests__/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -184
  956. package/src/__tests__/PointerBox.test.tsx +0 -34
  957. package/src/__tests__/Popover.test.tsx +0 -68
  958. package/src/__tests__/Portal.test.tsx +0 -103
  959. package/src/__tests__/Position.test.tsx +0 -117
  960. package/src/__tests__/ProgressBar.test.tsx +0 -40
  961. package/src/__tests__/SelectMenu.test.tsx +0 -142
  962. package/src/__tests__/SelectPanel.test.tsx +0 -63
  963. package/src/__tests__/SideNav.test.tsx +0 -62
  964. package/src/__tests__/Spinner.test.tsx +0 -42
  965. package/src/__tests__/StateLabel.test.tsx +0 -48
  966. package/src/__tests__/StyledOcticon.test.tsx +0 -26
  967. package/src/__tests__/SubNav.test.tsx +0 -50
  968. package/src/__tests__/SubNavLink.test.tsx +0 -31
  969. package/src/__tests__/TabNav.test.tsx +0 -32
  970. package/src/__tests__/Text.test.tsx +0 -78
  971. package/src/__tests__/TextInput.test.tsx +0 -49
  972. package/src/__tests__/TextInputWithTokens.test.tsx +0 -432
  973. package/src/__tests__/ThemeProvider.test.tsx +0 -441
  974. package/src/__tests__/Timeline.test.tsx +0 -58
  975. package/src/__tests__/Token.test.tsx +0 -118
  976. package/src/__tests__/Tooltip.test.tsx +0 -52
  977. package/src/__tests__/Truncate.test.tsx +0 -43
  978. package/src/__tests__/UnderlineNav.test.tsx +0 -58
  979. package/src/__tests__/UnderlineNavLink.test.tsx +0 -31
  980. package/src/__tests__/__snapshots__/ActionList.test.tsx.snap +0 -223
  981. package/src/__tests__/__snapshots__/ActionMenu.test.tsx.snap +0 -80
  982. package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +0 -332
  983. package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +0 -3421
  984. package/src/__tests__/__snapshots__/Avatar.test.tsx.snap +0 -19
  985. package/src/__tests__/__snapshots__/AvatarStack.test.tsx.snap +0 -377
  986. package/src/__tests__/__snapshots__/BorderBox.test.tsx.snap +0 -14
  987. package/src/__tests__/__snapshots__/Box.test.tsx.snap +0 -201
  988. package/src/__tests__/__snapshots__/BranchName.test.tsx.snap +0 -17
  989. package/src/__tests__/__snapshots__/Breadcrumbs.test.tsx.snap +0 -29
  990. package/src/__tests__/__snapshots__/BreadcrumbsItem.test.tsx.snap +0 -79
  991. package/src/__tests__/__snapshots__/Button.test.tsx.snap +0 -840
  992. package/src/__tests__/__snapshots__/Caret.test.tsx.snap +0 -373
  993. package/src/__tests__/__snapshots__/CircleBadge.test.tsx.snap +0 -141
  994. package/src/__tests__/__snapshots__/CircleOcticon.test.tsx.snap +0 -64
  995. package/src/__tests__/__snapshots__/ConfirmationDialog.test.tsx.snap +0 -89
  996. package/src/__tests__/__snapshots__/CounterLabel.test.tsx.snap +0 -22
  997. package/src/__tests__/__snapshots__/Details.test.tsx.snap +0 -15
  998. package/src/__tests__/__snapshots__/Dialog.test.tsx.snap +0 -200
  999. package/src/__tests__/__snapshots__/Dropdown.test.tsx.snap +0 -249
  1000. package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +0 -106
  1001. package/src/__tests__/__snapshots__/FilterList.test.tsx.snap +0 -13
  1002. package/src/__tests__/__snapshots__/FilterListItem.test.tsx.snap +0 -80
  1003. package/src/__tests__/__snapshots__/FilteredSearch.test.tsx.snap +0 -32
  1004. package/src/__tests__/__snapshots__/Flash.test.tsx.snap +0 -32
  1005. package/src/__tests__/__snapshots__/Flex.test.tsx.snap +0 -130
  1006. package/src/__tests__/__snapshots__/FormGroup.test.tsx.snap +0 -25
  1007. package/src/__tests__/__snapshots__/Grid.test.tsx.snap +0 -178
  1008. package/src/__tests__/__snapshots__/Header.test.tsx.snap +0 -79
  1009. package/src/__tests__/__snapshots__/Heading.test.tsx.snap +0 -13
  1010. package/src/__tests__/__snapshots__/Label.test.tsx.snap +0 -74
  1011. package/src/__tests__/__snapshots__/LabelGroup.test.tsx.snap +0 -15
  1012. package/src/__tests__/__snapshots__/Link.test.tsx.snap +0 -213
  1013. package/src/__tests__/__snapshots__/Pagehead.test.tsx.snap +0 -15
  1014. package/src/__tests__/__snapshots__/PointerBox.test.tsx.snap +0 -174
  1015. package/src/__tests__/__snapshots__/Popover.test.tsx.snap +0 -4687
  1016. package/src/__tests__/__snapshots__/Position.test.tsx.snap +0 -44
  1017. package/src/__tests__/__snapshots__/ProgressBar.test.tsx.snap +0 -53
  1018. package/src/__tests__/__snapshots__/SelectMenu.test.tsx.snap +0 -469
  1019. package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +0 -123
  1020. package/src/__tests__/__snapshots__/SideNav.test.tsx.snap +0 -143
  1021. package/src/__tests__/__snapshots__/Spinner.test.tsx.snap +0 -33
  1022. package/src/__tests__/__snapshots__/StateLabel.test.tsx.snap +0 -388
  1023. package/src/__tests__/__snapshots__/StyledOcticon.test.tsx.snap +0 -25
  1024. package/src/__tests__/__snapshots__/SubNav.test.tsx.snap +0 -44
  1025. package/src/__tests__/__snapshots__/SubNavLink.test.tsx.snap +0 -199
  1026. package/src/__tests__/__snapshots__/TabNav.test.tsx.snap +0 -58
  1027. package/src/__tests__/__snapshots__/Text.test.tsx.snap +0 -7
  1028. package/src/__tests__/__snapshots__/TextInput.test.tsx.snap +0 -446
  1029. package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +0 -5979
  1030. package/src/__tests__/__snapshots__/ThemeProvider.test.tsx.snap +0 -15
  1031. package/src/__tests__/__snapshots__/Timeline.test.tsx.snap +0 -159
  1032. package/src/__tests__/__snapshots__/Token.test.tsx.snap +0 -3794
  1033. package/src/__tests__/__snapshots__/Tooltip.test.tsx.snap +0 -227
  1034. package/src/__tests__/__snapshots__/Truncate.test.tsx.snap +0 -17
  1035. package/src/__tests__/__snapshots__/UnderlineNav.test.tsx.snap +0 -59
  1036. package/src/__tests__/__snapshots__/UnderlineNavLink.test.tsx.snap +0 -130
  1037. package/src/__tests__/behaviors/anchoredPosition.test.ts +0 -295
  1038. package/src/__tests__/behaviors/focusTrap.test.tsx +0 -236
  1039. package/src/__tests__/behaviors/focusZone.test.tsx +0 -549
  1040. package/src/__tests__/behaviors/iterateFocusableElements.test.tsx +0 -61
  1041. package/src/__tests__/behaviors/scrollIntoViewingArea.test.ts +0 -195
  1042. package/src/__tests__/filterObject.test.ts +0 -54
  1043. package/src/__tests__/hooks/useAnchoredPosition.test.tsx +0 -31
  1044. package/src/__tests__/hooks/useOnEscapePress.test.tsx +0 -16
  1045. package/src/__tests__/hooks/useOnOutsideClick.test.tsx +0 -48
  1046. package/src/__tests__/hooks/useOpenAndCloseFocus.test.tsx +0 -48
  1047. package/src/__tests__/hooks/useProvidedStateOrCreate.test.tsx +0 -39
  1048. package/src/__tests__/theme.test.ts +0 -41
  1049. package/src/__tests__/themeGet.test.ts +0 -15
  1050. package/src/__tests__/useSafeTimeout.test.tsx +0 -36
  1051. package/src/behaviors/anchoredPosition.ts +0 -442
  1052. package/src/behaviors/focusTrap.ts +0 -184
  1053. package/src/behaviors/focusZone.ts +0 -713
  1054. package/src/behaviors/scrollIntoViewingArea.ts +0 -27
  1055. package/src/constants.ts +0 -62
  1056. package/src/hooks/index.ts +0 -11
  1057. package/src/hooks/useAnchoredPosition.ts +0 -53
  1058. package/src/hooks/useCombinedRefs.ts +0 -40
  1059. package/src/hooks/useDetails.tsx +0 -54
  1060. package/src/hooks/useDialog.ts +0 -121
  1061. package/src/hooks/useFocusTrap.ts +0 -80
  1062. package/src/hooks/useFocusZone.ts +0 -64
  1063. package/src/hooks/useOnEscapePress.ts +0 -63
  1064. package/src/hooks/useOnOutsideClick.tsx +0 -82
  1065. package/src/hooks/useOpenAndCloseFocus.ts +0 -32
  1066. package/src/hooks/useOverlay.tsx +0 -34
  1067. package/src/hooks/useProvidedRefOrCreate.ts +0 -14
  1068. package/src/hooks/useProvidedStateOrCreate.ts +0 -27
  1069. package/src/hooks/useRenderForcingRef.ts +0 -22
  1070. package/src/hooks/useResizeObserver.ts +0 -11
  1071. package/src/hooks/useSafeTimeout.ts +0 -38
  1072. package/src/hooks/useScrollFlash.ts +0 -21
  1073. package/src/index.ts +0 -170
  1074. package/src/polyfills/eventListenerSignal.ts +0 -66
  1075. package/src/stories/ActionList.stories.tsx +0 -436
  1076. package/src/stories/ActionMenu.stories.tsx +0 -334
  1077. package/src/stories/AnchoredOverlay.stories.tsx +0 -117
  1078. package/src/stories/Autocomplete.stories.tsx +0 -655
  1079. package/src/stories/AvatarStack.stories.tsx +0 -37
  1080. package/src/stories/Button.stories.tsx +0 -92
  1081. package/src/stories/ConfirmationDialog.stories.tsx +0 -105
  1082. package/src/stories/Dialog.stories.tsx +0 -240
  1083. package/src/stories/DropdownMenu.stories.tsx +0 -84
  1084. package/src/stories/IssueLabelToken.stories.tsx +0 -138
  1085. package/src/stories/Overlay.stories.tsx +0 -213
  1086. package/src/stories/Portal.stories.tsx +0 -109
  1087. package/src/stories/ProfileToken.stories.tsx +0 -129
  1088. package/src/stories/SelectPanel.stories.tsx +0 -353
  1089. package/src/stories/TextInputWithTokens.stories.tsx +0 -155
  1090. package/src/stories/ThemeProvider.stories.tsx +0 -104
  1091. package/src/stories/Token.stories.tsx +0 -126
  1092. package/src/stories/useAnchoredPosition.stories.tsx +0 -332
  1093. package/src/stories/useFocusTrap.stories.tsx +0 -400
  1094. package/src/stories/useFocusZone.stories.tsx +0 -663
  1095. package/src/sx.ts +0 -21
  1096. package/src/theme-preval.js +0 -79
  1097. package/src/theme.ts +0 -89
  1098. package/src/utils/deprecate.tsx +0 -73
  1099. package/src/utils/isNumeric.tsx +0 -4
  1100. package/src/utils/iterateFocusableElements.ts +0 -121
  1101. package/src/utils/ssr.tsx +0 -1
  1102. package/src/utils/test-deprecations.tsx +0 -19
  1103. package/src/utils/test-matchers.tsx +0 -109
  1104. package/src/utils/testing.tsx +0 -242
  1105. package/src/utils/theme.js +0 -64
  1106. package/src/utils/types/AriaRole.ts +0 -71
  1107. package/src/utils/types/ComponentProps.ts +0 -13
  1108. package/src/utils/types/Flatten.ts +0 -4
  1109. package/src/utils/types/KeyPaths.ts +0 -4
  1110. package/src/utils/types/MandateProps.ts +0 -19
  1111. package/src/utils/types/Merge.ts +0 -20
  1112. package/src/utils/types/index.ts +0 -5
  1113. package/src/utils/uniqueId.ts +0 -6
  1114. package/src/utils/userAgent.ts +0 -7
  1115. package/stats.html +0 -3279
  1116. package/tsconfig.build.json +0 -7
  1117. package/tsconfig.json +0 -20
@@ -1,100 +1,90 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.focusZone = focusZone;
7
- exports.hasActiveDescendantAttribute = exports.activeDescendantActivatedIndirectly = exports.activeDescendantActivatedDirectly = exports.isActiveDescendantAttribute = exports.FocusKeys = void 0;
8
-
9
- var _iterateFocusableElements = require("../utils/iterateFocusableElements");
10
-
11
- var _eventListenerSignal = require("../polyfills/eventListenerSignal");
12
-
13
- var _userAgent = require("../utils/userAgent");
14
-
15
- var _uniqueId = require("../utils/uniqueId");
16
-
17
- (0, _eventListenerSignal.polyfill)();
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.focusZone = exports.hasActiveDescendantAttribute = exports.activeDescendantActivatedIndirectly = exports.activeDescendantActivatedDirectly = exports.isActiveDescendantAttribute = exports.FocusKeys = void 0;
4
+ const iterateFocusableElements_1 = require("../utils/iterateFocusableElements");
5
+ const eventListenerSignal_1 = require("../polyfills/eventListenerSignal");
6
+ const userAgent_1 = require("../utils/userAgent");
7
+ const uniqueId_1 = require("../utils/uniqueId");
8
+ eventListenerSignal_1.polyfill();
18
9
  // eslint-disable-next-line no-shadow
19
- let FocusKeys;
20
- exports.FocusKeys = FocusKeys;
21
-
10
+ var FocusKeys;
22
11
  (function (FocusKeys) {
23
- FocusKeys[FocusKeys["ArrowHorizontal"] = 1] = "ArrowHorizontal";
24
- FocusKeys[FocusKeys["ArrowVertical"] = 2] = "ArrowVertical";
25
- FocusKeys[FocusKeys["JK"] = 4] = "JK";
26
- FocusKeys[FocusKeys["HL"] = 8] = "HL";
27
- FocusKeys[FocusKeys["HomeAndEnd"] = 16] = "HomeAndEnd";
28
- FocusKeys[FocusKeys["PageUpDown"] = 256] = "PageUpDown";
29
- FocusKeys[FocusKeys["WS"] = 32] = "WS";
30
- FocusKeys[FocusKeys["AD"] = 64] = "AD";
31
- FocusKeys[FocusKeys["Tab"] = 128] = "Tab";
32
- FocusKeys[FocusKeys["ArrowAll"] = FocusKeys.ArrowHorizontal | FocusKeys.ArrowVertical] = "ArrowAll";
33
- FocusKeys[FocusKeys["HJKL"] = FocusKeys.HL | FocusKeys.JK] = "HJKL";
34
- FocusKeys[FocusKeys["WASD"] = FocusKeys.WS | FocusKeys.AD] = "WASD";
35
- FocusKeys[FocusKeys["All"] = FocusKeys.ArrowAll | FocusKeys.HJKL | FocusKeys.HomeAndEnd | FocusKeys.PageUpDown | FocusKeys.WASD | FocusKeys.Tab] = "All";
36
- })(FocusKeys || (exports.FocusKeys = FocusKeys = {}));
37
-
12
+ // Left and right arrow keys (previous and next, respectively)
13
+ FocusKeys[FocusKeys["ArrowHorizontal"] = 1] = "ArrowHorizontal";
14
+ // Up and down arrow keys (previous and next, respectively)
15
+ FocusKeys[FocusKeys["ArrowVertical"] = 2] = "ArrowVertical";
16
+ // The "J" and "K" keys (next and previous, respectively)
17
+ FocusKeys[FocusKeys["JK"] = 4] = "JK";
18
+ // The "H" and "L" keys (previous and next, respectively)
19
+ FocusKeys[FocusKeys["HL"] = 8] = "HL";
20
+ // The Home and End keys (previous and next, respectively, to end)
21
+ FocusKeys[FocusKeys["HomeAndEnd"] = 16] = "HomeAndEnd";
22
+ // The PgUp and PgDn keys (previous and next, respectively, to end)
23
+ FocusKeys[FocusKeys["PageUpDown"] = 256] = "PageUpDown";
24
+ // The "W" and "S" keys (previous and next, respectively)
25
+ FocusKeys[FocusKeys["WS"] = 32] = "WS";
26
+ // The "A" and "D" keys (previous and next, respectively)
27
+ FocusKeys[FocusKeys["AD"] = 64] = "AD";
28
+ // The Tab key (next)
29
+ FocusKeys[FocusKeys["Tab"] = 128] = "Tab";
30
+ FocusKeys[FocusKeys["ArrowAll"] = 3] = "ArrowAll";
31
+ FocusKeys[FocusKeys["HJKL"] = 12] = "HJKL";
32
+ FocusKeys[FocusKeys["WASD"] = 96] = "WASD";
33
+ FocusKeys[FocusKeys["All"] = 511] = "All";
34
+ })(FocusKeys = exports.FocusKeys || (exports.FocusKeys = {}));
38
35
  const KEY_TO_BIT = {
39
- ArrowLeft: FocusKeys.ArrowHorizontal,
40
- ArrowDown: FocusKeys.ArrowVertical,
41
- ArrowUp: FocusKeys.ArrowVertical,
42
- ArrowRight: FocusKeys.ArrowHorizontal,
43
- h: FocusKeys.HL,
44
- j: FocusKeys.JK,
45
- k: FocusKeys.JK,
46
- l: FocusKeys.HL,
47
- a: FocusKeys.AD,
48
- s: FocusKeys.WS,
49
- w: FocusKeys.WS,
50
- d: FocusKeys.AD,
51
- Tab: FocusKeys.Tab,
52
- Home: FocusKeys.HomeAndEnd,
53
- End: FocusKeys.HomeAndEnd,
54
- PageUp: FocusKeys.PageUpDown,
55
- PageDown: FocusKeys.PageUpDown
36
+ ArrowLeft: FocusKeys.ArrowHorizontal,
37
+ ArrowDown: FocusKeys.ArrowVertical,
38
+ ArrowUp: FocusKeys.ArrowVertical,
39
+ ArrowRight: FocusKeys.ArrowHorizontal,
40
+ h: FocusKeys.HL,
41
+ j: FocusKeys.JK,
42
+ k: FocusKeys.JK,
43
+ l: FocusKeys.HL,
44
+ a: FocusKeys.AD,
45
+ s: FocusKeys.WS,
46
+ w: FocusKeys.WS,
47
+ d: FocusKeys.AD,
48
+ Tab: FocusKeys.Tab,
49
+ Home: FocusKeys.HomeAndEnd,
50
+ End: FocusKeys.HomeAndEnd,
51
+ PageUp: FocusKeys.PageUpDown,
52
+ PageDown: FocusKeys.PageUpDown
56
53
  };
57
54
  const KEY_TO_DIRECTION = {
58
- ArrowLeft: 'previous',
59
- ArrowDown: 'next',
60
- ArrowUp: 'previous',
61
- ArrowRight: 'next',
62
- h: 'previous',
63
- j: 'next',
64
- k: 'previous',
65
- l: 'next',
66
- a: 'previous',
67
- s: 'next',
68
- w: 'previous',
69
- d: 'next',
70
- Tab: 'next',
71
- Home: 'start',
72
- End: 'end',
73
- PageUp: 'start',
74
- PageDown: 'end'
55
+ ArrowLeft: 'previous',
56
+ ArrowDown: 'next',
57
+ ArrowUp: 'previous',
58
+ ArrowRight: 'next',
59
+ h: 'previous',
60
+ j: 'next',
61
+ k: 'previous',
62
+ l: 'next',
63
+ a: 'previous',
64
+ s: 'next',
65
+ w: 'previous',
66
+ d: 'next',
67
+ Tab: 'next',
68
+ Home: 'start',
69
+ End: 'end',
70
+ PageUp: 'start',
71
+ PageDown: 'end'
75
72
  };
76
- /**
77
- * Options that control the behavior of the arrow focus behavior.
78
- */
79
-
80
73
  function getDirection(keyboardEvent) {
81
- const direction = KEY_TO_DIRECTION[keyboardEvent.key];
82
-
83
- if (keyboardEvent.key === 'Tab' && keyboardEvent.shiftKey) {
84
- return 'previous';
85
- }
86
-
87
- const isMac = (0, _userAgent.isMacOS)();
88
-
89
- if (isMac && keyboardEvent.metaKey || !isMac && keyboardEvent.ctrlKey) {
90
- if (keyboardEvent.key === 'ArrowLeft' || keyboardEvent.key === 'ArrowUp') {
91
- return 'start';
92
- } else if (keyboardEvent.key === 'ArrowRight' || keyboardEvent.key === 'ArrowDown') {
93
- return 'end';
74
+ const direction = KEY_TO_DIRECTION[keyboardEvent.key];
75
+ if (keyboardEvent.key === 'Tab' && keyboardEvent.shiftKey) {
76
+ return 'previous';
77
+ }
78
+ const isMac = userAgent_1.isMacOS();
79
+ if ((isMac && keyboardEvent.metaKey) || (!isMac && keyboardEvent.ctrlKey)) {
80
+ if (keyboardEvent.key === 'ArrowLeft' || keyboardEvent.key === 'ArrowUp') {
81
+ return 'start';
82
+ }
83
+ else if (keyboardEvent.key === 'ArrowRight' || keyboardEvent.key === 'ArrowDown') {
84
+ return 'end';
85
+ }
94
86
  }
95
- }
96
-
97
- return direction;
87
+ return direction;
98
88
  }
99
89
  /**
100
90
  * There are some situations where we do not want various keys to affect focus. This function
@@ -109,470 +99,405 @@ function getDirection(keyboardEvent) {
109
99
  * @param keyboardEvent
110
100
  * @param activeElement
111
101
  */
112
-
113
-
114
102
  function shouldIgnoreFocusHandling(keyboardEvent, activeElement) {
115
- const key = keyboardEvent.key; // Get the number of characters in `key`, accounting for double-wide UTF-16 chars. If keyLength
116
- // is 1, we can assume it's a "printable" character. Otherwise it's likely a control character.
117
- // One exception is the Tab key, which is technically printable, but browsers generally assign
118
- // its function to move focus rather than type a <TAB> character.
119
-
120
- const keyLength = [...key].length;
121
- const isTextInput = activeElement instanceof HTMLInputElement && activeElement.type === 'text' || activeElement instanceof HTMLTextAreaElement; // If we would normally type a character into an input, ignore
122
- // Also, Home and End keys should never affect focus when in a text input
123
-
124
- if (isTextInput && (keyLength === 1 || key === 'Home' || key === 'End')) {
125
- return true;
126
- } // Some situations we want to ignore with <select> elements
127
-
128
-
129
- if (activeElement instanceof HTMLSelectElement) {
130
- // Regular typeable characters change the selection, so ignore those
131
- if (keyLength === 1) {
132
- return true;
133
- } // On macOS, bare ArrowDown opens the select, so ignore that
134
-
135
-
136
- if (key === 'ArrowDown' && (0, _userAgent.isMacOS)() && !keyboardEvent.metaKey) {
137
- return true;
138
- } // On other platforms, Alt+ArrowDown opens the select, so ignore that
139
-
140
-
141
- if (key === 'ArrowDown' && !(0, _userAgent.isMacOS)() && keyboardEvent.altKey) {
142
- return true;
103
+ const key = keyboardEvent.key;
104
+ // Get the number of characters in `key`, accounting for double-wide UTF-16 chars. If keyLength
105
+ // is 1, we can assume it's a "printable" character. Otherwise it's likely a control character.
106
+ // One exception is the Tab key, which is technically printable, but browsers generally assign
107
+ // its function to move focus rather than type a <TAB> character.
108
+ const keyLength = [...key].length;
109
+ const isTextInput = (activeElement instanceof HTMLInputElement && activeElement.type === 'text') ||
110
+ activeElement instanceof HTMLTextAreaElement;
111
+ // If we would normally type a character into an input, ignore
112
+ // Also, Home and End keys should never affect focus when in a text input
113
+ if (isTextInput && (keyLength === 1 || key === 'Home' || key === 'End')) {
114
+ return true;
143
115
  }
144
- } // Ignore page up and page down for textareas
145
-
146
-
147
- if (activeElement instanceof HTMLTextAreaElement && (key === 'PageUp' || key === 'PageDown')) {
148
- return true;
149
- }
150
-
151
- if (isTextInput) {
152
- const textInput = activeElement;
153
- const cursorAtStart = textInput.selectionStart === 0 && textInput.selectionEnd === 0;
154
- const cursorAtEnd = textInput.selectionStart === textInput.value.length && textInput.selectionEnd === textInput.value.length; // When in a text area or text input, only move focus left/right if at beginning/end of the field
155
-
156
- if (key === 'ArrowLeft' && !cursorAtStart) {
157
- return true;
116
+ // Some situations we want to ignore with <select> elements
117
+ if (activeElement instanceof HTMLSelectElement) {
118
+ // Regular typeable characters change the selection, so ignore those
119
+ if (keyLength === 1) {
120
+ return true;
121
+ }
122
+ // On macOS, bare ArrowDown opens the select, so ignore that
123
+ if (key === 'ArrowDown' && userAgent_1.isMacOS() && !keyboardEvent.metaKey) {
124
+ return true;
125
+ }
126
+ // On other platforms, Alt+ArrowDown opens the select, so ignore that
127
+ if (key === 'ArrowDown' && !userAgent_1.isMacOS() && keyboardEvent.altKey) {
128
+ return true;
129
+ }
158
130
  }
159
-
160
- if (key === 'ArrowRight' && !cursorAtEnd) {
161
- return true;
162
- } // When in a text area, only move focus up/down if at beginning/end of the field
163
-
164
-
165
- if (textInput instanceof HTMLTextAreaElement) {
166
- if (key === 'ArrowUp' && !cursorAtStart) {
131
+ // Ignore page up and page down for textareas
132
+ if (activeElement instanceof HTMLTextAreaElement && (key === 'PageUp' || key === 'PageDown')) {
167
133
  return true;
168
- }
169
-
170
- if (key === 'ArrowDown' && !cursorAtEnd) {
171
- return true;
172
- }
173
134
  }
174
- }
175
-
176
- return false;
135
+ if (isTextInput) {
136
+ const textInput = activeElement;
137
+ const cursorAtStart = textInput.selectionStart === 0 && textInput.selectionEnd === 0;
138
+ const cursorAtEnd = textInput.selectionStart === textInput.value.length && textInput.selectionEnd === textInput.value.length;
139
+ // When in a text area or text input, only move focus left/right if at beginning/end of the field
140
+ if (key === 'ArrowLeft' && !cursorAtStart) {
141
+ return true;
142
+ }
143
+ if (key === 'ArrowRight' && !cursorAtEnd) {
144
+ return true;
145
+ }
146
+ // When in a text area, only move focus up/down if at beginning/end of the field
147
+ if (textInput instanceof HTMLTextAreaElement) {
148
+ if (key === 'ArrowUp' && !cursorAtStart) {
149
+ return true;
150
+ }
151
+ if (key === 'ArrowDown' && !cursorAtEnd) {
152
+ return true;
153
+ }
154
+ }
155
+ }
156
+ return false;
177
157
  }
178
-
179
- const isActiveDescendantAttribute = 'data-is-active-descendant';
158
+ exports.isActiveDescendantAttribute = 'data-is-active-descendant';
180
159
  /**
181
160
  * A value of activated-directly for data-is-active-descendant indicates the descendant was activated
182
161
  * by a manual user interaction with intent to move active descendant. This usually translates to the
183
162
  * user pressing one of the bound keys (up/down arrow, etc) to move through the focus zone. This is
184
163
  * intended to be roughly equivalent to the :focus-visible pseudo-class
185
164
  **/
186
-
187
- exports.isActiveDescendantAttribute = isActiveDescendantAttribute;
188
- const activeDescendantActivatedDirectly = 'activated-directly';
165
+ exports.activeDescendantActivatedDirectly = 'activated-directly';
189
166
  /**
190
167
  * A value of activated-indirectly for data-is-active-descendant indicates the descendant was activated
191
168
  * implicitly, and not by a direct key press. This includes focus zone being created from scratch, focusable
192
169
  * elements being added/removed, and mouseover events. This is intended to be roughly equivalent
193
170
  * to :focus:not(:focus-visible)
194
171
  **/
195
-
196
- exports.activeDescendantActivatedDirectly = activeDescendantActivatedDirectly;
197
- const activeDescendantActivatedIndirectly = 'activated-indirectly';
198
- exports.activeDescendantActivatedIndirectly = activeDescendantActivatedIndirectly;
199
- const hasActiveDescendantAttribute = 'data-has-active-descendant';
172
+ exports.activeDescendantActivatedIndirectly = 'activated-indirectly';
173
+ exports.hasActiveDescendantAttribute = 'data-has-active-descendant';
200
174
  /**
201
175
  * Sets up the arrow key focus behavior for all focusable elements in the given `container`.
202
176
  * @param container
203
177
  * @param settings
204
178
  * @returns
205
179
  */
206
-
207
- exports.hasActiveDescendantAttribute = hasActiveDescendantAttribute;
208
-
209
180
  function focusZone(container, settings) {
210
- var _settings$bindKeys, _settings$focusOutBeh, _settings$focusInStra, _settings$abortSignal;
211
-
212
- const focusableElements = [];
213
- const savedTabIndex = new WeakMap();
214
- const bindKeys = (_settings$bindKeys = settings === null || settings === void 0 ? void 0 : settings.bindKeys) !== null && _settings$bindKeys !== void 0 ? _settings$bindKeys : (settings !== null && settings !== void 0 && settings.getNextFocusable ? FocusKeys.ArrowAll : FocusKeys.ArrowVertical) | FocusKeys.HomeAndEnd;
215
- const focusOutBehavior = (_settings$focusOutBeh = settings === null || settings === void 0 ? void 0 : settings.focusOutBehavior) !== null && _settings$focusOutBeh !== void 0 ? _settings$focusOutBeh : 'stop';
216
- const focusInStrategy = (_settings$focusInStra = settings === null || settings === void 0 ? void 0 : settings.focusInStrategy) !== null && _settings$focusInStra !== void 0 ? _settings$focusInStra : 'previous';
217
- const activeDescendantControl = settings === null || settings === void 0 ? void 0 : settings.activeDescendantControl;
218
- const activeDescendantCallback = settings === null || settings === void 0 ? void 0 : settings.onActiveDescendantChanged;
219
- let currentFocusedElement;
220
-
221
- function getFirstFocusableElement() {
222
- return focusableElements[0];
223
- }
224
-
225
- function isActiveDescendantInputFocused() {
226
- return document.activeElement === activeDescendantControl;
227
- }
228
-
229
- function updateFocusedElement(to, directlyActivated = false) {
230
- const from = currentFocusedElement;
231
- currentFocusedElement = to;
232
-
233
- if (activeDescendantControl) {
234
- if (to && isActiveDescendantInputFocused()) {
235
- setActiveDescendant(from, to, directlyActivated);
236
- } else {
237
- clearActiveDescendant();
238
- }
239
-
240
- return;
241
- }
242
-
243
- if (from && from !== to && savedTabIndex.has(from)) {
244
- from.setAttribute('tabindex', '-1');
181
+ const focusableElements = [];
182
+ const savedTabIndex = new WeakMap();
183
+ const bindKeys = settings?.bindKeys ??
184
+ (settings?.getNextFocusable ? FocusKeys.ArrowAll : FocusKeys.ArrowVertical) | FocusKeys.HomeAndEnd;
185
+ const focusOutBehavior = settings?.focusOutBehavior ?? 'stop';
186
+ const focusInStrategy = settings?.focusInStrategy ?? 'previous';
187
+ const activeDescendantControl = settings?.activeDescendantControl;
188
+ const activeDescendantCallback = settings?.onActiveDescendantChanged;
189
+ let currentFocusedElement;
190
+ function getFirstFocusableElement() {
191
+ return focusableElements[0];
245
192
  }
246
-
247
- to === null || to === void 0 ? void 0 : to.setAttribute('tabindex', '0');
248
- }
249
-
250
- function setActiveDescendant(from, to, directlyActivated = false) {
251
- if (!to.id) {
252
- to.setAttribute('id', (0, _uniqueId.uniqueId)());
193
+ function isActiveDescendantInputFocused() {
194
+ return document.activeElement === activeDescendantControl;
253
195
  }
254
-
255
- if (from && from !== to) {
256
- from.removeAttribute(isActiveDescendantAttribute);
257
- }
258
-
259
- if (!activeDescendantControl || !directlyActivated && activeDescendantControl.getAttribute('aria-activedescendant') === to.id) {
260
- // prevent active descendant callback from being called repeatedly if the same element is activated (e.g. via mousemove)
261
- return;
262
- }
263
-
264
- activeDescendantControl.setAttribute('aria-activedescendant', to.id);
265
- container.setAttribute(hasActiveDescendantAttribute, to.id);
266
- to.setAttribute(isActiveDescendantAttribute, directlyActivated ? activeDescendantActivatedDirectly : activeDescendantActivatedIndirectly);
267
- activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(to, from, directlyActivated);
268
- }
269
-
270
- function clearActiveDescendant(previouslyActiveElement = currentFocusedElement) {
271
- if (focusInStrategy === 'first') {
272
- currentFocusedElement = undefined;
273
- }
274
-
275
- activeDescendantControl === null || activeDescendantControl === void 0 ? void 0 : activeDescendantControl.removeAttribute('aria-activedescendant');
276
- container.removeAttribute(hasActiveDescendantAttribute);
277
- previouslyActiveElement === null || previouslyActiveElement === void 0 ? void 0 : previouslyActiveElement.removeAttribute(isActiveDescendantAttribute);
278
- activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(undefined, previouslyActiveElement, false);
279
- }
280
-
281
- function beginFocusManagement(...elements) {
282
- const filteredElements = elements.filter(e => {
283
- var _settings$focusableEl, _settings$focusableEl2;
284
-
285
- return (_settings$focusableEl = settings === null || settings === void 0 ? void 0 : (_settings$focusableEl2 = settings.focusableElementFilter) === null || _settings$focusableEl2 === void 0 ? void 0 : _settings$focusableEl2.call(settings, e)) !== null && _settings$focusableEl !== void 0 ? _settings$focusableEl : true;
286
- });
287
-
288
- if (filteredElements.length === 0) {
289
- return;
290
- } // Insert all elements atomically. Assume that all passed elements are well-ordered.
291
-
292
-
293
- const insertIndex = focusableElements.findIndex(e => (e.compareDocumentPosition(filteredElements[0]) & Node.DOCUMENT_POSITION_PRECEDING) > 0);
294
- focusableElements.splice(insertIndex === -1 ? focusableElements.length : insertIndex, 0, ...filteredElements);
295
-
296
- for (const element of filteredElements) {
297
- // Set tabindex="-1" on all tabbable elements, but save the original
298
- // value in case we need to disable the behavior
299
- if (!savedTabIndex.has(element)) {
300
- savedTabIndex.set(element, element.getAttribute('tabindex'));
301
- }
302
-
303
- element.setAttribute('tabindex', '-1');
304
- }
305
-
306
- if (!currentFocusedElement) {
307
- updateFocusedElement(getFirstFocusableElement());
196
+ function updateFocusedElement(to, directlyActivated = false) {
197
+ const from = currentFocusedElement;
198
+ currentFocusedElement = to;
199
+ if (activeDescendantControl) {
200
+ if (to && isActiveDescendantInputFocused()) {
201
+ setActiveDescendant(from, to, directlyActivated);
202
+ }
203
+ else {
204
+ clearActiveDescendant();
205
+ }
206
+ return;
207
+ }
208
+ if (from && from !== to && savedTabIndex.has(from)) {
209
+ from.setAttribute('tabindex', '-1');
210
+ }
211
+ to?.setAttribute('tabindex', '0');
308
212
  }
309
- }
310
-
311
- function endFocusManagement(...elements) {
312
- for (const element of elements) {
313
- const focusableElementIndex = focusableElements.indexOf(element);
314
-
315
- if (focusableElementIndex >= 0) {
316
- focusableElements.splice(focusableElementIndex, 1);
317
- }
318
-
319
- const savedIndex = savedTabIndex.get(element);
320
-
321
- if (savedIndex !== undefined) {
322
- if (savedIndex === null) {
323
- element.removeAttribute('tabindex');
324
- } else {
325
- element.setAttribute('tabindex', savedIndex);
213
+ function setActiveDescendant(from, to, directlyActivated = false) {
214
+ if (!to.id) {
215
+ to.setAttribute('id', uniqueId_1.uniqueId());
216
+ }
217
+ if (from && from !== to) {
218
+ from.removeAttribute(exports.isActiveDescendantAttribute);
326
219
  }
327
-
328
- savedTabIndex.delete(element);
329
- } // If removing the last-focused element, move focus to the first element in the list.
330
-
331
-
332
- if (element === currentFocusedElement) {
333
- const nextElementToFocus = getFirstFocusableElement();
334
- updateFocusedElement(nextElementToFocus);
335
- }
220
+ if (!activeDescendantControl ||
221
+ (!directlyActivated && activeDescendantControl.getAttribute('aria-activedescendant') === to.id)) {
222
+ // prevent active descendant callback from being called repeatedly if the same element is activated (e.g. via mousemove)
223
+ return;
224
+ }
225
+ activeDescendantControl.setAttribute('aria-activedescendant', to.id);
226
+ container.setAttribute(exports.hasActiveDescendantAttribute, to.id);
227
+ to.setAttribute(exports.isActiveDescendantAttribute, directlyActivated ? exports.activeDescendantActivatedDirectly : exports.activeDescendantActivatedIndirectly);
228
+ activeDescendantCallback?.(to, from, directlyActivated);
336
229
  }
337
- } // Take all tabbable elements within container under management
338
-
339
-
340
- beginFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(container)); // Open the first tabbable element for tabbing
341
-
342
- updateFocusedElement(getFirstFocusableElement()); // If the DOM structure of the container changes, make sure we keep our state up-to-date
343
- // with respect to the focusable elements cache and its order
344
-
345
- const observer = new MutationObserver(mutations => {
346
- // Perform all removals first, in case element order has simply changed
347
- for (const mutation of mutations) {
348
- for (const removedNode of mutation.removedNodes) {
349
- if (removedNode instanceof HTMLElement) {
350
- endFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(removedNode));
230
+ function clearActiveDescendant(previouslyActiveElement = currentFocusedElement) {
231
+ if (focusInStrategy === 'first') {
232
+ currentFocusedElement = undefined;
351
233
  }
352
- }
234
+ activeDescendantControl?.removeAttribute('aria-activedescendant');
235
+ container.removeAttribute(exports.hasActiveDescendantAttribute);
236
+ previouslyActiveElement?.removeAttribute(exports.isActiveDescendantAttribute);
237
+ activeDescendantCallback?.(undefined, previouslyActiveElement, false);
353
238
  }
354
-
355
- for (const mutation of mutations) {
356
- for (const addedNode of mutation.addedNodes) {
357
- if (addedNode instanceof HTMLElement) {
358
- beginFocusManagement(...(0, _iterateFocusableElements.iterateFocusableElements)(addedNode));
239
+ function beginFocusManagement(...elements) {
240
+ const filteredElements = elements.filter(e => settings?.focusableElementFilter?.(e) ?? true);
241
+ if (filteredElements.length === 0) {
242
+ return;
243
+ }
244
+ // Insert all elements atomically. Assume that all passed elements are well-ordered.
245
+ const insertIndex = focusableElements.findIndex(e => (e.compareDocumentPosition(filteredElements[0]) & Node.DOCUMENT_POSITION_PRECEDING) > 0);
246
+ focusableElements.splice(insertIndex === -1 ? focusableElements.length : insertIndex, 0, ...filteredElements);
247
+ for (const element of filteredElements) {
248
+ // Set tabindex="-1" on all tabbable elements, but save the original
249
+ // value in case we need to disable the behavior
250
+ if (!savedTabIndex.has(element)) {
251
+ savedTabIndex.set(element, element.getAttribute('tabindex'));
252
+ }
253
+ element.setAttribute('tabindex', '-1');
254
+ }
255
+ if (!currentFocusedElement) {
256
+ updateFocusedElement(getFirstFocusableElement());
359
257
  }
360
- }
361
258
  }
362
- });
363
- observer.observe(container, {
364
- subtree: true,
365
- childList: true
366
- });
367
- const controller = new AbortController();
368
- const signal = (_settings$abortSignal = settings === null || settings === void 0 ? void 0 : settings.abortSignal) !== null && _settings$abortSignal !== void 0 ? _settings$abortSignal : controller.signal;
369
- signal.addEventListener('abort', () => {
370
- // Clean up any modifications
371
- endFocusManagement(...focusableElements);
372
- });
373
- let elementIndexFocusedByClick = undefined;
374
- container.addEventListener('mousedown', event => {
375
- // Since focusin is only called when focus changes, we need to make sure the clicked
376
- // element isn't already focused.
377
- if (event.target instanceof HTMLElement && event.target !== document.activeElement) {
378
- elementIndexFocusedByClick = focusableElements.indexOf(event.target);
259
+ function endFocusManagement(...elements) {
260
+ for (const element of elements) {
261
+ const focusableElementIndex = focusableElements.indexOf(element);
262
+ if (focusableElementIndex >= 0) {
263
+ focusableElements.splice(focusableElementIndex, 1);
264
+ }
265
+ const savedIndex = savedTabIndex.get(element);
266
+ if (savedIndex !== undefined) {
267
+ if (savedIndex === null) {
268
+ element.removeAttribute('tabindex');
269
+ }
270
+ else {
271
+ element.setAttribute('tabindex', savedIndex);
272
+ }
273
+ savedTabIndex.delete(element);
274
+ }
275
+ // If removing the last-focused element, move focus to the first element in the list.
276
+ if (element === currentFocusedElement) {
277
+ const nextElementToFocus = getFirstFocusableElement();
278
+ updateFocusedElement(nextElementToFocus);
279
+ }
280
+ }
379
281
  }
380
- }, {
381
- signal
382
- });
383
-
384
- if (activeDescendantControl) {
385
- container.addEventListener('focusin', event => {
386
- if (event.target instanceof HTMLElement && focusableElements.includes(event.target)) {
387
- // Move focus to the activeDescendantControl if one of the descendants is focused
388
- activeDescendantControl.focus();
389
- updateFocusedElement(event.target);
390
- }
282
+ // Take all tabbable elements within container under management
283
+ beginFocusManagement(...iterateFocusableElements_1.iterateFocusableElements(container));
284
+ // Open the first tabbable element for tabbing
285
+ updateFocusedElement(getFirstFocusableElement());
286
+ // If the DOM structure of the container changes, make sure we keep our state up-to-date
287
+ // with respect to the focusable elements cache and its order
288
+ const observer = new MutationObserver(mutations => {
289
+ // Perform all removals first, in case element order has simply changed
290
+ for (const mutation of mutations) {
291
+ for (const removedNode of mutation.removedNodes) {
292
+ if (removedNode instanceof HTMLElement) {
293
+ endFocusManagement(...iterateFocusableElements_1.iterateFocusableElements(removedNode));
294
+ }
295
+ }
296
+ }
297
+ for (const mutation of mutations) {
298
+ for (const addedNode of mutation.addedNodes) {
299
+ if (addedNode instanceof HTMLElement) {
300
+ beginFocusManagement(...iterateFocusableElements_1.iterateFocusableElements(addedNode));
301
+ }
302
+ }
303
+ }
391
304
  });
392
- container.addEventListener('mousemove', ({
393
- target
394
- }) => {
395
- if (!(target instanceof Node)) {
396
- return;
397
- }
398
-
399
- const focusableElement = focusableElements.find(element => element.contains(target));
400
-
401
- if (focusableElement) {
402
- updateFocusedElement(focusableElement);
403
- }
404
- }, {
405
- signal,
406
- capture: true
407
- }); // Listeners specifically on the controlling element
408
-
409
- activeDescendantControl.addEventListener('focusin', () => {
410
- // Focus moved into the active descendant input. Activate current or first descendant.
411
- if (!currentFocusedElement) {
412
- updateFocusedElement(getFirstFocusableElement());
413
- } else {
414
- setActiveDescendant(undefined, currentFocusedElement);
415
- }
305
+ observer.observe(container, {
306
+ subtree: true,
307
+ childList: true
416
308
  });
417
- activeDescendantControl.addEventListener('focusout', () => {
418
- clearActiveDescendant();
309
+ const controller = new AbortController();
310
+ const signal = settings?.abortSignal ?? controller.signal;
311
+ signal.addEventListener('abort', () => {
312
+ // Clean up any modifications
313
+ endFocusManagement(...focusableElements);
419
314
  });
420
- } else {
421
- // This is called whenever focus enters an element in the container
422
- container.addEventListener('focusin', event => {
423
- if (event.target instanceof HTMLElement) {
424
- // If a click initiated the focus movement, we always want to set our internal state
425
- // to reflect the clicked element as the currently focused one.
426
- if (elementIndexFocusedByClick !== undefined) {
427
- if (elementIndexFocusedByClick >= 0) {
428
- if (focusableElements[elementIndexFocusedByClick] !== currentFocusedElement) {
429
- updateFocusedElement(focusableElements[elementIndexFocusedByClick]);
430
- }
431
- }
432
-
433
- elementIndexFocusedByClick = undefined;
434
- } else {
435
- // Set tab indexes and internal state based on the focus handling strategy
436
- if (focusInStrategy === 'previous') {
437
- updateFocusedElement(event.target);
438
- } else if (focusInStrategy === 'closest' || focusInStrategy === 'first') {
439
- if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {
440
- // Regardless of the previously focused element, if we're coming from outside the
441
- // container, put focus onto the first encountered element (from above, it's The
442
- // first element of the container; from below, it's the last). If the
443
- // focusInStrategy is set to "first", lastKeyboardFocusDirection will always
444
- // be undefined.
445
- const targetElementIndex = lastKeyboardFocusDirection === 'previous' ? focusableElements.length - 1 : 0;
446
- const targetElement = focusableElements[targetElementIndex];
447
- targetElement === null || targetElement === void 0 ? void 0 : targetElement.focus();
448
- return;
449
- } else {
450
- updateFocusedElement(event.target);
315
+ let elementIndexFocusedByClick = undefined;
316
+ container.addEventListener('mousedown', event => {
317
+ // Since focusin is only called when focus changes, we need to make sure the clicked
318
+ // element isn't already focused.
319
+ if (event.target instanceof HTMLElement && event.target !== document.activeElement) {
320
+ elementIndexFocusedByClick = focusableElements.indexOf(event.target);
321
+ }
322
+ }, { signal });
323
+ if (activeDescendantControl) {
324
+ container.addEventListener('focusin', event => {
325
+ if (event.target instanceof HTMLElement && focusableElements.includes(event.target)) {
326
+ // Move focus to the activeDescendantControl if one of the descendants is focused
327
+ activeDescendantControl.focus();
328
+ updateFocusedElement(event.target);
451
329
  }
452
- } else if (typeof focusInStrategy === 'function') {
453
- if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {
454
- const elementToFocus = focusInStrategy(event.relatedTarget);
455
- const requestedFocusElementIndex = elementToFocus ? focusableElements.indexOf(elementToFocus) : -1;
456
-
457
- if (requestedFocusElementIndex >= 0 && elementToFocus instanceof HTMLElement) {
458
- // Since we are calling focus() this handler will run again synchronously. Therefore,
459
- // we don't want to let this invocation finish since it will clobber the value of
460
- // currentFocusedElement.
461
- elementToFocus.focus();
330
+ });
331
+ container.addEventListener('mousemove', ({ target }) => {
332
+ if (!(target instanceof Node)) {
462
333
  return;
463
- } else {
464
- // eslint-disable-next-line no-console
465
- console.warn('Element requested is not a known focusable element.');
466
- }
467
- } else {
468
- updateFocusedElement(event.target);
469
334
  }
470
- }
471
- }
472
- }
473
-
474
- lastKeyboardFocusDirection = undefined;
475
- }, {
476
- signal
477
- });
478
- }
479
-
480
- const keyboardEventRecipient = activeDescendantControl !== null && activeDescendantControl !== void 0 ? activeDescendantControl : container; // If the strategy is "closest", we need to capture the direction that the user
481
- // is trying to move focus before our focusin handler is executed.
482
-
483
- let lastKeyboardFocusDirection = undefined;
484
-
485
- if (focusInStrategy === 'closest') {
486
- document.addEventListener('keydown', event => {
487
- if (event.key === 'Tab') {
488
- lastKeyboardFocusDirection = getDirection(event);
489
- }
490
- }, {
491
- signal,
492
- capture: true
493
- });
494
- }
495
-
496
- function getCurrentFocusedIndex() {
497
- if (!currentFocusedElement) {
498
- return 0;
335
+ const focusableElement = focusableElements.find(element => element.contains(target));
336
+ if (focusableElement) {
337
+ updateFocusedElement(focusableElement);
338
+ }
339
+ }, { signal, capture: true });
340
+ // Listeners specifically on the controlling element
341
+ activeDescendantControl.addEventListener('focusin', () => {
342
+ // Focus moved into the active descendant input. Activate current or first descendant.
343
+ if (!currentFocusedElement) {
344
+ updateFocusedElement(getFirstFocusableElement());
345
+ }
346
+ else {
347
+ setActiveDescendant(undefined, currentFocusedElement);
348
+ }
349
+ });
350
+ activeDescendantControl.addEventListener('focusout', () => {
351
+ clearActiveDescendant();
352
+ });
499
353
  }
500
-
501
- const focusedIndex = focusableElements.indexOf(currentFocusedElement);
502
- const fallbackIndex = currentFocusedElement === container ? -1 : 0;
503
- return focusedIndex !== -1 ? focusedIndex : fallbackIndex;
504
- } // "keydown" is the event that triggers DOM focus change, so that is what we use here
505
-
506
-
507
- keyboardEventRecipient.addEventListener('keydown', event => {
508
- if (event.key in KEY_TO_DIRECTION) {
509
- const keyBit = KEY_TO_BIT[event.key]; // Check if the pressed key (keyBit) is one that is being used for focus (bindKeys)
510
-
511
- if (!event.defaultPrevented && (keyBit & bindKeys) > 0 && !shouldIgnoreFocusHandling(event, document.activeElement)) {
512
- // Moving forward or backward?
513
- const direction = getDirection(event);
514
- let nextElementToFocus = undefined; // If there is a custom function that retrieves the next focusable element, try calling that first.
515
-
516
- if (settings !== null && settings !== void 0 && settings.getNextFocusable) {
517
- var _document$activeEleme;
518
-
519
- nextElementToFocus = settings.getNextFocusable(direction, (_document$activeEleme = document.activeElement) !== null && _document$activeEleme !== void 0 ? _document$activeEleme : undefined, event);
520
- }
521
-
522
- if (!nextElementToFocus) {
523
- const lastFocusedIndex = getCurrentFocusedIndex();
524
- let nextFocusedIndex = lastFocusedIndex;
525
-
526
- if (direction === 'previous') {
527
- nextFocusedIndex -= 1;
528
- } else if (direction === 'start') {
529
- nextFocusedIndex = 0;
530
- } else if (direction === 'next') {
531
- nextFocusedIndex += 1;
532
- } else {
533
- // end
534
- nextFocusedIndex = focusableElements.length - 1;
535
- }
536
-
537
- if (nextFocusedIndex < 0) {
538
- // Tab should never cause focus to wrap. Use focusTrap for that behavior.
539
- if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {
540
- nextFocusedIndex = focusableElements.length - 1;
541
- } else {
542
- nextFocusedIndex = 0;
354
+ else {
355
+ // This is called whenever focus enters an element in the container
356
+ container.addEventListener('focusin', event => {
357
+ if (event.target instanceof HTMLElement) {
358
+ // If a click initiated the focus movement, we always want to set our internal state
359
+ // to reflect the clicked element as the currently focused one.
360
+ if (elementIndexFocusedByClick !== undefined) {
361
+ if (elementIndexFocusedByClick >= 0) {
362
+ if (focusableElements[elementIndexFocusedByClick] !== currentFocusedElement) {
363
+ updateFocusedElement(focusableElements[elementIndexFocusedByClick]);
364
+ }
365
+ }
366
+ elementIndexFocusedByClick = undefined;
367
+ }
368
+ else {
369
+ // Set tab indexes and internal state based on the focus handling strategy
370
+ if (focusInStrategy === 'previous') {
371
+ updateFocusedElement(event.target);
372
+ }
373
+ else if (focusInStrategy === 'closest' || focusInStrategy === 'first') {
374
+ if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {
375
+ // Regardless of the previously focused element, if we're coming from outside the
376
+ // container, put focus onto the first encountered element (from above, it's The
377
+ // first element of the container; from below, it's the last). If the
378
+ // focusInStrategy is set to "first", lastKeyboardFocusDirection will always
379
+ // be undefined.
380
+ const targetElementIndex = lastKeyboardFocusDirection === 'previous' ? focusableElements.length - 1 : 0;
381
+ const targetElement = focusableElements[targetElementIndex];
382
+ targetElement?.focus();
383
+ return;
384
+ }
385
+ else {
386
+ updateFocusedElement(event.target);
387
+ }
388
+ }
389
+ else if (typeof focusInStrategy === 'function') {
390
+ if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {
391
+ const elementToFocus = focusInStrategy(event.relatedTarget);
392
+ const requestedFocusElementIndex = elementToFocus ? focusableElements.indexOf(elementToFocus) : -1;
393
+ if (requestedFocusElementIndex >= 0 && elementToFocus instanceof HTMLElement) {
394
+ // Since we are calling focus() this handler will run again synchronously. Therefore,
395
+ // we don't want to let this invocation finish since it will clobber the value of
396
+ // currentFocusedElement.
397
+ elementToFocus.focus();
398
+ return;
399
+ }
400
+ else {
401
+ // eslint-disable-next-line no-console
402
+ console.warn('Element requested is not a known focusable element.');
403
+ }
404
+ }
405
+ else {
406
+ updateFocusedElement(event.target);
407
+ }
408
+ }
409
+ }
543
410
  }
544
- }
545
-
546
- if (nextFocusedIndex >= focusableElements.length) {
547
- if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {
548
- nextFocusedIndex = 0;
549
- } else {
550
- nextFocusedIndex = focusableElements.length - 1;
411
+ lastKeyboardFocusDirection = undefined;
412
+ }, { signal });
413
+ }
414
+ const keyboardEventRecipient = activeDescendantControl ?? container;
415
+ // If the strategy is "closest", we need to capture the direction that the user
416
+ // is trying to move focus before our focusin handler is executed.
417
+ let lastKeyboardFocusDirection = undefined;
418
+ if (focusInStrategy === 'closest') {
419
+ document.addEventListener('keydown', event => {
420
+ if (event.key === 'Tab') {
421
+ lastKeyboardFocusDirection = getDirection(event);
551
422
  }
552
- }
553
-
554
- if (lastFocusedIndex !== nextFocusedIndex) {
555
- nextElementToFocus = focusableElements[nextFocusedIndex];
556
- }
557
- }
558
-
559
- if (activeDescendantControl) {
560
- updateFocusedElement(nextElementToFocus || currentFocusedElement, true);
561
- } else if (nextElementToFocus) {
562
- lastKeyboardFocusDirection = direction; // updateFocusedElement will be called implicitly when focus moves, as long as the event isn't prevented somehow
563
-
564
- nextElementToFocus.focus();
565
- } // Tab should always allow escaping from this container, so only
566
- // preventDefault if tab key press already resulted in a focus movement
567
-
568
-
569
- if (event.key !== 'Tab' || nextElementToFocus) {
570
- event.preventDefault();
423
+ }, { signal, capture: true });
424
+ }
425
+ function getCurrentFocusedIndex() {
426
+ if (!currentFocusedElement) {
427
+ return 0;
571
428
  }
572
- }
429
+ const focusedIndex = focusableElements.indexOf(currentFocusedElement);
430
+ const fallbackIndex = currentFocusedElement === container ? -1 : 0;
431
+ return focusedIndex !== -1 ? focusedIndex : fallbackIndex;
573
432
  }
574
- }, {
575
- signal
576
- });
577
- return controller;
578
- }
433
+ // "keydown" is the event that triggers DOM focus change, so that is what we use here
434
+ keyboardEventRecipient.addEventListener('keydown', event => {
435
+ if (event.key in KEY_TO_DIRECTION) {
436
+ const keyBit = KEY_TO_BIT[event.key];
437
+ // Check if the pressed key (keyBit) is one that is being used for focus (bindKeys)
438
+ if (!event.defaultPrevented &&
439
+ (keyBit & bindKeys) > 0 &&
440
+ !shouldIgnoreFocusHandling(event, document.activeElement)) {
441
+ // Moving forward or backward?
442
+ const direction = getDirection(event);
443
+ let nextElementToFocus = undefined;
444
+ // If there is a custom function that retrieves the next focusable element, try calling that first.
445
+ if (settings?.getNextFocusable) {
446
+ nextElementToFocus = settings.getNextFocusable(direction, document.activeElement ?? undefined, event);
447
+ }
448
+ if (!nextElementToFocus) {
449
+ const lastFocusedIndex = getCurrentFocusedIndex();
450
+ let nextFocusedIndex = lastFocusedIndex;
451
+ if (direction === 'previous') {
452
+ nextFocusedIndex -= 1;
453
+ }
454
+ else if (direction === 'start') {
455
+ nextFocusedIndex = 0;
456
+ }
457
+ else if (direction === 'next') {
458
+ nextFocusedIndex += 1;
459
+ }
460
+ else {
461
+ // end
462
+ nextFocusedIndex = focusableElements.length - 1;
463
+ }
464
+ if (nextFocusedIndex < 0) {
465
+ // Tab should never cause focus to wrap. Use focusTrap for that behavior.
466
+ if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {
467
+ nextFocusedIndex = focusableElements.length - 1;
468
+ }
469
+ else {
470
+ nextFocusedIndex = 0;
471
+ }
472
+ }
473
+ if (nextFocusedIndex >= focusableElements.length) {
474
+ if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {
475
+ nextFocusedIndex = 0;
476
+ }
477
+ else {
478
+ nextFocusedIndex = focusableElements.length - 1;
479
+ }
480
+ }
481
+ if (lastFocusedIndex !== nextFocusedIndex) {
482
+ nextElementToFocus = focusableElements[nextFocusedIndex];
483
+ }
484
+ }
485
+ if (activeDescendantControl) {
486
+ updateFocusedElement(nextElementToFocus || currentFocusedElement, true);
487
+ }
488
+ else if (nextElementToFocus) {
489
+ lastKeyboardFocusDirection = direction;
490
+ // updateFocusedElement will be called implicitly when focus moves, as long as the event isn't prevented somehow
491
+ nextElementToFocus.focus();
492
+ }
493
+ // Tab should always allow escaping from this container, so only
494
+ // preventDefault if tab key press already resulted in a focus movement
495
+ if (event.key !== 'Tab' || nextElementToFocus) {
496
+ event.preventDefault();
497
+ }
498
+ }
499
+ }
500
+ }, { signal });
501
+ return controller;
502
+ }
503
+ exports.focusZone = focusZone;