theme.ts

  1export type Color = string;
  2export type Weight =
  3  | "thin"
  4  | "extra_light"
  5  | "light"
  6  | "normal"
  7  | "medium"
  8  | "semibold"
  9  | "bold"
 10  | "extra_bold"
 11  | "black";
 12
 13interface SyntaxHighlightStyle {
 14  color: { value: Color };
 15  weight: { value: Weight };
 16}
 17
 18interface Player {
 19  baseColor: {
 20    value: Color;
 21  };
 22  cursorColor: {
 23    value: Color;
 24  };
 25  selectionColor: {
 26    value: Color;
 27  };
 28  borderColor: {
 29    value: Color;
 30  };
 31}
 32
 33export interface BackgroundColor {
 34  base: {
 35    value: Color;
 36  };
 37  hovered: {
 38    value: Color;
 39  };
 40  active: {
 41    value: Color;
 42  };
 43  focused: {
 44    value: Color;
 45  };
 46}
 47
 48export default interface Theme {
 49  backgroundColor: {
 50    100: BackgroundColor;
 51    300: BackgroundColor;
 52    500: BackgroundColor;
 53    ok: BackgroundColor;
 54    error: BackgroundColor;
 55    warning: BackgroundColor;
 56    info: BackgroundColor;
 57  };
 58  borderColor: {
 59    primary: {
 60      value: Color;
 61    };
 62    secondary: {
 63      value: Color;
 64    };
 65    muted: {
 66      value: Color;
 67    };
 68    focused: {
 69      value: Color;
 70    };
 71    active: {
 72      value: Color;
 73    };
 74  };
 75  textColor: {
 76    primary: {
 77      value: Color;
 78    };
 79    secondary: {
 80      value: Color;
 81    };
 82    muted: {
 83      value: Color;
 84    };
 85    placeholder: {
 86      value: Color;
 87    };
 88    active: {
 89      value: Color;
 90    };
 91    feature: {
 92      value: Color;
 93    };
 94    ok: {
 95      value: Color;
 96    };
 97    error: {
 98      value: Color;
 99    };
100    warning: {
101      value: Color;
102    };
103    info: {
104      value: Color;
105    };
106  };
107  iconColor: {
108    primary: {
109      value: Color;
110    };
111    secondary: {
112      value: Color;
113    };
114    muted: {
115      value: Color;
116    };
117    placeholder: {
118      value: Color;
119    };
120    active: {
121      value: Color;
122    };
123    feature: {
124      value: Color;
125    };
126    ok: {
127      value: Color;
128    };
129    error: {
130      value: Color;
131    };
132    warning: {
133      value: Color;
134    };
135    info: {
136      value: Color;
137    };
138  };
139  editor: {
140    background: {
141      value: Color;
142    };
143    indent_guide: {
144      value: Color;
145    };
146    indent_guide_active: {
147      value: Color;
148    };
149    line: {
150      active: {
151        value: Color;
152      };
153      highlighted: {
154        value: Color;
155      };
156      inserted: {
157        value: Color;
158      };
159      deleted: {
160        value: Color;
161      };
162      modified: {
163        value: Color;
164      };
165    };
166    highlight: {
167      selection: {
168        value: Color;
169      };
170      occurrence: {
171        value: Color;
172      };
173      activeOccurrence: {
174        value: Color;
175      };
176      matchingBracket: {
177        value: Color;
178      };
179      match: {
180        value: Color;
181      };
182      activeMatch: {
183        value: Color;
184      };
185      related: {
186        value: Color;
187      };
188    };
189    gutter: {
190      primary: {
191        value: Color;
192      };
193      active: {
194        value: Color;
195      };
196    };
197  };
198
199  syntax: {
200    primary: SyntaxHighlightStyle;
201    comment: SyntaxHighlightStyle;
202    punctuation: SyntaxHighlightStyle;
203    constant: SyntaxHighlightStyle;
204    keyword: SyntaxHighlightStyle;
205    function: SyntaxHighlightStyle;
206    type: SyntaxHighlightStyle;
207    variant: SyntaxHighlightStyle;
208    property: SyntaxHighlightStyle;
209    enum: SyntaxHighlightStyle;
210    operator: SyntaxHighlightStyle;
211    string: SyntaxHighlightStyle;
212    number: SyntaxHighlightStyle;
213    boolean: SyntaxHighlightStyle;
214    predictive: SyntaxHighlightStyle;
215  };
216
217  player: {
218    1: Player;
219    2: Player;
220    3: Player;
221    4: Player;
222    5: Player;
223    6: Player;
224    7: Player;
225    8: Player;
226  };
227  shadowAlpha: {
228    value: number;
229  };
230}