@primer/components 29.1.1 → 30.0.0-rc.9be85598

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 (740) 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 +136 -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/ci.yml +31 -0
  10. package/.github/workflows/deploy_preview.yml +47 -0
  11. package/.github/workflows/deploy_production.yml +70 -0
  12. package/.github/workflows/release.yml +35 -0
  13. package/.github/workflows/release_canary.yml +70 -0
  14. package/.github/workflows/release_candidate.yml +60 -0
  15. package/.github/workflows/size.yml +13 -0
  16. package/.github/workflows/stale.yml +26 -0
  17. package/.gitignore +10 -0
  18. package/.npmrc +4 -0
  19. package/.nvmrc +1 -0
  20. package/.storybook/main.js +11 -0
  21. package/.storybook/preview.js +69 -0
  22. package/.vscode/launch.json +21 -0
  23. package/.vscode/settings.json +13 -0
  24. package/@types/@styled-system/index.d.ts +0 -0
  25. package/@types/@styled-system/prop-types/index.d.ts +1 -0
  26. package/@types/@styled-system/props/index.d.ts +1 -0
  27. package/@types/jest-styled-components/index.d.ts +1 -0
  28. package/CHANGELOG.md +13 -1
  29. package/CODEOWNERS +2 -0
  30. package/babel-defines.js +13 -0
  31. package/babel.config.js +39 -0
  32. package/contributor-docs/CODE_OF_CONDUCT.md +76 -0
  33. package/contributor-docs/CONTRIBUTING.md +274 -0
  34. package/contributor-docs/adrs/adr-001-typescript.md +23 -0
  35. package/contributor-docs/adrs/adr-002-behavior-isolation.md +106 -0
  36. package/contributor-docs/behaviors.md +132 -0
  37. package/contributor-docs/component-contents-api-patterns.md +316 -0
  38. package/contributor-docs/principles.md +39 -0
  39. package/dist/browser.esm.js +131 -131
  40. package/dist/browser.esm.js.map +1 -1
  41. package/dist/browser.umd.js +114 -114
  42. package/dist/browser.umd.js.map +1 -1
  43. package/docs/.eslintrc +0 -0
  44. package/docs/.gitignore +91 -0
  45. package/docs/components/PropsList.js +5 -0
  46. package/docs/components/State.js +9 -0
  47. package/docs/components/constants.js +34 -0
  48. package/docs/components/index.js +2 -0
  49. package/docs/content/ActionList.mdx +72 -0
  50. package/docs/content/ActionMenu.mdx +80 -0
  51. package/docs/content/AnchoredOverlay.mdx +37 -0
  52. package/docs/content/Avatar.mdx +33 -0
  53. package/docs/content/AvatarStack.mdx +43 -0
  54. package/docs/content/BorderBox.md +46 -0
  55. package/docs/content/Box.md +74 -0
  56. package/docs/content/BranchName.md +18 -0
  57. package/docs/content/Breadcrumbs.md +52 -0
  58. package/docs/content/Buttons.md +56 -0
  59. package/docs/content/CircleBadge.md +45 -0
  60. package/docs/content/CircleOcticon.md +18 -0
  61. package/docs/content/CounterLabel.md +32 -0
  62. package/docs/content/Details.md +105 -0
  63. package/docs/content/Dialog.md +108 -0
  64. package/docs/content/Dialog2.mdx +179 -0
  65. package/docs/content/Dropdown.md +72 -0
  66. package/docs/content/DropdownMenu.mdx +49 -0
  67. package/docs/content/FilterList.md +44 -0
  68. package/docs/content/FilteredSearch.md +39 -0
  69. package/docs/content/Flash.md +44 -0
  70. package/docs/content/Flex.md +58 -0
  71. package/docs/content/FormGroup.md +46 -0
  72. package/docs/content/Grid.md +59 -0
  73. package/docs/content/Header.md +79 -0
  74. package/docs/content/Heading.md +22 -0
  75. package/docs/content/Label.md +42 -0
  76. package/docs/content/LabelGroup.md +31 -0
  77. package/docs/content/Link.md +37 -0
  78. package/docs/content/Overlay.mdx +94 -0
  79. package/docs/content/Pagehead.md +27 -0
  80. package/docs/content/Pagination.md +187 -0
  81. package/docs/content/PointerBox.md +81 -0
  82. package/docs/content/Popover.md +137 -0
  83. package/docs/content/Portal.mdx +78 -0
  84. package/docs/content/Position.md +100 -0
  85. package/docs/content/ProgressBar.mdx +29 -0
  86. package/docs/content/SelectMenu.md +435 -0
  87. package/docs/content/SelectPanel.mdx +67 -0
  88. package/docs/content/SideNav.md +179 -0
  89. package/docs/content/Spinner.mdx +32 -0
  90. package/docs/content/StateLabel.md +35 -0
  91. package/docs/content/StyledOcticon.md +36 -0
  92. package/docs/content/SubNav.md +102 -0
  93. package/docs/content/TabNav.md +50 -0
  94. package/docs/content/Text.md +31 -0
  95. package/docs/content/TextInput.md +34 -0
  96. package/docs/content/Timeline.md +138 -0
  97. package/docs/content/Tooltip.md +41 -0
  98. package/docs/content/Truncate.md +64 -0
  99. package/docs/content/UnderlineNav.md +53 -0
  100. package/docs/content/anchoredPosition.mdx +163 -0
  101. package/docs/content/core-concepts.md +70 -0
  102. package/docs/content/focusTrap.mdx +103 -0
  103. package/docs/content/focusZone.mdx +145 -0
  104. package/docs/content/getting-started.md +138 -0
  105. package/docs/content/index.md +33 -0
  106. package/docs/content/linting.md +35 -0
  107. package/docs/content/overriding-styles.mdx +81 -0
  108. package/docs/content/philosophy.md +23 -0
  109. package/docs/content/primer-theme.md +89 -0
  110. package/docs/content/ssr.mdx +43 -0
  111. package/docs/content/system-props.mdx +37 -0
  112. package/docs/content/theme-reference.md +16 -0
  113. package/docs/content/theming.md +249 -0
  114. package/docs/content/useOnEscapePress.mdx +56 -0
  115. package/docs/content/useOnOutsideClick.mdx +57 -0
  116. package/docs/content/useOpenAndCloseFocus.mdx +49 -0
  117. package/docs/content/useOverlay.mdx +62 -0
  118. package/docs/content/useSafeTimeout.mdx +32 -0
  119. package/docs/gatsby-config.js +30 -0
  120. package/docs/gatsby-node.js +101 -0
  121. package/docs/package-lock.json +20979 -0
  122. package/docs/package.json +36 -0
  123. package/docs/src/@primer/gatsby-theme-doctocat/components/hero.js +21 -0
  124. package/docs/src/@primer/gatsby-theme-doctocat/components/live-code.js +84 -0
  125. package/docs/src/@primer/gatsby-theme-doctocat/components/live-preview-wrapper.js +39 -0
  126. package/docs/src/@primer/gatsby-theme-doctocat/components/nav-dropdown.js +48 -0
  127. package/docs/src/@primer/gatsby-theme-doctocat/components/wrap-page-element.js +25 -0
  128. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +54 -0
  129. package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +127 -0
  130. package/docs/src/@primer/gatsby-theme-doctocat/primer-components-hero.svg +1411 -0
  131. package/docs/src/props.js +77 -0
  132. package/jest.config.js +13 -0
  133. package/lib/ActionList/Item.js +1 -1
  134. package/lib/Breadcrumbs.d.ts +40 -0
  135. package/lib/{Breadcrumb.js → Breadcrumbs.js} +31 -21
  136. package/lib/__tests__/ActionList.d.ts +1 -0
  137. package/lib/__tests__/ActionList.js +64 -0
  138. package/lib/__tests__/ActionMenu.d.ts +1 -0
  139. package/lib/__tests__/ActionMenu.js +151 -0
  140. package/lib/__tests__/AnchoredOverlay.d.ts +1 -0
  141. package/lib/__tests__/AnchoredOverlay.js +160 -0
  142. package/lib/__tests__/Avatar.d.ts +1 -0
  143. package/lib/__tests__/Avatar.js +67 -0
  144. package/lib/__tests__/AvatarStack.d.ts +1 -0
  145. package/lib/__tests__/AvatarStack.js +68 -0
  146. package/lib/__tests__/BorderBox.d.ts +1 -0
  147. package/lib/__tests__/BorderBox.js +58 -0
  148. package/lib/__tests__/Box.d.ts +1 -0
  149. package/lib/__tests__/Box.js +78 -0
  150. package/lib/__tests__/BranchName.d.ts +1 -0
  151. package/lib/__tests__/BranchName.js +36 -0
  152. package/lib/__tests__/Breadcrumbs.d.ts +1 -0
  153. package/lib/__tests__/Breadcrumbs.js +37 -0
  154. package/lib/__tests__/BreadcrumbsItem.d.ts +1 -0
  155. package/lib/__tests__/BreadcrumbsItem.js +49 -0
  156. package/lib/__tests__/Button.d.ts +1 -0
  157. package/lib/__tests__/Button.js +143 -0
  158. package/lib/__tests__/Caret.d.ts +1 -0
  159. package/lib/__tests__/Caret.js +52 -0
  160. package/lib/__tests__/CircleBadge.d.ts +1 -0
  161. package/lib/__tests__/CircleBadge.js +83 -0
  162. package/lib/__tests__/CircleOcticon.d.ts +1 -0
  163. package/lib/__tests__/CircleOcticon.js +71 -0
  164. package/lib/__tests__/CounterLabel.d.ts +1 -0
  165. package/lib/__tests__/CounterLabel.js +58 -0
  166. package/lib/__tests__/Details.d.ts +1 -0
  167. package/lib/__tests__/Details.js +117 -0
  168. package/lib/__tests__/Dialog.d.ts +1 -0
  169. package/lib/__tests__/Dialog.js +184 -0
  170. package/lib/__tests__/Dropdown.d.ts +1 -0
  171. package/lib/__tests__/Dropdown.js +63 -0
  172. package/lib/__tests__/DropdownMenu.d.ts +1 -0
  173. package/lib/__tests__/DropdownMenu.js +150 -0
  174. package/lib/__tests__/FilterList.d.ts +1 -0
  175. package/lib/__tests__/FilterList.js +36 -0
  176. package/lib/__tests__/FilterListItem.d.ts +1 -0
  177. package/lib/__tests__/FilterListItem.js +46 -0
  178. package/lib/__tests__/FilteredSearch.d.ts +1 -0
  179. package/lib/__tests__/FilteredSearch.js +36 -0
  180. package/lib/__tests__/Flash.d.ts +1 -0
  181. package/lib/__tests__/Flash.js +62 -0
  182. package/lib/__tests__/Flex.d.ts +1 -0
  183. package/lib/__tests__/Flex.js +74 -0
  184. package/lib/__tests__/FormGroup.d.ts +1 -0
  185. package/lib/__tests__/FormGroup.js +54 -0
  186. package/lib/__tests__/Grid.d.ts +1 -0
  187. package/lib/__tests__/Grid.js +104 -0
  188. package/lib/__tests__/Header.d.ts +1 -0
  189. package/lib/__tests__/Header.js +58 -0
  190. package/lib/__tests__/Heading.d.ts +1 -0
  191. package/lib/__tests__/Heading.js +109 -0
  192. package/lib/__tests__/Label.d.ts +1 -0
  193. package/lib/__tests__/Label.js +46 -0
  194. package/lib/__tests__/LabelGroup.d.ts +1 -0
  195. package/lib/__tests__/LabelGroup.js +38 -0
  196. package/lib/__tests__/Link.d.ts +1 -0
  197. package/lib/__tests__/Link.js +70 -0
  198. package/lib/__tests__/Overlay.d.ts +1 -0
  199. package/lib/__tests__/Overlay.js +145 -0
  200. package/lib/__tests__/Pagehead.d.ts +1 -0
  201. package/lib/__tests__/Pagehead.js +37 -0
  202. package/lib/__tests__/Pagination/Pagination.d.ts +1 -0
  203. package/lib/__tests__/Pagination/Pagination.js +47 -0
  204. package/lib/__tests__/Pagination/PaginationModel.d.ts +1 -0
  205. package/lib/__tests__/Pagination/PaginationModel.js +186 -0
  206. package/lib/__tests__/PointerBox.d.ts +1 -0
  207. package/lib/__tests__/PointerBox.js +46 -0
  208. package/lib/__tests__/Popover.d.ts +1 -0
  209. package/lib/__tests__/Popover.js +66 -0
  210. package/lib/__tests__/Portal.d.ts +1 -0
  211. package/lib/__tests__/Portal.js +124 -0
  212. package/lib/__tests__/Position.d.ts +1 -0
  213. package/lib/__tests__/Position.js +143 -0
  214. package/lib/__tests__/ProgressBar.d.ts +1 -0
  215. package/lib/__tests__/ProgressBar.js +68 -0
  216. package/lib/__tests__/SelectMenu.d.ts +1 -0
  217. package/lib/__tests__/SelectMenu.js +155 -0
  218. package/lib/__tests__/SelectPanel.d.ts +1 -0
  219. package/lib/__tests__/SelectPanel.js +80 -0
  220. package/lib/__tests__/SideNav.d.ts +1 -0
  221. package/lib/__tests__/SideNav.js +71 -0
  222. package/lib/__tests__/Spinner.d.ts +1 -0
  223. package/lib/__tests__/Spinner.js +53 -0
  224. package/lib/__tests__/StateLabel.d.ts +1 -0
  225. package/lib/__tests__/StateLabel.js +71 -0
  226. package/lib/__tests__/StyledOcticon.d.ts +1 -0
  227. package/lib/__tests__/StyledOcticon.js +40 -0
  228. package/lib/__tests__/SubNav.d.ts +1 -0
  229. package/lib/__tests__/SubNav.js +62 -0
  230. package/lib/__tests__/SubNavLink.d.ts +1 -0
  231. package/lib/__tests__/SubNavLink.js +49 -0
  232. package/lib/__tests__/TabNav.d.ts +1 -0
  233. package/lib/__tests__/TabNav.js +49 -0
  234. package/lib/__tests__/Text.d.ts +1 -0
  235. package/lib/__tests__/Text.js +105 -0
  236. package/lib/__tests__/TextInput.d.ts +1 -0
  237. package/lib/__tests__/TextInput.js +78 -0
  238. package/lib/__tests__/ThemeProvider.d.ts +1 -0
  239. package/lib/__tests__/ThemeProvider.js +444 -0
  240. package/lib/__tests__/Timeline.d.ts +1 -0
  241. package/lib/__tests__/Timeline.js +75 -0
  242. package/lib/__tests__/Tooltip.d.ts +1 -0
  243. package/lib/__tests__/Tooltip.js +69 -0
  244. package/lib/__tests__/Truncate.d.ts +1 -0
  245. package/lib/__tests__/Truncate.js +63 -0
  246. package/lib/__tests__/UnderlineNav.d.ts +1 -0
  247. package/lib/__tests__/UnderlineNav.js +72 -0
  248. package/lib/__tests__/UnderlineNavLink.d.ts +1 -0
  249. package/lib/__tests__/UnderlineNavLink.js +51 -0
  250. package/lib/__tests__/behaviors/anchoredPosition.d.ts +1 -0
  251. package/lib/__tests__/behaviors/anchoredPosition.js +390 -0
  252. package/lib/__tests__/behaviors/focusTrap.d.ts +1 -0
  253. package/lib/__tests__/behaviors/focusTrap.js +234 -0
  254. package/lib/__tests__/behaviors/focusZone.d.ts +1 -0
  255. package/lib/__tests__/behaviors/focusZone.js +570 -0
  256. package/lib/__tests__/behaviors/iterateFocusableElements.d.ts +1 -0
  257. package/lib/__tests__/behaviors/iterateFocusableElements.js +55 -0
  258. package/lib/__tests__/filterObject.d.ts +1 -0
  259. package/lib/__tests__/filterObject.js +30 -0
  260. package/lib/__tests__/hooks/useAnchoredPosition.d.ts +1 -0
  261. package/lib/__tests__/hooks/useAnchoredPosition.js +54 -0
  262. package/lib/__tests__/hooks/useOnEscapePress.d.ts +1 -0
  263. package/lib/__tests__/hooks/useOnEscapePress.js +32 -0
  264. package/lib/__tests__/hooks/useOnOutsideClick.d.ts +1 -0
  265. package/lib/__tests__/hooks/useOnOutsideClick.js +87 -0
  266. package/lib/__tests__/hooks/useOpenAndCloseFocus.d.ts +1 -0
  267. package/lib/__tests__/hooks/useOpenAndCloseFocus.js +60 -0
  268. package/lib/__tests__/hooks/useProvidedStateOrCreate.d.ts +1 -0
  269. package/lib/__tests__/hooks/useProvidedStateOrCreate.js +45 -0
  270. package/lib/__tests__/theme.d.ts +1 -0
  271. package/lib/__tests__/theme.js +36 -0
  272. package/lib/__tests__/themeGet.d.ts +1 -0
  273. package/lib/__tests__/themeGet.js +25 -0
  274. package/lib/__tests__/useSafeTimeout.d.ts +1 -0
  275. package/lib/__tests__/useSafeTimeout.js +45 -0
  276. package/lib/index.d.ts +2 -2
  277. package/lib/index.js +8 -2
  278. package/lib/stories/ActionList.stories.js +382 -0
  279. package/lib/stories/ActionMenu.stories.js +338 -0
  280. package/lib/stories/AnchoredOverlay.stories.js +127 -0
  281. package/lib/stories/AvatarStack.stories.js +49 -0
  282. package/lib/stories/Button.stories.js +114 -0
  283. package/lib/stories/ConfirmationDialog.stories.js +111 -0
  284. package/lib/stories/Dialog.stories.js +265 -0
  285. package/lib/stories/DropdownMenu.stories.js +122 -0
  286. package/lib/stories/Overlay.stories.js +185 -0
  287. package/lib/stories/Portal.stories.js +104 -0
  288. package/lib/stories/SelectPanel.stories.js +342 -0
  289. package/lib/stories/ThemeProvider.stories.js +102 -0
  290. package/lib/stories/useAnchoredPosition.stories.js +351 -0
  291. package/lib/stories/useFocusTrap.stories.js +356 -0
  292. package/lib/stories/useFocusZone.stories.js +599 -0
  293. package/lib/utils/testing.d.ts +0 -1
  294. package/lib-esm/ActionList/Item.js +1 -1
  295. package/lib-esm/Breadcrumbs.d.ts +40 -0
  296. package/lib-esm/{Breadcrumb.js → Breadcrumbs.js} +28 -19
  297. package/lib-esm/__tests__/ActionList.d.ts +1 -0
  298. package/lib-esm/__tests__/ActionList.js +52 -0
  299. package/lib-esm/__tests__/ActionMenu.d.ts +1 -0
  300. package/lib-esm/__tests__/ActionMenu.js +139 -0
  301. package/lib-esm/__tests__/AnchoredOverlay.d.ts +1 -0
  302. package/lib-esm/__tests__/AnchoredOverlay.js +134 -0
  303. package/lib-esm/__tests__/Avatar.d.ts +1 -0
  304. package/lib-esm/__tests__/Avatar.js +56 -0
  305. package/lib-esm/__tests__/AvatarStack.d.ts +1 -0
  306. package/lib-esm/__tests__/AvatarStack.js +55 -0
  307. package/lib-esm/__tests__/BorderBox.d.ts +1 -0
  308. package/lib-esm/__tests__/BorderBox.js +47 -0
  309. package/lib-esm/__tests__/Box.d.ts +1 -0
  310. package/lib-esm/__tests__/Box.js +67 -0
  311. package/lib-esm/__tests__/BranchName.d.ts +1 -0
  312. package/lib-esm/__tests__/BranchName.js +26 -0
  313. package/lib-esm/__tests__/Breadcrumbs.d.ts +1 -0
  314. package/lib-esm/__tests__/Breadcrumbs.js +27 -0
  315. package/lib-esm/__tests__/BreadcrumbsItem.d.ts +1 -0
  316. package/lib-esm/__tests__/BreadcrumbsItem.js +39 -0
  317. package/lib-esm/__tests__/Button.d.ts +1 -0
  318. package/lib-esm/__tests__/Button.js +133 -0
  319. package/lib-esm/__tests__/Caret.d.ts +1 -0
  320. package/lib-esm/__tests__/Caret.js +42 -0
  321. package/lib-esm/__tests__/CircleBadge.d.ts +1 -0
  322. package/lib-esm/__tests__/CircleBadge.js +70 -0
  323. package/lib-esm/__tests__/CircleOcticon.d.ts +1 -0
  324. package/lib-esm/__tests__/CircleOcticon.js +59 -0
  325. package/lib-esm/__tests__/CounterLabel.d.ts +1 -0
  326. package/lib-esm/__tests__/CounterLabel.js +47 -0
  327. package/lib-esm/__tests__/Details.d.ts +1 -0
  328. package/lib-esm/__tests__/Details.js +107 -0
  329. package/lib-esm/__tests__/Dialog.d.ts +1 -0
  330. package/lib-esm/__tests__/Dialog.js +171 -0
  331. package/lib-esm/__tests__/Dropdown.d.ts +1 -0
  332. package/lib-esm/__tests__/Dropdown.js +53 -0
  333. package/lib-esm/__tests__/DropdownMenu.d.ts +1 -0
  334. package/lib-esm/__tests__/DropdownMenu.js +137 -0
  335. package/lib-esm/__tests__/FilterList.d.ts +1 -0
  336. package/lib-esm/__tests__/FilterList.js +26 -0
  337. package/lib-esm/__tests__/FilterListItem.d.ts +1 -0
  338. package/lib-esm/__tests__/FilterListItem.js +36 -0
  339. package/lib-esm/__tests__/FilteredSearch.d.ts +1 -0
  340. package/lib-esm/__tests__/FilteredSearch.js +26 -0
  341. package/lib-esm/__tests__/Flash.d.ts +1 -0
  342. package/lib-esm/__tests__/Flash.js +51 -0
  343. package/lib-esm/__tests__/Flex.d.ts +1 -0
  344. package/lib-esm/__tests__/Flex.js +64 -0
  345. package/lib-esm/__tests__/FormGroup.d.ts +1 -0
  346. package/lib-esm/__tests__/FormGroup.js +44 -0
  347. package/lib-esm/__tests__/Grid.d.ts +1 -0
  348. package/lib-esm/__tests__/Grid.js +94 -0
  349. package/lib-esm/__tests__/Header.d.ts +1 -0
  350. package/lib-esm/__tests__/Header.js +48 -0
  351. package/lib-esm/__tests__/Heading.d.ts +1 -0
  352. package/lib-esm/__tests__/Heading.js +99 -0
  353. package/lib-esm/__tests__/Label.d.ts +1 -0
  354. package/lib-esm/__tests__/Label.js +36 -0
  355. package/lib-esm/__tests__/LabelGroup.d.ts +1 -0
  356. package/lib-esm/__tests__/LabelGroup.js +26 -0
  357. package/lib-esm/__tests__/Link.d.ts +1 -0
  358. package/lib-esm/__tests__/Link.js +60 -0
  359. package/lib-esm/__tests__/Overlay.d.ts +1 -0
  360. package/lib-esm/__tests__/Overlay.js +123 -0
  361. package/lib-esm/__tests__/Pagehead.d.ts +1 -0
  362. package/lib-esm/__tests__/Pagehead.js +26 -0
  363. package/lib-esm/__tests__/Pagination/Pagination.d.ts +1 -0
  364. package/lib-esm/__tests__/Pagination/Pagination.js +35 -0
  365. package/lib-esm/__tests__/Pagination/PaginationModel.d.ts +1 -0
  366. package/lib-esm/__tests__/Pagination/PaginationModel.js +182 -0
  367. package/lib-esm/__tests__/PointerBox.d.ts +1 -0
  368. package/lib-esm/__tests__/PointerBox.js +36 -0
  369. package/lib-esm/__tests__/Popover.d.ts +1 -0
  370. package/lib-esm/__tests__/Popover.js +53 -0
  371. package/lib-esm/__tests__/Portal.d.ts +1 -0
  372. package/lib-esm/__tests__/Portal.js +104 -0
  373. package/lib-esm/__tests__/Position.d.ts +1 -0
  374. package/lib-esm/__tests__/Position.js +133 -0
  375. package/lib-esm/__tests__/ProgressBar.d.ts +1 -0
  376. package/lib-esm/__tests__/ProgressBar.js +58 -0
  377. package/lib-esm/__tests__/SelectMenu.d.ts +1 -0
  378. package/lib-esm/__tests__/SelectMenu.js +145 -0
  379. package/lib-esm/__tests__/SelectPanel.d.ts +1 -0
  380. package/lib-esm/__tests__/SelectPanel.js +65 -0
  381. package/lib-esm/__tests__/SideNav.d.ts +1 -0
  382. package/lib-esm/__tests__/SideNav.js +60 -0
  383. package/lib-esm/__tests__/Spinner.d.ts +1 -0
  384. package/lib-esm/__tests__/Spinner.js +43 -0
  385. package/lib-esm/__tests__/StateLabel.d.ts +1 -0
  386. package/lib-esm/__tests__/StateLabel.js +61 -0
  387. package/lib-esm/__tests__/StyledOcticon.d.ts +1 -0
  388. package/lib-esm/__tests__/StyledOcticon.js +29 -0
  389. package/lib-esm/__tests__/SubNav.d.ts +1 -0
  390. package/lib-esm/__tests__/SubNav.js +50 -0
  391. package/lib-esm/__tests__/SubNavLink.d.ts +1 -0
  392. package/lib-esm/__tests__/SubNavLink.js +39 -0
  393. package/lib-esm/__tests__/TabNav.d.ts +1 -0
  394. package/lib-esm/__tests__/TabNav.js +39 -0
  395. package/lib-esm/__tests__/Text.d.ts +1 -0
  396. package/lib-esm/__tests__/Text.js +93 -0
  397. package/lib-esm/__tests__/TextInput.d.ts +1 -0
  398. package/lib-esm/__tests__/TextInput.js +68 -0
  399. package/lib-esm/__tests__/ThemeProvider.d.ts +1 -0
  400. package/lib-esm/__tests__/ThemeProvider.js +408 -0
  401. package/lib-esm/__tests__/Timeline.d.ts +1 -0
  402. package/lib-esm/__tests__/Timeline.js +65 -0
  403. package/lib-esm/__tests__/Tooltip.d.ts +1 -0
  404. package/lib-esm/__tests__/Tooltip.js +59 -0
  405. package/lib-esm/__tests__/Truncate.d.ts +1 -0
  406. package/lib-esm/__tests__/Truncate.js +53 -0
  407. package/lib-esm/__tests__/UnderlineNav.d.ts +1 -0
  408. package/lib-esm/__tests__/UnderlineNav.js +60 -0
  409. package/lib-esm/__tests__/UnderlineNavLink.d.ts +1 -0
  410. package/lib-esm/__tests__/UnderlineNavLink.js +41 -0
  411. package/lib-esm/__tests__/behaviors/anchoredPosition.d.ts +1 -0
  412. package/lib-esm/__tests__/behaviors/anchoredPosition.js +388 -0
  413. package/lib-esm/__tests__/behaviors/focusTrap.d.ts +1 -0
  414. package/lib-esm/__tests__/behaviors/focusTrap.js +227 -0
  415. package/lib-esm/__tests__/behaviors/focusZone.d.ts +1 -0
  416. package/lib-esm/__tests__/behaviors/focusZone.js +487 -0
  417. package/lib-esm/__tests__/behaviors/iterateFocusableElements.d.ts +1 -0
  418. package/lib-esm/__tests__/behaviors/iterateFocusableElements.js +48 -0
  419. package/lib-esm/__tests__/filterObject.d.ts +1 -0
  420. package/lib-esm/__tests__/filterObject.js +27 -0
  421. package/lib-esm/__tests__/hooks/useAnchoredPosition.d.ts +1 -0
  422. package/lib-esm/__tests__/hooks/useAnchoredPosition.js +46 -0
  423. package/lib-esm/__tests__/hooks/useOnEscapePress.d.ts +1 -0
  424. package/lib-esm/__tests__/hooks/useOnEscapePress.js +23 -0
  425. package/lib-esm/__tests__/hooks/useOnOutsideClick.d.ts +1 -0
  426. package/lib-esm/__tests__/hooks/useOnOutsideClick.js +68 -0
  427. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.d.ts +1 -0
  428. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.js +52 -0
  429. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.d.ts +1 -0
  430. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.js +36 -0
  431. package/lib-esm/__tests__/theme.d.ts +1 -0
  432. package/lib-esm/__tests__/theme.js +33 -0
  433. package/lib-esm/__tests__/themeGet.d.ts +1 -0
  434. package/lib-esm/__tests__/themeGet.js +22 -0
  435. package/lib-esm/__tests__/useSafeTimeout.d.ts +1 -0
  436. package/lib-esm/__tests__/useSafeTimeout.js +39 -0
  437. package/lib-esm/index.d.ts +2 -2
  438. package/lib-esm/index.js +1 -1
  439. package/lib-esm/stories/ActionList.stories.js +334 -0
  440. package/lib-esm/stories/ActionMenu.stories.js +293 -0
  441. package/lib-esm/stories/AnchoredOverlay.stories.js +101 -0
  442. package/lib-esm/stories/AvatarStack.stories.js +32 -0
  443. package/lib-esm/stories/Button.stories.js +78 -0
  444. package/lib-esm/stories/ConfirmationDialog.stories.js +86 -0
  445. package/lib-esm/stories/Dialog.stories.js +240 -0
  446. package/lib-esm/stories/DropdownMenu.stories.js +94 -0
  447. package/lib-esm/stories/Overlay.stories.js +154 -0
  448. package/lib-esm/stories/Portal.stories.js +68 -0
  449. package/lib-esm/stories/SelectPanel.stories.js +284 -0
  450. package/lib-esm/stories/ThemeProvider.stories.js +83 -0
  451. package/lib-esm/stories/useAnchoredPosition.stories.js +313 -0
  452. package/lib-esm/stories/useFocusTrap.stories.js +309 -0
  453. package/lib-esm/stories/useFocusZone.stories.js +554 -0
  454. package/lib-esm/utils/testing.d.ts +0 -1
  455. package/migrating.md +250 -0
  456. package/now.json +17 -0
  457. package/package-lock.json +29072 -0
  458. package/package.json +10 -9
  459. package/rollup.config.js +36 -0
  460. package/script/build +19 -0
  461. package/script/build-storybook +10 -0
  462. package/script/setup +12 -0
  463. package/src/ActionList/Divider.tsx +25 -0
  464. package/src/ActionList/Group.tsx +45 -0
  465. package/src/ActionList/Header.tsx +74 -0
  466. package/src/ActionList/Item.tsx +460 -0
  467. package/src/ActionList/List.tsx +253 -0
  468. package/src/ActionList/index.ts +21 -0
  469. package/src/ActionMenu.tsx +106 -0
  470. package/src/AnchoredOverlay/AnchoredOverlay.tsx +180 -0
  471. package/src/AnchoredOverlay/index.ts +2 -0
  472. package/src/Avatar.tsx +46 -0
  473. package/src/AvatarPair.tsx +35 -0
  474. package/src/AvatarStack.tsx +161 -0
  475. package/src/BaseStyles.tsx +53 -0
  476. package/src/BorderBox.tsx +18 -0
  477. package/src/Box.tsx +54 -0
  478. package/src/BranchName.tsx +19 -0
  479. package/src/Breadcrumbs.tsx +101 -0
  480. package/src/Button/Button.tsx +40 -0
  481. package/src/Button/ButtonBase.tsx +43 -0
  482. package/src/Button/ButtonClose.tsx +40 -0
  483. package/src/Button/ButtonDanger.tsx +43 -0
  484. package/src/Button/ButtonGroup.tsx +55 -0
  485. package/src/Button/ButtonInvisible.tsx +27 -0
  486. package/src/Button/ButtonOutline.tsx +43 -0
  487. package/src/Button/ButtonPrimary.tsx +41 -0
  488. package/src/Button/ButtonStyles.tsx +36 -0
  489. package/src/Button/ButtonTableList.tsx +58 -0
  490. package/src/Button/index.ts +16 -0
  491. package/src/Caret.tsx +133 -0
  492. package/src/CircleBadge.tsx +55 -0
  493. package/src/CircleOcticon.tsx +37 -0
  494. package/src/CounterLabel.tsx +52 -0
  495. package/src/Details.tsx +23 -0
  496. package/src/Dialog/ConfirmationDialog.tsx +184 -0
  497. package/src/Dialog/Dialog.tsx +419 -0
  498. package/src/Dialog.tsx +149 -0
  499. package/src/Dropdown.tsx +158 -0
  500. package/src/DropdownMenu/DropdownButton.tsx +15 -0
  501. package/src/DropdownMenu/DropdownMenu.tsx +115 -0
  502. package/src/DropdownMenu/index.ts +4 -0
  503. package/src/DropdownStyles.ts +128 -0
  504. package/src/FilterList.tsx +81 -0
  505. package/src/FilteredActionList/FilteredActionList.tsx +152 -0
  506. package/src/FilteredActionList/index.ts +2 -0
  507. package/src/FilteredSearch.tsx +28 -0
  508. package/src/Flash.tsx +77 -0
  509. package/src/Flex.tsx +15 -0
  510. package/src/FormGroup.tsx +27 -0
  511. package/src/Grid.tsx +15 -0
  512. package/src/Header.tsx +84 -0
  513. package/src/Heading.tsx +21 -0
  514. package/src/Label.tsx +75 -0
  515. package/src/LabelGroup.tsx +18 -0
  516. package/src/Link.tsx +46 -0
  517. package/src/Overlay.tsx +194 -0
  518. package/src/Pagehead.tsx +17 -0
  519. package/src/Pagination/Pagination.tsx +214 -0
  520. package/src/Pagination/index.ts +4 -0
  521. package/src/Pagination/model.tsx +187 -0
  522. package/src/PointerBox.tsx +31 -0
  523. package/src/Popover.tsx +236 -0
  524. package/src/Portal/Portal.tsx +96 -0
  525. package/src/Portal/index.ts +5 -0
  526. package/src/Position.tsx +63 -0
  527. package/src/ProgressBar.tsx +52 -0
  528. package/src/SelectMenu/SelectMenu.tsx +125 -0
  529. package/src/SelectMenu/SelectMenuContext.tsx +9 -0
  530. package/src/SelectMenu/SelectMenuDivider.tsx +25 -0
  531. package/src/SelectMenu/SelectMenuFilter.tsx +51 -0
  532. package/src/SelectMenu/SelectMenuFooter.tsx +28 -0
  533. package/src/SelectMenu/SelectMenuHeader.tsx +50 -0
  534. package/src/SelectMenu/SelectMenuItem.tsx +137 -0
  535. package/src/SelectMenu/SelectMenuList.tsx +42 -0
  536. package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +24 -0
  537. package/src/SelectMenu/SelectMenuModal.tsx +121 -0
  538. package/src/SelectMenu/SelectMenuTab.tsx +88 -0
  539. package/src/SelectMenu/SelectMenuTabPanel.tsx +30 -0
  540. package/src/SelectMenu/SelectMenuTabs.tsx +44 -0
  541. package/src/SelectMenu/hooks/useKeyboardNav.js +90 -0
  542. package/src/SelectMenu/index.ts +15 -0
  543. package/src/SelectPanel/SelectPanel.tsx +172 -0
  544. package/src/SelectPanel/index.ts +2 -0
  545. package/src/SideNav.tsx +193 -0
  546. package/src/Spinner.tsx +59 -0
  547. package/src/StateLabel.tsx +110 -0
  548. package/src/StyledOcticon.tsx +24 -0
  549. package/src/SubNav.tsx +129 -0
  550. package/src/TabNav.tsx +77 -0
  551. package/src/Text.tsx +13 -0
  552. package/src/TextInput.tsx +183 -0
  553. package/src/ThemeProvider.tsx +176 -0
  554. package/src/Timeline.tsx +141 -0
  555. package/src/Tooltip.tsx +263 -0
  556. package/src/Truncate.tsx +36 -0
  557. package/src/UnderlineNav.tsx +110 -0
  558. package/src/__tests__/.eslintrc.json +11 -0
  559. package/src/__tests__/ActionList.tsx +47 -0
  560. package/src/__tests__/ActionMenu.tsx +136 -0
  561. package/src/__tests__/AnchoredOverlay.tsx +150 -0
  562. package/src/__tests__/Avatar.tsx +44 -0
  563. package/src/__tests__/AvatarStack.tsx +44 -0
  564. package/src/__tests__/BorderBox.tsx +43 -0
  565. package/src/__tests__/Box.tsx +42 -0
  566. package/src/__tests__/BranchName.tsx +26 -0
  567. package/src/__tests__/Breadcrumbs.tsx +27 -0
  568. package/src/__tests__/BreadcrumbsItem.tsx +31 -0
  569. package/src/__tests__/Button.tsx +128 -0
  570. package/src/__tests__/Caret.tsx +36 -0
  571. package/src/__tests__/CircleBadge.tsx +66 -0
  572. package/src/__tests__/CircleOcticon.tsx +50 -0
  573. package/src/__tests__/CounterLabel.tsx +50 -0
  574. package/src/__tests__/Details.tsx +115 -0
  575. package/src/__tests__/Dialog.tsx +155 -0
  576. package/src/__tests__/Dropdown.tsx +53 -0
  577. package/src/__tests__/DropdownMenu.tsx +136 -0
  578. package/src/__tests__/FilterList.tsx +26 -0
  579. package/src/__tests__/FilterListItem.tsx +31 -0
  580. package/src/__tests__/FilteredSearch.tsx +26 -0
  581. package/src/__tests__/Flash.tsx +45 -0
  582. package/src/__tests__/Flex.tsx +58 -0
  583. package/src/__tests__/FormGroup.tsx +38 -0
  584. package/src/__tests__/Grid.tsx +82 -0
  585. package/src/__tests__/Header.tsx +49 -0
  586. package/src/__tests__/Heading.tsx +91 -0
  587. package/src/__tests__/Label.tsx +34 -0
  588. package/src/__tests__/LabelGroup.tsx +30 -0
  589. package/src/__tests__/Link.tsx +47 -0
  590. package/src/__tests__/Overlay.tsx +103 -0
  591. package/src/__tests__/Pagehead.tsx +23 -0
  592. package/src/__tests__/Pagination/Pagination.tsx +30 -0
  593. package/src/__tests__/Pagination/PaginationModel.tsx +133 -0
  594. package/src/__tests__/Pagination/__snapshots__/Pagination.tsx.snap +184 -0
  595. package/src/__tests__/PointerBox.tsx +34 -0
  596. package/src/__tests__/Popover.tsx +68 -0
  597. package/src/__tests__/Portal.tsx +103 -0
  598. package/src/__tests__/Position.tsx +117 -0
  599. package/src/__tests__/ProgressBar.tsx +40 -0
  600. package/src/__tests__/SelectMenu.tsx +142 -0
  601. package/src/__tests__/SelectPanel.tsx +63 -0
  602. package/src/__tests__/SideNav.tsx +62 -0
  603. package/src/__tests__/Spinner.tsx +42 -0
  604. package/src/__tests__/StateLabel.tsx +48 -0
  605. package/src/__tests__/StyledOcticon.tsx +26 -0
  606. package/src/__tests__/SubNav.tsx +50 -0
  607. package/src/__tests__/SubNavLink.tsx +31 -0
  608. package/src/__tests__/TabNav.tsx +32 -0
  609. package/src/__tests__/Text.tsx +78 -0
  610. package/src/__tests__/TextInput.tsx +49 -0
  611. package/src/__tests__/ThemeProvider.tsx +441 -0
  612. package/src/__tests__/Timeline.tsx +58 -0
  613. package/src/__tests__/Tooltip.tsx +52 -0
  614. package/src/__tests__/Truncate.tsx +43 -0
  615. package/src/__tests__/UnderlineNav.tsx +58 -0
  616. package/src/__tests__/UnderlineNavLink.tsx +31 -0
  617. package/src/__tests__/__snapshots__/ActionList.tsx.snap +27 -0
  618. package/src/__tests__/__snapshots__/ActionMenu.tsx.snap +80 -0
  619. package/src/__tests__/__snapshots__/AnchoredOverlay.tsx.snap +332 -0
  620. package/src/__tests__/__snapshots__/Avatar.tsx.snap +19 -0
  621. package/src/__tests__/__snapshots__/AvatarStack.tsx.snap +377 -0
  622. package/src/__tests__/__snapshots__/BorderBox.tsx.snap +14 -0
  623. package/src/__tests__/__snapshots__/Box.tsx.snap +201 -0
  624. package/src/__tests__/__snapshots__/BranchName.tsx.snap +17 -0
  625. package/src/__tests__/__snapshots__/Breadcrumbs.tsx.snap +29 -0
  626. package/src/__tests__/__snapshots__/BreadcrumbsItem.tsx.snap +79 -0
  627. package/src/__tests__/__snapshots__/Button.tsx.snap +832 -0
  628. package/src/__tests__/__snapshots__/Caret.tsx.snap +373 -0
  629. package/src/__tests__/__snapshots__/CircleBadge.tsx.snap +141 -0
  630. package/src/__tests__/__snapshots__/CircleOcticon.tsx.snap +64 -0
  631. package/src/__tests__/__snapshots__/CounterLabel.tsx.snap +22 -0
  632. package/src/__tests__/__snapshots__/Details.tsx.snap +15 -0
  633. package/src/__tests__/__snapshots__/Dialog.tsx.snap +200 -0
  634. package/src/__tests__/__snapshots__/Dropdown.tsx.snap +249 -0
  635. package/src/__tests__/__snapshots__/DropdownMenu.tsx.snap +106 -0
  636. package/src/__tests__/__snapshots__/FilterList.tsx.snap +13 -0
  637. package/src/__tests__/__snapshots__/FilterListItem.tsx.snap +80 -0
  638. package/src/__tests__/__snapshots__/FilteredSearch.tsx.snap +32 -0
  639. package/src/__tests__/__snapshots__/Flash.tsx.snap +32 -0
  640. package/src/__tests__/__snapshots__/Flex.tsx.snap +130 -0
  641. package/src/__tests__/__snapshots__/FormGroup.tsx.snap +25 -0
  642. package/src/__tests__/__snapshots__/Grid.tsx.snap +178 -0
  643. package/src/__tests__/__snapshots__/Header.tsx.snap +79 -0
  644. package/src/__tests__/__snapshots__/Heading.tsx.snap +13 -0
  645. package/src/__tests__/__snapshots__/Label.tsx.snap +74 -0
  646. package/src/__tests__/__snapshots__/LabelGroup.tsx.snap +15 -0
  647. package/src/__tests__/__snapshots__/Link.tsx.snap +213 -0
  648. package/src/__tests__/__snapshots__/Pagehead.tsx.snap +15 -0
  649. package/src/__tests__/__snapshots__/PointerBox.tsx.snap +174 -0
  650. package/src/__tests__/__snapshots__/Popover.tsx.snap +4687 -0
  651. package/src/__tests__/__snapshots__/Position.tsx.snap +44 -0
  652. package/src/__tests__/__snapshots__/ProgressBar.tsx.snap +53 -0
  653. package/src/__tests__/__snapshots__/SelectMenu.tsx.snap +469 -0
  654. package/src/__tests__/__snapshots__/SelectPanel.tsx.snap +123 -0
  655. package/src/__tests__/__snapshots__/SideNav.tsx.snap +143 -0
  656. package/src/__tests__/__snapshots__/Spinner.tsx.snap +33 -0
  657. package/src/__tests__/__snapshots__/StateLabel.tsx.snap +409 -0
  658. package/src/__tests__/__snapshots__/StyledOcticon.tsx.snap +25 -0
  659. package/src/__tests__/__snapshots__/SubNav.tsx.snap +44 -0
  660. package/src/__tests__/__snapshots__/SubNavLink.tsx.snap +199 -0
  661. package/src/__tests__/__snapshots__/TabNav.tsx.snap +58 -0
  662. package/src/__tests__/__snapshots__/Text.tsx.snap +7 -0
  663. package/src/__tests__/__snapshots__/TextInput.tsx.snap +440 -0
  664. package/src/__tests__/__snapshots__/ThemeProvider.tsx.snap +15 -0
  665. package/src/__tests__/__snapshots__/Timeline.tsx.snap +159 -0
  666. package/src/__tests__/__snapshots__/Tooltip.tsx.snap +227 -0
  667. package/src/__tests__/__snapshots__/Truncate.tsx.snap +17 -0
  668. package/src/__tests__/__snapshots__/UnderlineNav.tsx.snap +59 -0
  669. package/src/__tests__/__snapshots__/UnderlineNavLink.tsx.snap +130 -0
  670. package/src/__tests__/behaviors/anchoredPosition.ts +295 -0
  671. package/src/__tests__/behaviors/focusTrap.tsx +236 -0
  672. package/src/__tests__/behaviors/focusZone.tsx +549 -0
  673. package/src/__tests__/behaviors/iterateFocusableElements.tsx +61 -0
  674. package/src/__tests__/filterObject.ts +54 -0
  675. package/src/__tests__/hooks/useAnchoredPosition.tsx +31 -0
  676. package/src/__tests__/hooks/useOnEscapePress.tsx +16 -0
  677. package/src/__tests__/hooks/useOnOutsideClick.tsx +48 -0
  678. package/src/__tests__/hooks/useOpenAndCloseFocus.tsx +48 -0
  679. package/src/__tests__/hooks/useProvidedStateOrCreate.tsx +39 -0
  680. package/src/__tests__/theme.ts +41 -0
  681. package/src/__tests__/themeGet.ts +15 -0
  682. package/src/__tests__/useSafeTimeout.tsx +36 -0
  683. package/src/behaviors/anchoredPosition.ts +442 -0
  684. package/src/behaviors/focusTrap.ts +184 -0
  685. package/src/behaviors/focusZone.ts +713 -0
  686. package/src/constants.ts +62 -0
  687. package/src/hooks/index.ts +11 -0
  688. package/src/hooks/useAnchoredPosition.ts +53 -0
  689. package/src/hooks/useCombinedRefs.ts +40 -0
  690. package/src/hooks/useDetails.tsx +54 -0
  691. package/src/hooks/useDialog.ts +121 -0
  692. package/src/hooks/useFocusTrap.ts +80 -0
  693. package/src/hooks/useFocusZone.ts +64 -0
  694. package/src/hooks/useOnEscapePress.ts +63 -0
  695. package/src/hooks/useOnOutsideClick.tsx +82 -0
  696. package/src/hooks/useOpenAndCloseFocus.ts +27 -0
  697. package/src/hooks/useOverlay.tsx +32 -0
  698. package/src/hooks/useProvidedRefOrCreate.ts +14 -0
  699. package/src/hooks/useProvidedStateOrCreate.ts +27 -0
  700. package/src/hooks/useRenderForcingRef.ts +22 -0
  701. package/src/hooks/useResizeObserver.ts +11 -0
  702. package/src/hooks/useSafeTimeout.ts +38 -0
  703. package/src/hooks/useScrollFlash.ts +21 -0
  704. package/src/index.ts +165 -0
  705. package/src/polyfills/eventListenerSignal.ts +66 -0
  706. package/src/stories/ActionList.stories.tsx +364 -0
  707. package/src/stories/ActionMenu.stories.tsx +322 -0
  708. package/src/stories/AnchoredOverlay.stories.tsx +117 -0
  709. package/src/stories/AvatarStack.stories.tsx +37 -0
  710. package/src/stories/Button.stories.tsx +88 -0
  711. package/src/stories/ConfirmationDialog.stories.tsx +105 -0
  712. package/src/stories/Dialog.stories.tsx +240 -0
  713. package/src/stories/DropdownMenu.stories.tsx +84 -0
  714. package/src/stories/Overlay.stories.tsx +186 -0
  715. package/src/stories/Portal.stories.tsx +109 -0
  716. package/src/stories/SelectPanel.stories.tsx +300 -0
  717. package/src/stories/ThemeProvider.stories.tsx +104 -0
  718. package/src/stories/useAnchoredPosition.stories.tsx +320 -0
  719. package/src/stories/useFocusTrap.stories.tsx +400 -0
  720. package/src/stories/useFocusZone.stories.tsx +663 -0
  721. package/src/sx.ts +9 -0
  722. package/src/theme-preval.js +136 -0
  723. package/src/theme.ts +3 -0
  724. package/src/utils/deprecate.tsx +73 -0
  725. package/src/utils/isNumeric.tsx +4 -0
  726. package/src/utils/iterateFocusableElements.ts +121 -0
  727. package/src/utils/ssr.tsx +1 -0
  728. package/src/utils/test-deprecations.tsx +19 -0
  729. package/src/utils/test-helpers.tsx +7 -0
  730. package/src/utils/test-matchers.tsx +109 -0
  731. package/src/utils/testing.tsx +242 -0
  732. package/src/utils/theme.js +64 -0
  733. package/src/utils/types.ts +90 -0
  734. package/src/utils/uniqueId.ts +6 -0
  735. package/src/utils/userAgent.ts +7 -0
  736. package/stats.html +3279 -0
  737. package/tsconfig.build.json +7 -0
  738. package/tsconfig.json +20 -0
  739. package/lib/Breadcrumb.d.ts +0 -23
  740. package/lib-esm/Breadcrumb.d.ts +0 -23
package/docs/.eslintrc ADDED
File without changes
@@ -0,0 +1,91 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ lerna-debug.log*
8
+
9
+ # Diagnostic reports (https://nodejs.org/api/report.html)
10
+ report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11
+
12
+ # Runtime data
13
+ pids
14
+ *.pid
15
+ *.seed
16
+ *.pid.lock
17
+
18
+ # Directory for instrumented libs generated by jscoverage/JSCover
19
+ lib-cov
20
+
21
+ # Coverage directory used by tools like istanbul
22
+ coverage
23
+ *.lcov
24
+
25
+ # nyc test coverage
26
+ .nyc_output
27
+
28
+ # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29
+ .grunt
30
+
31
+ # Bower dependency directory (https://bower.io/)
32
+ bower_components
33
+
34
+ # node-waf configuration
35
+ .lock-wscript
36
+
37
+ # Compiled binary addons (https://nodejs.org/api/addons.html)
38
+ build/Release
39
+
40
+ # Dependency directories
41
+ node_modules/
42
+ jspm_packages/
43
+
44
+ # TypeScript v1 declaration files
45
+ typings/
46
+
47
+ # TypeScript cache
48
+ *.tsbuildinfo
49
+
50
+ # Optional npm cache directory
51
+ .npm
52
+
53
+ # Optional eslint cache
54
+ .eslintcache
55
+
56
+ # Optional REPL history
57
+ .node_repl_history
58
+
59
+ # Output of 'npm pack'
60
+ *.tgz
61
+
62
+ # Yarn Integrity file
63
+ .yarn-integrity
64
+
65
+ # dotenv environment variables file
66
+ .env
67
+ .env.test
68
+
69
+ # parcel-bundler cache (https://parceljs.org/)
70
+ .cache
71
+
72
+ # next.js build output
73
+ .next
74
+
75
+ # nuxt.js build output
76
+ .nuxt
77
+
78
+ # vuepress build output
79
+ .vuepress/dist
80
+
81
+ # Serverless directories
82
+ .serverless/
83
+
84
+ # FuseBox cache
85
+ .fusebox/
86
+
87
+ # DynamoDB Local files
88
+ .dynamodb/
89
+
90
+ # Gatsby
91
+ public/
@@ -0,0 +1,5 @@
1
+ import React from 'react'
2
+
3
+ const PropsList = ({systemProps}) => <div>{systemProps.propNames.join(', ')}</div>
4
+
5
+ export default PropsList
@@ -0,0 +1,9 @@
1
+ import React from 'react'
2
+
3
+ const State = props => {
4
+ const result = React.useState(props.default)
5
+
6
+ return props.children(result)
7
+ }
8
+
9
+ export default State
@@ -0,0 +1,34 @@
1
+ import {theme} from '@primer/components'
2
+ import systemPropTypes from '@styled-system/prop-types'
3
+ import themeGet from '@styled-system/theme-get'
4
+ import * as styledSystem from 'styled-system'
5
+
6
+ const {get: getKey, compose, system} = styledSystem
7
+
8
+ export const get = key => themeGet(key, getKey(theme, key))
9
+
10
+ const whiteSpace = system({
11
+ whiteSpace: {
12
+ property: 'whiteSpace',
13
+ cssProperty: 'whiteSpace'
14
+ }
15
+ })
16
+
17
+ export const TYPOGRAPHY = compose(styledSystem.typography, whiteSpace)
18
+
19
+ export const COMMON = compose(styledSystem.space, styledSystem.color, styledSystem.display)
20
+
21
+ export const BORDER = compose(styledSystem.border, styledSystem.shadow)
22
+
23
+ // these are 1:1 with styled-system's API now,
24
+ // so you could consider dropping the abstraction
25
+ export const LAYOUT = styledSystem.layout
26
+ export const POSITION = styledSystem.position
27
+ export const FLEX = styledSystem.flexbox
28
+ export const GRID = styledSystem.grid
29
+
30
+ TYPOGRAPHY.propTypes = systemPropTypes.typography
31
+ LAYOUT.propTypes = systemPropTypes.layout
32
+ POSITION.propTypes = systemPropTypes.position
33
+ FLEX.propTypes = systemPropTypes.flexbox
34
+ GRID.propTypes = systemPropTypes.grid
@@ -0,0 +1,2 @@
1
+ export {default as PropsList} from './PropsList'
2
+ export {COMMON, LAYOUT, BORDER, TYPOGRAPHY, FLEX, POSITION, GRID} from './constants'
@@ -0,0 +1,72 @@
1
+ ---
2
+ title: ActionList
3
+ ---
4
+
5
+ An `ActionList` is a list of items which can be activated or selected. `ActionList` is the base component for many of our menu-type components, including `DropdownMenu` and `ActionMenu`.
6
+
7
+ ## Minimal example
8
+
9
+ ```jsx live
10
+ <ActionList
11
+ items={[
12
+ {text: 'New file'},
13
+ ActionList.Divider,
14
+ {text: 'Copy link'},
15
+ {text: 'Edit file'},
16
+ {text: 'Delete file', variant: 'danger'}
17
+ ]}
18
+ />
19
+ ```
20
+
21
+ ## Example with grouped items
22
+
23
+ ```jsx live
24
+ <ActionList
25
+ groupMetadata={[
26
+ {groupId: '0'},
27
+ {groupId: '1', header: {title: 'Live query', variant: 'subtle'}},
28
+ {groupId: '2', header: {title: 'Layout', variant: 'subtle'}},
29
+ {groupId: '3'},
30
+ {groupId: '4'}
31
+ ]}
32
+ items={[
33
+ {key: '1', leadingVisual: TypographyIcon, text: 'Rename', groupId: '0'},
34
+ {key: '2', leadingVisual: VersionsIcon, text: 'Duplicate', groupId: '0'},
35
+ {key: '3', leadingVisual: SearchIcon, text: 'repo:github/github', groupId: '1'},
36
+ {
37
+ key: '4',
38
+ leadingVisual: NoteIcon,
39
+ text: 'Table',
40
+ description: 'Information-dense table optimized for operations across teams',
41
+ descriptionVariant: 'block',
42
+ groupId: '2'
43
+ },
44
+ {
45
+ key: '5',
46
+ leadingVisual: ProjectIcon,
47
+ text: 'Board',
48
+ description: 'Kanban-style board focused on visual states',
49
+ descriptionVariant: 'block',
50
+ groupId: '2'
51
+ },
52
+ {
53
+ key: '6',
54
+ leadingVisual: FilterIcon,
55
+ text: 'Save sort and filters to current view',
56
+ disabled: true,
57
+ groupId: '3'
58
+ },
59
+ {key: '7', leadingVisual: FilterIcon, text: 'Save sort and filters to new view', groupId: '3'},
60
+ {key: '8', leadingVisual: GearIcon, text: 'View settings', groupId: '4'}
61
+ ]}
62
+ />
63
+ ```
64
+
65
+ ## Component props
66
+
67
+ | Name | Type | Default | Description |
68
+ | :--------------- | :---------------------------------- | :---------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
69
+ | items | `ItemProps[]` | `undefined` | Required. A list of item objects conforming to the `ActionList.Item` props interface. |
70
+ | renderItem | `(props: ItemProps) => JSX.Element` | `ActionList.Item` | Optional. If defined, each item in `items` will be passed to this function, allowing for `ActionList`-wide custom item rendering. |
71
+ | groupMetadata | `GroupProps[]` | `undefined` | Optional. If defined, `ActionList` will group `items` into `ActionList.Group`s separated by `ActionList.Divider` according to their `groupId` property. |
72
+ | showItemDividers | `boolean` | `false` | Optional. If `true` dividers will be displayed above each `ActionList.Item` which does not follow an `ActionList.Header` or `ActionList.Divider` |
@@ -0,0 +1,80 @@
1
+ ---
2
+ title: ActionMenu
3
+ ---
4
+
5
+ An `ActionMenu` is an ActionList-based component for creating a menu of actions that expands through a trigger button.
6
+
7
+ ## Default example
8
+
9
+ ```jsx live
10
+ <ActionMenu
11
+ anchorContent="Menu"
12
+ onAction={({text}) => console.log(text)}
13
+ items={[
14
+ {text: 'New file', key: 'new-file'},
15
+ ActionMenu.Divider,
16
+ {text: 'Copy link', key: 'copy-link'},
17
+ {text: 'Edit file', key: 'edit-file'},
18
+ {text: 'Delete file', variant: 'danger', key: 'delete-file'}
19
+ ]}
20
+ />
21
+ ```
22
+
23
+ ## Example with grouped items
24
+
25
+ ```jsx live
26
+ <ActionMenu
27
+ anchorContent="Menu"
28
+ onAction={({text}) => console.log(text)}
29
+ groupMetadata={[
30
+ {groupId: '0'},
31
+ {groupId: '1', header: {title: 'Live query', variant: 'subtle'}},
32
+ {groupId: '2', header: {title: 'Layout', variant: 'subtle'}},
33
+ {groupId: '3'},
34
+ {groupId: '4'}
35
+ ]}
36
+ items={[
37
+ {key: '1', leadingVisual: TypographyIcon, text: 'Rename', groupId: '0'},
38
+ {key: '2', leadingVisual: VersionsIcon, text: 'Duplicate', groupId: '0'},
39
+ {key: '3', leadingVisual: SearchIcon, text: 'repo:github/github', groupId: '1'},
40
+ {
41
+ key: '4',
42
+ leadingVisual: NoteIcon,
43
+ text: 'Table',
44
+ description: 'Information-dense table optimized for operations across teams',
45
+ descriptionVariant: 'block',
46
+ groupId: '2'
47
+ },
48
+ {
49
+ key: '5',
50
+ leadingVisual: ProjectIcon,
51
+ text: 'Board',
52
+ description: 'Kanban-style board focused on visual states',
53
+ descriptionVariant: 'block',
54
+ groupId: '2'
55
+ },
56
+ {
57
+ key: '6',
58
+ leadingVisual: FilterIcon,
59
+ text: 'Save sort and filters to current view',
60
+ disabled: true,
61
+ groupId: '3'
62
+ },
63
+ {key: '7', leadingVisual: FilterIcon, text: 'Save sort and filters to new view', groupId: '3'},
64
+ {key: '8', leadingVisual: GearIcon, text: 'View settings', groupId: '4'}
65
+ ]}
66
+ />
67
+ ```
68
+
69
+ ## Component props
70
+
71
+ | Name | Type | Default | Description |
72
+ | :------------ | :------------------------------------ | :---------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
73
+ | items | `ItemProps[]` | `undefined` | Required. A list of item objects conforming to the `ActionList.Item` props interface. |
74
+ | renderItem | `(props: ItemProps) => JSX.Element` | `ActionList.Item` | Optional. If defined, each item in `items` will be passed to this function, allowing for `ActionList`-wide custom item rendering. |
75
+ | groupMetadata | `GroupProps[]` | `undefined` | Optional. If defined, `ActionList` will group `items` into `ActionList.Group`s separated by `ActionList.Divider` according to their `groupId` property. |
76
+ | renderAnchor | `(props: ButtonProps) => JSX.Element` | `Button` | Optional. If defined, provided component will be used to render the menu anchor. Will receive the selected `Item` text as `children` prop when an item is activated. |
77
+ | anchorContent | React.ReactNode | `undefined` | Optional. If defined, it will be passed to the trigger as the elements child. |
78
+ | onAction | (props: ItemProps) => void | `undefined` | Optional. If defined, this function will be called when a menu item is activated either by a click or a keyboard press. |
79
+ | open | boolean | `undefined` | Optional. If defined, ActionMenu will use this to control the open/closed state of the Overlay instead of controlling the state internally. Should be used in conjunction with the `setOpen` prop. |
80
+ | setOpen | (state: boolean) => void | `undefined` | Optional. If defined, ActionMenu will use this to control the open/closed state of the Overlay instead of controlling the state internally. Should be used in conjunction with the `open` prop. |
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: AnchoredOverlay
3
+ status: Alpha
4
+ ---
5
+
6
+ An `AnchoredOverlay` provides an anchor that will open a floating overlay positioned relative to the anchor.
7
+ The overlay can be opened and navigated using keyboard or mouse.
8
+
9
+ See also [Overlay positioning](/Overlay#positioning).
10
+
11
+ ## Example
12
+
13
+ ```jsx live
14
+ <State default={false}>
15
+ {([isOpen, setIsOpen]) => {
16
+ const openOverlay = React.useCallback(() => setIsOpen(true), [setIsOpen])
17
+ const closeOverlay = React.useCallback(() => setIsOpen(false), [setIsOpen])
18
+ return (
19
+ <AnchoredOverlay
20
+ renderAnchor={anchorProps => <DropdownButton {...anchorProps}>Click me to open</DropdownButton>}
21
+ open={isOpen}
22
+ onOpen={openOverlay}
23
+ onClose={closeOverlay}
24
+ >
25
+ <Box display="flex" flexDirection="column" maxWidth="300px" padding={2}>
26
+ <p>
27
+ This menu automatically receives a focus trap and focus zone. Use up/down keys to navigate between buttons
28
+ </p>
29
+ <Button mb={1}>Button 1</Button>
30
+ <Button mb={1}>Button 2</Button>
31
+ <Button>Button 3</Button>
32
+ </Box>
33
+ </AnchoredOverlay>
34
+ )
35
+ }}
36
+ </State>
37
+ ```
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: Avatar
3
+ componentId: avatar
4
+ source: https://github.com/primer/react/blob/main/src/Avatar.tsx
5
+ ---
6
+
7
+ import {Props} from '../src/props'
8
+ import {Avatar} from '@primer/components'
9
+
10
+ ```jsx live
11
+ <Avatar src="https://avatars.githubusercontent.com/primer" />
12
+ ```
13
+
14
+ ## Props
15
+
16
+ <Props of={Avatar} />
17
+
18
+ ## Examples
19
+
20
+ ### Square
21
+
22
+ ```jsx live
23
+ <Avatar square src="https://avatars.githubusercontent.com/primer" />
24
+ ```
25
+
26
+ ### AvatarPair
27
+
28
+ ```jsx live
29
+ <AvatarPair>
30
+ <Avatar src="https://avatars.githubusercontent.com/github" />
31
+ <Avatar src="https://avatars.githubusercontent.com/primer" />
32
+ </AvatarPair>
33
+ ```
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: AvatarStack
3
+ ---
4
+
5
+ AvatarStack is used to display more than one Avatar in an inline stack.
6
+
7
+ ### Default example
8
+
9
+ ```jsx live
10
+ <AvatarStack>
11
+ <Avatar alt="Primer" src="https://avatars.githubusercontent.com/primer" />
12
+ <Avatar alt="GitHub" src="https://avatars.githubusercontent.com/github" />
13
+ <Avatar alt="Atom" src="https://avatars.githubusercontent.com/atom" />
14
+ <Avatar alt="Desktop" src="https://avatars.githubusercontent.com/desktop" />
15
+ </AvatarStack>
16
+ ```
17
+
18
+ ### Right aligned
19
+
20
+ ```jsx live
21
+ <AvatarStack alignRight>
22
+ <Avatar alt="Primer" src="https://avatars.githubusercontent.com/primer" />
23
+ <Avatar alt="GitHub" src="https://avatars.githubusercontent.com/github" />
24
+ <Avatar alt="Atom" src="https://avatars.githubusercontent.com/atom" />
25
+ <Avatar alt="Desktop" src="https://avatars.githubusercontent.com/desktop" />
26
+ </AvatarStack>
27
+ ```
28
+
29
+ ## System props
30
+
31
+ <Note variant="warning">
32
+
33
+ System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
34
+
35
+ </Note>
36
+
37
+ AvatarStack components get `COMMON` system props, AvatarStack.Item components do not get any system props. Read our [System Props](/system-props) doc page for a full list of available props.
38
+
39
+ ## AvatarStack Component props
40
+
41
+ | Name | Type | Default | Description |
42
+ | :--------- | :------ | :-----: | :-------------------------------- |
43
+ | alignRight | Boolean | | Creates right aligned AvatarStack |
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: BorderBox
3
+ status: Deprecated
4
+ ---
5
+
6
+ BorderBox is a Box component with a border. When no `borderColor` is present, the component defaults to a primary border.
7
+
8
+ ## Deprecation
9
+
10
+ Use [Box](/Box) instead.
11
+
12
+ **Before**
13
+
14
+ ```jsx
15
+ <BorderBox>Item 1</BorderBox>
16
+ ```
17
+
18
+ **After**
19
+
20
+ ```jsx
21
+ <Box borderWidth="1px" borderStyle="solid" borderColor="border.default" borderRadius={2}>
22
+ Item 1
23
+ </Box>
24
+ ```
25
+
26
+ ## Default example
27
+
28
+ ```jsx live
29
+ <BorderBox>This is a BorderBox</BorderBox>
30
+ ```
31
+
32
+ Note that `BorderBox` has default props set for `borderWidth`, `borderStyle`, and `borderColor`. This means that you cannot use `border={0} borderBottom={1}` or similar patterns; instead, use individual properties like `borderWidth={0} borderBottomWidth={1}`.
33
+
34
+ ## System props
35
+
36
+ BorderBox components get `COMMON`, `LAYOUT`, `BORDER`, and `FLEX` system props. Read our [System Props](/system-props) doc page for a full list of available props.
37
+
38
+ ## Component props
39
+
40
+ | Prop name | Type | Default | Description |
41
+ | :----------- | :--------------- | :---------------------------: | :------------------------------------------------------------ |
42
+ | borderWidth | String | '1px' | Sets the border, use theme values or provide your own. |
43
+ | borderStyle | String | 'solid' | Sets the border style, use theme values or provide your own. |
44
+ | borderColor | String | 'border.primary' (from theme) | Sets the border color, use theme values or provide your own. |
45
+ | borderRadius | String or Number | 2 (from theme) | Sets the border radius, use theme values or provide your own. |
46
+ | boxShadow | String | | Sets box shadow, use theme values or provide your own. |
@@ -0,0 +1,74 @@
1
+ ---
2
+ title: Box
3
+ description: A low-level utility component that accepts styled system props to enable custom theme-aware styling
4
+ source: https://github.com/primer/react/blob/main/src/Box.tsx
5
+ ---
6
+
7
+ import {Props} from '../src/props'
8
+ import {Box} from '@primer/components'
9
+
10
+ ```jsx live
11
+ <Box color="fg.muted" bg="canvas.subtle" p={3}>
12
+ Hello
13
+ </Box>
14
+ ```
15
+
16
+ ## Props
17
+
18
+ <Props of={Box} />
19
+
20
+ Box also accepts all [styled system props](https://styled-system.com/table/).
21
+
22
+ ## Examples
23
+
24
+ ### Border on all sides
25
+
26
+ ```jsx live
27
+ <Box borderColor="border.default" borderWidth={1} borderStyle="solid" p={3}>
28
+ Hello
29
+ </Box>
30
+ ```
31
+
32
+ ### Border on one side
33
+
34
+ ```jsx live
35
+ <Box borderColor="border.default" borderBottomWidth={1} borderBottomStyle="solid" pb={3}>
36
+ Hello
37
+ </Box>
38
+ ```
39
+
40
+ ### Flexbox
41
+
42
+ Use Box to create [flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) layouts.
43
+
44
+ ```jsx live
45
+ <Box display="flex">
46
+ <Box p={3} borderColor="border.default" borderWidth={1} borderStyle="solid">
47
+ 1
48
+ </Box>
49
+ <Box flexGrow={1} p={3} borderColor="border.default" borderWidth={1} borderStyle="solid">
50
+ 2
51
+ </Box>
52
+ <Box p={3} borderColor="border.default" borderWidth={1} borderStyle="solid">
53
+ 3
54
+ </Box>
55
+ </Box>
56
+ ```
57
+
58
+ ### Grid
59
+
60
+ Use Box to create [grid](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids) layouts.
61
+
62
+ ```jsx live
63
+ <Box display="grid" gridTemplateColumns="1fr 1fr" gridGap={3}>
64
+ <Box p={3} borderColor="border.default" borderWidth={1} borderStyle="solid">
65
+ 1
66
+ </Box>
67
+ <Box p={3} borderColor="border.default" borderWidth={1} borderStyle="solid">
68
+ 2
69
+ </Box>
70
+ <Box p={3} borderColor="border.default" borderWidth={1} borderStyle="solid">
71
+ 3
72
+ </Box>
73
+ </Box>
74
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: BranchName
3
+ ---
4
+
5
+ BranchName is a label-type component rendered as an `<a>` tag by default with monospace font.
6
+
7
+ ## Default example
8
+
9
+ ```jsx live live
10
+ <BranchName>a_new_feature_branch</BranchName>
11
+ ```
12
+
13
+ ## Component props
14
+
15
+ | Name | Type | Default | Description |
16
+ | :--- | :----- | :-----: | :---------------------------------- |
17
+ | as | String | `<a>` | sets the HTML tag for the component |
18
+ | href | String | | a URL to link the component to |
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: Breadcrumbs
3
+ status: Alpha
4
+ source: https://github.com/primer/react/blob/main/src/Breadcrumbs.tsx
5
+ ---
6
+
7
+ Breadcrumbs are used to show taxonomical context on pages that are many levels deep in a site’s hierarchy. Breadcrumbs show and link to parent, grandparent, and sometimes great-grandparent pages. Breadcrumbs are most appropriate on pages that:
8
+
9
+ - Are many levels deep on a site
10
+ - Do not have a section-level navigation
11
+ - May need the ability to quickly go back to the previous (parent) page
12
+
13
+ To use Breadcrumbs with [react-router](https://github.com/ReactTraining/react-router) or
14
+ [react-router-dom](https://www.npmjs.com/package/react-router-dom), pass
15
+ `as={NavLink}` and omit the `selected` prop.
16
+ This ensures that the NavLink gets `activeClassName='selected'`
17
+
18
+ ## Default example
19
+
20
+ ```jsx live
21
+ <Breadcrumbs>
22
+ <Breadcrumbs.Item href="/">Home</Breadcrumbs.Item>
23
+ <Breadcrumbs.Item href="/about">About</Breadcrumbs.Item>
24
+ <Breadcrumbs.Item href="/about/team" selected>
25
+ Team
26
+ </Breadcrumbs.Item>
27
+ </Breadcrumbs>
28
+ ```
29
+
30
+ ## System props
31
+
32
+ <Note variant="warning">
33
+
34
+ System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
35
+
36
+ </Note>
37
+
38
+ Breadcrumbs and Breadcrumbs.Item components get `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
39
+
40
+ ## Component props
41
+
42
+ ### Breadcrumbs
43
+
44
+ The `Breadcrumbs` component does not receive any additional props besides `COMMON` system props.
45
+
46
+ ### Breadcrumbs.Item
47
+
48
+ | Prop name | Type | Default | Description |
49
+ | :-------- | :------ | :-----: | :----------------------------------------------- |
50
+ | as | String | `a` | Sets the HTML tag for the component |
51
+ | href | String | | URL to be used for the Link |
52
+ | selected | Boolean | false | Used to style the link as selected or unselected |
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: Buttons
3
+ ---
4
+
5
+ `Button` is used for actions, like in forms, while `Link` is used for destinations, or moving from one page to another.
6
+
7
+ In special cases where you'd like to use a `<a>` styled like a Button, use `<Button as='a'>` and provide an `href`.
8
+
9
+ To create a button group, wrap `Button` elements in the `ButtonGroup` element. `ButtonGroup` gets the same props as `Box`.
10
+
11
+ ## Default examples
12
+
13
+ ```jsx live
14
+ <>
15
+ <Button>Button</Button>
16
+ <ButtonDanger>Button Danger</ButtonDanger>
17
+ <ButtonOutline>Button Outline</ButtonOutline>
18
+ <ButtonPrimary>Button Primary</ButtonPrimary>
19
+ <ButtonInvisible>Button Invisible</ButtonInvisible>
20
+ <ButtonClose onClick={() => window.alert('button clicked')}/>
21
+
22
+ <ButtonGroup display='block' my={2}>
23
+ <Button>Button</Button>
24
+ <Button>Button</Button>
25
+ <Button>Button</Button>
26
+ </ButtonGroup>
27
+
28
+ <ButtonTableList>Button Table List </ButtonTableList>
29
+ </>
30
+ ```
31
+
32
+ ## System props
33
+
34
+ <Note variant="warning">
35
+
36
+ System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
37
+
38
+ </Note>
39
+
40
+ `Button` and `ButtonGroup` components get `COMMON` and `LAYOUT` system props. Read our [System Props](/system-props) doc page for a full list of available props.
41
+
42
+ ## Component props
43
+
44
+ Native `<button>` HTML attributes are forwarded to the underlying React `button` component and are not listed below.
45
+
46
+ ### Button
47
+
48
+ | Prop name | Type | Default | Description |
49
+ | :-------- | :--------------- | :------: | :-------------------------------------------------------------------------------------------------------------------------- |
50
+ | as | String | `button` | sets the HTML tag for the component |
51
+ | fontSize | Number or String | | explicitly sets the font size for the Button text; overrides any value for the `variant` prop |
52
+ | variant | String | 'medium' | a value of `small`, `medium`, or `large` results in smaller or larger Button text size; no effect if `fontSize` prop is set |
53
+
54
+ ### ButtonGroup
55
+
56
+ `ButtonGroup` has access to the same props as `Box`