#![allow(clippy::too_many_lines)]
use super::tokens::*;
use ratatui::style::Color;
pub(super) fn default_() -> Tokens {
let bg = Color::Rgb(20, 20, 30);
let raised = Color::Rgb(40, 40, 40);
let cyan = Color::Cyan;
let yellow = Color::Yellow;
Tokens {
surface: Surface {
base: bg,
raised,
border: Color::DarkGray,
},
text: Text {
primary: Color::Rgb(220, 220, 220),
muted: Color::DarkGray,
on_accent: Color::Black,
title: Color::Rgb(220, 220, 220),
},
state: State {
selection_bg: Color::Rgb(0, 160, 80),
selection_fg: Color::Black,
focus: cyan,
search_bg: yellow,
current_match_bg: Color::Rgb(255, 120, 0),
match_fg: Color::Black,
},
accent: Accent {
primary: cyan,
alt: yellow,
link: Color::Blue,
},
syntax: Syntax {
inline_code: Color::Green,
code_fg: Color::Rgb(180, 200, 180),
code_border: Color::DarkGray,
},
heading: Heading {
h1: cyan,
h2: Color::Blue,
h3: Color::Magenta,
other: Color::White,
},
status: Status {
bg: Color::Rgb(30, 30, 30),
fg: Color::Gray,
help_bg: bg,
gutter: Color::DarkGray,
},
list: List {
marker: yellow,
task_marker: cyan,
block_quote_fg: Color::Gray,
block_quote_border: Color::DarkGray,
},
table: Table {
header: cyan,
border: Color::DarkGray,
},
git: Git {
new: Color::Rgb(80, 200, 120),
modified: Color::Rgb(220, 180, 60),
},
}
}
pub(super) fn dracula() -> Tokens {
let bg = Color::Rgb(40, 42, 54);
let fg = Color::Rgb(248, 248, 242);
let comment = Color::Rgb(98, 114, 164);
let current_line = Color::Rgb(68, 71, 90);
let purple = Color::Rgb(189, 147, 249);
let pink = Color::Rgb(255, 121, 198);
let green = Color::Rgb(80, 250, 123);
let yellow = Color::Rgb(241, 250, 140);
let cyan = Color::Rgb(139, 233, 253);
Tokens {
surface: Surface {
base: bg,
raised: bg, border: current_line,
},
text: Text {
primary: fg,
muted: comment,
on_accent: bg,
title: fg,
},
state: State {
selection_bg: current_line,
selection_fg: fg,
focus: purple,
search_bg: yellow,
current_match_bg: pink,
match_fg: bg,
},
accent: Accent {
primary: purple,
alt: yellow,
link: cyan,
},
syntax: Syntax {
inline_code: green,
code_fg: fg,
code_border: comment,
},
heading: Heading {
h1: pink,
h2: purple,
h3: green,
other: fg,
},
status: Status {
bg,
fg,
help_bg: bg,
gutter: comment,
},
list: List {
marker: yellow,
task_marker: green,
block_quote_fg: comment,
block_quote_border: comment,
},
table: Table {
header: pink,
border: comment,
},
git: Git {
new: green,
modified: yellow,
},
}
}
pub(super) fn solarized_dark() -> Tokens {
let base03 = Color::Rgb(0, 43, 54);
let base02 = Color::Rgb(7, 54, 66);
let base01 = Color::Rgb(88, 110, 117);
let base0 = Color::Rgb(131, 148, 150);
let base1 = Color::Rgb(147, 161, 161);
let base3 = Color::Rgb(253, 246, 227);
let yellow = Color::Rgb(181, 137, 0);
let orange = Color::Rgb(203, 75, 22);
let blue = Color::Rgb(38, 139, 210);
let cyan = Color::Rgb(42, 161, 152);
let green = Color::Rgb(133, 153, 0);
Tokens {
surface: Surface {
base: base03,
raised: base02,
border: base01,
},
text: Text {
primary: base0,
muted: base01,
on_accent: Color::Rgb(0, 0, 0),
title: base1,
},
state: State {
selection_bg: base01,
selection_fg: base3,
focus: blue,
search_bg: yellow,
current_match_bg: orange,
match_fg: Color::Rgb(0, 0, 0),
},
accent: Accent {
primary: blue,
alt: yellow,
link: blue,
},
syntax: Syntax {
inline_code: green,
code_fg: base1,
code_border: base01,
},
heading: Heading {
h1: orange,
h2: blue,
h3: cyan,
other: base0,
},
status: Status {
bg: base02,
fg: base1,
help_bg: base02,
gutter: base01,
},
list: List {
marker: yellow,
task_marker: cyan,
block_quote_fg: base01,
block_quote_border: base01,
},
table: Table {
header: orange,
border: base01,
},
git: Git {
new: green,
modified: yellow,
},
}
}
pub(super) fn solarized_light() -> Tokens {
let base02 = Color::Rgb(7, 54, 66);
let base00 = Color::Rgb(101, 123, 131);
let base1 = Color::Rgb(147, 161, 161);
let base2 = Color::Rgb(238, 232, 213);
let base3 = Color::Rgb(253, 246, 227);
let yellow = Color::Rgb(181, 137, 0);
let orange = Color::Rgb(203, 75, 22);
let blue = Color::Rgb(38, 139, 210);
let cyan = Color::Rgb(42, 161, 152);
let green = Color::Rgb(133, 153, 0);
Tokens {
surface: Surface {
base: base3,
raised: base2,
border: base2,
},
text: Text {
primary: base02, muted: base00, on_accent: Color::Rgb(0, 0, 0),
title: base02,
},
state: State {
selection_bg: base1,
selection_fg: base02,
focus: blue,
search_bg: yellow,
current_match_bg: orange,
match_fg: Color::Rgb(0, 0, 0),
},
accent: Accent {
primary: blue,
alt: yellow,
link: blue,
},
syntax: Syntax {
inline_code: green,
code_fg: base02, code_border: base1,
},
heading: Heading {
h1: orange,
h2: blue,
h3: cyan,
other: base02,
},
status: Status {
bg: base2,
fg: base02, help_bg: base2,
gutter: base1,
},
list: List {
marker: yellow,
task_marker: cyan,
block_quote_fg: base00,
block_quote_border: base1,
},
table: Table {
header: orange,
border: base1,
},
git: Git {
new: green,
modified: yellow,
},
}
}
pub(super) fn nord() -> Tokens {
let nord0 = Color::Rgb(46, 52, 64);
let nord1 = Color::Rgb(59, 66, 82);
let nord3 = Color::Rgb(76, 86, 106);
let nord4 = Color::Rgb(216, 222, 233);
let nord6 = Color::Rgb(236, 239, 244);
let nord8 = Color::Rgb(136, 192, 208);
let nord9 = Color::Rgb(129, 161, 193);
let nord10 = Color::Rgb(94, 129, 172);
let nord11 = Color::Rgb(191, 97, 106);
let nord13 = Color::Rgb(235, 203, 139);
let nord14 = Color::Rgb(163, 190, 140);
Tokens {
surface: Surface {
base: nord0,
raised: nord1,
border: nord3,
},
text: Text {
primary: nord4,
muted: nord3,
on_accent: nord0,
title: nord6,
},
state: State {
selection_bg: nord3,
selection_fg: nord6,
focus: nord8,
search_bg: nord13,
current_match_bg: nord11,
match_fg: Color::Rgb(0, 0, 0),
},
accent: Accent {
primary: nord8,
alt: nord13,
link: nord9,
},
syntax: Syntax {
inline_code: nord14,
code_fg: nord4,
code_border: nord3,
},
heading: Heading {
h1: nord11,
h2: nord8,
h3: nord14,
other: nord4,
},
status: Status {
bg: nord1,
fg: nord4,
help_bg: nord1,
gutter: nord3,
},
list: List {
marker: nord13,
task_marker: nord14,
block_quote_fg: nord3,
block_quote_border: nord3,
},
table: Table {
header: nord10,
border: nord3,
},
git: Git {
new: nord14,
modified: nord13,
},
}
}
pub(super) fn gruvbox_dark() -> Tokens {
let bg = Color::Rgb(40, 40, 40);
let bg1 = Color::Rgb(50, 48, 47);
let bg3 = Color::Rgb(80, 73, 69);
let bg4 = Color::Rgb(102, 92, 84);
let fg = Color::Rgb(235, 219, 178);
let gray = Color::Rgb(146, 131, 116);
let red = Color::Rgb(251, 73, 52);
let orange = Color::Rgb(214, 93, 14);
let yellow = Color::Rgb(250, 189, 47);
let green = Color::Rgb(184, 187, 38);
let aqua = Color::Rgb(131, 165, 152);
Tokens {
surface: Surface {
base: bg,
raised: bg1,
border: bg3,
},
text: Text {
primary: fg,
muted: gray,
on_accent: bg,
title: fg,
},
state: State {
selection_bg: bg3,
selection_fg: fg,
focus: orange,
search_bg: yellow,
current_match_bg: red,
match_fg: Color::Rgb(0, 0, 0),
},
accent: Accent {
primary: yellow,
alt: green,
link: aqua,
},
syntax: Syntax {
inline_code: green,
code_fg: fg,
code_border: bg3,
},
heading: Heading {
h1: red,
h2: yellow,
h3: green,
other: fg,
},
status: Status {
bg: bg1,
fg,
help_bg: bg1,
gutter: bg4,
},
list: List {
marker: yellow,
task_marker: green,
block_quote_fg: gray,
block_quote_border: gray,
},
table: Table {
header: orange,
border: bg3,
},
git: Git {
new: green,
modified: yellow,
},
}
}
pub(super) fn gruvbox_light() -> Tokens {
let bg = Color::Rgb(251, 241, 199);
let bg1 = Color::Rgb(235, 219, 178);
let bg2 = Color::Rgb(213, 196, 161);
let fg = Color::Rgb(60, 56, 54);
let fg1 = Color::Rgb(80, 73, 69);
let gray = Color::Rgb(146, 131, 116);
let red = Color::Rgb(204, 36, 29);
let orange = Color::Rgb(214, 93, 14);
let yellow = Color::Rgb(215, 153, 33);
let green = Color::Rgb(152, 151, 26);
let aqua = Color::Rgb(104, 157, 106);
let blue = Color::Rgb(69, 133, 136);
let purple = Color::Rgb(177, 98, 134);
Tokens {
surface: Surface {
base: bg,
raised: bg1,
border: bg2,
},
text: Text {
primary: fg,
muted: gray,
on_accent: fg,
title: fg,
},
state: State {
selection_bg: bg2,
selection_fg: fg,
focus: orange,
search_bg: yellow,
current_match_bg: orange,
match_fg: Color::Rgb(0, 0, 0),
},
accent: Accent {
primary: yellow,
alt: green,
link: blue,
},
syntax: Syntax {
inline_code: purple,
code_fg: fg,
code_border: bg2,
},
heading: Heading {
h1: red,
h2: yellow,
h3: green,
other: fg,
},
status: Status {
bg: bg1,
fg: fg1,
help_bg: bg1,
gutter: gray,
},
list: List {
marker: yellow,
task_marker: aqua,
block_quote_fg: gray,
block_quote_border: bg2,
},
table: Table {
header: orange,
border: bg2,
},
git: Git {
new: green,
modified: yellow,
},
}
}
pub(super) fn github_light() -> Tokens {
let canvas = Color::Rgb(255, 255, 255);
let subtle = Color::Rgb(246, 248, 250);
let border = Color::Rgb(208, 215, 222);
let fg = Color::Rgb(31, 35, 40);
let muted = Color::Rgb(101, 109, 118);
let blue = Color::Rgb(9, 105, 218); let amber = Color::Rgb(154, 103, 0); let green = Color::Rgb(26, 127, 55); let red = Color::Rgb(207, 34, 46); let amber_emph = Color::Rgb(255, 211, 61); let severe_emph = Color::Rgb(255, 143, 0); let accent_subtle = Color::Rgb(221, 244, 255);
Tokens {
surface: Surface {
base: canvas,
raised: subtle,
border,
},
text: Text {
primary: fg,
muted,
on_accent: canvas,
title: fg,
},
state: State {
selection_bg: accent_subtle,
selection_fg: blue,
focus: blue,
search_bg: amber_emph,
current_match_bg: severe_emph,
match_fg: fg,
},
accent: Accent {
primary: blue,
alt: amber,
link: blue,
},
syntax: Syntax {
inline_code: red,
code_fg: fg,
code_border: border,
},
heading: Heading {
h1: blue,
h2: amber,
h3: green,
other: fg,
},
status: Status {
bg: subtle,
fg: muted,
help_bg: subtle,
gutter: muted,
},
list: List {
marker: amber,
task_marker: green,
block_quote_fg: muted,
block_quote_border: border,
},
table: Table {
header: blue,
border,
},
git: Git {
new: green,
modified: amber,
},
}
}