@primer/css 0.0.0-20220107003629 → 0.0.0-20220112181257

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 +5 -1
  2. package/actionlist/action-list-item.scss +18 -65
  3. package/base/base.scss +55 -2
  4. package/base/normalize.scss +12 -52
  5. package/buttons/button.scss +0 -25
  6. package/buttons/misc.scss +12 -19
  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 +22 -22
  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 +0 -2
  74. package/forms/form-control.scss +0 -8
  75. package/forms/form-group.scss +38 -13
  76. package/forms/input-group.scss +8 -0
  77. package/marketing/buttons/button.scss +3 -30
  78. package/marketing/links/link.scss +1 -4
  79. package/navigation/menu.scss +6 -8
  80. package/navigation/sidenav.scss +1 -10
  81. package/navigation/tabnav.scss +6 -2
  82. package/package.json +1 -1
  83. package/support/mixins/misc.scss +9 -0
  84. package/toasts/toasts.scss +7 -4
  85. package/utilities/details.scss +15 -3
@@ -82,12 +82,10 @@
82
82
  text-overflow: ellipsis;
83
83
  white-space: nowrap;
84
84
 
85
- &:focus,
86
85
  &:hover {
87
86
  color: var(--color-fg-on-emphasis);
88
87
  text-decoration: none;
89
88
  background-color: var(--color-accent-emphasis);
90
- outline: none;
91
89
 
92
90
  > .octicon {
93
91
  color: inherit;
@@ -29,16 +29,8 @@ 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;
33
32
  box-shadow: var(--color-primer-shadow-inset);
34
33
 
35
- &.focus,
36
- &:focus {
37
- border-color: var(--color-accent-emphasis);
38
- outline: none;
39
- box-shadow: var(--color-primer-shadow-focus);
40
- }
41
-
42
34
  &[disabled] {
43
35
  color: var(--color-primer-fg-disabled);
44
36
  background-color: var(--color-input-disabled-bg);
@@ -26,11 +26,17 @@
26
26
  background-color: var(--color-canvas-default);
27
27
  }
28
28
 
29
- &.shorter { width: 130px; }
29
+ &.shorter {
30
+ width: 130px;
31
+ }
30
32
 
31
- &.short { width: 250px; }
33
+ &.short {
34
+ width: 250px;
35
+ }
32
36
 
33
- &.long { width: 100%; }
37
+ &.long {
38
+ width: 100%;
39
+ }
34
40
  }
35
41
 
36
42
  // Textarea
@@ -81,9 +87,13 @@
81
87
  h4 {
82
88
  margin: $spacer-1 0 0;
83
89
 
84
- &.is-error { color: var(--color-danger-fg); }
90
+ &.is-error {
91
+ color: var(--color-danger-fg);
92
+ }
85
93
 
86
- &.is-success { color: var(--color-success-fg); }
94
+ &.is-success {
95
+ color: var(--color-success-fg);
96
+ }
87
97
 
88
98
  + .note {
89
99
  margin-top: 0;
@@ -195,13 +205,18 @@
195
205
  background-image: linear-gradient(var(--color-success-subtle), var(--color-success-subtle));
196
206
  border-color: var(--color-success-muted);
197
207
 
198
- &::after { border-bottom-color: var(--color-success-subtle); }
199
- &::before { border-bottom-color: var(--color-success-muted); }
208
+ &::after {
209
+ border-bottom-color: var(--color-success-subtle);
210
+ }
211
+
212
+ &::before {
213
+ border-bottom-color: var(--color-success-muted);
214
+ }
200
215
  }
201
216
  }
202
217
 
203
218
  &.warn {
204
- .form-control {
219
+ .form-control:not(:focus, :focus-visible) {
205
220
  border-color: var(--color-attention-emphasis);
206
221
  }
207
222
 
@@ -211,13 +226,18 @@
211
226
  background-image: linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle));
212
227
  border-color: var(--color-attention-muted);
213
228
 
214
- &::after { border-bottom-color: var(--color-attention-subtle); }
215
- &::before { border-bottom-color: var(--color-attention-muted); }
229
+ &::after {
230
+ border-bottom-color: var(--color-attention-subtle);
231
+ }
232
+
233
+ &::before {
234
+ border-bottom-color: var(--color-attention-muted);
235
+ }
216
236
  }
217
237
  }
218
238
 
219
239
  &.errored {
220
- .form-control {
240
+ .form-control:not(:focus, :focus-visible) {
221
241
  border-color: var(--color-danger-emphasis);
222
242
  }
223
243
 
@@ -231,8 +251,13 @@
231
251
  background-image: linear-gradient(var(--color-danger-subtle), var(--color-danger-subtle));
232
252
  border-color: var(--color-danger-muted);
233
253
 
234
- &::after { border-bottom-color: var(--color-danger-subtle); }
235
- &::before { border-bottom-color: var(--color-danger-muted); }
254
+ &::after {
255
+ border-bottom-color: var(--color-danger-subtle);
256
+ }
257
+
258
+ &::before {
259
+ border-bottom-color: var(--color-danger-muted);
260
+ }
236
261
  }
237
262
  }
238
263
  }
@@ -18,6 +18,14 @@
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
+ }
21
29
  }
22
30
 
23
31
  .input-group .form-control,
@@ -13,7 +13,8 @@
13
13
  white-space: nowrap;
14
14
  vertical-align: middle;
15
15
  user-select: none;
16
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%), var(--color-mktg-btn-bg) !important;
16
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%),
17
+ var(--color-mktg-btn-bg) !important;
17
18
  border: 0;
18
19
  // stylelint-disable-next-line primer/borders
19
20
  border-radius: 0.375rem;
@@ -42,29 +43,16 @@
42
43
  box-shadow: var(--color-mktg-btn-shadow-hover) !important;
43
44
  }
44
45
 
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
-
51
46
  &:hover,
52
47
  &:focus,
48
+ &:focus-visible,
53
49
  &.focus {
54
50
  &::before {
55
51
  opacity: 1;
56
52
  }
57
-
58
- &:disabled {
59
- box-shadow: none !important;
60
- }
61
53
  }
62
54
 
63
55
  &:active {
64
- outline: none;
65
- // stylelint-disable-next-line primer/box-shadow
66
- box-shadow: 0 0 0 transparent;
67
-
68
56
  &::before {
69
57
  opacity: 0.5 !important;
70
58
  }
@@ -91,11 +79,6 @@
91
79
  box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
92
80
  }
93
81
 
94
- &:focus,
95
- &.focus {
96
- box-shadow: var(--color-mktg-btn-shadow-hover-muted), var(--color-mktg-btn-shadow-focus) !important;
97
- }
98
-
99
82
  &:active {
100
83
  // stylelint-disable-next-line primer/box-shadow
101
84
  box-shadow: var(--color-fg-default) 0 0 0 3px inset !important;
@@ -119,11 +102,6 @@
119
102
  &:hover {
120
103
  box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
121
104
  }
122
-
123
- &:focus,
124
- .focus {
125
- box-shadow: var(--color-mktg-btn-shadow-hover-muted), var(--color-mktg-btn-shadow-focus) !important;
126
- }
127
105
  }
128
106
 
129
107
  .btn-signup-mktg {
@@ -136,11 +114,6 @@
136
114
  // stylelint-disable-next-line primer/colors
137
115
  background: linear-gradient(180deg, rgba(52, 183, 89, 0.15) 0%, rgba(46, 164, 79, 0) 100%) !important;
138
116
  }
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
- }
144
117
  }
145
118
 
146
119
  // Size modifiers
@@ -6,10 +6,6 @@
6
6
  text-decoration: none;
7
7
  }
8
8
 
9
- &:active {
10
- outline: none;
11
- }
12
-
13
9
  &::after,
14
10
  &.link-emphasis-mktg::before {
15
11
  position: absolute;
@@ -36,6 +32,7 @@
36
32
 
37
33
  &:hover,
38
34
  &:focus,
35
+ &:focus-visible,
39
36
  &:active {
40
37
  &::after {
41
38
  transform: scaleX(1);
@@ -22,7 +22,9 @@
22
22
  border-top-left-radius: $border-radius;
23
23
  border-top-right-radius: $border-radius;
24
24
 
25
- &::before { border-top-left-radius: $border-radius; }
25
+ &::before {
26
+ border-top-left-radius: $border-radius;
27
+ }
26
28
  }
27
29
 
28
30
  &:last-child {
@@ -30,13 +32,9 @@
30
32
  border-bottom-right-radius: $border-radius;
31
33
  border-bottom-left-radius: $border-radius;
32
34
 
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);
35
+ &::before {
36
+ border-bottom-left-radius: $border-radius;
37
+ }
40
38
  }
41
39
 
42
40
  &:hover {
@@ -43,16 +43,9 @@
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
-
52
46
  .SideNav-item:hover {
53
47
  text-decoration: none;
54
48
  background-color: var(--color-neutral-subtle);
55
- outline: none;
56
49
  }
57
50
 
58
51
  .SideNav-item:active {
@@ -94,11 +87,9 @@
94
87
  border: 0;
95
88
  }
96
89
 
97
- .SideNav-subItem:hover,
98
- .SideNav-subItem:focus {
90
+ .SideNav-subItem:hover {
99
91
  color: var(--color-fg-default);
100
92
  text-decoration: none;
101
- outline: none;
102
93
  }
103
94
 
104
95
  .SideNav-subItem[aria-current]:not([aria-current='false']),
@@ -40,13 +40,17 @@
40
40
  }
41
41
  }
42
42
 
43
- &:hover,
44
- &:focus {
43
+ &:hover {
45
44
  color: var(--color-fg-default);
46
45
  text-decoration: none;
47
46
  transition-duration: 0.1s;
48
47
  }
49
48
 
49
+ &:focus,
50
+ &:focus-visible {
51
+ outline-offset: -2px;
52
+ }
53
+
50
54
  &:active {
51
55
  color: var(--color-fg-muted);
52
56
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/css",
3
- "version": "0.0.0-20220107003629",
3
+ "version": "0.0.0-20220112181257",
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,3 +24,12 @@
24
24
  background-color: $border;
25
25
  }
26
26
  }
27
+
28
+ // global focus styles
29
+
30
+ @mixin focusOutline {
31
+ position: relative;
32
+ z-index: 1;
33
+ outline: 2px solid var(--color-accent-fg);
34
+ outline-offset: 2px;
35
+ }
@@ -40,9 +40,7 @@
40
40
  background-color: transparent;
41
41
  border: 0;
42
42
 
43
- &:focus,
44
43
  &:hover {
45
- outline: none;
46
44
  opacity: 0.7;
47
45
  }
48
46
 
@@ -119,6 +117,11 @@
119
117
  }
120
118
 
121
119
  @keyframes Toast--spinner {
122
- from { transform: rotate(0deg); }
123
- to { transform: rotate(360deg); }
120
+ from {
121
+ transform: rotate(0deg);
122
+ }
123
+
124
+ to {
125
+ transform: rotate(360deg);
126
+ }
124
127
  }
@@ -20,9 +20,21 @@
20
20
 
21
21
  .details-reset {
22
22
  // Remove marker added by the display: list-item browser default
23
- > summary { list-style: none; }
23
+ > summary {
24
+ list-style: none;
25
+ }
24
26
  // Remove marker added by details polyfill
25
- > summary::before { display: none; }
27
+ > summary::before {
28
+ display: none;
29
+ }
26
30
  // Remove marker added by Chrome
27
- > summary::-webkit-details-marker { display: none; }
31
+ > summary::-webkit-details-marker {
32
+ display: none;
33
+ }
34
+ }
35
+
36
+ .details-overlay > summary {
37
+ &:focus {
38
+ @include focusOutline;
39
+ }
28
40
  }