@trdrs/quickcharts 5.2.0 → 5.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +55 -17
  3. package/dist/{ar-TG26ZCCE.js → ar-BBRV6CC4.js} +5 -1
  4. package/dist/{ar-TG26ZCCE.js.map → ar-BBRV6CC4.js.map} +1 -1
  5. package/dist/{assets-DF3nozNV.d.ts → assets-B_JlJaHF.d.ts} +4 -0
  6. package/dist/{ca_ES-WJWH5BXU.js → ca_ES-OF2NGA3A.js} +5 -1
  7. package/dist/{ca_ES-WJWH5BXU.js.map → ca_ES-OF2NGA3A.js.map} +1 -1
  8. package/dist/{chunk-Q3DCXQDW.js → chunk-FRZFOTMO.js} +42 -39
  9. package/dist/chunk-FRZFOTMO.js.map +1 -0
  10. package/dist/{de-SUDTTPQ3.js → de-D5WWQLT5.js} +5 -1
  11. package/dist/{de-SUDTTPQ3.js.map → de-D5WWQLT5.js.map} +1 -1
  12. package/dist/drawings.d.ts +2 -2
  13. package/dist/drawings.js +1 -1
  14. package/dist/{es-FOBXUK2X.js → es-6TM3Z6CQ.js} +5 -1
  15. package/dist/{es-FOBXUK2X.js.map → es-6TM3Z6CQ.js.map} +1 -1
  16. package/dist/feature-manifest.json +6 -1
  17. package/dist/{fr-7KQC4IJH.js → fr-L5EPUMNA.js} +5 -1
  18. package/dist/{fr-7KQC4IJH.js.map → fr-L5EPUMNA.js.map} +1 -1
  19. package/dist/{he_IL-2T6XBA6D.js → he_IL-PXH4KNDC.js} +5 -1
  20. package/dist/{he_IL-2T6XBA6D.js.map → he_IL-PXH4KNDC.js.map} +1 -1
  21. package/dist/{id_ID-SI25N57C.js → id_ID-MMY4EQSL.js} +5 -1
  22. package/dist/{id_ID-SI25N57C.js.map → id_ID-MMY4EQSL.js.map} +1 -1
  23. package/dist/index.d.ts +27 -4
  24. package/dist/index.js +204 -101
  25. package/dist/index.js.map +1 -1
  26. package/dist/{it-PMSTWZDL.js → it-TUILRXJ5.js} +5 -1
  27. package/dist/{it-PMSTWZDL.js.map → it-TUILRXJ5.js.map} +1 -1
  28. package/dist/{ja-PABDRAXV.js → ja-7QY2FLXF.js} +5 -1
  29. package/dist/{ja-PABDRAXV.js.map → ja-7QY2FLXF.js.map} +1 -1
  30. package/dist/{ko-JHRYYFCV.js → ko-RWI5JOO2.js} +5 -1
  31. package/dist/{ko-JHRYYFCV.js.map → ko-RWI5JOO2.js.map} +1 -1
  32. package/dist/{ms_MY-U4EE5Q4V.js → ms_MY-ABJSZCPH.js} +5 -1
  33. package/dist/{ms_MY-U4EE5Q4V.js.map → ms_MY-ABJSZCPH.js.map} +1 -1
  34. package/dist/{pl-4HCG3T3J.js → pl-XLOQLQVW.js} +5 -1
  35. package/dist/{pl-4HCG3T3J.js.map → pl-XLOQLQVW.js.map} +1 -1
  36. package/dist/{pt-6LTNN653.js → pt-TZWQOZ5P.js} +5 -1
  37. package/dist/{pt-6LTNN653.js.map → pt-TZWQOZ5P.js.map} +1 -1
  38. package/dist/quickcharts.css +278 -199
  39. package/dist/{ru-LFHCSDBV.js → ru-2KVG2H7U.js} +5 -1
  40. package/dist/{ru-LFHCSDBV.js.map → ru-2KVG2H7U.js.map} +1 -1
  41. package/dist/{sv-4XVUXYK6.js → sv-3JTSBHQN.js} +5 -1
  42. package/dist/{sv-4XVUXYK6.js.map → sv-3JTSBHQN.js.map} +1 -1
  43. package/dist/{th-WM2PVA24.js → th-O3CHCMEU.js} +5 -1
  44. package/dist/{th-WM2PVA24.js.map → th-O3CHCMEU.js.map} +1 -1
  45. package/dist/theme-manifest.json +51 -40
  46. package/dist/{tr-HMAZXSJM.js → tr-RWKHFLUS.js} +5 -1
  47. package/dist/{tr-HMAZXSJM.js.map → tr-RWKHFLUS.js.map} +1 -1
  48. package/dist/{vi-ITFBV5B7.js → vi-D2CXSN5R.js} +5 -1
  49. package/dist/{vi-ITFBV5B7.js.map → vi-D2CXSN5R.js.map} +1 -1
  50. package/dist/{zh-ZGU2RI7K.js → zh-KBHIBNWP.js} +5 -1
  51. package/dist/{zh-ZGU2RI7K.js.map → zh-KBHIBNWP.js.map} +1 -1
  52. package/dist/{zh_TW-PNINSQ6F.js → zh_TW-474AC5C4.js} +5 -1
  53. package/dist/{zh_TW-PNINSQ6F.js.map → zh_TW-474AC5C4.js.map} +1 -1
  54. package/package.json +1 -1
  55. package/dist/chunk-Q3DCXQDW.js.map +0 -1
@@ -19,6 +19,7 @@
19
19
  --qc-chrome-fieldBorder: #dbdbdb;
20
20
  --qc-chrome-grip: #b8b8b8;
21
21
  --qc-chrome-radius: 6px;
22
+ --qc-chrome-radiusDialog: 12px;
22
23
  --qc-chrome-radiusLarge: 6px;
23
24
  --qc-chrome-scrollThumb: #9c9c9c;
24
25
  --qc-chrome-surface: #ffffff;
@@ -35,11 +36,11 @@
35
36
  --qc-control-off: #9c9c9c;
36
37
  --qc-control-offHover: #8c8c8c;
37
38
  --qc-control-offPressed: #b8b8b8;
38
- --qc-control-on: #2e2e2e;
39
- --qc-control-onHover: #4a4a4a;
39
+ --qc-control-on: #1a1a1a;
40
+ --qc-control-onHover: #464646;
40
41
  --qc-control-onInk: #ffffff;
41
42
  --qc-control-onPressed: #707070;
42
- --qc-control-outline: #2e2e2e;
43
+ --qc-control-outline: #1a1a1a;
43
44
  --qc-control-selectEdgeHover: #a8a8a8;
44
45
  --qc-control-tipMark: #a8a8a8;
45
46
  --qc-control-tipMarkHover: #707070;
@@ -47,7 +48,7 @@
47
48
  --qc-drawing-handle: #ffffff;
48
49
  --qc-drawing-line: #2962ff;
49
50
  --qc-drawing-selected: #2962ff;
50
- --qc-drawing-text: #0f0f0f;
51
+ --qc-drawing-text: #000000;
51
52
  --qc-illustration-accent: #2196f3;
52
53
  --qc-illustration-accentInk: #ffffff;
53
54
  --qc-illustration-ink: #1e222d;
@@ -67,26 +68,26 @@
67
68
  --qc-overlay-separator: #ebebeb;
68
69
  --qc-overlay-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
69
70
  --qc-overlay-surface: #ffffff;
70
- --qc-overlay-tooltip: #3d3d3d;
71
+ --qc-overlay-tooltip: #1a1a1a;
71
72
  --qc-overlay-tooltipInk: #f2f2f2;
72
73
  --qc-scale-background: #ffffff;
73
- --qc-scale-border: rgba(46, 46, 46, 0);
74
+ --qc-scale-border: rgba(26, 26, 26, 0);
74
75
  --qc-scale-crosshair: #9c9c9c;
75
- --qc-scale-crosshairLabelBackground: #0f0f0f;
76
+ --qc-scale-crosshairLabelBackground: #000000;
76
77
  --qc-scale-crosshairLabelText: #ffffff;
77
- --qc-scale-grid: rgba(46, 46, 46, 0.2);
78
+ --qc-scale-grid: rgba(26, 26, 26, 0.2);
78
79
  --qc-scale-sessionAfterHours: rgba(41, 98, 255, 0.08);
79
80
  --qc-scale-sessionClosed: rgba(0, 0, 0, 0.05);
80
81
  --qc-scale-sessionExtended: rgba(213, 0, 249, 0.08);
81
82
  --qc-scale-sessionPreMarket: rgba(255, 152, 0, 0.08);
82
- --qc-scale-text: #0f0f0f;
83
+ --qc-scale-text: #000000;
83
84
  --qc-series-down: #f23645;
84
85
  --qc-series-neutral: #787b86;
85
86
  --qc-series-up: #089981;
86
87
  --qc-state-accent: #2962ff;
87
88
  --qc-state-focusRing: #2962ff;
88
89
  --qc-state-hover: #f2f2f2;
89
- --qc-state-hoverInk: #0f0f0f;
90
+ --qc-state-hoverInk: #000000;
90
91
  --qc-state-markInk: #ffffff;
91
92
  --qc-state-pressed: #ebebeb;
92
93
  --qc-state-pressedHover: #dbdbdb;
@@ -114,34 +115,35 @@
114
115
  --qc-text-inverse: #ffffff;
115
116
  --qc-text-link: #2962ff;
116
117
  --qc-text-muted: #6a6a6a;
117
- --qc-text-onCanvas: #0f0f0f;
118
- --qc-text-primary: #0f0f0f;
119
- --qc-text-secondary: #4a4a4a;
118
+ --qc-text-onCanvas: #000000;
119
+ --qc-text-primary: #000000;
120
+ --qc-text-secondary: #000000;
120
121
  }
121
122
 
122
123
  [data-qc-theme="dark"] {
123
- --qc-canvas-background: #0f0f0f;
124
- --qc-canvas-paneBorder: #2e2e2e;
124
+ --qc-canvas-background: #000000;
125
+ --qc-canvas-paneBorder: #1a1a1a;
125
126
  --qc-canvas-watermark: rgba(80, 83, 94, 0.3);
126
- --qc-chrome-border: #2e2e2e;
127
+ --qc-chrome-border: #1a1a1a;
127
128
  --qc-chrome-borderStrong: #707070;
128
129
  --qc-chrome-caret: #8c8c8c;
129
130
  --qc-chrome-fieldBorder: #636363;
130
- --qc-chrome-grip: #575757;
131
+ --qc-chrome-grip: #555555;
131
132
  --qc-chrome-radius: 6px;
133
+ --qc-chrome-radiusDialog: 12px;
132
134
  --qc-chrome-radiusLarge: 6px;
133
- --qc-chrome-scrollThumb: #3d3d3d;
134
- --qc-chrome-surface: #0f0f0f;
135
- --qc-chrome-surfaceRaised: #2e2e2e;
136
- --qc-control-fieldEdge: #575757;
135
+ --qc-chrome-scrollThumb: #2b2b2b;
136
+ --qc-chrome-surface: #000000;
137
+ --qc-chrome-surfaceRaised: #1a1a1a;
138
+ --qc-control-fieldEdge: #555555;
137
139
  --qc-control-fieldEdgeHover: #707070;
138
- --qc-control-fieldFill: #2e2e2e;
140
+ --qc-control-fieldFill: #1a1a1a;
139
141
  --qc-control-fieldInvalid: #f23645;
140
- --qc-control-mark: #2e2e2e;
141
- --qc-control-neutral: #2e2e2e;
142
- --qc-control-neutralHover: #3d3d3d;
142
+ --qc-control-mark: #1a1a1a;
143
+ --qc-control-neutral: #1a1a1a;
144
+ --qc-control-neutralHover: #2b2b2b;
143
145
  --qc-control-neutralInk: #ffffff;
144
- --qc-control-neutralPressed: #4a4a4a;
146
+ --qc-control-neutralPressed: #464646;
145
147
  --qc-control-off: #636363;
146
148
  --qc-control-offHover: #707070;
147
149
  --qc-control-offPressed: #636363;
@@ -151,10 +153,10 @@
151
153
  --qc-control-onPressed: #8c8c8c;
152
154
  --qc-control-outline: #ffffff;
153
155
  --qc-control-selectEdgeHover: #808080;
154
- --qc-control-tipMark: #575757;
156
+ --qc-control-tipMark: #555555;
155
157
  --qc-control-tipMarkHover: #8c8c8c;
156
158
  --qc-drawing-fill: rgba(41, 98, 255, 0.15);
157
- --qc-drawing-handle: #0f0f0f;
159
+ --qc-drawing-handle: #000000;
158
160
  --qc-drawing-line: #2962ff;
159
161
  --qc-drawing-selected: #1e53e5;
160
162
  --qc-drawing-text: #dbdbdb;
@@ -174,15 +176,15 @@
174
176
  --qc-motion-easingStandard: ease;
175
177
  --qc-motion-scaleEnter: 0.97;
176
178
  --qc-overlay-scrim: rgba(0, 0, 0, 0.5);
177
- --qc-overlay-separator: #4a4a4a;
179
+ --qc-overlay-separator: #464646;
178
180
  --qc-overlay-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
179
- --qc-overlay-surface: #1f1f1f;
180
- --qc-overlay-tooltip: #3d3d3d;
181
+ --qc-overlay-surface: #131313;
182
+ --qc-overlay-tooltip: #2b2b2b;
181
183
  --qc-overlay-tooltipInk: #f2f2f2;
182
- --qc-scale-background: #0f0f0f;
184
+ --qc-scale-background: #000000;
183
185
  --qc-scale-border: rgba(242, 242, 242, 0);
184
186
  --qc-scale-crosshair: #9c9c9c;
185
- --qc-scale-crosshairLabelBackground: #3d3d3d;
187
+ --qc-scale-crosshairLabelBackground: #2b2b2b;
186
188
  --qc-scale-crosshairLabelText: #ffffff;
187
189
  --qc-scale-grid: rgba(242, 242, 242, 0.2);
188
190
  --qc-scale-sessionAfterHours: rgba(41, 98, 255, 0.08);
@@ -195,11 +197,11 @@
195
197
  --qc-series-up: #089981;
196
198
  --qc-state-accent: #2962ff;
197
199
  --qc-state-focusRing: #2962ff;
198
- --qc-state-hover: #2e2e2e;
200
+ --qc-state-hover: #1a1a1a;
199
201
  --qc-state-hoverInk: #c9c9c9;
200
202
  --qc-state-markInk: #ffffff;
201
- --qc-state-pressed: #3d3d3d;
202
- --qc-state-pressedHover: #4a4a4a;
203
+ --qc-state-pressed: #2b2b2b;
204
+ --qc-state-pressedHover: #464646;
203
205
  --qc-state-selected: #333333;
204
206
  --qc-state-selection: rgba(82, 160, 252, 0.22);
205
207
  --qc-status-info: #68a5ff;
@@ -213,7 +215,7 @@
213
215
  --qc-status-sessionPreMarket: #4c98fb;
214
216
  --qc-status-warning: #ff9800;
215
217
  --qc-text-caption: #8c8c8c;
216
- --qc-text-disabled: #575757;
218
+ --qc-text-disabled: #555555;
217
219
  --qc-text-fontFamily: -apple-system, BlinkMacSystemFont, "Trebuchet MS", Roboto, Ubuntu, sans-serif;
218
220
  --qc-text-fontSizeAxis: 13px;
219
221
  --qc-text-fontSizeBase: 14px;
@@ -221,7 +223,7 @@
221
223
  --qc-text-fontSizeSmall: 11px;
222
224
  --qc-text-fontSizeTitle: 14px;
223
225
  --qc-text-highlight: #5280ff;
224
- --qc-text-inverse: #0f0f0f;
226
+ --qc-text-inverse: #000000;
225
227
  --qc-text-link: #5b9cf6;
226
228
  --qc-text-muted: #9b9b9b;
227
229
  --qc-text-onCanvas: #dbdbdb;
@@ -325,6 +327,11 @@
325
327
  box-shadow: var(--qc-overlay-shadow);
326
328
  }
327
329
 
330
+ /* A dialog rounds wider than a menu or a panel. */
331
+ [data-qc-theme] .qc-dialog {
332
+ border-radius: var(--qc-chrome-radiusDialog);
333
+ }
334
+
328
335
  [data-qc-theme] .qc-scrim {
329
336
  background: var(--qc-overlay-scrim);
330
337
  }
@@ -542,7 +549,6 @@
542
549
  * from a later cascade layer too: an important declaration in an earlier layer outranks a normal one
543
550
  * in a later layer. */
544
551
  [data-qc-theme] .qc-search-input:focus-visible,
545
- [data-qc-theme] .qc-picker-search:focus-visible,
546
552
  [data-qc-theme] .qc-layouts-search-input:focus-visible,
547
553
  [data-qc-theme] .qc-field:focus-visible,
548
554
  [data-qc-theme] .qc-name-input:focus-visible,
@@ -4685,88 +4691,100 @@
4685
4691
  }
4686
4692
  }
4687
4693
 
4688
- /* The indicator picker, drawn with the chart's own tokens. */
4694
+ /* The indicator picker: the search field every search dialog opens on, the kind filters under it
4695
+ * when the host declares kinds, and below them a rail of collections beside the list, drawn with the
4696
+ * chart's own tokens. */
4689
4697
  [data-qc-theme] .qc-picker-dialog {
4690
4698
  height: 638px;
4691
4699
  max-height: min(85vh, calc(100% - 32px));
4692
4700
  }
4693
- [data-qc-theme] .qc-picker-header {
4694
- display: flex;
4695
- flex: 0 0 48px;
4696
- align-items: center;
4697
- justify-content: space-between;
4698
- padding-inline: 16px;
4699
- border-bottom: 1px solid var(--qc-chrome-border);
4700
- }
4701
- [data-qc-theme] .qc-picker-header .qc-title {
4702
- font-size: calc(var(--qc-text-fontSizeBase) + 2px);
4703
- font-weight: 500;
4704
- line-height: 22px;
4705
- }
4706
- [data-qc-theme] .qc-picker-searchbar {
4707
- display: flex;
4708
- flex: 0 0 auto;
4709
- align-items: center;
4710
- gap: 10px;
4711
- padding: 12px 16px;
4712
- border-bottom: 1px solid var(--qc-chrome-border);
4713
- }
4701
+
4702
+ /* A name is read in the case it is typed: only a ticker field raises its value. */
4714
4703
  [data-qc-theme] .qc-picker-search {
4715
- width: 100%;
4716
- min-width: 0;
4717
- padding: 0;
4718
- color: var(--qc-text-primary);
4719
- font: inherit;
4720
- background: none;
4721
- border: 0;
4722
- outline: none;
4704
+ text-transform: none;
4723
4705
  }
4706
+
4724
4707
  [data-qc-theme] .qc-picker-body {
4725
4708
  display: flex;
4726
4709
  flex: 1 1 auto;
4727
4710
  min-height: 0;
4728
4711
  }
4712
+
4713
+ /* The rail: 200px of sections 8px apart on the box's 20px inset, 10px before the list, 8px under
4714
+ * what stands above it and 16px clear of the box's foot. It scrolls on its own. */
4729
4715
  [data-qc-theme] .qc-picker-nav {
4730
- flex: 0 0 200px;
4731
- width: 200px;
4732
- padding: 8px 8px 16px 12px;
4733
- padding-inline: 12px 8px;
4734
- overflow-y: auto;
4735
- box-sizing: border-box;
4716
+ display: flex;
4717
+ flex: 0 0 230px;
4718
+ flex-direction: column;
4719
+ gap: 8px;
4720
+ width: 230px;
4721
+ padding: 8px 10px 16px 20px;
4722
+ overflow: hidden auto;
4723
+ }
4724
+
4725
+ [data-qc-theme] .qc-picker-section {
4726
+ display: flex;
4727
+ flex-direction: column;
4736
4728
  }
4729
+
4730
+ /* A section's heading: 11px capitals in the caption ink on a 12px indent, 30px tall. */
4737
4731
  [data-qc-theme] .qc-picker-group {
4738
- padding: 7px 12px;
4739
- color: var(--qc-text-muted);
4740
- font-size: var(--qc-text-fontSizeMicro);
4732
+ padding: 7px 0 7px 12px;
4733
+ color: var(--qc-text-caption);
4734
+ font-size: var(--qc-text-fontSizeSmall);
4735
+ line-height: 16px;
4741
4736
  letter-spacing: 0.4px;
4742
4737
  text-transform: uppercase;
4743
4738
  }
4739
+
4740
+ /* A collection: a 40px row rounded 8px, its 28px mark 8px before its name at 14px on 18. The pointer
4741
+ * lays the hover fill under it; the chosen one wears the pressed fill, under the pointer as at rest,
4742
+ * and its name steps up to 600. */
4744
4743
  [data-qc-theme] .qc-picker-collection {
4745
4744
  display: flex;
4745
+ flex: 0 0 auto;
4746
4746
  align-items: center;
4747
- gap: 8px;
4748
4747
  width: 100%;
4749
- height: 38px;
4750
- margin-block: 1px;
4751
- padding-inline: 8px;
4748
+ height: 40px;
4749
+ padding: 0 8px;
4752
4750
  color: var(--qc-text-secondary);
4753
4751
  font: inherit;
4752
+ font-size: var(--qc-text-fontSizeBase);
4753
+ line-height: 18px;
4754
4754
  text-align: start;
4755
4755
  background: none;
4756
4756
  border: 0;
4757
- border-radius: var(--qc-chrome-radius);
4758
- cursor: pointer;
4757
+ border-radius: 8px;
4758
+ cursor: default;
4759
4759
  }
4760
- /* The chosen collection wears the selection fill itself, a step past the hover the others take. */
4760
+
4761
+ [data-qc-theme] .qc-picker-collection:hover {
4762
+ background: var(--qc-state-hover);
4763
+ }
4764
+
4761
4765
  [data-qc-theme] .qc-picker-collection[aria-pressed='true'] {
4762
- color: var(--qc-text-primary);
4763
- background: var(--qc-state-selected);
4766
+ background: var(--qc-state-pressed);
4764
4767
  }
4765
- [data-qc-theme] .qc-picker-collection:not([aria-pressed='true']):hover,
4766
- [data-qc-theme] .qc-picker-collection:not([aria-pressed='true']):focus-visible {
4767
- color: var(--qc-text-primary);
4768
- background: var(--qc-state-hover);
4768
+
4769
+ [data-qc-theme] .qc-picker-collection-icon {
4770
+ display: inline-flex;
4771
+ flex: 0 0 28px;
4772
+ width: 28px;
4773
+ height: 28px;
4774
+ margin-inline-end: 8px;
4775
+ }
4776
+
4777
+ [data-qc-theme] .qc-picker-collection-label {
4778
+ min-width: 0;
4779
+ overflow: hidden;
4780
+ text-overflow: ellipsis;
4781
+ white-space: nowrap;
4769
4782
  }
4783
+
4784
+ [data-qc-theme] .qc-picker-collection[aria-pressed='true'] .qc-picker-collection-label {
4785
+ font-weight: 600;
4786
+ }
4787
+
4770
4788
  [data-qc-theme] .qc-picker-content {
4771
4789
  display: flex;
4772
4790
  flex: 1 1 auto;
@@ -4774,140 +4792,229 @@
4774
4792
  min-width: 0;
4775
4793
  min-height: 0;
4776
4794
  }
4777
- [data-qc-theme] .qc-picker-tabs {
4778
- display: flex;
4779
- gap: 6px;
4780
- padding: 10px 16px;
4781
- }
4782
- [data-qc-theme] .qc-picker-tab {
4783
- padding: 4px 12px;
4784
- background: var(--qc-state-pressed);
4785
- border-radius: 999px;
4786
- }
4795
+
4796
+ /* The list keeps room for its 5px bar, so the rows never shift as it comes and goes. Its column
4797
+ * headings scroll away with the rows. */
4787
4798
  [data-qc-theme] .qc-picker-list {
4788
4799
  flex: 1 1 auto;
4789
4800
  min-height: 0;
4790
- overflow: auto;
4801
+ overflow-y: auto;
4802
+ scrollbar-gutter: stable;
4791
4803
  }
4804
+
4805
+ /* The headings and every row share one anatomy: 10px in from the rail and 15px before the bar, a
4806
+ * 4px lead and a 16px tail, the star's 22px cell, the name 4px after it taking the rest, then the
4807
+ * author's 100px, the count's 50px and the actions' 44px, each 24px past the cell before it. */
4792
4808
  [data-qc-theme] .qc-picker-row,
4793
4809
  [data-qc-theme] .qc-picker-headings {
4794
- display: grid;
4795
- grid-template-columns: 22px minmax(0, 1fr) 100px 50px 44px;
4796
- gap: 24px;
4810
+ display: flex;
4797
4811
  align-items: center;
4798
- min-height: 32px;
4799
- margin-block: 1px;
4812
+ margin-inline: 10px 15px;
4800
4813
  padding-inline: 4px 16px;
4801
4814
  }
4815
+
4816
+ /* The headings: 11px capitals in the caption ink, 16px under what stands above and 8px over the
4817
+ * first row. */
4802
4818
  [data-qc-theme] .qc-picker-headings {
4803
- position: sticky;
4804
- top: 0;
4805
- z-index: 1;
4806
- color: var(--qc-text-muted);
4807
- font-size: var(--qc-text-fontSizeMicro);
4819
+ padding-block: 16px 8px;
4820
+ color: var(--qc-text-caption);
4821
+ font-size: var(--qc-text-fontSizeSmall);
4822
+ line-height: 16px;
4808
4823
  letter-spacing: 0.4px;
4809
4824
  text-transform: uppercase;
4810
- background: var(--qc-overlay-surface);
4825
+ white-space: nowrap;
4811
4826
  }
4827
+
4828
+ /* A row stands 32px, rounded 8px, and the pointer or the keyboard lays the hover fill under it. */
4829
+ [data-qc-theme] .qc-picker-row {
4830
+ height: 32px;
4831
+ border-radius: 8px;
4832
+ cursor: default;
4833
+ }
4834
+
4812
4835
  [data-qc-theme] .qc-picker-row:hover,
4813
4836
  [data-qc-theme] .qc-picker-row:focus-within {
4814
4837
  background: var(--qc-state-hover);
4815
4838
  }
4839
+
4840
+ [data-qc-theme] .qc-picker-star-cell,
4841
+ [data-qc-theme] .qc-picker-headings > :nth-child(1) {
4842
+ display: flex;
4843
+ flex: 0 0 22px;
4844
+ min-width: 22px;
4845
+ }
4846
+
4816
4847
  [data-qc-theme] .qc-picker-name-cell,
4817
4848
  [data-qc-theme] .qc-picker-headings > :nth-child(2) {
4849
+ flex: 1 1 auto;
4818
4850
  min-width: 0;
4819
- margin-inline-start: -20px;
4851
+ margin-inline-start: 4px;
4820
4852
  }
4853
+
4854
+ [data-qc-theme] .qc-picker-author,
4855
+ [data-qc-theme] .qc-picker-headings > :nth-child(3) {
4856
+ flex: 0 1 100px;
4857
+ min-width: 100px;
4858
+ margin-inline-start: 24px;
4859
+ }
4860
+
4861
+ [data-qc-theme] .qc-picker-count,
4862
+ [data-qc-theme] .qc-picker-headings > :nth-child(4) {
4863
+ flex: 0 1 50px;
4864
+ min-width: 50px;
4865
+ margin-inline-start: 24px;
4866
+ }
4867
+
4868
+ [data-qc-theme] .qc-picker-actions,
4869
+ [data-qc-theme] .qc-picker-headings > :nth-child(5) {
4870
+ flex: 0 0 44px;
4871
+ min-width: 44px;
4872
+ margin-inline-start: 24px;
4873
+ }
4874
+
4875
+ /* The name at 14px in the row's ink, cut short with an ellipsis. */
4821
4876
  [data-qc-theme] .qc-picker-name {
4822
4877
  display: block;
4823
4878
  width: 100%;
4824
4879
  overflow: hidden;
4825
4880
  padding: 0;
4826
- color: var(--qc-text-primary);
4881
+ color: var(--qc-text-secondary);
4827
4882
  font: inherit;
4883
+ font-size: var(--qc-text-fontSizeBase);
4828
4884
  text-align: start;
4829
4885
  text-overflow: ellipsis;
4830
4886
  white-space: nowrap;
4831
4887
  background: none;
4832
4888
  border: 0;
4833
- cursor: pointer;
4889
+ cursor: default;
4834
4890
  }
4835
- [data-qc-theme] .qc-picker-author {
4891
+
4892
+ /* The author in the link ink, and the count in the row's. */
4893
+ [data-qc-theme] .qc-picker-author,
4894
+ [data-qc-theme] .qc-picker-count {
4836
4895
  overflow: hidden;
4837
- color: var(--qc-text-secondary);
4838
4896
  text-overflow: ellipsis;
4839
4897
  white-space: nowrap;
4840
4898
  }
4899
+
4900
+ [data-qc-theme] .qc-picker-author {
4901
+ color: var(--qc-text-link);
4902
+ }
4903
+
4841
4904
  [data-qc-theme] .qc-picker-count {
4842
4905
  color: var(--qc-text-secondary);
4843
- font-variant-numeric: tabular-nums;
4844
4906
  }
4907
+
4908
+ /* The row's actions stand at its end, 4px apart, and show while the row is under the pointer or holds
4909
+ * the keyboard. */
4845
4910
  [data-qc-theme] .qc-picker-actions {
4846
4911
  display: flex;
4847
4912
  justify-content: flex-end;
4913
+ gap: 4px;
4848
4914
  opacity: 0;
4849
4915
  }
4916
+
4850
4917
  [data-qc-theme] .qc-picker-row:hover .qc-picker-actions,
4851
4918
  [data-qc-theme] .qc-picker-row:focus-within .qc-picker-actions {
4852
4919
  opacity: 1;
4853
4920
  }
4921
+
4922
+ /* The star and every action are a 22px cell rounded 4px around an 18px mark, in the muted ink until
4923
+ * the pointer lifts it onto the pressed hover fill. */
4924
+ [data-qc-theme] .qc-picker-star,
4854
4925
  [data-qc-theme] .qc-picker-action {
4855
4926
  display: inline-flex;
4856
- flex: 0 0 22px;
4927
+ flex: 0 0 auto;
4857
4928
  align-items: center;
4858
4929
  justify-content: center;
4859
4930
  min-width: 22px;
4860
- height: 24px;
4931
+ height: 22px;
4861
4932
  padding: 0;
4862
- color: var(--qc-text-secondary);
4933
+ color: var(--qc-text-muted);
4863
4934
  font: inherit;
4864
4935
  background: none;
4865
4936
  border: 0;
4866
- border-radius: 3px;
4867
- cursor: pointer;
4937
+ border-radius: 4px;
4938
+ cursor: default;
4868
4939
  }
4940
+
4941
+ [data-qc-theme] .qc-picker-star:hover,
4869
4942
  [data-qc-theme] .qc-picker-action:hover {
4870
4943
  color: var(--qc-text-primary);
4871
- background: var(--qc-state-hover);
4944
+ background: var(--qc-state-pressedHover);
4945
+ }
4946
+
4947
+ /* An unstarred row shows its star only under the pointer or the keyboard. A starred one always
4948
+ * shows it, filled in the control ink, and keeps that ink under the pointer. */
4949
+ [data-qc-theme] .qc-picker-star {
4950
+ opacity: 0;
4951
+ }
4952
+
4953
+ [data-qc-theme] .qc-picker-row:hover .qc-picker-star,
4954
+ [data-qc-theme] .qc-picker-row:focus-within .qc-picker-star,
4955
+ [data-qc-theme] .qc-picker-star[aria-pressed='true'] {
4956
+ opacity: 1;
4957
+ }
4958
+
4959
+ [data-qc-theme] .qc-picker-star[aria-pressed='true'],
4960
+ [data-qc-theme] .qc-picker-star[aria-pressed='true']:hover {
4961
+ color: var(--qc-control-on);
4872
4962
  }
4963
+
4873
4964
  [data-qc-theme] .qc-picker-action > span:not(.qc-picker-host-icon) {
4874
4965
  max-width: 22px;
4875
4966
  overflow: hidden;
4876
4967
  text-overflow: ellipsis;
4877
4968
  white-space: nowrap;
4878
4969
  }
4970
+
4879
4971
  [data-qc-theme] .qc-picker-action[disabled],
4972
+ [data-qc-theme] .qc-picker-star[disabled],
4880
4973
  [data-qc-theme] .qc-picker-name[disabled] {
4881
4974
  color: var(--qc-text-disabled);
4882
- cursor: default;
4883
4975
  }
4976
+
4977
+ [data-qc-theme] .qc-picker-action[disabled]:hover,
4978
+ [data-qc-theme] .qc-picker-star[disabled]:hover {
4979
+ background: none;
4980
+ }
4981
+
4982
+ /* A host's mark: 18px in a row's action, 28px in the rail. */
4884
4983
  [data-qc-theme] .qc-picker-host-icon,
4885
4984
  [data-qc-theme] .qc-picker-host-icon svg {
4886
4985
  display: inline-flex;
4887
4986
  width: 18px;
4888
4987
  height: 18px;
4889
4988
  }
4890
- [data-qc-theme] .qc-picker-list--personal .qc-picker-row,
4891
- [data-qc-theme] .qc-picker-list--personal .qc-picker-headings {
4892
- grid-template-columns: minmax(0, 1fr) 22px;
4893
- padding-inline-start: 16px;
4989
+
4990
+ [data-qc-theme] .qc-picker-collection-icon .qc-picker-host-icon,
4991
+ [data-qc-theme] .qc-picker-collection-icon .qc-picker-host-icon svg {
4992
+ width: 28px;
4993
+ height: 28px;
4994
+ }
4995
+
4996
+ /* The shipped catalog has no author and no count: a row is its star, its name and its actions. */
4997
+ [data-qc-theme] .qc-picker-list--catalog .qc-picker-author,
4998
+ [data-qc-theme] .qc-picker-list--catalog .qc-picker-count,
4999
+ [data-qc-theme] .qc-picker-list--catalog .qc-picker-headings > :nth-child(3),
5000
+ [data-qc-theme] .qc-picker-list--catalog .qc-picker-headings > :nth-child(4) {
5001
+ display: none;
4894
5002
  }
4895
- [data-qc-theme] .qc-picker-list--personal .qc-picker-row > :nth-child(1),
4896
- [data-qc-theme] .qc-picker-list--personal .qc-picker-row > :nth-child(3),
4897
- [data-qc-theme] .qc-picker-list--personal .qc-picker-row > :nth-child(4),
4898
- [data-qc-theme] .qc-picker-list--personal .qc-picker-headings > :nth-child(1),
5003
+
5004
+ /* A personal list is a name and its secondary actions, the name standing where a table's does. */
5005
+ [data-qc-theme] .qc-picker-list--personal .qc-picker-star,
5006
+ [data-qc-theme] .qc-picker-list--personal .qc-picker-author,
5007
+ [data-qc-theme] .qc-picker-list--personal .qc-picker-count,
4899
5008
  [data-qc-theme] .qc-picker-list--personal .qc-picker-headings > :nth-child(3),
4900
5009
  [data-qc-theme] .qc-picker-list--personal .qc-picker-headings > :nth-child(4) {
4901
5010
  display: none;
4902
5011
  }
4903
- [data-qc-theme] .qc-picker-list--personal .qc-picker-name-cell,
4904
- [data-qc-theme] .qc-picker-list--personal .qc-picker-headings > :nth-child(2) {
4905
- margin-inline-start: 0;
4906
- }
5012
+
4907
5013
  [data-qc-theme] .qc-picker-status {
4908
5014
  flex: 0 0 auto;
4909
- padding: 0 16px;
5015
+ padding: 0 20px;
4910
5016
  }
5017
+
4911
5018
  [data-qc-theme] .qc-picker-status:not(:empty) {
4912
5019
  padding-block: 8px;
4913
5020
  }
@@ -4942,29 +5049,27 @@
4942
5049
  min-height: 42px;
4943
5050
  }
4944
5051
 
4945
- /* THE PICKER ON A NARROW SCREEN. The dialog is a two-column reading room — a 200px rail of
4946
- collections beside a table of five columns — and at 393px there is not enough of either. The rail
4947
- took half the width and the row's fixed columns (the star, the author, the count, the actions)
4948
- claimed 312px of the rest between them, so the NAME, the one cell anybody reads, collapsed to a
4949
- single letter with an ellipsis: "S…" beside an author cell wider than the thing it described.
4950
-
4951
- So the rail lies DOWN. It becomes a row of chips above the list, scrolling sideways the way every
4952
- other run of choices on a phone does, and the table sheds the columns a phone has no room to
4953
- spend: the author and the count go, the star and the actions stay, and the name takes what is
4954
- left. The GROUP headings go with the rail's column — "Saved" over "Shared" reads as
4955
- structure in a list and as noise in a row, and the chips say what they are. */
5052
+ /* THE PICKER ON A NARROW SCREEN. A 230px rail beside a table of five columns leaves the name, the one
5053
+ * cell anybody reads, a single letter at 393px. So the rail lies down as a row of chips above the
5054
+ * list, scrolling sideways the way every other run of choices on a phone does, its headings gone
5055
+ * with its column, and the table sheds the author, the count and its headings: the star, the name
5056
+ * and the actions remain, and the name takes what is left. */
4956
5057
  @media (max-width: 560px) {
4957
5058
  [data-qc-theme] .qc-picker-body {
4958
5059
  flex-direction: column;
4959
5060
  }
4960
5061
 
5062
+ [data-qc-theme] .qc-picker-nav,
5063
+ [data-qc-theme] .qc-picker-section {
5064
+ flex-direction: row;
5065
+ gap: 4px;
5066
+ }
5067
+
4961
5068
  [data-qc-theme] .qc-picker-nav {
4962
- display: flex;
4963
5069
  flex: 0 0 auto;
4964
- gap: 6px;
4965
5070
  align-items: center;
4966
5071
  width: auto;
4967
- padding: 8px 12px;
5072
+ padding: 8px 20px;
4968
5073
  overflow-x: auto;
4969
5074
  overflow-y: hidden;
4970
5075
  overscroll-behavior-x: contain;
@@ -4975,53 +5080,39 @@
4975
5080
  display: none;
4976
5081
  }
4977
5082
 
4978
- [data-qc-theme] .qc-picker-group {
5083
+ [data-qc-theme] .qc-picker-group,
5084
+ [data-qc-theme] .qc-picker-collection-icon {
4979
5085
  display: none;
4980
5086
  }
4981
5087
 
5088
+ /* Each collection is a chip of the class strip's recipe: the neutral fill at rest, deeper under the
5089
+ * pointer, and inverted while it is the one chosen. */
4982
5090
  [data-qc-theme] .qc-picker-collection {
4983
- flex: 0 0 auto;
4984
5091
  width: auto;
4985
- height: 34px;
4986
- margin-block: 0;
4987
- padding-inline: 12px;
5092
+ height: 28px;
5093
+ padding: 0 11px;
4988
5094
  white-space: nowrap;
4989
- background: var(--qc-state-pressed);
4990
- border-radius: 999px;
4991
- }
4992
-
4993
- /* TWO ROWS OF CHROME GO, and both were saying nothing.
4994
- The tab strip holds exactly one tab, and the word on it is the word in the dialog's own header
4995
- two rows above — a strip of one is not a choice, it is a label repeated.
4996
- The column headings name five columns of which this width shows one, and NAME over a column of
4997
- names is the definition of a header that has stopped carrying information. It was also the
4998
- only thing on this surface still painting a filled band across the glass. */
4999
- [data-qc-theme] .qc-picker-tabs,
5000
- [data-qc-theme] .qc-picker-headings {
5001
- display: none;
5095
+ background: var(--qc-state-hover);
5096
+ border-radius: 14px;
5002
5097
  }
5003
5098
 
5004
- /* Three columns: the star, the name, the actions. The gap comes down with them — 24px between
5005
- five columns is most of a phone's width spent on nothing. */
5006
- [data-qc-theme] .qc-picker-row {
5007
- grid-template-columns: 22px minmax(0, 1fr) 44px;
5008
- gap: 10px;
5099
+ [data-qc-theme] .qc-picker-collection:hover {
5100
+ background: var(--qc-state-pressed);
5009
5101
  }
5010
5102
 
5011
- [data-qc-theme] .qc-picker-row > :nth-child(3),
5012
- [data-qc-theme] .qc-picker-row > :nth-child(4) {
5013
- display: none;
5103
+ [data-qc-theme] .qc-picker-collection[aria-pressed='true'] {
5104
+ color: var(--qc-text-inverse);
5105
+ background: var(--qc-control-on);
5014
5106
  }
5015
5107
 
5016
- /* The name's -20px pull is measured against the wide gap it sits in; at 10px it drags the name
5017
- back UNDER the star, which is what put the glyph through the first letter of every row. */
5018
- [data-qc-theme] .qc-picker-name-cell {
5019
- margin-inline-start: 0;
5108
+ [data-qc-theme] .qc-picker-collection[aria-pressed='true'] .qc-picker-collection-label {
5109
+ font-weight: 400;
5020
5110
  }
5021
5111
 
5022
- /* The personal lists already run two columns; they only need the tighter gap. */
5023
- [data-qc-theme] .qc-picker-list--personal .qc-picker-row {
5024
- grid-template-columns: minmax(0, 1fr) 22px;
5112
+ [data-qc-theme] .qc-picker-headings,
5113
+ [data-qc-theme] .qc-picker-author,
5114
+ [data-qc-theme] .qc-picker-count {
5115
+ display: none;
5025
5116
  }
5026
5117
  }
5027
5118
 
@@ -5586,16 +5677,6 @@
5586
5677
  background: transparent;
5587
5678
  }
5588
5679
 
5589
- /* A dialog the chart stays live behind lets the pointer through its backdrop: only the box and what
5590
- * it raises over the backdrop (its lists, popovers and tips) take the pointer. */
5591
- [data-qc-theme] .qc-dialog-scrim[data-qc-pass='true'] {
5592
- pointer-events: none;
5593
- }
5594
-
5595
- [data-qc-theme] .qc-dialog-scrim[data-qc-pass='true'] > * {
5596
- pointer-events: auto;
5597
- }
5598
-
5599
5680
  [data-qc-theme] .qc-dialog {
5600
5681
  display: flex;
5601
5682
  flex-direction: column;
@@ -6673,10 +6754,9 @@
6673
6754
  }
6674
6755
 
6675
6756
  /* The symbol search dialog and its compare family: the field with its operators, the class strip,
6676
- * and the result list, in a box rounded 20px. */
6757
+ * and the result list. */
6677
6758
  [data-qc-theme] .qc-dialog.qc-search-dialog {
6678
6759
  height: min(85vh, 680px);
6679
- border-radius: 20px;
6680
6760
  }
6681
6761
 
6682
6762
  [data-qc-theme] .qc-dialog.qc-search-dialog--compare {
@@ -7165,7 +7245,6 @@
7165
7245
  color: var(--qc-text-primary);
7166
7246
  background: var(--qc-overlay-surface);
7167
7247
  border: 0;
7168
- border-radius: 6px;
7169
7248
  box-shadow: var(--qc-overlay-shadow);
7170
7249
  }
7171
7250