@primer/css 0.0.0-20220603095901 → 0.0.0-20220608014129

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 (47) hide show
  1. package/CHANGELOG.md +4 -24
  2. package/actionlist/action-list-item.scss +2 -23
  3. package/app/README.md +25 -0
  4. package/app/app-footer.scss +0 -0
  5. package/app/app-frame.scss +170 -0
  6. package/app/app-header.scss +326 -0
  7. package/app/index.scss +4 -0
  8. package/autocomplete/autocomplete.scss +0 -3
  9. package/dist/actionlist.css +1 -1
  10. package/dist/actionlist.css.map +1 -1
  11. package/dist/app.css +2 -0
  12. package/dist/app.css.map +1 -0
  13. package/dist/app.js +1 -0
  14. package/dist/autocomplete.css.map +1 -1
  15. package/dist/core.css +1 -1
  16. package/dist/core.css.map +1 -1
  17. package/dist/forms.css +1 -1
  18. package/dist/forms.css.map +1 -1
  19. package/dist/marketing-buttons.css +1 -1
  20. package/dist/marketing-buttons.css.map +1 -1
  21. package/dist/marketing.css +1 -1
  22. package/dist/marketing.css.map +1 -1
  23. package/dist/meta.json +62 -62
  24. package/dist/primer.css +3 -3
  25. package/dist/primer.css.map +1 -1
  26. package/dist/product.css +1 -1
  27. package/dist/product.css.map +1 -1
  28. package/dist/stats/actionlist.json +1 -1
  29. package/dist/stats/app.json +1 -0
  30. package/dist/stats/core.json +1 -1
  31. package/dist/stats/forms.json +1 -1
  32. package/dist/stats/marketing-buttons.json +1 -1
  33. package/dist/stats/marketing.json +1 -1
  34. package/dist/stats/primer.json +1 -1
  35. package/dist/stats/product.json +1 -1
  36. package/forms/form-control.scss +1 -2
  37. package/forms/index.scss +0 -2
  38. package/marketing/buttons/button.scss +1 -3
  39. package/package.json +3 -3
  40. package/product/index.scss +1 -1
  41. package/dist/stats/toggle-switch.json +0 -1
  42. package/dist/toggle-switch.css +0 -2
  43. package/dist/toggle-switch.css.map +0 -1
  44. package/dist/toggle-switch.js +0 -1
  45. package/forms/FormControl.scss +0 -382
  46. package/toggle-switch/index.scss +0 -2
  47. package/toggle-switch/toggle-switch.scss +0 -243
package/CHANGELOG.md CHANGED
@@ -1,34 +1,14 @@
1
1
  # @primer/css
2
2
 
3
- ## 0.0.0-20220603095901
4
-
5
- ### Patch Changes
6
-
7
- - Fake entry to force publishing
8
-
9
- * [#2077](https://github.com/primer/css/pull/2077) [`ab078a58`](https://github.com/primer/css/commit/ab078a58c6ebe4118f917bed4c71fbbb56f0634f) Thanks [@mlynam](https://github.com/mlynam)! - Make .form-control elements render as disabled when a parent fieldset is disabled
10
-
11
- ## 20.2.2
12
-
13
- ### Patch Changes
14
-
15
- - [#2075](https://github.com/primer/css/pull/2075) [`9f576a3c`](https://github.com/primer/css/commit/9f576a3c33479fa0beb5ef4fe9b794f67a58070c) Thanks [@langermank](https://github.com/langermank)! - FormControl + Autocomplete component updates
16
-
17
- ## 20.2.1
18
-
19
- ### Patch Changes
20
-
21
- - [#2094](https://github.com/primer/css/pull/2094) [`33f799f1`](https://github.com/primer/css/commit/33f799f13edad2e7434425913a8d445aa27213de) Thanks [@camertron](https://github.com/camertron)! - Add missing ToggleSwitch--checked styles
22
-
23
- * [#2091](https://github.com/primer/css/pull/2091) [`f740d008`](https://github.com/primer/css/commit/f740d00827fa854062f6ce3449ca6745fae9bea8) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Bump font size of large buttons
24
-
25
- ## 20.2.0
3
+ ## 0.0.0-20220608014129
26
4
 
27
5
  ### Minor Changes
28
6
 
29
7
  - [#2087](https://github.com/primer/css/pull/2087) [`8354de5c`](https://github.com/primer/css/commit/8354de5c5eeb60e447712c04e25c2ef370206488) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Changing `PageLayout--isPaneSticky` to `PageLayout--sticky`.
30
8
 
31
- * [#2074](https://github.com/primer/css/pull/2074) [`5cfae2c2`](https://github.com/primer/css/commit/5cfae2c2193885c34af97dd61da201c400bc8549) Thanks [@camertron](https://github.com/camertron)! - Add styles for the ToggleSwitch component
9
+ ### Patch Changes
10
+
11
+ - Fake entry to force publishing
32
12
 
33
13
  ## 20.1.1
34
14
 
@@ -37,7 +37,7 @@
37
37
  outline: $border-style $border-width transparent;
38
38
  outline-offset: -$border-width;
39
39
  // stylelint-disable-next-line primer/box-shadow
40
- box-shadow: inset 0 0 0 $border-width var(--color-action-list-item-default-active-border);
40
+ box-shadow: inset 0 0 0 2px var(--color-action-list-item-default-active-border);
41
41
  }
42
42
  }
43
43
  }
@@ -50,7 +50,7 @@
50
50
  outline: $border-style $border-width transparent;
51
51
  outline-offset: -$border-width;
52
52
  // stylelint-disable-next-line primer/box-shadow
53
- box-shadow: inset 0 0 0 $border-width var(--color-action-list-item-default-active-border);
53
+ box-shadow: inset 0 0 0 2px var(--color-action-list-item-default-active-border);
54
54
  }
55
55
 
56
56
  @media screen and (prefers-reduced-motion: no-preference) {
@@ -235,27 +235,6 @@
235
235
  }
236
236
  }
237
237
 
238
- // disabled
239
- &[aria-disabled='true'] {
240
- .ActionList-item-content {
241
- .ActionList-item-label,
242
- .ActionList-item-description {
243
- color: var(--color-primer-fg-disabled);
244
- }
245
-
246
- .ActionList-item-visual {
247
- fill: var(--color-primer-fg-disabled);
248
- }
249
-
250
- @media (hover: hover) {
251
- &:hover {
252
- cursor: not-allowed;
253
- background-color: transparent;
254
- }
255
- }
256
- }
257
- }
258
-
259
238
  // variants
260
239
 
261
240
  // danger
package/app/README.md ADDED
@@ -0,0 +1,25 @@
1
+ ---
2
+ bundle: "app"
3
+ generated: true
4
+ ---
5
+
6
+ # Primer CSS: `app` bundle
7
+
8
+ ## Usage
9
+
10
+ Primer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:
11
+
12
+ ```scss
13
+ @import "@primer/css/app/index.scss";
14
+ ```
15
+
16
+ ## Build
17
+
18
+ The `@primer/css` npm package includes a standalone CSS build of this module in `dist/app.css`.
19
+
20
+ ## License
21
+
22
+ [MIT](https://github.com/primer/css/blob/main/LICENSE) © [GitHub](https://github.com/)
23
+
24
+
25
+ [scss]: https://sass-lang.com/documentation/syntax#scss
File without changes
@@ -0,0 +1,170 @@
1
+ // stylelint-disable max-nesting-depth
2
+ // stylelint-disable selector-max-specificity
3
+ // stylelint-disable no-duplicate-selectors
4
+
5
+ .AppFrame {
6
+
7
+ // Accessibility navigation
8
+
9
+ .AppFrame-a11yNav {
10
+ position: absolute;
11
+ padding: var(--base-size-16) var(--base-size-16) var(--base-size-8);
12
+ top: calc(var(--base-size-128) * -1);
13
+ left: 0;
14
+ background: #F6F8FA; /* fixme */
15
+ z-index: 1000;
16
+ width: 100%;
17
+
18
+ ul, li {
19
+ list-style: none;
20
+ margin: 0;
21
+ padding: 0;
22
+ }
23
+
24
+ ul {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: var(--base-size-8);
28
+ }
29
+
30
+ &:focus-within {
31
+ top: 0;
32
+
33
+ // Narrow viewport
34
+ @media (max-width: #{map-get($breakpoints, 'md') - 0.02px}) {
35
+ ul {
36
+ justify-content: center;
37
+ }
38
+ }
39
+ }
40
+ }
41
+
42
+ .AppFrame-a11yLink {
43
+ transition: none;
44
+
45
+ &:not(:focus) {
46
+ width: var(--base-size-8);
47
+ height: var(--base-size-8);
48
+ display: block;
49
+ overflow: hidden;
50
+ text-indent: var(--base-size-128);
51
+ border-radius: 100%;
52
+ background: var(--color-border-default);
53
+ pointer-events: none;
54
+ }
55
+
56
+ &:focus {
57
+ display: grid;
58
+ z-index: 20;
59
+ width: auto;
60
+ height: auto;
61
+ overflow: auto;
62
+ border-radius: var(--base-size-24);
63
+ min-height: var(--base-size-32);
64
+ align-items: center;
65
+ padding: 0 var(--base-size-16);
66
+ background: var(--color-accent-fg);
67
+ color: var(--color-fg-on-emphasis);
68
+
69
+ @media (pointer: coarse) {
70
+ &:after {
71
+ // pull from minTouchTarget design token
72
+ @include minTouchTarget(var(--primer-control-minTarget-coarse));
73
+ }
74
+ }
75
+
76
+ @media (prefers-reduced-motion: no-preference) {
77
+ animation: AppFrame-a11yLink-focus 200ms ease-out;
78
+ }
79
+
80
+ @keyframes AppFrame-a11yLink-focus {
81
+ 0% {
82
+ transform: scale(0.3, 0.25);
83
+ color: var(--color-accent-fg);
84
+ }
85
+ 50% {
86
+ transform: scale(1, 1);
87
+ color: var(--color-accent-fg);
88
+ }
89
+ 55% {
90
+ color: var(--color-fg-on-emphasis);
91
+ }
92
+ 100% {
93
+ transform: scaleX(1);
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ .AppFrame-main {
100
+ display: flex;
101
+ flex-direction: column;
102
+ min-height: 100vh;
103
+ }
104
+
105
+ .AppFrame-header-wrapper {
106
+ position: relative;
107
+ overflow: visible;
108
+ height: min-content;
109
+
110
+ .AppFrame-header {
111
+ position: sticky;
112
+ top: 0;
113
+ z-index: 1;
114
+ }
115
+ }
116
+
117
+ .AppFrame-header {
118
+ flex: 0 0 auto;
119
+ }
120
+
121
+ .AppFrame-tray {
122
+ overflow: hidden;
123
+ flex: 0 0 auto;
124
+ background: linear-gradient(to bottom, var(--color-border-default) -#{$spacer-3}, var(--color-canvas-inset) #{$spacer-2});
125
+
126
+ @keyframes flash-tray--appear {
127
+ from {
128
+ opacity: 0;
129
+ transform: translateY(-$spacer-4);
130
+ }
131
+ to {
132
+ opacity: 1;
133
+ }
134
+ }
135
+
136
+ @include breakpoint(md) {
137
+ padding: $spacer-2 $spacer-3;
138
+ border-bottom: $border-width $border-style var(--color-border-default);
139
+
140
+ .Flash {
141
+ animation: flash-tray--appear 160ms 80ms both cubic-bezier(0.33, 1, 0.68, 1);
142
+
143
+ & + .Flash {
144
+ margin-top: $spacer-2;
145
+ animation-delay: 160ms;
146
+ }
147
+ }
148
+ }
149
+
150
+ &:empty {
151
+ display: none;
152
+ }
153
+
154
+ // FIXME: use theme-high-contrast mixin
155
+ @at-root :is([data-color-mode="light"][data-light-theme$='high_contrast'], [data-color-mode="dark"][data-dark-theme$='high_contrast']) & {
156
+ background: var(--color-canvas-inset);
157
+ }
158
+ }
159
+
160
+ .AppFrame-body {
161
+ flex: 1 0;
162
+ height: 100%;
163
+ }
164
+
165
+ .AppFrame-footer {
166
+ border-top: $border-width $border-style var(--color-border-default);
167
+ background: var(--color-canvas-inset);
168
+ padding: $spacer-3;
169
+ }
170
+ }
@@ -0,0 +1,326 @@
1
+ .AppHeader {
2
+ --AppHeader-bg: #F6F8FA; /* bg.subtle? */
3
+ --AppHeader-bg: var(--color-canvas-inset);
4
+
5
+ background: var(--AppHeader-bg);
6
+ color: var(--color-fg-default);
7
+
8
+ // Global bar
9
+
10
+ .AppHeader-globalBar {
11
+ padding: var(--base-size-16, 16px); // Replace with `base-size-16`
12
+ display: flex;
13
+ gap: var(--base-size-8, 8px); // Replace with `base-size-16`
14
+
15
+ // #region [ logo + avatar ]
16
+
17
+ .AppHeader-logo, .AppHeader-user {
18
+ flex: 0 0 auto;
19
+ display: grid;
20
+ width: var(--base-size-32, 32px);
21
+ height: var(--base-size-32, 32px);
22
+
23
+ button, a {
24
+ grid-area: 1 / 1;
25
+ display: block;
26
+ width: var(--base-size-32, 32px);
27
+ height: var(--base-size-32, 32px);
28
+ }
29
+
30
+ button {
31
+ background: transparent;
32
+ padding: 0;
33
+ border: none;
34
+ border-radius: 100%;
35
+ outline-offset: var(--primer-borderWidth-normal, 2px);
36
+ }
37
+
38
+ a {
39
+ grid-area: 1 / 1;
40
+ position: relative;
41
+ overflow: hidden;
42
+ text-indent: var(--base-size-128, 128px);
43
+ color: transparent;
44
+
45
+ @media (pointer: coarse) {
46
+ &:after {
47
+ // pull from minTouchTarget design token
48
+ @include minTouchTarget(var(--primer-control-minTarget-coarse, 44px), var(--primer-control-minTarget-coarse, 44px));
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ .AppHeader-logo svg {
55
+ width: var(--base-size-32, 32px);
56
+ height: var(--base-size-32, 32px);
57
+ }
58
+
59
+ .AppHeader-user {
60
+ background: var(--color-neutral-muted);
61
+ border-radius: 100%;
62
+ position: relative;
63
+
64
+ img {
65
+ display: block;
66
+ position: relative;
67
+ width: 100%;
68
+ height: 100%;
69
+ border-radius: 100%;
70
+ }
71
+
72
+ &:before {
73
+ pointer-events: none;
74
+ content: "";
75
+ display: block;
76
+ position: absolute;
77
+ z-index: 2;
78
+ top: 0;
79
+ left: 0;
80
+ width: 100%;
81
+ height: 100%;
82
+ border-radius: 100%;
83
+ box-shadow: inset 0 0 0 var(--primer-borderWidth-thin, 1px) var(--color-border-subtle);
84
+ }
85
+ }
86
+
87
+ // #endregion [ logo + avatar ]
88
+
89
+ // #region [ Context ]
90
+ // Breadcrumb, title, any contextual information directly after the logo
91
+
92
+ .AppHeader-context {
93
+ flex: 1 1 auto;
94
+ height: var(--base-size-32, 32px);
95
+ //background: #ececec;
96
+ }
97
+
98
+ // #endregion [ Context ]
99
+
100
+ // #region [ Search ]
101
+
102
+ .AppHeader-search {
103
+ position: relative;
104
+ width: 400px;
105
+
106
+ .AppHeader-search-wrap {
107
+ display: grid;
108
+ }
109
+
110
+ .AppHeader-search-label {
111
+ grid-area: 1 / 1;
112
+ display: block;
113
+ font-weight: normal;
114
+ color: var(--color-fg-subtle); // non-essential
115
+ pointer-events: none;
116
+ z-index: 1;
117
+ padding-block: var(--primer-control-medium-paddingBlock);
118
+ padding-inline: calc(var(--primer-control-medium-paddingInline-condensed) + var(--base-size-16) + var(--primer-control-medium-gap));
119
+ line-height: var(--primer-text-body-lineHeight-medium, 20px);
120
+ width: 100%;
121
+ white-space: nowrap;
122
+ overflow: hidden;
123
+
124
+ kbd {
125
+ display: inline-grid;
126
+ align-items: center;
127
+ justify-content: center;
128
+ background: transparent;
129
+ border-radius: var(--primer-borderRadius-small);
130
+ vertical-align: baseline;
131
+ width: var(--base-size-12);
132
+ height: var(--base-size-16);
133
+ border: var(--primer-borderWidth-thin, 1px) solid var(--color-fg-subtle);
134
+ color: inherit;
135
+ padding: 0;
136
+ box-shadow: none;
137
+ }
138
+ }
139
+
140
+ .AppHeader-search-control {
141
+ grid-area: 1 / 1;
142
+ position: relative;
143
+ z-index: 2;
144
+ }
145
+
146
+ .AppHeader-search-visual--leading {
147
+ position: absolute;
148
+ display: block;
149
+ width: var(--base-size-16, 16px);
150
+ height: var(--base-size-16, 16px);
151
+ top: var(--base-size-8, 8px);
152
+ left: var(--base-size-8, 8px);
153
+ color: var(--color-fg-muted);
154
+ pointer-events: none;
155
+
156
+ svg {
157
+ display: block !important;
158
+ }
159
+ }
160
+
161
+ input[type="search"] {
162
+ width: 100%;
163
+ padding-block: calc(var(--primer-control-medium-paddingBlock) - var(--primer-borderWidth-thin));
164
+ padding-inline: calc(var(--primer-control-medium-paddingInline-condensed) + var(--base-size-16) + var(--primer-control-medium-gap) - var(--primer-borderWidth-thin));
165
+
166
+ &:placeholder-shown {
167
+ background: transparent;
168
+ }
169
+
170
+ &:not(:placeholder-shown) {
171
+ background: var(--color-canvas-default);
172
+ }
173
+
174
+ &::placeholder {
175
+ opacity: 1;
176
+ color: transparent;
177
+ }
178
+
179
+ &:focus {
180
+ background: var(--color-canvas-default);
181
+
182
+ &::placeholder {
183
+ color: var(--color-fg-subtle);
184
+ transition: color 120ms linear;
185
+ }
186
+
187
+ &:-moz-placeholder {
188
+ opacity: 1;
189
+ color: var(--color-fg-subtle);
190
+ transition: color 120ms linear;
191
+ }
192
+ }
193
+ }
194
+
195
+ .AppHeader-search-action--trailing {
196
+ display: grid;
197
+ align-items: center;
198
+ justify-content: center;
199
+ position: absolute;
200
+ top: var(--base-size-4, 4px);
201
+ right: var(--base-size-4, 4px);
202
+ z-index: 4;
203
+ width: var(--primer-control-xsmall-size, 24px);
204
+ height: var(--primer-control-xsmall-size, 24px);
205
+ padding: 0;
206
+ border: none;
207
+ border-radius: var(--primer-borderRadius-small);
208
+ background: transparent;
209
+ color: var(--color-fg-muted);
210
+
211
+ &:hover {
212
+ background: var(--color-action-list-item-default-hover-bg);
213
+ }
214
+
215
+ &:active {
216
+ background: var(--color-action-list-item-default-active-bg);
217
+ }
218
+
219
+ &:before {
220
+ content: "";
221
+ display: block;
222
+ position: absolute;
223
+ top: calc((var(--primer-control-xsmall-size) - var(--base-size-16)) / 2);
224
+ left: calc(var(--base-size-4, 4px) * -1);
225
+ width: var(--primer-borderWidth-thin);
226
+ height: var(--base-size-16);
227
+ background: var(--color-border-default);
228
+ }
229
+
230
+ &:after {
231
+ @include minTouchTarget(var(--primer-control-medium-size), var(--primer-control-medium-size));
232
+
233
+ @media (pointer: coarse) {
234
+ min-width: var(--primer-control-minTarget-coarse);
235
+ min-height: var(--primer-control-minTarget-coarse);
236
+ }
237
+ }
238
+
239
+ svg {
240
+ color: inherit;
241
+ }
242
+ }
243
+ }
244
+ // #endregion [ Search ]
245
+
246
+ // #region [ Actions ]
247
+
248
+ .AppHeader-divider {
249
+ height: var(--base-size-20, 20px);
250
+ width: var(--primer-borderWidth-thin, 1px);
251
+ height: var(--base-size-20, 20px);
252
+ background: var(--color-border-default);
253
+ margin: calc((var(--primer-control-medium-size) - var(--base-size-20)) / 2) 0;
254
+ }
255
+
256
+ // #endregion [ Actions ]
257
+
258
+ }
259
+
260
+ // Local bar
261
+
262
+ .AppHeader-localBar {
263
+ padding: 0 var(--base-size-16, 16px) var(--base-size-16, 16px);
264
+ //background: lightcyan;
265
+ box-shadow: inset 0 calc(var(--primer-borderWidth-thin, 1px) * -1) var(--color-border-default);
266
+ }
267
+
268
+ // AppHeader items
269
+
270
+ .AppHeader-item {
271
+ flex: 0 0 auto;
272
+ background: lightpink;
273
+ }
274
+
275
+ .AppHeader-item--full {
276
+ flex-grow: 1;
277
+ }
278
+
279
+ .AppHeader-button {
280
+ position: relative;
281
+ display: grid;
282
+ width: var(--base-size-32);
283
+ height: var(--base-size-32);
284
+ border: var(--primer-borderWidth-thin, 1px) solid var(--color-border-default);
285
+ border-radius: var(--primer-borderRadius-medium, 6px);
286
+ color: var(--color-fg-muted);
287
+ align-items: center;
288
+ justify-content: center;
289
+
290
+ svg {
291
+ display: block !important;
292
+ color: inherit !important;
293
+ width: var(--base-size-16);
294
+ height: var(--base-size-16);
295
+ }
296
+
297
+ &:hover {
298
+ background: var(--color-action-list-item-default-hover-bg);
299
+ }
300
+
301
+ &:active {
302
+ background: var(--color-action-list-item-default-active-bg);
303
+ }
304
+
305
+ @media (pointer: coarse) {
306
+ &:after {
307
+ // pull from minTouchTarget design token
308
+ @include minTouchTarget(var(--primer-control-minTarget-coarse, 44px), var(--primer-control-minTarget-coarse, 44px));
309
+ }
310
+ }
311
+
312
+ &.AppHeader-button--hasIndicator:before {
313
+ position: absolute;
314
+ content: "";
315
+ display: block;
316
+ top: -2px;
317
+ right: -2px;
318
+ z-index: 2;
319
+ background: var(--color-accent-fg);
320
+ border-radius: 100%;
321
+ width: 8px;
322
+ height: 8px;
323
+ box-shadow: 0 0 0 2px var(--AppHeader-bg);
324
+ }
325
+ }
326
+ }
package/app/index.scss ADDED
@@ -0,0 +1,4 @@
1
+ @import '../support/index.scss';
2
+ @import './app-frame.scss';
3
+ @import './app-header.scss';
4
+ @import './app-footer.scss';
@@ -1,6 +1,3 @@
1
- // This file can be deprecated when AutoComplete is upstreamed to PVC + rolled out to dotcom https://github.com/github/primer/issues/796
2
- // AutoComplete relies on FormControl, Overlay and ActionList CSS
3
-
4
1
  // Stacked label (default)
5
2
  .autocomplete-label-stacked {
6
3
  display: block;