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}