@363045841yyt/klinechart-core 0.7.5 → 0.7.7

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 (235) hide show
  1. package/README.md +8 -8
  2. package/README.zh-CN.md +8 -8
  3. package/dist/config/chartSettings.d.ts +27 -2
  4. package/dist/config/chartSettings.d.ts.map +1 -1
  5. package/dist/config/chartSettings.js +6 -0
  6. package/dist/config/chartSettings.js.map +1 -1
  7. package/dist/controllers/createChartController.d.ts.map +1 -1
  8. package/dist/controllers/createChartController.js +145 -21
  9. package/dist/controllers/createChartController.js.map +1 -1
  10. package/dist/controllers/index.d.ts +9 -1
  11. package/dist/controllers/index.d.ts.map +1 -1
  12. package/dist/controllers/index.js +9 -0
  13. package/dist/controllers/index.js.map +1 -1
  14. package/dist/controllers/types.d.ts +65 -8
  15. package/dist/controllers/types.d.ts.map +1 -1
  16. package/dist/engine/chart.d.ts +2 -12
  17. package/dist/engine/chart.d.ts.map +1 -1
  18. package/dist/engine/chart.js +32 -31
  19. package/dist/engine/chart.js.map +1 -1
  20. package/dist/engine/controller/interaction.d.ts +1 -1
  21. package/dist/engine/controller/interaction.d.ts.map +1 -1
  22. package/dist/engine/controller/interaction.js +10 -2
  23. package/dist/engine/controller/interaction.js.map +1 -1
  24. package/dist/engine/draw/pixelAlign.d.ts.map +1 -1
  25. package/dist/engine/draw/pixelAlign.js.map +1 -1
  26. package/dist/engine/drawing/interaction.d.ts +3 -3
  27. package/dist/engine/drawing/interaction.d.ts.map +1 -1
  28. package/dist/engine/drawing/interaction.js +38 -46
  29. package/dist/engine/drawing/interaction.js.map +1 -1
  30. package/dist/engine/drawing/plugin.js +1 -1
  31. package/dist/engine/drawing/plugin.js.map +1 -1
  32. package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
  33. package/dist/engine/renderers/Indicator/atr.js +7 -4
  34. package/dist/engine/renderers/Indicator/atr.js.map +1 -1
  35. package/dist/engine/renderers/Indicator/boll.js +12 -12
  36. package/dist/engine/renderers/Indicator/boll.js.map +1 -1
  37. package/dist/engine/renderers/Indicator/cci.d.ts +1 -2
  38. package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
  39. package/dist/engine/renderers/Indicator/cci.js +9 -9
  40. package/dist/engine/renderers/Indicator/cci.js.map +1 -1
  41. package/dist/engine/renderers/Indicator/ene.js +12 -12
  42. package/dist/engine/renderers/Indicator/ene.js.map +1 -1
  43. package/dist/engine/renderers/Indicator/expma.js +6 -6
  44. package/dist/engine/renderers/Indicator/expma.js.map +1 -1
  45. package/dist/engine/renderers/Indicator/fastk.d.ts +1 -2
  46. package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
  47. package/dist/engine/renderers/Indicator/fastk.js +7 -7
  48. package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
  49. package/dist/engine/renderers/Indicator/kst.d.ts +1 -2
  50. package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
  51. package/dist/engine/renderers/Indicator/kst.js +10 -10
  52. package/dist/engine/renderers/Indicator/kst.js.map +1 -1
  53. package/dist/engine/renderers/Indicator/ma.js +5 -5
  54. package/dist/engine/renderers/Indicator/ma.js.map +1 -1
  55. package/dist/engine/renderers/Indicator/macd.d.ts +1 -2
  56. package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -1
  57. package/dist/engine/renderers/Indicator/macd.js +24 -24
  58. package/dist/engine/renderers/Indicator/macd.js.map +1 -1
  59. package/dist/engine/renderers/Indicator/macdLegend.js +6 -6
  60. package/dist/engine/renderers/Indicator/macdLegend.js.map +1 -1
  61. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +16 -16
  62. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
  63. package/dist/engine/renderers/Indicator/mom.d.ts +1 -2
  64. package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
  65. package/dist/engine/renderers/Indicator/mom.js +8 -8
  66. package/dist/engine/renderers/Indicator/mom.js.map +1 -1
  67. package/dist/engine/renderers/Indicator/rsi.d.ts +2 -3
  68. package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
  69. package/dist/engine/renderers/Indicator/rsi.js +15 -15
  70. package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
  71. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +1 -2
  72. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -1
  73. package/dist/engine/renderers/Indicator/scale/indicator_scale.js +5 -5
  74. package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -1
  75. package/dist/engine/renderers/Indicator/stoch.d.ts +1 -2
  76. package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
  77. package/dist/engine/renderers/Indicator/stoch.js +10 -10
  78. package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
  79. package/dist/engine/renderers/Indicator/structure.js +5 -5
  80. package/dist/engine/renderers/Indicator/structure.js.map +1 -1
  81. package/dist/engine/renderers/Indicator/wmsr.d.ts +1 -2
  82. package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
  83. package/dist/engine/renderers/Indicator/wmsr.js +10 -10
  84. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
  85. package/dist/engine/renderers/Indicator/zones.js +6 -6
  86. package/dist/engine/renderers/Indicator/zones.js.map +1 -1
  87. package/dist/engine/renderers/candle.d.ts +1 -1
  88. package/dist/engine/renderers/candle.d.ts.map +1 -1
  89. package/dist/engine/renderers/candle.js +21 -21
  90. package/dist/engine/renderers/candle.js.map +1 -1
  91. package/dist/engine/renderers/crosshair.js +3 -3
  92. package/dist/engine/renderers/crosshair.js.map +1 -1
  93. package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -1
  94. package/dist/engine/renderers/extremaMarkers.js +12 -12
  95. package/dist/engine/renderers/extremaMarkers.js.map +1 -1
  96. package/dist/engine/renderers/gridLines.js +3 -3
  97. package/dist/engine/renderers/gridLines.js.map +1 -1
  98. package/dist/engine/renderers/lastPrice.js +7 -7
  99. package/dist/engine/renderers/lastPrice.js.map +1 -1
  100. package/dist/engine/renderers/paneTitle.d.ts +5 -24
  101. package/dist/engine/renderers/paneTitle.d.ts.map +1 -1
  102. package/dist/engine/renderers/paneTitle.js +16 -11
  103. package/dist/engine/renderers/paneTitle.js.map +1 -1
  104. package/dist/engine/renderers/subVolume.d.ts.map +1 -1
  105. package/dist/engine/renderers/subVolume.js +23 -20
  106. package/dist/engine/renderers/subVolume.js.map +1 -1
  107. package/dist/engine/renderers/timeAxis.js +9 -9
  108. package/dist/engine/renderers/timeAxis.js.map +1 -1
  109. package/dist/engine/renderers/webgl/candleSurface.d.ts +4 -4
  110. package/dist/engine/renderers/webgl/candleSurface.d.ts.map +1 -1
  111. package/dist/engine/renderers/webgl/candleSurface.js +72 -60
  112. package/dist/engine/renderers/webgl/candleSurface.js.map +1 -1
  113. package/dist/engine/renderers/yAxis.d.ts.map +1 -1
  114. package/dist/engine/renderers/yAxis.js +5 -5
  115. package/dist/engine/renderers/yAxis.js.map +1 -1
  116. package/dist/engine/subPaneManager.d.ts +2 -0
  117. package/dist/engine/subPaneManager.d.ts.map +1 -1
  118. package/dist/engine/subPaneManager.js +25 -1
  119. package/dist/engine/subPaneManager.js.map +1 -1
  120. package/dist/index.d.ts +1 -0
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +1 -0
  123. package/dist/index.js.map +1 -1
  124. package/dist/plugin/types.d.ts +5 -1
  125. package/dist/plugin/types.d.ts.map +1 -1
  126. package/dist/plugin/types.js.map +1 -1
  127. package/dist/semantic/controller.d.ts +1 -2
  128. package/dist/semantic/controller.d.ts.map +1 -1
  129. package/dist/semantic/index.d.ts +1 -1
  130. package/dist/semantic/index.d.ts.map +1 -1
  131. package/dist/tokens/colorPresetSettings.d.ts +15 -0
  132. package/dist/tokens/colorPresetSettings.d.ts.map +1 -0
  133. package/dist/tokens/colorPresetSettings.js +65 -0
  134. package/dist/tokens/colorPresetSettings.js.map +1 -0
  135. package/dist/tokens/index.d.ts +17 -0
  136. package/dist/tokens/index.d.ts.map +1 -0
  137. package/dist/tokens/index.js +16 -0
  138. package/dist/tokens/index.js.map +1 -0
  139. package/dist/tokens/mergeTheme.d.ts +17 -0
  140. package/dist/tokens/mergeTheme.d.ts.map +1 -0
  141. package/dist/tokens/mergeTheme.js +43 -0
  142. package/dist/tokens/mergeTheme.js.map +1 -0
  143. package/dist/tokens/theme-china.d.ts +45 -0
  144. package/dist/tokens/theme-china.d.ts.map +1 -0
  145. package/dist/tokens/theme-china.js +116 -0
  146. package/dist/tokens/theme-china.js.map +1 -0
  147. package/dist/tokens/theme-dark.d.ts +21 -0
  148. package/dist/tokens/theme-dark.d.ts.map +1 -0
  149. package/dist/tokens/theme-dark.js +228 -0
  150. package/dist/tokens/theme-dark.js.map +1 -0
  151. package/dist/tokens/theme-light.d.ts +23 -0
  152. package/dist/tokens/theme-light.d.ts.map +1 -0
  153. package/dist/tokens/theme-light.js +234 -0
  154. package/dist/tokens/theme-light.js.map +1 -0
  155. package/dist/tokens/themeToCssVars.d.ts +74 -0
  156. package/dist/tokens/themeToCssVars.d.ts.map +1 -0
  157. package/dist/tokens/themeToCssVars.js +108 -0
  158. package/dist/tokens/themeToCssVars.js.map +1 -0
  159. package/dist/tokens/types.d.ts +335 -0
  160. package/dist/tokens/types.d.ts.map +1 -0
  161. package/dist/tokens/types.js +20 -0
  162. package/dist/tokens/types.js.map +1 -0
  163. package/dist/utils/kLineDraw/axis.d.ts +8 -7
  164. package/dist/utils/kLineDraw/axis.d.ts.map +1 -1
  165. package/dist/utils/kLineDraw/axis.js +24 -24
  166. package/dist/utils/kLineDraw/axis.js.map +1 -1
  167. package/dist/version.d.ts +1 -1
  168. package/dist/version.js +1 -1
  169. package/package.json +6 -6
  170. package/src/config/chartSettings.ts +11 -2
  171. package/src/controllers/createChartController.ts +158 -29
  172. package/src/controllers/index.ts +33 -0
  173. package/src/controllers/types.ts +79 -8
  174. package/src/engine/chart.ts +32 -37
  175. package/src/engine/controller/interaction.ts +9 -2
  176. package/src/engine/draw/pixelAlign.ts +0 -2
  177. package/src/engine/drawing/interaction.ts +38 -47
  178. package/src/engine/drawing/plugin.ts +1 -1
  179. package/src/engine/renderers/Indicator/atr.ts +7 -3
  180. package/src/engine/renderers/Indicator/boll.ts +12 -12
  181. package/src/engine/renderers/Indicator/cci.ts +11 -10
  182. package/src/engine/renderers/Indicator/ene.ts +12 -12
  183. package/src/engine/renderers/Indicator/expma.ts +6 -6
  184. package/src/engine/renderers/Indicator/fastk.ts +9 -8
  185. package/src/engine/renderers/Indicator/kst.ts +12 -11
  186. package/src/engine/renderers/Indicator/ma.ts +5 -5
  187. package/src/engine/renderers/Indicator/macd.ts +27 -25
  188. package/src/engine/renderers/Indicator/macdLegend.ts +6 -6
  189. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +16 -16
  190. package/src/engine/renderers/Indicator/mom.ts +11 -10
  191. package/src/engine/renderers/Indicator/rsi.ts +18 -15
  192. package/src/engine/renderers/Indicator/scale/indicator_scale.ts +6 -6
  193. package/src/engine/renderers/Indicator/stoch.ts +12 -11
  194. package/src/engine/renderers/Indicator/structure.ts +5 -5
  195. package/src/engine/renderers/Indicator/wmsr.ts +13 -12
  196. package/src/engine/renderers/Indicator/zones.ts +7 -7
  197. package/src/engine/renderers/candle.ts +21 -21
  198. package/src/engine/renderers/crosshair.ts +3 -3
  199. package/src/engine/renderers/extremaMarkers.ts +13 -12
  200. package/src/engine/renderers/gridLines.ts +3 -3
  201. package/src/engine/renderers/lastPrice.ts +7 -7
  202. package/src/engine/renderers/paneTitle.ts +22 -31
  203. package/src/engine/renderers/subVolume.ts +23 -20
  204. package/src/engine/renderers/timeAxis.ts +9 -9
  205. package/src/engine/renderers/webgl/candleSurface.ts +80 -60
  206. package/src/engine/renderers/yAxis.ts +6 -5
  207. package/src/engine/subPaneManager.ts +28 -1
  208. package/src/index.ts +1 -0
  209. package/src/plugin/types.ts +5 -1
  210. package/src/semantic/controller.ts +1 -1
  211. package/src/semantic/index.ts +1 -1
  212. package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +393 -0
  213. package/src/tokens/__tests__/baseline.test.ts +183 -0
  214. package/src/tokens/__tests__/themeToCssVars.test.ts +175 -0
  215. package/src/tokens/__tests__/tokens.test.ts +215 -0
  216. package/src/tokens/colorPresetSettings.ts +128 -0
  217. package/src/tokens/index.ts +65 -0
  218. package/src/tokens/mergeTheme.ts +48 -0
  219. package/src/tokens/theme-china.ts +132 -0
  220. package/src/tokens/theme-dark.ts +244 -0
  221. package/src/tokens/theme-light.ts +250 -0
  222. package/src/tokens/themeToCssVars.ts +138 -0
  223. package/src/tokens/types.ts +394 -0
  224. package/src/utils/kLineDraw/axis.ts +31 -30
  225. package/src/version.ts +1 -1
  226. package/dist/engine/chart-store.d.ts +0 -75
  227. package/dist/engine/chart-store.d.ts.map +0 -1
  228. package/dist/engine/chart-store.js +0 -88
  229. package/dist/engine/chart-store.js.map +0 -1
  230. package/dist/engine/theme/colors.d.ts +0 -223
  231. package/dist/engine/theme/colors.d.ts.map +0 -1
  232. package/dist/engine/theme/colors.js +0 -375
  233. package/dist/engine/theme/colors.js.map +0 -1
  234. package/src/engine/chart-store.ts +0 -121
  235. package/src/engine/theme/colors.ts +0 -642
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Dark theme — paired with {@link lightTheme}.
3
+ *
4
+ * Color choices:
5
+ *
6
+ * - Background = #0E1116 (deep but not pure black — pure black creates
7
+ * halation around bright lines on OLED).
8
+ * - Bull = brighter green (#22D69B) — needed on dark background for
9
+ * 7.5:1 contrast (passes WCAG AAA for non-text).
10
+ * - Bear = brighter red (#FF6464) — 6.2:1 contrast.
11
+ * - Grid is barely visible (1.2:1 over background) so it never competes
12
+ * with the data.
13
+ * - Indicator palette is the same Okabe-Ito set but with the few hues
14
+ * that need a brightness bump on dark background pre-tuned.
15
+ *
16
+ * Same shape as light — only values change. The parity test in
17
+ * `__tests__/themes.test.ts` enforces this.
18
+ */
19
+ export const darkTheme = {
20
+ name: 'dark',
21
+ colors: {
22
+ background: '#111827',
23
+ foreground: '#E8EAED',
24
+ chartBackground: '#111827',
25
+ candleUpBody: '#22D69B',
26
+ candleUpBorder: '#22D69B',
27
+ candleUpWick: '#22D69B',
28
+ candleDownBody: '#FF6464',
29
+ candleDownBorder: '#FF6464',
30
+ candleDownWick: '#FF6464',
31
+ candleDojiBorder: '#8A8F98',
32
+ volumeUp: '#22D69B66',
33
+ volumeDown: '#FF646466',
34
+ axisText: '#9AA0A6',
35
+ axisLine: '#2A2F36',
36
+ axisTick: '#2A2F36',
37
+ gridMajor: '#1B1F26',
38
+ gridMinor: '#161A20',
39
+ crosshairLine: '#5F6368',
40
+ crosshairLabelBg: '#E8EAED',
41
+ crosshairLabelText: '#0E1116',
42
+ selectionFill: '#4A9EFF33',
43
+ selectionStroke: '#4A9EFF',
44
+ tooltipBg: '#1B1F26EE',
45
+ tooltipText: '#E8EAED',
46
+ tooltipBorder: '#2A2F36',
47
+ heatmapColdest: '#0E1116',
48
+ heatmapHottest: '#80B7FF',
49
+ volumeProfileFill: '#6B727A66',
50
+ volumeProfilePoc: '#FFA94D',
51
+ volumeProfileValueArea: '#4A9EFF33',
52
+ footprintAsk: '#22D69B80',
53
+ footprintBid: '#FF646480',
54
+ footprintImbalance: '#FFA94D',
55
+ alertActive: '#4A9EFF',
56
+ alertTriggered: '#FFA94D',
57
+ alertMuted: '#6B727A',
58
+ avwapLine: '#A78BFA',
59
+ avwapBand: '#A78BFA33',
60
+ mtfOverlay: '#38BDF8',
61
+ palette: {
62
+ // Same hue ordering as light theme; values tuned for dark BG.
63
+ i1: '#4A9EFF', // blue (brightened)
64
+ i2: '#FFB95A', // amber
65
+ i3: '#22D69B', // teal-green
66
+ i4: '#E879BA', // pink
67
+ i5: '#FF8848', // burnt orange
68
+ i6: '#7DD3FC', // sky
69
+ i7: '#FCE96A', // yellow
70
+ i8: '#A78BFA', // purple
71
+ i9: '#60A5FA', // blue
72
+ i10: '#9AA0A6', // neutral gray
73
+ indicatorAtr: '#F59E0B',
74
+ },
75
+ // ── Legacy indicator colours (from engine/theme/colors) ──
76
+ text: {
77
+ primary: 'hsl(210, 10%, 85%)',
78
+ secondary: 'hsl(210, 8%, 75%)',
79
+ tertiary: 'hsl(210, 6%, 60%)',
80
+ weak: 'hsl(210, 5%, 45%)',
81
+ white: 'rgba(255, 255, 255, 0.95)',
82
+ },
83
+ price: {
84
+ upLight: 'rgba(255, 80, 100, 0.85)',
85
+ upTick: 'hsl(0, 70%, 60%)',
86
+ downLight: 'rgba(60, 200, 160, 0.85)',
87
+ downTick: 'hsl(150, 50%, 65%)',
88
+ lastPrice: 'rgba(230, 100, 115, 0.95)',
89
+ },
90
+ tagBg: {
91
+ white: 'rgb(40, 40, 55)',
92
+ lightGray: 'rgba(50, 50, 65, 0.92)',
93
+ pureWhite: '#282837',
94
+ transparent: 'transparent',
95
+ active: '#1890ff',
96
+ activeHover: '#40a9ff',
97
+ hover: '#3a3a4a',
98
+ },
99
+ border: {
100
+ dark: 'rgba(255, 255, 255, 0.15)',
101
+ medium: 'rgba(255, 255, 255, 0.12)',
102
+ light: 'rgba(255, 255, 255, 0.08)',
103
+ separator: 'rgba(255, 255, 255, 0.10)',
104
+ button: '#505060',
105
+ chart: '#3A4048',
106
+ },
107
+ ma: {
108
+ ma5: 'rgba(255, 200, 50, 1)',
109
+ ma10: 'rgba(200, 150, 30, 1)',
110
+ ma20: 'rgba(90, 140, 255, 1)',
111
+ ma30: 'rgba(90, 190, 95, 1)',
112
+ ma60: 'rgba(170, 60, 195, 1)',
113
+ },
114
+ boll: {
115
+ upper: 'rgba(200, 60, 60, 1)',
116
+ middle: 'rgba(90, 140, 255, 1)',
117
+ lower: 'rgba(50, 170, 60, 1)',
118
+ bandFill: 'rgba(120, 170, 255, 0.15)',
119
+ },
120
+ macd: {
121
+ dif: 'rgba(90, 140, 255, 1)',
122
+ dea: 'rgba(255, 170, 50, 1)',
123
+ barUp: '#ff6b6b',
124
+ barUpLight: '#ffb3b3',
125
+ barDown: '#4ecdc4',
126
+ barDownLight: '#a8e6e1',
127
+ },
128
+ rsi: {
129
+ rsi1: 'rgba(90, 140, 255, 1)',
130
+ rsi2: 'rgba(255, 170, 50, 1)',
131
+ rsi3: 'rgba(180, 70, 205, 1)',
132
+ },
133
+ cci: {
134
+ cci: 'rgba(90, 140, 255, 1)',
135
+ overbought: 'rgba(255, 80, 100, 0.6)',
136
+ oversold: 'rgba(60, 200, 160, 0.6)',
137
+ },
138
+ kdj: {
139
+ k: 'rgba(90, 140, 255, 1)',
140
+ d: 'rgba(255, 170, 50, 1)',
141
+ j: 'rgba(180, 70, 205, 1)',
142
+ },
143
+ mom: {
144
+ mom: 'rgba(90, 140, 255, 1)',
145
+ zero: 'rgba(255, 255, 255, 0.2)',
146
+ },
147
+ wmsr: {
148
+ wmsr: 'rgba(90, 140, 255, 1)',
149
+ overbought: 'rgba(255, 80, 100, 0.6)',
150
+ oversold: 'rgba(60, 200, 160, 0.6)',
151
+ },
152
+ kst: {
153
+ kst: 'rgba(90, 140, 255, 1)',
154
+ signal: 'rgba(255, 170, 50, 1)',
155
+ },
156
+ expma: {
157
+ fast: 'rgba(255, 170, 50, 1)',
158
+ slow: 'rgba(90, 140, 255, 1)',
159
+ },
160
+ ene: {
161
+ upper: 'rgba(255, 80, 100, 1)',
162
+ middle: 'rgba(90, 140, 255, 1)',
163
+ lower: 'rgba(60, 200, 160, 1)',
164
+ bandFill: 'rgba(90, 140, 255, 0.12)',
165
+ },
166
+ label: {
167
+ bg: 'rgba(30, 30, 40, 0.9)',
168
+ text: '#ffffff',
169
+ },
170
+ lastPriceLabel: {
171
+ bg: 'rgba(60, 50, 55, 0.98)',
172
+ },
173
+ volumePrice: {
174
+ riseWith: '#FF6666',
175
+ riseWithout: '#66FF99',
176
+ fallWith: '#FF6666',
177
+ fallWithout: '#66FF99',
178
+ },
179
+ structure: {
180
+ hh: '#4ade80',
181
+ hl: '#22c55e',
182
+ lh: '#f87171',
183
+ ll: '#ef4444',
184
+ choch: '#a78bfa',
185
+ bos: '#fbbf24',
186
+ },
187
+ zones: {
188
+ fvgBullFill: 'rgba(74, 222, 128, 0.20)',
189
+ fvgBearFill: 'rgba(248, 113, 113, 0.20)',
190
+ fvgBullBorder: 'rgba(74, 222, 128, 0.8)',
191
+ fvgBearBorder: 'rgba(248, 113, 113, 0.8)',
192
+ obBullFill: 'rgba(74, 222, 128, 0.35)',
193
+ obBearFill: 'rgba(248, 113, 113, 0.35)',
194
+ },
195
+ wmsrGrid: 'rgba(255, 255, 255, 0.1)',
196
+ },
197
+ spacing: {
198
+ none: '0',
199
+ xxs: '2px',
200
+ xs: '4px',
201
+ sm: '8px',
202
+ md: '12px',
203
+ lg: '16px',
204
+ xl: '24px',
205
+ xxl: '32px',
206
+ xxxl: '64px',
207
+ },
208
+ typography: {
209
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
210
+ fontFamilyMono: "ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace",
211
+ fontSizeSm: '10px',
212
+ fontSizeMd: '12px',
213
+ fontSizeLg: '14px',
214
+ fontWeightRegular: 400,
215
+ fontWeightMedium: 500,
216
+ fontWeightBold: 700,
217
+ lineHeightTight: 1.2,
218
+ lineHeightStandard: 1.4,
219
+ },
220
+ motion: {
221
+ durationInstant: '0ms',
222
+ durationFast: '120ms',
223
+ durationModerate: '200ms',
224
+ easingStandard: 'cubic-bezier(0.4, 0, 0.2, 1)',
225
+ easingDecelerate: 'cubic-bezier(0, 0, 0.2, 1)',
226
+ },
227
+ };
228
+ //# sourceMappingURL=theme-dark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-dark.js","sourceRoot":"","sources":["../../src/tokens/theme-dark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Light theme — concrete token values.
3
+ *
4
+ * Color choices:
5
+ *
6
+ * - Bull (up) = a dark saturated green (#0F8B5C). Picked to clear the
7
+ * WCAG AA non-text threshold (≥ 3:1) against #FAFAFA. The lighter
8
+ * industry-standard greens like #26A69A fail that bar by ~25 %.
9
+ * - Bear (down) = a dark saturated red (#C2363B). Same rationale —
10
+ * the common #EE4D4D fails AA at ~2.6:1.
11
+ * - Background = #FAFAFA (slightly off-white, kinder to eyes than pure
12
+ * #FFFFFF for long sessions).
13
+ * - Grid major / minor split: major lines for round-number price tiers,
14
+ * minor for between-tier rhythm. Both very low contrast (1.3:1, 1.1:1)
15
+ * so they don't dominate.
16
+ *
17
+ * Indicator palette: ten qualitatively distinct hues using the Okabe-Ito
18
+ * colorblind-safe set (extended to ten by adding three desaturated mids).
19
+ * Each WCAG AA against the background (>= 3:1 for non-text).
20
+ */
21
+ import type { Theme } from './types';
22
+ export declare const lightTheme: Theme;
23
+ //# sourceMappingURL=theme-light.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-light.d.ts","sourceRoot":"","sources":["../../src/tokens/theme-light.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,eAAO,MAAM,UAAU,EAAE,KAkOxB,CAAA"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Light theme — concrete token values.
3
+ *
4
+ * Color choices:
5
+ *
6
+ * - Bull (up) = a dark saturated green (#0F8B5C). Picked to clear the
7
+ * WCAG AA non-text threshold (≥ 3:1) against #FAFAFA. The lighter
8
+ * industry-standard greens like #26A69A fail that bar by ~25 %.
9
+ * - Bear (down) = a dark saturated red (#C2363B). Same rationale —
10
+ * the common #EE4D4D fails AA at ~2.6:1.
11
+ * - Background = #FAFAFA (slightly off-white, kinder to eyes than pure
12
+ * #FFFFFF for long sessions).
13
+ * - Grid major / minor split: major lines for round-number price tiers,
14
+ * minor for between-tier rhythm. Both very low contrast (1.3:1, 1.1:1)
15
+ * so they don't dominate.
16
+ *
17
+ * Indicator palette: ten qualitatively distinct hues using the Okabe-Ito
18
+ * colorblind-safe set (extended to ten by adding three desaturated mids).
19
+ * Each WCAG AA against the background (>= 3:1 for non-text).
20
+ */
21
+ export const lightTheme = {
22
+ name: 'light',
23
+ colors: {
24
+ background: '#FAFAFA',
25
+ foreground: '#1F1F1F',
26
+ chartBackground: '#FFFFFF',
27
+ candleUpBody: '#0F8B5C',
28
+ candleUpBorder: '#0F8B5C',
29
+ candleUpWick: '#0F8B5C',
30
+ candleDownBody: '#C2363B',
31
+ candleDownBorder: '#C2363B',
32
+ candleDownWick: '#C2363B',
33
+ candleDojiBorder: '#6E6E6E',
34
+ volumeUp: '#0F8B5C66', // 40% alpha — paired with candleUp
35
+ volumeDown: '#C2363B66',
36
+ axisText: '#5A5A5A',
37
+ axisLine: '#D0D0D0',
38
+ axisTick: '#D0D0D0',
39
+ gridMajor: '#E5E5E5',
40
+ gridMinor: '#F0F0F0',
41
+ crosshairLine: '#8C8C8C',
42
+ crosshairLabelBg: '#1F1F1F',
43
+ crosshairLabelText: '#FAFAFA',
44
+ selectionFill: '#2D7FF933',
45
+ selectionStroke: '#2D7FF9',
46
+ tooltipBg: '#FFFFFFEE',
47
+ tooltipText: '#1F1F1F',
48
+ tooltipBorder: '#D0D0D0',
49
+ heatmapColdest: '#F0F4F8',
50
+ heatmapHottest: '#1F3A5F',
51
+ volumeProfileFill: '#9CA3AF66',
52
+ volumeProfilePoc: '#F97316',
53
+ volumeProfileValueArea: '#2D7FF933',
54
+ footprintAsk: '#0F8B5C80',
55
+ footprintBid: '#C2363B80',
56
+ footprintImbalance: '#F97316',
57
+ alertActive: '#2D7FF9',
58
+ // alertTriggered: orange #F97316 was 2.69:1 on white (fails AA
59
+ // non-text). Darkened to #C2410C → 4.13:1.
60
+ alertTriggered: '#C2410C',
61
+ alertMuted: '#9CA3AF',
62
+ avwapLine: '#7C3AED',
63
+ avwapBand: '#7C3AED33',
64
+ // mtfOverlay: sky #0EA5E9 was 2.66:1 on white. Darkened to
65
+ // #0369A1 → 4.59:1.
66
+ mtfOverlay: '#0369A1',
67
+ palette: {
68
+ // Okabe-Ito-derived qualitative scale, AA on #FAFAFA
69
+ i1: '#0072B2', // strong blue
70
+ i2: '#E69F00', // amber
71
+ i3: '#009E73', // teal-green
72
+ i4: '#CC79A7', // pink
73
+ i5: '#D55E00', // burnt orange
74
+ i6: '#56B4E9', // sky
75
+ i7: '#F0E442', // yellow (use sparingly — low contrast)
76
+ i8: '#7C3AED', // purple
77
+ i9: '#2D7FF9', // blue
78
+ i10: '#6E6E6E', // neutral gray
79
+ indicatorAtr: '#d97706',
80
+ },
81
+ // ── Legacy indicator colours (from engine/theme/colors) ──
82
+ text: {
83
+ primary: 'hsl(210, 9%, 31%)',
84
+ secondary: 'hsl(210, 9%, 35%)',
85
+ tertiary: 'hsl(210, 8%, 50%)',
86
+ weak: 'hsl(210, 7%, 65%)',
87
+ white: 'rgba(255, 255, 255, 0.92)',
88
+ },
89
+ price: {
90
+ upLight: 'rgba(214, 10, 34, 0.92)',
91
+ upTick: 'hsl(0, 60%, 50%)',
92
+ downLight: 'rgba(3, 123, 102, 0.92)',
93
+ downTick: 'hsl(150, 30%, 60%)',
94
+ lastPrice: 'rgba(196, 74, 86, 0.95)',
95
+ },
96
+ tagBg: {
97
+ white: 'rgb(255, 255, 255)',
98
+ lightGray: 'rgba(255, 255, 255, 0.92)',
99
+ pureWhite: '#ffffff',
100
+ transparent: 'transparent',
101
+ active: '#1890ff',
102
+ activeHover: '#40a9ff',
103
+ hover: '#f0f0f0',
104
+ },
105
+ border: {
106
+ dark: 'rgba(0, 0, 0, 0.12)',
107
+ medium: 'rgba(0, 0, 0, 0.10)',
108
+ light: 'rgba(0, 0, 0, 0.08)',
109
+ separator: 'rgba(0, 0, 0, 0.10)',
110
+ button: '#d0d0d0',
111
+ chart: '#e5e5e5',
112
+ },
113
+ ma: {
114
+ ma5: 'rgba(255, 193, 37, 1)',
115
+ ma10: 'rgba(190, 131, 12, 1)',
116
+ ma20: 'rgba(69, 112, 249, 1)',
117
+ ma30: 'rgba(76, 175, 80, 1)',
118
+ ma60: 'rgba(156, 39, 176, 1)',
119
+ },
120
+ boll: {
121
+ upper: 'rgba(178, 34, 34, 1)',
122
+ middle: 'rgba(69, 112, 249, 1)',
123
+ lower: 'rgba(34, 139, 34, 1)',
124
+ bandFill: 'rgba(100, 149, 237, 0.1)',
125
+ },
126
+ macd: {
127
+ dif: 'rgba(69, 112, 249, 1)',
128
+ dea: 'rgba(255, 152, 0, 1)',
129
+ barUp: '#ff5252',
130
+ barUpLight: '#fccbcd',
131
+ barDown: '#22ab94',
132
+ barDownLight: '#ace5dc',
133
+ },
134
+ rsi: {
135
+ rsi1: 'rgba(69, 112, 249, 1)',
136
+ rsi2: 'rgba(255, 152, 0, 1)',
137
+ rsi3: 'rgba(156, 39, 176, 1)',
138
+ },
139
+ cci: {
140
+ cci: 'rgba(69, 112, 249, 1)',
141
+ overbought: 'rgba(214, 10, 34, 0.5)',
142
+ oversold: 'rgba(3, 123, 102, 0.5)',
143
+ },
144
+ kdj: {
145
+ k: 'rgba(69, 112, 249, 1)',
146
+ d: 'rgba(255, 152, 0, 1)',
147
+ j: 'rgba(156, 39, 176, 1)',
148
+ },
149
+ mom: {
150
+ mom: 'rgba(69, 112, 249, 1)',
151
+ zero: 'rgba(0, 0, 0, 0.2)',
152
+ },
153
+ wmsr: {
154
+ wmsr: 'rgba(69, 112, 249, 1)',
155
+ overbought: 'rgba(214, 10, 34, 0.5)',
156
+ oversold: 'rgba(3, 123, 102, 0.5)',
157
+ },
158
+ kst: {
159
+ kst: 'rgba(69, 112, 249, 1)',
160
+ signal: 'rgba(255, 152, 0, 1)',
161
+ },
162
+ expma: {
163
+ fast: 'rgba(255, 152, 0, 1)',
164
+ slow: 'rgba(69, 112, 249, 1)',
165
+ },
166
+ ene: {
167
+ upper: 'rgba(214, 10, 34, 1)',
168
+ middle: 'rgba(69, 112, 249, 1)',
169
+ lower: 'rgba(3, 123, 102, 1)',
170
+ bandFill: 'rgba(69, 112, 249, 0.08)',
171
+ },
172
+ label: {
173
+ bg: 'rgba(0, 0, 0, 0.8)',
174
+ text: '#ffffff',
175
+ },
176
+ lastPriceLabel: {
177
+ bg: 'rgba(255, 247, 248, 0.98)',
178
+ },
179
+ volumePrice: {
180
+ riseWith: '#FF4444',
181
+ riseWithout: '#00C853',
182
+ fallWith: '#FF4444',
183
+ fallWithout: '#00C853',
184
+ },
185
+ structure: {
186
+ hh: '#16a34a',
187
+ hl: '#22c55e',
188
+ lh: '#dc2626',
189
+ ll: '#ef4444',
190
+ choch: '#8b5cf6',
191
+ bos: '#f59e0b',
192
+ },
193
+ zones: {
194
+ fvgBullFill: 'rgba(34, 197, 94, 0.15)',
195
+ fvgBearFill: 'rgba(239, 68, 68, 0.15)',
196
+ fvgBullBorder: 'rgba(34, 197, 94, 0.6)',
197
+ fvgBearBorder: 'rgba(239, 68, 68, 0.6)',
198
+ obBullFill: 'rgba(34, 197, 94, 0.25)',
199
+ obBearFill: 'rgba(239, 68, 68, 0.25)',
200
+ },
201
+ wmsrGrid: 'rgba(0, 0, 0, 0.1)',
202
+ },
203
+ spacing: {
204
+ none: '0',
205
+ xxs: '2px',
206
+ xs: '4px',
207
+ sm: '8px',
208
+ md: '12px',
209
+ lg: '16px',
210
+ xl: '24px',
211
+ xxl: '32px',
212
+ xxxl: '64px',
213
+ },
214
+ typography: {
215
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
216
+ fontFamilyMono: "ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace",
217
+ fontSizeSm: '10px',
218
+ fontSizeMd: '12px',
219
+ fontSizeLg: '14px',
220
+ fontWeightRegular: 400,
221
+ fontWeightMedium: 500,
222
+ fontWeightBold: 700,
223
+ lineHeightTight: 1.2,
224
+ lineHeightStandard: 1.4,
225
+ },
226
+ motion: {
227
+ durationInstant: '0ms',
228
+ durationFast: '120ms',
229
+ durationModerate: '200ms',
230
+ easingStandard: 'cubic-bezier(0.4, 0, 0.2, 1)',
231
+ easingDecelerate: 'cubic-bezier(0, 0, 0.2, 1)',
232
+ },
233
+ };
234
+ //# sourceMappingURL=theme-light.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-light.js","sourceRoot":"","sources":["../../src/tokens/theme-light.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Theme → CSS custom-property emitter.
3
+ *
4
+ * Bridges the typed tokens in `theme-light.ts` / `theme-dark.ts` to the
5
+ * actual stylesheet, so any framework can apply a theme by inserting a
6
+ * `:root { ... }` block or attaching a `style="..."` attribute.
7
+ *
8
+ * Naming convention (kebab-case, dot-paths flattened with `-`):
9
+ *
10
+ * Theme key CSS variable
11
+ * ─────────────────────────────────────── ────────────────────────────
12
+ * colors.background `--klc-color-background`
13
+ * colors.candleUpBody `--klc-color-candle-up-body`
14
+ * colors.palette.i1 `--klc-color-palette-i1`
15
+ * spacing.md `--klc-spacing-md`
16
+ * typography.fontFamily `--klc-typography-font-family`
17
+ * typography.fontWeightRegular `--klc-typography-font-weight-regular`
18
+ * motion.durationFast `--klc-motion-duration-fast`
19
+ *
20
+ * Numeric tokens (font weights, line heights) emit as strings — CSS doesn't
21
+ * care, and consumers consume them through `var(...)` so the type tag is
22
+ * lost in the round-trip anyway.
23
+ *
24
+ * Prefix is configurable. Default `--klc-` (KLineChart Quant) is short
25
+ * enough to type and unique enough to coexist with other token systems
26
+ * (Tailwind, MUI, Radix) on the same page.
27
+ */
28
+ import type { Theme } from './types';
29
+ export interface ThemeToCssVarsOptions {
30
+ /**
31
+ * CSS custom-property prefix. Default `'--klc-'`. Must start with `--`.
32
+ * Including the trailing dash is recommended (kebab-case continues
33
+ * cleanly from there).
34
+ */
35
+ readonly prefix?: string;
36
+ }
37
+ /**
38
+ * camelCase → kebab-case.
39
+ *
40
+ * 'candleUpBody' → 'candle-up-body'
41
+ * 'fontWeightRegular' → 'font-weight-regular'
42
+ * 'i1' → 'i1' (already kebab-safe)
43
+ */
44
+ export declare function camelToKebab(s: string): string;
45
+ /**
46
+ * Emit a `{ [cssVarName]: value }` map for the given theme.
47
+ *
48
+ * Hand the result to:
49
+ *
50
+ * - React: `<div style={vars as React.CSSProperties}>...`
51
+ * - Vue: `:style="vars"`
52
+ * - Angular: `[ngStyle]="vars"`
53
+ * - Vanilla: `Object.assign(el.style, vars)` or emit
54
+ * `':root { ... }'` directly via {@link toCssDeclarationBlock}.
55
+ *
56
+ * The shape is stable: the same theme produces the same map across calls,
57
+ * and `mergeTheme(base, override)` produces a superset emit (keys are the
58
+ * same; values may differ).
59
+ */
60
+ export declare function themeToCssVars(theme: Theme, opts?: ThemeToCssVarsOptions): Record<string, string>;
61
+ /**
62
+ * Render the emitted map as a `:root { ... }` CSS declaration block.
63
+ * Useful for SSR scenarios where you want to inject a `<style>` element
64
+ * server-side so the first paint already carries the theme.
65
+ *
66
+ * const css = toCssDeclarationBlock(themeToCssVars(darkTheme))
67
+ * // → ":root {\n --klc-color-background: #0E1116;\n ...\n}"
68
+ *
69
+ * The selector defaults to `:root` but can be overridden — common
70
+ * alternatives are `[data-theme="dark"]` for runtime theme switching
71
+ * or `.klc-theme-dark` for scoped overrides.
72
+ */
73
+ export declare function toCssDeclarationBlock(vars: Record<string, string>, selector?: string): string;
74
+ //# sourceMappingURL=themeToCssVars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeToCssVars.d.ts","sourceRoot":"","sources":["../../src/tokens/themeToCssVars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,MAAM,WAAW,qBAAqB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAC3B;AAID;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAgCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,qBAAqB,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,QAAQ,GAAE,MAAgB,GAC3B,MAAM,CAKR"}