@363045841yyt/klinechart-core 0.7.6 → 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.
- package/dist/config/chartSettings.d.ts +27 -2
- package/dist/config/chartSettings.d.ts.map +1 -1
- package/dist/config/chartSettings.js +6 -0
- package/dist/config/chartSettings.js.map +1 -1
- package/dist/engine/chart.d.ts.map +1 -1
- package/dist/engine/chart.js +4 -0
- package/dist/engine/chart.js.map +1 -1
- package/dist/engine/draw/pixelAlign.d.ts.map +1 -1
- package/dist/engine/draw/pixelAlign.js.map +1 -1
- package/dist/engine/drawing/plugin.js +1 -1
- package/dist/engine/drawing/plugin.js.map +1 -1
- package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/atr.js +7 -4
- package/dist/engine/renderers/Indicator/atr.js.map +1 -1
- package/dist/engine/renderers/Indicator/boll.js +12 -12
- package/dist/engine/renderers/Indicator/boll.js.map +1 -1
- package/dist/engine/renderers/Indicator/cci.d.ts +1 -2
- package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/cci.js +9 -9
- package/dist/engine/renderers/Indicator/cci.js.map +1 -1
- package/dist/engine/renderers/Indicator/ene.js +12 -12
- package/dist/engine/renderers/Indicator/ene.js.map +1 -1
- package/dist/engine/renderers/Indicator/expma.js +6 -6
- package/dist/engine/renderers/Indicator/expma.js.map +1 -1
- package/dist/engine/renderers/Indicator/fastk.d.ts +1 -2
- package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/fastk.js +7 -7
- package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
- package/dist/engine/renderers/Indicator/kst.d.ts +1 -2
- package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/kst.js +10 -10
- package/dist/engine/renderers/Indicator/kst.js.map +1 -1
- package/dist/engine/renderers/Indicator/ma.js +5 -5
- package/dist/engine/renderers/Indicator/ma.js.map +1 -1
- package/dist/engine/renderers/Indicator/macd.d.ts +1 -2
- package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/macd.js +24 -24
- package/dist/engine/renderers/Indicator/macd.js.map +1 -1
- package/dist/engine/renderers/Indicator/macdLegend.js +6 -6
- package/dist/engine/renderers/Indicator/macdLegend.js.map +1 -1
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +16 -16
- package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
- package/dist/engine/renderers/Indicator/mom.d.ts +1 -2
- package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/mom.js +8 -8
- package/dist/engine/renderers/Indicator/mom.js.map +1 -1
- package/dist/engine/renderers/Indicator/rsi.d.ts +2 -3
- package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/rsi.js +15 -15
- package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
- package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +1 -2
- package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/scale/indicator_scale.js +5 -5
- package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -1
- package/dist/engine/renderers/Indicator/stoch.d.ts +1 -2
- package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/stoch.js +10 -10
- package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
- package/dist/engine/renderers/Indicator/structure.js +5 -5
- package/dist/engine/renderers/Indicator/structure.js.map +1 -1
- package/dist/engine/renderers/Indicator/wmsr.d.ts +1 -2
- package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/wmsr.js +10 -10
- package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
- package/dist/engine/renderers/Indicator/zones.js +6 -6
- package/dist/engine/renderers/Indicator/zones.js.map +1 -1
- package/dist/engine/renderers/candle.d.ts +1 -1
- package/dist/engine/renderers/candle.d.ts.map +1 -1
- package/dist/engine/renderers/candle.js +21 -21
- package/dist/engine/renderers/candle.js.map +1 -1
- package/dist/engine/renderers/crosshair.js +3 -3
- package/dist/engine/renderers/crosshair.js.map +1 -1
- package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -1
- package/dist/engine/renderers/extremaMarkers.js +12 -12
- package/dist/engine/renderers/extremaMarkers.js.map +1 -1
- package/dist/engine/renderers/gridLines.js +3 -3
- package/dist/engine/renderers/gridLines.js.map +1 -1
- package/dist/engine/renderers/lastPrice.js +7 -7
- package/dist/engine/renderers/lastPrice.js.map +1 -1
- package/dist/engine/renderers/paneTitle.js +6 -6
- package/dist/engine/renderers/paneTitle.js.map +1 -1
- package/dist/engine/renderers/subVolume.d.ts.map +1 -1
- package/dist/engine/renderers/subVolume.js +23 -20
- package/dist/engine/renderers/subVolume.js.map +1 -1
- package/dist/engine/renderers/timeAxis.js +9 -9
- package/dist/engine/renderers/timeAxis.js.map +1 -1
- package/dist/engine/renderers/webgl/candleSurface.d.ts.map +1 -1
- package/dist/engine/renderers/webgl/candleSurface.js +39 -7
- package/dist/engine/renderers/webgl/candleSurface.js.map +1 -1
- package/dist/engine/renderers/yAxis.d.ts.map +1 -1
- package/dist/engine/renderers/yAxis.js +5 -5
- package/dist/engine/renderers/yAxis.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin/types.d.ts +5 -1
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/plugin/types.js.map +1 -1
- package/dist/tokens/colorPresetSettings.d.ts +15 -0
- package/dist/tokens/colorPresetSettings.d.ts.map +1 -0
- package/dist/tokens/colorPresetSettings.js +65 -0
- package/dist/tokens/colorPresetSettings.js.map +1 -0
- package/dist/tokens/index.d.ts +17 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +16 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/mergeTheme.d.ts +17 -0
- package/dist/tokens/mergeTheme.d.ts.map +1 -0
- package/dist/tokens/mergeTheme.js +43 -0
- package/dist/tokens/mergeTheme.js.map +1 -0
- package/dist/tokens/theme-china.d.ts +45 -0
- package/dist/tokens/theme-china.d.ts.map +1 -0
- package/dist/tokens/theme-china.js +116 -0
- package/dist/tokens/theme-china.js.map +1 -0
- package/dist/tokens/theme-dark.d.ts +21 -0
- package/dist/tokens/theme-dark.d.ts.map +1 -0
- package/dist/tokens/theme-dark.js +228 -0
- package/dist/tokens/theme-dark.js.map +1 -0
- package/dist/tokens/theme-light.d.ts +23 -0
- package/dist/tokens/theme-light.d.ts.map +1 -0
- package/dist/tokens/theme-light.js +234 -0
- package/dist/tokens/theme-light.js.map +1 -0
- package/dist/tokens/themeToCssVars.d.ts +74 -0
- package/dist/tokens/themeToCssVars.d.ts.map +1 -0
- package/dist/tokens/themeToCssVars.js +108 -0
- package/dist/tokens/themeToCssVars.js.map +1 -0
- package/dist/tokens/types.d.ts +335 -0
- package/dist/tokens/types.d.ts.map +1 -0
- package/dist/tokens/types.js +20 -0
- package/dist/tokens/types.js.map +1 -0
- package/dist/utils/kLineDraw/axis.d.ts +8 -7
- package/dist/utils/kLineDraw/axis.d.ts.map +1 -1
- package/dist/utils/kLineDraw/axis.js +24 -24
- package/dist/utils/kLineDraw/axis.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/config/chartSettings.ts +11 -2
- package/src/engine/chart.ts +4 -0
- package/src/engine/draw/pixelAlign.ts +0 -2
- package/src/engine/drawing/plugin.ts +1 -1
- package/src/engine/renderers/Indicator/atr.ts +7 -3
- package/src/engine/renderers/Indicator/boll.ts +12 -12
- package/src/engine/renderers/Indicator/cci.ts +11 -10
- package/src/engine/renderers/Indicator/ene.ts +12 -12
- package/src/engine/renderers/Indicator/expma.ts +6 -6
- package/src/engine/renderers/Indicator/fastk.ts +9 -8
- package/src/engine/renderers/Indicator/kst.ts +12 -11
- package/src/engine/renderers/Indicator/ma.ts +5 -5
- package/src/engine/renderers/Indicator/macd.ts +27 -25
- package/src/engine/renderers/Indicator/macdLegend.ts +6 -6
- package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +16 -16
- package/src/engine/renderers/Indicator/mom.ts +11 -10
- package/src/engine/renderers/Indicator/rsi.ts +18 -15
- package/src/engine/renderers/Indicator/scale/indicator_scale.ts +6 -6
- package/src/engine/renderers/Indicator/stoch.ts +12 -11
- package/src/engine/renderers/Indicator/structure.ts +5 -5
- package/src/engine/renderers/Indicator/wmsr.ts +13 -12
- package/src/engine/renderers/Indicator/zones.ts +7 -7
- package/src/engine/renderers/candle.ts +21 -21
- package/src/engine/renderers/crosshair.ts +3 -3
- package/src/engine/renderers/extremaMarkers.ts +13 -12
- package/src/engine/renderers/gridLines.ts +3 -3
- package/src/engine/renderers/lastPrice.ts +7 -7
- package/src/engine/renderers/paneTitle.ts +6 -6
- package/src/engine/renderers/subVolume.ts +23 -20
- package/src/engine/renderers/timeAxis.ts +9 -9
- package/src/engine/renderers/webgl/candleSurface.ts +43 -7
- package/src/engine/renderers/yAxis.ts +6 -5
- package/src/index.ts +1 -0
- package/src/plugin/types.ts +5 -1
- package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +393 -0
- package/src/tokens/__tests__/baseline.test.ts +183 -0
- package/src/tokens/__tests__/themeToCssVars.test.ts +175 -0
- package/src/tokens/__tests__/tokens.test.ts +215 -0
- package/src/tokens/colorPresetSettings.ts +128 -0
- package/src/tokens/index.ts +65 -0
- package/src/tokens/mergeTheme.ts +48 -0
- package/src/tokens/theme-china.ts +132 -0
- package/src/tokens/theme-dark.ts +244 -0
- package/src/tokens/theme-light.ts +250 -0
- package/src/tokens/themeToCssVars.ts +138 -0
- package/src/tokens/types.ts +394 -0
- package/src/utils/kLineDraw/axis.ts +31 -30
- package/src/version.ts +1 -1
- package/dist/engine/theme/colors.d.ts +0 -223
- package/dist/engine/theme/colors.d.ts.map +0 -1
- package/dist/engine/theme/colors.js +0 -375
- package/dist/engine/theme/colors.js.map +0 -1
- package/src/engine/theme/colors.ts +0 -642
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme override / merge helper.
|
|
3
|
+
*
|
|
4
|
+
* const myTheme = mergeTheme(lightTheme, {
|
|
5
|
+
* name: 'my-light',
|
|
6
|
+
* colors: { candleUpBody: '#00C896' },
|
|
7
|
+
* })
|
|
8
|
+
*
|
|
9
|
+
* Shallow-merges each top-level token family. Within a family, the
|
|
10
|
+
* override wins for any key it specifies; missing keys fall back to the
|
|
11
|
+
* base. The override's `name` (if provided) wins.
|
|
12
|
+
*
|
|
13
|
+
* Strictly immutable: returns a new theme; the inputs are untouched.
|
|
14
|
+
*/
|
|
15
|
+
import type { Theme, ThemeOverride } from './types';
|
|
16
|
+
export declare function mergeTheme(base: Theme, override: ThemeOverride): Theme;
|
|
17
|
+
//# sourceMappingURL=mergeTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeTheme.d.ts","sourceRoot":"","sources":["../../src/tokens/mergeTheme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAwBnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAQtE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme override / merge helper.
|
|
3
|
+
*
|
|
4
|
+
* const myTheme = mergeTheme(lightTheme, {
|
|
5
|
+
* name: 'my-light',
|
|
6
|
+
* colors: { candleUpBody: '#00C896' },
|
|
7
|
+
* })
|
|
8
|
+
*
|
|
9
|
+
* Shallow-merges each top-level token family. Within a family, the
|
|
10
|
+
* override wins for any key it specifies; missing keys fall back to the
|
|
11
|
+
* base. The override's `name` (if provided) wins.
|
|
12
|
+
*
|
|
13
|
+
* Strictly immutable: returns a new theme; the inputs are untouched.
|
|
14
|
+
*/
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
function isRecord(v) {
|
|
17
|
+
return v !== null && typeof v === 'object';
|
|
18
|
+
}
|
|
19
|
+
function deepMergeColors(base, override) {
|
|
20
|
+
const merged = { ...base };
|
|
21
|
+
if (!override)
|
|
22
|
+
return merged;
|
|
23
|
+
for (const [k, v] of Object.entries(override)) {
|
|
24
|
+
const baseVal = base[k];
|
|
25
|
+
if (isRecord(v) && isRecord(baseVal)) {
|
|
26
|
+
merged[k] = { ...baseVal, ...v };
|
|
27
|
+
}
|
|
28
|
+
else if (v !== undefined) {
|
|
29
|
+
merged[k] = v;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return merged;
|
|
33
|
+
}
|
|
34
|
+
export function mergeTheme(base, override) {
|
|
35
|
+
return {
|
|
36
|
+
name: override.name ?? base.name,
|
|
37
|
+
colors: deepMergeColors(base.colors, override.colors),
|
|
38
|
+
spacing: { ...base.spacing, ...(override.spacing ?? {}) },
|
|
39
|
+
typography: { ...base.typography, ...(override.typography ?? {}) },
|
|
40
|
+
motion: { ...base.motion, ...(override.motion ?? {}) },
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=mergeTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeTheme.js","sourceRoot":"","sources":["../../src/tokens/mergeTheme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,8DAA8D;AAC9D,SAAS,QAAQ,CAAC,CAAU;IACxB,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAA;AAC9C,CAAC;AAED,SAAS,eAAe,CACpB,IAAqB,EACrB,QAA8C;IAE9C,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAwC,CAAA;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAoC,CAAA;IAC1D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAI,IAA2C,CAAC,CAAC,CAAC,CAAA;QAC/D,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,EAAE,CAAA;QACpC,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;IACL,CAAC;IACD,OAAO,MAAoC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAW,EAAE,QAAuB;IAC3D,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;QAChC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;QACrD,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;QACzD,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE;QAClE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;KACzD,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asia-market (Chinese) colour convention helper.
|
|
3
|
+
*
|
|
4
|
+
* Asian markets traditionally use **red for "up"** (bull) and **green
|
|
5
|
+
* for "down"** (bear) — the reverse of the Western convention.
|
|
6
|
+
*
|
|
7
|
+
* {@link withAsiaMarketColors} takes any {@link Theme} and returns a new
|
|
8
|
+
* Theme with all bull/bear colour pairs swapped, so the caller only needs
|
|
9
|
+
* a single boolean (`isAsiaMarket`) to switch conventions at runtime.
|
|
10
|
+
*
|
|
11
|
+
* {@link resolveThemeColors} is a convenience for renderers that currently
|
|
12
|
+
* hard-code `theme === 'dark' ? darkTheme.colors : lightTheme.colors`.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { resolveThemeColors } from '../../tokens'
|
|
17
|
+
*
|
|
18
|
+
* const colors = resolveThemeColors(context.theme, context.isAsiaMarket)
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import type { ColorTokens, Theme } from './types';
|
|
22
|
+
import { type ColorPresetSettings } from './colorPresetSettings';
|
|
23
|
+
/**
|
|
24
|
+
* Swap all bull/bear colour pairs in a Theme so that "up" (bull) uses
|
|
25
|
+
* the formerly "down" (bear) colour and vice versa.
|
|
26
|
+
*
|
|
27
|
+
* @param theme — the base Theme (Western convention)
|
|
28
|
+
* @returns a **new** Theme object; the original is not mutated.
|
|
29
|
+
*/
|
|
30
|
+
export declare function withAsiaMarketColors(theme: Theme): Theme;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve a theme name + optional Asia-market flag into concrete
|
|
33
|
+
* {@link ColorTokens}.
|
|
34
|
+
*
|
|
35
|
+
* Renderers replace this pattern:
|
|
36
|
+
* ```ts
|
|
37
|
+
* const colors = theme === 'dark' ? darkTheme.colors : lightTheme.colors
|
|
38
|
+
* ```
|
|
39
|
+
* with:
|
|
40
|
+
* ```ts
|
|
41
|
+
* const colors = resolveThemeColors(theme, isAsiaMarket)
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveThemeColors(themeName: 'light' | 'dark', isAsiaMarket?: boolean, colorPresetSettings?: ColorPresetSettings): ColorTokens;
|
|
45
|
+
//# sourceMappingURL=theme-china.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-china.d.ts","sourceRoot":"","sources":["../../src/tokens/theme-china.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3F;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CA2ExD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,OAAO,GAAG,MAAM,EAC3B,YAAY,CAAC,EAAE,OAAO,EACtB,mBAAmB,CAAC,EAAE,mBAAmB,GAC1C,WAAW,CAIb"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asia-market (Chinese) colour convention helper.
|
|
3
|
+
*
|
|
4
|
+
* Asian markets traditionally use **red for "up"** (bull) and **green
|
|
5
|
+
* for "down"** (bear) — the reverse of the Western convention.
|
|
6
|
+
*
|
|
7
|
+
* {@link withAsiaMarketColors} takes any {@link Theme} and returns a new
|
|
8
|
+
* Theme with all bull/bear colour pairs swapped, so the caller only needs
|
|
9
|
+
* a single boolean (`isAsiaMarket`) to switch conventions at runtime.
|
|
10
|
+
*
|
|
11
|
+
* {@link resolveThemeColors} is a convenience for renderers that currently
|
|
12
|
+
* hard-code `theme === 'dark' ? darkTheme.colors : lightTheme.colors`.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { resolveThemeColors } from '../../tokens'
|
|
17
|
+
*
|
|
18
|
+
* const colors = resolveThemeColors(context.theme, context.isAsiaMarket)
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { lightTheme } from './theme-light';
|
|
22
|
+
import { darkTheme } from './theme-dark';
|
|
23
|
+
import { applyColorPresetOverrides } from './colorPresetSettings';
|
|
24
|
+
/**
|
|
25
|
+
* Swap all bull/bear colour pairs in a Theme so that "up" (bull) uses
|
|
26
|
+
* the formerly "down" (bear) colour and vice versa.
|
|
27
|
+
*
|
|
28
|
+
* @param theme — the base Theme (Western convention)
|
|
29
|
+
* @returns a **new** Theme object; the original is not mutated.
|
|
30
|
+
*/
|
|
31
|
+
export function withAsiaMarketColors(theme) {
|
|
32
|
+
return {
|
|
33
|
+
...theme,
|
|
34
|
+
colors: {
|
|
35
|
+
...theme.colors,
|
|
36
|
+
// ── Candle / OHLC ──
|
|
37
|
+
candleUpBody: theme.colors.candleDownBody,
|
|
38
|
+
candleDownBody: theme.colors.candleUpBody,
|
|
39
|
+
candleUpBorder: theme.colors.candleDownBorder,
|
|
40
|
+
candleDownBorder: theme.colors.candleUpBorder,
|
|
41
|
+
candleUpWick: theme.colors.candleDownWick,
|
|
42
|
+
candleDownWick: theme.colors.candleUpWick,
|
|
43
|
+
// ── Volume bars ──
|
|
44
|
+
volumeUp: theme.colors.volumeDown,
|
|
45
|
+
volumeDown: theme.colors.volumeUp,
|
|
46
|
+
// ── Footprint (ask = buy = bull, bid = sell = bear) ──
|
|
47
|
+
footprintAsk: theme.colors.footprintBid,
|
|
48
|
+
footprintBid: theme.colors.footprintAsk,
|
|
49
|
+
// ── Nested: price accents ──
|
|
50
|
+
price: {
|
|
51
|
+
...theme.colors.price,
|
|
52
|
+
upLight: theme.colors.price.downLight,
|
|
53
|
+
downLight: theme.colors.price.upLight,
|
|
54
|
+
upTick: theme.colors.price.downTick,
|
|
55
|
+
downTick: theme.colors.price.upTick,
|
|
56
|
+
},
|
|
57
|
+
// ── Nested: MACD histogram bars ──
|
|
58
|
+
macd: {
|
|
59
|
+
...theme.colors.macd,
|
|
60
|
+
barUp: theme.colors.macd.barDown,
|
|
61
|
+
barDown: theme.colors.macd.barUp,
|
|
62
|
+
barUpLight: theme.colors.macd.barDownLight,
|
|
63
|
+
barDownLight: theme.colors.macd.barUpLight,
|
|
64
|
+
},
|
|
65
|
+
// ── Nested: SMC structure (HH/HL = bull, LH/LL = bear) ──
|
|
66
|
+
structure: {
|
|
67
|
+
...theme.colors.structure,
|
|
68
|
+
hh: theme.colors.structure.ll,
|
|
69
|
+
ll: theme.colors.structure.hh,
|
|
70
|
+
hl: theme.colors.structure.lh,
|
|
71
|
+
lh: theme.colors.structure.hl,
|
|
72
|
+
},
|
|
73
|
+
// ── Nested: Zones / FVG / Order Block ──
|
|
74
|
+
zones: {
|
|
75
|
+
...theme.colors.zones,
|
|
76
|
+
fvgBullFill: theme.colors.zones.fvgBearFill,
|
|
77
|
+
fvgBearFill: theme.colors.zones.fvgBullFill,
|
|
78
|
+
fvgBullBorder: theme.colors.zones.fvgBearBorder,
|
|
79
|
+
fvgBearBorder: theme.colors.zones.fvgBullBorder,
|
|
80
|
+
obBullFill: theme.colors.zones.obBearFill,
|
|
81
|
+
obBearFill: theme.colors.zones.obBullFill,
|
|
82
|
+
},
|
|
83
|
+
// ── Nested: CCI overbought (bull) / oversold (bear) ──
|
|
84
|
+
cci: {
|
|
85
|
+
...theme.colors.cci,
|
|
86
|
+
overbought: theme.colors.cci.oversold,
|
|
87
|
+
oversold: theme.colors.cci.overbought,
|
|
88
|
+
},
|
|
89
|
+
// ── Nested: WMSR overbought / oversold ──
|
|
90
|
+
wmsr: {
|
|
91
|
+
...theme.colors.wmsr,
|
|
92
|
+
overbought: theme.colors.wmsr.oversold,
|
|
93
|
+
oversold: theme.colors.wmsr.overbought,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Resolve a theme name + optional Asia-market flag into concrete
|
|
100
|
+
* {@link ColorTokens}.
|
|
101
|
+
*
|
|
102
|
+
* Renderers replace this pattern:
|
|
103
|
+
* ```ts
|
|
104
|
+
* const colors = theme === 'dark' ? darkTheme.colors : lightTheme.colors
|
|
105
|
+
* ```
|
|
106
|
+
* with:
|
|
107
|
+
* ```ts
|
|
108
|
+
* const colors = resolveThemeColors(theme, isAsiaMarket)
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export function resolveThemeColors(themeName, isAsiaMarket, colorPresetSettings) {
|
|
112
|
+
const base = themeName === 'dark' ? darkTheme : lightTheme;
|
|
113
|
+
const active = isAsiaMarket ? withAsiaMarketColors(base) : base;
|
|
114
|
+
return applyColorPresetOverrides(active.colors, themeName, colorPresetSettings);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=theme-china.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-china.js","sourceRoot":"","sources":["../../src/tokens/theme-china.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
import type { Theme } from './types';
|
|
20
|
+
export declare const darkTheme: Theme;
|
|
21
|
+
//# sourceMappingURL=theme-dark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-dark.d.ts","sourceRoot":"","sources":["../../src/tokens/theme-dark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,eAAO,MAAM,SAAS,EAAE,KA8NvB,CAAA"}
|
|
@@ -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"}
|