import type { ISeriesTheme } from '../series/interface'; import type { IMarkTheme } from '../typings/spec'; import type { IArcMarkSpec, IAreaMarkSpec, ILineMarkSpec, IRectMarkSpec, ISymbolMarkSpec, ITextMarkSpec, IPathMarkSpec, ILayoutPaddingSpec } from '../typings'; import type { MarkTypeEnum } from '../mark/interface'; import type { IColorKey, IThemeColorScheme } from './color-scheme/interface'; import type { IColor } from '@visactor/vrender-core'; import type { IComponentTheme } from '../component/interface'; import type { ITokenKey, TokenMap } from './token/interface'; import type { ChartType } from '../chart/interface'; export interface ITheme { name?: string; description?: string; type?: 'light' | 'dark'; background?: IColor | IColorKey; padding?: ILayoutPaddingSpec; fontFamily?: string | ITokenKey; token?: TokenMap; colorScheme?: IThemeColorScheme; mark?: IGlobalMarkThemeByType; markByName?: IGlobalMarkThemeByName; series?: ISeriesTheme; animationThreshold?: number; component?: IComponentTheme; chart?: Record>; } export interface IGlobalMarkThemeByType { [MarkTypeEnum.line]?: Partial>; [MarkTypeEnum.symbol]?: Partial>; [MarkTypeEnum.area]?: Partial>; [MarkTypeEnum.rect]?: Partial>; [MarkTypeEnum.arc]?: Partial>; [MarkTypeEnum.text]?: Partial>; [MarkTypeEnum.path]?: Partial>; } export interface IGlobalMarkThemeByName { line?: Partial>; point?: Partial>; area?: Partial>; bar?: Partial>; label?: Partial>; [markName: string]: Partial>; }