/**
 * ITheme.ts
 *
 * an interface defining the styling.
 */

export interface IStyle {
  [key: string]: string;
  /** Color */
  Color?: string;
  /** Background color */
  BackgroundColor?: string;
  /** Font weight */
  FontWeight?: string;
  /** Font style */
  FontStyle?: string;
}

export interface ICodeStyle {
  [key: string]: IStyle;
  /** Keyword styles in code */
  Keyword: IStyle;
  /** Comment styles in code */
  Comment: IStyle;
  /** Plaintext styles in code */
  Plaintext: IStyle;
  /** Punctuation styles in code */
  Punctuation: IStyle;
  /** String styles in code */
  String: IStyle;
  /** Literal styles in code */
  Literal: IStyle;
  /** Type styles in code */
  Type: IStyle;
  /** Tag styles in code */
  Tag?: IStyle;
  /** Attribute name styles in code */
  AttributeName?: IStyle;
  /** Attribute value styles in code */
  AttributeValue?: IStyle;
  /** Decimal styles in code */
  Decimal?: IStyle;
  /** No code styles in code */
  NoCode?: IStyle;
}

export interface ITheme {
  [key: string]: ICodeStyle | IStyle | string;
  /** Display name */
  DisplayName: string;
  /** Code styles */
  CodeStyles: ICodeStyle;
  /** Background styles */
  BackgroundStyle: IStyle;
  /** Line number styles */
  LineNumberStyle: IStyle;
}
