@trdrs/quickcharts 5.3.0 → 5.5.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.
@@ -231,6 +231,184 @@
231
231
  --qc-text-secondary: #b8b8b8;
232
232
  }
233
233
 
234
+ [data-qc-theme] [data-qc-canvas="light"] {
235
+ --qc-canvas-background: #ffffff;
236
+ --qc-canvas-paneBorder: #ebebeb;
237
+ --qc-canvas-watermark: rgba(80, 83, 94, 0.2);
238
+ --qc-chrome-border: #ebebeb;
239
+ --qc-chrome-borderStrong: #8c8c8c;
240
+ --qc-chrome-caret: #707070;
241
+ --qc-chrome-fieldBorder: #dbdbdb;
242
+ --qc-chrome-grip: #b8b8b8;
243
+ --qc-chrome-scrollThumb: #9c9c9c;
244
+ --qc-chrome-surface: #ffffff;
245
+ --qc-chrome-surfaceRaised: #ffffff;
246
+ --qc-control-fieldEdge: #dbdbdb;
247
+ --qc-control-fieldEdgeHover: #a8a8a8;
248
+ --qc-control-fieldFill: #f2f2f2;
249
+ --qc-control-fieldInvalid: #f23645;
250
+ --qc-control-mark: #ffffff;
251
+ --qc-control-neutral: #f2f2f2;
252
+ --qc-control-neutralHover: #ebebeb;
253
+ --qc-control-neutralInk: #000000;
254
+ --qc-control-neutralPressed: #dbdbdb;
255
+ --qc-control-off: #9c9c9c;
256
+ --qc-control-offHover: #8c8c8c;
257
+ --qc-control-offPressed: #b8b8b8;
258
+ --qc-control-on: #1a1a1a;
259
+ --qc-control-onHover: #464646;
260
+ --qc-control-onInk: #ffffff;
261
+ --qc-control-onPressed: #707070;
262
+ --qc-control-outline: #1a1a1a;
263
+ --qc-control-selectEdgeHover: #a8a8a8;
264
+ --qc-control-tipMark: #a8a8a8;
265
+ --qc-control-tipMarkHover: #707070;
266
+ --qc-drawing-fill: rgba(41, 98, 255, 0.15);
267
+ --qc-drawing-handle: #ffffff;
268
+ --qc-drawing-line: #2962ff;
269
+ --qc-drawing-selected: #2962ff;
270
+ --qc-drawing-text: #000000;
271
+ --qc-illustration-accent: #2196f3;
272
+ --qc-illustration-accentInk: #ffffff;
273
+ --qc-illustration-ink: #1e222d;
274
+ --qc-overlay-scrim: rgba(156, 156, 156, 0.5);
275
+ --qc-overlay-separator: #ebebeb;
276
+ --qc-overlay-surface: #ffffff;
277
+ --qc-overlay-tooltip: #1a1a1a;
278
+ --qc-overlay-tooltipInk: #f2f2f2;
279
+ --qc-scale-background: #ffffff;
280
+ --qc-scale-border: rgba(26, 26, 26, 0);
281
+ --qc-scale-crosshair: #9c9c9c;
282
+ --qc-scale-crosshairLabelBackground: #000000;
283
+ --qc-scale-crosshairLabelText: #ffffff;
284
+ --qc-scale-grid: rgba(26, 26, 26, 0.2);
285
+ --qc-scale-sessionAfterHours: rgba(41, 98, 255, 0.08);
286
+ --qc-scale-sessionClosed: rgba(0, 0, 0, 0.05);
287
+ --qc-scale-sessionExtended: rgba(213, 0, 249, 0.08);
288
+ --qc-scale-sessionPreMarket: rgba(255, 152, 0, 0.08);
289
+ --qc-scale-text: #000000;
290
+ --qc-series-down: #f23645;
291
+ --qc-series-neutral: #787b86;
292
+ --qc-series-up: #089981;
293
+ --qc-state-accent: #2962ff;
294
+ --qc-state-focusRing: #2962ff;
295
+ --qc-state-hover: #f2f2f2;
296
+ --qc-state-hoverInk: #000000;
297
+ --qc-state-markInk: #ffffff;
298
+ --qc-state-pressed: #ebebeb;
299
+ --qc-state-pressedHover: #dbdbdb;
300
+ --qc-state-selected: #ebebeb;
301
+ --qc-state-selection: rgba(31, 86, 238, 0.18);
302
+ --qc-status-info: #1160c4;
303
+ --qc-status-loading: #787b86;
304
+ --qc-status-negative: #df323f;
305
+ --qc-status-positive: #078671;
306
+ --qc-status-sessionAfterHours: #f5a623;
307
+ --qc-status-sessionClosed: rgba(0, 0, 0, 0.35);
308
+ --qc-status-sessionExtended: #4c98fb;
309
+ --qc-status-sessionOpen: #22c55e;
310
+ --qc-status-sessionPreMarket: #4c98fb;
311
+ --qc-status-warning: #ac6600;
312
+ --qc-text-caption: #707070;
313
+ --qc-text-disabled: #b8b8b8;
314
+ --qc-text-highlight: #2962ff;
315
+ --qc-text-inverse: #ffffff;
316
+ --qc-text-link: #2962ff;
317
+ --qc-text-muted: #6a6a6a;
318
+ --qc-text-onCanvas: #000000;
319
+ --qc-text-primary: #000000;
320
+ --qc-text-secondary: #000000;
321
+ }
322
+
323
+ [data-qc-theme] [data-qc-canvas="dark"] {
324
+ --qc-canvas-background: #000000;
325
+ --qc-canvas-paneBorder: #1a1a1a;
326
+ --qc-canvas-watermark: rgba(80, 83, 94, 0.3);
327
+ --qc-chrome-border: #1a1a1a;
328
+ --qc-chrome-borderStrong: #707070;
329
+ --qc-chrome-caret: #8c8c8c;
330
+ --qc-chrome-fieldBorder: #636363;
331
+ --qc-chrome-grip: #555555;
332
+ --qc-chrome-scrollThumb: #2b2b2b;
333
+ --qc-chrome-surface: #000000;
334
+ --qc-chrome-surfaceRaised: #1a1a1a;
335
+ --qc-control-fieldEdge: #555555;
336
+ --qc-control-fieldEdgeHover: #707070;
337
+ --qc-control-fieldFill: #1a1a1a;
338
+ --qc-control-fieldInvalid: #f23645;
339
+ --qc-control-mark: #1a1a1a;
340
+ --qc-control-neutral: #1a1a1a;
341
+ --qc-control-neutralHover: #2b2b2b;
342
+ --qc-control-neutralInk: #ffffff;
343
+ --qc-control-neutralPressed: #464646;
344
+ --qc-control-off: #636363;
345
+ --qc-control-offHover: #707070;
346
+ --qc-control-offPressed: #636363;
347
+ --qc-control-on: #f2f2f2;
348
+ --qc-control-onHover: #dbdbdb;
349
+ --qc-control-onInk: #000000;
350
+ --qc-control-onPressed: #8c8c8c;
351
+ --qc-control-outline: #ffffff;
352
+ --qc-control-selectEdgeHover: #808080;
353
+ --qc-control-tipMark: #555555;
354
+ --qc-control-tipMarkHover: #8c8c8c;
355
+ --qc-drawing-fill: rgba(41, 98, 255, 0.15);
356
+ --qc-drawing-handle: #000000;
357
+ --qc-drawing-line: #2962ff;
358
+ --qc-drawing-selected: #1e53e5;
359
+ --qc-drawing-text: #dbdbdb;
360
+ --qc-illustration-accent: #1976d2;
361
+ --qc-illustration-accentInk: #d1d4dc;
362
+ --qc-illustration-ink: #d1d4dc;
363
+ --qc-overlay-scrim: rgba(0, 0, 0, 0.5);
364
+ --qc-overlay-separator: #464646;
365
+ --qc-overlay-surface: #131313;
366
+ --qc-overlay-tooltip: #2b2b2b;
367
+ --qc-overlay-tooltipInk: #f2f2f2;
368
+ --qc-scale-background: #000000;
369
+ --qc-scale-border: rgba(242, 242, 242, 0);
370
+ --qc-scale-crosshair: #9c9c9c;
371
+ --qc-scale-crosshairLabelBackground: #2b2b2b;
372
+ --qc-scale-crosshairLabelText: #ffffff;
373
+ --qc-scale-grid: rgba(242, 242, 242, 0.2);
374
+ --qc-scale-sessionAfterHours: rgba(41, 98, 255, 0.08);
375
+ --qc-scale-sessionClosed: rgba(0, 0, 0, 0.22);
376
+ --qc-scale-sessionExtended: rgba(213, 0, 249, 0.08);
377
+ --qc-scale-sessionPreMarket: rgba(255, 152, 0, 0.08);
378
+ --qc-scale-text: #b8b8b8;
379
+ --qc-series-down: #f23645;
380
+ --qc-series-neutral: #787b86;
381
+ --qc-series-up: #089981;
382
+ --qc-state-accent: #2962ff;
383
+ --qc-state-focusRing: #2962ff;
384
+ --qc-state-hover: #1a1a1a;
385
+ --qc-state-hoverInk: #c9c9c9;
386
+ --qc-state-markInk: #ffffff;
387
+ --qc-state-pressed: #2b2b2b;
388
+ --qc-state-pressedHover: #464646;
389
+ --qc-state-selected: #333333;
390
+ --qc-state-selection: rgba(82, 160, 252, 0.22);
391
+ --qc-status-info: #68a5ff;
392
+ --qc-status-loading: #787b86;
393
+ --qc-status-negative: #f34452;
394
+ --qc-status-positive: #089981;
395
+ --qc-status-sessionAfterHours: #f5a623;
396
+ --qc-status-sessionClosed: rgba(255, 255, 255, 0.35);
397
+ --qc-status-sessionExtended: #4c98fb;
398
+ --qc-status-sessionOpen: #22c55e;
399
+ --qc-status-sessionPreMarket: #4c98fb;
400
+ --qc-status-warning: #ff9800;
401
+ --qc-text-caption: #8c8c8c;
402
+ --qc-text-disabled: #555555;
403
+ --qc-text-highlight: #5280ff;
404
+ --qc-text-inverse: #000000;
405
+ --qc-text-link: #5b9cf6;
406
+ --qc-text-muted: #9b9b9b;
407
+ --qc-text-onCanvas: #dbdbdb;
408
+ --qc-text-primary: #dbdbdb;
409
+ --qc-text-secondary: #b8b8b8;
410
+ }
411
+
234
412
  @media (prefers-reduced-motion: reduce) {
235
413
  [data-qc-theme] {
236
414
  --qc-motion-durationBase: 0ms !important;
@@ -3844,10 +4022,13 @@
3844
4022
 
3845
4023
  /* The page: a two-column grid inside 16px by 20px, the labels' column as wide as the widest label
3846
4024
  * and its 20px gap, the controls' column the rest. Everything on the page that is not a labelled
3847
- * row stands across both columns. */
4025
+ * row stands across both columns. Every row is as tall as what it holds, whether or not the page
4026
+ * has room to spare: a row whose controls wrap onto a second line keeps that line, and the 50px
4027
+ * floor the controls carry still holds, so the rows never overlap while the page scrolls. */
3848
4028
  [data-qc-theme] .qc-drawing-page {
3849
4029
  display: grid;
3850
4030
  grid-template-columns: auto minmax(0, 1fr);
4031
+ grid-auto-rows: max-content;
3851
4032
  padding: 16px 20px;
3852
4033
  }
3853
4034
 
@@ -4993,11 +5174,12 @@
4993
5174
  height: 28px;
4994
5175
  }
4995
5176
 
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) {
5177
+ /* The author and count columns stand only while a listed row fills them, so the shipped catalog is
5178
+ * a row of its star, its name and its actions. */
5179
+ [data-qc-theme] .qc-picker-list:not(.qc-picker-list--authors) .qc-picker-author,
5180
+ [data-qc-theme] .qc-picker-list:not(.qc-picker-list--authors) .qc-picker-headings > :nth-child(3),
5181
+ [data-qc-theme] .qc-picker-list:not(.qc-picker-list--counts) .qc-picker-count,
5182
+ [data-qc-theme] .qc-picker-list:not(.qc-picker-list--counts) .qc-picker-headings > :nth-child(4) {
5001
5183
  display: none;
5002
5184
  }
5003
5185
 
@@ -5010,6 +5192,49 @@
5010
5192
  display: none;
5011
5193
  }
5012
5194
 
5195
+ /* A collection's empty state fills the list's place, centred in the row ink: a 120px mark 12px over
5196
+ * an 18px title, 12px over 16px text, and its action 20px under that, a dialog footer's primary
5197
+ * button. */
5198
+ [data-qc-theme] .qc-picker-empty {
5199
+ display: flex;
5200
+ flex: 1 1 auto;
5201
+ flex-direction: column;
5202
+ align-items: center;
5203
+ justify-content: center;
5204
+ min-height: 0;
5205
+ padding: 0 34px 0 30px;
5206
+ color: var(--qc-text-secondary);
5207
+ text-align: center;
5208
+ }
5209
+
5210
+ [data-qc-theme] .qc-picker-empty-mark,
5211
+ [data-qc-theme] .qc-picker-empty-mark svg {
5212
+ display: flex;
5213
+ width: 120px;
5214
+ height: 120px;
5215
+ }
5216
+
5217
+ [data-qc-theme] .qc-picker-empty-mark {
5218
+ margin-bottom: 12px;
5219
+ }
5220
+
5221
+ [data-qc-theme] .qc-picker-empty-title {
5222
+ margin-bottom: 12px;
5223
+ font-size: 18px;
5224
+ font-weight: 600;
5225
+ line-height: 24px;
5226
+ }
5227
+
5228
+ [data-qc-theme] .qc-picker-empty-text {
5229
+ margin: 0 0 -4px;
5230
+ font-size: 16px;
5231
+ line-height: 24px;
5232
+ }
5233
+
5234
+ [data-qc-theme] .qc-picker-empty-action {
5235
+ margin-top: 20px;
5236
+ }
5237
+
5013
5238
  [data-qc-theme] .qc-picker-status {
5014
5239
  flex: 0 0 auto;
5015
5240
  padding: 0 20px;
@@ -6544,14 +6769,15 @@
6544
6769
  * places each over the scale's box as it measures it and writes `--qcd-chart-background`, the
6545
6770
  * chart's own background, which each control stands on. */
6546
6771
 
6547
- /* The auto-scale and logarithmic buttons at the foot of the scale: two 20x22 buttons 4px apart, a
6548
- * letter each. Off, a button is a 1px outline on the chart's background; on, it is a held mode,
6549
- * filled in the emphasis fill a checked box wears with its letter in the inverse ink. */
6772
+ /* The auto-scale and logarithmic buttons at the foot of the scale: two 20x22 buttons 15px apart, each
6773
+ * centred in a 35x30 cell, a 14px letter each on an 18px line. Off, a button is a 1px outline on the
6774
+ * chart's background, lit under the pointer; on, it is a held mode, filled in the emphasis fill a
6775
+ * checked box wears with its letter in the inverse ink, a step lighter under the pointer. */
6550
6776
  [data-qc-theme] .qc-scale-modes {
6551
6777
  position: absolute;
6552
6778
  z-index: 4;
6553
6779
  display: flex;
6554
- gap: 4px;
6780
+ gap: 15px;
6555
6781
  pointer-events: auto;
6556
6782
  }
6557
6783
 
@@ -6562,10 +6788,11 @@
6562
6788
  height: 22px;
6563
6789
  align-items: center;
6564
6790
  justify-content: center;
6565
- padding: 0;
6791
+ padding: 1px 0;
6566
6792
  font: inherit;
6567
- font-size: 12px;
6568
- line-height: 1;
6793
+ font-size: var(--qc-text-fontSizeBase);
6794
+ font-weight: 400;
6795
+ line-height: 18px;
6569
6796
  color: var(--qc-text-primary);
6570
6797
  background: var(--qcd-chart-background, var(--qc-canvas-background));
6571
6798
  border: 1px solid var(--qc-overlay-separator);
@@ -6583,6 +6810,11 @@
6583
6810
  border-color: var(--qc-control-on);
6584
6811
  }
6585
6812
 
6813
+ [data-qc-theme] .qc-scale-mode[aria-pressed='true']:hover {
6814
+ background: var(--qc-control-onHover);
6815
+ border-color: var(--qc-control-onHover);
6816
+ }
6817
+
6586
6818
  /* The box at the top of the scale naming what its prices are in: at least 64x26, four pixels in from
6587
6819
  * the scale's top and its side away from the plot, on the chart's background inside a 1px border
6588
6820
  * with a radius of 4, in 12px text. It takes no pointer, so the scale under it still drags. */
@@ -6607,6 +6839,23 @@
6607
6839
  pointer-events: none;
6608
6840
  }
6609
6841
 
6842
+ /* With the host's door the box is a button that opens the host's menu: it keeps the box's size, type
6843
+ * and outline, takes the pointer, and lights under it and while pressed as the scale's buttons do.
6844
+ * The chrome gives every button its pointer back, so this rule names the chrome as well. */
6845
+ [data-qc-theme] .qc-chrome button.qc-scale-unit {
6846
+ font-family: inherit;
6847
+ cursor: pointer;
6848
+ pointer-events: auto;
6849
+ }
6850
+
6851
+ [data-qc-theme] .qc-chrome button.qc-scale-unit:hover {
6852
+ background: var(--qc-state-hover);
6853
+ }
6854
+
6855
+ [data-qc-theme] .qc-chrome button.qc-scale-unit:active {
6856
+ background: var(--qc-state-pressed);
6857
+ }
6858
+
6610
6859
  /* The plus beside the crosshair's price label is painted by the renderer with the label. Its button
6611
6860
  * stands over the painted box, at the size the chart writes: transparent, and taking no pointer, so
6612
6861
  * a pointer resting on the plus stays on the plot and keeps the crosshair. It carries the plus's
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trdrs/quickcharts",
3
- "version": "5.3.0",
3
+ "version": "5.5.0",
4
4
  "description": "Quick Charts: a datafeed-driven charting library with drawings, indicators, layouts and replay over host-supplied data and storage ports.",
5
5
  "keywords": [
6
6
  "charts",