@primer/css 20.1.1 → 20.2.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.
@@ -0,0 +1,2 @@
1
+ .ToggleSwitch{align-items:center;display:inline-flex;gap:8px}.ToggleSwitch:hover .ToggleSwitch-knob{background-color:var(--color-btn-hover-bg)}.ToggleSwitch:active .ToggleSwitch-knob{background-color:var(--color-btn-active-bg)}.ToggleSwitch-track{position:relative;display:block;width:64px;height:32px;padding:0;overflow:hidden;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:var(--color-switch-track-bg);border:1px solid var(--color-switch-track-border);border-radius:6px;transition-timing-function:cubic-bezier(0.5, 1, 0.89, 1);transition-duration:80ms;transition-property:background-color,border-color;-webkit-appearance:none;appearance:none}.ToggleSwitch-track:focus,.ToggleSwitch-track:focus-visible{outline-offset:0}@media(pointer: coarse){.ToggleSwitch-track::before{position:absolute;top:50%;left:50%;width:100%;height:100%;min-height:44px;content:"";transform:translateX(-50%) translateY(-50%)}}@media(prefers-reduced-motion){.ToggleSwitch-track{transition:none}.ToggleSwitch-track *{transition:none}}.ToggleSwitch-track[aria-checked=true][aria-disabled=true]{background-color:var(--color-canvas-subtle);border-color:var(--color-border-subtle)}.ToggleSwitch-track[aria-checked=true][aria-disabled=true]:hover,.ToggleSwitch-track[aria-checked=true][aria-disabled=true]:active{background-color:var(--color-canvas-subtle)}.ToggleSwitch-track[aria-checked=true][aria-disabled=true]:hover .ToggleSwitch-knob,.ToggleSwitch-track[aria-checked=true][aria-disabled=true]:active .ToggleSwitch-knob{background-color:var(--color-switch-knob-checked-disabled-bg)}.ToggleSwitch-track[aria-checked=true][aria-disabled=true] .ToggleSwitch-knob{background-color:var(--color-switch-knob-checked-disabled-bg)}.ToggleSwitch-track[aria-checked=true]{background-color:var(--color-switch-track-checked-bg);border-color:var(--color-switch-track-checked-border)}.ToggleSwitch-track[aria-checked=true]:hover{background-color:var(--color-switch-track-checked-hover-bg)}.ToggleSwitch-track[aria-checked=true]:active{background-color:var(--color-switch-track-checked-active-bg)}.ToggleSwitch-track[aria-checked=true] .ToggleSwitch-knob{background-color:var(--color-switch-knob-checked-bg);border:0;transform:translateX(calc(100% + 1px))}.ToggleSwitch-track[aria-checked=true] .ToggleSwitch-lineIcon{transform:translateX(0%)}.ToggleSwitch-track[aria-checked=true] .ToggleSwitch-circleIcon{transform:translateX(100%)}.ToggleSwitch-track[aria-disabled=true]{cursor:not-allowed;background-color:var(--color-canvas-subtle);border-color:var(--color-border-subtle);transition-property:none}.ToggleSwitch-track[aria-disabled=true]:hover .ToggleSwitch-knob,.ToggleSwitch-track[aria-disabled=true]:active .ToggleSwitch-knob{background-color:var(--color-btn-bg)}.ToggleSwitch-track[aria-disabled=true] .ToggleSwitch-knob{border-color:var(--color-border-default);box-shadow:none}.ToggleSwitch-track[aria-disabled=true] .ToggleSwitch-knob:hover,.ToggleSwitch-track[aria-disabled=true] .ToggleSwitch-knob:active{background-color:var(--color-btn-bg)}.ToggleSwitch-track[aria-disabled=true] .ToggleSwitch-lineIcon{color:var(--color-fg-subtle)}.ToggleSwitch-track[aria-disabled=true] .ToggleSwitch-circleIcon{color:var(--color-fg-subtle)}.ToggleSwitch-icons{display:flex;align-items:center;width:100%;height:100%;overflow:hidden}.ToggleSwitch-lineIcon{line-height:0;color:var(--color-accent-fg);transition-duration:80ms;transition-property:transform;transform:translateX(-100%);flex:1 0 50%}.ToggleSwitch-circleIcon{line-height:0;color:var(--color-fg-default);transition-duration:80ms;transition-property:transform;transform:translateX(0);flex:1 0 50%}.ToggleSwitch-knob{position:absolute;top:-1px;bottom:-1px;z-index:1;width:50%;background-color:var(--color-btn-bg);border:1px solid var(--color-switch-track-border);border-radius:6px;box-shadow:var(--color-shadow-medium),var(--color-btn-inset-shadow);transition-timing-function:cubic-bezier(0.5, 1, 0.89, 1);transition-duration:80ms;transition-property:transform;transform:translateX(-1px)}@media(prefers-reduced-motion){.ToggleSwitch-knob{transition:none}}.ToggleSwitch-status{position:relative;font-size:14px;line-height:1.5;color:var(--color-fg-default);text-align:right}.ToggleSwitch--small .ToggleSwitch-status{font-size:12px}.ToggleSwitch--small .ToggleSwitch-track{width:48px;height:24px}.ToggleSwitch--disabled .ToggleSwitch-status{color:var(--color-fg-muted)}.ToggleSwitch-statusOn{height:0;visibility:hidden}.ToggleSwitch-statusOff{height:auto;visibility:visible}.ToggleSwitch--statusAtEnd{flex-direction:row-reverse}.ToggleSwitch--statusAtEnd .ToggleSwitch-status{text-align:left}
2
+ /*# sourceMappingURL=toggle-switch.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file:///home/runner/work/css/css/src/toggle-switch/index.scss%23sass"],"names":[],"mappings":"AA2iBA,cAAA,kBAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,uCAAA,0CAAA,CAAA,wCAAA,2CAAA,CAAA,oBAAA,iBAAA,CAAA,aAAA,CAAA,UAAA,CAAA,WAAA,CAAA,SAAA,CAAA,eAAA,CAAA,oBAAA,CAAA,cAAA,CAAA,wBAAA,CAAA,gBAAA,CAAA,6CAAA,CAAA,iDAAA,CAAA,iBAAA,CAAA,wDAAA,CAAA,wBAAA,CAAA,iDAAA,CAAA,uBAAA,CAAA,eAAA,CAAA,4DAAA,gBAAA,CAAA,wBAAA,4BAAA,iBAAA,CAAA,OAAA,CAAA,QAAA,CAAA,UAAA,CAAA,WAAA,CAAA,eAAA,CAAA,UAAA,CAAA,2CAAA,CAAA,CAAA,+BAAA,oBAAA,eAAA,CAAA,sBAAA,eAAA,CAAA,CAAA,2DAAA,2CAAA,CAAA,uCAAA,CAAA,mIAAA,2CAAA,CAAA,yKAAA,6DAAA,CAAA,8EAAA,6DAAA,CAAA,uCAAA,qDAAA,CAAA,qDAAA,CAAA,6CAAA,2DAAA,CAAA,8CAAA,4DAAA,CAAA,0DAAA,oDAAA,CAAA,QAAA,CAAA,sCAAA,CAAA,8DAAA,wBAAA,CAAA,gEAAA,0BAAA,CAAA,wCAAA,kBAAA,CAAA,2CAAA,CAAA,uCAAA,CAAA,wBAAA,CAAA,mIAAA,oCAAA,CAAA,2DAAA,wCAAA,CAAA,eAAA,CAAA,mIAAA,oCAAA,CAAA,+DAAA,4BAAA,CAAA,iEAAA,4BAAA,CAAA,oBAAA,YAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,WAAA,CAAA,eAAA,CAAA,uBAAA,aAAA,CAAA,4BAAA,CAAA,wBAAA,CAAA,6BAAA,CAAA,2BAAA,CAAA,YAAA,CAAA,yBAAA,aAAA,CAAA,6BAAA,CAAA,wBAAA,CAAA,6BAAA,CAAA,uBAAA,CAAA,YAAA,CAAA,mBAAA,iBAAA,CAAA,QAAA,CAAA,WAAA,CAAA,SAAA,CAAA,SAAA,CAAA,oCAAA,CAAA,iDAAA,CAAA,iBAAA,CAAA,mEAAA,CAAA,wDAAA,CAAA,wBAAA,CAAA,6BAAA,CAAA,0BAAA,CAAA,+BAAA,mBAAA,eAAA,CAAA,CAAA,qBAAA,iBAAA,CAAA,cAAA,CAAA,eAAA,CAAA,6BAAA,CAAA,gBAAA,CAAA,0CAAA,cAAA,CAAA,yCAAA,UAAA,CAAA,WAAA,CAAA,6CAAA,2BAAA,CAAA,uBAAA,QAAA,CAAA,iBAAA,CAAA,wBAAA,WAAA,CAAA,kBAAA,CAAA,2BAAA,0BAAA,CAAA,gDAAA,eAAA","file":"toggle-switch.css"}
@@ -0,0 +1 @@
1
+ export {cssstats: require('./stats/toggle-switch.json')}
@@ -111,12 +111,15 @@ $Layout-responsive-variant-max-breakpoint: 'md' !default;
111
111
 
112
112
  // sticky pane
113
113
 
114
- &.PageLayout--isPaneSticky {
115
- .PageLayout-pane {
116
- position: sticky;
117
- top: 0;
118
- max-height: 100vh;
119
- overflow: auto;
114
+ .PageLayout-pane--sticky {
115
+ position: sticky;
116
+ top: 0;
117
+ max-height: 100vh;
118
+ overflow: auto;
119
+ scrollbar-width: thin;
120
+
121
+ @supports (max-height: 100dvh) {
122
+ max-height: 100dvh;
120
123
  }
121
124
  }
122
125
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/css",
3
- "version": "20.1.1",
3
+ "version": "20.2.0",
4
4
  "description": "The CSS implementation of GitHub's Primer Design System",
5
5
  "homepage": "https://primer.style/css",
6
6
  "author": "GitHub, Inc.",
@@ -60,7 +60,7 @@
60
60
  "front-matter": "4.0.2",
61
61
  "fs-extra": "10.1.0",
62
62
  "globby": "13.1.1",
63
- "jest": "27.5.1",
63
+ "jest": "28.1.0",
64
64
  "js-yaml": "4.1.0",
65
65
  "postcss": "8.4.13",
66
66
  "postcss-calc": "8.2.4",
@@ -25,3 +25,4 @@
25
25
  @import '../subhead/index.scss';
26
26
  @import '../timeline/index.scss';
27
27
  @import '../toasts/index.scss';
28
+ @import '../toggle-switch/index.scss';
@@ -0,0 +1,2 @@
1
+ @import '../support/index.scss';
2
+ @import './toggle-switch.scss';
@@ -0,0 +1,225 @@
1
+ .ToggleSwitch {
2
+ align-items: center;
3
+ display: inline-flex;
4
+ gap: $spacer-2;
5
+
6
+ &:hover {
7
+ .ToggleSwitch-knob {
8
+ background-color: var(--color-btn-hover-bg);
9
+ }
10
+ }
11
+
12
+ &:active {
13
+ .ToggleSwitch-knob {
14
+ background-color: var(--color-btn-active-bg);
15
+ }
16
+ }
17
+ }
18
+
19
+ .ToggleSwitch-track {
20
+ position: relative;
21
+ display: block;
22
+ width: $spacer-8;
23
+ height: $spacer-5;
24
+ padding: 0;
25
+ overflow: hidden;
26
+ text-decoration: none;
27
+ cursor: pointer;
28
+ user-select: none;
29
+ background-color: var(--color-switch-track-bg);
30
+ border: $border-width $border-style var(--color-switch-track-border);
31
+ border-radius: $border-radius;
32
+ transition-timing-function: cubic-bezier(0.5, 1, 0.89, 1);
33
+ transition-duration: 80ms;
34
+ transition-property: background-color, border-color;
35
+ appearance: none;
36
+
37
+ &:focus,
38
+ &:focus-visible {
39
+ outline-offset: 0;
40
+ }
41
+
42
+ @media (pointer: coarse) {
43
+ &::before {
44
+ @include minTouchTarget(calc($spacer-6 + $spacer-1));
45
+ }
46
+ }
47
+
48
+ @media (prefers-reduced-motion) {
49
+ transition: none;
50
+
51
+ * {
52
+ transition: none;
53
+ }
54
+ }
55
+ }
56
+
57
+ .ToggleSwitch-track[aria-checked='true'][aria-disabled='true'] {
58
+ background-color: var(--color-canvas-subtle);
59
+ border-color: var(--color-border-subtle);
60
+
61
+ &:hover,
62
+ &:active {
63
+ background-color: var(--color-canvas-subtle);
64
+
65
+ // This is the most straightforward way of setting the knob's styles when the
66
+ // switch is both checked and disabled.
67
+
68
+ // stylelint-disable-next-line selector-max-specificity
69
+ .ToggleSwitch-knob {
70
+ background-color: var(--color-switch-knob-checked-disabled-bg);
71
+ }
72
+ }
73
+
74
+ .ToggleSwitch-knob {
75
+ background-color: var(--color-switch-knob-checked-disabled-bg);
76
+ }
77
+ }
78
+
79
+ .ToggleSwitch-track[aria-checked='true'] {
80
+ background-color: var(--color-switch-track-checked-bg);
81
+ border-color: var(--color-switch-track-checked-border);
82
+
83
+ &:hover {
84
+ background-color: var(--color-switch-track-checked-hover-bg);
85
+ }
86
+
87
+ &:active {
88
+ background-color: var(--color-switch-track-checked-active-bg);
89
+ }
90
+
91
+ .ToggleSwitch-knob {
92
+ background-color: var(--color-switch-knob-checked-bg);
93
+ border: 0;
94
+ transform: translateX(calc(100% + 1px));
95
+ }
96
+
97
+ .ToggleSwitch-lineIcon {
98
+ transform: translateX(0%);
99
+ }
100
+
101
+ .ToggleSwitch-circleIcon {
102
+ transform: translateX(100%);
103
+ }
104
+ }
105
+
106
+ .ToggleSwitch-track[aria-disabled='true'] {
107
+ cursor: not-allowed;
108
+ background-color: var(--color-canvas-subtle);
109
+ border-color: var(--color-border-subtle);
110
+ transition-property: none;
111
+
112
+ &:hover,
113
+ &:active {
114
+ .ToggleSwitch-knob {
115
+ background-color: var(--color-btn-bg);
116
+ }
117
+ }
118
+
119
+ .ToggleSwitch-knob {
120
+ border-color: var(--color-border-default);
121
+ box-shadow: none;
122
+
123
+ &:hover,
124
+ &:active {
125
+ background-color: var(--color-btn-bg);
126
+ }
127
+ }
128
+
129
+ .ToggleSwitch-lineIcon {
130
+ color: var(--color-fg-subtle);
131
+ }
132
+
133
+ .ToggleSwitch-circleIcon {
134
+ color: var(--color-fg-subtle);
135
+ }
136
+ }
137
+
138
+ .ToggleSwitch-icons {
139
+ display: flex;
140
+ align-items: center;
141
+ width: 100%;
142
+ height: 100%;
143
+ overflow: hidden;
144
+ }
145
+
146
+ .ToggleSwitch-lineIcon {
147
+ line-height: 0;
148
+ color: var(--color-accent-fg);
149
+ transition-duration: 80ms;
150
+ transition-property: transform;
151
+ transform: translateX(-100%);
152
+ flex: 1 0 50%;
153
+ }
154
+
155
+ .ToggleSwitch-circleIcon {
156
+ line-height: 0;
157
+ color: var(--color-fg-default);
158
+ transition-duration: 80ms;
159
+ transition-property: transform;
160
+ transform: translateX(0);
161
+ flex: 1 0 50%;
162
+ }
163
+
164
+ .ToggleSwitch-knob {
165
+ position: absolute;
166
+ top: -1px;
167
+ bottom: -1px;
168
+ z-index: 1;
169
+ width: 50%;
170
+ background-color: var(--color-btn-bg);
171
+ border: $border-width $border-style var(--color-switch-track-border);
172
+ border-radius: $border-radius;
173
+ box-shadow: var(--color-shadow-medium), var(--color-btn-inset-shadow);
174
+ transition-timing-function: cubic-bezier(0.5, 1, 0.89, 1);
175
+ transition-duration: 80ms;
176
+ transition-property: transform;
177
+ transform: translateX(-1px);
178
+
179
+ @media (prefers-reduced-motion) {
180
+ transition: none;
181
+ }
182
+ }
183
+
184
+ .ToggleSwitch-status {
185
+ position: relative;
186
+ font-size: $body-font-size;
187
+ line-height: $body-line-height;
188
+ color: var(--color-fg-default);
189
+ text-align: right;
190
+ }
191
+
192
+ .ToggleSwitch--small {
193
+ .ToggleSwitch-status {
194
+ font-size: $font-size-small;
195
+ }
196
+
197
+ .ToggleSwitch-track {
198
+ width: $spacer-7;
199
+ height: $spacer-4;
200
+ }
201
+ }
202
+
203
+ .ToggleSwitch--disabled {
204
+ .ToggleSwitch-status {
205
+ color: var(--color-fg-muted);
206
+ }
207
+ }
208
+
209
+ .ToggleSwitch-statusOn {
210
+ height: 0;
211
+ visibility: hidden;
212
+ }
213
+
214
+ .ToggleSwitch-statusOff {
215
+ height: auto;
216
+ visibility: visible;
217
+ }
218
+
219
+ .ToggleSwitch--statusAtEnd {
220
+ flex-direction: row-reverse;
221
+
222
+ .ToggleSwitch-status {
223
+ text-align: left;
224
+ }
225
+ }