@trdrs/quickcharts 5.1.1 → 5.2.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.
@@ -6672,13 +6672,14 @@
6672
6672
  }
6673
6673
  }
6674
6674
 
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 {
6675
+ /* 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. */
6677
+ [data-qc-theme] .qc-dialog.qc-search-dialog {
6678
6678
  height: min(85vh, 680px);
6679
+ border-radius: 20px;
6679
6680
  }
6680
6681
 
6681
- [data-qc-theme] .qc-search-dialog--compare {
6682
+ [data-qc-theme] .qc-dialog.qc-search-dialog--compare {
6682
6683
  height: min(85vh, 565px);
6683
6684
  }
6684
6685
 
@@ -6690,51 +6691,31 @@
6690
6691
  height: 100%;
6691
6692
  flex-direction: column;
6692
6693
  padding: 0 6px 6px;
6693
- color: var(--qc-text-primary);
6694
+ color: var(--qc-text-secondary);
6694
6695
  font-family: var(--qc-text-fontFamily);
6695
6696
  font-size: var(--qc-text-fontSizeBase);
6696
6697
  }
6697
6698
 
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. */
6699
+ /* The field: the mark and the value on one 40px line, 16px under the box's top edge on its 20px
6700
+ * inset, with nothing drawn around it. It does NOT wrap: a field that reflows as the operators
6701
+ * appear moves the caret out from under the hand that is typing into it. */
6718
6702
  [data-qc-theme] .qc-search-field {
6719
6703
  display: flex;
6720
6704
  flex: 0 0 auto;
6721
6705
  align-items: center;
6722
6706
  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;
6707
+ margin: 16px 20px 0;
6708
+ padding: 6px 0;
6728
6709
  }
6729
6710
 
6730
6711
  /* The mark stands back while the field is idle and steps forward once the caret is in it. */
6731
6712
  [data-qc-theme] .qc-search-magnifier {
6732
6713
  flex: 0 0 auto;
6733
- color: var(--qc-text-disabled);
6714
+ color: var(--qc-text-muted);
6734
6715
  }
6735
6716
 
6736
6717
  [data-qc-theme] .qc-search-field:focus-within .qc-search-magnifier {
6737
- color: var(--qc-text-muted);
6718
+ color: var(--qc-text-secondary);
6738
6719
  }
6739
6720
 
6740
6721
  /* The value at 16px on 24, raised to the case a ticker is written in. */
@@ -6743,7 +6724,7 @@
6743
6724
  min-width: 0;
6744
6725
  height: 24px;
6745
6726
  padding: 0;
6746
- color: var(--qc-text-primary);
6727
+ color: var(--qc-text-secondary);
6747
6728
  font: inherit;
6748
6729
  font-size: calc(var(--qc-text-fontSizeBase) + 2px);
6749
6730
  line-height: 24px;
@@ -6804,8 +6785,8 @@
6804
6785
  background: var(--qc-state-pressedHover);
6805
6786
  }
6806
6787
 
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. */
6788
+ /* The class strip: filled round tabs 4px apart on the field's inset, 8px under the field, scrolling
6789
+ * sideways when the feed serves more classes than the width holds. */
6809
6790
  [data-qc-theme] .qc-search-classes {
6810
6791
  display: flex;
6811
6792
  flex: 0 0 auto;
@@ -6840,7 +6821,7 @@
6840
6821
  flex: 0 0 auto;
6841
6822
  height: 28px;
6842
6823
  padding: 0 11px;
6843
- color: var(--qc-text-primary);
6824
+ color: var(--qc-text-secondary);
6844
6825
  font-size: var(--qc-text-fontSizeBase);
6845
6826
  line-height: 18px;
6846
6827
  background: var(--qc-state-hover);
@@ -6895,9 +6876,13 @@
6895
6876
  overflow: hidden;
6896
6877
  }
6897
6878
 
6879
+ /* The list opens 8px under what stands above it, with a pixel of air over its first row and 6px
6880
+ * under its last. */
6898
6881
  [data-qc-theme] .qc-search-list {
6899
6882
  flex: 1 1 auto;
6900
6883
  min-height: 0;
6884
+ margin-top: 8px;
6885
+ padding: 1px 0 6px;
6901
6886
  overflow-y: auto;
6902
6887
  }
6903
6888
 
@@ -6907,44 +6892,60 @@
6907
6892
  letter-spacing: normal;
6908
6893
  }
6909
6894
 
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. */
6895
+ /* A row: the market's mark, its ticker over a line of its description and kind, and its source at
6896
+ * the row's end, on a 56px row at the box's 20px inset. The pointer lays a plate under it, 12px in
6897
+ * from the box's edges and rounded 8px, and the keyboard's row wears the same plate: the row Enter
6898
+ * will act on reads as the one under the hand. */
6913
6899
  [data-qc-theme] .qc-search-row {
6914
6900
  position: relative;
6901
+ isolation: isolate;
6915
6902
  display: flex;
6916
6903
  align-items: center;
6917
- border-bottom: 1px solid var(--qc-state-pressed);
6904
+ min-height: 56px;
6905
+ padding: 8px 20px;
6918
6906
  cursor: default;
6919
6907
  }
6920
6908
 
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 {
6909
+ [data-qc-theme] .qc-search-row::before {
6926
6910
  position: absolute;
6927
- inset: 0;
6928
- border: 2px solid var(--qc-control-on);
6929
- border-radius: 4px;
6911
+ inset: 0 12px;
6912
+ z-index: -1;
6913
+ border-radius: 8px;
6930
6914
  content: '';
6931
6915
  pointer-events: none;
6932
6916
  }
6933
6917
 
6934
- /* A row's own mark: 24px, 20px in from the dialog's edge and 8px before the ticker. */
6918
+ [data-qc-theme] .qc-search-row:hover::before,
6919
+ [data-qc-theme] .qc-search-row[aria-selected='true']::before {
6920
+ background: var(--qc-state-hover);
6921
+ }
6922
+
6923
+ /* A row's own mark: 36px, 8px before the ticker, its monogram at 16px. */
6935
6924
  [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;
6925
+ flex: 0 0 36px;
6926
+ width: 36px;
6927
+ height: 36px;
6928
+ margin-inline-end: 8px;
6929
+ font-size: calc(var(--qc-text-fontSizeBase) + 2px);
6930
+ font-weight: 700;
6931
+ }
6932
+
6933
+ /* The ticker over its line, taking the room the row's end leaves. */
6934
+ [data-qc-theme] .qc-search-text {
6935
+ display: flex;
6936
+ flex: 1 1 auto;
6937
+ flex-direction: column;
6938
+ min-width: 0;
6940
6939
  }
6941
6940
 
6941
+ /* The ticker at 16px on 24, in the case a ticker is written in. */
6942
6942
  [data-qc-theme] .qc-search-symbol {
6943
6943
  min-width: 0;
6944
6944
  overflow: hidden;
6945
- color: var(--qc-text-primary);
6945
+ color: var(--qc-text-secondary);
6946
6946
  font-size: calc(var(--qc-text-fontSizeBase) + 2px);
6947
6947
  line-height: 24px;
6948
+ text-transform: uppercase;
6948
6949
  text-overflow: ellipsis;
6949
6950
  white-space: nowrap;
6950
6951
  }
@@ -6953,47 +6954,60 @@
6953
6954
  color: var(--qc-text-highlight);
6954
6955
  }
6955
6956
 
6957
+ /* The line under the ticker: the description at 12px on 16, then the kind. */
6958
+ [data-qc-theme] .qc-search-line {
6959
+ display: flex;
6960
+ align-items: center;
6961
+ gap: 4px;
6962
+ min-width: 0;
6963
+ }
6964
+
6956
6965
  [data-qc-theme] .qc-search-name {
6957
6966
  min-width: 0;
6958
6967
  overflow: hidden;
6968
+ color: var(--qc-text-secondary);
6969
+ font-size: calc(var(--qc-text-fontSizeBase) - 2px);
6970
+ line-height: 16px;
6959
6971
  text-overflow: ellipsis;
6960
6972
  white-space: nowrap;
6961
6973
  }
6962
6974
 
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;
6975
+ /* The market's kind: a 12px tag of 8px bold capitals, rounded 3px, on a fifth of the text's ink. */
6976
+ [data-qc-theme] .qc-search-kind {
6967
6977
  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;
6978
+ height: 12px;
6979
+ margin-inline-start: 2px;
6980
+ padding: 0 6px;
6981
+ color: var(--qc-text-secondary);
6982
+ font-size: 8px;
6983
+ font-weight: 700;
6984
+ line-height: 12px;
6985
+ letter-spacing: 0.5px;
6986
+ text-transform: uppercase;
6977
6987
  white-space: nowrap;
6988
+ background: color-mix(in srgb, var(--qc-text-secondary) 20%, transparent);
6989
+ border-radius: 3px;
6978
6990
  }
6979
6991
 
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;
6992
+ /* The source at the row's end, 24px past the text: its mark. */
6993
+ [data-qc-theme] .qc-search-source {
6994
+ display: inline-flex;
6995
+ flex: 0 0 auto;
6996
+ align-items: center;
6997
+ gap: 8px;
6998
+ padding-inline-start: 24px;
6984
6999
  }
6985
7000
 
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. */
7001
+ /* The source's mark: a 24px disc that names the source in its tooltip. The package ships no brand
7002
+ * artwork and fetches none: a host paints the venue's own mark, or a data source's, and without one
7003
+ * the source is written in the one letter it is known by on the neutral fill. */
6989
7004
  [data-qc-theme] .qc-search-mark {
6990
7005
  display: inline-flex;
6991
7006
  flex: 0 0 auto;
6992
7007
  align-items: center;
6993
7008
  justify-content: center;
6994
- width: 18px;
6995
- height: 18px;
6996
- margin: 1px;
7009
+ width: 24px;
7010
+ height: 24px;
6997
7011
  color: var(--qc-text-muted);
6998
7012
  font-size: var(--qc-text-fontSizeMicro);
6999
7013
  font-weight: 700;
@@ -7015,102 +7029,6 @@
7015
7029
  object-fit: contain;
7016
7030
  }
7017
7031
 
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
7032
  /* A row already on the chart carries a check where its source would stand. */
7115
7033
  [data-qc-theme] .qc-search-added {
7116
7034
  display: inline-flex;
@@ -7119,7 +7037,7 @@
7119
7037
  justify-content: center;
7120
7038
  width: 28px;
7121
7039
  height: 28px;
7122
- margin-inline-end: 16px;
7040
+ margin-inline-start: 24px;
7123
7041
  color: var(--qc-text-muted);
7124
7042
  }
7125
7043
 
@@ -7129,7 +7047,7 @@
7129
7047
  display: none;
7130
7048
  flex: 0 0 auto;
7131
7049
  gap: 8px;
7132
- padding-inline-end: 20px;
7050
+ padding-inline-start: 24px;
7133
7051
  }
7134
7052
 
7135
7053
  [data-qc-theme] .qc-search-dialog--compare .qc-search-row:hover .qc-search-actions,
@@ -79,13 +79,17 @@ interface FeedBar {
79
79
  }
80
80
  /** A symbol-search result row. `exchange` names the venue the market lists on. `dataSource` names
81
81
  * where the market's data comes from, and a row names one only when that source publishes the
82
- * symbol's data. The row's source cell shows the venue, or the data source for a row with none. */
82
+ * symbol's data. The row's source mark shows the venue, or the data source for a row with none. */
83
83
  interface SymbolRow {
84
84
  symbol: string;
85
85
  name: string;
86
86
  exchange: string;
87
87
  type: string;
88
88
  dataSource?: string | null;
89
+ /** The ticker a viewer reads the market by, where the feed writes one apart from its symbol:
90
+ * `NVDA` for a symbol written `EXCH:BOOK:NVDA`. A row without it reads the symbol's own ticker,
91
+ * its exchange prefix dropped. `SymbolInfo.ticker` states the same for the charted symbol. */
92
+ ticker?: string;
89
93
  /** What the market is priced in, when the feed knows it here. A PAIR market writes itself as
90
94
  * `BASE / QUOTE` wherever it is named, and a ticker alone cannot say what the quote is; a row
91
95
  * without it keeps the name the feed sent instead. `resolve()` states the same fact for the
package/dist/symbols.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { n as SymbolNames, q as bareTicker, s as symbolNames } from './symbols-CHJGWrf-.js';
1
+ export { n as SymbolNames, q as bareTicker, s as symbolNames } from './symbols-CCYUK8MU.js';
2
2
  import './symbology-D3SLclrU.js';
package/dist/symbols.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  bareTicker,
3
3
  symbolNames
4
- } from "./chunk-GFQQSY47.js";
4
+ } from "./chunk-U4W26DXU.js";
5
5
  export {
6
6
  bareTicker,
7
7
  symbolNames
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trdrs/quickcharts",
3
- "version": "5.1.1",
3
+ "version": "5.2.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",