@trdrs/quickcharts 1.1.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 +40 -0
- package/README.md +584 -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 +2762 -2379
- package/dist/index.js +10233 -9014
- package/dist/index.js.map +1 -1
- package/dist/quickcharts.css +447 -32
- 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 {
|
|
@@ -4623,6 +4683,8 @@
|
|
|
4623
4683
|
justify-content: flex-end;
|
|
4624
4684
|
width: 100%;
|
|
4625
4685
|
min-width: 0;
|
|
4686
|
+
min-height: 0;
|
|
4687
|
+
max-height: 49px;
|
|
4626
4688
|
height: 49px;
|
|
4627
4689
|
padding: 0;
|
|
4628
4690
|
overflow-x: auto;
|
|
@@ -4633,6 +4695,29 @@
|
|
|
4633
4695
|
border-top: 1px solid var(--qc-canvas-paneBorder);
|
|
4634
4696
|
pointer-events: auto;
|
|
4635
4697
|
scrollbar-width: none;
|
|
4698
|
+
transform-origin: bottom center;
|
|
4699
|
+
opacity: 1;
|
|
4700
|
+
transform: translateY(0);
|
|
4701
|
+
clip-path: inset(0);
|
|
4702
|
+
transition:
|
|
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);
|
|
4708
|
+
}
|
|
4709
|
+
|
|
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
|
|
4712
|
+
* flex-basis gives the chart space up at the same pace, so the chart and controls move together.
|
|
4713
|
+
* The state is driven by CSS transitions because some embedded hosts omit Element.animate(). */
|
|
4714
|
+
[data-qc-theme] .qc-replay[data-state='opening'],
|
|
4715
|
+
[data-qc-theme] .qc-replay[data-state='closing'] {
|
|
4716
|
+
flex-basis: 0;
|
|
4717
|
+
max-height: 0;
|
|
4718
|
+
opacity: 0;
|
|
4719
|
+
transform: translateY(8px);
|
|
4720
|
+
clip-path: inset(100% 0 0);
|
|
4636
4721
|
}
|
|
4637
4722
|
|
|
4638
4723
|
[data-qc-theme] .qc-replay::-webkit-scrollbar {
|
|
@@ -4918,6 +5003,7 @@
|
|
|
4918
5003
|
* `scrollbar-width: none`, which more than one app ships) from erasing the chart's own. */
|
|
4919
5004
|
[data-qc-theme] .qc-menu-body,
|
|
4920
5005
|
[data-qc-theme] .qc-dialog-body,
|
|
5006
|
+
[data-qc-theme] .qc-chart-settings-panel,
|
|
4921
5007
|
[data-qc-theme] .qc-picker-list,
|
|
4922
5008
|
[data-qc-theme] .qc-layouts-list,
|
|
4923
5009
|
[data-qc-theme] .qc-search-list,
|
|
@@ -4929,6 +5015,7 @@
|
|
|
4929
5015
|
|
|
4930
5016
|
[data-qc-theme] .qc-menu-body::-webkit-scrollbar,
|
|
4931
5017
|
[data-qc-theme] .qc-dialog-body::-webkit-scrollbar,
|
|
5018
|
+
[data-qc-theme] .qc-chart-settings-panel::-webkit-scrollbar,
|
|
4932
5019
|
[data-qc-theme] .qc-picker-list::-webkit-scrollbar,
|
|
4933
5020
|
[data-qc-theme] .qc-layouts-list::-webkit-scrollbar,
|
|
4934
5021
|
[data-qc-theme] .qc-search-list::-webkit-scrollbar,
|
|
@@ -4942,6 +5029,7 @@
|
|
|
4942
5029
|
|
|
4943
5030
|
[data-qc-theme] .qc-menu-body::-webkit-scrollbar-thumb,
|
|
4944
5031
|
[data-qc-theme] .qc-dialog-body::-webkit-scrollbar-thumb,
|
|
5032
|
+
[data-qc-theme] .qc-chart-settings-panel::-webkit-scrollbar-thumb,
|
|
4945
5033
|
[data-qc-theme] .qc-picker-list::-webkit-scrollbar-thumb,
|
|
4946
5034
|
[data-qc-theme] .qc-layouts-list::-webkit-scrollbar-thumb,
|
|
4947
5035
|
[data-qc-theme] .qc-search-list::-webkit-scrollbar-thumb,
|
|
@@ -4956,6 +5044,7 @@
|
|
|
4956
5044
|
|
|
4957
5045
|
[data-qc-theme] .qc-menu-body::-webkit-scrollbar-track,
|
|
4958
5046
|
[data-qc-theme] .qc-dialog-body::-webkit-scrollbar-track,
|
|
5047
|
+
[data-qc-theme] .qc-chart-settings-panel::-webkit-scrollbar-track,
|
|
4959
5048
|
[data-qc-theme] .qc-picker-list::-webkit-scrollbar-track,
|
|
4960
5049
|
[data-qc-theme] .qc-layouts-list::-webkit-scrollbar-track,
|
|
4961
5050
|
[data-qc-theme] .qc-search-list::-webkit-scrollbar-track,
|
|
@@ -4968,6 +5057,7 @@
|
|
|
4968
5057
|
|
|
4969
5058
|
[data-qc-theme] .qc-menu-body::-webkit-scrollbar-corner,
|
|
4970
5059
|
[data-qc-theme] .qc-dialog-body::-webkit-scrollbar-corner,
|
|
5060
|
+
[data-qc-theme] .qc-chart-settings-panel::-webkit-scrollbar-corner,
|
|
4971
5061
|
[data-qc-theme] .qc-picker-list::-webkit-scrollbar-corner,
|
|
4972
5062
|
[data-qc-theme] .qc-layouts-list::-webkit-scrollbar-corner,
|
|
4973
5063
|
[data-qc-theme] .qc-search-list::-webkit-scrollbar-corner,
|
|
@@ -4980,6 +5070,7 @@
|
|
|
4980
5070
|
@supports (-moz-appearance: none) {
|
|
4981
5071
|
[data-qc-theme] .qc-menu-body,
|
|
4982
5072
|
[data-qc-theme] .qc-dialog-body,
|
|
5073
|
+
[data-qc-theme] .qc-chart-settings-panel,
|
|
4983
5074
|
[data-qc-theme] .qc-picker-list,
|
|
4984
5075
|
[data-qc-theme] .qc-layouts-list,
|
|
4985
5076
|
[data-qc-theme] .qc-search-list,
|
|
@@ -5138,6 +5229,12 @@
|
|
|
5138
5229
|
display: none;
|
|
5139
5230
|
}
|
|
5140
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
|
+
|
|
5141
5238
|
[data-qc-theme] .qc-search-scope {
|
|
5142
5239
|
display: inline-flex;
|
|
5143
5240
|
flex: 0 0 auto;
|
|
@@ -5537,14 +5634,312 @@
|
|
|
5537
5634
|
font-size: var(--qc-text-fontSizeSmall);
|
|
5538
5635
|
}
|
|
5539
5636
|
|
|
5540
|
-
/*
|
|
5541
|
-
|
|
5542
|
-
|
|
5637
|
+
/* Chart settings follows the same centered, two-column layout as TradingView: a fixed title and
|
|
5638
|
+
* footer around a section rail and one roomy settings page. */
|
|
5639
|
+
[data-qc-theme] .qc-chart-settings-dialog {
|
|
5640
|
+
box-sizing: border-box;
|
|
5641
|
+
height: min(612px, calc(100vh - 32px));
|
|
5642
|
+
max-height: min(612px, calc(100vh - 32px));
|
|
5643
|
+
color: var(--qc-text-primary);
|
|
5644
|
+
background: var(--qc-overlay-surface);
|
|
5645
|
+
border: 0;
|
|
5646
|
+
border-radius: 6px;
|
|
5647
|
+
box-shadow: var(--qc-overlay-shadow);
|
|
5648
|
+
}
|
|
5649
|
+
|
|
5650
|
+
[data-qc-theme] .qc-chart-settings-dialog .qc-dialog-title {
|
|
5651
|
+
box-sizing: border-box;
|
|
5652
|
+
min-height: 64px;
|
|
5653
|
+
padding: 0 14px 0 19px;
|
|
5654
|
+
}
|
|
5655
|
+
|
|
5656
|
+
[data-qc-theme] .qc-chart-settings-dialog .qc-dialog-title .qc-title {
|
|
5657
|
+
font-size: 20px;
|
|
5658
|
+
font-weight: 600;
|
|
5659
|
+
line-height: 28px;
|
|
5660
|
+
}
|
|
5661
|
+
|
|
5662
|
+
[data-qc-theme] .qc-chart-settings-dialog .qc-dialog-close {
|
|
5663
|
+
width: 40px;
|
|
5664
|
+
height: 40px;
|
|
5665
|
+
border: 0;
|
|
5666
|
+
}
|
|
5667
|
+
|
|
5668
|
+
[data-qc-theme] .qc-chart-settings-body {
|
|
5669
|
+
display: flex;
|
|
5670
|
+
flex: 1 1 auto;
|
|
5671
|
+
flex-direction: row;
|
|
5672
|
+
gap: 0;
|
|
5673
|
+
min-height: 0;
|
|
5674
|
+
padding: 0;
|
|
5675
|
+
overflow: hidden;
|
|
5676
|
+
}
|
|
5677
|
+
|
|
5678
|
+
[data-qc-theme] .qc-chart-settings-nav {
|
|
5679
|
+
display: flex;
|
|
5680
|
+
flex: 0 0 226px;
|
|
5681
|
+
flex-direction: column;
|
|
5682
|
+
gap: 2px;
|
|
5683
|
+
box-sizing: border-box;
|
|
5684
|
+
padding: 10px;
|
|
5685
|
+
border-inline-end: 1px solid var(--qc-overlay-separator);
|
|
5686
|
+
}
|
|
5687
|
+
|
|
5688
|
+
[data-qc-theme] .qc-chart-settings-nav-item {
|
|
5689
|
+
display: flex;
|
|
5690
|
+
gap: 10px;
|
|
5691
|
+
align-items: center;
|
|
5692
|
+
width: 100%;
|
|
5693
|
+
min-height: 40px;
|
|
5543
5694
|
padding: 0 12px;
|
|
5695
|
+
color: var(--qc-text-secondary);
|
|
5696
|
+
font: inherit;
|
|
5697
|
+
font-size: 14px;
|
|
5698
|
+
text-align: start;
|
|
5699
|
+
background: transparent;
|
|
5700
|
+
border: 0;
|
|
5701
|
+
border-radius: 8px;
|
|
5702
|
+
cursor: pointer;
|
|
5703
|
+
}
|
|
5704
|
+
|
|
5705
|
+
[data-qc-theme] .qc-chart-settings-nav-item:hover {
|
|
5706
|
+
color: var(--qc-text-primary);
|
|
5707
|
+
background: var(--qc-state-hover);
|
|
5708
|
+
}
|
|
5709
|
+
|
|
5710
|
+
[data-qc-theme] .qc-chart-settings-nav-item[aria-selected='true'] {
|
|
5711
|
+
color: var(--qc-text-primary);
|
|
5712
|
+
font-weight: 600;
|
|
5713
|
+
background: var(--qc-state-selected);
|
|
5714
|
+
}
|
|
5715
|
+
|
|
5716
|
+
[data-qc-theme] .qc-chart-settings-panel {
|
|
5717
|
+
display: flex;
|
|
5718
|
+
flex: 1 1 auto;
|
|
5719
|
+
flex-direction: column;
|
|
5720
|
+
min-width: 0;
|
|
5721
|
+
padding: 13px 20px 26px;
|
|
5722
|
+
overflow-y: auto;
|
|
5723
|
+
outline: none;
|
|
5724
|
+
}
|
|
5725
|
+
|
|
5726
|
+
[data-qc-theme] .qc-chart-settings-panel > .qc-menu-heading {
|
|
5727
|
+
min-height: auto;
|
|
5728
|
+
margin: 0 0 8px;
|
|
5729
|
+
padding: 0;
|
|
5730
|
+
color: var(--qc-text-muted);
|
|
5731
|
+
font-size: 11px;
|
|
5732
|
+
font-weight: 400;
|
|
5733
|
+
line-height: 24px;
|
|
5734
|
+
letter-spacing: 0;
|
|
5735
|
+
}
|
|
5736
|
+
|
|
5737
|
+
[data-qc-theme] .qc-settings-menu .qc-settings-row {
|
|
5738
|
+
display: grid;
|
|
5739
|
+
grid-template-columns: minmax(150px, 1fr) auto;
|
|
5740
|
+
gap: 16px;
|
|
5741
|
+
min-height: 44px;
|
|
5742
|
+
padding: 0;
|
|
5743
|
+
}
|
|
5744
|
+
|
|
5745
|
+
[data-qc-theme] .qc-settings-menu .qc-settings-row .qc-field-label {
|
|
5746
|
+
color: var(--qc-text-secondary);
|
|
5747
|
+
font-size: 14px;
|
|
5748
|
+
}
|
|
5749
|
+
|
|
5750
|
+
[data-qc-theme] .qc-settings-menu .qc-settings-row .qc-drawing-swatch-button {
|
|
5751
|
+
box-sizing: border-box;
|
|
5752
|
+
width: 38px;
|
|
5753
|
+
height: 34px;
|
|
5754
|
+
padding: 3px;
|
|
5755
|
+
background: var(--qc-chrome-surfaceRaised);
|
|
5756
|
+
border-color: var(--qc-chrome-fieldBorder);
|
|
5757
|
+
border-radius: 6px;
|
|
5758
|
+
}
|
|
5759
|
+
|
|
5760
|
+
[data-qc-theme] .qc-settings-menu .qc-settings-row .qc-drawing-well {
|
|
5761
|
+
width: 28px;
|
|
5762
|
+
height: 26px;
|
|
5763
|
+
border-radius: 4px;
|
|
5544
5764
|
}
|
|
5545
5765
|
|
|
5766
|
+
/* TradingView uses compact square checks in this dialog. Keep the existing accessible switch role
|
|
5767
|
+
* while painting it as the same control and placing it before the label. */
|
|
5546
5768
|
[data-qc-theme] .qc-settings-menu .qc-switch-row {
|
|
5547
|
-
|
|
5769
|
+
display: flex;
|
|
5770
|
+
flex-direction: row-reverse;
|
|
5771
|
+
justify-content: flex-end;
|
|
5772
|
+
gap: 10px;
|
|
5773
|
+
min-height: 44px;
|
|
5774
|
+
padding: 0;
|
|
5775
|
+
color: var(--qc-text-secondary);
|
|
5776
|
+
cursor: pointer;
|
|
5777
|
+
}
|
|
5778
|
+
|
|
5779
|
+
[data-qc-theme] .qc-settings-menu .qc-switch {
|
|
5780
|
+
width: 18px;
|
|
5781
|
+
height: 18px;
|
|
5782
|
+
box-sizing: border-box;
|
|
5783
|
+
background: transparent;
|
|
5784
|
+
border: 1px solid var(--qc-control-on);
|
|
5785
|
+
border-radius: 3px;
|
|
5786
|
+
}
|
|
5787
|
+
|
|
5788
|
+
[data-qc-theme] .qc-settings-menu .qc-switch:hover:not([disabled]) {
|
|
5789
|
+
background: var(--qc-state-hover);
|
|
5790
|
+
}
|
|
5791
|
+
|
|
5792
|
+
[data-qc-theme] .qc-settings-menu .qc-switch[aria-checked='true'] {
|
|
5793
|
+
background: var(--qc-control-on);
|
|
5794
|
+
}
|
|
5795
|
+
|
|
5796
|
+
[data-qc-theme] .qc-settings-menu .qc-switch-knob {
|
|
5797
|
+
position: absolute;
|
|
5798
|
+
top: 3px;
|
|
5799
|
+
inset-inline-start: 6px;
|
|
5800
|
+
width: 5px;
|
|
5801
|
+
height: 9px;
|
|
5802
|
+
box-sizing: border-box;
|
|
5803
|
+
background: transparent;
|
|
5804
|
+
border: solid var(--qc-control-mark);
|
|
5805
|
+
border-width: 0 2px 2px 0;
|
|
5806
|
+
border-radius: 0;
|
|
5807
|
+
opacity: 0;
|
|
5808
|
+
transform: rotate(45deg);
|
|
5809
|
+
transition: opacity var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
5810
|
+
}
|
|
5811
|
+
|
|
5812
|
+
[data-qc-theme] .qc-settings-menu .qc-switch[aria-checked='true'] .qc-switch-knob {
|
|
5813
|
+
inset-inline-start: 6px;
|
|
5814
|
+
opacity: 1;
|
|
5815
|
+
}
|
|
5816
|
+
|
|
5817
|
+
[data-qc-theme] .qc-chart-settings-choices {
|
|
5818
|
+
display: flex;
|
|
5819
|
+
flex-direction: column;
|
|
5820
|
+
gap: 2px;
|
|
5821
|
+
width: min(100%, 360px);
|
|
5822
|
+
}
|
|
5823
|
+
|
|
5824
|
+
[data-qc-theme] .qc-chart-settings-choice {
|
|
5825
|
+
display: flex;
|
|
5826
|
+
gap: 10px;
|
|
5827
|
+
align-items: center;
|
|
5828
|
+
min-height: 40px;
|
|
5829
|
+
padding: 0 8px;
|
|
5830
|
+
color: var(--qc-text-secondary);
|
|
5831
|
+
font: inherit;
|
|
5832
|
+
text-align: start;
|
|
5833
|
+
background: transparent;
|
|
5834
|
+
border: 0;
|
|
5835
|
+
border-radius: 6px;
|
|
5836
|
+
cursor: pointer;
|
|
5837
|
+
}
|
|
5838
|
+
|
|
5839
|
+
[data-qc-theme] .qc-chart-settings-choice:hover:not([disabled]) {
|
|
5840
|
+
color: var(--qc-text-primary);
|
|
5841
|
+
background: var(--qc-state-hover);
|
|
5842
|
+
}
|
|
5843
|
+
|
|
5844
|
+
[data-qc-theme] .qc-chart-settings-choice[disabled] {
|
|
5845
|
+
color: var(--qc-text-disabled);
|
|
5846
|
+
cursor: default;
|
|
5847
|
+
}
|
|
5848
|
+
|
|
5849
|
+
[data-qc-theme] .qc-chart-settings-radio {
|
|
5850
|
+
position: relative;
|
|
5851
|
+
flex: 0 0 auto;
|
|
5852
|
+
box-sizing: border-box;
|
|
5853
|
+
width: 18px;
|
|
5854
|
+
height: 18px;
|
|
5855
|
+
border: 1px solid var(--qc-control-on);
|
|
5856
|
+
border-radius: 50%;
|
|
5857
|
+
}
|
|
5858
|
+
|
|
5859
|
+
[data-qc-theme] .qc-chart-settings-choice[aria-checked='true'] .qc-chart-settings-radio::after {
|
|
5860
|
+
content: '';
|
|
5861
|
+
position: absolute;
|
|
5862
|
+
inset: 4px;
|
|
5863
|
+
background: var(--qc-control-on);
|
|
5864
|
+
border-radius: 50%;
|
|
5865
|
+
}
|
|
5866
|
+
|
|
5867
|
+
[data-qc-theme] .qc-chart-settings-footer {
|
|
5868
|
+
display: flex;
|
|
5869
|
+
flex: 0 0 64px;
|
|
5870
|
+
align-items: center;
|
|
5871
|
+
justify-content: space-between;
|
|
5872
|
+
box-sizing: border-box;
|
|
5873
|
+
padding: 0 18px;
|
|
5874
|
+
border-top: 1px solid var(--qc-overlay-separator);
|
|
5875
|
+
}
|
|
5876
|
+
|
|
5877
|
+
[data-qc-theme] .qc-chart-settings-actions {
|
|
5878
|
+
display: flex;
|
|
5879
|
+
gap: 10px;
|
|
5880
|
+
}
|
|
5881
|
+
|
|
5882
|
+
[data-qc-theme] .qc-chart-settings-footer .qc-button {
|
|
5883
|
+
min-width: 62px;
|
|
5884
|
+
height: 34px;
|
|
5885
|
+
padding: 0 11px;
|
|
5886
|
+
font-size: 14px;
|
|
5887
|
+
line-height: 22px;
|
|
5888
|
+
}
|
|
5889
|
+
|
|
5890
|
+
[data-qc-theme] .qc-chart-settings-footer .qc-chart-settings-reset {
|
|
5891
|
+
min-width: 0;
|
|
5892
|
+
}
|
|
5893
|
+
|
|
5894
|
+
[data-qc-theme] .qc-chart-settings-cancel,
|
|
5895
|
+
[data-qc-theme] .qc-chart-settings-ok {
|
|
5896
|
+
min-width: 62px;
|
|
5897
|
+
}
|
|
5898
|
+
|
|
5899
|
+
[data-qc-theme] .qc-chart-settings-nav {
|
|
5900
|
+
scrollbar-width: none;
|
|
5901
|
+
}
|
|
5902
|
+
|
|
5903
|
+
[data-qc-theme] .qc-chart-settings-nav::-webkit-scrollbar {
|
|
5904
|
+
display: none;
|
|
5905
|
+
}
|
|
5906
|
+
|
|
5907
|
+
@media (max-width: 680px) {
|
|
5908
|
+
[data-qc-theme] .qc-chart-settings-dialog {
|
|
5909
|
+
width: calc(100% - 20px) !important;
|
|
5910
|
+
height: calc(100vh - 20px);
|
|
5911
|
+
max-width: none;
|
|
5912
|
+
max-height: none;
|
|
5913
|
+
}
|
|
5914
|
+
|
|
5915
|
+
[data-qc-theme] .qc-chart-settings-body {
|
|
5916
|
+
flex-direction: column;
|
|
5917
|
+
}
|
|
5918
|
+
|
|
5919
|
+
[data-qc-theme] .qc-chart-settings-nav {
|
|
5920
|
+
flex: 0 0 auto;
|
|
5921
|
+
flex-direction: row;
|
|
5922
|
+
gap: 4px;
|
|
5923
|
+
padding: 6px 10px 8px;
|
|
5924
|
+
overflow-x: auto;
|
|
5925
|
+
border-inline-end: 0;
|
|
5926
|
+
border-bottom: 1px solid var(--qc-overlay-separator);
|
|
5927
|
+
}
|
|
5928
|
+
|
|
5929
|
+
[data-qc-theme] .qc-chart-settings-nav-item {
|
|
5930
|
+
width: auto;
|
|
5931
|
+
min-width: max-content;
|
|
5932
|
+
min-height: 36px;
|
|
5933
|
+
padding: 0 10px;
|
|
5934
|
+
}
|
|
5935
|
+
|
|
5936
|
+
[data-qc-theme] .qc-chart-settings-panel {
|
|
5937
|
+
padding: 13px 16px 20px;
|
|
5938
|
+
}
|
|
5939
|
+
|
|
5940
|
+
[data-qc-theme] .qc-chart-settings-footer {
|
|
5941
|
+
padding: 0 12px;
|
|
5942
|
+
}
|
|
5548
5943
|
}
|
|
5549
5944
|
|
|
5550
5945
|
/* The market-status control on the legend and its popup. */
|
|
@@ -5944,7 +6339,7 @@
|
|
|
5944
6339
|
[data-qc-theme] .qc-tf-unit-caret {
|
|
5945
6340
|
flex: 0 0 auto;
|
|
5946
6341
|
color: var(--qc-text-muted);
|
|
5947
|
-
transition: transform var(--qc-motion-durationFast)
|
|
6342
|
+
transition: transform var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
5948
6343
|
transform: rotate(180deg);
|
|
5949
6344
|
}
|
|
5950
6345
|
|
|
@@ -5998,6 +6393,26 @@
|
|
|
5998
6393
|
cursor: not-allowed;
|
|
5999
6394
|
}
|
|
6000
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
|
+
|
|
6001
6416
|
/* The chart's notices, stacked at the bottom of the charts, newest last. The region is the charts
|
|
6002
6417
|
* grid's next sibling in the root's column and takes no height of its own; the stack inside it is
|
|
6003
6418
|
* anchored to its top edge and grows upward, over the charts, never over the bottom bar. */
|