theme.ts

  1export interface NumberToken {
  2    value: number,
  3    type: "number"
  4}
  5
  6export type Color = string;
  7export interface ColorToken {
  8    value: Color;
  9    type: "color";
 10    step?: number
 11}
 12export type Weight =
 13    | "thin"
 14    | "extra_light"
 15    | "light"
 16    | "normal"
 17    | "medium"
 18    | "semibold"
 19    | "bold"
 20    | "extra_bold"
 21    | "black";
 22export interface WeightToken {
 23    value: Weight,
 24    type: "fontWeight"
 25}
 26
 27export interface SyntaxHighlightStyle {
 28    color: ColorToken;
 29    weight: WeightToken;
 30}
 31
 32export interface Player {
 33    baseColor: ColorToken;
 34    cursorColor: ColorToken;
 35    selectionColor: ColorToken;
 36    borderColor: ColorToken;
 37}
 38
 39export interface BackgroundColor {
 40    base: ColorToken;
 41    hovered: ColorToken;
 42    active: ColorToken;
 43    focused: ColorToken;
 44}
 45
 46export interface Syntax { 
 47    primary: SyntaxHighlightStyle;
 48    comment: SyntaxHighlightStyle;
 49    punctuation: SyntaxHighlightStyle;
 50    constant: SyntaxHighlightStyle;
 51    keyword: SyntaxHighlightStyle;
 52    function: SyntaxHighlightStyle;
 53    type: SyntaxHighlightStyle;
 54    variant: SyntaxHighlightStyle;
 55    property: SyntaxHighlightStyle;
 56    enum: SyntaxHighlightStyle;
 57    operator: SyntaxHighlightStyle;
 58    string: SyntaxHighlightStyle;
 59    number: SyntaxHighlightStyle;
 60    boolean: SyntaxHighlightStyle;
 61    predictive: SyntaxHighlightStyle;
 62};
 63
 64export default interface Theme {
 65    name: string;
 66    backgroundColor: {
 67        100: BackgroundColor;
 68        300: BackgroundColor;
 69        500: BackgroundColor;
 70        ok: BackgroundColor;
 71        error: BackgroundColor;
 72        warning: BackgroundColor;
 73        info: BackgroundColor;
 74    };
 75    borderColor: {
 76        primary: ColorToken;
 77        secondary: ColorToken;
 78        muted: ColorToken;
 79        focused: ColorToken;
 80        active: ColorToken;
 81        ok: ColorToken;
 82        error: ColorToken;
 83        warning: ColorToken;
 84        info: ColorToken;
 85    };
 86    textColor: {
 87        primary: ColorToken;
 88        secondary: ColorToken;
 89        muted: ColorToken;
 90        placeholder: ColorToken;
 91        active: ColorToken;
 92        feature: ColorToken;
 93        ok: ColorToken;
 94        error: ColorToken;
 95        warning: ColorToken;
 96        info: ColorToken;
 97    };
 98    iconColor: {
 99        primary: ColorToken;
100        secondary: ColorToken;
101        muted: ColorToken;
102        placeholder: ColorToken;
103        active: ColorToken;
104        feature: ColorToken;
105        ok: ColorToken;
106        error: ColorToken;
107        warning: ColorToken;
108        info: ColorToken;
109    };
110    editor: {
111        background: ColorToken;
112        indent_guide: ColorToken;
113        indent_guide_active: ColorToken;
114        line: {
115            active: ColorToken;
116            highlighted: ColorToken;
117            inserted: ColorToken;
118            deleted: ColorToken;
119            modified: ColorToken;
120        };
121        highlight: {
122            selection: ColorToken;
123            occurrence: ColorToken;
124            activeOccurrence: ColorToken;
125            matchingBracket: ColorToken;
126            match: ColorToken;
127            activeMatch: ColorToken;
128            related: ColorToken;
129        };
130        gutter: {
131            primary: ColorToken;
132            active: ColorToken;
133        };
134    };
135
136    syntax: Syntax,
137
138    player: {
139        1: Player;
140        2: Player;
141        3: Player;
142        4: Player;
143        5: Player;
144        6: Player;
145        7: Player;
146        8: Player;
147    };
148    shadowAlpha: NumberToken;
149}