@primer/brand-css 0.68.0-rc.982c487b → 0.68.0

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.
@@ -8,12 +8,13 @@
8
8
  vertical-align: middle;
9
9
  align-items: center;
10
10
  justify-content: center;
11
- transition: box-shadow var(--brand-animation-duration-faster);
11
+ transition: background-color 0.2s, border-color 0.2s;
12
12
  text-decoration: none;
13
- border-radius: var(--brand-borderRadius-medium);
13
+ border-radius: var(--base-size-6);
14
14
  cursor: pointer;
15
- border: solid var(--brand-borderWidth-thick) transparent;
15
+ border: solid var(--brand-borderWidth-thin) transparent;
16
16
  background: none;
17
+ box-sizing: border-box;
17
18
  display: inline-flex;
18
19
  gap: var(--brand-control-medium-gap);
19
20
  }
@@ -34,6 +35,10 @@
34
35
  cursor: not-allowed;
35
36
  }
36
37
 
38
+ .Button--size-small .Button__text {
39
+ display: flex;
40
+ }
41
+
37
42
  .Button__text {
38
43
  position: relative;
39
44
  }
@@ -77,7 +82,7 @@
77
82
  }
78
83
 
79
84
  .Button--primary:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true']):hover {
80
- background: var(--brand-button-primary-bgColor-hover);
85
+ background-color: var(--brand-button-primary-bgColor-hover);
81
86
  }
82
87
 
83
88
  .Button--primary:not(.Button[disabled], .Button[aria-disabled='true']):active,
@@ -109,21 +114,20 @@
109
114
  /* secondary */
110
115
 
111
116
  .Button--secondary {
112
- transition: background var(--brand-animation-duration-faster), border-color var(--brand-animation-duration-faster);
113
- background: var(--brand-button-secondary-bgColor-rest);
117
+ background-color: var(--brand-button-secondary-bgColor-rest);
114
118
  border-color: var(--brand-button-secondary-borderColor-rest);
115
119
  color: var(--brand-button-secondary-fgColor-rest);
116
120
  backdrop-filter: blur(var(--base-size-20));
117
121
  }
118
122
 
119
123
  .Button--secondary:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true']):hover {
120
- background: var(--brand-button-secondary-bgColor-hover);
124
+ background-color: var(--brand-button-secondary-bgColor-hover);
121
125
  border-color: var(--brand-button-secondary-borderColor-hover);
122
126
  }
123
127
 
124
128
  .Button--secondary:not(.Button[disabled], .Button[aria-disabled='true']):active,
125
129
  .Button--secondary[aria-expanded='true'] {
126
- background: var(--brand-button-secondary-bgColor-active);
130
+ background-color: var(--brand-button-secondary-bgColor-active);
127
131
  border-color: var(--brand-button-secondary-borderColor-active);
128
132
  }
129
133
 
@@ -144,8 +148,7 @@
144
148
  /* subtle */
145
149
 
146
150
  .Button--subtle {
147
- transition: background var(--brand-animation-duration-faster), border-color var(--brand-animation-duration-faster);
148
- background: var(--brand-button-subtle-bgColor-rest);
151
+ background-color: var(--brand-button-subtle-bgColor-rest);
149
152
  border-width: var(--brand-borderWidth-thin);
150
153
  border-color: var(--brand-button-subtle-borderColor-rest);
151
154
  color: var(--brand-color-text-default);
@@ -153,13 +156,13 @@
153
156
  }
154
157
 
155
158
  .Button--subtle:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true']):hover {
156
- background: var(--brand-button-subtle-bgColor-hover);
159
+ background-color: var(--brand-button-subtle-bgColor-hover);
157
160
  border-color: var(--brand-button-subtle-borderColor-hover);
158
161
  }
159
162
 
160
163
  .Button--subtle:not(.Button[disabled], .Button[aria-disabled='true']):active,
161
164
  .Button--subtle[aria-expanded='true'] {
162
- background: var(--brand-button-subtle-bgColor-active);
165
+ background-color: var(--brand-button-subtle-bgColor-active);
163
166
  border-color: var(--brand-button-subtle-borderColor-active);
164
167
  }
165
168
 
@@ -186,7 +189,7 @@
186
189
 
187
190
  .Button--size-medium {
188
191
  min-height: var(--brand-control-medium-size);
189
- padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-spacious);
192
+ padding: var(--brand-control-medium-paddingBlock-condensed) var(--base-size-20);
190
193
  }
191
194
 
192
195
  .Button--size-large {
@@ -246,7 +246,7 @@
246
246
  .Hero-label {
247
247
  text-transform: uppercase;
248
248
  letter-spacing: 1px;
249
- margin-block-end: var(--base-size-16);
249
+ margin-block-end: calc(var(--base-size-16) - var(--base-size-2));
250
250
  display: flex;
251
251
  align-items: center;
252
252
  }
@@ -44,7 +44,7 @@
44
44
 
45
45
  .Icon--background {
46
46
  padding: var(--base-size-12);
47
- border-radius: var(--brand-borderRadius-medium);
47
+ border-radius: var(--base-size-12);
48
48
  }
49
49
 
50
50
  .Icon--color-default {
@@ -68,18 +68,7 @@
68
68
  .LogoSuite__logobar--variant-emphasis img,
69
69
  .LogoSuite__logobar--variant-emphasis a {
70
70
  width: auto;
71
- height: var(--base-size-28);
72
- }
73
-
74
- @media screen and (min-width: 48rem) {
75
- .LogoSuite__logobar--variant-muted svg,
76
- .LogoSuite__logobar--variant-muted img,
77
- .LogoSuite__logobar--variant-muted a,
78
- .LogoSuite__logobar--variant-emphasis svg,
79
- .LogoSuite__logobar--variant-emphasis img,
80
- .LogoSuite__logobar--variant-emphasis a {
81
- height: var(--base-size-32);
82
- }
71
+ height: var(--base-size-32);
83
72
  }
84
73
 
85
74
  .LogoSuite__logobar--variant-muted svg,
@@ -241,7 +230,6 @@
241
230
  .LogoSuite--gridline-expressive .LogoSuite__content {
242
231
  padding-inline: 0;
243
232
  gap: 0;
244
- max-width: 618px; /* From the Figma design */
245
233
  }
246
234
 
247
235
  .LogoSuite--gridline-expressive .LogoSuite__textContainer {
@@ -276,8 +264,12 @@
276
264
  }
277
265
 
278
266
  @media screen and (min-width: 48rem) {
267
+ .LogoSuite--gridline-expressive {
268
+ padding-inline: 91px;
269
+ }
270
+
279
271
  .LogoSuite--gridline-expressive .LogoSuite__logobarContainer {
280
- padding: var(--base-size-36);
272
+ padding: var(--base-size-40);
281
273
  }
282
274
  .LogoSuite--gridline-expressive .LogoSuite__content {
283
275
  border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
@@ -288,6 +280,10 @@
288
280
  }
289
281
 
290
282
  @media screen and (min-width: 64rem) {
283
+ .LogoSuite--gridline-expressive {
284
+ padding-inline: 0;
285
+ }
286
+
291
287
  .LogoSuite--gridline-expressive .LogoSuite__content {
292
288
  max-width: 1280px;
293
289
  }
@@ -0,0 +1,358 @@
1
+ .MediaPlaylist {
2
+ padding-block-start: var(--base-size-36);
3
+ padding-inline: var(--base-size-20);
4
+ }
5
+
6
+ @media screen and (max-width: 63.24rem) {
7
+ .MediaPlaylist {
8
+ width: 100%;
9
+ max-width: 38.625rem;
10
+ margin-inline: auto;
11
+ padding: 0;
12
+ }
13
+ }
14
+
15
+ .MediaPlaylist__layout {
16
+ display: flex;
17
+ flex-direction: column;
18
+ background: var(--brand-MediaPlaylist-bgColor);
19
+ }
20
+
21
+ .MediaPlaylist__playlist {
22
+ order: 2;
23
+ min-width: 0;
24
+ border-block-start: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
25
+ }
26
+
27
+ .MediaPlaylist__heading {
28
+ display: flex;
29
+ min-height: var(--base-size-48);
30
+ align-items: center;
31
+ gap: var(--base-size-8);
32
+ padding: var(--base-size-12) var(--base-size-16);
33
+ border-block-end: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
34
+ color: var(--brand-color-text-muted);
35
+ font-family: var(--brand-fontStack-monospace);
36
+ font-size: var(--brand-text-size-100);
37
+ line-height: var(--brand-text-lineHeight-100);
38
+ text-transform: uppercase;
39
+ }
40
+
41
+ .MediaPlaylist__headingLabel {
42
+ margin: 0;
43
+ color: inherit;
44
+ font-family: inherit;
45
+ font-size: inherit;
46
+ font-weight: inherit;
47
+ letter-spacing: inherit;
48
+ line-height: inherit;
49
+ text-transform: inherit;
50
+ }
51
+
52
+ .MediaPlaylist__headingCounter {
53
+ display: inline-flex;
54
+ align-items: center;
55
+ gap: var(--base-size-8);
56
+ color: var(--brand-color-text-default);
57
+ }
58
+
59
+ .MediaPlaylist__headingCounter::before {
60
+ content: '•';
61
+ color: var(--brand-color-text-muted);
62
+ }
63
+
64
+ .MediaPlaylist__mediaPanels {
65
+ order: 1;
66
+ width: 100%;
67
+ padding: var(--base-size-16);
68
+ }
69
+
70
+ .MediaPlaylist__mediaPanel {
71
+ min-width: 0;
72
+ }
73
+
74
+ .MediaPlaylist__mediaPanel[hidden] {
75
+ display: none;
76
+ }
77
+
78
+ .MediaPlaylist__panel {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: var(--base-size-20);
82
+ width: 100%;
83
+ }
84
+
85
+ .MediaPlaylist__panelContent {
86
+ max-width: var(--brand-Prose-lineLength);
87
+ }
88
+
89
+ .MediaPlaylist__media {
90
+ overflow: hidden;
91
+ background-color: var(--base-color-scale-black-0);
92
+ }
93
+
94
+ .MediaPlaylist__media :is(img, picture, video, iframe) {
95
+ display: block;
96
+ width: 100%;
97
+ max-width: 100%;
98
+ }
99
+
100
+ .MediaPlaylist__tablist {
101
+ order: 2;
102
+ display: flex;
103
+ flex-direction: column;
104
+ overflow-x: hidden;
105
+ }
106
+
107
+ .MediaPlaylist--overflowItems .MediaPlaylist__tablist {
108
+ max-block-size: calc((3 * var(--base-size-64)) + (6 * var(--base-size-12)));
109
+ overflow-y: auto;
110
+ overscroll-behavior: contain;
111
+ scroll-padding-block: var(--base-size-24);
112
+ }
113
+
114
+ .MediaPlaylist__pagination {
115
+ order: 3;
116
+ display: flex;
117
+ justify-content: center;
118
+ margin: 0;
119
+ padding: var(--base-size-12) var(--base-size-16) var(--base-size-16);
120
+ border-block-start: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
121
+ }
122
+
123
+ .MediaPlaylist__item {
124
+ position: relative;
125
+ min-width: 0;
126
+ display: flex;
127
+ flex: 0 0 auto;
128
+ flex-direction: column;
129
+ align-items: flex-start;
130
+ min-block-size: calc(var(--base-size-64) + (2 * var(--base-size-12)));
131
+ overflow-x: hidden;
132
+ }
133
+
134
+ .MediaPlaylist__item::before {
135
+ content: '';
136
+ position: absolute;
137
+ inset-block-end: 0;
138
+ inset-inline: 0;
139
+ height: var(--brand-borderWidth-thin);
140
+ transform: scaleY(1);
141
+ transform-origin: 50% 100%;
142
+ background-color: var(--brand-color-border-muted);
143
+ transition: transform var(--brand-animation-duration-fast) ease,
144
+ background-color var(--brand-animation-duration-fast) ease;
145
+ }
146
+
147
+ .MediaPlaylist__item--selected {
148
+ background-color: var(--brand-color-canvas-subtle);
149
+ }
150
+
151
+ .MediaPlaylist__item--selected::before {
152
+ transform: scaleY(2);
153
+ background-color: var(--brand-color-accent-primary);
154
+ }
155
+
156
+ .MediaPlaylist__itemHeading {
157
+ display: block;
158
+ margin: 0;
159
+ color: var(--brand-color-text-muted);
160
+ }
161
+
162
+ .MediaPlaylist__item--selected .MediaPlaylist__itemHeading {
163
+ color: var(--brand-color-text-default);
164
+ }
165
+
166
+ .MediaPlaylist__itemHeadingContent {
167
+ flex: 1 1 auto;
168
+ min-width: 0;
169
+ }
170
+
171
+ .MediaPlaylist__itemHeadingDetails {
172
+ display: flex;
173
+ flex-direction: column;
174
+ gap: var(--base-size-4);
175
+ min-width: 0;
176
+ }
177
+
178
+ .MediaPlaylist__itemHeadingTitle {
179
+ display: -webkit-box;
180
+ color: inherit;
181
+ overflow: hidden;
182
+ overflow-wrap: anywhere;
183
+ -webkit-box-orient: vertical;
184
+ -webkit-line-clamp: 2;
185
+ line-clamp: 2;
186
+ }
187
+
188
+ .MediaPlaylist__tab {
189
+ box-sizing: border-box;
190
+ width: 100%;
191
+ min-block-size: calc(var(--base-size-64) + (2 * var(--base-size-12)));
192
+ border: 0;
193
+ background: transparent;
194
+ color: inherit;
195
+ font: inherit;
196
+ text-align: left;
197
+ display: flex;
198
+ flex-direction: column;
199
+ align-items: flex-start;
200
+ cursor: pointer;
201
+ outline: none;
202
+ padding: var(--base-size-12) var(--base-size-16);
203
+ }
204
+
205
+ .MediaPlaylist__tabContent {
206
+ display: flex;
207
+ align-items: flex-start;
208
+ min-width: 0;
209
+ width: 100%;
210
+ gap: var(--base-size-12);
211
+ }
212
+
213
+ .MediaPlaylist__thumbnail {
214
+ display: block;
215
+ flex-shrink: 0;
216
+ width: var(--base-size-112);
217
+ block-size: calc(var(--base-size-64) - var(--brand-borderWidth-thin));
218
+ overflow: hidden;
219
+ aspect-ratio: 16 / 9;
220
+ border-radius: var(--brand-borderRadius-small);
221
+ background-color: var(--brand-color-canvas-subtle);
222
+ }
223
+
224
+ .MediaPlaylist__thumbnail > * {
225
+ display: block;
226
+ width: 100%;
227
+ height: 100%;
228
+ -o-object-fit: cover;
229
+ object-fit: cover;
230
+ }
231
+
232
+ .MediaPlaylist__tab:focus-visible {
233
+ outline: var(--brand-borderWidth-thick) solid var(--brand-color-focus);
234
+ outline-offset: var(--base-size-4);
235
+ }
236
+
237
+ .MediaPlaylist__content {
238
+ display: flex;
239
+ flex-direction: column;
240
+ align-items: flex-start;
241
+ gap: var(--base-size-12);
242
+ }
243
+
244
+ @media screen and (min-width: 38.625rem) {
245
+ .MediaPlaylist {
246
+ border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
247
+ }
248
+ }
249
+
250
+ @media screen and (min-width: 63.25rem) {
251
+ .MediaPlaylist {
252
+ box-sizing: border-box;
253
+ width: 100%;
254
+ max-inline-size: 80rem;
255
+ margin-inline: auto;
256
+ padding: 0;
257
+ border-inline: none;
258
+ }
259
+
260
+ .MediaPlaylist__layout {
261
+ --brand-MediaPlaylist-desktopGutter: 3.75rem;
262
+ --brand-MediaPlaylist-sidebarWidth: 27rem;
263
+
264
+ display: grid;
265
+ box-sizing: border-box;
266
+ width: 100%;
267
+ grid-template-areas: 'media tabs';
268
+ grid-template-columns: minmax(0, 1fr) minmax(0, var(--brand-MediaPlaylist-sidebarWidth));
269
+ -moz-column-gap: var(--brand-MediaPlaylist-desktopGutter);
270
+ column-gap: var(--brand-MediaPlaylist-desktopGutter);
271
+ padding-inline-start: var(--brand-MediaPlaylist-desktopGutter);
272
+ }
273
+
274
+ .MediaPlaylist__playlist {
275
+ grid-area: tabs;
276
+ display: flex;
277
+ flex-direction: column;
278
+ align-self: stretch;
279
+ padding-block-start: calc(var(--base-size-48) + var(--base-size-12));
280
+ border: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
281
+ }
282
+
283
+ .MediaPlaylist--overflowItems .MediaPlaylist__tablist {
284
+ max-block-size: calc((3 * var(--base-size-64)) + (6 * var(--base-size-20)));
285
+ }
286
+
287
+ .MediaPlaylist__mediaPanels {
288
+ grid-area: media;
289
+ display: flex;
290
+ align-items: flex-start;
291
+ justify-content: flex-start;
292
+ padding-block: var(--base-size-80);
293
+ padding-inline: 0;
294
+ }
295
+
296
+ .MediaPlaylist__mediaPanel {
297
+ width: 100%;
298
+ }
299
+
300
+ .MediaPlaylist__panel {
301
+ gap: var(--base-size-40);
302
+ }
303
+
304
+ .MediaPlaylist__panelContent {
305
+ width: 100%;
306
+ }
307
+
308
+ .MediaPlaylist__media {
309
+ width: 100%;
310
+ }
311
+
312
+ .MediaPlaylist__media iframe {
313
+ aspect-ratio: 16 / 9;
314
+ border-radius: var(--base-size-6);
315
+ }
316
+
317
+ .MediaPlaylist__itemHeadingDetails {
318
+ font-size: var(--brand-text-size-200);
319
+ line-height: var(--brand-text-lineHeight-200);
320
+ }
321
+
322
+ .MediaPlaylist__panelContent :is(h1, h2, h3) + p {
323
+ margin-block-start: var(--base-size-12);
324
+ }
325
+
326
+ .MediaPlaylist__heading {
327
+ min-height: auto;
328
+ padding-block-start: var(--base-size-24);
329
+ padding-block-end: var(--base-size-12);
330
+ padding-inline-start: var(--base-size-32);
331
+ padding-inline-end: var(--brand-MediaPlaylist-desktopGutter);
332
+ }
333
+
334
+ .MediaPlaylist__item {
335
+ min-block-size: calc(var(--base-size-64) + (2 * var(--base-size-20)));
336
+ }
337
+
338
+ .MediaPlaylist__tab {
339
+ min-block-size: calc(var(--base-size-64) + (2 * var(--base-size-20)));
340
+ padding-block: var(--base-size-20);
341
+ padding-inline-start: var(--base-size-32);
342
+ padding-inline-end: var(--brand-MediaPlaylist-desktopGutter);
343
+ }
344
+
345
+ .MediaPlaylist__tabContent {
346
+ align-items: center;
347
+ }
348
+ }
349
+
350
+ @media screen and (min-width: 80rem) {
351
+ .MediaPlaylist {
352
+ border-inline: var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);
353
+ }
354
+
355
+ .MediaPlaylist__playlist {
356
+ border-inline-end: 0;
357
+ }
358
+ }
@@ -6,133 +6,75 @@
6
6
 
7
7
  .Pagination__inner {
8
8
  display: inline-flex;
9
+ flex-wrap: wrap;
9
10
  align-items: center;
11
+ justify-content: center;
10
12
  gap: var(--base-size-8);
11
13
  }
12
14
 
13
- .Pagination__item {
14
- min-width: var(--base-size-32);
15
- height: var(--base-size-32);
16
- text-align: center;
17
- white-space: nowrap;
18
- vertical-align: middle;
19
- cursor: pointer;
20
- -webkit-user-select: none;
21
- -moz-user-select: none;
22
- user-select: none;
23
- text-decoration: none;
24
- padding: var(--base-size-4) var(--base-size-8);
25
- border: var(--brand-borderWidth-thick) solid transparent;
26
- border-radius: var(--brand-borderRadius-medium);
27
- transition: border-color var(--brand-animation-duration-fast) var(--brand-animation-easing-default);
28
- }
29
-
30
- .Pagination__item span {
31
- font-size: var(--brand-text-size-100);
32
- line-height: var(--base-size-20);
33
- }
34
-
35
- .Pagination__item:hover,
36
- .Pagination__item:focus {
37
- text-decoration: none;
38
- outline: 0;
39
- transition-duration: 0.1s;
40
- border-color: var(--brand-pagination-borderColor-hover);
41
- }
42
-
43
- .Pagination__item::after {
44
- display: none;
45
- }
46
-
47
- .Pagination__item:active {
48
- border-color: var(--brand-pagination-link-bgColor-active);
49
- }
50
-
51
- .Pagination__item[aria-current],
52
- .Pagination__item[aria-current]:hover {
53
- background-color: var(--brand-pagination-link-bgColor-active);
54
- border-color: transparent;
55
- }
56
-
57
- .Pagination__item[aria-current] * {
58
- color: var(--brand-color-text-onEmphasis);
15
+ .Pagination__pageItem {
16
+ transition: none; /* Prevents flash of background color when changing pages */
17
+ --brand-button-subtle-borderColor-rest: transparent;
18
+ --brand-button-subtle-borderColor-hover: transparent;
19
+ --brand-button-subtle-borderColor-active: transparent;
59
20
  }
60
21
 
61
- .Pagination__item[aria-disabled],
62
- .Pagination__item[aria-disabled]:hover,
63
- .Pagination__item[role='presentation'],
64
- .Pagination__item[role='presentation']:hover {
65
- color: var(--brand-color-text-muted);
66
- cursor: default;
67
- background-color: transparent;
68
- border-color: transparent;
69
- font-size: inherit;
70
- font-family: inherit;
71
- padding-top: inherit;
72
- padding-bottom: inherit;
73
- }
74
-
75
- .Pagination__item[aria-disabled] *,
76
- .Pagination__item[aria-disabled]:hover *,
77
- .Pagination__item[role='presentation'] *,
78
- .Pagination__item[role='presentation']:hover * {
79
- color: inherit;
22
+ .Pagination__controlContent {
23
+ position: relative;
24
+ display: inline-flex;
25
+ gap: var(--base-size-4);
26
+ align-items: center;
80
27
  }
81
28
 
82
- .Pagination__showPages .Pagination__item[rel='prev'] span,
83
- .Pagination__showPages .Pagination__item[rel='next'] span {
29
+ .Pagination__controlArrowWrapper {
84
30
  display: none;
31
+ flex-shrink: 0;
85
32
  }
86
33
 
87
- .Pagination__item[rel='prev'] svg,
88
- .Pagination__item[rel='next'] svg {
89
- margin-inline: 0;
90
- position: relative;
34
+ .Pagination__controlArrowWrapper--previous {
35
+ transform: translateX(var(--base-size-2));
91
36
  }
92
37
 
93
- .Pagination__item[rel='prev'] svg {
94
- left: var(--base-size-2);
38
+ .Pagination__controlArrowWrapper--next {
39
+ transform: translateX(calc(var(--base-size-2) * -1));
95
40
  }
96
41
 
97
- .Pagination__item[rel='next'] svg {
98
- right: var(--base-size-2);
42
+ .Pagination__controlArrow {
43
+ width: var(--base-size-16);
44
+ height: var(--base-size-16);
99
45
  }
100
46
 
101
- @media screen and (min-width: 48rem) {
102
- .Pagination__item[rel='prev'] span,
103
- .Pagination__item[rel='next'] span {
104
- display: block !important;
47
+ @media screen and (max-width: 47.99rem) {
48
+ .Pagination__controlItem {
49
+ padding-inline: var(--base-size-8);
50
+ --brand-button-subtle-borderColor-rest: transparent;
51
+ --brand-button-subtle-borderColor-hover: transparent;
52
+ --brand-button-subtle-borderColor-active: transparent;
105
53
  }
106
54
 
107
- .Pagination__item[rel='prev'] svg,
108
- .Pagination__item[rel='next'] svg {
109
- margin-inline: unset;
110
- left: 0;
111
- right: 0;
55
+ .Pagination__controlText {
56
+ position: absolute;
57
+ width: var(--base-size-2);
58
+ height: var(--base-size-2);
59
+ padding: 0;
60
+ overflow: hidden;
61
+ clip: rect(0, 0, 0, 0);
62
+ word-wrap: normal;
63
+ border: 0;
112
64
  }
113
65
 
114
- .Pagination__item[rel='prev'][aria-disabled] svg,
115
- .Pagination__item[rel='next'][aria-disabled] svg {
116
- display: none;
66
+ .Pagination__controlArrowWrapper {
67
+ display: flex;
117
68
  }
118
- }
119
69
 
120
- @media (forced-colors: active) {
121
- .Pagination__item[aria-current],
122
- .Pagination__item[aria-current]:hover {
123
- border-color: Highlight;
124
- border-width: var(--brand-borderWidth-thicker);
70
+ .Pagination__controlItem > span {
71
+ display: flex;
72
+ align-items: center;
125
73
  }
126
- }
127
74
 
128
- /* Remove all animations, transitions and smooth scroll for people that prefer not to see them */
129
- @media (prefers-reduced-motion: reduce) {
130
- .Pagination,
131
- .Pagination::before,
132
- .Pagination::after,
133
- .Pagination * {
134
- animation: none !important;
135
- transition: none !important;
136
- scroll-behavior: auto !important;
75
+ .Pagination__controlItem > span > span {
76
+ display: flex;
77
+ align-items: center;
78
+ line-height: 0;
137
79
  }
138
80
  }
@@ -367,23 +367,27 @@
367
367
  }
368
368
 
369
369
  .SubNav__links-overlay--open .SubNav__link {
370
- padding: var(--base-size-8);
370
+ margin-inline-start: var(--base-size-8);
371
+ padding: var(--base-size-4) var(--base-size-12);
371
372
  }
372
373
 
373
374
  .SubNav__links-overlay--open .SubNav__link[aria-current]:not([aria-current='false']) {
374
- display: inline-block;
375
+ display: inline-flex;
375
376
  background-color: var(--brand-SubNav-color-link-bgColor);
376
377
  border-radius: var(--brand-borderRadius-full);
377
- padding: var(--base-size-2) var(--base-size-12) var(--base-size-4);
378
- margin-inline-start: var(--base-size-8);
379
378
  }
380
379
 
381
380
  .SubNav__links-overlay--open .SubNav__link:hover {
381
+ display: inline-flex;
382
382
  background-color: var(--brand-SubNav-color-link-bgColor);
383
- border-radius: var(--brand-borderRadius-medium);
383
+ border-radius: var(--brand-borderRadius-full);
384
+ }
385
+
386
+ .SubNav__links-overlay--open .SubNav__link {
387
+ display: inline-flex;
388
+ animation: fade-in 0.3s var(--brand-animation-easing-glide) forwards;
384
389
  }
385
390
 
386
- .SubNav__links-overlay--open .SubNav__link,
387
391
  .SubNav__links-overlay--open .SubNav__action-container {
388
392
  display: block;
389
393
  animation: fade-in 0.3s var(--brand-animation-easing-glide) forwards;
@@ -407,6 +411,13 @@
407
411
  margin: 0;
408
412
  padding-inline-start: var(--base-size-16);
409
413
  padding-block-start: var(--base-size-8);
414
+ display: flex;
415
+ flex-direction: column;
416
+ gap: var(--base-size-8);
417
+ }
418
+
419
+ .SubNav__sub-menu .SubNav__link {
420
+ margin-inline-start: 0;
410
421
  }
411
422
 
412
423
  .SubNav__sub-menu--dropdown .SubNav__link:hover .SubNav__link-label {
@@ -437,10 +448,6 @@
437
448
  z-index: 100;
438
449
  }
439
450
 
440
- .SubNav__link-label {
441
- padding-block-end: var(--base-size-6);
442
- }
443
-
444
451
  .SubNav__sub-menu--anchor {
445
452
  padding-inline: var(--base-size-16);
446
453
  padding-block-end: var(--base-size-16);
@@ -684,6 +691,10 @@
684
691
  cursor: pointer;
685
692
  }
686
693
 
694
+ .SubNav__link--has-sub-menu > .SubNav__link {
695
+ padding-inline-end: 0;
696
+ }
697
+
687
698
  .SubNav__sub-menu--dropdown .SubNav__link-label {
688
699
  position: relative;
689
700
  padding: var(--base-size-4) 0;
@@ -709,7 +720,6 @@
709
720
  .SubNav__links-overlay .SubNav__link[aria-current]:not([aria-current='false']) {
710
721
  background-color: var(--brand-SubNav-color-link-bgColor);
711
722
  line-height: 1.1em;
712
- padding: var(--base-size-2) var(--base-size-12) var(--base-size-4);
713
723
  }
714
724
 
715
725
  /* Firefox optical alignment fix */
@@ -744,6 +754,11 @@
744
754
  transition: transform var(--brand-animation-duration-fast);
745
755
  }
746
756
 
757
+ .SubNav__link--has-sub-menu:not(.SubNav__link--has-active-sub-menu) .SubNav__sub-menu-icon {
758
+ position: relative;
759
+ top: calc(-1 * var(--brand-borderWidth-thin));
760
+ }
761
+
747
762
  .SubNav__sub-menu--anchor {
748
763
  padding-inline: var(--base-size-32);
749
764
  }
@@ -9,8 +9,8 @@
9
9
  .Checkbox {
10
10
  align-items: center;
11
11
  background-color: var(--brand-control-checkbox-bg-default);
12
- border: solid var(--brand-borderWidth-thick, 1px) var(--brand-control-color-border-default);
13
- border-radius: var(--brand-borderRadius-small);
12
+ border: solid var(--brand-borderWidth-thin, 1px) var(--brand-control-color-border-default);
13
+ border-radius: 3px;
14
14
  cursor: pointer;
15
15
  display: inline-flex;
16
16
  height: 20px;
@@ -18,7 +18,7 @@
18
18
  margin: 3px 0; /* mimic default browser-applied vertical margin */
19
19
  transition: all 0.35s ease-out;
20
20
  width: 20px;
21
- outline: 1px solid var(--brand-control-checkbox-bg-default);
21
+ outline: 1px solid transparent;
22
22
  box-shadow: 0 0 0 3px transparent;
23
23
  }
24
24
 
@@ -36,12 +36,12 @@
36
36
  }
37
37
 
38
38
  .Checkbox-checkmark {
39
- height: 16px;
40
- width: 16px;
39
+ height: var(--base-size-12);
40
+ width: var(--base-size-12);
41
41
  }
42
42
 
43
43
  .Checkbox-checkmark-path {
44
- stroke: var(--brand-color-focus);
44
+ stroke: var(--brand-control-checkbox-fg-checked);
45
45
  stroke-dashoffset: 111.46px;
46
46
  stroke-dasharray: 111.46px;
47
47
  transition: all 350ms var(--brand-control-animation-easing);
@@ -57,6 +57,21 @@
57
57
  border-color: var(--brand-control-checkbox-border-checked);
58
58
  }
59
59
 
60
+ .Checkbox-input:not(:checked):not([disabled]) + .Checkbox:not(.Checkbox--indeterminate):hover {
61
+ background: var(--brand-control-checkbox-bg-hover);
62
+ border-color: var(--brand-control-checkbox-border-hover);
63
+ }
64
+
65
+ .Checkbox-input:checked:not([disabled]) + .Checkbox:hover {
66
+ background: var(--brand-control-checkbox-bg-checked-hover);
67
+ border-color: var(--brand-control-checkbox-border-checked-hover);
68
+ }
69
+
70
+ .Checkbox-input:not([disabled]) + .Checkbox--indeterminate:hover {
71
+ background: var(--brand-control-checkbox-bg-indeterminate-hover);
72
+ border-color: var(--brand-control-checkbox-border-indeterminate-hover);
73
+ }
74
+
60
75
  .Checkbox--indeterminate .Checkbox-checkmark {
61
76
  fill: var(--brand-control-checkbox-fg-checked);
62
77
  }
@@ -68,7 +83,7 @@
68
83
  }
69
84
 
70
85
  .Checkbox-input:focus + .Checkbox {
71
- box-shadow: 0 0 0 3px var(--brand-color-focus);
86
+ box-shadow: 0 0 0 3px var(--brand-control-color-focus);
72
87
  }
73
88
 
74
89
  /* TODO: Check with a11y team */
@@ -77,19 +92,27 @@
77
92
  border-color: var(--brand-control-checkbox-border-checked);
78
93
  }
79
94
 
80
- .Checkbox-input[disabled] + .Checkbox,
81
- .Checkbox-input[disabled]:checked + .Checkbox {
95
+ .Checkbox-input[disabled] + .Checkbox {
82
96
  -webkit-text-fill-color: var(--brand-control-color-fg-disabled);
83
97
  color: var(--brand-control-color-fg-disabled);
84
98
  cursor: not-allowed;
85
- background-color: var(--brand-control-checkbox-bg-disabled);
86
- border-color: var(--brand-control-color-border-disabled);
99
+ background-color: transparent;
100
+ border-color: var(--brand-control-checkbox-border-unchecked-disabled);
87
101
  opacity: 1;
88
102
  }
89
103
 
104
+ .Checkbox-input[disabled]:checked + .Checkbox {
105
+ background-color: var(--brand-control-checkbox-bg-checked-disabled);
106
+ border-color: var(--brand-control-checkbox-border-checked-disabled);
107
+ }
108
+
109
+ .Checkbox-input[disabled]:checked + .Checkbox .Checkbox-checkmark-path {
110
+ stroke: var(--brand-control-checkbox-fg-checked-disabled);
111
+ }
112
+
90
113
  @media (forced-colors: active) {
91
114
  .Checkbox-input:focus + .Checkbox {
92
- outline: var(--brand-borderWidth-thick) solid Highlight;
115
+ outline: var(--brand-borderWidth-thin) solid Highlight;
93
116
  outline-offset: var(--base-size-2);
94
117
  }
95
118
 
@@ -19,10 +19,11 @@
19
19
  display: flex;
20
20
  gap: var(--base-size-4);
21
21
  font-weight: var(--base-text-weight-medium);
22
+ align-items: center;
22
23
  }
23
24
 
24
25
  .ControlGroup__validation--success {
25
- color: var(--brand-color-success-fg);
26
+ color: var(--brand-color-text-emphasized);
26
27
  }
27
28
 
28
29
  .ControlGroup__validation--error {
@@ -30,13 +31,11 @@
30
31
  }
31
32
 
32
33
  .ControlGroup__validation-icon--success {
33
- position: relative;
34
- top: -1px;
34
+ display: flex;
35
35
  }
36
36
 
37
37
  .ControlGroup__validation-icon--error {
38
- position: relative;
39
- top: -0.5px;
38
+ display: flex;
40
39
  }
41
40
 
42
41
  .ControlGroup__validation--animate-in {
@@ -54,10 +54,10 @@
54
54
  cursor: pointer;
55
55
  font-size: var(--brand-text-size-100);
56
56
  font-weight: var(--base-text-weight-medium);
57
- line-height: var(--base-size-24); /* FIXME */
58
- position: relative;
59
- top: 2px;
57
+ line-height: var(--base-size-24);
60
58
  width: 100%;
59
+ position: relative;
60
+ top: 1px;
61
61
  }
62
62
 
63
63
  .FormControl-control--radio {
@@ -73,6 +73,7 @@
73
73
  .FormControl-validation {
74
74
  display: flex;
75
75
  gap: var(--base-size-4);
76
+ align-items: center;
76
77
  }
77
78
 
78
79
  .FormControl-validation--success {
@@ -84,13 +85,11 @@
84
85
  }
85
86
 
86
87
  .FormControl-validation-success-icon {
87
- position: relative;
88
- top: -1px;
88
+ display: flex;
89
89
  }
90
90
 
91
91
  .FormControl-validation-error-icon {
92
- position: relative;
93
- top: -0.5px;
92
+ display: flex;
94
93
  }
95
94
 
96
95
  .FormControl-validation--animate-in {
@@ -13,7 +13,7 @@
13
13
  .Radio {
14
14
  align-items: center;
15
15
  background-color: var(--brand-control-radio-bg-default);
16
- border: solid var(--brand-borderWidth-thick, 1px) var(--brand-control-color-border-default);
16
+ border: solid var(--brand-borderWidth-thin, 1px) var(--brand-control-radio-border-default);
17
17
  border-radius: 50%;
18
18
  cursor: pointer;
19
19
  display: inline-flex;
@@ -34,11 +34,12 @@ Fixes safari bug where outline doesn't respect border-radius
34
34
  .Radio::before {
35
35
  content: '';
36
36
  position: absolute;
37
+ pointer-events: none;
37
38
  top: -4px;
38
39
  right: -2px;
39
40
  bottom: -2px;
40
41
  left: -4px;
41
- border: 2px solid var(--brand-control-radio-bg-default);
42
+ border: var(--brand-borderWidth-thin) solid transparent;
42
43
  border-radius: 50%;
43
44
  width: 24px;
44
45
  height: 24px;
@@ -60,11 +61,11 @@ Fixes safari bug where outline doesn't respect border-radius
60
61
  .Radio-dot {
61
62
  position: absolute;
62
63
  display: none;
63
- border-color: var(--brand-control-radio-dot-default);
64
+ border-color: var(--brand-control-radio-dot-checked);
64
65
  width: 12px;
65
66
  height: 12px;
66
67
  border-radius: 50%;
67
- background: var(--brand-control-radio-dot-default);
68
+ background: var(--brand-control-radio-dot-checked);
68
69
  position: absolute;
69
70
  display: block;
70
71
  transform: scale(0.7);
@@ -86,13 +87,28 @@ Fixes safari bug where outline doesn't respect border-radius
86
87
  border-color: var(--brand-control-radio-border-checked);
87
88
  }
88
89
 
90
+ .Radio-input:not(:checked):not([disabled]) + .Radio:hover {
91
+ background-color: var(--brand-control-radio-bg-hover);
92
+ border-color: var(--brand-control-radio-border-hover);
93
+ }
94
+
95
+ .Radio-input:checked:not([disabled]) + .Radio:hover {
96
+ background-color: var(--brand-control-radio-bg-checked-hover);
97
+ border-color: var(--brand-control-radio-border-checked-hover);
98
+ }
99
+
100
+ .Radio-input:checked:not([disabled]) + .Radio:hover .Radio-dot {
101
+ background: var(--brand-control-radio-dot-checked-hover);
102
+ border-color: var(--brand-control-radio-dot-checked-hover);
103
+ }
104
+
89
105
  .Radio-input:checked + .Radio .Radio-dot {
90
106
  opacity: 1;
91
107
  transform: scale(1);
92
108
  }
93
109
 
94
110
  .Radio-input:focus + .Radio {
95
- box-shadow: 0 0 0 4px var(--brand-color-focus);
111
+ box-shadow: 0 0 0 4px var(--brand-control-color-focus);
96
112
  }
97
113
 
98
114
  /* TODO: Check with a11y team */
@@ -106,13 +122,18 @@ Fixes safari bug where outline doesn't respect border-radius
106
122
  color: var(--brand-control-color-fg-disabled);
107
123
  cursor: not-allowed;
108
124
  background-color: var(--brand-control-radio-bg-disabled);
109
- border-color: var(--brand-control-color-border-disabled);
125
+ border-color: var(--brand-control-radio-border-disabled);
110
126
  opacity: 1;
111
127
  }
112
128
 
129
+ .Radio-input[disabled]:checked + .Radio .Radio-dot {
130
+ background: var(--brand-control-color-fg-disabled);
131
+ border-color: var(--brand-control-color-fg-disabled);
132
+ }
133
+
113
134
  @media (forced-colors: active) {
114
135
  .Radio-input:focus + .Radio {
115
- outline: var(--brand-borderWidth-thick) solid Highlight;
136
+ outline: var(--brand-borderWidth-thin) solid Highlight;
116
137
  outline-offset: var(--base-size-4);
117
138
  }
118
139
 
@@ -36,9 +36,9 @@
36
36
  }
37
37
 
38
38
  .Select:focus-visible {
39
- border-color: var(--brand-color-focus);
39
+ border-color: var(--brand-control-color-focus);
40
40
  outline: none;
41
- box-shadow: 0 0 0 2px var(--brand-color-focus);
41
+ box-shadow: 0 0 0 2px var(--brand-control-color-focus);
42
42
  }
43
43
 
44
44
  @media (forced-colors: active) {
@@ -102,8 +102,8 @@
102
102
  }
103
103
 
104
104
  .TextInput-wrapper:focus-within {
105
- border-color: var(--brand-color-focus);
106
- box-shadow: 0 0 0 1px var(--brand-color-focus);
105
+ border-color: var(--brand-control-color-focus);
106
+ box-shadow: 0 0 0 1px var(--brand-control-color-focus);
107
107
  outline: none;
108
108
  }
109
109
 
@@ -109,8 +109,8 @@
109
109
  }
110
110
 
111
111
  .Textarea-wrapper:focus-within {
112
- border-color: var(--brand-color-focus);
113
- box-shadow: 0 0 0 1px var(--brand-color-focus);
112
+ border-color: var(--brand-control-color-focus);
113
+ box-shadow: 0 0 0 1px var(--brand-control-color-focus);
114
114
  outline: none;
115
115
  }
116
116
 
@@ -70,6 +70,15 @@
70
70
  border-radius: var(--brand-borderRadius-medium);
71
71
  }
72
72
 
73
+ .RiverAccordion--variant-gridline:has(.RiverAccordion__visual--has-background) .RiverAccordion__visualsContainer {
74
+ margin-inline: calc(-1 * var(--brand-RiverAccordion-variant-gridline-spacing-outerInline));
75
+ margin-block-start: calc(-1 * var(--brand-RiverAccordion-variant-gridline-spacing-outerBlock));
76
+ }
77
+
78
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper:has(.RiverAccordion__visual--has-background) {
79
+ border-radius: 0;
80
+ }
81
+
73
82
  .RiverAccordion__accordionContainer {
74
83
  grid-area: accordion;
75
84
  }
@@ -92,6 +101,8 @@
92
101
  grid-row: 1;
93
102
  width: 100%;
94
103
  height: 100%;
104
+ display: flex;
105
+ align-items: center;
95
106
  opacity: 0;
96
107
  scale: 1.05;
97
108
  transition: opacity var(--brand-animation-duration-default) var(--brand-animation-easing-default),
@@ -99,11 +110,113 @@
99
110
  }
100
111
 
101
112
  .RiverAccordion__visualsWrapper > .RiverAccordion__visual > * {
113
+ display: block;
102
114
  width: 100%;
115
+ height: auto;
116
+ overflow: hidden;
117
+ border-radius: var(--brand-borderRadius-xlarge);
103
118
  -o-object-fit: contain;
104
119
  object-fit: contain;
105
120
  }
106
121
 
122
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual > * {
123
+ border-radius: var(--brand-borderRadius-medium);
124
+ }
125
+
126
+ .RiverAccordion__visualsWrapper > .RiverAccordion__visual img,
127
+ .RiverAccordion__visualsWrapper > .RiverAccordion__visual picture,
128
+ .RiverAccordion__visualsWrapper > .RiverAccordion__visual video {
129
+ display: block;
130
+ width: 100%;
131
+ height: auto;
132
+ border-radius: inherit;
133
+ -o-object-fit: contain;
134
+ object-fit: contain;
135
+ }
136
+
137
+ .RiverAccordion__visualsWrapper > .RiverAccordion__visual > * img,
138
+ .RiverAccordion__visualsWrapper > .RiverAccordion__visual > * video {
139
+ display: block;
140
+ width: 100%;
141
+ height: 100%;
142
+ border-radius: inherit;
143
+ -o-object-fit: cover;
144
+ object-fit: cover;
145
+ }
146
+
147
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background {
148
+ display: flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ padding: var(--base-size-32);
152
+ background: var(--brand-RiverAccordion-visual-background, var(--brand-color-canvas-subtle));
153
+ }
154
+
155
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background > * {
156
+ display: flex;
157
+ align-items: center;
158
+ justify-content: center;
159
+ max-width: 100%;
160
+ height: auto;
161
+ border-radius: var(--brand-borderRadius-large);
162
+ }
163
+
164
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background img,
165
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background picture,
166
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background video {
167
+ max-width: 100%;
168
+ height: 100%;
169
+ border-radius: var(--brand-borderRadius-large);
170
+ }
171
+
172
+ @media (min-width: 48rem) {
173
+ .RiverAccordion--variant-gridline:has(.RiverAccordion__visual--has-background) {
174
+ padding: 0;
175
+ gap: 0;
176
+ align-items: stretch;
177
+ grid-template-columns: 1fr 1fr;
178
+ }
179
+
180
+ .RiverAccordion--variant-gridline:has(.RiverAccordion__visual--has-background) .RiverAccordion__accordionContainer {
181
+ display: flex;
182
+ flex-direction: column;
183
+ justify-content: center;
184
+ padding: var(--brand-RiverAccordion-variant-gridline-spacing-outerBlock)
185
+ var(--brand-RiverAccordion-variant-gridline-spacing-outerInline);
186
+ }
187
+
188
+ .RiverAccordion--variant-gridline.RiverAccordion__align-start:has(.RiverAccordion__visual--has-background)
189
+ .RiverAccordion__accordionContainer {
190
+ padding-inline-end: var(--brand-RiverAccordion-variant-gridline-spacing-contentGap);
191
+ }
192
+
193
+ .RiverAccordion--variant-gridline.RiverAccordion__align-end:has(.RiverAccordion__visual--has-background)
194
+ .RiverAccordion__accordionContainer {
195
+ padding-inline-start: var(--brand-RiverAccordion-variant-gridline-spacing-contentGap);
196
+ }
197
+
198
+ .RiverAccordion--variant-gridline:has(.RiverAccordion__visual--has-background) .RiverAccordion__visualsContainer {
199
+ margin: 0;
200
+ }
201
+
202
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper:has(.RiverAccordion__visual--has-background) {
203
+ height: 100%;
204
+ }
205
+
206
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background {
207
+ align-items: center;
208
+ justify-content: center;
209
+ padding: var(--base-size-64);
210
+ }
211
+
212
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background > *,
213
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background img,
214
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background picture,
215
+ .RiverAccordion--variant-gridline .RiverAccordion__visualsWrapper > .RiverAccordion__visual--has-background video {
216
+ border-radius: var(--brand-borderRadius-large);
217
+ }
218
+ }
219
+
107
220
  /* Show the visual when the corresponding accordion item is open */
108
221
  .RiverAccordion:has(.RiverAccordion__item--open:nth-child(1)) .RiverAccordion__visualsContainer .RiverAccordion__visual:nth-child(1),
109
222
  .RiverAccordion:has(.RiverAccordion__item--open:nth-child(2)) .RiverAccordion__visualsContainer .RiverAccordion__visual:nth-child(2),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/brand-css",
3
- "version": "0.68.0-rc.982c487b",
3
+ "version": "0.68.0",
4
4
  "description": "CSS stylesheets for Primer Brand components",
5
5
  "keywords": [
6
6
  "primer",