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 tool_confirm_border: Color,
194 pub tool_confirm_bg: Color,
196 pub tool_confirm_title: Color,
198 pub tool_confirm_name: Color,
200 pub tool_confirm_text: Color,
202 pub tool_confirm_label: Color,
204 pub tool_confirm_hint: Color,
206
207 pub welcome_border: Color,
210 pub welcome_text: Color,
212 pub welcome_hint: Color,
214
215 pub model_sel_border: Color,
218 pub model_sel_title: Color,
220 pub model_sel_active: Color,
222 pub model_sel_inactive: Color,
224 pub model_sel_highlight_bg: Color,
226
227 pub config_title: Color,
230 pub config_section: Color,
232 pub config_pointer: Color,
234 pub config_label_selected: Color,
236 pub config_label: Color,
238 pub config_value: Color,
240 pub config_edit_bg: Color,
242 pub config_tab_active_bg: Color,
244 pub config_tab_active_fg: Color,
246 pub config_tab_inactive: Color,
248 pub config_hint_key: Color,
250 pub config_hint_desc: Color,
252 pub config_toggle_on: Color,
254 pub config_toggle_off: Color,
256 pub config_dim: Color,
258 pub config_api_key: Color,
260
261 pub md_h1: Color,
264 pub md_h2: Color,
266 pub md_h3: Color,
268 pub md_h4: Color,
270 pub md_heading_sep: Color,
272 pub md_inline_code_fg: Color,
274 pub md_inline_code_bg: Color,
276 pub md_list_bullet: Color,
278 pub md_blockquote_bar: Color,
280 pub md_blockquote_text: Color,
282 pub md_rule: Color,
284
285 pub code_border: Color,
288 pub code_bg: Color,
290 pub code_default: Color,
292 pub code_keyword: Color,
294 pub code_string: Color,
296 pub code_comment: Color,
298 pub code_number: Color,
300 pub code_type: Color,
302 pub code_primitive: Color,
304 pub code_macro: Color,
306 pub code_attribute: Color,
308 pub code_lifetime: Color,
310 pub code_shell_var: Color,
312
313 pub table_border: Color,
316 pub table_header: Color,
318 pub table_body: Color,
320
321 pub help_title: Color,
324 pub help_key: Color,
326 pub help_desc: Color,
328 pub help_path: Color,
330 pub help_bg: Color,
332}
333
334impl Theme {
335 pub fn from_name(name: &ThemeName) -> Self {
337 match name {
338 ThemeName::Dark => Self::dark(),
339 ThemeName::Light => Self::light(),
340 ThemeName::Midnight => Self::midnight(),
341 ThemeName::Nord => Self::nord(),
342 ThemeName::Monokai => Self::monokai(),
343 }
344 }
345
346 pub fn midnight() -> Self {
348 Self {
349 bg_primary: Color::Rgb(22, 22, 30),
351 bg_title: Color::Rgb(28, 28, 40),
352 bg_input: Color::Rgb(26, 26, 38),
353 bg_panel: Color::Rgb(24, 24, 34),
354
355 border_title: Color::Rgb(80, 100, 140),
357 border_message: Color::Rgb(50, 55, 70),
358 border_input: Color::Rgb(60, 100, 80),
359 border_input_loading: Color::Rgb(120, 100, 50),
360 border_config: Color::Rgb(80, 80, 110),
361 separator: Color::Rgb(50, 55, 70),
362
363 bubble_ai: Color::Rgb(28, 28, 38),
365 bubble_ai_selected: Color::Rgb(255, 255, 255),
366 bubble_user: Color::Rgb(40, 70, 120),
367 bubble_user_selected: Color::Rgb(255, 255, 255),
368
369 label_ai: Color::Rgb(120, 220, 160),
371 label_user: Color::Rgb(100, 160, 255),
372 label_selected: Color::Rgb(255, 200, 80),
373
374 text_normal: Color::Rgb(220, 220, 230),
376 text_bold: Color::Rgb(220, 245, 230),
377 text_dim: Color::Rgb(140, 140, 170),
378 text_very_dim: Color::Rgb(80, 80, 100),
379 text_white: Color::White,
380 text_system: Color::Rgb(100, 100, 120),
381
382 title_icon: Color::Rgb(120, 180, 255),
384 title_separator: Color::Rgb(60, 60, 80),
385 title_model: Color::Rgb(160, 220, 160),
386 title_count: Color::Rgb(180, 180, 200),
387 title_loading: Color::Rgb(255, 200, 80),
388
389 input_prompt: Color::Rgb(100, 200, 130),
391 input_prompt_loading: Color::Rgb(255, 200, 80),
392 cursor_fg: Color::Rgb(22, 22, 30),
393 cursor_bg: Color::Rgb(200, 210, 240),
394
395 hint_key_fg: Color::Rgb(22, 22, 30),
397 hint_key_bg: Color::Rgb(100, 110, 140),
398 hint_desc: Color::Rgb(120, 120, 150),
399 hint_separator: Color::Rgb(50, 50, 65),
400
401 toast_success_border: Color::Rgb(60, 160, 80),
403 toast_success_bg: Color::Rgb(18, 40, 25),
404 toast_success_text: Color::Rgb(140, 230, 160),
405 toast_error_border: Color::Rgb(200, 70, 70),
406 toast_error_bg: Color::Rgb(50, 18, 18),
407 toast_error_text: Color::Rgb(255, 130, 130),
408
409 tool_confirm_border: Color::Rgb(200, 180, 80),
411 tool_confirm_bg: Color::Rgb(35, 30, 15),
412 tool_confirm_title: Color::Rgb(255, 220, 100),
413 tool_confirm_name: Color::Rgb(255, 220, 100),
414 tool_confirm_text: Color::Rgb(220, 220, 230),
415 tool_confirm_label: Color::Rgb(140, 140, 160),
416 tool_confirm_hint: Color::Rgb(180, 180, 200),
417
418 welcome_border: Color::Rgb(60, 70, 90),
420 welcome_text: Color::Rgb(120, 140, 180),
421 welcome_hint: Color::Rgb(80, 90, 110),
422
423 model_sel_border: Color::Rgb(180, 160, 80),
425 model_sel_title: Color::Rgb(230, 210, 120),
426 model_sel_active: Color::Rgb(120, 220, 160),
427 model_sel_inactive: Color::Rgb(180, 180, 200),
428 model_sel_highlight_bg: Color::Rgb(50, 55, 80),
429
430 config_title: Color::Rgb(120, 180, 255),
432 config_section: Color::Rgb(160, 220, 160),
433 config_pointer: Color::Rgb(255, 200, 80),
434 config_label_selected: Color::Rgb(230, 210, 120),
435 config_label: Color::Rgb(140, 140, 160),
436 config_value: Color::Rgb(180, 180, 200),
437 config_edit_bg: Color::Rgb(50, 55, 80),
438 config_tab_active_bg: Color::Rgb(120, 180, 255),
439 config_tab_active_fg: Color::Rgb(22, 22, 30),
440 config_tab_inactive: Color::Rgb(150, 150, 170),
441 config_hint_key: Color::Rgb(230, 210, 120),
442 config_hint_desc: Color::Rgb(120, 120, 150),
443 config_toggle_on: Color::Rgb(120, 220, 160),
444 config_toggle_off: Color::Rgb(200, 100, 100),
445 config_dim: Color::Rgb(80, 80, 100),
446 config_api_key: Color::Rgb(100, 100, 120),
447
448 md_h1: Color::Rgb(100, 180, 255),
450 md_h2: Color::Rgb(130, 190, 255),
451 md_h3: Color::Rgb(160, 200, 255),
452 md_h4: Color::Rgb(180, 210, 255),
453 md_heading_sep: Color::Rgb(60, 70, 100),
454 md_inline_code_fg: Color::Rgb(230, 190, 120),
455 md_inline_code_bg: Color::Rgb(45, 45, 60),
456 md_list_bullet: Color::Rgb(100, 160, 255),
457 md_blockquote_bar: Color::Rgb(80, 100, 140),
458 md_blockquote_text: Color::Rgb(150, 160, 180),
459 md_rule: Color::Rgb(70, 75, 90),
460
461 code_border: Color::Rgb(80, 90, 110),
463 code_bg: Color::Rgb(30, 30, 42),
464 code_default: Color::Rgb(171, 178, 191),
465 code_keyword: Color::Rgb(198, 120, 221),
466 code_string: Color::Rgb(152, 195, 121),
467 code_comment: Color::Rgb(92, 99, 112),
468 code_number: Color::Rgb(209, 154, 102),
469 code_type: Color::Rgb(229, 192, 123),
470 code_primitive: Color::Rgb(86, 182, 194),
471 code_macro: Color::Rgb(97, 175, 239),
472 code_attribute: Color::Rgb(86, 182, 194),
473 code_lifetime: Color::Rgb(229, 192, 123),
474 code_shell_var: Color::Rgb(86, 182, 194),
475
476 table_border: Color::Rgb(60, 70, 100),
478 table_header: Color::Rgb(120, 180, 255),
479 table_body: Color::Rgb(180, 180, 200),
480
481 help_title: Color::Rgb(120, 180, 255),
483 help_key: Color::Rgb(230, 210, 120),
484 help_desc: Color::Rgb(200, 200, 220),
485 help_path: Color::Rgb(100, 100, 130),
486 help_bg: Color::Rgb(24, 24, 34),
487 }
488 }
489
490 pub fn dark() -> Self {
492 Self {
493 bg_primary: Color::Rgb(30, 30, 30),
495 bg_title: Color::Rgb(37, 37, 38),
496 bg_input: Color::Rgb(37, 37, 38),
497 bg_panel: Color::Rgb(37, 37, 38),
498
499 border_title: Color::Rgb(70, 70, 70),
501 border_message: Color::Rgb(55, 55, 55),
502 border_input: Color::Rgb(55, 80, 55),
503 border_input_loading: Color::Rgb(120, 100, 50),
504 border_config: Color::Rgb(70, 70, 70),
505 separator: Color::Rgb(55, 55, 55),
506
507 bubble_ai: Color::Rgb(34, 34, 34),
509 bubble_ai_selected: Color::Rgb(255, 255, 255),
510 bubble_user: Color::Rgb(38, 65, 110),
511 bubble_user_selected: Color::Rgb(255, 255, 255),
512
513 label_ai: Color::Rgb(80, 200, 120),
515 label_user: Color::Rgb(80, 150, 240),
516 label_selected: Color::Rgb(255, 200, 80),
517
518 text_normal: Color::Rgb(212, 212, 212),
520 text_bold: Color::Rgb(210, 240, 220),
521 text_dim: Color::Rgb(128, 128, 128),
522 text_very_dim: Color::Rgb(80, 80, 80),
523 text_white: Color::White,
524 text_system: Color::Rgb(100, 100, 100),
525
526 title_icon: Color::Rgb(100, 160, 240),
528 title_separator: Color::Rgb(60, 60, 60),
529 title_model: Color::Rgb(140, 200, 140),
530 title_count: Color::Rgb(170, 170, 170),
531 title_loading: Color::Rgb(255, 200, 80),
532
533 input_prompt: Color::Rgb(80, 180, 100),
535 input_prompt_loading: Color::Rgb(255, 200, 80),
536 cursor_fg: Color::Rgb(30, 30, 30),
537 cursor_bg: Color::Rgb(200, 200, 200),
538
539 hint_key_fg: Color::Rgb(30, 30, 30),
541 hint_key_bg: Color::Rgb(100, 100, 100),
542 hint_desc: Color::Rgb(128, 128, 128),
543 hint_separator: Color::Rgb(50, 50, 50),
544
545 toast_success_border: Color::Rgb(60, 160, 80),
547 toast_success_bg: Color::Rgb(20, 40, 25),
548 toast_success_text: Color::Rgb(140, 230, 160),
549 toast_error_border: Color::Rgb(200, 70, 70),
550 toast_error_bg: Color::Rgb(50, 20, 20),
551 toast_error_text: Color::Rgb(255, 130, 130),
552
553 tool_confirm_border: Color::Rgb(200, 180, 80),
555 tool_confirm_bg: Color::Rgb(40, 35, 20),
556 tool_confirm_title: Color::Rgb(255, 220, 100),
557 tool_confirm_name: Color::Rgb(255, 220, 100),
558 tool_confirm_text: Color::Rgb(212, 212, 212),
559 tool_confirm_label: Color::Rgb(128, 128, 128),
560 tool_confirm_hint: Color::Rgb(170, 170, 170),
561
562 welcome_border: Color::Rgb(60, 60, 60),
564 welcome_text: Color::Rgb(120, 140, 180),
565 welcome_hint: Color::Rgb(80, 80, 80),
566
567 model_sel_border: Color::Rgb(180, 160, 80),
569 model_sel_title: Color::Rgb(230, 210, 120),
570 model_sel_active: Color::Rgb(80, 200, 120),
571 model_sel_inactive: Color::Rgb(170, 170, 170),
572 model_sel_highlight_bg: Color::Rgb(50, 50, 60),
573
574 config_title: Color::Rgb(100, 160, 240),
576 config_section: Color::Rgb(140, 200, 140),
577 config_pointer: Color::Rgb(255, 200, 80),
578 config_label_selected: Color::Rgb(230, 210, 120),
579 config_label: Color::Rgb(128, 128, 128),
580 config_value: Color::Rgb(170, 170, 170),
581 config_edit_bg: Color::Rgb(50, 50, 60),
582 config_tab_active_bg: Color::Rgb(100, 160, 240),
583 config_tab_active_fg: Color::Rgb(30, 30, 30),
584 config_tab_inactive: Color::Rgb(140, 140, 140),
585 config_hint_key: Color::Rgb(230, 210, 120),
586 config_hint_desc: Color::Rgb(128, 128, 128),
587 config_toggle_on: Color::Rgb(80, 200, 120),
588 config_toggle_off: Color::Rgb(200, 100, 100),
589 config_dim: Color::Rgb(80, 80, 80),
590 config_api_key: Color::Rgb(100, 100, 100),
591
592 md_h1: Color::Rgb(80, 160, 240),
594 md_h2: Color::Rgb(100, 170, 240),
595 md_h3: Color::Rgb(120, 180, 240),
596 md_h4: Color::Rgb(140, 190, 240),
597 md_heading_sep: Color::Rgb(60, 60, 80),
598 md_inline_code_fg: Color::Rgb(220, 180, 110),
599 md_inline_code_bg: Color::Rgb(50, 50, 60),
600 md_list_bullet: Color::Rgb(80, 150, 240),
601 md_blockquote_bar: Color::Rgb(70, 90, 130),
602 md_blockquote_text: Color::Rgb(150, 150, 170),
603 md_rule: Color::Rgb(70, 70, 80),
604
605 code_border: Color::Rgb(70, 70, 80),
607 code_bg: Color::Rgb(35, 35, 38),
608 code_default: Color::Rgb(212, 212, 212),
609 code_keyword: Color::Rgb(198, 120, 221),
610 code_string: Color::Rgb(152, 195, 121),
611 code_comment: Color::Rgb(106, 115, 125),
612 code_number: Color::Rgb(209, 154, 102),
613 code_type: Color::Rgb(229, 192, 123),
614 code_primitive: Color::Rgb(86, 182, 194),
615 code_macro: Color::Rgb(97, 175, 239),
616 code_attribute: Color::Rgb(86, 182, 194),
617 code_lifetime: Color::Rgb(229, 192, 123),
618 code_shell_var: Color::Rgb(86, 182, 194),
619
620 table_border: Color::Rgb(60, 60, 80),
622 table_header: Color::Rgb(80, 160, 240),
623 table_body: Color::Rgb(170, 170, 170),
624
625 help_title: Color::Rgb(100, 160, 240),
627 help_key: Color::Rgb(230, 210, 120),
628 help_desc: Color::Rgb(200, 200, 200),
629 help_path: Color::Rgb(100, 100, 100),
630 help_bg: Color::Rgb(37, 37, 38),
631 }
632 }
633
634 pub fn light() -> Self {
636 Self {
637 bg_primary: Color::Rgb(255, 255, 255),
639 bg_title: Color::Rgb(243, 243, 243),
640 bg_input: Color::Rgb(248, 248, 248),
641 bg_panel: Color::Rgb(248, 248, 248),
642
643 border_title: Color::Rgb(190, 190, 200),
645 border_message: Color::Rgb(210, 210, 220),
646 border_input: Color::Rgb(160, 200, 160),
647 border_input_loading: Color::Rgb(180, 150, 50),
648 border_config: Color::Rgb(190, 190, 200),
649 separator: Color::Rgb(210, 210, 220),
650
651 bubble_ai: Color::Rgb(244, 244, 248),
653 bubble_ai_selected: Color::Rgb(255, 255, 255),
654 bubble_user: Color::Rgb(210, 230, 255),
655 bubble_user_selected: Color::Rgb(255, 255, 255),
656
657 label_ai: Color::Rgb(40, 140, 80),
659 label_user: Color::Rgb(30, 100, 200),
660 label_selected: Color::Rgb(180, 130, 20),
661
662 text_normal: Color::Rgb(40, 40, 50),
664 text_bold: Color::Rgb(30, 100, 60),
665 text_dim: Color::Rgb(120, 120, 140),
666 text_very_dim: Color::Rgb(170, 170, 180),
667 text_white: Color::Rgb(40, 40, 50),
668 text_system: Color::Rgb(140, 140, 160),
669
670 title_icon: Color::Rgb(40, 100, 200),
672 title_separator: Color::Rgb(200, 200, 210),
673 title_model: Color::Rgb(40, 140, 80),
674 title_count: Color::Rgb(100, 100, 120),
675 title_loading: Color::Rgb(180, 130, 20),
676
677 input_prompt: Color::Rgb(40, 140, 80),
679 input_prompt_loading: Color::Rgb(180, 130, 20),
680 cursor_fg: Color::Rgb(255, 255, 255),
681 cursor_bg: Color::Rgb(50, 100, 200),
682
683 hint_key_fg: Color::Rgb(255, 255, 255),
685 hint_key_bg: Color::Rgb(100, 110, 130),
686 hint_desc: Color::Rgb(120, 120, 140),
687 hint_separator: Color::Rgb(210, 210, 220),
688
689 toast_success_border: Color::Rgb(60, 160, 80),
691 toast_success_bg: Color::Rgb(230, 250, 235),
692 toast_success_text: Color::Rgb(30, 100, 50),
693 toast_error_border: Color::Rgb(200, 70, 70),
694 toast_error_bg: Color::Rgb(255, 235, 235),
695 toast_error_text: Color::Rgb(160, 30, 30),
696
697 tool_confirm_border: Color::Rgb(180, 140, 40),
699 tool_confirm_bg: Color::Rgb(255, 250, 235),
700 tool_confirm_title: Color::Rgb(160, 120, 20),
701 tool_confirm_name: Color::Rgb(160, 120, 20),
702 tool_confirm_text: Color::Rgb(40, 40, 50),
703 tool_confirm_label: Color::Rgb(120, 120, 140),
704 tool_confirm_hint: Color::Rgb(80, 80, 100),
705
706 welcome_border: Color::Rgb(180, 190, 210),
708 welcome_text: Color::Rgb(60, 80, 130),
709 welcome_hint: Color::Rgb(140, 150, 170),
710
711 model_sel_border: Color::Rgb(180, 160, 80),
713 model_sel_title: Color::Rgb(140, 110, 30),
714 model_sel_active: Color::Rgb(40, 140, 80),
715 model_sel_inactive: Color::Rgb(100, 100, 120),
716 model_sel_highlight_bg: Color::Rgb(225, 230, 245),
717
718 config_title: Color::Rgb(40, 100, 200),
720 config_section: Color::Rgb(40, 140, 80),
721 config_pointer: Color::Rgb(180, 130, 20),
722 config_label_selected: Color::Rgb(140, 110, 30),
723 config_label: Color::Rgb(120, 120, 140),
724 config_value: Color::Rgb(60, 60, 80),
725 config_edit_bg: Color::Rgb(225, 230, 245),
726 config_tab_active_bg: Color::Rgb(40, 100, 200),
727 config_tab_active_fg: Color::Rgb(255, 255, 255),
728 config_tab_inactive: Color::Rgb(120, 120, 140),
729 config_hint_key: Color::Rgb(140, 110, 30),
730 config_hint_desc: Color::Rgb(120, 120, 140),
731 config_toggle_on: Color::Rgb(40, 140, 80),
732 config_toggle_off: Color::Rgb(200, 80, 80),
733 config_dim: Color::Rgb(170, 170, 180),
734 config_api_key: Color::Rgb(160, 160, 170),
735
736 md_h1: Color::Rgb(30, 80, 180),
738 md_h2: Color::Rgb(40, 100, 200),
739 md_h3: Color::Rgb(50, 110, 210),
740 md_h4: Color::Rgb(60, 120, 220),
741 md_heading_sep: Color::Rgb(180, 190, 210),
742 md_inline_code_fg: Color::Rgb(160, 80, 30),
743 md_inline_code_bg: Color::Rgb(240, 235, 225),
744 md_list_bullet: Color::Rgb(30, 100, 200),
745 md_blockquote_bar: Color::Rgb(100, 130, 180),
746 md_blockquote_text: Color::Rgb(80, 90, 110),
747 md_rule: Color::Rgb(190, 195, 210),
748
749 code_border: Color::Rgb(190, 195, 210),
751 code_bg: Color::Rgb(245, 245, 248),
752 code_default: Color::Rgb(40, 40, 50),
753 code_keyword: Color::Rgb(175, 0, 219),
754 code_string: Color::Rgb(163, 21, 21),
755 code_comment: Color::Rgb(0, 128, 0),
756 code_number: Color::Rgb(9, 134, 88),
757 code_type: Color::Rgb(38, 127, 153),
758 code_primitive: Color::Rgb(0, 112, 193),
759 code_macro: Color::Rgb(121, 94, 38),
760 code_attribute: Color::Rgb(0, 112, 193),
761 code_lifetime: Color::Rgb(38, 127, 153),
762 code_shell_var: Color::Rgb(0, 112, 193),
763
764 table_border: Color::Rgb(180, 190, 210),
766 table_header: Color::Rgb(30, 80, 180),
767 table_body: Color::Rgb(60, 60, 80),
768
769 help_title: Color::Rgb(40, 100, 200),
771 help_key: Color::Rgb(140, 110, 30),
772 help_desc: Color::Rgb(50, 50, 60),
773 help_path: Color::Rgb(120, 120, 140),
774 help_bg: Color::Rgb(248, 248, 248),
775 }
776 }
777
778 pub fn nord() -> Self {
780 Self {
781 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(50, 56, 68),
797 bubble_ai_selected: Color::Rgb(255, 255, 255),
798 bubble_user: Color::Rgb(52, 75, 110),
799 bubble_user_selected: Color::Rgb(255, 255, 255),
800
801 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),
809 text_dim: Color::Rgb(128, 140, 160),
810 text_very_dim: Color::Rgb(76, 86, 106), text_white: Color::Rgb(236, 239, 244), text_system: Color::Rgb(100, 112, 130),
813
814 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),
819 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),
831 hint_separator: Color::Rgb(59, 66, 82), toast_success_border: Color::Rgb(163, 190, 140), toast_success_bg: Color::Rgb(50, 60, 55),
836 toast_success_text: Color::Rgb(163, 190, 140),
837 toast_error_border: Color::Rgb(191, 97, 106), toast_error_bg: Color::Rgb(60, 50, 52),
839 toast_error_text: Color::Rgb(191, 97, 106),
840
841 tool_confirm_border: Color::Rgb(235, 203, 139), tool_confirm_bg: Color::Rgb(52, 58, 70),
844 tool_confirm_title: Color::Rgb(235, 203, 139),
845 tool_confirm_name: Color::Rgb(235, 203, 139),
846 tool_confirm_text: Color::Rgb(216, 222, 233), tool_confirm_label: Color::Rgb(128, 140, 160),
848 tool_confirm_hint: Color::Rgb(178, 186, 202),
849
850 welcome_border: Color::Rgb(76, 86, 106), welcome_text: Color::Rgb(136, 192, 208), welcome_hint: Color::Rgb(100, 112, 130),
854
855 model_sel_border: Color::Rgb(235, 203, 139), model_sel_title: Color::Rgb(235, 203, 139),
858 model_sel_active: Color::Rgb(163, 190, 140), model_sel_inactive: Color::Rgb(178, 186, 202),
860 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),
867 config_label: Color::Rgb(128, 140, 160),
868 config_value: Color::Rgb(178, 186, 202),
869 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),
873 config_hint_key: Color::Rgb(235, 203, 139),
874 config_hint_desc: Color::Rgb(128, 140, 160),
875 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),
879
880 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),
885 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),
891 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),
900 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),
912
913 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),
918 help_bg: Color::Rgb(59, 66, 82), }
920 }
921
922 pub fn monokai() -> Self {
924 Self {
925 bg_primary: Color::Rgb(39, 40, 34),
927 bg_title: Color::Rgb(49, 50, 44),
928 bg_input: Color::Rgb(49, 50, 44),
929 bg_panel: Color::Rgb(49, 50, 44),
930
931 border_title: Color::Rgb(80, 80, 70),
933 border_message: Color::Rgb(65, 65, 55),
934 border_input: Color::Rgb(80, 80, 70),
935 border_input_loading: Color::Rgb(230, 219, 116), border_config: Color::Rgb(80, 80, 70),
937 separator: Color::Rgb(65, 65, 55),
938
939 bubble_ai: Color::Rgb(43, 44, 38),
941 bubble_ai_selected: Color::Rgb(255, 255, 255),
942 bubble_user: Color::Rgb(55, 65, 90),
943 bubble_user_selected: Color::Rgb(255, 255, 255),
944
945 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),
953 text_dim: Color::Rgb(140, 140, 130),
954 text_very_dim: Color::Rgb(90, 90, 80),
955 text_white: Color::Rgb(248, 248, 242),
956 text_system: Color::Rgb(117, 113, 94), title_icon: Color::Rgb(102, 217, 239), title_separator: Color::Rgb(65, 65, 55),
961 title_model: Color::Rgb(166, 226, 46), title_count: Color::Rgb(190, 190, 180),
963 title_loading: Color::Rgb(230, 219, 116), input_prompt: Color::Rgb(166, 226, 46), input_prompt_loading: Color::Rgb(230, 219, 116),
968 cursor_fg: Color::Rgb(39, 40, 34),
969 cursor_bg: Color::Rgb(248, 248, 242),
970
971 hint_key_fg: Color::Rgb(39, 40, 34),
973 hint_key_bg: Color::Rgb(117, 113, 94),
974 hint_desc: Color::Rgb(140, 140, 130),
975 hint_separator: Color::Rgb(55, 55, 45),
976
977 toast_success_border: Color::Rgb(166, 226, 46),
979 toast_success_bg: Color::Rgb(45, 55, 38),
980 toast_success_text: Color::Rgb(166, 226, 46),
981 toast_error_border: Color::Rgb(249, 38, 114), toast_error_bg: Color::Rgb(60, 38, 42),
983 toast_error_text: Color::Rgb(249, 38, 114),
984
985 tool_confirm_border: Color::Rgb(230, 219, 116), tool_confirm_bg: Color::Rgb(50, 48, 38),
988 tool_confirm_title: Color::Rgb(230, 219, 116),
989 tool_confirm_name: Color::Rgb(230, 219, 116),
990 tool_confirm_text: Color::Rgb(248, 248, 242),
991 tool_confirm_label: Color::Rgb(140, 140, 130),
992 tool_confirm_hint: Color::Rgb(190, 190, 180),
993
994 welcome_border: Color::Rgb(80, 80, 70),
996 welcome_text: Color::Rgb(102, 217, 239), welcome_hint: Color::Rgb(100, 100, 90),
998
999 model_sel_border: Color::Rgb(230, 219, 116),
1001 model_sel_title: Color::Rgb(230, 219, 116),
1002 model_sel_active: Color::Rgb(166, 226, 46),
1003 model_sel_inactive: Color::Rgb(190, 190, 180),
1004 model_sel_highlight_bg: Color::Rgb(60, 62, 54),
1005
1006 config_title: Color::Rgb(102, 217, 239),
1008 config_section: Color::Rgb(166, 226, 46),
1009 config_pointer: Color::Rgb(230, 219, 116),
1010 config_label_selected: Color::Rgb(230, 219, 116),
1011 config_label: Color::Rgb(140, 140, 130),
1012 config_value: Color::Rgb(190, 190, 180),
1013 config_edit_bg: Color::Rgb(60, 62, 54),
1014 config_tab_active_bg: Color::Rgb(102, 217, 239),
1015 config_tab_active_fg: Color::Rgb(39, 40, 34),
1016 config_tab_inactive: Color::Rgb(140, 140, 130),
1017 config_hint_key: Color::Rgb(230, 219, 116),
1018 config_hint_desc: Color::Rgb(140, 140, 130),
1019 config_toggle_on: Color::Rgb(166, 226, 46),
1020 config_toggle_off: Color::Rgb(249, 38, 114),
1021 config_dim: Color::Rgb(90, 90, 80),
1022 config_api_key: Color::Rgb(100, 100, 90),
1023
1024 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),
1030 md_inline_code_fg: Color::Rgb(230, 219, 116), md_inline_code_bg: Color::Rgb(55, 55, 45),
1032 md_list_bullet: Color::Rgb(249, 38, 114), md_blockquote_bar: Color::Rgb(117, 113, 94),
1034 md_blockquote_text: Color::Rgb(170, 170, 160),
1035 md_rule: Color::Rgb(80, 80, 70),
1036
1037 code_border: Color::Rgb(80, 80, 70),
1039 code_bg: Color::Rgb(39, 40, 34),
1040 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),
1054 table_header: Color::Rgb(102, 217, 239),
1055 table_body: Color::Rgb(190, 190, 180),
1056
1057 help_title: Color::Rgb(102, 217, 239),
1059 help_key: Color::Rgb(230, 219, 116),
1060 help_desc: Color::Rgb(248, 248, 242),
1061 help_path: Color::Rgb(117, 113, 94),
1062 help_bg: Color::Rgb(49, 50, 44),
1063 }
1064 }
1065}