Skip to main content

xei_core/
theme.rs

1use ratatui::style::Color;
2
3/// Syntax + chrome colors for the editor.
4///
5/// Prefer semantic fields (`accent`, `success`, `panel_*`, `mode_*`, `git_*`)
6/// for new UI instead of hard-coded `Color::Rgb` in the TUI.
7#[derive(Debug, Clone, Copy)]
8pub struct Theme {
9    pub name: &'static str,
10    #[allow(dead_code)]
11    pub bg: Color,
12    pub fg: Color,
13    pub keyword: Color,
14    pub string: Color,
15    pub comment: Color,
16    pub number: Color,
17    pub type_name: Color,
18    pub function: Color,
19    pub macro_name: Color,
20    pub namespace: Color,
21    pub parameter: Color,
22    pub property: Color,
23    pub constant: Color,
24    pub operator: Color,
25    pub punctuation: Color,
26    pub line_no: Color,
27    pub editor_bg: Color,
28    pub status_bg: Color,
29    pub status_fg: Color,
30    pub border: Color,
31    pub selection_bg: Color,
32    pub search_bg: Color,
33    pub mode_normal: Color,
34    pub mode_insert: Color,
35    pub mode_visual: Color,
36    pub mode_xlc: Color,
37    pub completion_bg: Color,
38    pub completion_selected: Color,
39    pub completion_border: Color,
40    pub explorer_bg: Color,
41    pub explorer_fg: Color,
42    pub explorer_dir: Color,
43    pub explorer_selected: Color,
44    pub terminal_bg: Color,
45    #[allow(dead_code)]
46    pub terminal_fg: Color,
47    #[allow(dead_code)]
48    pub terminal_prompt: Color,
49    pub xlc_bg: Color,
50    pub xlc_fg: Color,
51    pub xlc_prompt: Color,
52    pub xlc_border: Color,
53    pub cursor: Color,
54    // ── Semantic UI (feature surfaces) ──
55    /// Primary interactive accent (chips, focus borders, links).
56    pub accent: Color,
57    /// Text drawn on `accent` background.
58    pub accent_fg: Color,
59    /// Secondary / dim text (hints, meta).
60    pub muted: Color,
61    /// Positive / staged / success.
62    pub success: Color,
63    /// Warning / modified.
64    pub warning: Color,
65    /// Error / deleted / danger.
66    pub error: Color,
67    /// Popup / context-menu / palette body.
68    pub panel_bg: Color,
69    pub panel_border: Color,
70    /// Selected row inside panels/lists.
71    pub panel_sel_bg: Color,
72    pub panel_sel_fg: Color,
73    /// Status-bar mode chips for non-vim modes.
74    pub mode_git: Color,
75    pub mode_term: Color,
76    pub mode_preview: Color,
77    pub mode_settings: Color,
78    pub mode_search: Color,
79    pub mode_find: Color,
80    /// Diff line backgrounds + hunk header.
81    pub git_add_bg: Color,
82    pub git_del_bg: Color,
83    pub git_hunk: Color,
84}
85
86static THEMES: &[Theme] = &[OCEAN, MONOKAI, NORD, SOLARIZED, GRUVBOX, EVERFOREST, SAKURA, NEWSPAPER, MONO, MONO_DARK];
87
88pub fn all_themes() -> &'static [Theme] {
89    THEMES
90}
91
92pub fn find(name: &str) -> Option<&'static Theme> {
93    THEMES
94        .iter()
95        .find(|t| t.name.to_lowercase() == name.to_lowercase())
96}
97
98// ── OCEAN ──
99pub static OCEAN: Theme = Theme {
100    name: "ocean",
101    bg: Color::Rgb(15, 17, 26),
102    fg: Color::Rgb(200, 210, 220),
103    keyword: Color::Rgb(0, 220, 255),
104    string: Color::Rgb(150, 230, 180),
105    comment: Color::Rgb(96, 108, 122),
106    number: Color::Rgb(255, 180, 130),
107    type_name: Color::Rgb(100, 200, 255),
108    function: Color::Rgb(255, 220, 120),
109    macro_name: Color::Rgb(255, 160, 220),
110    namespace: Color::Rgb(140, 180, 255),
111    parameter: Color::Rgb(200, 180, 140),
112    property: Color::Rgb(130, 210, 200),
113    constant: Color::Rgb(255, 180, 100),
114    operator: Color::Rgb(180, 190, 200),
115    punctuation: Color::Rgb(120, 130, 150),
116    line_no: Color::Rgb(82, 92, 114),
117    editor_bg: Color::Rgb(15, 17, 26),
118    status_bg: Color::Rgb(10, 12, 20),
119    status_fg: Color::Rgb(180, 190, 200),
120    border: Color::Rgb(58, 66, 88),
121    selection_bg: Color::Rgb(52, 66, 110),
122    search_bg: Color::Rgb(104, 88, 26),
123    mode_normal: Color::Rgb(60, 100, 200),
124    mode_insert: Color::Rgb(60, 180, 80),
125    mode_visual: Color::Rgb(180, 80, 200),
126    mode_xlc: Color::Rgb(0, 180, 200),
127    completion_bg: Color::Rgb(25, 28, 38),
128    completion_selected: Color::Rgb(0, 220, 255),
129    completion_border: Color::Rgb(0, 220, 255),
130    explorer_bg: Color::Rgb(12, 14, 22),
131    explorer_fg: Color::Rgb(190, 200, 210),
132    explorer_dir: Color::Rgb(100, 150, 255),
133    explorer_selected: Color::Rgb(0, 220, 255),
134    terminal_bg: Color::Rgb(8, 12, 8),
135    terminal_fg: Color::Rgb(180, 255, 180),
136    terminal_prompt: Color::Green,
137    xlc_bg: Color::Rgb(18, 20, 28),
138    xlc_fg: Color::Gray,
139    xlc_prompt: Color::Green,
140    xlc_border: Color::Rgb(0, 220, 255),
141    cursor: Color::Rgb(200, 200, 220),
142    accent: Color::Rgb(70, 130, 200),
143    accent_fg: Color::Rgb(0, 0, 0),
144    muted: Color::Rgb(100, 110, 130),
145    success: Color::Rgb(100, 200, 140),
146    warning: Color::Rgb(220, 180, 80),
147    error: Color::Rgb(240, 120, 120),
148    panel_bg: Color::Rgb(25, 28, 38),
149    panel_border: Color::Rgb(70, 130, 200),
150    panel_sel_bg: Color::Rgb(45, 70, 100),
151    panel_sel_fg: Color::Rgb(230, 235, 255),
152    mode_git: Color::Rgb(80, 200, 140),
153    mode_term: Color::Rgb(80, 200, 120),
154    mode_preview: Color::Rgb(140, 190, 255),
155    mode_settings: Color::Rgb(160, 150, 220),
156    mode_search: Color::Rgb(230, 200, 80),
157    mode_find: Color::Rgb(100, 180, 255),
158    git_add_bg: Color::Rgb(20, 40, 28),
159    git_del_bg: Color::Rgb(45, 22, 24),
160    git_hunk: Color::Rgb(100, 180, 255),
161};
162
163// ── MONOKAI ──
164pub static MONOKAI: Theme = Theme {
165    name: "monokai",
166    bg: Color::Rgb(39, 40, 34),
167    fg: Color::Rgb(248, 248, 242),
168    keyword: Color::Rgb(249, 38, 114),
169    string: Color::Rgb(230, 219, 116),
170    comment: Color::Rgb(117, 113, 94),
171    number: Color::Rgb(174, 129, 255),
172    type_name: Color::Rgb(166, 226, 46),
173    function: Color::Rgb(166, 226, 46),
174    macro_name: Color::Rgb(102, 217, 239),
175    namespace: Color::Rgb(174, 129, 255),
176    parameter: Color::Rgb(253, 151, 31),
177    property: Color::Rgb(248, 248, 242),
178    constant: Color::Rgb(174, 129, 255),
179    operator: Color::Rgb(249, 38, 114),
180    punctuation: Color::Rgb(117, 113, 94),
181    line_no: Color::Rgb(80, 80, 70),
182    editor_bg: Color::Rgb(39, 40, 34),
183    status_bg: Color::Rgb(30, 31, 26),
184    status_fg: Color::Rgb(200, 200, 195),
185    border: Color::Rgb(70, 70, 60),
186    selection_bg: Color::Rgb(70, 65, 55),
187    search_bg: Color::Rgb(100, 90, 40),
188    mode_normal: Color::Rgb(102, 217, 239),
189    mode_insert: Color::Rgb(166, 226, 46),
190    mode_visual: Color::Rgb(174, 129, 255),
191    mode_xlc: Color::Rgb(249, 38, 114),
192    completion_bg: Color::Rgb(45, 46, 40),
193    completion_selected: Color::Rgb(249, 38, 114),
194    completion_border: Color::Rgb(249, 38, 114),
195    explorer_bg: Color::Rgb(32, 33, 28),
196    explorer_fg: Color::Rgb(240, 240, 235),
197    explorer_dir: Color::Rgb(102, 217, 239),
198    explorer_selected: Color::Rgb(249, 38, 114),
199    terminal_bg: Color::Rgb(30, 31, 26),
200    terminal_fg: Color::Rgb(230, 219, 116),
201    terminal_prompt: Color::Rgb(166, 226, 46),
202    xlc_bg: Color::Rgb(35, 36, 30),
203    xlc_fg: Color::Rgb(180, 180, 170),
204    xlc_prompt: Color::Rgb(166, 226, 46),
205    xlc_border: Color::Rgb(249, 38, 114),
206    cursor: Color::Rgb(248, 248, 242),
207    accent: Color::Rgb(249, 38, 114),
208    accent_fg: Color::Rgb(0, 0, 0),
209    muted: Color::Rgb(117, 113, 94),
210    success: Color::Rgb(166, 226, 46),
211    warning: Color::Rgb(253, 151, 31),
212    error: Color::Rgb(249, 38, 114),
213    panel_bg: Color::Rgb(45, 46, 40),
214    panel_border: Color::Rgb(249, 38, 114),
215    panel_sel_bg: Color::Rgb(70, 45, 55),
216    panel_sel_fg: Color::Rgb(248, 248, 242),
217    mode_git: Color::Rgb(166, 226, 46),
218    mode_term: Color::Rgb(166, 226, 46),
219    mode_preview: Color::Rgb(102, 217, 239),
220    mode_settings: Color::Rgb(174, 129, 255),
221    mode_search: Color::Rgb(230, 219, 116),
222    mode_find: Color::Rgb(102, 217, 239),
223    git_add_bg: Color::Rgb(40, 50, 30),
224    git_del_bg: Color::Rgb(55, 30, 35),
225    git_hunk: Color::Rgb(102, 217, 239),
226};
227
228// ── NORD ──
229pub static NORD: Theme = Theme {
230    name: "nord",
231    bg: Color::Rgb(46, 52, 64),
232    fg: Color::Rgb(216, 222, 233),
233    keyword: Color::Rgb(129, 161, 193),
234    string: Color::Rgb(163, 190, 140),
235    comment: Color::Rgb(97, 110, 124),
236    number: Color::Rgb(180, 142, 173),
237    type_name: Color::Rgb(143, 188, 187),
238    function: Color::Rgb(136, 192, 208),
239    macro_name: Color::Rgb(235, 203, 139),
240    namespace: Color::Rgb(129, 161, 193),
241    parameter: Color::Rgb(208, 135, 112),
242    property: Color::Rgb(216, 222, 233),
243    constant: Color::Rgb(180, 142, 173),
244    operator: Color::Rgb(129, 161, 193),
245    punctuation: Color::Rgb(76, 86, 106),
246    line_no: Color::Rgb(76, 86, 106),
247    editor_bg: Color::Rgb(46, 52, 64),
248    status_bg: Color::Rgb(36, 41, 51),
249    status_fg: Color::Rgb(200, 207, 218),
250    border: Color::Rgb(67, 76, 94),
251    selection_bg: Color::Rgb(60, 68, 88),
252    search_bg: Color::Rgb(100, 90, 50),
253    mode_normal: Color::Rgb(94, 129, 172),
254    mode_insert: Color::Rgb(163, 190, 140),
255    mode_visual: Color::Rgb(180, 142, 173),
256    mode_xlc: Color::Rgb(136, 192, 208),
257    completion_bg: Color::Rgb(52, 58, 70),
258    completion_selected: Color::Rgb(129, 161, 193),
259    completion_border: Color::Rgb(129, 161, 193),
260    explorer_bg: Color::Rgb(40, 45, 56),
261    explorer_fg: Color::Rgb(210, 216, 228),
262    explorer_dir: Color::Rgb(94, 129, 172),
263    explorer_selected: Color::Rgb(129, 161, 193),
264    terminal_bg: Color::Rgb(35, 40, 50),
265    terminal_fg: Color::Rgb(163, 190, 140),
266    terminal_prompt: Color::Rgb(143, 188, 187),
267    xlc_bg: Color::Rgb(42, 48, 58),
268    xlc_fg: Color::Rgb(180, 187, 200),
269    xlc_prompt: Color::Rgb(163, 190, 140),
270    xlc_border: Color::Rgb(129, 161, 193),
271    cursor: Color::Rgb(216, 222, 233),
272    accent: Color::Rgb(129, 161, 193),
273    accent_fg: Color::Rgb(0, 0, 0),
274    muted: Color::Rgb(97, 110, 124),
275    success: Color::Rgb(163, 190, 140),
276    warning: Color::Rgb(235, 203, 139),
277    error: Color::Rgb(191, 97, 106),
278    panel_bg: Color::Rgb(52, 58, 70),
279    panel_border: Color::Rgb(129, 161, 193),
280    panel_sel_bg: Color::Rgb(67, 76, 94),
281    panel_sel_fg: Color::Rgb(236, 239, 244),
282    mode_git: Color::Rgb(163, 190, 140),
283    mode_term: Color::Rgb(143, 188, 187),
284    mode_preview: Color::Rgb(136, 192, 208),
285    mode_settings: Color::Rgb(180, 142, 173),
286    mode_search: Color::Rgb(235, 203, 139),
287    mode_find: Color::Rgb(94, 129, 172),
288    git_add_bg: Color::Rgb(40, 55, 48),
289    git_del_bg: Color::Rgb(55, 40, 45),
290    git_hunk: Color::Rgb(136, 192, 208),
291};
292
293// ── SOLARIZED ──
294pub static SOLARIZED: Theme = Theme {
295    name: "solarized",
296    bg: Color::Rgb(0, 43, 54),
297    fg: Color::Rgb(131, 148, 150),
298    keyword: Color::Rgb(38, 139, 210),
299    string: Color::Rgb(42, 161, 152),
300    comment: Color::Rgb(88, 110, 117),
301    number: Color::Rgb(203, 75, 22),
302    type_name: Color::Rgb(181, 137, 0),
303    function: Color::Rgb(38, 139, 210),
304    macro_name: Color::Rgb(211, 54, 130),
305    namespace: Color::Rgb(42, 161, 152),
306    parameter: Color::Rgb(203, 75, 22),
307    property: Color::Rgb(131, 148, 150),
308    constant: Color::Rgb(203, 75, 22),
309    operator: Color::Rgb(38, 139, 210),
310    punctuation: Color::Rgb(88, 110, 117),
311    line_no: Color::Rgb(50, 75, 85),
312    editor_bg: Color::Rgb(0, 43, 54),
313    status_bg: Color::Rgb(0, 35, 44),
314    status_fg: Color::Rgb(120, 135, 138),
315    border: Color::Rgb(0, 55, 70),
316    selection_bg: Color::Rgb(7, 54, 66),
317    search_bg: Color::Rgb(80, 60, 20),
318    mode_normal: Color::Rgb(38, 139, 210),
319    mode_insert: Color::Rgb(133, 153, 0),
320    mode_visual: Color::Rgb(211, 54, 130),
321    mode_xlc: Color::Rgb(42, 161, 152),
322    completion_bg: Color::Rgb(5, 48, 60),
323    completion_selected: Color::Rgb(38, 139, 210),
324    completion_border: Color::Rgb(38, 139, 210),
325    explorer_bg: Color::Rgb(0, 38, 48),
326    explorer_fg: Color::Rgb(125, 140, 143),
327    explorer_dir: Color::Rgb(38, 139, 210),
328    explorer_selected: Color::Rgb(133, 153, 0),
329    terminal_bg: Color::Rgb(0, 35, 44),
330    terminal_fg: Color::Rgb(133, 153, 0),
331    terminal_prompt: Color::Rgb(42, 161, 152),
332    xlc_bg: Color::Rgb(0, 40, 50),
333    xlc_fg: Color::Rgb(110, 125, 128),
334    xlc_prompt: Color::Rgb(133, 153, 0),
335    xlc_border: Color::Rgb(38, 139, 210),
336    cursor: Color::Rgb(131, 148, 150),
337    accent: Color::Rgb(38, 139, 210),
338    accent_fg: Color::Rgb(0, 43, 54),
339    muted: Color::Rgb(88, 110, 117),
340    success: Color::Rgb(133, 153, 0),
341    warning: Color::Rgb(181, 137, 0),
342    error: Color::Rgb(220, 50, 47),
343    panel_bg: Color::Rgb(5, 48, 60),
344    panel_border: Color::Rgb(38, 139, 210),
345    panel_sel_bg: Color::Rgb(7, 54, 66),
346    panel_sel_fg: Color::Rgb(253, 246, 227),
347    mode_git: Color::Rgb(133, 153, 0),
348    mode_term: Color::Rgb(42, 161, 152),
349    mode_preview: Color::Rgb(38, 139, 210),
350    mode_settings: Color::Rgb(211, 54, 130),
351    mode_search: Color::Rgb(181, 137, 0),
352    mode_find: Color::Rgb(38, 139, 210),
353    git_add_bg: Color::Rgb(0, 50, 40),
354    git_del_bg: Color::Rgb(50, 25, 25),
355    git_hunk: Color::Rgb(38, 139, 210),
356};
357
358// ── GRUVBOX ──
359pub static GRUVBOX: Theme = Theme {
360    name: "gruvbox",
361    bg: Color::Rgb(40, 40, 40),
362    fg: Color::Rgb(235, 219, 178),
363    keyword: Color::Rgb(211, 134, 155),
364    string: Color::Rgb(184, 187, 38),
365    comment: Color::Rgb(146, 131, 116),
366    number: Color::Rgb(177, 98, 134),
367    type_name: Color::Rgb(142, 192, 124),
368    function: Color::Rgb(250, 189, 47),
369    macro_name: Color::Rgb(254, 128, 25),
370    namespace: Color::Rgb(69, 133, 136),
371    parameter: Color::Rgb(211, 134, 155),
372    property: Color::Rgb(235, 219, 178),
373    constant: Color::Rgb(211, 134, 155),
374    operator: Color::Rgb(254, 128, 25),
375    punctuation: Color::Rgb(146, 131, 116),
376    line_no: Color::Rgb(80, 73, 64),
377    editor_bg: Color::Rgb(40, 40, 40),
378    status_bg: Color::Rgb(32, 32, 32),
379    status_fg: Color::Rgb(220, 205, 165),
380    border: Color::Rgb(60, 56, 50),
381    selection_bg: Color::Rgb(60, 56, 50),
382    search_bg: Color::Rgb(90, 80, 40),
383    mode_normal: Color::Rgb(69, 133, 136),
384    mode_insert: Color::Rgb(184, 187, 38),
385    mode_visual: Color::Rgb(211, 134, 155),
386    mode_xlc: Color::Rgb(131, 165, 152),
387    completion_bg: Color::Rgb(48, 48, 48),
388    completion_selected: Color::Rgb(254, 128, 25),
389    completion_border: Color::Rgb(254, 128, 25),
390    explorer_bg: Color::Rgb(34, 34, 34),
391    explorer_fg: Color::Rgb(228, 212, 170),
392    explorer_dir: Color::Rgb(69, 133, 136),
393    explorer_selected: Color::Rgb(254, 128, 25),
394    terminal_bg: Color::Rgb(30, 30, 30),
395    terminal_fg: Color::Rgb(184, 187, 38),
396    terminal_prompt: Color::Rgb(142, 192, 124),
397    xlc_bg: Color::Rgb(36, 36, 36),
398    xlc_fg: Color::Rgb(190, 178, 150),
399    xlc_prompt: Color::Rgb(184, 187, 38),
400    xlc_border: Color::Rgb(254, 128, 25),
401    cursor: Color::Rgb(235, 219, 178),
402    accent: Color::Rgb(254, 128, 25),
403    accent_fg: Color::Rgb(0, 0, 0),
404    muted: Color::Rgb(146, 131, 116),
405    success: Color::Rgb(142, 192, 124),
406    warning: Color::Rgb(250, 189, 47),
407    error: Color::Rgb(251, 73, 52),
408    panel_bg: Color::Rgb(48, 48, 48),
409    panel_border: Color::Rgb(254, 128, 25),
410    panel_sel_bg: Color::Rgb(60, 56, 50),
411    panel_sel_fg: Color::Rgb(251, 241, 199),
412    mode_git: Color::Rgb(142, 192, 124),
413    mode_term: Color::Rgb(184, 187, 38),
414    mode_preview: Color::Rgb(69, 133, 136),
415    mode_settings: Color::Rgb(211, 134, 155),
416    mode_search: Color::Rgb(250, 189, 47),
417    mode_find: Color::Rgb(69, 133, 136),
418    git_add_bg: Color::Rgb(35, 45, 30),
419    git_del_bg: Color::Rgb(50, 30, 28),
420    git_hunk: Color::Rgb(131, 165, 152),
421};
422
423// ── EVERFOREST ──
424pub static EVERFOREST: Theme = Theme {
425    name: "everforest",
426    bg: Color::Rgb(39, 46, 44),
427    fg: Color::Rgb(211, 198, 170),
428    keyword: Color::Rgb(230, 126, 128),
429    string: Color::Rgb(167, 192, 128),
430    comment: Color::Rgb(134, 140, 122),
431    number: Color::Rgb(223, 164, 126),
432    type_name: Color::Rgb(130, 202, 157),
433    function: Color::Rgb(219, 188, 127),
434    macro_name: Color::Rgb(214, 153, 182),
435    namespace: Color::Rgb(130, 170, 162),
436    parameter: Color::Rgb(223, 164, 126),
437    property: Color::Rgb(211, 198, 170),
438    constant: Color::Rgb(230, 126, 128),
439    operator: Color::Rgb(131, 180, 175),
440    punctuation: Color::Rgb(134, 140, 122),
441    line_no: Color::Rgb(75, 84, 68),
442    editor_bg: Color::Rgb(39, 46, 44),
443    status_bg: Color::Rgb(31, 37, 35),
444    status_fg: Color::Rgb(200, 188, 160),
445    border: Color::Rgb(58, 66, 60),
446    selection_bg: Color::Rgb(55, 64, 58),
447    search_bg: Color::Rgb(90, 80, 40),
448    mode_normal: Color::Rgb(130, 170, 162),
449    mode_insert: Color::Rgb(167, 192, 128),
450    mode_visual: Color::Rgb(223, 164, 126),
451    mode_xlc: Color::Rgb(131, 180, 175),
452    completion_bg: Color::Rgb(46, 52, 50),
453    completion_selected: Color::Rgb(230, 126, 128),
454    completion_border: Color::Rgb(230, 126, 128),
455    explorer_bg: Color::Rgb(33, 40, 38),
456    explorer_fg: Color::Rgb(205, 193, 165),
457    explorer_dir: Color::Rgb(130, 170, 162),
458    explorer_selected: Color::Rgb(230, 126, 128),
459    terminal_bg: Color::Rgb(28, 35, 33),
460    terminal_fg: Color::Rgb(167, 192, 128),
461    terminal_prompt: Color::Rgb(130, 202, 157),
462    xlc_bg: Color::Rgb(35, 41, 39),
463    xlc_fg: Color::Rgb(185, 173, 148),
464    xlc_prompt: Color::Rgb(167, 192, 128),
465    xlc_border: Color::Rgb(230, 126, 128),
466    cursor: Color::Rgb(211, 198, 170),
467    accent: Color::Rgb(130, 170, 162),
468    accent_fg: Color::Rgb(0, 0, 0),
469    muted: Color::Rgb(134, 140, 122),
470    success: Color::Rgb(167, 192, 128),
471    warning: Color::Rgb(219, 188, 127),
472    error: Color::Rgb(230, 126, 128),
473    panel_bg: Color::Rgb(46, 52, 50),
474    panel_border: Color::Rgb(130, 170, 162),
475    panel_sel_bg: Color::Rgb(55, 64, 58),
476    panel_sel_fg: Color::Rgb(230, 220, 195),
477    mode_git: Color::Rgb(167, 192, 128),
478    mode_term: Color::Rgb(130, 202, 157),
479    mode_preview: Color::Rgb(131, 180, 175),
480    mode_settings: Color::Rgb(214, 153, 182),
481    mode_search: Color::Rgb(219, 188, 127),
482    mode_find: Color::Rgb(130, 170, 162),
483    git_add_bg: Color::Rgb(35, 48, 40),
484    git_del_bg: Color::Rgb(50, 35, 35),
485    git_hunk: Color::Rgb(131, 180, 175),
486};
487
488// ── SAKURA ──
489pub static SAKURA: Theme = Theme {
490    name: "sakura",
491    bg: Color::Rgb(255, 240, 245),
492    fg: Color::Rgb(60, 20, 40),
493    keyword: Color::Rgb(190, 60, 100),
494    string: Color::Rgb(100, 160, 120),
495    comment: Color::Rgb(200, 180, 190),
496    number: Color::Rgb(180, 100, 80),
497    type_name: Color::Rgb(160, 100, 140),
498    function: Color::Rgb(180, 80, 120),
499    macro_name: Color::Rgb(140, 100, 160),
500    namespace: Color::Rgb(200, 130, 160),
501    parameter: Color::Rgb(180, 100, 80),
502    property: Color::Rgb(60, 20, 40),
503    constant: Color::Rgb(190, 60, 100),
504    operator: Color::Rgb(190, 60, 100),
505    punctuation: Color::Rgb(200, 180, 190),
506    line_no: Color::Rgb(200, 170, 185),
507    editor_bg: Color::Rgb(255, 240, 245),
508    status_bg: Color::Rgb(255, 225, 235),
509    status_fg: Color::Rgb(60, 20, 40),
510    border: Color::Rgb(240, 200, 215),
511    selection_bg: Color::Rgb(255, 210, 225),
512    search_bg: Color::Rgb(255, 230, 200),
513    mode_normal: Color::Rgb(219, 112, 147),
514    mode_insert: Color::Rgb(150, 190, 140),
515    mode_visual: Color::Rgb(200, 150, 180),
516    mode_xlc: Color::Rgb(180, 140, 160),
517    completion_bg: Color::Rgb(255, 235, 242),
518    completion_selected: Color::Rgb(219, 112, 147),
519    completion_border: Color::Rgb(219, 112, 147),
520    explorer_bg: Color::Rgb(255, 230, 238),
521    explorer_fg: Color::Rgb(60, 20, 40),
522    explorer_dir: Color::Rgb(200, 130, 160),
523    explorer_selected: Color::Rgb(219, 112, 147),
524    terminal_bg: Color::Rgb(255, 235, 242),
525    terminal_fg: Color::Rgb(60, 20, 40),
526    terminal_prompt: Color::Rgb(219, 112, 147),
527    xlc_bg: Color::Rgb(255, 235, 242),
528    xlc_fg: Color::Rgb(60, 20, 40),
529    xlc_prompt: Color::Rgb(219, 112, 147),
530    xlc_border: Color::Rgb(219, 112, 147),
531    cursor: Color::Rgb(136, 34, 56),
532    accent: Color::Rgb(219, 112, 147),
533    accent_fg: Color::Rgb(255, 255, 255),
534    muted: Color::Rgb(180, 150, 165),
535    success: Color::Rgb(100, 160, 120),
536    warning: Color::Rgb(200, 140, 80),
537    error: Color::Rgb(200, 60, 80),
538    panel_bg: Color::Rgb(255, 235, 242),
539    panel_border: Color::Rgb(219, 112, 147),
540    panel_sel_bg: Color::Rgb(255, 210, 225),
541    panel_sel_fg: Color::Rgb(60, 20, 40),
542    mode_git: Color::Rgb(150, 190, 140),
543    mode_term: Color::Rgb(150, 190, 140),
544    mode_preview: Color::Rgb(200, 130, 160),
545    mode_settings: Color::Rgb(180, 140, 160),
546    mode_search: Color::Rgb(200, 140, 80),
547    mode_find: Color::Rgb(219, 112, 147),
548    git_add_bg: Color::Rgb(230, 245, 235),
549    git_del_bg: Color::Rgb(255, 230, 235),
550    git_hunk: Color::Rgb(200, 130, 160),
551};
552
553// ── NEWSPAPER ──
554pub static NEWSPAPER: Theme = Theme {
555    name: "newspaper",
556    bg: Color::Rgb(255, 243, 229),
557    fg: Color::Rgb(125, 130, 172),
558    keyword: Color::Rgb(125, 130, 172),
559    string: Color::Rgb(140, 145, 185),
560    comment: Color::Rgb(190, 185, 195),
561    number: Color::Rgb(150, 140, 175),
562    type_name: Color::Rgb(172, 176, 214),
563    function: Color::Rgb(100, 110, 160),
564    macro_name: Color::Rgb(140, 120, 170),
565    namespace: Color::Rgb(125, 130, 172),
566    parameter: Color::Rgb(150, 140, 175),
567    property: Color::Rgb(125, 130, 172),
568    constant: Color::Rgb(140, 145, 185),
569    operator: Color::Rgb(125, 130, 172),
570    punctuation: Color::Rgb(190, 185, 195),
571    line_no: Color::Rgb(200, 195, 200),
572    editor_bg: Color::Rgb(255, 243, 229),
573    status_bg: Color::Rgb(254, 249, 244),
574    status_fg: Color::Rgb(125, 130, 172),
575    border: Color::Rgb(228, 223, 225),
576    selection_bg: Color::Rgb(228, 223, 225),
577    search_bg: Color::Rgb(220, 215, 210),
578    mode_normal: Color::Rgb(125, 130, 172),
579    mode_insert: Color::Rgb(172, 176, 214),
580    mode_visual: Color::Rgb(140, 135, 175),
581    mode_xlc: Color::Rgb(172, 176, 214),
582    completion_bg: Color::Rgb(254, 249, 244),
583    completion_selected: Color::Rgb(125, 130, 172),
584    completion_border: Color::Rgb(172, 176, 214),
585    explorer_bg: Color::Rgb(254, 249, 244),
586    explorer_fg: Color::Rgb(125, 130, 172),
587    explorer_dir: Color::Rgb(125, 130, 172),
588    explorer_selected: Color::Rgb(172, 176, 214),
589    terminal_bg: Color::Rgb(254, 249, 244),
590    terminal_fg: Color::Rgb(125, 130, 172),
591    terminal_prompt: Color::Rgb(172, 176, 214),
592    xlc_bg: Color::Rgb(254, 249, 244),
593    xlc_fg: Color::Rgb(125, 130, 172),
594    xlc_prompt: Color::Rgb(172, 176, 214),
595    xlc_border: Color::Rgb(228, 223, 225),
596    cursor: Color::Rgb(125, 130, 172),
597    accent: Color::Rgb(125, 130, 172),
598    accent_fg: Color::Rgb(255, 255, 255),
599    muted: Color::Rgb(170, 165, 180),
600    success: Color::Rgb(100, 150, 110),
601    warning: Color::Rgb(180, 140, 80),
602    error: Color::Rgb(180, 80, 90),
603    panel_bg: Color::Rgb(254, 249, 244),
604    panel_border: Color::Rgb(172, 176, 214),
605    panel_sel_bg: Color::Rgb(228, 223, 225),
606    panel_sel_fg: Color::Rgb(80, 85, 120),
607    mode_git: Color::Rgb(100, 150, 110),
608    mode_term: Color::Rgb(100, 150, 110),
609    mode_preview: Color::Rgb(140, 145, 185),
610    mode_settings: Color::Rgb(140, 120, 170),
611    mode_search: Color::Rgb(180, 140, 80),
612    mode_find: Color::Rgb(125, 130, 172),
613    git_add_bg: Color::Rgb(235, 245, 235),
614    git_del_bg: Color::Rgb(250, 235, 235),
615    git_hunk: Color::Rgb(125, 130, 172),
616};
617
618// ── MONO ──
619pub static MONO: Theme = Theme {
620    name: "mono",
621    bg: Color::Rgb(255, 255, 255),
622    fg: Color::Rgb(30, 30, 30),
623    keyword: Color::Rgb(0, 0, 0),
624    string: Color::Rgb(80, 80, 80),
625    comment: Color::Rgb(170, 170, 170),
626    number: Color::Rgb(50, 50, 50),
627    type_name: Color::Rgb(60, 60, 60),
628    function: Color::Rgb(20, 20, 20),
629    macro_name: Color::Rgb(40, 40, 40),
630    namespace: Color::Rgb(50, 50, 50),
631    parameter: Color::Rgb(70, 70, 70),
632    property: Color::Rgb(30, 30, 30),
633    constant: Color::Rgb(40, 40, 40),
634    operator: Color::Rgb(0, 0, 0),
635    punctuation: Color::Rgb(150, 150, 150),
636    line_no: Color::Rgb(190, 190, 190),
637    editor_bg: Color::Rgb(255, 255, 255),
638    status_bg: Color::Rgb(245, 245, 245),
639    status_fg: Color::Rgb(30, 30, 30),
640    border: Color::Rgb(220, 220, 220),
641    selection_bg: Color::Rgb(230, 230, 230),
642    search_bg: Color::Rgb(255, 255, 200),
643    mode_normal: Color::Rgb(60, 60, 60),
644    mode_insert: Color::Rgb(120, 120, 120),
645    mode_visual: Color::Rgb(80, 80, 80),
646    mode_xlc: Color::Rgb(100, 100, 100),
647    completion_bg: Color::Rgb(250, 250, 250),
648    completion_selected: Color::Rgb(60, 60, 60),
649    completion_border: Color::Rgb(200, 200, 200),
650    explorer_bg: Color::Rgb(248, 248, 248),
651    explorer_fg: Color::Rgb(30, 30, 30),
652    explorer_dir: Color::Rgb(50, 50, 50),
653    explorer_selected: Color::Rgb(220, 220, 220),
654    terminal_bg: Color::Rgb(250, 250, 250),
655    terminal_fg: Color::Rgb(30, 30, 30),
656    terminal_prompt: Color::Rgb(80, 80, 80),
657    xlc_bg: Color::Rgb(248, 248, 248),
658    xlc_fg: Color::Rgb(50, 50, 50),
659    xlc_prompt: Color::Rgb(80, 80, 80),
660    xlc_border: Color::Rgb(200, 200, 200),
661    cursor: Color::Rgb(0, 0, 0),
662    accent: Color::Rgb(40, 40, 40),
663    accent_fg: Color::Rgb(255, 255, 255),
664    muted: Color::Rgb(140, 140, 140),
665    success: Color::Rgb(40, 120, 40),
666    warning: Color::Rgb(140, 110, 20),
667    error: Color::Rgb(160, 40, 40),
668    panel_bg: Color::Rgb(250, 250, 250),
669    panel_border: Color::Rgb(180, 180, 180),
670    panel_sel_bg: Color::Rgb(230, 230, 230),
671    panel_sel_fg: Color::Rgb(0, 0, 0),
672    mode_git: Color::Rgb(40, 120, 40),
673    mode_term: Color::Rgb(40, 120, 40),
674    mode_preview: Color::Rgb(60, 60, 60),
675    mode_settings: Color::Rgb(80, 80, 80),
676    mode_search: Color::Rgb(140, 110, 20),
677    mode_find: Color::Rgb(60, 60, 60),
678    git_add_bg: Color::Rgb(235, 250, 235),
679    git_del_bg: Color::Rgb(255, 235, 235),
680    git_hunk: Color::Rgb(80, 80, 80),
681};
682
683// ── MONO_DARK ──
684pub static MONO_DARK: Theme = Theme {
685    name: "mono_dark",
686    bg: Color::Rgb(20, 20, 20),
687    fg: Color::Rgb(230, 230, 230),
688    keyword: Color::Rgb(255, 255, 255),
689    string: Color::Rgb(190, 190, 190),
690    comment: Color::Rgb(100, 100, 100),
691    number: Color::Rgb(210, 210, 210),
692    type_name: Color::Rgb(200, 200, 200),
693    function: Color::Rgb(240, 240, 240),
694    macro_name: Color::Rgb(220, 220, 220),
695    namespace: Color::Rgb(210, 210, 210),
696    parameter: Color::Rgb(200, 200, 200),
697    property: Color::Rgb(230, 230, 230),
698    constant: Color::Rgb(220, 220, 220),
699    operator: Color::Rgb(255, 255, 255),
700    punctuation: Color::Rgb(120, 120, 120),
701    line_no: Color::Rgb(70, 70, 70),
702    editor_bg: Color::Rgb(20, 20, 20),
703    status_bg: Color::Rgb(28, 28, 28),
704    status_fg: Color::Rgb(230, 230, 230),
705    border: Color::Rgb(50, 50, 50),
706    selection_bg: Color::Rgb(60, 60, 60),
707    search_bg: Color::Rgb(50, 50, 30),
708    mode_normal: Color::Rgb(200, 200, 200),
709    mode_insert: Color::Rgb(150, 150, 150),
710    mode_visual: Color::Rgb(180, 180, 180),
711    mode_xlc: Color::Rgb(170, 170, 170),
712    completion_bg: Color::Rgb(30, 30, 30),
713    completion_selected: Color::Rgb(200, 200, 200),
714    completion_border: Color::Rgb(80, 80, 80),
715    explorer_bg: Color::Rgb(16, 16, 16),
716    explorer_fg: Color::Rgb(230, 230, 230),
717    explorer_dir: Color::Rgb(210, 210, 210),
718    explorer_selected: Color::Rgb(60, 60, 60),
719    terminal_bg: Color::Rgb(24, 24, 24),
720    terminal_fg: Color::Rgb(230, 230, 230),
721    terminal_prompt: Color::Rgb(190, 190, 190),
722    xlc_bg: Color::Rgb(26, 26, 26),
723    xlc_fg: Color::Rgb(210, 210, 210),
724    xlc_prompt: Color::Rgb(190, 190, 190),
725    xlc_border: Color::Rgb(70, 70, 70),
726    cursor: Color::Rgb(255, 255, 255),
727    accent: Color::Rgb(200, 200, 200),
728    accent_fg: Color::Rgb(0, 0, 0),
729    muted: Color::Rgb(100, 100, 100),
730    success: Color::Rgb(140, 200, 140),
731    warning: Color::Rgb(200, 180, 100),
732    error: Color::Rgb(220, 120, 120),
733    panel_bg: Color::Rgb(30, 30, 30),
734    panel_border: Color::Rgb(80, 80, 80),
735    panel_sel_bg: Color::Rgb(55, 55, 55),
736    panel_sel_fg: Color::Rgb(245, 245, 245),
737    mode_git: Color::Rgb(140, 200, 140),
738    mode_term: Color::Rgb(140, 200, 140),
739    mode_preview: Color::Rgb(180, 180, 180),
740    mode_settings: Color::Rgb(170, 170, 170),
741    mode_search: Color::Rgb(200, 180, 100),
742    mode_find: Color::Rgb(180, 180, 180),
743    git_add_bg: Color::Rgb(25, 35, 25),
744    git_del_bg: Color::Rgb(40, 22, 22),
745    git_hunk: Color::Rgb(180, 180, 180),
746};
747