@primer/css 0.0.0-20220114223421 → 0.0.0-20220118010009

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 (85) hide show
  1. package/CHANGELOG.md +6 -4
  2. package/actionlist/action-list-item.scss +39 -17
  3. package/base/base.scss +2 -65
  4. package/base/normalize.scss +52 -12
  5. package/buttons/button.scss +25 -0
  6. package/buttons/misc.scss +19 -12
  7. package/dist/actionlist.css +1 -1
  8. package/dist/actionlist.css.map +1 -1
  9. package/dist/alerts.css.map +1 -1
  10. package/dist/autocomplete.css.map +1 -1
  11. package/dist/avatars.css.map +1 -1
  12. package/dist/base.css +1 -1
  13. package/dist/base.css.map +1 -1
  14. package/dist/blankslate.css.map +1 -1
  15. package/dist/box.css.map +1 -1
  16. package/dist/branch-name.css.map +1 -1
  17. package/dist/breadcrumb.css.map +1 -1
  18. package/dist/buttons.css +1 -1
  19. package/dist/buttons.css.map +1 -1
  20. package/dist/core.css +1 -1
  21. package/dist/core.css.map +1 -1
  22. package/dist/dropdown.css +1 -1
  23. package/dist/dropdown.css.map +1 -1
  24. package/dist/forms.css +1 -1
  25. package/dist/forms.css.map +1 -1
  26. package/dist/header.css.map +1 -1
  27. package/dist/labels.css.map +1 -1
  28. package/dist/layout.css.map +1 -1
  29. package/dist/links.css.map +1 -1
  30. package/dist/loaders.css.map +1 -1
  31. package/dist/markdown.css.map +1 -1
  32. package/dist/marketing-buttons.css +1 -1
  33. package/dist/marketing-buttons.css.map +1 -1
  34. package/dist/marketing-links.css +1 -1
  35. package/dist/marketing-links.css.map +1 -1
  36. package/dist/marketing-type.css.map +1 -1
  37. package/dist/marketing-utilities.css.map +1 -1
  38. package/dist/marketing.css +1 -1
  39. package/dist/marketing.css.map +1 -1
  40. package/dist/meta.json +66 -66
  41. package/dist/navigation.css +1 -1
  42. package/dist/navigation.css.map +1 -1
  43. package/dist/pagination.css.map +1 -1
  44. package/dist/popover.css.map +1 -1
  45. package/dist/primer.css +3 -3
  46. package/dist/primer.css.map +1 -1
  47. package/dist/product.css +1 -1
  48. package/dist/product.css.map +1 -1
  49. package/dist/progress.css.map +1 -1
  50. package/dist/select-menu.css.map +1 -1
  51. package/dist/stats/actionlist.json +1 -1
  52. package/dist/stats/base.json +1 -1
  53. package/dist/stats/buttons.json +1 -1
  54. package/dist/stats/core.json +1 -1
  55. package/dist/stats/dropdown.json +1 -1
  56. package/dist/stats/forms.json +1 -1
  57. package/dist/stats/marketing-buttons.json +1 -1
  58. package/dist/stats/marketing-links.json +1 -1
  59. package/dist/stats/marketing.json +1 -1
  60. package/dist/stats/navigation.json +1 -1
  61. package/dist/stats/primer.json +1 -1
  62. package/dist/stats/product.json +1 -1
  63. package/dist/stats/toasts.json +1 -1
  64. package/dist/stats/utilities.json +1 -1
  65. package/dist/subhead.css.map +1 -1
  66. package/dist/timeline.css.map +1 -1
  67. package/dist/toasts.css +1 -1
  68. package/dist/toasts.css.map +1 -1
  69. package/dist/tooltips.css.map +1 -1
  70. package/dist/truncate.css.map +1 -1
  71. package/dist/utilities.css +1 -1
  72. package/dist/utilities.css.map +1 -1
  73. package/dropdown/dropdown.scss +2 -0
  74. package/forms/form-control.scss +8 -0
  75. package/forms/form-group.scss +13 -38
  76. package/forms/input-group.scss +0 -8
  77. package/marketing/buttons/button.scss +30 -4
  78. package/marketing/links/link.scss +4 -1
  79. package/navigation/menu.scss +8 -6
  80. package/navigation/sidenav.scss +10 -1
  81. package/navigation/tabnav.scss +2 -6
  82. package/package.json +3 -1
  83. package/support/mixins/misc.scss +0 -7
  84. package/toasts/toasts.scss +4 -7
  85. package/utilities/details.scss +3 -40
@@ -82,10 +82,12 @@
82
82
  text-overflow: ellipsis;
83
83
  white-space: nowrap;
84
84
 
85
+ &:focus,
85
86
  &:hover {
86
87
  color: var(--color-fg-on-emphasis);
87
88
  text-decoration: none;
88
89
  background-color: var(--color-accent-emphasis);
90
+ outline: none;
89
91
 
90
92
  > .octicon {
91
93
  color: inherit;
@@ -29,8 +29,16 @@ label {
29
29
  background-position: right 8px center; // For form validation. This keeps images 8px from right and centered vertically.
30
30
  border: $border-width $border-style var(--color-border-default);
31
31
  border-radius: $border-radius;
32
+ outline: none;
32
33
  box-shadow: var(--color-primer-shadow-inset);
33
34
 
35
+ &.focus,
36
+ &:focus {
37
+ border-color: var(--color-accent-emphasis);
38
+ outline: none;
39
+ box-shadow: var(--color-primer-shadow-focus);
40
+ }
41
+
34
42
  &[disabled] {
35
43
  color: var(--color-primer-fg-disabled);
36
44
  background-color: var(--color-input-disabled-bg);
@@ -26,17 +26,11 @@
26
26
  background-color: var(--color-canvas-default);
27
27
  }
28
28
 
29
- &.shorter {
30
- width: 130px;
31
- }
29
+ &.shorter { width: 130px; }
32
30
 
33
- &.short {
34
- width: 250px;
35
- }
31
+ &.short { width: 250px; }
36
32
 
37
- &.long {
38
- width: 100%;
39
- }
33
+ &.long { width: 100%; }
40
34
  }
41
35
 
42
36
  // Textarea
@@ -87,13 +81,9 @@
87
81
  h4 {
88
82
  margin: $spacer-1 0 0;
89
83
 
90
- &.is-error {
91
- color: var(--color-danger-fg);
92
- }
84
+ &.is-error { color: var(--color-danger-fg); }
93
85
 
94
- &.is-success {
95
- color: var(--color-success-fg);
96
- }
86
+ &.is-success { color: var(--color-success-fg); }
97
87
 
98
88
  + .note {
99
89
  margin-top: 0;
@@ -205,18 +195,13 @@
205
195
  background-image: linear-gradient(var(--color-success-subtle), var(--color-success-subtle));
206
196
  border-color: var(--color-success-muted);
207
197
 
208
- &::after {
209
- border-bottom-color: var(--color-success-subtle);
210
- }
211
-
212
- &::before {
213
- border-bottom-color: var(--color-success-muted);
214
- }
198
+ &::after { border-bottom-color: var(--color-success-subtle); }
199
+ &::before { border-bottom-color: var(--color-success-muted); }
215
200
  }
216
201
  }
217
202
 
218
203
  &.warn {
219
- .form-control:not(:focus, :focus-visible) {
204
+ .form-control {
220
205
  border-color: var(--color-attention-emphasis);
221
206
  }
222
207
 
@@ -226,18 +211,13 @@
226
211
  background-image: linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle));
227
212
  border-color: var(--color-attention-muted);
228
213
 
229
- &::after {
230
- border-bottom-color: var(--color-attention-subtle);
231
- }
232
-
233
- &::before {
234
- border-bottom-color: var(--color-attention-muted);
235
- }
214
+ &::after { border-bottom-color: var(--color-attention-subtle); }
215
+ &::before { border-bottom-color: var(--color-attention-muted); }
236
216
  }
237
217
  }
238
218
 
239
219
  &.errored {
240
- .form-control:not(:focus, :focus-visible) {
220
+ .form-control {
241
221
  border-color: var(--color-danger-emphasis);
242
222
  }
243
223
 
@@ -251,13 +231,8 @@
251
231
  background-image: linear-gradient(var(--color-danger-subtle), var(--color-danger-subtle));
252
232
  border-color: var(--color-danger-muted);
253
233
 
254
- &::after {
255
- border-bottom-color: var(--color-danger-subtle);
256
- }
257
-
258
- &::before {
259
- border-bottom-color: var(--color-danger-muted);
260
- }
234
+ &::after { border-bottom-color: var(--color-danger-subtle); }
235
+ &::before { border-bottom-color: var(--color-danger-muted); }
261
236
  }
262
237
  }
263
238
  }
@@ -18,14 +18,6 @@
18
18
  &.inline {
19
19
  display: inline-table;
20
20
  }
21
-
22
- // within input group, if button exists change focus styles to match input (no offset)
23
- &:focus-within {
24
- // stylelint-disable-next-line selector-max-type
25
- button {
26
- outline-offset: 0;
27
- }
28
- }
29
21
  }
30
22
 
31
23
  .input-group .form-control,
@@ -13,9 +13,7 @@
13
13
  white-space: nowrap;
14
14
  vertical-align: middle;
15
15
  user-select: none;
16
- background:
17
- linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%),
18
- var(--color-mktg-btn-bg) !important;
16
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%), var(--color-mktg-btn-bg) !important;
19
17
  border: 0;
20
18
  // stylelint-disable-next-line primer/borders
21
19
  border-radius: 0.375rem;
@@ -44,16 +42,29 @@
44
42
  box-shadow: var(--color-mktg-btn-shadow-hover) !important;
45
43
  }
46
44
 
45
+ &:focus,
46
+ &.focus {
47
+ outline: 0;
48
+ box-shadow: var(--color-mktg-btn-shadow-focus), var(--color-mktg-btn-shadow-hover) !important;
49
+ }
50
+
47
51
  &:hover,
48
52
  &:focus,
49
- &:focus-visible,
50
53
  &.focus {
51
54
  &::before {
52
55
  opacity: 1;
53
56
  }
57
+
58
+ &:disabled {
59
+ box-shadow: none !important;
60
+ }
54
61
  }
55
62
 
56
63
  &:active {
64
+ outline: none;
65
+ // stylelint-disable-next-line primer/box-shadow
66
+ box-shadow: 0 0 0 transparent;
67
+
57
68
  &::before {
58
69
  opacity: 0.5 !important;
59
70
  }
@@ -80,6 +91,11 @@
80
91
  box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
81
92
  }
82
93
 
94
+ &:focus,
95
+ &.focus {
96
+ box-shadow: var(--color-mktg-btn-shadow-hover-muted), var(--color-mktg-btn-shadow-focus) !important;
97
+ }
98
+
83
99
  &:active {
84
100
  // stylelint-disable-next-line primer/box-shadow
85
101
  box-shadow: var(--color-fg-default) 0 0 0 3px inset !important;
@@ -103,6 +119,11 @@
103
119
  &:hover {
104
120
  box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
105
121
  }
122
+
123
+ &:focus,
124
+ .focus {
125
+ box-shadow: var(--color-mktg-btn-shadow-hover-muted), var(--color-mktg-btn-shadow-focus) !important;
126
+ }
106
127
  }
107
128
 
108
129
  .btn-signup-mktg {
@@ -115,6 +136,11 @@
115
136
  // stylelint-disable-next-line primer/colors
116
137
  background: linear-gradient(180deg, rgba(52, 183, 89, 0.15) 0%, rgba(46, 164, 79, 0) 100%) !important;
117
138
  }
139
+
140
+ &:focus {
141
+ // stylelint-disable-next-line primer/box-shadow
142
+ box-shadow: rgba(46, 164, 79, 0.45) 0 0 0 4px !important;
143
+ }
118
144
  }
119
145
 
120
146
  // Size modifiers
@@ -6,6 +6,10 @@
6
6
  text-decoration: none;
7
7
  }
8
8
 
9
+ &:active {
10
+ outline: none;
11
+ }
12
+
9
13
  &::after,
10
14
  &.link-emphasis-mktg::before {
11
15
  position: absolute;
@@ -32,7 +36,6 @@
32
36
 
33
37
  &:hover,
34
38
  &:focus,
35
- &:focus-visible,
36
39
  &:active {
37
40
  &::after {
38
41
  transform: scaleX(1);
@@ -22,9 +22,7 @@
22
22
  border-top-left-radius: $border-radius;
23
23
  border-top-right-radius: $border-radius;
24
24
 
25
- &::before {
26
- border-top-left-radius: $border-radius;
27
- }
25
+ &::before { border-top-left-radius: $border-radius; }
28
26
  }
29
27
 
30
28
  &:last-child {
@@ -32,9 +30,13 @@
32
30
  border-bottom-right-radius: $border-radius;
33
31
  border-bottom-left-radius: $border-radius;
34
32
 
35
- &::before {
36
- border-bottom-left-radius: $border-radius;
37
- }
33
+ &::before { border-bottom-left-radius: $border-radius; }
34
+ }
35
+
36
+ &:focus {
37
+ z-index: 1;
38
+ outline: none;
39
+ box-shadow: var(--color-primer-shadow-focus);
38
40
  }
39
41
 
40
42
  &:hover {
@@ -43,9 +43,16 @@
43
43
 
44
44
  // States
45
45
 
46
+ .SideNav-item:focus {
47
+ z-index: 1;
48
+ outline: none;
49
+ box-shadow: var(--color-primer-shadow-focus);
50
+ }
51
+
46
52
  .SideNav-item:hover {
47
53
  text-decoration: none;
48
54
  background-color: var(--color-neutral-subtle);
55
+ outline: none;
49
56
  }
50
57
 
51
58
  .SideNav-item:active {
@@ -87,9 +94,11 @@
87
94
  border: 0;
88
95
  }
89
96
 
90
- .SideNav-subItem:hover {
97
+ .SideNav-subItem:hover,
98
+ .SideNav-subItem:focus {
91
99
  color: var(--color-fg-default);
92
100
  text-decoration: none;
101
+ outline: none;
93
102
  }
94
103
 
95
104
  .SideNav-subItem[aria-current]:not([aria-current='false']),
@@ -40,17 +40,13 @@
40
40
  }
41
41
  }
42
42
 
43
- &:hover {
43
+ &:hover,
44
+ &:focus {
44
45
  color: var(--color-fg-default);
45
46
  text-decoration: none;
46
47
  transition-duration: 0.1s;
47
48
  }
48
49
 
49
- &:focus,
50
- &:focus-visible {
51
- outline-offset: -6px;
52
- }
53
-
54
50
  &:active {
55
51
  color: var(--color-fg-muted);
56
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/css",
3
- "version": "0.0.0-20220114223421",
3
+ "version": "0.0.0-20220118010009",
4
4
  "description": "The CSS implementation of GitHub's Primer Design System",
5
5
  "homepage": "https://primer.style/css",
6
6
  "author": "GitHub, Inc.",
@@ -24,6 +24,7 @@
24
24
  ],
25
25
  "scripts": {
26
26
  "dist": "script/dist.js",
27
+ "dist:watch": "chokidar \"src/**/*.scss\" -c \"script/dist.js\"",
27
28
  "stylelint": "stylelint --quiet 'src/**/*.scss'",
28
29
  "eslint": "eslint deprecations.js __tests__ script",
29
30
  "prepublishOnly": "script/prepublish",
@@ -44,6 +45,7 @@
44
45
  "@koddsson/postcss-sass": "5.0.0",
45
46
  "@primer/stylelint-config": "12.2.0",
46
47
  "autoprefixer": "10.4.1",
48
+ "chokidar-cli": "3.0.0",
47
49
  "cssstats": "4.0.2",
48
50
  "eslint": "8.6.0",
49
51
  "eslint-plugin-github": "4.3.5",
@@ -24,10 +24,3 @@
24
24
  background-color: $border;
25
25
  }
26
26
  }
27
-
28
- // global focus styles
29
-
30
- @mixin focusOutline {
31
- outline: 2px solid var(--color-accent-fg);
32
- outline-offset: 2px;
33
- }
@@ -40,7 +40,9 @@
40
40
  background-color: transparent;
41
41
  border: 0;
42
42
 
43
+ &:focus,
43
44
  &:hover {
45
+ outline: none;
44
46
  opacity: 0.7;
45
47
  }
46
48
 
@@ -117,11 +119,6 @@
117
119
  }
118
120
 
119
121
  @keyframes Toast--spinner {
120
- from {
121
- transform: rotate(0deg);
122
- }
123
-
124
- to {
125
- transform: rotate(360deg);
126
- }
122
+ from { transform: rotate(0deg); }
123
+ to { transform: rotate(360deg); }
127
124
  }
@@ -20,46 +20,9 @@
20
20
 
21
21
  .details-reset {
22
22
  // Remove marker added by the display: list-item browser default
23
- > summary {
24
- list-style: none;
25
- // fallback :focus state
26
- &:focus {
27
- @include focusOutline;
28
-
29
- // remove fallback :focus if :focus-visible is supported
30
- &:not(:focus-visible) {
31
- outline: solid 1px transparent;
32
- }
33
- }
34
-
35
- // default focus state
36
- &:focus-visible {
37
- @include focusOutline;
38
- }
39
- }
23
+ > summary { list-style: none; }
40
24
  // Remove marker added by details polyfill
41
- > summary::before {
42
- display: none;
43
- }
25
+ > summary::before { display: none; }
44
26
  // Remove marker added by Chrome
45
- > summary::-webkit-details-marker {
46
- display: none;
47
- }
48
- }
49
-
50
- .details-overlay > summary {
51
- // fallback :focus state
52
- &:focus {
53
- @include focusOutline;
54
-
55
- // remove fallback :focus if :focus-visible is supported
56
- &:not(:focus-visible) {
57
- outline: solid 1px transparent;
58
- }
59
- }
60
-
61
- // default focus state
62
- &:focus-visible {
63
- @include focusOutline;
64
- }
27
+ > summary::-webkit-details-marker { display: none; }
65
28
  }