@primer/brand-css 0.65.0-rc.0895cfab → 0.65.0-rc.77cd5c0b

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.
@@ -19,14 +19,84 @@
19
19
  );
20
20
  }
21
21
 
22
+ /* Heading size overrides for balanced and minimal variants */
23
+ .CTABanner--variant-balanced .CTABanner-heading {
24
+ font-weight: var(--brand-heading-weight-700);
25
+ font-size: var(--brand-text-size-700);
26
+ line-height: var(--brand-heading-lineHeight-700);
27
+ letter-spacing: var(--brand-heading-letterSpacing-700);
28
+ }
29
+
30
+ .CTABanner--variant-minimal .CTABanner-heading {
31
+ font-weight: var(--brand-heading-weight-400);
32
+ font-size: var(--brand-text-size-400);
33
+ line-height: var(--brand-text-lineHeight-400);
34
+ letter-spacing: var(--brand-heading-letterSpacing-400);
35
+ }
36
+
37
+ .CTABanner-grid {
38
+ gap: 0;
39
+ --brand-Grid-spacing-row: 0;
40
+ padding-inline: 0;
41
+ }
42
+
43
+ .CTABanner-grid-column--primary {
44
+ display: flex;
45
+ align-items: center;
46
+ }
47
+
48
+ .CTABanner-grid-column--secondary {
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ }
53
+
54
+ .CTABanner--variant-minimal .CTABanner-grid-column--secondary {
55
+ justify-content: flex-end;
56
+ }
57
+
58
+ .CTABanner--variant-balanced .CTABanner-grid-column--secondary {
59
+ justify-content: flex-start;
60
+ }
61
+
62
+ @media screen and (min-width: 63.25rem) {
63
+ .CTABanner--variant-balanced .CTABanner-grid-column--secondary {
64
+ justify-content: flex-end;
65
+ }
66
+ }
67
+
68
+ /* Stack on narrow viewports */
69
+ @media screen and (max-width: 63.24rem) {
70
+ .CTABanner--variant-minimal .CTABanner-grid-column--secondary {
71
+ justify-content: flex-start;
72
+ }
73
+
74
+ .CTABanner-grid-column--secondary {
75
+ margin-block-start: var(--base-size-24);
76
+ }
77
+ }
78
+
79
+ .CTABanner-outer-container--border {
80
+ border-block: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
81
+ }
82
+
22
83
  .CTABanner-container {
23
- border-radius: var(--brand-borderRadius-xlarge);
24
- padding: var(--base-size-40) var(--base-size-32);
84
+ padding: var(--base-size-64) var(--base-size-32);
25
85
  z-index: 1;
26
86
  width: 100%;
27
87
  box-sizing: border-box;
28
88
  }
29
89
 
90
+ .CTABanner--variant-balanced .CTABanner-container {
91
+ padding-inline: var(--base-size-20);
92
+ padding-block: var(--base-size-32);
93
+ }
94
+
95
+ .CTABanner--variant-minimal .CTABanner-container {
96
+ padding-inline: var(--base-size-20);
97
+ padding-block: var(--base-size-40);
98
+ }
99
+
30
100
  .CTABanner-content {
31
101
  display: flex;
32
102
  flex-direction: column;
@@ -36,10 +106,19 @@
36
106
  margin: 0 auto;
37
107
  }
38
108
 
109
+ .CTABanner--variant-minimal .CTABanner-content {
110
+ gap: 0;
111
+ }
112
+
113
+ .CTABanner--variant-balanced .CTABanner-content,
114
+ .CTABanner--variant-minimal .CTABanner-content {
115
+ max-width: 576px;
116
+ margin: 0;
117
+ }
118
+
39
119
  .CTABanner-container--background {
40
- border-radius: var(--brand-borderRadius-xlarge);
41
120
  background-repeat: no-repeat;
42
- background-color: var(--brand-CTABanner-narrow-background-color, var(--brand-CTABanner-background-color));
121
+ background-color: var(--brand-CTABanner-bgColor);
43
122
  background-image: var(--brand-CTABanner-narrow-background-image-src, var(--brand-CTABanner-background-image-src));
44
123
  background-size: var(--brand-CTABanner-narrow-background-image-size, var(--brand-CTABanner-background-image-size));
45
124
 
@@ -50,7 +129,13 @@
50
129
  }
51
130
 
52
131
  .CTABanner-container--border {
53
- border: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);
132
+ border: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
133
+ }
134
+
135
+ .CTABanner-container--border-gridlines {
136
+ border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
137
+ margin-inline: auto;
138
+ max-width: 534px; /* To match tablet for river */
54
139
  }
55
140
 
56
141
  .CTABanner-content--center {
@@ -65,22 +150,19 @@
65
150
  /* Medium breakpoint and up */
66
151
  @media screen and (min-width: 48rem) {
67
152
  .CTABanner-container {
68
- padding: var(--base-size-80) var(--base-size-64);
153
+ padding: var(--base-size-80) var(--base-size-36);
69
154
  }
70
- }
71
155
 
72
- /* Large breakpoint and up */
73
- @media screen and (min-width: 63.25rem) {
74
- .CTABanner-content {
75
- gap: var(--base-size-24);
156
+ .CTABanner--variant-balanced .CTABanner-container {
157
+ padding: var(--base-size-36);
158
+ padding-block-end: var(--base-size-48);
76
159
  }
77
- .CTABanner-container {
78
- padding: var(--base-size-128) var(--base-size-64);
160
+
161
+ .CTABanner--variant-minimal .CTABanner-container {
162
+ padding: var(--base-size-36);
163
+ padding-block: var(--base-size-48);
79
164
  }
80
- }
81
165
 
82
- /* Regular */
83
- @media screen and (min-width: 48rem) {
84
166
  .CTABanner-container--background {
85
167
  background-color: var(--brand-CTABanner-regular-background-color, var(--brand-CTABanner-background-color));
86
168
  background-image: var(--brand-CTABanner-regular-background-image-src, var(--brand-CTABanner-background-image-src));
@@ -92,6 +174,28 @@
92
174
  }
93
175
  }
94
176
 
177
+ /* Large breakpoint and up */
178
+ @media screen and (min-width: 63.25rem) {
179
+ .CTABanner-content {
180
+ gap: var(--base-size-24);
181
+ }
182
+ .CTABanner--variant-balanced .CTABanner-content {
183
+ gap: var(--base-size-16);
184
+ }
185
+ .CTABanner-container {
186
+ padding: var(--base-size-96) var(--base-size-64);
187
+ max-width: 100%;
188
+ }
189
+
190
+ .CTABanner--variant-balanced .CTABanner-container {
191
+ padding: var(--base-size-64);
192
+ }
193
+
194
+ .CTABanner--variant-minimal .CTABanner-container {
195
+ padding: var(--base-size-64);
196
+ }
197
+ }
198
+
95
199
  /* Wide */
96
200
  @media screen and (min-width: 80rem) {
97
201
  .CTABanner-container--background {
@@ -105,3 +209,14 @@
105
209
  );
106
210
  }
107
211
  }
212
+
213
+ .CTABanner-image {
214
+ width: 100%;
215
+ height: auto;
216
+ }
217
+
218
+ .CTABanner--variant-balanced .CTABanner-image {
219
+ max-width: 476px;
220
+ width: 100%;
221
+ height: auto;
222
+ }
@@ -2,6 +2,7 @@
2
2
  position: absolute;
3
3
  width: 100%;
4
4
  z-index: 2;
5
+ border-block: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
5
6
  }
6
7
 
7
8
  .SubNav__container--with-anchor-nav {
@@ -9,11 +10,15 @@
9
10
  position: relative;
10
11
  }
11
12
 
13
+ .SubNav__container--with-anchor-nav .SubNav {
14
+ border-block: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
15
+ }
16
+
12
17
  .SubNav {
13
18
  width: 100%;
14
19
  display: flex;
15
- padding: var(--base-size-16);
16
20
  z-index: 1;
21
+ background-color: var(--brand-SubNav-bgColor);
17
22
  }
18
23
 
19
24
  [data-color-mode='dark'] .SubNav {
@@ -21,15 +26,20 @@
21
26
  -moz-osx-font-smoothing: grayscale;
22
27
  }
23
28
 
24
- .SubNav__heading {
29
+ .SubNav__heading,
30
+ .SubNav__subHeading {
25
31
  display: block;
26
- font-weight: var(--base-text-weight-medium);
32
+ font-size: calc(var(--base-size-16) - 1px); /* One-off override to match design */
33
+ line-height: calc(var(--base-size-16) - 1px); /* One-off override to match design */
34
+ font-weight: var(--brand-text-subhead-weight-medium);
27
35
  color: var(--brand-color-text-default);
28
36
  font-family: var(--brand-heading-fontFamily);
29
37
  text-decoration: none;
30
38
  }
31
39
 
32
- .SubNav__heading:hover {
40
+ .SubNav__heading:hover,
41
+ .SubNav__subHeading:hover,
42
+ .SubNav__link:hover .SubNav__link-label {
33
43
  color: var(--brand-color-text-muted);
34
44
  text-decoration: none !important; /* dotcom override */
35
45
  }
@@ -39,10 +49,17 @@
39
49
  }
40
50
 
41
51
  .SubNav__heading-container {
52
+ min-height: 60px;
42
53
  position: relative;
43
54
  z-index: 9998;
44
- display: inline-block;
45
- margin-inline-end: var(--base-size-16);
55
+ display: flex;
56
+ align-items: center;
57
+ padding: var(--base-size-16);
58
+ border-inline-end: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
59
+ }
60
+
61
+ .SubNav__heading-container + .SubNav__heading-container {
62
+ padding-inline-start: var(--base-size-24);
46
63
  }
47
64
 
48
65
  .SubNav--has-shadow {
@@ -80,16 +97,6 @@
80
97
  display: none;
81
98
  }
82
99
 
83
- .SubNav__heading-separator {
84
- position: relative;
85
- top: 0;
86
- color: var(--brand-color-text-muted);
87
- min-width: var(--base-size-8);
88
- min-height: var(--base-size-16);
89
- display: inline-flex;
90
- align-items: center;
91
- }
92
-
93
100
  /*
94
101
  * Anchor Nav Submenu
95
102
  */
@@ -142,8 +149,8 @@
142
149
 
143
150
  .SubNav__sub-menu--anchor {
144
151
  display: flex;
145
- padding-block-start: var(--base-size-12);
146
- padding-block-end: var(--base-size-20);
152
+ padding-block: var(--base-size-12);
153
+ border-block: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
147
154
  }
148
155
 
149
156
  .SubNav__sub-menu--anchor .SubNav__sub-menu-list {
@@ -154,28 +161,20 @@
154
161
  gap: var(--base-size-20);
155
162
  }
156
163
 
157
- .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label {
158
- color: var(--brand-color-text-default);
159
- }
160
-
161
- .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label::after,
162
- .SubNav__link:hover .SubNav__link-label::after,
163
- .SubNav__link:focus-visible .SubNav__link-label::after,
164
- .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after {
165
- opacity: 1;
166
- transform: scale(0.8, 1);
164
+ .SubNav__link-label {
165
+ font-weight: 450; /* FIXME: unsupported in our font weight primitives */
167
166
  }
168
167
 
169
- .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label::after,
170
- .SubNav__link:active .SubNav__link-label::after {
171
- border-color: var(--brand-color-text-default);
172
- transform: scale(0.9, 1);
168
+ .SubNav__sub-menu--anchor .SubNav__link-label {
169
+ padding: var(--base-size-6) var(--base-size-12);
170
+ background-color: transparent;
171
+ border-radius: var(--brand-borderRadius-full);
172
+ transition: background-color var(--brand-animation-duration-default) var(--brand-animation-easing-default),
173
+ color var(--brand-animation-duration-default) var(--brand-animation-easing-default);
173
174
  }
174
175
 
175
- .SubNav__link[data-active='true'] .SubNav__link-label::after,
176
- .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label::after {
177
- border-color: var(--brand-color-text-default);
178
- opacity: 1;
176
+ .SubNav__sub-menu--anchor .SubNav__link--is-in-view .SubNav__link-label {
177
+ background-color: var(--brand-SubNav-color-link-bgColor);
179
178
  }
180
179
 
181
180
  .SubNav__link:focus-visible .SubNav__link-label::after,
@@ -183,36 +182,13 @@
183
182
  opacity: 0;
184
183
  }
185
184
 
186
- .SubNav__link:hover .SubNav__link-label::after,
187
185
  .SubNav__link[aria-current]:not([aria-current='false']) * {
188
186
  color: var(--brand-SubNav-color-link-active);
189
187
  text-decoration: none !important; /* dotcom override */
190
188
  }
191
189
 
192
- .SubNav__link-label::after,
193
- .SubNav__subHeading::after {
194
- content: '';
195
- position: absolute;
196
- bottom: calc(var(--base-size-2) * -1);
197
- left: 0;
198
- width: 100%;
199
- height: 2px;
200
- border-width: 2px;
201
- border-bottom: var(--base-size-2) solid var(--brand-color-text-muted);
202
- transition: opacity var(--brand-animation-duration-fast), transform var(--brand-animation-duration-fast),
203
- border-color var(--brand-animation-duration-fast);
204
- opacity: 1;
205
- transform: scale(0);
206
- transform-origin: center;
207
- }
208
-
209
- .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after {
210
- border-color: var(--brand-color-text-default);
211
- }
212
-
213
190
  .SubNav__link:hover .SubNav__link-label {
214
191
  transition: color var(--brand-animation-duration-fast) var(--brand-animation-easing-default);
215
- color: var(--brand-SubNav-color-link-active);
216
192
  }
217
193
 
218
194
  .SubNav__link:hover .SubNav__link-label::after {
@@ -270,6 +246,17 @@
270
246
  display: block;
271
247
  }
272
248
 
249
+ .SubNav--open .SubNav--header-container-outer {
250
+ display: flex;
251
+ flex-direction: column;
252
+ max-height: var(--subnav-available-height, 100dvh);
253
+ overflow: hidden;
254
+ }
255
+
256
+ .SubNav--open .SubNav__header-container {
257
+ flex-shrink: 0;
258
+ }
259
+
273
260
  .SubNav--open + .SubNav__anchor-menu-outer-container {
274
261
  z-index: -1;
275
262
  }
@@ -289,6 +276,8 @@
289
276
  display: flex;
290
277
  width: 100%;
291
278
  white-space: pre;
279
+ position: relative;
280
+ z-index: 9998;
292
281
  }
293
282
 
294
283
  .SubNav__heading-separator {
@@ -304,49 +293,55 @@
304
293
  justify-content: center;
305
294
  z-index: 9998;
306
295
  display: none;
296
+ padding-inline: var(--base-size-8);
307
297
  }
308
298
 
309
299
  .SubNav__links-overlay--open {
310
300
  display: flex;
311
301
  flex-direction: column;
312
302
  gap: var(--base-size-8);
313
- padding-block-start: var(--base-size-16);
314
- padding-block-end: var(--base-size-16);
315
- }
316
-
317
- .SubNav--has-sub-heading .SubNav__links-overlay--open {
318
- border-top: var(--brand-borderWidth-thin) solid var(--brand-color-border-default);
319
- margin-block-start: var(--base-size-16);
303
+ padding-block: var(--base-size-16);
304
+ border-block-start: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
305
+ justify-content: flex-start;
306
+ overflow-y: auto;
307
+ min-height: 0;
320
308
  }
321
309
 
322
310
  .SubNav__links-overlay--open .SubNav__link:hover .SubNav__link-label {
323
311
  color: var(--brand-color-text-default);
324
312
  }
325
313
 
326
- .SubNav__links-overlay--open .SubNav__link--has-sub-menu:hover .SubNav__link-label {
327
- color: var(--brand-color-text-muted);
328
- }
329
-
330
314
  .SubNav__overlay-toggle {
331
- background-color: transparent;
332
- border: none;
333
- cursor: pointer;
334
315
  display: flex;
335
316
  position: relative;
336
317
  width: 100%;
337
- order: 1;
338
318
  z-index: 9999;
339
- padding: 0;
340
319
  justify-content: flex-end;
320
+ padding-inline-end: var(--base-size-16);
341
321
  }
342
322
 
343
323
  .SubNav--has-sub-heading:not(.SubNav--subHeadingActive) .SubNav__overlay-toggle {
344
- margin-block-start: var(--base-size-12);
324
+ border-block-start: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
325
+ display: block;
326
+ padding-block: var(--base-size-12);
327
+ margin-block: 0;
345
328
  }
346
329
 
347
330
  .SubNav__overlay-toggle-content {
348
- justify-content: space-between;
349
331
  width: 100%;
332
+ padding-inline-start: var(--base-size-16);
333
+ }
334
+
335
+ .SubNav__overlay-toggle-label {
336
+ background-color: var(--brand-SubNav-color-link-bgColor);
337
+ border: none;
338
+ border-radius: var(--brand-borderRadius-full);
339
+ padding: var(--base-size-4) var(--base-size-12);
340
+ gap: var(--base-size-6);
341
+ display: flex;
342
+ align-items: center;
343
+ cursor: pointer;
344
+ font: inherit;
350
345
  }
351
346
 
352
347
  .SubNav--full-width .SubNav__overlay-toggle {
@@ -367,10 +362,26 @@
367
362
  color: var(--brand-SubNav-color-link-active);
368
363
  }
369
364
 
365
+ .SubNav__links-overlay--open .SubNav__link {
366
+ padding: var(--base-size-8);
367
+ }
368
+
369
+ .SubNav__links-overlay--open .SubNav__link[aria-current]:not([aria-current='false']) {
370
+ display: inline-block;
371
+ background-color: var(--brand-SubNav-color-link-bgColor);
372
+ border-radius: var(--brand-borderRadius-full);
373
+ padding: var(--base-size-4) var(--base-size-12);
374
+ margin-inline-start: var(--base-size-8);
375
+ }
376
+
377
+ .SubNav__links-overlay--open .SubNav__link:hover {
378
+ background-color: var(--brand-SubNav-color-link-bgColor);
379
+ border-radius: var(--brand-borderRadius-medium);
380
+ }
381
+
370
382
  .SubNav__links-overlay--open .SubNav__link,
371
383
  .SubNav__links-overlay--open .SubNav__action-container {
372
384
  display: block;
373
- padding: var(--base-size-8) 0;
374
385
  animation: fade-in 0.3s var(--brand-animation-easing-glide) forwards;
375
386
  }
376
387
 
@@ -391,6 +402,7 @@
391
402
  padding: 0;
392
403
  margin: 0;
393
404
  padding-inline-start: var(--base-size-16);
405
+ padding-block-start: var(--base-size-8);
394
406
  }
395
407
 
396
408
  .SubNav__sub-menu--dropdown .SubNav__link:hover .SubNav__link-label {
@@ -422,8 +434,6 @@
422
434
  }
423
435
 
424
436
  .SubNav__link-label {
425
- font-size: var(--brand-text-size-200);
426
- font-weight: var(--base-text-weight-medium);
427
437
  padding-block-end: var(--base-size-6);
428
438
  }
429
439
 
@@ -447,19 +457,7 @@
447
457
  display: block;
448
458
  white-space: pre;
449
459
  position: relative;
450
- }
451
-
452
- .SubNav .SubNav__link-label::after {
453
- opacity: 0;
454
- transform: scale(0);
455
- bottom: 0;
456
- }
457
-
458
- .SubNav__link:hover .SubNav__link-label::after,
459
- .SubNav__link:focus-visible .SubNav__link-label::after,
460
- .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after {
461
- opacity: 1;
462
- transform: scale(1);
460
+ top: var(--base-size-2);
463
461
  }
464
462
  }
465
463
 
@@ -481,7 +479,7 @@
481
479
  .SubNav__heading:focus-visible,
482
480
  .SubNav__subHeading:focus-visible,
483
481
  .SubNav__sub-menu-toggle:focus-visible,
484
- .SubNav__overlay-toggle:focus-visible {
482
+ .SubNav__overlay-toggle-label:focus-visible {
485
483
  outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);
486
484
  outline-offset: var(--base-size-2);
487
485
  }
@@ -492,20 +490,24 @@
492
490
  white-space: nowrap;
493
491
  }
494
492
 
495
- .SubNav__subHeading[aria-current]:not([aria-current='false'])::after,
496
- .SubNav__subHeading:hover::after {
497
- border-color: var(--brand-color-text-default);
498
- opacity: 1;
499
- transform: scale(0.8, 1);
500
- }
501
-
502
- .SubNav__subHeading:focus-visible::after {
503
- opacity: 0;
493
+ .SubNav__subHeading[aria-current]:not([aria-current='false']) {
494
+ background-color: var(--brand-SubNav-color-link-bgColor);
495
+ border: none;
496
+ border-radius: var(--brand-borderRadius-full);
497
+ padding: var(--base-size-6) var(--base-size-12);
504
498
  }
505
499
 
506
500
  @media screen and (min-width: 48rem) {
507
- .SubNav {
508
- padding: var(--base-size-16) var(--base-size-24);
501
+ .SubNav__heading-container {
502
+ padding-inline: var(--base-size-24);
503
+ }
504
+
505
+ .SubNav__overlay-toggle-content {
506
+ padding-inline-start: var(--base-size-24);
507
+ }
508
+
509
+ .SubNav__links-overlay--open {
510
+ padding: var(--base-size-24);
509
511
  }
510
512
 
511
513
  .SubNav--full-width {
@@ -527,16 +529,24 @@
527
529
 
528
530
  @media screen and (min-width: 63.25rem) {
529
531
  .SubNav {
530
- padding: var(--base-size-16) var(--base-size-32);
531
532
  align-items: center;
532
533
  display: flex;
533
534
  z-index: 92;
535
+ padding-inline: var(--base-size-32);
536
+ }
537
+
538
+ .SubNav__links-overlay--open {
539
+ padding: 0;
534
540
  }
535
541
 
536
542
  .SubNav:has(+ .SubNav__anchor-menu-container) {
537
543
  padding-block-end: 0;
538
544
  }
539
545
 
546
+ .SubNav__heading-container {
547
+ padding-inline-start: 0;
548
+ }
549
+
540
550
  .SubNav--full-width {
541
551
  padding-inline: 0;
542
552
  }
@@ -549,11 +559,6 @@
549
559
  padding-block-end: 1px;
550
560
  }
551
561
 
552
- .SubNav__heading {
553
- font-size: calc(var(--base-size-20) - 2px);
554
- line-height: var(--base-size-24);
555
- }
556
-
557
562
  .SubNav__heading-separator {
558
563
  margin-inline-end: var(--base-size-20);
559
564
  display: inline-flex;
@@ -569,26 +574,18 @@
569
574
  align-items: center;
570
575
  }
571
576
 
572
- .SubNav__heading-container {
573
- margin-inline-end: var(--base-size-20);
574
- }
575
-
576
577
  .SubNav__header-container {
577
578
  display: flex;
578
579
  align-items: center;
579
580
  }
580
581
 
581
- .SubNav__subHeading {
582
- font-size: var(--brand-text-size-100);
583
- line-height: var(--brand-text-lineHeight-100);
584
- }
585
-
586
582
  .SubNav__links-overlay {
587
583
  align-items: center;
588
584
  display: flex;
589
585
  gap: var(--base-size-20);
590
586
  z-index: 92;
591
587
  flex-grow: 1;
588
+ padding-inline-start: var(--base-size-24);
592
589
  }
593
590
 
594
591
  .SubNav__link {
@@ -596,6 +593,8 @@
596
593
  transition: color 0.2s var(--brand-animation-easing-glide);
597
594
  position: relative;
598
595
  padding: var(--base-size-4) 0;
596
+ /* Optical alignment */
597
+ top: 1px;
599
598
  }
600
599
 
601
600
  .SubNav__link-label {
@@ -620,22 +619,20 @@
620
619
 
621
620
  .SubNav__sub-menu.SubNav__sub-menu--dropdown {
622
621
  background-clip: padding-box;
623
- background-color: var(--brand-SubNav-color-subMenu-bgColor);
624
- border: var(--borderWidth-thin, max(1px, 0.0625rem)) solid var(--borderColor-default, var(--color-border-default));
625
- border-radius: var(--brand-borderRadius-xlarge, 0.375rem);
626
- box-shadow: var(--shadow-floating-legacy, var(--color-shadow-large));
622
+ background-color: var(--brand-color-canvas-default);
623
+ border: var(--brand-color-border-muted) solid var(--brand-borderWidth-thin);
624
+ border-radius: var(--brand-borderRadius-medium);
627
625
  left: 0;
628
626
  list-style: none;
629
627
  margin-block-start: var(--base-size-8);
630
- padding: var(--base-size-24);
631
- padding-inline-end: var(--base-size-24);
628
+ padding: var(--base-size-8);
632
629
  position: absolute;
633
- top: 100%;
630
+ top: 90%;
634
631
  z-index: 9998;
635
632
  transition-timing-function: var(--brand-animation-easing-glide);
636
633
  transition-duration: var(--brand-animation-duration-fast);
637
634
  transition-property: opacity, transform;
638
- left: calc(var(--base-size-4) / 4 * -16);
635
+ left: var(--base-size-4);
639
636
  visibility: hidden;
640
637
  opacity: 0;
641
638
  transform: scale(0.99) translateY(-0.7em) translateX(-8px);
@@ -650,7 +647,6 @@
650
647
  visibility: visible;
651
648
  opacity: 1;
652
649
  transform: scale(1) translateY(0) translateX(-8px);
653
- box-shadow: var(--brand-SubNav-shadow);
654
650
  }
655
651
 
656
652
  .SubNav__sub-menu-toggle {
@@ -672,10 +668,6 @@
672
668
  display: block;
673
669
  }
674
670
 
675
- .SubNav__sub-menu--dropdown .SubNav__link:hover .SubNav__link-label {
676
- color: var(--brand-color-text-default) !important;
677
- }
678
-
679
671
  .SubNav__sub-menu--dropdown .SubNav__link-label::after {
680
672
  opacity: 1;
681
673
  transform: scale(0);
@@ -694,18 +686,59 @@
694
686
  padding: var(--base-size-4) 0;
695
687
  }
696
688
 
697
- /* Show underline on submenu parent when child has aria-current */
698
- .SubNav__link--has-sub-menu:has(.SubNav__link[aria-current]:not([aria-current='false']))
699
- > .SubNav__link
700
- .SubNav__link-label::after {
701
- opacity: 1;
702
- transform: scale(0.8, 1);
689
+ /* Show pill on submenu parent */
690
+ .SubNav__link--has-active-sub-menu {
691
+ background-color: var(--brand-SubNav-color-link-bgColor);
692
+ border-radius: var(--brand-borderRadius-full);
693
+ padding: 0 var(--base-size-8) 0 0;
694
+ gap: 0;
703
695
  }
704
696
 
705
- .SubNav__link--has-sub-menu .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label::after,
706
- .SubNav__link--has-sub-menu .SubNav__link:hover .SubNav__link-label::after {
707
- opacity: 1;
708
- transform: scale(1);
697
+ .SubNav__link--has-active-sub-menu > .SubNav__link {
698
+ padding: var(--base-size-4) 0 var(--base-size-4) var(--base-size-12);
699
+ }
700
+
701
+ .SubNav__sub-menu.SubNav__sub-menu--dropdown .SubNav__link {
702
+ padding: var(--base-size-12);
703
+ }
704
+
705
+ /* Active link pill styling */
706
+ .SubNav__links-overlay .SubNav__link[aria-current]:not([aria-current='false']) {
707
+ background-color: var(--brand-SubNav-color-link-bgColor);
708
+ border-radius: var(--brand-borderRadius-full);
709
+ padding: var(--base-size-4) var(--base-size-12);
710
+ line-height: 1.1em;
711
+ }
712
+
713
+ /* Firefox optical alignment fix */
714
+ @supports (-moz-appearance: none) {
715
+ .SubNav__links-overlay .SubNav__link[aria-current]:not([aria-current='false']) .SubNav__link-label {
716
+ position: relative;
717
+ top: 1px;
718
+ }
719
+
720
+ .SubNav__links-overlay
721
+ .SubNav__link--has-sub-menu
722
+ .SubNav__link[aria-current]:not([aria-current='false'])
723
+ .SubNav__link-label {
724
+ top: 0;
725
+ }
726
+ }
727
+
728
+ .SubNav__links-overlay .SubNav__link--has-active-sub-menu .SubNav__link[aria-current]:not([aria-current='false']) {
729
+ padding-inline-end: var(--base-size-4);
730
+ }
731
+
732
+ .SubNav__sub-menu.SubNav__sub-menu--dropdown .SubNav__link[aria-current]:not([aria-current='false']) {
733
+ background-color: transparent;
734
+ border-radius: var(--brand-borderRadius-medium);
735
+ padding: var(--base-size-4) var(--base-size-8) var(--base-size-4) var(--base-size-12);
736
+ top: unset;
737
+ }
738
+
739
+ .SubNav__sub-menu.SubNav__sub-menu--dropdown .SubNav__link:hover {
740
+ background-color: var(--brand-SubNav-color-link-bgColor);
741
+ border-radius: var(--brand-borderRadius-medium);
709
742
  }
710
743
 
711
744
  .SubNav__sub-menu-icon {
@@ -714,10 +747,6 @@
714
747
  transition: transform var(--brand-animation-duration-fast);
715
748
  }
716
749
 
717
- .SubNav__link--has-sub-menu:hover .SubNav__sub-menu-icon {
718
- transform: translateY(2px);
719
- }
720
-
721
750
  .SubNav__sub-menu--anchor {
722
751
  padding-inline: var(--base-size-32);
723
752
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/brand-css",
3
- "version": "0.65.0-rc.0895cfab",
3
+ "version": "0.65.0-rc.77cd5c0b",
4
4
  "description": "CSS stylesheets for Primer Brand components",
5
5
  "keywords": [
6
6
  "primer",