@trdrs/quickcharts 5.1.1 → 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 (60) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +65 -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/{chunk-GFQQSY47.js → chunk-U4W26DXU.js} +2 -2
  11. package/dist/{chunk-GFQQSY47.js.map → chunk-U4W26DXU.js.map} +1 -1
  12. package/dist/{de-SUDTTPQ3.js → de-D5WWQLT5.js} +5 -1
  13. package/dist/{de-SUDTTPQ3.js.map → de-D5WWQLT5.js.map} +1 -1
  14. package/dist/drawings.d.ts +2 -2
  15. package/dist/drawings.js +1 -1
  16. package/dist/{es-FOBXUK2X.js → es-6TM3Z6CQ.js} +5 -1
  17. package/dist/{es-FOBXUK2X.js.map → es-6TM3Z6CQ.js.map} +1 -1
  18. package/dist/feature-manifest.json +6 -1
  19. package/dist/{fr-7KQC4IJH.js → fr-L5EPUMNA.js} +5 -1
  20. package/dist/{fr-7KQC4IJH.js.map → fr-L5EPUMNA.js.map} +1 -1
  21. package/dist/{he_IL-2T6XBA6D.js → he_IL-PXH4KNDC.js} +5 -1
  22. package/dist/{he_IL-2T6XBA6D.js.map → he_IL-PXH4KNDC.js.map} +1 -1
  23. package/dist/{id_ID-SI25N57C.js → id_ID-MMY4EQSL.js} +5 -1
  24. package/dist/{id_ID-SI25N57C.js.map → id_ID-MMY4EQSL.js.map} +1 -1
  25. package/dist/index.d.ts +29 -6
  26. package/dist/index.js +229 -119
  27. package/dist/index.js.map +1 -1
  28. package/dist/{it-PMSTWZDL.js → it-TUILRXJ5.js} +5 -1
  29. package/dist/{it-PMSTWZDL.js.map → it-TUILRXJ5.js.map} +1 -1
  30. package/dist/{ja-PABDRAXV.js → ja-7QY2FLXF.js} +5 -1
  31. package/dist/{ja-PABDRAXV.js.map → ja-7QY2FLXF.js.map} +1 -1
  32. package/dist/{ko-JHRYYFCV.js → ko-RWI5JOO2.js} +5 -1
  33. package/dist/{ko-JHRYYFCV.js.map → ko-RWI5JOO2.js.map} +1 -1
  34. package/dist/{ms_MY-U4EE5Q4V.js → ms_MY-ABJSZCPH.js} +5 -1
  35. package/dist/{ms_MY-U4EE5Q4V.js.map → ms_MY-ABJSZCPH.js.map} +1 -1
  36. package/dist/{pl-4HCG3T3J.js → pl-XLOQLQVW.js} +5 -1
  37. package/dist/{pl-4HCG3T3J.js.map → pl-XLOQLQVW.js.map} +1 -1
  38. package/dist/{pt-6LTNN653.js → pt-TZWQOZ5P.js} +5 -1
  39. package/dist/{pt-6LTNN653.js.map → pt-TZWQOZ5P.js.map} +1 -1
  40. package/dist/quickcharts.css +369 -372
  41. package/dist/{ru-LFHCSDBV.js → ru-2KVG2H7U.js} +5 -1
  42. package/dist/{ru-LFHCSDBV.js.map → ru-2KVG2H7U.js.map} +1 -1
  43. package/dist/{sv-4XVUXYK6.js → sv-3JTSBHQN.js} +5 -1
  44. package/dist/{sv-4XVUXYK6.js.map → sv-3JTSBHQN.js.map} +1 -1
  45. package/dist/{symbols-CHJGWrf-.d.ts → symbols-CCYUK8MU.d.ts} +5 -1
  46. package/dist/symbols.d.ts +1 -1
  47. package/dist/symbols.js +1 -1
  48. package/dist/{th-WM2PVA24.js → th-O3CHCMEU.js} +5 -1
  49. package/dist/{th-WM2PVA24.js.map → th-O3CHCMEU.js.map} +1 -1
  50. package/dist/theme-manifest.json +51 -40
  51. package/dist/{tr-HMAZXSJM.js → tr-RWKHFLUS.js} +5 -1
  52. package/dist/{tr-HMAZXSJM.js.map → tr-RWKHFLUS.js.map} +1 -1
  53. package/dist/{vi-ITFBV5B7.js → vi-D2CXSN5R.js} +5 -1
  54. package/dist/{vi-ITFBV5B7.js.map → vi-D2CXSN5R.js.map} +1 -1
  55. package/dist/{zh-ZGU2RI7K.js → zh-KBHIBNWP.js} +5 -1
  56. package/dist/{zh-ZGU2RI7K.js.map → zh-KBHIBNWP.js.map} +1 -1
  57. package/dist/{zh_TW-PNINSQ6F.js → zh_TW-474AC5C4.js} +5 -1
  58. package/dist/{zh_TW-PNINSQ6F.js.map → zh_TW-474AC5C4.js.map} +1 -1
  59. package/package.json +1 -1
  60. 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;
4736
4723
  }
4724
+
4725
+ [data-qc-theme] .qc-picker-section {
4726
+ display: flex;
4727
+ flex-direction: column;
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;
4782
+ }
4783
+
4784
+ [data-qc-theme] .qc-picker-collection[aria-pressed='true'] .qc-picker-collection-label {
4785
+ font-weight: 600;
4769
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;
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;
4820
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);
4872
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);
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;
5095
+ background: var(--qc-state-hover);
5096
+ border-radius: 14px;
4991
5097
  }
4992
5098
 
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;
5002
- }
5003
-
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;
@@ -6672,13 +6753,13 @@
6672
6753
  }
6673
6754
  }
6674
6755
 
6675
- /* The symbol search dialog and its compare family: the heading, the field with its operators, the
6676
- * class strip, and the result list. */
6677
- [data-qc-theme] .qc-search-dialog {
6756
+ /* The symbol search dialog and its compare family: the field with its operators, the class strip,
6757
+ * and the result list. */
6758
+ [data-qc-theme] .qc-dialog.qc-search-dialog {
6678
6759
  height: min(85vh, 680px);
6679
6760
  }
6680
6761
 
6681
- [data-qc-theme] .qc-search-dialog--compare {
6762
+ [data-qc-theme] .qc-dialog.qc-search-dialog--compare {
6682
6763
  height: min(85vh, 565px);
6683
6764
  }
6684
6765
 
@@ -6690,51 +6771,31 @@
6690
6771
  height: 100%;
6691
6772
  flex-direction: column;
6692
6773
  padding: 0 6px 6px;
6693
- color: var(--qc-text-primary);
6774
+ color: var(--qc-text-secondary);
6694
6775
  font-family: var(--qc-text-fontFamily);
6695
6776
  font-size: var(--qc-text-fontSizeBase);
6696
6777
  }
6697
6778
 
6698
- /* The heading band: a 68px line with the title at 20px on 28. The close reaches 3px past the band's
6699
- * inset, where every dialog of this size keeps it. */
6700
- [data-qc-theme] .qc-search-dialog .qc-dialog-title {
6701
- height: 68px;
6702
- padding: 0 20px;
6703
- }
6704
-
6705
- [data-qc-theme] .qc-search-dialog .qc-dialog-title .qc-title {
6706
- font-size: 20px;
6707
- line-height: 28px;
6708
- }
6709
-
6710
- [data-qc-theme] .qc-search-dialog .qc-dialog-close {
6711
- margin-inline-end: -3px;
6712
- }
6713
-
6714
- /* One 40px row in an 8px round box: the mark, the value, and the strip of things to do to the value.
6715
- * It does NOT wrap: a field that reflows as the operators appear moves the caret out from under the
6716
- * hand that is typing into it. The outline stands in for a border, so the side padding carries the
6717
- * pixel a border would take. */
6779
+ /* The field: the mark and the value on one 40px line, 16px under the box's top edge on its 20px
6780
+ * inset, with nothing drawn around it. It does NOT wrap: a field that reflows as the operators
6781
+ * appear moves the caret out from under the hand that is typing into it. */
6718
6782
  [data-qc-theme] .qc-search-field {
6719
6783
  display: flex;
6720
6784
  flex: 0 0 auto;
6721
6785
  align-items: center;
6722
6786
  height: 40px;
6723
- margin: 0 20px 8px;
6724
- padding: 6px 9px;
6725
- border-radius: 8px;
6726
- outline: 1px solid var(--qc-chrome-fieldBorder);
6727
- outline-offset: -1px;
6787
+ margin: 16px 20px 0;
6788
+ padding: 6px 0;
6728
6789
  }
6729
6790
 
6730
6791
  /* The mark stands back while the field is idle and steps forward once the caret is in it. */
6731
6792
  [data-qc-theme] .qc-search-magnifier {
6732
6793
  flex: 0 0 auto;
6733
- color: var(--qc-text-disabled);
6794
+ color: var(--qc-text-muted);
6734
6795
  }
6735
6796
 
6736
6797
  [data-qc-theme] .qc-search-field:focus-within .qc-search-magnifier {
6737
- color: var(--qc-text-muted);
6798
+ color: var(--qc-text-secondary);
6738
6799
  }
6739
6800
 
6740
6801
  /* The value at 16px on 24, raised to the case a ticker is written in. */
@@ -6743,7 +6804,7 @@
6743
6804
  min-width: 0;
6744
6805
  height: 24px;
6745
6806
  padding: 0;
6746
- color: var(--qc-text-primary);
6807
+ color: var(--qc-text-secondary);
6747
6808
  font: inherit;
6748
6809
  font-size: calc(var(--qc-text-fontSizeBase) + 2px);
6749
6810
  line-height: 24px;
@@ -6804,8 +6865,8 @@
6804
6865
  background: var(--qc-state-pressedHover);
6805
6866
  }
6806
6867
 
6807
- /* The class strip: filled round tabs 4px apart on the field's inset, scrolling sideways when the
6808
- * feed serves more classes than the width holds. */
6868
+ /* The class strip: filled round tabs 4px apart on the field's inset, 8px under the field, scrolling
6869
+ * sideways when the feed serves more classes than the width holds. */
6809
6870
  [data-qc-theme] .qc-search-classes {
6810
6871
  display: flex;
6811
6872
  flex: 0 0 auto;
@@ -6840,7 +6901,7 @@
6840
6901
  flex: 0 0 auto;
6841
6902
  height: 28px;
6842
6903
  padding: 0 11px;
6843
- color: var(--qc-text-primary);
6904
+ color: var(--qc-text-secondary);
6844
6905
  font-size: var(--qc-text-fontSizeBase);
6845
6906
  line-height: 18px;
6846
6907
  background: var(--qc-state-hover);
@@ -6895,9 +6956,13 @@
6895
6956
  overflow: hidden;
6896
6957
  }
6897
6958
 
6959
+ /* The list opens 8px under what stands above it, with a pixel of air over its first row and 6px
6960
+ * under its last. */
6898
6961
  [data-qc-theme] .qc-search-list {
6899
6962
  flex: 1 1 auto;
6900
6963
  min-height: 0;
6964
+ margin-top: 8px;
6965
+ padding: 1px 0 6px;
6901
6966
  overflow-y: auto;
6902
6967
  }
6903
6968
 
@@ -6907,44 +6972,60 @@
6907
6972
  letter-spacing: normal;
6908
6973
  }
6909
6974
 
6910
- /* A row. The pointer lifts it a step up the neutral ramp, the same step its divider is drawn in, so a
6911
- * hovered row reads as one block with its edge. The keyboard's row wears a 2px ring in the emphasis
6912
- * ink inside its own box, apart from the hover: the ring says where Enter will land. */
6975
+ /* A row: the market's mark, its ticker over a line of its description and kind, and its source at
6976
+ * the row's end, on a 56px row at the box's 20px inset. The pointer lays a plate under it, 12px in
6977
+ * from the box's edges and rounded 8px, and the keyboard's row wears the same plate: the row Enter
6978
+ * will act on reads as the one under the hand. */
6913
6979
  [data-qc-theme] .qc-search-row {
6914
6980
  position: relative;
6981
+ isolation: isolate;
6915
6982
  display: flex;
6916
6983
  align-items: center;
6917
- border-bottom: 1px solid var(--qc-state-pressed);
6984
+ min-height: 56px;
6985
+ padding: 8px 20px;
6918
6986
  cursor: default;
6919
6987
  }
6920
6988
 
6921
- [data-qc-theme] .qc-search-row:hover {
6922
- background: var(--qc-state-pressed);
6923
- }
6924
-
6925
- [data-qc-theme] .qc-search-row[aria-selected='true']::after {
6989
+ [data-qc-theme] .qc-search-row::before {
6926
6990
  position: absolute;
6927
- inset: 0;
6928
- border: 2px solid var(--qc-control-on);
6929
- border-radius: 4px;
6991
+ inset: 0 12px;
6992
+ z-index: -1;
6993
+ border-radius: 8px;
6930
6994
  content: '';
6931
6995
  pointer-events: none;
6932
6996
  }
6933
6997
 
6934
- /* A row's own mark: 24px, 20px in from the dialog's edge and 8px before the ticker. */
6998
+ [data-qc-theme] .qc-search-row:hover::before,
6999
+ [data-qc-theme] .qc-search-row[aria-selected='true']::before {
7000
+ background: var(--qc-state-hover);
7001
+ }
7002
+
7003
+ /* A row's own mark: 36px, 8px before the ticker, its monogram at 16px. */
6935
7004
  [data-qc-theme] .qc-search-row .qc-symbol-badge {
6936
- flex: 0 0 24px;
6937
- width: 24px;
6938
- height: 24px;
6939
- margin-inline: 20px 8px;
7005
+ flex: 0 0 36px;
7006
+ width: 36px;
7007
+ height: 36px;
7008
+ margin-inline-end: 8px;
7009
+ font-size: calc(var(--qc-text-fontSizeBase) + 2px);
7010
+ font-weight: 700;
6940
7011
  }
6941
7012
 
7013
+ /* The ticker over its line, taking the room the row's end leaves. */
7014
+ [data-qc-theme] .qc-search-text {
7015
+ display: flex;
7016
+ flex: 1 1 auto;
7017
+ flex-direction: column;
7018
+ min-width: 0;
7019
+ }
7020
+
7021
+ /* The ticker at 16px on 24, in the case a ticker is written in. */
6942
7022
  [data-qc-theme] .qc-search-symbol {
6943
7023
  min-width: 0;
6944
7024
  overflow: hidden;
6945
- color: var(--qc-text-primary);
7025
+ color: var(--qc-text-secondary);
6946
7026
  font-size: calc(var(--qc-text-fontSizeBase) + 2px);
6947
7027
  line-height: 24px;
7028
+ text-transform: uppercase;
6948
7029
  text-overflow: ellipsis;
6949
7030
  white-space: nowrap;
6950
7031
  }
@@ -6953,47 +7034,60 @@
6953
7034
  color: var(--qc-text-highlight);
6954
7035
  }
6955
7036
 
7037
+ /* The line under the ticker: the description at 12px on 16, then the kind. */
7038
+ [data-qc-theme] .qc-search-line {
7039
+ display: flex;
7040
+ align-items: center;
7041
+ gap: 4px;
7042
+ min-width: 0;
7043
+ }
7044
+
6956
7045
  [data-qc-theme] .qc-search-name {
6957
7046
  min-width: 0;
6958
7047
  overflow: hidden;
7048
+ color: var(--qc-text-secondary);
7049
+ font-size: calc(var(--qc-text-fontSizeBase) - 2px);
7050
+ line-height: 16px;
6959
7051
  text-overflow: ellipsis;
6960
7052
  white-space: nowrap;
6961
7053
  }
6962
7054
 
6963
- /* The source cell: what kind of market a row is and where its data comes from, then the mark of
6964
- * the venue or the data source, set against the row's end. */
6965
- [data-qc-theme] .qc-search-source {
6966
- display: inline-flex;
7055
+ /* The market's kind: a 12px tag of 8px bold capitals, rounded 3px, on a fifth of the text's ink. */
7056
+ [data-qc-theme] .qc-search-kind {
6967
7057
  flex: 0 0 auto;
6968
- align-items: center;
6969
- justify-content: flex-end;
6970
- padding-inline-end: 20px;
6971
- }
6972
-
6973
- [data-qc-theme] .qc-search-source-name {
6974
- color: var(--qc-text-primary);
6975
- font-size: var(--qc-text-fontSizeBase);
6976
- line-height: 21px;
7058
+ height: 12px;
7059
+ margin-inline-start: 2px;
7060
+ padding: 0 6px;
7061
+ color: var(--qc-text-secondary);
7062
+ font-size: 8px;
7063
+ font-weight: 700;
7064
+ line-height: 12px;
7065
+ letter-spacing: 0.5px;
7066
+ text-transform: uppercase;
6977
7067
  white-space: nowrap;
7068
+ background: color-mix(in srgb, var(--qc-text-secondary) 20%, transparent);
7069
+ border-radius: 3px;
6978
7070
  }
6979
7071
 
6980
- [data-qc-theme] .qc-search-kind {
6981
- color: var(--qc-text-muted);
6982
- font-size: calc(var(--qc-text-fontSizeBase) - 2px);
6983
- white-space: nowrap;
7072
+ /* The source at the row's end, 24px past the text: its mark. */
7073
+ [data-qc-theme] .qc-search-source {
7074
+ display: inline-flex;
7075
+ flex: 0 0 auto;
7076
+ align-items: center;
7077
+ gap: 8px;
7078
+ padding-inline-start: 24px;
6984
7079
  }
6985
7080
 
6986
- /* The source's mark: an 18px disc in a 20px cell. The package ships no brand artwork and fetches
6987
- * none: a host paints the venue's own mark, or a data source's, and without one the source is
6988
- * written in the one letter it is known by on the neutral fill. */
7081
+ /* The source's mark: a 24px disc that names the source in its tooltip. The package ships no brand
7082
+ * artwork and fetches none: a host paints the venue's own mark, or a data source's, and without one
7083
+ * the source is written in the one letter it is known by on the neutral fill. */
6989
7084
  [data-qc-theme] .qc-search-mark {
6990
7085
  display: inline-flex;
6991
7086
  flex: 0 0 auto;
6992
7087
  align-items: center;
6993
7088
  justify-content: center;
6994
- width: 18px;
6995
- height: 18px;
6996
- margin: 1px;
7089
+ width: 24px;
7090
+ height: 24px;
6997
7091
  color: var(--qc-text-muted);
6998
7092
  font-size: var(--qc-text-fontSizeMicro);
6999
7093
  font-weight: 700;
@@ -7015,102 +7109,6 @@
7015
7109
  object-fit: contain;
7016
7110
  }
7017
7111
 
7018
- /* A SEARCH and a PICK list their markets as a table, in a dialog or in a card a page holds: the mark, the ticker on a column as wide as the widest ticker
7019
- * the list holds, the description in the room that is left, and the source. Each row is a subgrid of
7020
- * the list, so the columns line up down every row. The list opens 8px under the class strip. */
7021
- [data-qc-theme] .qc-search-table .qc-search-list {
7022
- display: grid;
7023
- grid-template-columns: 52px max-content minmax(0, 1fr) max-content;
7024
- align-content: start;
7025
- margin-top: 8px;
7026
- padding: 1px 0 6px;
7027
- }
7028
-
7029
- [data-qc-theme] .qc-search-table .qc-search-list > :not(.qc-search-row) {
7030
- grid-column: 1 / -1;
7031
- }
7032
-
7033
- [data-qc-theme] .qc-search-table .qc-search-row {
7034
- display: grid;
7035
- grid-column: 1 / -1;
7036
- grid-template-columns: subgrid;
7037
- height: 40px;
7038
- }
7039
-
7040
- /* The ticker and its description stand in the row's own columns rather than in a box of their own,
7041
- * and the source cell's wrapper steps aside the same way, so the kind reads ahead of the venue on
7042
- * the row's one line. */
7043
- [data-qc-theme] .qc-search-table .qc-search-text,
7044
- [data-qc-theme] .qc-search-table .qc-search-source-text {
7045
- display: contents;
7046
- }
7047
-
7048
- [data-qc-theme] .qc-search-table .qc-search-symbol {
7049
- padding-inline-end: 24px;
7050
- }
7051
-
7052
- [data-qc-theme] .qc-search-table .qc-search-name {
7053
- padding-inline-end: 24px;
7054
- color: var(--qc-text-primary);
7055
- font-size: var(--qc-text-fontSizeBase);
7056
- }
7057
-
7058
- [data-qc-theme] .qc-search-table .qc-search-kind {
7059
- order: -1;
7060
- margin-inline-end: 8px;
7061
- line-height: 21px;
7062
- }
7063
-
7064
- [data-qc-theme] .qc-search-table .qc-search-source-name {
7065
- margin-inline-end: 8px;
7066
- }
7067
-
7068
- /* COMPARE stacks the ticker over its description and the source over the kind, on 52px rows, and
7069
- * keeps 6px of air at the list's two ends. */
7070
- [data-qc-theme] .qc-search-dialog--compare .qc-search-row {
7071
- height: 52px;
7072
- }
7073
-
7074
- [data-qc-theme] .qc-search-dialog--compare .qc-search-list > .qc-search-row:first-child {
7075
- margin-top: 6px;
7076
- }
7077
-
7078
- [data-qc-theme] .qc-search-dialog--compare .qc-search-list > .qc-search-row:last-child {
7079
- margin-bottom: 6px;
7080
- }
7081
-
7082
- [data-qc-theme] .qc-search-dialog--compare .qc-search-text {
7083
- display: flex;
7084
- flex: 1 1 auto;
7085
- flex-direction: column;
7086
- justify-content: center;
7087
- min-width: 0;
7088
- padding-inline-end: 16px;
7089
- }
7090
-
7091
- [data-qc-theme] .qc-search-dialog--compare .qc-search-name {
7092
- color: var(--qc-text-muted);
7093
- font-size: calc(var(--qc-text-fontSizeBase) - 2px);
7094
- line-height: 17px;
7095
- }
7096
-
7097
- /* The venue over its kind, with 4px of air above the pair so the two lines sit level with the
7098
- * ticker and description beside them. */
7099
- [data-qc-theme] .qc-search-dialog--compare .qc-search-source-text {
7100
- display: inline-flex;
7101
- flex-direction: column;
7102
- align-items: flex-end;
7103
- padding-top: 4px;
7104
- }
7105
-
7106
- [data-qc-theme] .qc-search-dialog--compare .qc-search-kind {
7107
- line-height: 17px;
7108
- }
7109
-
7110
- [data-qc-theme] .qc-search-dialog--compare .qc-search-mark {
7111
- margin-inline-start: 9px;
7112
- }
7113
-
7114
7112
  /* A row already on the chart carries a check where its source would stand. */
7115
7113
  [data-qc-theme] .qc-search-added {
7116
7114
  display: inline-flex;
@@ -7119,7 +7117,7 @@
7119
7117
  justify-content: center;
7120
7118
  width: 28px;
7121
7119
  height: 28px;
7122
- margin-inline-end: 16px;
7120
+ margin-inline-start: 24px;
7123
7121
  color: var(--qc-text-muted);
7124
7122
  }
7125
7123
 
@@ -7129,7 +7127,7 @@
7129
7127
  display: none;
7130
7128
  flex: 0 0 auto;
7131
7129
  gap: 8px;
7132
- padding-inline-end: 20px;
7130
+ padding-inline-start: 24px;
7133
7131
  }
7134
7132
 
7135
7133
  [data-qc-theme] .qc-search-dialog--compare .qc-search-row:hover .qc-search-actions,
@@ -7247,7 +7245,6 @@
7247
7245
  color: var(--qc-text-primary);
7248
7246
  background: var(--qc-overlay-surface);
7249
7247
  border: 0;
7250
- border-radius: 6px;
7251
7248
  box-shadow: var(--qc-overlay-shadow);
7252
7249
  }
7253
7250