@primer/brand-css 0.77.1-rc.bd5b9efe → 0.78.0-rc.6fbe9fb5

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.
@@ -37,36 +37,40 @@
37
37
  background-color: var(--brand-color-canvas-default);
38
38
  }
39
39
 
40
- .ActionMenu__innerButton--split-button:first-child,
41
- .ActionMenu__innerButton--split-button:first-child:hover {
40
+ .ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-primary,
41
+ .ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-primary:hover {
42
42
  position: relative;
43
43
  z-index: 1;
44
44
  border-top-right-radius: 0;
45
45
  border-bottom-right-radius: 0;
46
46
  }
47
47
 
48
- .ActionMenu__innerButton--split-button:first-child::before,
49
- .ActionMenu__innerButton--split-button:hover:first-child::before {
48
+ .ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-primary::before,
49
+ .ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-primary:hover::before {
50
50
  content: '';
51
51
  position: absolute;
52
52
  top: calc(var(--base-size-2) / -2);
53
53
  right: calc(var(--base-size-2) * -1);
54
54
  width: var(--brand-borderWidth-thin);
55
55
  height: calc(100% + var(--base-size-2));
56
- background-color: var(--brand-color-border-muted);
56
+ background-color: var(--brand-ActionMenu-color-splitButton-divider-default);
57
57
  }
58
58
 
59
- .ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button::before {
59
+ .ActionMenu__innerButton--primary.ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-primary::before {
60
+ background-color: var(--brand-ActionMenu-color-splitButton-divider-primary);
61
+ }
62
+
63
+ .ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-primary::before {
60
64
  top: calc(var(--base-size-2) * -1);
61
65
  height: calc(100% + var(--base-size-4));
62
66
  }
63
67
 
64
- .ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button:active:first-child::before {
68
+ .ActionMenu__innerButton--subtle.ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-primary:active::before {
65
69
  width: 0;
66
70
  }
67
71
 
68
72
  .ActionMenu__innerButton--medium.ActionMenu__innerButton--split-button,
69
- .ActionMenu__innerButton--split-button:last-child {
73
+ .ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-menu {
70
74
  padding: var(--brand-control-medium-paddingBlock-condensed) var(--brand-control-medium-paddingInline-normal); /* Override the default button padding */
71
75
  }
72
76
 
@@ -74,7 +78,7 @@
74
78
  vertical-align: middle !important;
75
79
  }
76
80
 
77
- .ActionMenu__innerButton--split-button:last-child {
81
+ .ActionMenu__innerButton--split-button.ActionMenu__innerButton--split-button-menu {
78
82
  border-top-left-radius: 0;
79
83
  border-bottom-left-radius: 0;
80
84
  position: relative;
@@ -57,7 +57,7 @@
57
57
  .Button__icon-visual {
58
58
  display: flex;
59
59
  align-self: center;
60
- height: var(--base-size-16);
60
+ height: var(--brand-Button-icon-size-medium);
61
61
  width: auto;
62
62
  fill: currentcolor;
63
63
  }
@@ -85,11 +85,11 @@
85
85
  border-width: var(--brand-borderWidth-thin);
86
86
  }
87
87
 
88
- .Button--primary:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true']):hover {
88
+ .Button--primary:where(:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true'])):hover {
89
89
  background-color: var(--brand-button-primary-bgColor-hover);
90
90
  }
91
91
 
92
- .Button--primary:not(.Button[disabled], .Button[aria-disabled='true']):active,
92
+ .Button--primary:where(:not(.Button[disabled], .Button[aria-disabled='true'])):active,
93
93
  .Button--primary[aria-expanded='true'] {
94
94
  background: var(--brand-button-primary-bgColor-active);
95
95
  border-color: var(--brand-button-primary-borderColor-active);
@@ -105,12 +105,8 @@
105
105
  background-color: var(--brand-button-primary-bgColor-disabled);
106
106
  }
107
107
 
108
- .Button--primary:disabled .Button-arrow--disabled,
109
- .Button--primary[aria-disabled='true'] .Button-arrow--disabled,
110
- .Button--primary.Button--disabled .Button-arrow--disabled,
111
- .Button--primary:disabled .Button__icon-visual--disabled,
112
- .Button--primary[aria-disabled='true'] .Button__icon-visual--disabled,
113
- .Button--primary.Button--disabled .Button__icon-visual--disabled,
108
+ .Button--primary:where(:disabled, [aria-disabled='true'], .Button--disabled)
109
+ :where(.Button-arrow--disabled, .Button__icon-visual--disabled),
114
110
  .Button--label-primary.Button-label--disabled {
115
111
  color: var(--brand-button-primary-fgColor-disabled);
116
112
  }
@@ -124,12 +120,12 @@
124
120
  backdrop-filter: blur(var(--base-size-20));
125
121
  }
126
122
 
127
- .Button--secondary:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true']):hover {
123
+ .Button--secondary:where(:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true'])):hover {
128
124
  background-color: var(--brand-button-secondary-bgColor-hover);
129
125
  border-color: var(--brand-button-secondary-borderColor-hover);
130
126
  }
131
127
 
132
- .Button--secondary:not(.Button[disabled], .Button[aria-disabled='true']):active,
128
+ .Button--secondary:where(:not(.Button[disabled], .Button[aria-disabled='true'])):active,
133
129
  .Button--secondary[aria-expanded='true'] {
134
130
  background-color: var(--brand-button-secondary-bgColor-active);
135
131
  border-color: var(--brand-button-secondary-borderColor-active);
@@ -139,12 +135,8 @@
139
135
  border-color: var(--brand-button-secondary-fgColor-disabled);
140
136
  }
141
137
 
142
- .Button--secondary:disabled .Button-arrow--disabled,
143
- .Button--secondary[aria-disabled='true'] .Button-arrow--disabled,
144
- .Button--secondary.Button--disabled .Button-arrow--disabled,
145
- .Button--secondary:disabled .Button__icon-visual--disabled,
146
- .Button--secondary[aria-disabled='true'] .Button__icon-visual--disabled,
147
- .Button--secondary.Button--disabled .Button__icon-visual--disabled,
138
+ .Button--secondary:where(:disabled, [aria-disabled='true'], .Button--disabled)
139
+ :where(.Button-arrow--disabled, .Button__icon-visual--disabled),
148
140
  .Button--label-secondary.Button-label--disabled {
149
141
  color: var(--brand-button-secondary-fgColor-disabled);
150
142
  }
@@ -159,12 +151,12 @@
159
151
  backdrop-filter: blur(var(--base-size-20));
160
152
  }
161
153
 
162
- .Button--subtle:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true']):hover {
154
+ .Button--subtle:where(:not(.Button[disabled], .Button[aria-disabled='true'], [aria-expanded='true'])):hover {
163
155
  background-color: var(--brand-button-subtle-bgColor-hover);
164
156
  border-color: var(--brand-button-subtle-borderColor-hover);
165
157
  }
166
158
 
167
- .Button--subtle:not(.Button[disabled], .Button[aria-disabled='true']):active,
159
+ .Button--subtle:where(:not(.Button[disabled], .Button[aria-disabled='true'])):active,
168
160
  .Button--subtle[aria-expanded='true'] {
169
161
  background-color: var(--brand-button-subtle-bgColor-active);
170
162
  border-color: var(--brand-button-subtle-borderColor-active);
@@ -174,12 +166,8 @@
174
166
  color: var(--brand-button-subtle-fgColor-rest);
175
167
  }
176
168
 
177
- .Button--subtle:disabled .Button-arrow--disabled,
178
- .Button--subtle[aria-disabled='true'] .Button-arrow--disabled,
179
- .Button--subtle.Button--disabled .Button-arrow--disabled,
180
- .Button--subtle:disabled .Button__icon-visual--disabled,
181
- .Button--subtle[aria-disabled='true'] .Button__icon-visual--disabled,
182
- .Button--subtle.Button--disabled .Button__icon-visual--disabled,
169
+ .Button--subtle:where(:disabled, [aria-disabled='true'], .Button--disabled)
170
+ :where(.Button-arrow--disabled, .Button__icon-visual--disabled),
183
171
  .Button--label-subtle.Button-label--disabled {
184
172
  color: var(--brand-button-subtle-fgColor-disabled);
185
173
  }
@@ -187,24 +175,32 @@
187
175
  /* size */
188
176
 
189
177
  .Button--size-small {
190
- min-height: var(--brand-control-small-size);
178
+ min-height: var(--brand-Button-control-size-small);
191
179
  padding-inline: var(--brand-control-small-paddingInline-normal);
192
180
  }
193
181
 
194
182
  .Button--size-medium {
195
- min-height: var(--brand-control-medium-size);
183
+ min-height: var(--brand-Button-control-size-medium);
196
184
  padding: var(--brand-control-medium-paddingBlock-condensed) var(--base-size-20);
197
185
  }
198
186
 
199
187
  .Button--size-large {
200
- min-height: var(--brand-control-large-size);
188
+ min-height: var(--brand-Button-control-size-large);
201
189
  padding: var(--brand-control-large-paddingBlock-condensed) var(--brand-control-large-paddingInline-spacious);
202
190
  }
203
191
 
204
- .Button--size-large .Button__icon-visual,
205
- .Button--size-large .Button-arrow {
206
- height: var(--base-size-20);
207
- width: var(--base-size-20);
192
+ /* Keep visual sizing overridable by composed controls such as IconButton. */
193
+ .Button--size-small :where(.Button__icon-visual) {
194
+ height: var(--brand-Button-icon-size-small);
195
+ }
196
+
197
+ .Button--size-medium :where(.Button__icon-visual) {
198
+ height: var(--brand-Button-icon-size-medium);
199
+ }
200
+
201
+ .Button--size-large :where(.Button__icon-visual, .Button-arrow) {
202
+ height: var(--brand-Button-icon-size-large);
203
+ width: var(--brand-Button-icon-size-large);
208
204
  }
209
205
 
210
206
  .Button--label-medium {
@@ -8,3 +8,36 @@
8
8
  .ButtonGroup > * {
9
9
  flex-grow: 1;
10
10
  }
11
+
12
+ .ButtonGroup--variant-joined {
13
+ gap: 0;
14
+ flex-wrap: nowrap;
15
+ }
16
+
17
+ .ButtonGroup--variant-joined .ButtonGroup__item {
18
+ position: relative;
19
+ display: flex;
20
+ flex-grow: 0;
21
+ }
22
+
23
+ .ButtonGroup--variant-joined .ButtonGroup__item:not(:first-child) {
24
+ margin-inline-start: calc(var(--brand-borderWidth-thin) * -1);
25
+ }
26
+
27
+ .ButtonGroup--variant-joined .ButtonGroup__item:focus-within {
28
+ z-index: 1;
29
+ }
30
+
31
+ .ButtonGroup__joinedButton.ButtonGroup__joinedButton {
32
+ border-radius: 0;
33
+ }
34
+
35
+ .ButtonGroup__item:first-child .ButtonGroup__joinedButton {
36
+ border-start-start-radius: var(--brand-borderRadius-medium);
37
+ border-end-start-radius: var(--brand-borderRadius-medium);
38
+ }
39
+
40
+ .ButtonGroup__item:last-child .ButtonGroup__joinedButton {
41
+ border-start-end-radius: var(--brand-borderRadius-medium);
42
+ border-end-end-radius: var(--brand-borderRadius-medium);
43
+ }
@@ -0,0 +1,142 @@
1
+ .IconButton {
2
+ flex: none;
3
+ gap: 0;
4
+ padding: 0;
5
+ }
6
+
7
+ .IconButton.IconButton {
8
+ min-width: var(--brand-IconButton-control-size-medium);
9
+ width: var(--brand-IconButton-control-size-medium);
10
+ height: var(--brand-IconButton-control-size-medium);
11
+ }
12
+
13
+ .IconButton--small.IconButton--small {
14
+ min-width: var(--brand-IconButton-control-size-small);
15
+ width: var(--brand-IconButton-control-size-small);
16
+ height: var(--brand-IconButton-control-size-small);
17
+ }
18
+
19
+ .IconButton--large.IconButton--large {
20
+ min-width: var(--brand-IconButton-control-size-large);
21
+ width: var(--brand-IconButton-control-size-large);
22
+ height: var(--brand-IconButton-control-size-large);
23
+ }
24
+
25
+ .IconButton--rounded.IconButton--rounded {
26
+ border-radius: var(--brand-borderRadius-full);
27
+ }
28
+
29
+ .IconButton--variant-danger.IconButton--variant-danger:not([disabled], [aria-disabled='true']) {
30
+ color: var(--brand-IconButton-danger-fgColor-rest);
31
+ background-color: var(--brand-IconButton-danger-bgColor-rest);
32
+ border-color: var(--brand-IconButton-danger-borderColor-rest);
33
+ }
34
+
35
+ .IconButton--variant-danger.IconButton--variant-danger:not(
36
+ [disabled],
37
+ [aria-disabled='true'],
38
+ [aria-expanded='true']
39
+ ):hover {
40
+ color: var(--brand-IconButton-danger-fgColor-hover);
41
+ background-color: var(--brand-IconButton-danger-bgColor-hover);
42
+ border-color: var(--brand-IconButton-danger-borderColor-hover);
43
+ }
44
+
45
+ .IconButton--variant-danger.IconButton--variant-danger:not([disabled], [aria-disabled='true']):active,
46
+ .IconButton--variant-danger.IconButton--variant-danger:not([disabled], [aria-disabled='true'])[aria-expanded='true'] {
47
+ color: var(--brand-IconButton-danger-fgColor-active);
48
+ background-color: var(--brand-IconButton-danger-bgColor-active);
49
+ border-color: var(--brand-IconButton-danger-borderColor-active);
50
+ }
51
+
52
+ .IconButton--variant-invisible.IconButton--variant-invisible:where(:not(:hover, :active, [aria-expanded='true'])) {
53
+ background-color: var(--brand-IconButton-invisible-bgColor-rest);
54
+ border-color: var(--brand-IconButton-invisible-borderColor-rest);
55
+ backdrop-filter: none;
56
+ }
57
+
58
+ .IconButton--inactive.IconButton--inactive,
59
+ .IconButton--inactive.IconButton--inactive:hover,
60
+ .IconButton--inactive.IconButton--inactive:active {
61
+ color: var(--brand-IconButton-inactive-fgColor);
62
+ cursor: auto;
63
+ background-color: var(--brand-IconButton-inactive-bgColor);
64
+ border-color: var(--brand-IconButton-inactive-borderColor);
65
+ backdrop-filter: none;
66
+ }
67
+
68
+ .IconButton--inactive .IconButton__icon {
69
+ color: inherit;
70
+ }
71
+
72
+ .IconButton--small .IconButton__icon {
73
+ width: var(--brand-IconButton-icon-size-small);
74
+ height: var(--brand-IconButton-icon-size-small);
75
+ }
76
+
77
+ .IconButton--medium .IconButton__icon {
78
+ width: var(--brand-IconButton-icon-size-medium);
79
+ height: var(--brand-IconButton-icon-size-medium);
80
+ }
81
+
82
+ .IconButton--large .IconButton__icon {
83
+ width: var(--brand-IconButton-icon-size-large);
84
+ height: var(--brand-IconButton-icon-size-large);
85
+ }
86
+
87
+ .IconButton__loadingIndicator.IconButton__loadingIndicator {
88
+ display: block;
89
+ box-sizing: border-box;
90
+ width: var(--brand-IconButton-icon-size-medium);
91
+ height: var(--brand-IconButton-icon-size-medium);
92
+ border: var(--brand-borderWidth-thin) solid currentcolor;
93
+ border-inline-end-color: transparent;
94
+ border-radius: 50%;
95
+ animation: IconButton-spin var(--brand-IconButton-loadingIndicator-animationDuration-default) linear infinite;
96
+ }
97
+
98
+ .IconButton--small .IconButton__loadingIndicator {
99
+ width: var(--brand-IconButton-icon-size-small);
100
+ height: var(--brand-IconButton-icon-size-small);
101
+ }
102
+
103
+ .IconButton--large .IconButton__loadingIndicator {
104
+ width: var(--brand-IconButton-icon-size-large);
105
+ height: var(--brand-IconButton-icon-size-large);
106
+ }
107
+
108
+ .IconButton__loadingAnnouncement {
109
+ position: absolute;
110
+ width: var(--base-size-1);
111
+ height: var(--base-size-1);
112
+ padding: 0;
113
+ margin: calc(var(--base-size-1) * -1);
114
+ overflow: hidden;
115
+ clip: rect(0, 0, 0, 0);
116
+ white-space: nowrap;
117
+ border: 0;
118
+ }
119
+
120
+ @keyframes IconButton-spin {
121
+ to {
122
+ transform: rotate(360deg);
123
+ }
124
+ }
125
+
126
+ @media (forced-colors: active) {
127
+ .IconButton--inactive {
128
+ color: GrayText;
129
+ border-color: GrayText;
130
+ }
131
+
132
+ .IconButton__loadingIndicator {
133
+ border-color: ButtonText;
134
+ border-inline-end-color: transparent;
135
+ }
136
+ }
137
+
138
+ @media (prefers-reduced-motion: reduce) {
139
+ .IconButton__loadingIndicator {
140
+ animation-duration: var(--brand-IconButton-loadingIndicator-animationDuration-reducedMotion);
141
+ }
142
+ }
@@ -65,7 +65,9 @@
65
65
  }
66
66
 
67
67
  /* Directional styles */
68
- .Tooltip[data-direction='n'] {
68
+ .Tooltip[data-direction='n'],
69
+ .Tooltip[data-direction='ne'],
70
+ .Tooltip[data-direction='nw'] {
69
71
  -o-border-image: conic-gradient(var(--c) 0 0) 0 / var(--r) calc(100% - var(--p) - var(--b) / 2) 0
70
72
  calc(var(--p) - var(--b) / 2) / 0 0 var(--h) 0;
71
73
  border-image: conic-gradient(var(--c) 0 0) fill 0 / var(--r) calc(100% - var(--p) - var(--b) / 2) 0
@@ -81,7 +83,9 @@
81
83
  );
82
84
  }
83
85
 
84
- .Tooltip[data-direction='s'] {
86
+ .Tooltip[data-direction='s'],
87
+ .Tooltip[data-direction='se'],
88
+ .Tooltip[data-direction='sw'] {
85
89
  -o-border-image: conic-gradient(var(--c) 0 0) 0/ 0 calc(100% - var(--p) - var(--b) / 2) var(--r) calc(
86
90
  var(--p) - var(--b) / 2
87
91
  ) / var(--h) 0 0 0;
@@ -131,11 +135,25 @@
131
135
  );
132
136
  }
133
137
 
134
- .Tooltip[data-direction='n']::after {
138
+ .Tooltip[data-direction='ne'],
139
+ .Tooltip[data-direction='se'] {
140
+ --p: 25%;
141
+ }
142
+
143
+ .Tooltip[data-direction='nw'],
144
+ .Tooltip[data-direction='sw'] {
145
+ --p: 75%;
146
+ }
147
+
148
+ .Tooltip[data-direction='n']::after,
149
+ .Tooltip[data-direction='ne']::after,
150
+ .Tooltip[data-direction='nw']::after {
135
151
  top: 100%;
136
152
  }
137
153
 
138
- .Tooltip[data-direction='s']::after {
154
+ .Tooltip[data-direction='s']::after,
155
+ .Tooltip[data-direction='se']::after,
156
+ .Tooltip[data-direction='sw']::after {
139
157
  bottom: 100%;
140
158
  }
141
159
 
@@ -38,6 +38,16 @@
38
38
  * Sizes
39
39
  */
40
40
 
41
+ .TextInput-wrapper--small {
42
+ height: var(--brand-control-small-size);
43
+ }
44
+
45
+ .TextInput--small {
46
+ font-weight: var(--brand-text-weight-100);
47
+ font-size: var(--brand-text-size-100);
48
+ padding: var(--brand-control-small-paddingBlock) var(--brand-control-small-paddingInline-condensed);
49
+ }
50
+
41
51
  .TextInput-wrapper--medium {
42
52
  height: var(--brand-control-medium-size);
43
53
  }
@@ -131,6 +141,12 @@
131
141
  /*
132
142
  * TextInput visuals
133
143
  */
144
+ .TextInput--has-leading-visual--small {
145
+ padding-inline-start: calc(
146
+ var(--brand-control-small-paddingInline-condensed) + var(--base-size-16) + var(--brand-control-small-gap)
147
+ );
148
+ }
149
+
134
150
  .TextInput--has-leading-visual--medium {
135
151
  padding-inline-start: calc(
136
152
  var(--brand-control-medium-paddingInline-condensed) + var(--base-size-16) + var(--brand-control-medium-gap)
@@ -143,6 +159,12 @@
143
159
  );
144
160
  }
145
161
 
162
+ .TextInput--has-trailing-visual--small {
163
+ padding-inline-end: calc(
164
+ var(--brand-control-small-paddingInline-condensed) + var(--base-size-16) + var(--brand-control-small-gap)
165
+ );
166
+ }
167
+
146
168
  .TextInput--has-trailing-visual--medium {
147
169
  padding-inline-end: calc(
148
170
  var(--brand-control-medium-paddingInline-condensed) + var(--base-size-16) + var(--brand-control-medium-gap)
@@ -177,6 +199,14 @@
177
199
  right: var(--brand-control-medium-paddingInline-condensed);
178
200
  }
179
201
 
202
+ .TextInput-leading-visual--small {
203
+ left: var(--brand-control-small-paddingInline-condensed);
204
+ }
205
+
206
+ .TextInput-trailing-visual--small {
207
+ right: var(--brand-control-small-paddingInline-condensed);
208
+ }
209
+
180
210
  .TextInput-leading-visual--large {
181
211
  left: var(--brand-control-large-paddingInline-condensed);
182
212
  }
@@ -190,6 +220,11 @@
190
220
  height: var(--base-size-16);
191
221
  }
192
222
 
223
+ .TextInput-leading-visual-icon--small {
224
+ width: var(--base-size-16);
225
+ height: var(--base-size-16);
226
+ }
227
+
193
228
  .TextInput-leading-visual-icon--large {
194
229
  width: var(--base-size-20);
195
230
  height: var(--base-size-20);
@@ -237,6 +272,11 @@
237
272
  padding-inline: var(--brand-control-medium-paddingInline-condensed);
238
273
  }
239
274
 
275
+ .TextInput-leading-text-inner--small,
276
+ .TextInput-trailing-text-inner--small {
277
+ padding-inline: var(--brand-control-small-paddingInline-condensed);
278
+ }
279
+
240
280
  .TextInput-leading-text-inner--large,
241
281
  .TextInput-trailing-text-inner--large {
242
282
  padding-inline: var(--brand-control-large-paddingInline-condensed);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/brand-css",
3
- "version": "0.77.1-rc.bd5b9efe",
3
+ "version": "0.78.0-rc.6fbe9fb5",
4
4
  "description": "CSS stylesheets for Primer Brand components",
5
5
  "keywords": [
6
6
  "primer",