@363045841yyt/klinechart-core 0.7.6 → 0.7.8

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 (191) hide show
  1. package/dist/config/chartSettings.d.ts +27 -2
  2. package/dist/config/chartSettings.d.ts.map +1 -1
  3. package/dist/config/chartSettings.js +6 -0
  4. package/dist/config/chartSettings.js.map +1 -1
  5. package/dist/engine/chart.d.ts.map +1 -1
  6. package/dist/engine/chart.js +4 -0
  7. package/dist/engine/chart.js.map +1 -1
  8. package/dist/engine/draw/pixelAlign.d.ts.map +1 -1
  9. package/dist/engine/draw/pixelAlign.js.map +1 -1
  10. package/dist/engine/drawing/plugin.js +1 -1
  11. package/dist/engine/drawing/plugin.js.map +1 -1
  12. package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
  13. package/dist/engine/renderers/Indicator/atr.js +7 -4
  14. package/dist/engine/renderers/Indicator/atr.js.map +1 -1
  15. package/dist/engine/renderers/Indicator/boll.js +12 -12
  16. package/dist/engine/renderers/Indicator/boll.js.map +1 -1
  17. package/dist/engine/renderers/Indicator/cci.d.ts +1 -2
  18. package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
  19. package/dist/engine/renderers/Indicator/cci.js +9 -9
  20. package/dist/engine/renderers/Indicator/cci.js.map +1 -1
  21. package/dist/engine/renderers/Indicator/ene.js +12 -12
  22. package/dist/engine/renderers/Indicator/ene.js.map +1 -1
  23. package/dist/engine/renderers/Indicator/expma.js +6 -6
  24. package/dist/engine/renderers/Indicator/expma.js.map +1 -1
  25. package/dist/engine/renderers/Indicator/fastk.d.ts +1 -2
  26. package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
  27. package/dist/engine/renderers/Indicator/fastk.js +7 -7
  28. package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
  29. package/dist/engine/renderers/Indicator/kst.d.ts +1 -2
  30. package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
  31. package/dist/engine/renderers/Indicator/kst.js +10 -10
  32. package/dist/engine/renderers/Indicator/kst.js.map +1 -1
  33. package/dist/engine/renderers/Indicator/ma.js +5 -5
  34. package/dist/engine/renderers/Indicator/ma.js.map +1 -1
  35. package/dist/engine/renderers/Indicator/macd.d.ts +1 -2
  36. package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -1
  37. package/dist/engine/renderers/Indicator/macd.js +24 -24
  38. package/dist/engine/renderers/Indicator/macd.js.map +1 -1
  39. package/dist/engine/renderers/Indicator/macdLegend.js +6 -6
  40. package/dist/engine/renderers/Indicator/macdLegend.js.map +1 -1
  41. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +16 -16
  42. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
  43. package/dist/engine/renderers/Indicator/mom.d.ts +1 -2
  44. package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
  45. package/dist/engine/renderers/Indicator/mom.js +8 -8
  46. package/dist/engine/renderers/Indicator/mom.js.map +1 -1
  47. package/dist/engine/renderers/Indicator/rsi.d.ts +2 -3
  48. package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
  49. package/dist/engine/renderers/Indicator/rsi.js +19 -15
  50. package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
  51. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +1 -2
  52. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -1
  53. package/dist/engine/renderers/Indicator/scale/indicator_scale.js +5 -5
  54. package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -1
  55. package/dist/engine/renderers/Indicator/stoch.d.ts +1 -2
  56. package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
  57. package/dist/engine/renderers/Indicator/stoch.js +10 -10
  58. package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
  59. package/dist/engine/renderers/Indicator/structure.js +5 -5
  60. package/dist/engine/renderers/Indicator/structure.js.map +1 -1
  61. package/dist/engine/renderers/Indicator/wmsr.d.ts +1 -2
  62. package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
  63. package/dist/engine/renderers/Indicator/wmsr.js +10 -10
  64. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
  65. package/dist/engine/renderers/Indicator/zones.js +6 -6
  66. package/dist/engine/renderers/Indicator/zones.js.map +1 -1
  67. package/dist/engine/renderers/candle.d.ts +1 -1
  68. package/dist/engine/renderers/candle.d.ts.map +1 -1
  69. package/dist/engine/renderers/candle.js +21 -21
  70. package/dist/engine/renderers/candle.js.map +1 -1
  71. package/dist/engine/renderers/crosshair.js +3 -3
  72. package/dist/engine/renderers/crosshair.js.map +1 -1
  73. package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -1
  74. package/dist/engine/renderers/extremaMarkers.js +12 -12
  75. package/dist/engine/renderers/extremaMarkers.js.map +1 -1
  76. package/dist/engine/renderers/gridLines.js +3 -3
  77. package/dist/engine/renderers/gridLines.js.map +1 -1
  78. package/dist/engine/renderers/lastPrice.js +7 -7
  79. package/dist/engine/renderers/lastPrice.js.map +1 -1
  80. package/dist/engine/renderers/paneTitle.js +6 -6
  81. package/dist/engine/renderers/paneTitle.js.map +1 -1
  82. package/dist/engine/renderers/subVolume.d.ts.map +1 -1
  83. package/dist/engine/renderers/subVolume.js +23 -20
  84. package/dist/engine/renderers/subVolume.js.map +1 -1
  85. package/dist/engine/renderers/timeAxis.js +9 -9
  86. package/dist/engine/renderers/timeAxis.js.map +1 -1
  87. package/dist/engine/renderers/webgl/candleSurface.d.ts.map +1 -1
  88. package/dist/engine/renderers/webgl/candleSurface.js +39 -7
  89. package/dist/engine/renderers/webgl/candleSurface.js.map +1 -1
  90. package/dist/engine/renderers/yAxis.d.ts.map +1 -1
  91. package/dist/engine/renderers/yAxis.js +5 -5
  92. package/dist/engine/renderers/yAxis.js.map +1 -1
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +1 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/plugin/types.d.ts +5 -1
  98. package/dist/plugin/types.d.ts.map +1 -1
  99. package/dist/plugin/types.js.map +1 -1
  100. package/dist/tokens/colorPresetSettings.d.ts +15 -0
  101. package/dist/tokens/colorPresetSettings.d.ts.map +1 -0
  102. package/dist/tokens/colorPresetSettings.js +65 -0
  103. package/dist/tokens/colorPresetSettings.js.map +1 -0
  104. package/dist/tokens/index.d.ts +17 -0
  105. package/dist/tokens/index.d.ts.map +1 -0
  106. package/dist/tokens/index.js +16 -0
  107. package/dist/tokens/index.js.map +1 -0
  108. package/dist/tokens/mergeTheme.d.ts +17 -0
  109. package/dist/tokens/mergeTheme.d.ts.map +1 -0
  110. package/dist/tokens/mergeTheme.js +43 -0
  111. package/dist/tokens/mergeTheme.js.map +1 -0
  112. package/dist/tokens/theme-china.d.ts +45 -0
  113. package/dist/tokens/theme-china.d.ts.map +1 -0
  114. package/dist/tokens/theme-china.js +116 -0
  115. package/dist/tokens/theme-china.js.map +1 -0
  116. package/dist/tokens/theme-dark.d.ts +21 -0
  117. package/dist/tokens/theme-dark.d.ts.map +1 -0
  118. package/dist/tokens/theme-dark.js +228 -0
  119. package/dist/tokens/theme-dark.js.map +1 -0
  120. package/dist/tokens/theme-light.d.ts +23 -0
  121. package/dist/tokens/theme-light.d.ts.map +1 -0
  122. package/dist/tokens/theme-light.js +234 -0
  123. package/dist/tokens/theme-light.js.map +1 -0
  124. package/dist/tokens/themeToCssVars.d.ts +74 -0
  125. package/dist/tokens/themeToCssVars.d.ts.map +1 -0
  126. package/dist/tokens/themeToCssVars.js +108 -0
  127. package/dist/tokens/themeToCssVars.js.map +1 -0
  128. package/dist/tokens/types.d.ts +335 -0
  129. package/dist/tokens/types.d.ts.map +1 -0
  130. package/dist/tokens/types.js +20 -0
  131. package/dist/tokens/types.js.map +1 -0
  132. package/dist/utils/kLineDraw/axis.d.ts +8 -7
  133. package/dist/utils/kLineDraw/axis.d.ts.map +1 -1
  134. package/dist/utils/kLineDraw/axis.js +24 -24
  135. package/dist/utils/kLineDraw/axis.js.map +1 -1
  136. package/dist/version.d.ts +1 -1
  137. package/dist/version.js +1 -1
  138. package/package.json +1 -1
  139. package/src/config/chartSettings.ts +11 -2
  140. package/src/engine/chart.ts +4 -0
  141. package/src/engine/draw/pixelAlign.ts +0 -2
  142. package/src/engine/drawing/plugin.ts +1 -1
  143. package/src/engine/renderers/Indicator/atr.ts +7 -3
  144. package/src/engine/renderers/Indicator/boll.ts +12 -12
  145. package/src/engine/renderers/Indicator/cci.ts +11 -10
  146. package/src/engine/renderers/Indicator/ene.ts +12 -12
  147. package/src/engine/renderers/Indicator/expma.ts +6 -6
  148. package/src/engine/renderers/Indicator/fastk.ts +9 -8
  149. package/src/engine/renderers/Indicator/kst.ts +12 -11
  150. package/src/engine/renderers/Indicator/ma.ts +5 -5
  151. package/src/engine/renderers/Indicator/macd.ts +27 -25
  152. package/src/engine/renderers/Indicator/macdLegend.ts +6 -6
  153. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +16 -16
  154. package/src/engine/renderers/Indicator/mom.ts +11 -10
  155. package/src/engine/renderers/Indicator/rsi.ts +22 -15
  156. package/src/engine/renderers/Indicator/scale/indicator_scale.ts +6 -6
  157. package/src/engine/renderers/Indicator/stoch.ts +12 -11
  158. package/src/engine/renderers/Indicator/structure.ts +5 -5
  159. package/src/engine/renderers/Indicator/wmsr.ts +13 -12
  160. package/src/engine/renderers/Indicator/zones.ts +7 -7
  161. package/src/engine/renderers/candle.ts +21 -21
  162. package/src/engine/renderers/crosshair.ts +3 -3
  163. package/src/engine/renderers/extremaMarkers.ts +13 -12
  164. package/src/engine/renderers/gridLines.ts +3 -3
  165. package/src/engine/renderers/lastPrice.ts +7 -7
  166. package/src/engine/renderers/paneTitle.ts +6 -6
  167. package/src/engine/renderers/subVolume.ts +23 -20
  168. package/src/engine/renderers/timeAxis.ts +9 -9
  169. package/src/engine/renderers/webgl/candleSurface.ts +43 -7
  170. package/src/engine/renderers/yAxis.ts +6 -5
  171. package/src/index.ts +1 -0
  172. package/src/plugin/types.ts +5 -1
  173. package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +393 -0
  174. package/src/tokens/__tests__/baseline.test.ts +183 -0
  175. package/src/tokens/__tests__/themeToCssVars.test.ts +175 -0
  176. package/src/tokens/__tests__/tokens.test.ts +215 -0
  177. package/src/tokens/colorPresetSettings.ts +128 -0
  178. package/src/tokens/index.ts +65 -0
  179. package/src/tokens/mergeTheme.ts +48 -0
  180. package/src/tokens/theme-china.ts +132 -0
  181. package/src/tokens/theme-dark.ts +244 -0
  182. package/src/tokens/theme-light.ts +250 -0
  183. package/src/tokens/themeToCssVars.ts +138 -0
  184. package/src/tokens/types.ts +394 -0
  185. package/src/utils/kLineDraw/axis.ts +31 -30
  186. package/src/version.ts +1 -1
  187. package/dist/engine/theme/colors.d.ts +0 -223
  188. package/dist/engine/theme/colors.d.ts.map +0 -1
  189. package/dist/engine/theme/colors.js +0 -375
  190. package/dist/engine/theme/colors.js.map +0 -1
  191. 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"}