@primer/components 29.0.0 → 29.1.0-rc.4e9b967e

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 (856) 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 +106 -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 +10 -0
  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 +315 -0
  38. package/contributor-docs/principles.md +39 -0
  39. package/dist/browser.esm.js +195 -195
  40. package/dist/browser.esm.js.map +1 -1
  41. package/dist/browser.umd.js +301 -301
  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 +54 -0
  59. package/docs/content/CircleBadge.md +45 -0
  60. package/docs/content/CircleOcticon.md +18 -0
  61. package/docs/content/CounterLabel.md +30 -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 +42 -0
  70. package/docs/content/Flex.md +58 -0
  71. package/docs/content/FormGroup.md +44 -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 +40 -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 +73 -0
  84. package/docs/content/Position.md +97 -0
  85. package/docs/content/ProgressBar.mdx +29 -0
  86. package/docs/content/SelectMenu.md +433 -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 +33 -0
  91. package/docs/content/StyledOcticon.md +34 -0
  92. package/docs/content/SubNav.md +102 -0
  93. package/docs/content/TabNav.md +50 -0
  94. package/docs/content/Text.md +29 -0
  95. package/docs/content/TextInput.md +32 -0
  96. package/docs/content/Timeline.md +138 -0
  97. package/docs/content/Tooltip.md +41 -0
  98. package/docs/content/Truncate.md +65 -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 +134 -0
  105. package/docs/content/index.md +33 -0
  106. package/docs/content/linting.md +35 -0
  107. package/docs/content/overriding-styles.mdx +79 -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 +35 -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/Divider.js +1 -1
  134. package/lib/ActionList/Header.js +2 -2
  135. package/lib/ActionList/Item.js +10 -10
  136. package/lib/ActionList/List.js +1 -1
  137. package/lib/AvatarPair.js +1 -1
  138. package/lib/AvatarStack.js +1 -1
  139. package/lib/BranchName.js +1 -1
  140. package/lib/Breadcrumb.js +2 -2
  141. package/lib/Button/Button.js +1 -1
  142. package/lib/Button/ButtonClose.js +1 -1
  143. package/lib/Button/ButtonInvisible.js +1 -1
  144. package/lib/Button/ButtonTableList.js +1 -1
  145. package/lib/CircleBadge.js +1 -1
  146. package/lib/CircleOcticon.js +1 -1
  147. package/lib/CounterLabel.js +2 -2
  148. package/lib/Dialog/ConfirmationDialog.js +1 -1
  149. package/lib/Dialog/Dialog.js +5 -5
  150. package/lib/Dialog.js +4 -4
  151. package/lib/Dropdown.js +2 -2
  152. package/lib/DropdownStyles.js +6 -6
  153. package/lib/FilterList.js +1 -1
  154. package/lib/FilteredActionList/FilteredActionList.js +2 -2
  155. package/lib/Flash.js +1 -1
  156. package/lib/Label.js +2 -2
  157. package/lib/Link.js +1 -1
  158. package/lib/Overlay.js +1 -1
  159. package/lib/Pagehead.js +1 -1
  160. package/lib/Pagination/Pagination.js +1 -1
  161. package/lib/Popover.js +1 -1
  162. package/lib/ProgressBar.js +1 -1
  163. package/lib/SelectMenu/SelectMenuDivider.js +1 -1
  164. package/lib/SelectMenu/SelectMenuFilter.js +1 -1
  165. package/lib/SelectMenu/SelectMenuFooter.js +1 -1
  166. package/lib/SelectMenu/SelectMenuHeader.js +2 -2
  167. package/lib/SelectMenu/SelectMenuItem.js +1 -1
  168. package/lib/SelectMenu/SelectMenuList.js +1 -1
  169. package/lib/SelectMenu/SelectMenuLoadingAnimation.js +1 -1
  170. package/lib/SelectMenu/SelectMenuModal.js +2 -2
  171. package/lib/SelectMenu/SelectMenuTab.js +1 -1
  172. package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
  173. package/lib/SideNav.js +5 -5
  174. package/lib/StateLabel.js +1 -1
  175. package/lib/SubNav.js +1 -1
  176. package/lib/TabNav.js +2 -2
  177. package/lib/TextInput.js +2 -2
  178. package/lib/Timeline.js +5 -5
  179. package/lib/Tooltip.js +1 -1
  180. package/lib/UnderlineNav.js +2 -2
  181. package/lib/__tests__/ActionList.d.ts +1 -0
  182. package/lib/__tests__/ActionList.js +67 -0
  183. package/lib/__tests__/ActionMenu.d.ts +1 -0
  184. package/lib/__tests__/ActionMenu.js +154 -0
  185. package/lib/__tests__/AnchoredOverlay.d.ts +1 -0
  186. package/lib/__tests__/AnchoredOverlay.js +161 -0
  187. package/lib/__tests__/Avatar.d.ts +1 -0
  188. package/lib/__tests__/Avatar.js +70 -0
  189. package/lib/__tests__/AvatarStack.d.ts +1 -0
  190. package/lib/__tests__/AvatarStack.js +71 -0
  191. package/lib/__tests__/BorderBox.d.ts +1 -0
  192. package/lib/__tests__/BorderBox.js +61 -0
  193. package/lib/__tests__/Box.d.ts +1 -0
  194. package/lib/__tests__/Box.js +81 -0
  195. package/lib/__tests__/BranchName.d.ts +1 -0
  196. package/lib/__tests__/BranchName.js +39 -0
  197. package/lib/__tests__/Breadcrumb.d.ts +1 -0
  198. package/lib/__tests__/Breadcrumb.js +42 -0
  199. package/lib/__tests__/BreadcrumbItem.d.ts +1 -0
  200. package/lib/__tests__/BreadcrumbItem.js +52 -0
  201. package/lib/__tests__/Button.d.ts +1 -0
  202. package/lib/__tests__/Button.js +152 -0
  203. package/lib/__tests__/Caret.d.ts +1 -0
  204. package/lib/__tests__/Caret.js +52 -0
  205. package/lib/__tests__/CircleBadge.d.ts +1 -0
  206. package/lib/__tests__/CircleBadge.js +87 -0
  207. package/lib/__tests__/CircleOcticon.d.ts +1 -0
  208. package/lib/__tests__/CircleOcticon.js +74 -0
  209. package/lib/__tests__/CounterLabel.d.ts +1 -0
  210. package/lib/__tests__/CounterLabel.js +61 -0
  211. package/lib/__tests__/Details.d.ts +1 -0
  212. package/lib/__tests__/Details.js +120 -0
  213. package/lib/__tests__/Dialog.d.ts +1 -0
  214. package/lib/__tests__/Dialog.js +188 -0
  215. package/lib/__tests__/Dropdown.d.ts +1 -0
  216. package/lib/__tests__/Dropdown.js +70 -0
  217. package/lib/__tests__/DropdownMenu.d.ts +1 -0
  218. package/lib/__tests__/DropdownMenu.js +153 -0
  219. package/lib/__tests__/FilterList.d.ts +1 -0
  220. package/lib/__tests__/FilterList.js +39 -0
  221. package/lib/__tests__/FilterListItem.d.ts +1 -0
  222. package/lib/__tests__/FilterListItem.js +49 -0
  223. package/lib/__tests__/FilteredSearch.d.ts +1 -0
  224. package/lib/__tests__/FilteredSearch.js +39 -0
  225. package/lib/__tests__/Flash.d.ts +1 -0
  226. package/lib/__tests__/Flash.js +65 -0
  227. package/lib/__tests__/Flex.d.ts +1 -0
  228. package/lib/__tests__/Flex.js +77 -0
  229. package/lib/__tests__/FormGroup.d.ts +1 -0
  230. package/lib/__tests__/FormGroup.js +58 -0
  231. package/lib/__tests__/Grid.d.ts +1 -0
  232. package/lib/__tests__/Grid.js +107 -0
  233. package/lib/__tests__/Header.d.ts +1 -0
  234. package/lib/__tests__/Header.js +63 -0
  235. package/lib/__tests__/Heading.d.ts +1 -0
  236. package/lib/__tests__/Heading.js +112 -0
  237. package/lib/__tests__/Label.d.ts +1 -0
  238. package/lib/__tests__/Label.js +49 -0
  239. package/lib/__tests__/LabelGroup.d.ts +1 -0
  240. package/lib/__tests__/LabelGroup.js +41 -0
  241. package/lib/__tests__/Link.d.ts +1 -0
  242. package/lib/__tests__/Link.js +73 -0
  243. package/lib/__tests__/Overlay.d.ts +1 -0
  244. package/lib/__tests__/Overlay.js +145 -0
  245. package/lib/__tests__/Pagehead.d.ts +1 -0
  246. package/lib/__tests__/Pagehead.js +40 -0
  247. package/lib/__tests__/Pagination/Pagination.d.ts +1 -0
  248. package/lib/__tests__/Pagination/Pagination.js +50 -0
  249. package/lib/__tests__/Pagination/PaginationModel.d.ts +1 -0
  250. package/lib/__tests__/Pagination/PaginationModel.js +186 -0
  251. package/lib/__tests__/PointerBox.d.ts +1 -0
  252. package/lib/__tests__/PointerBox.js +49 -0
  253. package/lib/__tests__/Popover.d.ts +1 -0
  254. package/lib/__tests__/Popover.js +70 -0
  255. package/lib/__tests__/Portal.d.ts +1 -0
  256. package/lib/__tests__/Portal.js +124 -0
  257. package/lib/__tests__/Position.d.ts +1 -0
  258. package/lib/__tests__/Position.js +149 -0
  259. package/lib/__tests__/ProgressBar.d.ts +1 -0
  260. package/lib/__tests__/ProgressBar.js +71 -0
  261. package/lib/__tests__/SelectMenu.d.ts +1 -0
  262. package/lib/__tests__/SelectMenu.js +155 -0
  263. package/lib/__tests__/SelectPanel.d.ts +1 -0
  264. package/lib/__tests__/SelectPanel.js +83 -0
  265. package/lib/__tests__/SideNav.d.ts +1 -0
  266. package/lib/__tests__/SideNav.js +75 -0
  267. package/lib/__tests__/Spinner.d.ts +1 -0
  268. package/lib/__tests__/Spinner.js +56 -0
  269. package/lib/__tests__/StateLabel.d.ts +1 -0
  270. package/lib/__tests__/StateLabel.js +74 -0
  271. package/lib/__tests__/StyledOcticon.d.ts +1 -0
  272. package/lib/__tests__/StyledOcticon.js +43 -0
  273. package/lib/__tests__/SubNav.d.ts +1 -0
  274. package/lib/__tests__/SubNav.js +65 -0
  275. package/lib/__tests__/SubNavLink.d.ts +1 -0
  276. package/lib/__tests__/SubNavLink.js +52 -0
  277. package/lib/__tests__/TabNav.d.ts +1 -0
  278. package/lib/__tests__/TabNav.js +53 -0
  279. package/lib/__tests__/Text.d.ts +1 -0
  280. package/lib/__tests__/Text.js +108 -0
  281. package/lib/__tests__/TextInput.d.ts +1 -0
  282. package/lib/__tests__/TextInput.js +81 -0
  283. package/lib/__tests__/ThemeProvider.d.ts +1 -0
  284. package/lib/__tests__/ThemeProvider.js +444 -0
  285. package/lib/__tests__/Timeline.d.ts +1 -0
  286. package/lib/__tests__/Timeline.js +80 -0
  287. package/lib/__tests__/Tooltip.d.ts +1 -0
  288. package/lib/__tests__/Tooltip.js +72 -0
  289. package/lib/__tests__/Truncate.d.ts +1 -0
  290. package/lib/__tests__/Truncate.js +66 -0
  291. package/lib/__tests__/UnderlineNav.d.ts +1 -0
  292. package/lib/__tests__/UnderlineNav.js +75 -0
  293. package/lib/__tests__/UnderlineNavLink.d.ts +1 -0
  294. package/lib/__tests__/UnderlineNavLink.js +54 -0
  295. package/lib/__tests__/behaviors/anchoredPosition.d.ts +1 -0
  296. package/lib/__tests__/behaviors/anchoredPosition.js +390 -0
  297. package/lib/__tests__/behaviors/focusTrap.d.ts +1 -0
  298. package/lib/__tests__/behaviors/focusTrap.js +234 -0
  299. package/lib/__tests__/behaviors/focusZone.d.ts +1 -0
  300. package/lib/__tests__/behaviors/focusZone.js +570 -0
  301. package/lib/__tests__/behaviors/iterateFocusableElements.d.ts +1 -0
  302. package/lib/__tests__/behaviors/iterateFocusableElements.js +55 -0
  303. package/lib/__tests__/filterObject.d.ts +1 -0
  304. package/lib/__tests__/filterObject.js +30 -0
  305. package/lib/__tests__/hooks/useAnchoredPosition.d.ts +1 -0
  306. package/lib/__tests__/hooks/useAnchoredPosition.js +54 -0
  307. package/lib/__tests__/hooks/useOnEscapePress.d.ts +1 -0
  308. package/lib/__tests__/hooks/useOnEscapePress.js +32 -0
  309. package/lib/__tests__/hooks/useOnOutsideClick.d.ts +1 -0
  310. package/lib/__tests__/hooks/useOnOutsideClick.js +87 -0
  311. package/lib/__tests__/hooks/useOpenAndCloseFocus.d.ts +1 -0
  312. package/lib/__tests__/hooks/useOpenAndCloseFocus.js +60 -0
  313. package/lib/__tests__/hooks/useProvidedStateOrCreate.d.ts +1 -0
  314. package/lib/__tests__/hooks/useProvidedStateOrCreate.js +45 -0
  315. package/lib/__tests__/theme.d.ts +1 -0
  316. package/lib/__tests__/theme.js +36 -0
  317. package/lib/__tests__/themeGet.d.ts +1 -0
  318. package/lib/__tests__/themeGet.js +25 -0
  319. package/lib/__tests__/useSafeTimeout.d.ts +1 -0
  320. package/lib/__tests__/useSafeTimeout.js +45 -0
  321. package/lib/stories/ActionList.stories.d.ts +40 -0
  322. package/lib/stories/ActionList.stories.js +382 -0
  323. package/lib/stories/ActionMenu.stories.d.ts +29 -0
  324. package/lib/stories/ActionMenu.stories.js +338 -0
  325. package/lib/stories/AnchoredOverlay.stories.d.ts +6 -0
  326. package/lib/stories/AnchoredOverlay.stories.js +127 -0
  327. package/lib/stories/AvatarStack.stories.d.ts +8 -0
  328. package/lib/stories/AvatarStack.stories.js +49 -0
  329. package/lib/stories/Button.stories.d.ts +57 -0
  330. package/lib/stories/Button.stories.js +114 -0
  331. package/lib/stories/ConfirmationDialog.stories.d.ts +7 -0
  332. package/lib/stories/ConfirmationDialog.stories.js +111 -0
  333. package/lib/stories/Dialog.stories.d.ts +13 -0
  334. package/lib/stories/Dialog.stories.js +265 -0
  335. package/lib/stories/DropdownMenu.stories.d.ts +12 -0
  336. package/lib/stories/DropdownMenu.stories.js +122 -0
  337. package/lib/stories/Overlay.stories.d.ts +7 -0
  338. package/lib/stories/Overlay.stories.js +185 -0
  339. package/lib/stories/Portal.stories.d.ts +8 -0
  340. package/lib/stories/Portal.stories.js +104 -0
  341. package/lib/stories/SelectPanel.stories.d.ts +32 -0
  342. package/lib/stories/SelectPanel.stories.js +342 -0
  343. package/lib/stories/ThemeProvider.stories.d.ts +6 -0
  344. package/lib/stories/ThemeProvider.stories.js +102 -0
  345. package/lib/stories/useAnchoredPosition.stories.d.ts +8 -0
  346. package/lib/stories/useAnchoredPosition.stories.js +351 -0
  347. package/lib/stories/useFocusTrap.stories.d.ts +9 -0
  348. package/lib/stories/useFocusTrap.stories.js +356 -0
  349. package/lib/stories/useFocusZone.stories.d.ts +12 -0
  350. package/lib/stories/useFocusZone.stories.js +599 -0
  351. package/lib/theme-preval.d.ts +12 -6
  352. package/lib/theme-preval.js +2930 -1738
  353. package/lib/utils/testing.d.ts +4707 -2355
  354. package/lib-esm/ActionList/Divider.js +1 -1
  355. package/lib-esm/ActionList/Header.js +2 -2
  356. package/lib-esm/ActionList/Item.js +10 -10
  357. package/lib-esm/ActionList/List.js +1 -1
  358. package/lib-esm/AvatarPair.js +1 -1
  359. package/lib-esm/AvatarStack.js +1 -1
  360. package/lib-esm/BranchName.js +1 -1
  361. package/lib-esm/Breadcrumb.js +2 -2
  362. package/lib-esm/Button/Button.js +1 -1
  363. package/lib-esm/Button/ButtonClose.js +1 -1
  364. package/lib-esm/Button/ButtonInvisible.js +1 -1
  365. package/lib-esm/Button/ButtonTableList.js +1 -1
  366. package/lib-esm/CircleBadge.js +1 -1
  367. package/lib-esm/CircleOcticon.js +1 -1
  368. package/lib-esm/CounterLabel.js +2 -2
  369. package/lib-esm/Dialog/ConfirmationDialog.js +1 -1
  370. package/lib-esm/Dialog/Dialog.js +5 -5
  371. package/lib-esm/Dialog.js +4 -4
  372. package/lib-esm/Dropdown.js +2 -2
  373. package/lib-esm/DropdownStyles.js +6 -6
  374. package/lib-esm/FilterList.js +1 -1
  375. package/lib-esm/FilteredActionList/FilteredActionList.js +2 -2
  376. package/lib-esm/Flash.js +1 -1
  377. package/lib-esm/Label.js +2 -2
  378. package/lib-esm/Link.js +1 -1
  379. package/lib-esm/Overlay.js +1 -1
  380. package/lib-esm/Pagehead.js +1 -1
  381. package/lib-esm/Pagination/Pagination.js +1 -1
  382. package/lib-esm/Popover.js +1 -1
  383. package/lib-esm/ProgressBar.js +1 -1
  384. package/lib-esm/SelectMenu/SelectMenuDivider.js +1 -1
  385. package/lib-esm/SelectMenu/SelectMenuFilter.js +1 -1
  386. package/lib-esm/SelectMenu/SelectMenuFooter.js +1 -1
  387. package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
  388. package/lib-esm/SelectMenu/SelectMenuItem.js +1 -1
  389. package/lib-esm/SelectMenu/SelectMenuList.js +1 -1
  390. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +1 -1
  391. package/lib-esm/SelectMenu/SelectMenuModal.js +2 -2
  392. package/lib-esm/SelectMenu/SelectMenuTab.js +1 -1
  393. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +1 -1
  394. package/lib-esm/SideNav.js +5 -5
  395. package/lib-esm/StateLabel.js +1 -1
  396. package/lib-esm/SubNav.js +1 -1
  397. package/lib-esm/TabNav.js +2 -2
  398. package/lib-esm/TextInput.js +2 -2
  399. package/lib-esm/Timeline.js +5 -5
  400. package/lib-esm/Tooltip.js +1 -1
  401. package/lib-esm/UnderlineNav.js +2 -2
  402. package/lib-esm/__tests__/ActionList.d.ts +1 -0
  403. package/lib-esm/__tests__/ActionList.js +54 -0
  404. package/lib-esm/__tests__/ActionMenu.d.ts +1 -0
  405. package/lib-esm/__tests__/ActionMenu.js +141 -0
  406. package/lib-esm/__tests__/AnchoredOverlay.d.ts +1 -0
  407. package/lib-esm/__tests__/AnchoredOverlay.js +135 -0
  408. package/lib-esm/__tests__/Avatar.d.ts +1 -0
  409. package/lib-esm/__tests__/Avatar.js +58 -0
  410. package/lib-esm/__tests__/AvatarStack.d.ts +1 -0
  411. package/lib-esm/__tests__/AvatarStack.js +57 -0
  412. package/lib-esm/__tests__/BorderBox.d.ts +1 -0
  413. package/lib-esm/__tests__/BorderBox.js +49 -0
  414. package/lib-esm/__tests__/Box.d.ts +1 -0
  415. package/lib-esm/__tests__/Box.js +69 -0
  416. package/lib-esm/__tests__/BranchName.d.ts +1 -0
  417. package/lib-esm/__tests__/BranchName.js +28 -0
  418. package/lib-esm/__tests__/Breadcrumb.d.ts +1 -0
  419. package/lib-esm/__tests__/Breadcrumb.js +31 -0
  420. package/lib-esm/__tests__/BreadcrumbItem.d.ts +1 -0
  421. package/lib-esm/__tests__/BreadcrumbItem.js +41 -0
  422. package/lib-esm/__tests__/Button.d.ts +1 -0
  423. package/lib-esm/__tests__/Button.js +141 -0
  424. package/lib-esm/__tests__/Caret.d.ts +1 -0
  425. package/lib-esm/__tests__/Caret.js +42 -0
  426. package/lib-esm/__tests__/CircleBadge.d.ts +1 -0
  427. package/lib-esm/__tests__/CircleBadge.js +73 -0
  428. package/lib-esm/__tests__/CircleOcticon.d.ts +1 -0
  429. package/lib-esm/__tests__/CircleOcticon.js +61 -0
  430. package/lib-esm/__tests__/CounterLabel.d.ts +1 -0
  431. package/lib-esm/__tests__/CounterLabel.js +49 -0
  432. package/lib-esm/__tests__/Details.d.ts +1 -0
  433. package/lib-esm/__tests__/Details.js +109 -0
  434. package/lib-esm/__tests__/Dialog.d.ts +1 -0
  435. package/lib-esm/__tests__/Dialog.js +174 -0
  436. package/lib-esm/__tests__/Dropdown.d.ts +1 -0
  437. package/lib-esm/__tests__/Dropdown.js +59 -0
  438. package/lib-esm/__tests__/DropdownMenu.d.ts +1 -0
  439. package/lib-esm/__tests__/DropdownMenu.js +139 -0
  440. package/lib-esm/__tests__/FilterList.d.ts +1 -0
  441. package/lib-esm/__tests__/FilterList.js +28 -0
  442. package/lib-esm/__tests__/FilterListItem.d.ts +1 -0
  443. package/lib-esm/__tests__/FilterListItem.js +38 -0
  444. package/lib-esm/__tests__/FilteredSearch.d.ts +1 -0
  445. package/lib-esm/__tests__/FilteredSearch.js +28 -0
  446. package/lib-esm/__tests__/Flash.d.ts +1 -0
  447. package/lib-esm/__tests__/Flash.js +53 -0
  448. package/lib-esm/__tests__/Flex.d.ts +1 -0
  449. package/lib-esm/__tests__/Flex.js +66 -0
  450. package/lib-esm/__tests__/FormGroup.d.ts +1 -0
  451. package/lib-esm/__tests__/FormGroup.js +47 -0
  452. package/lib-esm/__tests__/Grid.d.ts +1 -0
  453. package/lib-esm/__tests__/Grid.js +96 -0
  454. package/lib-esm/__tests__/Header.d.ts +1 -0
  455. package/lib-esm/__tests__/Header.js +52 -0
  456. package/lib-esm/__tests__/Heading.d.ts +1 -0
  457. package/lib-esm/__tests__/Heading.js +101 -0
  458. package/lib-esm/__tests__/Label.d.ts +1 -0
  459. package/lib-esm/__tests__/Label.js +38 -0
  460. package/lib-esm/__tests__/LabelGroup.d.ts +1 -0
  461. package/lib-esm/__tests__/LabelGroup.js +28 -0
  462. package/lib-esm/__tests__/Link.d.ts +1 -0
  463. package/lib-esm/__tests__/Link.js +62 -0
  464. package/lib-esm/__tests__/Overlay.d.ts +1 -0
  465. package/lib-esm/__tests__/Overlay.js +123 -0
  466. package/lib-esm/__tests__/Pagehead.d.ts +1 -0
  467. package/lib-esm/__tests__/Pagehead.js +28 -0
  468. package/lib-esm/__tests__/Pagination/Pagination.d.ts +1 -0
  469. package/lib-esm/__tests__/Pagination/Pagination.js +37 -0
  470. package/lib-esm/__tests__/Pagination/PaginationModel.d.ts +1 -0
  471. package/lib-esm/__tests__/Pagination/PaginationModel.js +182 -0
  472. package/lib-esm/__tests__/PointerBox.d.ts +1 -0
  473. package/lib-esm/__tests__/PointerBox.js +38 -0
  474. package/lib-esm/__tests__/Popover.d.ts +1 -0
  475. package/lib-esm/__tests__/Popover.js +56 -0
  476. package/lib-esm/__tests__/Portal.d.ts +1 -0
  477. package/lib-esm/__tests__/Portal.js +104 -0
  478. package/lib-esm/__tests__/Position.d.ts +1 -0
  479. package/lib-esm/__tests__/Position.js +138 -0
  480. package/lib-esm/__tests__/ProgressBar.d.ts +1 -0
  481. package/lib-esm/__tests__/ProgressBar.js +60 -0
  482. package/lib-esm/__tests__/SelectMenu.d.ts +1 -0
  483. package/lib-esm/__tests__/SelectMenu.js +145 -0
  484. package/lib-esm/__tests__/SelectPanel.d.ts +1 -0
  485. package/lib-esm/__tests__/SelectPanel.js +67 -0
  486. package/lib-esm/__tests__/SideNav.d.ts +1 -0
  487. package/lib-esm/__tests__/SideNav.js +63 -0
  488. package/lib-esm/__tests__/Spinner.d.ts +1 -0
  489. package/lib-esm/__tests__/Spinner.js +45 -0
  490. package/lib-esm/__tests__/StateLabel.d.ts +1 -0
  491. package/lib-esm/__tests__/StateLabel.js +63 -0
  492. package/lib-esm/__tests__/StyledOcticon.d.ts +1 -0
  493. package/lib-esm/__tests__/StyledOcticon.js +31 -0
  494. package/lib-esm/__tests__/SubNav.d.ts +1 -0
  495. package/lib-esm/__tests__/SubNav.js +52 -0
  496. package/lib-esm/__tests__/SubNavLink.d.ts +1 -0
  497. package/lib-esm/__tests__/SubNavLink.js +41 -0
  498. package/lib-esm/__tests__/TabNav.d.ts +1 -0
  499. package/lib-esm/__tests__/TabNav.js +42 -0
  500. package/lib-esm/__tests__/Text.d.ts +1 -0
  501. package/lib-esm/__tests__/Text.js +95 -0
  502. package/lib-esm/__tests__/TextInput.d.ts +1 -0
  503. package/lib-esm/__tests__/TextInput.js +70 -0
  504. package/lib-esm/__tests__/ThemeProvider.d.ts +1 -0
  505. package/lib-esm/__tests__/ThemeProvider.js +408 -0
  506. package/lib-esm/__tests__/Timeline.d.ts +1 -0
  507. package/lib-esm/__tests__/Timeline.js +69 -0
  508. package/lib-esm/__tests__/Tooltip.d.ts +1 -0
  509. package/lib-esm/__tests__/Tooltip.js +61 -0
  510. package/lib-esm/__tests__/Truncate.d.ts +1 -0
  511. package/lib-esm/__tests__/Truncate.js +55 -0
  512. package/lib-esm/__tests__/UnderlineNav.d.ts +1 -0
  513. package/lib-esm/__tests__/UnderlineNav.js +62 -0
  514. package/lib-esm/__tests__/UnderlineNavLink.d.ts +1 -0
  515. package/lib-esm/__tests__/UnderlineNavLink.js +43 -0
  516. package/lib-esm/__tests__/behaviors/anchoredPosition.d.ts +1 -0
  517. package/lib-esm/__tests__/behaviors/anchoredPosition.js +388 -0
  518. package/lib-esm/__tests__/behaviors/focusTrap.d.ts +1 -0
  519. package/lib-esm/__tests__/behaviors/focusTrap.js +227 -0
  520. package/lib-esm/__tests__/behaviors/focusZone.d.ts +1 -0
  521. package/lib-esm/__tests__/behaviors/focusZone.js +487 -0
  522. package/lib-esm/__tests__/behaviors/iterateFocusableElements.d.ts +1 -0
  523. package/lib-esm/__tests__/behaviors/iterateFocusableElements.js +48 -0
  524. package/lib-esm/__tests__/filterObject.d.ts +1 -0
  525. package/lib-esm/__tests__/filterObject.js +27 -0
  526. package/lib-esm/__tests__/hooks/useAnchoredPosition.d.ts +1 -0
  527. package/lib-esm/__tests__/hooks/useAnchoredPosition.js +46 -0
  528. package/lib-esm/__tests__/hooks/useOnEscapePress.d.ts +1 -0
  529. package/lib-esm/__tests__/hooks/useOnEscapePress.js +23 -0
  530. package/lib-esm/__tests__/hooks/useOnOutsideClick.d.ts +1 -0
  531. package/lib-esm/__tests__/hooks/useOnOutsideClick.js +68 -0
  532. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.d.ts +1 -0
  533. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.js +52 -0
  534. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.d.ts +1 -0
  535. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.js +36 -0
  536. package/lib-esm/__tests__/theme.d.ts +1 -0
  537. package/lib-esm/__tests__/theme.js +33 -0
  538. package/lib-esm/__tests__/themeGet.d.ts +1 -0
  539. package/lib-esm/__tests__/themeGet.js +22 -0
  540. package/lib-esm/__tests__/useSafeTimeout.d.ts +1 -0
  541. package/lib-esm/__tests__/useSafeTimeout.js +39 -0
  542. package/lib-esm/stories/ActionList.stories.d.ts +40 -0
  543. package/lib-esm/stories/ActionList.stories.js +334 -0
  544. package/lib-esm/stories/ActionMenu.stories.d.ts +29 -0
  545. package/lib-esm/stories/ActionMenu.stories.js +293 -0
  546. package/lib-esm/stories/AnchoredOverlay.stories.d.ts +6 -0
  547. package/lib-esm/stories/AnchoredOverlay.stories.js +101 -0
  548. package/lib-esm/stories/AvatarStack.stories.d.ts +8 -0
  549. package/lib-esm/stories/AvatarStack.stories.js +32 -0
  550. package/lib-esm/stories/Button.stories.d.ts +57 -0
  551. package/lib-esm/stories/Button.stories.js +78 -0
  552. package/lib-esm/stories/ConfirmationDialog.stories.d.ts +7 -0
  553. package/lib-esm/stories/ConfirmationDialog.stories.js +86 -0
  554. package/lib-esm/stories/Dialog.stories.d.ts +13 -0
  555. package/lib-esm/stories/Dialog.stories.js +240 -0
  556. package/lib-esm/stories/DropdownMenu.stories.d.ts +12 -0
  557. package/lib-esm/stories/DropdownMenu.stories.js +94 -0
  558. package/lib-esm/stories/Overlay.stories.d.ts +7 -0
  559. package/lib-esm/stories/Overlay.stories.js +154 -0
  560. package/lib-esm/stories/Portal.stories.d.ts +8 -0
  561. package/lib-esm/stories/Portal.stories.js +68 -0
  562. package/lib-esm/stories/SelectPanel.stories.d.ts +32 -0
  563. package/lib-esm/stories/SelectPanel.stories.js +284 -0
  564. package/lib-esm/stories/ThemeProvider.stories.d.ts +6 -0
  565. package/lib-esm/stories/ThemeProvider.stories.js +83 -0
  566. package/lib-esm/stories/useAnchoredPosition.stories.d.ts +8 -0
  567. package/lib-esm/stories/useAnchoredPosition.stories.js +313 -0
  568. package/lib-esm/stories/useFocusTrap.stories.d.ts +9 -0
  569. package/lib-esm/stories/useFocusTrap.stories.js +309 -0
  570. package/lib-esm/stories/useFocusZone.stories.d.ts +12 -0
  571. package/lib-esm/stories/useFocusZone.stories.js +554 -0
  572. package/lib-esm/theme-preval.d.ts +12 -6
  573. package/lib-esm/theme-preval.js +2930 -1738
  574. package/lib-esm/utils/testing.d.ts +4707 -2355
  575. package/migrating.md +250 -0
  576. package/now.json +17 -0
  577. package/package-lock.json +28661 -0
  578. package/package.json +3 -2
  579. package/rollup.config.js +36 -0
  580. package/script/build +19 -0
  581. package/script/setup +12 -0
  582. package/src/ActionList/Divider.tsx +25 -0
  583. package/src/ActionList/Group.tsx +45 -0
  584. package/src/ActionList/Header.tsx +74 -0
  585. package/src/ActionList/Item.tsx +460 -0
  586. package/src/ActionList/List.tsx +253 -0
  587. package/src/ActionList/index.ts +21 -0
  588. package/src/ActionMenu.tsx +106 -0
  589. package/src/AnchoredOverlay/AnchoredOverlay.tsx +180 -0
  590. package/src/AnchoredOverlay/index.ts +2 -0
  591. package/src/Avatar.tsx +46 -0
  592. package/src/AvatarPair.tsx +35 -0
  593. package/src/AvatarStack.tsx +161 -0
  594. package/src/BaseStyles.tsx +53 -0
  595. package/src/BorderBox.tsx +18 -0
  596. package/src/Box.tsx +54 -0
  597. package/src/BranchName.tsx +19 -0
  598. package/src/Breadcrumb.tsx +87 -0
  599. package/src/Button/Button.tsx +40 -0
  600. package/src/Button/ButtonBase.tsx +43 -0
  601. package/src/Button/ButtonClose.tsx +40 -0
  602. package/src/Button/ButtonDanger.tsx +43 -0
  603. package/src/Button/ButtonGroup.tsx +55 -0
  604. package/src/Button/ButtonInvisible.tsx +27 -0
  605. package/src/Button/ButtonOutline.tsx +43 -0
  606. package/src/Button/ButtonPrimary.tsx +41 -0
  607. package/src/Button/ButtonStyles.tsx +36 -0
  608. package/src/Button/ButtonTableList.tsx +58 -0
  609. package/src/Button/index.ts +16 -0
  610. package/src/Caret.tsx +133 -0
  611. package/src/CircleBadge.tsx +55 -0
  612. package/src/CircleOcticon.tsx +37 -0
  613. package/src/CounterLabel.tsx +52 -0
  614. package/src/Details.tsx +23 -0
  615. package/src/Dialog/ConfirmationDialog.tsx +184 -0
  616. package/src/Dialog/Dialog.tsx +419 -0
  617. package/src/Dialog.tsx +149 -0
  618. package/src/Dropdown.tsx +158 -0
  619. package/src/DropdownMenu/DropdownButton.tsx +15 -0
  620. package/src/DropdownMenu/DropdownMenu.tsx +115 -0
  621. package/src/DropdownMenu/index.ts +4 -0
  622. package/src/DropdownStyles.ts +128 -0
  623. package/src/FilterList.tsx +81 -0
  624. package/src/FilteredActionList/FilteredActionList.tsx +152 -0
  625. package/src/FilteredActionList/index.ts +2 -0
  626. package/src/FilteredSearch.tsx +28 -0
  627. package/src/Flash.tsx +77 -0
  628. package/src/Flex.tsx +15 -0
  629. package/src/FormGroup.tsx +27 -0
  630. package/src/Grid.tsx +15 -0
  631. package/src/Header.tsx +84 -0
  632. package/src/Heading.tsx +21 -0
  633. package/src/Label.tsx +75 -0
  634. package/src/LabelGroup.tsx +18 -0
  635. package/src/Link.tsx +46 -0
  636. package/src/Overlay.tsx +194 -0
  637. package/src/Pagehead.tsx +17 -0
  638. package/src/Pagination/Pagination.tsx +214 -0
  639. package/src/Pagination/index.ts +4 -0
  640. package/src/Pagination/model.tsx +187 -0
  641. package/src/PointerBox.tsx +31 -0
  642. package/src/Popover.tsx +236 -0
  643. package/src/Portal/Portal.tsx +96 -0
  644. package/src/Portal/index.ts +5 -0
  645. package/src/Position.tsx +63 -0
  646. package/src/ProgressBar.tsx +52 -0
  647. package/src/SelectMenu/SelectMenu.tsx +125 -0
  648. package/src/SelectMenu/SelectMenuContext.tsx +9 -0
  649. package/src/SelectMenu/SelectMenuDivider.tsx +25 -0
  650. package/src/SelectMenu/SelectMenuFilter.tsx +51 -0
  651. package/src/SelectMenu/SelectMenuFooter.tsx +28 -0
  652. package/src/SelectMenu/SelectMenuHeader.tsx +50 -0
  653. package/src/SelectMenu/SelectMenuItem.tsx +137 -0
  654. package/src/SelectMenu/SelectMenuList.tsx +42 -0
  655. package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +24 -0
  656. package/src/SelectMenu/SelectMenuModal.tsx +121 -0
  657. package/src/SelectMenu/SelectMenuTab.tsx +88 -0
  658. package/src/SelectMenu/SelectMenuTabPanel.tsx +30 -0
  659. package/src/SelectMenu/SelectMenuTabs.tsx +44 -0
  660. package/src/SelectMenu/hooks/useKeyboardNav.js +90 -0
  661. package/src/SelectMenu/index.ts +15 -0
  662. package/src/SelectPanel/SelectPanel.tsx +173 -0
  663. package/src/SelectPanel/index.ts +2 -0
  664. package/src/SideNav.tsx +193 -0
  665. package/src/Spinner.tsx +59 -0
  666. package/src/StateLabel.tsx +110 -0
  667. package/src/StyledOcticon.tsx +24 -0
  668. package/src/SubNav.tsx +129 -0
  669. package/src/TabNav.tsx +77 -0
  670. package/src/Text.tsx +13 -0
  671. package/src/TextInput.tsx +183 -0
  672. package/src/ThemeProvider.tsx +176 -0
  673. package/src/Timeline.tsx +141 -0
  674. package/src/Tooltip.tsx +263 -0
  675. package/src/Truncate.tsx +36 -0
  676. package/src/UnderlineNav.tsx +110 -0
  677. package/src/__tests__/.eslintrc.json +11 -0
  678. package/src/__tests__/ActionList.tsx +49 -0
  679. package/src/__tests__/ActionMenu.tsx +138 -0
  680. package/src/__tests__/AnchoredOverlay.tsx +151 -0
  681. package/src/__tests__/Avatar.tsx +45 -0
  682. package/src/__tests__/AvatarStack.tsx +45 -0
  683. package/src/__tests__/BorderBox.tsx +44 -0
  684. package/src/__tests__/Box.tsx +43 -0
  685. package/src/__tests__/BranchName.tsx +27 -0
  686. package/src/__tests__/Breadcrumb.tsx +31 -0
  687. package/src/__tests__/BreadcrumbItem.tsx +32 -0
  688. package/src/__tests__/Button.tsx +129 -0
  689. package/src/__tests__/Caret.tsx +36 -0
  690. package/src/__tests__/CircleBadge.tsx +69 -0
  691. package/src/__tests__/CircleOcticon.tsx +52 -0
  692. package/src/__tests__/CounterLabel.tsx +51 -0
  693. package/src/__tests__/Details.tsx +116 -0
  694. package/src/__tests__/Dialog.tsx +157 -0
  695. package/src/__tests__/Dropdown.tsx +57 -0
  696. package/src/__tests__/DropdownMenu.tsx +138 -0
  697. package/src/__tests__/FilterList.tsx +27 -0
  698. package/src/__tests__/FilterListItem.tsx +32 -0
  699. package/src/__tests__/FilteredSearch.tsx +27 -0
  700. package/src/__tests__/Flash.tsx +46 -0
  701. package/src/__tests__/Flex.tsx +59 -0
  702. package/src/__tests__/FormGroup.tsx +39 -0
  703. package/src/__tests__/Grid.tsx +83 -0
  704. package/src/__tests__/Header.tsx +50 -0
  705. package/src/__tests__/Heading.tsx +92 -0
  706. package/src/__tests__/Label.tsx +35 -0
  707. package/src/__tests__/LabelGroup.tsx +31 -0
  708. package/src/__tests__/Link.tsx +48 -0
  709. package/src/__tests__/Overlay.tsx +103 -0
  710. package/src/__tests__/Pagehead.tsx +24 -0
  711. package/src/__tests__/Pagination/Pagination.tsx +31 -0
  712. package/src/__tests__/Pagination/PaginationModel.tsx +133 -0
  713. package/src/__tests__/Pagination/__snapshots__/Pagination.tsx.snap +184 -0
  714. package/src/__tests__/PointerBox.tsx +35 -0
  715. package/src/__tests__/Popover.tsx +69 -0
  716. package/src/__tests__/Portal.tsx +103 -0
  717. package/src/__tests__/Position.tsx +118 -0
  718. package/src/__tests__/ProgressBar.tsx +41 -0
  719. package/src/__tests__/SelectMenu.tsx +142 -0
  720. package/src/__tests__/SelectPanel.tsx +65 -0
  721. package/src/__tests__/SideNav.tsx +63 -0
  722. package/src/__tests__/Spinner.tsx +44 -0
  723. package/src/__tests__/StateLabel.tsx +50 -0
  724. package/src/__tests__/StyledOcticon.tsx +28 -0
  725. package/src/__tests__/SubNav.tsx +51 -0
  726. package/src/__tests__/SubNavLink.tsx +32 -0
  727. package/src/__tests__/TabNav.tsx +33 -0
  728. package/src/__tests__/Text.tsx +79 -0
  729. package/src/__tests__/TextInput.tsx +50 -0
  730. package/src/__tests__/ThemeProvider.tsx +441 -0
  731. package/src/__tests__/Timeline.tsx +59 -0
  732. package/src/__tests__/Tooltip.tsx +53 -0
  733. package/src/__tests__/Truncate.tsx +45 -0
  734. package/src/__tests__/UnderlineNav.tsx +59 -0
  735. package/src/__tests__/UnderlineNavLink.tsx +32 -0
  736. package/src/__tests__/__snapshots__/ActionList.tsx.snap +27 -0
  737. package/src/__tests__/__snapshots__/ActionMenu.tsx.snap +80 -0
  738. package/src/__tests__/__snapshots__/AnchoredOverlay.tsx.snap +332 -0
  739. package/src/__tests__/__snapshots__/Avatar.tsx.snap +19 -0
  740. package/src/__tests__/__snapshots__/AvatarStack.tsx.snap +377 -0
  741. package/src/__tests__/__snapshots__/BorderBox.tsx.snap +14 -0
  742. package/src/__tests__/__snapshots__/Box.tsx.snap +201 -0
  743. package/src/__tests__/__snapshots__/BranchName.tsx.snap +17 -0
  744. package/src/__tests__/__snapshots__/Breadcrumb.tsx.snap +29 -0
  745. package/src/__tests__/__snapshots__/BreadcrumbItem.tsx.snap +79 -0
  746. package/src/__tests__/__snapshots__/Button.tsx.snap +832 -0
  747. package/src/__tests__/__snapshots__/Caret.tsx.snap +373 -0
  748. package/src/__tests__/__snapshots__/CircleBadge.tsx.snap +141 -0
  749. package/src/__tests__/__snapshots__/CircleOcticon.tsx.snap +64 -0
  750. package/src/__tests__/__snapshots__/CounterLabel.tsx.snap +22 -0
  751. package/src/__tests__/__snapshots__/Details.tsx.snap +15 -0
  752. package/src/__tests__/__snapshots__/Dialog.tsx.snap +200 -0
  753. package/src/__tests__/__snapshots__/Dropdown.tsx.snap +249 -0
  754. package/src/__tests__/__snapshots__/DropdownMenu.tsx.snap +106 -0
  755. package/src/__tests__/__snapshots__/FilterList.tsx.snap +13 -0
  756. package/src/__tests__/__snapshots__/FilterListItem.tsx.snap +80 -0
  757. package/src/__tests__/__snapshots__/FilteredSearch.tsx.snap +32 -0
  758. package/src/__tests__/__snapshots__/Flash.tsx.snap +32 -0
  759. package/src/__tests__/__snapshots__/Flex.tsx.snap +130 -0
  760. package/src/__tests__/__snapshots__/FormGroup.tsx.snap +25 -0
  761. package/src/__tests__/__snapshots__/Grid.tsx.snap +178 -0
  762. package/src/__tests__/__snapshots__/Header.tsx.snap +79 -0
  763. package/src/__tests__/__snapshots__/Heading.tsx.snap +13 -0
  764. package/src/__tests__/__snapshots__/Label.tsx.snap +74 -0
  765. package/src/__tests__/__snapshots__/LabelGroup.tsx.snap +15 -0
  766. package/src/__tests__/__snapshots__/Link.tsx.snap +213 -0
  767. package/src/__tests__/__snapshots__/Pagehead.tsx.snap +15 -0
  768. package/src/__tests__/__snapshots__/PointerBox.tsx.snap +174 -0
  769. package/src/__tests__/__snapshots__/Popover.tsx.snap +4687 -0
  770. package/src/__tests__/__snapshots__/Position.tsx.snap +44 -0
  771. package/src/__tests__/__snapshots__/ProgressBar.tsx.snap +53 -0
  772. package/src/__tests__/__snapshots__/SelectMenu.tsx.snap +469 -0
  773. package/src/__tests__/__snapshots__/SelectPanel.tsx.snap +123 -0
  774. package/src/__tests__/__snapshots__/SideNav.tsx.snap +143 -0
  775. package/src/__tests__/__snapshots__/Spinner.tsx.snap +33 -0
  776. package/src/__tests__/__snapshots__/StateLabel.tsx.snap +409 -0
  777. package/src/__tests__/__snapshots__/StyledOcticon.tsx.snap +25 -0
  778. package/src/__tests__/__snapshots__/SubNav.tsx.snap +44 -0
  779. package/src/__tests__/__snapshots__/SubNavLink.tsx.snap +199 -0
  780. package/src/__tests__/__snapshots__/TabNav.tsx.snap +58 -0
  781. package/src/__tests__/__snapshots__/Text.tsx.snap +7 -0
  782. package/src/__tests__/__snapshots__/TextInput.tsx.snap +440 -0
  783. package/src/__tests__/__snapshots__/ThemeProvider.tsx.snap +15 -0
  784. package/src/__tests__/__snapshots__/Timeline.tsx.snap +159 -0
  785. package/src/__tests__/__snapshots__/Tooltip.tsx.snap +227 -0
  786. package/src/__tests__/__snapshots__/Truncate.tsx.snap +17 -0
  787. package/src/__tests__/__snapshots__/UnderlineNav.tsx.snap +59 -0
  788. package/src/__tests__/__snapshots__/UnderlineNavLink.tsx.snap +130 -0
  789. package/src/__tests__/behaviors/anchoredPosition.ts +295 -0
  790. package/src/__tests__/behaviors/focusTrap.tsx +236 -0
  791. package/src/__tests__/behaviors/focusZone.tsx +549 -0
  792. package/src/__tests__/behaviors/iterateFocusableElements.tsx +61 -0
  793. package/src/__tests__/filterObject.ts +54 -0
  794. package/src/__tests__/hooks/useAnchoredPosition.tsx +31 -0
  795. package/src/__tests__/hooks/useOnEscapePress.tsx +16 -0
  796. package/src/__tests__/hooks/useOnOutsideClick.tsx +48 -0
  797. package/src/__tests__/hooks/useOpenAndCloseFocus.tsx +48 -0
  798. package/src/__tests__/hooks/useProvidedStateOrCreate.tsx +39 -0
  799. package/src/__tests__/theme.ts +41 -0
  800. package/src/__tests__/themeGet.ts +15 -0
  801. package/src/__tests__/useSafeTimeout.tsx +36 -0
  802. package/src/behaviors/anchoredPosition.ts +442 -0
  803. package/src/behaviors/focusTrap.ts +184 -0
  804. package/src/behaviors/focusZone.ts +713 -0
  805. package/src/constants.ts +62 -0
  806. package/src/hooks/index.ts +11 -0
  807. package/src/hooks/useAnchoredPosition.ts +53 -0
  808. package/src/hooks/useCombinedRefs.ts +40 -0
  809. package/src/hooks/useDetails.tsx +54 -0
  810. package/src/hooks/useDialog.ts +121 -0
  811. package/src/hooks/useFocusTrap.ts +80 -0
  812. package/src/hooks/useFocusZone.ts +64 -0
  813. package/src/hooks/useOnEscapePress.ts +63 -0
  814. package/src/hooks/useOnOutsideClick.tsx +82 -0
  815. package/src/hooks/useOpenAndCloseFocus.ts +27 -0
  816. package/src/hooks/useOverlay.tsx +32 -0
  817. package/src/hooks/useProvidedRefOrCreate.ts +14 -0
  818. package/src/hooks/useProvidedStateOrCreate.ts +27 -0
  819. package/src/hooks/useRenderForcingRef.ts +22 -0
  820. package/src/hooks/useResizeObserver.ts +11 -0
  821. package/src/hooks/useSafeTimeout.ts +38 -0
  822. package/src/hooks/useScrollFlash.ts +21 -0
  823. package/src/index.ts +165 -0
  824. package/src/polyfills/eventListenerSignal.ts +66 -0
  825. package/src/stories/ActionList.stories.tsx +364 -0
  826. package/src/stories/ActionMenu.stories.tsx +322 -0
  827. package/src/stories/AnchoredOverlay.stories.tsx +117 -0
  828. package/src/stories/AvatarStack.stories.tsx +37 -0
  829. package/src/stories/Button.stories.tsx +88 -0
  830. package/src/stories/ConfirmationDialog.stories.tsx +105 -0
  831. package/src/stories/Dialog.stories.tsx +240 -0
  832. package/src/stories/DropdownMenu.stories.tsx +84 -0
  833. package/src/stories/Overlay.stories.tsx +186 -0
  834. package/src/stories/Portal.stories.tsx +109 -0
  835. package/src/stories/SelectPanel.stories.tsx +300 -0
  836. package/src/stories/ThemeProvider.stories.tsx +104 -0
  837. package/src/stories/useAnchoredPosition.stories.tsx +320 -0
  838. package/src/stories/useFocusTrap.stories.tsx +400 -0
  839. package/src/stories/useFocusZone.stories.tsx +663 -0
  840. package/src/sx.ts +9 -0
  841. package/src/theme-preval.js +136 -0
  842. package/src/theme.ts +3 -0
  843. package/src/utils/deprecate.tsx +73 -0
  844. package/src/utils/isNumeric.tsx +4 -0
  845. package/src/utils/iterateFocusableElements.ts +121 -0
  846. package/src/utils/ssr.tsx +1 -0
  847. package/src/utils/test-deprecations.tsx +19 -0
  848. package/src/utils/test-helpers.tsx +7 -0
  849. package/src/utils/test-matchers.tsx +109 -0
  850. package/src/utils/testing.tsx +243 -0
  851. package/src/utils/theme.js +64 -0
  852. package/src/utils/types.ts +90 -0
  853. package/src/utils/uniqueId.ts +6 -0
  854. package/src/utils/userAgent.ts +7 -0
  855. package/stats.html +3279 -0
  856. package/tsconfig.json +20 -0
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { Meta } from '@storybook/react';
3
+ import { DialogWidth, DialogHeight } from '../Dialog/Dialog';
4
+ declare const _default: Meta<import("@storybook/react").Args>;
5
+ export default _default;
6
+ interface DialogStoryProps {
7
+ width: DialogWidth;
8
+ height: DialogHeight;
9
+ subtitle: boolean;
10
+ }
11
+ export declare const BasicDialog: ({ width, height, subtitle }: DialogStoryProps) => JSX.Element;
12
+ export declare const WithCustomRenderers: ({ width, height, subtitle }: DialogStoryProps) => JSX.Element;
13
+ export declare const StressTest: ({ width, height, subtitle }: DialogStoryProps) => JSX.Element;
@@ -0,0 +1,240 @@
1
+ import React, { useState, useRef, useCallback } from 'react';
2
+ import { BaseStyles, Button, ThemeProvider, Box } from '..';
3
+ import { Dialog } from '../Dialog/Dialog';
4
+ export default {
5
+ title: 'Internal components/Dialog',
6
+ component: Dialog,
7
+ decorators: [Story => {
8
+ // Since portal roots are registered globally, we need this line so that each storybook
9
+ // story works in isolation.
10
+ return /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(Story, null)));
11
+ }],
12
+ argTypes: {
13
+ width: {
14
+ defaultValue: 'xlarge',
15
+ control: {
16
+ type: 'radio',
17
+ options: ['small', 'medium', 'large', 'xlarge']
18
+ }
19
+ },
20
+ height: {
21
+ defaultValue: 'auto',
22
+ control: {
23
+ type: 'radio',
24
+ options: ['small', 'large', 'auto']
25
+ }
26
+ },
27
+ subtitle: {
28
+ name: 'show subtitle',
29
+ defaultValue: true,
30
+ control: {
31
+ type: 'boolean'
32
+ }
33
+ },
34
+ title: {
35
+ table: {
36
+ disable: true
37
+ }
38
+ },
39
+ renderHeader: {
40
+ table: {
41
+ disable: true
42
+ }
43
+ },
44
+ renderBody: {
45
+ table: {
46
+ disable: true
47
+ }
48
+ },
49
+ renderFooter: {
50
+ table: {
51
+ disable: true
52
+ }
53
+ },
54
+ onClose: {
55
+ table: {
56
+ disable: true
57
+ }
58
+ },
59
+ role: {
60
+ table: {
61
+ disable: true
62
+ }
63
+ },
64
+ ref: {
65
+ table: {
66
+ disable: true
67
+ }
68
+ },
69
+ key: {
70
+ table: {
71
+ disable: true
72
+ }
73
+ },
74
+ footerButtons: {
75
+ table: {
76
+ disable: true
77
+ }
78
+ }
79
+ }
80
+ };
81
+ const lipsum = /*#__PURE__*/React.createElement("div", {
82
+ style: {
83
+ fontSize: '14px'
84
+ }
85
+ }, /*#__PURE__*/React.createElement("p", {
86
+ style: {
87
+ marginBlockStart: 0
88
+ }
89
+ }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sollicitudin mauris maximus elit sagittis, nec lobortis ligula elementum. Nam iaculis, urna nec lobortis posuere, eros urna venenatis eros, vel accumsan turpis nunc vitae enim. Maecenas et lorem lectus. Vivamus iaculis tortor eget ante placerat, nec posuere nisl tincidunt. Cras condimentum ante in accumsan ultricies. Morbi quis porta est, sit amet congue augue. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut consequat nunc id quam tempus, id tincidunt neque venenatis. Mauris fringilla tempor est, vitae fermentum enim elementum vitae. Nullam eleifend odio ut porta efficitur. Phasellus luctus tempus posuere."), /*#__PURE__*/React.createElement("p", null, "Curabitur scelerisque bibendum faucibus. Duis rhoncus nunc est, at pharetra eros tristique a. Nam sodales turpis lectus, quis faucibus felis fermentum in. Curabitur vel velit vel eros laoreet pharetra. Aenean in facilisis sapien, eu porttitor ex. Donec ultrices ac arcu ut lobortis. Pellentesque vitae rutrum orci. Etiam pretium et enim sit amet scelerisque. Nulla sed odio nec lorem dapibus condimentum at sagittis quam. Sed in ornare ex, sed luctus sem. Mauris a est tellus."), /*#__PURE__*/React.createElement("p", null, "Sed fringilla est ac urna aliquet, eget condimentum felis vulputate. Sed sagittis eros non mauris sodales molestie. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam ante leo, condimentum sed lectus non, rutrum octopodes urna. Mauris neque ante, interdum molestie tellus pharetra, eleifend dapibus justo. Sed at diam ligula. Donec dapibus ipsum quis elit euismod, sed suscipit eros euismod. Aliquam pretium felis quis risus luctus fringilla. Ut purus lacus, mattis a turpis eget, sollicitudin pellentesque neque."), /*#__PURE__*/React.createElement("p", null, "Nunc sodales quis ante quis porttitor. Vestibulum ornare lacinia ante. Donec a nisi nec arcu aliquam pretium in nec nunc. Donec fringilla erat vitae viverra feugiat. Sed non odio vel ipsum porttitor maximus. Donec id eleifend lectus. Proin varius felis sit amet neque eleifend, vitae porttitor ligula commodo."), /*#__PURE__*/React.createElement("p", null, "Vivamus felis quam, porttitor a justo sit amet, placerat ultricies nisl. Suspendisse potenti. Maecenas non consequat lorem, eu porta ante. Pellentesque elementum diam sapien, nec ultrices risus convallis eget. Nam pharetra dolor at dictum tempor. Quisque ut est a ligula hendrerit sodales. Curabitur ornare a nulla in laoreet. Maecenas semper mi egestas, dignissim nisi et, elementum neque."));
90
+ export const BasicDialog = ({
91
+ width,
92
+ height,
93
+ subtitle
94
+ }) => {
95
+ const [isOpen, setIsOpen] = useState(false);
96
+ const [secondOpen, setSecondOpen] = useState(false);
97
+ const buttonRef = useRef(null);
98
+ const onDialogClose = useCallback(() => setIsOpen(false), []);
99
+ const onSecondDialogClose = useCallback(() => setSecondOpen(false), []);
100
+ const openSecondDialog = useCallback(() => setSecondOpen(true), []);
101
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
102
+ ref: buttonRef,
103
+ onClick: () => setIsOpen(!isOpen)
104
+ }, "Show dialog"), isOpen && /*#__PURE__*/React.createElement(Dialog, {
105
+ title: "My Dialog",
106
+ subtitle: subtitle ? 'This is a subtitle!' : undefined,
107
+ onClose: onDialogClose,
108
+ width: width,
109
+ height: height,
110
+ footerButtons: [{
111
+ buttonType: 'danger',
112
+ content: 'Delete the universe',
113
+ onClick: onDialogClose
114
+ }, {
115
+ buttonType: 'primary',
116
+ content: 'Proceed',
117
+ onClick: openSecondDialog,
118
+ autoFocus: true
119
+ }]
120
+ }, lipsum, secondOpen && /*#__PURE__*/React.createElement(Dialog, {
121
+ title: "Inner dialog!",
122
+ onClose: onSecondDialogClose,
123
+ width: "small"
124
+ }, "Hello world")));
125
+ };
126
+
127
+ function CustomHeader({
128
+ title,
129
+ subtitle,
130
+ dialogLabelId,
131
+ dialogDescriptionId,
132
+ onClose
133
+ }) {
134
+ const onCloseClick = useCallback(() => {
135
+ onClose('close-button');
136
+ }, [onClose]);
137
+
138
+ if (typeof title === 'string' && typeof subtitle === 'string') {
139
+ return /*#__PURE__*/React.createElement(Box, {
140
+ bg: "auto.blue.3"
141
+ }, /*#__PURE__*/React.createElement("h1", {
142
+ id: dialogLabelId
143
+ }, title.toUpperCase()), /*#__PURE__*/React.createElement("h2", {
144
+ id: dialogDescriptionId
145
+ }, subtitle.toLowerCase()), /*#__PURE__*/React.createElement(Dialog.CloseButton, {
146
+ onClose: onCloseClick
147
+ }));
148
+ }
149
+
150
+ return null;
151
+ }
152
+
153
+ function CustomBody({
154
+ children
155
+ }) {
156
+ return /*#__PURE__*/React.createElement(Dialog.Body, {
157
+ bg: "auto.red.3"
158
+ }, children);
159
+ }
160
+
161
+ CustomBody.displayName = "CustomBody";
162
+
163
+ function CustomFooter({
164
+ footerButtons
165
+ }) {
166
+ return /*#__PURE__*/React.createElement(Dialog.Footer, {
167
+ bg: "auto.yellow.3"
168
+ }, footerButtons ? /*#__PURE__*/React.createElement(Dialog.Buttons, {
169
+ buttons: footerButtons
170
+ }) : null);
171
+ }
172
+
173
+ CustomFooter.displayName = "CustomFooter";
174
+ export const WithCustomRenderers = ({
175
+ width,
176
+ height,
177
+ subtitle
178
+ }) => {
179
+ const [isOpen, setIsOpen] = useState(false);
180
+ const onDialogClose = useCallback(() => setIsOpen(false), []);
181
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
182
+ onClick: () => setIsOpen(!isOpen)
183
+ }, "Show dialog"), isOpen && /*#__PURE__*/React.createElement(Dialog, {
184
+ title: "My Dialog",
185
+ subtitle: subtitle ? 'This is a subtitle!' : undefined,
186
+ width: width,
187
+ height: height,
188
+ renderHeader: CustomHeader,
189
+ renderBody: CustomBody,
190
+ renderFooter: CustomFooter,
191
+ onClose: onDialogClose,
192
+ footerButtons: [{
193
+ buttonType: 'danger',
194
+ content: 'Delete the universe',
195
+ onClick: onDialogClose
196
+ }, {
197
+ buttonType: 'primary',
198
+ content: 'Proceed'
199
+ }]
200
+ }, lipsum));
201
+ };
202
+ export const StressTest = ({
203
+ width,
204
+ height,
205
+ subtitle
206
+ }) => {
207
+ const [isOpen, setIsOpen] = useState(false);
208
+ const [secondOpen, setSecondOpen] = useState(false);
209
+ const buttonRef = useRef(null);
210
+ const onDialogClose = useCallback(() => setIsOpen(false), []);
211
+ const onSecondDialogClose = useCallback(() => setSecondOpen(false), []);
212
+ const openSecondDialog = useCallback(() => setSecondOpen(true), []);
213
+ const manyButtons = new Array(10).fill(undefined).map((_, i) => ({
214
+ content: `Button ${i}`
215
+ }));
216
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
217
+ ref: buttonRef,
218
+ onClick: () => setIsOpen(!isOpen)
219
+ }, "Show dialog"), isOpen && /*#__PURE__*/React.createElement(Dialog, {
220
+ title: "This dialog has a really long title. So long, in fact, that it should cause wrapping, going to multiple lines!.",
221
+ subtitle: subtitle ? "It's not a common scenario, sure, but what if the subtitle is generated from a really long value? Do we just break the dialog? Or do we handle it because we are pros?" : undefined,
222
+ onClose: onDialogClose,
223
+ width: width,
224
+ height: height,
225
+ footerButtons: [...manyButtons, {
226
+ buttonType: 'danger',
227
+ content: 'Delete the universe',
228
+ onClick: onDialogClose
229
+ }, {
230
+ buttonType: 'primary',
231
+ content: 'Proceed',
232
+ onClick: openSecondDialog,
233
+ autoFocus: true
234
+ }]
235
+ }, lipsum, secondOpen && /*#__PURE__*/React.createElement(Dialog, {
236
+ title: "Inner dialog!",
237
+ onClose: onSecondDialogClose,
238
+ width: "small"
239
+ }, "Hello world")));
240
+ };
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { Meta } from '@storybook/react';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ export declare function FavoriteColorStory(): JSX.Element;
6
+ export declare namespace FavoriteColorStory {
7
+ var storyName: string;
8
+ }
9
+ export declare function ExternalAnchorStory(): JSX.Element;
10
+ export declare namespace ExternalAnchorStory {
11
+ var storyName: string;
12
+ }
@@ -0,0 +1,94 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { theme, ThemeProvider } from '..';
5
+ import BaseStyles from '../BaseStyles';
6
+ import Box from '../Box';
7
+ import { DropdownMenu, DropdownButton } from '../DropdownMenu';
8
+ import TextInput from '../TextInput';
9
+ const meta = {
10
+ title: 'Composite components/DropdownMenu',
11
+ component: DropdownMenu,
12
+ decorators: [Story => {
13
+ return /*#__PURE__*/React.createElement(ThemeProvider, {
14
+ theme: theme
15
+ }, /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(Story, null)));
16
+ }],
17
+ parameters: {
18
+ controls: {
19
+ disable: true
20
+ }
21
+ }
22
+ };
23
+ export default meta;
24
+ export function FavoriteColorStory() {
25
+ const items = React.useMemo(() => [{
26
+ text: '🔵 Cyan'
27
+ }, {
28
+ text: '🔴 Magenta'
29
+ }, {
30
+ text: '🟡 Yellow'
31
+ }], []);
32
+ const [selectedItem, setSelectedItem] = React.useState();
33
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Favorite Color"), /*#__PURE__*/React.createElement(TextInput, {
34
+ placeholder: "Input for focus testing",
35
+ sx: {
36
+ mb: 2
37
+ }
38
+ }), /*#__PURE__*/React.createElement("div", {
39
+ id: "favorite-color-label"
40
+ }, "Please select your favorite color:"), /*#__PURE__*/React.createElement(DropdownMenu, {
41
+ renderAnchor: ({
42
+ children,
43
+ 'aria-labelledby': ariaLabelledBy,
44
+ ...anchorProps
45
+ }) => /*#__PURE__*/React.createElement(DropdownButton, _extends({
46
+ "aria-labelledby": `favorite-color-label ${ariaLabelledBy}`
47
+ }, anchorProps), children),
48
+ placeholder: "\uD83C\uDFA8",
49
+ items: items,
50
+ selectedItem: selectedItem,
51
+ onChange: setSelectedItem
52
+ }));
53
+ }
54
+ FavoriteColorStory.storyName = 'Favorite Color';
55
+ export function ExternalAnchorStory() {
56
+ const items = React.useMemo(() => [{
57
+ text: '🔵 Cyan'
58
+ }, {
59
+ text: '🔴 Magenta'
60
+ }, {
61
+ text: '🟡 Yellow'
62
+ }], []);
63
+ const [selectedItem, setSelectedItem] = React.useState();
64
+ const anchorRef = React.useRef(null);
65
+ const [open, setOpen] = React.useState(false);
66
+ return /*#__PURE__*/React.createElement(Box, {
67
+ display: "flex",
68
+ flexDirection: "column",
69
+ alignItems: "flex-start"
70
+ }, /*#__PURE__*/React.createElement(Box, {
71
+ display: "flex",
72
+ flexDirection: "row"
73
+ }, /*#__PURE__*/React.createElement(DropdownButton, {
74
+ onClick: () => setOpen(true)
75
+ }, "Click me to open the dropdown"), /*#__PURE__*/React.createElement(Box, {
76
+ ref: anchorRef,
77
+ bg: "papayawhip",
78
+ p: 4,
79
+ ml: 40,
80
+ borderRadius: 2,
81
+ display: "inline-block"
82
+ }, "Anchored on me!")), /*#__PURE__*/React.createElement(DropdownMenu, {
83
+ renderAnchor: null,
84
+ anchorRef: anchorRef,
85
+ open: open,
86
+ onOpenChange: setOpen,
87
+ placeholder: "\uD83C\uDFA8",
88
+ items: items,
89
+ selectedItem: selectedItem,
90
+ onChange: setSelectedItem
91
+ }));
92
+ }
93
+ ExternalAnchorStory.displayName = "ExternalAnchorStory";
94
+ ExternalAnchorStory.storyName = 'DropdownMenu with External Anchor';
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { Meta } from '@storybook/react';
3
+ declare const _default: Meta<import("@storybook/react").Args>;
4
+ export default _default;
5
+ export declare const DropdownOverlay: () => JSX.Element;
6
+ export declare const DialogOverlay: () => JSX.Element;
7
+ export declare const OverlayOnTopOfOverlay: () => JSX.Element;
@@ -0,0 +1,154 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React, { useState, useRef, useCallback } from 'react';
4
+ import styled from 'styled-components';
5
+ import { BaseStyles, Overlay, Button, Text, ButtonDanger, ThemeProvider, Box } from '..';
6
+ import { DropdownMenu, DropdownButton } from '../DropdownMenu';
7
+ export default {
8
+ title: 'Internal components/Overlay',
9
+ component: Overlay,
10
+ decorators: [Story => {
11
+ return /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(Story, null)));
12
+ }]
13
+ };
14
+ const DummyItem = styled.button.withConfig({
15
+ displayName: "Overlaystories__DummyItem",
16
+ componentId: "sc-92ppmu-0"
17
+ })(["border-radius:6px;font-weight:400;padding:6px 8px;font-weight:400;text-align:left;margin:0;font-size:14px;background:none;border:none;&:hover{background:#f0f3f5;}&:focus{background:red;}"]);
18
+ export const DropdownOverlay = () => {
19
+ const [isOpen, setIsOpen] = useState(false);
20
+ const buttonRef = useRef(null);
21
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
22
+ ref: buttonRef,
23
+ sx: {
24
+ position: 'relative'
25
+ },
26
+ onClick: () => setIsOpen(!isOpen)
27
+ }, "open overlay"), isOpen ? /*#__PURE__*/React.createElement(Overlay, {
28
+ returnFocusRef: buttonRef,
29
+ height: "auto",
30
+ width: "small",
31
+ ignoreClickRefs: [buttonRef],
32
+ onEscape: () => setIsOpen(false),
33
+ onClickOutside: () => setIsOpen(false)
34
+ }, /*#__PURE__*/React.createElement(Box, {
35
+ display: "flex",
36
+ flexDirection: "column",
37
+ p: 2
38
+ }, /*#__PURE__*/React.createElement(DummyItem, null, "Copy link"), /*#__PURE__*/React.createElement(DummyItem, null, "Quote reply"), /*#__PURE__*/React.createElement(DummyItem, null, "Reference in new issue"), /*#__PURE__*/React.createElement(DummyItem, null, "Edit"), /*#__PURE__*/React.createElement(DummyItem, null, "Delete"))) : null);
39
+ };
40
+ export const DialogOverlay = () => {
41
+ const [isOpen, setIsOpen] = useState(false);
42
+ const buttonRef = useRef(null);
43
+ const confirmButtonRef = useRef(null);
44
+ const anchorRef = useRef(null);
45
+
46
+ const closeOverlay = () => setIsOpen(false);
47
+
48
+ return /*#__PURE__*/React.createElement(Box, {
49
+ position: "absolute",
50
+ top: 0,
51
+ left: 0,
52
+ bottom: 0,
53
+ right: 0,
54
+ ref: anchorRef
55
+ }, /*#__PURE__*/React.createElement(Button, {
56
+ ref: buttonRef,
57
+ onClick: () => setIsOpen(!isOpen)
58
+ }, "open overlay"), isOpen ? /*#__PURE__*/React.createElement(Overlay, {
59
+ initialFocusRef: confirmButtonRef,
60
+ returnFocusRef: buttonRef,
61
+ ignoreClickRefs: [buttonRef],
62
+ onEscape: closeOverlay,
63
+ onClickOutside: closeOverlay,
64
+ width: "small"
65
+ }, /*#__PURE__*/React.createElement(Box, {
66
+ display: "flex",
67
+ flexDirection: "column",
68
+ p: 2
69
+ }, /*#__PURE__*/React.createElement(Text, null, "Are you sure?"), /*#__PURE__*/React.createElement(ButtonDanger, {
70
+ onClick: closeOverlay
71
+ }, "Cancel"), /*#__PURE__*/React.createElement(Button, {
72
+ onClick: closeOverlay,
73
+ ref: confirmButtonRef
74
+ }, "Confirm"))) : null);
75
+ };
76
+ DialogOverlay.displayName = "DialogOverlay";
77
+ export const OverlayOnTopOfOverlay = () => {
78
+ const [isOpen, setIsOpen] = useState(false);
79
+ const [isSecondaryOpen, setIsSecondaryOpen] = useState(false);
80
+ const buttonRef = useRef(null);
81
+ const secondaryButtonRef = useRef(null);
82
+ const confirmButtonRef = useRef(null);
83
+ const anchorRef = useRef(null);
84
+
85
+ const closeOverlay = () => setIsOpen(false); // intentionally not memoized
86
+
87
+
88
+ const closeSecondaryOverlay = useCallback(() => setIsSecondaryOpen(false), [setIsSecondaryOpen]);
89
+ const items = React.useMemo(() => [{
90
+ text: '🔵 Cyan',
91
+ onMouseDown: e => {
92
+ e.preventDefault();
93
+ }
94
+ }, {
95
+ text: '🔴 Magenta',
96
+ onMouseDown: e => {
97
+ e.preventDefault();
98
+ }
99
+ }, {
100
+ text: '🟡 Yellow',
101
+ onMouseDown: e => {
102
+ e.preventDefault();
103
+ }
104
+ }], []);
105
+ const [selectedItem, setSelectedItem] = React.useState();
106
+ return /*#__PURE__*/React.createElement(Box, {
107
+ position: "absolute",
108
+ top: 0,
109
+ left: 0,
110
+ bottom: 0,
111
+ right: 0,
112
+ ref: anchorRef
113
+ }, /*#__PURE__*/React.createElement("input", {
114
+ placeholder: "Input for focus testing"
115
+ }), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Button, {
116
+ ref: buttonRef,
117
+ onClick: () => setIsOpen(!isOpen)
118
+ }, "open overlay"), isOpen ? /*#__PURE__*/React.createElement(Overlay, {
119
+ initialFocusRef: confirmButtonRef,
120
+ returnFocusRef: buttonRef,
121
+ onEscape: closeOverlay,
122
+ onClickOutside: closeOverlay,
123
+ width: "small"
124
+ }, /*#__PURE__*/React.createElement(Button, {
125
+ ref: secondaryButtonRef,
126
+ onClick: () => setIsSecondaryOpen(!isSecondaryOpen)
127
+ }, "open overlay"), isSecondaryOpen ? /*#__PURE__*/React.createElement(Overlay, {
128
+ initialFocusRef: confirmButtonRef,
129
+ returnFocusRef: secondaryButtonRef,
130
+ onEscape: closeSecondaryOverlay,
131
+ onClickOutside: closeSecondaryOverlay,
132
+ width: "small",
133
+ sx: {
134
+ top: '40px'
135
+ }
136
+ }, /*#__PURE__*/React.createElement(Box, {
137
+ display: "flex",
138
+ flexDirection: "column",
139
+ p: 2
140
+ }, /*#__PURE__*/React.createElement(Text, null, "Select an option!"), /*#__PURE__*/React.createElement(DropdownMenu, {
141
+ renderAnchor: ({
142
+ children,
143
+ 'aria-labelledby': ariaLabelledBy,
144
+ ...anchorProps
145
+ }) => /*#__PURE__*/React.createElement(DropdownButton, _extends({
146
+ "aria-labelledby": `favorite-color-label ${ariaLabelledBy}`
147
+ }, anchorProps), children),
148
+ placeholder: "\uD83C\uDFA8",
149
+ items: items,
150
+ selectedItem: selectedItem,
151
+ onChange: setSelectedItem
152
+ }))) : null) : null);
153
+ };
154
+ OverlayOnTopOfOverlay.displayName = "OverlayOnTopOfOverlay";
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { Meta } from '@storybook/react';
3
+ declare const _default: Meta<import("@storybook/react").Args>;
4
+ export default _default;
5
+ export declare const defaultPortal: () => JSX.Element;
6
+ export declare const customPortalRootById: () => JSX.Element;
7
+ export declare const CustomPortalRootByRegistration: React.FC<Record<string, never>>;
8
+ export declare const MultiplePortalRoots: React.FC<Record<string, never>>;
@@ -0,0 +1,68 @@
1
+ import React from 'react';
2
+ import { BaseStyles, Box, ThemeProvider } from '..';
3
+ import Portal, { registerPortalRoot } from '../Portal';
4
+ export default {
5
+ title: 'Generic behaviors/Portal',
6
+ component: Portal,
7
+ decorators: [Story => {
8
+ return /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(Story, null)));
9
+ }]
10
+ };
11
+ export const defaultPortal = () => /*#__PURE__*/React.createElement(React.Fragment, null, "Root position", /*#__PURE__*/React.createElement(Box, {
12
+ bg: "red.2",
13
+ p: 3
14
+ }, "Outer container", /*#__PURE__*/React.createElement(Box, {
15
+ bg: "green.2",
16
+ p: 3
17
+ }, "Inner container", /*#__PURE__*/React.createElement(Portal, null, "Portaled content rendered at ", /*#__PURE__*/React.createElement("code", null, "<BaseStyles>"), " root."))));
18
+ export const customPortalRootById = () => /*#__PURE__*/React.createElement(React.Fragment, null, "Root position", /*#__PURE__*/React.createElement(Box, {
19
+ bg: "red.2",
20
+ p: 3,
21
+ id: "__primerPortalRoot__"
22
+ }, "Outer container", /*#__PURE__*/React.createElement(Box, {
23
+ bg: "green.2",
24
+ p: 3
25
+ }, "Inner container", /*#__PURE__*/React.createElement(Portal, null, "Portaled content rendered at the outer container."))));
26
+ export const CustomPortalRootByRegistration = () => {
27
+ const outerContainerRef = React.useRef(null);
28
+ const [mounted, setMounted] = React.useState(false);
29
+ React.useEffect(() => {
30
+ if (outerContainerRef.current instanceof HTMLElement) {
31
+ registerPortalRoot(outerContainerRef.current);
32
+ setMounted(true);
33
+ }
34
+ }, []);
35
+ return /*#__PURE__*/React.createElement(React.Fragment, null, "Root position", /*#__PURE__*/React.createElement(Box, {
36
+ bg: "red.2",
37
+ p: 3,
38
+ ref: outerContainerRef
39
+ }, mounted ? /*#__PURE__*/React.createElement(React.Fragment, null, "Outer container", /*#__PURE__*/React.createElement(Box, {
40
+ bg: "green.2",
41
+ p: 3
42
+ }, "Inner container", /*#__PURE__*/React.createElement(Portal, null, "Portaled content rendered at the outer container."))) : null));
43
+ };
44
+ export const MultiplePortalRoots = () => {
45
+ const outerContainerRef = React.useRef(null);
46
+ const innerContainerRef = React.useRef(null);
47
+ const [mounted, setMounted] = React.useState(false);
48
+ React.useEffect(() => {
49
+ if (outerContainerRef.current instanceof HTMLElement && innerContainerRef.current instanceof HTMLElement) {
50
+ registerPortalRoot(outerContainerRef.current, 'outer');
51
+ registerPortalRoot(innerContainerRef.current, 'inner');
52
+ setMounted(true);
53
+ }
54
+ }, [outerContainerRef]);
55
+ return /*#__PURE__*/React.createElement(React.Fragment, null, "Root position", /*#__PURE__*/React.createElement(Box, {
56
+ bg: "red.2",
57
+ p: 3,
58
+ ref: outerContainerRef
59
+ }, "Outer container", /*#__PURE__*/React.createElement(Box, {
60
+ bg: "green.2",
61
+ p: 3,
62
+ ref: innerContainerRef
63
+ }, mounted ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Portal, {
64
+ containerName: "outer"
65
+ }, "Portaled content rendered at the outer container."), /*#__PURE__*/React.createElement(Portal, {
66
+ containerName: "inner"
67
+ }, "Portaled content rendered at the end of the inner container."), /*#__PURE__*/React.createElement(Portal, null, "Portaled content rendered at ", /*#__PURE__*/React.createElement("code", null, "<BaseStyles>"), " root.")) : null, "Inner container")));
68
+ };
@@ -0,0 +1,32 @@
1
+ /// <reference types="react" />
2
+ import { Meta } from '@storybook/react';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ export declare function MultiSelectStory(): JSX.Element;
6
+ export declare namespace MultiSelectStory {
7
+ var storyName: string;
8
+ }
9
+ export declare function SingleSelectStory(): JSX.Element;
10
+ export declare namespace SingleSelectStory {
11
+ var storyName: string;
12
+ }
13
+ export declare function ExternalAnchorStory(): JSX.Element;
14
+ export declare namespace ExternalAnchorStory {
15
+ var storyName: string;
16
+ }
17
+ export declare function SelectPanelHeightInitialWithOverflowingItemsStory(): JSX.Element;
18
+ export declare namespace SelectPanelHeightInitialWithOverflowingItemsStory {
19
+ var storyName: string;
20
+ }
21
+ export declare function SelectPanelHeightInitialWithUnderflowingItemsStory(): JSX.Element;
22
+ export declare namespace SelectPanelHeightInitialWithUnderflowingItemsStory {
23
+ var storyName: string;
24
+ }
25
+ export declare function SelectPanelHeightInitialWithUnderflowingItemsAfterFetch(): JSX.Element;
26
+ export declare namespace SelectPanelHeightInitialWithUnderflowingItemsAfterFetch {
27
+ var storyName: string;
28
+ }
29
+ export declare function SelectPanelAboveTallBody(): JSX.Element;
30
+ export declare namespace SelectPanelAboveTallBody {
31
+ var storyName: string;
32
+ }