@primer/components 32.1.0 → 33.0.0-rc.b3e4ccee

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1123) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +10 -0
  3. package/.devcontainer/devcontainer.json +8 -0
  4. package/.eslintrc.json +137 -0
  5. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  6. package/.github/ISSUE_TEMPLATE/new_component_proposal_template.md +41 -0
  7. package/.github/dependabot.yml +18 -0
  8. package/.github/pull_request_template.md +18 -0
  9. package/.github/workflows/check_for_changeset.yml +25 -0
  10. package/.github/workflows/ci.yml +31 -0
  11. package/.github/workflows/deploy_preview.yml +47 -0
  12. package/.github/workflows/deploy_production.yml +70 -0
  13. package/.github/workflows/release.yml +35 -0
  14. package/.github/workflows/release_canary.yml +70 -0
  15. package/.github/workflows/release_candidate.yml +60 -0
  16. package/.github/workflows/size.yml +13 -0
  17. package/.github/workflows/stale.yml +26 -0
  18. package/.gitignore +10 -0
  19. package/.npmrc +4 -0
  20. package/.nvmrc +1 -0
  21. package/.storybook/main.js +9 -0
  22. package/.storybook/preview.js +117 -0
  23. package/.vscode/launch.json +21 -0
  24. package/.vscode/settings.json +13 -0
  25. package/@types/@styled-system/index.d.ts +0 -0
  26. package/@types/@styled-system/prop-types/index.d.ts +1 -0
  27. package/@types/@styled-system/props/index.d.ts +1 -0
  28. package/@types/jest-styled-components/index.d.ts +1 -0
  29. package/CHANGELOG.md +18 -0
  30. package/CODEOWNERS +2 -0
  31. package/babel-defines.js +13 -0
  32. package/babel.config.js +39 -0
  33. package/contributor-docs/CODE_OF_CONDUCT.md +76 -0
  34. package/contributor-docs/CONTRIBUTING.md +230 -0
  35. package/contributor-docs/adrs/adr-001-typescript.md +23 -0
  36. package/contributor-docs/adrs/adr-002-behavior-isolation.md +108 -0
  37. package/contributor-docs/adrs/adr-003-prop-norms.md +72 -0
  38. package/contributor-docs/behaviors.md +132 -0
  39. package/contributor-docs/component-contents-api-patterns.md +316 -0
  40. package/contributor-docs/principles.md +39 -0
  41. package/dist/browser.esm.js +106 -109
  42. package/dist/browser.esm.js.map +1 -1
  43. package/dist/browser.umd.js +106 -109
  44. package/dist/browser.umd.js.map +1 -1
  45. package/docs/.eslintrc +0 -0
  46. package/docs/.gitignore +91 -0
  47. package/docs/components/PropsList.js +5 -0
  48. package/docs/components/State.js +9 -0
  49. package/docs/components/constants.js +34 -0
  50. package/docs/components/index.js +2 -0
  51. package/docs/content/ActionList.mdx +99 -0
  52. package/docs/content/ActionList2.mdx +379 -0
  53. package/docs/content/ActionMenu.mdx +80 -0
  54. package/docs/content/AnchoredOverlay.mdx +37 -0
  55. package/docs/content/Autocomplete.mdx +657 -0
  56. package/docs/content/Avatar.mdx +53 -0
  57. package/docs/content/AvatarStack.mdx +57 -0
  58. package/docs/content/BorderBox.md +46 -0
  59. package/docs/content/Box.mdx +96 -0
  60. package/docs/content/BranchName.md +39 -0
  61. package/docs/content/Breadcrumbs.md +68 -0
  62. package/docs/content/Buttons.md +47 -0
  63. package/docs/content/Checkbox.md +118 -0
  64. package/docs/content/CircleBadge.md +36 -0
  65. package/docs/content/CircleOcticon.md +19 -0
  66. package/docs/content/CounterLabel.md +22 -0
  67. package/docs/content/Details.md +102 -0
  68. package/docs/content/Dialog.md +106 -0
  69. package/docs/content/Dialog2.mdx +181 -0
  70. package/docs/content/Dropdown.md +66 -0
  71. package/docs/content/DropdownMenu.mdx +50 -0
  72. package/docs/content/FilterList.md +38 -0
  73. package/docs/content/FilteredSearch.md +33 -0
  74. package/docs/content/Flash.md +36 -0
  75. package/docs/content/Flex.md +58 -0
  76. package/docs/content/FormGroup.md +39 -0
  77. package/docs/content/Grid.md +59 -0
  78. package/docs/content/Header.md +78 -0
  79. package/docs/content/Heading.md +21 -0
  80. package/docs/content/Label.md +49 -0
  81. package/docs/content/LabelGroup.md +22 -0
  82. package/docs/content/Link.md +29 -0
  83. package/docs/content/Overlay.mdx +86 -0
  84. package/docs/content/Pagehead.md +19 -0
  85. package/docs/content/Pagination.md +179 -0
  86. package/docs/content/PointerBox.md +82 -0
  87. package/docs/content/Popover.md +130 -0
  88. package/docs/content/Portal.mdx +79 -0
  89. package/docs/content/Position.md +93 -0
  90. package/docs/content/ProgressBar.mdx +31 -0
  91. package/docs/content/SelectMenu.md +372 -0
  92. package/docs/content/SelectPanel.mdx +67 -0
  93. package/docs/content/SideNav.md +172 -0
  94. package/docs/content/Spinner.mdx +32 -0
  95. package/docs/content/StateLabel.md +28 -0
  96. package/docs/content/StyledOcticon.md +27 -0
  97. package/docs/content/SubNav.md +101 -0
  98. package/docs/content/TabNav.md +43 -0
  99. package/docs/content/Text.md +32 -0
  100. package/docs/content/TextInput.md +42 -0
  101. package/docs/content/TextInputWithTokens.mdx +211 -0
  102. package/docs/content/Timeline.md +149 -0
  103. package/docs/content/Token.mdx +381 -0
  104. package/docs/content/Tooltip.md +33 -0
  105. package/docs/content/Truncate.md +56 -0
  106. package/docs/content/UnderlineNav.md +46 -0
  107. package/docs/content/anchoredPosition.mdx +163 -0
  108. package/docs/content/core-concepts.md +70 -0
  109. package/docs/content/focusTrap.mdx +103 -0
  110. package/docs/content/focusZone.mdx +145 -0
  111. package/docs/content/getting-started.md +138 -0
  112. package/docs/content/index.md +33 -0
  113. package/docs/content/linting.md +35 -0
  114. package/docs/content/overriding-styles.mdx +82 -0
  115. package/docs/content/philosophy.md +23 -0
  116. package/docs/content/primer-theme.md +89 -0
  117. package/docs/content/ssr.mdx +43 -0
  118. package/docs/content/status.mdx +10 -0
  119. package/docs/content/system-props.mdx +37 -0
  120. package/docs/content/theme-reference.md +16 -0
  121. package/docs/content/theming.md +272 -0
  122. package/docs/content/useOnEscapePress.mdx +56 -0
  123. package/docs/content/useOnOutsideClick.mdx +57 -0
  124. package/docs/content/useOpenAndCloseFocus.mdx +49 -0
  125. package/docs/content/useOverlay.mdx +62 -0
  126. package/docs/content/useSafeTimeout.mdx +32 -0
  127. package/docs/gatsby-config.js +30 -0
  128. package/docs/gatsby-node.js +101 -0
  129. package/docs/package-lock.json +20867 -0
  130. package/docs/package.json +36 -0
  131. package/docs/src/@primer/gatsby-theme-doctocat/components/hero.js +21 -0
  132. package/docs/src/@primer/gatsby-theme-doctocat/components/live-preview-wrapper.js +41 -0
  133. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +73 -0
  134. package/docs/src/@primer/gatsby-theme-doctocat/mdx-components.js +9 -0
  135. package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +137 -0
  136. package/docs/src/@primer/gatsby-theme-doctocat/primer-components-hero.svg +1411 -0
  137. package/docs/src/component-checklist.js +81 -0
  138. package/docs/src/component-statuses.js +74 -0
  139. package/docs/src/props.js +77 -0
  140. package/jest.config.js +13 -0
  141. package/lib/ActionList/Item.js +3 -3
  142. package/lib/ActionList2/Item.js +3 -1
  143. package/lib/ActionList2/List.js +1 -2
  144. package/lib/ActionList2/Selection.js +3 -1
  145. package/lib/Autocomplete/Autocomplete.d.ts +1 -0
  146. package/lib/Autocomplete/AutocompleteInput.d.ts +1 -0
  147. package/lib/Avatar.d.ts +1 -2
  148. package/lib/Avatar.js +1 -1
  149. package/lib/BranchName.d.ts +1 -2
  150. package/lib/BranchName.js +1 -1
  151. package/lib/Button/Button.d.ts +1 -0
  152. package/lib/Button/ButtonClose.d.ts +2 -1
  153. package/lib/Button/ButtonDanger.d.ts +1 -0
  154. package/lib/Button/ButtonInvisible.d.ts +1 -0
  155. package/lib/Button/ButtonOutline.d.ts +1 -0
  156. package/lib/Button/ButtonPrimary.d.ts +1 -0
  157. package/lib/CircleOcticon.d.ts +1 -0
  158. package/lib/Details.d.ts +1 -2
  159. package/lib/Details.js +1 -3
  160. package/lib/Dialog.d.ts +3 -2
  161. package/lib/Dropdown.d.ts +6 -66
  162. package/lib/DropdownMenu/DropdownButton.d.ts +2 -1
  163. package/lib/FilterList.d.ts +1 -0
  164. package/lib/Heading.d.ts +1 -2
  165. package/lib/Heading.js +1 -6
  166. package/lib/Position.d.ts +4 -4
  167. package/lib/ProgressBar.d.ts +16 -11
  168. package/lib/ProgressBar.js +6 -10
  169. package/lib/SelectMenu/SelectMenu.d.ts +10 -4
  170. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  171. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  172. package/lib/Spinner.d.ts +1 -2
  173. package/lib/Spinner.js +1 -3
  174. package/lib/TextInputWithTokens.d.ts +1 -0
  175. package/lib/Token/AvatarToken.d.ts +1 -1
  176. package/lib/Token/IssueLabelToken.d.ts +1 -1
  177. package/lib/Token/Token.d.ts +1 -1
  178. package/lib/__tests__/ActionList.test.d.ts +1 -0
  179. package/lib/__tests__/ActionList.test.js +69 -0
  180. package/lib/__tests__/ActionList.types.test.d.ts +6 -0
  181. package/lib/__tests__/ActionList.types.test.js +69 -0
  182. package/lib/__tests__/ActionList2.test.d.ts +2 -0
  183. package/lib/__tests__/ActionList2.test.js +170 -0
  184. package/lib/__tests__/ActionMenu.test.d.ts +1 -0
  185. package/lib/__tests__/ActionMenu.test.js +151 -0
  186. package/lib/__tests__/AnchoredOverlay.test.d.ts +1 -0
  187. package/lib/__tests__/AnchoredOverlay.test.js +162 -0
  188. package/lib/__tests__/Autocomplete.test.d.ts +1 -0
  189. package/lib/__tests__/Autocomplete.test.js +528 -0
  190. package/lib/__tests__/Avatar.test.d.ts +1 -0
  191. package/lib/__tests__/Avatar.test.js +69 -0
  192. package/lib/__tests__/Avatar.types.test.d.ts +3 -0
  193. package/lib/__tests__/Avatar.types.test.js +31 -0
  194. package/lib/__tests__/AvatarStack.test.d.ts +1 -0
  195. package/lib/__tests__/AvatarStack.test.js +71 -0
  196. package/lib/__tests__/BorderBox.test.d.ts +1 -0
  197. package/lib/__tests__/BorderBox.test.js +58 -0
  198. package/lib/__tests__/Box.test.d.ts +1 -0
  199. package/lib/__tests__/Box.test.js +78 -0
  200. package/lib/__tests__/BranchName.test.d.ts +1 -0
  201. package/lib/__tests__/BranchName.test.js +36 -0
  202. package/lib/__tests__/BranchName.types.test.d.ts +3 -0
  203. package/lib/__tests__/BranchName.types.test.js +28 -0
  204. package/lib/__tests__/Breadcrumbs.test.d.ts +1 -0
  205. package/lib/__tests__/Breadcrumbs.test.js +40 -0
  206. package/lib/__tests__/Breadcrumbs.types.test.d.ts +3 -0
  207. package/lib/__tests__/Breadcrumbs.types.test.js +25 -0
  208. package/lib/__tests__/BreadcrumbsItem.test.d.ts +1 -0
  209. package/lib/__tests__/BreadcrumbsItem.test.js +49 -0
  210. package/lib/__tests__/Button.test.d.ts +1 -0
  211. package/lib/__tests__/Button.test.js +147 -0
  212. package/lib/__tests__/Caret.test.d.ts +1 -0
  213. package/lib/__tests__/Caret.test.js +52 -0
  214. package/lib/__tests__/Checkbox.test.d.ts +2 -0
  215. package/lib/__tests__/Checkbox.test.js +189 -0
  216. package/lib/__tests__/CircleBadge.test.d.ts +1 -0
  217. package/lib/__tests__/CircleBadge.test.js +83 -0
  218. package/lib/__tests__/CircleBadge.types.test.d.ts +3 -0
  219. package/lib/__tests__/CircleBadge.types.test.js +28 -0
  220. package/lib/__tests__/CircleOcticon.test.d.ts +1 -0
  221. package/lib/__tests__/CircleOcticon.test.js +71 -0
  222. package/lib/__tests__/ConfirmationDialog.test.d.ts +1 -0
  223. package/lib/__tests__/ConfirmationDialog.test.js +134 -0
  224. package/lib/__tests__/CounterLabel.test.d.ts +1 -0
  225. package/lib/__tests__/CounterLabel.test.js +58 -0
  226. package/lib/__tests__/CounterLabel.types.test.d.ts +3 -0
  227. package/lib/__tests__/CounterLabel.types.test.js +28 -0
  228. package/lib/__tests__/Details.test.d.ts +1 -0
  229. package/lib/__tests__/Details.test.js +117 -0
  230. package/lib/__tests__/Details.types.test.d.ts +3 -0
  231. package/lib/__tests__/Details.types.test.js +28 -0
  232. package/lib/__tests__/Dialog.test.d.ts +1 -0
  233. package/lib/__tests__/Dialog.test.js +184 -0
  234. package/lib/__tests__/Dialog.types.test.d.ts +3 -0
  235. package/lib/__tests__/Dialog.types.test.js +28 -0
  236. package/lib/__tests__/Dialog2.types.test.d.ts +3 -0
  237. package/lib/__tests__/Dialog2.types.test.js +31 -0
  238. package/lib/__tests__/Dropdown.test.d.ts +1 -0
  239. package/lib/__tests__/Dropdown.test.js +63 -0
  240. package/lib/__tests__/Dropdown.types.test.d.ts +3 -0
  241. package/lib/__tests__/Dropdown.types.test.js +31 -0
  242. package/lib/__tests__/DropdownMenu.test.d.ts +1 -0
  243. package/lib/__tests__/DropdownMenu.test.js +150 -0
  244. package/lib/__tests__/FilterList.test.d.ts +1 -0
  245. package/lib/__tests__/FilterList.test.js +36 -0
  246. package/lib/__tests__/FilterList.types.test.d.ts +3 -0
  247. package/lib/__tests__/FilterList.types.test.js +27 -0
  248. package/lib/__tests__/FilterListItem.test.d.ts +1 -0
  249. package/lib/__tests__/FilterListItem.test.js +46 -0
  250. package/lib/__tests__/FilteredSearch.test.d.ts +1 -0
  251. package/lib/__tests__/FilteredSearch.test.js +36 -0
  252. package/lib/__tests__/FilteredSearch.types.test.d.ts +3 -0
  253. package/lib/__tests__/FilteredSearch.types.test.js +28 -0
  254. package/lib/__tests__/Flash.test.d.ts +1 -0
  255. package/lib/__tests__/Flash.test.js +62 -0
  256. package/lib/__tests__/Flash.types.test.d.ts +3 -0
  257. package/lib/__tests__/Flash.types.test.js +28 -0
  258. package/lib/__tests__/Flex.test.d.ts +1 -0
  259. package/lib/__tests__/Flex.test.js +74 -0
  260. package/lib/__tests__/FormGroup.test.d.ts +1 -0
  261. package/lib/__tests__/FormGroup.test.js +54 -0
  262. package/lib/__tests__/FormGroup.types.test.d.ts +3 -0
  263. package/lib/__tests__/FormGroup.types.test.js +28 -0
  264. package/lib/__tests__/Grid.test.d.ts +1 -0
  265. package/lib/__tests__/Grid.test.js +104 -0
  266. package/lib/__tests__/Header.test.d.ts +1 -0
  267. package/lib/__tests__/Header.test.js +58 -0
  268. package/lib/__tests__/Header.types.test.d.ts +3 -0
  269. package/lib/__tests__/Header.types.test.js +29 -0
  270. package/lib/__tests__/Heading.test.d.ts +1 -0
  271. package/lib/__tests__/Heading.test.js +142 -0
  272. package/lib/__tests__/Heading.types.test.d.ts +3 -0
  273. package/lib/__tests__/Heading.types.test.js +28 -0
  274. package/lib/__tests__/KeyPaths.types.test.d.ts +11 -0
  275. package/lib/__tests__/KeyPaths.types.test.js +10 -0
  276. package/lib/__tests__/Label.test.d.ts +1 -0
  277. package/lib/__tests__/Label.test.js +46 -0
  278. package/lib/__tests__/Label.types.test.d.ts +3 -0
  279. package/lib/__tests__/Label.types.test.js +28 -0
  280. package/lib/__tests__/LabelGroup.test.d.ts +1 -0
  281. package/lib/__tests__/LabelGroup.test.js +38 -0
  282. package/lib/__tests__/LabelGroup.types.test.d.ts +3 -0
  283. package/lib/__tests__/LabelGroup.types.test.js +28 -0
  284. package/lib/__tests__/Link.test.d.ts +1 -0
  285. package/lib/__tests__/Link.test.js +76 -0
  286. package/lib/__tests__/Link.types.test.d.ts +3 -0
  287. package/lib/__tests__/Link.types.test.js +28 -0
  288. package/lib/__tests__/Merge.types.test.d.ts +30 -0
  289. package/lib/__tests__/Merge.types.test.js +27 -0
  290. package/lib/__tests__/NewButton.test.d.ts +1 -0
  291. package/lib/__tests__/NewButton.test.js +95 -0
  292. package/lib/__tests__/Overlay.test.d.ts +1 -0
  293. package/lib/__tests__/Overlay.test.js +145 -0
  294. package/lib/__tests__/Overlay.types.test.d.ts +6 -0
  295. package/lib/__tests__/Overlay.types.test.js +73 -0
  296. package/lib/__tests__/Pagehead.test.d.ts +1 -0
  297. package/lib/__tests__/Pagehead.test.js +37 -0
  298. package/lib/__tests__/Pagehead.types.test.d.ts +3 -0
  299. package/lib/__tests__/Pagehead.types.test.js +28 -0
  300. package/lib/__tests__/Pagination/Pagination.test.d.ts +1 -0
  301. package/lib/__tests__/Pagination/Pagination.test.js +47 -0
  302. package/lib/__tests__/Pagination/PaginationModel.test.d.ts +1 -0
  303. package/lib/__tests__/Pagination/PaginationModel.test.js +186 -0
  304. package/lib/__tests__/Pagination.types.test.d.ts +3 -0
  305. package/lib/__tests__/Pagination.types.test.js +33 -0
  306. package/lib/__tests__/PointerBox.test.d.ts +1 -0
  307. package/lib/__tests__/PointerBox.test.js +46 -0
  308. package/lib/__tests__/Popover.test.d.ts +1 -0
  309. package/lib/__tests__/Popover.test.js +66 -0
  310. package/lib/__tests__/Popover.types.test.d.ts +3 -0
  311. package/lib/__tests__/Popover.types.test.js +27 -0
  312. package/lib/__tests__/Portal.test.d.ts +1 -0
  313. package/lib/__tests__/Portal.test.js +124 -0
  314. package/lib/__tests__/Position.test.d.ts +1 -0
  315. package/lib/__tests__/Position.test.js +143 -0
  316. package/lib/__tests__/ProgressBar.test.d.ts +1 -0
  317. package/lib/__tests__/ProgressBar.test.js +68 -0
  318. package/lib/__tests__/SelectMenu.test.d.ts +1 -0
  319. package/lib/__tests__/SelectMenu.test.js +155 -0
  320. package/lib/__tests__/SelectMenu.types.test.d.ts +3 -0
  321. package/lib/__tests__/SelectMenu.types.test.js +47 -0
  322. package/lib/__tests__/SelectPanel.test.d.ts +1 -0
  323. package/lib/__tests__/SelectPanel.test.js +80 -0
  324. package/lib/__tests__/SelectPanel.types.test.d.ts +3 -0
  325. package/lib/__tests__/SelectPanel.types.test.js +44 -0
  326. package/lib/__tests__/SideNav.test.d.ts +1 -0
  327. package/lib/__tests__/SideNav.test.js +71 -0
  328. package/lib/__tests__/SideNav.types.test.d.ts +3 -0
  329. package/lib/__tests__/SideNav.types.test.js +28 -0
  330. package/lib/__tests__/Spinner.test.d.ts +1 -0
  331. package/lib/__tests__/Spinner.test.js +53 -0
  332. package/lib/__tests__/StateLabel.test.d.ts +1 -0
  333. package/lib/__tests__/StateLabel.test.js +71 -0
  334. package/lib/__tests__/StateLabel.types.test.d.ts +3 -0
  335. package/lib/__tests__/StateLabel.types.test.js +28 -0
  336. package/lib/__tests__/StyledOcticon.test.d.ts +1 -0
  337. package/lib/__tests__/StyledOcticon.test.js +40 -0
  338. package/lib/__tests__/StyledOcticon.types.test.d.ts +3 -0
  339. package/lib/__tests__/StyledOcticon.types.test.js +32 -0
  340. package/lib/__tests__/SubNav.test.d.ts +1 -0
  341. package/lib/__tests__/SubNav.test.js +62 -0
  342. package/lib/__tests__/SubNav.types.test.d.ts +3 -0
  343. package/lib/__tests__/SubNav.types.test.js +27 -0
  344. package/lib/__tests__/SubNavLink.test.d.ts +1 -0
  345. package/lib/__tests__/SubNavLink.test.js +49 -0
  346. package/lib/__tests__/TabNav.test.d.ts +1 -0
  347. package/lib/__tests__/TabNav.test.js +49 -0
  348. package/lib/__tests__/TabNav.types.test.d.ts +3 -0
  349. package/lib/__tests__/TabNav.types.test.js +25 -0
  350. package/lib/__tests__/Text.test.d.ts +1 -0
  351. package/lib/__tests__/Text.test.js +105 -0
  352. package/lib/__tests__/TextInput.test.d.ts +1 -0
  353. package/lib/__tests__/TextInput.test.js +78 -0
  354. package/lib/__tests__/TextInputWithTokens.test.d.ts +1 -0
  355. package/lib/__tests__/TextInputWithTokens.test.js +572 -0
  356. package/lib/__tests__/ThemeProvider.test.d.ts +1 -0
  357. package/lib/__tests__/ThemeProvider.test.js +444 -0
  358. package/lib/__tests__/Timeline.test.d.ts +1 -0
  359. package/lib/__tests__/Timeline.test.js +75 -0
  360. package/lib/__tests__/Timeline.types.test.d.ts +3 -0
  361. package/lib/__tests__/Timeline.types.test.js +31 -0
  362. package/lib/__tests__/Token.test.d.ts +1 -0
  363. package/lib/__tests__/Token.test.js +180 -0
  364. package/lib/__tests__/Tooltip.test.d.ts +1 -0
  365. package/lib/__tests__/Tooltip.test.js +69 -0
  366. package/lib/__tests__/Tooltip.types.test.d.ts +3 -0
  367. package/lib/__tests__/Tooltip.types.test.js +28 -0
  368. package/lib/__tests__/Truncate.test.d.ts +1 -0
  369. package/lib/__tests__/Truncate.test.js +63 -0
  370. package/lib/__tests__/Truncate.types.test.d.ts +3 -0
  371. package/lib/__tests__/Truncate.types.test.js +31 -0
  372. package/lib/__tests__/UnderlineNav.test.d.ts +1 -0
  373. package/lib/__tests__/UnderlineNav.test.js +72 -0
  374. package/lib/__tests__/UnderlineNav.types.test.d.ts +3 -0
  375. package/lib/__tests__/UnderlineNav.types.test.js +25 -0
  376. package/lib/__tests__/UnderlineNavLink.test.d.ts +1 -0
  377. package/lib/__tests__/UnderlineNavLink.test.js +51 -0
  378. package/lib/__tests__/behaviors/anchoredPosition.test.d.ts +1 -0
  379. package/lib/__tests__/behaviors/anchoredPosition.test.js +390 -0
  380. package/lib/__tests__/behaviors/focusTrap.test.d.ts +1 -0
  381. package/lib/__tests__/behaviors/focusTrap.test.js +234 -0
  382. package/lib/__tests__/behaviors/focusZone.test.d.ts +1 -0
  383. package/lib/__tests__/behaviors/focusZone.test.js +570 -0
  384. package/lib/__tests__/behaviors/iterateFocusableElements.test.d.ts +1 -0
  385. package/lib/__tests__/behaviors/iterateFocusableElements.test.js +55 -0
  386. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
  387. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +226 -0
  388. package/lib/__tests__/filterObject.test.d.ts +1 -0
  389. package/lib/__tests__/filterObject.test.js +30 -0
  390. package/lib/__tests__/hooks/useAnchoredPosition.test.d.ts +1 -0
  391. package/lib/__tests__/hooks/useAnchoredPosition.test.js +54 -0
  392. package/lib/__tests__/hooks/useOnEscapePress.test.d.ts +1 -0
  393. package/lib/__tests__/hooks/useOnEscapePress.test.js +32 -0
  394. package/lib/__tests__/hooks/useOnOutsideClick.test.d.ts +1 -0
  395. package/lib/__tests__/hooks/useOnOutsideClick.test.js +87 -0
  396. package/lib/__tests__/hooks/useOpenAndCloseFocus.test.d.ts +1 -0
  397. package/lib/__tests__/hooks/useOpenAndCloseFocus.test.js +60 -0
  398. package/lib/__tests__/hooks/useProvidedStateOrCreate.test.d.ts +1 -0
  399. package/lib/__tests__/hooks/useProvidedStateOrCreate.test.js +45 -0
  400. package/lib/__tests__/theme.test.d.ts +1 -0
  401. package/lib/__tests__/theme.test.js +36 -0
  402. package/lib/__tests__/themeGet.test.d.ts +1 -0
  403. package/lib/__tests__/themeGet.test.js +25 -0
  404. package/lib/__tests__/themePreval.test.d.ts +1 -0
  405. package/lib/__tests__/themePreval.test.js +14 -0
  406. package/lib/__tests__/useSafeTimeout.test.d.ts +1 -0
  407. package/lib/__tests__/useSafeTimeout.test.js +45 -0
  408. package/lib/__tests__/utils/createSlots.test.d.ts +1 -0
  409. package/lib/__tests__/utils/createSlots.test.js +75 -0
  410. package/lib/stories/ActionList.stories.js +454 -0
  411. package/lib/stories/ActionList2.stories.js +923 -0
  412. package/lib/stories/ActionMenu.stories.js +348 -0
  413. package/lib/stories/AnchoredOverlay.stories.js +127 -0
  414. package/lib/stories/Autocomplete.stories.js +619 -0
  415. package/lib/stories/AvatarStack.stories.js +49 -0
  416. package/lib/stories/Button.stories.js +125 -0
  417. package/lib/stories/Checkbox.stories.js +227 -0
  418. package/lib/stories/ConfirmationDialog.stories.js +119 -0
  419. package/lib/stories/Dialog.stories.js +269 -0
  420. package/lib/stories/DropdownMenu.stories.js +122 -0
  421. package/lib/stories/IssueLabelToken.stories.js +165 -0
  422. package/lib/stories/NewButton.stories.js +230 -0
  423. package/lib/stories/Overlay.stories.js +204 -0
  424. package/lib/stories/Portal.stories.js +104 -0
  425. package/lib/stories/ProfileToken.stories.js +162 -0
  426. package/lib/stories/SelectPanel.stories.js +399 -0
  427. package/lib/stories/TextInput.stories.js +144 -0
  428. package/lib/stories/TextInputWithTokens.stories.js +252 -0
  429. package/lib/stories/ThemeProvider.stories.js +102 -0
  430. package/lib/stories/Token.stories.js +176 -0
  431. package/lib/stories/useAnchoredPosition.stories.js +351 -0
  432. package/lib/stories/useFocusTrap.stories.js +360 -0
  433. package/lib/stories/useFocusZone.stories.js +607 -0
  434. package/lib/utils/testing.d.ts +1 -0
  435. package/lib/utils/testing.js +29 -0
  436. package/lib-esm/ActionList/Item.js +3 -3
  437. package/lib-esm/ActionList2/Item.js +3 -1
  438. package/lib-esm/ActionList2/List.js +1 -2
  439. package/lib-esm/ActionList2/Selection.js +3 -1
  440. package/lib-esm/Autocomplete/Autocomplete.d.ts +1 -0
  441. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +1 -0
  442. package/lib-esm/Avatar.d.ts +1 -2
  443. package/lib-esm/Avatar.js +2 -2
  444. package/lib-esm/BranchName.d.ts +1 -2
  445. package/lib-esm/BranchName.js +2 -2
  446. package/lib-esm/Button/Button.d.ts +1 -0
  447. package/lib-esm/Button/ButtonClose.d.ts +2 -1
  448. package/lib-esm/Button/ButtonDanger.d.ts +1 -0
  449. package/lib-esm/Button/ButtonInvisible.d.ts +1 -0
  450. package/lib-esm/Button/ButtonOutline.d.ts +1 -0
  451. package/lib-esm/Button/ButtonPrimary.d.ts +1 -0
  452. package/lib-esm/CircleOcticon.d.ts +1 -0
  453. package/lib-esm/Details.d.ts +1 -2
  454. package/lib-esm/Details.js +1 -2
  455. package/lib-esm/Dialog.d.ts +3 -2
  456. package/lib-esm/Dropdown.d.ts +6 -66
  457. package/lib-esm/DropdownMenu/DropdownButton.d.ts +2 -1
  458. package/lib-esm/FilterList.d.ts +1 -0
  459. package/lib-esm/Heading.d.ts +1 -2
  460. package/lib-esm/Heading.js +2 -6
  461. package/lib-esm/Position.d.ts +4 -4
  462. package/lib-esm/ProgressBar.d.ts +16 -11
  463. package/lib-esm/ProgressBar.js +7 -11
  464. package/lib-esm/SelectMenu/SelectMenu.d.ts +10 -4
  465. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  466. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  467. package/lib-esm/Spinner.d.ts +1 -2
  468. package/lib-esm/Spinner.js +1 -2
  469. package/lib-esm/TextInputWithTokens.d.ts +1 -0
  470. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  471. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  472. package/lib-esm/Token/Token.d.ts +1 -1
  473. package/lib-esm/__tests__/ActionList.test.d.ts +1 -0
  474. package/lib-esm/__tests__/ActionList.test.js +57 -0
  475. package/lib-esm/__tests__/ActionList.types.test.d.ts +6 -0
  476. package/lib-esm/__tests__/ActionList.types.test.js +45 -0
  477. package/lib-esm/__tests__/ActionList2.test.d.ts +2 -0
  478. package/lib-esm/__tests__/ActionList2.test.js +144 -0
  479. package/lib-esm/__tests__/ActionMenu.test.d.ts +1 -0
  480. package/lib-esm/__tests__/ActionMenu.test.js +139 -0
  481. package/lib-esm/__tests__/AnchoredOverlay.test.d.ts +1 -0
  482. package/lib-esm/__tests__/AnchoredOverlay.test.js +136 -0
  483. package/lib-esm/__tests__/Autocomplete.test.d.ts +1 -0
  484. package/lib-esm/__tests__/Autocomplete.test.js +494 -0
  485. package/lib-esm/__tests__/Avatar.test.d.ts +1 -0
  486. package/lib-esm/__tests__/Avatar.test.js +58 -0
  487. package/lib-esm/__tests__/Avatar.types.test.d.ts +3 -0
  488. package/lib-esm/__tests__/Avatar.types.test.js +16 -0
  489. package/lib-esm/__tests__/AvatarStack.test.d.ts +1 -0
  490. package/lib-esm/__tests__/AvatarStack.test.js +58 -0
  491. package/lib-esm/__tests__/BorderBox.test.d.ts +1 -0
  492. package/lib-esm/__tests__/BorderBox.test.js +47 -0
  493. package/lib-esm/__tests__/Box.test.d.ts +1 -0
  494. package/lib-esm/__tests__/Box.test.js +67 -0
  495. package/lib-esm/__tests__/BranchName.test.d.ts +1 -0
  496. package/lib-esm/__tests__/BranchName.test.js +26 -0
  497. package/lib-esm/__tests__/BranchName.types.test.d.ts +3 -0
  498. package/lib-esm/__tests__/BranchName.types.test.js +13 -0
  499. package/lib-esm/__tests__/Breadcrumbs.test.d.ts +1 -0
  500. package/lib-esm/__tests__/Breadcrumbs.test.js +30 -0
  501. package/lib-esm/__tests__/Breadcrumbs.types.test.d.ts +3 -0
  502. package/lib-esm/__tests__/Breadcrumbs.types.test.js +12 -0
  503. package/lib-esm/__tests__/BreadcrumbsItem.test.d.ts +1 -0
  504. package/lib-esm/__tests__/BreadcrumbsItem.test.js +39 -0
  505. package/lib-esm/__tests__/Button.test.d.ts +1 -0
  506. package/lib-esm/__tests__/Button.test.js +137 -0
  507. package/lib-esm/__tests__/Caret.test.d.ts +1 -0
  508. package/lib-esm/__tests__/Caret.test.js +42 -0
  509. package/lib-esm/__tests__/Checkbox.test.d.ts +2 -0
  510. package/lib-esm/__tests__/Checkbox.test.js +169 -0
  511. package/lib-esm/__tests__/CircleBadge.test.d.ts +1 -0
  512. package/lib-esm/__tests__/CircleBadge.test.js +70 -0
  513. package/lib-esm/__tests__/CircleBadge.types.test.d.ts +3 -0
  514. package/lib-esm/__tests__/CircleBadge.types.test.js +13 -0
  515. package/lib-esm/__tests__/CircleOcticon.test.d.ts +1 -0
  516. package/lib-esm/__tests__/CircleOcticon.test.js +59 -0
  517. package/lib-esm/__tests__/ConfirmationDialog.test.d.ts +1 -0
  518. package/lib-esm/__tests__/ConfirmationDialog.test.js +113 -0
  519. package/lib-esm/__tests__/CounterLabel.test.d.ts +1 -0
  520. package/lib-esm/__tests__/CounterLabel.test.js +47 -0
  521. package/lib-esm/__tests__/CounterLabel.types.test.d.ts +3 -0
  522. package/lib-esm/__tests__/CounterLabel.types.test.js +13 -0
  523. package/lib-esm/__tests__/Details.test.d.ts +1 -0
  524. package/lib-esm/__tests__/Details.test.js +107 -0
  525. package/lib-esm/__tests__/Details.types.test.d.ts +3 -0
  526. package/lib-esm/__tests__/Details.types.test.js +13 -0
  527. package/lib-esm/__tests__/Dialog.test.d.ts +1 -0
  528. package/lib-esm/__tests__/Dialog.test.js +171 -0
  529. package/lib-esm/__tests__/Dialog.types.test.d.ts +3 -0
  530. package/lib-esm/__tests__/Dialog.types.test.js +13 -0
  531. package/lib-esm/__tests__/Dialog2.types.test.d.ts +3 -0
  532. package/lib-esm/__tests__/Dialog2.types.test.js +16 -0
  533. package/lib-esm/__tests__/Dropdown.test.d.ts +1 -0
  534. package/lib-esm/__tests__/Dropdown.test.js +53 -0
  535. package/lib-esm/__tests__/Dropdown.types.test.d.ts +3 -0
  536. package/lib-esm/__tests__/Dropdown.types.test.js +17 -0
  537. package/lib-esm/__tests__/DropdownMenu.test.d.ts +1 -0
  538. package/lib-esm/__tests__/DropdownMenu.test.js +137 -0
  539. package/lib-esm/__tests__/FilterList.test.d.ts +1 -0
  540. package/lib-esm/__tests__/FilterList.test.js +26 -0
  541. package/lib-esm/__tests__/FilterList.types.test.d.ts +3 -0
  542. package/lib-esm/__tests__/FilterList.types.test.js +13 -0
  543. package/lib-esm/__tests__/FilterListItem.test.d.ts +1 -0
  544. package/lib-esm/__tests__/FilterListItem.test.js +36 -0
  545. package/lib-esm/__tests__/FilteredSearch.test.d.ts +1 -0
  546. package/lib-esm/__tests__/FilteredSearch.test.js +26 -0
  547. package/lib-esm/__tests__/FilteredSearch.types.test.d.ts +3 -0
  548. package/lib-esm/__tests__/FilteredSearch.types.test.js +13 -0
  549. package/lib-esm/__tests__/Flash.test.d.ts +1 -0
  550. package/lib-esm/__tests__/Flash.test.js +51 -0
  551. package/lib-esm/__tests__/Flash.types.test.d.ts +3 -0
  552. package/lib-esm/__tests__/Flash.types.test.js +13 -0
  553. package/lib-esm/__tests__/Flex.test.d.ts +1 -0
  554. package/lib-esm/__tests__/Flex.test.js +64 -0
  555. package/lib-esm/__tests__/FormGroup.test.d.ts +1 -0
  556. package/lib-esm/__tests__/FormGroup.test.js +44 -0
  557. package/lib-esm/__tests__/FormGroup.types.test.d.ts +3 -0
  558. package/lib-esm/__tests__/FormGroup.types.test.js +13 -0
  559. package/lib-esm/__tests__/Grid.test.d.ts +1 -0
  560. package/lib-esm/__tests__/Grid.test.js +94 -0
  561. package/lib-esm/__tests__/Header.test.d.ts +1 -0
  562. package/lib-esm/__tests__/Header.test.js +48 -0
  563. package/lib-esm/__tests__/Header.types.test.d.ts +3 -0
  564. package/lib-esm/__tests__/Header.types.test.js +15 -0
  565. package/lib-esm/__tests__/Heading.test.d.ts +1 -0
  566. package/lib-esm/__tests__/Heading.test.js +131 -0
  567. package/lib-esm/__tests__/Heading.types.test.d.ts +3 -0
  568. package/lib-esm/__tests__/Heading.types.test.js +13 -0
  569. package/lib-esm/__tests__/KeyPaths.types.test.d.ts +11 -0
  570. package/lib-esm/__tests__/KeyPaths.types.test.js +3 -0
  571. package/lib-esm/__tests__/Label.test.d.ts +1 -0
  572. package/lib-esm/__tests__/Label.test.js +36 -0
  573. package/lib-esm/__tests__/Label.types.test.d.ts +3 -0
  574. package/lib-esm/__tests__/Label.types.test.js +13 -0
  575. package/lib-esm/__tests__/LabelGroup.test.d.ts +1 -0
  576. package/lib-esm/__tests__/LabelGroup.test.js +26 -0
  577. package/lib-esm/__tests__/LabelGroup.types.test.d.ts +3 -0
  578. package/lib-esm/__tests__/LabelGroup.types.test.js +13 -0
  579. package/lib-esm/__tests__/Link.test.d.ts +1 -0
  580. package/lib-esm/__tests__/Link.test.js +66 -0
  581. package/lib-esm/__tests__/Link.types.test.d.ts +3 -0
  582. package/lib-esm/__tests__/Link.types.test.js +13 -0
  583. package/lib-esm/__tests__/Merge.types.test.d.ts +30 -0
  584. package/lib-esm/__tests__/Merge.types.test.js +14 -0
  585. package/lib-esm/__tests__/NewButton.test.d.ts +1 -0
  586. package/lib-esm/__tests__/NewButton.test.js +84 -0
  587. package/lib-esm/__tests__/Overlay.test.d.ts +1 -0
  588. package/lib-esm/__tests__/Overlay.test.js +123 -0
  589. package/lib-esm/__tests__/Overlay.types.test.d.ts +6 -0
  590. package/lib-esm/__tests__/Overlay.types.test.js +49 -0
  591. package/lib-esm/__tests__/Pagehead.test.d.ts +1 -0
  592. package/lib-esm/__tests__/Pagehead.test.js +26 -0
  593. package/lib-esm/__tests__/Pagehead.types.test.d.ts +3 -0
  594. package/lib-esm/__tests__/Pagehead.types.test.js +13 -0
  595. package/lib-esm/__tests__/Pagination/Pagination.test.d.ts +1 -0
  596. package/lib-esm/__tests__/Pagination/Pagination.test.js +35 -0
  597. package/lib-esm/__tests__/Pagination/PaginationModel.test.d.ts +1 -0
  598. package/lib-esm/__tests__/Pagination/PaginationModel.test.js +182 -0
  599. package/lib-esm/__tests__/Pagination.types.test.d.ts +3 -0
  600. package/lib-esm/__tests__/Pagination.types.test.js +18 -0
  601. package/lib-esm/__tests__/PointerBox.test.d.ts +1 -0
  602. package/lib-esm/__tests__/PointerBox.test.js +36 -0
  603. package/lib-esm/__tests__/Popover.test.d.ts +1 -0
  604. package/lib-esm/__tests__/Popover.test.js +53 -0
  605. package/lib-esm/__tests__/Popover.types.test.d.ts +3 -0
  606. package/lib-esm/__tests__/Popover.types.test.js +13 -0
  607. package/lib-esm/__tests__/Portal.test.d.ts +1 -0
  608. package/lib-esm/__tests__/Portal.test.js +104 -0
  609. package/lib-esm/__tests__/Position.test.d.ts +1 -0
  610. package/lib-esm/__tests__/Position.test.js +133 -0
  611. package/lib-esm/__tests__/ProgressBar.test.d.ts +1 -0
  612. package/lib-esm/__tests__/ProgressBar.test.js +58 -0
  613. package/lib-esm/__tests__/SelectMenu.test.d.ts +1 -0
  614. package/lib-esm/__tests__/SelectMenu.test.js +145 -0
  615. package/lib-esm/__tests__/SelectMenu.types.test.d.ts +3 -0
  616. package/lib-esm/__tests__/SelectMenu.types.test.js +33 -0
  617. package/lib-esm/__tests__/SelectPanel.test.d.ts +1 -0
  618. package/lib-esm/__tests__/SelectPanel.test.js +65 -0
  619. package/lib-esm/__tests__/SelectPanel.types.test.d.ts +3 -0
  620. package/lib-esm/__tests__/SelectPanel.types.test.js +29 -0
  621. package/lib-esm/__tests__/SideNav.test.d.ts +1 -0
  622. package/lib-esm/__tests__/SideNav.test.js +60 -0
  623. package/lib-esm/__tests__/SideNav.types.test.d.ts +3 -0
  624. package/lib-esm/__tests__/SideNav.types.test.js +13 -0
  625. package/lib-esm/__tests__/Spinner.test.d.ts +1 -0
  626. package/lib-esm/__tests__/Spinner.test.js +43 -0
  627. package/lib-esm/__tests__/StateLabel.test.d.ts +1 -0
  628. package/lib-esm/__tests__/StateLabel.test.js +61 -0
  629. package/lib-esm/__tests__/StateLabel.types.test.d.ts +3 -0
  630. package/lib-esm/__tests__/StateLabel.types.test.js +13 -0
  631. package/lib-esm/__tests__/StyledOcticon.test.d.ts +1 -0
  632. package/lib-esm/__tests__/StyledOcticon.test.js +29 -0
  633. package/lib-esm/__tests__/StyledOcticon.types.test.d.ts +3 -0
  634. package/lib-esm/__tests__/StyledOcticon.types.test.js +16 -0
  635. package/lib-esm/__tests__/SubNav.test.d.ts +1 -0
  636. package/lib-esm/__tests__/SubNav.test.js +50 -0
  637. package/lib-esm/__tests__/SubNav.types.test.d.ts +3 -0
  638. package/lib-esm/__tests__/SubNav.types.test.js +14 -0
  639. package/lib-esm/__tests__/SubNavLink.test.d.ts +1 -0
  640. package/lib-esm/__tests__/SubNavLink.test.js +39 -0
  641. package/lib-esm/__tests__/TabNav.test.d.ts +1 -0
  642. package/lib-esm/__tests__/TabNav.test.js +39 -0
  643. package/lib-esm/__tests__/TabNav.types.test.d.ts +3 -0
  644. package/lib-esm/__tests__/TabNav.types.test.js +12 -0
  645. package/lib-esm/__tests__/Text.test.d.ts +1 -0
  646. package/lib-esm/__tests__/Text.test.js +93 -0
  647. package/lib-esm/__tests__/TextInput.test.d.ts +1 -0
  648. package/lib-esm/__tests__/TextInput.test.js +68 -0
  649. package/lib-esm/__tests__/TextInputWithTokens.test.d.ts +1 -0
  650. package/lib-esm/__tests__/TextInputWithTokens.test.js +511 -0
  651. package/lib-esm/__tests__/ThemeProvider.test.d.ts +1 -0
  652. package/lib-esm/__tests__/ThemeProvider.test.js +408 -0
  653. package/lib-esm/__tests__/Timeline.test.d.ts +1 -0
  654. package/lib-esm/__tests__/Timeline.test.js +65 -0
  655. package/lib-esm/__tests__/Timeline.types.test.d.ts +3 -0
  656. package/lib-esm/__tests__/Timeline.types.test.js +18 -0
  657. package/lib-esm/__tests__/Token.test.d.ts +1 -0
  658. package/lib-esm/__tests__/Token.test.js +166 -0
  659. package/lib-esm/__tests__/Tooltip.test.d.ts +1 -0
  660. package/lib-esm/__tests__/Tooltip.test.js +59 -0
  661. package/lib-esm/__tests__/Tooltip.types.test.d.ts +3 -0
  662. package/lib-esm/__tests__/Tooltip.types.test.js +13 -0
  663. package/lib-esm/__tests__/Truncate.test.d.ts +1 -0
  664. package/lib-esm/__tests__/Truncate.test.js +53 -0
  665. package/lib-esm/__tests__/Truncate.types.test.d.ts +3 -0
  666. package/lib-esm/__tests__/Truncate.types.test.js +16 -0
  667. package/lib-esm/__tests__/UnderlineNav.test.d.ts +1 -0
  668. package/lib-esm/__tests__/UnderlineNav.test.js +60 -0
  669. package/lib-esm/__tests__/UnderlineNav.types.test.d.ts +3 -0
  670. package/lib-esm/__tests__/UnderlineNav.types.test.js +12 -0
  671. package/lib-esm/__tests__/UnderlineNavLink.test.d.ts +1 -0
  672. package/lib-esm/__tests__/UnderlineNavLink.test.js +41 -0
  673. package/lib-esm/__tests__/behaviors/anchoredPosition.test.d.ts +1 -0
  674. package/lib-esm/__tests__/behaviors/anchoredPosition.test.js +388 -0
  675. package/lib-esm/__tests__/behaviors/focusTrap.test.d.ts +1 -0
  676. package/lib-esm/__tests__/behaviors/focusTrap.test.js +227 -0
  677. package/lib-esm/__tests__/behaviors/focusZone.test.d.ts +1 -0
  678. package/lib-esm/__tests__/behaviors/focusZone.test.js +487 -0
  679. package/lib-esm/__tests__/behaviors/iterateFocusableElements.test.d.ts +1 -0
  680. package/lib-esm/__tests__/behaviors/iterateFocusableElements.test.js +48 -0
  681. package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
  682. package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.js +224 -0
  683. package/lib-esm/__tests__/filterObject.test.d.ts +1 -0
  684. package/lib-esm/__tests__/filterObject.test.js +27 -0
  685. package/lib-esm/__tests__/hooks/useAnchoredPosition.test.d.ts +1 -0
  686. package/lib-esm/__tests__/hooks/useAnchoredPosition.test.js +46 -0
  687. package/lib-esm/__tests__/hooks/useOnEscapePress.test.d.ts +1 -0
  688. package/lib-esm/__tests__/hooks/useOnEscapePress.test.js +23 -0
  689. package/lib-esm/__tests__/hooks/useOnOutsideClick.test.d.ts +1 -0
  690. package/lib-esm/__tests__/hooks/useOnOutsideClick.test.js +68 -0
  691. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.test.d.ts +1 -0
  692. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.test.js +52 -0
  693. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.test.d.ts +1 -0
  694. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.test.js +36 -0
  695. package/lib-esm/__tests__/theme.test.d.ts +1 -0
  696. package/lib-esm/__tests__/theme.test.js +33 -0
  697. package/lib-esm/__tests__/themeGet.test.d.ts +1 -0
  698. package/lib-esm/__tests__/themeGet.test.js +22 -0
  699. package/lib-esm/__tests__/themePreval.test.d.ts +1 -0
  700. package/lib-esm/__tests__/themePreval.test.js +7 -0
  701. package/lib-esm/__tests__/useSafeTimeout.test.d.ts +1 -0
  702. package/lib-esm/__tests__/useSafeTimeout.test.js +39 -0
  703. package/lib-esm/__tests__/utils/createSlots.test.d.ts +1 -0
  704. package/lib-esm/__tests__/utils/createSlots.test.js +67 -0
  705. package/lib-esm/stories/ActionList.stories.js +395 -0
  706. package/lib-esm/stories/ActionList2.stories.js +811 -0
  707. package/lib-esm/stories/ActionMenu.stories.js +303 -0
  708. package/lib-esm/stories/AnchoredOverlay.stories.js +101 -0
  709. package/lib-esm/stories/Autocomplete.stories.js +560 -0
  710. package/lib-esm/stories/AvatarStack.stories.js +32 -0
  711. package/lib-esm/stories/Button.stories.js +86 -0
  712. package/lib-esm/stories/Checkbox.stories.js +197 -0
  713. package/lib-esm/stories/ConfirmationDialog.stories.js +94 -0
  714. package/lib-esm/stories/Dialog.stories.js +244 -0
  715. package/lib-esm/stories/DropdownMenu.stories.js +94 -0
  716. package/lib-esm/stories/IssueLabelToken.stories.js +139 -0
  717. package/lib-esm/stories/NewButton.stories.js +178 -0
  718. package/lib-esm/stories/Overlay.stories.js +173 -0
  719. package/lib-esm/stories/Portal.stories.js +68 -0
  720. package/lib-esm/stories/ProfileToken.stories.js +136 -0
  721. package/lib-esm/stories/SelectPanel.stories.js +334 -0
  722. package/lib-esm/stories/TextInput.stories.js +117 -0
  723. package/lib-esm/stories/TextInputWithTokens.stories.js +210 -0
  724. package/lib-esm/stories/ThemeProvider.stories.js +83 -0
  725. package/lib-esm/stories/Token.stories.js +146 -0
  726. package/lib-esm/stories/useAnchoredPosition.stories.js +313 -0
  727. package/lib-esm/stories/useFocusTrap.stories.js +313 -0
  728. package/lib-esm/stories/useFocusZone.stories.js +562 -0
  729. package/lib-esm/utils/testing.d.ts +1 -0
  730. package/lib-esm/utils/testing.js +24 -0
  731. package/migrating.md +250 -0
  732. package/now.json +17 -0
  733. package/package-lock.json +66668 -0
  734. package/package.json +2 -2
  735. package/rollup.config.js +36 -0
  736. package/script/build +21 -0
  737. package/script/build-storybook +10 -0
  738. package/script/setup +12 -0
  739. package/src/ActionList/Divider.tsx +25 -0
  740. package/src/ActionList/Group.tsx +45 -0
  741. package/src/ActionList/Header.tsx +74 -0
  742. package/src/ActionList/Item.tsx +481 -0
  743. package/src/ActionList/List.tsx +258 -0
  744. package/src/ActionList/index.ts +21 -0
  745. package/src/ActionList2/Description.tsx +52 -0
  746. package/src/ActionList2/Divider.tsx +24 -0
  747. package/src/ActionList2/Group.tsx +103 -0
  748. package/src/ActionList2/Item.tsx +247 -0
  749. package/src/ActionList2/LinkItem.tsx +49 -0
  750. package/src/ActionList2/List.tsx +50 -0
  751. package/src/ActionList2/Selection.tsx +61 -0
  752. package/src/ActionList2/Visuals.tsx +76 -0
  753. package/src/ActionList2/index.ts +39 -0
  754. package/src/ActionMenu.tsx +106 -0
  755. package/src/AnchoredOverlay/AnchoredOverlay.tsx +191 -0
  756. package/src/AnchoredOverlay/index.ts +2 -0
  757. package/src/Autocomplete/Autocomplete.tsx +103 -0
  758. package/src/Autocomplete/AutocompleteContext.tsx +19 -0
  759. package/src/Autocomplete/AutocompleteInput.tsx +179 -0
  760. package/src/Autocomplete/AutocompleteMenu.tsx +341 -0
  761. package/src/Autocomplete/AutocompleteOverlay.tsx +68 -0
  762. package/src/Autocomplete/index.ts +2 -0
  763. package/src/Avatar.tsx +44 -0
  764. package/src/AvatarPair.tsx +35 -0
  765. package/src/AvatarStack.tsx +159 -0
  766. package/src/BaseStyles.tsx +53 -0
  767. package/src/BorderBox.tsx +18 -0
  768. package/src/Box.tsx +54 -0
  769. package/src/BranchName.tsx +19 -0
  770. package/src/Breadcrumbs.tsx +101 -0
  771. package/src/Button/Button.tsx +39 -0
  772. package/src/Button/ButtonBase.tsx +39 -0
  773. package/src/Button/ButtonClose.tsx +36 -0
  774. package/src/Button/ButtonDanger.tsx +42 -0
  775. package/src/Button/ButtonGroup.tsx +55 -0
  776. package/src/Button/ButtonInvisible.tsx +31 -0
  777. package/src/Button/ButtonOutline.tsx +42 -0
  778. package/src/Button/ButtonPrimary.tsx +40 -0
  779. package/src/Button/ButtonStyles.tsx +36 -0
  780. package/src/Button/ButtonTableList.tsx +45 -0
  781. package/src/Button/index.ts +16 -0
  782. package/src/Caret.tsx +133 -0
  783. package/src/Checkbox.tsx +75 -0
  784. package/src/CircleBadge.tsx +53 -0
  785. package/src/CircleOcticon.tsx +37 -0
  786. package/src/CounterLabel.tsx +50 -0
  787. package/src/Details.tsx +19 -0
  788. package/src/Dialog/ConfirmationDialog.tsx +184 -0
  789. package/src/Dialog/Dialog.tsx +444 -0
  790. package/src/Dialog.tsx +145 -0
  791. package/src/Dropdown.tsx +154 -0
  792. package/src/DropdownMenu/DropdownButton.tsx +15 -0
  793. package/src/DropdownMenu/DropdownMenu.tsx +115 -0
  794. package/src/DropdownMenu/index.ts +4 -0
  795. package/src/DropdownStyles.ts +128 -0
  796. package/src/FilterList.tsx +75 -0
  797. package/src/FilteredActionList/FilteredActionList.tsx +142 -0
  798. package/src/FilteredActionList/index.ts +2 -0
  799. package/src/FilteredSearch.tsx +27 -0
  800. package/src/Flash.tsx +75 -0
  801. package/src/Flex.tsx +15 -0
  802. package/src/FormGroup.tsx +24 -0
  803. package/src/Grid.tsx +15 -0
  804. package/src/Header.tsx +74 -0
  805. package/src/Heading.tsx +14 -0
  806. package/src/Label.tsx +72 -0
  807. package/src/LabelGroup.tsx +17 -0
  808. package/src/Link.tsx +42 -0
  809. package/src/NewButton/button-counter.tsx +15 -0
  810. package/src/NewButton/button.tsx +283 -0
  811. package/src/NewButton/index.ts +10 -0
  812. package/src/NewButton/types.ts +36 -0
  813. package/src/Overlay.tsx +203 -0
  814. package/src/Pagehead.tsx +16 -0
  815. package/src/Pagination/Pagination.tsx +212 -0
  816. package/src/Pagination/index.ts +4 -0
  817. package/src/Pagination/model.tsx +187 -0
  818. package/src/PointerBox.tsx +31 -0
  819. package/src/Popover.tsx +225 -0
  820. package/src/Portal/Portal.tsx +97 -0
  821. package/src/Portal/index.ts +5 -0
  822. package/src/Position.tsx +63 -0
  823. package/src/ProgressBar.tsx +53 -0
  824. package/src/SelectMenu/SelectMenu.tsx +123 -0
  825. package/src/SelectMenu/SelectMenuContext.tsx +9 -0
  826. package/src/SelectMenu/SelectMenuDivider.tsx +24 -0
  827. package/src/SelectMenu/SelectMenuFilter.tsx +50 -0
  828. package/src/SelectMenu/SelectMenuFooter.tsx +27 -0
  829. package/src/SelectMenu/SelectMenuHeader.tsx +48 -0
  830. package/src/SelectMenu/SelectMenuItem.tsx +136 -0
  831. package/src/SelectMenu/SelectMenuList.tsx +41 -0
  832. package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +25 -0
  833. package/src/SelectMenu/SelectMenuModal.tsx +119 -0
  834. package/src/SelectMenu/SelectMenuTab.tsx +87 -0
  835. package/src/SelectMenu/SelectMenuTabPanel.tsx +29 -0
  836. package/src/SelectMenu/SelectMenuTabs.tsx +43 -0
  837. package/src/SelectMenu/hooks/useKeyboardNav.js +90 -0
  838. package/src/SelectMenu/index.ts +15 -0
  839. package/src/SelectPanel/SelectPanel.tsx +173 -0
  840. package/src/SelectPanel/index.ts +2 -0
  841. package/src/SideNav.tsx +191 -0
  842. package/src/Spinner.tsx +57 -0
  843. package/src/StateLabel.tsx +112 -0
  844. package/src/StyledOcticon.tsx +22 -0
  845. package/src/SubNav.tsx +124 -0
  846. package/src/TabNav.tsx +73 -0
  847. package/src/Text.tsx +13 -0
  848. package/src/TextInput.tsx +68 -0
  849. package/src/TextInputWithTokens.tsx +351 -0
  850. package/src/ThemeProvider.tsx +176 -0
  851. package/src/Timeline.tsx +140 -0
  852. package/src/Token/AvatarToken.tsx +54 -0
  853. package/src/Token/IssueLabelToken.tsx +150 -0
  854. package/src/Token/Token.tsx +126 -0
  855. package/src/Token/TokenBase.tsx +129 -0
  856. package/src/Token/_RemoveTokenButton.tsx +111 -0
  857. package/src/Token/_TokenTextContainer.tsx +47 -0
  858. package/src/Token/index.ts +3 -0
  859. package/src/Tooltip.tsx +263 -0
  860. package/src/Truncate.tsx +31 -0
  861. package/src/UnderlineNav.tsx +107 -0
  862. package/src/_TextInputWrapper.tsx +113 -0
  863. package/src/_UnstyledTextInput.tsx +19 -0
  864. package/src/__tests__/.eslintrc.json +11 -0
  865. package/src/__tests__/ActionList.test.tsx +53 -0
  866. package/src/__tests__/ActionList.types.test.tsx +51 -0
  867. package/src/__tests__/ActionList2.test.tsx +156 -0
  868. package/src/__tests__/ActionMenu.test.tsx +136 -0
  869. package/src/__tests__/AnchoredOverlay.test.tsx +150 -0
  870. package/src/__tests__/Autocomplete.test.tsx +444 -0
  871. package/src/__tests__/Avatar.test.tsx +44 -0
  872. package/src/__tests__/Avatar.types.test.tsx +11 -0
  873. package/src/__tests__/AvatarStack.test.tsx +48 -0
  874. package/src/__tests__/BorderBox.test.tsx +43 -0
  875. package/src/__tests__/Box.test.tsx +42 -0
  876. package/src/__tests__/BranchName.test.tsx +26 -0
  877. package/src/__tests__/BranchName.types.test.tsx +11 -0
  878. package/src/__tests__/Breadcrumbs.test.tsx +27 -0
  879. package/src/__tests__/Breadcrumbs.types.test.tsx +22 -0
  880. package/src/__tests__/BreadcrumbsItem.test.tsx +31 -0
  881. package/src/__tests__/Button.test.tsx +128 -0
  882. package/src/__tests__/Caret.test.tsx +36 -0
  883. package/src/__tests__/Checkbox.test.tsx +155 -0
  884. package/src/__tests__/CircleBadge.test.tsx +66 -0
  885. package/src/__tests__/CircleBadge.types.test.tsx +11 -0
  886. package/src/__tests__/CircleOcticon.test.tsx +50 -0
  887. package/src/__tests__/ConfirmationDialog.test.tsx +120 -0
  888. package/src/__tests__/CounterLabel.test.tsx +50 -0
  889. package/src/__tests__/CounterLabel.types.test.tsx +11 -0
  890. package/src/__tests__/Details.test.tsx +115 -0
  891. package/src/__tests__/Details.types.test.tsx +11 -0
  892. package/src/__tests__/Dialog.test.tsx +155 -0
  893. package/src/__tests__/Dialog.types.test.tsx +11 -0
  894. package/src/__tests__/Dialog2.types.test.tsx +11 -0
  895. package/src/__tests__/Dropdown.test.tsx +53 -0
  896. package/src/__tests__/Dropdown.types.test.tsx +21 -0
  897. package/src/__tests__/DropdownMenu.test.tsx +136 -0
  898. package/src/__tests__/FilterList.test.tsx +26 -0
  899. package/src/__tests__/FilterList.types.test.tsx +17 -0
  900. package/src/__tests__/FilterListItem.test.tsx +31 -0
  901. package/src/__tests__/FilteredSearch.test.tsx +26 -0
  902. package/src/__tests__/FilteredSearch.types.test.tsx +11 -0
  903. package/src/__tests__/Flash.test.tsx +45 -0
  904. package/src/__tests__/Flash.types.test.tsx +11 -0
  905. package/src/__tests__/Flex.test.tsx +58 -0
  906. package/src/__tests__/FormGroup.test.tsx +38 -0
  907. package/src/__tests__/FormGroup.types.test.tsx +11 -0
  908. package/src/__tests__/Grid.test.tsx +82 -0
  909. package/src/__tests__/Header.test.tsx +49 -0
  910. package/src/__tests__/Header.types.test.tsx +19 -0
  911. package/src/__tests__/Heading.test.tsx +137 -0
  912. package/src/__tests__/Heading.types.test.tsx +11 -0
  913. package/src/__tests__/KeyPaths.types.test.ts +14 -0
  914. package/src/__tests__/Label.test.tsx +34 -0
  915. package/src/__tests__/Label.types.test.tsx +11 -0
  916. package/src/__tests__/LabelGroup.test.tsx +30 -0
  917. package/src/__tests__/LabelGroup.types.test.tsx +11 -0
  918. package/src/__tests__/Link.test.tsx +47 -0
  919. package/src/__tests__/Link.types.test.tsx +11 -0
  920. package/src/__tests__/Merge.types.test.ts +39 -0
  921. package/src/__tests__/NewButton.test.tsx +70 -0
  922. package/src/__tests__/Overlay.test.tsx +103 -0
  923. package/src/__tests__/Overlay.types.test.tsx +33 -0
  924. package/src/__tests__/Pagehead.test.tsx +23 -0
  925. package/src/__tests__/Pagehead.types.test.tsx +11 -0
  926. package/src/__tests__/Pagination/Pagination.test.tsx +30 -0
  927. package/src/__tests__/Pagination/PaginationModel.test.tsx +133 -0
  928. package/src/__tests__/Pagination/__snapshots__/Pagination.test.tsx.snap +184 -0
  929. package/src/__tests__/Pagination.types.test.tsx +11 -0
  930. package/src/__tests__/PointerBox.test.tsx +34 -0
  931. package/src/__tests__/Popover.test.tsx +68 -0
  932. package/src/__tests__/Popover.types.test.tsx +17 -0
  933. package/src/__tests__/Portal.test.tsx +103 -0
  934. package/src/__tests__/Position.test.tsx +117 -0
  935. package/src/__tests__/ProgressBar.test.tsx +40 -0
  936. package/src/__tests__/SelectMenu.test.tsx +142 -0
  937. package/src/__tests__/SelectMenu.types.test.tsx +37 -0
  938. package/src/__tests__/SelectPanel.test.tsx +63 -0
  939. package/src/__tests__/SelectPanel.types.test.tsx +31 -0
  940. package/src/__tests__/SideNav.test.tsx +62 -0
  941. package/src/__tests__/SideNav.types.test.tsx +11 -0
  942. package/src/__tests__/Spinner.test.tsx +42 -0
  943. package/src/__tests__/StateLabel.test.tsx +48 -0
  944. package/src/__tests__/StateLabel.types.test.tsx +11 -0
  945. package/src/__tests__/StyledOcticon.test.tsx +26 -0
  946. package/src/__tests__/StyledOcticon.types.test.tsx +12 -0
  947. package/src/__tests__/SubNav.test.tsx +50 -0
  948. package/src/__tests__/SubNav.types.test.tsx +25 -0
  949. package/src/__tests__/SubNavLink.test.tsx +31 -0
  950. package/src/__tests__/TabNav.test.tsx +32 -0
  951. package/src/__tests__/TabNav.types.test.tsx +22 -0
  952. package/src/__tests__/Text.test.tsx +78 -0
  953. package/src/__tests__/TextInput.test.tsx +49 -0
  954. package/src/__tests__/TextInputWithTokens.test.tsx +422 -0
  955. package/src/__tests__/ThemeProvider.test.tsx +441 -0
  956. package/src/__tests__/Timeline.test.tsx +58 -0
  957. package/src/__tests__/Timeline.types.test.tsx +31 -0
  958. package/src/__tests__/Token.test.tsx +118 -0
  959. package/src/__tests__/Tooltip.test.tsx +52 -0
  960. package/src/__tests__/Tooltip.types.test.tsx +11 -0
  961. package/src/__tests__/Truncate.test.tsx +43 -0
  962. package/src/__tests__/Truncate.types.test.tsx +11 -0
  963. package/src/__tests__/UnderlineNav.test.tsx +58 -0
  964. package/src/__tests__/UnderlineNav.types.test.tsx +22 -0
  965. package/src/__tests__/UnderlineNavLink.test.tsx +31 -0
  966. package/src/__tests__/__snapshots__/ActionList.test.tsx.snap +223 -0
  967. package/src/__tests__/__snapshots__/ActionList2.test.tsx.snap +14 -0
  968. package/src/__tests__/__snapshots__/ActionMenu.test.tsx.snap +80 -0
  969. package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +232 -0
  970. package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +3901 -0
  971. package/src/__tests__/__snapshots__/Avatar.test.tsx.snap +19 -0
  972. package/src/__tests__/__snapshots__/AvatarStack.test.tsx.snap +377 -0
  973. package/src/__tests__/__snapshots__/BorderBox.test.tsx.snap +14 -0
  974. package/src/__tests__/__snapshots__/Box.test.tsx.snap +201 -0
  975. package/src/__tests__/__snapshots__/BranchName.test.tsx.snap +17 -0
  976. package/src/__tests__/__snapshots__/Breadcrumbs.test.tsx.snap +29 -0
  977. package/src/__tests__/__snapshots__/BreadcrumbsItem.test.tsx.snap +79 -0
  978. package/src/__tests__/__snapshots__/Button.test.tsx.snap +840 -0
  979. package/src/__tests__/__snapshots__/Caret.test.tsx.snap +373 -0
  980. package/src/__tests__/__snapshots__/Checkbox.test.tsx.snap +16 -0
  981. package/src/__tests__/__snapshots__/CircleBadge.test.tsx.snap +142 -0
  982. package/src/__tests__/__snapshots__/CircleOcticon.test.tsx.snap +65 -0
  983. package/src/__tests__/__snapshots__/ConfirmationDialog.test.tsx.snap +89 -0
  984. package/src/__tests__/__snapshots__/CounterLabel.test.tsx.snap +22 -0
  985. package/src/__tests__/__snapshots__/Details.test.tsx.snap +15 -0
  986. package/src/__tests__/__snapshots__/Dialog.test.tsx.snap +201 -0
  987. package/src/__tests__/__snapshots__/Dropdown.test.tsx.snap +249 -0
  988. package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +107 -0
  989. package/src/__tests__/__snapshots__/FilterList.test.tsx.snap +13 -0
  990. package/src/__tests__/__snapshots__/FilterListItem.test.tsx.snap +80 -0
  991. package/src/__tests__/__snapshots__/FilteredSearch.test.tsx.snap +32 -0
  992. package/src/__tests__/__snapshots__/Flash.test.tsx.snap +32 -0
  993. package/src/__tests__/__snapshots__/Flex.test.tsx.snap +130 -0
  994. package/src/__tests__/__snapshots__/FormGroup.test.tsx.snap +25 -0
  995. package/src/__tests__/__snapshots__/Grid.test.tsx.snap +178 -0
  996. package/src/__tests__/__snapshots__/Header.test.tsx.snap +79 -0
  997. package/src/__tests__/__snapshots__/Heading.test.tsx.snap +13 -0
  998. package/src/__tests__/__snapshots__/Label.test.tsx.snap +73 -0
  999. package/src/__tests__/__snapshots__/LabelGroup.test.tsx.snap +15 -0
  1000. package/src/__tests__/__snapshots__/Link.test.tsx.snap +212 -0
  1001. package/src/__tests__/__snapshots__/NewButton.test.tsx.snap +305 -0
  1002. package/src/__tests__/__snapshots__/Pagehead.test.tsx.snap +15 -0
  1003. package/src/__tests__/__snapshots__/PointerBox.test.tsx.snap +174 -0
  1004. package/src/__tests__/__snapshots__/Popover.test.tsx.snap +4687 -0
  1005. package/src/__tests__/__snapshots__/Position.test.tsx.snap +44 -0
  1006. package/src/__tests__/__snapshots__/ProgressBar.test.tsx.snap +53 -0
  1007. package/src/__tests__/__snapshots__/SelectMenu.test.tsx.snap +473 -0
  1008. package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +124 -0
  1009. package/src/__tests__/__snapshots__/SideNav.test.tsx.snap +143 -0
  1010. package/src/__tests__/__snapshots__/Spinner.test.tsx.snap +33 -0
  1011. package/src/__tests__/__snapshots__/StateLabel.test.tsx.snap +395 -0
  1012. package/src/__tests__/__snapshots__/StyledOcticon.test.tsx.snap +26 -0
  1013. package/src/__tests__/__snapshots__/SubNav.test.tsx.snap +44 -0
  1014. package/src/__tests__/__snapshots__/SubNavLink.test.tsx.snap +199 -0
  1015. package/src/__tests__/__snapshots__/TabNav.test.tsx.snap +58 -0
  1016. package/src/__tests__/__snapshots__/Text.test.tsx.snap +7 -0
  1017. package/src/__tests__/__snapshots__/TextInput.test.tsx.snap +446 -0
  1018. package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +6045 -0
  1019. package/src/__tests__/__snapshots__/ThemeProvider.test.tsx.snap +15 -0
  1020. package/src/__tests__/__snapshots__/Timeline.test.tsx.snap +159 -0
  1021. package/src/__tests__/__snapshots__/Token.test.tsx.snap +3811 -0
  1022. package/src/__tests__/__snapshots__/Tooltip.test.tsx.snap +227 -0
  1023. package/src/__tests__/__snapshots__/Truncate.test.tsx.snap +17 -0
  1024. package/src/__tests__/__snapshots__/UnderlineNav.test.tsx.snap +59 -0
  1025. package/src/__tests__/__snapshots__/UnderlineNavLink.test.tsx.snap +130 -0
  1026. package/src/__tests__/__snapshots__/themePreval.test.ts.snap +3176 -0
  1027. package/src/__tests__/behaviors/anchoredPosition.test.ts +295 -0
  1028. package/src/__tests__/behaviors/focusTrap.test.tsx +236 -0
  1029. package/src/__tests__/behaviors/focusZone.test.tsx +549 -0
  1030. package/src/__tests__/behaviors/iterateFocusableElements.test.tsx +61 -0
  1031. package/src/__tests__/behaviors/scrollIntoViewingArea.test.ts +195 -0
  1032. package/src/__tests__/filterObject.test.ts +54 -0
  1033. package/src/__tests__/hooks/useAnchoredPosition.test.tsx +31 -0
  1034. package/src/__tests__/hooks/useOnEscapePress.test.tsx +16 -0
  1035. package/src/__tests__/hooks/useOnOutsideClick.test.tsx +48 -0
  1036. package/src/__tests__/hooks/useOpenAndCloseFocus.test.tsx +48 -0
  1037. package/src/__tests__/hooks/useProvidedStateOrCreate.test.tsx +39 -0
  1038. package/src/__tests__/theme.test.ts +41 -0
  1039. package/src/__tests__/themeGet.test.ts +15 -0
  1040. package/src/__tests__/themePreval.test.ts +8 -0
  1041. package/src/__tests__/useSafeTimeout.test.tsx +36 -0
  1042. package/src/__tests__/utils/__snapshots__/createSlots.test.tsx.snap +55 -0
  1043. package/src/__tests__/utils/createSlots.test.tsx +74 -0
  1044. package/src/behaviors/anchoredPosition.ts +442 -0
  1045. package/src/behaviors/focusTrap.ts +184 -0
  1046. package/src/behaviors/focusZone.ts +713 -0
  1047. package/src/behaviors/scrollIntoViewingArea.ts +27 -0
  1048. package/src/constants.ts +62 -0
  1049. package/src/drafts.ts +10 -0
  1050. package/src/hooks/index.ts +11 -0
  1051. package/src/hooks/useAnchoredPosition.ts +54 -0
  1052. package/src/hooks/useCombinedRefs.ts +40 -0
  1053. package/src/hooks/useDetails.tsx +54 -0
  1054. package/src/hooks/useDialog.ts +121 -0
  1055. package/src/hooks/useFocusTrap.ts +80 -0
  1056. package/src/hooks/useFocusZone.ts +64 -0
  1057. package/src/hooks/useOnEscapePress.ts +63 -0
  1058. package/src/hooks/useOnOutsideClick.tsx +82 -0
  1059. package/src/hooks/useOpenAndCloseFocus.ts +32 -0
  1060. package/src/hooks/useOverlay.tsx +34 -0
  1061. package/src/hooks/useProvidedRefOrCreate.ts +14 -0
  1062. package/src/hooks/useProvidedStateOrCreate.ts +27 -0
  1063. package/src/hooks/useRenderForcingRef.ts +22 -0
  1064. package/src/hooks/useResizeObserver.ts +11 -0
  1065. package/src/hooks/useSafeTimeout.ts +38 -0
  1066. package/src/hooks/useScrollFlash.ts +21 -0
  1067. package/src/index.ts +175 -0
  1068. package/src/polyfills/eventListenerSignal.ts +66 -0
  1069. package/src/stories/ActionList.stories.tsx +436 -0
  1070. package/src/stories/ActionList2.stories.tsx +1305 -0
  1071. package/src/stories/ActionMenu.stories.tsx +331 -0
  1072. package/src/stories/AnchoredOverlay.stories.tsx +117 -0
  1073. package/src/stories/Autocomplete.stories.tsx +655 -0
  1074. package/src/stories/AvatarStack.stories.tsx +37 -0
  1075. package/src/stories/Button.stories.tsx +92 -0
  1076. package/src/stories/Checkbox.stories.tsx +164 -0
  1077. package/src/stories/ConfirmationDialog.stories.tsx +105 -0
  1078. package/src/stories/Dialog.stories.tsx +240 -0
  1079. package/src/stories/DropdownMenu.stories.tsx +84 -0
  1080. package/src/stories/IssueLabelToken.stories.tsx +138 -0
  1081. package/src/stories/NewButton.stories.tsx +201 -0
  1082. package/src/stories/Overlay.stories.tsx +213 -0
  1083. package/src/stories/Portal.stories.tsx +109 -0
  1084. package/src/stories/ProfileToken.stories.tsx +129 -0
  1085. package/src/stories/SelectPanel.stories.tsx +353 -0
  1086. package/src/stories/TextInput.stories.tsx +113 -0
  1087. package/src/stories/TextInputWithTokens.stories.tsx +155 -0
  1088. package/src/stories/ThemeProvider.stories.tsx +104 -0
  1089. package/src/stories/Token.stories.tsx +137 -0
  1090. package/src/stories/useAnchoredPosition.stories.tsx +332 -0
  1091. package/src/stories/useFocusTrap.stories.tsx +400 -0
  1092. package/src/stories/useFocusZone.stories.tsx +663 -0
  1093. package/src/sx.ts +24 -0
  1094. package/src/theme-preval.js +80 -0
  1095. package/src/theme.ts +89 -0
  1096. package/src/utils/create-slots.tsx +96 -0
  1097. package/src/utils/deprecate.tsx +73 -0
  1098. package/src/utils/isNumeric.tsx +4 -0
  1099. package/src/utils/iterateFocusableElements.ts +121 -0
  1100. package/src/utils/ssr.tsx +1 -0
  1101. package/src/utils/test-deprecations.tsx +19 -0
  1102. package/src/utils/test-helpers.tsx +7 -0
  1103. package/src/utils/test-matchers.tsx +109 -0
  1104. package/src/utils/testing.tsx +264 -0
  1105. package/src/utils/theme.js +64 -0
  1106. package/src/utils/types/AriaRole.ts +71 -0
  1107. package/src/utils/types/ComponentProps.ts +13 -0
  1108. package/src/utils/types/Flatten.ts +4 -0
  1109. package/src/utils/types/KeyPaths.ts +10 -0
  1110. package/src/utils/types/MandateProps.ts +19 -0
  1111. package/src/utils/types/Merge.ts +20 -0
  1112. package/src/utils/types/index.ts +5 -0
  1113. package/src/utils/uniqueId.ts +6 -0
  1114. package/src/utils/use-force-update.ts +7 -0
  1115. package/src/utils/useIsomorphicLayoutEffect.ts +10 -0
  1116. package/src/utils/userAgent.ts +7 -0
  1117. package/stats.html +3279 -0
  1118. package/tsconfig.build.json +7 -0
  1119. package/tsconfig.json +20 -0
  1120. package/lib/ActionList2/Header.d.ts +0 -26
  1121. package/lib/ActionList2/Header.js +0 -55
  1122. package/lib-esm/ActionList2/Header.d.ts +0 -26
  1123. package/lib-esm/ActionList2/Header.js +0 -44
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: Grid
3
+ status: Deprecated
4
+ ---
5
+
6
+ Grid is a component that exposes grid system props. See the [CSS Tricks Complete Guide to Grid](https://css-tricks.com/snippets/css/complete-guide-grid/) to learn more about Grid Layout.
7
+
8
+ ## Deprecation
9
+
10
+ Use [Box](/Box) instead.
11
+
12
+ **Before**
13
+
14
+ ```jsx
15
+ <Grid gridTemplateColumns="repeat(2, auto)" gridGap={3}>
16
+ <Box p={3} color="fg.onEmphasis" bg="accent.emphasis">
17
+ 1
18
+ </Box>
19
+ <Box p={3} color="fg.onEmphasis" bg="attention.emphasis">
20
+ 2
21
+ </Box>
22
+ </Grid>
23
+ ```
24
+
25
+ **After**
26
+
27
+ ```jsx
28
+ <Box display="grid" gridTemplateColumns="repeat(2, auto)" gridGap={3}>
29
+ <Box p={3} color="fg.onEmphasis" bg="accent.emphasis">
30
+ 1
31
+ </Box>
32
+ <Box p={3} color="fg.onEmphasis" bg="attention.emphasis">
33
+ 2
34
+ </Box>
35
+ </Box>
36
+ ```
37
+
38
+ ## Default example
39
+
40
+ ```jsx live
41
+ <Grid gridTemplateColumns="repeat(2, auto)" gridGap={3}>
42
+ <Box p={3} color="fg.onEmphasis" bg="accent.emphasis">
43
+ 1
44
+ </Box>
45
+ <Box p={3} color="fg.onEmphasis" bg="attention.emphasis">
46
+ 2
47
+ </Box>
48
+ </Grid>
49
+ ```
50
+
51
+ ## System props
52
+
53
+ Grid components get `GRID`, `COMMON`, and `LAYOUT` system props.
54
+
55
+ Read our [System Props](/system-props) doc page for a full list of available props.
56
+
57
+ ## Component props
58
+
59
+ `Grid` does not get any additional props other than the system props mentioned above.
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: Header
3
+ status: Alpha
4
+ ---
5
+
6
+ Use the `Header` component to create a header that has all of its items aligned vertically with consistent horizontal spacing.
7
+
8
+ ## Default example
9
+
10
+ All items directly under the Header component should be a `Header.Item` component. Inside these components can be anything (text, forms, images...), and the `Header.Item` component will make sure these elements vertically align with each other.
11
+
12
+ `Header.Item` elements have a built-in margin that will need to be overridden with the `mr={0}` props for the last element in the container. We relied on the prop here instead of `:last-child` because the last child isn't always the item visible. On responsive pages, there's a mobile menu that gets presented to the user at smaller breakpoints.
13
+
14
+ ```jsx live
15
+ <Header>
16
+ <Header.Item>
17
+ <Header.Link href="#" fontSize={2}>
18
+ <StyledOcticon icon={MarkGithubIcon} size={32} mr={2} />
19
+ <span>GitHub</span>
20
+ </Header.Link>
21
+ </Header.Item>
22
+ <Header.Item full>Menu</Header.Item>
23
+ <Header.Item mr={0}>
24
+ <Avatar src="https://github.com/octocat.png" size={20} square alt="@octocat" />
25
+ </Header.Item>
26
+ </Header>
27
+ ```
28
+
29
+ ## Header with full-size item example
30
+
31
+ ```jsx live
32
+ <Header>
33
+ <Header.Item>Item 1</Header.Item>
34
+ <Header.Item full border={1} borderStyle="solid">
35
+ Item 2
36
+ </Header.Item>
37
+ <Header.Item mr={0}>Item 3</Header.Item>
38
+ </Header>
39
+ ```
40
+
41
+ ## Header with links example
42
+
43
+ ```jsx live
44
+ <Header>
45
+ <Header.Item>
46
+ <Header.Link href="#">About</Header.Link>
47
+ </Header.Item>
48
+ <Header.Item>
49
+ <Header.Link href="#">Releases</Header.Link>
50
+ </Header.Item>
51
+ <Header.Item>
52
+ <Header.Link href="#">Team</Header.Link>
53
+ </Header.Item>
54
+ </Header>
55
+ ```
56
+
57
+ ## Component props
58
+
59
+ ### Header
60
+
61
+ | Name | Type | Default | Description |
62
+ | :--- | :---------------- | :-----: | :----------------------------------- |
63
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
64
+
65
+ ### Header.Item
66
+
67
+ | Name | Type | Default | Description |
68
+ | :--- | :---------------- | :-----: | :----------------------------------------- |
69
+ | full | Boolean | | stretches item to fill the available space |
70
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
71
+
72
+ ### Header.Link
73
+
74
+ | Name | Type | Default | Description |
75
+ | :--- | :---------------- | :-----: | :----------------------------------- |
76
+ | as | String | | sets the HTML tag for the component |
77
+ | href | String | | URL to be used for the Link |
78
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: Heading
3
+ status: Alpha
4
+ ---
5
+
6
+ The Heading component will render an html `h2` tag without any default styling. Other heading level elements `h1-h6` are available through use of the `as` prop (see [System Props](/system-props) for additional explanation). Please reference the [w3 recommendations for headings](https://www.w3.org/WAI/tutorials/page-structure/headings/) to ensure your headings provide an accessible experience for screen reader users.
7
+
8
+ **Attention:** Make sure to include a valid heading element to render a Heading component other than `h2` (`<Heading as="h1">H1 Element</Heading>`).
9
+
10
+ ## Default example
11
+
12
+ ```jsx live
13
+ <Heading sx={{fontSize: 1, mb: 2}}>H2 heading with fontSize={1}</Heading>
14
+ ```
15
+
16
+ ## Component props
17
+
18
+ | Name | Type | Default | Description |
19
+ | :--- | :---------------------- | :-----: | :----------------------------------- |
20
+ | as | String or React element | | sets the HTML tag for the component |
21
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
@@ -0,0 +1,49 @@
1
+ ---
2
+ title: Label
3
+ status: Alpha
4
+ ---
5
+
6
+ The Label component is used to add contextual metadata to a design. Visually it styles text, adds padding, and rounded corners.
7
+
8
+ ## Default example
9
+
10
+ ```jsx live
11
+ <>
12
+ <Label variant="small" outline sx={{borderColor: 'danger.emphasis', mr: 2, color: 'danger.fg'}}>
13
+ small
14
+ </Label>
15
+ <Label variant="medium" sx={{mr: 2}}>
16
+ medium (default)
17
+ </Label>
18
+ <Label variant="large" sx={{mr: 2}}>
19
+ large
20
+ </Label>
21
+ <Label variant="xl">xl label</Label>
22
+
23
+ <Box mt={4} />
24
+ <Label variant="medium" sx={{bg: '#A575FF', m: 1}}>
25
+ good first issue
26
+ </Label>
27
+ <Label variant="medium" sx={{bg: '#FF75C8', m: 1}}>
28
+ 🚂 deploy: train
29
+ </Label>
30
+ <Label variant="medium" sx={{bg: '#1C90FA', m: 1}}>
31
+ css
32
+ </Label>
33
+ <Label variant="medium" sx={{bg: '#FFF06C', color: '#24292E', m: 1}}>
34
+ documentation
35
+ </Label>
36
+ <Label variant="medium" sx={{bg: '#656BFE', m: 1}}>
37
+ primer
38
+ </Label>
39
+ </>
40
+ ```
41
+
42
+ ## Component props
43
+
44
+ | Name | Type | Default | Description |
45
+ | :--------- | :---------------- | :------: | :----------------------------------------------------------- |
46
+ | outline | Boolean | | Creates an outline style label |
47
+ | variant | String | 'medium' | Can be one of `small`, `medium` (default), `large` or `xl` . |
48
+ | dropshadow | Boolean | | Adds a dropshadow to the label |
49
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: LabelGroup
3
+ status: Alpha
4
+ ---
5
+
6
+ The LabelGroup component is used to add commonly used margins and wrapping for groups of Labels.
7
+
8
+ ## Default example
9
+
10
+ ```jsx live
11
+ <LabelGroup>
12
+ <Label>Default label</Label>
13
+ <Label sx={{color: 'fg.onEmphasis', bg: 'danger.emphasis'}}>Label with background indicating a closed PR state</Label>
14
+ <Label outline>Default outline label</Label>
15
+ </LabelGroup>
16
+ ```
17
+
18
+ ## Component props
19
+
20
+ | Name | Type | Default | Description |
21
+ | :--- | :---------------- | :-----: | :----------------------------------- |
22
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: Link
3
+ status: Alpha
4
+ ---
5
+
6
+ The Link component styles anchor tags with default hyperlink color cues and hover text decoration. `Link` is used for destinations, or moving from one page to another.
7
+
8
+ In special cases where you'd like a `<button>` styled like a `Link`, use `<Link as='button'>`. Make sure to provide a click handler with `onClick`.
9
+
10
+ **Important:** When using the `as` prop, be sure to always render an accessible element type, like `a`, `button`, `input`, or `summary`.
11
+
12
+ ## Default example
13
+
14
+ ```jsx live
15
+ <Link sx={{mb: 1}} href="https://github.com">
16
+ Link
17
+ </Link>
18
+ ```
19
+
20
+ ## Component props
21
+
22
+ | Name | Type | Default | Description |
23
+ | :--------- | :---------------- | :-----: | :------------------------------------------------------------------------------ |
24
+ | href | String | | URL to be used for the Link |
25
+ | muted | Boolean | false | Uses a less prominent shade for Link color, and the default link shade on hover |
26
+ | underline | Boolean | false | Adds underline to the Link |
27
+ | as | String | 'a' | Can be 'a', 'button', 'input', or 'summary' |
28
+ | hoverColor | String | | Color used when hovering over link |
29
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
@@ -0,0 +1,86 @@
1
+ ---
2
+ title: Overlay
3
+ status: Alpha
4
+ ---
5
+
6
+ An `Overlay` is a flexible floating surface, used to display transient content such as menus, selection options, dialogs, and more. Overlays use shadows to express elevation. The `Overlay` component handles all behaviors needed by overlay UIs as well as the common styles that all overlays should have. `Overlay` is the base component for many of our overlay-type components.
7
+
8
+ Behaviors include:
9
+
10
+ - Rendering the overlay in a React Portal so that it always renders on top of other content on the page
11
+ - Trapping focus
12
+ - Calling a user provided function when the user presses `Escape`
13
+ - Calling a user provided function when the user clicks outside of the container
14
+ - Focusing either user provided element, or the first focusable element in the container when it is opened
15
+ - Returning focus to an element when container is closed
16
+
17
+ ## Accessibility considerations
18
+
19
+ - The `Overlay` must either have:
20
+ - A value set for the `aria-labelledby` attribute that refers to a visible title.
21
+ - An `aria-label` attribute
22
+ - If the `Overlay` should also have a longer description, use `aria-describedby`
23
+ - The `Overlay` component has a `role="dialog"` set on it, if you are using `Overlay` for alerts, you can pass in `role="alertdialog"` instead. Please read the [W3C guidelines](https://www.w3.org/TR/wai-aria-1.1/#alertdialog) to determine which role is best for your use case
24
+ - The `Overlay` component has `aria-modal` set to `true` by default and should not be overridden as all `Overlay`s behave as modals.
25
+
26
+ See the W3C accessibility recommendations for modals [here](https://www.w3.org/TR/wai-aria-practices-1.1/#dialog_roles_states_props).
27
+
28
+ ## Positioning
29
+
30
+ `Overlay` renders its `children` within a div positioned absolutely within a portal within the default portal root. The overlay will not update its positioning if the portal root's positioning changes (e.g., if the portal root is statically positioned after some DOM element that dynamically resizes). You may consider [customizing the portal or specifying a different portal root](/Portal#customizing-the-portal-root) to achieve different positioning behavior.
31
+
32
+ ## Default example
33
+
34
+ ```javascript live noinline
35
+ const Demo = () => {
36
+ // you must manage your own open state
37
+ const [isOpen, setIsOpen] = React.useState(false)
38
+ const noButtonRef = React.useRef(null)
39
+ const anchorRef = React.useRef(null)
40
+ return (
41
+ <>
42
+ <Button ref={anchorRef} onClick={() => setIsOpen(!isOpen)}>
43
+ open overlay
44
+ </Button>
45
+ {/* be sure to conditionally render the Overlay. This helps with performance and is required. */}
46
+ {isOpen && (
47
+ <Overlay
48
+ initialFocusRef={noButtonRef}
49
+ returnFocusRef={anchorRef}
50
+ ignoreClickRefs={[anchorRef]}
51
+ onEscape={() => setIsOpen(!isOpen)}
52
+ onClickOutside={() => setIsOpen(false)}
53
+ aria-labelledby="title"
54
+ >
55
+ <Box display="flex" flexDirection="column" p={2}>
56
+ <Text id="title">Are you sure you would like to delete this item?</Text>
57
+ <Button>yes</Button>
58
+ <Button ref={noButtonRef}>no</Button>
59
+ </Box>
60
+ </Overlay>
61
+ )}
62
+ </>
63
+ )
64
+ }
65
+
66
+ render(<Demo />)
67
+ ```
68
+
69
+ ## Component props
70
+
71
+ | Name | Type | Default | Description |
72
+ | :------------------ | :------------------------------------------------------------- | :---------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
73
+ | ignoreClickRefs | `React.RefObject<HTMLElement> []` | `undefined` | Optional. An array of ref objects to ignore clicks on in the `onOutsideClick` behavior. This is often used to ignore clicking on the element that toggles the open/closed state for the `Overlay` to prevent the `Overlay` from being toggled twice. |
74
+ | initialFocusRef | `React.RefObject<HTMLElement>` | `undefined` | Optional. Ref for the element to focus when the `Overlay` is opened. If nothing is provided, the first focusable element in the `Overlay` body is focused. |
75
+ | anchorRef | `React.RefObject<HTMLElement>` | `undefined` | Required. Element the `Overlay` should be anchored to. |
76
+ | returnFocusRef | `React.RefObject<HTMLElement>` | `undefined` | Required. Ref for the element to focus when the `Overlay` is closed. |
77
+ | onClickOutside | `function` | `undefined` | Required. Function to call when clicking outside of the `Overlay`. Typically this function sets the `Overlay` visibility state to `false`. |
78
+ | onEscape | `function` | `undefined` | Required. Function to call when user presses `Escape`. Typically this function sets the `Overlay` visibility state to `false`. |
79
+ | width | `'small' │ 'medium' │ 'large' │ 'xlarge' │ 'xxlarge' │ 'auto'` | `auto` | Sets the width of the `Overlay`, pick from our set list of widths, or pass `auto` to automatically set the width based on the content of the `Overlay`. `small` corresponds to `256px`, `medium` corresponds to `320px`, `large` corresponds to `480px`, `xlarge` corresponds to `640px`, `xxlarge` corresponds to `960px`. |
80
+ | height | `'xsmall', 'small', 'medium', 'large', 'xlarge', 'auto'` | `auto` | Sets the height of the `Overlay`, pick from our set list of heights, or pass `auto` to automatically set the height based on the content of the `Overlay`. `xsmall` corresponds to `192px`, `small` corresponds to `256px`, `medium` corresponds to `320px`, `large` corresponds to `432px`, `xlarge` corresponds to `600px`. |
81
+ | visibility | `'visible', 'hidden'` | `visible` | Sets the visibility of the `Overlay`. |
82
+ | anchorSide | `AnchorSide` | undefined | Optional. If provided, the Overlay will slide into position from the side of the anchor with a brief animation |
83
+ | top | `number` | 0 | Vertical position of the overlay, relative to its closest positioned ancestor (often its `Portal`). |
84
+ | left | `number` | 0 | Horizontal position of the overlay, relative to its closest positioned ancestor (often its `Portal`). |
85
+ | portalContainerName | `string` | `undefined` | Optional. If defined, Overlays will be rendered in the named portal. See also `Portal`. |
86
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: Pagehead
3
+ status: Alpha
4
+ ---
5
+
6
+ Give a page a clear, separated title and optional top nav by using Pagehead.
7
+
8
+ ## Default example
9
+
10
+ ```jsx live
11
+ <Pagehead>Pagehead</Pagehead>
12
+ ```
13
+
14
+ ## Component props
15
+
16
+ | Name | Type | Default | Description |
17
+ | :--- | :---------------- | :-----: | :----------------------------------- |
18
+ | as | String | `div` | Sets the HTML tag for the component |
19
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
@@ -0,0 +1,179 @@
1
+ ---
2
+ title: Pagination
3
+ status: Alpha
4
+ ---
5
+
6
+ import State from '../components/State'
7
+
8
+ Use the pagination component to create a connected set of links that lead to related pages (for example, previous, next, or page numbers).
9
+
10
+ ## Basic example
11
+
12
+ The pagination component only requires two properties to render: `pageCount`, which is the total number of pages, and `currentPage`, which is the currently selected page number (which should be managed by the consuming application).
13
+
14
+ ```jsx live
15
+ <Pagination pageCount={15} currentPage={2} onPageChange={e => e.preventDefault()} />
16
+ ```
17
+
18
+ However, to handle state changes when the user clicks a page, you also need to pass `onPageChange`, which is a function that takes a click event and page number as an argument:
19
+
20
+ ```javascript
21
+ type PageChangeCallback = (evt: React.MouseEvent, page: number) => void
22
+ ```
23
+
24
+ By default, clicking a link in the pagination component will cause the browser to navigate to the URL specified by the page. To cancel navigation and handle state management on your own, you should call `preventDefault` on the event, as in this example:
25
+
26
+ ```jsx live
27
+ <State default={1}>
28
+ {([page, setPage]) => {
29
+ const totalPages = 15
30
+ const onPageChange = (evt, page) => {
31
+ evt.preventDefault()
32
+ setPage(page)
33
+ }
34
+
35
+ return (
36
+ <Box borderWidth="1px" borderStyle="solid" borderColor="border.default" borderRadius={2} p={2}>
37
+ <Box>
38
+ Current page: {page} / {totalPages}
39
+ </Box>
40
+ <Pagination pageCount={totalPages} currentPage={page} onPageChange={onPageChange} />
41
+ </Box>
42
+ )
43
+ }}
44
+ </State>
45
+ ```
46
+
47
+ ## Customizing link URLs
48
+
49
+ To customize the URL generated for each link, you can pass a function to the `hrefBuilder` property. The function should take a page number as an argument and return a URL to use for the link.
50
+
51
+ ```javascript
52
+ type HrefBuilder = (page: number) => string
53
+ ```
54
+
55
+ ```jsx live
56
+ <State default={'(nothing clicked yet)'}>
57
+ {([lastUrl, setLastUrl]) => {
58
+ const onPageChange = (evt, page) => {
59
+ evt.preventDefault()
60
+ setLastUrl(evt.target.href)
61
+ }
62
+ const hrefBuilder = page => {
63
+ return `https://example.com/pages/${page}`
64
+ }
65
+
66
+ return (
67
+ <Box borderWidth="1px" borderStyle="solid" borderColor="border.default" borderRadius={2} p={2}>
68
+ <Box>The last URL clicked was: {lastUrl}</Box>
69
+ <Pagination pageCount={15} currentPage={2} onPageChange={onPageChange} hrefBuilder={hrefBuilder} />
70
+ </Box>
71
+ )
72
+ }}
73
+ </State>
74
+ ```
75
+
76
+ ## Customizing which pages are shown
77
+
78
+ Two props control how many links are displayed in the pagination container at any given time. `marginPageCount` controls how many pages are guaranteed to be displayed on the left and right of the component; `surroundingPageCount` controls how many pages will be displayed to the left and right of the current page.
79
+
80
+ ```jsx live
81
+ <Pagination
82
+ pageCount={20}
83
+ currentPage={10}
84
+ marginPageCount={1}
85
+ surroundingPageCount={2}
86
+ onPageChange={e => e.preventDefault()}
87
+ />
88
+ ```
89
+
90
+ The algorithm tries to minimize the amount the component shrinks and grows as the user changes pages; for this reason, if any of the pages in the margin (controlled via `marginPageCount`) intersect with pages in the center (controlled by `surroundingPageCount`), the center section will be shifted away from the margin. Consider the following examples, where pages one through six are shown when any of the first four pages are selected. Only when the fifth page is selected and there is a gap between the margin pages and the center pages does a break element appear.
91
+
92
+ ```jsx live
93
+ <Box>
94
+ {[1, 2, 3, 4, 5].map(page => (
95
+ <Pagination
96
+ pageCount={20}
97
+ currentPage={page}
98
+ marginPageCount={1}
99
+ surroundingPageCount={2}
100
+ onPageChange={e => e.preventDefault()}
101
+ />
102
+ ))}
103
+ </Box>
104
+ ```
105
+
106
+ ### Previous/next pagination
107
+
108
+ To hide all the page numbers and create a simple pagination container with just the Previous and Next buttons, set `showPages` to `false`.
109
+
110
+ ```jsx live
111
+ <State default={1}>
112
+ {([page, setPage]) => {
113
+ const totalPages = 10
114
+ const onPageChange = (evt, page) => {
115
+ evt.preventDefault()
116
+ setPage(page)
117
+ }
118
+
119
+ return (
120
+ <Box borderWidth="1px" borderStyle="solid" borderColor="border.default" borderRadius={2} p={2}>
121
+ <Box>
122
+ Current page: {page} / {totalPages}
123
+ </Box>
124
+ <Pagination pageCount={totalPages} currentPage={page} onPageChange={onPageChange} showPages={false} />
125
+ </Box>
126
+ )
127
+ }}
128
+ </State>
129
+ ```
130
+
131
+ ## Component props
132
+
133
+ | Name | Type | Default | Description |
134
+ | :------------------- | :---------------- | :--------: | :--------------------------------------------------------------------- |
135
+ | currentPage | Number | | **Required.** The currently selected page. |
136
+ | hrefBuilder | Function | `#${page}` | A function to generate links based on page number. |
137
+ | marginPageCount | Number | 1 | How many pages to always show at the left and right of the component. |
138
+ | onPageChange | Function | no-op | Called with event and page number when a page is clicked. |
139
+ | pageCount | Number | | **Required.** The total number of pages. |
140
+ | showPages | Boolean | `true` | Whether or not to show the individual page links. |
141
+ | surroundingPageCount | Number | 2 | How many pages to display on each side of the currently selected page. |
142
+ | sx | SystemStyleObject | {} | Style to be applied to the component |
143
+
144
+ ## Theming
145
+
146
+ The following snippet shows the properties in the theme that control the styling of the pagination component:
147
+
148
+ ```javascript
149
+ export default {
150
+ // ... rest of theme ...
151
+ pagination: {
152
+ borderRadius,
153
+ spaceBetween,
154
+ colors: {
155
+ normal: {
156
+ fg
157
+ },
158
+ disabled: {
159
+ fg,
160
+ border
161
+ },
162
+ hover: {
163
+ border
164
+ },
165
+ selected: {
166
+ fg,
167
+ bg,
168
+ border
169
+ },
170
+ active: {
171
+ border
172
+ },
173
+ nextPrevious: {
174
+ fg
175
+ }
176
+ }
177
+ }
178
+ }
179
+ ```
@@ -0,0 +1,82 @@
1
+ ---
2
+ title: PointerBox
3
+ status: Alpha
4
+ ---
5
+
6
+ PointerBox is a [BorderBox](./BorderBox) component with a caret added to it.
7
+
8
+ ## Default example
9
+
10
+ ```jsx live
11
+ <PointerBox m={4} p={2} minHeight={100} bg="success.subtle" borderColor="success.emphasis">
12
+ PointerBox
13
+ </PointerBox>
14
+ ```
15
+
16
+ ```javascript live noinline
17
+ function PointerBoxDemo(props) {
18
+ const [pos, setPos] = React.useState('top')
19
+
20
+ return (
21
+ <Box>
22
+ <Heading as="h3" sx={{fontSize: 3}}>
23
+ Caret Position
24
+ </Heading>
25
+ <CaretSelector current={pos} onChange={setPos} />
26
+ <Box position="relative" pt={4}>
27
+ <PointerBox m={4} p={2} minHeight={100} bg="success.subtle" borderColor="success.emphasis" caret={pos}>
28
+ {' '}
29
+ Content{' '}
30
+ </PointerBox>
31
+ </Box>
32
+ </Box>
33
+ )
34
+ }
35
+
36
+ function CaretSelector(props) {
37
+ const choices = [
38
+ 'top',
39
+ 'bottom',
40
+ 'left',
41
+ 'right',
42
+ 'left-bottom',
43
+ 'left-top',
44
+ 'right-bottom',
45
+ 'right-top',
46
+ 'top-left',
47
+ 'bottom-left',
48
+ 'top-right',
49
+ 'bottom-right'
50
+ ].map(dir => (
51
+ <label>
52
+ <input
53
+ key={dir}
54
+ type="radio"
55
+ name="caret"
56
+ value={dir}
57
+ checked={dir === props.current}
58
+ onChange={() => props.onChange(dir)}
59
+ />{' '}
60
+ {dir}
61
+ </label>
62
+ ))
63
+
64
+ return (
65
+ <Box display="grid" gridTemplateColumns="repeat(4, auto)" gridGap={3} my={2}>
66
+ {choices}
67
+ </Box>
68
+ )
69
+ }
70
+
71
+ render(<PointerBoxDemo />)
72
+ ```
73
+
74
+ ## System props
75
+
76
+ PointerBox components get `COMMON`, `LAYOUT`, `BORDER`, and `FLEX` system props. Read our [System Props](/system-props) doc page for a full list of available props.
77
+
78
+ ## Component props
79
+
80
+ | Name | Type | Default | Description |
81
+ | :---- | :----- | :-----: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
82
+ | caret | String | bottom | Sets the location of the caret. The format is `[edge]-[position on edge]`. For example, `right-top` will position the caret on the top of the right edge of the box. Use `top`, `right`, `bottom`, or `left` to position a caret in the center of that edge. |