@primer/css 20.0.0-rc.8702fd9a → 20.0.0-rc.e6f567ec

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 (186) hide show
  1. package/CHANGELOG.md +166 -3
  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 +51 -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.scss +0 -3
  21. package/branch-name/branch-name.scss +1 -0
  22. package/breadcrumb/breadcrumb.scss +1 -1
  23. package/buttons/button-group.scss +3 -2
  24. package/buttons/button.scss +64 -36
  25. package/buttons/misc.scss +30 -25
  26. package/color-modes/index.scss +2 -0
  27. package/color-modes/native.scss +12 -0
  28. package/color-modes/themes/dark.scss +0 -1
  29. package/color-modes/themes/dark_colorblind.scss +0 -1
  30. package/color-modes/themes/dark_dimmed.scss +0 -1
  31. package/color-modes/themes/dark_high_contrast.scss +0 -1
  32. package/color-modes/themes/dark_tritanopia.scss +6 -0
  33. package/color-modes/themes/light.scss +0 -1
  34. package/color-modes/themes/light_colorblind.scss +0 -1
  35. package/color-modes/themes/light_high_contrast.scss +0 -1
  36. package/color-modes/themes/light_tritanopia.scss +6 -0
  37. package/dist/actionlist.css +1 -1
  38. package/dist/actionlist.css.map +1 -1
  39. package/dist/alerts.css +1 -1
  40. package/dist/alerts.css.map +1 -1
  41. package/dist/autocomplete.css +1 -1
  42. package/dist/autocomplete.css.map +1 -1
  43. package/dist/avatars.css +1 -1
  44. package/dist/avatars.css.map +1 -1
  45. package/dist/base.css +1 -1
  46. package/dist/base.css.map +1 -1
  47. package/dist/blankslate.css +1 -1
  48. package/dist/blankslate.css.map +1 -1
  49. package/dist/box.css.map +1 -1
  50. package/dist/branch-name.css +1 -1
  51. package/dist/branch-name.css.map +1 -1
  52. package/dist/breadcrumb.css.map +1 -1
  53. package/dist/buttons.css +1 -1
  54. package/dist/buttons.css.map +1 -1
  55. package/dist/color-modes.css +1 -1
  56. package/dist/color-modes.css.map +1 -1
  57. package/dist/core.css +1 -1
  58. package/dist/core.css.map +1 -1
  59. package/dist/dropdown.css +1 -1
  60. package/dist/dropdown.css.map +1 -1
  61. package/dist/forms.css +1 -1
  62. package/dist/forms.css.map +1 -1
  63. package/dist/header.css.map +1 -1
  64. package/dist/labels.css +1 -1
  65. package/dist/labels.css.map +1 -1
  66. package/dist/layout.css +1 -1
  67. package/dist/layout.css.map +1 -1
  68. package/dist/links.css +1 -1
  69. package/dist/links.css.map +1 -1
  70. package/dist/loaders.css.map +1 -1
  71. package/dist/markdown.css +1 -1
  72. package/dist/markdown.css.map +1 -1
  73. package/dist/marketing-buttons.css +1 -1
  74. package/dist/marketing-buttons.css.map +1 -1
  75. package/dist/marketing-links.css +1 -1
  76. package/dist/marketing-links.css.map +1 -1
  77. package/dist/marketing-type.css.map +1 -1
  78. package/dist/marketing-utilities.css.map +1 -1
  79. package/dist/marketing.css +1 -1
  80. package/dist/marketing.css.map +1 -1
  81. package/dist/meta.json +73 -73
  82. package/dist/navigation.css +1 -1
  83. package/dist/navigation.css.map +1 -1
  84. package/dist/pagination.css +1 -1
  85. package/dist/pagination.css.map +1 -1
  86. package/dist/popover.css +1 -1
  87. package/dist/popover.css.map +1 -1
  88. package/dist/primer.css +4 -4
  89. package/dist/primer.css.map +1 -1
  90. package/dist/product.css +1 -1
  91. package/dist/product.css.map +1 -1
  92. package/dist/progress.css.map +1 -1
  93. package/dist/select-menu.css.map +1 -1
  94. package/dist/stats/actionlist.json +1 -1
  95. package/dist/stats/alerts.json +1 -1
  96. package/dist/stats/autocomplete.json +1 -1
  97. package/dist/stats/avatars.json +1 -1
  98. package/dist/stats/base.json +1 -1
  99. package/dist/stats/blankslate.json +1 -1
  100. package/dist/stats/branch-name.json +1 -1
  101. package/dist/stats/buttons.json +1 -1
  102. package/dist/stats/color-modes.json +1 -1
  103. package/dist/stats/core.json +1 -1
  104. package/dist/stats/dropdown.json +1 -1
  105. package/dist/stats/forms.json +1 -1
  106. package/dist/stats/labels.json +1 -1
  107. package/dist/stats/layout.json +1 -1
  108. package/dist/stats/links.json +1 -1
  109. package/dist/stats/markdown.json +1 -1
  110. package/dist/stats/marketing-buttons.json +1 -1
  111. package/dist/stats/marketing-links.json +1 -1
  112. package/dist/stats/marketing.json +1 -1
  113. package/dist/stats/navigation.json +1 -1
  114. package/dist/stats/pagination.json +1 -1
  115. package/dist/stats/popover.json +1 -1
  116. package/dist/stats/primer.json +1 -1
  117. package/dist/stats/product.json +1 -1
  118. package/dist/stats/subhead.json +1 -1
  119. package/dist/stats/toasts.json +1 -1
  120. package/dist/stats/tooltips.json +1 -1
  121. package/dist/stats/utilities.json +1 -1
  122. package/dist/subhead.css +1 -1
  123. package/dist/subhead.css.map +1 -1
  124. package/dist/table-object.css.map +1 -1
  125. package/dist/timeline.css.map +1 -1
  126. package/dist/toasts.css +1 -1
  127. package/dist/toasts.css.map +1 -1
  128. package/dist/tooltips.css +1 -1
  129. package/dist/tooltips.css.map +1 -1
  130. package/dist/truncate.css.map +1 -1
  131. package/dist/utilities.css +1 -1
  132. package/dist/utilities.css.map +1 -1
  133. package/dist/variables.json +7 -7
  134. package/dropdown/dropdown.scss +0 -2
  135. package/forms/form-control.scss +26 -5
  136. package/forms/form-group.scss +47 -13
  137. package/forms/form-validation.scss +1 -1
  138. package/forms/input-group.scss +18 -0
  139. package/labels/counters.scss +1 -1
  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 +3 -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 +20 -2
  164. package/navigation/tabnav.scss +9 -4
  165. package/navigation/underline-nav.scss +79 -28
  166. package/package.json +32 -26
  167. package/pagination/pagination.scss +65 -7
  168. package/popover/popover.scss +1 -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 +3 -0
  173. package/support/mixins/misc.scss +48 -1
  174. package/support/mixins/typography.scss +3 -2
  175. package/support/variables/layout.scss +2 -3
  176. package/table-object/table-object.scss +3 -0
  177. package/timeline/timeline-item.scss +0 -1
  178. package/toasts/toasts.scss +7 -4
  179. package/tooltips/tooltips.scss +0 -7
  180. package/utilities/colors.scss +16 -0
  181. package/utilities/details.scss +81 -4
  182. package/utilities/layout.scss +1 -1
  183. package/utilities/margin.scss +4 -1
  184. package/utilities/padding.scss +3 -1
  185. package/utilities/visibility-display.scss +52 -3
  186. package/table-object/README.md +0 -25
@@ -1,4 +1,4 @@
1
- // Layout mixins
1
+ // Layout alpha mixins
2
2
 
3
3
  @mixin flow-as-row {
4
4
  grid-auto-flow: row;
@@ -7,9 +7,9 @@
7
7
  .Layout-sidebar,
8
8
  .Layout-divider,
9
9
  .Layout-main {
10
- width: 100% !important;
11
- grid-column: 1 !important;
12
- }
10
+ width: 100% !important;
11
+ grid-column: 1 !important;
12
+ }
13
13
 
14
14
  &.Layout--sidebarPosition-flowRow-start {
15
15
  .Layout-sidebar {
@@ -77,3 +77,29 @@
77
77
  }
78
78
  }
79
79
  }
80
+
81
+ // Layout beta mixins
82
+
83
+ // responsive region dividers
84
+
85
+ @mixin Layout-line-divider {
86
+ position: absolute;
87
+ left: calc(var(--Layout-outer-spacing-x) * -1);
88
+ display: block;
89
+ width: calc(100% + (var(--Layout-outer-spacing-x) * 2));
90
+ height: 1px;
91
+ content: '';
92
+ background-color: $Layout-divider-color;
93
+ }
94
+
95
+ @mixin Layout-filled-divider {
96
+ position: absolute;
97
+ bottom: calc(#{$spacer-2} * -1); // -8px
98
+ left: calc(var(--Layout-outer-spacing-x) * -1);
99
+ display: block;
100
+ width: calc(100% + (var(--Layout-outer-spacing-x) * 2));
101
+ height: #{$spacer-2}; // 8px
102
+ content: '';
103
+ background-color: var(--color-canvas-inset);
104
+ box-shadow: inset 0 1px $Layout-divider-color, inset 0 -1px $Layout-divider-color;
105
+ }
@@ -0,0 +1,384 @@
1
+ // stylelint-disable max-nesting-depth
2
+ // stylelint-disable selector-max-specificity
3
+ // stylelint-disable no-duplicate-selectors
4
+
5
+ $Layout-divider-color: var(--color-border-default) !default;
6
+ $Layout-responsive-variant-max-breakpoint: 'md' !default;
7
+
8
+ :root {
9
+ --Layout-pane-width: #{map-get($sidebar-width, 'sm')};
10
+ --Layout-content-width: 100%;
11
+ --Layout-template-columns: 1fr var(--Layout-pane-width);
12
+ --Layout-template-areas: 'content pane';
13
+ --Layout-column-gap: #{$spacer-3};
14
+ --Layout-row-gap: #{$spacer-3};
15
+
16
+ // the `px` unit is mandatory for `calc()` execution. See https://stackoverflow.com/a/32518348
17
+ // stylelint-disable length-zero-no-unit
18
+ --Layout-outer-spacing-x: 0px; // wrapper margin x
19
+ --Layout-outer-spacing-y: 0px; // wrapper margin y
20
+ --Layout-inner-spacing-min: 0px; // default region padding
21
+ --Layout-inner-spacing-max: 0px; // relaxed content horizontal padding
22
+ // stylelint-enable length-zero-no-unit
23
+ }
24
+
25
+ .PageLayout {
26
+ display: block;
27
+ // stylelint-disable-next-line primer/spacing
28
+ margin: var(--Layout-outer-spacing-y) var(--Layout-outer-spacing-x);
29
+
30
+ // multi-column desktop-friendly layout
31
+
32
+ @include breakpoint($Layout-responsive-variant-max-breakpoint) {
33
+
34
+ // Set a `content` region width, to work with loading states when
35
+ // `pane` is not yet loaded. See https://github.com/primer/css/pull/1818
36
+ $Layout-content-full-width: minmax(0, calc(100% - var(--Layout-pane-width) - var(--Layout-column-gap)));
37
+
38
+ &.PageLayout--panePos-start {
39
+ --Layout-template-columns: var(--Layout-pane-width) #{$Layout-content-full-width};
40
+ --Layout-template-areas: 'pane content';
41
+ }
42
+
43
+ &.PageLayout--panePos-end {
44
+ --Layout-template-columns: #{$Layout-content-full-width} var(--Layout-pane-width);
45
+ --Layout-template-areas: 'content pane';
46
+ }
47
+
48
+ // header divider
49
+
50
+ .PageLayout-header--hasDivider {
51
+ // stylelint-disable-next-line primer/spacing
52
+ padding-bottom: max(var(--Layout-row-gap), var(--Layout-inner-spacing-min));
53
+ // stylelint-disable-next-line primer/borders
54
+ border-bottom: $border-width solid $Layout-divider-color;
55
+ }
56
+
57
+ // footer divider
58
+
59
+ .PageLayout-footer--hasDivider {
60
+ // stylelint-disable-next-line primer/spacing
61
+ padding-top: max(var(--Layout-row-gap), var(--Layout-inner-spacing-min));
62
+ // stylelint-disable-next-line primer/borders
63
+ border-top: $border-width solid $Layout-divider-color;
64
+ }
65
+
66
+ // pane divider
67
+
68
+ &.PageLayout--hasPaneDivider {
69
+ &.PageLayout--panePos-start {
70
+ .PageLayout-pane {
71
+ // stylelint-disable-next-line primer/borders
72
+ border-right: $border-width solid $Layout-divider-color;
73
+ }
74
+
75
+ &:not(.PageLayout--columnGap-none) {
76
+ .PageLayout-pane {
77
+ // stylelint-disable-next-line primer/spacing
78
+ padding-right: calc(var(--Layout-column-gap) - #{$border-width});
79
+ // stylelint-disable-next-line primer/spacing
80
+ margin-right: calc(var(--Layout-column-gap) * -1);
81
+ }
82
+
83
+ .PageLayout-content {
84
+ // stylelint-disable-next-line primer/spacing
85
+ margin-left: var(--Layout-column-gap);
86
+ }
87
+ }
88
+ }
89
+
90
+ &.PageLayout--panePos-end {
91
+ .PageLayout-pane {
92
+ // stylelint-disable-next-line primer/borders
93
+ border-left: $border-width solid $Layout-divider-color;
94
+ }
95
+
96
+ &:not(.PageLayout--columnGap-none) {
97
+ .PageLayout-pane {
98
+ // stylelint-disable-next-line primer/spacing
99
+ padding-left: calc(var(--Layout-column-gap) - #{$border-width});
100
+ // stylelint-disable-next-line primer/spacing
101
+ margin-left: calc(var(--Layout-column-gap) * -1);
102
+ }
103
+
104
+ .PageLayout-content {
105
+ // stylelint-disable-next-line primer/spacing
106
+ margin-right: var(--Layout-column-gap);
107
+ }
108
+ }
109
+ }
110
+ }
111
+
112
+ // sticky pane
113
+
114
+ &.PageLayout--isPaneSticky {
115
+ .PageLayout-pane {
116
+ position: sticky;
117
+ top: 0;
118
+ max-height: 100vh;
119
+ overflow: auto;
120
+ }
121
+ }
122
+
123
+ // content width
124
+
125
+ [class^='PageLayout-content-centered-'] {
126
+ max-width: calc(var(--Layout-content-width) + var(--Layout-pane-width) + var(--Layout-column-gap));
127
+ margin-right: auto;
128
+ margin-left: auto;
129
+ }
130
+
131
+ &.PageLayout--hasPaneDivider {
132
+ [class^='PageLayout-content-centered-'] {
133
+ max-width: calc(var(--Layout-content-width) + var(--Layout-pane-width) + (var(--Layout-column-gap) * 2));
134
+ }
135
+ }
136
+
137
+ &.PageLayout--panePos-start {
138
+ [class^='PageLayout-content-centered-'] > [class^='container-'] {
139
+ margin-left: 0;
140
+ }
141
+ }
142
+
143
+ &.PageLayout--panePos-end {
144
+ [class^='PageLayout-content-centered-'] > [class^='container-'] {
145
+ margin-right: 0;
146
+ }
147
+ }
148
+
149
+ @each $breakpoint in map-keys($breakpoints) {
150
+ .PageLayout-content-centered-#{$breakpoint} {
151
+ --Layout-content-width: #{map-get($breakpoints, $breakpoint)};
152
+ }
153
+ }
154
+
155
+ // pane width
156
+
157
+ @each $breakpoint in map-keys($sidebar-width) {
158
+ @include breakpoint($breakpoint) {
159
+ --Layout-pane-width: #{map-get($sidebar-width, $breakpoint)};
160
+ }
161
+ }
162
+
163
+ &.PageLayout--paneWidth-narrow {
164
+ @each $breakpoint in map-keys($sidebar-narrow-width) {
165
+ @include breakpoint($breakpoint) {
166
+ --Layout-pane-width: #{map-get($sidebar-narrow-width, $breakpoint)};
167
+ }
168
+ }
169
+ }
170
+
171
+ &.PageLayout--paneWidth-wide {
172
+ @each $breakpoint in map-keys($sidebar-wide-width) {
173
+ @include breakpoint($breakpoint) {
174
+ --Layout-pane-width: #{map-get($sidebar-wide-width, $breakpoint)};
175
+ }
176
+ }
177
+ }
178
+ }
179
+
180
+ // responsive behaviors on narrow viewports
181
+
182
+ @media (max-width: #{map-get($breakpoints, $Layout-responsive-variant-max-breakpoint) - 0.02px}) {
183
+
184
+ // variant: stackRegions
185
+
186
+ &.PageLayout--responsive-stackRegions {
187
+ --Layout-template-columns: 1fr;
188
+
189
+ // responsive-panePos: end (default)
190
+ --Layout-template-areas: 'content' 'pane';
191
+
192
+ // responsive-panePos: start
193
+ &.PageLayout--responsive-panePos-start {
194
+ --Layout-template-areas: 'pane' 'content';
195
+ }
196
+ }
197
+
198
+ // variant: separateRegions
199
+
200
+ &.PageLayout--responsive-separateRegions {
201
+ --Layout-template-columns: 1fr;
202
+ --Layout-template-areas: 'content';
203
+
204
+ &.PageLayout--responsive-primary-content {
205
+ --Layout-template-areas: 'content';
206
+
207
+ .PageLayout-pane {
208
+ display: none;
209
+ }
210
+ }
211
+
212
+ &.PageLayout--responsive-primary-pane {
213
+ --Layout-template-areas: 'pane';
214
+
215
+ .PageLayout-content {
216
+ display: none;
217
+ }
218
+ }
219
+ }
220
+
221
+ // region dividers on narrow viewports
222
+
223
+ .PageLayout-region--dividerNarrow-line-before {
224
+ position: relative;
225
+ // stylelint-disable-next-line primer/spacing
226
+ margin-top: var(--Layout-row-gap);
227
+
228
+ &::before {
229
+ @include Layout-line-divider;
230
+
231
+ top: calc(#{$border-width * -1} - var(--Layout-row-gap));
232
+ }
233
+ }
234
+
235
+ .PageLayout-region--dividerNarrow-line-after {
236
+ position: relative;
237
+ // stylelint-disable-next-line primer/spacing
238
+ margin-bottom: var(--Layout-row-gap);
239
+
240
+ &::after {
241
+ @include Layout-line-divider;
242
+
243
+ bottom: calc(#{$border-width * -1} - var(--Layout-row-gap));
244
+ }
245
+ }
246
+
247
+ .PageLayout-region--dividerNarrow-filled-before {
248
+ position: relative;
249
+ // stylelint-disable-next-line primer/spacing
250
+ margin-top: calc(#{$spacer-2} + var(--Layout-row-gap));
251
+
252
+ &::after {
253
+ @include Layout-filled-divider;
254
+
255
+ top: calc(#{$spacer-2 * -1} - var(--Layout-row-gap));
256
+ }
257
+ }
258
+
259
+ .PageLayout-region--dividerNarrow-filled-after {
260
+ position: relative;
261
+ // stylelint-disable-next-line primer/spacing
262
+ margin-bottom: calc(#{$spacer-2} + var(--Layout-row-gap));
263
+
264
+ &::before {
265
+ @include Layout-filled-divider;
266
+
267
+ bottom: calc(#{$spacer-2 * -1} - var(--Layout-row-gap));
268
+ }
269
+ }
270
+ }
271
+ }
272
+
273
+ // PageLayout-wrapper bundles header, footer, pane, and content regions
274
+ .PageLayout-wrapper {
275
+ display: grid;
276
+ grid: auto-flow / 1fr;
277
+ row-gap: var(--Layout-row-gap);
278
+ }
279
+
280
+ // PageLayout-columns wrap pane and content regions
281
+ // If layout has no pane, PageLayout-columns is not present
282
+ .PageLayout-columns {
283
+ display: grid;
284
+ column-gap: var(--Layout-column-gap);
285
+ row-gap: var(--Layout-row-gap);
286
+ grid-template-columns: var(--Layout-template-columns);
287
+ grid-template-rows: 1fr;
288
+ grid-template-areas: var(--Layout-template-areas);
289
+
290
+ .PageLayout-content {
291
+ // stylelint-disable-next-line primer/spacing
292
+ padding-right: var(--Layout-inner-spacing-max);
293
+ // stylelint-disable-next-line primer/spacing
294
+ padding-left: var(--Layout-inner-spacing-max);
295
+ grid-area: content;
296
+ }
297
+
298
+ .PageLayout-pane {
299
+ grid-area: pane;
300
+ }
301
+ }
302
+
303
+ // outer spacing
304
+
305
+ .PageLayout--outerSpacing-normal {
306
+ --Layout-outer-spacing-x: #{$spacer-3};
307
+ --Layout-outer-spacing-y: #{$spacer-3};
308
+
309
+ @include breakpoint(lg) {
310
+ --Layout-outer-spacing-x: #{$spacer-4};
311
+ --Layout-outer-spacing-y: #{$spacer-4};
312
+ }
313
+ }
314
+
315
+ .PageLayout--outerSpacing-condensed {
316
+ --Layout-outer-spacing-x: #{$spacer-3};
317
+ --Layout-outer-spacing-y: #{$spacer-3};
318
+ }
319
+
320
+ // inner spacing
321
+
322
+ .PageLayout--innerSpacing-normal {
323
+ --Layout-inner-spacing-min: #{$spacer-3};
324
+ --Layout-inner-spacing-max: #{$spacer-3};
325
+
326
+ @include breakpoint(lg) {
327
+ --Layout-inner-spacing-max: #{$spacer-4};
328
+ }
329
+ }
330
+
331
+ .PageLayout--innerSpacing-condensed {
332
+ --Layout-inner-spacing-min: #{$spacer-3};
333
+ --Layout-inner-spacing-max: #{$spacer-3};
334
+ }
335
+
336
+ // column gap
337
+
338
+ .PageLayout--columnGap-normal {
339
+ --Layout-column-gap: #{$spacer-3};
340
+
341
+ @include breakpoint(lg) {
342
+ --Layout-column-gap: #{$spacer-4};
343
+ }
344
+ }
345
+
346
+ .PageLayout--columnGap-condensed {
347
+ --Layout-column-gap: #{$spacer-3};
348
+ }
349
+
350
+ .PageLayout--columnGap-none {
351
+ // the `px` unit is mandatory for `calc()` execution. See https://stackoverflow.com/a/32518348
352
+ // stylelint-disable-next-line length-zero-no-unit
353
+ --Layout-column-gap: 0px;
354
+ }
355
+
356
+ // row gap
357
+
358
+ .PageLayout--rowGap-normal {
359
+ --Layout-row-gap: #{$spacer-3};
360
+
361
+ @include breakpoint(lg) {
362
+ --Layout-row-gap: #{$spacer-4};
363
+ }
364
+ }
365
+
366
+ .PageLayout--rowGap-none {
367
+ // the `px` unit is mandatory for `calc()` execution. See https://stackoverflow.com/a/32518348
368
+ // stylelint-disable length-zero-no-unit
369
+ --Layout-row-gap: 0px;
370
+ }
371
+
372
+ .PageLayout--rowGap-condensed {
373
+ --Layout-row-gap: #{$spacer-3};
374
+ }
375
+
376
+ // regions
377
+
378
+ .PageLayout-header,
379
+ .PageLayout-content,
380
+ .PageLayout-pane,
381
+ .PageLayout-footer {
382
+ // stylelint-disable-next-line primer/spacing
383
+ padding: var(--Layout-inner-spacing-min);
384
+ }
package/links/link.scss CHANGED
@@ -7,6 +7,11 @@
7
7
  text-decoration: underline;
8
8
  cursor: pointer;
9
9
  }
10
+
11
+ &:focus,
12
+ &:focus-visible {
13
+ outline-offset: 0;
14
+ }
10
15
  }
11
16
 
12
17
  .Link--primary {
@@ -49,7 +54,7 @@
49
54
  .Link--secondary,
50
55
  .Link--primary,
51
56
  .Link--muted {
52
- &:hover [class*='color-text'] {
57
+ &:hover [class*='color-fg'] {
53
58
  color: inherit !important;
54
59
  }
55
60
  }
@@ -16,6 +16,11 @@
16
16
 
17
17
  del code { text-decoration: inherit; }
18
18
 
19
+ samp {
20
+ // stylelint-disable-next-line primer/typography
21
+ font-size: 85%;
22
+ }
23
+
19
24
  pre {
20
25
  word-wrap: normal;
21
26
 
@@ -1,37 +1,49 @@
1
1
  // stylelint-disable selector-max-type
2
2
  // stylelint-disable selector-max-compound-selectors
3
3
 
4
- .markdown-body .footnotes {
5
- font-size: $h6-size;
6
- color: var(--color-fg-muted);
7
- border-top: $border;
4
+ .markdown-body {
5
+ [data-footnote-ref] {
6
+ &::before {
7
+ content: '[';
8
+ }
8
9
 
9
- ol {
10
- padding-left: $spacer-3;
10
+ &::after {
11
+ content: ']';
12
+ }
11
13
  }
12
14
 
13
- li {
14
- position: relative;
15
- }
15
+ .footnotes {
16
+ font-size: $h6-size;
17
+ color: var(--color-fg-muted);
18
+ border-top: $border;
16
19
 
17
- li:target::before {
18
- position: absolute;
19
- top: -$spacer-2;
20
- right: -$spacer-2;
21
- bottom: -$spacer-2;
22
- left: -$spacer-4;
23
- pointer-events: none;
24
- content: '';
25
- // stylelint-disable-next-line primer/borders
26
- border: 2px $border-style var(--color-accent-emphasis);
27
- border-radius: $border-radius;
28
- }
20
+ ol {
21
+ padding-left: $spacer-3;
22
+ }
29
23
 
30
- li:target {
31
- color: var(--color-fg-default);
32
- }
24
+ li {
25
+ position: relative;
26
+ }
27
+
28
+ li:target::before {
29
+ position: absolute;
30
+ top: -$spacer-2;
31
+ right: -$spacer-2;
32
+ bottom: -$spacer-2;
33
+ left: -$spacer-4;
34
+ pointer-events: none;
35
+ content: '';
36
+ // stylelint-disable-next-line primer/borders
37
+ border: 2px $border-style var(--color-accent-emphasis);
38
+ border-radius: $border-radius;
39
+ }
40
+
41
+ li:target {
42
+ color: var(--color-fg-default);
43
+ }
33
44
 
34
- .data-footnote-backref g-emoji {
35
- font-family: monospace;
45
+ .data-footnote-backref g-emoji {
46
+ font-family: monospace;
47
+ }
36
48
  }
37
49
  }
@@ -71,4 +71,21 @@
71
71
  font-size: 0.85em;
72
72
  color: var(--color-fg-muted);
73
73
  }
74
+
75
+ summary {
76
+ h1,
77
+ h2,
78
+ h3,
79
+ h4,
80
+ h5,
81
+ h6 {
82
+ display: inline-block;
83
+ }
84
+
85
+ h1,
86
+ h2 {
87
+ padding-bottom: 0;
88
+ border-bottom: 0;
89
+ }
90
+ }
74
91
  }
@@ -10,12 +10,12 @@
10
10
  box-sizing: content-box;
11
11
  background-color: var(--color-canvas-default);
12
12
 
13
- &[align=right] {
13
+ &[align='right'] {
14
14
  // stylelint-disable-next-line primer/spacing
15
15
  padding-left: 20px;
16
16
  }
17
17
 
18
- &[align=left] {
18
+ &[align='left'] {
19
19
  // stylelint-disable-next-line primer/spacing
20
20
  padding-right: 20px;
21
21
  }
@@ -24,7 +24,7 @@
24
24
  .emoji {
25
25
  max-width: none;
26
26
  vertical-align: text-top;
27
- // Override `<img>` styles so Emjois don't clash with zebra striping in our tables
27
+ // Override `<img>` styles so Emojis don't clash with zebra striping in our tables
28
28
  background-color: transparent;
29
29
  }
30
30
 
@@ -93,12 +93,4 @@
93
93
  margin-bottom: 0;
94
94
  }
95
95
  }
96
-
97
- sup > a::before {
98
- content: '[';
99
- }
100
-
101
- sup > a::after {
102
- content: ']';
103
- }
104
96
  }
@@ -13,11 +13,13 @@
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:
17
+ linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%),
18
+ var(--color-mktg-btn-bg) !important;
17
19
  border: 0;
18
20
  // stylelint-disable-next-line primer/borders
19
21
  border-radius: 0.375rem;
20
- transition: box-shadow 0.2s;
22
+ transition: box-shadow 0.2s, outline 0.2s ease;
21
23
  appearance: none !important;
22
24
 
23
25
  &::before {
@@ -42,29 +44,32 @@
42
44
  box-shadow: var(--color-mktg-btn-shadow-hover) !important;
43
45
  }
44
46
 
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
47
  &:hover,
52
48
  &:focus,
49
+ &:focus-visible,
53
50
  &.focus {
54
51
  &::before {
55
52
  opacity: 1;
56
53
  }
54
+ }
55
+
56
+ // fallback :focus state
57
+ &:focus {
58
+ @include focusOutline(2px, var(--color-accent-fg));
57
59
 
58
- &:disabled {
59
- box-shadow: none !important;
60
+ // remove fallback :focus if :focus-visible is supported
61
+ &:not(:focus-visible) {
62
+ outline: solid 1px transparent;
63
+ box-shadow: none;
60
64
  }
61
65
  }
62
66
 
63
- &:active {
64
- outline: none;
65
- // stylelint-disable-next-line primer/box-shadow
66
- box-shadow: 0 0 0 transparent;
67
+ // default focus state
68
+ &:focus-visible {
69
+ @include focusOutline(2px, var(--color-accent-fg));
70
+ }
67
71
 
72
+ &:active {
68
73
  &::before {
69
74
  opacity: 0.5 !important;
70
75
  }
@@ -91,11 +96,6 @@
91
96
  box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
92
97
  }
93
98
 
94
- &:focus,
95
- &.focus {
96
- box-shadow: var(--color-mktg-btn-shadow-hover-muted), var(--color-mktg-btn-shadow-focus) !important;
97
- }
98
-
99
99
  &:active {
100
100
  // stylelint-disable-next-line primer/box-shadow
101
101
  box-shadow: var(--color-fg-default) 0 0 0 3px inset !important;
@@ -119,11 +119,6 @@
119
119
  &:hover {
120
120
  box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
121
121
  }
122
-
123
- &:focus,
124
- .focus {
125
- box-shadow: var(--color-mktg-btn-shadow-hover-muted), var(--color-mktg-btn-shadow-focus) !important;
126
- }
127
122
  }
128
123
 
129
124
  .btn-signup-mktg {
@@ -137,9 +132,20 @@
137
132
  background: linear-gradient(180deg, rgba(52, 183, 89, 0.15) 0%, rgba(46, 164, 79, 0) 100%) !important;
138
133
  }
139
134
 
135
+ // fallback :focus state
140
136
  &:focus {
141
- // stylelint-disable-next-line primer/box-shadow
142
- box-shadow: rgba(46, 164, 79, 0.45) 0 0 0 4px !important;
137
+ @include focusOutline(2px, var(--color-accent-fg));
138
+
139
+ // remove fallback :focus if :focus-visible is supported
140
+ &:not(:focus-visible) {
141
+ outline: solid 1px transparent;
142
+ box-shadow: none;
143
+ }
144
+ }
145
+
146
+ // default focus state
147
+ &:focus-visible {
148
+ @include focusOutline(2px, var(--color-accent-fg));
143
149
  }
144
150
  }
145
151