291 lines
9.5 KiB
Rust
291 lines
9.5 KiB
Rust
use super::*;
|
|
use ratatui::style::Color;
|
|
|
|
pub fn theme() -> ThemeColors {
|
|
let crust = Color::Rgb(17, 17, 27);
|
|
let mantle = Color::Rgb(24, 24, 37);
|
|
let base = Color::Rgb(30, 30, 46);
|
|
let surface0 = Color::Rgb(49, 50, 68);
|
|
let surface1 = Color::Rgb(69, 71, 90);
|
|
let overlay0 = Color::Rgb(108, 112, 134);
|
|
let overlay1 = Color::Rgb(127, 132, 156);
|
|
let subtext0 = Color::Rgb(166, 173, 200);
|
|
let subtext1 = Color::Rgb(186, 194, 222);
|
|
let text = Color::Rgb(205, 214, 244);
|
|
let pink = Color::Rgb(245, 194, 231);
|
|
let mauve = Color::Rgb(203, 166, 247);
|
|
let red = Color::Rgb(243, 139, 168);
|
|
let maroon = Color::Rgb(235, 160, 172);
|
|
let peach = Color::Rgb(250, 179, 135);
|
|
let yellow = Color::Rgb(249, 226, 175);
|
|
let green = Color::Rgb(166, 227, 161);
|
|
let teal = Color::Rgb(148, 226, 213);
|
|
let sapphire = Color::Rgb(116, 199, 236);
|
|
let lavender = Color::Rgb(180, 190, 254);
|
|
|
|
ThemeColors {
|
|
ui: UiColors {
|
|
bg: base,
|
|
bg_rgb: (30, 30, 46),
|
|
text_primary: text,
|
|
text_muted: subtext0,
|
|
text_dim: overlay1,
|
|
border: surface1,
|
|
header: lavender,
|
|
unfocused: overlay0,
|
|
accent: mauve,
|
|
surface: surface0,
|
|
},
|
|
status: StatusColors {
|
|
playing_bg: Color::Rgb(30, 50, 40),
|
|
playing_fg: green,
|
|
stopped_bg: Color::Rgb(50, 30, 40),
|
|
stopped_fg: red,
|
|
fill_on: green,
|
|
fill_off: overlay0,
|
|
fill_bg: surface0,
|
|
},
|
|
selection: SelectionColors {
|
|
cursor_bg: mauve,
|
|
cursor_fg: crust,
|
|
selected_bg: Color::Rgb(60, 60, 90),
|
|
selected_fg: lavender,
|
|
in_range_bg: Color::Rgb(50, 50, 75),
|
|
in_range_fg: subtext1,
|
|
cursor: mauve,
|
|
selected: Color::Rgb(60, 60, 90),
|
|
in_range: Color::Rgb(50, 50, 75),
|
|
},
|
|
tile: TileColors {
|
|
playing_active_bg: Color::Rgb(80, 50, 60),
|
|
playing_active_fg: peach,
|
|
playing_inactive_bg: Color::Rgb(70, 55, 45),
|
|
playing_inactive_fg: yellow,
|
|
active_bg: Color::Rgb(40, 55, 55),
|
|
active_fg: teal,
|
|
content_bg: Color::Rgb(47, 62, 62),
|
|
inactive_bg: surface0,
|
|
inactive_fg: subtext0,
|
|
active_selected_bg: Color::Rgb(70, 60, 80),
|
|
active_in_range_bg: Color::Rgb(55, 55, 70),
|
|
link_bright: [
|
|
(203, 166, 247),
|
|
(245, 194, 231),
|
|
(250, 179, 135),
|
|
(137, 220, 235),
|
|
(166, 227, 161),
|
|
],
|
|
link_dim: [
|
|
(70, 55, 85),
|
|
(85, 65, 80),
|
|
(85, 60, 45),
|
|
(45, 75, 80),
|
|
(55, 80, 55),
|
|
],
|
|
},
|
|
header: HeaderColors {
|
|
tempo_bg: Color::Rgb(50, 40, 60),
|
|
tempo_fg: mauve,
|
|
bank_bg: Color::Rgb(35, 50, 55),
|
|
bank_fg: sapphire,
|
|
pattern_bg: Color::Rgb(40, 50, 50),
|
|
pattern_fg: teal,
|
|
stats_bg: surface0,
|
|
stats_fg: subtext0,
|
|
},
|
|
modal: ModalColors {
|
|
border: lavender,
|
|
border_accent: mauve,
|
|
border_warn: peach,
|
|
border_dim: overlay1,
|
|
confirm: peach,
|
|
rename: mauve,
|
|
input: sapphire,
|
|
editor: lavender,
|
|
preview: overlay1,
|
|
},
|
|
flash: FlashColors {
|
|
error_bg: Color::Rgb(50, 30, 40),
|
|
error_fg: red,
|
|
success_bg: Color::Rgb(30, 50, 40),
|
|
success_fg: green,
|
|
info_bg: surface0,
|
|
info_fg: text,
|
|
},
|
|
list: ListColors {
|
|
playing_bg: Color::Rgb(35, 55, 45),
|
|
playing_fg: green,
|
|
staged_play_bg: Color::Rgb(55, 45, 65),
|
|
staged_play_fg: mauve,
|
|
staged_stop_bg: Color::Rgb(60, 40, 50),
|
|
staged_stop_fg: maroon,
|
|
edit_bg: Color::Rgb(40, 55, 55),
|
|
edit_fg: teal,
|
|
hover_bg: surface1,
|
|
hover_fg: text,
|
|
muted_bg: Color::Rgb(40, 40, 50),
|
|
muted_fg: overlay0,
|
|
soloed_bg: Color::Rgb(60, 55, 35),
|
|
soloed_fg: yellow,
|
|
},
|
|
link_status: LinkStatusColors {
|
|
disabled: red,
|
|
connected: green,
|
|
listening: yellow,
|
|
},
|
|
syntax: SyntaxColors {
|
|
gap_bg: mantle,
|
|
executed_bg: Color::Rgb(45, 40, 55),
|
|
selected_bg: Color::Rgb(70, 55, 40),
|
|
emit: (text, Color::Rgb(80, 50, 60)),
|
|
number: (peach, Color::Rgb(55, 45, 35)),
|
|
string: (green, Color::Rgb(35, 50, 40)),
|
|
comment: (overlay1, crust),
|
|
keyword: (mauve, Color::Rgb(50, 40, 60)),
|
|
stack_op: (sapphire, Color::Rgb(35, 45, 55)),
|
|
operator: (yellow, Color::Rgb(55, 50, 35)),
|
|
sound: (teal, Color::Rgb(35, 55, 55)),
|
|
param: (lavender, Color::Rgb(45, 45, 60)),
|
|
context: (peach, Color::Rgb(55, 45, 35)),
|
|
note: (green, Color::Rgb(35, 50, 40)),
|
|
interval: (Color::Rgb(180, 230, 150), Color::Rgb(40, 55, 35)),
|
|
variable: (pink, Color::Rgb(55, 40, 55)),
|
|
vary: (yellow, Color::Rgb(55, 50, 35)),
|
|
generator: (teal, Color::Rgb(35, 55, 50)),
|
|
user_defined: (maroon, Color::Rgb(55, 35, 40)),
|
|
default: (subtext0, mantle),
|
|
},
|
|
table: TableColors {
|
|
row_even: mantle,
|
|
row_odd: base,
|
|
},
|
|
values: ValuesColors {
|
|
tempo: peach,
|
|
value: subtext0,
|
|
},
|
|
hint: HintColors {
|
|
key: peach,
|
|
text: overlay1,
|
|
},
|
|
view_badge: ViewBadgeColors {
|
|
bg: text,
|
|
fg: crust,
|
|
},
|
|
nav: NavColors {
|
|
selected_bg: Color::Rgb(60, 50, 75),
|
|
selected_fg: text,
|
|
unselected_bg: surface0,
|
|
unselected_fg: overlay1,
|
|
},
|
|
editor_widget: EditorWidgetColors {
|
|
cursor_bg: text,
|
|
cursor_fg: crust,
|
|
selection_bg: Color::Rgb(50, 60, 90),
|
|
completion_bg: surface0,
|
|
completion_fg: text,
|
|
completion_selected: peach,
|
|
completion_example: teal,
|
|
},
|
|
browser: BrowserColors {
|
|
directory: sapphire,
|
|
project_file: mauve,
|
|
selected: peach,
|
|
file: text,
|
|
focused_border: peach,
|
|
unfocused_border: overlay0,
|
|
root: text,
|
|
file_icon: overlay1,
|
|
folder_icon: sapphire,
|
|
empty_text: overlay1,
|
|
},
|
|
input: InputColors {
|
|
text: sapphire,
|
|
cursor: text,
|
|
hint: overlay1,
|
|
},
|
|
search: SearchColors {
|
|
active: peach,
|
|
inactive: overlay0,
|
|
match_bg: yellow,
|
|
match_fg: crust,
|
|
},
|
|
markdown: MarkdownColors {
|
|
h1: sapphire,
|
|
h2: peach,
|
|
h3: mauve,
|
|
code: green,
|
|
code_border: Color::Rgb(60, 60, 70),
|
|
link: teal,
|
|
link_url: Color::Rgb(100, 100, 100),
|
|
quote: overlay1,
|
|
text,
|
|
list: text,
|
|
},
|
|
engine: EngineColors {
|
|
header: Color::Rgb(100, 160, 180),
|
|
header_focused: yellow,
|
|
divider: Color::Rgb(60, 65, 70),
|
|
scroll_indicator: Color::Rgb(80, 85, 95),
|
|
label: Color::Rgb(120, 125, 135),
|
|
label_focused: Color::Rgb(150, 155, 165),
|
|
label_dim: Color::Rgb(100, 105, 115),
|
|
value: Color::Rgb(180, 180, 190),
|
|
focused: yellow,
|
|
normal: text,
|
|
dim: Color::Rgb(80, 85, 95),
|
|
path: Color::Rgb(120, 125, 135),
|
|
border_magenta: mauve,
|
|
border_green: green,
|
|
border_cyan: sapphire,
|
|
separator: Color::Rgb(60, 65, 75),
|
|
hint_active: Color::Rgb(180, 180, 100),
|
|
hint_inactive: Color::Rgb(60, 60, 70),
|
|
},
|
|
dict: DictColors {
|
|
word_name: green,
|
|
word_bg: Color::Rgb(40, 50, 60),
|
|
alias: overlay1,
|
|
stack_sig: mauve,
|
|
description: text,
|
|
example: Color::Rgb(120, 130, 140),
|
|
category_focused: yellow,
|
|
category_selected: sapphire,
|
|
category_normal: text,
|
|
category_dimmed: Color::Rgb(80, 80, 90),
|
|
border_focused: yellow,
|
|
border_normal: Color::Rgb(60, 60, 70),
|
|
header_desc: Color::Rgb(140, 145, 155),
|
|
},
|
|
title: TitleColors {
|
|
big_title: mauve,
|
|
author: lavender,
|
|
link: teal,
|
|
license: peach,
|
|
prompt: Color::Rgb(140, 160, 170),
|
|
subtitle: text,
|
|
},
|
|
meter: MeterColors {
|
|
low: green,
|
|
mid: yellow,
|
|
high: red,
|
|
low_rgb: (40, 180, 80),
|
|
mid_rgb: (220, 180, 40),
|
|
high_rgb: (220, 60, 40),
|
|
},
|
|
sparkle: SparkleColors {
|
|
colors: [
|
|
(200, 220, 255),
|
|
(250, 179, 135),
|
|
(166, 227, 161),
|
|
(245, 194, 231),
|
|
(203, 166, 247),
|
|
],
|
|
},
|
|
confirm: ConfirmColors {
|
|
border: peach,
|
|
button_selected_bg: peach,
|
|
button_selected_fg: crust,
|
|
},
|
|
}
|
|
}
|