@primer/components 32.1.1-rc.8eccc94b → 33.0.0-rc.af3001e7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. package/.github/workflows/statuses.yml +32 -0
  2. package/.gitignore +1 -0
  3. package/CHANGELOG.md +15 -1
  4. package/contributor-docs/CONTRIBUTING.md +14 -58
  5. package/dist/browser.esm.js +104 -108
  6. package/dist/browser.esm.js.map +1 -1
  7. package/dist/browser.umd.js +104 -108
  8. package/dist/browser.umd.js.map +1 -1
  9. package/docs/content/BranchName.md +6 -5
  10. package/docs/content/Details.md +4 -8
  11. package/docs/content/Heading.md +5 -10
  12. package/docs/content/Label.md +6 -7
  13. package/docs/content/ProgressBar.mdx +7 -6
  14. package/docs/content/Text.md +0 -6
  15. package/docs/content/{ActionList2.mdx → drafts/ActionList2.mdx} +5 -9
  16. package/docs/content/drafts/ActionMenu2.mdx +251 -0
  17. package/docs/content/system-props.mdx +1 -1
  18. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +9 -1
  19. package/lib/ActionList2/Divider.d.ts +3 -2
  20. package/lib/ActionList2/Divider.js +10 -5
  21. package/lib/ActionList2/Item.js +21 -5
  22. package/lib/ActionList2/List.js +11 -1
  23. package/lib/ActionList2/MenuContext.d.ts +10 -0
  24. package/lib/ActionList2/MenuContext.js +15 -0
  25. package/lib/ActionList2/Selection.js +11 -0
  26. package/lib/ActionList2/index.d.ts +1 -2
  27. package/lib/ActionMenu2.d.ts +310 -0
  28. package/lib/ActionMenu2.js +91 -0
  29. package/lib/Avatar.d.ts +1 -2
  30. package/lib/Avatar.js +1 -1
  31. package/lib/BranchName.d.ts +1 -2
  32. package/lib/BranchName.js +1 -1
  33. package/lib/Details.d.ts +1 -2
  34. package/lib/Details.js +1 -3
  35. package/lib/Dropdown.d.ts +2 -66
  36. package/lib/Heading.d.ts +1 -2
  37. package/lib/Heading.js +1 -6
  38. package/lib/ProgressBar.d.ts +16 -11
  39. package/lib/ProgressBar.js +6 -10
  40. package/lib/Spinner.d.ts +1 -2
  41. package/lib/Spinner.js +1 -3
  42. package/lib/__tests__/Avatar.test.js +4 -2
  43. package/lib/__tests__/Avatar.types.test.d.ts +3 -0
  44. package/lib/__tests__/Avatar.types.test.js +31 -0
  45. package/lib/__tests__/BranchName.types.test.d.ts +3 -0
  46. package/lib/__tests__/BranchName.types.test.js +28 -0
  47. package/lib/__tests__/Details.types.test.d.ts +3 -0
  48. package/lib/__tests__/Details.types.test.js +28 -0
  49. package/lib/__tests__/Heading.test.js +63 -30
  50. package/lib/__tests__/Heading.types.test.d.ts +3 -0
  51. package/lib/__tests__/Heading.types.test.js +28 -0
  52. package/lib/drafts.d.ts +1 -0
  53. package/lib/drafts.js +13 -0
  54. package/lib/stories/ActionMenu2.stories.js +433 -0
  55. package/lib-esm/ActionList2/Divider.d.ts +3 -2
  56. package/lib-esm/ActionList2/Divider.js +8 -5
  57. package/lib-esm/ActionList2/Item.js +19 -5
  58. package/lib-esm/ActionList2/List.js +9 -1
  59. package/lib-esm/ActionList2/MenuContext.d.ts +10 -0
  60. package/lib-esm/ActionList2/MenuContext.js +3 -0
  61. package/lib-esm/ActionList2/Selection.js +9 -0
  62. package/lib-esm/ActionList2/index.d.ts +1 -2
  63. package/lib-esm/ActionMenu2.d.ts +310 -0
  64. package/lib-esm/ActionMenu2.js +67 -0
  65. package/lib-esm/Avatar.d.ts +1 -2
  66. package/lib-esm/Avatar.js +2 -2
  67. package/lib-esm/BranchName.d.ts +1 -2
  68. package/lib-esm/BranchName.js +2 -2
  69. package/lib-esm/Details.d.ts +1 -2
  70. package/lib-esm/Details.js +1 -2
  71. package/lib-esm/Dropdown.d.ts +2 -66
  72. package/lib-esm/Heading.d.ts +1 -2
  73. package/lib-esm/Heading.js +2 -6
  74. package/lib-esm/ProgressBar.d.ts +16 -11
  75. package/lib-esm/ProgressBar.js +7 -11
  76. package/lib-esm/Spinner.d.ts +1 -2
  77. package/lib-esm/Spinner.js +1 -2
  78. package/lib-esm/__tests__/Avatar.test.js +4 -2
  79. package/lib-esm/__tests__/Avatar.types.test.d.ts +3 -0
  80. package/lib-esm/__tests__/Avatar.types.test.js +16 -0
  81. package/lib-esm/__tests__/BranchName.types.test.d.ts +3 -0
  82. package/lib-esm/__tests__/BranchName.types.test.js +13 -0
  83. package/lib-esm/__tests__/Details.types.test.d.ts +3 -0
  84. package/lib-esm/__tests__/Details.types.test.js +13 -0
  85. package/lib-esm/__tests__/Heading.test.js +62 -30
  86. package/lib-esm/__tests__/Heading.types.test.d.ts +3 -0
  87. package/lib-esm/__tests__/Heading.types.test.js +13 -0
  88. package/lib-esm/drafts.d.ts +1 -0
  89. package/lib-esm/drafts.js +2 -1
  90. package/lib-esm/stories/ActionMenu2.stories.js +376 -0
  91. package/package-lock.json +294 -247
  92. package/package.json +3 -1
  93. package/script/component-status-project/build.ts +100 -0
  94. package/script/component-status-project/deploy.rb +142 -0
  95. package/src/ActionList2/Divider.tsx +13 -8
  96. package/src/ActionList2/Item.tsx +13 -3
  97. package/src/ActionList2/List.tsx +6 -2
  98. package/src/ActionList2/MenuContext.tsx +6 -0
  99. package/src/ActionList2/Selection.tsx +9 -0
  100. package/src/ActionMenu2.tsx +94 -0
  101. package/src/Avatar.tsx +2 -4
  102. package/src/BranchName.tsx +3 -3
  103. package/src/Details.tsx +1 -5
  104. package/src/Heading.tsx +2 -9
  105. package/src/ProgressBar.tsx +11 -10
  106. package/src/Spinner.tsx +1 -3
  107. package/src/__tests__/Avatar.test.tsx +1 -1
  108. package/src/__tests__/Avatar.types.test.tsx +11 -0
  109. package/src/__tests__/BranchName.types.test.tsx +11 -0
  110. package/src/__tests__/Details.types.test.tsx +11 -0
  111. package/src/__tests__/Heading.test.tsx +71 -25
  112. package/src/__tests__/Heading.types.test.tsx +11 -0
  113. package/src/drafts.ts +1 -0
  114. package/src/stories/ActionMenu2.stories.tsx +551 -0
  115. package/stats.html +1 -1
  116. package/tsconfig.build.json +1 -1
  117. package/tsconfig.json +1 -1
package/src/Spinner.tsx CHANGED
@@ -1,6 +1,5 @@
1
1
  import React from 'react'
2
2
  import styled from 'styled-components'
3
- import {COMMON, SystemCommonProps} from './constants'
4
3
  import sx, {SxProp} from './sx'
5
4
  import {ComponentProps} from './utils/types'
6
5
 
@@ -40,7 +39,7 @@ function Spinner({size: sizeKey = 'medium', ...props}: SpinnerInternalProps) {
40
39
  )
41
40
  }
42
41
 
43
- const StyledSpinner = styled(Spinner)<SystemCommonProps & SxProp>`
42
+ const StyledSpinner = styled(Spinner)<SxProp>`
44
43
  @keyframes rotate-keyframes {
45
44
  100% {
46
45
  transform: rotate(360deg);
@@ -49,7 +48,6 @@ const StyledSpinner = styled(Spinner)<SystemCommonProps & SxProp>`
49
48
 
50
49
  animation: rotate-keyframes 1s linear infinite;
51
50
 
52
- ${COMMON}
53
51
  ${sx}
54
52
  `
55
53
 
@@ -39,6 +39,6 @@ describe('Avatar', () => {
39
39
  })
40
40
 
41
41
  it('respects margin props', () => {
42
- expect(render(<Avatar m={2} src="primer.png" alt="" />)).toHaveStyleRule('margin', px(theme.space[2]))
42
+ expect(render(<Avatar src="primer.png" alt="" sx={{m: 2}} />)).toHaveStyleRule('margin', px(theme.space[2]))
43
43
  })
44
44
  })
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+ import Avatar from '../Avatar'
3
+
4
+ export function shouldAcceptCallWithNoProps() {
5
+ return <Avatar src="https://avatars.githubusercontent.com/primer" />
6
+ }
7
+
8
+ export function shouldNotAcceptSystemProps() {
9
+ // @ts-expect-error system props should not be accepted
10
+ return <Avatar src="https://avatars.githubusercontent.com/primer" backgroundColor="thistle" />
11
+ }
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+ import BranchName from '../BranchName'
3
+
4
+ export function shouldAcceptCallWithNoProps() {
5
+ return <BranchName />
6
+ }
7
+
8
+ export function shouldNotAcceptSystemProps() {
9
+ // @ts-expect-error system props should not be accepted
10
+ return <BranchName backgroundColor="thistle" />
11
+ }
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+ import Details from '../Details'
3
+
4
+ export function shouldAcceptCallWithNoProps() {
5
+ return <Details />
6
+ }
7
+
8
+ export function shouldNotAcceptSystemProps() {
9
+ // @ts-expect-error system props should not be accepted
10
+ return <Details backgroundColor="thistle" />
11
+ }
@@ -4,6 +4,7 @@ import {render, behavesAsComponent, checkExports} from '../utils/testing'
4
4
  import {render as HTMLRender, cleanup} from '@testing-library/react'
5
5
  import {axe, toHaveNoViolations} from 'jest-axe'
6
6
  import 'babel-polyfill'
7
+ import ThemeProvider from '../ThemeProvider'
7
8
  expect.extend(toHaveNoViolations)
8
9
 
9
10
  const theme = {
@@ -48,44 +49,89 @@ describe('Heading', () => {
48
49
  })
49
50
 
50
51
  it('respects fontWeight', () => {
51
- expect(render(<Heading fontWeight="bold" theme={theme} />)).toHaveStyleRule('font-weight', theme.fontWeights.bold)
52
- expect(render(<Heading fontWeight="normal" theme={theme} />)).toHaveStyleRule(
53
- 'font-weight',
54
- theme.fontWeights.normal
55
- )
56
- expect(render(<Heading fontWeight="semibold" theme={theme} />)).toHaveStyleRule(
57
- 'font-weight',
58
- theme.fontWeights.semibold
59
- )
60
- expect(render(<Heading fontWeight="light" theme={theme} />)).toHaveStyleRule('font-weight', theme.fontWeights.light)
52
+ expect(
53
+ render(
54
+ <ThemeProvider theme={theme}>
55
+ <Heading sx={{fontWeight: 'bold'}} />
56
+ </ThemeProvider>
57
+ )
58
+ ).toHaveStyleRule('font-weight', theme.fontWeights.bold)
59
+ expect(
60
+ render(
61
+ <ThemeProvider theme={theme}>
62
+ <Heading sx={{fontWeight: 'normal'}} />
63
+ </ThemeProvider>
64
+ )
65
+ ).toHaveStyleRule('font-weight', theme.fontWeights.normal)
66
+ expect(
67
+ render(
68
+ <ThemeProvider theme={theme}>
69
+ <Heading sx={{fontWeight: 'semibold'}} />
70
+ </ThemeProvider>
71
+ )
72
+ ).toHaveStyleRule('font-weight', theme.fontWeights.semibold)
73
+ expect(
74
+ render(
75
+ <ThemeProvider theme={theme}>
76
+ <Heading sx={{fontWeight: 'light'}} />
77
+ </ThemeProvider>
78
+ )
79
+ ).toHaveStyleRule('font-weight', theme.fontWeights.light)
61
80
  })
62
81
 
63
82
  it('respects lineHeight', () => {
64
- expect(render(<Heading lineHeight="normal" theme={theme} />)).toHaveStyleRule(
65
- 'line-height',
66
- String(theme.lineHeights.normal)
67
- )
68
- expect(render(<Heading lineHeight="condensed" theme={theme} />)).toHaveStyleRule(
69
- 'line-height',
70
- String(theme.lineHeights.condensed)
71
- )
72
- expect(render(<Heading lineHeight="condensedUltra" theme={theme} />)).toHaveStyleRule(
73
- 'line-height',
74
- String(theme.lineHeights.condensedUltra)
75
- )
83
+ expect(
84
+ render(
85
+ <ThemeProvider theme={theme}>
86
+ <Heading sx={{lineHeight: 'normal'}} />
87
+ </ThemeProvider>
88
+ )
89
+ ).toHaveStyleRule('line-height', String(theme.lineHeights.normal))
90
+ expect(
91
+ render(
92
+ <ThemeProvider theme={theme}>
93
+ <Heading sx={{lineHeight: 'condensed'}} />
94
+ </ThemeProvider>
95
+ )
96
+ ).toHaveStyleRule('line-height', String(theme.lineHeights.condensed))
97
+ expect(
98
+ render(
99
+ <ThemeProvider theme={theme}>
100
+ <Heading sx={{lineHeight: 'condensedUltra'}} />
101
+ </ThemeProvider>
102
+ )
103
+ ).toHaveStyleRule('line-height', String(theme.lineHeights.condensedUltra))
76
104
  })
77
105
 
78
106
  it('respects fontFamily="mono"', () => {
79
- expect(render(<Heading fontFamily="mono" theme={theme} />)).toHaveStyleRule('font-family', theme.fonts.mono)
107
+ expect(
108
+ render(
109
+ <ThemeProvider theme={theme}>
110
+ <Heading sx={{fontFamily: 'mono'}} />
111
+ </ThemeProvider>
112
+ )
113
+ ).toHaveStyleRule('font-family', theme.fonts.mono)
80
114
  })
81
115
 
82
116
  it('renders fontSize', () => {
83
117
  for (const fontSize of theme.fontSizes) {
84
- expect(render(<Heading fontSize={fontSize} theme={theme} />)).toHaveStyleRule('font-size', `${fontSize}`)
118
+ expect(
119
+ render(
120
+ <ThemeProvider theme={theme}>
121
+ <Heading sx={{fontSize}} />
122
+ </ThemeProvider>
123
+ )
124
+ ).toHaveStyleRule('font-size', `${fontSize}`)
85
125
  }
86
126
  })
87
127
 
88
128
  it('respects the "fontStyle" prop', () => {
89
- expect(render(<Heading fontStyle="italic" />)).toHaveStyleRule('font-style', 'italic')
129
+ expect(
130
+ render(
131
+ <ThemeProvider theme={theme}>
132
+ <Heading sx={{fontStyle: 'italic'}} />
133
+ </ThemeProvider>
134
+ )
135
+ ).toHaveStyleRule('font-style', 'italic')
90
136
  })
91
137
  })
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+ import Heading from '../Heading'
3
+
4
+ export function shouldAcceptCallWithNoProps() {
5
+ return <Heading />
6
+ }
7
+
8
+ export function shouldNotAcceptSystemProps() {
9
+ // @ts-expect-error system props should not be accepted
10
+ return <Heading backgroundColor="thistle" />
11
+ }
package/src/drafts.ts CHANGED
@@ -8,3 +8,4 @@
8
8
  // Components
9
9
  export * from './ActionList2'
10
10
  export * from './NewButton'
11
+ export * from './ActionMenu2'