@primer/css 20.0.0-rc.b5fee637 → 20.0.0-rc.c0ed9d90

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 (187) hide show
  1. package/CHANGELOG.md +169 -2
  2. package/CONTRIBUTING.md +6 -4
  3. package/DEVELOP.md +26 -21
  4. package/README.md +2 -2
  5. package/actionlist/action-list-item-divider.scss +8 -2
  6. package/actionlist/action-list-item.scss +214 -130
  7. package/actionlist/action-list-tree.scss +118 -0
  8. package/actionlist/action-list.scss +29 -0
  9. package/actionlist/index.scss +1 -0
  10. package/alerts/flash.scss +6 -2
  11. package/autocomplete/autocomplete.scss +59 -2
  12. package/avatars/avatar-stack.scss +1 -0
  13. package/base/base.scss +64 -3
  14. package/base/index.scss +0 -1
  15. package/base/kbd.scss +0 -1
  16. package/base/normalize.scss +13 -53
  17. package/base/typography-base.scss +3 -2
  18. package/blankslate/blankslate.scss +20 -1
  19. package/blankslate/index.scss +0 -1
  20. package/box/box-overlay.scss +2 -0
  21. package/box/box.scss +0 -3
  22. package/branch-name/branch-name.scss +1 -0
  23. package/breadcrumb/breadcrumb.scss +1 -1
  24. package/buttons/button-group.scss +3 -2
  25. package/buttons/button.scss +64 -36
  26. package/buttons/misc.scss +30 -25
  27. package/color-modes/index.scss +2 -0
  28. package/color-modes/native.scss +12 -0
  29. package/color-modes/themes/dark.scss +0 -1
  30. package/color-modes/themes/dark_colorblind.scss +0 -1
  31. package/color-modes/themes/dark_dimmed.scss +0 -1
  32. package/color-modes/themes/dark_high_contrast.scss +0 -1
  33. package/color-modes/themes/dark_tritanopia.scss +6 -0
  34. package/color-modes/themes/light.scss +0 -1
  35. package/color-modes/themes/light_colorblind.scss +0 -1
  36. package/color-modes/themes/light_high_contrast.scss +0 -1
  37. package/color-modes/themes/light_tritanopia.scss +6 -0
  38. package/dist/actionlist.css +1 -1
  39. package/dist/actionlist.css.map +1 -1
  40. package/dist/alerts.css +1 -1
  41. package/dist/alerts.css.map +1 -1
  42. package/dist/autocomplete.css +1 -1
  43. package/dist/autocomplete.css.map +1 -1
  44. package/dist/avatars.css +1 -1
  45. package/dist/avatars.css.map +1 -1
  46. package/dist/base.css +1 -1
  47. package/dist/base.css.map +1 -1
  48. package/dist/blankslate.css +1 -1
  49. package/dist/blankslate.css.map +1 -1
  50. package/dist/box.css.map +1 -1
  51. package/dist/branch-name.css +1 -1
  52. package/dist/branch-name.css.map +1 -1
  53. package/dist/breadcrumb.css.map +1 -1
  54. package/dist/buttons.css +1 -1
  55. package/dist/buttons.css.map +1 -1
  56. package/dist/color-modes.css +1 -1
  57. package/dist/color-modes.css.map +1 -1
  58. package/dist/core.css +1 -1
  59. package/dist/core.css.map +1 -1
  60. package/dist/dropdown.css +1 -1
  61. package/dist/dropdown.css.map +1 -1
  62. package/dist/forms.css +1 -1
  63. package/dist/forms.css.map +1 -1
  64. package/dist/header.css.map +1 -1
  65. package/dist/labels.css +1 -1
  66. package/dist/labels.css.map +1 -1
  67. package/dist/layout.css +1 -1
  68. package/dist/layout.css.map +1 -1
  69. package/dist/links.css +1 -1
  70. package/dist/links.css.map +1 -1
  71. package/dist/loaders.css.map +1 -1
  72. package/dist/markdown.css +1 -1
  73. package/dist/markdown.css.map +1 -1
  74. package/dist/marketing-buttons.css +1 -1
  75. package/dist/marketing-buttons.css.map +1 -1
  76. package/dist/marketing-links.css +1 -1
  77. package/dist/marketing-links.css.map +1 -1
  78. package/dist/marketing-type.css.map +1 -1
  79. package/dist/marketing-utilities.css.map +1 -1
  80. package/dist/marketing.css +1 -1
  81. package/dist/marketing.css.map +1 -1
  82. package/dist/meta.json +71 -71
  83. package/dist/navigation.css +1 -1
  84. package/dist/navigation.css.map +1 -1
  85. package/dist/pagination.css +1 -1
  86. package/dist/pagination.css.map +1 -1
  87. package/dist/popover.css +1 -1
  88. package/dist/popover.css.map +1 -1
  89. package/dist/primer.css +4 -4
  90. package/dist/primer.css.map +1 -1
  91. package/dist/product.css +1 -1
  92. package/dist/product.css.map +1 -1
  93. package/dist/progress.css.map +1 -1
  94. package/dist/select-menu.css.map +1 -1
  95. package/dist/stats/actionlist.json +1 -1
  96. package/dist/stats/alerts.json +1 -1
  97. package/dist/stats/autocomplete.json +1 -1
  98. package/dist/stats/avatars.json +1 -1
  99. package/dist/stats/base.json +1 -1
  100. package/dist/stats/blankslate.json +1 -1
  101. package/dist/stats/branch-name.json +1 -1
  102. package/dist/stats/buttons.json +1 -1
  103. package/dist/stats/color-modes.json +1 -1
  104. package/dist/stats/core.json +1 -1
  105. package/dist/stats/dropdown.json +1 -1
  106. package/dist/stats/forms.json +1 -1
  107. package/dist/stats/labels.json +1 -1
  108. package/dist/stats/layout.json +1 -1
  109. package/dist/stats/links.json +1 -1
  110. package/dist/stats/markdown.json +1 -1
  111. package/dist/stats/marketing-buttons.json +1 -1
  112. package/dist/stats/marketing-links.json +1 -1
  113. package/dist/stats/marketing.json +1 -1
  114. package/dist/stats/navigation.json +1 -1
  115. package/dist/stats/pagination.json +1 -1
  116. package/dist/stats/popover.json +1 -1
  117. package/dist/stats/primer.json +1 -1
  118. package/dist/stats/product.json +1 -1
  119. package/dist/stats/subhead.json +1 -1
  120. package/dist/stats/toasts.json +1 -1
  121. package/dist/stats/tooltips.json +1 -1
  122. package/dist/stats/utilities.json +1 -1
  123. package/dist/subhead.css +1 -1
  124. package/dist/subhead.css.map +1 -1
  125. package/dist/table-object.css.map +1 -1
  126. package/dist/timeline.css.map +1 -1
  127. package/dist/toasts.css +1 -1
  128. package/dist/toasts.css.map +1 -1
  129. package/dist/tooltips.css +1 -1
  130. package/dist/tooltips.css.map +1 -1
  131. package/dist/truncate.css.map +1 -1
  132. package/dist/utilities.css +1 -1
  133. package/dist/utilities.css.map +1 -1
  134. package/dist/variables.json +34 -34
  135. package/dropdown/dropdown.scss +0 -2
  136. package/forms/form-control.scss +26 -5
  137. package/forms/form-group.scss +48 -13
  138. package/forms/form-validation.scss +15 -6
  139. package/forms/input-group.scss +18 -0
  140. package/labels/index.scss +0 -1
  141. package/labels/labels.scss +12 -1
  142. package/labels/mixins.scss +7 -2
  143. package/labels/states.scss +2 -2
  144. package/layout/grid-offset.scss +1 -0
  145. package/layout/grid.scss +1 -0
  146. package/layout/index.scss +1 -1
  147. package/layout/layout.scss +8 -11
  148. package/layout/mixins.scss +30 -4
  149. package/layout/page-layout.scss +384 -0
  150. package/links/link.scss +6 -1
  151. package/markdown/code.scss +5 -0
  152. package/markdown/footnotes.scss +38 -26
  153. package/markdown/headings.scss +17 -0
  154. package/markdown/images.scss +3 -3
  155. package/markdown/markdown-body.scss +0 -8
  156. package/marketing/buttons/button.scss +32 -26
  157. package/marketing/links/link.scss +5 -5
  158. package/marketing/type/typography.scss +21 -0
  159. package/marketing/utilities/layout.scss +1 -0
  160. package/navigation/filter-list.scss +20 -2
  161. package/navigation/menu.scss +8 -10
  162. package/navigation/sidenav.scss +3 -12
  163. package/navigation/subnav.scss +21 -2
  164. package/navigation/tabnav.scss +9 -4
  165. package/navigation/underline-nav.scss +23 -18
  166. package/package.json +32 -26
  167. package/pagination/pagination.scss +65 -7
  168. package/popover/popover.scss +2 -2
  169. package/select-menu/select-menu.scss +3 -3
  170. package/stylelint.config.cjs +2 -11
  171. package/subhead/subhead.scss +3 -0
  172. package/support/mixins/color-modes.scss +5 -0
  173. package/support/mixins/layout.scss +1 -0
  174. package/support/mixins/misc.scss +28 -5
  175. package/support/mixins/typography.scss +3 -2
  176. package/support/variables/layout.scss +3 -3
  177. package/table-object/table-object.scss +3 -0
  178. package/timeline/timeline-item.scss +2 -1
  179. package/toasts/toasts.scss +7 -4
  180. package/tooltips/tooltips.scss +0 -7
  181. package/utilities/colors.scss +16 -0
  182. package/utilities/details.scss +81 -4
  183. package/utilities/layout.scss +1 -1
  184. package/utilities/margin.scss +4 -1
  185. package/utilities/padding.scss +3 -1
  186. package/utilities/visibility-display.scss +52 -3
  187. package/table-object/README.md +0 -25
@@ -15,17 +15,25 @@
15
15
 
16
16
  @each $header, $sizes in $mktg-headers {
17
17
  .h#{$header}-mktg {
18
+ // stylelint-disable-next-line function-no-unknown
18
19
  $pairing: map-get($mktg-header-pairings, nth($sizes, 1));
20
+ // stylelint-disable-next-line function-no-unknown
19
21
  $pairing-md: map-get($mktg-header-pairings, nth($sizes, 2));
22
+ // stylelint-disable-next-line function-no-unknown
20
23
  $pairing-lg: map-get($mktg-header-pairings, nth($sizes, 3));
21
24
 
25
+ // stylelint-disable-next-line function-no-unknown
22
26
  font-size: map-get($pairing, 'size') !important;
27
+ // stylelint-disable-next-line function-no-unknown
23
28
  line-height: map-get($pairing, 'lh') !important;
29
+
24
30
  @if (map-get($pairing, 'size') >= $mktg-header-weight-threshold) { font-weight: $mktg-header-weight-large !important; }
25
31
 
26
32
  @if (nth($sizes, 1) != nth($sizes, 2)) {
27
33
  @include breakpoint(md) {
34
+ // stylelint-disable-next-line function-no-unknown
28
35
  font-size: map-get($pairing-md, 'size') !important;
36
+ // stylelint-disable-next-line function-no-unknown
29
37
  line-height: map-get($pairing-md, 'lh') !important;
30
38
 
31
39
  @if (map-get($pairing-md, 'size') >= $mktg-header-spacing-threshold and map-get($pairing, 'size') < $mktg-header-spacing-threshold) {
@@ -40,7 +48,9 @@
40
48
 
41
49
  @if (nth($sizes, 2) != nth($sizes, 3)) {
42
50
  @include breakpoint(lg) {
51
+ // stylelint-disable-next-line function-no-unknown
43
52
  font-size: map-get($pairing-lg, 'size') !important;
53
+ // stylelint-disable-next-line function-no-unknown
44
54
  line-height: map-get($pairing-lg, 'lh') !important;
45
55
 
46
56
  @if (map-get($pairing-lg, 'size') >= $mktg-header-spacing-threshold and map-get($pairing-md, 'size') < $mktg-header-spacing-threshold) {
@@ -69,18 +79,27 @@
69
79
 
70
80
  @each $body, $sizes in $mktg-bodies {
71
81
  .f#{$body}-mktg {
82
+ // stylelint-disable-next-line function-no-unknown
72
83
  $pairing: map-get($mktg-body-pairings, nth($sizes, 1));
84
+ // stylelint-disable-next-line function-no-unknown
73
85
  $pairing-md: map-get($mktg-body-pairings, nth($sizes, 2));
86
+ // stylelint-disable-next-line function-no-unknown
74
87
  $pairing-lg: map-get($mktg-body-pairings, nth($sizes, 3));
75
88
 
89
+ // stylelint-disable-next-line function-no-unknown
76
90
  font-size: map-get($pairing, 'size') !important;
91
+ // stylelint-disable-next-line function-no-unknown
77
92
  line-height: map-get($pairing, 'lh') !important;
93
+
78
94
  @if (map-get($pairing, 'size') >= $mktg-body-spacing-threshold) { letter-spacing: $mktg-body-spacing-large !important; }
95
+
79
96
  @if (map-get($pairing, 'size') >= $mktg-body-weight-threshold) { font-weight: $font-weight-semibold; }
80
97
 
81
98
  @if (nth($sizes, 1) != nth($sizes, 2)) {
82
99
  @include breakpoint(md) {
100
+ // stylelint-disable-next-line function-no-unknown
83
101
  font-size: map-get($pairing-md, 'size') !important;
102
+ // stylelint-disable-next-line function-no-unknown
84
103
  line-height: map-get($pairing-md, 'lh') !important;
85
104
 
86
105
  @if (map-get($pairing-md, 'size') >= $mktg-body-spacing-threshold and map-get($pairing, 'size') < $mktg-body-spacing-threshold) {
@@ -95,7 +114,9 @@
95
114
 
96
115
  @if (nth($sizes, 2) != nth($sizes, 3)) {
97
116
  @include breakpoint(lg) {
117
+ // stylelint-disable-next-line function-no-unknown
98
118
  font-size: map-get($pairing-lg, 'size') !important;
119
+ // stylelint-disable-next-line function-no-unknown
99
120
  line-height: map-get($pairing-lg, 'lh') !important;
100
121
 
101
122
  @if (map-get($pairing-lg, 'size') >= $mktg-body-spacing-threshold and map-get($pairing-md, 'size') < $mktg-body-spacing-threshold) {
@@ -27,6 +27,7 @@
27
27
  @each $breakpoint, $variant in $responsive-variants {
28
28
  @include breakpoint($breakpoint) {
29
29
  @for $offset from 1 through 7 {
30
+ // stylelint-disable-next-line primer/spacing, function-no-unknown
30
31
  .offset#{$variant}-n#{$offset} { margin-left: -($offset * 0.0833333333 * 100%); }
31
32
  }
32
33
  }
@@ -1,3 +1,5 @@
1
+ // stylelint-disable selector-max-specificity
2
+
1
3
  // Filters list
2
4
  //
3
5
  // A vertical list of filters.
@@ -41,10 +43,26 @@
41
43
  }
42
44
 
43
45
  &.selected,
44
- &[aria-selected=true],
45
- &[aria-current]:not([aria-current=false]) {
46
+ &[aria-selected='true'],
47
+ &[aria-current]:not([aria-current='false']) {
46
48
  color: var(--color-fg-on-emphasis);
47
49
  background-color: var(--color-accent-emphasis);
50
+
51
+ // fallback :focus state
52
+ &:focus {
53
+ @include focusOutlineOnEmphasis;
54
+
55
+ // remove fallback :focus if :focus-visible is supported
56
+ &:not(:focus-visible) {
57
+ outline: solid 1px transparent;
58
+ box-shadow: none;
59
+ }
60
+ }
61
+
62
+ // default focus state
63
+ &:focus-visible {
64
+ @include focusOutlineOnEmphasis;
65
+ }
48
66
  }
49
67
 
50
68
  .count {
@@ -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 {
@@ -49,8 +47,8 @@
49
47
  }
50
48
 
51
49
  &.selected,
52
- &[aria-selected=true],
53
- &[aria-current]:not([aria-current=false]) {
50
+ &[aria-selected='true'],
51
+ &[aria-current]:not([aria-current='false']) {
54
52
  cursor: default;
55
53
  background-color: var(--color-menu-bg-active);
56
54
 
@@ -43,23 +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
-
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 {
59
52
  background-color: var(--color-canvas-subtle);
60
53
  }
61
54
 
62
- .SideNav-item[aria-current]:not([aria-current=false]),
55
+ .SideNav-item[aria-current]:not([aria-current='false']),
63
56
  .SideNav-item[aria-selected='true'] {
64
57
  background-color: var(--color-sidenav-selected-bg);
65
58
 
@@ -94,14 +87,12 @@
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
- .SideNav-subItem[aria-current]:not([aria-current=false]),
95
+ .SideNav-subItem[aria-current]:not([aria-current='false']),
105
96
  .SideNav-subItem[aria-selected='true'] {
106
97
  font-weight: $font-weight-semibold;
107
98
  color: var(--color-fg-default);
@@ -1,3 +1,5 @@
1
+ // stylelint-disable selector-max-specificity
2
+
1
3
  // Needs refactoring
2
4
  // Sub nav
3
5
  .subnav {
@@ -40,12 +42,28 @@
40
42
  }
41
43
 
42
44
  &.selected,
43
- &[aria-selected=true],
44
- &[aria-current]:not([aria-current=false]) {
45
+ &[aria-selected='true'],
46
+ &[aria-current]:not([aria-current='false']) {
45
47
  z-index: 2;
46
48
  color: var(--color-fg-on-emphasis);
47
49
  background-color: var(--color-accent-emphasis);
48
50
  border-color: var(--color-accent-emphasis);
51
+
52
+ // fallback :focus state
53
+ &:focus {
54
+ @include focusOutlineOnEmphasis;
55
+
56
+ // remove fallback :focus if :focus-visible is supported
57
+ &:not(:focus-visible) {
58
+ outline: solid 1px transparent;
59
+ box-shadow: none;
60
+ }
61
+ }
62
+
63
+ // default focus state
64
+ &:focus-visible {
65
+ @include focusOutlineOnEmphasis;
66
+ }
49
67
  }
50
68
 
51
69
  &:first-child {
@@ -72,6 +90,7 @@
72
90
  }
73
91
 
74
92
  .subnav-search-input-wide {
93
+ // stylelint-disable-next-line primer/responsive-widths
75
94
  width: 500px;
76
95
  }
77
96
 
@@ -28,8 +28,8 @@
28
28
  transition: color 0.2s cubic-bezier(0.3, 0, 0.5, 1);
29
29
 
30
30
  &.selected,
31
- &[aria-selected=true],
32
- &[aria-current]:not([aria-current=false]) {
31
+ &[aria-selected='true'],
32
+ &[aria-current]:not([aria-current='false']) {
33
33
  color: var(--color-fg-default);
34
34
  background-color: var(--color-canvas-default); // cover bottom border
35
35
  border-color: var(--color-border-default);
@@ -40,13 +40,18 @@
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
+ border-radius: $border-radius $border-radius 0 0 !important;
52
+ outline-offset: -6px;
53
+ }
54
+
50
55
  &:active {
51
56
  color: var(--color-fg-muted);
52
57
  }
@@ -9,6 +9,17 @@ $nav-height: $spacer-3 * 3 !default; // 48px
9
9
  box-shadow: inset 0 -1px 0 var(--color-border-muted);
10
10
  -webkit-overflow-scrolling: auto;
11
11
  justify-content: space-between;
12
+
13
+ .Counter {
14
+ margin-left: $spacer-2;
15
+ color: var(--color-fg-default);
16
+ background-color: var(--color-neutral-muted);
17
+
18
+ &--primary {
19
+ color: var(--color-fg-on-emphasis);
20
+ background-color: var(--color-neutral-emphasis);
21
+ }
22
+ }
12
23
  }
13
24
 
14
25
  .UnderlineNav-body {
@@ -34,6 +45,16 @@ $nav-height: $spacer-3 * 3 !default; // 48px
34
45
  border-radius: $border-radius;
35
46
  align-items: center;
36
47
 
48
+ &:hover,
49
+ &:focus,
50
+ &:focus-visible {
51
+ color: var(--color-fg-default);
52
+ text-decoration: none;
53
+ border-bottom-color: var(--color-neutral-muted);
54
+ outline-offset: -2px;
55
+ transition: border-bottom-color 0.12s ease-out;
56
+ }
57
+
37
58
  // renders a visibly hidden "copy" of the label in bold, reserving box space for when label becomes bold on selected
38
59
  [data-content]::before {
39
60
  display: block;
@@ -63,6 +84,8 @@ $nav-height: $spacer-3 * 3 !default; // 48px
63
84
  &[aria-current]:not([aria-current='false']) {
64
85
  font-weight: $font-weight-bold;
65
86
  color: var(--color-fg-default);
87
+ border-bottom-color: var(--color-primer-border-active);
88
+ outline-offset: -8px;
66
89
 
67
90
  // current/selected underline
68
91
  &::after {
@@ -78,24 +101,6 @@ $nav-height: $spacer-3 * 3 !default; // 48px
78
101
  transform: translate(50%, -50%);
79
102
  }
80
103
  }
81
-
82
- // remove when global focus state is merged
83
- &.focus,
84
- &:focus {
85
- @include focusOutline;
86
- outline-offset: -2px;
87
- }
88
-
89
- .Counter {
90
- margin-left: $spacer-2;
91
- color: var(--color-fg-default);
92
- background-color: var(--color-neutral-muted);
93
-
94
- &--primary {
95
- color: var(--color-fg-on-emphasis);
96
- background-color: var(--color-neutral-emphasis);
97
- }
98
- }
99
104
  }
100
105
 
101
106
  .UnderlineNav--right {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/css",
3
- "version": "20.0.0-rc.b5fee637",
3
+ "version": "20.0.0-rc.c0ed9d90",
4
4
  "description": "The CSS implementation of GitHub's Primer Design System",
5
5
  "homepage": "https://primer.style/css",
6
6
  "author": "GitHub, Inc.",
@@ -23,8 +23,14 @@
23
23
  "design-system"
24
24
  ],
25
25
  "scripts": {
26
+ "build:docs": "script/build-docs",
27
+ "build:docs:preview": "script/build-docs preview",
26
28
  "dist": "script/dist.js",
27
- "stylelint": "stylelint --quiet 'src/**/*.scss'",
29
+ "dist:watch": "chokidar \"src/**/*.scss\" -c \"script/dist.js\"",
30
+ "stylelint": "stylelint --quiet --rd 'src/**/*.scss'",
31
+ "stylelint:fix": "yarn stylelint -- --fix",
32
+ "stylelint:remove-disables": "script/stylelint-remove-disables.js 'src/**/*.scss'",
33
+ "stylelint:add-disables": "script/stylelint-add-disables.js 'src/**/*.scss'",
28
34
  "eslint": "eslint deprecations.js __tests__ script",
29
35
  "prepublishOnly": "script/prepublish",
30
36
  "start": "yarn dev",
@@ -35,37 +41,37 @@
35
41
  "storybook": "cd docs && yarn && yarn storybook"
36
42
  },
37
43
  "dependencies": {
38
- "@primer/primitives": "^7.2.0"
44
+ "@primer/primitives": "^7.7.0"
39
45
  },
40
46
  "devDependencies": {
41
- "@changesets/changelog-github": "0.4.2",
42
- "@changesets/cli": "2.18.1",
47
+ "@changesets/changelog-github": "0.4.4",
48
+ "@changesets/cli": "2.22.0",
43
49
  "@github/prettier-config": "0.0.4",
44
- "@koddsson/postcss-sass": "5.0.0",
45
- "@primer/stylelint-config": "12.1.1",
46
- "autoprefixer": "10.4.0",
47
- "cssstats": "4.0.2",
48
- "eslint": "8.4.0",
49
- "eslint-plugin-github": "4.3.5",
50
- "eslint-plugin-jest": "25.3.0",
50
+ "@koddsson/postcss-sass": "5.0.1",
51
+ "@primer/stylelint-config": "^12.4.0",
52
+ "autoprefixer": "10.4.4",
53
+ "chokidar-cli": "3.0.0",
54
+ "cssstats": "4.0.5",
55
+ "eslint": "8.13.0",
56
+ "eslint-plugin-github": "4.3.6",
57
+ "eslint-plugin-jest": "26.0.0",
51
58
  "eslint-plugin-prettier": "4.0.0",
52
- "filesize": "8.0.6",
59
+ "filesize": "8.0.7",
53
60
  "front-matter": "4.0.2",
54
- "fs-extra": "10.0.0",
55
- "globby": "12.0.2",
56
- "jest": "27.4.3",
61
+ "fs-extra": "10.0.1",
62
+ "globby": "13.1.1",
63
+ "jest": "27.5.1",
57
64
  "js-yaml": "4.1.0",
58
- "postcss": "8.4.4",
59
- "postcss-calc": "8.0.0",
60
- "postcss-import": "14.0.2",
61
- "postcss-load-config": "3.1.0",
62
- "postcss-scss": "4.0.2",
65
+ "postcss": "8.4.12",
66
+ "postcss-calc": "8.2.4",
67
+ "postcss-import": "14.1.0",
68
+ "postcss-load-config": "3.1.4",
69
+ "postcss-scss": "4.0.3",
63
70
  "postcss-simple-vars": "6.0.3",
64
- "prettier": "2.5.1",
65
- "semver": "7.3.5",
66
- "stylelint": "14.1.0",
67
- "stylelint-scss": "4.0.0",
68
- "table": "6.7.5"
71
+ "prettier": "2.6.2",
72
+ "semver": "7.3.7",
73
+ "stylelint": "14.6.1",
74
+ "table": "6.8.0"
69
75
  },
70
76
  "jest": {
71
77
  "testEnvironment": "node",
@@ -4,7 +4,6 @@
4
4
  a,
5
5
  span,
6
6
  em {
7
- display: inline-block;
8
7
  min-width: 32px;
9
8
  // stylelint-disable-next-line primer/spacing
10
9
  padding: 5px 10px;
@@ -25,7 +24,6 @@
25
24
  &:focus {
26
25
  text-decoration: none;
27
26
  border-color: var(--color-border-default);
28
- outline: 0;
29
27
  transition-duration: 0.1s;
30
28
  }
31
29
 
@@ -42,7 +40,7 @@
42
40
 
43
41
  .current,
44
42
  .current:hover,
45
- [aria-current]:not([aria-current=false]) {
43
+ [aria-current]:not([aria-current='false']) {
46
44
  color: var(--color-fg-on-emphasis);
47
45
  background-color: var(--color-accent-emphasis);
48
46
  border-color: transparent;
@@ -50,10 +48,10 @@
50
48
 
51
49
  .gap,
52
50
  .disabled,
53
- [aria-disabled=true],
51
+ [aria-disabled='true'],
54
52
  .gap:hover,
55
53
  .disabled:hover,
56
- [aria-disabled=true]:hover {
54
+ [aria-disabled='true']:hover {
57
55
  color: var(--color-primer-fg-disabled);
58
56
  cursor: default;
59
57
  border-color: transparent;
@@ -75,13 +73,73 @@
75
73
  // chevron-left
76
74
  .previous_page::before {
77
75
  margin-right: $spacer-1;
78
- clip-path: polygon(9.8px 12.8px, 8.7px 12.8px, 4.5px 8.5px, 4.5px 7.5px, 8.7px 3.2px, 9.8px 4.3px, 6.1px 8px, 9.8px 11.7px, 9.8px 12.8px);
76
+ clip-path:
77
+ polygon(
78
+ 9.8px 12.8px,
79
+ 8.7px 12.8px,
80
+ 4.5px 8.5px,
81
+ 4.5px 7.5px,
82
+ 8.7px 3.2px,
83
+ 9.8px 4.3px,
84
+ 6.1px 8px,
85
+ 9.8px 11.7px,
86
+ 9.8px 12.8px
87
+ );
79
88
  }
80
89
 
81
90
  // chevron-right
82
91
  .next_page::after {
83
92
  margin-left: $spacer-1;
84
- clip-path: polygon(6.2px 3.2px, 7.3px 3.2px, 11.5px 7.5px, 11.5px 8.5px, 7.3px 12.8px, 6.2px 11.7px, 9.9px 8px, 6.2px 4.3px, 6.2px 3.2px);
93
+ clip-path:
94
+ polygon(
95
+ 6.2px 3.2px,
96
+ 7.3px 3.2px,
97
+ 11.5px 7.5px,
98
+ 11.5px 8.5px,
99
+ 7.3px 12.8px,
100
+ 6.2px 11.7px,
101
+ 9.9px 8px,
102
+ 6.2px 4.3px,
103
+ 6.2px 3.2px
104
+ );
105
+ }
106
+ }
107
+
108
+ // Responsive
109
+
110
+ // Hide everything by default
111
+ > * {
112
+ display: none;
113
+ }
114
+
115
+ // 0 -> sm
116
+ // Only show [Previous] [Next]
117
+
118
+ > :first-child,
119
+ > :last-child,
120
+ > .previous_page,
121
+ > .next_page {
122
+ display: inline-block;
123
+ }
124
+
125
+ // sm -> md
126
+ // Also show [first] [last] [current number] and [...]
127
+
128
+ @include breakpoint(sm) {
129
+ > :nth-child(2),
130
+ > :nth-last-child(2),
131
+ > .current,
132
+ > .gap {
133
+ display: inline-block;
134
+ }
135
+ }
136
+
137
+ // md -> or more
138
+ // Show everything
139
+
140
+ @include breakpoint(md) {
141
+ > * {
142
+ display: inline-block;
85
143
  }
86
144
  }
87
145
  }
@@ -122,7 +122,7 @@
122
122
  }
123
123
 
124
124
  &::before {
125
- // stylelint-disable-next-line primer/spacing
125
+ // stylelint-disable-next-line function-no-unknown
126
126
  margin-top: -($spacer-2 + 1);
127
127
  }
128
128
 
@@ -196,7 +196,7 @@
196
196
  // Responsive Popover
197
197
  // For < md it will show full-width anchored to the bottom
198
198
 
199
- @media (max-width: ($width-md - 1px)) {
199
+ @media (max-width: ($width-md - 0.02px)) {
200
200
  .Popover {
201
201
  position: fixed;
202
202
  top: auto !important;
@@ -31,7 +31,7 @@ $SelectMenu-max-height: 480px !default;
31
31
 
32
32
  // Backdrop
33
33
  //
34
- // Adds a dark, semi transparent "cover" underneat the modal. Only visible for xs.
34
+ // Adds a dark, semi transparent "cover" underneath the modal. Only visible for xs.
35
35
 
36
36
  .SelectMenu::before {
37
37
  position: absolute;
@@ -386,7 +386,7 @@ $SelectMenu-max-height: 480px !default;
386
386
  //
387
387
  // Visible when a user clicks/taps on a list item
388
388
 
389
- .SelectMenu-item[aria-checked=true] {
389
+ .SelectMenu-item[aria-checked='true'] {
390
390
  font-weight: $font-weight-semibold;
391
391
  color: var(--color-fg-default);
392
392
 
@@ -402,7 +402,7 @@ $SelectMenu-max-height: 480px !default;
402
402
  // Prevent list items to be selected
403
403
 
404
404
  .SelectMenu-item:disabled,
405
- .SelectMenu-item[aria-disabled=true] {
405
+ .SelectMenu-item[aria-disabled='true'] {
406
406
  color: var(--color-primer-fg-disabled);
407
407
  pointer-events: none;
408
408
  }
@@ -1,16 +1,7 @@
1
1
  module.exports = {
2
2
  extends: ['@primer/stylelint-config'],
3
- plugins: ['stylelint-scss'],
4
- customSyntax: require('postcss-scss'),
5
- ignoreFiles: ['src/fonts/**/*'],
3
+ ignoreFiles: ['**/*.js', '**/*.cjs'],
6
4
  rules: {
7
- 'scss/dollar-variable-default': [true, {ignore: 'local'}],
8
- 'primer/no-override': false,
9
- 'primer/colors': true,
10
- 'primer/borders': true,
11
- 'primer/spacing': true,
12
- 'primer/typography': true,
13
- 'primer/box-shadow': true,
14
- 'primer/no-undefined-vars': [true, {files: 'node_modules/@primer/primitives/dist/scss/colors*/*.scss'}]
5
+ 'primer/no-override': false
15
6
  }
16
7
  }
@@ -18,6 +18,7 @@
18
18
  font-size: $h2-size;
19
19
  font-weight: $font-weight-normal;
20
20
  flex: 1 1 auto;
21
+ order: 0;
21
22
  }
22
23
 
23
24
  // Make the text bold and red for dangerous content
@@ -31,6 +32,7 @@
31
32
  font-size: $body-font-size;
32
33
  color: var(--color-fg-muted);
33
34
  flex: 1 100%;
35
+ order: 2;
34
36
  }
35
37
 
36
38
  // Add 1 or 2 buttons to the right of the heading
@@ -38,6 +40,7 @@
38
40
  margin: $spacer-1 0 $spacer-1 $spacer-1;
39
41
  align-self: center;
40
42
  justify-content: flex-end;
43
+ order: 1;
41
44
 
42
45
  + .Subhead-description {
43
46
  margin-top: $spacer-1;
@@ -8,6 +8,7 @@
8
8
  /*! */ // This is a fix for a cssstats bug see https://github.com/cssstats/cssstats/issues/331
9
9
  }
10
10
  }
11
+
11
12
  @else {
12
13
  [data-color-mode="light"][data-light-theme="#{$theme-name}"],
13
14
  [data-color-mode="dark"][data-dark-theme="#{$theme-name}"] {
@@ -36,6 +37,7 @@
36
37
  @content;
37
38
  }
38
39
  }
40
+
39
41
  @else {
40
42
  [data-color-mode="light"][data-light-theme*="#{$mode}"],
41
43
  [data-color-mode="dark"][data-dark-theme*="#{$mode}"] {
@@ -82,9 +84,12 @@
82
84
  @each $name, $value in $color-map {
83
85
  @each $type, $color in $value {
84
86
  @if $type == dark {
87
+ // stylelint-disable-next-line function-no-unknown
85
88
  $dark-colors: append($dark-colors, (--color-#{$name}, #{$color}));
86
89
  }
90
+
87
91
  @else {
92
+ // stylelint-disable-next-line function-no-unknown
88
93
  $light-colors: append($light-colors, (--color-#{$name}, #{$color}));
89
94
  }
90
95
  }
@@ -7,6 +7,7 @@
7
7
 
8
8
  @else {
9
9
  // Retrieves the value from the key
10
+ // stylelint-disable-next-line function-no-unknown
10
11
  $value: map-get($breakpoints, $breakpoint);
11
12
 
12
13
  // If the key exists in the map