@primer/components 30.3.0-rc.2010c7d4 → 31.0.0-rc.15aa0a10

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 (180) hide show
  1. package/.eslintrc.json +2 -1
  2. package/.storybook/preview.js +4 -4
  3. package/CHANGELOG.md +12 -2
  4. package/codemods/deprecateUtilityComponents.js +1 -1
  5. package/contributor-docs/adrs/adr-003-prop-norms.md +72 -0
  6. package/dist/browser.esm.js +798 -794
  7. package/dist/browser.esm.js.map +1 -1
  8. package/dist/browser.umd.js +801 -797
  9. package/dist/browser.umd.js.map +1 -1
  10. package/docs/content/Autocomplete.mdx +627 -0
  11. package/docs/content/TextInputTokens.mdx +89 -0
  12. package/docs/content/getting-started.md +1 -1
  13. package/docs/content/overriding-styles.mdx +7 -6
  14. package/docs/content/theming.md +5 -5
  15. package/docs/package-lock.json +288 -511
  16. package/docs/package.json +1 -1
  17. package/docs/src/@primer/gatsby-theme-doctocat/components/hero.js +14 -12
  18. package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +2 -0
  19. package/docs/src/@primer/gatsby-theme-doctocat/primer-components-hero.svg +7 -7
  20. package/lib/ActionList/Item.js +1 -1
  21. package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +2 -1
  22. package/lib/AnchoredOverlay/AnchoredOverlay.js +11 -3
  23. package/lib/Autocomplete/Autocomplete.d.ts +304 -0
  24. package/lib/Autocomplete/Autocomplete.js +145 -0
  25. package/lib/Autocomplete/AutocompleteContext.d.ts +17 -0
  26. package/lib/Autocomplete/AutocompleteContext.js +11 -0
  27. package/lib/Autocomplete/AutocompleteInput.d.ts +292 -0
  28. package/lib/Autocomplete/AutocompleteInput.js +157 -0
  29. package/lib/Autocomplete/AutocompleteMenu.d.ts +72 -0
  30. package/lib/Autocomplete/AutocompleteMenu.js +224 -0
  31. package/lib/Autocomplete/AutocompleteOverlay.d.ts +20 -0
  32. package/lib/Autocomplete/AutocompleteOverlay.js +80 -0
  33. package/lib/Autocomplete/index.d.ts +2 -0
  34. package/lib/Autocomplete/index.js +15 -0
  35. package/lib/BaseStyles.js +1 -1
  36. package/lib/BorderBox.js +1 -1
  37. package/lib/Button/ButtonInvisible.js +1 -1
  38. package/lib/Caret.js +2 -2
  39. package/lib/Dialog.js +1 -1
  40. package/lib/FilteredActionList/FilteredActionList.js +5 -31
  41. package/lib/Flash.js +16 -16
  42. package/lib/Label.js +1 -1
  43. package/lib/Overlay.d.ts +1 -0
  44. package/lib/Overlay.js +3 -1
  45. package/lib/ProgressBar.js +1 -1
  46. package/lib/StateLabel.js +13 -19
  47. package/lib/Token/_RemoveTokenButton.js +1 -1
  48. package/lib/__tests__/Autocomplete.test.d.ts +1 -0
  49. package/lib/__tests__/Autocomplete.test.js +528 -0
  50. package/lib/__tests__/BorderBox.test.js +1 -1
  51. package/lib/__tests__/CircleOcticon.test.js +1 -1
  52. package/lib/__tests__/CounterLabel.test.js +4 -4
  53. package/lib/__tests__/Flash.test.js +4 -4
  54. package/lib/__tests__/Link.test.js +1 -1
  55. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
  56. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +226 -0
  57. package/lib/behaviors/scrollIntoViewingArea.d.ts +1 -0
  58. package/lib/behaviors/scrollIntoViewingArea.js +39 -0
  59. package/lib/hooks/useOpenAndCloseFocus.d.ts +2 -1
  60. package/lib/hooks/useOpenAndCloseFocus.js +7 -2
  61. package/lib/hooks/useOverlay.d.ts +2 -1
  62. package/lib/hooks/useOverlay.js +4 -2
  63. package/lib/index.d.ts +2 -0
  64. package/lib/index.js +8 -0
  65. package/lib/stories/Autocomplete.stories.js +608 -0
  66. package/lib/stories/Dialog.stories.js +3 -3
  67. package/lib/stories/IssueLabelToken.stories.js +1 -1
  68. package/lib/stories/ProfileToken.stories.js +1 -1
  69. package/lib/theme-preval.js +370 -3100
  70. package/lib/utils/testing.d.ts +50 -493
  71. package/lib/utils/types/MandateProps.d.ts +3 -0
  72. package/lib/utils/types/MandateProps.js +1 -0
  73. package/lib/utils/types/index.d.ts +1 -0
  74. package/lib/utils/types/index.js +13 -0
  75. package/lib-esm/ActionList/Item.js +1 -1
  76. package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +2 -1
  77. package/lib-esm/AnchoredOverlay/AnchoredOverlay.js +11 -3
  78. package/lib-esm/Autocomplete/Autocomplete.d.ts +304 -0
  79. package/lib-esm/Autocomplete/Autocomplete.js +123 -0
  80. package/lib-esm/Autocomplete/AutocompleteContext.d.ts +17 -0
  81. package/lib-esm/Autocomplete/AutocompleteContext.js +2 -0
  82. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +292 -0
  83. package/lib-esm/Autocomplete/AutocompleteInput.js +138 -0
  84. package/lib-esm/Autocomplete/AutocompleteMenu.d.ts +72 -0
  85. package/lib-esm/Autocomplete/AutocompleteMenu.js +205 -0
  86. package/lib-esm/Autocomplete/AutocompleteOverlay.d.ts +20 -0
  87. package/lib-esm/Autocomplete/AutocompleteOverlay.js +62 -0
  88. package/lib-esm/Autocomplete/index.d.ts +2 -0
  89. package/lib-esm/Autocomplete/index.js +1 -0
  90. package/lib-esm/BaseStyles.js +1 -1
  91. package/lib-esm/BorderBox.js +1 -1
  92. package/lib-esm/Button/ButtonInvisible.js +1 -1
  93. package/lib-esm/Caret.js +2 -2
  94. package/lib-esm/Dialog.js +1 -1
  95. package/lib-esm/FilteredActionList/FilteredActionList.js +3 -31
  96. package/lib-esm/Flash.js +16 -16
  97. package/lib-esm/Label.js +1 -1
  98. package/lib-esm/Overlay.d.ts +1 -0
  99. package/lib-esm/Overlay.js +3 -1
  100. package/lib-esm/ProgressBar.js +1 -1
  101. package/lib-esm/StateLabel.js +13 -19
  102. package/lib-esm/Token/_RemoveTokenButton.js +1 -1
  103. package/lib-esm/__tests__/Autocomplete.test.d.ts +1 -0
  104. package/lib-esm/__tests__/Autocomplete.test.js +494 -0
  105. package/lib-esm/__tests__/BorderBox.test.js +1 -1
  106. package/lib-esm/__tests__/CircleOcticon.test.js +1 -1
  107. package/lib-esm/__tests__/CounterLabel.test.js +4 -4
  108. package/lib-esm/__tests__/Flash.test.js +4 -4
  109. package/lib-esm/__tests__/Link.test.js +1 -1
  110. package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
  111. package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.js +224 -0
  112. package/lib-esm/behaviors/scrollIntoViewingArea.d.ts +1 -0
  113. package/lib-esm/behaviors/scrollIntoViewingArea.js +30 -0
  114. package/lib-esm/hooks/useOpenAndCloseFocus.d.ts +2 -1
  115. package/lib-esm/hooks/useOpenAndCloseFocus.js +7 -2
  116. package/lib-esm/hooks/useOverlay.d.ts +2 -1
  117. package/lib-esm/hooks/useOverlay.js +4 -2
  118. package/lib-esm/index.d.ts +2 -0
  119. package/lib-esm/index.js +1 -0
  120. package/lib-esm/stories/Autocomplete.stories.js +549 -0
  121. package/lib-esm/stories/Dialog.stories.js +3 -3
  122. package/lib-esm/stories/IssueLabelToken.stories.js +1 -1
  123. package/lib-esm/stories/ProfileToken.stories.js +1 -1
  124. package/lib-esm/theme-preval.js +370 -3100
  125. package/lib-esm/utils/testing.d.ts +50 -493
  126. package/lib-esm/utils/types/MandateProps.d.ts +3 -0
  127. package/lib-esm/utils/types/MandateProps.js +1 -0
  128. package/lib-esm/utils/types/index.d.ts +1 -0
  129. package/lib-esm/utils/types/index.js +2 -1
  130. package/package-lock.json +11 -8
  131. package/package.json +3 -3
  132. package/src/ActionList/Item.tsx +1 -1
  133. package/src/AnchoredOverlay/AnchoredOverlay.tsx +14 -3
  134. package/src/Autocomplete/Autocomplete.tsx +103 -0
  135. package/src/Autocomplete/AutocompleteContext.tsx +19 -0
  136. package/src/Autocomplete/AutocompleteInput.tsx +179 -0
  137. package/src/Autocomplete/AutocompleteMenu.tsx +341 -0
  138. package/src/Autocomplete/AutocompleteOverlay.tsx +68 -0
  139. package/src/Autocomplete/index.ts +2 -0
  140. package/src/BaseStyles.tsx +1 -1
  141. package/src/BorderBox.tsx +1 -1
  142. package/src/Button/ButtonInvisible.tsx +7 -2
  143. package/src/Caret.tsx +2 -2
  144. package/src/Dialog.tsx +1 -1
  145. package/src/FilteredActionList/FilteredActionList.tsx +10 -25
  146. package/src/Flash.tsx +16 -16
  147. package/src/Label.tsx +1 -1
  148. package/src/Overlay.tsx +4 -1
  149. package/src/ProgressBar.tsx +1 -1
  150. package/src/StateLabel.tsx +12 -20
  151. package/src/Token/_RemoveTokenButton.tsx +4 -2
  152. package/src/__tests__/Autocomplete.test.tsx +444 -0
  153. package/src/__tests__/BorderBox.test.tsx +1 -1
  154. package/src/__tests__/CircleOcticon.test.tsx +1 -1
  155. package/src/__tests__/CounterLabel.test.tsx +4 -4
  156. package/src/__tests__/Flash.test.tsx +4 -4
  157. package/src/__tests__/Link.test.tsx +1 -1
  158. package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +3 -3
  159. package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +3414 -0
  160. package/src/__tests__/__snapshots__/Button.test.tsx.snap +9 -1
  161. package/src/__tests__/__snapshots__/ConfirmationDialog.test.tsx.snap +1 -1
  162. package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +1 -1
  163. package/src/__tests__/__snapshots__/StateLabel.test.tsx.snap +0 -21
  164. package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +16 -16
  165. package/src/__tests__/__snapshots__/Token.test.tsx.snap +34 -34
  166. package/src/__tests__/behaviors/scrollIntoViewingArea.test.ts +195 -0
  167. package/src/behaviors/scrollIntoViewingArea.ts +27 -0
  168. package/src/hooks/useOpenAndCloseFocus.ts +7 -2
  169. package/src/hooks/useOverlay.tsx +4 -2
  170. package/src/index.ts +2 -0
  171. package/src/stories/Autocomplete.stories.tsx +572 -0
  172. package/src/stories/Dialog.stories.tsx +3 -3
  173. package/src/stories/IssueLabelToken.stories.tsx +1 -1
  174. package/src/stories/ProfileToken.stories.tsx +1 -1
  175. package/src/utils/types/MandateProps.ts +19 -0
  176. package/src/utils/types/index.ts +1 -0
  177. package/stats.html +1 -1
  178. package/docs/src/@primer/gatsby-theme-doctocat/components/live-code.js +0 -84
  179. package/docs/src/@primer/gatsby-theme-doctocat/components/nav-dropdown.js +0 -48
  180. package/docs/src/@primer/gatsby-theme-doctocat/components/wrap-page-element.js +0 -25
@@ -1,84 +0,0 @@
1
- import {Box, Text} from '@primer/components'
2
- import ClipboardCopy from '@primer/gatsby-theme-doctocat/src/components/clipboard-copy'
3
- import LivePreviewWrapper from '@primer/gatsby-theme-doctocat/src/components/live-preview-wrapper'
4
- import githubTheme from '@primer/gatsby-theme-doctocat/src/github'
5
- import scope from '@primer/gatsby-theme-doctocat/src/live-code-scope'
6
- import htmlReactParser from 'html-react-parser'
7
- import React, {useState} from 'react'
8
- import reactElementToJsxString from 'react-element-to-jsx-string'
9
- import {LiveEditor, LiveError, LivePreview, LiveProvider} from 'react-live'
10
- import {ThemeContext} from 'styled-components'
11
-
12
- // Temporarily shadowing this file to update the border color of the live examples.
13
- // We can remove this file when Doctocat uses functional color variables.
14
-
15
- const languageTransformers = {
16
- html: html => htmlToJsx(html),
17
- jsx: jsx => wrapWithFragment(jsx)
18
- }
19
-
20
- function htmlToJsx(html) {
21
- try {
22
- const reactElement = htmlReactParser(removeNewlines(html))
23
- // The output of htmlReactParser could be a single React element
24
- // or an array of React elements. reactElementToJsxString does not accept arrays
25
- // so we have to wrap the output in React fragment.
26
- return reactElementToJsxString(<>{reactElement}</>)
27
- } catch (error) {
28
- return wrapWithFragment(html)
29
- }
30
- }
31
-
32
- function removeNewlines(string) {
33
- return string.replace(/(\r\n|\n|\r)/gm, '')
34
- }
35
-
36
- function wrapWithFragment(jsx) {
37
- // eslint-disable-next-line github/unescaped-html-literal
38
- return `<React.Fragment>${jsx}</React.Fragment>`
39
- }
40
-
41
- function LiveCode({code, language, noinline}) {
42
- const theme = React.useContext(ThemeContext)
43
- const [liveCode, setLiveCode] = useState(code)
44
- const handleChange = updatedLiveCode => setLiveCode(updatedLiveCode)
45
-
46
- return (
47
- <Box display="flex" flexDirection="column" mb={3}>
48
- <LiveProvider scope={scope} code={liveCode} transformCode={languageTransformers[language]} noInline={noinline}>
49
- <Box
50
- sx={{
51
- border: '1px solid',
52
- borderColor: 'border.default',
53
- borderTopRightRadius: 2,
54
- borderTopLeftRadius: 2
55
- }}
56
- >
57
- <LivePreviewWrapper>
58
- <LivePreview />
59
- </LivePreviewWrapper>
60
- </Box>
61
- <Box position="relative">
62
- <LiveEditor
63
- onChange={handleChange}
64
- theme={githubTheme}
65
- ignoreTabKey={true}
66
- padding={theme.space[3]}
67
- style={{
68
- fontFamily: theme.fonts.mono,
69
- fontSize: '85%',
70
- borderBottomLeftRadius: theme.radii[2],
71
- borderBottomRightRadius: theme.radii[2]
72
- }}
73
- />
74
- <Box position="absolute" top={0} right={0} p={2}>
75
- <ClipboardCopy value={liveCode} />
76
- </Box>
77
- </Box>
78
- <Text as={LiveError} m={0} p={3} fontFamily="mono" fontSize={1} color="white" bg="red.5" />
79
- </LiveProvider>
80
- </Box>
81
- )
82
- }
83
-
84
- export default LiveCode
@@ -1,48 +0,0 @@
1
- import {Box, StyledOcticon, Details, useDetails, Text, themeGet} from '@primer/components'
2
- import {TriangleDownIcon} from '@primer/octicons-react'
3
- import React from 'react'
4
- import styled from 'styled-components'
5
-
6
- // Temporarily shadowing this component until Doctocat uses the
7
- // latest version of the Details or ActionMenu component
8
-
9
- function NavDropdown({title, children}) {
10
- const {getDetailsProps} = useDetails({closeOnOutsideClick: true})
11
- return (
12
- <Details {...getDetailsProps()}>
13
- <summary style={{cursor: 'pointer'}}>
14
- <Text>{title}</Text>
15
- <StyledOcticon icon={TriangleDownIcon} ml={1} />
16
- </summary>
17
- <Box position="absolute">
18
- <Box
19
- color="white"
20
- bg="gray.8"
21
- py={1}
22
- mt={2}
23
- boxShadow="medium"
24
- borderWidth="1px"
25
- borderStyle="solid"
26
- borderColor="gray.7"
27
- borderRadius={2}
28
- >
29
- {children}
30
- </Box>
31
- </Box>
32
- </Details>
33
- )
34
- }
35
-
36
- export const NavDropdownItem = styled.a`
37
- display: block;
38
- padding: ${themeGet('space.2')} ${themeGet('space.3')};
39
- color: inherit;
40
- text-decoration: none;
41
- &:hover {
42
- color: ${themeGet('colors.white')};
43
- background-color: ${themeGet('colors.blue.5')};
44
- text-decoration: none;
45
- }
46
- `
47
-
48
- export default NavDropdown
@@ -1,25 +0,0 @@
1
- import {BaseStyles, theme, ThemeProvider} from '@primer/components'
2
- import SkipLink from '@primer/gatsby-theme-doctocat/src/components/skip-link'
3
- import primitives from '@primer/primitives'
4
- import deepmerge from 'deepmerge'
5
- import React from 'react'
6
-
7
- // Temporarily shadowing this file to wrap the page in our custom ThemeProvider.
8
- // We can remove this file when Doctocat uses the custom ThemeProvider.
9
-
10
- // Doctocat still uses presentional color variables.
11
- // We can remove this customTheme when Doctocat uses functional color variables
12
- const customTheme = deepmerge(theme, {colors: primitives.colors.light.scale})
13
-
14
- function wrapPageElement({element}) {
15
- return (
16
- <ThemeProvider theme={customTheme}>
17
- <BaseStyles>
18
- <SkipLink />
19
- {element}
20
- </BaseStyles>
21
- </ThemeProvider>
22
- )
23
- }
24
-
25
- export default wrapPageElement