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    ok: {
 75      value: Color;
 76    };
 77    error: {
 78      value: Color;
 79    };
 80    warning: {
 81      value: Color;
 82    };
 83    info: {
 84      value: Color;
 85    };
 86  };
 87  textColor: {
 88    primary: {
 89      value: Color;
 90    };
 91    secondary: {
 92      value: Color;
 93    };
 94    muted: {
 95      value: Color;
 96    };
 97    placeholder: {
 98      value: Color;
 99    };
100    active: {
101      value: Color;
102    };
103    feature: {
104      value: Color;
105    };
106    ok: {
107      value: Color;
108    };
109    error: {
110      value: Color;
111    };
112    warning: {
113      value: Color;
114    };
115    info: {
116      value: Color;
117    };
118  };
119  iconColor: {
120    primary: {
121      value: Color;
122    };
123    secondary: {
124      value: Color;
125    };
126    muted: {
127      value: Color;
128    };
129    placeholder: {
130      value: Color;
131    };
132    active: {
133      value: Color;
134    };
135    feature: {
136      value: Color;
137    };
138    ok: {
139      value: Color;
140    };
141    error: {
142      value: Color;
143    };
144    warning: {
145      value: Color;
146    };
147    info: {
148      value: Color;
149    };
150  };
151  editor: {
152    background: {
153      value: Color;
154    };
155    indent_guide: {
156      value: Color;
157    };
158    indent_guide_active: {
159      value: Color;
160    };
161    line: {
162      active: {
163        value: Color;
164      };
165      highlighted: {
166        value: Color;
167      };
168      inserted: {
169        value: Color;
170      };
171      deleted: {
172        value: Color;
173      };
174      modified: {
175        value: Color;
176      };
177    };
178    highlight: {
179      selection: {
180        value: Color;
181      };
182      occurrence: {
183        value: Color;
184      };
185      activeOccurrence: {
186        value: Color;
187      };
188      matchingBracket: {
189        value: Color;
190      };
191      match: {
192        value: Color;
193      };
194      activeMatch: {
195        value: Color;
196      };
197      related: {
198        value: Color;
199      };
200    };
201    gutter: {
202      primary: {
203        value: Color;
204      };
205      active: {
206        value: Color;
207      };
208    };
209  };
210
211  syntax: {
212    primary: SyntaxHighlightStyle;
213    comment: SyntaxHighlightStyle;
214    punctuation: SyntaxHighlightStyle;
215    constant: SyntaxHighlightStyle;
216    keyword: SyntaxHighlightStyle;
217    function: SyntaxHighlightStyle;
218    type: SyntaxHighlightStyle;
219    variant: SyntaxHighlightStyle;
220    property: SyntaxHighlightStyle;
221    enum: SyntaxHighlightStyle;
222    operator: SyntaxHighlightStyle;
223    string: SyntaxHighlightStyle;
224    number: SyntaxHighlightStyle;
225    boolean: SyntaxHighlightStyle;
226    predictive: SyntaxHighlightStyle;
227  };
228
229  player: {
230    1: Player;
231    2: Player;
232    3: Player;
233    4: Player;
234    5: Player;
235    6: Player;
236    7: Player;
237    8: Player;
238  };
239  shadowAlpha: {
240    value: number;
241  };
242}