1use ratatui::style::Color;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6pub enum ThemeName {
7 #[serde(rename = "dark")]
8 Dark,
9 #[serde(rename = "light")]
10 Light,
11 #[serde(rename = "midnight")]
12 Midnight,
13 #[serde(rename = "nord")]
14 Nord,
15 #[serde(rename = "monokai")]
16 Monokai,
17}
18
19impl Default for ThemeName {
20 fn default() -> Self {
21 ThemeName::Midnight
22 }
23}
24
25#[allow(dead_code)]
26impl ThemeName {
27 pub fn all() -> &'static [ThemeName] {
29 &[
30 ThemeName::Dark,
31 ThemeName::Light,
32 ThemeName::Midnight,
33 ThemeName::Nord,
34 ThemeName::Monokai,
35 ]
36 }
37
38 pub fn next(&self) -> ThemeName {
40 match self {
41 ThemeName::Dark => ThemeName::Light,
42 ThemeName::Light => ThemeName::Midnight,
43 ThemeName::Midnight => ThemeName::Nord,
44 ThemeName::Nord => ThemeName::Monokai,
45 ThemeName::Monokai => ThemeName::Dark,
46 }
47 }
48
49 pub fn display_name(&self) -> &'static str {
51 match self {
52 ThemeName::Dark => "Dark",
53 ThemeName::Light => "Light",
54 ThemeName::Midnight => "Midnight(默认)",
55 ThemeName::Nord => "Nord",
56 ThemeName::Monokai => "Monokai",
57 }
58 }
59
60 pub fn from_str(s: &str) -> ThemeName {
62 match s.to_lowercase().as_str() {
63 "dark" => ThemeName::Dark,
64 "light" => ThemeName::Light,
65 "midnight" => ThemeName::Midnight,
66 "nord" => ThemeName::Nord,
67 "monokai" => ThemeName::Monokai,
68 _ => ThemeName::default(),
69 }
70 }
71
72 pub fn to_str(&self) -> &'static str {
74 match self {
75 ThemeName::Dark => "dark",
76 ThemeName::Light => "light",
77 ThemeName::Midnight => "midnight",
78 ThemeName::Nord => "nord",
79 ThemeName::Monokai => "monokai",
80 }
81 }
82}
83
84#[derive(Debug, Clone)]
87#[allow(dead_code)]
88pub struct Theme {
89 pub bg_primary: Color,
92 pub bg_title: Color,
94 pub bg_input: Color,
96 pub bg_panel: Color,
98
99 pub border_title: Color,
102 pub border_message: Color,
104 pub border_input: Color,
106 pub border_input_loading: Color,
108 pub border_config: Color,
110 pub separator: Color,
112
113 pub bubble_ai: Color,
116 pub bubble_ai_selected: Color,
118 pub bubble_user: Color,
120 pub bubble_user_selected: Color,
122
123 pub label_ai: Color,
126 pub label_user: Color,
128 pub label_selected: Color,
130
131 pub text_normal: Color,
134 pub text_bold: Color,
136 pub text_dim: Color,
138 pub text_very_dim: Color,
140 pub text_white: Color,
142 pub text_system: Color,
144
145 pub title_icon: Color,
148 pub title_separator: Color,
150 pub title_model: Color,
152 pub title_count: Color,
154 pub title_loading: Color,
156
157 pub input_prompt: Color,
160 pub input_prompt_loading: Color,
162 pub cursor_fg: Color,
164 pub cursor_bg: Color,
166
167 pub hint_key_fg: Color,
170 pub hint_key_bg: Color,
172 pub hint_desc: Color,
174 pub hint_separator: Color,
176
177 pub toast_success_border: Color,
180 pub toast_success_bg: Color,
182 pub toast_success_text: Color,
184 pub toast_error_border: Color,
186 pub toast_error_bg: Color,
188 pub toast_error_text: Color,
190
191 pub welcome_border: Color,
194 pub welcome_text: Color,
196 pub welcome_hint: Color,
198
199 pub model_sel_border: Color,
202 pub model_sel_title: Color,
204 pub model_sel_active: Color,
206 pub model_sel_inactive: Color,
208 pub model_sel_highlight_bg: Color,
210
211 pub config_title: Color,
214 pub config_section: Color,
216 pub config_pointer: Color,
218 pub config_label_selected: Color,
220 pub config_label: Color,
222 pub config_value: Color,
224 pub config_edit_bg: Color,
226 pub config_tab_active_bg: Color,
228 pub config_tab_active_fg: Color,
230 pub config_tab_inactive: Color,
232 pub config_hint_key: Color,
234 pub config_hint_desc: Color,
236 pub config_toggle_on: Color,
238 pub config_toggle_off: Color,
240 pub config_dim: Color,
242 pub config_api_key: Color,
244
245 pub md_h1: Color,
248 pub md_h2: Color,
250 pub md_h3: Color,
252 pub md_h4: Color,
254 pub md_heading_sep: Color,
256 pub md_inline_code_fg: Color,
258 pub md_inline_code_bg: Color,
260 pub md_list_bullet: Color,
262 pub md_blockquote_bar: Color,
264 pub md_blockquote_text: Color,
266 pub md_rule: Color,
268
269 pub code_border: Color,
272 pub code_bg: Color,
274 pub code_default: Color,
276 pub code_keyword: Color,
278 pub code_string: Color,
280 pub code_comment: Color,
282 pub code_number: Color,
284 pub code_type: Color,
286 pub code_primitive: Color,
288 pub code_macro: Color,
290 pub code_attribute: Color,
292 pub code_lifetime: Color,
294 pub code_shell_var: Color,
296
297 pub table_border: Color,
300 pub table_header: Color,
302 pub table_body: Color,
304
305 pub help_title: Color,
308 pub help_key: Color,
310 pub help_desc: Color,
312 pub help_path: Color,
314 pub help_bg: Color,
316}
317
318impl Theme {
319 pub fn from_name(name: &ThemeName) -> Self {
321 match name {
322 ThemeName::Dark => Self::dark(),
323 ThemeName::Light => Self::light(),
324 ThemeName::Midnight => Self::midnight(),
325 ThemeName::Nord => Self::nord(),
326 ThemeName::Monokai => Self::monokai(),
327 }
328 }
329
330 pub fn midnight() -> Self {
332 Self {
333 bg_primary: Color::Rgb(22, 22, 30),
335 bg_title: Color::Rgb(28, 28, 40),
336 bg_input: Color::Rgb(26, 26, 38),
337 bg_panel: Color::Rgb(24, 24, 34),
338
339 border_title: Color::Rgb(80, 100, 140),
341 border_message: Color::Rgb(50, 55, 70),
342 border_input: Color::Rgb(60, 100, 80),
343 border_input_loading: Color::Rgb(120, 100, 50),
344 border_config: Color::Rgb(80, 80, 110),
345 separator: Color::Rgb(50, 55, 70),
346
347 bubble_ai: Color::Rgb(38, 38, 52),
349 bubble_ai_selected: Color::Rgb(48, 48, 68),
350 bubble_user: Color::Rgb(40, 70, 120),
351 bubble_user_selected: Color::Rgb(55, 85, 140),
352
353 label_ai: Color::Rgb(120, 220, 160),
355 label_user: Color::Rgb(100, 160, 255),
356 label_selected: Color::Rgb(255, 200, 80),
357
358 text_normal: Color::Rgb(220, 220, 230),
360 text_bold: Color::Rgb(220, 245, 230),
361 text_dim: Color::Rgb(140, 140, 170),
362 text_very_dim: Color::Rgb(80, 80, 100),
363 text_white: Color::White,
364 text_system: Color::Rgb(100, 100, 120),
365
366 title_icon: Color::Rgb(120, 180, 255),
368 title_separator: Color::Rgb(60, 60, 80),
369 title_model: Color::Rgb(160, 220, 160),
370 title_count: Color::Rgb(180, 180, 200),
371 title_loading: Color::Rgb(255, 200, 80),
372
373 input_prompt: Color::Rgb(100, 200, 130),
375 input_prompt_loading: Color::Rgb(255, 200, 80),
376 cursor_fg: Color::Rgb(22, 22, 30),
377 cursor_bg: Color::Rgb(200, 210, 240),
378
379 hint_key_fg: Color::Rgb(22, 22, 30),
381 hint_key_bg: Color::Rgb(100, 110, 140),
382 hint_desc: Color::Rgb(120, 120, 150),
383 hint_separator: Color::Rgb(50, 50, 65),
384
385 toast_success_border: Color::Rgb(60, 160, 80),
387 toast_success_bg: Color::Rgb(18, 40, 25),
388 toast_success_text: Color::Rgb(140, 230, 160),
389 toast_error_border: Color::Rgb(200, 70, 70),
390 toast_error_bg: Color::Rgb(50, 18, 18),
391 toast_error_text: Color::Rgb(255, 130, 130),
392
393 welcome_border: Color::Rgb(60, 70, 90),
395 welcome_text: Color::Rgb(120, 140, 180),
396 welcome_hint: Color::Rgb(80, 90, 110),
397
398 model_sel_border: Color::Rgb(180, 160, 80),
400 model_sel_title: Color::Rgb(230, 210, 120),
401 model_sel_active: Color::Rgb(120, 220, 160),
402 model_sel_inactive: Color::Rgb(180, 180, 200),
403 model_sel_highlight_bg: Color::Rgb(50, 55, 80),
404
405 config_title: Color::Rgb(120, 180, 255),
407 config_section: Color::Rgb(160, 220, 160),
408 config_pointer: Color::Rgb(255, 200, 80),
409 config_label_selected: Color::Rgb(230, 210, 120),
410 config_label: Color::Rgb(140, 140, 160),
411 config_value: Color::Rgb(180, 180, 200),
412 config_edit_bg: Color::Rgb(50, 55, 80),
413 config_tab_active_bg: Color::Rgb(120, 180, 255),
414 config_tab_active_fg: Color::Rgb(22, 22, 30),
415 config_tab_inactive: Color::Rgb(150, 150, 170),
416 config_hint_key: Color::Rgb(230, 210, 120),
417 config_hint_desc: Color::Rgb(120, 120, 150),
418 config_toggle_on: Color::Rgb(120, 220, 160),
419 config_toggle_off: Color::Rgb(200, 100, 100),
420 config_dim: Color::Rgb(80, 80, 100),
421 config_api_key: Color::Rgb(100, 100, 120),
422
423 md_h1: Color::Rgb(100, 180, 255),
425 md_h2: Color::Rgb(130, 190, 255),
426 md_h3: Color::Rgb(160, 200, 255),
427 md_h4: Color::Rgb(180, 210, 255),
428 md_heading_sep: Color::Rgb(60, 70, 100),
429 md_inline_code_fg: Color::Rgb(230, 190, 120),
430 md_inline_code_bg: Color::Rgb(45, 45, 60),
431 md_list_bullet: Color::Rgb(100, 160, 255),
432 md_blockquote_bar: Color::Rgb(80, 100, 140),
433 md_blockquote_text: Color::Rgb(150, 160, 180),
434 md_rule: Color::Rgb(70, 75, 90),
435
436 code_border: Color::Rgb(80, 90, 110),
438 code_bg: Color::Rgb(30, 30, 42),
439 code_default: Color::Rgb(171, 178, 191),
440 code_keyword: Color::Rgb(198, 120, 221),
441 code_string: Color::Rgb(152, 195, 121),
442 code_comment: Color::Rgb(92, 99, 112),
443 code_number: Color::Rgb(209, 154, 102),
444 code_type: Color::Rgb(229, 192, 123),
445 code_primitive: Color::Rgb(86, 182, 194),
446 code_macro: Color::Rgb(97, 175, 239),
447 code_attribute: Color::Rgb(86, 182, 194),
448 code_lifetime: Color::Rgb(229, 192, 123),
449 code_shell_var: Color::Rgb(86, 182, 194),
450
451 table_border: Color::Rgb(60, 70, 100),
453 table_header: Color::Rgb(120, 180, 255),
454 table_body: Color::Rgb(180, 180, 200),
455
456 help_title: Color::Rgb(120, 180, 255),
458 help_key: Color::Rgb(230, 210, 120),
459 help_desc: Color::Rgb(200, 200, 220),
460 help_path: Color::Rgb(100, 100, 130),
461 help_bg: Color::Rgb(24, 24, 34),
462 }
463 }
464
465 pub fn dark() -> Self {
467 Self {
468 bg_primary: Color::Rgb(30, 30, 30),
470 bg_title: Color::Rgb(37, 37, 38),
471 bg_input: Color::Rgb(37, 37, 38),
472 bg_panel: Color::Rgb(37, 37, 38),
473
474 border_title: Color::Rgb(70, 70, 70),
476 border_message: Color::Rgb(55, 55, 55),
477 border_input: Color::Rgb(55, 80, 55),
478 border_input_loading: Color::Rgb(120, 100, 50),
479 border_config: Color::Rgb(70, 70, 70),
480 separator: Color::Rgb(55, 55, 55),
481
482 bubble_ai: Color::Rgb(40, 40, 40),
484 bubble_ai_selected: Color::Rgb(50, 50, 55),
485 bubble_user: Color::Rgb(38, 65, 110),
486 bubble_user_selected: Color::Rgb(50, 80, 130),
487
488 label_ai: Color::Rgb(80, 200, 120),
490 label_user: Color::Rgb(80, 150, 240),
491 label_selected: Color::Rgb(255, 200, 80),
492
493 text_normal: Color::Rgb(212, 212, 212),
495 text_bold: Color::Rgb(210, 240, 220),
496 text_dim: Color::Rgb(128, 128, 128),
497 text_very_dim: Color::Rgb(80, 80, 80),
498 text_white: Color::White,
499 text_system: Color::Rgb(100, 100, 100),
500
501 title_icon: Color::Rgb(100, 160, 240),
503 title_separator: Color::Rgb(60, 60, 60),
504 title_model: Color::Rgb(140, 200, 140),
505 title_count: Color::Rgb(170, 170, 170),
506 title_loading: Color::Rgb(255, 200, 80),
507
508 input_prompt: Color::Rgb(80, 180, 100),
510 input_prompt_loading: Color::Rgb(255, 200, 80),
511 cursor_fg: Color::Rgb(30, 30, 30),
512 cursor_bg: Color::Rgb(200, 200, 200),
513
514 hint_key_fg: Color::Rgb(30, 30, 30),
516 hint_key_bg: Color::Rgb(100, 100, 100),
517 hint_desc: Color::Rgb(128, 128, 128),
518 hint_separator: Color::Rgb(50, 50, 50),
519
520 toast_success_border: Color::Rgb(60, 160, 80),
522 toast_success_bg: Color::Rgb(20, 40, 25),
523 toast_success_text: Color::Rgb(140, 230, 160),
524 toast_error_border: Color::Rgb(200, 70, 70),
525 toast_error_bg: Color::Rgb(50, 20, 20),
526 toast_error_text: Color::Rgb(255, 130, 130),
527
528 welcome_border: Color::Rgb(60, 60, 60),
530 welcome_text: Color::Rgb(120, 140, 180),
531 welcome_hint: Color::Rgb(80, 80, 80),
532
533 model_sel_border: Color::Rgb(180, 160, 80),
535 model_sel_title: Color::Rgb(230, 210, 120),
536 model_sel_active: Color::Rgb(80, 200, 120),
537 model_sel_inactive: Color::Rgb(170, 170, 170),
538 model_sel_highlight_bg: Color::Rgb(50, 50, 60),
539
540 config_title: Color::Rgb(100, 160, 240),
542 config_section: Color::Rgb(140, 200, 140),
543 config_pointer: Color::Rgb(255, 200, 80),
544 config_label_selected: Color::Rgb(230, 210, 120),
545 config_label: Color::Rgb(128, 128, 128),
546 config_value: Color::Rgb(170, 170, 170),
547 config_edit_bg: Color::Rgb(50, 50, 60),
548 config_tab_active_bg: Color::Rgb(100, 160, 240),
549 config_tab_active_fg: Color::Rgb(30, 30, 30),
550 config_tab_inactive: Color::Rgb(140, 140, 140),
551 config_hint_key: Color::Rgb(230, 210, 120),
552 config_hint_desc: Color::Rgb(128, 128, 128),
553 config_toggle_on: Color::Rgb(80, 200, 120),
554 config_toggle_off: Color::Rgb(200, 100, 100),
555 config_dim: Color::Rgb(80, 80, 80),
556 config_api_key: Color::Rgb(100, 100, 100),
557
558 md_h1: Color::Rgb(80, 160, 240),
560 md_h2: Color::Rgb(100, 170, 240),
561 md_h3: Color::Rgb(120, 180, 240),
562 md_h4: Color::Rgb(140, 190, 240),
563 md_heading_sep: Color::Rgb(60, 60, 80),
564 md_inline_code_fg: Color::Rgb(220, 180, 110),
565 md_inline_code_bg: Color::Rgb(50, 50, 60),
566 md_list_bullet: Color::Rgb(80, 150, 240),
567 md_blockquote_bar: Color::Rgb(70, 90, 130),
568 md_blockquote_text: Color::Rgb(150, 150, 170),
569 md_rule: Color::Rgb(70, 70, 80),
570
571 code_border: Color::Rgb(70, 70, 80),
573 code_bg: Color::Rgb(35, 35, 38),
574 code_default: Color::Rgb(212, 212, 212),
575 code_keyword: Color::Rgb(198, 120, 221),
576 code_string: Color::Rgb(152, 195, 121),
577 code_comment: Color::Rgb(106, 115, 125),
578 code_number: Color::Rgb(209, 154, 102),
579 code_type: Color::Rgb(229, 192, 123),
580 code_primitive: Color::Rgb(86, 182, 194),
581 code_macro: Color::Rgb(97, 175, 239),
582 code_attribute: Color::Rgb(86, 182, 194),
583 code_lifetime: Color::Rgb(229, 192, 123),
584 code_shell_var: Color::Rgb(86, 182, 194),
585
586 table_border: Color::Rgb(60, 60, 80),
588 table_header: Color::Rgb(80, 160, 240),
589 table_body: Color::Rgb(170, 170, 170),
590
591 help_title: Color::Rgb(100, 160, 240),
593 help_key: Color::Rgb(230, 210, 120),
594 help_desc: Color::Rgb(200, 200, 200),
595 help_path: Color::Rgb(100, 100, 100),
596 help_bg: Color::Rgb(37, 37, 38),
597 }
598 }
599
600 pub fn light() -> Self {
602 Self {
603 bg_primary: Color::Rgb(255, 255, 255),
605 bg_title: Color::Rgb(243, 243, 243),
606 bg_input: Color::Rgb(248, 248, 248),
607 bg_panel: Color::Rgb(248, 248, 248),
608
609 border_title: Color::Rgb(190, 190, 200),
611 border_message: Color::Rgb(210, 210, 220),
612 border_input: Color::Rgb(160, 200, 160),
613 border_input_loading: Color::Rgb(180, 150, 50),
614 border_config: Color::Rgb(190, 190, 200),
615 separator: Color::Rgb(210, 210, 220),
616
617 bubble_ai: Color::Rgb(240, 240, 245),
619 bubble_ai_selected: Color::Rgb(225, 230, 240),
620 bubble_user: Color::Rgb(210, 230, 255),
621 bubble_user_selected: Color::Rgb(190, 215, 250),
622
623 label_ai: Color::Rgb(40, 140, 80),
625 label_user: Color::Rgb(30, 100, 200),
626 label_selected: Color::Rgb(180, 130, 20),
627
628 text_normal: Color::Rgb(40, 40, 50),
630 text_bold: Color::Rgb(30, 100, 60),
631 text_dim: Color::Rgb(120, 120, 140),
632 text_very_dim: Color::Rgb(170, 170, 180),
633 text_white: Color::Rgb(40, 40, 50),
634 text_system: Color::Rgb(140, 140, 160),
635
636 title_icon: Color::Rgb(40, 100, 200),
638 title_separator: Color::Rgb(200, 200, 210),
639 title_model: Color::Rgb(40, 140, 80),
640 title_count: Color::Rgb(100, 100, 120),
641 title_loading: Color::Rgb(180, 130, 20),
642
643 input_prompt: Color::Rgb(40, 140, 80),
645 input_prompt_loading: Color::Rgb(180, 130, 20),
646 cursor_fg: Color::Rgb(255, 255, 255),
647 cursor_bg: Color::Rgb(50, 100, 200),
648
649 hint_key_fg: Color::Rgb(255, 255, 255),
651 hint_key_bg: Color::Rgb(100, 110, 130),
652 hint_desc: Color::Rgb(120, 120, 140),
653 hint_separator: Color::Rgb(210, 210, 220),
654
655 toast_success_border: Color::Rgb(60, 160, 80),
657 toast_success_bg: Color::Rgb(230, 250, 235),
658 toast_success_text: Color::Rgb(30, 100, 50),
659 toast_error_border: Color::Rgb(200, 70, 70),
660 toast_error_bg: Color::Rgb(255, 235, 235),
661 toast_error_text: Color::Rgb(160, 30, 30),
662
663 welcome_border: Color::Rgb(180, 190, 210),
665 welcome_text: Color::Rgb(60, 80, 130),
666 welcome_hint: Color::Rgb(140, 150, 170),
667
668 model_sel_border: Color::Rgb(180, 160, 80),
670 model_sel_title: Color::Rgb(140, 110, 30),
671 model_sel_active: Color::Rgb(40, 140, 80),
672 model_sel_inactive: Color::Rgb(100, 100, 120),
673 model_sel_highlight_bg: Color::Rgb(225, 230, 245),
674
675 config_title: Color::Rgb(40, 100, 200),
677 config_section: Color::Rgb(40, 140, 80),
678 config_pointer: Color::Rgb(180, 130, 20),
679 config_label_selected: Color::Rgb(140, 110, 30),
680 config_label: Color::Rgb(120, 120, 140),
681 config_value: Color::Rgb(60, 60, 80),
682 config_edit_bg: Color::Rgb(225, 230, 245),
683 config_tab_active_bg: Color::Rgb(40, 100, 200),
684 config_tab_active_fg: Color::Rgb(255, 255, 255),
685 config_tab_inactive: Color::Rgb(120, 120, 140),
686 config_hint_key: Color::Rgb(140, 110, 30),
687 config_hint_desc: Color::Rgb(120, 120, 140),
688 config_toggle_on: Color::Rgb(40, 140, 80),
689 config_toggle_off: Color::Rgb(200, 80, 80),
690 config_dim: Color::Rgb(170, 170, 180),
691 config_api_key: Color::Rgb(160, 160, 170),
692
693 md_h1: Color::Rgb(30, 80, 180),
695 md_h2: Color::Rgb(40, 100, 200),
696 md_h3: Color::Rgb(50, 110, 210),
697 md_h4: Color::Rgb(60, 120, 220),
698 md_heading_sep: Color::Rgb(180, 190, 210),
699 md_inline_code_fg: Color::Rgb(160, 80, 30),
700 md_inline_code_bg: Color::Rgb(240, 235, 225),
701 md_list_bullet: Color::Rgb(30, 100, 200),
702 md_blockquote_bar: Color::Rgb(100, 130, 180),
703 md_blockquote_text: Color::Rgb(80, 90, 110),
704 md_rule: Color::Rgb(190, 195, 210),
705
706 code_border: Color::Rgb(190, 195, 210),
708 code_bg: Color::Rgb(245, 245, 248),
709 code_default: Color::Rgb(40, 40, 50),
710 code_keyword: Color::Rgb(175, 0, 219),
711 code_string: Color::Rgb(163, 21, 21),
712 code_comment: Color::Rgb(0, 128, 0),
713 code_number: Color::Rgb(9, 134, 88),
714 code_type: Color::Rgb(38, 127, 153),
715 code_primitive: Color::Rgb(0, 112, 193),
716 code_macro: Color::Rgb(121, 94, 38),
717 code_attribute: Color::Rgb(0, 112, 193),
718 code_lifetime: Color::Rgb(38, 127, 153),
719 code_shell_var: Color::Rgb(0, 112, 193),
720
721 table_border: Color::Rgb(180, 190, 210),
723 table_header: Color::Rgb(30, 80, 180),
724 table_body: Color::Rgb(60, 60, 80),
725
726 help_title: Color::Rgb(40, 100, 200),
728 help_key: Color::Rgb(140, 110, 30),
729 help_desc: Color::Rgb(50, 50, 60),
730 help_path: Color::Rgb(120, 120, 140),
731 help_bg: Color::Rgb(248, 248, 248),
732 }
733 }
734
735 pub fn nord() -> Self {
737 Self {
738 bg_primary: Color::Rgb(46, 52, 64), bg_title: Color::Rgb(59, 66, 82), bg_input: Color::Rgb(59, 66, 82), bg_panel: Color::Rgb(59, 66, 82), border_title: Color::Rgb(76, 86, 106), border_message: Color::Rgb(67, 76, 94), border_input: Color::Rgb(76, 86, 106), border_input_loading: Color::Rgb(235, 203, 139), border_config: Color::Rgb(76, 86, 106), separator: Color::Rgb(67, 76, 94), bubble_ai: Color::Rgb(59, 66, 82), bubble_ai_selected: Color::Rgb(67, 76, 94), bubble_user: Color::Rgb(52, 75, 110),
756 bubble_user_selected: Color::Rgb(60, 85, 125),
757
758 label_ai: Color::Rgb(163, 190, 140), label_user: Color::Rgb(129, 161, 193), label_selected: Color::Rgb(235, 203, 139), text_normal: Color::Rgb(216, 222, 233), text_bold: Color::Rgb(210, 235, 220),
766 text_dim: Color::Rgb(128, 140, 160),
767 text_very_dim: Color::Rgb(76, 86, 106), text_white: Color::Rgb(236, 239, 244), text_system: Color::Rgb(100, 112, 130),
770
771 title_icon: Color::Rgb(136, 192, 208), title_separator: Color::Rgb(67, 76, 94), title_model: Color::Rgb(163, 190, 140), title_count: Color::Rgb(178, 186, 202),
776 title_loading: Color::Rgb(235, 203, 139), input_prompt: Color::Rgb(163, 190, 140), input_prompt_loading: Color::Rgb(235, 203, 139), cursor_fg: Color::Rgb(46, 52, 64), cursor_bg: Color::Rgb(216, 222, 233), hint_key_fg: Color::Rgb(46, 52, 64), hint_key_bg: Color::Rgb(76, 86, 106), hint_desc: Color::Rgb(128, 140, 160),
788 hint_separator: Color::Rgb(59, 66, 82), toast_success_border: Color::Rgb(163, 190, 140), toast_success_bg: Color::Rgb(50, 60, 55),
793 toast_success_text: Color::Rgb(163, 190, 140),
794 toast_error_border: Color::Rgb(191, 97, 106), toast_error_bg: Color::Rgb(60, 50, 52),
796 toast_error_text: Color::Rgb(191, 97, 106),
797
798 welcome_border: Color::Rgb(76, 86, 106), welcome_text: Color::Rgb(136, 192, 208), welcome_hint: Color::Rgb(100, 112, 130),
802
803 model_sel_border: Color::Rgb(235, 203, 139), model_sel_title: Color::Rgb(235, 203, 139),
806 model_sel_active: Color::Rgb(163, 190, 140), model_sel_inactive: Color::Rgb(178, 186, 202),
808 model_sel_highlight_bg: Color::Rgb(67, 76, 94), config_title: Color::Rgb(129, 161, 193), config_section: Color::Rgb(163, 190, 140), config_pointer: Color::Rgb(235, 203, 139), config_label_selected: Color::Rgb(235, 203, 139),
815 config_label: Color::Rgb(128, 140, 160),
816 config_value: Color::Rgb(178, 186, 202),
817 config_edit_bg: Color::Rgb(67, 76, 94), config_tab_active_bg: Color::Rgb(129, 161, 193), config_tab_active_fg: Color::Rgb(46, 52, 64), config_tab_inactive: Color::Rgb(128, 140, 160),
821 config_hint_key: Color::Rgb(235, 203, 139),
822 config_hint_desc: Color::Rgb(128, 140, 160),
823 config_toggle_on: Color::Rgb(163, 190, 140), config_toggle_off: Color::Rgb(191, 97, 106), config_dim: Color::Rgb(76, 86, 106), config_api_key: Color::Rgb(100, 112, 130),
827
828 md_h1: Color::Rgb(136, 192, 208), md_h2: Color::Rgb(129, 161, 193), md_h3: Color::Rgb(143, 188, 187), md_h4: Color::Rgb(178, 186, 202),
833 md_heading_sep: Color::Rgb(67, 76, 94), md_inline_code_fg: Color::Rgb(235, 203, 139), md_inline_code_bg: Color::Rgb(59, 66, 82), md_list_bullet: Color::Rgb(129, 161, 193), md_blockquote_bar: Color::Rgb(76, 86, 106), md_blockquote_text: Color::Rgb(160, 170, 185),
839 md_rule: Color::Rgb(67, 76, 94), code_border: Color::Rgb(76, 86, 106), code_bg: Color::Rgb(46, 52, 64), code_default: Color::Rgb(216, 222, 233), code_keyword: Color::Rgb(180, 142, 173), code_string: Color::Rgb(163, 190, 140), code_comment: Color::Rgb(97, 110, 128),
848 code_number: Color::Rgb(208, 135, 112), code_type: Color::Rgb(235, 203, 139), code_primitive: Color::Rgb(143, 188, 187), code_macro: Color::Rgb(136, 192, 208), code_attribute: Color::Rgb(143, 188, 187), code_lifetime: Color::Rgb(235, 203, 139), code_shell_var: Color::Rgb(143, 188, 187), table_border: Color::Rgb(67, 76, 94), table_header: Color::Rgb(136, 192, 208), table_body: Color::Rgb(178, 186, 202),
860
861 help_title: Color::Rgb(136, 192, 208), help_key: Color::Rgb(235, 203, 139), help_desc: Color::Rgb(216, 222, 233), help_path: Color::Rgb(100, 112, 130),
866 help_bg: Color::Rgb(59, 66, 82), }
868 }
869
870 pub fn monokai() -> Self {
872 Self {
873 bg_primary: Color::Rgb(39, 40, 34),
875 bg_title: Color::Rgb(49, 50, 44),
876 bg_input: Color::Rgb(49, 50, 44),
877 bg_panel: Color::Rgb(49, 50, 44),
878
879 border_title: Color::Rgb(80, 80, 70),
881 border_message: Color::Rgb(65, 65, 55),
882 border_input: Color::Rgb(80, 80, 70),
883 border_input_loading: Color::Rgb(230, 219, 116), border_config: Color::Rgb(80, 80, 70),
885 separator: Color::Rgb(65, 65, 55),
886
887 bubble_ai: Color::Rgb(49, 50, 44),
889 bubble_ai_selected: Color::Rgb(60, 62, 54),
890 bubble_user: Color::Rgb(55, 65, 85),
891 bubble_user_selected: Color::Rgb(65, 78, 100),
892
893 label_ai: Color::Rgb(166, 226, 46), label_user: Color::Rgb(102, 217, 239), label_selected: Color::Rgb(230, 219, 116), text_normal: Color::Rgb(248, 248, 242), text_bold: Color::Rgb(215, 245, 225),
901 text_dim: Color::Rgb(140, 140, 130),
902 text_very_dim: Color::Rgb(90, 90, 80),
903 text_white: Color::Rgb(248, 248, 242),
904 text_system: Color::Rgb(117, 113, 94), title_icon: Color::Rgb(102, 217, 239), title_separator: Color::Rgb(65, 65, 55),
909 title_model: Color::Rgb(166, 226, 46), title_count: Color::Rgb(190, 190, 180),
911 title_loading: Color::Rgb(230, 219, 116), input_prompt: Color::Rgb(166, 226, 46), input_prompt_loading: Color::Rgb(230, 219, 116),
916 cursor_fg: Color::Rgb(39, 40, 34),
917 cursor_bg: Color::Rgb(248, 248, 242),
918
919 hint_key_fg: Color::Rgb(39, 40, 34),
921 hint_key_bg: Color::Rgb(117, 113, 94),
922 hint_desc: Color::Rgb(140, 140, 130),
923 hint_separator: Color::Rgb(55, 55, 45),
924
925 toast_success_border: Color::Rgb(166, 226, 46),
927 toast_success_bg: Color::Rgb(45, 55, 38),
928 toast_success_text: Color::Rgb(166, 226, 46),
929 toast_error_border: Color::Rgb(249, 38, 114), toast_error_bg: Color::Rgb(60, 38, 42),
931 toast_error_text: Color::Rgb(249, 38, 114),
932
933 welcome_border: Color::Rgb(80, 80, 70),
935 welcome_text: Color::Rgb(102, 217, 239), welcome_hint: Color::Rgb(100, 100, 90),
937
938 model_sel_border: Color::Rgb(230, 219, 116),
940 model_sel_title: Color::Rgb(230, 219, 116),
941 model_sel_active: Color::Rgb(166, 226, 46),
942 model_sel_inactive: Color::Rgb(190, 190, 180),
943 model_sel_highlight_bg: Color::Rgb(60, 62, 54),
944
945 config_title: Color::Rgb(102, 217, 239),
947 config_section: Color::Rgb(166, 226, 46),
948 config_pointer: Color::Rgb(230, 219, 116),
949 config_label_selected: Color::Rgb(230, 219, 116),
950 config_label: Color::Rgb(140, 140, 130),
951 config_value: Color::Rgb(190, 190, 180),
952 config_edit_bg: Color::Rgb(60, 62, 54),
953 config_tab_active_bg: Color::Rgb(102, 217, 239),
954 config_tab_active_fg: Color::Rgb(39, 40, 34),
955 config_tab_inactive: Color::Rgb(140, 140, 130),
956 config_hint_key: Color::Rgb(230, 219, 116),
957 config_hint_desc: Color::Rgb(140, 140, 130),
958 config_toggle_on: Color::Rgb(166, 226, 46),
959 config_toggle_off: Color::Rgb(249, 38, 114),
960 config_dim: Color::Rgb(90, 90, 80),
961 config_api_key: Color::Rgb(100, 100, 90),
962
963 md_h1: Color::Rgb(249, 38, 114), md_h2: Color::Rgb(102, 217, 239), md_h3: Color::Rgb(166, 226, 46), md_h4: Color::Rgb(230, 219, 116), md_heading_sep: Color::Rgb(80, 80, 70),
969 md_inline_code_fg: Color::Rgb(230, 219, 116), md_inline_code_bg: Color::Rgb(55, 55, 45),
971 md_list_bullet: Color::Rgb(249, 38, 114), md_blockquote_bar: Color::Rgb(117, 113, 94),
973 md_blockquote_text: Color::Rgb(170, 170, 160),
974 md_rule: Color::Rgb(80, 80, 70),
975
976 code_border: Color::Rgb(80, 80, 70),
978 code_bg: Color::Rgb(39, 40, 34),
979 code_default: Color::Rgb(248, 248, 242), code_keyword: Color::Rgb(249, 38, 114), code_string: Color::Rgb(230, 219, 116), code_comment: Color::Rgb(117, 113, 94), code_number: Color::Rgb(174, 129, 255), code_type: Color::Rgb(166, 226, 46), code_primitive: Color::Rgb(102, 217, 239), code_macro: Color::Rgb(102, 217, 239), code_attribute: Color::Rgb(166, 226, 46), code_lifetime: Color::Rgb(174, 129, 255), code_shell_var: Color::Rgb(102, 217, 239), table_border: Color::Rgb(80, 80, 70),
993 table_header: Color::Rgb(102, 217, 239),
994 table_body: Color::Rgb(190, 190, 180),
995
996 help_title: Color::Rgb(102, 217, 239),
998 help_key: Color::Rgb(230, 219, 116),
999 help_desc: Color::Rgb(248, 248, 242),
1000 help_path: Color::Rgb(117, 113, 94),
1001 help_bg: Color::Rgb(49, 50, 44),
1002 }
1003 }
1004}