@primer/components 29.1.1 → 30.0.0-rc.48fd5c94

Sign up to get free protection for your applications and to get access to all the features.
Files changed (735) 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 +11 -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 +130 -130
  40. package/dist/browser.esm.js.map +1 -1
  41. package/dist/browser.umd.js +113 -113
  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 +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/Breadcrumbs.d.ts +40 -0
  134. package/lib/{Breadcrumb.js → Breadcrumbs.js} +31 -21
  135. package/lib/__tests__/ActionList.d.ts +1 -0
  136. package/lib/__tests__/ActionList.js +67 -0
  137. package/lib/__tests__/ActionMenu.d.ts +1 -0
  138. package/lib/__tests__/ActionMenu.js +154 -0
  139. package/lib/__tests__/AnchoredOverlay.d.ts +1 -0
  140. package/lib/__tests__/AnchoredOverlay.js +161 -0
  141. package/lib/__tests__/Avatar.d.ts +1 -0
  142. package/lib/__tests__/Avatar.js +70 -0
  143. package/lib/__tests__/AvatarStack.d.ts +1 -0
  144. package/lib/__tests__/AvatarStack.js +71 -0
  145. package/lib/__tests__/BorderBox.d.ts +1 -0
  146. package/lib/__tests__/BorderBox.js +61 -0
  147. package/lib/__tests__/Box.d.ts +1 -0
  148. package/lib/__tests__/Box.js +81 -0
  149. package/lib/__tests__/BranchName.d.ts +1 -0
  150. package/lib/__tests__/BranchName.js +39 -0
  151. package/lib/__tests__/Breadcrumbs.d.ts +1 -0
  152. package/lib/__tests__/Breadcrumbs.js +40 -0
  153. package/lib/__tests__/BreadcrumbsItem.d.ts +1 -0
  154. package/lib/__tests__/BreadcrumbsItem.js +52 -0
  155. package/lib/__tests__/Button.d.ts +1 -0
  156. package/lib/__tests__/Button.js +152 -0
  157. package/lib/__tests__/Caret.d.ts +1 -0
  158. package/lib/__tests__/Caret.js +52 -0
  159. package/lib/__tests__/CircleBadge.d.ts +1 -0
  160. package/lib/__tests__/CircleBadge.js +87 -0
  161. package/lib/__tests__/CircleOcticon.d.ts +1 -0
  162. package/lib/__tests__/CircleOcticon.js +74 -0
  163. package/lib/__tests__/CounterLabel.d.ts +1 -0
  164. package/lib/__tests__/CounterLabel.js +61 -0
  165. package/lib/__tests__/Details.d.ts +1 -0
  166. package/lib/__tests__/Details.js +120 -0
  167. package/lib/__tests__/Dialog.d.ts +1 -0
  168. package/lib/__tests__/Dialog.js +188 -0
  169. package/lib/__tests__/Dropdown.d.ts +1 -0
  170. package/lib/__tests__/Dropdown.js +70 -0
  171. package/lib/__tests__/DropdownMenu.d.ts +1 -0
  172. package/lib/__tests__/DropdownMenu.js +153 -0
  173. package/lib/__tests__/FilterList.d.ts +1 -0
  174. package/lib/__tests__/FilterList.js +39 -0
  175. package/lib/__tests__/FilterListItem.d.ts +1 -0
  176. package/lib/__tests__/FilterListItem.js +49 -0
  177. package/lib/__tests__/FilteredSearch.d.ts +1 -0
  178. package/lib/__tests__/FilteredSearch.js +39 -0
  179. package/lib/__tests__/Flash.d.ts +1 -0
  180. package/lib/__tests__/Flash.js +65 -0
  181. package/lib/__tests__/Flex.d.ts +1 -0
  182. package/lib/__tests__/Flex.js +77 -0
  183. package/lib/__tests__/FormGroup.d.ts +1 -0
  184. package/lib/__tests__/FormGroup.js +58 -0
  185. package/lib/__tests__/Grid.d.ts +1 -0
  186. package/lib/__tests__/Grid.js +107 -0
  187. package/lib/__tests__/Header.d.ts +1 -0
  188. package/lib/__tests__/Header.js +63 -0
  189. package/lib/__tests__/Heading.d.ts +1 -0
  190. package/lib/__tests__/Heading.js +112 -0
  191. package/lib/__tests__/Label.d.ts +1 -0
  192. package/lib/__tests__/Label.js +49 -0
  193. package/lib/__tests__/LabelGroup.d.ts +1 -0
  194. package/lib/__tests__/LabelGroup.js +41 -0
  195. package/lib/__tests__/Link.d.ts +1 -0
  196. package/lib/__tests__/Link.js +73 -0
  197. package/lib/__tests__/Overlay.d.ts +1 -0
  198. package/lib/__tests__/Overlay.js +145 -0
  199. package/lib/__tests__/Pagehead.d.ts +1 -0
  200. package/lib/__tests__/Pagehead.js +40 -0
  201. package/lib/__tests__/Pagination/Pagination.d.ts +1 -0
  202. package/lib/__tests__/Pagination/Pagination.js +50 -0
  203. package/lib/__tests__/Pagination/PaginationModel.d.ts +1 -0
  204. package/lib/__tests__/Pagination/PaginationModel.js +186 -0
  205. package/lib/__tests__/PointerBox.d.ts +1 -0
  206. package/lib/__tests__/PointerBox.js +49 -0
  207. package/lib/__tests__/Popover.d.ts +1 -0
  208. package/lib/__tests__/Popover.js +70 -0
  209. package/lib/__tests__/Portal.d.ts +1 -0
  210. package/lib/__tests__/Portal.js +124 -0
  211. package/lib/__tests__/Position.d.ts +1 -0
  212. package/lib/__tests__/Position.js +149 -0
  213. package/lib/__tests__/ProgressBar.d.ts +1 -0
  214. package/lib/__tests__/ProgressBar.js +71 -0
  215. package/lib/__tests__/SelectMenu.d.ts +1 -0
  216. package/lib/__tests__/SelectMenu.js +155 -0
  217. package/lib/__tests__/SelectPanel.d.ts +1 -0
  218. package/lib/__tests__/SelectPanel.js +83 -0
  219. package/lib/__tests__/SideNav.d.ts +1 -0
  220. package/lib/__tests__/SideNav.js +75 -0
  221. package/lib/__tests__/Spinner.d.ts +1 -0
  222. package/lib/__tests__/Spinner.js +56 -0
  223. package/lib/__tests__/StateLabel.d.ts +1 -0
  224. package/lib/__tests__/StateLabel.js +74 -0
  225. package/lib/__tests__/StyledOcticon.d.ts +1 -0
  226. package/lib/__tests__/StyledOcticon.js +43 -0
  227. package/lib/__tests__/SubNav.d.ts +1 -0
  228. package/lib/__tests__/SubNav.js +65 -0
  229. package/lib/__tests__/SubNavLink.d.ts +1 -0
  230. package/lib/__tests__/SubNavLink.js +52 -0
  231. package/lib/__tests__/TabNav.d.ts +1 -0
  232. package/lib/__tests__/TabNav.js +53 -0
  233. package/lib/__tests__/Text.d.ts +1 -0
  234. package/lib/__tests__/Text.js +108 -0
  235. package/lib/__tests__/TextInput.d.ts +1 -0
  236. package/lib/__tests__/TextInput.js +81 -0
  237. package/lib/__tests__/ThemeProvider.d.ts +1 -0
  238. package/lib/__tests__/ThemeProvider.js +444 -0
  239. package/lib/__tests__/Timeline.d.ts +1 -0
  240. package/lib/__tests__/Timeline.js +80 -0
  241. package/lib/__tests__/Tooltip.d.ts +1 -0
  242. package/lib/__tests__/Tooltip.js +72 -0
  243. package/lib/__tests__/Truncate.d.ts +1 -0
  244. package/lib/__tests__/Truncate.js +66 -0
  245. package/lib/__tests__/UnderlineNav.d.ts +1 -0
  246. package/lib/__tests__/UnderlineNav.js +75 -0
  247. package/lib/__tests__/UnderlineNavLink.d.ts +1 -0
  248. package/lib/__tests__/UnderlineNavLink.js +54 -0
  249. package/lib/__tests__/behaviors/anchoredPosition.d.ts +1 -0
  250. package/lib/__tests__/behaviors/anchoredPosition.js +390 -0
  251. package/lib/__tests__/behaviors/focusTrap.d.ts +1 -0
  252. package/lib/__tests__/behaviors/focusTrap.js +234 -0
  253. package/lib/__tests__/behaviors/focusZone.d.ts +1 -0
  254. package/lib/__tests__/behaviors/focusZone.js +570 -0
  255. package/lib/__tests__/behaviors/iterateFocusableElements.d.ts +1 -0
  256. package/lib/__tests__/behaviors/iterateFocusableElements.js +55 -0
  257. package/lib/__tests__/filterObject.d.ts +1 -0
  258. package/lib/__tests__/filterObject.js +30 -0
  259. package/lib/__tests__/hooks/useAnchoredPosition.d.ts +1 -0
  260. package/lib/__tests__/hooks/useAnchoredPosition.js +54 -0
  261. package/lib/__tests__/hooks/useOnEscapePress.d.ts +1 -0
  262. package/lib/__tests__/hooks/useOnEscapePress.js +32 -0
  263. package/lib/__tests__/hooks/useOnOutsideClick.d.ts +1 -0
  264. package/lib/__tests__/hooks/useOnOutsideClick.js +87 -0
  265. package/lib/__tests__/hooks/useOpenAndCloseFocus.d.ts +1 -0
  266. package/lib/__tests__/hooks/useOpenAndCloseFocus.js +60 -0
  267. package/lib/__tests__/hooks/useProvidedStateOrCreate.d.ts +1 -0
  268. package/lib/__tests__/hooks/useProvidedStateOrCreate.js +45 -0
  269. package/lib/__tests__/theme.d.ts +1 -0
  270. package/lib/__tests__/theme.js +36 -0
  271. package/lib/__tests__/themeGet.d.ts +1 -0
  272. package/lib/__tests__/themeGet.js +25 -0
  273. package/lib/__tests__/useSafeTimeout.d.ts +1 -0
  274. package/lib/__tests__/useSafeTimeout.js +45 -0
  275. package/lib/index.d.ts +2 -2
  276. package/lib/index.js +8 -2
  277. package/lib/stories/ActionList.stories.js +382 -0
  278. package/lib/stories/ActionMenu.stories.js +338 -0
  279. package/lib/stories/AnchoredOverlay.stories.js +127 -0
  280. package/lib/stories/AvatarStack.stories.js +49 -0
  281. package/lib/stories/Button.stories.js +114 -0
  282. package/lib/stories/ConfirmationDialog.stories.js +111 -0
  283. package/lib/stories/Dialog.stories.js +265 -0
  284. package/lib/stories/DropdownMenu.stories.js +122 -0
  285. package/lib/stories/Overlay.stories.js +185 -0
  286. package/lib/stories/Portal.stories.js +104 -0
  287. package/lib/stories/SelectPanel.stories.js +342 -0
  288. package/lib/stories/ThemeProvider.stories.js +102 -0
  289. package/lib/stories/useAnchoredPosition.stories.js +351 -0
  290. package/lib/stories/useFocusTrap.stories.js +356 -0
  291. package/lib/stories/useFocusZone.stories.js +599 -0
  292. package/lib-esm/Breadcrumbs.d.ts +40 -0
  293. package/lib-esm/{Breadcrumb.js → Breadcrumbs.js} +28 -19
  294. package/lib-esm/__tests__/ActionList.d.ts +1 -0
  295. package/lib-esm/__tests__/ActionList.js +54 -0
  296. package/lib-esm/__tests__/ActionMenu.d.ts +1 -0
  297. package/lib-esm/__tests__/ActionMenu.js +141 -0
  298. package/lib-esm/__tests__/AnchoredOverlay.d.ts +1 -0
  299. package/lib-esm/__tests__/AnchoredOverlay.js +135 -0
  300. package/lib-esm/__tests__/Avatar.d.ts +1 -0
  301. package/lib-esm/__tests__/Avatar.js +58 -0
  302. package/lib-esm/__tests__/AvatarStack.d.ts +1 -0
  303. package/lib-esm/__tests__/AvatarStack.js +57 -0
  304. package/lib-esm/__tests__/BorderBox.d.ts +1 -0
  305. package/lib-esm/__tests__/BorderBox.js +49 -0
  306. package/lib-esm/__tests__/Box.d.ts +1 -0
  307. package/lib-esm/__tests__/Box.js +69 -0
  308. package/lib-esm/__tests__/BranchName.d.ts +1 -0
  309. package/lib-esm/__tests__/BranchName.js +28 -0
  310. package/lib-esm/__tests__/Breadcrumbs.d.ts +1 -0
  311. package/lib-esm/__tests__/Breadcrumbs.js +29 -0
  312. package/lib-esm/__tests__/BreadcrumbsItem.d.ts +1 -0
  313. package/lib-esm/__tests__/BreadcrumbsItem.js +41 -0
  314. package/lib-esm/__tests__/Button.d.ts +1 -0
  315. package/lib-esm/__tests__/Button.js +141 -0
  316. package/lib-esm/__tests__/Caret.d.ts +1 -0
  317. package/lib-esm/__tests__/Caret.js +42 -0
  318. package/lib-esm/__tests__/CircleBadge.d.ts +1 -0
  319. package/lib-esm/__tests__/CircleBadge.js +73 -0
  320. package/lib-esm/__tests__/CircleOcticon.d.ts +1 -0
  321. package/lib-esm/__tests__/CircleOcticon.js +61 -0
  322. package/lib-esm/__tests__/CounterLabel.d.ts +1 -0
  323. package/lib-esm/__tests__/CounterLabel.js +49 -0
  324. package/lib-esm/__tests__/Details.d.ts +1 -0
  325. package/lib-esm/__tests__/Details.js +109 -0
  326. package/lib-esm/__tests__/Dialog.d.ts +1 -0
  327. package/lib-esm/__tests__/Dialog.js +174 -0
  328. package/lib-esm/__tests__/Dropdown.d.ts +1 -0
  329. package/lib-esm/__tests__/Dropdown.js +59 -0
  330. package/lib-esm/__tests__/DropdownMenu.d.ts +1 -0
  331. package/lib-esm/__tests__/DropdownMenu.js +139 -0
  332. package/lib-esm/__tests__/FilterList.d.ts +1 -0
  333. package/lib-esm/__tests__/FilterList.js +28 -0
  334. package/lib-esm/__tests__/FilterListItem.d.ts +1 -0
  335. package/lib-esm/__tests__/FilterListItem.js +38 -0
  336. package/lib-esm/__tests__/FilteredSearch.d.ts +1 -0
  337. package/lib-esm/__tests__/FilteredSearch.js +28 -0
  338. package/lib-esm/__tests__/Flash.d.ts +1 -0
  339. package/lib-esm/__tests__/Flash.js +53 -0
  340. package/lib-esm/__tests__/Flex.d.ts +1 -0
  341. package/lib-esm/__tests__/Flex.js +66 -0
  342. package/lib-esm/__tests__/FormGroup.d.ts +1 -0
  343. package/lib-esm/__tests__/FormGroup.js +47 -0
  344. package/lib-esm/__tests__/Grid.d.ts +1 -0
  345. package/lib-esm/__tests__/Grid.js +96 -0
  346. package/lib-esm/__tests__/Header.d.ts +1 -0
  347. package/lib-esm/__tests__/Header.js +52 -0
  348. package/lib-esm/__tests__/Heading.d.ts +1 -0
  349. package/lib-esm/__tests__/Heading.js +101 -0
  350. package/lib-esm/__tests__/Label.d.ts +1 -0
  351. package/lib-esm/__tests__/Label.js +38 -0
  352. package/lib-esm/__tests__/LabelGroup.d.ts +1 -0
  353. package/lib-esm/__tests__/LabelGroup.js +28 -0
  354. package/lib-esm/__tests__/Link.d.ts +1 -0
  355. package/lib-esm/__tests__/Link.js +62 -0
  356. package/lib-esm/__tests__/Overlay.d.ts +1 -0
  357. package/lib-esm/__tests__/Overlay.js +123 -0
  358. package/lib-esm/__tests__/Pagehead.d.ts +1 -0
  359. package/lib-esm/__tests__/Pagehead.js +28 -0
  360. package/lib-esm/__tests__/Pagination/Pagination.d.ts +1 -0
  361. package/lib-esm/__tests__/Pagination/Pagination.js +37 -0
  362. package/lib-esm/__tests__/Pagination/PaginationModel.d.ts +1 -0
  363. package/lib-esm/__tests__/Pagination/PaginationModel.js +182 -0
  364. package/lib-esm/__tests__/PointerBox.d.ts +1 -0
  365. package/lib-esm/__tests__/PointerBox.js +38 -0
  366. package/lib-esm/__tests__/Popover.d.ts +1 -0
  367. package/lib-esm/__tests__/Popover.js +56 -0
  368. package/lib-esm/__tests__/Portal.d.ts +1 -0
  369. package/lib-esm/__tests__/Portal.js +104 -0
  370. package/lib-esm/__tests__/Position.d.ts +1 -0
  371. package/lib-esm/__tests__/Position.js +138 -0
  372. package/lib-esm/__tests__/ProgressBar.d.ts +1 -0
  373. package/lib-esm/__tests__/ProgressBar.js +60 -0
  374. package/lib-esm/__tests__/SelectMenu.d.ts +1 -0
  375. package/lib-esm/__tests__/SelectMenu.js +145 -0
  376. package/lib-esm/__tests__/SelectPanel.d.ts +1 -0
  377. package/lib-esm/__tests__/SelectPanel.js +67 -0
  378. package/lib-esm/__tests__/SideNav.d.ts +1 -0
  379. package/lib-esm/__tests__/SideNav.js +63 -0
  380. package/lib-esm/__tests__/Spinner.d.ts +1 -0
  381. package/lib-esm/__tests__/Spinner.js +45 -0
  382. package/lib-esm/__tests__/StateLabel.d.ts +1 -0
  383. package/lib-esm/__tests__/StateLabel.js +63 -0
  384. package/lib-esm/__tests__/StyledOcticon.d.ts +1 -0
  385. package/lib-esm/__tests__/StyledOcticon.js +31 -0
  386. package/lib-esm/__tests__/SubNav.d.ts +1 -0
  387. package/lib-esm/__tests__/SubNav.js +52 -0
  388. package/lib-esm/__tests__/SubNavLink.d.ts +1 -0
  389. package/lib-esm/__tests__/SubNavLink.js +41 -0
  390. package/lib-esm/__tests__/TabNav.d.ts +1 -0
  391. package/lib-esm/__tests__/TabNav.js +42 -0
  392. package/lib-esm/__tests__/Text.d.ts +1 -0
  393. package/lib-esm/__tests__/Text.js +95 -0
  394. package/lib-esm/__tests__/TextInput.d.ts +1 -0
  395. package/lib-esm/__tests__/TextInput.js +70 -0
  396. package/lib-esm/__tests__/ThemeProvider.d.ts +1 -0
  397. package/lib-esm/__tests__/ThemeProvider.js +408 -0
  398. package/lib-esm/__tests__/Timeline.d.ts +1 -0
  399. package/lib-esm/__tests__/Timeline.js +69 -0
  400. package/lib-esm/__tests__/Tooltip.d.ts +1 -0
  401. package/lib-esm/__tests__/Tooltip.js +61 -0
  402. package/lib-esm/__tests__/Truncate.d.ts +1 -0
  403. package/lib-esm/__tests__/Truncate.js +55 -0
  404. package/lib-esm/__tests__/UnderlineNav.d.ts +1 -0
  405. package/lib-esm/__tests__/UnderlineNav.js +62 -0
  406. package/lib-esm/__tests__/UnderlineNavLink.d.ts +1 -0
  407. package/lib-esm/__tests__/UnderlineNavLink.js +43 -0
  408. package/lib-esm/__tests__/behaviors/anchoredPosition.d.ts +1 -0
  409. package/lib-esm/__tests__/behaviors/anchoredPosition.js +388 -0
  410. package/lib-esm/__tests__/behaviors/focusTrap.d.ts +1 -0
  411. package/lib-esm/__tests__/behaviors/focusTrap.js +227 -0
  412. package/lib-esm/__tests__/behaviors/focusZone.d.ts +1 -0
  413. package/lib-esm/__tests__/behaviors/focusZone.js +487 -0
  414. package/lib-esm/__tests__/behaviors/iterateFocusableElements.d.ts +1 -0
  415. package/lib-esm/__tests__/behaviors/iterateFocusableElements.js +48 -0
  416. package/lib-esm/__tests__/filterObject.d.ts +1 -0
  417. package/lib-esm/__tests__/filterObject.js +27 -0
  418. package/lib-esm/__tests__/hooks/useAnchoredPosition.d.ts +1 -0
  419. package/lib-esm/__tests__/hooks/useAnchoredPosition.js +46 -0
  420. package/lib-esm/__tests__/hooks/useOnEscapePress.d.ts +1 -0
  421. package/lib-esm/__tests__/hooks/useOnEscapePress.js +23 -0
  422. package/lib-esm/__tests__/hooks/useOnOutsideClick.d.ts +1 -0
  423. package/lib-esm/__tests__/hooks/useOnOutsideClick.js +68 -0
  424. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.d.ts +1 -0
  425. package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.js +52 -0
  426. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.d.ts +1 -0
  427. package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.js +36 -0
  428. package/lib-esm/__tests__/theme.d.ts +1 -0
  429. package/lib-esm/__tests__/theme.js +33 -0
  430. package/lib-esm/__tests__/themeGet.d.ts +1 -0
  431. package/lib-esm/__tests__/themeGet.js +22 -0
  432. package/lib-esm/__tests__/useSafeTimeout.d.ts +1 -0
  433. package/lib-esm/__tests__/useSafeTimeout.js +39 -0
  434. package/lib-esm/index.d.ts +2 -2
  435. package/lib-esm/index.js +1 -1
  436. package/lib-esm/stories/ActionList.stories.js +334 -0
  437. package/lib-esm/stories/ActionMenu.stories.js +293 -0
  438. package/lib-esm/stories/AnchoredOverlay.stories.js +101 -0
  439. package/lib-esm/stories/AvatarStack.stories.js +32 -0
  440. package/lib-esm/stories/Button.stories.js +78 -0
  441. package/lib-esm/stories/ConfirmationDialog.stories.js +86 -0
  442. package/lib-esm/stories/Dialog.stories.js +240 -0
  443. package/lib-esm/stories/DropdownMenu.stories.js +94 -0
  444. package/lib-esm/stories/Overlay.stories.js +154 -0
  445. package/lib-esm/stories/Portal.stories.js +68 -0
  446. package/lib-esm/stories/SelectPanel.stories.js +284 -0
  447. package/lib-esm/stories/ThemeProvider.stories.js +83 -0
  448. package/lib-esm/stories/useAnchoredPosition.stories.js +313 -0
  449. package/lib-esm/stories/useFocusTrap.stories.js +309 -0
  450. package/lib-esm/stories/useFocusZone.stories.js +554 -0
  451. package/migrating.md +250 -0
  452. package/now.json +17 -0
  453. package/package-lock.json +28942 -0
  454. package/package.json +6 -5
  455. package/rollup.config.js +36 -0
  456. package/script/build +19 -0
  457. package/script/setup +12 -0
  458. package/src/ActionList/Divider.tsx +25 -0
  459. package/src/ActionList/Group.tsx +45 -0
  460. package/src/ActionList/Header.tsx +74 -0
  461. package/src/ActionList/Item.tsx +460 -0
  462. package/src/ActionList/List.tsx +253 -0
  463. package/src/ActionList/index.ts +21 -0
  464. package/src/ActionMenu.tsx +106 -0
  465. package/src/AnchoredOverlay/AnchoredOverlay.tsx +180 -0
  466. package/src/AnchoredOverlay/index.ts +2 -0
  467. package/src/Avatar.tsx +46 -0
  468. package/src/AvatarPair.tsx +35 -0
  469. package/src/AvatarStack.tsx +161 -0
  470. package/src/BaseStyles.tsx +53 -0
  471. package/src/BorderBox.tsx +18 -0
  472. package/src/Box.tsx +54 -0
  473. package/src/BranchName.tsx +19 -0
  474. package/src/Breadcrumbs.tsx +101 -0
  475. package/src/Button/Button.tsx +40 -0
  476. package/src/Button/ButtonBase.tsx +43 -0
  477. package/src/Button/ButtonClose.tsx +40 -0
  478. package/src/Button/ButtonDanger.tsx +43 -0
  479. package/src/Button/ButtonGroup.tsx +55 -0
  480. package/src/Button/ButtonInvisible.tsx +27 -0
  481. package/src/Button/ButtonOutline.tsx +43 -0
  482. package/src/Button/ButtonPrimary.tsx +41 -0
  483. package/src/Button/ButtonStyles.tsx +36 -0
  484. package/src/Button/ButtonTableList.tsx +58 -0
  485. package/src/Button/index.ts +16 -0
  486. package/src/Caret.tsx +133 -0
  487. package/src/CircleBadge.tsx +55 -0
  488. package/src/CircleOcticon.tsx +37 -0
  489. package/src/CounterLabel.tsx +52 -0
  490. package/src/Details.tsx +23 -0
  491. package/src/Dialog/ConfirmationDialog.tsx +184 -0
  492. package/src/Dialog/Dialog.tsx +419 -0
  493. package/src/Dialog.tsx +149 -0
  494. package/src/Dropdown.tsx +158 -0
  495. package/src/DropdownMenu/DropdownButton.tsx +15 -0
  496. package/src/DropdownMenu/DropdownMenu.tsx +115 -0
  497. package/src/DropdownMenu/index.ts +4 -0
  498. package/src/DropdownStyles.ts +128 -0
  499. package/src/FilterList.tsx +81 -0
  500. package/src/FilteredActionList/FilteredActionList.tsx +152 -0
  501. package/src/FilteredActionList/index.ts +2 -0
  502. package/src/FilteredSearch.tsx +28 -0
  503. package/src/Flash.tsx +77 -0
  504. package/src/Flex.tsx +15 -0
  505. package/src/FormGroup.tsx +27 -0
  506. package/src/Grid.tsx +15 -0
  507. package/src/Header.tsx +84 -0
  508. package/src/Heading.tsx +21 -0
  509. package/src/Label.tsx +75 -0
  510. package/src/LabelGroup.tsx +18 -0
  511. package/src/Link.tsx +46 -0
  512. package/src/Overlay.tsx +194 -0
  513. package/src/Pagehead.tsx +17 -0
  514. package/src/Pagination/Pagination.tsx +214 -0
  515. package/src/Pagination/index.ts +4 -0
  516. package/src/Pagination/model.tsx +187 -0
  517. package/src/PointerBox.tsx +31 -0
  518. package/src/Popover.tsx +236 -0
  519. package/src/Portal/Portal.tsx +96 -0
  520. package/src/Portal/index.ts +5 -0
  521. package/src/Position.tsx +63 -0
  522. package/src/ProgressBar.tsx +52 -0
  523. package/src/SelectMenu/SelectMenu.tsx +125 -0
  524. package/src/SelectMenu/SelectMenuContext.tsx +9 -0
  525. package/src/SelectMenu/SelectMenuDivider.tsx +25 -0
  526. package/src/SelectMenu/SelectMenuFilter.tsx +51 -0
  527. package/src/SelectMenu/SelectMenuFooter.tsx +28 -0
  528. package/src/SelectMenu/SelectMenuHeader.tsx +50 -0
  529. package/src/SelectMenu/SelectMenuItem.tsx +137 -0
  530. package/src/SelectMenu/SelectMenuList.tsx +42 -0
  531. package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +24 -0
  532. package/src/SelectMenu/SelectMenuModal.tsx +121 -0
  533. package/src/SelectMenu/SelectMenuTab.tsx +88 -0
  534. package/src/SelectMenu/SelectMenuTabPanel.tsx +30 -0
  535. package/src/SelectMenu/SelectMenuTabs.tsx +44 -0
  536. package/src/SelectMenu/hooks/useKeyboardNav.js +90 -0
  537. package/src/SelectMenu/index.ts +15 -0
  538. package/src/SelectPanel/SelectPanel.tsx +172 -0
  539. package/src/SelectPanel/index.ts +2 -0
  540. package/src/SideNav.tsx +193 -0
  541. package/src/Spinner.tsx +59 -0
  542. package/src/StateLabel.tsx +110 -0
  543. package/src/StyledOcticon.tsx +24 -0
  544. package/src/SubNav.tsx +129 -0
  545. package/src/TabNav.tsx +77 -0
  546. package/src/Text.tsx +13 -0
  547. package/src/TextInput.tsx +183 -0
  548. package/src/ThemeProvider.tsx +176 -0
  549. package/src/Timeline.tsx +141 -0
  550. package/src/Tooltip.tsx +263 -0
  551. package/src/Truncate.tsx +36 -0
  552. package/src/UnderlineNav.tsx +110 -0
  553. package/src/__tests__/.eslintrc.json +11 -0
  554. package/src/__tests__/ActionList.tsx +49 -0
  555. package/src/__tests__/ActionMenu.tsx +138 -0
  556. package/src/__tests__/AnchoredOverlay.tsx +151 -0
  557. package/src/__tests__/Avatar.tsx +45 -0
  558. package/src/__tests__/AvatarStack.tsx +45 -0
  559. package/src/__tests__/BorderBox.tsx +44 -0
  560. package/src/__tests__/Box.tsx +43 -0
  561. package/src/__tests__/BranchName.tsx +27 -0
  562. package/src/__tests__/Breadcrumbs.tsx +28 -0
  563. package/src/__tests__/BreadcrumbsItem.tsx +32 -0
  564. package/src/__tests__/Button.tsx +129 -0
  565. package/src/__tests__/Caret.tsx +36 -0
  566. package/src/__tests__/CircleBadge.tsx +69 -0
  567. package/src/__tests__/CircleOcticon.tsx +52 -0
  568. package/src/__tests__/CounterLabel.tsx +51 -0
  569. package/src/__tests__/Details.tsx +116 -0
  570. package/src/__tests__/Dialog.tsx +157 -0
  571. package/src/__tests__/Dropdown.tsx +57 -0
  572. package/src/__tests__/DropdownMenu.tsx +138 -0
  573. package/src/__tests__/FilterList.tsx +27 -0
  574. package/src/__tests__/FilterListItem.tsx +32 -0
  575. package/src/__tests__/FilteredSearch.tsx +27 -0
  576. package/src/__tests__/Flash.tsx +46 -0
  577. package/src/__tests__/Flex.tsx +59 -0
  578. package/src/__tests__/FormGroup.tsx +39 -0
  579. package/src/__tests__/Grid.tsx +83 -0
  580. package/src/__tests__/Header.tsx +50 -0
  581. package/src/__tests__/Heading.tsx +92 -0
  582. package/src/__tests__/Label.tsx +35 -0
  583. package/src/__tests__/LabelGroup.tsx +31 -0
  584. package/src/__tests__/Link.tsx +48 -0
  585. package/src/__tests__/Overlay.tsx +103 -0
  586. package/src/__tests__/Pagehead.tsx +24 -0
  587. package/src/__tests__/Pagination/Pagination.tsx +31 -0
  588. package/src/__tests__/Pagination/PaginationModel.tsx +133 -0
  589. package/src/__tests__/Pagination/__snapshots__/Pagination.tsx.snap +184 -0
  590. package/src/__tests__/PointerBox.tsx +35 -0
  591. package/src/__tests__/Popover.tsx +69 -0
  592. package/src/__tests__/Portal.tsx +103 -0
  593. package/src/__tests__/Position.tsx +118 -0
  594. package/src/__tests__/ProgressBar.tsx +41 -0
  595. package/src/__tests__/SelectMenu.tsx +142 -0
  596. package/src/__tests__/SelectPanel.tsx +65 -0
  597. package/src/__tests__/SideNav.tsx +63 -0
  598. package/src/__tests__/Spinner.tsx +44 -0
  599. package/src/__tests__/StateLabel.tsx +50 -0
  600. package/src/__tests__/StyledOcticon.tsx +28 -0
  601. package/src/__tests__/SubNav.tsx +51 -0
  602. package/src/__tests__/SubNavLink.tsx +32 -0
  603. package/src/__tests__/TabNav.tsx +33 -0
  604. package/src/__tests__/Text.tsx +79 -0
  605. package/src/__tests__/TextInput.tsx +50 -0
  606. package/src/__tests__/ThemeProvider.tsx +441 -0
  607. package/src/__tests__/Timeline.tsx +59 -0
  608. package/src/__tests__/Tooltip.tsx +53 -0
  609. package/src/__tests__/Truncate.tsx +45 -0
  610. package/src/__tests__/UnderlineNav.tsx +59 -0
  611. package/src/__tests__/UnderlineNavLink.tsx +32 -0
  612. package/src/__tests__/__snapshots__/ActionList.tsx.snap +27 -0
  613. package/src/__tests__/__snapshots__/ActionMenu.tsx.snap +80 -0
  614. package/src/__tests__/__snapshots__/AnchoredOverlay.tsx.snap +332 -0
  615. package/src/__tests__/__snapshots__/Avatar.tsx.snap +19 -0
  616. package/src/__tests__/__snapshots__/AvatarStack.tsx.snap +377 -0
  617. package/src/__tests__/__snapshots__/BorderBox.tsx.snap +14 -0
  618. package/src/__tests__/__snapshots__/Box.tsx.snap +201 -0
  619. package/src/__tests__/__snapshots__/BranchName.tsx.snap +17 -0
  620. package/src/__tests__/__snapshots__/Breadcrumbs.tsx.snap +29 -0
  621. package/src/__tests__/__snapshots__/BreadcrumbsItem.tsx.snap +79 -0
  622. package/src/__tests__/__snapshots__/Button.tsx.snap +832 -0
  623. package/src/__tests__/__snapshots__/Caret.tsx.snap +373 -0
  624. package/src/__tests__/__snapshots__/CircleBadge.tsx.snap +141 -0
  625. package/src/__tests__/__snapshots__/CircleOcticon.tsx.snap +64 -0
  626. package/src/__tests__/__snapshots__/CounterLabel.tsx.snap +22 -0
  627. package/src/__tests__/__snapshots__/Details.tsx.snap +15 -0
  628. package/src/__tests__/__snapshots__/Dialog.tsx.snap +200 -0
  629. package/src/__tests__/__snapshots__/Dropdown.tsx.snap +249 -0
  630. package/src/__tests__/__snapshots__/DropdownMenu.tsx.snap +106 -0
  631. package/src/__tests__/__snapshots__/FilterList.tsx.snap +13 -0
  632. package/src/__tests__/__snapshots__/FilterListItem.tsx.snap +80 -0
  633. package/src/__tests__/__snapshots__/FilteredSearch.tsx.snap +32 -0
  634. package/src/__tests__/__snapshots__/Flash.tsx.snap +32 -0
  635. package/src/__tests__/__snapshots__/Flex.tsx.snap +130 -0
  636. package/src/__tests__/__snapshots__/FormGroup.tsx.snap +25 -0
  637. package/src/__tests__/__snapshots__/Grid.tsx.snap +178 -0
  638. package/src/__tests__/__snapshots__/Header.tsx.snap +79 -0
  639. package/src/__tests__/__snapshots__/Heading.tsx.snap +13 -0
  640. package/src/__tests__/__snapshots__/Label.tsx.snap +74 -0
  641. package/src/__tests__/__snapshots__/LabelGroup.tsx.snap +15 -0
  642. package/src/__tests__/__snapshots__/Link.tsx.snap +213 -0
  643. package/src/__tests__/__snapshots__/Pagehead.tsx.snap +15 -0
  644. package/src/__tests__/__snapshots__/PointerBox.tsx.snap +174 -0
  645. package/src/__tests__/__snapshots__/Popover.tsx.snap +4687 -0
  646. package/src/__tests__/__snapshots__/Position.tsx.snap +44 -0
  647. package/src/__tests__/__snapshots__/ProgressBar.tsx.snap +53 -0
  648. package/src/__tests__/__snapshots__/SelectMenu.tsx.snap +469 -0
  649. package/src/__tests__/__snapshots__/SelectPanel.tsx.snap +123 -0
  650. package/src/__tests__/__snapshots__/SideNav.tsx.snap +143 -0
  651. package/src/__tests__/__snapshots__/Spinner.tsx.snap +33 -0
  652. package/src/__tests__/__snapshots__/StateLabel.tsx.snap +409 -0
  653. package/src/__tests__/__snapshots__/StyledOcticon.tsx.snap +25 -0
  654. package/src/__tests__/__snapshots__/SubNav.tsx.snap +44 -0
  655. package/src/__tests__/__snapshots__/SubNavLink.tsx.snap +199 -0
  656. package/src/__tests__/__snapshots__/TabNav.tsx.snap +58 -0
  657. package/src/__tests__/__snapshots__/Text.tsx.snap +7 -0
  658. package/src/__tests__/__snapshots__/TextInput.tsx.snap +440 -0
  659. package/src/__tests__/__snapshots__/ThemeProvider.tsx.snap +15 -0
  660. package/src/__tests__/__snapshots__/Timeline.tsx.snap +159 -0
  661. package/src/__tests__/__snapshots__/Tooltip.tsx.snap +227 -0
  662. package/src/__tests__/__snapshots__/Truncate.tsx.snap +17 -0
  663. package/src/__tests__/__snapshots__/UnderlineNav.tsx.snap +59 -0
  664. package/src/__tests__/__snapshots__/UnderlineNavLink.tsx.snap +130 -0
  665. package/src/__tests__/behaviors/anchoredPosition.ts +295 -0
  666. package/src/__tests__/behaviors/focusTrap.tsx +236 -0
  667. package/src/__tests__/behaviors/focusZone.tsx +549 -0
  668. package/src/__tests__/behaviors/iterateFocusableElements.tsx +61 -0
  669. package/src/__tests__/filterObject.ts +54 -0
  670. package/src/__tests__/hooks/useAnchoredPosition.tsx +31 -0
  671. package/src/__tests__/hooks/useOnEscapePress.tsx +16 -0
  672. package/src/__tests__/hooks/useOnOutsideClick.tsx +48 -0
  673. package/src/__tests__/hooks/useOpenAndCloseFocus.tsx +48 -0
  674. package/src/__tests__/hooks/useProvidedStateOrCreate.tsx +39 -0
  675. package/src/__tests__/theme.ts +41 -0
  676. package/src/__tests__/themeGet.ts +15 -0
  677. package/src/__tests__/useSafeTimeout.tsx +36 -0
  678. package/src/behaviors/anchoredPosition.ts +442 -0
  679. package/src/behaviors/focusTrap.ts +184 -0
  680. package/src/behaviors/focusZone.ts +713 -0
  681. package/src/constants.ts +62 -0
  682. package/src/hooks/index.ts +11 -0
  683. package/src/hooks/useAnchoredPosition.ts +53 -0
  684. package/src/hooks/useCombinedRefs.ts +40 -0
  685. package/src/hooks/useDetails.tsx +54 -0
  686. package/src/hooks/useDialog.ts +121 -0
  687. package/src/hooks/useFocusTrap.ts +80 -0
  688. package/src/hooks/useFocusZone.ts +64 -0
  689. package/src/hooks/useOnEscapePress.ts +63 -0
  690. package/src/hooks/useOnOutsideClick.tsx +82 -0
  691. package/src/hooks/useOpenAndCloseFocus.ts +27 -0
  692. package/src/hooks/useOverlay.tsx +32 -0
  693. package/src/hooks/useProvidedRefOrCreate.ts +14 -0
  694. package/src/hooks/useProvidedStateOrCreate.ts +27 -0
  695. package/src/hooks/useRenderForcingRef.ts +22 -0
  696. package/src/hooks/useResizeObserver.ts +11 -0
  697. package/src/hooks/useSafeTimeout.ts +38 -0
  698. package/src/hooks/useScrollFlash.ts +21 -0
  699. package/src/index.ts +165 -0
  700. package/src/polyfills/eventListenerSignal.ts +66 -0
  701. package/src/stories/ActionList.stories.tsx +364 -0
  702. package/src/stories/ActionMenu.stories.tsx +322 -0
  703. package/src/stories/AnchoredOverlay.stories.tsx +117 -0
  704. package/src/stories/AvatarStack.stories.tsx +37 -0
  705. package/src/stories/Button.stories.tsx +88 -0
  706. package/src/stories/ConfirmationDialog.stories.tsx +105 -0
  707. package/src/stories/Dialog.stories.tsx +240 -0
  708. package/src/stories/DropdownMenu.stories.tsx +84 -0
  709. package/src/stories/Overlay.stories.tsx +186 -0
  710. package/src/stories/Portal.stories.tsx +109 -0
  711. package/src/stories/SelectPanel.stories.tsx +300 -0
  712. package/src/stories/ThemeProvider.stories.tsx +104 -0
  713. package/src/stories/useAnchoredPosition.stories.tsx +320 -0
  714. package/src/stories/useFocusTrap.stories.tsx +400 -0
  715. package/src/stories/useFocusZone.stories.tsx +663 -0
  716. package/src/sx.ts +9 -0
  717. package/src/theme-preval.js +136 -0
  718. package/src/theme.ts +3 -0
  719. package/src/utils/deprecate.tsx +73 -0
  720. package/src/utils/isNumeric.tsx +4 -0
  721. package/src/utils/iterateFocusableElements.ts +121 -0
  722. package/src/utils/ssr.tsx +1 -0
  723. package/src/utils/test-deprecations.tsx +19 -0
  724. package/src/utils/test-helpers.tsx +7 -0
  725. package/src/utils/test-matchers.tsx +109 -0
  726. package/src/utils/testing.tsx +243 -0
  727. package/src/utils/theme.js +64 -0
  728. package/src/utils/types.ts +90 -0
  729. package/src/utils/uniqueId.ts +6 -0
  730. package/src/utils/userAgent.ts +7 -0
  731. package/stats.html +3279 -0
  732. package/tsconfig.build.json +7 -0
  733. package/tsconfig.json +20 -0
  734. package/lib/Breadcrumb.d.ts +0 -23
  735. package/lib-esm/Breadcrumb.d.ts +0 -23
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ShorthandHookFromActionMenu = exports.ShorthandHook = exports.BasicConfirmationDialog = exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _ = require("..");
11
+
12
+ var _ConfirmationDialog = require("../Dialog/ConfirmationDialog");
13
+
14
+ var _ActionMenu = require("../ActionMenu");
15
+
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
20
+ var _default = {
21
+ title: 'Internal components/ConfirmationDialog',
22
+ component: _ConfirmationDialog.ConfirmationDialog,
23
+ decorators: [Story => {
24
+ // Since portal roots are registered globally, we need this line so that each storybook
25
+ // story works in isolation.
26
+ return /*#__PURE__*/_react.default.createElement(_.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_.BaseStyles, null, /*#__PURE__*/_react.default.createElement(Story, null)));
27
+ }]
28
+ };
29
+ exports.default = _default;
30
+
31
+ const BasicConfirmationDialog = () => {
32
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
33
+ const buttonRef = (0, _react.useRef)(null);
34
+ const onDialogClose = (0, _react.useCallback)(() => setIsOpen(false), []);
35
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_.Button, {
36
+ ref: buttonRef,
37
+ onClick: () => setIsOpen(!isOpen)
38
+ }, "Show dialog"), isOpen && /*#__PURE__*/_react.default.createElement(_ConfirmationDialog.ConfirmationDialog, {
39
+ title: "Delete universe?",
40
+ onClose: onDialogClose,
41
+ confirmButtonContent: "Delete it!",
42
+ confirmButtonType: "danger"
43
+ }, "Deleting the universe could have disastrous effects, including but not limited to destroying all life on Earth."));
44
+ };
45
+
46
+ exports.BasicConfirmationDialog = BasicConfirmationDialog;
47
+
48
+ const ShorthandHook = () => {
49
+ const confirm = (0, _ConfirmationDialog.useConfirm)();
50
+ const {
51
+ theme
52
+ } = (0, _.useTheme)();
53
+ const onButtonClick = (0, _react.useCallback)(async event => {
54
+ if ((await confirm({
55
+ title: 'Are you sure?',
56
+ content: 'Do you really want to turn this button green?'
57
+ })) && event.target instanceof HTMLElement) {
58
+ var _theme$colors$auto$gr;
59
+
60
+ event.target.style.backgroundColor = (_theme$colors$auto$gr = theme === null || theme === void 0 ? void 0 : theme.colors.auto.green[3]) !== null && _theme$colors$auto$gr !== void 0 ? _theme$colors$auto$gr : 'green';
61
+ event.target.textContent = "I'm green!";
62
+ }
63
+ }, [confirm, theme]);
64
+ return /*#__PURE__*/_react.default.createElement(_.Box, {
65
+ display: "flex",
66
+ flexDirection: "column",
67
+ alignItems: "flex-start"
68
+ }, /*#__PURE__*/_react.default.createElement(_.Button, {
69
+ mb: 2,
70
+ onClick: onButtonClick
71
+ }, "Turn me green!"), /*#__PURE__*/_react.default.createElement(_.Button, {
72
+ mb: 2,
73
+ onClick: onButtonClick
74
+ }, "Turn me green!"), /*#__PURE__*/_react.default.createElement(_.Button, {
75
+ mb: 2,
76
+ onClick: onButtonClick
77
+ }, "Turn me green!"), /*#__PURE__*/_react.default.createElement(_.Button, {
78
+ mb: 2,
79
+ onClick: onButtonClick
80
+ }, "Turn me green!"));
81
+ };
82
+
83
+ exports.ShorthandHook = ShorthandHook;
84
+ ShorthandHook.displayName = "ShorthandHook";
85
+
86
+ const ShorthandHookFromActionMenu = () => {
87
+ const confirm = (0, _ConfirmationDialog.useConfirm)();
88
+ const [text, setText] = (0, _react.useState)('open me');
89
+ const onButtonClick = (0, _react.useCallback)(async () => {
90
+ if (await confirm({
91
+ title: 'Are you sure?',
92
+ content: 'Do you really want to do a trick?'
93
+ })) {
94
+ setText('tada!');
95
+ }
96
+ }, [confirm]);
97
+ return /*#__PURE__*/_react.default.createElement(_.Box, {
98
+ display: "flex",
99
+ flexDirection: "column",
100
+ alignItems: "flex-start"
101
+ }, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, {
102
+ renderAnchor: props => /*#__PURE__*/_react.default.createElement(_.Button, props, text),
103
+ items: [{
104
+ text: 'Do a trick!',
105
+ onAction: onButtonClick
106
+ }]
107
+ }));
108
+ };
109
+
110
+ exports.ShorthandHookFromActionMenu = ShorthandHookFromActionMenu;
111
+ ShorthandHookFromActionMenu.displayName = "ShorthandHookFromActionMenu";
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StressTest = exports.WithCustomRenderers = exports.BasicDialog = exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _2 = require("..");
11
+
12
+ var _Dialog = require("../Dialog/Dialog");
13
+
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+
18
+ var _default = {
19
+ title: 'Internal components/Dialog',
20
+ component: _Dialog.Dialog,
21
+ decorators: [Story => {
22
+ // Since portal roots are registered globally, we need this line so that each storybook
23
+ // story works in isolation.
24
+ return /*#__PURE__*/_react.default.createElement(_2.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_2.BaseStyles, null, /*#__PURE__*/_react.default.createElement(Story, null)));
25
+ }],
26
+ argTypes: {
27
+ width: {
28
+ defaultValue: 'xlarge',
29
+ control: {
30
+ type: 'radio',
31
+ options: ['small', 'medium', 'large', 'xlarge']
32
+ }
33
+ },
34
+ height: {
35
+ defaultValue: 'auto',
36
+ control: {
37
+ type: 'radio',
38
+ options: ['small', 'large', 'auto']
39
+ }
40
+ },
41
+ subtitle: {
42
+ name: 'show subtitle',
43
+ defaultValue: true,
44
+ control: {
45
+ type: 'boolean'
46
+ }
47
+ },
48
+ title: {
49
+ table: {
50
+ disable: true
51
+ }
52
+ },
53
+ renderHeader: {
54
+ table: {
55
+ disable: true
56
+ }
57
+ },
58
+ renderBody: {
59
+ table: {
60
+ disable: true
61
+ }
62
+ },
63
+ renderFooter: {
64
+ table: {
65
+ disable: true
66
+ }
67
+ },
68
+ onClose: {
69
+ table: {
70
+ disable: true
71
+ }
72
+ },
73
+ role: {
74
+ table: {
75
+ disable: true
76
+ }
77
+ },
78
+ ref: {
79
+ table: {
80
+ disable: true
81
+ }
82
+ },
83
+ key: {
84
+ table: {
85
+ disable: true
86
+ }
87
+ },
88
+ footerButtons: {
89
+ table: {
90
+ disable: true
91
+ }
92
+ }
93
+ }
94
+ };
95
+ exports.default = _default;
96
+
97
+ const lipsum = /*#__PURE__*/_react.default.createElement("div", {
98
+ style: {
99
+ fontSize: '14px'
100
+ }
101
+ }, /*#__PURE__*/_react.default.createElement("p", {
102
+ style: {
103
+ marginBlockStart: 0
104
+ }
105
+ }, "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.default.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.default.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.default.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.default.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."));
106
+
107
+ const BasicDialog = ({
108
+ width,
109
+ height,
110
+ subtitle
111
+ }) => {
112
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
113
+ const [secondOpen, setSecondOpen] = (0, _react.useState)(false);
114
+ const buttonRef = (0, _react.useRef)(null);
115
+ const onDialogClose = (0, _react.useCallback)(() => setIsOpen(false), []);
116
+ const onSecondDialogClose = (0, _react.useCallback)(() => setSecondOpen(false), []);
117
+ const openSecondDialog = (0, _react.useCallback)(() => setSecondOpen(true), []);
118
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_2.Button, {
119
+ ref: buttonRef,
120
+ onClick: () => setIsOpen(!isOpen)
121
+ }, "Show dialog"), isOpen && /*#__PURE__*/_react.default.createElement(_Dialog.Dialog, {
122
+ title: "My Dialog",
123
+ subtitle: subtitle ? 'This is a subtitle!' : undefined,
124
+ onClose: onDialogClose,
125
+ width: width,
126
+ height: height,
127
+ footerButtons: [{
128
+ buttonType: 'danger',
129
+ content: 'Delete the universe',
130
+ onClick: onDialogClose
131
+ }, {
132
+ buttonType: 'primary',
133
+ content: 'Proceed',
134
+ onClick: openSecondDialog,
135
+ autoFocus: true
136
+ }]
137
+ }, lipsum, secondOpen && /*#__PURE__*/_react.default.createElement(_Dialog.Dialog, {
138
+ title: "Inner dialog!",
139
+ onClose: onSecondDialogClose,
140
+ width: "small"
141
+ }, "Hello world")));
142
+ };
143
+
144
+ exports.BasicDialog = BasicDialog;
145
+
146
+ function CustomHeader({
147
+ title,
148
+ subtitle,
149
+ dialogLabelId,
150
+ dialogDescriptionId,
151
+ onClose
152
+ }) {
153
+ const onCloseClick = (0, _react.useCallback)(() => {
154
+ onClose('close-button');
155
+ }, [onClose]);
156
+
157
+ if (typeof title === 'string' && typeof subtitle === 'string') {
158
+ return /*#__PURE__*/_react.default.createElement(_2.Box, {
159
+ bg: "auto.blue.3"
160
+ }, /*#__PURE__*/_react.default.createElement("h1", {
161
+ id: dialogLabelId
162
+ }, title.toUpperCase()), /*#__PURE__*/_react.default.createElement("h2", {
163
+ id: dialogDescriptionId
164
+ }, subtitle.toLowerCase()), /*#__PURE__*/_react.default.createElement(_Dialog.Dialog.CloseButton, {
165
+ onClose: onCloseClick
166
+ }));
167
+ }
168
+
169
+ return null;
170
+ }
171
+
172
+ function CustomBody({
173
+ children
174
+ }) {
175
+ return /*#__PURE__*/_react.default.createElement(_Dialog.Dialog.Body, {
176
+ bg: "auto.red.3"
177
+ }, children);
178
+ }
179
+
180
+ CustomBody.displayName = "CustomBody";
181
+
182
+ function CustomFooter({
183
+ footerButtons
184
+ }) {
185
+ return /*#__PURE__*/_react.default.createElement(_Dialog.Dialog.Footer, {
186
+ bg: "auto.yellow.3"
187
+ }, footerButtons ? /*#__PURE__*/_react.default.createElement(_Dialog.Dialog.Buttons, {
188
+ buttons: footerButtons
189
+ }) : null);
190
+ }
191
+
192
+ CustomFooter.displayName = "CustomFooter";
193
+
194
+ const WithCustomRenderers = ({
195
+ width,
196
+ height,
197
+ subtitle
198
+ }) => {
199
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
200
+ const onDialogClose = (0, _react.useCallback)(() => setIsOpen(false), []);
201
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_2.Button, {
202
+ onClick: () => setIsOpen(!isOpen)
203
+ }, "Show dialog"), isOpen && /*#__PURE__*/_react.default.createElement(_Dialog.Dialog, {
204
+ title: "My Dialog",
205
+ subtitle: subtitle ? 'This is a subtitle!' : undefined,
206
+ width: width,
207
+ height: height,
208
+ renderHeader: CustomHeader,
209
+ renderBody: CustomBody,
210
+ renderFooter: CustomFooter,
211
+ onClose: onDialogClose,
212
+ footerButtons: [{
213
+ buttonType: 'danger',
214
+ content: 'Delete the universe',
215
+ onClick: onDialogClose
216
+ }, {
217
+ buttonType: 'primary',
218
+ content: 'Proceed'
219
+ }]
220
+ }, lipsum));
221
+ };
222
+
223
+ exports.WithCustomRenderers = WithCustomRenderers;
224
+
225
+ const StressTest = ({
226
+ width,
227
+ height,
228
+ subtitle
229
+ }) => {
230
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
231
+ const [secondOpen, setSecondOpen] = (0, _react.useState)(false);
232
+ const buttonRef = (0, _react.useRef)(null);
233
+ const onDialogClose = (0, _react.useCallback)(() => setIsOpen(false), []);
234
+ const onSecondDialogClose = (0, _react.useCallback)(() => setSecondOpen(false), []);
235
+ const openSecondDialog = (0, _react.useCallback)(() => setSecondOpen(true), []);
236
+ const manyButtons = new Array(10).fill(undefined).map((_, i) => ({
237
+ content: `Button ${i}`
238
+ }));
239
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_2.Button, {
240
+ ref: buttonRef,
241
+ onClick: () => setIsOpen(!isOpen)
242
+ }, "Show dialog"), isOpen && /*#__PURE__*/_react.default.createElement(_Dialog.Dialog, {
243
+ title: "This dialog has a really long title. So long, in fact, that it should cause wrapping, going to multiple lines!.",
244
+ 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,
245
+ onClose: onDialogClose,
246
+ width: width,
247
+ height: height,
248
+ footerButtons: [...manyButtons, {
249
+ buttonType: 'danger',
250
+ content: 'Delete the universe',
251
+ onClick: onDialogClose
252
+ }, {
253
+ buttonType: 'primary',
254
+ content: 'Proceed',
255
+ onClick: openSecondDialog,
256
+ autoFocus: true
257
+ }]
258
+ }, lipsum, secondOpen && /*#__PURE__*/_react.default.createElement(_Dialog.Dialog, {
259
+ title: "Inner dialog!",
260
+ onClose: onSecondDialogClose,
261
+ width: "small"
262
+ }, "Hello world")));
263
+ };
264
+
265
+ exports.StressTest = StressTest;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FavoriteColorStory = FavoriteColorStory;
7
+ exports.ExternalAnchorStory = ExternalAnchorStory;
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _ = require("..");
13
+
14
+ var _BaseStyles = _interopRequireDefault(require("../BaseStyles"));
15
+
16
+ var _Box = _interopRequireDefault(require("../Box"));
17
+
18
+ var _DropdownMenu = require("../DropdownMenu");
19
+
20
+ var _TextInput = _interopRequireDefault(require("../TextInput"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ 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); }
25
+
26
+ const meta = {
27
+ title: 'Composite components/DropdownMenu',
28
+ component: _DropdownMenu.DropdownMenu,
29
+ decorators: [Story => {
30
+ return /*#__PURE__*/_react.default.createElement(_.ThemeProvider, {
31
+ theme: _.theme
32
+ }, /*#__PURE__*/_react.default.createElement(_BaseStyles.default, null, /*#__PURE__*/_react.default.createElement(Story, null)));
33
+ }],
34
+ parameters: {
35
+ controls: {
36
+ disable: true
37
+ }
38
+ }
39
+ };
40
+ var _default = meta;
41
+ exports.default = _default;
42
+
43
+ function FavoriteColorStory() {
44
+ const items = _react.default.useMemo(() => [{
45
+ text: '🔵 Cyan'
46
+ }, {
47
+ text: '🔴 Magenta'
48
+ }, {
49
+ text: '🟡 Yellow'
50
+ }], []);
51
+
52
+ const [selectedItem, setSelectedItem] = _react.default.useState();
53
+
54
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Favorite Color"), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
55
+ placeholder: "Input for focus testing",
56
+ sx: {
57
+ mb: 2
58
+ }
59
+ }), /*#__PURE__*/_react.default.createElement("div", {
60
+ id: "favorite-color-label"
61
+ }, "Please select your favorite color:"), /*#__PURE__*/_react.default.createElement(_DropdownMenu.DropdownMenu, {
62
+ renderAnchor: ({
63
+ children,
64
+ 'aria-labelledby': ariaLabelledBy,
65
+ ...anchorProps
66
+ }) => /*#__PURE__*/_react.default.createElement(_DropdownMenu.DropdownButton, _extends({
67
+ "aria-labelledby": `favorite-color-label ${ariaLabelledBy}`
68
+ }, anchorProps), children),
69
+ placeholder: "\uD83C\uDFA8",
70
+ items: items,
71
+ selectedItem: selectedItem,
72
+ onChange: setSelectedItem
73
+ }));
74
+ }
75
+
76
+ FavoriteColorStory.storyName = 'Favorite Color';
77
+
78
+ function ExternalAnchorStory() {
79
+ const items = _react.default.useMemo(() => [{
80
+ text: '🔵 Cyan'
81
+ }, {
82
+ text: '🔴 Magenta'
83
+ }, {
84
+ text: '🟡 Yellow'
85
+ }], []);
86
+
87
+ const [selectedItem, setSelectedItem] = _react.default.useState();
88
+
89
+ const anchorRef = _react.default.useRef(null);
90
+
91
+ const [open, setOpen] = _react.default.useState(false);
92
+
93
+ return /*#__PURE__*/_react.default.createElement(_Box.default, {
94
+ display: "flex",
95
+ flexDirection: "column",
96
+ alignItems: "flex-start"
97
+ }, /*#__PURE__*/_react.default.createElement(_Box.default, {
98
+ display: "flex",
99
+ flexDirection: "row"
100
+ }, /*#__PURE__*/_react.default.createElement(_DropdownMenu.DropdownButton, {
101
+ onClick: () => setOpen(true)
102
+ }, "Click me to open the dropdown"), /*#__PURE__*/_react.default.createElement(_Box.default, {
103
+ ref: anchorRef,
104
+ bg: "papayawhip",
105
+ p: 4,
106
+ ml: 40,
107
+ borderRadius: 2,
108
+ display: "inline-block"
109
+ }, "Anchored on me!")), /*#__PURE__*/_react.default.createElement(_DropdownMenu.DropdownMenu, {
110
+ renderAnchor: null,
111
+ anchorRef: anchorRef,
112
+ open: open,
113
+ onOpenChange: setOpen,
114
+ placeholder: "\uD83C\uDFA8",
115
+ items: items,
116
+ selectedItem: selectedItem,
117
+ onChange: setSelectedItem
118
+ }));
119
+ }
120
+
121
+ ExternalAnchorStory.displayName = "ExternalAnchorStory";
122
+ ExternalAnchorStory.storyName = 'DropdownMenu with External Anchor';
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OverlayOnTopOfOverlay = exports.DialogOverlay = exports.DropdownOverlay = exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _ = require("..");
13
+
14
+ var _DropdownMenu = require("../DropdownMenu");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ 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); }
23
+
24
+ var _default = {
25
+ title: 'Internal components/Overlay',
26
+ component: _.Overlay,
27
+ decorators: [Story => {
28
+ return /*#__PURE__*/_react.default.createElement(_.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_.BaseStyles, null, /*#__PURE__*/_react.default.createElement(Story, null)));
29
+ }]
30
+ };
31
+ exports.default = _default;
32
+
33
+ const DummyItem = _styledComponents.default.button.withConfig({
34
+ displayName: "Overlaystories__DummyItem",
35
+ componentId: "sc-92ppmu-0"
36
+ })(["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;}"]);
37
+
38
+ const DropdownOverlay = () => {
39
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
40
+ const buttonRef = (0, _react.useRef)(null);
41
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_.Button, {
42
+ ref: buttonRef,
43
+ sx: {
44
+ position: 'relative'
45
+ },
46
+ onClick: () => setIsOpen(!isOpen)
47
+ }, "open overlay"), isOpen ? /*#__PURE__*/_react.default.createElement(_.Overlay, {
48
+ returnFocusRef: buttonRef,
49
+ height: "auto",
50
+ width: "small",
51
+ ignoreClickRefs: [buttonRef],
52
+ onEscape: () => setIsOpen(false),
53
+ onClickOutside: () => setIsOpen(false)
54
+ }, /*#__PURE__*/_react.default.createElement(_.Box, {
55
+ display: "flex",
56
+ flexDirection: "column",
57
+ p: 2
58
+ }, /*#__PURE__*/_react.default.createElement(DummyItem, null, "Copy link"), /*#__PURE__*/_react.default.createElement(DummyItem, null, "Quote reply"), /*#__PURE__*/_react.default.createElement(DummyItem, null, "Reference in new issue"), /*#__PURE__*/_react.default.createElement(DummyItem, null, "Edit"), /*#__PURE__*/_react.default.createElement(DummyItem, null, "Delete"))) : null);
59
+ };
60
+
61
+ exports.DropdownOverlay = DropdownOverlay;
62
+
63
+ const DialogOverlay = () => {
64
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
65
+ const buttonRef = (0, _react.useRef)(null);
66
+ const confirmButtonRef = (0, _react.useRef)(null);
67
+ const anchorRef = (0, _react.useRef)(null);
68
+
69
+ const closeOverlay = () => setIsOpen(false);
70
+
71
+ return /*#__PURE__*/_react.default.createElement(_.Box, {
72
+ position: "absolute",
73
+ top: 0,
74
+ left: 0,
75
+ bottom: 0,
76
+ right: 0,
77
+ ref: anchorRef
78
+ }, /*#__PURE__*/_react.default.createElement(_.Button, {
79
+ ref: buttonRef,
80
+ onClick: () => setIsOpen(!isOpen)
81
+ }, "open overlay"), isOpen ? /*#__PURE__*/_react.default.createElement(_.Overlay, {
82
+ initialFocusRef: confirmButtonRef,
83
+ returnFocusRef: buttonRef,
84
+ ignoreClickRefs: [buttonRef],
85
+ onEscape: closeOverlay,
86
+ onClickOutside: closeOverlay,
87
+ width: "small"
88
+ }, /*#__PURE__*/_react.default.createElement(_.Box, {
89
+ display: "flex",
90
+ flexDirection: "column",
91
+ p: 2
92
+ }, /*#__PURE__*/_react.default.createElement(_.Text, null, "Are you sure?"), /*#__PURE__*/_react.default.createElement(_.ButtonDanger, {
93
+ onClick: closeOverlay
94
+ }, "Cancel"), /*#__PURE__*/_react.default.createElement(_.Button, {
95
+ onClick: closeOverlay,
96
+ ref: confirmButtonRef
97
+ }, "Confirm"))) : null);
98
+ };
99
+
100
+ exports.DialogOverlay = DialogOverlay;
101
+ DialogOverlay.displayName = "DialogOverlay";
102
+
103
+ const OverlayOnTopOfOverlay = () => {
104
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
105
+ const [isSecondaryOpen, setIsSecondaryOpen] = (0, _react.useState)(false);
106
+ const buttonRef = (0, _react.useRef)(null);
107
+ const secondaryButtonRef = (0, _react.useRef)(null);
108
+ const confirmButtonRef = (0, _react.useRef)(null);
109
+ const anchorRef = (0, _react.useRef)(null);
110
+
111
+ const closeOverlay = () => setIsOpen(false); // intentionally not memoized
112
+
113
+
114
+ const closeSecondaryOverlay = (0, _react.useCallback)(() => setIsSecondaryOpen(false), [setIsSecondaryOpen]);
115
+
116
+ const items = _react.default.useMemo(() => [{
117
+ text: '🔵 Cyan',
118
+ onMouseDown: e => {
119
+ e.preventDefault();
120
+ }
121
+ }, {
122
+ text: '🔴 Magenta',
123
+ onMouseDown: e => {
124
+ e.preventDefault();
125
+ }
126
+ }, {
127
+ text: '🟡 Yellow',
128
+ onMouseDown: e => {
129
+ e.preventDefault();
130
+ }
131
+ }], []);
132
+
133
+ const [selectedItem, setSelectedItem] = _react.default.useState();
134
+
135
+ return /*#__PURE__*/_react.default.createElement(_.Box, {
136
+ position: "absolute",
137
+ top: 0,
138
+ left: 0,
139
+ bottom: 0,
140
+ right: 0,
141
+ ref: anchorRef
142
+ }, /*#__PURE__*/_react.default.createElement("input", {
143
+ placeholder: "Input for focus testing"
144
+ }), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_.Button, {
145
+ ref: buttonRef,
146
+ onClick: () => setIsOpen(!isOpen)
147
+ }, "open overlay"), isOpen ? /*#__PURE__*/_react.default.createElement(_.Overlay, {
148
+ initialFocusRef: confirmButtonRef,
149
+ returnFocusRef: buttonRef,
150
+ onEscape: closeOverlay,
151
+ onClickOutside: closeOverlay,
152
+ width: "small"
153
+ }, /*#__PURE__*/_react.default.createElement(_.Button, {
154
+ ref: secondaryButtonRef,
155
+ onClick: () => setIsSecondaryOpen(!isSecondaryOpen)
156
+ }, "open overlay"), isSecondaryOpen ? /*#__PURE__*/_react.default.createElement(_.Overlay, {
157
+ initialFocusRef: confirmButtonRef,
158
+ returnFocusRef: secondaryButtonRef,
159
+ onEscape: closeSecondaryOverlay,
160
+ onClickOutside: closeSecondaryOverlay,
161
+ width: "small",
162
+ sx: {
163
+ top: '40px'
164
+ }
165
+ }, /*#__PURE__*/_react.default.createElement(_.Box, {
166
+ display: "flex",
167
+ flexDirection: "column",
168
+ p: 2
169
+ }, /*#__PURE__*/_react.default.createElement(_.Text, null, "Select an option!"), /*#__PURE__*/_react.default.createElement(_DropdownMenu.DropdownMenu, {
170
+ renderAnchor: ({
171
+ children,
172
+ 'aria-labelledby': ariaLabelledBy,
173
+ ...anchorProps
174
+ }) => /*#__PURE__*/_react.default.createElement(_DropdownMenu.DropdownButton, _extends({
175
+ "aria-labelledby": `favorite-color-label ${ariaLabelledBy}`
176
+ }, anchorProps), children),
177
+ placeholder: "\uD83C\uDFA8",
178
+ items: items,
179
+ selectedItem: selectedItem,
180
+ onChange: setSelectedItem
181
+ }))) : null) : null);
182
+ };
183
+
184
+ exports.OverlayOnTopOfOverlay = OverlayOnTopOfOverlay;
185
+ OverlayOnTopOfOverlay.displayName = "OverlayOnTopOfOverlay";