@trdrs/quickcharts 1.2.0 → 1.3.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.
- package/CHANGELOG.md +36 -0
- package/README.md +582 -29
- package/dist/{chunk-RDAK5MUM.js → chunk-AA7XKXH4.js} +9 -5
- package/dist/{chunk-RDAK5MUM.js.map → chunk-AA7XKXH4.js.map} +1 -1
- package/dist/drawings.js +1 -1
- package/dist/feature-manifest.json +49 -1
- package/dist/index.d.ts +461 -91
- package/dist/index.js +9956 -8963
- package/dist/index.js.map +1 -1
- package/dist/quickcharts.css +122 -110
- package/dist/theme-manifest.json +90 -2
- package/package.json +1 -1
package/dist/quickcharts.css
CHANGED
|
@@ -39,6 +39,14 @@
|
|
|
39
39
|
--qc-illustration-ink: #1e222d;
|
|
40
40
|
--qc-motion-durationBase: 150ms;
|
|
41
41
|
--qc-motion-durationFast: 90ms;
|
|
42
|
+
--qc-motion-durationModerate: 250ms;
|
|
43
|
+
--qc-motion-durationSlow: 350ms;
|
|
44
|
+
--qc-motion-durationSlower: 500ms;
|
|
45
|
+
--qc-motion-easingLinear: linear;
|
|
46
|
+
--qc-motion-easingOut: ease-out;
|
|
47
|
+
--qc-motion-easingSpring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
|
48
|
+
--qc-motion-easingStandard: ease;
|
|
49
|
+
--qc-motion-scaleEnter: 0.97;
|
|
42
50
|
--qc-overlay-scrim: rgba(0, 0, 0, 0.35);
|
|
43
51
|
--qc-overlay-separator: #ebebeb;
|
|
44
52
|
--qc-overlay-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
@@ -122,6 +130,14 @@
|
|
|
122
130
|
--qc-illustration-ink: #d1d4dc;
|
|
123
131
|
--qc-motion-durationBase: 150ms;
|
|
124
132
|
--qc-motion-durationFast: 90ms;
|
|
133
|
+
--qc-motion-durationModerate: 250ms;
|
|
134
|
+
--qc-motion-durationSlow: 350ms;
|
|
135
|
+
--qc-motion-durationSlower: 500ms;
|
|
136
|
+
--qc-motion-easingLinear: linear;
|
|
137
|
+
--qc-motion-easingOut: ease-out;
|
|
138
|
+
--qc-motion-easingSpring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
|
139
|
+
--qc-motion-easingStandard: ease;
|
|
140
|
+
--qc-motion-scaleEnter: 0.97;
|
|
125
141
|
--qc-overlay-scrim: rgba(0, 0, 0, 0.5);
|
|
126
142
|
--qc-overlay-separator: #4a4a4a;
|
|
127
143
|
--qc-overlay-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
|
|
@@ -174,6 +190,16 @@
|
|
|
174
190
|
--qc-text-primary: #dbdbdb;
|
|
175
191
|
--qc-text-secondary: #b8b8b8;
|
|
176
192
|
}
|
|
193
|
+
|
|
194
|
+
@media (prefers-reduced-motion: reduce) {
|
|
195
|
+
[data-qc-theme] {
|
|
196
|
+
--qc-motion-durationBase: 0ms !important;
|
|
197
|
+
--qc-motion-durationFast: 0ms !important;
|
|
198
|
+
--qc-motion-durationModerate: 0ms !important;
|
|
199
|
+
--qc-motion-durationSlow: 0ms !important;
|
|
200
|
+
--qc-motion-durationSlower: 0ms !important;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
177
203
|
}
|
|
178
204
|
|
|
179
205
|
@layer trdrs.chart {
|
|
@@ -249,7 +275,7 @@
|
|
|
249
275
|
border: 1px solid var(--qc-chrome-border);
|
|
250
276
|
border-radius: var(--qc-chrome-radius);
|
|
251
277
|
cursor: pointer;
|
|
252
|
-
transition: background-color var(--qc-motion-durationFast)
|
|
278
|
+
transition: background-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear), border-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
253
279
|
}
|
|
254
280
|
|
|
255
281
|
[data-qc-theme] .qc-button:hover {
|
|
@@ -375,7 +401,7 @@
|
|
|
375
401
|
border: 0;
|
|
376
402
|
border-radius: var(--qc-chrome-radius);
|
|
377
403
|
cursor: pointer;
|
|
378
|
-
transition: background-color var(--qc-motion-durationFast)
|
|
404
|
+
transition: background-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
379
405
|
}
|
|
380
406
|
|
|
381
407
|
[data-qc-theme] .qc-menu-row:hover {
|
|
@@ -1139,13 +1165,8 @@
|
|
|
1139
1165
|
|
|
1140
1166
|
/* Accessibility --------------------------------------------------------------------------------- */
|
|
1141
1167
|
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
transition-duration: 1ms !important;
|
|
1145
|
-
animation-duration: 1ms !important;
|
|
1146
|
-
animation-iteration-count: 1 !important;
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1168
|
+
/* Every transition reads a motion duration role, and the generated tokens resolve each of them to
|
|
1169
|
+
* zero under a reduced-motion preference, so no recipe here repeats that rule. */
|
|
1149
1170
|
|
|
1150
1171
|
@media (forced-colors: active) {
|
|
1151
1172
|
[data-qc-theme] .qc-surface,
|
|
@@ -1219,6 +1240,17 @@
|
|
|
1219
1240
|
font-variant-numeric: tabular-nums lining-nums;
|
|
1220
1241
|
}
|
|
1221
1242
|
|
|
1243
|
+
/* With one zone offered the clock stands alone, in the trigger's own cell and inset. */
|
|
1244
|
+
[data-qc-theme] .qc-bottombar .qc-tz-clock {
|
|
1245
|
+
display: inline-flex;
|
|
1246
|
+
align-items: center;
|
|
1247
|
+
gap: 4px;
|
|
1248
|
+
height: 38px;
|
|
1249
|
+
padding: 0 6px;
|
|
1250
|
+
white-space: nowrap;
|
|
1251
|
+
font-variant-numeric: tabular-nums lining-nums;
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1222
1254
|
[data-qc-theme] .qc-clock {
|
|
1223
1255
|
font-variant-numeric: tabular-nums;
|
|
1224
1256
|
}
|
|
@@ -1304,7 +1336,7 @@
|
|
|
1304
1336
|
transform: translateX(-50%);
|
|
1305
1337
|
opacity: 0;
|
|
1306
1338
|
pointer-events: auto;
|
|
1307
|
-
transition: opacity var(--qc-motion-durationBase)
|
|
1339
|
+
transition: opacity var(--qc-motion-durationBase) var(--qc-motion-easingLinear);
|
|
1308
1340
|
}
|
|
1309
1341
|
|
|
1310
1342
|
[data-qc-theme] .qc-nav[data-qc-near],
|
|
@@ -1438,7 +1470,7 @@
|
|
|
1438
1470
|
inset: 2px;
|
|
1439
1471
|
z-index: -1;
|
|
1440
1472
|
border-radius: var(--qc-chrome-radius);
|
|
1441
|
-
transition: background-color var(--qc-motion-durationFast)
|
|
1473
|
+
transition: background-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
1442
1474
|
}
|
|
1443
1475
|
|
|
1444
1476
|
[data-qc-theme] .qc-toolbar-button:hover {
|
|
@@ -1499,11 +1531,11 @@
|
|
|
1499
1531
|
* and neither bends the other, and each answers to its OWN button: a caret nested inside some other
|
|
1500
1532
|
* open thing is not the thing that opened. */
|
|
1501
1533
|
[data-qc-theme] .qc-caret {
|
|
1502
|
-
transition: translate
|
|
1534
|
+
transition: translate var(--qc-motion-durationSlow) var(--qc-motion-easingStandard);
|
|
1503
1535
|
}
|
|
1504
1536
|
|
|
1505
1537
|
[data-qc-theme] .qc-caret > svg {
|
|
1506
|
-
transition: rotate
|
|
1538
|
+
transition: rotate var(--qc-motion-durationSlow) var(--qc-motion-easingSpring);
|
|
1507
1539
|
}
|
|
1508
1540
|
|
|
1509
1541
|
[data-qc-theme] .qc-toolbar-button:not([aria-expanded='true']):hover > .qc-caret {
|
|
@@ -1626,7 +1658,7 @@
|
|
|
1626
1658
|
height: 14px;
|
|
1627
1659
|
background: var(--qc-control-mark);
|
|
1628
1660
|
border-radius: 50%;
|
|
1629
|
-
transition: inset-inline-start
|
|
1661
|
+
transition: inset-inline-start var(--qc-motion-durationModerate) var(--qc-motion-easingOut);
|
|
1630
1662
|
}
|
|
1631
1663
|
|
|
1632
1664
|
[data-qc-theme] .qc-switch[aria-checked='true'] .qc-switch-knob,
|
|
@@ -1650,7 +1682,7 @@
|
|
|
1650
1682
|
border: 1px solid var(--qc-control-on);
|
|
1651
1683
|
border-radius: 3px;
|
|
1652
1684
|
cursor: pointer;
|
|
1653
|
-
transition: background-color
|
|
1685
|
+
transition: background-color var(--qc-motion-durationSlow) var(--qc-motion-easingStandard), border-color var(--qc-motion-durationSlow) var(--qc-motion-easingStandard);
|
|
1654
1686
|
}
|
|
1655
1687
|
|
|
1656
1688
|
[data-qc-theme] .qc-checkbox:checked {
|
|
@@ -2755,7 +2787,7 @@
|
|
|
2755
2787
|
border-radius: var(--qc-chrome-radius);
|
|
2756
2788
|
content: '';
|
|
2757
2789
|
pointer-events: none;
|
|
2758
|
-
transition: background-color var(--qc-motion-durationFast)
|
|
2790
|
+
transition: background-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
2759
2791
|
}
|
|
2760
2792
|
|
|
2761
2793
|
[data-qc-theme] .qc-drawing-bar-wide {
|
|
@@ -2973,7 +3005,7 @@
|
|
|
2973
3005
|
|
|
2974
3006
|
[data-qc-theme] .qc-drawing-caret {
|
|
2975
3007
|
display: flex;
|
|
2976
|
-
transition: transform var(--qc-motion-durationFast)
|
|
3008
|
+
transition: transform var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
2977
3009
|
}
|
|
2978
3010
|
|
|
2979
3011
|
[data-qc-theme] .qc-drawing-template-button[aria-expanded='true'] .qc-drawing-caret {
|
|
@@ -3097,7 +3129,7 @@
|
|
|
3097
3129
|
content: '';
|
|
3098
3130
|
pointer-events: none;
|
|
3099
3131
|
transform: translate(-50%, -50%);
|
|
3100
|
-
transition: background-color var(--qc-motion-durationFast)
|
|
3132
|
+
transition: background-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
3101
3133
|
}
|
|
3102
3134
|
|
|
3103
3135
|
[data-qc-theme] .qc-drawing-rail-button:hover,
|
|
@@ -3177,13 +3209,13 @@
|
|
|
3177
3209
|
border-start-end-radius: 0;
|
|
3178
3210
|
border-end-end-radius: 0;
|
|
3179
3211
|
opacity: 0;
|
|
3180
|
-
transition: opacity var(--qc-motion-durationFast)
|
|
3212
|
+
transition: opacity var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
3181
3213
|
}
|
|
3182
3214
|
|
|
3183
3215
|
/* The chevron turns to face the panel: pointing out at where the flyout will appear while closed,
|
|
3184
3216
|
* back at the rail once it is open. */
|
|
3185
3217
|
[data-qc-theme] .qc-drawing-rail-arrow svg {
|
|
3186
|
-
transition: transform
|
|
3218
|
+
transition: transform var(--qc-motion-durationSlower) var(--qc-motion-easingSpring);
|
|
3187
3219
|
}
|
|
3188
3220
|
|
|
3189
3221
|
[data-qc-theme] .qc-drawing-rail-arrow[aria-expanded='true'] svg {
|
|
@@ -3294,10 +3326,6 @@
|
|
|
3294
3326
|
cursor: default;
|
|
3295
3327
|
}
|
|
3296
3328
|
|
|
3297
|
-
[data-qc-theme] .qc-drawing-menu-note {
|
|
3298
|
-
padding: 8px 12px;
|
|
3299
|
-
}
|
|
3300
|
-
|
|
3301
3329
|
[data-qc-theme] .qc-drawing-menu .qc-separator {
|
|
3302
3330
|
margin: 6px 0;
|
|
3303
3331
|
}
|
|
@@ -3360,7 +3388,7 @@
|
|
|
3360
3388
|
border-radius: 4px;
|
|
3361
3389
|
cursor: pointer;
|
|
3362
3390
|
opacity: 0;
|
|
3363
|
-
transition: opacity var(--qc-motion-durationFast)
|
|
3391
|
+
transition: opacity var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
3364
3392
|
}
|
|
3365
3393
|
|
|
3366
3394
|
[data-qc-theme] .qc-drawing-flyout-row:hover .qc-drawing-star,
|
|
@@ -3457,7 +3485,7 @@
|
|
|
3457
3485
|
border-radius: 2px;
|
|
3458
3486
|
content: '';
|
|
3459
3487
|
pointer-events: none;
|
|
3460
|
-
transition: background-color var(--qc-motion-durationFast)
|
|
3488
|
+
transition: background-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
3461
3489
|
}
|
|
3462
3490
|
|
|
3463
3491
|
[data-qc-theme] .qc-drawing-favorite:hover,
|
|
@@ -4403,8 +4431,12 @@
|
|
|
4403
4431
|
text-transform: uppercase;
|
|
4404
4432
|
}
|
|
4405
4433
|
|
|
4434
|
+
/* The line a list shows in place of rows (empty, loading, failed): the rows' own size in the muted
|
|
4435
|
+
* ink, on a row's height, its words 8px in where a row's label starts. */
|
|
4406
4436
|
[data-qc-theme] .qc-menu-note {
|
|
4407
|
-
padding: 6px
|
|
4437
|
+
padding: 6px 8px;
|
|
4438
|
+
color: var(--qc-text-muted);
|
|
4439
|
+
line-height: 20px;
|
|
4408
4440
|
}
|
|
4409
4441
|
|
|
4410
4442
|
[data-qc-theme] .qc-menu-panel .qc-separator {
|
|
@@ -4438,6 +4470,34 @@
|
|
|
4438
4470
|
font-size: var(--qc-text-fontSizeBase);
|
|
4439
4471
|
}
|
|
4440
4472
|
|
|
4473
|
+
/* The modal motion, for a dialog that opens and closes with it (the scrim carries `data-state`):
|
|
4474
|
+
* the backdrop fades in, and the box fades in and grows from the entrance scale, over one duration.
|
|
4475
|
+
* Closing runs the same motion in reverse. Under a reduced-motion preference the duration is zero,
|
|
4476
|
+
* so both are instant. */
|
|
4477
|
+
[data-qc-theme] .qc-dialog-scrim[data-state] {
|
|
4478
|
+
opacity: 1;
|
|
4479
|
+
transition: opacity var(--qc-motion-durationBase) var(--qc-motion-easingOut);
|
|
4480
|
+
}
|
|
4481
|
+
|
|
4482
|
+
[data-qc-theme] .qc-dialog-scrim[data-state] > .qc-dialog {
|
|
4483
|
+
opacity: 1;
|
|
4484
|
+
scale: none;
|
|
4485
|
+
transition:
|
|
4486
|
+
opacity var(--qc-motion-durationBase) var(--qc-motion-easingStandard),
|
|
4487
|
+
scale var(--qc-motion-durationBase) var(--qc-motion-easingStandard);
|
|
4488
|
+
}
|
|
4489
|
+
|
|
4490
|
+
[data-qc-theme] .qc-dialog-scrim[data-state='opening'],
|
|
4491
|
+
[data-qc-theme] .qc-dialog-scrim[data-state='closing'] {
|
|
4492
|
+
opacity: 0;
|
|
4493
|
+
}
|
|
4494
|
+
|
|
4495
|
+
[data-qc-theme] .qc-dialog-scrim[data-state='opening'] > .qc-dialog,
|
|
4496
|
+
[data-qc-theme] .qc-dialog-scrim[data-state='closing'] > .qc-dialog {
|
|
4497
|
+
opacity: 0;
|
|
4498
|
+
scale: var(--qc-motion-scaleEnter);
|
|
4499
|
+
}
|
|
4500
|
+
|
|
4441
4501
|
/* In place of rows: the drawing over the line that says nothing matched, centred where the rows
|
|
4442
4502
|
* would have stood. */
|
|
4443
4503
|
[data-qc-theme] .qc-empty {
|
|
@@ -4640,14 +4700,15 @@
|
|
|
4640
4700
|
transform: translateY(0);
|
|
4641
4701
|
clip-path: inset(0);
|
|
4642
4702
|
transition:
|
|
4643
|
-
flex-basis
|
|
4644
|
-
max-height
|
|
4645
|
-
opacity
|
|
4646
|
-
transform
|
|
4647
|
-
clip-path
|
|
4703
|
+
flex-basis var(--qc-motion-durationBase) var(--qc-motion-easingStandard),
|
|
4704
|
+
max-height var(--qc-motion-durationBase) var(--qc-motion-easingStandard),
|
|
4705
|
+
opacity var(--qc-motion-durationBase) var(--qc-motion-easingStandard),
|
|
4706
|
+
transform var(--qc-motion-durationBase) var(--qc-motion-easingStandard),
|
|
4707
|
+
clip-path var(--qc-motion-durationBase) var(--qc-motion-easingStandard);
|
|
4648
4708
|
}
|
|
4649
4709
|
|
|
4650
|
-
/* The row itself animates from zero to 49px and back
|
|
4710
|
+
/* The row itself animates from zero to 49px and back, on the modal motion's duration and timing,
|
|
4711
|
+
* and closing runs the opening in reverse. max-height clamps the fixed-height band while
|
|
4651
4712
|
* flex-basis gives the chart space up at the same pace, so the chart and controls move together.
|
|
4652
4713
|
* The state is driven by CSS transitions because some embedded hosts omit Element.animate(). */
|
|
4653
4714
|
[data-qc-theme] .qc-replay[data-state='opening'],
|
|
@@ -4659,11 +4720,6 @@
|
|
|
4659
4720
|
clip-path: inset(100% 0 0);
|
|
4660
4721
|
}
|
|
4661
4722
|
|
|
4662
|
-
[data-qc-theme] .qc-replay[data-state='closing'] {
|
|
4663
|
-
transition-duration: 170ms, 170ms, 170ms, 170ms, 170ms;
|
|
4664
|
-
transition-timing-function: cubic-bezier(0.4, 0, 1, 1), cubic-bezier(0.4, 0, 1, 1), linear, cubic-bezier(0.4, 0, 1, 1), cubic-bezier(0.4, 0, 1, 1);
|
|
4665
|
-
}
|
|
4666
|
-
|
|
4667
4723
|
[data-qc-theme] .qc-replay::-webkit-scrollbar {
|
|
4668
4724
|
display: none;
|
|
4669
4725
|
}
|
|
@@ -5028,40 +5084,8 @@
|
|
|
5028
5084
|
|
|
5029
5085
|
/* The symbol search dialog and its compare family: the heading, the field with its operators, the
|
|
5030
5086
|
* class strip, and the result list. */
|
|
5031
|
-
[data-qc-theme] .qc-search-dialog-scrim {
|
|
5032
|
-
opacity: 1;
|
|
5033
|
-
transition: opacity 160ms linear;
|
|
5034
|
-
}
|
|
5035
|
-
|
|
5036
5087
|
[data-qc-theme] .qc-search-dialog {
|
|
5037
5088
|
height: min(85vh, 680px);
|
|
5038
|
-
opacity: 1;
|
|
5039
|
-
transform: translateY(0) scale(1);
|
|
5040
|
-
transform-origin: center 42%;
|
|
5041
|
-
transition:
|
|
5042
|
-
opacity 150ms ease-out,
|
|
5043
|
-
transform 190ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
5044
|
-
}
|
|
5045
|
-
|
|
5046
|
-
[data-qc-theme] .qc-search-dialog-scrim[data-state='opening'] {
|
|
5047
|
-
opacity: 0;
|
|
5048
|
-
}
|
|
5049
|
-
|
|
5050
|
-
[data-qc-theme] .qc-search-dialog-scrim[data-state='opening'] .qc-search-dialog {
|
|
5051
|
-
opacity: 0;
|
|
5052
|
-
transform: translateY(8px) scale(0.985);
|
|
5053
|
-
}
|
|
5054
|
-
|
|
5055
|
-
[data-qc-theme] .qc-search-dialog-scrim[data-state='closing'] {
|
|
5056
|
-
opacity: 0;
|
|
5057
|
-
transition-duration: 140ms;
|
|
5058
|
-
}
|
|
5059
|
-
|
|
5060
|
-
[data-qc-theme] .qc-search-dialog-scrim[data-state='closing'] .qc-search-dialog {
|
|
5061
|
-
opacity: 0;
|
|
5062
|
-
transform: translateY(6px) scale(0.985);
|
|
5063
|
-
transition-duration: 110ms, 140ms;
|
|
5064
|
-
transition-timing-function: ease-in, cubic-bezier(0.4, 0, 1, 1);
|
|
5065
5089
|
}
|
|
5066
5090
|
|
|
5067
5091
|
[data-qc-theme] .qc-search-dialog--compare {
|
|
@@ -5205,6 +5229,12 @@
|
|
|
5205
5229
|
display: none;
|
|
5206
5230
|
}
|
|
5207
5231
|
|
|
5232
|
+
/* A selected class's narrower classes: a second strip of the same tabs, standing directly under the
|
|
5233
|
+
* strip above so the two rows read as one filter. */
|
|
5234
|
+
[data-qc-theme] .qc-search-classes + .qc-search-subclasses {
|
|
5235
|
+
padding-top: 0;
|
|
5236
|
+
}
|
|
5237
|
+
|
|
5208
5238
|
[data-qc-theme] .qc-search-scope {
|
|
5209
5239
|
display: inline-flex;
|
|
5210
5240
|
flex: 0 0 auto;
|
|
@@ -5606,11 +5636,6 @@
|
|
|
5606
5636
|
|
|
5607
5637
|
/* Chart settings follows the same centered, two-column layout as TradingView: a fixed title and
|
|
5608
5638
|
* footer around a section rail and one roomy settings page. */
|
|
5609
|
-
[data-qc-theme] .qc-chart-settings-scrim {
|
|
5610
|
-
opacity: 1;
|
|
5611
|
-
transition: opacity 160ms linear;
|
|
5612
|
-
}
|
|
5613
|
-
|
|
5614
5639
|
[data-qc-theme] .qc-chart-settings-dialog {
|
|
5615
5640
|
box-sizing: border-box;
|
|
5616
5641
|
height: min(612px, calc(100vh - 32px));
|
|
@@ -5620,32 +5645,6 @@
|
|
|
5620
5645
|
border: 0;
|
|
5621
5646
|
border-radius: 6px;
|
|
5622
5647
|
box-shadow: var(--qc-overlay-shadow);
|
|
5623
|
-
opacity: 1;
|
|
5624
|
-
transform: translateY(0) scale(1);
|
|
5625
|
-
transform-origin: center 42%;
|
|
5626
|
-
transition:
|
|
5627
|
-
opacity 150ms ease-out,
|
|
5628
|
-
transform 190ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
5629
|
-
}
|
|
5630
|
-
|
|
5631
|
-
[data-qc-theme] .qc-chart-settings-scrim[data-state='opening'],
|
|
5632
|
-
[data-qc-theme] .qc-chart-settings-scrim[data-state='closing'] {
|
|
5633
|
-
opacity: 0;
|
|
5634
|
-
}
|
|
5635
|
-
|
|
5636
|
-
[data-qc-theme] .qc-chart-settings-scrim[data-state='opening'] .qc-chart-settings-dialog,
|
|
5637
|
-
[data-qc-theme] .qc-chart-settings-scrim[data-state='closing'] .qc-chart-settings-dialog {
|
|
5638
|
-
opacity: 0;
|
|
5639
|
-
transform: translateY(8px) scale(0.985);
|
|
5640
|
-
}
|
|
5641
|
-
|
|
5642
|
-
[data-qc-theme] .qc-chart-settings-scrim[data-state='closing'] {
|
|
5643
|
-
transition-duration: 140ms;
|
|
5644
|
-
}
|
|
5645
|
-
|
|
5646
|
-
[data-qc-theme] .qc-chart-settings-scrim[data-state='closing'] .qc-chart-settings-dialog {
|
|
5647
|
-
transition-duration: 110ms, 140ms;
|
|
5648
|
-
transition-timing-function: ease-in, cubic-bezier(0.4, 0, 1, 1);
|
|
5649
5648
|
}
|
|
5650
5649
|
|
|
5651
5650
|
[data-qc-theme] .qc-chart-settings-dialog .qc-dialog-title {
|
|
@@ -5807,7 +5806,7 @@
|
|
|
5807
5806
|
border-radius: 0;
|
|
5808
5807
|
opacity: 0;
|
|
5809
5808
|
transform: rotate(45deg);
|
|
5810
|
-
transition: opacity var(--qc-motion-durationFast)
|
|
5809
|
+
transition: opacity var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
5811
5810
|
}
|
|
5812
5811
|
|
|
5813
5812
|
[data-qc-theme] .qc-settings-menu .qc-switch[aria-checked='true'] .qc-switch-knob {
|
|
@@ -5943,13 +5942,6 @@
|
|
|
5943
5942
|
}
|
|
5944
5943
|
}
|
|
5945
5944
|
|
|
5946
|
-
@media (prefers-reduced-motion: reduce) {
|
|
5947
|
-
[data-qc-theme] .qc-chart-settings-scrim,
|
|
5948
|
-
[data-qc-theme] .qc-chart-settings-dialog {
|
|
5949
|
-
transition-duration: 0ms;
|
|
5950
|
-
}
|
|
5951
|
-
}
|
|
5952
|
-
|
|
5953
5945
|
/* The market-status control on the legend and its popup. */
|
|
5954
5946
|
[data-qc-theme] .qc-legend-status {
|
|
5955
5947
|
display: inline-flex;
|
|
@@ -6347,7 +6339,7 @@
|
|
|
6347
6339
|
[data-qc-theme] .qc-tf-unit-caret {
|
|
6348
6340
|
flex: 0 0 auto;
|
|
6349
6341
|
color: var(--qc-text-muted);
|
|
6350
|
-
transition: transform var(--qc-motion-durationFast)
|
|
6342
|
+
transition: transform var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
6351
6343
|
transform: rotate(180deg);
|
|
6352
6344
|
}
|
|
6353
6345
|
|
|
@@ -6401,6 +6393,26 @@
|
|
|
6401
6393
|
cursor: not-allowed;
|
|
6402
6394
|
}
|
|
6403
6395
|
|
|
6396
|
+
/* The same list with no drop-down around it, for a page that holds the picker in a box of its own:
|
|
6397
|
+
* a phone's card, where the card IS the picker. It fills that box, the rows scroll inside it, and the
|
|
6398
|
+
* composer stays pinned below them. The box is the page's, so the card paints no surface of its own. */
|
|
6399
|
+
[data-qc-theme].qc-tf-card {
|
|
6400
|
+
display: flex;
|
|
6401
|
+
min-height: 0;
|
|
6402
|
+
height: 100%;
|
|
6403
|
+
flex-direction: column;
|
|
6404
|
+
color: var(--qc-text-primary);
|
|
6405
|
+
font-family: var(--qc-text-fontFamily);
|
|
6406
|
+
font-size: var(--qc-text-fontSizeBase);
|
|
6407
|
+
}
|
|
6408
|
+
|
|
6409
|
+
[data-qc-theme].qc-tf-card > .qc-tf-menu {
|
|
6410
|
+
display: flex;
|
|
6411
|
+
flex: 1 1 auto;
|
|
6412
|
+
min-height: 0;
|
|
6413
|
+
flex-direction: column;
|
|
6414
|
+
}
|
|
6415
|
+
|
|
6404
6416
|
/* The chart's notices, stacked at the bottom of the charts, newest last. The region is the charts
|
|
6405
6417
|
* grid's next sibling in the root's column and takes no height of its own; the stack inside it is
|
|
6406
6418
|
* anchored to its top edge and grows upward, over the charts, never over the bottom bar. */
|
package/dist/theme-manifest.json
CHANGED
|
@@ -239,7 +239,15 @@
|
|
|
239
239
|
"family": "motion",
|
|
240
240
|
"roles": [
|
|
241
241
|
"motion.durationFast",
|
|
242
|
-
"motion.durationBase"
|
|
242
|
+
"motion.durationBase",
|
|
243
|
+
"motion.durationModerate",
|
|
244
|
+
"motion.durationSlow",
|
|
245
|
+
"motion.durationSlower",
|
|
246
|
+
"motion.easingStandard",
|
|
247
|
+
"motion.easingOut",
|
|
248
|
+
"motion.easingLinear",
|
|
249
|
+
"motion.easingSpring",
|
|
250
|
+
"motion.scaleEnter"
|
|
243
251
|
]
|
|
244
252
|
}
|
|
245
253
|
],
|
|
@@ -1236,11 +1244,91 @@
|
|
|
1236
1244
|
"id": "motion.durationBase",
|
|
1237
1245
|
"family": "motion",
|
|
1238
1246
|
"kind": "duration",
|
|
1239
|
-
"description": "An ordinary transition,
|
|
1247
|
+
"description": "An ordinary transition: a modal dialog and its backdrop opening and closing, and the replay row entering and leaving.",
|
|
1240
1248
|
"values": {
|
|
1241
1249
|
"light": "150ms",
|
|
1242
1250
|
"dark": "150ms"
|
|
1243
1251
|
}
|
|
1252
|
+
},
|
|
1253
|
+
{
|
|
1254
|
+
"id": "motion.durationModerate",
|
|
1255
|
+
"family": "motion",
|
|
1256
|
+
"kind": "duration",
|
|
1257
|
+
"description": "A control moving to its new state, such as a switch knob sliding.",
|
|
1258
|
+
"values": {
|
|
1259
|
+
"light": "250ms",
|
|
1260
|
+
"dark": "250ms"
|
|
1261
|
+
}
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
"id": "motion.durationSlow",
|
|
1265
|
+
"family": "motion",
|
|
1266
|
+
"kind": "duration",
|
|
1267
|
+
"description": "A small mark settling, such as a disclosure caret turning or a checkbox filling.",
|
|
1268
|
+
"values": {
|
|
1269
|
+
"light": "350ms",
|
|
1270
|
+
"dark": "350ms"
|
|
1271
|
+
}
|
|
1272
|
+
},
|
|
1273
|
+
{
|
|
1274
|
+
"id": "motion.durationSlower",
|
|
1275
|
+
"family": "motion",
|
|
1276
|
+
"kind": "duration",
|
|
1277
|
+
"description": "A larger mark turning, such as the drawing rail's chevron.",
|
|
1278
|
+
"values": {
|
|
1279
|
+
"light": "500ms",
|
|
1280
|
+
"dark": "500ms"
|
|
1281
|
+
}
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
"id": "motion.easingStandard",
|
|
1285
|
+
"family": "motion",
|
|
1286
|
+
"kind": "easing",
|
|
1287
|
+
"description": "The timing of an ordinary transition: a modal dialog box, the replay row, a caret dip, a checkbox fill.",
|
|
1288
|
+
"values": {
|
|
1289
|
+
"light": "ease",
|
|
1290
|
+
"dark": "ease"
|
|
1291
|
+
}
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"id": "motion.easingOut",
|
|
1295
|
+
"family": "motion",
|
|
1296
|
+
"kind": "easing",
|
|
1297
|
+
"description": "The timing of a motion that settles as it ends: a modal backdrop fading, a switch knob sliding.",
|
|
1298
|
+
"values": {
|
|
1299
|
+
"light": "ease-out",
|
|
1300
|
+
"dark": "ease-out"
|
|
1301
|
+
}
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
"id": "motion.easingLinear",
|
|
1305
|
+
"family": "motion",
|
|
1306
|
+
"kind": "easing",
|
|
1307
|
+
"description": "The timing of a color or opacity change under the pointer.",
|
|
1308
|
+
"values": {
|
|
1309
|
+
"light": "linear",
|
|
1310
|
+
"dark": "linear"
|
|
1311
|
+
}
|
|
1312
|
+
},
|
|
1313
|
+
{
|
|
1314
|
+
"id": "motion.easingSpring",
|
|
1315
|
+
"family": "motion",
|
|
1316
|
+
"kind": "easing",
|
|
1317
|
+
"description": "The timing of a mark that turns with a slight overshoot, such as a caret or chevron.",
|
|
1318
|
+
"values": {
|
|
1319
|
+
"light": "cubic-bezier(0.175, 0.885, 0.32, 1.275)",
|
|
1320
|
+
"dark": "cubic-bezier(0.175, 0.885, 0.32, 1.275)"
|
|
1321
|
+
}
|
|
1322
|
+
},
|
|
1323
|
+
{
|
|
1324
|
+
"id": "motion.scaleEnter",
|
|
1325
|
+
"family": "motion",
|
|
1326
|
+
"kind": "scale",
|
|
1327
|
+
"description": "The scale a modal dialog box grows from as it opens and returns to as it closes.",
|
|
1328
|
+
"values": {
|
|
1329
|
+
"light": "0.97",
|
|
1330
|
+
"dark": "0.97"
|
|
1331
|
+
}
|
|
1244
1332
|
}
|
|
1245
1333
|
]
|
|
1246
1334
|
}
|
package/package.json
CHANGED